From b378dc8828212ddf31bdf0dc0d3b8ac2a53d9550 Mon Sep 17 00:00:00 2001 From: isaacs Date: Sat, 1 Apr 2023 16:41:44 -0700 Subject: [PATCH] Recursive descent parser for extglob allowing correct support for arbitrarily nested extglob expressions, as well as simplified regexps that properly bind the start/end in all possible cases. Fix: https://github.com/isaacs/minimatch/issues/202 Fix: https://github.com/isaacs/node-glob/issues/516 --- changelog.md | 2 + package-lock.json | 10 +- package.json | 2 +- src/assert-valid-pattern.ts | 12 + src/ast.ts | 639 +++ src/index.ts | 424 +- tap-snapshots/test/basic.js.test.cjs | 3709 ++++++++++++++- .../test/escape-has-magic.js.test.cjs | 437 +- .../test/optimization-level-0.ts.test.cjs | 3969 +++++++++++++++-- .../test/optimization-level-2.ts.test.cjs | 3709 ++++++++++++++- .../test/windows-no-magic-root.ts.test.cjs | 6 +- test/basic.js | 11 +- test/patterns.js | 19 + 13 files changed, 11778 insertions(+), 1171 deletions(-) create mode 100644 src/assert-valid-pattern.ts create mode 100644 src/ast.ts diff --git a/changelog.md b/changelog.md index a1232240..be5f480e 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,8 @@ ## 8.0 +- Recursive descent parser for extglob, allowing correct support + for arbitrarily nested extglob expressions - Bump required Node.js version ## 7.4 diff --git a/package-lock.json b/package-lock.json index d8993c95..313ebb32 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ }, "devDependencies": { "@types/brace-expansion": "^1.1.0", - "@types/node": "^18.11.9", + "@types/node": "^18.15.11", "@types/tap": "^15.0.7", "c8": "^7.12.0", "eslint-config-prettier": "^8.6.0", @@ -25,7 +25,7 @@ "typescript": "^4.9.3" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -745,9 +745,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.11.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", - "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==", + "version": "18.15.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", + "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==", "dev": true }, "node_modules/@types/tap": { diff --git a/package.json b/package.json index 714282c6..a1bd8333 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ }, "devDependencies": { "@types/brace-expansion": "^1.1.0", - "@types/node": "^18.11.9", + "@types/node": "^18.15.11", "@types/tap": "^15.0.7", "c8": "^7.12.0", "eslint-config-prettier": "^8.6.0", diff --git a/src/assert-valid-pattern.ts b/src/assert-valid-pattern.ts new file mode 100644 index 00000000..44fffeb4 --- /dev/null +++ b/src/assert-valid-pattern.ts @@ -0,0 +1,12 @@ +const MAX_PATTERN_LENGTH = 1024 * 64 +export const assertValidPattern: (pattern: any) => void = ( + pattern: any +): asserts pattern is string => { + if (typeof pattern !== 'string') { + throw new TypeError('invalid pattern') + } + + if (pattern.length > MAX_PATTERN_LENGTH) { + throw new TypeError('pattern is too long') + } +} diff --git a/src/ast.ts b/src/ast.ts new file mode 100644 index 00000000..66bf73cf --- /dev/null +++ b/src/ast.ts @@ -0,0 +1,639 @@ +// parse a single path portion + +import { MinimatchOptions, MMRegExp } from '.' +import { parseClass } from './brace-expressions' + +// classes [] are handled by the parseClass method +// for positive extglobs, we sub-parse the contents, and combine, +// with the appropriate regexp close. +// for negative extglobs, we sub-parse the contents, but then +// have to include the rest of the pattern, then the parent, etc., +// as the thing that cannot be because RegExp negative lookaheads +// are different from globs. +// +// So for example: +// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$ +// 1 2 3 4 5 6 1 2 3 46 5 6 +// +// Assembling the extglob requires not just the negated patterns themselves, +// but also anything following the negative patterns up to the boundary +// of the current pattern, plus anything following in the parent pattern. +// +// +// So, first, we parse the string into an AST of extglobs, without turning +// anything into regexps yet. +// +// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b'] +// +// Then, for all the negative extglobs, we append whatever comes after in +// each parent as their tail +// +// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b'] +// +// Lastly, we turn each of these pieces into a regexp, and join +// +// v----- .* because there's more following, +// v v otherwise, .+ because it must be +// v v *something* there. +// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$'] +// copy what follows into here--^^^^^ +// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$'] +// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$'] + +export type ExtglobType = '!' | '?' | '+' | '*' | '@' +const types = new Set(['!', '?', '+', '*', '@']) +const isExtglobType = (c: string): c is ExtglobType => + types.has(c as ExtglobType) + +// Patterns that get prepended to bind to the start of either the +// entire string, or just a single path portion, to prevent dots +// and/or traversal patterns, when needed. +// Exts don't need the ^ or / bit, because the root binds that already. +const startNoTraversal = '(?!\\.\\.?(?:$|/))' +const startNoDot = '(?!\\.)' + +// characters that indicate a start of pattern needs the "no dots" bit, +// because a dot *might* be matched. ( is not in the list, because in +// the case of a child extglob, it will handle the prevention itself. +const addPatternStart = new Set(['[', '.']) +// cases where traversal is A-OK, no dot prevention needed +const justDots = new Set(['..', '.']) +const reSpecials = new Set('().*{}+?[]^$\\!') +const regExpEscape = (s: string) => + s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') + +// any single thing other than / +const qmark = '[^/]' + +// * => any number of characters +const star = qmark + '*?' +// use + when we need to ensure that *something* matches, because the * is +// the only thing in the path portion. +const starNoEmpty = qmark + '+?' + +// remove the \ chars that we added if we end up doing a nonmagic compare +import { unescape } from './unescape' +// const deslash = (s: string) => s.replace(/\\(.)/g, '$1') + +export class AST { + type: ExtglobType | null + readonly #root: AST + + #hasMagic?: boolean + #uflag: boolean = false + #parts: (string | AST)[] = [] + readonly #parent?: AST + readonly #parentIndex: number + #negs: AST[] + #filledNegs: boolean = false + #options: MinimatchOptions + #toString?: string + // set to true if it's an extglob with no children + // (which really means one child of '') + #emptyExt: boolean = false + + constructor( + type: ExtglobType | null, + parent?: AST, + options: MinimatchOptions = {} + ) { + this.type = type + // extglobs are inherently magical + if (type) this.#hasMagic = true + this.#parent = parent + this.#root = this.#parent ? this.#parent.#root : this + this.#options = this.#root === this ? options : this.#root.#options + this.#negs = this.#root === this ? [] : this.#root.#negs + if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this) + this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0 + } + + get hasMagic(): boolean | undefined { + /* c8 ignore start */ + if (this.#hasMagic !== undefined) return this.#hasMagic + /* c8 ignore stop */ + for (const p of this.#parts) { + if (typeof p === 'string') continue + if (p.type || p.hasMagic) return (this.#hasMagic = true) + } + // note: will be undefined until we generate the regexp src and find out + return this.#hasMagic + } + + // reconstructs the pattern + toString(): string { + if (this.#toString !== undefined) return this.#toString + if (!this.type) { + return (this.#toString = this.#parts.map(p => String(p)).join('')) + } else { + return (this.#toString = + this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')') + } + } + + #fillNegs() { + /* c8 ignore start */ + if (this !== this.#root) throw new Error('should only call on root') + if (this.#filledNegs) return this + /* c8 ignore stop */ + + // call toString() once to fill this out + this.toString() + this.#filledNegs = true + let n: AST | undefined + while ((n = this.#negs.pop())) { + if (n.type !== '!') continue + // walk up the tree, appending everthing that comes AFTER parentIndex + let p: AST | undefined = n + let pp = p.#parent + while (pp) { + for ( + let i = p.#parentIndex + 1; + !pp.type && i < pp.#parts.length; + i++ + ) { + for (const part of n.#parts) { + /* c8 ignore start */ + if (typeof part === 'string') { + throw new Error('string part in extglob AST??') + } + /* c8 ignore stop */ + part.copyIn(pp.#parts[i]) + } + } + p = pp + pp = p.#parent + } + } + return this + } + + push(...parts: (string | AST)[]) { + for (const p of parts) { + if (p === '') continue + /* c8 ignore start */ + if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) { + throw new Error('invalid part: ' + p) + } + /* c8 ignore stop */ + this.#parts.push(p) + } + } + + toJSON() { + const ret: any[] = + this.type === null + ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON())) + : [this.type, ...this.#parts.map(p => (p as AST).toJSON())] + if (this.isStart() && !this.type) ret.unshift([]) + if ( + this.isEnd() && + (this === this.#root || + (this.#root.#filledNegs && this.#parent?.type === '!')) + ) { + ret.push({}) + } + return ret + } + + isStart(): boolean { + if (this.#root === this) return true + // if (this.type) return !!this.#parent?.isStart() + if (!this.#parent?.isStart()) return false + if (this.#parentIndex === 0) return true + // if everything AHEAD of this is a negation, then it's still the "start" + const p = this.#parent + for (let i = 0; i < this.#parentIndex; i++) { + const pp = p.#parts[i] + if (!(pp instanceof AST && pp.type === '!')) { + return false + } + } + return true + } + + isEnd(): boolean { + if (this.#root === this) return true + if (this.#parent?.type === '!') return true + if (!this.#parent?.isEnd()) return false + if (!this.type) return this.#parent?.isEnd() + // if not root, it'll always have a parent + /* c8 ignore start */ + const pl = this.#parent ? this.#parent.#parts.length : 0 + /* c8 ignore stop */ + return this.#parentIndex === pl - 1 + } + + copyIn(part: AST | string) { + if (typeof part === 'string') this.push(part) + else this.push(part.clone(this)) + } + + clone(parent: AST) { + const c = new AST(this.type, parent) + for (const p of this.#parts) { + c.copyIn(p) + } + return c + } + + static #parseAST( + str: string, + ast: AST, + pos: number, + opt: MinimatchOptions + ): number { + let escaping = false + let inBrace = false + let braceStart = -1 + let braceNeg = false + if (ast.type === null) { + // outside of a extglob, append until we find a start + let i = pos + let acc = '' + while (i < str.length) { + const c = str.charAt(i++) + // still accumulate escapes at this point, but we do ignore + // starts that are escaped + if (escaping || c === '\\') { + escaping = !escaping + acc += c + continue + } + + if (inBrace) { + if (i === braceStart + 1) { + if (c === '^' || c === '!') { + braceNeg = true + } + } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) { + inBrace = false + } + acc += c + continue + } else if (c === '[') { + inBrace = true + braceStart = i + braceNeg = false + acc += c + continue + } + + if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') { + ast.push(acc) + acc = '' + const ext = new AST(c, ast) + i = AST.#parseAST(str, ext, i, opt) + ast.push(ext) + continue + } + acc += c + } + ast.push(acc) + return i + } + + // some kind of extglob, pos is at the ( + // find the next | or ) + let i = pos + 1 + let part = new AST(null, ast) + const parts: AST[] = [] + let acc = '' + while (i < str.length) { + const c = str.charAt(i++) + // still accumulate escapes at this point, but we do ignore + // starts that are escaped + if (escaping || c === '\\') { + escaping = !escaping + acc += c + continue + } + + if (inBrace) { + if (i === braceStart + 1) { + if (c === '^' || c === '!') { + braceNeg = true + } + } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) { + inBrace = false + } + acc += c + continue + } else if (c === '[') { + inBrace = true + braceStart = i + braceNeg = false + acc += c + continue + } + + if (isExtglobType(c) && str.charAt(i) === '(') { + part.push(acc) + acc = '' + const ext = new AST(c, part) + part.push(ext) + i = AST.#parseAST(str, ext, i, opt) + continue + } + if (c === '|') { + part.push(acc) + acc = '' + parts.push(part) + part = new AST(null, ast) + continue + } + if (c === ')') { + if (acc === '' && ast.#parts.length === 0) { + ast.#emptyExt = true + } + part.push(acc) + acc = '' + ast.push(...parts, part) + return i + } + acc += c + } + + // unfinished extglob + // if we got here, it was a malformed extglob! not an extglob, but + // maybe something else in there. + ast.type = null + ast.#hasMagic = undefined + ast.#parts = [str.substring(pos - 1)] + return i + } + + static fromGlob(pattern: string, options: MinimatchOptions = {}) { + const ast = new AST(null, undefined, options) + AST.#parseAST(pattern, ast, 0, options) + return ast + } + + // returns the regular expression if there's magic, or the unescaped + // string if not. + toMMPattern(): MMRegExp | string { + // should only be called on root + /* c8 ignore start */ + if (this !== this.#root) return this.#root.toMMPattern() + /* c8 ignore stop */ + const glob = this.toString() + const [re, body, hasMagic, uflag] = this.toRegExpSource() + // if we're in nocase mode, and not nocaseMagicOnly, then we do + // still need a regular expression if we have to case-insensitively + // match capital/lowercase characters. + const anyMagic = + hasMagic || + this.#hasMagic || + (this.#options.nocase && + !this.#options.nocaseMagicOnly && + glob.toUpperCase() !== glob.toLowerCase()) + if (!anyMagic) { + return body + } + + const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '') + return Object.assign(new RegExp(`^${re}$`, flags), { + _src: re, + _glob: glob, + }) + } + + // returns the string match, the regexp source, whether there's magic + // in the regexp (so a regular expression is required) and whether or + // not the uflag is needed for the regular expression (for posix classes) + // TODO: instead of injecting the start/end at this point, just return + // the BODY of the regexp, along with the start/end portions suitable + // for binding the start/end in either a joined full-path makeRe context + // (where we bind to (^|/), or a standalone matchPart context (where + // we bind to ^, and not /). Otherwise slashes get duped! + // + // In part-matching mode, the start is: + // - if not isStart: nothing + // - if traversal possible, but not allowed: ^(?!\.\.?$) + // - if dots allowed or not possible: ^ + // - if dots possible and not allowed: ^(?!\.) + // end is: + // - if not isEnd(): nothing + // - else: $ + // + // In full-path matching mode, we put the slash at the START of the + // pattern, so start is: + // - if first pattern: same as part-matching mode + // - if not isStart(): nothing + // - if traversal possible, but not allowed: /(?!\.\.?(?:$|/)) + // - if dots allowed or not possible: / + // - if dots possible and not allowed: /(?!\.) + // end is: + // - if last pattern, same as part-matching mode + // - else nothing + // + // Always put the (?:$|/) on negated tails, though, because that has to be + // there to bind the end of the negated pattern portion, and it's easier to + // just stick it in now rather than try to inject it later in the middle of + // the pattern. + // + // We can just always return the same end, and leave it up to the caller + // to know whether it's going to be used joined or in parts. + // And, if the start is adjusted slightly, can do the same there: + // - if not isStart: nothing + // - if traversal possible, but not allowed: (?:/|^)(?!\.\.?$) + // - if dots allowed or not possible: (?:/|^) + // - if dots possible and not allowed: (?:/|^)(?!\.) + // + // But it's better to have a simpler binding without a conditional, for + // performance, so probably better to return both start options. + // + // Then the caller just ignores the end if it's not the first pattern, + // and the start always gets applied. + // + // But that's always going to be $ if it's the ending pattern, or nothing, + // so the caller can just attach $ at the end of the pattern when building. + // + // So the todo is: + // - better detect what kind of start is needed + // - return both flavors of starting pattern + // - attach $ at the end of the pattern when creating the actual RegExp + // + // Ah, but wait, no, that all only applies to the root when the first pattern + // is not an extglob. If the first pattern IS an extglob, then we need all + // that dot prevention biz to live in the extglob portions, because eg + // +(*|.x*) can match .xy but not .yx. + // + // So, return the two flavors if it's #root and the first child is not an + // AST, otherwise leave it to the child AST to handle it, and there, + // use the (?:^|/) style of start binding. + // + // Even simplified further: + // - Since the start for a join is eg /(?!\.) and the start for a part + // is ^(?!\.), we can just prepend (?!\.) to the pattern (either root + // or start or whatever) and prepend ^ or / at the Regexp construction. + toRegExpSource(): [ + re: string, + body: string, + hasMagic: boolean, + uflag: boolean + ] { + if (this.#root === this) this.#fillNegs() + if (!this.type) { + const noEmpty = this.isStart() && this.isEnd() + const src = this.#parts + .map(p => { + const [re, _, hasMagic, uflag] = + typeof p === 'string' + ? AST.#parseGlob(p, this.#hasMagic, noEmpty) + : p.toRegExpSource() + this.#hasMagic = this.#hasMagic || hasMagic + this.#uflag = this.#uflag || uflag + return re + }) + .join('') + + let start = '' + if (this.isStart()) { + if (typeof this.#parts[0] === 'string') { + // this is the string that will match the start of the pattern, + // so we need to protect against dots and such. + + // '.' and '..' cannot match unless the pattern is that exactly, + // even if it starts with . or dot:true is set. + const dotTravAllowed = + this.#parts.length === 1 && justDots.has(this.#parts[0]) + if (!dotTravAllowed) { + const aps = addPatternStart + // check if we have a possibility of matching . or .., + // and prevent that. + const needNoTrav = + // dots are allowed, and the pattern starts with [ or . + (this.#options.dot && aps.has(src.charAt(0))) || + // the pattern starts with \., and then [ or . + (src.startsWith('\\.') && aps.has(src.charAt(2))) || + // the pattern starts with \.\., and then [ or . + (src.startsWith('\\.\\.') && aps.has(src.charAt(4))) + // no need to prevent dots if it can't match a dot, or if a + // sub-pattern will be preventing it anyway. + const needNoDot = !this.#options.dot && aps.has(src.charAt(0)) + + start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '' + } + } + } + + // append the "end of path portion" pattern to negation tails + let end = '' + if ( + this.isEnd() && + this.#root.#filledNegs && + this.#parent?.type === '!' + ) { + end = '(?:$|\\/)' + } + const final = start + src + end + return [ + final, + unescape(src), + (this.#hasMagic = !!this.#hasMagic), + this.#uflag, + ] + } + + // some kind of extglob + const start = this.type === '!' ? '(?:(?!(?:' : '(?:' + const body = this.#parts + .map(p => { + // extglob ASTs should only contain parent ASTs + /* c8 ignore start */ + if (typeof p === 'string') { + throw new Error('string type in extglob ast??') + } + /* c8 ignore stop */ + // can ignore hasMagic, because extglobs are already always magic + const [re, _, _hasMagic, uflag] = p.toRegExpSource() + this.#uflag = this.#uflag || uflag + return re + }) + .filter(p => !(this.isStart() && this.isEnd()) || !!p) + .join('|') + if (this.isStart() && this.isEnd() && !body && this.type !== '!') { + // invalid extglob, has to at least be *something* present, if it's + // the entire path portion. + const s = this.toString() + this.#parts = [s] + this.type = null + this.#hasMagic = undefined + return [s, unescape(this.toString()), false, false] + } + // an empty !() is exactly equivalent to a starNoEmpty + let final = '' + if (this.type === '!' && this.#emptyExt) { + final = + (this.isStart() && !this.#options.dot ? startNoDot : '') + starNoEmpty + } else { + const close = + this.type === '!' + ? // !() must match something,but !(x) can match '' + '))' + + (this.isStart() && !this.#options.dot ? startNoDot : '') + + star + + ')' + : this.type === '@' + ? ')' + : `)${this.type}` + final = start + body + close + } + return [ + final, + unescape(body), + (this.#hasMagic = !!this.#hasMagic), + this.#uflag, + ] + } + + static #parseGlob( + glob: string, + hasMagic: boolean | undefined, + noEmpty: boolean = false + ): [re: string, body: string, hasMagic: boolean, uflag: boolean] { + let escaping = false + let re = '' + let uflag = false + for (let i = 0; i < glob.length; i++) { + const c = glob.charAt(i) + if (escaping) { + escaping = false + re += (reSpecials.has(c) ? '\\' : '') + c + continue + } + if (c === '\\') { + if (i === glob.length - 1) { + re += '\\\\' + } else { + escaping = true + } + continue + } + if (c === '[') { + const [src, needUflag, consumed, magic] = parseClass(glob, i) + if (consumed) { + re += src + uflag = uflag || needUflag + i += consumed - 1 + hasMagic = hasMagic || magic + continue + } + } + if (c === '*') { + if (noEmpty && glob === '*') re += starNoEmpty + else re += star + hasMagic = true + continue + } + if (c === '?') { + re += qmark + hasMagic = true + continue + } + re += regExpEscape(c) + } + return [re, unescape(glob), !!hasMagic, uflag] + } +} diff --git a/src/index.ts b/src/index.ts index 035be423..1a763621 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,6 @@ import expand from 'brace-expansion' -import { parseClass } from './brace-expressions.js' +import { assertValidPattern } from './assert-valid-pattern.js' +import { AST, ExtglobType } from './ast.js' import { escape } from './escape.js' import { unescape } from './unescape.js' @@ -129,15 +130,6 @@ minimatch.sep = sep export const GLOBSTAR = Symbol('globstar **') minimatch.GLOBSTAR = GLOBSTAR -const plTypes = { - '!': { open: '(?:(?!(?:', close: '))[^/]*?)' }, - '?': { open: '(?:', close: ')?' }, - '+': { open: '(?:', close: ')+' }, - '*': { open: '(?:', close: ')*' }, - '@': { open: '(?:', close: ')' }, -} -type StateChar = '!' | '?' | '+' | '*' | '@' - // any single thing other than / // don't need to escape / when using new RegExp() const qmark = '[^/]' @@ -154,19 +146,6 @@ const twoStarDot = '(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?' // followed by anything, any number of times. const twoStarNoDot = '(?:(?!(?:\\/|^)\\.).)*?' -// "abc" -> { a:true, b:true, c:true } -const charSet = (s: string) => - s.split('').reduce((set: { [k: string]: boolean }, c) => { - set[c] = true - return set - }, {}) - -// characters that need to be escaped in RegExp. -const reSpecials = charSet('().*{}+?[]^$\\!') - -// characters that indicate we have to add the pattern start -const addPatternStartSet = charSet('[.(') - export const filter = (pattern: string, options: MinimatchOptions = {}) => (p: string) => @@ -196,6 +175,22 @@ export const defaults = (def: MinimatchOptions): typeof minimatch => { } }, + AST: class AST extends orig.AST { + /* c8 ignore start */ + constructor( + type: ExtglobType | null, + parent?: AST, + options: MinimatchOptions = {} + ) { + super(type, parent, ext(def, options)) + } + /* c8 ignore stop */ + + static fromGlob(pattern: string, options: MinimatchOptions = {}) { + return orig.AST.fromGlob(pattern, ext(def, options)) + } + }, + unescape: ( s: string, options: Pick = {} @@ -253,19 +248,6 @@ export const braceExpand = ( } minimatch.braceExpand = braceExpand -const MAX_PATTERN_LENGTH = 1024 * 64 -const assertValidPattern: (pattern: any) => void = ( - pattern: any -): asserts pattern is string => { - if (typeof pattern !== 'string') { - throw new TypeError('invalid pattern') - } - - if (pattern.length > MAX_PATTERN_LENGTH) { - throw new TypeError('pattern is too long') - } -} - // parse a component of the expanded set. // At this point, no pattern may contain "/" in it // so we're going to return a 2d array, where each entry is the full @@ -297,30 +279,17 @@ export const match = ( minimatch.match = match // replace stuff like \* with * -const globUnescape = (s: string) => s.replace(/\\(.)/g, '$1') const globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/ const regExpEscape = (s: string) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') -interface PatternListEntry { - type: string - start: number - reStart: number - open: string - close: string -} -interface NegativePatternListEntry extends PatternListEntry { - reEnd: number -} - export type MMRegExp = RegExp & { _src?: string _glob?: string } -type SubparseReturn = [string, boolean] -type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR -type ParseReturn = ParseReturnFiltered | false +export type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR +export type ParseReturn = ParseReturnFiltered | false export class Minimatch { options: MinimatchOptions @@ -377,7 +346,7 @@ export class Minimatch { this.make() } - hasMagic():boolean { + hasMagic(): boolean { if (this.options.magicalBraces && this.set.length > 1) { return true } @@ -1000,7 +969,7 @@ export class Minimatch { return braceExpand(this.pattern, this.options) } - parse(pattern: string): ParseReturn | SubparseReturn { + parse(pattern: string): ParseReturn { assertValidPattern(pattern) const options = this.options @@ -1041,331 +1010,8 @@ export class Minimatch { fastTest = dotStarTest } - let re = '' - let hasMagic = false - let escaping = false - // ? => one single character - const patternListStack: PatternListEntry[] = [] - const negativeLists: NegativePatternListEntry[] = [] - let stateChar: StateChar | false = false - let uflag = false - let pl: PatternListEntry | undefined - // . and .. never match anything that doesn't start with ., - // even when options.dot is set. However, if the pattern - // starts with ., then traversal patterns can match. - let dotTravAllowed = pattern.charAt(0) === '.' - let dotFileAllowed = options.dot || dotTravAllowed - const patternStart = () => - dotTravAllowed - ? '' - : dotFileAllowed - ? '(?!(?:^|\\/)\\.{1,2}(?:$|\\/))' - : '(?!\\.)' - const subPatternStart = (p: string) => - p.charAt(0) === '.' - ? '' - : options.dot - ? '(?!(?:^|\\/)\\.{1,2}(?:$|\\/))' - : '(?!\\.)' - - const clearStateChar = () => { - if (stateChar) { - // we had some state-tracking character - // that wasn't consumed by this pass. - switch (stateChar) { - case '*': - re += star - hasMagic = true - break - case '?': - re += qmark - hasMagic = true - break - default: - re += '\\' + stateChar - break - } - this.debug('clearStateChar %j %j', stateChar, re) - stateChar = false - } - } - - for ( - let i = 0, c: string; - i < pattern.length && (c = pattern.charAt(i)); - i++ - ) { - this.debug('%s\t%s %s %j', pattern, i, re, c) - - // skip over any that are escaped. - if (escaping) { - // completely not allowed, even escaped. - // should be impossible. - /* c8 ignore start */ - if (c === '/') { - return false - } - /* c8 ignore stop */ - - if (reSpecials[c]) { - re += '\\' - } - re += c - escaping = false - continue - } - - switch (c) { - // Should already be path-split by now. - /* c8 ignore start */ - case '/': { - return false - } - /* c8 ignore stop */ - - case '\\': - clearStateChar() - escaping = true - continue - - // the various stateChar values - // for the "extglob" stuff. - case '?': - case '*': - case '+': - case '@': - case '!': - this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) - - // if we already have a stateChar, then it means - // that there was something like ** or +? in there. - // Handle the stateChar, then proceed with this one. - this.debug('call clearStateChar %j', stateChar) - clearStateChar() - stateChar = c - // if extglob is disabled, then +(asdf|foo) isn't a thing. - // just clear the statechar *now*, rather than even diving into - // the patternList stuff. - if (options.noext) clearStateChar() - continue - - case '(': { - if (!stateChar) { - re += '\\(' - continue - } - - const plEntry: PatternListEntry = { - type: stateChar, - start: i - 1, - reStart: re.length, - open: plTypes[stateChar].open, - close: plTypes[stateChar].close, - } - this.debug(this.pattern, '\t', plEntry) - patternListStack.push(plEntry) - // negation is (?:(?!(?:js)(?:))[^/]*) - re += plEntry.open - // next entry starts with a dot maybe? - if (plEntry.start === 0 && plEntry.type !== '!') { - dotTravAllowed = true - re += subPatternStart(pattern.slice(i + 1)) - } - this.debug('plType %j %j', stateChar, re) - stateChar = false - continue - } - - case ')': { - const plEntry = patternListStack[patternListStack.length - 1] - if (!plEntry) { - re += '\\)' - continue - } - patternListStack.pop() - - // closing an extglob - clearStateChar() - hasMagic = true - pl = plEntry - // negation is (?:(?!js)[^/]*) - // The others are (?:) - re += pl.close - if (pl.type === '!') { - negativeLists.push(Object.assign(pl, { reEnd: re.length })) - } - continue - } - - case '|': { - const plEntry = patternListStack[patternListStack.length - 1] - if (!plEntry) { - re += '\\|' - continue - } - - clearStateChar() - re += '|' - // next subpattern can start with a dot? - if (plEntry.start === 0 && plEntry.type !== '!') { - dotTravAllowed = true - re += subPatternStart(pattern.slice(i + 1)) - } - continue - } - - // these are mostly the same in regexp and glob - case '[': - // swallow any state-tracking char before the [ - clearStateChar() - const [src, needUflag, consumed, magic] = parseClass(pattern, i) - if (consumed) { - re += src - uflag = uflag || needUflag - i += consumed - 1 - hasMagic = hasMagic || magic - } else { - re += '\\[' - } - continue - - case ']': - re += '\\' + c - continue - - default: - // swallow any state char that wasn't consumed - clearStateChar() - - re += regExpEscape(c) - break - } // switch - } // for - - // handle the case where we had a +( thing at the *end* - // of the pattern. - // each pattern list stack adds 3 chars, and we need to go through - // and escape any | chars that were passed through as-is for the regexp. - // Go through and escape them, taking care not to double-escape any - // | chars that were already escaped. - for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { - let tail: string - tail = re.slice(pl.reStart + pl.open.length) - this.debug(this.pattern, 'setting tail', re, pl) - // maybe some even number of \, then maybe 1 \, followed by a | - tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, (_, $1, $2) => { - if (!$2) { - // the | isn't already escaped, so escape it. - $2 = '\\' - // should already be done - /* c8 ignore start */ - } - /* c8 ignore stop */ - - // need to escape all those slashes *again*, without escaping the - // one that we need for escaping the | character. As it works out, - // escaping an even number of slashes can be done by simply repeating - // it exactly after itself. That's why this trick works. - // - // I am sorry that you have to see this. - return $1 + $1 + $2 + '|' - }) - - this.debug('tail=%j\n %s', tail, tail, pl, re) - const t = - pl.type === '*' ? star : pl.type === '?' ? qmark : '\\' + pl.type - - hasMagic = true - re = re.slice(0, pl.reStart) + t + '\\(' + tail - } - - // handle trailing things that only matter at the very end. - clearStateChar() - if (escaping) { - // trailing \\ - re += '\\\\' - } - - // only need to apply the nodot start if the re starts with - // something that could conceivably capture a dot - const addPatternStart = addPatternStartSet[re.charAt(0)] - - // Hack to work around lack of negative lookbehind in JS - // A pattern like: *.!(x).!(y|z) needs to ensure that a name - // like 'a.xyz.yz' doesn't match. So, the first negative - // lookahead, has to look ALL the way ahead, to the end of - // the pattern. - for (let n = negativeLists.length - 1; n > -1; n--) { - const nl = negativeLists[n] - - const nlBefore = re.slice(0, nl.reStart) - const nlFirst = re.slice(nl.reStart, nl.reEnd - 8) - let nlAfter = re.slice(nl.reEnd) - const nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + nlAfter - - // Handle nested stuff like *(*.js|!(*.json)), where open parens - // mean that we should *not* include the ) in the bit that is considered - // "after" the negated section. - const closeParensBefore = nlBefore.split(')').length - const openParensBefore = nlBefore.split('(').length - closeParensBefore - let cleanAfter = nlAfter - for (let i = 0; i < openParensBefore; i++) { - cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') - } - nlAfter = cleanAfter - - const dollar = nlAfter === '' ? '(?:$|\\/)' : '' - - re = nlBefore + nlFirst + nlAfter + dollar + nlLast - } - - // if the re is not "" at this point, then we need to make sure - // it doesn't match against an empty path part. - // Otherwise a/* will match a/, which it should not. - if (re !== '' && hasMagic) { - re = '(?=.)' + re - } - - if (addPatternStart) { - re = patternStart() + re - } - - // if it's nocase, and the lcase/uppercase don't match, it's magic - if (options.nocase && !hasMagic && !options.nocaseMagicOnly) { - hasMagic = pattern.toUpperCase() !== pattern.toLowerCase() - } - - // skip the regexp for non-magical patterns - // unescape anything in it, though, so that it'll be - // an exact match against a file etc. - if (!hasMagic) { - return globUnescape(re) - } - - const flags = (options.nocase ? 'i' : '') + (uflag ? 'u' : '') - try { - const ext = fastTest - ? { - _glob: pattern, - _src: re, - test: fastTest, - } - : { - _glob: pattern, - _src: re, - } - return Object.assign(new RegExp('^' + re + '$', flags), ext) - /* c8 ignore start */ - } catch (er) { - // should be impossible - // If it was an invalid regular expression, then it can't match - // anything. This trick looks for a character after the end of - // the string, which is of course impossible, except in multi-line - // mode, but it's not a /m regex. - this.debug('invalid regexp', er) - return new RegExp('$.') - } - /* c8 ignore stop */ + const re = AST.fromGlob(pattern, this.options).toMMPattern() + return fastTest ? Object.assign(re, { test: fastTest }) : re } makeRe() { @@ -1390,7 +1036,7 @@ export class Minimatch { : options.dot ? twoStarDot : twoStarNoDot - const flags = options.nocase ? 'i' : '' + const flags = new Set(options.nocase ? ['i'] : []) // regexpify non-globstar patterns // if ** is only item, then we just do one twoStar @@ -1400,13 +1046,16 @@ export class Minimatch { // then filter out GLOBSTAR symbols let re = set .map(pattern => { - const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => - typeof p === 'string' + const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => { + if (p instanceof RegExp) { + for (const f of p.flags.split('')) flags.add(f) + } + return typeof p === 'string' ? regExpEscape(p) : p === GLOBSTAR ? GLOBSTAR : p._src - ) as (string | typeof GLOBSTAR)[] + }) as (string | typeof GLOBSTAR)[] pp.forEach((p, i) => { const next = pp[i + 1] const prev = pp[i - 1] @@ -1430,15 +1079,18 @@ export class Minimatch { }) .join('|') + // need to wrap in parens if we had more than one thing with |, + // otherwise only the first will be anchored to ^ and the last to $ + const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''] // must match entire pattern // ending in a * or ** will make it less strict. - re = '^(?:' + re + ')$' + re = '^' + open + re + close + '$' // can match anything, as long as it's not this. - if (this.negate) re = '^(?!' + re + ').*$' + if (this.negate) re = '^(?!' + re + ').+$' try { - this.regexp = new RegExp(re, flags) + this.regexp = new RegExp(re, [...flags].join('')) /* c8 ignore start */ } catch (ex) { // should be impossible @@ -1533,9 +1185,11 @@ export class Minimatch { } } /* c8 ignore start */ +export { AST } from './ast.js' export { escape } from './escape.js' export { unescape } from './unescape.js' /* c8 ignore stop */ +minimatch.AST = AST minimatch.Minimatch = Minimatch minimatch.escape = escape minimatch.unescape = unescape diff --git a/tap-snapshots/test/basic.js.test.cjs b/tap-snapshots/test/basic.js.test.cjs index 2f826119..c5845a98 100644 --- a/tap-snapshots/test/basic.js.test.cjs +++ b/tap-snapshots/test/basic.js.test.cjs @@ -5,28 +5,3041 @@ * Make sure to inspect the output below. Do not ignore changes! */ 'use strict' +exports[`test/basic.js TAP basic tests > hasMagic known 1`] = ` +false +` + +exports[`test/basic.js TAP basic tests > hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > parsed 1`] = ` +Array [ + Array [], + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > !!a* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > !!a* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > !!a* parsed 1`] = ` +Array [ + Array [], + "!!a*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > !()y hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > !()y hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > !()y hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > !()y hasMagic pre-generate 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > !()y parsed 1`] = ` +Array [ + Array [], + Array [ + "!", + Array [ + Array [], + "y", + Object {}, + ], + ], + "y", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > !()y parsed 2`] = ` +Array [ + Array [], + Array [ + "!", + Array [ + Array [], + "y", + Object {}, + ], + ], + "y", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > !(.a|js)@(.*) hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > !(.a|js)@(.*) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > !(.a|js)@(.*) parsed 1`] = ` +Array [ + Array [], + Array [ + "!", + Array [ + Array [], + ".a", + Array [ + "@", + Array [ + ".*", + ], + ], + Object {}, + ], + Array [ + Array [], + "js", + Array [ + "@", + Array [ + ".*", + ], + ], + Object {}, + ], + ], + Array [ + "@", + Array [ + Array [], + ".*", + ], + ], + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > !\\!a* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > !\\!a* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > !\\!a* parsed 1`] = ` +Array [ + Array [], + "!\\\\!a*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > !a* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > !a* hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > !a* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > !a* hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > !a* parsed 1`] = ` +Array [ + Array [], + "!a*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > !a* parsed 2`] = ` +Array [ + Array [], + "!a*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > # ignore this hasMagic known 1`] = ` +false +` + +exports[`test/basic.js TAP basic tests > # ignore this hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > # ignore this parsed 1`] = ` +Array [ + Array [], + "# ignore this", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > #* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > #* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > #* parsed 1`] = ` +Array [ + Array [], + "#*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > * hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > * hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > * hasMagic known 3`] = ` +true +` + +exports[`test/basic.js TAP basic tests > * hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > * hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > * hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > * parsed 1`] = ` +Array [ + Array [], + "*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > * parsed 2`] = ` +Array [ + Array [], + "*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > * parsed 3`] = ` +Array [ + Array [], + "*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *(a/b) hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *(a/b) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *(a/b) parsed 1`] = ` +Array [ + Array [], + Array [ + "*", + Array [ + Array [], + "a/b", + ], + ], + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *(a|{b),c)} hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *(a|{b),c)} hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *(a|{b),c)} parsed 1`] = ` +Array [ + Array [], + Array [ + "*", + Array [ + Array [], + "a", + ], + Array [ + Array [], + "{b", + ], + ], + ",c)}", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *(a|{b,c}) hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *(a|{b,c}) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *(a|{b,c}) parsed 1`] = ` +Array [ + Array [], + Array [ + "*", + Array [ + Array [], + "a", + ], + Array [ + Array [], + "{b,c}", + ], + ], + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *(a|{b|c,c}) hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *(a|{b|c,c}) hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *(a|{b|c,c}) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *(a|{b|c,c}) hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > *(a|{b|c,c}) parsed 1`] = ` +Array [ + Array [], + Array [ + "*", + Array [ + Array [], + "a", + ], + Array [ + Array [], + "{b", + ], + Array [ + Array [], + "c,c}", + ], + ], + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *(a|{b|c,c}) parsed 2`] = ` +Array [ + Array [], + "*(a|{b|c,c})", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ** hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ** hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ** hasMagic known 3`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ** hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ** hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ** parsed 1`] = ` +Array [ + Array [], + "**", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ** parsed 2`] = ` +Array [ + Array [], + "**", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ** parsed 3`] = ` +Array [ + Array [], + "**", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *******? hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *******? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > *******? parsed 1`] = ` +Array [ + Array [], + "*******?", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *******c hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *******c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > *******c parsed 1`] = ` +Array [ + Array [], + "*******c", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *****?? hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *****?? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > *****?? parsed 1`] = ` +Array [ + Array [], + "*****??", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > **/**/** hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > **/**/** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > **/**/** parsed 1`] = ` +Array [ + Array [], + "**/**/**", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > **/.x/** hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > **/.x/** hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > **/.x/** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > **/.x/** hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > **/.x/** parsed 1`] = ` +Array [ + Array [], + "**/.x/**", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > **/.x/** parsed 2`] = ` +Array [ + Array [], + "**/.x/**", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *.!(js) hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *.!(js) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *.!(js) parsed 1`] = ` +Array [ + Array [], + "*.", + Array [ + "!", + Array [ + "js", + Object {}, + ], + ], + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *.* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *.* hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *.* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > *.* hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > *.* parsed 1`] = ` +Array [ + Array [], + "*.*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *.* parsed 2`] = ` +Array [ + Array [], + "*.*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *.Y hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *.Y hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > *.Y parsed 1`] = ` +Array [ + Array [], + "*.Y", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *.Z hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *.Z hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > *.Z parsed 1`] = ` +Array [ + Array [], + "*.Z", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *.\\* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *.\\* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > *.\\* parsed 1`] = ` +Array [ + Array [], + "*.\\\\*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *.js hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *.js hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *.js hasMagic known 3`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *.js hasMagic known 4`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *.js hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > *.js hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > *.js hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > *.js hasMagic pre-generate 4`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > *.js parsed 1`] = ` +Array [ + Array [], + "*.js", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *.js parsed 2`] = ` +Array [ + Array [], + "*.js", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *.js parsed 3`] = ` +Array [ + Array [], + "*.js", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *.js parsed 4`] = ` +Array [ + Array [], + "*.js", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *.y hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *.y hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > *.y parsed 1`] = ` +Array [ + Array [], + "*.y", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *.z hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *.z hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > *.z parsed 1`] = ` +Array [ + Array [], + "*.z", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > */man*/bash.* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > */man*/bash.* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > */man*/bash.* parsed 1`] = ` +Array [ + Array [], + "*/man*/bash.*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *\\!* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *\\!* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > *\\!* parsed 1`] = ` +Array [ + Array [], + "*\\\\!*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *\\\\!* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *\\\\!* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > *\\\\!* parsed 1`] = ` +Array [ + Array [], + "*\\\\\\\\!*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *c*?** hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *c*?** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > *c*?** parsed 1`] = ` +Array [ + Array [], + "*c*?**", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > *js hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > *js hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > *js parsed 1`] = ` +Array [ + Array [], + "*js", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > +() hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > +() hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > +() parsed 1`] = ` +Array [ + Array [], + Array [ + Array [], + "+()", + ], + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > +()*(x|a) hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > +()*(x|a) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > +()*(x|a) parsed 1`] = ` +Array [ + Array [], + Array [ + "+", + Array [ + Array [], + ], + ], + Array [ + "*", + Array [ + "x", + ], + Array [ + "a", + ], + ], + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > +(a)!(b)+(c) hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > +(a)!(b)+(c) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > +(a)!(b)+(c) parsed 1`] = ` +Array [ + Array [], + Array [ + "+", + Array [ + Array [], + "a", + ], + ], + Array [ + "!", + Array [ + "b", + Array [ + "+", + Array [ + "c", + ], + ], + Object {}, + ], + ], + Array [ + "+", + Array [ + "c", + ], + ], + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > +(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > +(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > +(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g parsed 1`] = ` +Array [ + Array [], + Array [ + Array [], + "+(a|*\\\\|c\\\\\\\\|d\\\\\\\\\\\\|e\\\\\\\\\\\\\\\\|f\\\\\\\\\\\\\\\\\\\\|g", + ], + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > +(x|a[^)]y) hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > +(x|a[^)]y) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > +(x|a[^)]y) parsed 1`] = ` +Array [ + Array [], + Array [ + "+", + Array [ + Array [], + "x", + ], + Array [ + Array [], + "a[^)]y", + ], + ], + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > .* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > .* hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > .* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > .* hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > .* parsed 1`] = ` +Array [ + Array [], + ".*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > .* parsed 2`] = ` +Array [ + Array [], + ".*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > .x/**/* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > .x/**/* hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > .x/**/* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > .x/**/* hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > .x/**/* parsed 1`] = ` +Array [ + Array [], + ".x/**/*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > .x/**/* parsed 2`] = ` +Array [ + Array [], + ".x/**/*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > .x/**/**/* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > .x/**/**/* hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > .x/**/**/* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > .x/**/**/* hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > .x/**/**/* parsed 1`] = ` +Array [ + Array [], + ".x/**/**/*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > .x/**/**/* parsed 2`] = ` +Array [ + Array [], + ".x/**/**/*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > .x/**/*/** hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > .x/**/*/** hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > .x/**/*/** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > .x/**/*/** hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > .x/**/*/** parsed 1`] = ` +Array [ + Array [], + ".x/**/*/**", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > .x/**/*/** parsed 2`] = ` +Array [ + Array [], + ".x/**/*/**", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > .x/*/** hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > .x/*/** hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > .x/*/** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > .x/*/** hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > .x/*/** parsed 1`] = ` +Array [ + Array [], + ".x/*/**", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > .x/*/** parsed 2`] = ` +Array [ + Array [], + ".x/*/**", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > .x/*/**/** hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > .x/*/**/** hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > .x/*/**/** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > .x/*/**/** hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > .x/*/**/** parsed 1`] = ` +Array [ + Array [], + ".x/*/**/**", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > .x/*/**/** parsed 2`] = ` +Array [ + Array [], + ".x/*/**/**", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > /^root:/{s/^[^:]*:[^:]*:([^:]*).*$// hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > /^root:/{s/^[^:]*:[^:]*:([^:]*).*$// hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > /^root:/{s/^[^:]*:[^:]*:([^:]*).*$// parsed 1`] = ` +Array [ + Array [], + "/^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\u0001/", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > /^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\1/ hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > /^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\1/ hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > /^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\1/ parsed 1`] = ` +Array [ + Array [], + "/^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\\\1/", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ? hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ? parsed 1`] = ` +Array [ + Array [], + "?", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ?(x-!(y)|z) hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?(x-!(y)|z) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?(x-!(y)|z) parsed 1`] = ` +Array [ + Array [], + Array [ + "?", + Array [ + Array [], + "x-", + Array [ + "!", + Array [ + "y", + Object {}, + ], + ], + ], + Array [ + Array [], + "z", + ], + ], + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ?(x-!(y)|z)b hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?(x-!(y)|z)b hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?(x-!(y)|z)b parsed 1`] = ` +Array [ + Array [], + Array [ + "?", + Array [ + Array [], + "x-", + Array [ + "!", + Array [ + "y", + "b", + Object {}, + ], + ], + ], + Array [ + Array [], + "z", + ], + ], + "b", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ?************c****?**** hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?************c****?**** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ?************c****?**** parsed 1`] = ` +Array [ + Array [], + "?************c****?****", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ?*****?? hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?*****?? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ?*****?? parsed 1`] = ` +Array [ + Array [], + "?*****??", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ?*****?c hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?*****?c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ?*****?c parsed 1`] = ` +Array [ + Array [], + "?*****?c", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ?***?**** hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?***?**** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ?***?**** parsed 1`] = ` +Array [ + Array [], + "?***?****", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ?***?****? hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?***?****? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ?***?****? parsed 1`] = ` +Array [ + Array [], + "?***?****?", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ?***?****c hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?***?****c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ?***?****c parsed 1`] = ` +Array [ + Array [], + "?***?****c", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ?.js hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?.js hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?.js hasMagic known 3`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?.js hasMagic known 4`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?.js hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ?.js hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ?.js hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ?.js hasMagic pre-generate 4`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ?.js parsed 1`] = ` +Array [ + Array [], + "?.js", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ?.js parsed 2`] = ` +Array [ + Array [], + "?.js", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ?.js parsed 3`] = ` +Array [ + Array [], + "?.js", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ?.js parsed 4`] = ` +Array [ + Array [], + "?.js", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ?? hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?? hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?? hasMagic known 3`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?? hasMagic known 4`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ?? hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ?? hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ?? hasMagic pre-generate 4`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ?? parsed 1`] = ` +Array [ + Array [], + "??", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ?? parsed 2`] = ` +Array [ + Array [], + "??", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ?? parsed 3`] = ` +Array [ + Array [], + "??", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ?? parsed 4`] = ` +Array [ + Array [], + "??", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ??**********?****? hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ??**********?****? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ??**********?****? parsed 1`] = ` +Array [ + Array [], + "??**********?****?", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ??**********?****c hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ??**********?****c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ??**********?****c parsed 1`] = ` +Array [ + Array [], + "??**********?****c", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ??? hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ??? hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ??? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ??? hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ??? parsed 1`] = ` +Array [ + Array [], + "???", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ??? parsed 2`] = ` +Array [ + Array [], + "???", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ?js hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?js hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?js hasMagic known 3`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ?js hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ?js hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ?js hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ?js parsed 1`] = ` +Array [ + Array [], + "?js", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ?js parsed 2`] = ` +Array [ + Array [], + "?js", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ?js parsed 3`] = ` +Array [ + Array [], + "?js", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > @(*|.*) hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > @(*|.*) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > @(*|.*) parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + "*", + ], + Array [ + Array [], + ".*", + ], + ], + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > @(*|a) hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > @(*|a) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > @(*|a) parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + "*", + ], + Array [ + Array [], + "a", + ], + ], + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > @(.*) hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > @(.*) hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > @(.*) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > @(.*) hasMagic pre-generate 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > @(.*) parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + ".*", + ], + ], + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > @(.*) parsed 2`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + ".*", + ], + ], + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > @(.*|*) hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > @(.*|*) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > @(.*|*) parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + ".*", + ], + Array [ + Array [], + "*", + ], + ], + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > @(.*|js) hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > @(.*|js) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > @(.*|js) parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + ".*", + ], + Array [ + Array [], + "js", + ], + ], + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > @(a|a[(])b hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > @(a|a[(])b hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > @(a|a[(])b parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + "a", + ], + Array [ + Array [], + "a[(]", + ], + ], + "b", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > @(a|a[)])b hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > @(a|a[)])b hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > @(a|a[)])b parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + "a", + ], + Array [ + Array [], + "a[)]", + ], + ], + "b", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > @(js|.*) hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > @(js|.*) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > @(js|.*) parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + "js", + ], + Array [ + Array [], + ".*", + ], + ], + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > X* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > X* hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > X* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > X* hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > X* parsed 1`] = ` +Array [ + Array [], + "X*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > X* parsed 2`] = ` +Array [ + Array [], + "X*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > XYZ hasMagic known 1`] = ` +false +` + +exports[`test/basic.js TAP basic tests > XYZ hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > XYZ parsed 1`] = ` +Array [ + Array [], + "XYZ", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [ hasMagic known 1`] = ` +false +` + +exports[`test/basic.js TAP basic tests > [ hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [ parsed 1`] = ` +Array [ + Array [], + "[", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [!a* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [!a* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [!a* parsed 1`] = ` +Array [ + Array [], + "[!a*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [#a* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [#a* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [#a* parsed 1`] = ` +Array [ + Array [], + "[#a*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [* parsed 1`] = ` +Array [ + Array [], + "[*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [-abc] hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [-abc] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [-abc] parsed 1`] = ` +Array [ + Array [], + "[-abc]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]] hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]] parsed 1`] = ` +Array [ + Array [], + "[[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]] hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]] parsed 1`] = ` +Array [ + Array [], + "[[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]] hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]] parsed 1`] = ` +Array [ + Array [], + "[[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [[:graph:][:digit:]]f* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [[:graph:][:digit:]]f* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [[:graph:][:digit:]]f* parsed 1`] = ` +Array [ + Array [], + "[[:graph:][:digit:]]f*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [[:graph:]]f* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [[:graph:]]f* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [[:graph:]]f* parsed 1`] = ` +Array [ + Array [], + "[[:graph:]]f*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [[:xdigit:]][[:xdigit:]]??? hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [[:xdigit:]][[:xdigit:]]??? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [[:xdigit:]][[:xdigit:]]??? parsed 1`] = ` +Array [ + Array [], + "[[:xdigit:]][[:xdigit:]]???", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]] hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]] parsed 1`] = ` +Array [ + Array [], + "[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [[] hasMagic known 1`] = ` +false +` + +exports[`test/basic.js TAP basic tests > [[] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [[] parsed 1`] = ` +Array [ + Array [], + "[[]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [\\-\\]] hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [\\-\\]] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [\\-\\]] parsed 1`] = ` +Array [ + Array [], + "[\\\\-\\\\]]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [\\\\] hasMagic known 1`] = ` +false +` + +exports[`test/basic.js TAP basic tests > [\\\\] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [\\\\] parsed 1`] = ` +Array [ + Array [], + "[\\\\\\\\]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [\\b-a] hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [\\b-a] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [\\b-a] parsed 1`] = ` +Array [ + Array [], + "[\\\\b-a]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [\\z-a] hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [\\z-a] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [\\z-a] parsed 1`] = ` +Array [ + Array [], + "[\\\\z-a]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [] hasMagic known 1`] = ` +false +` + +exports[`test/basic.js TAP basic tests > [] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [] parsed 1`] = ` +Array [ + Array [], + "[]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > []+*] hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > []+*] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > []+*] parsed 1`] = ` +Array [ + Array [], + "[]+*]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > []-] hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > []-] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > []-] parsed 1`] = ` +Array [ + Array [], + "[]-]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > []] hasMagic known 1`] = ` +false +` + +exports[`test/basic.js TAP basic tests > []] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > []] parsed 1`] = ` +Array [ + Array [], + "[]]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [^a-c]* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [^a-c]* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [^a-c]* parsed 1`] = ` +Array [ + Array [], + "[^a-c]*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [a-0][a-Ā] hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [a-0][a-Ā] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [a-0][a-Ā] parsed 1`] = ` +Array [ + Array [], + "[a-0][a-Ā]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [a-[:alpha:]*] hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [a-[:alpha:]*] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [a-[:alpha:]*] parsed 1`] = ` +Array [ + Array [], + "[a-[:alpha:]*]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [a-b-c] hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [a-b-c] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [a-b-c] parsed 1`] = ` +Array [ + Array [], + "[a-b-c]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [a-c]b* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [a-c]b* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [a-c]b* parsed 1`] = ` +Array [ + Array [], + "[a-c]b*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [a-y]*[^c] hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [a-y]*[^c] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [a-y]*[^c] parsed 1`] = ` +Array [ + Array [], + "[a-y]*[^c]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [a-z] hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [a-z] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [a-z] parsed 1`] = ` +Array [ + Array [], + "[a-z]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [abc hasMagic known 1`] = ` +false +` + +exports[`test/basic.js TAP basic tests > [abc hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [abc parsed 1`] = ` +Array [ + Array [], + "[abc", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [abc-] hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [abc-] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [abc-] parsed 1`] = ` +Array [ + Array [], + "[abc-]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [f-fz-a]* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [f-fz-a]* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [f-fz-a]* parsed 1`] = ` +Array [ + Array [], + "[f-fz-a]*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [f-gz-a]* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [f-gz-a]* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [f-gz-a]* parsed 1`] = ` +Array [ + Array [], + "[f-gz-a]*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [fz-a]* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [fz-a]* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [fz-a]* parsed 1`] = ` +Array [ + Array [], + "[fz-a]*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [ia]?[ck] hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [ia]?[ck] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [ia]?[ck] parsed 1`] = ` +Array [ + Array [], + "[ia]?[ck]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [z-a] hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [z-a] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [z-a] parsed 1`] = ` +Array [ + Array [], + "[z-a]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [z-a]* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [z-a]* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [z-a]* parsed 1`] = ` +Array [ + Array [], + "[z-a]*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [z-af]* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [z-af]* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [z-af]* parsed 1`] = ` +Array [ + Array [], + "[z-af]*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > [z\\-a] hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > [z\\-a] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > [z\\-a] parsed 1`] = ` +Array [ + Array [], + "[z\\\\-a]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > \\ hasMagic known 1`] = ` +false +` + +exports[`test/basic.js TAP basic tests > \\ hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > \\ parsed 1`] = ` +Array [ + Array [], + "\\\\", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > \\* hasMagic known 1`] = ` +false +` + +exports[`test/basic.js TAP basic tests > \\* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > \\* parsed 1`] = ` +Array [ + Array [], + "\\\\*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > \\** hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > \\** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > \\** parsed 1`] = ` +Array [ + Array [], + "\\\\**", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > \\*\\* hasMagic known 1`] = ` +false +` + +exports[`test/basic.js TAP basic tests > \\*\\* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > \\*\\* parsed 1`] = ` +Array [ + Array [], + "\\\\*\\\\*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > \\.\\./*/ hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > \\.\\./*/ hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > \\.\\./*/ parsed 1`] = ` +Array [ + Array [], + "\\\\.\\\\./*/", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a* parsed 1`] = ` +Array [ + Array [], + "a*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a********???******* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a********???******* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a********???******* parsed 1`] = ` +Array [ + Array [], + "a********???*******", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a*****?c hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a*****?c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a*****?c parsed 1`] = ` +Array [ + Array [], + "a*****?c", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a*****c*?** hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a*****c*?** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a*****c*?** parsed 1`] = ` +Array [ + Array [], + "a*****c*?**", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a****c**?**??***** hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a****c**?**??***** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a****c**?**??***** parsed 1`] = ` +Array [ + Array [], + "a****c**?**??*****", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a***c hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a***c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a***c parsed 1`] = ` +Array [ + Array [], + "a***c", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a**?**cd**?**??***k hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a**?**cd**?**??***k hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a**?**cd**?**??***k parsed 1`] = ` +Array [ + Array [], + "a**?**cd**?**??***k", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a**?**cd**?**??***k** hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a**?**cd**?**??***k** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a**?**cd**?**??***k** parsed 1`] = ` +Array [ + Array [], + "a**?**cd**?**??***k**", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a**?**cd**?**??k hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a**?**cd**?**??k hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a**?**cd**?**??k parsed 1`] = ` +Array [ + Array [], + "a**?**cd**?**??k", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a**?**cd**?**??k*** hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a**?**cd**?**??k*** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a**?**cd**?**??k*** parsed 1`] = ` +Array [ + Array [], + "a**?**cd**?**??k***", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a*[^c] hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a*[^c] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a*[^c] parsed 1`] = ` +Array [ + Array [], + "a*[^c]", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a*cd**?**??k hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a*cd**?**??k hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a*cd**?**??k parsed 1`] = ` +Array [ + Array [], + "a*cd**?**??k", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a/*/b hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a/*/b hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a/*/b hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a/*/b hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a/*/b parsed 1`] = ` +Array [ + Array [], + "a/*/b", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a/*/b parsed 2`] = ` +Array [ + Array [], + "a/*/b", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a/.*/b hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a/.*/b hasMagic known 2`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a/.*/b hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a/.*/b hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a/.*/b parsed 1`] = ` +Array [ + Array [], + "a/.*/b", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a/.*/b parsed 2`] = ` +Array [ + Array [], + "a/.*/b", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a/[2015-03-10T00:23:08.647Z\\]/z hasMagic known 1`] = ` +false +` + +exports[`test/basic.js TAP basic tests > a/[2015-03-10T00:23:08.647Z\\]/z hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a/[2015-03-10T00:23:08.647Z\\]/z parsed 1`] = ` +Array [ + Array [], + "a/[2015-03-10T00:23:08.647Z\\\\]/z", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a/[2015-03-10T00:23:08.647Z]/z hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a/[2015-03-10T00:23:08.647Z]/z hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a/[2015-03-10T00:23:08.647Z]/z parsed 1`] = ` +Array [ + Array [], + "a/[2015-03-10T00:23:08.647Z]/z", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a?b hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a?b hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a?b parsed 1`] = ` +Array [ + Array [], + "a?b", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a?c hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a?c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a?c parsed 1`] = ` +Array [ + Array [], + "a?c", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a[X-]b hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a[X-]b hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a[X-]b parsed 1`] = ` +Array [ + Array [], + "a[X-]b", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a[\\b]c hasMagic known 1`] = ` +false +` + +exports[`test/basic.js TAP basic tests > a[\\b]c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a[\\b]c parsed 1`] = ` +Array [ + Array [], + "a[\\\\b]c", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a[b]c hasMagic known 1`] = ` +false +` + +exports[`test/basic.js TAP basic tests > a[b]c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a[b]c parsed 1`] = ` +Array [ + Array [], + "a[b]c", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a\\*?/* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a\\*?/* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a\\*?/* parsed 1`] = ` +Array [ + Array [], + "a\\\\*?/*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a\\*b/* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > a\\*b/* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a\\*b/* parsed 1`] = ` +Array [ + Array [], + "a\\\\*b/*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > a\\*c hasMagic known 1`] = ` +false +` + +exports[`test/basic.js TAP basic tests > a\\*c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > a\\*c parsed 1`] = ` +Array [ + Array [], + "a\\\\*c", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > ab* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > ab* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > ab* parsed 1`] = ` +Array [ + Array [], + "ab*", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > b*/ hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > b*/ hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > b*/ parsed 1`] = ` +Array [ + Array [], + "b*/", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > c* hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > c* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > c* parsed 1`] = ` +Array [ + Array [], + "c*", + Object {}, +] +` + exports[`test/basic.js TAP basic tests > makeRe 1`] = ` false ` exports[`test/basic.js TAP basic tests > makeRe !!a* 1`] = ` -/^(?:(?=.)a[^/]*?)$/ +/^a[^/]*?$/ +` + +exports[`test/basic.js TAP basic tests > makeRe !()y 1`] = ` +/^(?!\\.)[^/]+?y$/ +` + +exports[`test/basic.js TAP basic tests > makeRe !()y 2`] = ` +/^[^/]+?y$/ ` exports[`test/basic.js TAP basic tests > makeRe !(.a|js)@(.*) 1`] = ` -/^(?:(?!\\.)(?=.)(?:(?!(?:\\.a|js)(?:\\.[^/]*?))[^/]*?)(?:\\.[^/]*?))$/ +/^(?:(?!(?:\\.a(?:\\.[^/]*?)(?:$|\\/)|js(?:\\.[^/]*?)(?:$|\\/)))(?!\\.)[^/]*?)(?:(?!\\.\\.?(?:$|\\/))\\.[^/]*?)$/ ` exports[`test/basic.js TAP basic tests > makeRe !\\!a* 1`] = ` -/^(?!^(?:(?=.)\\!a[^/]*?)$).*$/ +/^(?!^\\!a[^/]*?$).+$/ ` exports[`test/basic.js TAP basic tests > makeRe !a* 1`] = ` -/^(?!^(?:(?=.)a[^/]*?)$).*$/ +/^(?!^a[^/]*?$).+$/ ` exports[`test/basic.js TAP basic tests > makeRe !a* 2`] = ` -/^(?:(?=.)\\!a[^/]*?)$/ +/^!a[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe # ignore this 1`] = ` @@ -34,685 +3047,1029 @@ false ` exports[`test/basic.js TAP basic tests > makeRe #* 1`] = ` -/^(?:(?=.)\\#[^/]*?)$/ +/^\\#[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe * 1`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?)$/ +/^(?!\\.\\.?(?:$|\\/))[^/]+?$/ ` exports[`test/basic.js TAP basic tests > makeRe * 2`] = ` -/^(?:(?!\\.)(?=.)[^/]*?)$/ +/^(?!\\.)[^/]+?$/ ` exports[`test/basic.js TAP basic tests > makeRe * 3`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?)$/ +/^(?!\\.\\.?(?:$|\\/))[^/]+?$/ ` exports[`test/basic.js TAP basic tests > makeRe *(a/b) 1`] = ` -/^(?:(?=.)[^/]*?\\((?!\\.)a\\/b\\))$/ +/^(?!\\.)[^/]*?\\(a\\/b\\)$/ ` exports[`test/basic.js TAP basic tests > makeRe *(a|{b),c)} 1`] = ` -/^(?:(?=.)(?:(?!\\.)a|(?!\\.)b)*|(?=.)(?:(?!\\.)a|(?!\\.)c)*)$/ +/^(?:(?:a|b)*|(?:a|c)*)$/ ` exports[`test/basic.js TAP basic tests > makeRe *(a|{b,c}) 1`] = ` -/^(?:(?=.)(?:(?!\\.)a|(?!\\.)b)*|(?=.)(?:(?!\\.)a|(?!\\.)c)*)$/ +/^(?:(?:a|b)*|(?:a|c)*)$/ ` exports[`test/basic.js TAP basic tests > makeRe *(a|{b|c,c}) 1`] = ` -/^(?:(?=.)(?:(?!\\.)a|(?!\\.)b|(?!\\.)c)*|(?=.)(?:(?!\\.)a|(?!\\.)c)*)$/ +/^(?:(?:a|b|c)*|(?:a|c)*)$/ ` exports[`test/basic.js TAP basic tests > makeRe *(a|{b|c,c}) 2`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\(a\\|b\\|c\\)|(?!\\.)(?=.)[^/]*?\\(a\\|c\\))$/ +/^(?:(?!\\.)[^/]*?\\(a\\|b\\|c\\)|(?!\\.)[^/]*?\\(a\\|c\\))$/ ` exports[`test/basic.js TAP basic tests > makeRe ** 1`] = ` -/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/ +/^(?:(?!(?:\\/|^)\\.).)*?$/ ` exports[`test/basic.js TAP basic tests > makeRe ** 2`] = ` -/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/ +/^(?:(?!(?:\\/|^)\\.).)*?$/ ` exports[`test/basic.js TAP basic tests > makeRe ** 3`] = ` -/^(?:(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)$/ +/^(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?$/ ` exports[`test/basic.js TAP basic tests > makeRe *******? 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/])$/ +/^(?!\\.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]$/ ` exports[`test/basic.js TAP basic tests > makeRe *******c 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c)$/ +/^(?!\\.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c$/ ` exports[`test/basic.js TAP basic tests > makeRe *****?? 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/ +/^(?!\\.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]$/ ` exports[`test/basic.js TAP basic tests > makeRe **/**/** 1`] = ` -/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/ +/^(?:(?!(?:\\/|^)\\.).)*?$/ ` exports[`test/basic.js TAP basic tests > makeRe **/.x/** 1`] = ` -/^(?:(?:\\/|(?:(?!(?:\\/|^)\\.).)*?\\/)?\\.x(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?)$/ +/^(?:\\/|(?:(?!(?:\\/|^)\\.).)*?\\/)?\\.x(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?$/ ` exports[`test/basic.js TAP basic tests > makeRe **/.x/** 2`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\/\\.x\\/(?!\\.)(?=.)[^/]*?)$/ +/^(?!\\.)[^/]+?\\/\\.x\\/(?!\\.)[^/]+?$/ ` exports[`test/basic.js TAP basic tests > makeRe *.!(js) 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\.(?:(?!(?:js)(?:$|\\/))[^/]*?))$/ +/^(?!\\.)[^/]*?\\.(?:(?!(?:js(?:$|\\/)))[^/]*?)$/ ` exports[`test/basic.js TAP basic tests > makeRe *.* 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\.[^/]*?)$/ +/^(?!\\.)[^/]*?\\.[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe *.* 2`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\.[^/]*?)$/ +/^(?!\\.\\.?(?:$|\\/))[^/]*?\\.[^/]*?$/ +` + +exports[`test/basic.js TAP basic tests > makeRe *.Y 1`] = ` +/^(?!\\.)[^/]*?\\.Y$/i +` + +exports[`test/basic.js TAP basic tests > makeRe *.Z 1`] = ` +/^(?!\\.\\.?(?:$|\\/))[^/]*?\\.Z$/i ` exports[`test/basic.js TAP basic tests > makeRe *.\\* 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\.\\*)$/ +/^(?!\\.)[^/]*?\\.\\*$/ ` exports[`test/basic.js TAP basic tests > makeRe *.js 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\.js)$/ +/^(?!\\.)[^/]*?\\.js$/ ` exports[`test/basic.js TAP basic tests > makeRe *.js 2`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\.js)$/ +/^(?!\\.\\.?(?:$|\\/))[^/]*?\\.js$/ ` exports[`test/basic.js TAP basic tests > makeRe *.js 3`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\.js)$/i +/^(?!\\.)[^/]*?\\.js$/i ` exports[`test/basic.js TAP basic tests > makeRe *.js 4`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\.js)$/i +/^(?!\\.\\.?(?:$|\\/))[^/]*?\\.js$/i +` + +exports[`test/basic.js TAP basic tests > makeRe *.y 1`] = ` +/^(?!\\.)[^/]*?\\.y$/ +` + +exports[`test/basic.js TAP basic tests > makeRe *.z 1`] = ` +/^(?!\\.\\.?(?:$|\\/))[^/]*?\\.z$/ ` exports[`test/basic.js TAP basic tests > makeRe */man*/bash.* 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\/(?=.)man[^/]*?\\/(?=.)bash\\.[^/]*?)$/ +/^(?!\\.)[^/]+?\\/man[^/]*?\\/bash\\.[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe *\\!* 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\![^/]*?)$/ +/^(?!\\.)[^/]*?\\![^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe *\\\\!* 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\\\\\![^/]*?)$/ +/^(?!\\.)[^/]*?\\\\![^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe *c*?** 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/ +/^(?!\\.)[^/]*?c[^/]*?[^/][^/]*?[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe *js 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?js)$/ +/^(?!\\.)[^/]*?js$/ +` + +exports[`test/basic.js TAP basic tests > makeRe +() 1`] = ` +/^\\+\\(\\)$/ +` + +exports[`test/basic.js TAP basic tests > makeRe +()*(x|a) 1`] = ` +/^(?:)+(?:x|a)*$/ ` exports[`test/basic.js TAP basic tests > makeRe +(a)!(b)+(c) 1`] = ` -/^(?:(?=.)(?:(?!\\.)a)+(?:(?!(?:b)(?:c)+)[^/]*?)(?:c)+)$/ +/^(?:a)+(?:(?!(?:b(?:c)+(?:$|\\/)))[^/]*?)(?:c)+$/ ` exports[`test/basic.js TAP basic tests > makeRe +(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g 1`] = ` -/^(?:(?=.)\\+\\((?!\\.)a\\|(?!\\.)[^/]*?\\|c\\\\\\\\\\|(?!\\.)d\\\\\\\\\\|e\\\\\\\\\\\\\\\\\\|(?!\\.)f\\\\\\\\\\\\\\\\\\|g)$/ +/^\\+\\(a\\|[^/]*?|c\\\\\\|d\\\\|e\\\\\\\\\\|f\\\\\\\\|g$/ +` + +exports[`test/basic.js TAP basic tests > makeRe +(x|a[^)]y) 1`] = ` +/^(?:x|a[^)]y)+$/ ` exports[`test/basic.js TAP basic tests > makeRe .* 1`] = ` -/^(?:(?=.)\\.[^/]*?)$/ +/^(?!\\.\\.?(?:$|\\/))\\.[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe .* 2`] = ` -/^(?:(?=.)\\.[^/]*?)$/ +/^(?!\\.\\.?(?:$|\\/))\\.[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe .x/**/* 1`] = ` -/^(?:\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)(?=.)[^/]*?)$/ +/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)[^/]+?$/ ` exports[`test/basic.js TAP basic tests > makeRe .x/**/* 2`] = ` -/^(?:\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?)$/ +/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!\\.\\.?(?:$|\\/))[^/]+?$/ ` exports[`test/basic.js TAP basic tests > makeRe .x/**/**/* 1`] = ` -/^(?:\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)(?=.)[^/]*?)$/ +/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)[^/]+?$/ ` exports[`test/basic.js TAP basic tests > makeRe .x/**/**/* 2`] = ` -/^(?:\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?)$/ +/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!\\.\\.?(?:$|\\/))[^/]+?$/ ` exports[`test/basic.js TAP basic tests > makeRe .x/**/*/** 1`] = ` -/^(?:\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)(?=.)[^/]*?)$/ +/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)[^/]+?$/ ` exports[`test/basic.js TAP basic tests > makeRe .x/**/*/** 2`] = ` -/^(?:\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?)$/ +/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!\\.\\.?(?:$|\\/))[^/]+?$/ ` exports[`test/basic.js TAP basic tests > makeRe .x/*/** 1`] = ` -/^(?:\\.x\\/(?!\\.)(?=.)[^/]*?(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?)$/ +/^\\.x\\/(?!\\.)[^/]+?(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?$/ ` exports[`test/basic.js TAP basic tests > makeRe .x/*/** 2`] = ` -/^(?:\\.x\\/(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?(?:\\/|(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)?)$/ +/^\\.x\\/(?!\\.\\.?(?:$|\\/))[^/]+?(?:\\/|(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)?$/ ` exports[`test/basic.js TAP basic tests > makeRe .x/*/**/** 1`] = ` -/^(?:\\.x\\/(?!\\.)(?=.)[^/]*?(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?)$/ +/^\\.x\\/(?!\\.)[^/]+?(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?$/ ` exports[`test/basic.js TAP basic tests > makeRe .x/*/**/** 2`] = ` -/^(?:\\.x\\/(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?(?:\\/|(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)?)$/ +/^\\.x\\/(?!\\.\\.?(?:$|\\/))[^/]+?(?:\\/|(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)?$/ ` exports[`test/basic.js TAP basic tests > makeRe /^root:/{s/^[^:]*:[^:]*:([^:]*).*$// 1`] = ` -/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/\\/)$/ +/^\\/\\^root:\\/\\{s\\/\\^[^:][^/]*?:[^:][^/]*?:\\([^:][^/]*?\\)\\.[^/]*?\\$\\/\\/$/ ` exports[`test/basic.js TAP basic tests > makeRe /^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\1/ 1`] = ` -/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/1\\/)$/ +/^\\/\\^root:\\/\\{s\\/\\^[^:][^/]*?:[^:][^/]*?:\\([^:][^/]*?\\)\\.[^/]*?\\$\\/1\\/$/ ` exports[`test/basic.js TAP basic tests > makeRe ? 1`] = ` -/^(?:(?!\\.)(?=.)[^/])$/ +/^(?!\\.)[^/]$/ +` + +exports[`test/basic.js TAP basic tests > makeRe ?(x-!(y)|z) 1`] = ` +/^(?:x\\-(?:(?!(?:y(?:$|\\/)))[^/]*?)|z)?$/ +` + +exports[`test/basic.js TAP basic tests > makeRe ?(x-!(y)|z)b 1`] = ` +/^(?:x\\-(?:(?!(?:yb(?:$|\\/)))[^/]*?)|z)?b$/ ` exports[`test/basic.js TAP basic tests > makeRe ?************c****?**** 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/ +/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe ?*****?? 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/ +/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]$/ ` exports[`test/basic.js TAP basic tests > makeRe ?*****?c 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/ +/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c$/ ` exports[`test/basic.js TAP basic tests > makeRe ?***?**** 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/ +/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe ?***?****? 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/ +/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]$/ ` exports[`test/basic.js TAP basic tests > makeRe ?***?****c 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/ +/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c$/ ` exports[`test/basic.js TAP basic tests > makeRe ?.js 1`] = ` -/^(?:(?!\\.)(?=.)[^/]\\.js)$/ +/^(?!\\.)[^/]\\.js$/ ` exports[`test/basic.js TAP basic tests > makeRe ?.js 2`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]\\.js)$/ +/^(?!\\.\\.?(?:$|\\/))[^/]\\.js$/ ` exports[`test/basic.js TAP basic tests > makeRe ?.js 3`] = ` -/^(?:(?!\\.)(?=.)[^/]\\.js)$/i +/^(?!\\.)[^/]\\.js$/i ` exports[`test/basic.js TAP basic tests > makeRe ?.js 4`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]\\.js)$/i +/^(?!\\.\\.?(?:$|\\/))[^/]\\.js$/i ` exports[`test/basic.js TAP basic tests > makeRe ?? 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/])$/ +/^(?!\\.)[^/][^/]$/ ` exports[`test/basic.js TAP basic tests > makeRe ?? 2`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/][^/])$/ +/^(?!\\.\\.?(?:$|\\/))[^/][^/]$/ ` exports[`test/basic.js TAP basic tests > makeRe ?? 3`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/][^/])$/i +/^(?!\\.\\.?(?:$|\\/))[^/][^/]$/i ` exports[`test/basic.js TAP basic tests > makeRe ?? 4`] = ` -/^(?:(?!\\.)(?=.)[^/][^/])$/i +/^(?!\\.)[^/][^/]$/i ` exports[`test/basic.js TAP basic tests > makeRe ??**********?****? 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/ +/^(?!\\.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]$/ ` exports[`test/basic.js TAP basic tests > makeRe ??**********?****c 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/ +/^(?!\\.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c$/ ` exports[`test/basic.js TAP basic tests > makeRe ??? 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/][^/])$/ +/^(?!\\.)[^/][^/][^/]$/ ` exports[`test/basic.js TAP basic tests > makeRe ??? 2`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/][^/][^/])$/ +/^(?!\\.\\.?(?:$|\\/))[^/][^/][^/]$/ ` exports[`test/basic.js TAP basic tests > makeRe ?js 1`] = ` -/^(?:(?!\\.)(?=.)[^/]js)$/ +/^(?!\\.)[^/]js$/ ` exports[`test/basic.js TAP basic tests > makeRe ?js 2`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]js)$/ +/^(?!\\.\\.?(?:$|\\/))[^/]js$/ ` exports[`test/basic.js TAP basic tests > makeRe ?js 3`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]js)$/i +/^(?!\\.\\.?(?:$|\\/))[^/]js$/i ` exports[`test/basic.js TAP basic tests > makeRe @(*|.*) 1`] = ` -/^(?:(?=.)(?:(?!\\.)[^/]*?|\\.[^/]*?))$/ +/^(?:(?!\\.)[^/]+?|(?!\\.\\.?(?:$|\\/))\\.[^/]*?)$/ ` exports[`test/basic.js TAP basic tests > makeRe @(*|a) 1`] = ` -/^(?:(?=.)(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))[^/]*?|(?!(?:^|\\/)\\.{1,2}(?:$|\\/))a))$/ +/^(?:(?!\\.\\.?(?:$|\\/))[^/]+?|a)$/ ` exports[`test/basic.js TAP basic tests > makeRe @(.*) 1`] = ` -/^(?:(?=.)(?:\\.[^/]*?))$/ +/^(?:(?!\\.\\.?(?:$|\\/))\\.[^/]*?)$/ ` exports[`test/basic.js TAP basic tests > makeRe @(.*) 2`] = ` -/^(?:(?=.)(?:\\.[^/]*?))$/ +/^(?:(?!\\.\\.?(?:$|\\/))\\.[^/]*?)$/ ` exports[`test/basic.js TAP basic tests > makeRe @(.*|*) 1`] = ` -/^(?:(?=.)(?:\\.[^/]*?|(?!\\.)[^/]*?))$/ +/^(?:(?!\\.\\.?(?:$|\\/))\\.[^/]*?|(?!\\.)[^/]+?)$/ ` exports[`test/basic.js TAP basic tests > makeRe @(.*|js) 1`] = ` -/^(?:(?=.)(?:\\.[^/]*?|(?!\\.)js))$/ +/^(?:(?!\\.\\.?(?:$|\\/))\\.[^/]*?|js)$/ ` exports[`test/basic.js TAP basic tests > makeRe @(a|a[(])b 1`] = ` -/^(?:(?=.)(?:(?!\\.)a|(?!\\.)a\\()b)$/ +/^(?:a|a\\()b$/ ` exports[`test/basic.js TAP basic tests > makeRe @(a|a[)])b 1`] = ` -/^(?:(?=.)(?:(?!\\.)a|(?!\\.)a\\))b)$/ +/^(?:a|a\\))b$/ ` exports[`test/basic.js TAP basic tests > makeRe @(js|.*) 1`] = ` -/^(?:(?=.)(?:(?!\\.)js|\\.[^/]*?))$/ +/^(?:js|(?!\\.\\.?(?:$|\\/))\\.[^/]*?)$/ ` exports[`test/basic.js TAP basic tests > makeRe X* 1`] = ` -/^(?:(?=.)X[^/]*?)$/ +/^X[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe X* 2`] = ` -/^(?:(?=.)X[^/]*?)$/ +/^X[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe XYZ 1`] = ` -/^(?:XYZ)$/i +/^XYZ$/i ` exports[`test/basic.js TAP basic tests > makeRe [ 1`] = ` -/^(?:\\[)$/ +/^\\[$/ ` exports[`test/basic.js TAP basic tests > makeRe [!a* 1`] = ` -/^(?:(?=.)\\[\\!a[^/]*?)$/ +/^\\[!a[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe [#a* 1`] = ` -/^(?:(?=.)\\[\\#a[^/]*?)$/ +/^\\[\\#a[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe [* 1`] = ` -/^(?:(?=.)\\[[^/]*?)$/ +/^\\[[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe [-abc] 1`] = ` -/^(?:(?!\\.)(?=.)[\\-abc])$/ +/^(?!\\.)[\\-abc]$/ ` exports[`test/basic.js TAP basic tests > makeRe [[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]] 1`] = ` -/^(?:(?!\\.)(?=.)[\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}])$/ +/^(?!\\.)[\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}]$/u ` exports[`test/basic.js TAP basic tests > makeRe [[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]] 1`] = ` -/^(?:(?!\\.)(?=.)[\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}])$/ +/^(?!\\.)[\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}]$/u ` exports[`test/basic.js TAP basic tests > makeRe [[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]] 1`] = ` -/^(?:(?!\\.)(?=.)[\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f])$/ +/^(?!\\.)[\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f]$/ ` exports[`test/basic.js TAP basic tests > makeRe [[:graph:][:digit:]]f* 1`] = ` -/^(?:(?!\\.)(?=.)([\\p{Nd}]|[^\\p{Z}\\p{C}])f[^/]*?)$/ +/^([\\p{Nd}]|[^\\p{Z}\\p{C}])f[^/]*?$/u ` exports[`test/basic.js TAP basic tests > makeRe [[:graph:]]f* 1`] = ` -/^(?:(?!\\.)(?=.)[^\\p{Z}\\p{C}]f[^/]*?)$/ +/^(?!\\.)[^\\p{Z}\\p{C}]f[^/]*?$/u ` exports[`test/basic.js TAP basic tests > makeRe [[:xdigit:]][[:xdigit:]]??? 1`] = ` -/^(?:(?!\\.)(?=.)[A-Fa-f0-9][A-Fa-f0-9][^/][^/][^/])$/ +/^(?!\\.)[A-Fa-f0-9][A-Fa-f0-9][^/][^/][^/]$/ ` exports[`test/basic.js TAP basic tests > makeRe [[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]] 1`] = ` -/^(?:(?!\\.)(?=.)[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9])$/ +/^(?!\\.)[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$/ ` exports[`test/basic.js TAP basic tests > makeRe [[] 1`] = ` -/^(?:\\[)$/ +/^\\[$/ ` exports[`test/basic.js TAP basic tests > makeRe [\\-\\]] 1`] = ` -/^(?:(?!\\.)(?=.)[\\-\\]])$/ +/^(?!\\.)[\\-\\]]$/ ` exports[`test/basic.js TAP basic tests > makeRe [\\\\] 1`] = ` -/^(?:\\\\)$/ +/^\\\\$/ ` exports[`test/basic.js TAP basic tests > makeRe [\\b-a] 1`] = ` -/^(?:(?=.)$.)$/ +/^$.$/ ` exports[`test/basic.js TAP basic tests > makeRe [\\z-a] 1`] = ` -/^(?:(?=.)$.)$/ +/^$.$/ ` exports[`test/basic.js TAP basic tests > makeRe [] 1`] = ` -/^(?:\\[\\])$/ +/^\\[\\]$/ ` exports[`test/basic.js TAP basic tests > makeRe []+*] 1`] = ` -/^(?:(?!\\.)(?=.)[\\]+*])$/ +/^(?!\\.)[\\]+*]$/ ` exports[`test/basic.js TAP basic tests > makeRe []-] 1`] = ` -/^(?:(?!\\.)(?=.)[\\]\\-])$/ +/^(?!\\.)[\\]\\-]$/ ` exports[`test/basic.js TAP basic tests > makeRe []] 1`] = ` -/^(?:\\])$/ +/^\\]$/ ` exports[`test/basic.js TAP basic tests > makeRe [^a-c]* 1`] = ` -/^(?:(?!\\.)(?=.)[^a-c][^/]*?)$/ +/^(?!\\.)[^a-c][^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe [a-0][a-Ā] 1`] = ` -/^(?:(?=.)$.)$/ +/^$.$/ ` exports[`test/basic.js TAP basic tests > makeRe [a-[:alpha:]*] 1`] = ` -/^(?:(?=.)$.)$/ +/^$.$/ ` exports[`test/basic.js TAP basic tests > makeRe [a-b-c] 1`] = ` -/^(?:(?!\\.)(?=.)[a-b\\-c])$/ +/^(?!\\.)[a-b\\-c]$/ ` exports[`test/basic.js TAP basic tests > makeRe [a-c]b* 1`] = ` -/^(?:(?!\\.)(?=.)[a-c]b[^/]*?)$/ +/^(?!\\.)[a-c]b[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe [a-y]*[^c] 1`] = ` -/^(?:(?!\\.)(?=.)[a-y][^/]*?[^c])$/ +/^(?!\\.)[a-y][^/]*?[^c]$/ ` exports[`test/basic.js TAP basic tests > makeRe [a-z] 1`] = ` -/^(?:(?!\\.)(?=.)[a-z])$/ +/^(?!\\.)[a-z]$/ ` exports[`test/basic.js TAP basic tests > makeRe [abc 1`] = ` -/^(?:\\[abc)$/ +/^\\[abc$/ ` exports[`test/basic.js TAP basic tests > makeRe [abc-] 1`] = ` -/^(?:(?!\\.)(?=.)[abc\\-])$/ +/^(?!\\.)[abc\\-]$/ ` exports[`test/basic.js TAP basic tests > makeRe [f-fz-a]* 1`] = ` -/^(?:(?=.)f[^/]*?)$/ +/^f[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe [f-gz-a]* 1`] = ` -/^(?:(?!\\.)(?=.)[f-g][^/]*?)$/ +/^(?!\\.)[f-g][^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe [fz-a]* 1`] = ` -/^(?:(?=.)f[^/]*?)$/ +/^f[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe [ia]?[ck] 1`] = ` -/^(?:(?!\\.)(?=.)[ia][^/][ck])$/i +/^(?!\\.)[ia][^/][ck]$/i ` exports[`test/basic.js TAP basic tests > makeRe [z-a] 1`] = ` -/^(?:(?=.)$.)$/ +/^$.$/ ` exports[`test/basic.js TAP basic tests > makeRe [z-a]* 1`] = ` -/^(?:(?=.)$.)$/ +/^$.$/ ` exports[`test/basic.js TAP basic tests > makeRe [z-af]* 1`] = ` -/^(?:(?=.)f[^/]*?)$/ +/^f[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe [z\\-a] 1`] = ` -/^(?:(?!\\.)(?=.)[z\\-a])$/ +/^(?!\\.)[z\\-a]$/ ` exports[`test/basic.js TAP basic tests > makeRe \\ 1`] = ` -/^(?:\\\\)$/ +/^\\\\$/ ` exports[`test/basic.js TAP basic tests > makeRe \\* 1`] = ` -/^(?:\\*)$/ +/^\\*$/ ` exports[`test/basic.js TAP basic tests > makeRe \\** 1`] = ` -/^(?:(?=.)\\*[^/]*?)$/ +/^\\*[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe \\*\\* 1`] = ` -/^(?:\\*\\*)$/ +/^\\*\\*$/ ` exports[`test/basic.js TAP basic tests > makeRe \\.\\./*/ 1`] = ` -/^(?:\\.\\.\\/(?!\\.)(?=.)[^/]*?\\/)$/ +/^\\.\\.\\/(?!\\.)[^/]+?\\/$/ ` exports[`test/basic.js TAP basic tests > makeRe a* 1`] = ` -/^(?:(?=.)a[^/]*?)$/ +/^a[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe a********???******* 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/ +/^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe a*****?c 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/ +/^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c$/ ` exports[`test/basic.js TAP basic tests > makeRe a*****c*?** 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/ +/^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe a****c**?**??***** 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/ +/^a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe a***c 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/]*?c)$/ +/^a[^/]*?[^/]*?[^/]*?c$/ ` exports[`test/basic.js TAP basic tests > makeRe a**?**cd**?**??***k 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k)$/ +/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k$/ ` exports[`test/basic.js TAP basic tests > makeRe a**?**cd**?**??***k** 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?)$/ +/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe a**?**cd**?**??k 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/ +/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k$/ ` exports[`test/basic.js TAP basic tests > makeRe a**?**cd**?**??k*** 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?)$/ +/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe a*[^c] 1`] = ` -/^(?:(?=.)a[^/]*?[^c])$/ +/^a[^/]*?[^c]$/ ` exports[`test/basic.js TAP basic tests > makeRe a*cd**?**??k 1`] = ` -/^(?:(?=.)a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/ +/^a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k$/ ` exports[`test/basic.js TAP basic tests > makeRe a/*/b 1`] = ` -/^(?:a\\/(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\/b)$/ +/^a\\/(?!\\.\\.?(?:$|\\/))[^/]+?\\/b$/ ` exports[`test/basic.js TAP basic tests > makeRe a/*/b 2`] = ` -/^(?:a\\/(?!\\.)(?=.)[^/]*?\\/b)$/ +/^a\\/(?!\\.)[^/]+?\\/b$/ ` exports[`test/basic.js TAP basic tests > makeRe a/.*/b 1`] = ` -/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/ +/^a\\/(?!\\.\\.?(?:$|\\/))\\.[^/]*?\\/b$/ ` exports[`test/basic.js TAP basic tests > makeRe a/.*/b 2`] = ` -/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/ +/^a\\/(?!\\.\\.?(?:$|\\/))\\.[^/]*?\\/b$/ ` exports[`test/basic.js TAP basic tests > makeRe a/[2015-03-10T00:23:08.647Z\\]/z 1`] = ` -/^(?:a\\/\\[2015\\-03\\-10T00:23:08\\.647Z\\]\\/z)$/ +/^a\\/\\[2015\\-03\\-10T00:23:08\\.647Z\\]\\/z$/ ` exports[`test/basic.js TAP basic tests > makeRe a/[2015-03-10T00:23:08.647Z]/z 1`] = ` -/^(?:a\\/(?!\\.)(?=.)[2010T00:23:08.647Z]\\/z)$/ +/^a\\/(?!\\.)[2010T00:23:08.647Z]\\/z$/ ` exports[`test/basic.js TAP basic tests > makeRe a?b 1`] = ` -/^(?:(?=.)a[^/]b)$/ +/^a[^/]b$/ ` exports[`test/basic.js TAP basic tests > makeRe a?c 1`] = ` -/^(?:(?=.)a[^/]c)$/ +/^a[^/]c$/ ` exports[`test/basic.js TAP basic tests > makeRe a[X-]b 1`] = ` -/^(?:(?=.)a[X\\-]b)$/ +/^a[X\\-]b$/ ` exports[`test/basic.js TAP basic tests > makeRe a[\\b]c 1`] = ` -/^(?:abc)$/ +/^abc$/ ` exports[`test/basic.js TAP basic tests > makeRe a[b]c 1`] = ` -/^(?:abc)$/ +/^abc$/ ` exports[`test/basic.js TAP basic tests > makeRe a\\*?/* 1`] = ` -/^(?:(?=.)a\\*[^/]\\/(?!\\.)(?=.)[^/]*?)$/ +/^a\\*[^/]\\/(?!\\.)[^/]+?$/ ` exports[`test/basic.js TAP basic tests > makeRe a\\*b/* 1`] = ` -/^(?:a\\*b\\/(?!\\.)(?=.)[^/]*?)$/ +/^a\\*b\\/(?!\\.)[^/]+?$/ ` exports[`test/basic.js TAP basic tests > makeRe a\\*c 1`] = ` -/^(?:a\\*c)$/ +/^a\\*c$/ ` exports[`test/basic.js TAP basic tests > makeRe ab* 1`] = ` -/^(?:(?=.)ab[^/]*?)$/i +/^ab[^/]*?$/i ` exports[`test/basic.js TAP basic tests > makeRe b*/ 1`] = ` -/^(?:(?=.)b[^/]*?\\/)$/ +/^b[^/]*?\\/$/ ` exports[`test/basic.js TAP basic tests > makeRe c* 1`] = ` -/^(?:(?=.)c[^/]*?)$/ +/^c[^/]*?$/ ` exports[`test/basic.js TAP basic tests > makeRe man/man1/bash.1 1`] = ` -/^(?:man\\/man1\\/bash\\.1)$/ +/^man\\/man1\\/bash\\.1$/ ` exports[`test/basic.js TAP basic tests > makeRe s/\\..*// 1`] = ` -/^(?:s\\/(?=.)\\.\\.[^/]*?\\/)$/ +/^s\\/(?!\\.\\.?(?:$|\\/))\\.\\.[^/]*?\\/$/ ` exports[`test/basic.js TAP basic tests > makeRe x/*/../../a/b/c 1`] = ` -/^(?:a\\/b\\/c)$/ +/^a\\/b\\/c$/ ` exports[`test/basic.js TAP basic tests > makeRe x/*/../a/b/c 1`] = ` -/^(?:x\\/a\\/b\\/c)$/ +/^x\\/a\\/b\\/c$/ ` exports[`test/basic.js TAP basic tests > makeRe x/z/../*/a/b/c 1`] = ` -/^(?:x\\/(?!\\.)(?=.)[^/]*?\\/a\\/b\\/c)$/ +/^x\\/(?!\\.)[^/]+?\\/a\\/b\\/c$/ ` exports[`test/basic.js TAP basic tests > makeRe {/*,*} 1`] = ` -/^(?:\\/(?!\\.)(?=.)[^/]*?|(?!\\.)(?=.)[^/]*?)$/ +/^(?:\\/(?!\\.)[^/]+?|(?!\\.)[^/]+?)$/ ` exports[`test/basic.js TAP basic tests > makeRe {/?,*} 1`] = ` -/^(?:\\/(?!\\.)(?=.)[^/]|(?!\\.)(?=.)[^/]*?)$/ +/^(?:\\/(?!\\.)[^/]|(?!\\.)[^/]+?)$/ ` exports[`test/basic.js TAP basic tests > makeRe {a,*(b|c,d)} 1`] = ` -/^(?:a|(?=.)[^/]*?\\((?!\\.)b\\|(?!\\.)c|d\\))$/ +/^(?:a|(?!\\.)[^/]*?\\(b\\|c|d\\))$/ ` exports[`test/basic.js TAP basic tests > makeRe {a,*(b|{c,d})} 1`] = ` -/^(?:a|(?=.)(?:(?!\\.)b|(?!\\.)c)*|(?=.)(?:(?!\\.)b|(?!\\.)d)*)$/ +/^(?:a|(?:b|c)*|(?:b|d)*)$/ ` exports[`test/basic.js TAP basic tests > makeRe {c*,./c*} 1`] = ` -/^(?:(?=.)c[^/]*?|\\.\\/(?=.)c[^/]*?)$/ +/^(?:c[^/]*?|\\.\\/c[^/]*?)$/ ` exports[`test/basic.js TAP basic tests > makeRe Å 1`] = ` -/^(?:Å)$/i +/^Å$/i ` exports[`test/basic.js TAP basic tests > makeRe Å 2`] = ` -/^(?:Å)$/ +/^Å$/ ` exports[`test/basic.js TAP basic tests > makeRe Å 3`] = ` -/^(?:Å)$/ +/^Å$/ ` exports[`test/basic.js TAP basic tests > makeRe Å 4`] = ` -/^(?:Å)$/i +/^Å$/i ` exports[`test/basic.js TAP basic tests > makeRe å 1`] = ` -/^(?:å)$/ +/^å$/ ` exports[`test/basic.js TAP basic tests > makeRe å 2`] = ` -/^(?:å)$/i +/^å$/i ` exports[`test/basic.js TAP basic tests > makeRe å 3`] = ` -/^(?:å)$/i +/^å$/i ` exports[`test/basic.js TAP basic tests > makeRe å 4`] = ` -/^(?:å)$/ +/^å$/ +` + +exports[`test/basic.js TAP basic tests > man/man1/bash.1 hasMagic known 1`] = ` +false +` + +exports[`test/basic.js TAP basic tests > man/man1/bash.1 hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > man/man1/bash.1 parsed 1`] = ` +Array [ + Array [], + "man/man1/bash.1", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > s/\\..*// hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > s/\\..*// hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > s/\\..*// parsed 1`] = ` +Array [ + Array [], + "s/\\\\..*//", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > x/*/../../a/b/c hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > x/*/../../a/b/c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > x/*/../../a/b/c parsed 1`] = ` +Array [ + Array [], + "x/*/../../a/b/c", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > x/*/../a/b/c hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > x/*/../a/b/c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > x/*/../a/b/c parsed 1`] = ` +Array [ + Array [], + "x/*/../a/b/c", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > x/z/../*/a/b/c hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > x/z/../*/a/b/c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > x/z/../*/a/b/c parsed 1`] = ` +Array [ + Array [], + "x/z/../*/a/b/c", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > {/*,*} hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > {/*,*} hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > {/*,*} parsed 1`] = ` +Array [ + Array [], + "{/*,*}", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > {/?,*} hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > {/?,*} hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > {/?,*} parsed 1`] = ` +Array [ + Array [], + "{/?,*}", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > {a,*(b|c,d)} hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > {a,*(b|c,d)} hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > {a,*(b|c,d)} parsed 1`] = ` +Array [ + Array [], + "{a,", + Array [ + "*", + Array [ + "b", + ], + Array [ + "c,d", + ], + ], + "}", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > {a,*(b|{c,d})} hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > {a,*(b|{c,d})} hasMagic pre-generate 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > {a,*(b|{c,d})} parsed 1`] = ` +Array [ + Array [], + "{a,", + Array [ + "*", + Array [ + "b", + ], + Array [ + "{c,d}", + ], + ], + "}", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > {c*,./c*} hasMagic known 1`] = ` +true +` + +exports[`test/basic.js TAP basic tests > {c*,./c*} hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > {c*,./c*} parsed 1`] = ` +Array [ + Array [], + "{c*,./c*}", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > Å hasMagic known 1`] = ` +false +` + +exports[`test/basic.js TAP basic tests > Å hasMagic known 2`] = ` +false +` + +exports[`test/basic.js TAP basic tests > Å hasMagic known 3`] = ` +false +` + +exports[`test/basic.js TAP basic tests > Å hasMagic known 4`] = ` +false +` + +exports[`test/basic.js TAP basic tests > Å hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > Å hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > Å hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > Å hasMagic pre-generate 4`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > Å parsed 1`] = ` +Array [ + Array [], + "Å", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > Å parsed 2`] = ` +Array [ + Array [], + "Å", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > Å parsed 3`] = ` +Array [ + Array [], + "Å", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > Å parsed 4`] = ` +Array [ + Array [], + "Å", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > å hasMagic known 1`] = ` +false +` + +exports[`test/basic.js TAP basic tests > å hasMagic known 2`] = ` +false +` + +exports[`test/basic.js TAP basic tests > å hasMagic known 3`] = ` +false +` + +exports[`test/basic.js TAP basic tests > å hasMagic known 4`] = ` +false +` + +exports[`test/basic.js TAP basic tests > å hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > å hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > å hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > å hasMagic pre-generate 4`] = ` +undefined +` + +exports[`test/basic.js TAP basic tests > å parsed 1`] = ` +Array [ + Array [], + "å", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > å parsed 2`] = ` +Array [ + Array [], + "å", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > å parsed 3`] = ` +Array [ + Array [], + "å", + Object {}, +] +` + +exports[`test/basic.js TAP basic tests > å parsed 4`] = ` +Array [ + Array [], + "å", + Object {}, +] ` diff --git a/tap-snapshots/test/escape-has-magic.js.test.cjs b/tap-snapshots/test/escape-has-magic.js.test.cjs index bb82c23a..e907efb2 100644 --- a/tap-snapshots/test/escape-has-magic.js.test.cjs +++ b/tap-snapshots/test/escape-has-magic.js.test.cjs @@ -9,7 +9,29 @@ exports[`test/escape-has-magic.js TAP > !!a* 1`] = ` Array [ Array [ Array [ - /^(?=.)a[^/]*?$/, + /^a[^/]*?$/, + ], + ], + true, +] +` + +exports[`test/escape-has-magic.js TAP > !()y 1`] = ` +Array [ + Array [ + Array [ + /^(?!\\.)[^/]+?y$/, + ], + ], + true, +] +` + +exports[`test/escape-has-magic.js TAP > !()y 2`] = ` +Array [ + Array [ + Array [ + /^[^/]+?y$/, ], ], true, @@ -20,7 +42,7 @@ exports[`test/escape-has-magic.js TAP > !(.a|js)@(.*) 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)(?:(?!(?:\\.a|js)(?:\\.[^/]*?))[^/]*?)(?:\\.[^/]*?)$/, + /^(?:(?!(?:\\.a(?:\\.[^/]*?)(?:$|\\/)|js(?:\\.[^/]*?)(?:$|\\/)))(?!\\.)[^/]*?)(?:(?!\\.\\.?(?:$|\\/))\\.[^/]*?)$/, ], ], true, @@ -31,7 +53,7 @@ exports[`test/escape-has-magic.js TAP > !\\!a* 1`] = ` Array [ Array [ Array [ - /^(?=.)\\!a[^/]*?$/, + /^\\!a[^/]*?$/, ], ], true, @@ -42,7 +64,7 @@ exports[`test/escape-has-magic.js TAP > !a* 1`] = ` Array [ Array [ Array [ - /^(?=.)a[^/]*?$/, + /^a[^/]*?$/, ], ], true, @@ -53,7 +75,7 @@ exports[`test/escape-has-magic.js TAP > !a* 2`] = ` Array [ Array [ Array [ - /^(?=.)\\!a[^/]*?$/, + /^!a[^/]*?$/, ], ], true, @@ -71,7 +93,7 @@ exports[`test/escape-has-magic.js TAP > #* 1`] = ` Array [ Array [ Array [ - /^(?=.)\\#[^/]*?$/, + /^\\#[^/]*?$/, ], ], true, @@ -82,7 +104,7 @@ exports[`test/escape-has-magic.js TAP > * 1`] = ` Array [ Array [ Array [ - /^(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?$/, + /^(?!\\.\\.?(?:$|\\/))[^/]+?$/, ], ], true, @@ -93,7 +115,7 @@ exports[`test/escape-has-magic.js TAP > * 2`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/]*?$/, + /^(?!\\.)[^/]+?$/, ], ], true, @@ -104,7 +126,7 @@ exports[`test/escape-has-magic.js TAP > * 3`] = ` Array [ Array [ Array [ - /^(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?$/, + /^(?!\\.\\.?(?:$|\\/))[^/]+?$/, ], ], true, @@ -115,7 +137,7 @@ exports[`test/escape-has-magic.js TAP > *(a/b) 1`] = ` Array [ Array [ Array [ - /^(?=.)[^/]*?\\((?!\\.)a$/, + /^(?!\\.)[^/]*?\\(a$/, "b)", ], ], @@ -127,10 +149,10 @@ exports[`test/escape-has-magic.js TAP > *(a|{b),c)} 1`] = ` Array [ Array [ Array [ - /^(?=.)(?:(?!\\.)a|(?!\\.)b)*$/, + /^(?:a|b)*$/, ], Array [ - /^(?=.)(?:(?!\\.)a|(?!\\.)c)*$/, + /^(?:a|c)*$/, ], ], true, @@ -141,10 +163,10 @@ exports[`test/escape-has-magic.js TAP > *(a|{b,c}) 1`] = ` Array [ Array [ Array [ - /^(?=.)(?:(?!\\.)a|(?!\\.)b)*$/, + /^(?:a|b)*$/, ], Array [ - /^(?=.)(?:(?!\\.)a|(?!\\.)c)*$/, + /^(?:a|c)*$/, ], ], true, @@ -155,10 +177,10 @@ exports[`test/escape-has-magic.js TAP > *(a|{b|c,c}) 1`] = ` Array [ Array [ Array [ - /^(?=.)(?:(?!\\.)a|(?!\\.)b|(?!\\.)c)*$/, + /^(?:a|b|c)*$/, ], Array [ - /^(?=.)(?:(?!\\.)a|(?!\\.)c)*$/, + /^(?:a|c)*$/, ], ], true, @@ -169,10 +191,10 @@ exports[`test/escape-has-magic.js TAP > *(a|{b|c,c}) 2`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/]*?\\(a\\|b\\|c\\)$/, + /^(?!\\.)[^/]*?\\(a\\|b\\|c\\)$/, ], Array [ - /^(?!\\.)(?=.)[^/]*?\\(a\\|c\\)$/, + /^(?!\\.)[^/]*?\\(a\\|c\\)$/, ], ], true, @@ -216,7 +238,7 @@ exports[`test/escape-has-magic.js TAP > *******? 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]$/, + /^(?!\\.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]$/, ], ], true, @@ -227,7 +249,7 @@ exports[`test/escape-has-magic.js TAP > *******c 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c$/, + /^(?!\\.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c$/, ], ], true, @@ -238,7 +260,7 @@ exports[`test/escape-has-magic.js TAP > *****?? 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]$/, + /^(?!\\.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]$/, ], ], true, @@ -273,9 +295,9 @@ exports[`test/escape-has-magic.js TAP > **/.x/** 2`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/]*?$/, + /^(?!\\.)[^/]+?$/, ".x", - /^(?!\\.)(?=.)[^/]*?$/, + /^(?!\\.)[^/]+?$/, ], ], true, @@ -286,7 +308,7 @@ exports[`test/escape-has-magic.js TAP > *.!(js) 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/]*?\\.(?:(?!(?:js)(?:$|\\/))[^/]*?)$/, + /^(?!\\.)[^/]*?\\.(?:(?!(?:js(?:$|\\/)))[^/]*?)$/, ], ], true, @@ -297,7 +319,7 @@ exports[`test/escape-has-magic.js TAP > *.* 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/]*?\\.[^/]*?$/, + /^(?!\\.)[^/]*?\\.[^/]*?$/, ], ], true, @@ -308,7 +330,29 @@ exports[`test/escape-has-magic.js TAP > *.* 2`] = ` Array [ Array [ Array [ - /^(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\.[^/]*?$/, + /^(?!\\.\\.?(?:$|\\/))[^/]*?\\.[^/]*?$/, + ], + ], + true, +] +` + +exports[`test/escape-has-magic.js TAP > *.Y 1`] = ` +Array [ + Array [ + Array [ + /^(?!\\.)[^/]*?\\.Y$/i, + ], + ], + true, +] +` + +exports[`test/escape-has-magic.js TAP > *.Z 1`] = ` +Array [ + Array [ + Array [ + /^(?!\\.\\.?(?:$|\\/))[^/]*?\\.Z$/i, ], ], true, @@ -319,7 +363,7 @@ exports[`test/escape-has-magic.js TAP > *.\\* 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/]*?\\.\\*$/, + /^(?!\\.)[^/]*?\\.\\*$/, ], ], true, @@ -330,7 +374,7 @@ exports[`test/escape-has-magic.js TAP > *.js 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/]*?\\.js$/, + /^(?!\\.)[^/]*?\\.js$/, ], ], true, @@ -341,7 +385,7 @@ exports[`test/escape-has-magic.js TAP > *.js 2`] = ` Array [ Array [ Array [ - /^(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\.js$/, + /^(?!\\.\\.?(?:$|\\/))[^/]*?\\.js$/, ], ], true, @@ -352,7 +396,7 @@ exports[`test/escape-has-magic.js TAP > *.js 3`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/]*?\\.js$/i, + /^(?!\\.)[^/]*?\\.js$/i, ], ], true, @@ -363,7 +407,29 @@ exports[`test/escape-has-magic.js TAP > *.js 4`] = ` Array [ Array [ Array [ - /^(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\.js$/i, + /^(?!\\.\\.?(?:$|\\/))[^/]*?\\.js$/i, + ], + ], + true, +] +` + +exports[`test/escape-has-magic.js TAP > *.y 1`] = ` +Array [ + Array [ + Array [ + /^(?!\\.)[^/]*?\\.y$/, + ], + ], + true, +] +` + +exports[`test/escape-has-magic.js TAP > *.z 1`] = ` +Array [ + Array [ + Array [ + /^(?!\\.\\.?(?:$|\\/))[^/]*?\\.z$/, ], ], true, @@ -374,9 +440,9 @@ exports[`test/escape-has-magic.js TAP > */man*/bash.* 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/]*?$/, - /^(?=.)man[^/]*?$/, - /^(?=.)bash\\.[^/]*?$/, + /^(?!\\.)[^/]+?$/, + /^man[^/]*?$/, + /^bash\\.[^/]*?$/, ], ], true, @@ -387,7 +453,7 @@ exports[`test/escape-has-magic.js TAP > *\\!* 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/]*?\\![^/]*?$/, + /^(?!\\.)[^/]*?\\![^/]*?$/, ], ], true, @@ -398,7 +464,7 @@ exports[`test/escape-has-magic.js TAP > *\\\\!* 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/]*?\\\\\\![^/]*?$/, + /^(?!\\.)[^/]*?\\\\![^/]*?$/, ], ], true, @@ -409,7 +475,7 @@ exports[`test/escape-has-magic.js TAP > *c*?** 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/]*?c[^/]*?[^/][^/]*?[^/]*?$/, + /^(?!\\.)[^/]*?c[^/]*?[^/][^/]*?[^/]*?$/, ], ], true, @@ -420,7 +486,29 @@ exports[`test/escape-has-magic.js TAP > *js 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/]*?js$/, + /^(?!\\.)[^/]*?js$/, + ], + ], + true, +] +` + +exports[`test/escape-has-magic.js TAP > +() 1`] = ` +Array [ + Array [ + Array [ + "+()", + ], + ], + false, +] +` + +exports[`test/escape-has-magic.js TAP > +()*(x|a) 1`] = ` +Array [ + Array [ + Array [ + /^(?:)+(?:x|a)*$/, ], ], true, @@ -431,7 +519,7 @@ exports[`test/escape-has-magic.js TAP > +(a)!(b)+(c) 1`] = ` Array [ Array [ Array [ - /^(?=.)(?:(?!\\.)a)+(?:(?!(?:b)(?:c)+)[^/]*?)(?:c)+$/, + /^(?:a)+(?:(?!(?:b(?:c)+(?:$|\\/)))[^/]*?)(?:c)+$/, ], ], true, @@ -442,7 +530,18 @@ exports[`test/escape-has-magic.js TAP > +(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\ Array [ Array [ Array [ - /^(?=.)\\+\\((?!\\.)a\\|(?!\\.)[^/]*?\\|c\\\\\\\\\\|(?!\\.)d\\\\\\\\\\|e\\\\\\\\\\\\\\\\\\|(?!\\.)f\\\\\\\\\\\\\\\\\\|g$/, + /^\\+\\(a\\|[^/]*?|c\\\\\\|d\\\\|e\\\\\\\\\\|f\\\\\\\\|g$/, + ], + ], + true, +] +` + +exports[`test/escape-has-magic.js TAP > +(x|a[^)]y) 1`] = ` +Array [ + Array [ + Array [ + /^(?:x|a[^)]y)+$/, ], ], true, @@ -453,7 +552,7 @@ exports[`test/escape-has-magic.js TAP > .* 1`] = ` Array [ Array [ Array [ - /^(?=.)\\.[^/]*?$/, + /^(?!\\.\\.?(?:$|\\/))\\.[^/]*?$/, ], ], true, @@ -464,7 +563,7 @@ exports[`test/escape-has-magic.js TAP > .* 2`] = ` Array [ Array [ Array [ - /^(?=.)\\.[^/]*?$/, + /^(?!\\.\\.?(?:$|\\/))\\.[^/]*?$/, ], ], true, @@ -477,7 +576,7 @@ Array [ Array [ ".x", Symbol(globstar **), - /^(?!\\.)(?=.)[^/]*?$/, + /^(?!\\.)[^/]+?$/, ], ], true, @@ -490,7 +589,7 @@ Array [ Array [ ".x", Symbol(globstar **), - /^(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?$/, + /^(?!\\.\\.?(?:$|\\/))[^/]+?$/, ], ], true, @@ -503,7 +602,7 @@ Array [ Array [ ".x", Symbol(globstar **), - /^(?!\\.)(?=.)[^/]*?$/, + /^(?!\\.)[^/]+?$/, ], ], true, @@ -516,7 +615,7 @@ Array [ Array [ ".x", Symbol(globstar **), - /^(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?$/, + /^(?!\\.\\.?(?:$|\\/))[^/]+?$/, ], ], true, @@ -529,7 +628,7 @@ Array [ Array [ ".x", Symbol(globstar **), - /^(?!\\.)(?=.)[^/]*?$/, + /^(?!\\.)[^/]+?$/, Symbol(globstar **), ], ], @@ -543,7 +642,7 @@ Array [ Array [ ".x", Symbol(globstar **), - /^(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?$/, + /^(?!\\.\\.?(?:$|\\/))[^/]+?$/, Symbol(globstar **), ], ], @@ -556,7 +655,7 @@ Array [ Array [ Array [ ".x", - /^(?!\\.)(?=.)[^/]*?$/, + /^(?!\\.)[^/]+?$/, Symbol(globstar **), ], ], @@ -569,7 +668,7 @@ Array [ Array [ Array [ ".x", - /^(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?$/, + /^(?!\\.\\.?(?:$|\\/))[^/]+?$/, Symbol(globstar **), ], ], @@ -582,7 +681,7 @@ Array [ Array [ Array [ ".x", - /^(?!\\.)(?=.)[^/]*?$/, + /^(?!\\.)[^/]+?$/, Symbol(globstar **), ], ], @@ -595,7 +694,7 @@ Array [ Array [ Array [ ".x", - /^(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?$/, + /^(?!\\.\\.?(?:$|\\/))[^/]+?$/, Symbol(globstar **), ], ], @@ -610,7 +709,7 @@ Array [ "", "^root:", "{s", - /^(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$$/, + /^\\^[^:][^/]*?:[^:][^/]*?:\\([^:][^/]*?\\)\\.[^/]*?\\$$/, "\\u0001", "", ], @@ -626,7 +725,7 @@ Array [ "", "^root:", "{s", - /^(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$$/, + /^\\^[^:][^/]*?:[^:][^/]*?:\\([^:][^/]*?\\)\\.[^/]*?\\$$/, "1", "", ], @@ -639,7 +738,29 @@ exports[`test/escape-has-magic.js TAP > ? 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/]$/, + /^(?!\\.)[^/]$/, + ], + ], + true, +] +` + +exports[`test/escape-has-magic.js TAP > ?(x-!(y)|z) 1`] = ` +Array [ + Array [ + Array [ + /^(?:x\\-(?:(?!(?:y(?:$|\\/)))[^/]*?)|z)?$/, + ], + ], + true, +] +` + +exports[`test/escape-has-magic.js TAP > ?(x-!(y)|z)b 1`] = ` +Array [ + Array [ + Array [ + /^(?:x\\-(?:(?!(?:yb(?:$|\\/)))[^/]*?)|z)?b$/, ], ], true, @@ -650,7 +771,7 @@ exports[`test/escape-has-magic.js TAP > ?************c****?**** 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?$/, + /^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?$/, ], ], true, @@ -661,7 +782,7 @@ exports[`test/escape-has-magic.js TAP > ?*****?? 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]$/, + /^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]$/, ], ], true, @@ -672,7 +793,7 @@ exports[`test/escape-has-magic.js TAP > ?*****?c 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c$/, + /^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c$/, ], ], true, @@ -683,7 +804,7 @@ exports[`test/escape-has-magic.js TAP > ?***?**** 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?$/, + /^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?$/, ], ], true, @@ -694,7 +815,7 @@ exports[`test/escape-has-magic.js TAP > ?***?****? 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]$/, + /^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]$/, ], ], true, @@ -705,7 +826,7 @@ exports[`test/escape-has-magic.js TAP > ?***?****c 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c$/, + /^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c$/, ], ], true, @@ -716,7 +837,7 @@ exports[`test/escape-has-magic.js TAP > ?.js 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/]\\.js$/, + /^(?!\\.)[^/]\\.js$/, ], ], true, @@ -727,7 +848,7 @@ exports[`test/escape-has-magic.js TAP > ?.js 2`] = ` Array [ Array [ Array [ - /^(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]\\.js$/, + /^(?!\\.\\.?(?:$|\\/))[^/]\\.js$/, ], ], true, @@ -738,7 +859,7 @@ exports[`test/escape-has-magic.js TAP > ?.js 3`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/]\\.js$/i, + /^(?!\\.)[^/]\\.js$/i, ], ], true, @@ -749,7 +870,7 @@ exports[`test/escape-has-magic.js TAP > ?.js 4`] = ` Array [ Array [ Array [ - /^(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]\\.js$/i, + /^(?!\\.\\.?(?:$|\\/))[^/]\\.js$/i, ], ], true, @@ -760,7 +881,7 @@ exports[`test/escape-has-magic.js TAP > ?? 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/][^/]$/, + /^(?!\\.)[^/][^/]$/, ], ], true, @@ -771,7 +892,7 @@ exports[`test/escape-has-magic.js TAP > ?? 2`] = ` Array [ Array [ Array [ - /^(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/][^/]$/, + /^(?!\\.\\.?(?:$|\\/))[^/][^/]$/, ], ], true, @@ -782,7 +903,7 @@ exports[`test/escape-has-magic.js TAP > ?? 3`] = ` Array [ Array [ Array [ - /^(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/][^/]$/i, + /^(?!\\.\\.?(?:$|\\/))[^/][^/]$/i, ], ], true, @@ -793,7 +914,7 @@ exports[`test/escape-has-magic.js TAP > ?? 4`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/][^/]$/i, + /^(?!\\.)[^/][^/]$/i, ], ], true, @@ -804,7 +925,7 @@ exports[`test/escape-has-magic.js TAP > ??**********?****? 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]$/, + /^(?!\\.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]$/, ], ], true, @@ -815,7 +936,7 @@ exports[`test/escape-has-magic.js TAP > ??**********?****c 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c$/, + /^(?!\\.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c$/, ], ], true, @@ -826,7 +947,7 @@ exports[`test/escape-has-magic.js TAP > ??? 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/][^/][^/]$/, + /^(?!\\.)[^/][^/][^/]$/, ], ], true, @@ -837,7 +958,7 @@ exports[`test/escape-has-magic.js TAP > ??? 2`] = ` Array [ Array [ Array [ - /^(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/][^/][^/]$/, + /^(?!\\.\\.?(?:$|\\/))[^/][^/][^/]$/, ], ], true, @@ -848,7 +969,7 @@ exports[`test/escape-has-magic.js TAP > ?js 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^/]js$/, + /^(?!\\.)[^/]js$/, ], ], true, @@ -859,7 +980,7 @@ exports[`test/escape-has-magic.js TAP > ?js 2`] = ` Array [ Array [ Array [ - /^(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]js$/, + /^(?!\\.\\.?(?:$|\\/))[^/]js$/, ], ], true, @@ -870,7 +991,7 @@ exports[`test/escape-has-magic.js TAP > ?js 3`] = ` Array [ Array [ Array [ - /^(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]js$/i, + /^(?!\\.\\.?(?:$|\\/))[^/]js$/i, ], ], true, @@ -881,7 +1002,7 @@ exports[`test/escape-has-magic.js TAP > @(*|.*) 1`] = ` Array [ Array [ Array [ - /^(?=.)(?:(?!\\.)[^/]*?|\\.[^/]*?)$/, + /^(?:(?!\\.)[^/]+?|(?!\\.\\.?(?:$|\\/))\\.[^/]*?)$/, ], ], true, @@ -892,7 +1013,7 @@ exports[`test/escape-has-magic.js TAP > @(*|a) 1`] = ` Array [ Array [ Array [ - /^(?=.)(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))[^/]*?|(?!(?:^|\\/)\\.{1,2}(?:$|\\/))a)$/, + /^(?:(?!\\.\\.?(?:$|\\/))[^/]+?|a)$/, ], ], true, @@ -903,7 +1024,7 @@ exports[`test/escape-has-magic.js TAP > @(.*) 1`] = ` Array [ Array [ Array [ - /^(?=.)(?:\\.[^/]*?)$/, + /^(?:(?!\\.\\.?(?:$|\\/))\\.[^/]*?)$/, ], ], true, @@ -914,7 +1035,7 @@ exports[`test/escape-has-magic.js TAP > @(.*) 2`] = ` Array [ Array [ Array [ - /^(?=.)(?:\\.[^/]*?)$/, + /^(?:(?!\\.\\.?(?:$|\\/))\\.[^/]*?)$/, ], ], true, @@ -925,7 +1046,7 @@ exports[`test/escape-has-magic.js TAP > @(.*|*) 1`] = ` Array [ Array [ Array [ - /^(?=.)(?:\\.[^/]*?|(?!\\.)[^/]*?)$/, + /^(?:(?!\\.\\.?(?:$|\\/))\\.[^/]*?|(?!\\.)[^/]+?)$/, ], ], true, @@ -936,7 +1057,7 @@ exports[`test/escape-has-magic.js TAP > @(.*|js) 1`] = ` Array [ Array [ Array [ - /^(?=.)(?:\\.[^/]*?|(?!\\.)js)$/, + /^(?:(?!\\.\\.?(?:$|\\/))\\.[^/]*?|js)$/, ], ], true, @@ -947,7 +1068,7 @@ exports[`test/escape-has-magic.js TAP > @(a|a[(])b 1`] = ` Array [ Array [ Array [ - /^(?=.)(?:(?!\\.)a|(?!\\.)a\\()b$/, + /^(?:a|a\\()b$/, ], ], true, @@ -958,7 +1079,7 @@ exports[`test/escape-has-magic.js TAP > @(a|a[)])b 1`] = ` Array [ Array [ Array [ - /^(?=.)(?:(?!\\.)a|(?!\\.)a\\))b$/, + /^(?:a|a\\))b$/, ], ], true, @@ -969,7 +1090,7 @@ exports[`test/escape-has-magic.js TAP > @(js|.*) 1`] = ` Array [ Array [ Array [ - /^(?=.)(?:(?!\\.)js|\\.[^/]*?)$/, + /^(?:js|(?!\\.\\.?(?:$|\\/))\\.[^/]*?)$/, ], ], true, @@ -980,7 +1101,7 @@ exports[`test/escape-has-magic.js TAP > X* 1`] = ` Array [ Array [ Array [ - /^(?=.)X[^/]*?$/, + /^X[^/]*?$/, ], ], true, @@ -991,7 +1112,7 @@ exports[`test/escape-has-magic.js TAP > X* 2`] = ` Array [ Array [ Array [ - /^(?=.)X[^/]*?$/, + /^X[^/]*?$/, ], ], true, @@ -1024,7 +1145,7 @@ exports[`test/escape-has-magic.js TAP > [!a* 1`] = ` Array [ Array [ Array [ - /^(?=.)\\[\\!a[^/]*?$/, + /^\\[!a[^/]*?$/, ], ], true, @@ -1035,7 +1156,7 @@ exports[`test/escape-has-magic.js TAP > [#a* 1`] = ` Array [ Array [ Array [ - /^(?=.)\\[\\#a[^/]*?$/, + /^\\[\\#a[^/]*?$/, ], ], true, @@ -1046,7 +1167,7 @@ exports[`test/escape-has-magic.js TAP > [* 1`] = ` Array [ Array [ Array [ - /^(?=.)\\[[^/]*?$/, + /^\\[[^/]*?$/, ], ], true, @@ -1057,7 +1178,7 @@ exports[`test/escape-has-magic.js TAP > [-abc] 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[\\-abc]$/, + /^(?!\\.)[\\-abc]$/, ], ], true, @@ -1068,7 +1189,7 @@ exports[`test/escape-has-magic.js TAP > [[:alnum:]][[:alnum:]][[:alnum:]][[:alnu Array [ Array [ Array [ - /^(?!\\.)(?=.)[\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}]$/u, + /^(?!\\.)[\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}]$/u, ], ], true, @@ -1079,7 +1200,7 @@ exports[`test/escape-has-magic.js TAP > [[:alpha:]][[:alpha:]][[:alpha:]][[:alph Array [ Array [ Array [ - /^(?!\\.)(?=.)[\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}]$/u, + /^(?!\\.)[\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}]$/u, ], ], true, @@ -1090,7 +1211,7 @@ exports[`test/escape-has-magic.js TAP > [[:ascii:]][[:ascii:]][[:ascii:]][[:asci Array [ Array [ Array [ - /^(?!\\.)(?=.)[\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f]$/, + /^(?!\\.)[\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f]$/, ], ], true, @@ -1101,7 +1222,7 @@ exports[`test/escape-has-magic.js TAP > [[:graph:][:digit:]]f* 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)([\\p{Nd}]|[^\\p{Z}\\p{C}])f[^/]*?$/u, + /^([\\p{Nd}]|[^\\p{Z}\\p{C}])f[^/]*?$/u, ], ], true, @@ -1112,7 +1233,7 @@ exports[`test/escape-has-magic.js TAP > [[:graph:]]f* 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^\\p{Z}\\p{C}]f[^/]*?$/u, + /^(?!\\.)[^\\p{Z}\\p{C}]f[^/]*?$/u, ], ], true, @@ -1123,7 +1244,7 @@ exports[`test/escape-has-magic.js TAP > [[:xdigit:]][[:xdigit:]]??? 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[A-Fa-f0-9][A-Fa-f0-9][^/][^/][^/]$/, + /^(?!\\.)[A-Fa-f0-9][A-Fa-f0-9][^/][^/][^/]$/, ], ], true, @@ -1134,7 +1255,7 @@ exports[`test/escape-has-magic.js TAP > [[:xdigit:]][[:xdigit:]][[:xdigit:]][[:x Array [ Array [ Array [ - /^(?!\\.)(?=.)[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$/, + /^(?!\\.)[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$/, ], ], true, @@ -1156,7 +1277,7 @@ exports[`test/escape-has-magic.js TAP > [\\-\\]] 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[\\-\\]]$/, + /^(?!\\.)[\\-\\]]$/, ], ], true, @@ -1178,7 +1299,7 @@ exports[`test/escape-has-magic.js TAP > [\\b-a] 1`] = ` Array [ Array [ Array [ - /^(?=.)$.$/, + /^$.$/, ], ], true, @@ -1189,7 +1310,7 @@ exports[`test/escape-has-magic.js TAP > [\\z-a] 1`] = ` Array [ Array [ Array [ - /^(?=.)$.$/, + /^$.$/, ], ], true, @@ -1211,7 +1332,7 @@ exports[`test/escape-has-magic.js TAP > []+*] 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[\\]+*]$/, + /^(?!\\.)[\\]+*]$/, ], ], true, @@ -1222,7 +1343,7 @@ exports[`test/escape-has-magic.js TAP > []-] 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[\\]\\-]$/, + /^(?!\\.)[\\]\\-]$/, ], ], true, @@ -1244,7 +1365,7 @@ exports[`test/escape-has-magic.js TAP > [^a-c]* 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[^a-c][^/]*?$/, + /^(?!\\.)[^a-c][^/]*?$/, ], ], true, @@ -1255,7 +1376,7 @@ exports[`test/escape-has-magic.js TAP > [a-0][a-Ā] 1`] = ` Array [ Array [ Array [ - /^(?=.)$.$/, + /^$.$/, ], ], true, @@ -1266,7 +1387,7 @@ exports[`test/escape-has-magic.js TAP > [a-[:alpha:]*] 1`] = ` Array [ Array [ Array [ - /^(?=.)$.$/, + /^$.$/, ], ], true, @@ -1277,7 +1398,7 @@ exports[`test/escape-has-magic.js TAP > [a-b-c] 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[a-b\\-c]$/, + /^(?!\\.)[a-b\\-c]$/, ], ], true, @@ -1288,7 +1409,7 @@ exports[`test/escape-has-magic.js TAP > [a-c]b* 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[a-c]b[^/]*?$/, + /^(?!\\.)[a-c]b[^/]*?$/, ], ], true, @@ -1299,7 +1420,7 @@ exports[`test/escape-has-magic.js TAP > [a-y]*[^c] 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[a-y][^/]*?[^c]$/, + /^(?!\\.)[a-y][^/]*?[^c]$/, ], ], true, @@ -1310,7 +1431,7 @@ exports[`test/escape-has-magic.js TAP > [a-z] 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[a-z]$/, + /^(?!\\.)[a-z]$/, ], ], true, @@ -1332,7 +1453,7 @@ exports[`test/escape-has-magic.js TAP > [abc-] 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[abc\\-]$/, + /^(?!\\.)[abc\\-]$/, ], ], true, @@ -1343,7 +1464,7 @@ exports[`test/escape-has-magic.js TAP > [f-fz-a]* 1`] = ` Array [ Array [ Array [ - /^(?=.)f[^/]*?$/, + /^f[^/]*?$/, ], ], true, @@ -1354,7 +1475,7 @@ exports[`test/escape-has-magic.js TAP > [f-gz-a]* 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[f-g][^/]*?$/, + /^(?!\\.)[f-g][^/]*?$/, ], ], true, @@ -1365,7 +1486,7 @@ exports[`test/escape-has-magic.js TAP > [fz-a]* 1`] = ` Array [ Array [ Array [ - /^(?=.)f[^/]*?$/, + /^f[^/]*?$/, ], ], true, @@ -1376,7 +1497,7 @@ exports[`test/escape-has-magic.js TAP > [ia]?[ck] 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[ia][^/][ck]$/i, + /^(?!\\.)[ia][^/][ck]$/i, ], ], true, @@ -1387,7 +1508,7 @@ exports[`test/escape-has-magic.js TAP > [z-a] 1`] = ` Array [ Array [ Array [ - /^(?=.)$.$/, + /^$.$/, ], ], true, @@ -1398,7 +1519,7 @@ exports[`test/escape-has-magic.js TAP > [z-a]* 1`] = ` Array [ Array [ Array [ - /^(?=.)$.$/, + /^$.$/, ], ], true, @@ -1409,7 +1530,7 @@ exports[`test/escape-has-magic.js TAP > [z-af]* 1`] = ` Array [ Array [ Array [ - /^(?=.)f[^/]*?$/, + /^f[^/]*?$/, ], ], true, @@ -1420,7 +1541,7 @@ exports[`test/escape-has-magic.js TAP > [z\\-a] 1`] = ` Array [ Array [ Array [ - /^(?!\\.)(?=.)[z\\-a]$/, + /^(?!\\.)[z\\-a]$/, ], ], true, @@ -1453,7 +1574,7 @@ exports[`test/escape-has-magic.js TAP > \\** 1`] = ` Array [ Array [ Array [ - /^(?=.)\\*[^/]*?$/, + /^\\*[^/]*?$/, ], ], true, @@ -1476,7 +1597,7 @@ Array [ Array [ Array [ "..", - /^(?!\\.)(?=.)[^/]*?$/, + /^(?!\\.)[^/]+?$/, "", ], ], @@ -1488,7 +1609,7 @@ exports[`test/escape-has-magic.js TAP > a* 1`] = ` Array [ Array [ Array [ - /^(?=.)a[^/]*?$/, + /^a[^/]*?$/, ], ], true, @@ -1499,7 +1620,7 @@ exports[`test/escape-has-magic.js TAP > a********???******* 1`] = ` Array [ Array [ Array [ - /^(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?$/, + /^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?$/, ], ], true, @@ -1510,7 +1631,7 @@ exports[`test/escape-has-magic.js TAP > a*****?c 1`] = ` Array [ Array [ Array [ - /^(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c$/, + /^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c$/, ], ], true, @@ -1521,7 +1642,7 @@ exports[`test/escape-has-magic.js TAP > a*****c*?** 1`] = ` Array [ Array [ Array [ - /^(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?$/, + /^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?$/, ], ], true, @@ -1532,7 +1653,7 @@ exports[`test/escape-has-magic.js TAP > a****c**?**??***** 1`] = ` Array [ Array [ Array [ - /^(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?$/, + /^a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?$/, ], ], true, @@ -1543,7 +1664,7 @@ exports[`test/escape-has-magic.js TAP > a***c 1`] = ` Array [ Array [ Array [ - /^(?=.)a[^/]*?[^/]*?[^/]*?c$/, + /^a[^/]*?[^/]*?[^/]*?c$/, ], ], true, @@ -1554,7 +1675,7 @@ exports[`test/escape-has-magic.js TAP > a**?**cd**?**??***k 1`] = ` Array [ Array [ Array [ - /^(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k$/, + /^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k$/, ], ], true, @@ -1565,7 +1686,7 @@ exports[`test/escape-has-magic.js TAP > a**?**cd**?**??***k** 1`] = ` Array [ Array [ Array [ - /^(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?$/, + /^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?$/, ], ], true, @@ -1576,7 +1697,7 @@ exports[`test/escape-has-magic.js TAP > a**?**cd**?**??k 1`] = ` Array [ Array [ Array [ - /^(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k$/, + /^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k$/, ], ], true, @@ -1587,7 +1708,7 @@ exports[`test/escape-has-magic.js TAP > a**?**cd**?**??k*** 1`] = ` Array [ Array [ Array [ - /^(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?$/, + /^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?$/, ], ], true, @@ -1598,7 +1719,7 @@ exports[`test/escape-has-magic.js TAP > a*[^c] 1`] = ` Array [ Array [ Array [ - /^(?=.)a[^/]*?[^c]$/, + /^a[^/]*?[^c]$/, ], ], true, @@ -1609,7 +1730,7 @@ exports[`test/escape-has-magic.js TAP > a*cd**?**??k 1`] = ` Array [ Array [ Array [ - /^(?=.)a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k$/, + /^a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k$/, ], ], true, @@ -1621,7 +1742,7 @@ Array [ Array [ Array [ "a", - /^(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?$/, + /^(?!\\.\\.?(?:$|\\/))[^/]+?$/, "b", ], ], @@ -1634,7 +1755,7 @@ Array [ Array [ Array [ "a", - /^(?!\\.)(?=.)[^/]*?$/, + /^(?!\\.)[^/]+?$/, "b", ], ], @@ -1647,7 +1768,7 @@ Array [ Array [ Array [ "a", - /^(?=.)\\.[^/]*?$/, + /^(?!\\.\\.?(?:$|\\/))\\.[^/]*?$/, "b", ], ], @@ -1660,7 +1781,7 @@ Array [ Array [ Array [ "a", - /^(?=.)\\.[^/]*?$/, + /^(?!\\.\\.?(?:$|\\/))\\.[^/]*?$/, "b", ], ], @@ -1686,7 +1807,7 @@ Array [ Array [ Array [ "a", - /^(?!\\.)(?=.)[2010T00:23:08.647Z]$/, + /^(?!\\.)[2010T00:23:08.647Z]$/, "z", ], ], @@ -1698,7 +1819,7 @@ exports[`test/escape-has-magic.js TAP > a?b 1`] = ` Array [ Array [ Array [ - /^(?=.)a[^/]b$/, + /^a[^/]b$/, ], ], true, @@ -1709,7 +1830,7 @@ exports[`test/escape-has-magic.js TAP > a?c 1`] = ` Array [ Array [ Array [ - /^(?=.)a[^/]c$/, + /^a[^/]c$/, ], ], true, @@ -1720,7 +1841,7 @@ exports[`test/escape-has-magic.js TAP > a[X-]b 1`] = ` Array [ Array [ Array [ - /^(?=.)a[X\\-]b$/, + /^a[X\\-]b$/, ], ], true, @@ -1753,8 +1874,8 @@ exports[`test/escape-has-magic.js TAP > a\\*?/* 1`] = ` Array [ Array [ Array [ - /^(?=.)a\\*[^/]$/, - /^(?!\\.)(?=.)[^/]*?$/, + /^a\\*[^/]$/, + /^(?!\\.)[^/]+?$/, ], ], true, @@ -1766,7 +1887,7 @@ Array [ Array [ Array [ "a*b", - /^(?!\\.)(?=.)[^/]*?$/, + /^(?!\\.)[^/]+?$/, ], ], true, @@ -1788,7 +1909,7 @@ exports[`test/escape-has-magic.js TAP > ab* 1`] = ` Array [ Array [ Array [ - /^(?=.)ab[^/]*?$/i, + /^ab[^/]*?$/i, ], ], true, @@ -1799,7 +1920,7 @@ exports[`test/escape-has-magic.js TAP > b*/ 1`] = ` Array [ Array [ Array [ - /^(?=.)b[^/]*?$/, + /^b[^/]*?$/, "", ], ], @@ -1811,7 +1932,7 @@ exports[`test/escape-has-magic.js TAP > c* 1`] = ` Array [ Array [ Array [ - /^(?=.)c[^/]*?$/, + /^c[^/]*?$/, ], ], true, @@ -1843,7 +1964,7 @@ Array [ Array [ Array [ "s", - /^(?=.)\\.\\.[^/]*?$/, + /^(?!\\.\\.?(?:$|\\/))\\.\\.[^/]*?$/, "", ], ], @@ -1883,7 +2004,7 @@ Array [ Array [ Array [ "x", - /^(?!\\.)(?=.)[^/]*?$/, + /^(?!\\.)[^/]+?$/, "a", "b", "c", @@ -1898,10 +2019,10 @@ Array [ Array [ Array [ "", - /^(?!\\.)(?=.)[^/]*?$/, + /^(?!\\.)[^/]+?$/, ], Array [ - /^(?!\\.)(?=.)[^/]*?$/, + /^(?!\\.)[^/]+?$/, ], ], true, @@ -1913,10 +2034,10 @@ Array [ Array [ Array [ "", - /^(?!\\.)(?=.)[^/]$/, + /^(?!\\.)[^/]$/, ], Array [ - /^(?!\\.)(?=.)[^/]*?$/, + /^(?!\\.)[^/]+?$/, ], ], true, @@ -1930,7 +2051,7 @@ Array [ "a", ], Array [ - /^(?=.)[^/]*?\\((?!\\.)b\\|(?!\\.)c$/, + /^(?!\\.)[^/]*?\\(b\\|c$/, ], Array [ "d)", @@ -1947,10 +2068,10 @@ Array [ "a", ], Array [ - /^(?=.)(?:(?!\\.)b|(?!\\.)c)*$/, + /^(?:b|c)*$/, ], Array [ - /^(?=.)(?:(?!\\.)b|(?!\\.)d)*$/, + /^(?:b|d)*$/, ], ], true, @@ -1961,11 +2082,11 @@ exports[`test/escape-has-magic.js TAP > {c*,./c*} 1`] = ` Array [ Array [ Array [ - /^(?=.)c[^/]*?$/, + /^c[^/]*?$/, ], Array [ ".", - /^(?=.)c[^/]*?$/, + /^c[^/]*?$/, ], ], true, diff --git a/tap-snapshots/test/optimization-level-0.ts.test.cjs b/tap-snapshots/test/optimization-level-0.ts.test.cjs index a56217a1..e8ed2ccf 100644 --- a/tap-snapshots/test/optimization-level-0.ts.test.cjs +++ b/tap-snapshots/test/optimization-level-0.ts.test.cjs @@ -5,12 +5,205 @@ * Make sure to inspect the output below. Do not ignore changes! */ 'use strict' +exports[`test/optimization-level-0.ts TAP basic tests > hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > parsed 1`] = ` +Array [ + Array [], + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > !!a* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > !!a* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > !!a* parsed 1`] = ` +Array [ + Array [], + "!!a*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > !()y hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > !()y hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > !()y hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > !()y hasMagic pre-generate 2`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > !()y parsed 1`] = ` +Array [ + Array [], + Array [ + "!", + Array [ + Array [], + "y", + Object {}, + ], + ], + "y", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > !()y parsed 2`] = ` +Array [ + Array [], + Array [ + "!", + Array [ + Array [], + "y", + Object {}, + ], + ], + "y", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > !(.a|js)@(.*) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > !(.a|js)@(.*) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > !(.a|js)@(.*) parsed 1`] = ` +Array [ + Array [], + Array [ + "!", + Array [ + Array [], + ".a", + Array [ + "@", + Array [ + ".*", + ], + ], + Object {}, + ], + Array [ + Array [], + "js", + Array [ + "@", + Array [ + ".*", + ], + ], + Object {}, + ], + ], + Array [ + "@", + Array [ + Array [], + ".*", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > !\\!a* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > !\\!a* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > !\\!a* parsed 1`] = ` +Array [ + Array [], + "!\\\\!a*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > !a* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > !a* hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > !a* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > !a* hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > !a* parsed 1`] = ` +Array [ + Array [], + "!a*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > !a* parsed 2`] = ` +Array [ + Array [], + "!a*", + Object {}, +] +` + exports[`test/optimization-level-0.ts TAP basic tests > "!!a*" ["a!b"] 1`] = ` Array [ "a!b", ] ` +exports[`test/optimization-level-0.ts TAP basic tests > "!()y" [".y","a.y","ay","x.y","xy"] 1`] = ` +Array [ + ".y", + "a.y", + "ay", + "x.y", + "xy", +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > "!()y" ["a.y","ay","x.y","xy"] 1`] = ` +Array [ + "a.y", + "ay", + "x.y", + "xy", +] +` + exports[`test/optimization-level-0.ts TAP basic tests > "!(.a|js)@(.*)" ["a.js"] 1`] = ` Array [ "a.js", @@ -260,6 +453,21 @@ Array [ ] ` +exports[`test/optimization-level-0.ts TAP basic tests > "*.Y" ["a.y","x.y"] 1`] = ` +Array [ + "a.y", + "x.y", +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > "*.Z" [".z","a.z","x.z"] 1`] = ` +Array [ + ".z", + "a.z", + "x.z", +] +` + exports[`test/optimization-level-0.ts TAP basic tests > "*.\\\\*" ["r.*"] 1`] = ` Array [ "r.*", @@ -298,6 +506,21 @@ Array [ ] ` +exports[`test/optimization-level-0.ts TAP basic tests > "*.y" ["a.y","x.y"] 1`] = ` +Array [ + "a.y", + "x.y", +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > "*.z" [".z","a.z","x.z"] 1`] = ` +Array [ + ".z", + "a.z", + "x.z", +] +` + exports[`test/optimization-level-0.ts TAP basic tests > "*/man*/bash.*" ["man/man1/bash.1"] 1`] = ` Array [ "man/man1/bash.1", @@ -325,6 +548,19 @@ Array [ ] ` +exports[`test/optimization-level-0.ts TAP basic tests > "+()" ["+()"] 1`] = ` +Array [ + "+()", +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > "+()*(x|a)" ["a","x"] 1`] = ` +Array [ + "a", + "x", +] +` + exports[`test/optimization-level-0.ts TAP basic tests > "+(a)!(b)+(c)" ["ac","acc","adc"] 1`] = ` Array [ "ac", @@ -339,6 +575,13 @@ Array [ ] ` +exports[`test/optimization-level-0.ts TAP basic tests > "+(x|a[^)]y)" ["a.y","x"] 1`] = ` +Array [ + "a.y", + "x", +] +` + exports[`test/optimization-level-0.ts TAP basic tests > ".*" [".JS",".a",".a.JS",".a.js",".js"] 1`] = ` Array [ ".JS", @@ -452,6 +695,21 @@ Array [ ] ` +exports[`test/optimization-level-0.ts TAP basic tests > "?(x-!(y)|z)" ["x-a","x-ab","x-z"] 1`] = ` +Array [ + "x-a", + "x-ab", + "x-z", +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > "?(x-!(y)|z)b" ["x-ab","zb"] 1`] = ` +Array [ + "x-ab", + "zb", +] +` + exports[`test/optimization-level-0.ts TAP basic tests > "?************c****?****" [] 1`] = ` Array [] ` @@ -1220,714 +1478,3897 @@ exports[`test/optimization-level-0.ts TAP basic tests > "å" [] 1`] = ` Array [] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe 1`] = ` +exports[`test/optimization-level-0.ts TAP basic tests > # ignore this hasMagic known 1`] = ` false ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe !!a* 1`] = ` -/^(?:(?=.)a[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > # ignore this hasMagic pre-generate 1`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe !(.a|js)@(.*) 1`] = ` -/^(?:(?!\\.)(?=.)(?:(?!(?:\\.a|js)(?:\\.[^/]*?))[^/]*?)(?:\\.[^/]*?))$/ +exports[`test/optimization-level-0.ts TAP basic tests > # ignore this parsed 1`] = ` +Array [ + Array [], + "# ignore this", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe !\\!a* 1`] = ` -/^(?!^(?:(?=.)\\!a[^/]*?)$).*$/ +exports[`test/optimization-level-0.ts TAP basic tests > #* hasMagic known 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe !a* 1`] = ` -/^(?!^(?:(?=.)a[^/]*?)$).*$/ +exports[`test/optimization-level-0.ts TAP basic tests > #* hasMagic pre-generate 1`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe !a* 2`] = ` -/^(?:(?=.)\\!a[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > #* parsed 1`] = ` +Array [ + Array [], + "#*", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe # ignore this 1`] = ` -false +exports[`test/optimization-level-0.ts TAP basic tests > * hasMagic known 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe #* 1`] = ` -/^(?:(?=.)\\#[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > * hasMagic known 2`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe * 1`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > * hasMagic known 3`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe * 2`] = ` -/^(?:(?!\\.)(?=.)[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > * hasMagic pre-generate 1`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe * 3`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > * hasMagic pre-generate 2`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe *(a/b) 1`] = ` -/^(?:(?=.)[^/]*?\\((?!\\.)a\\/b\\))$/ +exports[`test/optimization-level-0.ts TAP basic tests > * hasMagic pre-generate 3`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe *(a|{b),c)} 1`] = ` -/^(?:(?=.)(?:(?!\\.)a|(?!\\.)b)*|(?=.)(?:(?!\\.)a|(?!\\.)c)*)$/ +exports[`test/optimization-level-0.ts TAP basic tests > * parsed 1`] = ` +Array [ + Array [], + "*", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe *(a|{b,c}) 1`] = ` -/^(?:(?=.)(?:(?!\\.)a|(?!\\.)b)*|(?=.)(?:(?!\\.)a|(?!\\.)c)*)$/ +exports[`test/optimization-level-0.ts TAP basic tests > * parsed 2`] = ` +Array [ + Array [], + "*", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe *(a|{b|c,c}) 1`] = ` -/^(?:(?=.)(?:(?!\\.)a|(?!\\.)b|(?!\\.)c)*|(?=.)(?:(?!\\.)a|(?!\\.)c)*)$/ +exports[`test/optimization-level-0.ts TAP basic tests > * parsed 3`] = ` +Array [ + Array [], + "*", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe *(a|{b|c,c}) 2`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\(a\\|b\\|c\\)|(?!\\.)(?=.)[^/]*?\\(a\\|c\\))$/ +exports[`test/optimization-level-0.ts TAP basic tests > *(a/b) hasMagic known 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ** 1`] = ` -/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *(a/b) hasMagic pre-generate 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ** 2`] = ` -/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *(a/b) parsed 1`] = ` +Array [ + Array [], + Array [ + "*", + Array [ + Array [], + "a/b", + ], + ], + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ** 3`] = ` -/^(?:(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *(a|{b),c)} hasMagic known 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe *******? 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/])$/ +exports[`test/optimization-level-0.ts TAP basic tests > *(a|{b),c)} hasMagic pre-generate 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe *******c 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *(a|{b),c)} parsed 1`] = ` +Array [ + Array [], + Array [ + "*", + Array [ + Array [], + "a", + ], + Array [ + Array [], + "{b", + ], + ], + ",c)}", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe *****?? 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/ +exports[`test/optimization-level-0.ts TAP basic tests > *(a|{b,c}) hasMagic known 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe **/**/** 1`] = ` -/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *(a|{b,c}) hasMagic pre-generate 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe **/.x/** 1`] = ` -/^(?:(?:\\/|(?:(?!(?:\\/|^)\\.).)*?\\/)?\\.x(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *(a|{b,c}) parsed 1`] = ` +Array [ + Array [], + Array [ + "*", + Array [ + Array [], + "a", + ], + Array [ + Array [], + "{b,c}", + ], + ], + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe **/.x/** 2`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\/\\.x\\/(?!\\.)(?=.)[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *(a|{b|c,c}) hasMagic known 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe *.!(js) 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\.(?:(?!(?:js)(?:$|\\/))[^/]*?))$/ +exports[`test/optimization-level-0.ts TAP basic tests > *(a|{b|c,c}) hasMagic known 2`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe *.* 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\.[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *(a|{b|c,c}) hasMagic pre-generate 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe *.* 2`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\.[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *(a|{b|c,c}) hasMagic pre-generate 2`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe *.\\* 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\.\\*)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *(a|{b|c,c}) parsed 1`] = ` +Array [ + Array [], + Array [ + "*", + Array [ + Array [], + "a", + ], + Array [ + Array [], + "{b", + ], + Array [ + Array [], + "c,c}", + ], + ], + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe *.js 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\.js)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *(a|{b|c,c}) parsed 2`] = ` +Array [ + Array [], + "*(a|{b|c,c})", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe *.js 2`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\.js)$/ +exports[`test/optimization-level-0.ts TAP basic tests > ** hasMagic known 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe *.js 3`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\.js)$/i +exports[`test/optimization-level-0.ts TAP basic tests > ** hasMagic known 2`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe *.js 4`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\.js)$/i +exports[`test/optimization-level-0.ts TAP basic tests > ** hasMagic known 3`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe */man*/bash.* 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\/(?=.)man[^/]*?\\/(?=.)bash\\.[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > ** hasMagic pre-generate 1`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe *\\!* 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\![^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > ** hasMagic pre-generate 2`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe *\\\\!* 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\\\\\![^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > ** hasMagic pre-generate 3`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe *c*?** 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > ** parsed 1`] = ` +Array [ + Array [], + "**", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe *js 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?js)$/ +exports[`test/optimization-level-0.ts TAP basic tests > ** parsed 2`] = ` +Array [ + Array [], + "**", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe +(a)!(b)+(c) 1`] = ` -/^(?:(?=.)(?:(?!\\.)a)+(?:(?!(?:b)(?:c)+)[^/]*?)(?:c)+)$/ +exports[`test/optimization-level-0.ts TAP basic tests > ** parsed 3`] = ` +Array [ + Array [], + "**", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe +(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g 1`] = ` -/^(?:(?=.)\\+\\((?!\\.)a\\|(?!\\.)[^/]*?\\|c\\\\\\\\\\|(?!\\.)d\\\\\\\\\\|e\\\\\\\\\\\\\\\\\\|(?!\\.)f\\\\\\\\\\\\\\\\\\|g)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *******? hasMagic known 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe .* 1`] = ` -/^(?:(?=.)\\.[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *******? hasMagic pre-generate 1`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe .* 2`] = ` -/^(?:(?=.)\\.[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *******? parsed 1`] = ` +Array [ + Array [], + "*******?", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe .x/**/* 1`] = ` -/^(?:\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)(?=.)[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *******c hasMagic known 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe .x/**/* 2`] = ` -/^(?:\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *******c hasMagic pre-generate 1`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe .x/**/**/* 1`] = ` -/^(?:\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)(?=.)[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *******c parsed 1`] = ` +Array [ + Array [], + "*******c", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe .x/**/**/* 2`] = ` -/^(?:\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *****?? hasMagic known 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe .x/**/*/** 1`] = ` -/^(?:\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)(?=.)[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *****?? hasMagic pre-generate 1`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe .x/**/*/** 2`] = ` -/^(?:\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *****?? parsed 1`] = ` +Array [ + Array [], + "*****??", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe .x/*/** 1`] = ` -/^(?:\\.x\\/(?!\\.)(?=.)[^/]*?(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > **/**/** hasMagic known 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe .x/*/** 2`] = ` -/^(?:\\.x\\/(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?(?:\\/|(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > **/**/** hasMagic pre-generate 1`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe .x/*/**/** 1`] = ` -/^(?:\\.x\\/(?!\\.)(?=.)[^/]*?(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > **/**/** parsed 1`] = ` +Array [ + Array [], + "**/**/**", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe .x/*/**/** 2`] = ` -/^(?:\\.x\\/(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?(?:\\/|(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > **/.x/** hasMagic known 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe /^root:/{s/^[^:]*:[^:]*:([^:]*).*$// 1`] = ` -/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/\\/)$/ +exports[`test/optimization-level-0.ts TAP basic tests > **/.x/** hasMagic known 2`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe /^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\1/ 1`] = ` -/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/1\\/)$/ +exports[`test/optimization-level-0.ts TAP basic tests > **/.x/** hasMagic pre-generate 1`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ? 1`] = ` -/^(?:(?!\\.)(?=.)[^/])$/ +exports[`test/optimization-level-0.ts TAP basic tests > **/.x/** hasMagic pre-generate 2`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?************c****?**** 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > **/.x/** parsed 1`] = ` +Array [ + Array [], + "**/.x/**", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?*****?? 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/ +exports[`test/optimization-level-0.ts TAP basic tests > **/.x/** parsed 2`] = ` +Array [ + Array [], + "**/.x/**", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?*****?c 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.!(js) hasMagic known 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?***?**** 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.!(js) hasMagic pre-generate 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?***?****? 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.!(js) parsed 1`] = ` +Array [ + Array [], + "*.", + Array [ + "!", + Array [ + "js", + Object {}, + ], + ], + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?***?****c 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.* hasMagic known 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?.js 1`] = ` -/^(?:(?!\\.)(?=.)[^/]\\.js)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.* hasMagic known 2`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?.js 2`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]\\.js)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.* hasMagic pre-generate 1`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?.js 3`] = ` -/^(?:(?!\\.)(?=.)[^/]\\.js)$/i +exports[`test/optimization-level-0.ts TAP basic tests > *.* hasMagic pre-generate 2`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?.js 4`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]\\.js)$/i +exports[`test/optimization-level-0.ts TAP basic tests > *.* parsed 1`] = ` +Array [ + Array [], + "*.*", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?? 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/])$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.* parsed 2`] = ` +Array [ + Array [], + "*.*", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?? 2`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/][^/])$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.Y hasMagic known 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?? 3`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/][^/])$/i +exports[`test/optimization-level-0.ts TAP basic tests > *.Y hasMagic pre-generate 1`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?? 4`] = ` -/^(?:(?!\\.)(?=.)[^/][^/])$/i +exports[`test/optimization-level-0.ts TAP basic tests > *.Y parsed 1`] = ` +Array [ + Array [], + "*.Y", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ??**********?****? 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.Z hasMagic known 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ??**********?****c 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.Z hasMagic pre-generate 1`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ??? 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/][^/])$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.Z parsed 1`] = ` +Array [ + Array [], + "*.Z", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ??? 2`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/][^/][^/])$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.\\* hasMagic known 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?js 1`] = ` -/^(?:(?!\\.)(?=.)[^/]js)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.\\* hasMagic pre-generate 1`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?js 2`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]js)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.\\* parsed 1`] = ` +Array [ + Array [], + "*.\\\\*", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?js 3`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]js)$/i +exports[`test/optimization-level-0.ts TAP basic tests > *.js hasMagic known 1`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe @(*|.*) 1`] = ` -/^(?:(?=.)(?:(?!\\.)[^/]*?|\\.[^/]*?))$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.js hasMagic known 2`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe @(*|a) 1`] = ` -/^(?:(?=.)(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))[^/]*?|(?!(?:^|\\/)\\.{1,2}(?:$|\\/))a))$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.js hasMagic known 3`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe @(.*) 1`] = ` -/^(?:(?=.)(?:\\.[^/]*?))$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.js hasMagic known 4`] = ` +true ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe @(.*) 2`] = ` -/^(?:(?=.)(?:\\.[^/]*?))$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.js hasMagic pre-generate 1`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe @(.*|*) 1`] = ` -/^(?:(?=.)(?:\\.[^/]*?|(?!\\.)[^/]*?))$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.js hasMagic pre-generate 2`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe @(.*|js) 1`] = ` -/^(?:(?=.)(?:\\.[^/]*?|(?!\\.)js))$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.js hasMagic pre-generate 3`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe @(a|a[(])b 1`] = ` -/^(?:(?=.)(?:(?!\\.)a|(?!\\.)a\\()b)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.js hasMagic pre-generate 4`] = ` +undefined ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe @(a|a[)])b 1`] = ` -/^(?:(?=.)(?:(?!\\.)a|(?!\\.)a\\))b)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.js parsed 1`] = ` +Array [ + Array [], + "*.js", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe @(js|.*) 1`] = ` -/^(?:(?=.)(?:(?!\\.)js|\\.[^/]*?))$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.js parsed 2`] = ` +Array [ + Array [], + "*.js", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe X* 1`] = ` -/^(?:(?=.)X[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.js parsed 3`] = ` +Array [ + Array [], + "*.js", + Object {}, +] ` -exports[`test/optimization-level-0.ts TAP basic tests > makeRe X* 2`] = ` -/^(?:(?=.)X[^/]*?)$/ +exports[`test/optimization-level-0.ts TAP basic tests > *.js parsed 4`] = ` +Array [ + Array [], + "*.js", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > *.y hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > *.y hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > *.y parsed 1`] = ` +Array [ + Array [], + "*.y", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > *.z hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > *.z hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > *.z parsed 1`] = ` +Array [ + Array [], + "*.z", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > */man*/bash.* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > */man*/bash.* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > */man*/bash.* parsed 1`] = ` +Array [ + Array [], + "*/man*/bash.*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > *\\!* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > *\\!* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > *\\!* parsed 1`] = ` +Array [ + Array [], + "*\\\\!*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > *\\\\!* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > *\\\\!* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > *\\\\!* parsed 1`] = ` +Array [ + Array [], + "*\\\\\\\\!*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > *c*?** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > *c*?** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > *c*?** parsed 1`] = ` +Array [ + Array [], + "*c*?**", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > *js hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > *js hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > *js parsed 1`] = ` +Array [ + Array [], + "*js", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > +() hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > +() hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > +() parsed 1`] = ` +Array [ + Array [], + Array [ + Array [], + "+()", + ], + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > +()*(x|a) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > +()*(x|a) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > +()*(x|a) parsed 1`] = ` +Array [ + Array [], + Array [ + "+", + Array [ + Array [], + ], + ], + Array [ + "*", + Array [ + "x", + ], + Array [ + "a", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > +(a)!(b)+(c) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > +(a)!(b)+(c) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > +(a)!(b)+(c) parsed 1`] = ` +Array [ + Array [], + Array [ + "+", + Array [ + Array [], + "a", + ], + ], + Array [ + "!", + Array [ + "b", + Array [ + "+", + Array [ + "c", + ], + ], + Object {}, + ], + ], + Array [ + "+", + Array [ + "c", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > +(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > +(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > +(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g parsed 1`] = ` +Array [ + Array [], + Array [ + Array [], + "+(a|*\\\\|c\\\\\\\\|d\\\\\\\\\\\\|e\\\\\\\\\\\\\\\\|f\\\\\\\\\\\\\\\\\\\\|g", + ], + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > +(x|a[^)]y) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > +(x|a[^)]y) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > +(x|a[^)]y) parsed 1`] = ` +Array [ + Array [], + Array [ + "+", + Array [ + Array [], + "x", + ], + Array [ + Array [], + "a[^)]y", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > .* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > .* hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > .* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > .* hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > .* parsed 1`] = ` +Array [ + Array [], + ".*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > .* parsed 2`] = ` +Array [ + Array [], + ".*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/**/* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/**/* hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/**/* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/**/* hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/**/* parsed 1`] = ` +Array [ + Array [], + ".x/**/*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/**/* parsed 2`] = ` +Array [ + Array [], + ".x/**/*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/**/**/* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/**/**/* hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/**/**/* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/**/**/* hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/**/**/* parsed 1`] = ` +Array [ + Array [], + ".x/**/**/*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/**/**/* parsed 2`] = ` +Array [ + Array [], + ".x/**/**/*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/**/*/** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/**/*/** hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/**/*/** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/**/*/** hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/**/*/** parsed 1`] = ` +Array [ + Array [], + ".x/**/*/**", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/**/*/** parsed 2`] = ` +Array [ + Array [], + ".x/**/*/**", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/*/** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/*/** hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/*/** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/*/** hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/*/** parsed 1`] = ` +Array [ + Array [], + ".x/*/**", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/*/** parsed 2`] = ` +Array [ + Array [], + ".x/*/**", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/*/**/** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/*/**/** hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/*/**/** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/*/**/** hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/*/**/** parsed 1`] = ` +Array [ + Array [], + ".x/*/**/**", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > .x/*/**/** parsed 2`] = ` +Array [ + Array [], + ".x/*/**/**", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > /^root:/{s/^[^:]*:[^:]*:([^:]*).*$// hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > /^root:/{s/^[^:]*:[^:]*:([^:]*).*$// hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > /^root:/{s/^[^:]*:[^:]*:([^:]*).*$// parsed 1`] = ` +Array [ + Array [], + "/^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\u0001/", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > /^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\1/ hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > /^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\1/ hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > /^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\1/ parsed 1`] = ` +Array [ + Array [], + "/^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\\\1/", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ? hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ? parsed 1`] = ` +Array [ + Array [], + "?", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?(x-!(y)|z) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?(x-!(y)|z) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?(x-!(y)|z) parsed 1`] = ` +Array [ + Array [], + Array [ + "?", + Array [ + Array [], + "x-", + Array [ + "!", + Array [ + "y", + Object {}, + ], + ], + ], + Array [ + Array [], + "z", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?(x-!(y)|z)b hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?(x-!(y)|z)b hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?(x-!(y)|z)b parsed 1`] = ` +Array [ + Array [], + Array [ + "?", + Array [ + Array [], + "x-", + Array [ + "!", + Array [ + "y", + "b", + Object {}, + ], + ], + ], + Array [ + Array [], + "z", + ], + ], + "b", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?************c****?**** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?************c****?**** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?************c****?**** parsed 1`] = ` +Array [ + Array [], + "?************c****?****", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?*****?? hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?*****?? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?*****?? parsed 1`] = ` +Array [ + Array [], + "?*****??", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?*****?c hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?*****?c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?*****?c parsed 1`] = ` +Array [ + Array [], + "?*****?c", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?***?**** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?***?**** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?***?**** parsed 1`] = ` +Array [ + Array [], + "?***?****", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?***?****? hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?***?****? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?***?****? parsed 1`] = ` +Array [ + Array [], + "?***?****?", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?***?****c hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?***?****c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?***?****c parsed 1`] = ` +Array [ + Array [], + "?***?****c", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?.js hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?.js hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?.js hasMagic known 3`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?.js hasMagic known 4`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?.js hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?.js hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?.js hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?.js hasMagic pre-generate 4`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?.js parsed 1`] = ` +Array [ + Array [], + "?.js", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?.js parsed 2`] = ` +Array [ + Array [], + "?.js", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?.js parsed 3`] = ` +Array [ + Array [], + "?.js", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?.js parsed 4`] = ` +Array [ + Array [], + "?.js", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?? hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?? hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?? hasMagic known 3`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?? hasMagic known 4`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?? hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?? hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?? hasMagic pre-generate 4`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?? parsed 1`] = ` +Array [ + Array [], + "??", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?? parsed 2`] = ` +Array [ + Array [], + "??", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?? parsed 3`] = ` +Array [ + Array [], + "??", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?? parsed 4`] = ` +Array [ + Array [], + "??", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ??**********?****? hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ??**********?****? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ??**********?****? parsed 1`] = ` +Array [ + Array [], + "??**********?****?", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ??**********?****c hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ??**********?****c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ??**********?****c parsed 1`] = ` +Array [ + Array [], + "??**********?****c", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ??? hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ??? hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ??? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ??? hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ??? parsed 1`] = ` +Array [ + Array [], + "???", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ??? parsed 2`] = ` +Array [ + Array [], + "???", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?js hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?js hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?js hasMagic known 3`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?js hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?js hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?js hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?js parsed 1`] = ` +Array [ + Array [], + "?js", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?js parsed 2`] = ` +Array [ + Array [], + "?js", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ?js parsed 3`] = ` +Array [ + Array [], + "?js", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(*|.*) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(*|.*) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(*|.*) parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + "*", + ], + Array [ + Array [], + ".*", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(*|a) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(*|a) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(*|a) parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + "*", + ], + Array [ + Array [], + "a", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(.*) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(.*) hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(.*) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(.*) hasMagic pre-generate 2`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(.*) parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + ".*", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(.*) parsed 2`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + ".*", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(.*|*) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(.*|*) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(.*|*) parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + ".*", + ], + Array [ + Array [], + "*", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(.*|js) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(.*|js) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(.*|js) parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + ".*", + ], + Array [ + Array [], + "js", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(a|a[(])b hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(a|a[(])b hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(a|a[(])b parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + "a", + ], + Array [ + Array [], + "a[(]", + ], + ], + "b", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(a|a[)])b hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(a|a[)])b hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(a|a[)])b parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + "a", + ], + Array [ + Array [], + "a[)]", + ], + ], + "b", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(js|.*) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(js|.*) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > @(js|.*) parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + "js", + ], + Array [ + Array [], + ".*", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > X* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > X* hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > X* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > X* hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > X* parsed 1`] = ` +Array [ + Array [], + "X*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > X* parsed 2`] = ` +Array [ + Array [], + "X*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > XYZ hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > XYZ hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > XYZ parsed 1`] = ` +Array [ + Array [], + "XYZ", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [ hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > [ hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [ parsed 1`] = ` +Array [ + Array [], + "[", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [!a* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [!a* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [!a* parsed 1`] = ` +Array [ + Array [], + "[!a*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [#a* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [#a* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [#a* parsed 1`] = ` +Array [ + Array [], + "[#a*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [* parsed 1`] = ` +Array [ + Array [], + "[*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [-abc] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [-abc] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [-abc] parsed 1`] = ` +Array [ + Array [], + "[-abc]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]] parsed 1`] = ` +Array [ + Array [], + "[[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]] parsed 1`] = ` +Array [ + Array [], + "[[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]] parsed 1`] = ` +Array [ + Array [], + "[[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:graph:][:digit:]]f* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:graph:][:digit:]]f* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:graph:][:digit:]]f* parsed 1`] = ` +Array [ + Array [], + "[[:graph:][:digit:]]f*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:graph:]]f* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:graph:]]f* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:graph:]]f* parsed 1`] = ` +Array [ + Array [], + "[[:graph:]]f*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:xdigit:]][[:xdigit:]]??? hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:xdigit:]][[:xdigit:]]??? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:xdigit:]][[:xdigit:]]??? parsed 1`] = ` +Array [ + Array [], + "[[:xdigit:]][[:xdigit:]]???", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]] parsed 1`] = ` +Array [ + Array [], + "[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[] hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [[] parsed 1`] = ` +Array [ + Array [], + "[[]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [\\-\\]] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [\\-\\]] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [\\-\\]] parsed 1`] = ` +Array [ + Array [], + "[\\\\-\\\\]]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [\\\\] hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > [\\\\] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [\\\\] parsed 1`] = ` +Array [ + Array [], + "[\\\\\\\\]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [\\b-a] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [\\b-a] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [\\b-a] parsed 1`] = ` +Array [ + Array [], + "[\\\\b-a]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [\\z-a] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [\\z-a] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [\\z-a] parsed 1`] = ` +Array [ + Array [], + "[\\\\z-a]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [] hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > [] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [] parsed 1`] = ` +Array [ + Array [], + "[]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > []+*] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > []+*] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > []+*] parsed 1`] = ` +Array [ + Array [], + "[]+*]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > []-] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > []-] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > []-] parsed 1`] = ` +Array [ + Array [], + "[]-]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > []] hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > []] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > []] parsed 1`] = ` +Array [ + Array [], + "[]]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [^a-c]* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [^a-c]* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [^a-c]* parsed 1`] = ` +Array [ + Array [], + "[^a-c]*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [a-0][a-Ā] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [a-0][a-Ā] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [a-0][a-Ā] parsed 1`] = ` +Array [ + Array [], + "[a-0][a-Ā]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [a-[:alpha:]*] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [a-[:alpha:]*] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [a-[:alpha:]*] parsed 1`] = ` +Array [ + Array [], + "[a-[:alpha:]*]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [a-b-c] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [a-b-c] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [a-b-c] parsed 1`] = ` +Array [ + Array [], + "[a-b-c]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [a-c]b* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [a-c]b* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [a-c]b* parsed 1`] = ` +Array [ + Array [], + "[a-c]b*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [a-y]*[^c] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [a-y]*[^c] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [a-y]*[^c] parsed 1`] = ` +Array [ + Array [], + "[a-y]*[^c]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [a-z] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [a-z] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [a-z] parsed 1`] = ` +Array [ + Array [], + "[a-z]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [abc hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > [abc hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [abc parsed 1`] = ` +Array [ + Array [], + "[abc", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [abc-] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [abc-] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [abc-] parsed 1`] = ` +Array [ + Array [], + "[abc-]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [f-fz-a]* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [f-fz-a]* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [f-fz-a]* parsed 1`] = ` +Array [ + Array [], + "[f-fz-a]*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [f-gz-a]* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [f-gz-a]* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [f-gz-a]* parsed 1`] = ` +Array [ + Array [], + "[f-gz-a]*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [fz-a]* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [fz-a]* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [fz-a]* parsed 1`] = ` +Array [ + Array [], + "[fz-a]*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [ia]?[ck] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [ia]?[ck] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [ia]?[ck] parsed 1`] = ` +Array [ + Array [], + "[ia]?[ck]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [z-a] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [z-a] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [z-a] parsed 1`] = ` +Array [ + Array [], + "[z-a]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [z-a]* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [z-a]* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [z-a]* parsed 1`] = ` +Array [ + Array [], + "[z-a]*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [z-af]* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [z-af]* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [z-af]* parsed 1`] = ` +Array [ + Array [], + "[z-af]*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > [z\\-a] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > [z\\-a] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > [z\\-a] parsed 1`] = ` +Array [ + Array [], + "[z\\\\-a]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > \\ hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > \\ hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > \\ parsed 1`] = ` +Array [ + Array [], + "\\\\", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > \\* hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > \\* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > \\* parsed 1`] = ` +Array [ + Array [], + "\\\\*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > \\** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > \\** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > \\** parsed 1`] = ` +Array [ + Array [], + "\\\\**", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > \\*\\* hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > \\*\\* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > \\*\\* parsed 1`] = ` +Array [ + Array [], + "\\\\*\\\\*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > \\.\\./*/ hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > \\.\\./*/ hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > \\.\\./*/ parsed 1`] = ` +Array [ + Array [], + "\\\\.\\\\./*/", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a* parsed 1`] = ` +Array [ + Array [], + "a*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a********???******* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a********???******* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a********???******* parsed 1`] = ` +Array [ + Array [], + "a********???*******", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a*****?c hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a*****?c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a*****?c parsed 1`] = ` +Array [ + Array [], + "a*****?c", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a*****c*?** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a*****c*?** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a*****c*?** parsed 1`] = ` +Array [ + Array [], + "a*****c*?**", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a****c**?**??***** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a****c**?**??***** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a****c**?**??***** parsed 1`] = ` +Array [ + Array [], + "a****c**?**??*****", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a***c hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a***c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a***c parsed 1`] = ` +Array [ + Array [], + "a***c", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a**?**cd**?**??***k hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a**?**cd**?**??***k hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a**?**cd**?**??***k parsed 1`] = ` +Array [ + Array [], + "a**?**cd**?**??***k", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a**?**cd**?**??***k** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a**?**cd**?**??***k** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a**?**cd**?**??***k** parsed 1`] = ` +Array [ + Array [], + "a**?**cd**?**??***k**", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a**?**cd**?**??k hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a**?**cd**?**??k hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a**?**cd**?**??k parsed 1`] = ` +Array [ + Array [], + "a**?**cd**?**??k", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a**?**cd**?**??k*** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a**?**cd**?**??k*** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a**?**cd**?**??k*** parsed 1`] = ` +Array [ + Array [], + "a**?**cd**?**??k***", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a*[^c] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a*[^c] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a*[^c] parsed 1`] = ` +Array [ + Array [], + "a*[^c]", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a*cd**?**??k hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a*cd**?**??k hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a*cd**?**??k parsed 1`] = ` +Array [ + Array [], + "a*cd**?**??k", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a/*/b hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a/*/b hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a/*/b hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a/*/b hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a/*/b parsed 1`] = ` +Array [ + Array [], + "a/*/b", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a/*/b parsed 2`] = ` +Array [ + Array [], + "a/*/b", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a/.*/b hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a/.*/b hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a/.*/b hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a/.*/b hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a/.*/b parsed 1`] = ` +Array [ + Array [], + "a/.*/b", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a/.*/b parsed 2`] = ` +Array [ + Array [], + "a/.*/b", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a/[2015-03-10T00:23:08.647Z\\]/z hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > a/[2015-03-10T00:23:08.647Z\\]/z hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a/[2015-03-10T00:23:08.647Z\\]/z parsed 1`] = ` +Array [ + Array [], + "a/[2015-03-10T00:23:08.647Z\\\\]/z", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a/[2015-03-10T00:23:08.647Z]/z hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a/[2015-03-10T00:23:08.647Z]/z hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a/[2015-03-10T00:23:08.647Z]/z parsed 1`] = ` +Array [ + Array [], + "a/[2015-03-10T00:23:08.647Z]/z", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a?b hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a?b hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a?b parsed 1`] = ` +Array [ + Array [], + "a?b", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a?c hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a?c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a?c parsed 1`] = ` +Array [ + Array [], + "a?c", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a[X-]b hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a[X-]b hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a[X-]b parsed 1`] = ` +Array [ + Array [], + "a[X-]b", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a[\\b]c hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > a[\\b]c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a[\\b]c parsed 1`] = ` +Array [ + Array [], + "a[\\\\b]c", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a[b]c hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > a[b]c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a[b]c parsed 1`] = ` +Array [ + Array [], + "a[b]c", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a\\*?/* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a\\*?/* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a\\*?/* parsed 1`] = ` +Array [ + Array [], + "a\\\\*?/*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a\\*b/* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > a\\*b/* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a\\*b/* parsed 1`] = ` +Array [ + Array [], + "a\\\\*b/*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > a\\*c hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > a\\*c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > a\\*c parsed 1`] = ` +Array [ + Array [], + "a\\\\*c", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > ab* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > ab* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > ab* parsed 1`] = ` +Array [ + Array [], + "ab*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > b*/ hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > b*/ hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > b*/ parsed 1`] = ` +Array [ + Array [], + "b*/", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > c* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > c* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > c* parsed 1`] = ` +Array [ + Array [], + "c*", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe 1`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe !!a* 1`] = ` +/^a[^/]*?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe !()y 1`] = ` +/^(?!\\.)[^/]+?y$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe !()y 2`] = ` +/^[^/]+?y$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe !(.a|js)@(.*) 1`] = ` +/^(?:(?!(?:\\.a(?:\\.[^/]*?)(?:$|\\/)|js(?:\\.[^/]*?)(?:$|\\/)))(?!\\.)[^/]*?)(?:(?!\\.\\.?(?:$|\\/))\\.[^/]*?)$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe !\\!a* 1`] = ` +/^(?!^\\!a[^/]*?$).+$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe !a* 1`] = ` +/^(?!^a[^/]*?$).+$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe !a* 2`] = ` +/^!a[^/]*?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe # ignore this 1`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe #* 1`] = ` +/^\\#[^/]*?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe * 1`] = ` +/^(?!\\.\\.?(?:$|\\/))[^/]+?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe * 2`] = ` +/^(?!\\.)[^/]+?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe * 3`] = ` +/^(?!\\.\\.?(?:$|\\/))[^/]+?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *(a/b) 1`] = ` +/^(?!\\.)[^/]*?\\(a\\/b\\)$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *(a|{b),c)} 1`] = ` +/^(?:(?:a|b)*|(?:a|c)*)$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *(a|{b,c}) 1`] = ` +/^(?:(?:a|b)*|(?:a|c)*)$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *(a|{b|c,c}) 1`] = ` +/^(?:(?:a|b|c)*|(?:a|c)*)$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *(a|{b|c,c}) 2`] = ` +/^(?:(?!\\.)[^/]*?\\(a\\|b\\|c\\)|(?!\\.)[^/]*?\\(a\\|c\\))$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ** 1`] = ` +/^(?:(?!(?:\\/|^)\\.).)*?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ** 2`] = ` +/^(?:(?!(?:\\/|^)\\.).)*?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ** 3`] = ` +/^(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *******? 1`] = ` +/^(?!\\.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *******c 1`] = ` +/^(?!\\.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *****?? 1`] = ` +/^(?!\\.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe **/**/** 1`] = ` +/^(?:(?!(?:\\/|^)\\.).)*?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe **/.x/** 1`] = ` +/^(?:\\/|(?:(?!(?:\\/|^)\\.).)*?\\/)?\\.x(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe **/.x/** 2`] = ` +/^(?!\\.)[^/]+?\\/\\.x\\/(?!\\.)[^/]+?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *.!(js) 1`] = ` +/^(?!\\.)[^/]*?\\.(?:(?!(?:js(?:$|\\/)))[^/]*?)$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *.* 1`] = ` +/^(?!\\.)[^/]*?\\.[^/]*?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *.* 2`] = ` +/^(?!\\.\\.?(?:$|\\/))[^/]*?\\.[^/]*?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *.Y 1`] = ` +/^(?!\\.)[^/]*?\\.Y$/i +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *.Z 1`] = ` +/^(?!\\.\\.?(?:$|\\/))[^/]*?\\.Z$/i +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *.\\* 1`] = ` +/^(?!\\.)[^/]*?\\.\\*$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *.js 1`] = ` +/^(?!\\.)[^/]*?\\.js$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *.js 2`] = ` +/^(?!\\.\\.?(?:$|\\/))[^/]*?\\.js$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *.js 3`] = ` +/^(?!\\.)[^/]*?\\.js$/i +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *.js 4`] = ` +/^(?!\\.\\.?(?:$|\\/))[^/]*?\\.js$/i +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *.y 1`] = ` +/^(?!\\.)[^/]*?\\.y$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *.z 1`] = ` +/^(?!\\.\\.?(?:$|\\/))[^/]*?\\.z$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe */man*/bash.* 1`] = ` +/^(?!\\.)[^/]+?\\/man[^/]*?\\/bash\\.[^/]*?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *\\!* 1`] = ` +/^(?!\\.)[^/]*?\\![^/]*?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *\\\\!* 1`] = ` +/^(?!\\.)[^/]*?\\\\![^/]*?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *c*?** 1`] = ` +/^(?!\\.)[^/]*?c[^/]*?[^/][^/]*?[^/]*?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe *js 1`] = ` +/^(?!\\.)[^/]*?js$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe +() 1`] = ` +/^\\+\\(\\)$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe +()*(x|a) 1`] = ` +/^(?:)+(?:x|a)*$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe +(a)!(b)+(c) 1`] = ` +/^(?:a)+(?:(?!(?:b(?:c)+(?:$|\\/)))[^/]*?)(?:c)+$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe +(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g 1`] = ` +/^\\+\\(a\\|[^/]*?|c\\\\\\|d\\\\|e\\\\\\\\\\|f\\\\\\\\|g$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe +(x|a[^)]y) 1`] = ` +/^(?:x|a[^)]y)+$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe .* 1`] = ` +/^(?!\\.\\.?(?:$|\\/))\\.[^/]*?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe .* 2`] = ` +/^(?!\\.\\.?(?:$|\\/))\\.[^/]*?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe .x/**/* 1`] = ` +/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)[^/]+?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe .x/**/* 2`] = ` +/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!\\.\\.?(?:$|\\/))[^/]+?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe .x/**/**/* 1`] = ` +/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)[^/]+?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe .x/**/**/* 2`] = ` +/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!\\.\\.?(?:$|\\/))[^/]+?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe .x/**/*/** 1`] = ` +/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)[^/]+?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe .x/**/*/** 2`] = ` +/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!\\.\\.?(?:$|\\/))[^/]+?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe .x/*/** 1`] = ` +/^\\.x\\/(?!\\.)[^/]+?(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe .x/*/** 2`] = ` +/^\\.x\\/(?!\\.\\.?(?:$|\\/))[^/]+?(?:\\/|(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe .x/*/**/** 1`] = ` +/^\\.x\\/(?!\\.)[^/]+?(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe .x/*/**/** 2`] = ` +/^\\.x\\/(?!\\.\\.?(?:$|\\/))[^/]+?(?:\\/|(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe /^root:/{s/^[^:]*:[^:]*:([^:]*).*$// 1`] = ` +/^\\/\\^root:\\/\\{s\\/\\^[^:][^/]*?:[^:][^/]*?:\\([^:][^/]*?\\)\\.[^/]*?\\$\\/\\/$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe /^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\1/ 1`] = ` +/^\\/\\^root:\\/\\{s\\/\\^[^:][^/]*?:[^:][^/]*?:\\([^:][^/]*?\\)\\.[^/]*?\\$\\/1\\/$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ? 1`] = ` +/^(?!\\.)[^/]$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?(x-!(y)|z) 1`] = ` +/^(?:x\\-(?:(?!(?:y(?:$|\\/)))[^/]*?)|z)?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?(x-!(y)|z)b 1`] = ` +/^(?:x\\-(?:(?!(?:yb(?:$|\\/)))[^/]*?)|z)?b$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?************c****?**** 1`] = ` +/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?*****?? 1`] = ` +/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?*****?c 1`] = ` +/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?***?**** 1`] = ` +/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?***?****? 1`] = ` +/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?***?****c 1`] = ` +/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?.js 1`] = ` +/^(?!\\.)[^/]\\.js$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?.js 2`] = ` +/^(?!\\.\\.?(?:$|\\/))[^/]\\.js$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?.js 3`] = ` +/^(?!\\.)[^/]\\.js$/i +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?.js 4`] = ` +/^(?!\\.\\.?(?:$|\\/))[^/]\\.js$/i +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?? 1`] = ` +/^(?!\\.)[^/][^/]$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?? 2`] = ` +/^(?!\\.\\.?(?:$|\\/))[^/][^/]$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?? 3`] = ` +/^(?!\\.\\.?(?:$|\\/))[^/][^/]$/i +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?? 4`] = ` +/^(?!\\.)[^/][^/]$/i +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ??**********?****? 1`] = ` +/^(?!\\.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ??**********?****c 1`] = ` +/^(?!\\.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ??? 1`] = ` +/^(?!\\.)[^/][^/][^/]$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ??? 2`] = ` +/^(?!\\.\\.?(?:$|\\/))[^/][^/][^/]$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?js 1`] = ` +/^(?!\\.)[^/]js$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?js 2`] = ` +/^(?!\\.\\.?(?:$|\\/))[^/]js$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe ?js 3`] = ` +/^(?!\\.\\.?(?:$|\\/))[^/]js$/i +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe @(*|.*) 1`] = ` +/^(?:(?!\\.)[^/]+?|(?!\\.\\.?(?:$|\\/))\\.[^/]*?)$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe @(*|a) 1`] = ` +/^(?:(?!\\.\\.?(?:$|\\/))[^/]+?|a)$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe @(.*) 1`] = ` +/^(?:(?!\\.\\.?(?:$|\\/))\\.[^/]*?)$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe @(.*) 2`] = ` +/^(?:(?!\\.\\.?(?:$|\\/))\\.[^/]*?)$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe @(.*|*) 1`] = ` +/^(?:(?!\\.\\.?(?:$|\\/))\\.[^/]*?|(?!\\.)[^/]+?)$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe @(.*|js) 1`] = ` +/^(?:(?!\\.\\.?(?:$|\\/))\\.[^/]*?|js)$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe @(a|a[(])b 1`] = ` +/^(?:a|a\\()b$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe @(a|a[)])b 1`] = ` +/^(?:a|a\\))b$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe @(js|.*) 1`] = ` +/^(?:js|(?!\\.\\.?(?:$|\\/))\\.[^/]*?)$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe X* 1`] = ` +/^X[^/]*?$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > makeRe X* 2`] = ` +/^X[^/]*?$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe XYZ 1`] = ` -/^(?:XYZ)$/i +/^XYZ$/i ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [ 1`] = ` -/^(?:\\[)$/ +/^\\[$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [!a* 1`] = ` -/^(?:(?=.)\\[\\!a[^/]*?)$/ +/^\\[!a[^/]*?$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [#a* 1`] = ` -/^(?:(?=.)\\[\\#a[^/]*?)$/ +/^\\[\\#a[^/]*?$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [* 1`] = ` -/^(?:(?=.)\\[[^/]*?)$/ +/^\\[[^/]*?$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [-abc] 1`] = ` -/^(?:(?!\\.)(?=.)[\\-abc])$/ +/^(?!\\.)[\\-abc]$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]] 1`] = ` -/^(?:(?!\\.)(?=.)[\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}])$/ +/^(?!\\.)[\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}]$/u ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]] 1`] = ` -/^(?:(?!\\.)(?=.)[\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}])$/ +/^(?!\\.)[\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}]$/u ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]] 1`] = ` -/^(?:(?!\\.)(?=.)[\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f])$/ +/^(?!\\.)[\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f]$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [[:graph:][:digit:]]f* 1`] = ` -/^(?:(?!\\.)(?=.)([\\p{Nd}]|[^\\p{Z}\\p{C}])f[^/]*?)$/ +/^([\\p{Nd}]|[^\\p{Z}\\p{C}])f[^/]*?$/u ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [[:graph:]]f* 1`] = ` -/^(?:(?!\\.)(?=.)[^\\p{Z}\\p{C}]f[^/]*?)$/ +/^(?!\\.)[^\\p{Z}\\p{C}]f[^/]*?$/u ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [[:xdigit:]][[:xdigit:]]??? 1`] = ` -/^(?:(?!\\.)(?=.)[A-Fa-f0-9][A-Fa-f0-9][^/][^/][^/])$/ +/^(?!\\.)[A-Fa-f0-9][A-Fa-f0-9][^/][^/][^/]$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]] 1`] = ` -/^(?:(?!\\.)(?=.)[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9])$/ +/^(?!\\.)[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [[] 1`] = ` -/^(?:\\[)$/ +/^\\[$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [\\-\\]] 1`] = ` -/^(?:(?!\\.)(?=.)[\\-\\]])$/ +/^(?!\\.)[\\-\\]]$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [\\\\] 1`] = ` -/^(?:\\\\)$/ +/^\\\\$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [\\b-a] 1`] = ` -/^(?:(?=.)$.)$/ +/^$.$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [\\z-a] 1`] = ` -/^(?:(?=.)$.)$/ +/^$.$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [] 1`] = ` -/^(?:\\[\\])$/ +/^\\[\\]$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe []+*] 1`] = ` -/^(?:(?!\\.)(?=.)[\\]+*])$/ +/^(?!\\.)[\\]+*]$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe []-] 1`] = ` -/^(?:(?!\\.)(?=.)[\\]\\-])$/ +/^(?!\\.)[\\]\\-]$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe []] 1`] = ` -/^(?:\\])$/ +/^\\]$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [^a-c]* 1`] = ` -/^(?:(?!\\.)(?=.)[^a-c][^/]*?)$/ +/^(?!\\.)[^a-c][^/]*?$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [a-0][a-Ā] 1`] = ` -/^(?:(?=.)$.)$/ +/^$.$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [a-[:alpha:]*] 1`] = ` -/^(?:(?=.)$.)$/ +/^$.$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [a-b-c] 1`] = ` -/^(?:(?!\\.)(?=.)[a-b\\-c])$/ +/^(?!\\.)[a-b\\-c]$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [a-c]b* 1`] = ` -/^(?:(?!\\.)(?=.)[a-c]b[^/]*?)$/ +/^(?!\\.)[a-c]b[^/]*?$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [a-y]*[^c] 1`] = ` -/^(?:(?!\\.)(?=.)[a-y][^/]*?[^c])$/ +/^(?!\\.)[a-y][^/]*?[^c]$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [a-z] 1`] = ` -/^(?:(?!\\.)(?=.)[a-z])$/ +/^(?!\\.)[a-z]$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [abc 1`] = ` -/^(?:\\[abc)$/ +/^\\[abc$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [abc-] 1`] = ` -/^(?:(?!\\.)(?=.)[abc\\-])$/ +/^(?!\\.)[abc\\-]$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [f-fz-a]* 1`] = ` -/^(?:(?=.)f[^/]*?)$/ +/^f[^/]*?$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [f-gz-a]* 1`] = ` -/^(?:(?!\\.)(?=.)[f-g][^/]*?)$/ +/^(?!\\.)[f-g][^/]*?$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [fz-a]* 1`] = ` -/^(?:(?=.)f[^/]*?)$/ +/^f[^/]*?$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [ia]?[ck] 1`] = ` -/^(?:(?!\\.)(?=.)[ia][^/][ck])$/i +/^(?!\\.)[ia][^/][ck]$/i ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [z-a] 1`] = ` -/^(?:(?=.)$.)$/ +/^$.$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [z-a]* 1`] = ` -/^(?:(?=.)$.)$/ +/^$.$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [z-af]* 1`] = ` -/^(?:(?=.)f[^/]*?)$/ +/^f[^/]*?$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe [z\\-a] 1`] = ` -/^(?:(?!\\.)(?=.)[z\\-a])$/ +/^(?!\\.)[z\\-a]$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe \\ 1`] = ` -/^(?:\\\\)$/ +/^\\\\$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe \\* 1`] = ` -/^(?:\\*)$/ +/^\\*$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe \\** 1`] = ` -/^(?:(?=.)\\*[^/]*?)$/ +/^\\*[^/]*?$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe \\*\\* 1`] = ` -/^(?:\\*\\*)$/ +/^\\*\\*$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe \\.\\./*/ 1`] = ` -/^(?:\\.\\.\\/(?!\\.)(?=.)[^/]*?\\/)$/ +/^\\.\\.\\/(?!\\.)[^/]+?\\/$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a* 1`] = ` -/^(?:(?=.)a[^/]*?)$/ +/^a[^/]*?$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a********???******* 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/ +/^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a*****?c 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/ +/^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a*****c*?** 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/ +/^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a****c**?**??***** 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/ +/^a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a***c 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/]*?c)$/ +/^a[^/]*?[^/]*?[^/]*?c$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a**?**cd**?**??***k 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k)$/ +/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a**?**cd**?**??***k** 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?)$/ +/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a**?**cd**?**??k 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/ +/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a**?**cd**?**??k*** 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?)$/ +/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a*[^c] 1`] = ` -/^(?:(?=.)a[^/]*?[^c])$/ +/^a[^/]*?[^c]$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a*cd**?**??k 1`] = ` -/^(?:(?=.)a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/ +/^a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a/*/b 1`] = ` -/^(?:a\\/(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\/b)$/ +/^a\\/(?!\\.\\.?(?:$|\\/))[^/]+?\\/b$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a/*/b 2`] = ` -/^(?:a\\/(?!\\.)(?=.)[^/]*?\\/b)$/ +/^a\\/(?!\\.)[^/]+?\\/b$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a/.*/b 1`] = ` -/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/ +/^a\\/(?!\\.\\.?(?:$|\\/))\\.[^/]*?\\/b$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a/.*/b 2`] = ` -/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/ +/^a\\/(?!\\.\\.?(?:$|\\/))\\.[^/]*?\\/b$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a/[2015-03-10T00:23:08.647Z\\]/z 1`] = ` -/^(?:a\\/\\[2015\\-03\\-10T00:23:08\\.647Z\\]\\/z)$/ +/^a\\/\\[2015\\-03\\-10T00:23:08\\.647Z\\]\\/z$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a/[2015-03-10T00:23:08.647Z]/z 1`] = ` -/^(?:a\\/(?!\\.)(?=.)[2010T00:23:08.647Z]\\/z)$/ +/^a\\/(?!\\.)[2010T00:23:08.647Z]\\/z$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a?b 1`] = ` -/^(?:(?=.)a[^/]b)$/ +/^a[^/]b$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a?c 1`] = ` -/^(?:(?=.)a[^/]c)$/ +/^a[^/]c$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a[X-]b 1`] = ` -/^(?:(?=.)a[X\\-]b)$/ +/^a[X\\-]b$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a[\\b]c 1`] = ` -/^(?:abc)$/ +/^abc$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a[b]c 1`] = ` -/^(?:abc)$/ +/^abc$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a\\*?/* 1`] = ` -/^(?:(?=.)a\\*[^/]\\/(?!\\.)(?=.)[^/]*?)$/ +/^a\\*[^/]\\/(?!\\.)[^/]+?$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a\\*b/* 1`] = ` -/^(?:a\\*b\\/(?!\\.)(?=.)[^/]*?)$/ +/^a\\*b\\/(?!\\.)[^/]+?$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe a\\*c 1`] = ` -/^(?:a\\*c)$/ +/^a\\*c$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe ab* 1`] = ` -/^(?:(?=.)ab[^/]*?)$/i +/^ab[^/]*?$/i ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe b*/ 1`] = ` -/^(?:(?=.)b[^/]*?\\/)$/ +/^b[^/]*?\\/$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe c* 1`] = ` -/^(?:(?=.)c[^/]*?)$/ +/^c[^/]*?$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe man/man1/bash.1 1`] = ` -/^(?:man\\/man1\\/bash\\.1)$/ +/^man\\/man1\\/bash\\.1$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe s/\\..*// 1`] = ` -/^(?:s\\/(?=.)\\.\\.[^/]*?\\/)$/ +/^s\\/(?!\\.\\.?(?:$|\\/))\\.\\.[^/]*?\\/$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe x/*/../../a/b/c 1`] = ` -/^(?:x\\/(?!\\.)(?=.)[^/]*?\\/\\.\\.\\/\\.\\.\\/a\\/b\\/c)$/ +/^x\\/(?!\\.)[^/]+?\\/\\.\\.\\/\\.\\.\\/a\\/b\\/c$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe x/*/../a/b/c 1`] = ` -/^(?:x\\/(?!\\.)(?=.)[^/]*?\\/\\.\\.\\/a\\/b\\/c)$/ +/^x\\/(?!\\.)[^/]+?\\/\\.\\.\\/a\\/b\\/c$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe x/z/../*/a/b/c 1`] = ` -/^(?:x\\/z\\/\\.\\.\\/(?!\\.)(?=.)[^/]*?\\/a\\/b\\/c)$/ +/^x\\/z\\/\\.\\.\\/(?!\\.)[^/]+?\\/a\\/b\\/c$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe {/*,*} 1`] = ` -/^(?:\\/(?!\\.)(?=.)[^/]*?|(?!\\.)(?=.)[^/]*?)$/ +/^(?:\\/(?!\\.)[^/]+?|(?!\\.)[^/]+?)$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe {/?,*} 1`] = ` -/^(?:\\/(?!\\.)(?=.)[^/]|(?!\\.)(?=.)[^/]*?)$/ +/^(?:\\/(?!\\.)[^/]|(?!\\.)[^/]+?)$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe {a,*(b|c,d)} 1`] = ` -/^(?:a|(?=.)[^/]*?\\((?!\\.)b\\|(?!\\.)c|d\\))$/ +/^(?:a|(?!\\.)[^/]*?\\(b\\|c|d\\))$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe {a,*(b|{c,d})} 1`] = ` -/^(?:a|(?=.)(?:(?!\\.)b|(?!\\.)c)*|(?=.)(?:(?!\\.)b|(?!\\.)d)*)$/ +/^(?:a|(?:b|c)*|(?:b|d)*)$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe {c*,./c*} 1`] = ` -/^(?:(?=.)c[^/]*?|\\.\\/(?=.)c[^/]*?)$/ +/^(?:c[^/]*?|\\.\\/c[^/]*?)$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe Å 1`] = ` -/^(?:Å)$/i +/^Å$/i ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe Å 2`] = ` -/^(?:Å)$/ +/^Å$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe Å 3`] = ` -/^(?:Å)$/ +/^Å$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe Å 4`] = ` -/^(?:Å)$/i +/^Å$/i ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe å 1`] = ` -/^(?:å)$/ +/^å$/ ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe å 2`] = ` -/^(?:å)$/i +/^å$/i ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe å 3`] = ` -/^(?:å)$/i +/^å$/i ` exports[`test/optimization-level-0.ts TAP basic tests > makeRe å 4`] = ` -/^(?:å)$/ +/^å$/ +` + +exports[`test/optimization-level-0.ts TAP basic tests > man/man1/bash.1 hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > man/man1/bash.1 hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > man/man1/bash.1 parsed 1`] = ` +Array [ + Array [], + "man/man1/bash.1", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > s/\\..*// hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > s/\\..*// hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > s/\\..*// parsed 1`] = ` +Array [ + Array [], + "s/\\\\..*//", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > x/*/../../a/b/c hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > x/*/../../a/b/c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > x/*/../../a/b/c parsed 1`] = ` +Array [ + Array [], + "x/*/../../a/b/c", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > x/*/../a/b/c hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > x/*/../a/b/c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > x/*/../a/b/c parsed 1`] = ` +Array [ + Array [], + "x/*/../a/b/c", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > x/z/../*/a/b/c hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > x/z/../*/a/b/c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > x/z/../*/a/b/c parsed 1`] = ` +Array [ + Array [], + "x/z/../*/a/b/c", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > {/*,*} hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > {/*,*} hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > {/*,*} parsed 1`] = ` +Array [ + Array [], + "{/*,*}", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > {/?,*} hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > {/?,*} hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > {/?,*} parsed 1`] = ` +Array [ + Array [], + "{/?,*}", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > {a,*(b|c,d)} hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > {a,*(b|c,d)} hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > {a,*(b|c,d)} parsed 1`] = ` +Array [ + Array [], + "{a,", + Array [ + "*", + Array [ + "b", + ], + Array [ + "c,d", + ], + ], + "}", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > {a,*(b|{c,d})} hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > {a,*(b|{c,d})} hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > {a,*(b|{c,d})} parsed 1`] = ` +Array [ + Array [], + "{a,", + Array [ + "*", + Array [ + "b", + ], + Array [ + "{c,d}", + ], + ], + "}", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > {c*,./c*} hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-0.ts TAP basic tests > {c*,./c*} hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > {c*,./c*} parsed 1`] = ` +Array [ + Array [], + "{c*,./c*}", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > Å hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > Å hasMagic known 2`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > Å hasMagic known 3`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > Å hasMagic known 4`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > Å hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > Å hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > Å hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > Å hasMagic pre-generate 4`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > Å parsed 1`] = ` +Array [ + Array [], + "Å", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > Å parsed 2`] = ` +Array [ + Array [], + "Å", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > Å parsed 3`] = ` +Array [ + Array [], + "Å", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > Å parsed 4`] = ` +Array [ + Array [], + "Å", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > å hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > å hasMagic known 2`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > å hasMagic known 3`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > å hasMagic known 4`] = ` +false +` + +exports[`test/optimization-level-0.ts TAP basic tests > å hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > å hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > å hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > å hasMagic pre-generate 4`] = ` +undefined +` + +exports[`test/optimization-level-0.ts TAP basic tests > å parsed 1`] = ` +Array [ + Array [], + "å", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > å parsed 2`] = ` +Array [ + Array [], + "å", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > å parsed 3`] = ` +Array [ + Array [], + "å", + Object {}, +] +` + +exports[`test/optimization-level-0.ts TAP basic tests > å parsed 4`] = ` +Array [ + Array [], + "å", + Object {}, +] ` diff --git a/tap-snapshots/test/optimization-level-2.ts.test.cjs b/tap-snapshots/test/optimization-level-2.ts.test.cjs index 54475d51..edb6475b 100644 --- a/tap-snapshots/test/optimization-level-2.ts.test.cjs +++ b/tap-snapshots/test/optimization-level-2.ts.test.cjs @@ -5,28 +5,3041 @@ * Make sure to inspect the output below. Do not ignore changes! */ 'use strict' +exports[`test/optimization-level-2.ts TAP basic tests > hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > parsed 1`] = ` +Array [ + Array [], + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > !!a* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > !!a* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > !!a* parsed 1`] = ` +Array [ + Array [], + "!!a*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > !()y hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > !()y hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > !()y hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > !()y hasMagic pre-generate 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > !()y parsed 1`] = ` +Array [ + Array [], + Array [ + "!", + Array [ + Array [], + "y", + Object {}, + ], + ], + "y", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > !()y parsed 2`] = ` +Array [ + Array [], + Array [ + "!", + Array [ + Array [], + "y", + Object {}, + ], + ], + "y", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > !(.a|js)@(.*) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > !(.a|js)@(.*) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > !(.a|js)@(.*) parsed 1`] = ` +Array [ + Array [], + Array [ + "!", + Array [ + Array [], + ".a", + Array [ + "@", + Array [ + ".*", + ], + ], + Object {}, + ], + Array [ + Array [], + "js", + Array [ + "@", + Array [ + ".*", + ], + ], + Object {}, + ], + ], + Array [ + "@", + Array [ + Array [], + ".*", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > !\\!a* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > !\\!a* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > !\\!a* parsed 1`] = ` +Array [ + Array [], + "!\\\\!a*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > !a* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > !a* hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > !a* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > !a* hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > !a* parsed 1`] = ` +Array [ + Array [], + "!a*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > !a* parsed 2`] = ` +Array [ + Array [], + "!a*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > # ignore this hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > # ignore this hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > # ignore this parsed 1`] = ` +Array [ + Array [], + "# ignore this", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > #* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > #* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > #* parsed 1`] = ` +Array [ + Array [], + "#*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > * hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > * hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > * hasMagic known 3`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > * hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > * hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > * hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > * parsed 1`] = ` +Array [ + Array [], + "*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > * parsed 2`] = ` +Array [ + Array [], + "*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > * parsed 3`] = ` +Array [ + Array [], + "*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *(a/b) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *(a/b) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *(a/b) parsed 1`] = ` +Array [ + Array [], + Array [ + "*", + Array [ + Array [], + "a/b", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *(a|{b),c)} hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *(a|{b),c)} hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *(a|{b),c)} parsed 1`] = ` +Array [ + Array [], + Array [ + "*", + Array [ + Array [], + "a", + ], + Array [ + Array [], + "{b", + ], + ], + ",c)}", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *(a|{b,c}) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *(a|{b,c}) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *(a|{b,c}) parsed 1`] = ` +Array [ + Array [], + Array [ + "*", + Array [ + Array [], + "a", + ], + Array [ + Array [], + "{b,c}", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *(a|{b|c,c}) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *(a|{b|c,c}) hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *(a|{b|c,c}) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *(a|{b|c,c}) hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > *(a|{b|c,c}) parsed 1`] = ` +Array [ + Array [], + Array [ + "*", + Array [ + Array [], + "a", + ], + Array [ + Array [], + "{b", + ], + Array [ + Array [], + "c,c}", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *(a|{b|c,c}) parsed 2`] = ` +Array [ + Array [], + "*(a|{b|c,c})", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ** hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ** hasMagic known 3`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ** hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ** hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ** parsed 1`] = ` +Array [ + Array [], + "**", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ** parsed 2`] = ` +Array [ + Array [], + "**", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ** parsed 3`] = ` +Array [ + Array [], + "**", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *******? hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *******? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > *******? parsed 1`] = ` +Array [ + Array [], + "*******?", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *******c hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *******c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > *******c parsed 1`] = ` +Array [ + Array [], + "*******c", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *****?? hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *****?? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > *****?? parsed 1`] = ` +Array [ + Array [], + "*****??", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > **/**/** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > **/**/** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > **/**/** parsed 1`] = ` +Array [ + Array [], + "**/**/**", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > **/.x/** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > **/.x/** hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > **/.x/** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > **/.x/** hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > **/.x/** parsed 1`] = ` +Array [ + Array [], + "**/.x/**", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > **/.x/** parsed 2`] = ` +Array [ + Array [], + "**/.x/**", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.!(js) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.!(js) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.!(js) parsed 1`] = ` +Array [ + Array [], + "*.", + Array [ + "!", + Array [ + "js", + Object {}, + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.* hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.* hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.* parsed 1`] = ` +Array [ + Array [], + "*.*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.* parsed 2`] = ` +Array [ + Array [], + "*.*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.Y hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.Y hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.Y parsed 1`] = ` +Array [ + Array [], + "*.Y", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.Z hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.Z hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.Z parsed 1`] = ` +Array [ + Array [], + "*.Z", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.\\* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.\\* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.\\* parsed 1`] = ` +Array [ + Array [], + "*.\\\\*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.js hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.js hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.js hasMagic known 3`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.js hasMagic known 4`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.js hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.js hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.js hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.js hasMagic pre-generate 4`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.js parsed 1`] = ` +Array [ + Array [], + "*.js", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.js parsed 2`] = ` +Array [ + Array [], + "*.js", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.js parsed 3`] = ` +Array [ + Array [], + "*.js", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.js parsed 4`] = ` +Array [ + Array [], + "*.js", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.y hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.y hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.y parsed 1`] = ` +Array [ + Array [], + "*.y", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.z hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.z hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > *.z parsed 1`] = ` +Array [ + Array [], + "*.z", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > */man*/bash.* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > */man*/bash.* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > */man*/bash.* parsed 1`] = ` +Array [ + Array [], + "*/man*/bash.*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *\\!* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *\\!* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > *\\!* parsed 1`] = ` +Array [ + Array [], + "*\\\\!*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *\\\\!* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *\\\\!* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > *\\\\!* parsed 1`] = ` +Array [ + Array [], + "*\\\\\\\\!*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *c*?** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *c*?** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > *c*?** parsed 1`] = ` +Array [ + Array [], + "*c*?**", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > *js hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > *js hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > *js parsed 1`] = ` +Array [ + Array [], + "*js", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > +() hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > +() hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > +() parsed 1`] = ` +Array [ + Array [], + Array [ + Array [], + "+()", + ], + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > +()*(x|a) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > +()*(x|a) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > +()*(x|a) parsed 1`] = ` +Array [ + Array [], + Array [ + "+", + Array [ + Array [], + ], + ], + Array [ + "*", + Array [ + "x", + ], + Array [ + "a", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > +(a)!(b)+(c) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > +(a)!(b)+(c) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > +(a)!(b)+(c) parsed 1`] = ` +Array [ + Array [], + Array [ + "+", + Array [ + Array [], + "a", + ], + ], + Array [ + "!", + Array [ + "b", + Array [ + "+", + Array [ + "c", + ], + ], + Object {}, + ], + ], + Array [ + "+", + Array [ + "c", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > +(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > +(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > +(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g parsed 1`] = ` +Array [ + Array [], + Array [ + Array [], + "+(a|*\\\\|c\\\\\\\\|d\\\\\\\\\\\\|e\\\\\\\\\\\\\\\\|f\\\\\\\\\\\\\\\\\\\\|g", + ], + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > +(x|a[^)]y) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > +(x|a[^)]y) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > +(x|a[^)]y) parsed 1`] = ` +Array [ + Array [], + Array [ + "+", + Array [ + Array [], + "x", + ], + Array [ + Array [], + "a[^)]y", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > .* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > .* hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > .* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > .* hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > .* parsed 1`] = ` +Array [ + Array [], + ".*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > .* parsed 2`] = ` +Array [ + Array [], + ".*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/**/* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/**/* hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/**/* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/**/* hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/**/* parsed 1`] = ` +Array [ + Array [], + ".x/**/*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/**/* parsed 2`] = ` +Array [ + Array [], + ".x/**/*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/**/**/* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/**/**/* hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/**/**/* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/**/**/* hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/**/**/* parsed 1`] = ` +Array [ + Array [], + ".x/**/**/*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/**/**/* parsed 2`] = ` +Array [ + Array [], + ".x/**/**/*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/**/*/** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/**/*/** hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/**/*/** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/**/*/** hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/**/*/** parsed 1`] = ` +Array [ + Array [], + ".x/**/*/**", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/**/*/** parsed 2`] = ` +Array [ + Array [], + ".x/**/*/**", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/*/** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/*/** hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/*/** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/*/** hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/*/** parsed 1`] = ` +Array [ + Array [], + ".x/*/**", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/*/** parsed 2`] = ` +Array [ + Array [], + ".x/*/**", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/*/**/** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/*/**/** hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/*/**/** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/*/**/** hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/*/**/** parsed 1`] = ` +Array [ + Array [], + ".x/*/**/**", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > .x/*/**/** parsed 2`] = ` +Array [ + Array [], + ".x/*/**/**", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > /^root:/{s/^[^:]*:[^:]*:([^:]*).*$// hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > /^root:/{s/^[^:]*:[^:]*:([^:]*).*$// hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > /^root:/{s/^[^:]*:[^:]*:([^:]*).*$// parsed 1`] = ` +Array [ + Array [], + "/^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\u0001/", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > /^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\1/ hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > /^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\1/ hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > /^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\1/ parsed 1`] = ` +Array [ + Array [], + "/^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\\\1/", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ? hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ? parsed 1`] = ` +Array [ + Array [], + "?", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?(x-!(y)|z) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?(x-!(y)|z) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?(x-!(y)|z) parsed 1`] = ` +Array [ + Array [], + Array [ + "?", + Array [ + Array [], + "x-", + Array [ + "!", + Array [ + "y", + Object {}, + ], + ], + ], + Array [ + Array [], + "z", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?(x-!(y)|z)b hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?(x-!(y)|z)b hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?(x-!(y)|z)b parsed 1`] = ` +Array [ + Array [], + Array [ + "?", + Array [ + Array [], + "x-", + Array [ + "!", + Array [ + "y", + "b", + Object {}, + ], + ], + ], + Array [ + Array [], + "z", + ], + ], + "b", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?************c****?**** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?************c****?**** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?************c****?**** parsed 1`] = ` +Array [ + Array [], + "?************c****?****", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?*****?? hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?*****?? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?*****?? parsed 1`] = ` +Array [ + Array [], + "?*****??", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?*****?c hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?*****?c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?*****?c parsed 1`] = ` +Array [ + Array [], + "?*****?c", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?***?**** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?***?**** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?***?**** parsed 1`] = ` +Array [ + Array [], + "?***?****", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?***?****? hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?***?****? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?***?****? parsed 1`] = ` +Array [ + Array [], + "?***?****?", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?***?****c hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?***?****c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?***?****c parsed 1`] = ` +Array [ + Array [], + "?***?****c", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?.js hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?.js hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?.js hasMagic known 3`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?.js hasMagic known 4`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?.js hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?.js hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?.js hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?.js hasMagic pre-generate 4`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?.js parsed 1`] = ` +Array [ + Array [], + "?.js", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?.js parsed 2`] = ` +Array [ + Array [], + "?.js", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?.js parsed 3`] = ` +Array [ + Array [], + "?.js", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?.js parsed 4`] = ` +Array [ + Array [], + "?.js", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?? hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?? hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?? hasMagic known 3`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?? hasMagic known 4`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?? hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?? hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?? hasMagic pre-generate 4`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?? parsed 1`] = ` +Array [ + Array [], + "??", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?? parsed 2`] = ` +Array [ + Array [], + "??", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?? parsed 3`] = ` +Array [ + Array [], + "??", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?? parsed 4`] = ` +Array [ + Array [], + "??", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ??**********?****? hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ??**********?****? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ??**********?****? parsed 1`] = ` +Array [ + Array [], + "??**********?****?", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ??**********?****c hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ??**********?****c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ??**********?****c parsed 1`] = ` +Array [ + Array [], + "??**********?****c", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ??? hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ??? hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ??? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ??? hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ??? parsed 1`] = ` +Array [ + Array [], + "???", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ??? parsed 2`] = ` +Array [ + Array [], + "???", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?js hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?js hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?js hasMagic known 3`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?js hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?js hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?js hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?js parsed 1`] = ` +Array [ + Array [], + "?js", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?js parsed 2`] = ` +Array [ + Array [], + "?js", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ?js parsed 3`] = ` +Array [ + Array [], + "?js", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(*|.*) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(*|.*) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(*|.*) parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + "*", + ], + Array [ + Array [], + ".*", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(*|a) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(*|a) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(*|a) parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + "*", + ], + Array [ + Array [], + "a", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(.*) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(.*) hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(.*) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(.*) hasMagic pre-generate 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(.*) parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + ".*", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(.*) parsed 2`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + ".*", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(.*|*) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(.*|*) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(.*|*) parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + ".*", + ], + Array [ + Array [], + "*", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(.*|js) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(.*|js) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(.*|js) parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + ".*", + ], + Array [ + Array [], + "js", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(a|a[(])b hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(a|a[(])b hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(a|a[(])b parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + "a", + ], + Array [ + Array [], + "a[(]", + ], + ], + "b", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(a|a[)])b hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(a|a[)])b hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(a|a[)])b parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + "a", + ], + Array [ + Array [], + "a[)]", + ], + ], + "b", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(js|.*) hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(js|.*) hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > @(js|.*) parsed 1`] = ` +Array [ + Array [], + Array [ + "@", + Array [ + Array [], + "js", + ], + Array [ + Array [], + ".*", + ], + ], + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > X* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > X* hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > X* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > X* hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > X* parsed 1`] = ` +Array [ + Array [], + "X*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > X* parsed 2`] = ` +Array [ + Array [], + "X*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > XYZ hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > XYZ hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > XYZ parsed 1`] = ` +Array [ + Array [], + "XYZ", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [ hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > [ hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [ parsed 1`] = ` +Array [ + Array [], + "[", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [!a* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [!a* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [!a* parsed 1`] = ` +Array [ + Array [], + "[!a*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [#a* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [#a* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [#a* parsed 1`] = ` +Array [ + Array [], + "[#a*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [* parsed 1`] = ` +Array [ + Array [], + "[*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [-abc] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [-abc] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [-abc] parsed 1`] = ` +Array [ + Array [], + "[-abc]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]] parsed 1`] = ` +Array [ + Array [], + "[[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]] parsed 1`] = ` +Array [ + Array [], + "[[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]] parsed 1`] = ` +Array [ + Array [], + "[[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:graph:][:digit:]]f* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:graph:][:digit:]]f* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:graph:][:digit:]]f* parsed 1`] = ` +Array [ + Array [], + "[[:graph:][:digit:]]f*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:graph:]]f* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:graph:]]f* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:graph:]]f* parsed 1`] = ` +Array [ + Array [], + "[[:graph:]]f*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:xdigit:]][[:xdigit:]]??? hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:xdigit:]][[:xdigit:]]??? hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:xdigit:]][[:xdigit:]]??? parsed 1`] = ` +Array [ + Array [], + "[[:xdigit:]][[:xdigit:]]???", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]] parsed 1`] = ` +Array [ + Array [], + "[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[] hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [[] parsed 1`] = ` +Array [ + Array [], + "[[]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [\\-\\]] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [\\-\\]] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [\\-\\]] parsed 1`] = ` +Array [ + Array [], + "[\\\\-\\\\]]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [\\\\] hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > [\\\\] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [\\\\] parsed 1`] = ` +Array [ + Array [], + "[\\\\\\\\]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [\\b-a] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [\\b-a] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [\\b-a] parsed 1`] = ` +Array [ + Array [], + "[\\\\b-a]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [\\z-a] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [\\z-a] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [\\z-a] parsed 1`] = ` +Array [ + Array [], + "[\\\\z-a]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [] hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > [] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [] parsed 1`] = ` +Array [ + Array [], + "[]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > []+*] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > []+*] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > []+*] parsed 1`] = ` +Array [ + Array [], + "[]+*]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > []-] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > []-] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > []-] parsed 1`] = ` +Array [ + Array [], + "[]-]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > []] hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > []] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > []] parsed 1`] = ` +Array [ + Array [], + "[]]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [^a-c]* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [^a-c]* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [^a-c]* parsed 1`] = ` +Array [ + Array [], + "[^a-c]*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [a-0][a-Ā] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [a-0][a-Ā] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [a-0][a-Ā] parsed 1`] = ` +Array [ + Array [], + "[a-0][a-Ā]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [a-[:alpha:]*] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [a-[:alpha:]*] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [a-[:alpha:]*] parsed 1`] = ` +Array [ + Array [], + "[a-[:alpha:]*]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [a-b-c] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [a-b-c] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [a-b-c] parsed 1`] = ` +Array [ + Array [], + "[a-b-c]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [a-c]b* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [a-c]b* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [a-c]b* parsed 1`] = ` +Array [ + Array [], + "[a-c]b*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [a-y]*[^c] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [a-y]*[^c] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [a-y]*[^c] parsed 1`] = ` +Array [ + Array [], + "[a-y]*[^c]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [a-z] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [a-z] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [a-z] parsed 1`] = ` +Array [ + Array [], + "[a-z]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [abc hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > [abc hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [abc parsed 1`] = ` +Array [ + Array [], + "[abc", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [abc-] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [abc-] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [abc-] parsed 1`] = ` +Array [ + Array [], + "[abc-]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [f-fz-a]* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [f-fz-a]* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [f-fz-a]* parsed 1`] = ` +Array [ + Array [], + "[f-fz-a]*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [f-gz-a]* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [f-gz-a]* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [f-gz-a]* parsed 1`] = ` +Array [ + Array [], + "[f-gz-a]*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [fz-a]* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [fz-a]* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [fz-a]* parsed 1`] = ` +Array [ + Array [], + "[fz-a]*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [ia]?[ck] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [ia]?[ck] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [ia]?[ck] parsed 1`] = ` +Array [ + Array [], + "[ia]?[ck]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [z-a] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [z-a] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [z-a] parsed 1`] = ` +Array [ + Array [], + "[z-a]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [z-a]* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [z-a]* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [z-a]* parsed 1`] = ` +Array [ + Array [], + "[z-a]*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [z-af]* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [z-af]* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [z-af]* parsed 1`] = ` +Array [ + Array [], + "[z-af]*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > [z\\-a] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > [z\\-a] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > [z\\-a] parsed 1`] = ` +Array [ + Array [], + "[z\\\\-a]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > \\ hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > \\ hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > \\ parsed 1`] = ` +Array [ + Array [], + "\\\\", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > \\* hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > \\* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > \\* parsed 1`] = ` +Array [ + Array [], + "\\\\*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > \\** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > \\** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > \\** parsed 1`] = ` +Array [ + Array [], + "\\\\**", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > \\*\\* hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > \\*\\* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > \\*\\* parsed 1`] = ` +Array [ + Array [], + "\\\\*\\\\*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > \\.\\./*/ hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > \\.\\./*/ hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > \\.\\./*/ parsed 1`] = ` +Array [ + Array [], + "\\\\.\\\\./*/", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a* parsed 1`] = ` +Array [ + Array [], + "a*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a********???******* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a********???******* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a********???******* parsed 1`] = ` +Array [ + Array [], + "a********???*******", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a*****?c hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a*****?c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a*****?c parsed 1`] = ` +Array [ + Array [], + "a*****?c", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a*****c*?** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a*****c*?** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a*****c*?** parsed 1`] = ` +Array [ + Array [], + "a*****c*?**", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a****c**?**??***** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a****c**?**??***** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a****c**?**??***** parsed 1`] = ` +Array [ + Array [], + "a****c**?**??*****", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a***c hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a***c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a***c parsed 1`] = ` +Array [ + Array [], + "a***c", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a**?**cd**?**??***k hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a**?**cd**?**??***k hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a**?**cd**?**??***k parsed 1`] = ` +Array [ + Array [], + "a**?**cd**?**??***k", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a**?**cd**?**??***k** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a**?**cd**?**??***k** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a**?**cd**?**??***k** parsed 1`] = ` +Array [ + Array [], + "a**?**cd**?**??***k**", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a**?**cd**?**??k hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a**?**cd**?**??k hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a**?**cd**?**??k parsed 1`] = ` +Array [ + Array [], + "a**?**cd**?**??k", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a**?**cd**?**??k*** hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a**?**cd**?**??k*** hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a**?**cd**?**??k*** parsed 1`] = ` +Array [ + Array [], + "a**?**cd**?**??k***", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a*[^c] hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a*[^c] hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a*[^c] parsed 1`] = ` +Array [ + Array [], + "a*[^c]", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a*cd**?**??k hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a*cd**?**??k hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a*cd**?**??k parsed 1`] = ` +Array [ + Array [], + "a*cd**?**??k", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a/*/b hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a/*/b hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a/*/b hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a/*/b hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a/*/b parsed 1`] = ` +Array [ + Array [], + "a/*/b", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a/*/b parsed 2`] = ` +Array [ + Array [], + "a/*/b", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a/.*/b hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a/.*/b hasMagic known 2`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a/.*/b hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a/.*/b hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a/.*/b parsed 1`] = ` +Array [ + Array [], + "a/.*/b", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a/.*/b parsed 2`] = ` +Array [ + Array [], + "a/.*/b", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a/[2015-03-10T00:23:08.647Z\\]/z hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > a/[2015-03-10T00:23:08.647Z\\]/z hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a/[2015-03-10T00:23:08.647Z\\]/z parsed 1`] = ` +Array [ + Array [], + "a/[2015-03-10T00:23:08.647Z\\\\]/z", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a/[2015-03-10T00:23:08.647Z]/z hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a/[2015-03-10T00:23:08.647Z]/z hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a/[2015-03-10T00:23:08.647Z]/z parsed 1`] = ` +Array [ + Array [], + "a/[2015-03-10T00:23:08.647Z]/z", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a?b hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a?b hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a?b parsed 1`] = ` +Array [ + Array [], + "a?b", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a?c hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a?c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a?c parsed 1`] = ` +Array [ + Array [], + "a?c", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a[X-]b hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a[X-]b hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a[X-]b parsed 1`] = ` +Array [ + Array [], + "a[X-]b", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a[\\b]c hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > a[\\b]c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a[\\b]c parsed 1`] = ` +Array [ + Array [], + "a[\\\\b]c", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a[b]c hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > a[b]c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a[b]c parsed 1`] = ` +Array [ + Array [], + "a[b]c", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a\\*?/* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a\\*?/* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a\\*?/* parsed 1`] = ` +Array [ + Array [], + "a\\\\*?/*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a\\*b/* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > a\\*b/* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a\\*b/* parsed 1`] = ` +Array [ + Array [], + "a\\\\*b/*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > a\\*c hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > a\\*c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > a\\*c parsed 1`] = ` +Array [ + Array [], + "a\\\\*c", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > ab* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > ab* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > ab* parsed 1`] = ` +Array [ + Array [], + "ab*", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > b*/ hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > b*/ hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > b*/ parsed 1`] = ` +Array [ + Array [], + "b*/", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > c* hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > c* hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > c* parsed 1`] = ` +Array [ + Array [], + "c*", + Object {}, +] +` + exports[`test/optimization-level-2.ts TAP basic tests > makeRe 1`] = ` false ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe !!a* 1`] = ` -/^(?:(?=.)a[^/]*?)$/ +/^a[^/]*?$/ +` + +exports[`test/optimization-level-2.ts TAP basic tests > makeRe !()y 1`] = ` +/^(?!\\.)[^/]+?y$/ +` + +exports[`test/optimization-level-2.ts TAP basic tests > makeRe !()y 2`] = ` +/^[^/]+?y$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe !(.a|js)@(.*) 1`] = ` -/^(?:(?!\\.)(?=.)(?:(?!(?:\\.a|js)(?:\\.[^/]*?))[^/]*?)(?:\\.[^/]*?))$/ +/^(?:(?!(?:\\.a(?:\\.[^/]*?)(?:$|\\/)|js(?:\\.[^/]*?)(?:$|\\/)))(?!\\.)[^/]*?)(?:(?!\\.\\.?(?:$|\\/))\\.[^/]*?)$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe !\\!a* 1`] = ` -/^(?!^(?:(?=.)\\!a[^/]*?)$).*$/ +/^(?!^\\!a[^/]*?$).+$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe !a* 1`] = ` -/^(?!^(?:(?=.)a[^/]*?)$).*$/ +/^(?!^a[^/]*?$).+$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe !a* 2`] = ` -/^(?:(?=.)\\!a[^/]*?)$/ +/^!a[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe # ignore this 1`] = ` @@ -34,687 +3047,1031 @@ false ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe #* 1`] = ` -/^(?:(?=.)\\#[^/]*?)$/ +/^\\#[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe * 1`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?)$/ +/^(?!\\.\\.?(?:$|\\/))[^/]+?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe * 2`] = ` -/^(?:(?!\\.)(?=.)[^/]*?)$/ +/^(?!\\.)[^/]+?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe * 3`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?)$/ +/^(?!\\.\\.?(?:$|\\/))[^/]+?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe *(a/b) 1`] = ` -/^(?:(?=.)[^/]*?\\((?!\\.)a\\/b\\))$/ +/^(?!\\.)[^/]*?\\(a\\/b\\)$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe *(a|{b),c)} 1`] = ` -/^(?:(?=.)(?:(?!\\.)a|(?!\\.)b)*|(?=.)(?:(?!\\.)a|(?!\\.)c)*)$/ +/^(?:(?:a|b)*|(?:a|c)*)$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe *(a|{b,c}) 1`] = ` -/^(?:(?=.)(?:(?!\\.)a|(?!\\.)b)*|(?=.)(?:(?!\\.)a|(?!\\.)c)*)$/ +/^(?:(?:a|b)*|(?:a|c)*)$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe *(a|{b|c,c}) 1`] = ` -/^(?:(?=.)(?:(?!\\.)a|(?!\\.)b|(?!\\.)c)*|(?=.)(?:(?!\\.)a|(?!\\.)c)*)$/ +/^(?:(?:a|b|c)*|(?:a|c)*)$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe *(a|{b|c,c}) 2`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\(a\\|b\\|c\\)|(?!\\.)(?=.)[^/]*?\\(a\\|c\\))$/ +/^(?:(?!\\.)[^/]*?\\(a\\|b\\|c\\)|(?!\\.)[^/]*?\\(a\\|c\\))$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ** 1`] = ` -/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/ +/^(?:(?!(?:\\/|^)\\.).)*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ** 2`] = ` -/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/ +/^(?:(?!(?:\\/|^)\\.).)*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ** 3`] = ` -/^(?:(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)$/ +/^(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe *******? 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/])$/ +/^(?!\\.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe *******c 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c)$/ +/^(?!\\.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe *****?? 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/ +/^(?!\\.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe **/**/** 1`] = ` -/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/ +/^(?:(?!(?:\\/|^)\\.).)*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe **/.x/** 1`] = ` -/^(?:(?:\\/|(?:(?!(?:\\/|^)\\.).)*?\\/)?\\.x(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?)$/ +/^(?:\\/|(?:(?!(?:\\/|^)\\.).)*?\\/)?\\.x(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe **/.x/** 2`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\/\\.x\\/(?!\\.)(?=.)[^/]*?)$/ +/^(?!\\.)[^/]+?\\/\\.x\\/(?!\\.)[^/]+?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe *.!(js) 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\.(?:(?!(?:js)(?:$|\\/))[^/]*?))$/ +/^(?!\\.)[^/]*?\\.(?:(?!(?:js(?:$|\\/)))[^/]*?)$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe *.* 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\.[^/]*?)$/ +/^(?!\\.)[^/]*?\\.[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe *.* 2`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\.[^/]*?)$/ +/^(?!\\.\\.?(?:$|\\/))[^/]*?\\.[^/]*?$/ +` + +exports[`test/optimization-level-2.ts TAP basic tests > makeRe *.Y 1`] = ` +/^(?!\\.)[^/]*?\\.Y$/i +` + +exports[`test/optimization-level-2.ts TAP basic tests > makeRe *.Z 1`] = ` +/^(?!\\.\\.?(?:$|\\/))[^/]*?\\.Z$/i ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe *.\\* 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\.\\*)$/ +/^(?!\\.)[^/]*?\\.\\*$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe *.js 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\.js)$/ +/^(?!\\.)[^/]*?\\.js$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe *.js 2`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\.js)$/ +/^(?!\\.\\.?(?:$|\\/))[^/]*?\\.js$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe *.js 3`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\.js)$/i +/^(?!\\.)[^/]*?\\.js$/i ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe *.js 4`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\.js)$/i +/^(?!\\.\\.?(?:$|\\/))[^/]*?\\.js$/i +` + +exports[`test/optimization-level-2.ts TAP basic tests > makeRe *.y 1`] = ` +/^(?!\\.)[^/]*?\\.y$/ +` + +exports[`test/optimization-level-2.ts TAP basic tests > makeRe *.z 1`] = ` +/^(?!\\.\\.?(?:$|\\/))[^/]*?\\.z$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe */man*/bash.* 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\/(?=.)man[^/]*?\\/(?=.)bash\\.[^/]*?)$/ +/^(?!\\.)[^/]+?\\/man[^/]*?\\/bash\\.[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe *\\!* 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\![^/]*?)$/ +/^(?!\\.)[^/]*?\\![^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe *\\\\!* 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?\\\\\\![^/]*?)$/ +/^(?!\\.)[^/]*?\\\\![^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe *c*?** 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/ +/^(?!\\.)[^/]*?c[^/]*?[^/][^/]*?[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe *js 1`] = ` -/^(?:(?!\\.)(?=.)[^/]*?js)$/ +/^(?!\\.)[^/]*?js$/ +` + +exports[`test/optimization-level-2.ts TAP basic tests > makeRe +() 1`] = ` +/^\\+\\(\\)$/ +` + +exports[`test/optimization-level-2.ts TAP basic tests > makeRe +()*(x|a) 1`] = ` +/^(?:)+(?:x|a)*$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe +(a)!(b)+(c) 1`] = ` -/^(?:(?=.)(?:(?!\\.)a)+(?:(?!(?:b)(?:c)+)[^/]*?)(?:c)+)$/ +/^(?:a)+(?:(?!(?:b(?:c)+(?:$|\\/)))[^/]*?)(?:c)+$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe +(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g 1`] = ` -/^(?:(?=.)\\+\\((?!\\.)a\\|(?!\\.)[^/]*?\\|c\\\\\\\\\\|(?!\\.)d\\\\\\\\\\|e\\\\\\\\\\\\\\\\\\|(?!\\.)f\\\\\\\\\\\\\\\\\\|g)$/ +/^\\+\\(a\\|[^/]*?|c\\\\\\|d\\\\|e\\\\\\\\\\|f\\\\\\\\|g$/ +` + +exports[`test/optimization-level-2.ts TAP basic tests > makeRe +(x|a[^)]y) 1`] = ` +/^(?:x|a[^)]y)+$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe .* 1`] = ` -/^(?:(?=.)\\.[^/]*?)$/ +/^(?!\\.\\.?(?:$|\\/))\\.[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe .* 2`] = ` -/^(?:(?=.)\\.[^/]*?)$/ +/^(?!\\.\\.?(?:$|\\/))\\.[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe .x/**/* 1`] = ` -/^(?:\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)(?=.)[^/]*?)$/ +/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)[^/]+?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe .x/**/* 2`] = ` -/^(?:\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?)$/ +/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!\\.\\.?(?:$|\\/))[^/]+?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe .x/**/**/* 1`] = ` -/^(?:\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)(?=.)[^/]*?)$/ +/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)[^/]+?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe .x/**/**/* 2`] = ` -/^(?:\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?)$/ +/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!\\.\\.?(?:$|\\/))[^/]+?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe .x/**/*/** 1`] = ` -/^(?:\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)(?=.)[^/]*?)$/ +/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)[^/]+?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe .x/**/*/** 2`] = ` -/^(?:\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?)$/ +/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!\\.\\.?(?:$|\\/))[^/]+?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe .x/*/** 1`] = ` -/^(?:\\.x\\/(?!\\.)(?=.)[^/]*?(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?)$/ +/^\\.x\\/(?!\\.)[^/]+?(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe .x/*/** 2`] = ` -/^(?:\\.x\\/(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?(?:\\/|(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)?)$/ +/^\\.x\\/(?!\\.\\.?(?:$|\\/))[^/]+?(?:\\/|(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe .x/*/**/** 1`] = ` -/^(?:\\.x\\/(?!\\.)(?=.)[^/]*?(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?)$/ +/^\\.x\\/(?!\\.)[^/]+?(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe .x/*/**/** 2`] = ` -/^(?:\\.x\\/(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?(?:\\/|(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)?)$/ +/^\\.x\\/(?!\\.\\.?(?:$|\\/))[^/]+?(?:\\/|(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe /^root:/{s/^[^:]*:[^:]*:([^:]*).*$// 1`] = ` -/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/\\/)$/ +/^\\/\\^root:\\/\\{s\\/\\^[^:][^/]*?:[^:][^/]*?:\\([^:][^/]*?\\)\\.[^/]*?\\$\\/\\/$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe /^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\1/ 1`] = ` -/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/1\\/)$/ +/^\\/\\^root:\\/\\{s\\/\\^[^:][^/]*?:[^:][^/]*?:\\([^:][^/]*?\\)\\.[^/]*?\\$\\/1\\/$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ? 1`] = ` -/^(?:(?!\\.)(?=.)[^/])$/ +/^(?!\\.)[^/]$/ +` + +exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?(x-!(y)|z) 1`] = ` +/^(?:x\\-(?:(?!(?:y(?:$|\\/)))[^/]*?)|z)?$/ +` + +exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?(x-!(y)|z)b 1`] = ` +/^(?:x\\-(?:(?!(?:yb(?:$|\\/)))[^/]*?)|z)?b$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?************c****?**** 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/ +/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?*****?? 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/ +/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?*****?c 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/ +/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?***?**** 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/ +/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?***?****? 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/ +/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?***?****c 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/ +/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?.js 1`] = ` -/^(?:(?!\\.)(?=.)[^/]\\.js)$/ +/^(?!\\.)[^/]\\.js$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?.js 2`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]\\.js)$/ +/^(?!\\.\\.?(?:$|\\/))[^/]\\.js$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?.js 3`] = ` -/^(?:(?!\\.)(?=.)[^/]\\.js)$/i +/^(?!\\.)[^/]\\.js$/i ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?.js 4`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]\\.js)$/i +/^(?!\\.\\.?(?:$|\\/))[^/]\\.js$/i ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?? 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/])$/ +/^(?!\\.)[^/][^/]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?? 2`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/][^/])$/ +/^(?!\\.\\.?(?:$|\\/))[^/][^/]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?? 3`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/][^/])$/i +/^(?!\\.\\.?(?:$|\\/))[^/][^/]$/i ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?? 4`] = ` -/^(?:(?!\\.)(?=.)[^/][^/])$/i +/^(?!\\.)[^/][^/]$/i ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ??**********?****? 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/ +/^(?!\\.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ??**********?****c 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/ +/^(?!\\.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ??? 1`] = ` -/^(?:(?!\\.)(?=.)[^/][^/][^/])$/ +/^(?!\\.)[^/][^/][^/]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ??? 2`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/][^/][^/])$/ +/^(?!\\.\\.?(?:$|\\/))[^/][^/][^/]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?js 1`] = ` -/^(?:(?!\\.)(?=.)[^/]js)$/ +/^(?!\\.)[^/]js$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?js 2`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]js)$/ +/^(?!\\.\\.?(?:$|\\/))[^/]js$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?js 3`] = ` -/^(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]js)$/i +/^(?!\\.\\.?(?:$|\\/))[^/]js$/i ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe @(*|.*) 1`] = ` -/^(?:(?=.)(?:(?!\\.)[^/]*?|\\.[^/]*?))$/ +/^(?:(?!\\.)[^/]+?|(?!\\.\\.?(?:$|\\/))\\.[^/]*?)$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe @(*|a) 1`] = ` -/^(?:(?=.)(?:(?!(?:^|\\/)\\.{1,2}(?:$|\\/))[^/]*?|(?!(?:^|\\/)\\.{1,2}(?:$|\\/))a))$/ +/^(?:(?!\\.\\.?(?:$|\\/))[^/]+?|a)$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe @(.*) 1`] = ` -/^(?:(?=.)(?:\\.[^/]*?))$/ +/^(?:(?!\\.\\.?(?:$|\\/))\\.[^/]*?)$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe @(.*) 2`] = ` -/^(?:(?=.)(?:\\.[^/]*?))$/ +/^(?:(?!\\.\\.?(?:$|\\/))\\.[^/]*?)$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe @(.*|*) 1`] = ` -/^(?:(?=.)(?:\\.[^/]*?|(?!\\.)[^/]*?))$/ +/^(?:(?!\\.\\.?(?:$|\\/))\\.[^/]*?|(?!\\.)[^/]+?)$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe @(.*|js) 1`] = ` -/^(?:(?=.)(?:\\.[^/]*?|(?!\\.)js))$/ +/^(?:(?!\\.\\.?(?:$|\\/))\\.[^/]*?|js)$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe @(a|a[(])b 1`] = ` -/^(?:(?=.)(?:(?!\\.)a|(?!\\.)a\\()b)$/ +/^(?:a|a\\()b$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe @(a|a[)])b 1`] = ` -/^(?:(?=.)(?:(?!\\.)a|(?!\\.)a\\))b)$/ +/^(?:a|a\\))b$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe @(js|.*) 1`] = ` -/^(?:(?=.)(?:(?!\\.)js|\\.[^/]*?))$/ +/^(?:js|(?!\\.\\.?(?:$|\\/))\\.[^/]*?)$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe X* 1`] = ` -/^(?:(?=.)X[^/]*?)$/ +/^X[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe X* 2`] = ` -/^(?:(?=.)X[^/]*?)$/ +/^X[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe XYZ 1`] = ` -/^(?:XYZ)$/i +/^XYZ$/i ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [ 1`] = ` -/^(?:\\[)$/ +/^\\[$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [!a* 1`] = ` -/^(?:(?=.)\\[\\!a[^/]*?)$/ +/^\\[!a[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [#a* 1`] = ` -/^(?:(?=.)\\[\\#a[^/]*?)$/ +/^\\[\\#a[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [* 1`] = ` -/^(?:(?=.)\\[[^/]*?)$/ +/^\\[[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [-abc] 1`] = ` -/^(?:(?!\\.)(?=.)[\\-abc])$/ +/^(?!\\.)[\\-abc]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]] 1`] = ` -/^(?:(?!\\.)(?=.)[\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}])$/ +/^(?!\\.)[\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}][\\p{L}\\p{Nl}\\p{Nd}]$/u ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]] 1`] = ` -/^(?:(?!\\.)(?=.)[\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}])$/ +/^(?!\\.)[\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}]$/u ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]] 1`] = ` -/^(?:(?!\\.)(?=.)[\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f])$/ +/^(?!\\.)[\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [[:graph:][:digit:]]f* 1`] = ` -/^(?:(?!\\.)(?=.)([\\p{Nd}]|[^\\p{Z}\\p{C}])f[^/]*?)$/ +/^([\\p{Nd}]|[^\\p{Z}\\p{C}])f[^/]*?$/u ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [[:graph:]]f* 1`] = ` -/^(?:(?!\\.)(?=.)[^\\p{Z}\\p{C}]f[^/]*?)$/ +/^(?!\\.)[^\\p{Z}\\p{C}]f[^/]*?$/u ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [[:xdigit:]][[:xdigit:]]??? 1`] = ` -/^(?:(?!\\.)(?=.)[A-Fa-f0-9][A-Fa-f0-9][^/][^/][^/])$/ +/^(?!\\.)[A-Fa-f0-9][A-Fa-f0-9][^/][^/][^/]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]] 1`] = ` -/^(?:(?!\\.)(?=.)[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9])$/ +/^(?!\\.)[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [[] 1`] = ` -/^(?:\\[)$/ +/^\\[$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [\\-\\]] 1`] = ` -/^(?:(?!\\.)(?=.)[\\-\\]])$/ +/^(?!\\.)[\\-\\]]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [\\\\] 1`] = ` -/^(?:\\\\)$/ +/^\\\\$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [\\b-a] 1`] = ` -/^(?:(?=.)$.)$/ +/^$.$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [\\z-a] 1`] = ` -/^(?:(?=.)$.)$/ +/^$.$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [] 1`] = ` -/^(?:\\[\\])$/ +/^\\[\\]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe []+*] 1`] = ` -/^(?:(?!\\.)(?=.)[\\]+*])$/ +/^(?!\\.)[\\]+*]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe []-] 1`] = ` -/^(?:(?!\\.)(?=.)[\\]\\-])$/ +/^(?!\\.)[\\]\\-]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe []] 1`] = ` -/^(?:\\])$/ +/^\\]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [^a-c]* 1`] = ` -/^(?:(?!\\.)(?=.)[^a-c][^/]*?)$/ +/^(?!\\.)[^a-c][^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [a-0][a-Ā] 1`] = ` -/^(?:(?=.)$.)$/ +/^$.$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [a-[:alpha:]*] 1`] = ` -/^(?:(?=.)$.)$/ +/^$.$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [a-b-c] 1`] = ` -/^(?:(?!\\.)(?=.)[a-b\\-c])$/ +/^(?!\\.)[a-b\\-c]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [a-c]b* 1`] = ` -/^(?:(?!\\.)(?=.)[a-c]b[^/]*?)$/ +/^(?!\\.)[a-c]b[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [a-y]*[^c] 1`] = ` -/^(?:(?!\\.)(?=.)[a-y][^/]*?[^c])$/ +/^(?!\\.)[a-y][^/]*?[^c]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [a-z] 1`] = ` -/^(?:(?!\\.)(?=.)[a-z])$/ +/^(?!\\.)[a-z]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [abc 1`] = ` -/^(?:\\[abc)$/ +/^\\[abc$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [abc-] 1`] = ` -/^(?:(?!\\.)(?=.)[abc\\-])$/ +/^(?!\\.)[abc\\-]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [f-fz-a]* 1`] = ` -/^(?:(?=.)f[^/]*?)$/ +/^f[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [f-gz-a]* 1`] = ` -/^(?:(?!\\.)(?=.)[f-g][^/]*?)$/ +/^(?!\\.)[f-g][^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [fz-a]* 1`] = ` -/^(?:(?=.)f[^/]*?)$/ +/^f[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [ia]?[ck] 1`] = ` -/^(?:(?!\\.)(?=.)[ia][^/][ck])$/i +/^(?!\\.)[ia][^/][ck]$/i ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [z-a] 1`] = ` -/^(?:(?=.)$.)$/ +/^$.$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [z-a]* 1`] = ` -/^(?:(?=.)$.)$/ +/^$.$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [z-af]* 1`] = ` -/^(?:(?=.)f[^/]*?)$/ +/^f[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe [z\\-a] 1`] = ` -/^(?:(?!\\.)(?=.)[z\\-a])$/ +/^(?!\\.)[z\\-a]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe \\ 1`] = ` -/^(?:\\\\)$/ +/^\\\\$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe \\* 1`] = ` -/^(?:\\*)$/ +/^\\*$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe \\** 1`] = ` -/^(?:(?=.)\\*[^/]*?)$/ +/^\\*[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe \\*\\* 1`] = ` -/^(?:\\*\\*)$/ +/^\\*\\*$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe \\.\\./*/ 1`] = ` -/^(?:\\.\\.\\/(?!\\.)(?=.)[^/]*?\\/)$/ +/^\\.\\.\\/(?!\\.)[^/]+?\\/$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a* 1`] = ` -/^(?:(?=.)a[^/]*?)$/ +/^a[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a********???******* 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/ +/^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a*****?c 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/ +/^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a*****c*?** 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/ +/^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a****c**?**??***** 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/ +/^a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a***c 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/]*?c)$/ +/^a[^/]*?[^/]*?[^/]*?c$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a**?**cd**?**??***k 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k)$/ +/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a**?**cd**?**??***k** 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?)$/ +/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a**?**cd**?**??k 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/ +/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a**?**cd**?**??k*** 1`] = ` -/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?)$/ +/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a*[^c] 1`] = ` -/^(?:(?=.)a[^/]*?[^c])$/ +/^a[^/]*?[^c]$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a*cd**?**??k 1`] = ` -/^(?:(?=.)a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/ +/^a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a/*/b 1`] = ` -/^(?:a\\/(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\/b)$/ +/^a\\/(?!\\.\\.?(?:$|\\/))[^/]+?\\/b$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a/*/b 2`] = ` -/^(?:a\\/(?!\\.)(?=.)[^/]*?\\/b)$/ +/^a\\/(?!\\.)[^/]+?\\/b$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a/.*/b 1`] = ` -/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/ +/^a\\/(?!\\.\\.?(?:$|\\/))\\.[^/]*?\\/b$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a/.*/b 2`] = ` -/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/ +/^a\\/(?!\\.\\.?(?:$|\\/))\\.[^/]*?\\/b$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a/[2015-03-10T00:23:08.647Z\\]/z 1`] = ` -/^(?:a\\/\\[2015\\-03\\-10T00:23:08\\.647Z\\]\\/z)$/ +/^a\\/\\[2015\\-03\\-10T00:23:08\\.647Z\\]\\/z$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a/[2015-03-10T00:23:08.647Z]/z 1`] = ` -/^(?:a\\/(?!\\.)(?=.)[2010T00:23:08.647Z]\\/z)$/ +/^a\\/(?!\\.)[2010T00:23:08.647Z]\\/z$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a?b 1`] = ` -/^(?:(?=.)a[^/]b)$/ +/^a[^/]b$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a?c 1`] = ` -/^(?:(?=.)a[^/]c)$/ +/^a[^/]c$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a[X-]b 1`] = ` -/^(?:(?=.)a[X\\-]b)$/ +/^a[X\\-]b$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a[\\b]c 1`] = ` -/^(?:abc)$/ +/^abc$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a[b]c 1`] = ` -/^(?:abc)$/ +/^abc$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a\\*?/* 1`] = ` -/^(?:(?=.)a\\*[^/]\\/(?!\\.)(?=.)[^/]*?)$/ +/^a\\*[^/]\\/(?!\\.)[^/]+?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a\\*b/* 1`] = ` -/^(?:a\\*b\\/(?!\\.)(?=.)[^/]*?)$/ +/^a\\*b\\/(?!\\.)[^/]+?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe a\\*c 1`] = ` -/^(?:a\\*c)$/ +/^a\\*c$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe ab* 1`] = ` -/^(?:(?=.)ab[^/]*?)$/i +/^ab[^/]*?$/i ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe b*/ 1`] = ` -/^(?:(?=.)b[^/]*?\\/)$/ +/^b[^/]*?\\/$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe c* 1`] = ` -/^(?:(?=.)c[^/]*?)$/ +/^c[^/]*?$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe man/man1/bash.1 1`] = ` -/^(?:man\\/man1\\/bash\\.1)$/ +/^man\\/man1\\/bash\\.1$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe s/\\..*// 1`] = ` -/^(?:s\\/(?=.)\\.\\.[^/]*?\\/)$/ +/^s\\/(?!\\.\\.?(?:$|\\/))\\.\\.[^/]*?\\/$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe x/*/../../a/b/c 1`] = ` -/^(?:a\\/b\\/c)$/ +/^a\\/b\\/c$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe x/*/../a/b/c 1`] = ` -/^(?:x\\/a\\/b\\/c)$/ +/^x\\/a\\/b\\/c$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe x/z/../*/a/b/c 1`] = ` -/^(?:x\\/(?!\\.)(?=.)[^/]*?\\/a\\/b\\/c)$/ +/^x\\/(?!\\.)[^/]+?\\/a\\/b\\/c$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe {/*,*} 1`] = ` -/^(?:\\/(?!\\.)(?=.)[^/]*?|(?!\\.)(?=.)[^/]*?)$/ +/^(?:\\/(?!\\.)[^/]+?|(?!\\.)[^/]+?)$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe {/?,*} 1`] = ` -/^(?:\\/(?!\\.)(?=.)[^/]|(?!\\.)(?=.)[^/]*?)$/ +/^(?:\\/(?!\\.)[^/]|(?!\\.)[^/]+?)$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe {a,*(b|c,d)} 1`] = ` -/^(?:a|(?=.)[^/]*?\\((?!\\.)b\\|(?!\\.)c|d\\))$/ +/^(?:a|(?!\\.)[^/]*?\\(b\\|c|d\\))$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe {a,*(b|{c,d})} 1`] = ` -/^(?:a|(?=.)(?:(?!\\.)b|(?!\\.)c)*|(?=.)(?:(?!\\.)b|(?!\\.)d)*)$/ +/^(?:a|(?:b|c)*|(?:b|d)*)$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe {c*,./c*} 1`] = ` -/^(?:(?=.)c[^/]*?|\\.\\/(?=.)c[^/]*?)$/ +/^(?:c[^/]*?|\\.\\/c[^/]*?)$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe Å 1`] = ` -/^(?:Å)$/i +/^Å$/i ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe Å 2`] = ` -/^(?:Å)$/ +/^Å$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe Å 3`] = ` -/^(?:Å)$/ +/^Å$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe Å 4`] = ` -/^(?:Å)$/i +/^Å$/i ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe å 1`] = ` -/^(?:å)$/ +/^å$/ ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe å 2`] = ` -/^(?:å)$/i +/^å$/i ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe å 3`] = ` -/^(?:å)$/i +/^å$/i ` exports[`test/optimization-level-2.ts TAP basic tests > makeRe å 4`] = ` -/^(?:å)$/ +/^å$/ +` + +exports[`test/optimization-level-2.ts TAP basic tests > man/man1/bash.1 hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > man/man1/bash.1 hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > man/man1/bash.1 parsed 1`] = ` +Array [ + Array [], + "man/man1/bash.1", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > s/\\..*// hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > s/\\..*// hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > s/\\..*// parsed 1`] = ` +Array [ + Array [], + "s/\\\\..*//", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > x/*/../../a/b/c hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > x/*/../../a/b/c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > x/*/../../a/b/c parsed 1`] = ` +Array [ + Array [], + "x/*/../../a/b/c", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > x/*/../a/b/c hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > x/*/../a/b/c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > x/*/../a/b/c parsed 1`] = ` +Array [ + Array [], + "x/*/../a/b/c", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > x/z/../*/a/b/c hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > x/z/../*/a/b/c hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > x/z/../*/a/b/c parsed 1`] = ` +Array [ + Array [], + "x/z/../*/a/b/c", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > {/*,*} hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > {/*,*} hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > {/*,*} parsed 1`] = ` +Array [ + Array [], + "{/*,*}", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > {/?,*} hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > {/?,*} hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > {/?,*} parsed 1`] = ` +Array [ + Array [], + "{/?,*}", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > {a,*(b|c,d)} hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > {a,*(b|c,d)} hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > {a,*(b|c,d)} parsed 1`] = ` +Array [ + Array [], + "{a,", + Array [ + "*", + Array [ + "b", + ], + Array [ + "c,d", + ], + ], + "}", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > {a,*(b|{c,d})} hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > {a,*(b|{c,d})} hasMagic pre-generate 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > {a,*(b|{c,d})} parsed 1`] = ` +Array [ + Array [], + "{a,", + Array [ + "*", + Array [ + "b", + ], + Array [ + "{c,d}", + ], + ], + "}", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > {c*,./c*} hasMagic known 1`] = ` +true +` + +exports[`test/optimization-level-2.ts TAP basic tests > {c*,./c*} hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > {c*,./c*} parsed 1`] = ` +Array [ + Array [], + "{c*,./c*}", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > Å hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > Å hasMagic known 2`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > Å hasMagic known 3`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > Å hasMagic known 4`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > Å hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > Å hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > Å hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > Å hasMagic pre-generate 4`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > Å parsed 1`] = ` +Array [ + Array [], + "Å", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > Å parsed 2`] = ` +Array [ + Array [], + "Å", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > Å parsed 3`] = ` +Array [ + Array [], + "Å", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > Å parsed 4`] = ` +Array [ + Array [], + "Å", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > å hasMagic known 1`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > å hasMagic known 2`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > å hasMagic known 3`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > å hasMagic known 4`] = ` +false +` + +exports[`test/optimization-level-2.ts TAP basic tests > å hasMagic pre-generate 1`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > å hasMagic pre-generate 2`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > å hasMagic pre-generate 3`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > å hasMagic pre-generate 4`] = ` +undefined +` + +exports[`test/optimization-level-2.ts TAP basic tests > å parsed 1`] = ` +Array [ + Array [], + "å", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > å parsed 2`] = ` +Array [ + Array [], + "å", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > å parsed 3`] = ` +Array [ + Array [], + "å", + Object {}, +] +` + +exports[`test/optimization-level-2.ts TAP basic tests > å parsed 4`] = ` +Array [ + Array [], + "å", + Object {}, +] ` exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ** > defaults 1`] = ` diff --git a/tap-snapshots/test/windows-no-magic-root.ts.test.cjs b/tap-snapshots/test/windows-no-magic-root.ts.test.cjs index fd2a829d..fd7628af 100644 --- a/tap-snapshots/test/windows-no-magic-root.ts.test.cjs +++ b/tap-snapshots/test/windows-no-magic-root.ts.test.cjs @@ -21,7 +21,7 @@ Array [ Array [ "", "", - /^(?!\\.)(?=.)[^/]$/i, + /^(?!\\.)[^/]$/i, /^d:$/i, ], ] @@ -44,7 +44,7 @@ Array [ Array [ "", "", - /^(?!\\.)(?=.)[^/]$/i, + /^(?!\\.)[^/]$/i, /^d:$/i, "", ], @@ -70,7 +70,7 @@ Array [ Array [ "", "", - /^(?!\\.)(?=.)[^/]$/i, + /^(?!\\.)[^/]$/i, /^d:$/i, /^x$/i, /^y$/i, diff --git a/test/basic.js b/test/basic.js index cb15220c..e023803a 100644 --- a/test/basic.js +++ b/test/basic.js @@ -28,9 +28,14 @@ t.test('basic tests', function (t) { expect = c[1].sort(alpha), options = c[2] || {}, f = c[3] || patterns.files, - tapOpts = c[4] || {} + tapOpts = c[4] || {}, + ast = mm.AST.fromGlob(pattern, options) // options.debug = true + t.matchSnapshot(ast.hasMagic, pattern + ' hasMagic pre-generate') + ast.toRegExpSource() + t.matchSnapshot(ast.toJSON(), pattern + ' parsed') + t.matchSnapshot(ast.hasMagic, pattern + ' hasMagic known') var m = new mm.Minimatch(pattern, options) var r = m.makeRe() var r2 = mm.makeRe(pattern, options) @@ -253,13 +258,13 @@ t.test('option to only nocase regexps, not strings', t => { nocase: true, nocaseMagicOnly: true, }).set, - [['test', /^(?!\.)(?=.)[^/]*?\.js$/i]] + [['test', /^(?!\.)[^/]*?\.js$/i]] ) t.match( new mm.Minimatch('test/*.js', { nocase: true, }).set, - [[/^test$/i, /^(?!\.)(?=.)[^/]*?\.js$/i]] + [[/^test$/i, /^(?!\.)[^/]*?\.js$/i]] ) t.end() }) diff --git a/test/patterns.js b/test/patterns.js index 047a9702..85edeeab 100644 --- a/test/patterns.js +++ b/test/patterns.js @@ -442,6 +442,25 @@ module.exports = [ ['[[:xdigit:]][[:xdigit:]]???', ['aeiou', 'fffff', '0f7fa', '99999']], ['[[:graph:]]f*', ['fffff', '0f7fa']], ['[[:graph:][:digit:]]f*', ['fffff', '0f7fa']], + + 'fast track the *.ext patterns', + () => + (files = ['x.y', 'a.y', 'x.z', 'a.z', 'xy', 'ay', 'x', 'a', '.y', '.z']), + ['*.y', ['x.y', 'a.y']], + ['*.z', ['x.z', 'a.z', '.z'], { dot: true }], + ['*.Y', ['x.y', 'a.y'], { nocase: true }], + ['*.Z', ['x.z', 'a.z', '.z'], { dot: true, nocase: true }], + + () => files.push('+()'), + ['+()', ['+()']], + ['+()*(x|a)', ['x', 'a']], + ['+(x|a[^)]y)', ['x', 'a.y']], + ['!()y', ['x.y', 'a.y', 'xy', 'ay'], { nonegate: true }], + ['!()y', ['x.y', 'a.y', 'xy', 'ay', '.y'], { dot: true, nonegate: true }], + + () => (files = ['x-a', 'x-ab', 'x-z', 'a-z', 'zb']), + ['?(x-!(y)|z)', ['x-a', 'x-ab', 'x-z']], + ['?(x-!(y)|z)b', ['x-ab', 'zb']], ] Object.defineProperty(module.exports, 'files', {