{"version":3,"file":"eslint-plugin.4spHJHAT.cjs","sources":["../../../../node_modules/.pnpm/balanced-match@4.0.4/node_modules/balanced-match/dist/esm/index.js","../../../../node_modules/.pnpm/brace-expansion@5.0.4/node_modules/brace-expansion/dist/esm/index.js","../../../../node_modules/.pnpm/minimatch@10.2.4/node_modules/minimatch/dist/esm/assert-valid-pattern.js","../../../../node_modules/.pnpm/minimatch@10.2.4/node_modules/minimatch/dist/esm/brace-expressions.js","../../../../node_modules/.pnpm/minimatch@10.2.4/node_modules/minimatch/dist/esm/unescape.js","../../../../node_modules/.pnpm/minimatch@10.2.4/node_modules/minimatch/dist/esm/ast.js","../../../../node_modules/.pnpm/minimatch@10.2.4/node_modules/minimatch/dist/esm/escape.js","../../../../node_modules/.pnpm/minimatch@10.2.4/node_modules/minimatch/dist/esm/index.js","../../../shared/dist/index.mjs","../../src/utils/estree.utils.ts","../../src/utils/pg.utils.ts","../../src/rules/check-sql.utils.ts"],"sourcesContent":["export const balanced = (a, b, str) => {\n    const ma = a instanceof RegExp ? maybeMatch(a, str) : a;\n    const mb = b instanceof RegExp ? maybeMatch(b, str) : b;\n    const r = ma !== null && mb != null && range(ma, mb, str);\n    return (r && {\n        start: r[0],\n        end: r[1],\n        pre: str.slice(0, r[0]),\n        body: str.slice(r[0] + ma.length, r[1]),\n        post: str.slice(r[1] + mb.length),\n    });\n};\nconst maybeMatch = (reg, str) => {\n    const m = str.match(reg);\n    return m ? m[0] : null;\n};\nexport const range = (a, b, str) => {\n    let begs, beg, left, right = undefined, result;\n    let ai = str.indexOf(a);\n    let bi = str.indexOf(b, ai + 1);\n    let i = ai;\n    if (ai >= 0 && bi > 0) {\n        if (a === b) {\n            return [ai, bi];\n        }\n        begs = [];\n        left = str.length;\n        while (i >= 0 && !result) {\n            if (i === ai) {\n                begs.push(i);\n                ai = str.indexOf(a, i + 1);\n            }\n            else if (begs.length === 1) {\n                const r = begs.pop();\n                if (r !== undefined)\n                    result = [r, bi];\n            }\n            else {\n                beg = begs.pop();\n                if (beg !== undefined && beg < left) {\n                    left = beg;\n                    right = bi;\n                }\n                bi = str.indexOf(b, i + 1);\n            }\n            i = ai < bi && ai >= 0 ? ai : bi;\n        }\n        if (begs.length && right !== undefined) {\n            result = [left, right];\n        }\n    }\n    return result;\n};\n//# sourceMappingURL=index.js.map","import { balanced } from 'balanced-match';\nconst escSlash = '\\0SLASH' + Math.random() + '\\0';\nconst escOpen = '\\0OPEN' + Math.random() + '\\0';\nconst escClose = '\\0CLOSE' + Math.random() + '\\0';\nconst escComma = '\\0COMMA' + Math.random() + '\\0';\nconst escPeriod = '\\0PERIOD' + Math.random() + '\\0';\nconst escSlashPattern = new RegExp(escSlash, 'g');\nconst escOpenPattern = new RegExp(escOpen, 'g');\nconst escClosePattern = new RegExp(escClose, 'g');\nconst escCommaPattern = new RegExp(escComma, 'g');\nconst escPeriodPattern = new RegExp(escPeriod, 'g');\nconst slashPattern = /\\\\\\\\/g;\nconst openPattern = /\\\\{/g;\nconst closePattern = /\\\\}/g;\nconst commaPattern = /\\\\,/g;\nconst periodPattern = /\\\\\\./g;\nexport const EXPANSION_MAX = 100_000;\nfunction numeric(str) {\n    return !isNaN(str) ? parseInt(str, 10) : str.charCodeAt(0);\n}\nfunction escapeBraces(str) {\n    return str\n        .replace(slashPattern, escSlash)\n        .replace(openPattern, escOpen)\n        .replace(closePattern, escClose)\n        .replace(commaPattern, escComma)\n        .replace(periodPattern, escPeriod);\n}\nfunction unescapeBraces(str) {\n    return str\n        .replace(escSlashPattern, '\\\\')\n        .replace(escOpenPattern, '{')\n        .replace(escClosePattern, '}')\n        .replace(escCommaPattern, ',')\n        .replace(escPeriodPattern, '.');\n}\n/**\n * Basically just str.split(\",\"), but handling cases\n * where we have nested braced sections, which should be\n * treated as individual members, like {a,{b,c},d}\n */\nfunction parseCommaParts(str) {\n    if (!str) {\n        return [''];\n    }\n    const parts = [];\n    const m = balanced('{', '}', str);\n    if (!m) {\n        return str.split(',');\n    }\n    const { pre, body, post } = m;\n    const p = pre.split(',');\n    p[p.length - 1] += '{' + body + '}';\n    const postParts = parseCommaParts(post);\n    if (post.length) {\n        ;\n        p[p.length - 1] += postParts.shift();\n        p.push.apply(p, postParts);\n    }\n    parts.push.apply(parts, p);\n    return parts;\n}\nexport function expand(str, options = {}) {\n    if (!str) {\n        return [];\n    }\n    const { max = EXPANSION_MAX } = options;\n    // I don't know why Bash 4.3 does this, but it does.\n    // Anything starting with {} will have the first two bytes preserved\n    // but *only* at the top level, so {},a}b will not expand to anything,\n    // but a{},b}c will be expanded to [a}c,abc].\n    // One could argue that this is a bug in Bash, but since the goal of\n    // this module is to match Bash's rules, we escape a leading {}\n    if (str.slice(0, 2) === '{}') {\n        str = '\\\\{\\\\}' + str.slice(2);\n    }\n    return expand_(escapeBraces(str), max, true).map(unescapeBraces);\n}\nfunction embrace(str) {\n    return '{' + str + '}';\n}\nfunction isPadded(el) {\n    return /^-?0\\d/.test(el);\n}\nfunction lte(i, y) {\n    return i <= y;\n}\nfunction gte(i, y) {\n    return i >= y;\n}\nfunction expand_(str, max, isTop) {\n    /** @type {string[]} */\n    const expansions = [];\n    const m = balanced('{', '}', str);\n    if (!m)\n        return [str];\n    // no need to expand pre, since it is guaranteed to be free of brace-sets\n    const pre = m.pre;\n    const post = m.post.length ? expand_(m.post, max, false) : [''];\n    if (/\\$$/.test(m.pre)) {\n        for (let k = 0; k < post.length && k < max; k++) {\n            const expansion = pre + '{' + m.body + '}' + post[k];\n            expansions.push(expansion);\n        }\n    }\n    else {\n        const isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n        const isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n        const isSequence = isNumericSequence || isAlphaSequence;\n        const isOptions = m.body.indexOf(',') >= 0;\n        if (!isSequence && !isOptions) {\n            // {a},b}\n            if (m.post.match(/,(?!,).*\\}/)) {\n                str = m.pre + '{' + m.body + escClose + m.post;\n                return expand_(str, max, true);\n            }\n            return [str];\n        }\n        let n;\n        if (isSequence) {\n            n = m.body.split(/\\.\\./);\n        }\n        else {\n            n = parseCommaParts(m.body);\n            if (n.length === 1 && n[0] !== undefined) {\n                // x{{a,b}}y ==> x{a}y x{b}y\n                n = expand_(n[0], max, false).map(embrace);\n                //XXX is this necessary? Can't seem to hit it in tests.\n                /* c8 ignore start */\n                if (n.length === 1) {\n                    return post.map(p => m.pre + n[0] + p);\n                }\n                /* c8 ignore stop */\n            }\n        }\n        // at this point, n is the parts, and we know it's not a comma set\n        // with a single entry.\n        let N;\n        if (isSequence && n[0] !== undefined && n[1] !== undefined) {\n            const x = numeric(n[0]);\n            const y = numeric(n[1]);\n            const width = Math.max(n[0].length, n[1].length);\n            let incr = n.length === 3 && n[2] !== undefined ? Math.abs(numeric(n[2])) : 1;\n            let test = lte;\n            const reverse = y < x;\n            if (reverse) {\n                incr *= -1;\n                test = gte;\n            }\n            const pad = n.some(isPadded);\n            N = [];\n            for (let i = x; test(i, y); i += incr) {\n                let c;\n                if (isAlphaSequence) {\n                    c = String.fromCharCode(i);\n                    if (c === '\\\\') {\n                        c = '';\n                    }\n                }\n                else {\n                    c = String(i);\n                    if (pad) {\n                        const need = width - c.length;\n                        if (need > 0) {\n                            const z = new Array(need + 1).join('0');\n                            if (i < 0) {\n                                c = '-' + z + c.slice(1);\n                            }\n                            else {\n                                c = z + c;\n                            }\n                        }\n                    }\n                }\n                N.push(c);\n            }\n        }\n        else {\n            N = [];\n            for (let j = 0; j < n.length; j++) {\n                N.push.apply(N, expand_(n[j], max, false));\n            }\n        }\n        for (let j = 0; j < N.length; j++) {\n            for (let k = 0; k < post.length && expansions.length < max; k++) {\n                const expansion = pre + N[j] + post[k];\n                if (!isTop || isSequence || expansion) {\n                    expansions.push(expansion);\n                }\n            }\n        }\n    }\n    return expansions;\n}\n//# sourceMappingURL=index.js.map","const MAX_PATTERN_LENGTH = 1024 * 64;\nexport const assertValidPattern = (pattern) => {\n    if (typeof pattern !== 'string') {\n        throw new TypeError('invalid pattern');\n    }\n    if (pattern.length > MAX_PATTERN_LENGTH) {\n        throw new TypeError('pattern is too long');\n    }\n};\n//# sourceMappingURL=assert-valid-pattern.js.map","// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n// { <posix class>: [<translation>, /u flag required, negated]\nconst posixClasses = {\n    '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n    '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n    '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n    '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n    '[:cntrl:]': ['\\\\p{Cc}', true],\n    '[:digit:]': ['\\\\p{Nd}', true],\n    '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n    '[:lower:]': ['\\\\p{Ll}', true],\n    '[:print:]': ['\\\\p{C}', true],\n    '[:punct:]': ['\\\\p{P}', true],\n    '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n    '[:upper:]': ['\\\\p{Lu}', true],\n    '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n    '[:xdigit:]': ['A-Fa-f0-9', false],\n};\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s) => s.replace(/[[\\]\\\\-]/g, '\\\\$&');\n// escape all regexp magic characters\nconst regexpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges) => ranges.join('');\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (glob, position) => {\n    const pos = position;\n    /* c8 ignore start */\n    if (glob.charAt(pos) !== '[') {\n        throw new Error('not in a brace expression');\n    }\n    /* c8 ignore stop */\n    const ranges = [];\n    const negs = [];\n    let i = pos + 1;\n    let sawStart = false;\n    let uflag = false;\n    let escaping = false;\n    let negate = false;\n    let endPos = pos;\n    let rangeStart = '';\n    WHILE: while (i < glob.length) {\n        const c = glob.charAt(i);\n        if ((c === '!' || c === '^') && i === pos + 1) {\n            negate = true;\n            i++;\n            continue;\n        }\n        if (c === ']' && sawStart && !escaping) {\n            endPos = i + 1;\n            break;\n        }\n        sawStart = true;\n        if (c === '\\\\') {\n            if (!escaping) {\n                escaping = true;\n                i++;\n                continue;\n            }\n            // escaped \\ char, fall through and treat like normal char\n        }\n        if (c === '[' && !escaping) {\n            // either a posix class, a collation equivalent, or just a [\n            for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n                if (glob.startsWith(cls, i)) {\n                    // invalid, [a-[] is fine, but not [a-[:alpha]]\n                    if (rangeStart) {\n                        return ['$.', false, glob.length - pos, true];\n                    }\n                    i += cls.length;\n                    if (neg)\n                        negs.push(unip);\n                    else\n                        ranges.push(unip);\n                    uflag = uflag || u;\n                    continue WHILE;\n                }\n            }\n        }\n        // now it's just a normal character, effectively\n        escaping = false;\n        if (rangeStart) {\n            // throw this range away if it's not valid, but others\n            // can still match.\n            if (c > rangeStart) {\n                ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));\n            }\n            else if (c === rangeStart) {\n                ranges.push(braceEscape(c));\n            }\n            rangeStart = '';\n            i++;\n            continue;\n        }\n        // now might be the start of a range.\n        // can be either c-d or c-] or c<more...>] or c] at this point\n        if (glob.startsWith('-]', i + 1)) {\n            ranges.push(braceEscape(c + '-'));\n            i += 2;\n            continue;\n        }\n        if (glob.startsWith('-', i + 1)) {\n            rangeStart = c;\n            i += 2;\n            continue;\n        }\n        // not the start of a range, just a single character\n        ranges.push(braceEscape(c));\n        i++;\n    }\n    if (endPos < i) {\n        // didn't see the end of the class, not a valid class,\n        // but might still be valid as a literal match.\n        return ['', false, 0, false];\n    }\n    // if we got no ranges and no negates, then we have a range that\n    // cannot possibly match anything, and that poisons the whole glob\n    if (!ranges.length && !negs.length) {\n        return ['$.', false, glob.length - pos, true];\n    }\n    // if we got one positive range, and it's a single character, then that's\n    // not actually a magic pattern, it's just that one literal character.\n    // we should not treat that as \"magic\", we should just return the literal\n    // character. [_] is a perfectly valid way to escape glob magic chars.\n    if (negs.length === 0 &&\n        ranges.length === 1 &&\n        /^\\\\?.$/.test(ranges[0]) &&\n        !negate) {\n        const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];\n        return [regexpEscape(r), false, endPos - pos, false];\n    }\n    const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';\n    const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';\n    const comb = ranges.length && negs.length ? '(' + sranges + '|' + snegs + ')'\n        : ranges.length ? sranges\n            : snegs;\n    return [comb, uflag, endPos - pos, true];\n};\n//# sourceMappingURL=brace-expressions.js.map","/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape} option is used, then\n * square-bracket escapes are removed, but not backslash escapes.\n *\n * For example, it will turn the string `'[*]'` into `*`, but it will not\n * turn `'\\\\*'` into `'*'`, because `\\` is a path separator in\n * `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both square-bracket escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n *\n * When `magicalBraces` is not set, escapes of braces (`{` and `}`) will not be\n * unescaped.\n */\nexport const unescape = (s, { windowsPathsNoEscape = false, magicalBraces = true, } = {}) => {\n    if (magicalBraces) {\n        return windowsPathsNoEscape ?\n            s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n            : s\n                .replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2')\n                .replace(/\\\\([^\\/])/g, '$1');\n    }\n    return windowsPathsNoEscape ?\n        s.replace(/\\[([^\\/\\\\{}])\\]/g, '$1')\n        : s\n            .replace(/((?!\\\\).|^)\\[([^\\/\\\\{}])\\]/g, '$1$2')\n            .replace(/\\\\([^\\/{}])/g, '$1');\n};\n//# sourceMappingURL=unescape.js.map","// parse a single path portion\nvar _a;\nimport { parseClass } from './brace-expressions.js';\nimport { unescape } from './unescape.js';\nconst types = new Set(['!', '?', '+', '*', '@']);\nconst isExtglobType = (c) => types.has(c);\nconst isExtglobAST = (c) => isExtglobType(c.type);\n// Map of which extglob types can adopt the children of a nested extglob\n//\n// anything but ! can adopt a matching type:\n// +(a|+(b|c)|d) => +(a|b|c|d)\n// *(a|*(b|c)|d) => *(a|b|c|d)\n// @(a|@(b|c)|d) => @(a|b|c|d)\n// ?(a|?(b|c)|d) => ?(a|b|c|d)\n//\n// * can adopt anything, because 0 or repetition is allowed\n// *(a|?(b|c)|d) => *(a|b|c|d)\n// *(a|+(b|c)|d) => *(a|b|c|d)\n// *(a|@(b|c)|d) => *(a|b|c|d)\n//\n// + can adopt @, because 1 or repetition is allowed\n// +(a|@(b|c)|d) => +(a|b|c|d)\n//\n// + and @ CANNOT adopt *, because 0 would be allowed\n// +(a|*(b|c)|d) => would match \"\", on *(b|c)\n// @(a|*(b|c)|d) => would match \"\", on *(b|c)\n//\n// + and @ CANNOT adopt ?, because 0 would be allowed\n// +(a|?(b|c)|d) => would match \"\", on ?(b|c)\n// @(a|?(b|c)|d) => would match \"\", on ?(b|c)\n//\n// ? can adopt @, because 0 or 1 is allowed\n// ?(a|@(b|c)|d) => ?(a|b|c|d)\n//\n// ? and @ CANNOT adopt * or +, because >1 would be allowed\n// ?(a|*(b|c)|d) => would match bbb on *(b|c)\n// @(a|*(b|c)|d) => would match bbb on *(b|c)\n// ?(a|+(b|c)|d) => would match bbb on +(b|c)\n// @(a|+(b|c)|d) => would match bbb on +(b|c)\n//\n// ! CANNOT adopt ! (nothing else can either)\n// !(a|!(b|c)|d) => !(a|b|c|d) would fail to match on b (not not b|c)\n//\n// ! can adopt @\n// !(a|@(b|c)|d) => !(a|b|c|d)\n//\n// ! CANNOT adopt *\n// !(a|*(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt +\n// !(a|+(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt ?\n// x!(a|?(b|c)|d) => x!(a|b|c|d) would fail to match \"x\"\nconst adoptionMap = new Map([\n    ['!', ['@']],\n    ['?', ['?', '@']],\n    ['@', ['@']],\n    ['*', ['*', '+', '?', '@']],\n    ['+', ['+', '@']],\n]);\n// nested extglobs that can be adopted in, but with the addition of\n// a blank '' element.\nconst adoptionWithSpaceMap = new Map([\n    ['!', ['?']],\n    ['@', ['?']],\n    ['+', ['?', '*']],\n]);\n// union of the previous two maps\nconst adoptionAnyMap = new Map([\n    ['!', ['?', '@']],\n    ['?', ['?', '@']],\n    ['@', ['?', '@']],\n    ['*', ['*', '+', '?', '@']],\n    ['+', ['+', '@', '?', '*']],\n]);\n// Extglobs that can take over their parent if they are the only child\n// the key is parent, value maps child to resulting extglob parent type\n// '@' is omitted because it's a special case. An `@` extglob with a single\n// member can always be usurped by that subpattern.\nconst usurpMap = new Map([\n    ['!', new Map([['!', '@']])],\n    [\n        '?',\n        new Map([\n            ['*', '*'],\n            ['+', '*'],\n        ]),\n    ],\n    [\n        '@',\n        new Map([\n            ['!', '!'],\n            ['?', '?'],\n            ['@', '@'],\n            ['*', '*'],\n            ['+', '+'],\n        ]),\n    ],\n    [\n        '+',\n        new Map([\n            ['?', '*'],\n            ['*', '*'],\n        ]),\n    ],\n]);\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))';\nconst startNoDot = '(?!\\\\.)';\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.']);\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.']);\nconst reSpecials = new Set('().*{}+?[]^$\\\\!');\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// any single thing other than /\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?';\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\nlet ID = 0;\nexport class AST {\n    type;\n    #root;\n    #hasMagic;\n    #uflag = false;\n    #parts = [];\n    #parent;\n    #parentIndex;\n    #negs;\n    #filledNegs = false;\n    #options;\n    #toString;\n    // set to true if it's an extglob with no children\n    // (which really means one child of '')\n    #emptyExt = false;\n    id = ++ID;\n    get depth() {\n        return (this.#parent?.depth ?? -1) + 1;\n    }\n    [Symbol.for('nodejs.util.inspect.custom')]() {\n        return {\n            '@@type': 'AST',\n            id: this.id,\n            type: this.type,\n            root: this.#root.id,\n            parent: this.#parent?.id,\n            depth: this.depth,\n            partsLength: this.#parts.length,\n            parts: this.#parts,\n        };\n    }\n    constructor(type, parent, options = {}) {\n        this.type = type;\n        // extglobs are inherently magical\n        if (type)\n            this.#hasMagic = true;\n        this.#parent = parent;\n        this.#root = this.#parent ? this.#parent.#root : this;\n        this.#options = this.#root === this ? options : this.#root.#options;\n        this.#negs = this.#root === this ? [] : this.#root.#negs;\n        if (type === '!' && !this.#root.#filledNegs)\n            this.#negs.push(this);\n        this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;\n    }\n    get hasMagic() {\n        /* c8 ignore start */\n        if (this.#hasMagic !== undefined)\n            return this.#hasMagic;\n        /* c8 ignore stop */\n        for (const p of this.#parts) {\n            if (typeof p === 'string')\n                continue;\n            if (p.type || p.hasMagic)\n                return (this.#hasMagic = true);\n        }\n        // note: will be undefined until we generate the regexp src and find out\n        return this.#hasMagic;\n    }\n    // reconstructs the pattern\n    toString() {\n        if (this.#toString !== undefined)\n            return this.#toString;\n        if (!this.type) {\n            return (this.#toString = this.#parts.map(p => String(p)).join(''));\n        }\n        else {\n            return (this.#toString =\n                this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');\n        }\n    }\n    #fillNegs() {\n        /* c8 ignore start */\n        if (this !== this.#root)\n            throw new Error('should only call on root');\n        if (this.#filledNegs)\n            return this;\n        /* c8 ignore stop */\n        // call toString() once to fill this out\n        this.toString();\n        this.#filledNegs = true;\n        let n;\n        while ((n = this.#negs.pop())) {\n            if (n.type !== '!')\n                continue;\n            // walk up the tree, appending everthing that comes AFTER parentIndex\n            let p = n;\n            let pp = p.#parent;\n            while (pp) {\n                for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {\n                    for (const part of n.#parts) {\n                        /* c8 ignore start */\n                        if (typeof part === 'string') {\n                            throw new Error('string part in extglob AST??');\n                        }\n                        /* c8 ignore stop */\n                        part.copyIn(pp.#parts[i]);\n                    }\n                }\n                p = pp;\n                pp = p.#parent;\n            }\n        }\n        return this;\n    }\n    push(...parts) {\n        for (const p of parts) {\n            if (p === '')\n                continue;\n            /* c8 ignore start */\n            if (typeof p !== 'string' &&\n                !(p instanceof _a && p.#parent === this)) {\n                throw new Error('invalid part: ' + p);\n            }\n            /* c8 ignore stop */\n            this.#parts.push(p);\n        }\n    }\n    toJSON() {\n        const ret = this.type === null ?\n            this.#parts\n                .slice()\n                .map(p => (typeof p === 'string' ? p : p.toJSON()))\n            : [this.type, ...this.#parts.map(p => p.toJSON())];\n        if (this.isStart() && !this.type)\n            ret.unshift([]);\n        if (this.isEnd() &&\n            (this === this.#root ||\n                (this.#root.#filledNegs && this.#parent?.type === '!'))) {\n            ret.push({});\n        }\n        return ret;\n    }\n    isStart() {\n        if (this.#root === this)\n            return true;\n        // if (this.type) return !!this.#parent?.isStart()\n        if (!this.#parent?.isStart())\n            return false;\n        if (this.#parentIndex === 0)\n            return true;\n        // if everything AHEAD of this is a negation, then it's still the \"start\"\n        const p = this.#parent;\n        for (let i = 0; i < this.#parentIndex; i++) {\n            const pp = p.#parts[i];\n            if (!(pp instanceof _a && pp.type === '!')) {\n                return false;\n            }\n        }\n        return true;\n    }\n    isEnd() {\n        if (this.#root === this)\n            return true;\n        if (this.#parent?.type === '!')\n            return true;\n        if (!this.#parent?.isEnd())\n            return false;\n        if (!this.type)\n            return this.#parent?.isEnd();\n        // if not root, it'll always have a parent\n        /* c8 ignore start */\n        const pl = this.#parent ? this.#parent.#parts.length : 0;\n        /* c8 ignore stop */\n        return this.#parentIndex === pl - 1;\n    }\n    copyIn(part) {\n        if (typeof part === 'string')\n            this.push(part);\n        else\n            this.push(part.clone(this));\n    }\n    clone(parent) {\n        const c = new _a(this.type, parent);\n        for (const p of this.#parts) {\n            c.copyIn(p);\n        }\n        return c;\n    }\n    static #parseAST(str, ast, pos, opt, extDepth) {\n        const maxDepth = opt.maxExtglobRecursion ?? 2;\n        let escaping = false;\n        let inBrace = false;\n        let braceStart = -1;\n        let braceNeg = false;\n        if (ast.type === null) {\n            // outside of a extglob, append until we find a start\n            let i = pos;\n            let acc = '';\n            while (i < str.length) {\n                const c = str.charAt(i++);\n                // still accumulate escapes at this point, but we do ignore\n                // starts that are escaped\n                if (escaping || c === '\\\\') {\n                    escaping = !escaping;\n                    acc += c;\n                    continue;\n                }\n                if (inBrace) {\n                    if (i === braceStart + 1) {\n                        if (c === '^' || c === '!') {\n                            braceNeg = true;\n                        }\n                    }\n                    else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n                        inBrace = false;\n                    }\n                    acc += c;\n                    continue;\n                }\n                else if (c === '[') {\n                    inBrace = true;\n                    braceStart = i;\n                    braceNeg = false;\n                    acc += c;\n                    continue;\n                }\n                // we don't have to check for adoption here, because that's\n                // done at the other recursion point.\n                const doRecurse = !opt.noext &&\n                    isExtglobType(c) &&\n                    str.charAt(i) === '(' &&\n                    extDepth <= maxDepth;\n                if (doRecurse) {\n                    ast.push(acc);\n                    acc = '';\n                    const ext = new _a(c, ast);\n                    i = _a.#parseAST(str, ext, i, opt, extDepth + 1);\n                    ast.push(ext);\n                    continue;\n                }\n                acc += c;\n            }\n            ast.push(acc);\n            return i;\n        }\n        // some kind of extglob, pos is at the (\n        // find the next | or )\n        let i = pos + 1;\n        let part = new _a(null, ast);\n        const parts = [];\n        let acc = '';\n        while (i < str.length) {\n            const c = str.charAt(i++);\n            // still accumulate escapes at this point, but we do ignore\n            // starts that are escaped\n            if (escaping || c === '\\\\') {\n                escaping = !escaping;\n                acc += c;\n                continue;\n            }\n            if (inBrace) {\n                if (i === braceStart + 1) {\n                    if (c === '^' || c === '!') {\n                        braceNeg = true;\n                    }\n                }\n                else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n                    inBrace = false;\n                }\n                acc += c;\n                continue;\n            }\n            else if (c === '[') {\n                inBrace = true;\n                braceStart = i;\n                braceNeg = false;\n                acc += c;\n                continue;\n            }\n            const doRecurse = !opt.noext &&\n                isExtglobType(c) &&\n                str.charAt(i) === '(' &&\n                /* c8 ignore start - the maxDepth is sufficient here */\n                (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)));\n            /* c8 ignore stop */\n            if (doRecurse) {\n                const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1;\n                part.push(acc);\n                acc = '';\n                const ext = new _a(c, part);\n                part.push(ext);\n                i = _a.#parseAST(str, ext, i, opt, extDepth + depthAdd);\n                continue;\n            }\n            if (c === '|') {\n                part.push(acc);\n                acc = '';\n                parts.push(part);\n                part = new _a(null, ast);\n                continue;\n            }\n            if (c === ')') {\n                if (acc === '' && ast.#parts.length === 0) {\n                    ast.#emptyExt = true;\n                }\n                part.push(acc);\n                acc = '';\n                ast.push(...parts, part);\n                return i;\n            }\n            acc += c;\n        }\n        // unfinished extglob\n        // if we got here, it was a malformed extglob! not an extglob, but\n        // maybe something else in there.\n        ast.type = null;\n        ast.#hasMagic = undefined;\n        ast.#parts = [str.substring(pos - 1)];\n        return i;\n    }\n    #canAdoptWithSpace(child) {\n        return this.#canAdopt(child, adoptionWithSpaceMap);\n    }\n    #canAdopt(child, map = adoptionMap) {\n        if (!child ||\n            typeof child !== 'object' ||\n            child.type !== null ||\n            child.#parts.length !== 1 ||\n            this.type === null) {\n            return false;\n        }\n        const gc = child.#parts[0];\n        if (!gc || typeof gc !== 'object' || gc.type === null) {\n            return false;\n        }\n        return this.#canAdoptType(gc.type, map);\n    }\n    #canAdoptType(c, map = adoptionAnyMap) {\n        return !!map.get(this.type)?.includes(c);\n    }\n    #adoptWithSpace(child, index) {\n        const gc = child.#parts[0];\n        const blank = new _a(null, gc, this.options);\n        blank.#parts.push('');\n        gc.push(blank);\n        this.#adopt(child, index);\n    }\n    #adopt(child, index) {\n        const gc = child.#parts[0];\n        this.#parts.splice(index, 1, ...gc.#parts);\n        for (const p of gc.#parts) {\n            if (typeof p === 'object')\n                p.#parent = this;\n        }\n        this.#toString = undefined;\n    }\n    #canUsurpType(c) {\n        const m = usurpMap.get(this.type);\n        return !!(m?.has(c));\n    }\n    #canUsurp(child) {\n        if (!child ||\n            typeof child !== 'object' ||\n            child.type !== null ||\n            child.#parts.length !== 1 ||\n            this.type === null ||\n            this.#parts.length !== 1) {\n            return false;\n        }\n        const gc = child.#parts[0];\n        if (!gc || typeof gc !== 'object' || gc.type === null) {\n            return false;\n        }\n        return this.#canUsurpType(gc.type);\n    }\n    #usurp(child) {\n        const m = usurpMap.get(this.type);\n        const gc = child.#parts[0];\n        const nt = m?.get(gc.type);\n        /* c8 ignore start - impossible */\n        if (!nt)\n            return false;\n        /* c8 ignore stop */\n        this.#parts = gc.#parts;\n        for (const p of this.#parts) {\n            if (typeof p === 'object') {\n                p.#parent = this;\n            }\n        }\n        this.type = nt;\n        this.#toString = undefined;\n        this.#emptyExt = false;\n    }\n    static fromGlob(pattern, options = {}) {\n        const ast = new _a(null, undefined, options);\n        _a.#parseAST(pattern, ast, 0, options, 0);\n        return ast;\n    }\n    // returns the regular expression if there's magic, or the unescaped\n    // string if not.\n    toMMPattern() {\n        // should only be called on root\n        /* c8 ignore start */\n        if (this !== this.#root)\n            return this.#root.toMMPattern();\n        /* c8 ignore stop */\n        const glob = this.toString();\n        const [re, body, hasMagic, uflag] = this.toRegExpSource();\n        // if we're in nocase mode, and not nocaseMagicOnly, then we do\n        // still need a regular expression if we have to case-insensitively\n        // match capital/lowercase characters.\n        const anyMagic = hasMagic ||\n            this.#hasMagic ||\n            (this.#options.nocase &&\n                !this.#options.nocaseMagicOnly &&\n                glob.toUpperCase() !== glob.toLowerCase());\n        if (!anyMagic) {\n            return body;\n        }\n        const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');\n        return Object.assign(new RegExp(`^${re}$`, flags), {\n            _src: re,\n            _glob: glob,\n        });\n    }\n    get options() {\n        return this.#options;\n    }\n    // returns the string match, the regexp source, whether there's magic\n    // in the regexp (so a regular expression is required) and whether or\n    // not the uflag is needed for the regular expression (for posix classes)\n    // TODO: instead of injecting the start/end at this point, just return\n    // the BODY of the regexp, along with the start/end portions suitable\n    // for binding the start/end in either a joined full-path makeRe context\n    // (where we bind to (^|/), or a standalone matchPart context (where\n    // we bind to ^, and not /).  Otherwise slashes get duped!\n    //\n    // In part-matching mode, the start is:\n    // - if not isStart: nothing\n    // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n    // - if dots allowed or not possible: ^\n    // - if dots possible and not allowed: ^(?!\\.)\n    // end is:\n    // - if not isEnd(): nothing\n    // - else: $\n    //\n    // In full-path matching mode, we put the slash at the START of the\n    // pattern, so start is:\n    // - if first pattern: same as part-matching mode\n    // - if not isStart(): nothing\n    // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n    // - if dots allowed or not possible: /\n    // - if dots possible and not allowed: /(?!\\.)\n    // end is:\n    // - if last pattern, same as part-matching mode\n    // - else nothing\n    //\n    // Always put the (?:$|/) on negated tails, though, because that has to be\n    // there to bind the end of the negated pattern portion, and it's easier to\n    // just stick it in now rather than try to inject it later in the middle of\n    // the pattern.\n    //\n    // We can just always return the same end, and leave it up to the caller\n    // to know whether it's going to be used joined or in parts.\n    // And, if the start is adjusted slightly, can do the same there:\n    // - if not isStart: nothing\n    // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n    // - if dots allowed or not possible: (?:/|^)\n    // - if dots possible and not allowed: (?:/|^)(?!\\.)\n    //\n    // But it's better to have a simpler binding without a conditional, for\n    // performance, so probably better to return both start options.\n    //\n    // Then the caller just ignores the end if it's not the first pattern,\n    // and the start always gets applied.\n    //\n    // But that's always going to be $ if it's the ending pattern, or nothing,\n    // so the caller can just attach $ at the end of the pattern when building.\n    //\n    // So the todo is:\n    // - better detect what kind of start is needed\n    // - return both flavors of starting pattern\n    // - attach $ at the end of the pattern when creating the actual RegExp\n    //\n    // Ah, but wait, no, that all only applies to the root when the first pattern\n    // is not an extglob. If the first pattern IS an extglob, then we need all\n    // that dot prevention biz to live in the extglob portions, because eg\n    // +(*|.x*) can match .xy but not .yx.\n    //\n    // So, return the two flavors if it's #root and the first child is not an\n    // AST, otherwise leave it to the child AST to handle it, and there,\n    // use the (?:^|/) style of start binding.\n    //\n    // Even simplified further:\n    // - Since the start for a join is eg /(?!\\.) and the start for a part\n    // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n    // or start or whatever) and prepend ^ or / at the Regexp construction.\n    toRegExpSource(allowDot) {\n        const dot = allowDot ?? !!this.#options.dot;\n        if (this.#root === this) {\n            this.#flatten();\n            this.#fillNegs();\n        }\n        if (!isExtglobAST(this)) {\n            const noEmpty = this.isStart() &&\n                this.isEnd() &&\n                !this.#parts.some(s => typeof s !== 'string');\n            const src = this.#parts\n                .map(p => {\n                const [re, _, hasMagic, uflag] = typeof p === 'string' ?\n                    _a.#parseGlob(p, this.#hasMagic, noEmpty)\n                    : p.toRegExpSource(allowDot);\n                this.#hasMagic = this.#hasMagic || hasMagic;\n                this.#uflag = this.#uflag || uflag;\n                return re;\n            })\n                .join('');\n            let start = '';\n            if (this.isStart()) {\n                if (typeof this.#parts[0] === 'string') {\n                    // this is the string that will match the start of the pattern,\n                    // so we need to protect against dots and such.\n                    // '.' and '..' cannot match unless the pattern is that exactly,\n                    // even if it starts with . or dot:true is set.\n                    const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);\n                    if (!dotTravAllowed) {\n                        const aps = addPatternStart;\n                        // check if we have a possibility of matching . or ..,\n                        // and prevent that.\n                        const needNoTrav = \n                        // dots are allowed, and the pattern starts with [ or .\n                        (dot && aps.has(src.charAt(0))) ||\n                            // the pattern starts with \\., and then [ or .\n                            (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n                            // the pattern starts with \\.\\., and then [ or .\n                            (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)));\n                        // no need to prevent dots if it can't match a dot, or if a\n                        // sub-pattern will be preventing it anyway.\n                        const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));\n                        start =\n                            needNoTrav ? startNoTraversal\n                                : needNoDot ? startNoDot\n                                    : '';\n                    }\n                }\n            }\n            // append the \"end of path portion\" pattern to negation tails\n            let end = '';\n            if (this.isEnd() &&\n                this.#root.#filledNegs &&\n                this.#parent?.type === '!') {\n                end = '(?:$|\\\\/)';\n            }\n            const final = start + src + end;\n            return [\n                final,\n                unescape(src),\n                (this.#hasMagic = !!this.#hasMagic),\n                this.#uflag,\n            ];\n        }\n        // We need to calculate the body *twice* if it's a repeat pattern\n        // at the start, once in nodot mode, then again in dot mode, so a\n        // pattern like *(?) can match 'x.y'\n        const repeated = this.type === '*' || this.type === '+';\n        // some kind of extglob\n        const start = this.type === '!' ? '(?:(?!(?:' : '(?:';\n        let body = this.#partsToRegExp(dot);\n        if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n            // invalid extglob, has to at least be *something* present, if it's\n            // the entire path portion.\n            const s = this.toString();\n            const me = this;\n            me.#parts = [s];\n            me.type = null;\n            me.#hasMagic = undefined;\n            return [s, unescape(this.toString()), false, false];\n        }\n        let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ?\n            ''\n            : this.#partsToRegExp(true);\n        if (bodyDotAllowed === body) {\n            bodyDotAllowed = '';\n        }\n        if (bodyDotAllowed) {\n            body = `(?:${body})(?:${bodyDotAllowed})*?`;\n        }\n        // an empty !() is exactly equivalent to a starNoEmpty\n        let final = '';\n        if (this.type === '!' && this.#emptyExt) {\n            final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;\n        }\n        else {\n            const close = this.type === '!' ?\n                // !() must match something,but !(x) can match ''\n                '))' +\n                    (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n                    star +\n                    ')'\n                : this.type === '@' ? ')'\n                    : this.type === '?' ? ')?'\n                        : this.type === '+' && bodyDotAllowed ? ')'\n                            : this.type === '*' && bodyDotAllowed ? `)?`\n                                : `)${this.type}`;\n            final = start + body + close;\n        }\n        return [\n            final,\n            unescape(body),\n            (this.#hasMagic = !!this.#hasMagic),\n            this.#uflag,\n        ];\n    }\n    #flatten() {\n        if (!isExtglobAST(this)) {\n            for (const p of this.#parts) {\n                if (typeof p === 'object') {\n                    p.#flatten();\n                }\n            }\n        }\n        else {\n            // do up to 10 passes to flatten as much as possible\n            let iterations = 0;\n            let done = false;\n            do {\n                done = true;\n                for (let i = 0; i < this.#parts.length; i++) {\n                    const c = this.#parts[i];\n                    if (typeof c === 'object') {\n                        c.#flatten();\n                        if (this.#canAdopt(c)) {\n                            done = false;\n                            this.#adopt(c, i);\n                        }\n                        else if (this.#canAdoptWithSpace(c)) {\n                            done = false;\n                            this.#adoptWithSpace(c, i);\n                        }\n                        else if (this.#canUsurp(c)) {\n                            done = false;\n                            this.#usurp(c);\n                        }\n                    }\n                }\n            } while (!done && ++iterations < 10);\n        }\n        this.#toString = undefined;\n    }\n    #partsToRegExp(dot) {\n        return this.#parts\n            .map(p => {\n            // extglob ASTs should only contain parent ASTs\n            /* c8 ignore start */\n            if (typeof p === 'string') {\n                throw new Error('string type in extglob ast??');\n            }\n            /* c8 ignore stop */\n            // can ignore hasMagic, because extglobs are already always magic\n            const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);\n            this.#uflag = this.#uflag || uflag;\n            return re;\n        })\n            .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n            .join('|');\n    }\n    static #parseGlob(glob, hasMagic, noEmpty = false) {\n        let escaping = false;\n        let re = '';\n        let uflag = false;\n        // multiple stars that aren't globstars coalesce into one *\n        let inStar = false;\n        for (let i = 0; i < glob.length; i++) {\n            const c = glob.charAt(i);\n            if (escaping) {\n                escaping = false;\n                re += (reSpecials.has(c) ? '\\\\' : '') + c;\n                continue;\n            }\n            if (c === '*') {\n                if (inStar)\n                    continue;\n                inStar = true;\n                re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star;\n                hasMagic = true;\n                continue;\n            }\n            else {\n                inStar = false;\n            }\n            if (c === '\\\\') {\n                if (i === glob.length - 1) {\n                    re += '\\\\\\\\';\n                }\n                else {\n                    escaping = true;\n                }\n                continue;\n            }\n            if (c === '[') {\n                const [src, needUflag, consumed, magic] = parseClass(glob, i);\n                if (consumed) {\n                    re += src;\n                    uflag = uflag || needUflag;\n                    i += consumed - 1;\n                    hasMagic = hasMagic || magic;\n                    continue;\n                }\n            }\n            if (c === '?') {\n                re += qmark;\n                hasMagic = true;\n                continue;\n            }\n            re += regExpEscape(c);\n        }\n        return [re, unescape(glob), !!hasMagic, uflag];\n    }\n}\n_a = AST;\n//# sourceMappingURL=ast.js.map","/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n *\n * If the {@link MinimatchOptions.magicalBraces} option is used,\n * then braces (`{` and `}`) will be escaped.\n */\nexport const escape = (s, { windowsPathsNoEscape = false, magicalBraces = false, } = {}) => {\n    // don't need to escape +@! because we escape the parens\n    // that make those magic, and escaping ! as [!] isn't valid,\n    // because [!]] is a valid glob class meaning not ']'.\n    if (magicalBraces) {\n        return windowsPathsNoEscape ?\n            s.replace(/[?*()[\\]{}]/g, '[$&]')\n            : s.replace(/[?*()[\\]\\\\{}]/g, '\\\\$&');\n    }\n    return windowsPathsNoEscape ?\n        s.replace(/[?*()[\\]]/g, '[$&]')\n        : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&');\n};\n//# sourceMappingURL=escape.js.map","import { expand } from 'brace-expansion';\nimport { assertValidPattern } from './assert-valid-pattern.js';\nimport { AST } from './ast.js';\nimport { escape } from './escape.js';\nimport { unescape } from './unescape.js';\nexport const minimatch = (p, pattern, options = {}) => {\n    assertValidPattern(pattern);\n    // shortcut: comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n        return false;\n    }\n    return new Minimatch(pattern, options).match(p);\n};\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/;\nconst starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);\nconst starDotExtTestDot = (ext) => (f) => f.endsWith(ext);\nconst starDotExtTestNocase = (ext) => {\n    ext = ext.toLowerCase();\n    return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);\n};\nconst starDotExtTestNocaseDot = (ext) => {\n    ext = ext.toLowerCase();\n    return (f) => f.toLowerCase().endsWith(ext);\n};\nconst starDotStarRE = /^\\*+\\.\\*+$/;\nconst starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');\nconst starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');\nconst dotStarRE = /^\\.\\*+$/;\nconst dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');\nconst starRE = /^\\*+$/;\nconst starTest = (f) => f.length !== 0 && !f.startsWith('.');\nconst starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/;\nconst qmarksTestNocase = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExt([$0]);\n    if (!ext)\n        return noext;\n    ext = ext.toLowerCase();\n    return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestNocaseDot = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExtDot([$0]);\n    if (!ext)\n        return noext;\n    ext = ext.toLowerCase();\n    return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestDot = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExtDot([$0]);\n    return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTest = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExt([$0]);\n    return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTestNoExt = ([$0]) => {\n    const len = $0.length;\n    return (f) => f.length === len && !f.startsWith('.');\n};\nconst qmarksTestNoExtDot = ([$0]) => {\n    const len = $0.length;\n    return (f) => f.length === len && f !== '.' && f !== '..';\n};\n/* c8 ignore start */\nconst defaultPlatform = (typeof process === 'object' && process ?\n    (typeof process.env === 'object' &&\n        process.env &&\n        process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n        process.platform\n    : 'posix');\nconst path = {\n    win32: { sep: '\\\\' },\n    posix: { sep: '/' },\n};\n/* c8 ignore stop */\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;\nminimatch.sep = sep;\nexport const GLOBSTAR = Symbol('globstar **');\nminimatch.GLOBSTAR = GLOBSTAR;\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?';\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?';\nexport const filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options);\nminimatch.filter = filter;\nconst ext = (a, b = {}) => Object.assign({}, a, b);\nexport const defaults = (def) => {\n    if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n        return minimatch;\n    }\n    const orig = minimatch;\n    const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));\n    return Object.assign(m, {\n        Minimatch: class Minimatch extends orig.Minimatch {\n            constructor(pattern, options = {}) {\n                super(pattern, ext(def, options));\n            }\n            static defaults(options) {\n                return orig.defaults(ext(def, options)).Minimatch;\n            }\n        },\n        AST: class AST extends orig.AST {\n            /* c8 ignore start */\n            constructor(type, parent, options = {}) {\n                super(type, parent, ext(def, options));\n            }\n            /* c8 ignore stop */\n            static fromGlob(pattern, options = {}) {\n                return orig.AST.fromGlob(pattern, ext(def, options));\n            }\n        },\n        unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),\n        escape: (s, options = {}) => orig.escape(s, ext(def, options)),\n        filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),\n        defaults: (options) => orig.defaults(ext(def, options)),\n        makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),\n        braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),\n        match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),\n        sep: orig.sep,\n        GLOBSTAR: GLOBSTAR,\n    });\n};\nminimatch.defaults = defaults;\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (pattern, options = {}) => {\n    assertValidPattern(pattern);\n    // Thanks to Yeting Li <https://github.com/yetingli> for\n    // improving this regexp to avoid a ReDOS vulnerability.\n    if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n        // shortcut. no need to expand.\n        return [pattern];\n    }\n    return expand(pattern, { max: options.braceExpandMax });\n};\nminimatch.braceExpand = braceExpand;\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nexport const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();\nminimatch.makeRe = makeRe;\nexport const match = (list, pattern, options = {}) => {\n    const mm = new Minimatch(pattern, options);\n    list = list.filter(f => mm.match(f));\n    if (mm.options.nonull && !list.length) {\n        list.push(pattern);\n    }\n    return list;\n};\nminimatch.match = match;\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/;\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\nexport class Minimatch {\n    options;\n    set;\n    pattern;\n    windowsPathsNoEscape;\n    nonegate;\n    negate;\n    comment;\n    empty;\n    preserveMultipleSlashes;\n    partial;\n    globSet;\n    globParts;\n    nocase;\n    isWindows;\n    platform;\n    windowsNoMagicRoot;\n    maxGlobstarRecursion;\n    regexp;\n    constructor(pattern, options = {}) {\n        assertValidPattern(pattern);\n        options = options || {};\n        this.options = options;\n        this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200;\n        this.pattern = pattern;\n        this.platform = options.platform || defaultPlatform;\n        this.isWindows = this.platform === 'win32';\n        // avoid the annoying deprecation flag lol\n        const awe = ('allowWindow' + 'sEscape');\n        this.windowsPathsNoEscape =\n            !!options.windowsPathsNoEscape || options[awe] === false;\n        if (this.windowsPathsNoEscape) {\n            this.pattern = this.pattern.replace(/\\\\/g, '/');\n        }\n        this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;\n        this.regexp = null;\n        this.negate = false;\n        this.nonegate = !!options.nonegate;\n        this.comment = false;\n        this.empty = false;\n        this.partial = !!options.partial;\n        this.nocase = !!this.options.nocase;\n        this.windowsNoMagicRoot =\n            options.windowsNoMagicRoot !== undefined ?\n                options.windowsNoMagicRoot\n                : !!(this.isWindows && this.nocase);\n        this.globSet = [];\n        this.globParts = [];\n        this.set = [];\n        // make the set of regexps etc.\n        this.make();\n    }\n    hasMagic() {\n        if (this.options.magicalBraces && this.set.length > 1) {\n            return true;\n        }\n        for (const pattern of this.set) {\n            for (const part of pattern) {\n                if (typeof part !== 'string')\n                    return true;\n            }\n        }\n        return false;\n    }\n    debug(..._) { }\n    make() {\n        const pattern = this.pattern;\n        const options = this.options;\n        // empty patterns and comments match nothing.\n        if (!options.nocomment && pattern.charAt(0) === '#') {\n            this.comment = true;\n            return;\n        }\n        if (!pattern) {\n            this.empty = true;\n            return;\n        }\n        // step 1: figure out negation, etc.\n        this.parseNegate();\n        // step 2: expand braces\n        this.globSet = [...new Set(this.braceExpand())];\n        if (options.debug) {\n            this.debug = (...args) => console.error(...args);\n        }\n        this.debug(this.pattern, this.globSet);\n        // step 3: now we have a set, so turn each one into a series of\n        // path-portion matching patterns.\n        // These will be regexps, except in the case of \"**\", which is\n        // set to the GLOBSTAR object for globstar behavior,\n        // and will not contain any / characters\n        //\n        // First, we preprocess to make the glob pattern sets a bit simpler\n        // and deduped.  There are some perf-killing patterns that can cause\n        // problems with a glob walk, but we can simplify them down a bit.\n        const rawGlobParts = this.globSet.map(s => this.slashSplit(s));\n        this.globParts = this.preprocess(rawGlobParts);\n        this.debug(this.pattern, this.globParts);\n        // glob --> regexps\n        let set = this.globParts.map((s, _, __) => {\n            if (this.isWindows && this.windowsNoMagicRoot) {\n                // check if it's a drive or unc path.\n                const isUNC = s[0] === '' &&\n                    s[1] === '' &&\n                    (s[2] === '?' || !globMagic.test(s[2])) &&\n                    !globMagic.test(s[3]);\n                const isDrive = /^[a-z]:/i.test(s[0]);\n                if (isUNC) {\n                    return [\n                        ...s.slice(0, 4),\n                        ...s.slice(4).map(ss => this.parse(ss)),\n                    ];\n                }\n                else if (isDrive) {\n                    return [s[0], ...s.slice(1).map(ss => this.parse(ss))];\n                }\n            }\n            return s.map(ss => this.parse(ss));\n        });\n        this.debug(this.pattern, set);\n        // filter out everything that didn't compile properly.\n        this.set = set.filter(s => s.indexOf(false) === -1);\n        // do not treat the ? in UNC paths as magic\n        if (this.isWindows) {\n            for (let i = 0; i < this.set.length; i++) {\n                const p = this.set[i];\n                if (p[0] === '' &&\n                    p[1] === '' &&\n                    this.globParts[i][2] === '?' &&\n                    typeof p[3] === 'string' &&\n                    /^[a-z]:$/i.test(p[3])) {\n                    p[2] = '?';\n                }\n            }\n        }\n        this.debug(this.pattern, this.set);\n    }\n    // various transforms to equivalent pattern sets that are\n    // faster to process in a filesystem walk.  The goal is to\n    // eliminate what we can, and push all ** patterns as far\n    // to the right as possible, even if it increases the number\n    // of patterns that we have to process.\n    preprocess(globParts) {\n        // if we're not in globstar mode, then turn ** into *\n        if (this.options.noglobstar) {\n            for (let i = 0; i < globParts.length; i++) {\n                for (let j = 0; j < globParts[i].length; j++) {\n                    if (globParts[i][j] === '**') {\n                        globParts[i][j] = '*';\n                    }\n                }\n            }\n        }\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            // aggressive optimization for the purpose of fs walking\n            globParts = this.firstPhasePreProcess(globParts);\n            globParts = this.secondPhasePreProcess(globParts);\n        }\n        else if (optimizationLevel >= 1) {\n            // just basic optimizations to remove some .. parts\n            globParts = this.levelOneOptimize(globParts);\n        }\n        else {\n            // just collapse multiple ** portions into one\n            globParts = this.adjascentGlobstarOptimize(globParts);\n        }\n        return globParts;\n    }\n    // just get rid of adjascent ** portions\n    adjascentGlobstarOptimize(globParts) {\n        return globParts.map(parts => {\n            let gs = -1;\n            while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n                let i = gs;\n                while (parts[i + 1] === '**') {\n                    i++;\n                }\n                if (i !== gs) {\n                    parts.splice(gs, i - gs);\n                }\n            }\n            return parts;\n        });\n    }\n    // get rid of adjascent ** and resolve .. portions\n    levelOneOptimize(globParts) {\n        return globParts.map(parts => {\n            parts = parts.reduce((set, part) => {\n                const prev = set[set.length - 1];\n                if (part === '**' && prev === '**') {\n                    return set;\n                }\n                if (part === '..') {\n                    if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n                        set.pop();\n                        return set;\n                    }\n                }\n                set.push(part);\n                return set;\n            }, []);\n            return parts.length === 0 ? [''] : parts;\n        });\n    }\n    levelTwoFileOptimize(parts) {\n        if (!Array.isArray(parts)) {\n            parts = this.slashSplit(parts);\n        }\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // <pre>/<e>/<rest> -> <pre>/<rest>\n            if (!this.preserveMultipleSlashes) {\n                for (let i = 1; i < parts.length - 1; i++) {\n                    const p = parts[i];\n                    // don't squeeze out UNC patterns\n                    if (i === 1 && p === '' && parts[0] === '')\n                        continue;\n                    if (p === '.' || p === '') {\n                        didSomething = true;\n                        parts.splice(i, 1);\n                        i--;\n                    }\n                }\n                if (parts[0] === '.' &&\n                    parts.length === 2 &&\n                    (parts[1] === '.' || parts[1] === '')) {\n                    didSomething = true;\n                    parts.pop();\n                }\n            }\n            // <pre>/<p>/../<rest> -> <pre>/<rest>\n            let dd = 0;\n            while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                const p = parts[dd - 1];\n                if (p && p !== '.' && p !== '..' && p !== '**') {\n                    didSomething = true;\n                    parts.splice(dd - 1, 2);\n                    dd -= 2;\n                }\n            }\n        } while (didSomething);\n        return parts.length === 0 ? [''] : parts;\n    }\n    // First phase: single-pattern processing\n    // <pre> is 1 or more portions\n    // <rest> is 1 or more portions\n    // <p> is any portion other than ., .., '', or **\n    // <e> is . or ''\n    //\n    // **/.. is *brutal* for filesystem walking performance, because\n    // it effectively resets the recursive walk each time it occurs,\n    // and ** cannot be reduced out by a .. pattern part like a regexp\n    // or most strings (other than .., ., and '') can be.\n    //\n    // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}\n    // <pre>/<e>/<rest> -> <pre>/<rest>\n    // <pre>/<p>/../<rest> -> <pre>/<rest>\n    // **/**/<rest> -> **/<rest>\n    //\n    // **/*/<rest> -> */**/<rest> <== not valid because ** doesn't follow\n    // this WOULD be allowed if ** did follow symlinks, or * didn't\n    firstPhasePreProcess(globParts) {\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}\n            for (let parts of globParts) {\n                let gs = -1;\n                while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n                    let gss = gs;\n                    while (parts[gss + 1] === '**') {\n                        // <pre>/**/**/<rest> -> <pre>/**/<rest>\n                        gss++;\n                    }\n                    // eg, if gs is 2 and gss is 4, that means we have 3 **\n                    // parts, and can remove 2 of them.\n                    if (gss > gs) {\n                        parts.splice(gs + 1, gss - gs);\n                    }\n                    let next = parts[gs + 1];\n                    const p = parts[gs + 2];\n                    const p2 = parts[gs + 3];\n                    if (next !== '..')\n                        continue;\n                    if (!p ||\n                        p === '.' ||\n                        p === '..' ||\n                        !p2 ||\n                        p2 === '.' ||\n                        p2 === '..') {\n                        continue;\n                    }\n                    didSomething = true;\n                    // edit parts in place, and push the new one\n                    parts.splice(gs, 1);\n                    const other = parts.slice(0);\n                    other[gs] = '**';\n                    globParts.push(other);\n                    gs--;\n                }\n                // <pre>/<e>/<rest> -> <pre>/<rest>\n                if (!this.preserveMultipleSlashes) {\n                    for (let i = 1; i < parts.length - 1; i++) {\n                        const p = parts[i];\n                        // don't squeeze out UNC patterns\n                        if (i === 1 && p === '' && parts[0] === '')\n                            continue;\n                        if (p === '.' || p === '') {\n                            didSomething = true;\n                            parts.splice(i, 1);\n                            i--;\n                        }\n                    }\n                    if (parts[0] === '.' &&\n                        parts.length === 2 &&\n                        (parts[1] === '.' || parts[1] === '')) {\n                        didSomething = true;\n                        parts.pop();\n                    }\n                }\n                // <pre>/<p>/../<rest> -> <pre>/<rest>\n                let dd = 0;\n                while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                    const p = parts[dd - 1];\n                    if (p && p !== '.' && p !== '..' && p !== '**') {\n                        didSomething = true;\n                        const needDot = dd === 1 && parts[dd + 1] === '**';\n                        const splin = needDot ? ['.'] : [];\n                        parts.splice(dd - 1, 2, ...splin);\n                        if (parts.length === 0)\n                            parts.push('');\n                        dd -= 2;\n                    }\n                }\n            }\n        } while (didSomething);\n        return globParts;\n    }\n    // second phase: multi-pattern dedupes\n    // {<pre>/*/<rest>,<pre>/<p>/<rest>} -> <pre>/*/<rest>\n    // {<pre>/<rest>,<pre>/<rest>} -> <pre>/<rest>\n    // {<pre>/**/<rest>,<pre>/<rest>} -> <pre>/**/<rest>\n    //\n    // {<pre>/**/<rest>,<pre>/**/<p>/<rest>} -> <pre>/**/<rest>\n    // ^-- not valid because ** doens't follow symlinks\n    secondPhasePreProcess(globParts) {\n        for (let i = 0; i < globParts.length - 1; i++) {\n            for (let j = i + 1; j < globParts.length; j++) {\n                const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);\n                if (matched) {\n                    globParts[i] = [];\n                    globParts[j] = matched;\n                    break;\n                }\n            }\n        }\n        return globParts.filter(gs => gs.length);\n    }\n    partsMatch(a, b, emptyGSMatch = false) {\n        let ai = 0;\n        let bi = 0;\n        let result = [];\n        let which = '';\n        while (ai < a.length && bi < b.length) {\n            if (a[ai] === b[bi]) {\n                result.push(which === 'b' ? b[bi] : a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n                result.push(a[ai]);\n                ai++;\n            }\n            else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n                result.push(b[bi]);\n                bi++;\n            }\n            else if (a[ai] === '*' &&\n                b[bi] &&\n                (this.options.dot || !b[bi].startsWith('.')) &&\n                b[bi] !== '**') {\n                if (which === 'b')\n                    return false;\n                which = 'a';\n                result.push(a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (b[bi] === '*' &&\n                a[ai] &&\n                (this.options.dot || !a[ai].startsWith('.')) &&\n                a[ai] !== '**') {\n                if (which === 'a')\n                    return false;\n                which = 'b';\n                result.push(b[bi]);\n                ai++;\n                bi++;\n            }\n            else {\n                return false;\n            }\n        }\n        // if we fall out of the loop, it means they two are identical\n        // as long as their lengths match\n        return a.length === b.length && result;\n    }\n    parseNegate() {\n        if (this.nonegate)\n            return;\n        const pattern = this.pattern;\n        let negate = false;\n        let negateOffset = 0;\n        for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n            negate = !negate;\n            negateOffset++;\n        }\n        if (negateOffset)\n            this.pattern = pattern.slice(negateOffset);\n        this.negate = negate;\n    }\n    // set partial to true to test if, for example,\n    // \"/a/b\" matches the start of \"/*/b/*/d\"\n    // Partial means, if you run out of file before you run\n    // out of pattern, then that's fine, as long as all\n    // the parts match.\n    matchOne(file, pattern, partial = false) {\n        let fileStartIndex = 0;\n        let patternStartIndex = 0;\n        // UNC paths like //?/X:/... can match X:/... and vice versa\n        // Drive letters in absolute drive or unc paths are always compared\n        // case-insensitively.\n        if (this.isWindows) {\n            const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);\n            const fileUNC = !fileDrive &&\n                file[0] === '' &&\n                file[1] === '' &&\n                file[2] === '?' &&\n                /^[a-z]:$/i.test(file[3]);\n            const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);\n            const patternUNC = !patternDrive &&\n                pattern[0] === '' &&\n                pattern[1] === '' &&\n                pattern[2] === '?' &&\n                typeof pattern[3] === 'string' &&\n                /^[a-z]:$/i.test(pattern[3]);\n            const fdi = fileUNC ? 3\n                : fileDrive ? 0\n                    : undefined;\n            const pdi = patternUNC ? 3\n                : patternDrive ? 0\n                    : undefined;\n            if (typeof fdi === 'number' && typeof pdi === 'number') {\n                const [fd, pd] = [\n                    file[fdi],\n                    pattern[pdi],\n                ];\n                // start matching at the drive letter index of each\n                if (fd.toLowerCase() === pd.toLowerCase()) {\n                    pattern[pdi] = fd;\n                    patternStartIndex = pdi;\n                    fileStartIndex = fdi;\n                }\n            }\n        }\n        // resolve and reduce . and .. portions in the file as well.\n        // don't need to do the second phase, because it's only one string[]\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            file = this.levelTwoFileOptimize(file);\n        }\n        if (pattern.includes(GLOBSTAR)) {\n            return this.#matchGlobstar(file, pattern, partial, fileStartIndex, patternStartIndex);\n        }\n        return this.#matchOne(file, pattern, partial, fileStartIndex, patternStartIndex);\n    }\n    #matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {\n        // split the pattern into head, tail, and middle of ** delimited parts\n        const firstgs = pattern.indexOf(GLOBSTAR, patternIndex);\n        const lastgs = pattern.lastIndexOf(GLOBSTAR);\n        // split the pattern up into globstar-delimited sections\n        // the tail has to be at the end, and the others just have\n        // to be found in order from the head.\n        const [head, body, tail] = partial ? [\n            pattern.slice(patternIndex, firstgs),\n            pattern.slice(firstgs + 1),\n            [],\n        ] : [\n            pattern.slice(patternIndex, firstgs),\n            pattern.slice(firstgs + 1, lastgs),\n            pattern.slice(lastgs + 1),\n        ];\n        // check the head, from the current file/pattern index.\n        if (head.length) {\n            const fileHead = file.slice(fileIndex, fileIndex + head.length);\n            if (!this.#matchOne(fileHead, head, partial, 0, 0)) {\n                return false;\n            }\n            fileIndex += head.length;\n            patternIndex += head.length;\n        }\n        // now we know the head matches!\n        // if the last portion is not empty, it MUST match the end\n        // check the tail\n        let fileTailMatch = 0;\n        if (tail.length) {\n            // if head + tail > file, then we cannot possibly match\n            if (tail.length + fileIndex > file.length)\n                return false;\n            // try to match the tail\n            let tailStart = file.length - tail.length;\n            if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n                fileTailMatch = tail.length;\n            }\n            else {\n                // affordance for stuff like a/**/* matching a/b/\n                // if the last file portion is '', and there's more to the pattern\n                // then try without the '' bit.\n                if (file[file.length - 1] !== '' ||\n                    fileIndex + tail.length === file.length) {\n                    return false;\n                }\n                tailStart--;\n                if (!this.#matchOne(file, tail, partial, tailStart, 0)) {\n                    return false;\n                }\n                fileTailMatch = tail.length + 1;\n            }\n        }\n        // now we know the tail matches!\n        // the middle is zero or more portions wrapped in **, possibly\n        // containing more ** sections.\n        // so a/**/b/**/c/**/d has become **/b/**/c/**\n        // if it's empty, it means a/**/b, just verify we have no bad dots\n        // if there's no tail, so it ends on /**, then we must have *something*\n        // after the head, or it's not a matc\n        if (!body.length) {\n            let sawSome = !!fileTailMatch;\n            for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n                const f = String(file[i]);\n                sawSome = true;\n                if (f === '.' ||\n                    f === '..' ||\n                    (!this.options.dot && f.startsWith('.'))) {\n                    return false;\n                }\n            }\n            // in partial mode, we just need to get past all file parts\n            return partial || sawSome;\n        }\n        // now we know that there's one or more body sections, which can\n        // be matched anywhere from the 0 index (because the head was pruned)\n        // through to the length-fileTailMatch index.\n        // split the body up into sections, and note the minimum index it can\n        // be found at (start with the length of all previous segments)\n        // [section, before, after]\n        const bodySegments = [[[], 0]];\n        let currentBody = bodySegments[0];\n        let nonGsParts = 0;\n        const nonGsPartsSums = [0];\n        for (const b of body) {\n            if (b === GLOBSTAR) {\n                nonGsPartsSums.push(nonGsParts);\n                currentBody = [[], 0];\n                bodySegments.push(currentBody);\n            }\n            else {\n                currentBody[0].push(b);\n                nonGsParts++;\n            }\n        }\n        let i = bodySegments.length - 1;\n        const fileLength = file.length - fileTailMatch;\n        for (const b of bodySegments) {\n            b[1] = fileLength - (nonGsPartsSums[i--] + b[0].length);\n        }\n        return !!this.#matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);\n    }\n    // return false for \"nope, not matching\"\n    // return null for \"not matching, cannot keep trying\"\n    #matchGlobStarBodySections(file, \n    // pattern section, last possible position for it\n    bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {\n        // take the first body segment, and walk from fileIndex to its \"after\"\n        // value at the end\n        // If it doesn't match at that position, we increment, until we hit\n        // that final possible position, and give up.\n        // If it does match, then advance and try to rest.\n        // If any of them fail we keep walking forward.\n        // this is still a bit recursively painful, but it's more constrained\n        // than previous implementations, because we never test something that\n        // can't possibly be a valid matching condition.\n        const bs = bodySegments[bodyIndex];\n        if (!bs) {\n            // just make sure that there's no bad dots\n            for (let i = fileIndex; i < file.length; i++) {\n                sawTail = true;\n                const f = file[i];\n                if (f === '.' ||\n                    f === '..' ||\n                    (!this.options.dot && f.startsWith('.'))) {\n                    return false;\n                }\n            }\n            return sawTail;\n        }\n        // have a non-globstar body section to test\n        const [body, after] = bs;\n        while (fileIndex <= after) {\n            const m = this.#matchOne(file.slice(0, fileIndex + body.length), body, partial, fileIndex, 0);\n            // if limit exceeded, no match. intentional false negative,\n            // acceptable break in correctness for security.\n            if (m && globStarDepth < this.maxGlobstarRecursion) {\n                // match! see if the rest match. if so, we're done!\n                const sub = this.#matchGlobStarBodySections(file, bodySegments, fileIndex + body.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);\n                if (sub !== false) {\n                    return sub;\n                }\n            }\n            const f = file[fileIndex];\n            if (f === '.' ||\n                f === '..' ||\n                (!this.options.dot && f.startsWith('.'))) {\n                return false;\n            }\n            fileIndex++;\n        }\n        // walked off. no point continuing\n        return partial || null;\n    }\n    #matchOne(file, pattern, partial, fileIndex, patternIndex) {\n        let fi;\n        let pi;\n        let pl;\n        let fl;\n        for (fi = fileIndex,\n            pi = patternIndex,\n            fl = file.length,\n            pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {\n            this.debug('matchOne loop');\n            let p = pattern[pi];\n            let f = file[fi];\n            this.debug(pattern, p, f);\n            // should be impossible.\n            // some invalid regexp stuff in the set.\n            /* c8 ignore start */\n            if (p === false || p === GLOBSTAR) {\n                return false;\n            }\n            /* c8 ignore stop */\n            // something other than **\n            // non-magic patterns just have to match exactly\n            // patterns with magic have been turned into regexps.\n            let hit;\n            if (typeof p === 'string') {\n                hit = f === p;\n                this.debug('string match', p, f, hit);\n            }\n            else {\n                hit = p.test(f);\n                this.debug('pattern match', p, f, hit);\n            }\n            if (!hit)\n                return false;\n        }\n        // Note: ending in / means that we'll get a final \"\"\n        // at the end of the pattern.  This can only match a\n        // corresponding \"\" at the end of the file.\n        // If the file ends in /, then it can only match a\n        // a pattern that ends in /, unless the pattern just\n        // doesn't have any more for it. But, a/b/ should *not*\n        // match \"a/b/*\", even though \"\" matches against the\n        // [^/]*? pattern, except in partial mode, where it might\n        // simply not be reached yet.\n        // However, a/b/ should still satisfy a/*\n        // now either we fell off the end of the pattern, or we're done.\n        if (fi === fl && pi === pl) {\n            // ran out of pattern and filename at the same time.\n            // an exact hit!\n            return true;\n        }\n        else if (fi === fl) {\n            // ran out of file, but still had pattern left.\n            // this is ok if we're doing the match as part of\n            // a glob fs traversal.\n            return partial;\n        }\n        else if (pi === pl) {\n            // ran out of pattern, still have file left.\n            // this is only acceptable if we're on the very last\n            // empty segment of a file with a trailing slash.\n            // a/* should match a/b/\n            return fi === fl - 1 && file[fi] === '';\n            /* c8 ignore start */\n        }\n        else {\n            // should be unreachable.\n            throw new Error('wtf?');\n        }\n        /* c8 ignore stop */\n    }\n    braceExpand() {\n        return braceExpand(this.pattern, this.options);\n    }\n    parse(pattern) {\n        assertValidPattern(pattern);\n        const options = this.options;\n        // shortcuts\n        if (pattern === '**')\n            return GLOBSTAR;\n        if (pattern === '')\n            return '';\n        // far and away, the most common glob pattern parts are\n        // *, *.*, and *.<ext>  Add a fast check method for those.\n        let m;\n        let fastTest = null;\n        if ((m = pattern.match(starRE))) {\n            fastTest = options.dot ? starTestDot : starTest;\n        }\n        else if ((m = pattern.match(starDotExtRE))) {\n            fastTest = (options.nocase ?\n                options.dot ?\n                    starDotExtTestNocaseDot\n                    : starDotExtTestNocase\n                : options.dot ? starDotExtTestDot\n                    : starDotExtTest)(m[1]);\n        }\n        else if ((m = pattern.match(qmarksRE))) {\n            fastTest = (options.nocase ?\n                options.dot ?\n                    qmarksTestNocaseDot\n                    : qmarksTestNocase\n                : options.dot ? qmarksTestDot\n                    : qmarksTest)(m);\n        }\n        else if ((m = pattern.match(starDotStarRE))) {\n            fastTest = options.dot ? starDotStarTestDot : starDotStarTest;\n        }\n        else if ((m = pattern.match(dotStarRE))) {\n            fastTest = dotStarTest;\n        }\n        const re = AST.fromGlob(pattern, this.options).toMMPattern();\n        if (fastTest && typeof re === 'object') {\n            // Avoids overriding in frozen environments\n            Reflect.defineProperty(re, 'test', { value: fastTest });\n        }\n        return re;\n    }\n    makeRe() {\n        if (this.regexp || this.regexp === false)\n            return this.regexp;\n        // at this point, this.set is a 2d array of partial\n        // pattern strings, or \"**\".\n        //\n        // It's better to use .match().  This function shouldn't\n        // be used, really, but it's pretty convenient sometimes,\n        // when you just want to work with a regex.\n        const set = this.set;\n        if (!set.length) {\n            this.regexp = false;\n            return this.regexp;\n        }\n        const options = this.options;\n        const twoStar = options.noglobstar ? star\n            : options.dot ? twoStarDot\n                : twoStarNoDot;\n        const flags = new Set(options.nocase ? ['i'] : []);\n        // regexpify non-globstar patterns\n        // if ** is only item, then we just do one twoStar\n        // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n        // if ** is last, append (\\/twoStar|) to previous\n        // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n        // then filter out GLOBSTAR symbols\n        let re = set\n            .map(pattern => {\n            const pp = pattern.map(p => {\n                if (p instanceof RegExp) {\n                    for (const f of p.flags.split(''))\n                        flags.add(f);\n                }\n                return (typeof p === 'string' ? regExpEscape(p)\n                    : p === GLOBSTAR ? GLOBSTAR\n                        : p._src);\n            });\n            pp.forEach((p, i) => {\n                const next = pp[i + 1];\n                const prev = pp[i - 1];\n                if (p !== GLOBSTAR || prev === GLOBSTAR) {\n                    return;\n                }\n                if (prev === undefined) {\n                    if (next !== undefined && next !== GLOBSTAR) {\n                        pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next;\n                    }\n                    else {\n                        pp[i] = twoStar;\n                    }\n                }\n                else if (next === undefined) {\n                    pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?';\n                }\n                else if (next !== GLOBSTAR) {\n                    pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next;\n                    pp[i + 1] = GLOBSTAR;\n                }\n            });\n            const filtered = pp.filter(p => p !== GLOBSTAR);\n            // For partial matches, we need to make the pattern match\n            // any prefix of the full path. We do this by generating\n            // alternative patterns that match progressively longer prefixes.\n            if (this.partial && filtered.length >= 1) {\n                const prefixes = [];\n                for (let i = 1; i <= filtered.length; i++) {\n                    prefixes.push(filtered.slice(0, i).join('/'));\n                }\n                return '(?:' + prefixes.join('|') + ')';\n            }\n            return filtered.join('/');\n        })\n            .join('|');\n        // need to wrap in parens if we had more than one thing with |,\n        // otherwise only the first will be anchored to ^ and the last to $\n        const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];\n        // must match entire pattern\n        // ending in a * or ** will make it less strict.\n        re = '^' + open + re + close + '$';\n        // In partial mode, '/' should always match as it's a valid prefix for any pattern\n        if (this.partial) {\n            re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$';\n        }\n        // can match anything, as long as it's not this.\n        if (this.negate)\n            re = '^(?!' + re + ').+$';\n        try {\n            this.regexp = new RegExp(re, [...flags].join(''));\n            /* c8 ignore start */\n        }\n        catch (ex) {\n            // should be impossible\n            this.regexp = false;\n        }\n        /* c8 ignore stop */\n        return this.regexp;\n    }\n    slashSplit(p) {\n        // if p starts with // on windows, we preserve that\n        // so that UNC paths aren't broken.  Otherwise, any number of\n        // / characters are coalesced into one, unless\n        // preserveMultipleSlashes is set to true.\n        if (this.preserveMultipleSlashes) {\n            return p.split('/');\n        }\n        else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n            // add an extra '' for the one we lose\n            return ['', ...p.split(/\\/+/)];\n        }\n        else {\n            return p.split(/\\/+/);\n        }\n    }\n    match(f, partial = this.partial) {\n        this.debug('match', f, this.pattern);\n        // short-circuit in the case of busted things.\n        // comments, etc.\n        if (this.comment) {\n            return false;\n        }\n        if (this.empty) {\n            return f === '';\n        }\n        if (f === '/' && partial) {\n            return true;\n        }\n        const options = this.options;\n        // windows: need to use /, not \\\n        if (this.isWindows) {\n            f = f.split('\\\\').join('/');\n        }\n        // treat the test path as a set of pathparts.\n        const ff = this.slashSplit(f);\n        this.debug(this.pattern, 'split', ff);\n        // just ONE of the pattern sets in this.set needs to match\n        // in order for it to be valid.  If negating, then just one\n        // match means that we have failed.\n        // Either way, return on the first hit.\n        const set = this.set;\n        this.debug(this.pattern, 'set', set);\n        // Find the basename of the path by looking for the last non-empty segment\n        let filename = ff[ff.length - 1];\n        if (!filename) {\n            for (let i = ff.length - 2; !filename && i >= 0; i--) {\n                filename = ff[i];\n            }\n        }\n        for (let i = 0; i < set.length; i++) {\n            const pattern = set[i];\n            let file = ff;\n            if (options.matchBase && pattern.length === 1) {\n                file = [filename];\n            }\n            const hit = this.matchOne(file, pattern, partial);\n            if (hit) {\n                if (options.flipNegate) {\n                    return true;\n                }\n                return !this.negate;\n            }\n        }\n        // didn't get any hits.  this is success if it's a negative\n        // pattern, failure otherwise.\n        if (options.flipNegate) {\n            return false;\n        }\n        return this.negate;\n    }\n    static defaults(def) {\n        return minimatch.defaults(def).Minimatch;\n    }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js';\nexport { escape } from './escape.js';\nexport { unescape } from './unescape.js';\n/* c8 ignore stop */\nminimatch.AST = AST;\nminimatch.Minimatch = Minimatch;\nminimatch.escape = escape;\nminimatch.unescape = unescape;\n//# sourceMappingURL=index.js.map","import path from 'path';\nimport postgres from 'postgres';\nimport { minimatch } from 'minimatch';\n\nfunction isDefined(value) {\n  return value !== void 0 && value !== null;\n}\nfunction fmap(v, predicate) {\n  if (!isDefined(v)) {\n    return null;\n  }\n  return predicate(v);\n}\nfunction validateOneOf(value, possibilies) {\n  const valueAsT = value;\n  if (!possibilies.includes(valueAsT)) {\n    throw new Error(\n      `validation of validateOneOf failed. Expected \"${value}\" to be one of \"${possibilies.join(\n        \", \"\n      )}\"`\n    );\n  }\n  return valueAsT;\n}\nfunction groupBy(objects, ...by) {\n  if (by.length === 0) {\n    return objects;\n  }\n  const [k0, ...kr] = by;\n  const topLevelGroups = /* @__PURE__ */ new Map();\n  for (const obj of objects) {\n    const k = obj[k0];\n    let arr = topLevelGroups.get(k);\n    if (!arr) {\n      arr = [];\n      topLevelGroups.set(k, arr);\n    }\n    arr.push(obj);\n  }\n  return new Map(Array.from(topLevelGroups, ([k, v]) => [k, groupBy(v, ...kr)]));\n}\nfunction isNonEmpty(array) {\n  return array !== void 0 && array.length > 0;\n}\nfunction objectKeys(obj) {\n  return Object.keys(obj);\n}\nfunction objectKeysNonEmpty(obj) {\n  const keys = objectKeys(obj);\n  if (keys.length === 0) {\n    throw new Error(\"expected non-empty object\");\n  }\n  return keys;\n}\nfunction assertNever(caseType) {\n  throw new Error(`assertNever: ${caseType}`);\n}\nasync function getOrSetFromMapWithEnabled(params) {\n  return params.shouldCache ? getOrSetFromMap(params) : params.value();\n}\nasync function getOrSetFromMap(params) {\n  const { map, key, value } = params;\n  if (map.has(key)) {\n    return map.get(key);\n  }\n  const val = await value();\n  map.set(key, val);\n  return val;\n}\nfunction isPlainObject(v) {\n  return typeof v === \"object\" && v !== null && !Array.isArray(v);\n}\nfunction deepMergeDefaults(target, defaults) {\n  const result = { ...target };\n  for (const key of Object.keys(defaults)) {\n    if (!(key in result) || result[key] === void 0) {\n      result[key] = defaults[key];\n      continue;\n    }\n    if (isPlainObject(result[key]) && isPlainObject(defaults[key])) {\n      result[key] = deepMergeDefaults(result[key], defaults[key]);\n    }\n  }\n  return result;\n}\nfunction normalizeIndent(template, ...args) {\n  const fullString = template.reduce((accumulator, str, i) => {\n    return accumulator + str + (args[i] || \"\");\n  }, \"\");\n  const lines = fullString.split(\"\\n\");\n  const nonEmptyLines = lines.filter((line) => line.trim() !== \"\");\n  if (nonEmptyLines.length === 0) {\n    return \"\";\n  }\n  const indent = nonEmptyLines[0].match(/^\\s*/)?.[0];\n  const normalized = nonEmptyLines.map((line) => line.replace(indent, \"\")).join(\"\\n\");\n  return normalized;\n}\n\nfunction toCase(str, caseType) {\n  switch (caseType) {\n    case void 0:\n      return str;\n    case \"snake\":\n      return toSnakeCase(str);\n    case \"camel\":\n      return toCamelCase(str);\n    case \"pascal\":\n      return toPascalCase(str);\n    case \"screaming snake\":\n      return toScreamingSnakeCase(str);\n    default:\n      assertNever(caseType);\n  }\n}\nfunction toCamelCase(str) {\n  return str.replace(/([-_][a-z])/gi, ($1) => {\n    return $1.toUpperCase().replace(\"-\", \"\").replace(\"_\", \"\");\n  });\n}\nfunction toPascalCase(str) {\n  return toCamelCase(str).replace(/^[a-z]/, (val) => val.toUpperCase());\n}\nfunction toSnakeCase(str) {\n  return str.replace(/([a-z])([A-Z])/g, \"$1_$2\").replace(/([A-Z])([A-Z][a-z])/g, \"$1_$2\").toLowerCase();\n}\nfunction toScreamingSnakeCase(str) {\n  return toSnakeCase(str).toUpperCase();\n}\n\nclass DatabaseInitializationError extends Error {\n  _tag = \"DatabaseInitializationError\";\n  constructor(message) {\n    super(`Database initialization failed (${message})`);\n    this.message = message;\n  }\n  static of(pgError) {\n    return new DatabaseInitializationError(pgError);\n  }\n  static to(error) {\n    if (error instanceof Error) {\n      return DatabaseInitializationError.of(error.message);\n    }\n    return DatabaseInitializationError.of(\"Unknown error\");\n  }\n  toJSON() {\n    return {\n      _tag: this._tag,\n      message: this.message\n    };\n  }\n}\nclass InvalidMigrationsPathError extends Error {\n  _tag = \"InvalidMigrationsPathError\";\n  migrationsPath;\n  constructor(migrationsPath, message) {\n    super(`Failed to read migrations directory \"${migrationsPath}\" (${message})`);\n    this.migrationsPath = migrationsPath;\n    this.message = message;\n  }\n  static of(filePath, pgError) {\n    return new InvalidMigrationsPathError(filePath, pgError);\n  }\n  static fromErrorC(migrationsPath) {\n    return (error) => InvalidMigrationsPathError.of(migrationsPath, error.message);\n  }\n  toJSON() {\n    return {\n      _tag: this._tag,\n      migrationsPath: this.migrationsPath,\n      message: this.message\n    };\n  }\n}\nclass InvalidConfigError extends Error {\n  _tag = \"InvalidConfigError\";\n  constructor(message) {\n    super(`Invalid configuration (${message})`);\n    this.message = message;\n  }\n  static of(message) {\n    return new InvalidConfigError(message);\n  }\n  toJSON() {\n    return {\n      _tag: this._tag,\n      message: this.message\n    };\n  }\n}\nclass InvalidMigrationError extends Error {\n  _tag = \"InvalidMigrationError\";\n  filePath;\n  constructor(filePath, message) {\n    super(`Failed to run migration \"${path.basename(filePath)}\" (${message})`);\n    this.filePath = filePath;\n    this.message = message;\n  }\n  static of(filePath, pgError) {\n    return new InvalidMigrationError(filePath, pgError);\n  }\n  static fromErrorC(migrationsPath) {\n    return (error) => InvalidMigrationError.of(migrationsPath, error.message);\n  }\n  toJSON() {\n    return {\n      _tag: this._tag,\n      filePath: this.filePath,\n      message: this.message\n    };\n  }\n}\nclass InternalError extends Error {\n  _tag = \"InternalError\";\n  constructor(error) {\n    super(`Internal error: ${error}`);\n  }\n  static of(error) {\n    return new InternalError(error);\n  }\n  static to(error) {\n    if (error instanceof AggregateError) {\n      const e = InternalError.of(error.errors.map((e2) => e2.message).join(\", \"));\n      e.stack = error.stack;\n      return e;\n    }\n    if (error instanceof Error) {\n      const e = InternalError.of(error.message);\n      e.stack = error.stack;\n      return e;\n    }\n    return InternalError.of(`Unknown (${error})`);\n  }\n  toJSON() {\n    return {\n      _tag: this._tag,\n      stack: this.stack,\n      message: this.message\n    };\n  }\n}\nclass PluginError extends Error {\n  _tag = \"PluginError\";\n  constructor(pluginName, error) {\n    super(`[${pluginName}] ${error}`);\n  }\n  static from(pluginName) {\n    return (error) => {\n      if (error instanceof Error) {\n        const e = new PluginError(pluginName, error.message);\n        e.stack = error.stack;\n        return e;\n      }\n      return new PluginError(pluginName, `${error}`);\n    };\n  }\n  toJSON() {\n    return {\n      _tag: this._tag,\n      message: this.message\n    };\n  }\n}\nclass DuplicateColumnsError extends Error {\n  _tag = \"DuplicateColumnsError\";\n  columns;\n  queryText;\n  position;\n  sourcemaps;\n  constructor(params) {\n    super(`Duplicate columns: ${params.columns.join(\", \")}`);\n    this.columns = params.columns;\n    this.queryText = params.queryText;\n    this.position = params.position;\n    this.sourcemaps = params.sourcemaps;\n  }\n  static of(params) {\n    return new DuplicateColumnsError(params);\n  }\n  toJSON() {\n    return {\n      _tag: this._tag,\n      message: this.message,\n      columns: this.columns,\n      queryText: this.queryText,\n      position: this.position,\n      sourcemaps: this.sourcemaps\n    };\n  }\n}\nclass PostgresError extends Error {\n  _tag = \"PostgresError\";\n  queryText;\n  message;\n  line;\n  position;\n  sourcemaps;\n  constructor(params) {\n    super(params.message);\n    this.name = \"PostgresError\";\n    this.queryText = params.queryText;\n    this.message = params.message;\n    this.line = params.line;\n    this.position = Number(params.position);\n    this.sourcemaps = params.sourcemaps;\n  }\n  static of(params) {\n    return new PostgresError(params);\n  }\n  static to(query, error, sourcemaps) {\n    if (isPostgresError(error)) {\n      return PostgresError.of({\n        queryText: query,\n        message: error.message,\n        line: error.line,\n        position: error.position,\n        sourcemaps\n      });\n    }\n    return PostgresError.of({\n      queryText: query,\n      message: `${error}`,\n      line: \"1\",\n      position: isPgParserError(error) ? error.cursorPosition : 0,\n      sourcemaps\n    });\n  }\n  toJSON() {\n    return {\n      _tag: this._tag,\n      queryText: this.queryText,\n      message: this.message,\n      line: this.line,\n      position: this.position,\n      sourcemaps: this.sourcemaps\n    };\n  }\n}\nfunction isPostgresError(e) {\n  if (e instanceof postgres.PostgresError) {\n    return true;\n  }\n  if (e instanceof Error && e.name === \"PostgresError\") {\n    return true;\n  }\n  return false;\n}\nfunction isPgParserError(error) {\n  return error instanceof Error && \"cursorPosition\" in error;\n}\n\nconst defaultTypeMapping = {\n  // Integer types\n  int2: \"number\",\n  int4: \"number\",\n  int8: \"string\",\n  smallint: \"number\",\n  int: \"number\",\n  bigint: \"string\",\n  // Precision types\n  real: \"number\",\n  float4: \"number\",\n  float: \"number\",\n  float8: \"number\",\n  numeric: \"string\",\n  decimal: \"number\",\n  // Serial types\n  smallserial: \"number\",\n  serial: \"number\",\n  bigserial: \"string\",\n  // Common string types\n  uuid: \"string\",\n  text: \"string\",\n  varchar: \"string\",\n  char: \"string\",\n  bpchar: \"string\",\n  citext: \"string\",\n  // Bool types\n  bit: \"boolean\",\n  bool: \"boolean\",\n  boolean: \"boolean\",\n  // Dates and times\n  date: \"Date\",\n  timestamp: \"Date\",\n  timestamptz: \"Date\",\n  time: \"string\",\n  timetz: \"string\",\n  interval: \"string\",\n  // Network address types\n  inet: \"string\",\n  cidr: \"string\",\n  macaddr: \"string\",\n  macaddr8: \"string\",\n  // Extra types\n  money: \"number\",\n  void: \"void\",\n  // JSON types\n  json: \"any\",\n  jsonb: \"any\",\n  // Bytes\n  bytea: \"any\",\n  // null\n  null: \"null\"\n};\nconst defaultTypesMap = new Map(Object.entries(defaultTypeMapping));\n\nfunction doesMatchPattern(params) {\n  const { pattern, text } = params;\n  if (typeof pattern === \"string\") {\n    return minimatch(text, pattern);\n  }\n  return new RegExp(`^${pattern.regex}$`).test(text);\n}\n\nexport { DatabaseInitializationError, DuplicateColumnsError, InternalError, InvalidConfigError, InvalidMigrationError, InvalidMigrationsPathError, PluginError, PostgresError, assertNever, deepMergeDefaults, defaultTypeMapping, defaultTypesMap, doesMatchPattern, fmap, getOrSetFromMap, getOrSetFromMapWithEnabled, groupBy, isDefined, isNonEmpty, isPostgresError, normalizeIndent, objectKeys, objectKeysNonEmpty, toCamelCase, toCase, toPascalCase, toScreamingSnakeCase, toSnakeCase, validateOneOf };\n//# sourceMappingURL=index.mjs.map\n","import { TSESTree } from \"@typescript-eslint/utils\";\n\nexport function isIdentifier(node?: TSESTree.Node): node is TSESTree.Identifier {\n  return node?.type === TSESTree.AST_NODE_TYPES.Identifier;\n}\n\nexport function isCallExpression(node?: TSESTree.Node): node is TSESTree.CallExpression {\n  return node?.type === TSESTree.AST_NODE_TYPES.CallExpression;\n}\n\nexport function isTaggedTemplateExpression(\n  node?: TSESTree.Node,\n): node is TSESTree.TaggedTemplateExpression {\n  return node?.type === TSESTree.AST_NODE_TYPES.TaggedTemplateExpression;\n}\n\nexport function isMemberExpression(node?: TSESTree.Node): node is TSESTree.MemberExpression {\n  return node?.type === TSESTree.AST_NODE_TYPES.MemberExpression;\n}\n\nexport function isOneOf<T extends PropertyKey>(value: unknown, options: T[]): value is T {\n  return options.includes(value as T);\n}\n\nexport function isEqual<T extends PropertyKey>(value: unknown, expected: T): value is T {\n  return value === expected;\n}\n","import { DatabaseInitializationError } from \"@ts-safeql/shared\";\nimport pgConnectionString from \"pg-connection-string\";\nimport { pipe, TE } from \"./fp-ts\";\nimport { Sql } from \"postgres\";\n\nexport interface ConnectionOptions {\n  host: string;\n  port: number;\n  user: string;\n  password: string;\n  database: string;\n}\n\nexport function mapConnectionOptionsToString(connectionOptions: ConnectionOptions): string {\n  return `postgres://${connectionOptions.user}:${connectionOptions.password}@${connectionOptions.host}:${connectionOptions.port}/${connectionOptions.database}`;\n}\n\nexport function parseConnection(databaseUrl: string): ConnectionOptions {\n  const connection = pgConnectionString.parse(databaseUrl);\n\n  if (connection.host === null) {\n    throw new Error(\"Could not resolve database host\");\n  }\n\n  if (!isDefined(connection.port)) {\n    throw new Error(\"Could not resolve database port\");\n  }\n\n  if (!isDefined(connection.user)) {\n    throw new Error(\"Could not resolve database user\");\n  }\n\n  if (!isDefined(connection.password)) {\n    throw new Error(\"Could not resolve database password\");\n  }\n\n  if (!isDefined(connection.database)) {\n    throw new Error(\"Could not resolve database name\");\n  }\n\n  return {\n    host: connection.host,\n    port: parseInt(connection.port, 10),\n    user: connection.user,\n    password: connection.password,\n    database: connection.database,\n  };\n}\n\nexport function initDatabase(sql: Sql, database: string) {\n  return pipe(\n    TE.Do,\n    TE.chain(() => dropDatabase(sql, database)),\n    TE.altW(() => TE.right(undefined)),\n    TE.chain(() => createDatabase(sql, database)),\n  );\n}\n\nexport function createDatabase(sql: Sql, database: string) {\n  return TE.tryCatch(\n    () => sql.unsafe(`CREATE DATABASE ${database}`),\n    DatabaseInitializationError.to,\n  );\n}\n\nexport function dropDatabase(sql: Sql, database: string) {\n  return TE.tryCatch(async () => {\n    const [{ withForce }] = await sql.unsafe(`\n        SELECT (string_to_array(version(), ' '))[2]::numeric >= 13 AS \"withForce\"\n      `);\n\n    return withForce\n      ? sql.unsafe(`DROP DATABASE IF EXISTS ${database} WITH (FORCE)`)\n      : sql.unsafe(`DROP DATABASE IF EXISTS ${database}`);\n  }, DatabaseInitializationError.to);\n}\n\nfunction isDefined<T>(value: T | null | undefined): value is T {\n  return value !== null && value !== undefined;\n}\n","import { ResolvedTarget } from \"@ts-safeql/generate\";\nimport {\n  DuplicateColumnsError,\n  InvalidConfigError,\n  InvalidMigrationError,\n  InvalidMigrationsPathError,\n  PostgresError,\n  QuerySourceMapEntry,\n  fmap,\n} from \"@ts-safeql/shared\";\nimport { InvalidQueryError } from \"../errors\";\nimport { TSESTree } from \"@typescript-eslint/utils\";\nimport { RuleFixer, SourceCode } from \"@typescript-eslint/utils/ts-eslint\";\nimport crypto from \"crypto\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport { Sql } from \"postgres\";\nimport { z } from \"zod\";\nimport { isOneOf } from \"../utils/estree.utils\";\nimport { E, TE, pipe } from \"../utils/fp-ts\";\nimport { ExpectedResolvedTarget } from \"../utils/get-resolved-target-by-type-node\";\nimport { mapConnectionOptionsToString, parseConnection } from \"../utils/pg.utils\";\nimport { WorkerError } from \"../workers/check-sql.worker\";\nimport { RuleContext } from \"./check-sql.rule\";\nimport {\n  EnforceTypeOption,\n  InferLiteralsOption,\n  RuleOptionConnection,\n  zConnectionMigration,\n} from \"./RuleOptions\";\nimport { ConnectionStrategy } from \"@ts-safeql/connection-manager\";\n\ntype TypeReplacerString = string;\ntype TypeReplacerFromTo = [string, string];\nexport type TypeTransformer = TypeReplacerString | (TypeReplacerString | TypeReplacerFromTo)[];\n\nexport const DEFAULT_CONNECTION_URL = \"postgres://postgres:postgres@localhost:5432/postgres\";\n\nfunction isReplacerFromTo(replacer: TypeTransformer[number]): replacer is TypeReplacerFromTo {\n  return Array.isArray(replacer) && replacer.length === 2;\n}\n\nfunction transformType(typeString: string, typeReplacer: TypeTransformer[number]): string {\n  return isReplacerFromTo(typeReplacer)\n    ? typeString.replace(new RegExp(typeReplacer[0], \"g\"), typeReplacer[1])\n    : typeReplacer.replace(\"{type}\", typeString);\n}\n\nexport function transformTypes(typeString: string, transform: TypeTransformer): string {\n  if (transform === undefined || typeString === null) {\n    return typeString;\n  }\n\n  if (typeof transform === \"string\") {\n    return transformType(typeString, transform);\n  }\n\n  let transformed = typeString;\n\n  for (const replacer of transform) {\n    transformed = transformType(transformed, replacer);\n  }\n\n  return transformed;\n}\n\n/**\n * Takes a generated result and a transform type and returns a result with the\n * transformed type.\n *\n * @param transform could be either:\n *  - a string that has {type} in it,\n *  - an array of tuples that behave as [valueToBeReplaced, typeToReplaceWith]\n *  - an array that has a mix of the above (such as [\"{type}[]\", [\"colname\", \"x_colname\"]])\n */\nexport function getFinalResolvedTargetString(params: {\n  target: ResolvedTarget;\n  transform?: TypeTransformer;\n  nullAsUndefined: boolean;\n  nullAsOptional: boolean;\n  inferLiterals: InferLiteralsOption;\n}) {\n  const asString = getResolvedTargetString({\n    target: params.target,\n    nullAsOptional: params.nullAsOptional,\n    nullAsUndefined: params.nullAsUndefined,\n    inferLiterals: params.inferLiterals,\n  });\n\n  return fmap(params.transform, (transform) => transformTypes(asString, transform)) ?? asString;\n}\n\nexport function reportInvalidQueryError(params: {\n  context: RuleContext;\n  error: InvalidQueryError;\n}) {\n  const { context, error } = params;\n\n  return context.report({\n    messageId: \"invalidQuery\",\n    node: error.node,\n    data: { error: error.message },\n  });\n}\n\nexport function reportBaseError(params: {\n  context: RuleContext;\n  tag: TSESTree.Node;\n  error: WorkerError;\n  hint?: string;\n}) {\n  const { context, tag, error } = params;\n\n  return context.report({\n    node: tag,\n    messageId: \"error\",\n    data: {\n      error: [error.message, fmap(params.hint, (hint) => `Hint: ${hint}`)]\n        .filter(Boolean)\n        .join(\"\\n\"),\n    },\n  });\n}\n\nexport function reportInvalidConfig(params: {\n  tag: TSESTree.Node;\n  context: RuleContext;\n  error: InvalidConfigError;\n}) {\n  const { tag, context, error } = params;\n\n  return context.report({\n    node: tag,\n    messageId: \"invalidQuery\",\n    loc: context.sourceCode.getLocFromIndex(getNodeStartOffset(tag)),\n    data: {\n      error: error.message,\n    },\n  });\n}\n\nexport function reportDuplicateColumns(params: {\n  tag: TSESTree.Node;\n  context: RuleContext;\n  error: DuplicateColumnsError;\n}) {\n  const { tag, context, error } = params;\n\n  const location = getQueryErrorPosition({\n    tag: tag,\n    error: error,\n    sourceCode: context.sourceCode,\n  });\n\n  return context.report({\n    node: tag,\n    messageId: \"invalidQuery\",\n    loc: location.sourceLocation,\n    data: {\n      error: error.message,\n    },\n  });\n}\n\nexport function reportPostgresError(params: {\n  context: RuleContext;\n  tag: TSESTree.Node;\n  error: PostgresError;\n}) {\n  const { context, tag, error } = params;\n\n  const location = getQueryErrorPosition({\n    tag: tag,\n    error: error,\n    sourceCode: context.sourceCode,\n  });\n\n  return context.report({\n    node: tag,\n    messageId: \"invalidQuery\",\n    loc: location.sourceLocation,\n    data: {\n      error: error.message,\n    },\n  });\n}\n\nexport function reportMissingTypeAnnotations(params: {\n  context: RuleContext;\n  tag: TSESTree.Node;\n  baseNode: TSESTree.Node;\n  actual: string;\n  enforceType?: EnforceTypeOption;\n}) {\n  const { context, tag, baseNode, actual, enforceType = \"fix\" } = params;\n\n  const fixFn = (fixer: RuleFixer) => fixer.insertTextAfterRange(baseNode.range, `<${actual}>`);\n  const data = { fix: actual };\n\n  return context.report({\n    node: tag,\n    messageId: \"missingTypeAnnotations\",\n    loc: baseNode.loc,\n    data,\n    ...(enforceType === \"suggest\"\n      ? { suggest: [{ messageId: \"missingTypeAnnotations\" as const, fix: fixFn, data }] }\n      : { fix: fixFn }),\n  });\n}\n\nexport function reportIncorrectTypeAnnotations(params: {\n  context: RuleContext;\n  typeParameter: TSESTree.TSTypeParameterInstantiation;\n  expected: string | null;\n  actual: string | null;\n  enforceType?: EnforceTypeOption;\n}) {\n  const { context, typeParameter, enforceType = \"fix\" } = params;\n  const newValue = params.actual === null ? \"\" : `<${params.actual}>`;\n\n  const fixFn = (fixer: RuleFixer) => fixer.replaceText(typeParameter, newValue);\n  const data = { expected: params.expected, actual: params.actual ?? \"No type annotation\" };\n\n  return context.report({\n    node: typeParameter.params[0],\n    messageId: \"incorrectTypeAnnotations\",\n    data,\n    ...(enforceType === \"suggest\"\n      ? { suggest: [{ messageId: \"incorrectTypeAnnotations\" as const, fix: fixFn, data }] }\n      : { fix: fixFn }),\n  });\n}\nexport function reportInvalidTypeAnnotations(params: {\n  context: RuleContext;\n  typeParameter: TSESTree.TSTypeParameterInstantiation;\n}) {\n  const { context, typeParameter } = params;\n\n  return context.report({\n    node: typeParameter.params[0],\n    messageId: \"invalidTypeAnnotations\",\n  });\n}\n\nexport function getDatabaseName(params: {\n  databaseName: string | undefined;\n  migrationsDir: string;\n  projectDir: string;\n}) {\n  const { databaseName, projectDir, migrationsDir } = params;\n\n  if (databaseName !== undefined) {\n    return databaseName;\n  }\n\n  const projectDirName = projectDir.split(\"/\").pop() ?? \"\";\n  const projectUnderscoreName = projectDirName.replace(/[^A-z0-9]/g, \"_\").toLowerCase();\n  const hash = crypto.createHash(\"sha1\").update(migrationsDir).digest(\"hex\").substring(0, 8);\n\n  return `safeql_${projectUnderscoreName}_${hash}`;\n}\n\nexport function shouldLintFile(params: { filename: string }) {\n  const fileName = params.filename;\n\n  for (const extension of [\"ts\", \"tsx\", \"mts\", \"mtsx\"]) {\n    if (fileName.endsWith(`.${extension}`)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction isMigrationConnection(\n  connection: RuleOptionConnection,\n): connection is RuleOptionConnection & z.infer<typeof zConnectionMigration> {\n  return \"migrationsDir\" in connection;\n}\n\nexport function isWatchMigrationsDirEnabled(\n  connection: RuleOptionConnection,\n): connection is RuleOptionConnection & z.infer<typeof zConnectionMigration> & { watchMode: true } {\n  return isMigrationConnection(connection) && (connection.watchMode ?? true) === true;\n}\n\nexport function getMigrationDatabaseMetadata(params: {\n  connectionUrl: string;\n  databaseName: string;\n}) {\n  const connectionOptions = {\n    ...parseConnection(params.connectionUrl),\n    database: params.databaseName,\n  };\n  const databaseUrl = mapConnectionOptionsToString(connectionOptions);\n\n  return { databaseUrl, connectionOptions };\n}\n\nexport function getConnectionStartegyByRuleOptionConnection(params: {\n  connection: RuleOptionConnection;\n  projectDir: string;\n}): ConnectionStrategy {\n  const { connection, projectDir } = params;\n\n  if (\"databaseUrl\" in connection) {\n    return { type: \"databaseUrl\", ...connection };\n  }\n\n  if (\"migrationsDir\" in connection) {\n    return {\n      type: \"migrations\",\n      connectionUrl: DEFAULT_CONNECTION_URL,\n      databaseName: getDatabaseName({\n        databaseName: connection.databaseName,\n        migrationsDir: connection.migrationsDir,\n        projectDir: projectDir,\n      }),\n      watchMode: isWatchMigrationsDirEnabled(connection),\n      ...connection,\n    };\n  }\n\n  if (connection.plugins && connection.plugins.length > 0) {\n    return { type: \"pluginsOnly\", plugins: connection.plugins, projectDir };\n  }\n\n  throw new Error(\n    \"Invalid connection configuration: must specify databaseUrl, migrationsDir, or plugins\",\n  );\n}\n\nexport function runMigrations(params: { migrationsPath: string; sql: Sql }) {\n  const runSingleMigrationFileWithSql = (filePath: string) => {\n    return runSingleMigrationFile(params.sql, filePath);\n  };\n\n  return pipe(\n    TE.Do,\n    TE.chain(() => getMigrationFiles(params.migrationsPath)),\n    TE.chainW((files) => TE.sequenceSeqArray(files.map(runSingleMigrationFileWithSql))),\n  );\n}\n\nfunction findDeepSqlFiles(migrationsPath: string) {\n  const sqlFilePaths: string[] = [];\n\n  function findDeepSqlFilesRecursively(dir: string) {\n    const files = fs.readdirSync(dir);\n\n    files.forEach((file) => {\n      const filePath = path.join(dir, file);\n      const isDirectory = fs.statSync(filePath).isDirectory();\n\n      if (isDirectory) {\n        findDeepSqlFilesRecursively(filePath);\n      } else if (filePath.endsWith(\".sql\")) {\n        sqlFilePaths.push(filePath);\n      }\n    });\n  }\n\n  findDeepSqlFilesRecursively(migrationsPath);\n\n  return sqlFilePaths;\n}\n\nfunction getMigrationFiles(migrationsPath: string) {\n  return pipe(\n    E.tryCatch(() => findDeepSqlFiles(migrationsPath), E.toError),\n    TE.fromEither,\n    TE.mapLeft(InvalidMigrationsPathError.fromErrorC(migrationsPath)),\n  );\n}\n\nfunction runSingleMigrationFile(sql: Sql, filePath: string) {\n  return pipe(\n    TE.tryCatch(() => fs.promises.readFile(filePath).then((x) => x.toString()), E.toError),\n    TE.chain((content) => TE.tryCatch(() => sql.unsafe(content), E.toError)),\n    TE.mapLeft(InvalidMigrationError.fromErrorC(filePath)),\n  );\n}\n\nfunction shouldInferLiteral(\n  base: ExpectedResolvedTarget | ResolvedTarget,\n  inferLiterals: InferLiteralsOption,\n) {\n  if (base.kind !== \"type\") return true;\n  if (inferLiterals === true) return true;\n  if (Array.isArray(inferLiterals) && isOneOf(base.value, inferLiterals)) return true;\n\n  return false;\n}\n\nfunction unique<T>(array: T[]): T[] {\n  return Array.from(new Set(array));\n}\n\n/**\n * `json`/`jsonb` columns are generated as `any`, and `any` is a TypeScript\n * wildcard — assignable to and from every type — so any concrete annotation on\n * such a column is valid. A textual comparison would reject it, so we normalize\n * an `any` on either side to compatible before comparing.\n *\n * The expected and generated trees are the same shape but distinct types;\n * `ComparableTarget` is the common shape both widen into, keeping the\n * normalization a single cast-free recursion.\n */\ntype ComparableTarget =\n  | { kind: \"type\"; value: string }\n  | { kind: \"literal\"; value: string; base: ComparableTarget }\n  | { kind: \"union\"; value: ComparableTarget[] }\n  | { kind: \"array\"; value: ComparableTarget; syntax?: \"array-type\" | \"type-reference\" }\n  | { kind: \"object\"; value: [string, ComparableTarget][] };\n\nconst ANY: ComparableTarget = { kind: \"type\", value: \"any\" };\n\nconst isAny = (target: ComparableTarget): boolean =>\n  target.kind === \"type\" && target.value === \"any\";\n\n/** In TypeScript `any | T` is just `any`, so collapse any union containing `any`. */\nfunction collapseAny(target: ComparableTarget): ComparableTarget {\n  switch (target.kind) {\n    case \"type\":\n      return target;\n    case \"literal\":\n      return { kind: \"literal\", value: target.value, base: collapseAny(target.base) };\n    case \"array\":\n      return { kind: \"array\", value: collapseAny(target.value), syntax: target.syntax };\n    case \"object\":\n      return {\n        kind: \"object\",\n        value: target.value.map(([key, v]): [string, ComparableTarget] => [key, collapseAny(v)]),\n      };\n    case \"union\": {\n      const members = target.value.map(collapseAny);\n      return members.some(isAny) ? ANY : { kind: \"union\", value: members };\n    }\n  }\n}\n\n/**\n * Where either side is `any`, set both positions to `any` so they serialize\n * identically. Mismatched shapes are returned as-is for the regular textual\n * comparison, so a genuine mismatch is never hidden.\n */\nfunction alignAny(\n  expected: ComparableTarget,\n  generated: ComparableTarget,\n): [ComparableTarget, ComparableTarget] {\n  if (isAny(expected) || isAny(generated)) return [ANY, ANY];\n  if (expected.kind !== generated.kind) return [expected, generated];\n\n  if (expected.kind === \"array\" && generated.kind === \"array\") {\n    const [e, g] = alignAny(expected.value, generated.value);\n    return [\n      { kind: \"array\", value: e, syntax: expected.syntax },\n      { kind: \"array\", value: g, syntax: generated.syntax },\n    ];\n  }\n\n  if (expected.kind === \"object\" && generated.kind === \"object\") {\n    const generatedByKey = new Map(generated.value);\n    const aligned = new Map(generated.value);\n\n    const expectedEntries = expected.value.map(([key, value]): [string, ComparableTarget] => {\n      const counterpart = generatedByKey.get(key);\n      if (counterpart === undefined) return [key, value];\n\n      const [e, g] = alignAny(value, counterpart);\n      aligned.set(key, g);\n      return [key, e];\n    });\n\n    return [\n      { kind: \"object\", value: expectedEntries },\n      { kind: \"object\", value: [...aligned] },\n    ];\n  }\n\n  if (expected.kind === \"union\" && generated.kind === \"union\") {\n    // Members have no inherent order, so pair each expected member with the first\n    // unpaired generated member of the same kind. This reaches an `any` nested\n    // inside a member (e.g. `{ data: any }[] | null`); unpaired members stay as-is\n    // and the full union is still compared textually, so no real mismatch is masked.\n    const generatedMembers = [...generated.value];\n    const paired = new Set<number>();\n\n    const expectedMembers = expected.value.map((member) => {\n      const match = generatedMembers.findIndex((g, i) => !paired.has(i) && g.kind === member.kind);\n      if (match === -1) return member;\n\n      paired.add(match);\n      const [e, g] = alignAny(member, generatedMembers[match]);\n      generatedMembers[match] = g;\n      return e;\n    });\n\n    return [\n      { kind: \"union\", value: expectedMembers },\n      { kind: \"union\", value: generatedMembers },\n    ];\n  }\n\n  if (expected.kind === \"literal\" && generated.kind === \"literal\") {\n    const [base, generatedBase] = alignAny(expected.base, generated.base);\n    return [\n      { kind: \"literal\", value: expected.value, base },\n      { kind: \"literal\", value: generated.value, base: generatedBase },\n    ];\n  }\n\n  return [expected, generated];\n}\n\nexport function normalizeAnyForComparison(\n  expected: ExpectedResolvedTarget,\n  generated: ResolvedTarget,\n): { expected: ComparableTarget; generated: ComparableTarget } {\n  const [alignedExpected, alignedGenerated] = alignAny(\n    collapseAny(expected),\n    collapseAny(generated),\n  );\n  return { expected: alignedExpected, generated: alignedGenerated };\n}\n\nexport function getResolvedTargetComparableString(params: {\n  target: ExpectedResolvedTarget | ResolvedTarget;\n  nullAsOptional: boolean;\n  nullAsUndefined: boolean;\n  inferLiterals: InferLiteralsOption;\n}): string {\n  const { target, nullAsUndefined, nullAsOptional } = params;\n  const nullType = nullAsUndefined ? \"undefined\" : \"null\";\n\n  switch (target.kind) {\n    case \"literal\": {\n      const value = shouldInferLiteral(target.base, params.inferLiterals)\n        ? target.value\n        : getResolvedTargetComparableString({\n            target: target.base,\n            nullAsOptional: params.nullAsOptional,\n            nullAsUndefined: params.nullAsUndefined,\n            inferLiterals: params.inferLiterals,\n          });\n\n      return value === \"null\" ? nullType : value;\n    }\n    case \"type\":\n      return target.value === \"null\" ? nullType : target.value.replace(/\"/g, \"'\");\n\n    case \"union\":\n      return unique(\n        target.value\n          .map((target) => getResolvedTargetComparableString({ ...params, target }))\n          .sort(),\n      ).join(\" | \");\n\n    case \"array\": {\n      let arrayString = getResolvedTargetComparableString({ ...params, target: target.value });\n\n      if (target.value.kind === \"union\" && arrayString.includes(\"|\")) {\n        arrayString = `(${arrayString})`;\n      }\n\n      return target.syntax === \"type-reference\" ? `Array<${arrayString}>` : `${arrayString}[]`;\n    }\n\n    case \"object\": {\n      if (target.value.length === 0) {\n        return `{ }`;\n      }\n\n      const entriesString = target.value\n        .map(([key, target]) => {\n          const isNullable = isNullableResolvedTarget(target);\n          const keyString = isNullable && nullAsOptional ? `${key}?` : key;\n          const valueString = getResolvedTargetComparableString({ ...params, target });\n\n          return `${keyString}: ${valueString}`;\n        })\n        .sort()\n        .join(\";\");\n\n      return `{ ${entriesString} }`;\n    }\n  }\n}\n\nexport function getResolvedTargetsEquality(params: {\n  expected: ExpectedResolvedTarget | null;\n  generated: ResolvedTarget | null;\n  nullAsOptional: boolean;\n  nullAsUndefined: boolean;\n  inferLiterals: InferLiteralsOption;\n  transform?: TypeTransformer;\n}) {\n  if (params.expected === null && params.generated === null) {\n    return {\n      isEqual: true,\n      expected: params.expected,\n      generated: params.generated,\n    };\n  }\n\n  if (params.expected === null || params.generated === null) {\n    return {\n      isEqual: false,\n      expected: params.expected,\n      generated: params.generated,\n    };\n  }\n\n  // Normalized only for the equality check; originals are returned for the error message.\n  const normalized = normalizeAnyForComparison(params.expected, params.generated);\n\n  let expectedString = getResolvedTargetComparableString({\n    target: normalized.expected,\n    nullAsOptional: false,\n    nullAsUndefined: false,\n    inferLiterals: params.inferLiterals,\n  });\n\n  let generatedString = getResolvedTargetComparableString({\n    target: normalized.generated,\n    nullAsOptional: params.nullAsOptional,\n    nullAsUndefined: params.nullAsUndefined,\n    inferLiterals: params.inferLiterals,\n  });\n\n  if (expectedString === null || generatedString === null) {\n    return {\n      isEqual: false,\n      expected: params.expected,\n      generated: params.generated,\n    };\n  }\n\n  expectedString = expectedString.replace(/'/g, '\"');\n  generatedString = generatedString.replace(/'/g, '\"');\n\n  // The comparable form is already canonical, so no further reordering is needed.\n  if (params.transform !== undefined) {\n    generatedString = transformTypes(generatedString, params.transform);\n  }\n\n  return {\n    isEqual: expectedString === generatedString,\n    expected: params.expected,\n    generated: params.generated,\n  };\n}\n\nexport function getResolvedTargetString(params: {\n  target: ExpectedResolvedTarget | ResolvedTarget;\n  nullAsUndefined: boolean;\n  nullAsOptional: boolean;\n  inferLiterals: InferLiteralsOption;\n}): string {\n  const { target, nullAsUndefined, nullAsOptional } = params;\n  const nullType = nullAsUndefined ? \"undefined\" : \"null\";\n\n  switch (target.kind) {\n    case \"literal\": {\n      const value = shouldInferLiteral(target.base, params.inferLiterals)\n        ? target.value\n        : getResolvedTargetString({\n            target: target.base,\n            nullAsOptional: params.nullAsOptional,\n            nullAsUndefined: params.nullAsUndefined,\n            inferLiterals: params.inferLiterals,\n          });\n\n      return value === \"null\" ? nullType : value;\n    }\n\n    case \"type\":\n      return target.value === \"null\" ? nullType : target.value;\n\n    case \"union\":\n      return unique(\n        target.value.map((target) => getResolvedTargetString({ ...params, target })),\n      ).join(\" | \");\n\n    case \"array\": {\n      const arrayString = getResolvedTargetString({ ...params, target: target.value });\n      return target.value.kind === \"union\" && arrayString.includes(\"|\")\n        ? `(${arrayString})[]`\n        : `${arrayString}[]`;\n    }\n\n    case \"object\": {\n      if (target.value.length === 0) {\n        return `{ }`;\n      }\n\n      const entriesString = target.value\n        .map(([key, target]) => {\n          const isNullable = isNullableResolvedTarget(target);\n          const valueString = getResolvedTargetString({ ...params, target });\n          let keyString = key;\n\n          if (/[^A-z_]/.test(keyString)) {\n            keyString = `'${keyString}'`;\n          }\n\n          keyString = isNullable && nullAsOptional ? `${keyString}?` : keyString;\n\n          return `${keyString}: ${valueString}`;\n        })\n        .join(\"; \");\n\n      return `{ ${entriesString} }`;\n    }\n  }\n}\n\nfunction isNullableResolvedTarget(target: ExpectedResolvedTarget | ResolvedTarget): boolean {\n  switch (target.kind) {\n    case \"type\":\n    case \"literal\":\n      return [\"any\", \"null\"].includes(target.value) === false;\n\n    case \"union\":\n      return target.value.some((x) => x.kind === \"type\" && x.value === \"null\");\n\n    case \"array\":\n    case \"object\":\n      return false;\n  }\n}\n\ninterface GetWordRangeInPositionParams {\n  error: {\n    message: string;\n    position: number;\n    sourcemaps: QuerySourceMapEntry[];\n  };\n  tag: TSESTree.Node;\n  sourceCode: Readonly<SourceCode>;\n}\n\nfunction getQueryErrorPosition({ error, tag, sourceCode }: GetWordRangeInPositionParams) {\n  const sourceMaps = error.sourcemaps;\n  const position = error.position;\n\n  const matchingSourceMap = sourceMaps.find(\n    (sourceMap) => position >= sourceMap.generated.start && position < sourceMap.generated.end,\n  );\n\n  const sourceRange: [number, number] = matchingSourceMap\n    ? [\n        matchingSourceMap.original.start + matchingSourceMap.offset,\n        matchingSourceMap.original.start + matchingSourceMap.original.text.length,\n      ]\n    : getSourceRange(position, sourceMaps);\n\n  const errorToken = extractErrorToken(error.message);\n\n  if (errorToken !== undefined) {\n    const templateText = sourceCode.text.slice(getNodeStartOffset(tag), tag.range[1]);\n\n    const [fragmentStart, fragmentEnd] = matchingSourceMap\n      ? [\n          matchingSourceMap.original.start,\n          matchingSourceMap.original.start + matchingSourceMap.original.text.length,\n        ]\n      : [0, templateText.length];\n\n    const tokenIndex = findNearestMatchIndex(\n      templateText.slice(fragmentStart, fragmentEnd),\n      errorToken,\n      sourceRange[0] - fragmentStart,\n    );\n\n    if (tokenIndex !== undefined) {\n      const start = fragmentStart + tokenIndex;\n      return {\n        sourceLocation: getSourceLocation(tag, sourceCode, [start, start + errorToken.length]),\n      };\n    }\n  }\n\n  return {\n    sourceLocation: getSourceLocation(\n      tag,\n      sourceCode,\n      sourceRange,\n      matchingSourceMap === undefined,\n    ),\n  };\n}\n\nconst ERROR_TOKEN_PATTERNS: RegExp[] = [\n  /syntax error at or near \"([^\"]+)\"/,\n  /column \"?([^\\s\"]+)\"? of relation \"[^\"]+\" does not exist/,\n  /column \"?([^\\s\"]+)\"? does not exist/,\n  /relation \"([^\"]+)\" does not exist/,\n  /type \"([^\"]+)\" does not exist/,\n  /missing FROM-clause entry for table \"([^\"]+)\"/,\n  /function ([\\w.]+)\\(/,\n];\n\nfunction extractErrorToken(message: string): string | undefined {\n  for (const pattern of ERROR_TOKEN_PATTERNS) {\n    const token = message.match(pattern)?.[1];\n    if (token !== undefined) {\n      return token;\n    }\n  }\n\n  return undefined;\n}\n\nfunction getSourceRange(position: number, sourceMaps: QuerySourceMapEntry[]): [number, number] {\n  let positionOffset = 0;\n\n  for (const sourceMap of sourceMaps) {\n    if (position < sourceMap.generated.end) {\n      continue;\n    }\n\n    positionOffset += sourceMap.original.text.length - sourceMap.generated.text.length;\n  }\n\n  return [position + positionOffset, position + positionOffset + 1];\n}\n\nfunction findNearestMatchIndex(text: string, searchText: string, position: number) {\n  let closestIndex: number | undefined;\n\n  for (\n    let currentIndex = text.indexOf(searchText);\n    currentIndex !== -1;\n    currentIndex = text.indexOf(searchText, currentIndex + 1)\n  ) {\n    if (\n      closestIndex === undefined ||\n      Math.abs(currentIndex - position) < Math.abs(closestIndex - position)\n    ) {\n      closestIndex = currentIndex;\n    }\n  }\n\n  return closestIndex;\n}\n\nfunction getSourceLocation(\n  tag: TSESTree.Node,\n  sourceCode: Readonly<SourceCode>,\n  range: [number, number],\n  extendToWord = false,\n): TSESTree.SourceLocation {\n  const tagStart = getNodeStartOffset(tag);\n  const start = sourceCode.getLocFromIndex(tagStart + range[0]);\n  const end = sourceCode.getLocFromIndex(tagStart + range[1]);\n\n  if (!extendToWord) {\n    return { start, end };\n  }\n\n  const lineTail = sourceCode.getLines()[start.line - 1].substring(start.column);\n  const wordLength = (lineTail.match(/^[\\w.{}'$\"]+/)?.at(0)?.length ?? 1) - 1;\n\n  return {\n    start,\n    end: {\n      line: end.line,\n      column: end.column + wordLength,\n    },\n  };\n}\n\nfunction getNodeStartOffset(node: TSESTree.Node) {\n  return \"quasi\" in node ? node.quasi.range[0] : node.range[0];\n}\n"],"names":["regExpEscape","qmark","star","isDefined","path","TSESTree","pgConnectionString","pipe","TE","crypto","fs","E","g","target"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7]}