Files
SnowLuma/.pnpm-store/v11/files/4d/f0c7a2bd1d4c045fd36be33b20bc32a432639843a198a35c30ddba7784e44bbd3f347349161fb9a6e8493d56c83f8c53eec8c8755a6d2ad6cd59891143aae6
T
TanTan 2a69b23b47
Dev Build / cleanup (push) Waiting to run
Dev Build / typecheck (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:27:07 +08:00

1 line
115 KiB
Plaintext

{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { expand } from 'brace-expansion'\nimport { Matcher, type Form } from '@isaacs/nonrecursive-glob-match'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\nexport type Platform =\n | 'aix'\n | 'android'\n | 'darwin'\n | 'freebsd'\n | 'haiku'\n | 'linux'\n | 'openbsd'\n | 'sunos'\n | 'win32'\n | 'cygwin'\n | 'netbsd'\n\nexport interface MinimatchOptions {\n /** do not expand `{x,y}` style braces */\n nobrace?: boolean\n /** do not treat patterns starting with `#` as a comment */\n nocomment?: boolean\n /** do not treat patterns starting with `!` as a negation */\n nonegate?: boolean\n /** treat `**` the same as `*` */\n noglobstar?: boolean\n /** do not expand extglobs like `+(a|b)` */\n noext?: boolean\n /** return the pattern if nothing matches */\n nonull?: boolean\n /** treat `\\\\` as a path separator, not an escape character */\n windowsPathsNoEscape?: boolean\n /**\n * inverse of {@link MinimatchOptions.windowsPathsNoEscape}\n * @deprecated\n */\n allowWindowsEscape?: boolean\n /**\n * Compare a partial path to a pattern. As long as the parts\n * of the path that are present are not contradicted by the\n * pattern, it will be treated as a match. This is useful in\n * applications where you're walking through a folder structure,\n * and don't yet have the full path, but want to ensure that you\n * do not walk down paths that can never be a match.\n */\n partial?: boolean\n /** allow matches that start with `.` even if the pattern does not */\n dot?: boolean\n /** ignore case */\n nocase?: boolean\n /** ignore case only in wildcard patterns */\n nocaseMagicOnly?: boolean\n /**\n * Normalize unicode in the pattern and in each portion of the\n * tested paths, with this form. `true` means `'NFC'`.\n */\n normalize?: boolean | Form\n /** consider braces to be \"magic\" for the purpose of `hasMagic` */\n magicalBraces?: boolean\n /**\n * If set, then patterns without slashes will be matched\n * against the basename of the path if it contains slashes.\n * For example, `a?b` would match the path `/xyz/123/acb`, but\n * not `/xyz/acb/123`.\n */\n matchBase?: boolean\n /** invert the results of negated matches */\n flipNegate?: boolean\n /** do not collapse multiple `/` into a single `/` */\n preserveMultipleSlashes?: boolean\n /**\n * A number indicating the level of optimization that should be done\n * to the pattern prior to parsing and using it for matches.\n */\n optimizationLevel?: number\n /** operating system platform */\n platform?: Platform\n /**\n * When a pattern starts with a UNC path or drive letter, and in\n * `nocase:true` mode, do not convert the root portions of the\n * pattern into a case-insensitive regular expression, and instead\n * leave them as strings.\n *\n * This is the default when the platform is `win32` and\n * `nocase:true` is set.\n */\n windowsNoMagicRoot?: boolean\n /**\n * max number of `{...}` patterns to expand. Default 100_000.\n *\n * At `optimizationLevel` 2 or higher, this also limits the\n * patterns made when `**` is followed by `..`.\n */\n braceExpandMax?: number\n /**\n * Max number of non-adjacent `**` patterns to recursively walk down.\n *\n * The default of 200 is almost certainly high enough for most purposes,\n * and can handle absurdly excessive patterns.\n */\n maxGlobstarRecursion?: number\n}\n\nexport const minimatch = (\n p: string,\n pattern: string,\n options: MinimatchOptions = {},\n) => {\n assertValidPattern(pattern)\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n return cachedMinimatch(pattern, options).match(p)\n}\n\n// The Minimatch objects that minimatch() used most recently. A Map\n// keeps its keys in the order they were set, so the first key is the\n// one used least recently.\nconst cache = new Map<string, Minimatch>()\nconst cacheMax = 256\nconst cachedMinimatch = (pattern: string, options: MinimatchOptions) => {\n const key = pattern + '\\0' + JSON.stringify(options)\n let mm = cache.get(key)\n if (mm) {\n cache.delete(key)\n } else {\n // a copy, so a later change to the options can not change it\n mm = new Minimatch(pattern, { ...options })\n if (cache.size >= cacheMax) {\n cache.delete(cache.keys().next().value as string)\n }\n }\n cache.set(key, mm)\n return mm\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n typeof process === 'object' && process ?\n process.env?.__MINIMATCH_TESTING_PLATFORM__ || process.platform\n : 'posix') as Platform\n\nexport type Sep = '\\\\' | '/'\n\nconst path: { [k: string]: { sep: Sep } } = {\n win32: { sep: '\\\\' },\n posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep =\n defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\nexport const filter =\n (pattern: string, options: MinimatchOptions = {}) =>\n (p: string) =>\n minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return minimatch\n }\n\n const orig = minimatch\n\n const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n orig(p, pattern, ext(def, options))\n\n return Object.assign(m, {\n Minimatch: class Minimatch extends orig.Minimatch {\n constructor(pattern: string, options: MinimatchOptions = {}) {\n super(pattern, ext(def, options))\n }\n static defaults(options: MinimatchOptions) {\n return orig.defaults(ext(def, options)).Minimatch\n }\n },\n\n unescape: (\n s: string,\n options: Pick<\n MinimatchOptions,\n 'windowsPathsNoEscape' | 'magicalBraces'\n > = {},\n ) => orig.unescape(s, ext(def, options)),\n\n escape: (\n s: string,\n options: Pick<\n MinimatchOptions,\n 'windowsPathsNoEscape' | 'magicalBraces'\n > = {},\n ) => orig.escape(s, ext(def, options)),\n\n filter: (pattern: string, options: MinimatchOptions = {}) =>\n orig.filter(pattern, ext(def, options)),\n\n defaults: (options: MinimatchOptions) =>\n orig.defaults(ext(def, options)),\n\n braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n orig.braceExpand(pattern, ext(def, options)),\n\n match: (\n list: string[],\n pattern: string,\n options: MinimatchOptions = {},\n ) => orig.match(list, pattern, ext(def, options)),\n\n sep: orig.sep,\n GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n })\n}\nminimatch.defaults = defaults\n\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 = (\n pattern: string,\n options: MinimatchOptions = {},\n) => {\n assertValidPattern(pattern)\n\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\n return expand(pattern, { max: options.braceExpandMax })\n}\nminimatch.braceExpand = braceExpand\n\nexport const match = (\n list: string[],\n pattern: string,\n options: MinimatchOptions = {},\n) => {\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\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\n\n// Index of the `]` that closes the class that starts at `start`,\n// or -1 if it is not closed. Posix classes such as `[:alpha:]` are\n// not skipped, so this can find a `]` before the real end. That\n// only makes a class look less like a literal.\nconst classEnd = (pattern: string, start: number) => {\n let i = start + 1\n if (pattern.charAt(i) === '!' || pattern.charAt(i) === '^') i++\n let sawStart = false\n for (; i < pattern.length; i++) {\n const c = pattern.charAt(i)\n if (c === ']' && sawStart) return i\n sawStart = true\n if (c === '\\\\') i++\n }\n return -1\n}\n\n// If a path portion pattern has no magic, return the string it\n// matches. Otherwise, return undefined. This can report magic for\n// a pattern that is in fact literal (eg, `[]`), but never the\n// reverse, so a string result is always safe to compare directly.\nconst literal = (pattern: string, noext: boolean): string | undefined => {\n if (!noext && (pattern === '+()' || pattern === '@()')) return pattern\n let lit = ''\n for (let i = 0; i < pattern.length; i++) {\n const c = pattern.charAt(i)\n if (c === '\\\\') {\n // a trailing \\ is a literal \\\n lit += pattern.charAt(++i) || c\n } else if (c === '*' || c === '?') {\n return undefined\n } else if (c === '[') {\n const close = classEnd(pattern, i)\n if (close === -1) {\n // not closed, so the [ is a literal\n lit += c\n continue\n }\n // a class of one char, such as `[*]` or `[\\b]`, is a literal\n let body = pattern.slice(i + 1, close)\n if (body.startsWith('\\\\')) body = body.slice(1)\n if ([...body].length !== 1 || '!^'.includes(pattern.charAt(i + 1))) {\n return undefined\n }\n lit += body\n i = close\n } else if (\n !noext &&\n '+@!'.includes(c) &&\n pattern.charAt(i + 1) === '(' &&\n pattern.includes(')', i + 2)\n ) {\n return undefined\n } else {\n lit += c\n }\n }\n return lit\n}\n\n// True if the portion pattern has the same meaning as an alternative\n// inside `@(...)`. It must not have a `|` or `)` that is not in a\n// closed extglob (those are literal at the top level), an extglob\n// that is not closed (the `)` of the `@(...)` would close it), or a\n// trailing `\\` (it would escape the next `|`). A pattern that is\n// only an empty extglob, such as `?()`, is literal on its own, but\n// not in `@(...)`. Posix classes such as `[:alpha:]` can hide a `]`\n// from classEnd, so patterns with them are not merged.\nconst extSafe = (pattern: string) => {\n if (/^[?*+@]\\(\\)$/.test(pattern) || pattern.includes('[:')) return false\n let depth = 0\n for (let i = 0; i < pattern.length; i++) {\n const c = pattern.charAt(i)\n if (c === '\\\\') {\n if (++i === pattern.length) return false\n } else if (c === '[') {\n const close = classEnd(pattern, i)\n if (close !== -1) i = close\n } else if ('+@!?*'.includes(c) && pattern.charAt(i + 1) === '(') {\n depth++\n i++\n } else if (c === ')') {\n if (!depth--) return false\n } else if (c === '|' && !depth) {\n return false\n }\n }\n return !depth\n}\n\n// The last path that Minimatch#match split, and its parts. A path is\n// often tested against many patterns in a row (such as a list of\n// ignore patterns), so this saves splitting it again. The parts are\n// never changed, so they can be shared.\nlet lastSplit: SplitPath | undefined\n\n/**\n * A path that Minimatch#match split, with the settings that the split\n * depends on. `resolved` is the parts after optimizationLevel 2 has\n * resolved `.` and `..` in them, which only depends on the same\n * settings, once a level 2 Minimatch has needed them.\n */\nexport type SplitPath = {\n f: string\n isWindows: boolean\n preserveMultipleSlashes: boolean\n normalize: Form | undefined\n parts: string[]\n resolved?: string[]\n}\n\n// The last path that Minimatch#match checked before splitting it. If\n// the same path is checked again, it is being tested against many\n// patterns, so it is split and the parts are kept for the others.\nlet lastChecked: string | undefined\n\nexport type ParseReturnFiltered = string | Matcher | typeof GLOBSTAR\n\n/**\n * The rows that Minimatch#match can match without splitting the path:\n * `**` and one more portion (`tail`), a portion with `**` on each side\n * of it (`mid`), a portion and then `**` (`head`), or one portion that\n * matches the basename of the path, with matchBase (`base`).\n */\nexport type RowShape = 'tail' | 'mid' | 'head' | 'base'\n\n// true if a pattern portion that is not ** matches a path portion.\n// An empty path portion only matches an empty pattern portion. A path\n// portion never has a `/`, so the Matcher does not need to check it.\nconst portionMatch = (p: string | Matcher, f: string) =>\n typeof p === 'string' ? f === p : f !== '' && p.testUnchecked(f)\n\n// Where the last portion of a row matches in a path: the start of the\n// last portion of the path, or of the one before a trailing `/`. -1 if\n// it matches neither.\nconst endIndex = (\n p: string | Matcher,\n last: string,\n lastStart: number,\n prev: string | undefined,\n prevStart: number,\n) =>\n portionMatch(p, last) ? lastStart\n : prev !== undefined && portionMatch(p, prev) ? prevStart\n : -1\n\nconst isDots = (p: string) => p === '.' || p === '..'\n\n// a Windows drive letter portion, like `c:`\nconst isDrive = (p: ParseReturn | undefined) =>\n typeof p === 'string' && /^[a-z]:$/i.test(p)\n\n// true for the `UNC` portion of a long UNC root, //?/UNC/host/share\nconst isLongUNC = (p: ParseReturn | undefined) =>\n typeof p === 'string' && /^unc$/i.test(p)\n\n// The index of the host in a row or split path that starts with a\n// Windows UNC root: 2 for `//host/share`, and 4 for\n// `//?/UNC/host/share`. Otherwise -1. `//?/c:` is not one.\nconst uncHost = (p: ParseReturn[]) => {\n if (p[0] !== '' || p[1] !== '') return -1\n const h =\n p[2] !== '?' ? 2\n : isLongUNC(p[3]) ? 4\n : -1\n const host = p[h]\n const share = p[h + 1]\n return (\n h !== -1 &&\n host !== undefined &&\n host !== '' &&\n host !== GLOBSTAR &&\n share !== undefined &&\n share !== '' &&\n share !== GLOBSTAR\n ) ?\n h\n : -1\n}\n\n// true if ** can walk the path portion: not `.` or `..`, and not a\n// dotfile unless `dot` is set\nconst walkable = (p: string, dot: boolean) =>\n !isDots(p) && (dot || !p.startsWith('.'))\n\n// True if a portion of the path from `start` to `end` can not be\n// walked by **: one that starts with `.`, or with `dot`, one that is\n// `.` or `..`. `start` is the start of a portion, and `end` is the end\n// of the path, or just after a separator.\nconst dotPortion = (\n f: string,\n start: number,\n end: number,\n dot: boolean,\n sep: PathSeps,\n) => {\n for (let k = start; k < end;) {\n if (f.charCodeAt(k) === 46) {\n if (!dot) return true\n const n = f.charCodeAt(k + 1) === 46 ? k + 2 : k + 1\n if (n >= end || isSep(f.charCodeAt(n), sep)) return true\n }\n // the start of the next portion, after any run of separators\n const s = nextSep(f, k, sep)\n if (s === -1) return false\n k = s + 1\n while (k < end && isSep(f.charCodeAt(k), sep)) k++\n }\n return false\n}\n\n/**\n * The separators that a path has: only `/`, only `\\` (a Windows path\n * with no `/`), or both. Scanning for the ones it has is faster.\n */\nexport type PathSeps = '/' | '\\\\' | 'both'\n\nconst isSep = (c: number, sep: PathSeps) =>\n sep === '/' ? c === 47\n : sep === '\\\\' ? c === 92\n : c === 47 || c === 92\n\n// the index of the first separator at or after `from`, or -1\nconst nextSep = (f: string, from: number, sep: PathSeps) => {\n if (sep !== 'both') return f.indexOf(sep, from)\n const s = f.indexOf('/', from)\n const b = f.indexOf('\\\\', from)\n return (\n s === -1 ? b\n : b === -1 ? s\n : Math.min(s, b)\n )\n}\n\n// the index of the last separator at or before `from`, or -1\nconst lastSep = (f: string, from: number, sep: PathSeps) =>\n sep !== 'both' ?\n f.lastIndexOf(sep, from)\n : Math.max(f.lastIndexOf('/', from), f.lastIndexOf('\\\\', from))\n\n/**\n * A pattern row split on its first and last `**`, from a start\n * index. Each body segment has the number of path portions that it\n * and the ones after it need, to find the last index where it can\n * start in a path.\n */\nexport type GlobstarParts = {\n head: ParseReturn[]\n body: ParseReturn[]\n tail: ParseReturn[]\n segments: [segment: ParseReturn[], need: number][]\n}\nexport type ParseReturn = ParseReturnFiltered | false\n\n// What parse() returns in place of a Matcher while make() builds and\n// merges the rows. Most of the Matchers in rows that are merged would\n// never be used, so they are only made for the rows that are left.\nconst PENDING = {} as Matcher\n\nexport class Minimatch {\n options: MinimatchOptions\n set: ParseReturnFiltered[][]\n pattern: string\n\n windowsPathsNoEscape: boolean\n nonegate: boolean\n negate: boolean\n comment: boolean\n empty: boolean\n preserveMultipleSlashes: boolean\n partial: boolean\n globSet: string[]\n globParts: string[][]\n nocase: boolean\n\n isWindows: boolean\n platform: Platform\n windowsNoMagicRoot: boolean\n maxGlobstarRecursion: number\n // the path can be checked against the last portion, and the string\n // portions, of each row before it is split. See #canMatch.\n #endCheck: boolean\n #literalCheck: boolean\n // level 2 resolves `.` and `..` portions in the path\n #level2: boolean\n // the unicode normalization form, if any\n #form: Form | undefined\n // the string portions of each row in the set\n #literals: string[][] = []\n // the rows that #canMatch can match without splitting the path\n #shapes: (RowShape | undefined)[] = []\n // the rows whose last portion can be checked against the path's\n #endRows: boolean[] = []\n // brace expansion can make the same portion in many rows, so they\n // share one Matcher, and the states that it caches\n #matchers = new Map<string, Matcher>()\n // parse() returns PENDING in place of a Matcher\n #pending = false\n // the GlobstarParts of each pattern row, by start index and partial\n #globstarParts = new WeakMap<ParseReturn[], GlobstarParts[]>()\n\n constructor(pattern: string, options: MinimatchOptions = {}) {\n assertValidPattern(pattern)\n\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') as keyof MinimatchOptions\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.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\n this.globSet = []\n this.globParts = []\n this.set = []\n this.#endCheck = !this.preserveMultipleSlashes\n this.#level2 = (options.optimizationLevel ?? 1) >= 2\n const n = options.normalize\n this.#form = n === true ? 'NFC' : n || undefined\n\n // make the set of Matchers etc.\n this.make()\n\n // On Windows, the portions of a row up to its drive letter or UNC\n // share are skipped or compared without case, if the path has one\n // too. So the checks only use the portions after it.\n const drives = this.set.map(row => this.#rootIndex(row))\n this.#endRows = this.set.map(\n (row, r) => this.#endCheck && row.length - 1 > drives[r]!,\n )\n // with the end check, the last portion is already checked\n this.#literals = this.set.map((row, r) => {\n const end = this.#endRows[r] ? row.length - 1 : row.length\n const lits = row\n .slice(drives[r]! + 1, end)\n .filter((p): p is string => typeof p === 'string' && !!p)\n return [...new Set(lits)]\n })\n this.#literalCheck = this.#literals.some(l => l.length)\n this.#shapes = this.set.map((row, r) => {\n const [p0, p1, p2] = row\n if (this.#endRows[r] && row.length === 2) {\n if (p0 === GLOBSTAR && p1 !== GLOBSTAR) return 'tail'\n }\n // the basename of a path that is split on / is its last portion,\n // or the one before a trailing /, the same as the end check\n if (\n this.#endRows[r] &&\n options.matchBase &&\n row.length === 1 &&\n p0 !== GLOBSTAR &&\n p0 !== ''\n ) {\n return 'base'\n }\n // the portion must not be a root, or '', which can be a\n // different portion on Windows (where //x paths get an extra '')\n if (!this.#endCheck || drives[r] !== -1) return undefined\n if (\n row.length === 3 &&\n p0 === GLOBSTAR &&\n p2 === GLOBSTAR &&\n p1 !== GLOBSTAR &&\n p1 !== '' &&\n // the portion between is only matched below this limit\n this.maxGlobstarRecursion > 0\n ) {\n return 'mid'\n }\n if (\n row.length === 2 &&\n p1 === GLOBSTAR &&\n p0 !== GLOBSTAR &&\n p0 !== ''\n ) {\n return 'head'\n }\n return undefined\n })\n }\n\n // a string portion of a pattern, normalized if the option is set\n #norm(p: string) {\n return this.#form ? p.normalize(this.#form) : p\n }\n\n // On Windows, the index of the last root portion of a row, as\n // #matchRow finds it: 0 for `c:/...`, 3 for `//?/c:/...` and\n // `//host/share/...`, and 5 for `//?/UNC/host/share/...`. Otherwise\n // -1.\n #rootIndex(row: ParseReturn[]) {\n if (!this.isWindows) return -1\n if (isDrive(row[0])) return 0\n const uncDrive =\n row[0] === '' && row[1] === '' && row[2] === '?' && isDrive(row[3])\n if (uncDrive) return 3\n const h = uncHost(row)\n return h === -1 ? -1 : h + 1\n }\n\n hasMagic(): boolean {\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') return true\n }\n }\n return false\n }\n\n make() {\n const pattern = this.pattern\n const options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n this.globSet = [...new Set(this.braceExpand())]\n\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 Matchers, 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\n // glob --> Matchers\n this.#pending = true\n let set = this.globParts.map((s, _, __) => {\n if (this.isWindows && this.windowsNoMagicRoot) {\n // check if it's a drive or unc path. The root of a long UNC\n // path, //?/UNC/host/share, is 6 portions.\n const n = s[2] === '?' && isLongUNC(s[3]) ? 6 : 4\n const isUNC =\n s[0] === '' &&\n s[1] === '' &&\n (s[2] === '?' || !globMagic.test(s[2])) &&\n s.slice(3, n).every(p => !globMagic.test(p))\n const isDrive = /^[a-z]:/i.test(s[0])\n if (isUNC) {\n return [\n ...s.slice(0, n).map(p => this.#norm(p)),\n ...s.slice(n).map(ss => this.parse(ss)),\n ]\n } else if (isDrive) {\n return [\n this.#norm(s[0]!),\n ...s.slice(1).map(ss => this.parse(ss)),\n ]\n }\n }\n return s.map(ss => this.parse(ss))\n })\n\n // filter out everything that didn't compile properly.\n this.set = set.filter(\n s => s.indexOf(false) === -1,\n ) as ParseReturnFiltered[][]\n\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 (\n p[0] === '' &&\n p[1] === '' &&\n this.globParts[i][2] === '?' &&\n (isDrive(p[3]) || isLongUNC(this.globParts[i][3]))\n ) {\n if (isLongUNC(this.globParts[i][3])) p[3] = 'UNC'\n p[2] = '?'\n }\n }\n }\n\n // with noext, `@(...)` would be literal\n if (!options.noext) this.mergeRows()\n\n this.#pending = false\n this.set.forEach((row, i) => {\n for (let k = 0; k < row.length; k++) {\n if (row[k] === PENDING) {\n row[k] = this.parse(this.globParts[i]![k]!) as Matcher\n }\n }\n })\n }\n\n // Merge rows that only differ in one portion, where each of them\n // is a Matcher, into one row that matches any of them with\n // `@(a|b|...)`. Then a path is only walked once for all of them,\n // for example with `**/*.{js,ts}`.\n mergeRows() {\n let merged = true\n while (merged) {\n merged = false\n const len = Math.max(0, ...this.set.map(r => r.length))\n for (let k = 0; k < len; k++) {\n // the rows that are the same other than at portion k\n const groups = new Map<string, number[]>()\n this.set.forEach((row, i) => {\n if (\n !(row[k] instanceof Matcher || row[k] === PENDING) ||\n !extSafe(this.globParts[i]![k]!)\n ) {\n return\n }\n const parts = [...this.globParts[i]!]\n parts[k] = ''\n const key = `${row.length}/${parts.join('/')}`\n const g = groups.get(key)\n if (g) g.push(i)\n else groups.set(key, [i])\n })\n const drop = new Set<number>()\n for (const g of groups.values()) {\n if (g.length < 2) continue\n const [first, ...rest] = g as [number, ...number[]]\n const alts = g.map(i => this.globParts[i]![k]!)\n const glob = `@(${alts.join('|')})`\n this.globParts[first]![k] = glob\n this.set[first]![k] = this.parse(glob) as Matcher\n for (const i of rest) drop.add(i)\n }\n if (drop.size) {\n merged = true\n this.set = this.set.filter((_, i) => !drop.has(i))\n this.globParts = this.globParts.filter((_, i) => !drop.has(i))\n }\n }\n }\n }\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: string[][]) {\n // if we're not in globstar mode, then turn ** into *\n if (this.options.noglobstar) {\n for (const partset of globParts) {\n for (let j = 0; j < partset.length; j++) {\n if (partset[j] === '**') {\n partset[j] = '*'\n }\n }\n }\n }\n\n const { optimizationLevel = 1 } = this.options\n\n if (optimizationLevel >= 2) {\n // aggressive optimization for the purpose of fs walking\n globParts = this.firstPhasePreProcess(globParts)\n globParts = this.secondPhasePreProcess(globParts)\n } else if (optimizationLevel >= 1) {\n // just basic optimizations to remove some .. parts\n globParts = this.levelOneOptimize(globParts)\n } else {\n // just collapse multiple ** portions into one\n globParts = this.adjascentGlobstarOptimize(globParts)\n }\n\n return globParts\n }\n\n // just get rid of adjascent ** portions\n adjascentGlobstarOptimize(globParts: string[][]) {\n return globParts.map(parts => {\n let gs: number = -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\n // get rid of adjascent ** and resolve .. portions\n levelOneOptimize(globParts: string[][]) {\n return globParts.map(parts => {\n // .. can not remove the root of a Windows path\n const root = this.#rootIndex(parts) + 1\n parts = parts.reduce((set: string[], part) => {\n const prev = set[set.length - 1]\n if (part === '**' && prev === '**') {\n return set\n }\n if (part === '..') {\n if (\n set.length > root &&\n prev &&\n prev !== '..' &&\n prev !== '.' &&\n prev !== '**'\n ) {\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\n // Check the path against each row before it is split. 'no' if no\n // row can match, so it does not need to be split. 'yes' if a row of\n // `**` and one more portion matches. 'maybe' if it must be split to\n // know. None of this applies with partial, where the path can end\n // before the row does.\n //\n // On Windows, `\\` is a separator in the path too, and the portions of\n // a row up to its drive letter or UNC share are not checked (see\n // #rootIndex).\n //\n // Each string portion of a row must be a portion of the path, so the\n // path must contain it. Level 2 can only take portions out of the\n // path, so this is still true then.\n //\n // The last portion of a row must match the last portion of the path,\n // or the one before a trailing `/` (as a/* and a/**/* match a/b/).\n // This does not apply to rows that end in **, rows that end in a\n // root, or preserveMultipleSlashes (which can leave more\n // than one '' at the end). At level 2, it does not apply if that\n // portion is `.` or `..`, which can be\n // resolved away. Level 2 only takes other portions out of the\n // middle of the path.\n //\n // A row of `**/x` then matches if the ** can walk the portions\n // before the one that x matches, the same as #matchGlobstar. At\n // level 2, this is only known if none of them are `.` or `..`, so\n // that the path does not change when it is resolved.\n #canMatch(f: string): 'no' | 'yes' | 'maybe' {\n const sep: PathSeps =\n !this.isWindows || !f.includes('\\\\') ? '/'\n : f.includes('/') ? 'both'\n : '\\\\'\n // the portions that f.split(/\\/+/) would end with, and where they\n // start in f, found when a row needs them. `ends` is 0 until they\n // are found, then 1, or -1 if they can not be used.\n let ends = this.#endCheck ? 0 : -1\n let last = ''\n let lastStart = 0\n let prev: string | undefined\n let prevStart = 0\n const dot = !!this.options.dot\n // A string compare is cheaper than includes(), and a Matcher test\n // costs more, so the cheaper check goes first.\n ROWS: for (let r = 0; r < this.set.length; r++) {\n const row = this.set[r]!\n const p = row[row.length - 1]\n let end = ends !== -1 && this.#endRows[r]! && p !== GLOBSTAR\n if (end && ends === 0) {\n const i = lastSep(f, f.length, sep)\n lastStart = i + 1\n last = f.slice(lastStart)\n if (last === '' && i >= 0) {\n let j = i\n while (j > 0 && isSep(f.charCodeAt(j - 1), sep)) j--\n prevStart = j === 0 ? 0 : lastSep(f, j - 1, sep) + 1\n prev = f.slice(prevStart, j)\n }\n const resolves =\n this.#level2 &&\n (isDots(last) ||\n (last === '' && prev !== undefined && isDots(prev)))\n ends = resolves ? -1 : 1\n end = !resolves\n }\n let tailStart = -1\n if (end && typeof p === 'string') {\n tailStart = endIndex(p, last, lastStart, prev, prevStart)\n if (tailStart === -1) continue\n }\n if (this.#literalCheck) {\n for (const l of this.#literals[r]!) {\n if (!f.includes(l)) continue ROWS\n }\n }\n if (end && typeof p === 'object') {\n tailStart = endIndex(p, last, lastStart, prev, prevStart)\n if (tailStart === -1) continue\n }\n const shape = this.#shapes[r]\n if (shape === 'base' && end) return 'yes'\n if (shape === 'tail' && end) {\n if (this.#level2 && dotPortion(f, 0, tailStart, true, sep)) {\n return 'maybe'\n }\n if (!dotPortion(f, 0, tailStart, dot, sep)) return 'yes'\n continue\n }\n if (shape === 'mid' || shape === 'head') {\n const m = this.#walk(f, row, shape === 'head', dot, sep)\n if (m !== 'no') return m\n continue\n }\n return 'maybe'\n }\n return 'no'\n }\n\n // Match a row of a known shape against the split path, the same as\n // #matchGlobstar and #matchGlobStarBodySections do. None of these\n // rows have a drive letter, so they start at the first portion.\n #matchShape(\n file: string[],\n row: ParseReturnFiltered[],\n shape: 'tail' | 'mid' | 'head',\n ): boolean {\n const dot = !!this.options.dot\n const n = file.length\n if (shape === 'head') {\n // x, then at least one portion that ** can walk\n if (n < 2 || !portionMatch(row[0] as string | Matcher, file[0]!)) {\n return false\n }\n for (let i = 1; i < n; i++)\n if (!walkable(file[i]!, dot)) return false\n return true\n }\n const x = row[1] as string | Matcher\n if (shape === 'tail') {\n // x is the last portion, or the one before a trailing ''\n let t = n - 1\n if (!portionMatch(x, file[t]!)) {\n if (file[t] !== '' || n === 1 || !portionMatch(x, file[--t]!)) {\n return false\n }\n }\n for (let i = 0; i < t; i++)\n if (!walkable(file[i]!, dot)) return false\n return true\n }\n // mid: the first x that ** can walk to, with a portion after it,\n // and ** can walk all of those\n for (let k = 0; k < n; k++) {\n if (portionMatch(x, file[k]!) && k + 1 < n) {\n let i = k + 1\n while (i < n && walkable(file[i]!, dot)) i++\n if (i === n) return true\n }\n if (!walkable(file[k]!, dot)) return false\n }\n return false\n }\n\n // Match a row of `**/x/**` or `x/**` against the path, the same as\n // #matchGlobstar and #matchGlobStarBodySections do once it is split.\n // x must match a portion (the first one, for `x/**`), the ** before\n // it must be able to walk the portions before that one, and there\n // must be a portion after it, which the ** after it can walk. At\n // level 2, this is only known if no portion is `.` or `..`.\n #walk(\n f: string,\n row: ParseReturnFiltered[],\n head: boolean,\n dot: boolean,\n sep: PathSeps,\n ): 'yes' | 'no' | 'maybe' {\n if (this.#level2 && dotPortion(f, 0, f.length, true, sep))\n return 'maybe'\n const x = row[head ? 0 : 1] as string | Matcher\n // the last portion has none after it, so it can not be x\n let s = 0\n for (let e = nextSep(f, s, sep); e !== -1; e = nextSep(f, s, sep)) {\n // the start of the next portion\n let next = e + 1\n while (next < f.length && isSep(f.charCodeAt(next), sep)) next++\n const hit =\n typeof x === 'string' ?\n e - s === x.length && f.startsWith(x, s)\n : e > s && x.testUnchecked(f.slice(s, e))\n if (hit && !dotPortion(f, next, f.length, dot, sep)) return 'yes'\n if (head || dotPortion(f, s, next, dot, sep)) return 'no'\n s = next\n }\n return 'no'\n }\n\n // the last split, if it was the same path with the same split\n // settings\n #cachedSplit(f: string) {\n const last = lastSplit\n return (\n last?.f === f &&\n last.isWindows === this.isWindows &&\n last.preserveMultipleSlashes === this.preserveMultipleSlashes &&\n last.normalize === this.#form\n ) ?\n last\n : undefined\n }\n\n // split a path for match(), and keep the parts for the next call\n #split(f: string) {\n const { isWindows, preserveMultipleSlashes } = this\n // windows: need to use /, not \\\n let parts = this.#slashSplit(isWindows ? f.split('\\\\').join('/') : f)\n // normalize each portion, so that a char that normalizes to `/`\n // does not make a new portion\n const normalize = this.#form\n if (normalize) parts = parts.map(p => p.normalize(normalize))\n lastSplit = {\n f,\n isWindows,\n preserveMultipleSlashes,\n normalize,\n parts,\n }\n return lastSplit\n }\n\n // resolve `.` and `..` portions of a path, for level 2\n #levelTwoFileOptimize(file: string[]) {\n // work on a copy, so that the cached parts do not change\n const parts = [...file]\n let didSomething: boolean = false\n\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] === '') continue\n if (p === '.' || p === '') {\n didSomething = true\n parts.splice(i, 1)\n i--\n }\n }\n if (\n parts[0] === '.' &&\n parts.length === 2 &&\n (parts[1] === '.' || parts[1] === '')\n ) {\n didSomething = true\n parts.pop()\n }\n }\n\n // <pre>/<p>/../<rest> -> <pre>/<rest>\n // .. can not remove the root of a Windows path\n const root = this.#rootIndex(parts) + 1\n let dd: number = root\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 = Math.max(dd - 2, root)\n }\n }\n } while (didSomething)\n return parts.length === 0 ? [''] : parts\n }\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: string[][]) {\n // each **/.. split doubles the patterns, so stop at the brace max\n const { braceExpandMax = 100_000 } = this.options\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: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = 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\n let next = parts[gs + 1]\n const p = parts[gs + 2]\n const p2 = parts[gs + 3]\n if (next !== '..') continue\n if (\n !p ||\n p === '.' ||\n p === '..' ||\n !p2 ||\n p2 === '.' ||\n p2 === '..' ||\n globParts.length >= braceExpandMax\n ) {\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\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] === '') continue\n if (p === '.' || p === '') {\n didSomething = true\n parts.splice(i, 1)\n i--\n }\n }\n if (\n parts[0] === '.' &&\n parts.length === 2 &&\n (parts[1] === '.' || parts[1] === '')\n ) {\n didSomething = true\n parts.pop()\n }\n }\n\n // <pre>/<p>/../<rest> -> <pre>/<rest>\n // .. can not remove the root of a Windows path\n const root = this.#rootIndex(parts) + 1\n let dd: number = root\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) parts.push('')\n dd = Math.max(dd - 2, root)\n }\n }\n }\n } while (didSomething)\n\n return globParts\n }\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: string[][]): string[][] {\n // each pattern is compared to each other one, so skip this for\n // large sets. The patterns match the same paths either way.\n if (globParts.length > 1000) return 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(\n globParts[i],\n globParts[j],\n !this.preserveMultipleSlashes,\n )\n if (matched) {\n globParts[i] = []\n globParts[j] = matched\n break\n }\n }\n }\n return globParts.filter(gs => gs.length)\n }\n\n partsMatch(\n a: string[],\n b: string[],\n emptyGSMatch: boolean = false,\n ): false | string[] {\n let ai = 0\n let bi = 0\n let result: string[] = []\n let which: string = ''\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 } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n result.push(a[ai])\n ai++\n } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n result.push(b[bi])\n bi++\n } else if (\n a[ai] === '*' &&\n b[bi] &&\n (this.options.dot || !b[bi].startsWith('.')) &&\n b[bi] !== '**'\n ) {\n if (which === 'b') return false\n which = 'a'\n result.push(a[ai])\n ai++\n bi++\n } else if (\n b[bi] === '*' &&\n a[ai] &&\n (this.options.dot || !a[ai].startsWith('.')) &&\n a[ai] !== '**'\n ) {\n if (which === 'a') return false\n which = 'b'\n result.push(b[bi])\n ai++\n bi++\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\n parseNegate() {\n if (this.nonegate) return\n\n const pattern = this.pattern\n let negate = false\n let negateOffset = 0\n\n for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.slice(negateOffset)\n this.negate = negate\n }\n\n // Match the parts of a path against one row of the set. `resolved`\n // is the parts after level 2 resolves `.` and `..` in them, or the\n // same parts below level 2. Set partial to true to test if, for\n // example, \"/a/b\" matches the start of \"/*/b/*/d\". Partial means, if\n // you run out of file before you run out of pattern, then that's\n // fine, as long as all the parts match.\n #matchRow(\n file: string[],\n resolved: string[],\n pattern: ParseReturn[],\n partial: boolean,\n ) {\n let fileStartIndex = 0\n let patternStartIndex = 0\n\n // UNC paths like //?/X:/... can match X:/... and vice versa, and\n // //?/UNC/host/share/... can match //host/share/... and vice versa.\n // Drive letters in absolute drive or unc paths, and the host and\n // share of UNC paths, are always compared case-insensitively.\n const fh = this.isWindows ? uncHost(resolved) : -1\n const ph = fh === -1 ? -1 : uncHost(pattern)\n if (ph !== -1) {\n const host = pattern[ph]\n const share = pattern[ph + 1]\n if (typeof host !== 'string' || typeof share !== 'string') {\n // a host or share with magic is matched as usual\n fileStartIndex = fh\n patternStartIndex = ph\n } else if (\n resolved[fh]!.toLowerCase() === host.toLowerCase() &&\n resolved[fh + 1]!.toLowerCase() === share.toLowerCase()\n ) {\n fileStartIndex = fh + 2\n patternStartIndex = ph + 2\n }\n } else if (this.isWindows) {\n const fileDrive =\n typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n const fileUNC =\n !fileDrive &&\n file[0] === '' &&\n file[1] === '' &&\n file[2] === '?' &&\n /^[a-z]:$/i.test(file[3])\n\n const patternDrive =\n typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n const patternUNC =\n !patternDrive &&\n pattern[0] === '' &&\n pattern[1] === '' &&\n pattern[2] === '?' &&\n typeof pattern[3] === 'string' &&\n /^[a-z]:$/i.test(pattern[3])\n\n const fdi =\n fileUNC ? 3\n : fileDrive ? 0\n : undefined\n const pdi =\n patternUNC ? 3\n : patternDrive ? 0\n : undefined\n if (typeof fdi === 'number' && typeof pdi === 'number') {\n const [fd, pd]: [string, string] = [\n file[fdi],\n pattern[pdi] as string,\n ]\n // the drives match, so start matching after them\n if (fd.toLowerCase() === pd.toLowerCase()) {\n patternStartIndex = pdi + 1\n fileStartIndex = fdi + 1\n }\n }\n }\n\n // the drive letters are found in the parts before level 2 resolves\n // them, and the match uses the resolved parts\n file = resolved\n\n if (pattern.includes(GLOBSTAR)) {\n return this.#matchGlobstar(\n file,\n pattern,\n partial,\n fileStartIndex,\n patternStartIndex,\n )\n }\n\n return this.#matchOne(\n file,\n pattern,\n partial,\n fileStartIndex,\n patternStartIndex,\n )\n }\n\n #matchGlobstar(\n file: string[],\n pattern: ParseReturn[],\n partial: boolean,\n fileIndex: number,\n patternIndex: number,\n ) {\n const { head, body, tail, segments } = this.#getGlobstarParts(\n pattern,\n partial,\n patternIndex,\n )\n\n // check the head, from the current file/pattern index.\n if (head.length) {\n const headEnd = fileIndex + head.length\n if (!this.#matchOne(file, head, partial, fileIndex, 0, headEnd)) {\n return false\n }\n fileIndex += head.length\n patternIndex += head.length\n }\n // now we know the head matches!\n\n // if the last portion is not empty, it MUST match the end\n // check the tail\n let fileTailMatch: number = 0\n if (tail.length) {\n // if head + tail > file, then we cannot possibly match\n if (tail.length + fileIndex > file.length) return false\n\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 } 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 (\n file[file.length - 1] !== '' ||\n fileIndex + tail.length === file.length\n ) {\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\n // now we know the tail matches!\n\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 (\n f === '.' ||\n f === '..' ||\n (!this.options.dot && f.startsWith('.'))\n ) {\n return false\n }\n }\n // in partial mode, we just need to get past all file parts\n return partial || sawSome\n }\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 return !!this.#matchGlobStarBodySections(\n file,\n segments,\n file.length - fileTailMatch,\n fileIndex,\n 0,\n partial,\n 0,\n !!fileTailMatch,\n new Set(),\n )\n }\n\n // Split the pattern into head, tail, and middle of ** delimited\n // parts. The tail has to be at the end, and the others just have to\n // be found in order from the head. These only depend on the pattern\n // row, so they are kept for the next path.\n #getGlobstarParts(\n pattern: ParseReturn[],\n partial: boolean,\n patternIndex: number,\n ): GlobstarParts {\n let byStart = this.#globstarParts.get(pattern)\n if (!byStart) {\n byStart = []\n this.#globstarParts.set(pattern, byStart)\n }\n const key = patternIndex * 2 + (partial ? 1 : 0)\n const found = byStart[key]\n if (found) return found\n\n const firstgs = pattern.indexOf(GLOBSTAR, patternIndex)\n const lastgs = pattern.lastIndexOf(GLOBSTAR)\n const head = pattern.slice(patternIndex, firstgs)\n const body = pattern.slice(firstgs + 1, partial ? undefined : lastgs)\n const tail = partial ? [] : pattern.slice(lastgs + 1)\n\n // split the body up into sections, and note the number of\n // portions that must come after the start of each one\n const segments: [ParseReturn[], number][] = [[[], 0]]\n let current = segments[0]!\n let nonGsParts = 0\n const nonGsPartsSums: number[] = [0]\n for (const b of body) {\n if (b === GLOBSTAR) {\n nonGsPartsSums.push(nonGsParts)\n current = [[], 0]\n segments.push(current)\n } else {\n current[0].push(b)\n nonGsParts++\n }\n }\n // the portions in this section and the ones after it\n segments.forEach((b, i) => {\n b[1] = nonGsParts - (nonGsPartsSums[i] as number)\n })\n\n const parts = { head, body, tail, segments }\n byStart[key] = parts\n return parts\n }\n\n // return false for \"nope, not matching\"\n // return null for \"not matching, cannot keep trying\"\n #matchGlobStarBodySections(\n file: string[],\n // pattern section, and the portions that it and the rest need\n bodySegments: [ParseReturn[], number][],\n // the end of the file portions that the body can match\n fileLength: number,\n fileIndex: number,\n bodyIndex: number,\n partial: boolean,\n globStarDepth: number,\n sawTail: boolean,\n // the places that a walk has already tried, as\n // bodyIndex * (file.length + 1) + fileIndex. A walk from a place\n // does the same no matter how it got there, and it only comes back\n // if it found no match, so a walk that gets to one stops.\n tried: Set<number>,\n ): boolean | null {\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 // with partial, the body is the rest of the pattern, so it\n // matches if no portions are left, or only the '' of a trailing\n // / (as a/* matches a/b/). A ** at the end walks them as its own\n // empty section.\n if (partial) {\n return (\n fileIndex >= fileLength ||\n (fileIndex === fileLength - 1 && file[fileIndex] === '')\n )\n }\n // just make sure that there's no bad dots before the tail\n for (let i = fileIndex; i < fileLength; i++) {\n sawTail = true\n const f = file[i]\n if (\n f === '.' ||\n f === '..' ||\n (!this.options.dot && f.startsWith('.'))\n ) {\n return false\n }\n }\n return sawTail\n }\n\n // have a non-globstar body section to test, up to the last index\n // where it can start\n const [body, need] = bs\n // with partial, the path can end before the body does\n const after = partial ? fileLength : fileLength - need\n while (fileIndex <= after) {\n const key = bodyIndex * (file.length + 1) + fileIndex\n if (tried.has(key)) return false\n tried.add(key)\n const m = this.#matchOne(\n file,\n body,\n partial,\n fileIndex,\n 0,\n fileIndex + body.length,\n )\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(\n file,\n bodySegments,\n fileLength,\n fileIndex + body.length,\n bodyIndex + 1,\n partial,\n globStarDepth + 1,\n sawTail,\n tried,\n )\n if (sub !== false) {\n return sub\n }\n }\n // the ** does not walk past the last place the body can start\n if (fileIndex === after) break\n const f = file[fileIndex]!\n if (\n f === '.' ||\n f === '..' ||\n (!this.options.dot && f.startsWith('.'))\n ) {\n return false\n }\n\n fileIndex++\n }\n // walked off. no point continuing\n return partial || null\n }\n\n #matchOne(\n file: string[],\n pattern: ParseReturn[],\n partial: boolean,\n fileIndex: number,\n patternIndex: number,\n // only match the file portions before this index\n fileEnd: number = file.length,\n ) {\n let fi: number\n let pi: number\n let pl: number\n let fl: number\n for (\n fi = fileIndex,\n pi = patternIndex,\n fl = Math.min(fileEnd, file.length),\n pl = pattern.length;\n fi < fl && pi < pl;\n fi++, pi++\n ) {\n let p = pattern[pi]\n let f = file[fi]\n\n // should be impossible.\n /* c8 ignore start */\n if (p === false || p === GLOBSTAR) {\n return false\n }\n /* c8 ignore stop */\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into Matchers.\n if (!portionMatch(p, f)) return false\n }\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 * can match \"\", except in\n // partial mode, where it might simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n\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 } 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 } 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\n /* c8 ignore start */\n } else {\n // should be unreachable.\n throw new Error('wtf?')\n }\n /* c8 ignore stop */\n }\n\n braceExpand() {\n return braceExpand(this.pattern, this.options)\n }\n\n parse(pattern: string): ParseReturn {\n assertValidPattern(pattern)\n\n const options = this.options\n\n // shortcuts\n if (pattern === '**') return GLOBSTAR\n if (pattern === '') return ''\n\n const {\n nocase,\n nocaseMagicOnly,\n noext = false,\n dot,\n normalize,\n } = options\n const lit = literal(pattern, noext)\n // in nocase mode, a literal with cased chars still needs a\n // Matcher, unless nocaseMagicOnly is set.\n if (\n lit !== undefined &&\n !(\n nocase &&\n !nocaseMagicOnly &&\n pattern.toUpperCase() !== pattern.toLowerCase()\n )\n ) {\n return this.#norm(lit)\n }\n\n if (this.#pending) return PENDING\n let m = this.#matchers.get(pattern)\n if (!m) {\n m = new Matcher(pattern, { nocase, noext, dot, normalize })\n this.#matchers.set(pattern, m)\n }\n return m\n }\n\n #slashSplit(p: string) {\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 } else if (this.isWindows && /^\\/\\/[^/]+/.test(p)) {\n // add an extra '' for the one we lose\n return ['', ...p.split(/\\/+/)]\n } else {\n return p.split(/\\/+/)\n }\n }\n\n match(f: string, partial = this.partial) {\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\n if (f === '/' && partial) {\n return true\n }\n\n const options = this.options\n\n // treat the test path as a set of pathparts. If it was not just\n // split or checked, check that it can match before splitting it.\n let split = this.#cachedSplit(f)\n if (!split) {\n // the checks look at the path as given, so not if it is\n // normalized\n if (\n !partial &&\n !this.#form &&\n (this.#endCheck || this.#literalCheck) &&\n lastChecked !== f\n ) {\n lastChecked = f\n const can = this.#canMatch(f)\n if (can === 'no') return options.flipNegate ? false : this.negate\n if (can === 'yes') return options.flipNegate ? true : !this.negate\n }\n split = this.#split(f)\n }\n const ff = split.parts\n // the parts after level 2 resolves them, kept for the next pattern\n // that tests the same path\n const resolved =\n this.#level2 ?\n (split.resolved ??= this.#levelTwoFileOptimize(ff))\n : ff\n\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\n const set = this.set\n\n // Find the basename of the path by looking for the last non-empty segment\n let filename: string = 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\n for (let r = 0; r < set.length; r++) {\n const pattern = set[r]!\n const shape = partial ? undefined : this.#shapes[r]\n // level 2 does not change a path of one portion\n const hit =\n shape === 'base' ?\n portionMatch(pattern[0] as string | Matcher, filename)\n : shape ? this.#matchShape(resolved, pattern, shape)\n : options.matchBase && pattern.length === 1 ?\n this.#matchRow([filename], [filename], pattern, partial)\n : this.#matchRow(ff, resolved, pattern, partial)\n if (hit) {\n if (options.flipNegate) {\n return true\n }\n return !this.negate\n }\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\n static defaults(def: MinimatchOptions) {\n return minimatch.defaults(def).Minimatch\n }\n}\n/* c8 ignore start */\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\nexport type { Form }\n/* c8 ignore stop */\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n"]}