pax_global_header00006660000000000000000000000064144515721320014516gustar00rootroot0000000000000052 comment=f8b46a317a7695c342402cde52c8b0f7a47add17 minimatch-9.0.3/000077500000000000000000000000001445157213200135005ustar00rootroot00000000000000minimatch-9.0.3/.github/000077500000000000000000000000001445157213200150405ustar00rootroot00000000000000minimatch-9.0.3/.github/workflows/000077500000000000000000000000001445157213200170755ustar00rootroot00000000000000minimatch-9.0.3/.github/workflows/ci.yml000066400000000000000000000015101445157213200202100ustar00rootroot00000000000000name: CI on: [push, pull_request] jobs: build: strategy: matrix: node-version: [14.17, 16.x, 18.x, 19.x] platform: - os: ubuntu-latest shell: bash - os: macos-latest shell: bash - os: windows-latest shell: bash - os: windows-latest shell: powershell fail-fast: false runs-on: ${{ matrix.platform.os }} defaults: run: shell: ${{ matrix.platform.shell }} steps: - name: Checkout Repository uses: actions/checkout@v1.1.0 - name: Use Nodejs ${{ matrix.node-version }} uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - name: Install dependencies run: npm install - name: Run Tests run: npm test -- -c -t0 minimatch-9.0.3/.github/workflows/commit-if-modified.sh000066400000000000000000000004321445157213200230720ustar00rootroot00000000000000#!/usr/bin/env bash git config --global user.email "$1" shift git config --global user.name "$1" shift message="$1" shift if [ $(git status --porcelain "$@" | egrep '^ M' | wc -l) -gt 0 ]; then git add "$@" git commit -m "$message" git push || git pull --rebase git push fi minimatch-9.0.3/.github/workflows/copyright-year.sh000066400000000000000000000010011445157213200223670ustar00rootroot00000000000000#!/usr/bin/env bash dir=${1:-$PWD} dates=($(git log --date=format:%Y --pretty=format:'%ad' --reverse | sort | uniq)) if [ "${#dates[@]}" -eq 1 ]; then datestr="${dates}" else datestr="${dates}-${dates[${#dates[@]}-1]}" fi stripDate='s/^((.*)Copyright\b(.*?))((?:,\s*)?(([0-9]{4}\s*-\s*[0-9]{4})|(([0-9]{4},\s*)*[0-9]{4})))(?:,)?\s*(.*)\n$/$1$9\n/g' addDate='s/^.*Copyright(?:\s*\(c\))? /Copyright \(c\) '$datestr' /g' for l in $dir/LICENSE*; do perl -pi -e "$stripDate" $l perl -pi -e "$addDate" $l done minimatch-9.0.3/.github/workflows/isaacs-makework.yml000066400000000000000000000021461445157213200227040ustar00rootroot00000000000000name: "various tidying up tasks to silence nagging" on: push: branches: - main workflow_dispatch: jobs: makework: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Use Node.js uses: actions/setup-node@v2.1.4 with: node-version: 16.x - name: put repo in package.json run: node .github/workflows/package-json-repo.js - name: check in package.json if modified run: | bash -x .github/workflows/commit-if-modified.sh \ "package-json-repo-bot@example.com" \ "package.json Repo Bot" \ "chore: add repo to package.json" \ package.json package-lock.json - name: put all dates in license copyright line run: bash .github/workflows/copyright-year.sh - name: check in licenses if modified run: | bash .github/workflows/commit-if-modified.sh \ "license-year-bot@example.com" \ "License Year Bot" \ "chore: add copyright year to license" \ LICENSE* minimatch-9.0.3/.github/workflows/package-json-repo.js000066400000000000000000000010561445157213200227420ustar00rootroot00000000000000#!/usr/bin/env node const pf = require.resolve(`${process.cwd()}/package.json`) const pj = require(pf) if (!pj.repository && process.env.GITHUB_REPOSITORY) { const fs = require('fs') const server = process.env.GITHUB_SERVER_URL || 'https://github.com' const repo = `${server}/${process.env.GITHUB_REPOSITORY}` pj.repository = repo const json = fs.readFileSync(pf, 'utf8') const match = json.match(/^\s*\{[\r\n]+([ \t]*)"/) const indent = match[1] const output = JSON.stringify(pj, null, indent || 2) + '\n' fs.writeFileSync(pf, output) } minimatch-9.0.3/.github/workflows/typedoc.yml000066400000000000000000000024141445157213200212700ustar00rootroot00000000000000# Simple workflow for deploying static content to GitHub Pages name: Deploy static content to Pages on: # Runs on pushes targeting the default branch push: branches: ["main"] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: contents: read pages: write id-token: write # Allow one concurrent deployment concurrency: group: "pages" cancel-in-progress: true jobs: # Single deploy job since we're just deploying deploy: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Use Nodejs ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: 18.x - name: Install dependencies run: npm install - name: Generate typedocs run: npm run typedoc - name: Setup Pages uses: actions/configure-pages@v3 - name: Upload artifact uses: actions/upload-pages-artifact@v1 with: path: './docs' - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v1 minimatch-9.0.3/.gitignore000066400000000000000000000000361445157213200154670ustar00rootroot00000000000000/dist /coverage /node_modules minimatch-9.0.3/.prettierignore000066400000000000000000000001341445157213200165410ustar00rootroot00000000000000/node_modules /example /.github /dist .env /tap-snapshots /.nyc_output /coverage /benchmark minimatch-9.0.3/.travis.yml000066400000000000000000000001401445157213200156040ustar00rootroot00000000000000language: node_js sudo: false node_js: - 7 - 6 - 4 cache: directories: - $HOME/.npm minimatch-9.0.3/LICENSE000066400000000000000000000014071445157213200145070ustar00rootroot00000000000000The ISC License Copyright (c) 2011-2023 Isaac Z. Schlueter and Contributors Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. minimatch-9.0.3/README.md000066400000000000000000000410571445157213200147660ustar00rootroot00000000000000# minimatch A minimal matching utility. This is the matching library used internally by npm. It works by converting glob expressions into JavaScript `RegExp` objects. ## Usage ```js // hybrid module, load with require() or import import { minimatch } from 'minimatch' // or: const { minimatch } = require('minimatch') minimatch('bar.foo', '*.foo') // true! minimatch('bar.foo', '*.bar') // false! minimatch('bar.foo', '*.+(bar|foo)', { debug: true }) // true, and noisy! ``` ## Features Supports these glob features: - Brace Expansion - Extended glob matching - "Globstar" `**` matching - [Posix character classes](https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html), like `[[:alpha:]]`, supporting the full range of Unicode characters. For example, `[[:alpha:]]` will match against `'é'`, though `[a-zA-Z]` will not. Collating symbol and set matching is not supported, so `[[=e=]]` will _not_ match `'é'` and `[[.ch.]]` will not match `'ch'` in locales where `ch` is considered a single character. See: - `man sh` - `man bash` [Pattern Matching](https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html) - `man 3 fnmatch` - `man 5 gitignore` ## Windows **Please only use forward-slashes in glob expressions.** Though windows uses either `/` or `\` as its path separator, only `/` characters are used by this glob implementation. You must use forward-slashes **only** in glob expressions. Back-slashes in patterns will always be interpreted as escape characters, not path separators. Note that `\` or `/` _will_ be interpreted as path separators in paths on Windows, and will match against `/` in glob expressions. So just always use `/` in patterns. ### UNC Paths On Windows, UNC paths like `//?/c:/...` or `//ComputerName/Share/...` are handled specially. - Patterns starting with a double-slash followed by some non-slash characters will preserve their double-slash. As a result, a pattern like `//*` will match `//x`, but not `/x`. - Patterns staring with `//?/:` will _not_ treat the `?` as a wildcard character. Instead, it will be treated as a normal string. - Patterns starting with `//?/:/...` will match file paths starting with `:/...`, and vice versa, as if the `//?/` was not present. This behavior only is present when the drive letters are a case-insensitive match to one another. The remaining portions of the path/pattern are compared case sensitively, unless `nocase:true` is set. Note that specifying a UNC path using `\` characters as path separators is always allowed in the file path argument, but only allowed in the pattern argument when `windowsPathsNoEscape: true` is set in the options. ## Minimatch Class Create a minimatch object by instantiating the `minimatch.Minimatch` class. ```javascript var Minimatch = require('minimatch').Minimatch var mm = new Minimatch(pattern, options) ``` ### Properties - `pattern` The original pattern the minimatch object represents. - `options` The options supplied to the constructor. - `set` A 2-dimensional array of regexp or string expressions. Each row in the array corresponds to a brace-expanded pattern. Each item in the row corresponds to a single path-part. For example, the pattern `{a,b/c}/d` would expand to a set of patterns like: [ [ a, d ] , [ b, c, d ] ] If a portion of the pattern doesn't have any "magic" in it (that is, it's something like `"foo"` rather than `fo*o?`), then it will be left as a string rather than converted to a regular expression. - `regexp` Created by the `makeRe` method. A single regular expression expressing the entire pattern. This is useful in cases where you wish to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled. - `negate` True if the pattern is negated. - `comment` True if the pattern is a comment. - `empty` True if the pattern is `""`. ### Methods - `makeRe()` Generate the `regexp` member if necessary, and return it. Will return `false` if the pattern is invalid. - `match(fname)` Return true if the filename matches the pattern, or false otherwise. - `matchOne(fileArray, patternArray, partial)` Take a `/`-split filename, and match it against a single row in the `regExpSet`. This method is mainly for internal use, but is exposed so that it can be used by a glob-walker that needs to avoid excessive filesystem calls. - `hasMagic()` Returns true if the parsed pattern contains any magic characters. Returns false if all comparator parts are string literals. If the `magicalBraces` option is set on the constructor, then it will consider brace expansions which are not otherwise magical to be magic. If not set, then a pattern like `a{b,c}d` will return `false`, because neither `abd` nor `acd` contain any special glob characters. This does **not** mean that the pattern string can be used as a literal filename, as it may contain magic glob characters that are escaped. For example, the pattern `\\*` or `[*]` would not be considered to have magic, as the matching portion parses to the literal string `'*'` and would match a path named `'*'`, not `'\\*'` or `'[*]'`. The `minimatch.unescape()` method may be used to remove escape characters. All other methods are internal, and will be called as necessary. ### minimatch(path, pattern, options) Main export. Tests a path against the pattern using the options. ```javascript var isJS = minimatch(file, '*.js', { matchBase: true }) ``` ### minimatch.filter(pattern, options) Returns a function that tests its supplied argument, suitable for use with `Array.filter`. Example: ```javascript var javascripts = fileList.filter(minimatch.filter('*.js', { matchBase: true })) ``` ### minimatch.escape(pattern, options = {}) Escape all magic characters in a glob pattern, so that it will only ever match literal strings If the `windowsPathsNoEscape` option is used, then characters are escaped by wrapping in `[]`, because a magic character wrapped in a character class can only be satisfied by that exact character. Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped or unescaped. ### minimatch.unescape(pattern, options = {}) Un-escape a glob string that may contain some escaped characters. If the `windowsPathsNoEscape` option is used, then square-brace escapes are removed, but not backslash escapes. For example, it will turn the string `'[*]'` into `*`, but it will not turn `'\\*'` into `'*'`, because `\` is a path separator in `windowsPathsNoEscape` mode. When `windowsPathsNoEscape` is not set, then both brace escapes and backslash escapes are removed. Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped or unescaped. ### minimatch.match(list, pattern, options) Match against the list of files, in the style of fnmatch or glob. If nothing is matched, and options.nonull is set, then return a list containing the pattern itself. ```javascript var javascripts = minimatch.match(fileList, '*.js', { matchBase: true }) ``` ### minimatch.makeRe(pattern, options) Make a regular expression object from the pattern. ## Options All options are `false` by default. ### debug Dump a ton of stuff to stderr. ### nobrace Do not expand `{a,b}` and `{1..3}` brace sets. ### noglobstar Disable `**` matching against multiple folder names. ### dot Allow patterns to match filenames starting with a period, even if the pattern does not explicitly have a period in that spot. Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot` is set. ### noext Disable "extglob" style patterns like `+(a|b)`. ### nocase Perform a case-insensitive match. ### nocaseMagicOnly When used with `{nocase: true}`, create regular expressions that are case-insensitive, but leave string match portions untouched. Has no effect when used without `{nocase: true}` Useful when some other form of case-insensitive matching is used, or if the original string representation is useful in some other way. ### nonull When a match is not found by `minimatch.match`, return a list containing the pattern itself if this option is set. When not set, an empty list is returned if there are no matches. ### magicalBraces This only affects the results of the `Minimatch.hasMagic` method. If the pattern contains brace expansions, such as `a{b,c}d`, but no other magic characters, then the `Minimatch.hasMagic()` method will return `false` by default. When this option set, it will return `true` for brace expansion as well as other magic glob characters. ### matchBase If set, then patterns without slashes will be matched against the basename of the path if it contains slashes. For example, `a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. ### nocomment Suppress the behavior of treating `#` at the start of a pattern as a comment. ### nonegate Suppress the behavior of treating a leading `!` character as negation. ### flipNegate Returns from negate expressions the same as if they were not negated. (Ie, true on a hit, false on a miss.) ### partial Compare a partial path to a pattern. As long as the parts of the path that are present are not contradicted by the pattern, it will be treated as a match. This is useful in applications where you're walking through a folder structure, and don't yet have the full path, but want to ensure that you do not walk down paths that can never be a match. For example, ```js minimatch('/a/b', '/a/*/c/d', { partial: true }) // true, might be /a/b/c/d minimatch('/a/b', '/**/d', { partial: true }) // true, might be /a/b/.../d minimatch('/x/y/z', '/a/**/z', { partial: true }) // false, because x !== a ``` ### windowsPathsNoEscape Use `\\` as a path separator _only_, and _never_ as an escape character. If set, all `\\` characters are replaced with `/` in the pattern. Note that this makes it **impossible** to match against paths containing literal glob pattern characters, but allows matching with patterns constructed using `path.join()` and `path.resolve()` on Windows platforms, mimicking the (buggy!) behavior of earlier versions on Windows. Please use with caution, and be mindful of [the caveat about Windows paths](#windows). For legacy reasons, this is also set if `options.allowWindowsEscape` is set to the exact value `false`. ### windowsNoMagicRoot When a pattern starts with a UNC path or drive letter, and in `nocase:true` mode, do not convert the root portions of the pattern into a case-insensitive regular expression, and instead leave them as strings. This is the default when the platform is `win32` and `nocase:true` is set. ### preserveMultipleSlashes By default, multiple `/` characters (other than the leading `//` in a UNC path, see "UNC Paths" above) are treated as a single `/`. That is, a pattern like `a///b` will match the file path `a/b`. Set `preserveMultipleSlashes: true` to suppress this behavior. ### optimizationLevel A number indicating the level of optimization that should be done to the pattern prior to parsing and using it for matches. Globstar parts `**` are always converted to `*` when `noglobstar` is set, and multiple adjascent `**` parts are converted into a single `**` (ie, `a/**/**/b` will be treated as `a/**/b`, as this is equivalent in all cases). - `0` - Make no further changes. In this mode, `.` and `..` are maintained in the pattern, meaning that they must also appear in the same position in the test path string. Eg, a pattern like `a/*/../c` will match the string `a/b/../c` but not the string `a/c`. - `1` - (default) Remove cases where a double-dot `..` follows a pattern portion that is not `**`, `.`, `..`, or empty `''`. For example, the pattern `./a/b/../*` is converted to `./a/*`, and so it will match the path string `./a/c`, but not the path string `./a/b/../c`. Dots and empty path portions in the pattern are preserved. - `2` (or higher) - Much more aggressive optimizations, suitable for use with file-walking cases: - Remove cases where a double-dot `..` follows a pattern portion that is not `**`, `.`, or empty `''`. Remove empty and `.` portions of the pattern, where safe to do so (ie, anywhere other than the last position, the first position, or the second position in a pattern starting with `/`, as this may indicate a UNC path on Windows). - Convert patterns containing `
/**/../

/` into the equivalent `

/{..,**}/

/`, where `

` is a a pattern portion other than `.`, `..`, `**`, or empty `''`. - Dedupe patterns where a `**` portion is present in one and omitted in another, and it is not the final path portion, and they are otherwise equivalent. So `{a/**/b,a/b}` becomes `a/**/b`, because `**` matches against an empty path portion. - Dedupe patterns where a `*` portion is present in one, and a non-dot pattern other than `**`, `.`, `..`, or `''` is in the same position in the other. So `a/{*,x}/b` becomes `a/*/b`, because `*` can match against `x`. While these optimizations improve the performance of file-walking use cases such as [glob](http://npm.im/glob) (ie, the reason this module exists), there are cases where it will fail to match a literal string that would have been matched in optimization level 1 or 0. Specifically, while the `Minimatch.match()` method will optimize the file path string in the same ways, resulting in the same matches, it will fail when tested with the regular expression provided by `Minimatch.makeRe()`, unless the path string is first processed with `minimatch.levelTwoFileOptimize()` or similar. ### platform When set to `win32`, this will trigger all windows-specific behaviors (special handling for UNC paths, and treating `\` as separators in file paths for comparison.) Defaults to the value of `process.platform`. ## Comparisons to other fnmatch/glob implementations While strict compliance with the existing standards is a worthwhile goal, some discrepancies exist between minimatch and other implementations. Some are intentional, and some are unavoidable. If the pattern starts with a `!` character, then it is negated. Set the `nonegate` flag to suppress this behavior, and treat leading `!` characters normally. This is perhaps relevant if you wish to start the pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` characters at the start of a pattern will negate the pattern multiple times. If a pattern starts with `#`, then it is treated as a comment, and will not match anything. Use `\#` to match a literal `#` at the start of a line, or set the `nocomment` flag to suppress this behavior. The double-star character `**` is supported by default, unless the `noglobstar` flag is set. This is supported in the manner of bsdglob and bash 4.1, where `**` only has special significance if it is the only thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but `a/**b` will not. If an escaped pattern has no matches, and the `nonull` flag is set, then minimatch.match returns the pattern as-provided, rather than interpreting the character escapes. For example, `minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than `"*a?"`. This is akin to setting the `nullglob` option in bash, except that it does not resolve escaped pattern characters. If brace expansion is not disabled, then it is performed before any other interpretation of the glob pattern. Thus, a pattern like `+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded **first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are checked for validity. Since those two are valid, matching proceeds. Negated extglob patterns are handled as closely as possible to Bash semantics, but there are some cases with negative extglobs which are exceedingly difficult to express in a JavaScript regular expression. In particular the negated pattern `!(*|)*` will in bash match anything that does not start with ``. However, `!(*)*` _will_ match paths starting with ``, because the empty string can match against the negated portion. In this library, `!(*|)*` will _not_ match any pattern starting with ``, due to a difference in precisely which patterns are considered "greedy" in Regular Expressions vs bash path expansion. This may be fixable, but not without incurring some complexity and performance costs, and the trade-off seems to not be worth pursuing. Note that `fnmatch(3)` in libc is an extremely naive string comparison matcher, which does not do anything special for slashes. This library is designed to be used in glob searching and file walkers, and so it does do special things with `/`. Thus, `foo*` will not match `foo/bar` in this library, even though it would in `fnmatch(3)`. minimatch-9.0.3/benchmark.js000066400000000000000000000006571445157213200160000ustar00rootroot00000000000000var m = require('./minimatch.js') var pattern = '**/*.js' var expand = require('brace-expansion') var files = expand('x/y/z/{1..1000}.js') var start = process.hrtime() for (var i = 0; i < 1000; i++) { for (var f = 0; f < files.length; f++) { var res = m(pattern, files[f]) } if (!(i % 10)) process.stdout.write('.') } console.log('done') var dur = process.hrtime(start) console.log('%s ms', dur[0] * 1e3 + dur[1] / 1e6) minimatch-9.0.3/changelog.md000066400000000000000000000055131445157213200157550ustar00rootroot00000000000000# change log ## 9.0 - No default export, only named exports. ## 8.0 - Recursive descent parser for extglob, allowing correct support for arbitrarily nested extglob expressions - Bump required Node.js version ## 7.4 - Add `escape()` method - Add `unescape()` method - Add `Minimatch.hasMagic()` method ## 7.3 - Add support for posix character classes in a unicode-aware way. ## 7.2 - Add `windowsNoMagicRoot` option ## 7.1 - Add `optimizationLevel` configuration option, and revert the default back to the 6.2 style minimal optimizations, making the advanced transforms introduced in 7.0 opt-in. Also, process provided file paths in the same way in optimizationLevel:2 mode, so _most_ things that matched with optimizationLevel 1 or 0 _should_ match with level 2 as well. However, level 1 is the default, out of an abundance of caution. ## 7.0 - Preprocess patterns to simplify complicated patterns and reduce out `..` pattern portions where possible. Note that this means a pattern like `a/b/../*` will be equivalent to `a/*`, and will _not_ match the string `a/b/../c`. If this causes problems, it can be addressed in a patch release by resolving `..` portions in the test string. ## 6.2 - Add nocaseMagicOnly flag ## 6.1 - Handle UNC paths on Windows This adds some slightly modified behavior when a pattern or path starts with `//` on Windows. - In the case of `//?/:/...`, the `?` is treated as a literal character, rather than a wildcard. That is, `//?/c:` will _not_ match `//x/c:`. - UNC patterns starting with `//?/:/` will match file paths starting with `:` if the drive letters match case-insensitively. - File paths starting with `//?/:/` will match file patterns starting with `:` if the drive letters match case-insensitively. - Add `{preserveMultipleSlashes:true}` option to suppress the behavior where multiple consecutive `/` characters would be effectively coerced into a single path portion separator. ## 6.0 - hybrid module supporting both `require()` and `import` - exported types ## 5.1 - use windowsPathNoEscape/allowWindowsEscape opts - make character classes more faithful to bash glob behavior - fix handling of escapes - treat invalid character classes as non-matching pattern rather than escaped literals ## 5.0 - brace-expansion: ignore only blocks that begins with $ - Expect exclusively forward slash as path sep, same as node-glob ## 4.2 - makeRe: globstar should match zero+ path portions - Fix bug with escaped '@' in patterns ## 4.1 - treat `nocase:true` as always having magic - expose GLOBSTAR marker ## 4.0 - Update to modern JS syntax - Add `allowWindowsEscape` option ## 3.x - Added basic redos protection - Handle unfinished `!(` extglob patterns - Add `partial: true` option minimatch-9.0.3/fixup.sh000066400000000000000000000002241445157213200151650ustar00rootroot00000000000000#!/usr/bin/env bash cat >dist/cjs/package.json <dist/mjs/package.json <=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", "dev": true, "peer": true, "engines": { "node": ">=0.10.0" } }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", "dev": true, "dependencies": { "@babel/highlight": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.6.tgz", "integrity": "sha512-29tfsWTq2Ftu7MXmimyC0C5FDZv5DYxOZkh3XD3+QW4V/BYuv/LyEsjj3c0hqedEaDt6DBfDvexMKU8YevdqFg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.6.tgz", "integrity": "sha512-HPIyDa6n+HKw5dEuway3vVAhBboYCtREBMp+IWeseZy6TFtzn6MHkCH2KKYUOC/vKKwgSMHQW4htBOrmuRPXfw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.5", "@babel/generator": "^7.22.5", "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-module-transforms": "^7.22.5", "@babel/helpers": "^7.22.6", "@babel/parser": "^7.22.6", "@babel/template": "^7.22.5", "@babel/traverse": "^7.22.6", "@babel/types": "^7.22.5", "@nicolo-ribaudo/semver-v6": "^6.3.3", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.2" }, "engines": { "node": ">=6.9.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/babel" } }, "node_modules/@babel/generator": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", "dev": true, "dependencies": { "@babel/types": "^7.22.5", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.6.tgz", "integrity": "sha512-534sYEqWD9VfUm3IPn2SLcH4Q3P86XL+QvqdC7ZsFrzyyPF3T4XGiVghF6PTYNdWg6pXuoqXxNQAhbYeEInTzA==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", "@babel/helper-validator-option": "^7.22.5", "@nicolo-ribaudo/semver-v6": "^6.3.3", "browserslist": "^4.21.9", "lru-cache": "^5.1.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-environment-visitor": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", "dev": true, "dependencies": { "@babel/template": "^7.22.5", "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-module-imports": "^7.22.5", "@babel/helper-simple-access": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.5", "@babel/template": "^7.22.5", "@babel/traverse": "^7.22.5", "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", "dev": true, "dependencies": { "@babel/template": "^7.22.5", "@babel/traverse": "^7.22.6", "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight/node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "dependencies": { "color-convert": "^1.9.0" }, "engines": { "node": ">=4" } }, "node_modules/@babel/highlight/node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" }, "engines": { "node": ">=4" } }, "node_modules/@babel/highlight/node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "dependencies": { "color-name": "1.1.3" } }, "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { "node": ">=0.8.0" } }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { "has-flag": "^3.0.0" }, "engines": { "node": ">=4" } }, "node_modules/@babel/parser": { "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.6.tgz", "integrity": "sha512-EIQu22vNkceq3LbjAq7knDf/UmtI2qbcNI8GRBlijez6TpQLvSodJPYfydQmNA5buwkxxxa/PVI44jjYZ+/cLw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/template": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.22.5", "@babel/parser": "^7.22.5", "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.6.tgz", "integrity": "sha512-53CijMvKlLIDlOTrdWiHileRddlIiwUIyCKqYa7lYnnPldXCG5dUSN38uT0cA6i7rHWNKJLH0VU/Kxdr1GzB3w==", "dev": true, "dependencies": { "@babel/code-frame": "^7.22.5", "@babel/generator": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "@babel/parser": "^7.22.6", "@babel/types": "^7.22.5", "debug": "^4.1.0", "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse/node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/@babel/types": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.5", "to-fast-properties": "^2.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, "engines": { "node": ">=12" } }, "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, "peer": true, "dependencies": { "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "node_modules/@eslint-community/regexpp": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", "dev": true, "peer": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", "dev": true, "peer": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint/js": { "version": "8.44.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", "dev": true, "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", "dev": true, "peer": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, "peer": true, "engines": { "node": ">=12.22" }, "funding": { "type": "github", "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true, "peer": true }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", "get-package-type": "^0.1.0", "js-yaml": "^3.13.1", "resolve-from": "^5.0.0" }, "engines": { "node": ">=8" } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { "p-locate": "^4.1.0" }, "engines": { "node": ">=8" } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { "p-try": "^2.0.0" }, "engines": { "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { "p-limit": "^2.2.0" }, "engines": { "node": ">=8" } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.18", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" } }, "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.14", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, "node_modules/@nicolo-ribaudo/semver-v6": { "version": "6.3.3", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz", "integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "peer": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" }, "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "peer": true, "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "peer": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" }, "engines": { "node": ">= 8" } }, "node_modules/@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", "dev": true }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", "dev": true }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", "dev": true }, "node_modules/@tsconfig/node16": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "dev": true }, "node_modules/@types/brace-expansion": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@types/brace-expansion/-/brace-expansion-1.1.0.tgz", "integrity": "sha512-SaU/Kgp6z40CiF9JxlsrSrBEa+8YIry9IiCPhhYSNekeEhIAkY7iyu9aZ+5dSQIdo7mf86MUVvxWYm5GAzB/0g==", "dev": true }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", "dev": true }, "node_modules/@types/node": { "version": "18.16.19", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.19.tgz", "integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==", "dev": true }, "node_modules/@types/tap": { "version": "15.0.8", "resolved": "https://registry.npmjs.org/@types/tap/-/tap-15.0.8.tgz", "integrity": "sha512-ZfeoiZlLIaFi4t6wccwbTEicrHREkP0bOq8dZVi/nWvG5F8O7LlS2cSUZBiOW/D4cgWS/p2uhM3lJoyzFAl80w==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/acorn": { "version": "8.10.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" }, "engines": { "node": ">=0.4.0" } }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "peer": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/acorn-walk": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true, "engines": { "node": ">=0.4.0" } }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" }, "funding": { "type": "github", "url": "https://github.com/sponsors/epoberezkin" } }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/ansi-sequence-parser": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", "dev": true }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" }, "engines": { "node": ">= 8" } }, "node_modules/append-transform": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", "dev": true, "dependencies": { "default-require-extensions": "^3.0.0" }, "engines": { "node": ">=8" } }, "node_modules/archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", "dev": true }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, "peer": true }, "node_modules/async-hook-domain": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/async-hook-domain/-/async-hook-domain-2.0.4.tgz", "integrity": "sha512-14LjCmlK1PK8eDtTezR6WX8TMaYNIzBIsd2D1sGoGjgx0BuNMMoSdk7i/drlbtamy0AWv9yv2tkB+ASdmeqFIw==", "dev": true, "engines": { "node": ">=10" } }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/bind-obj-methods": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bind-obj-methods/-/bind-obj-methods-3.0.0.tgz", "integrity": "sha512-nLEaaz3/sEzNSyPWRsN9HNsqwk1AUyECtGj+XwGdIi3xABnEqecvXtIJ0wehQXuuER5uZ/5fTs2usONgYjG+iw==", "dev": true, "engines": { "node": ">=10" } }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "dependencies": { "fill-range": "^7.0.1" }, "engines": { "node": ">=8" } }, "node_modules/browserslist": { "version": "4.21.9", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", "dev": true, "funding": [ { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" }, { "type": "github", "url": "https://github.com/sponsors/ai" } ], "dependencies": { "caniuse-lite": "^1.0.30001503", "electron-to-chromium": "^1.4.431", "node-releases": "^2.0.12", "update-browserslist-db": "^1.0.11" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "node_modules/c8": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/c8/-/c8-7.14.0.tgz", "integrity": "sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@istanbuljs/schema": "^0.1.3", "find-up": "^5.0.0", "foreground-child": "^2.0.0", "istanbul-lib-coverage": "^3.2.0", "istanbul-lib-report": "^3.0.0", "istanbul-reports": "^3.1.4", "rimraf": "^3.0.2", "test-exclude": "^6.0.0", "v8-to-istanbul": "^9.0.0", "yargs": "^16.2.0", "yargs-parser": "^20.2.9" }, "bin": { "c8": "bin/c8.js" }, "engines": { "node": ">=10.12.0" } }, "node_modules/caching-transform": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", "dev": true, "dependencies": { "hasha": "^5.0.0", "make-dir": "^3.0.0", "package-hash": "^4.0.0", "write-file-atomic": "^3.0.0" }, "engines": { "node": ">=8" } }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "peer": true, "engines": { "node": ">=6" } }, "node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { "version": "1.0.30001512", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001512.tgz", "integrity": "sha512-2S9nK0G/mE+jasCUsMPlARhRCts1ebcp2Ji8Y8PWi4NDE1iRdLCnEPHkEfeBrGC45L4isBx5ur3IQ6yTE2mRZw==", "dev": true, "funding": [ { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" }, { "type": "github", "url": "https://github.com/sponsors/ai" } ] }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "funding": [ { "type": "individual", "url": "https://paulmillr.com/funding/" } ], "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "engines": { "node": ">= 8.10.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "node_modules/chokidar/node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { "is-glob": "^4.0.1" }, "engines": { "node": ">= 6" } }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { "color-name": "~1.1.4" }, "engines": { "node": ">=7.0.0" } }, "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, "bin": { "color-support": "bin.js" } }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" }, "engines": { "node": ">= 8" } }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { "ms": "2.1.2" }, "engines": { "node": ">=6.0" }, "peerDependenciesMeta": { "supports-color": { "optional": true } } }, "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, "peer": true }, "node_modules/default-require-extensions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", "dev": true, "dependencies": { "strip-bom": "^4.0.0" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, "engines": { "node": ">=0.3.1" } }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "peer": true, "dependencies": { "esutils": "^2.0.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/electron-to-chromium": { "version": "1.4.450", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.450.tgz", "integrity": "sha512-BLG5HxSELlrMx7dJ2s+8SFlsCtJp37Zpk2VAxyC6CZtbc+9AJeZHfYHbrlSgdXp6saQ8StMqOTEDaBKgA7u1sw==", "dev": true }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "node_modules/es6-error": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "peer": true, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint": { "version": "8.44.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz", "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==", "dev": true, "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", "@eslint/eslintrc": "^2.1.0", "@eslint/js": "8.44.0", "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.0", "eslint-visitor-keys": "^3.4.1", "espree": "^9.6.0", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-config-prettier": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, "peerDependencies": { "eslint": ">=7.0.0" } }, "node_modules/eslint-scope": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", "dev": true, "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", "dev": true, "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/espree": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.0.tgz", "integrity": "sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==", "dev": true, "peer": true, "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" }, "engines": { "node": ">=4" } }, "node_modules/esquery": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "peer": true, "dependencies": { "estraverse": "^5.1.0" }, "engines": { "node": ">=0.10" } }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "peer": true, "dependencies": { "estraverse": "^5.2.0" }, "engines": { "node": ">=4.0" } }, "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "peer": true, "engines": { "node": ">=4.0" } }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "peer": true, "engines": { "node": ">=0.10.0" } }, "node_modules/events-to-array": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-1.1.2.tgz", "integrity": "sha512-inRWzRY7nG+aXZxBzEqYKB3HPgwflZRopAjDCHv0whhRx+MTUr1ei0ICZUypdyE0HRm4L2d5VEcIqLD6yl+BFA==", "dev": true }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, "peer": true }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, "peer": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, "peer": true }, "node_modules/fastq": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, "peer": true, "dependencies": { "reusify": "^1.0.4" } }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "peer": true, "dependencies": { "flat-cache": "^3.0.4" }, "engines": { "node": "^10.12.0 || >=12.0.0" } }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, "engines": { "node": ">=8" } }, "node_modules/find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", "pkg-dir": "^4.1.0" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/findit": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/findit/-/findit-2.0.0.tgz", "integrity": "sha512-ENZS237/Hr8bjczn5eKuBohLgaD0JyUd0arxretR1f9RO46vZHA1b2y0VorgGV3WaOT3c+78P8h7v4JGJ1i/rg==", "dev": true }, "node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "peer": true, "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" }, "engines": { "node": "^10.12.0 || >=12.0.0" } }, "node_modules/flatted": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true, "peer": true }, "node_modules/foreground-child": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", "dev": true, "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^3.0.2" }, "engines": { "node": ">=8.0.0" } }, "node_modules/fromentries": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/feross" }, { "type": "patreon", "url": "https://www.patreon.com/feross" }, { "type": "consulting", "url": "https://feross.org/support" } ] }, "node_modules/fs-exists-cached": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz", "integrity": "sha512-kSxoARUDn4F2RPXX48UXnaFKwVU7Ivd/6qpzZL29MCDmr9sTvybv4gFCp+qaI4fM9m0z9fgz/yJvi56GAz+BZg==", "dev": true }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "hasInstallScript": true, "optional": true, "os": [ "darwin" ], "engines": { "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, "node_modules/function-loop": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/function-loop/-/function-loop-2.0.1.tgz", "integrity": "sha512-ktIR+O6i/4h+j/ZhZJNdzeI4i9lEPeEK6UPR2EVyTVBqOwcU3Za9xYKLH64ZR9HmcROyRrOkizNyjjtWJzDDkQ==", "dev": true }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, "engines": { "node": ">=8.0.0" } }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, "engines": { "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "peer": true, "dependencies": { "is-glob": "^4.0.3" }, "engines": { "node": ">=10.13.0" } }, "node_modules/globals": { "version": "13.20.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "peer": true, "dependencies": { "type-fest": "^0.20.2" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true, "peer": true }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/hasha": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", "dev": true, "dependencies": { "is-stream": "^2.0.0", "type-fest": "^0.8.0" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/hasha/node_modules/type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, "node_modules/ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, "peer": true, "engines": { "node": ">= 4" } }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "peer": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" }, "engines": { "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, "engines": { "node": ">=8" } }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, "engines": { "node": ">=0.10.0" } }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "engines": { "node": ">=0.12.0" } }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, "peer": true, "engines": { "node": ">=8" } }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-hook": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", "dev": true, "dependencies": { "append-transform": "^2.0.0" }, "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-instrument": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, "dependencies": { "@babel/core": "^7.7.5", "@istanbuljs/schema": "^0.1.2", "istanbul-lib-coverage": "^3.0.0", "semver": "^6.3.0" }, "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-processinfo": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", "dev": true, "dependencies": { "archy": "^1.0.0", "cross-spawn": "^7.0.3", "istanbul-lib-coverage": "^3.2.0", "p-map": "^3.0.0", "rimraf": "^3.0.0", "uuid": "^8.3.2" }, "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-report": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^3.0.0", "supports-color": "^7.1.0" }, "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", "source-map": "^0.6.1" }, "engines": { "node": ">=10" } }, "node_modules/istanbul-reports": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" }, "engines": { "node": ">=8" } }, "node_modules/jackspeak": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-1.4.2.tgz", "integrity": "sha512-GHeGTmnuaHnvS+ZctRB01bfxARuu9wW83ENbuiweu07SFcVlZrJpcshSre/keGT7YGBhLHg/+rXCNSrsEHKU4Q==", "dev": true, "dependencies": { "cliui": "^7.0.4" }, "engines": { "node": ">=8" } }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "peer": true, "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, "bin": { "jsesc": "bin/jsesc" }, "engines": { "node": ">=4" } }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "peer": true }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true, "peer": true }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "bin": { "json5": "lib/cli.js" }, "engines": { "node": ">=6" } }, "node_modules/jsonc-parser": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "peer": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" }, "engines": { "node": ">= 0.8.0" } }, "node_modules/libtap": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/libtap/-/libtap-1.4.1.tgz", "integrity": "sha512-S9v19shLTigoMn3c02V7LZ4t09zxmVP3r3RbEAwuHFYeKgF+ESFJxoQ0PMFKW4XdgQhcjVBEwDoopG6WROq/gw==", "dev": true, "dependencies": { "async-hook-domain": "^2.0.4", "bind-obj-methods": "^3.0.0", "diff": "^4.0.2", "function-loop": "^2.0.1", "minipass": "^3.1.5", "own-or": "^1.0.0", "own-or-env": "^1.0.2", "signal-exit": "^3.0.4", "stack-utils": "^2.0.4", "tap-parser": "^11.0.0", "tap-yaml": "^1.0.0", "tcompare": "^5.0.6", "trivial-deferred": "^1.0.1" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { "p-locate": "^5.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", "dev": true }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true, "peer": true }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "dependencies": { "yallist": "^3.0.2" } }, "node_modules/lru-cache/node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "node_modules/lunr": { "version": "2.3.9", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", "dev": true }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "dependencies": { "semver": "^6.0.0" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, "node_modules/marked": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", "dev": true, "bin": { "marked": "bin/marked.js" }, "engines": { "node": ">= 12" } }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, "engines": { "node": "*" } }, "node_modules/minimatch/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/minipass": { "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "dependencies": { "yallist": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, "bin": { "mkdirp": "bin/cmd.js" }, "engines": { "node": ">=10" } }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, "peer": true }, "node_modules/node-preload": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", "dev": true, "dependencies": { "process-on-spawn": "^1.0.0" }, "engines": { "node": ">=8" } }, "node_modules/node-releases": { "version": "2.0.12", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", "dev": true }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/nyc": { "version": "15.1.0", "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", "dev": true, "dependencies": { "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", "caching-transform": "^4.0.0", "convert-source-map": "^1.7.0", "decamelize": "^1.2.0", "find-cache-dir": "^3.2.0", "find-up": "^4.1.0", "foreground-child": "^2.0.0", "get-package-type": "^0.1.0", "glob": "^7.1.6", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-hook": "^3.0.0", "istanbul-lib-instrument": "^4.0.0", "istanbul-lib-processinfo": "^2.0.2", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.2", "make-dir": "^3.0.0", "node-preload": "^0.2.1", "p-map": "^3.0.0", "process-on-spawn": "^1.0.0", "resolve-from": "^5.0.0", "rimraf": "^3.0.0", "signal-exit": "^3.0.2", "spawn-wrap": "^2.0.0", "test-exclude": "^6.0.0", "yargs": "^15.0.2" }, "bin": { "nyc": "bin/nyc.js" }, "engines": { "node": ">=8.9" } }, "node_modules/nyc/node_modules/cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.0" } }, "node_modules/nyc/node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/nyc/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { "p-locate": "^4.1.0" }, "engines": { "node": ">=8" } }, "node_modules/nyc/node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { "p-try": "^2.0.0" }, "engines": { "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/nyc/node_modules/p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { "p-limit": "^2.2.0" }, "engines": { "node": ">=8" } }, "node_modules/nyc/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/nyc/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" }, "engines": { "node": ">=8" } }, "node_modules/nyc/node_modules/y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "node_modules/nyc/node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", "find-up": "^4.1.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", "yargs-parser": "^18.1.2" }, "engines": { "node": ">=8" } }, "node_modules/nyc/node_modules/yargs-parser": { "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" }, "engines": { "node": ">=6" } }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "dependencies": { "wrappy": "1" } }, "node_modules/opener": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "dev": true, "bin": { "opener": "bin/opener-bin.js" } }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "peer": true, "dependencies": { "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" } }, "node_modules/own-or": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/own-or/-/own-or-1.0.0.tgz", "integrity": "sha512-NfZr5+Tdf6MB8UI9GLvKRs4cXY8/yB0w3xtt84xFdWy8hkGjn+JFc60VhzS/hFRfbyxFcGYMTjnF4Me+RbbqrA==", "dev": true }, "node_modules/own-or-env": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/own-or-env/-/own-or-env-1.0.2.tgz", "integrity": "sha512-NQ7v0fliWtK7Lkb+WdFqe6ky9XAzYmlkXthQrBbzlYbmFKoAYbDDcwmOm6q8kOuwSRXW8bdL5ORksploUJmWgw==", "dev": true, "dependencies": { "own-or": "^1.0.0" } }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { "yocto-queue": "^0.1.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "dependencies": { "p-limit": "^3.0.2" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-map": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "dev": true, "dependencies": { "aggregate-error": "^3.0.0" }, "engines": { "node": ">=8" } }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/package-hash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", "dev": true, "dependencies": { "graceful-fs": "^4.1.15", "hasha": "^5.0.0", "lodash.flattendeep": "^4.4.0", "release-zalgo": "^1.0.0" }, "engines": { "node": ">=8" } }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "peer": true, "dependencies": { "callsites": "^3.0.0" }, "engines": { "node": ">=6" } }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "engines": { "node": ">=8.6" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "dependencies": { "find-up": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/pkg-dir/node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/pkg-dir/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { "p-locate": "^4.1.0" }, "engines": { "node": ">=8" } }, "node_modules/pkg-dir/node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { "p-try": "^2.0.0" }, "engines": { "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pkg-dir/node_modules/p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { "p-limit": "^2.2.0" }, "engines": { "node": ">=8" } }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "peer": true, "engines": { "node": ">= 0.8.0" } }, "node_modules/prettier": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, "bin": { "prettier": "bin-prettier.js" }, "engines": { "node": ">=10.13.0" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/process-on-spawn": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", "dev": true, "dependencies": { "fromentries": "^1.2.0" }, "engines": { "node": ">=8" } }, "node_modules/punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/feross" }, { "type": "patreon", "url": "https://www.patreon.com/feross" }, { "type": "consulting", "url": "https://feross.org/support" } ], "peer": true }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "dependencies": { "picomatch": "^2.2.1" }, "engines": { "node": ">=8.10.0" } }, "node_modules/release-zalgo": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", "dev": true, "dependencies": { "es6-error": "^4.0.1" }, "engines": { "node": ">=4" } }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "peer": true, "engines": { "node": ">=4" } }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, "peer": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/feross" }, { "type": "patreon", "url": "https://www.patreon.com/feross" }, { "type": "consulting", "url": "https://feross.org/support" } ], "peer": true, "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, "engines": { "node": ">=8" } }, "node_modules/shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/shiki": { "version": "0.14.3", "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.3.tgz", "integrity": "sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==", "dev": true, "dependencies": { "ansi-sequence-parser": "^1.1.0", "jsonc-parser": "^3.2.0", "vscode-oniguruma": "^1.7.0", "vscode-textmate": "^8.0.0" } }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "node_modules/spawn-wrap": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", "dev": true, "dependencies": { "foreground-child": "^2.0.0", "is-windows": "^1.0.2", "make-dir": "^3.0.0", "rimraf": "^3.0.0", "signal-exit": "^3.0.2", "which": "^2.0.1" }, "engines": { "node": ">=8" } }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "dependencies": { "escape-string-regexp": "^2.0.0" }, "engines": { "node": ">=10" } }, "node_modules/stack-utils/node_modules/escape-string-regexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "peer": true, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/tap": { "version": "16.3.7", "resolved": "https://registry.npmjs.org/tap/-/tap-16.3.7.tgz", "integrity": "sha512-AaovVsfXVKcIf9eD1NxgwIqSDz5LauvybTpS6bjAKVYqz3+iavHC1abwxTkXmswb2n7eq8qKLt8DvY3D6iWcYA==", "bundleDependencies": [ "ink", "treport", "@types/react", "@isaacs/import-jsx", "react" ], "dev": true, "dependencies": { "@isaacs/import-jsx": "^4.0.1", "@types/react": "^17.0.52", "chokidar": "^3.3.0", "findit": "^2.0.0", "foreground-child": "^2.0.0", "fs-exists-cached": "^1.0.0", "glob": "^7.2.3", "ink": "^3.2.0", "isexe": "^2.0.0", "istanbul-lib-processinfo": "^2.0.3", "jackspeak": "^1.4.2", "libtap": "^1.4.0", "minipass": "^3.3.4", "mkdirp": "^1.0.4", "nyc": "^15.1.0", "opener": "^1.5.1", "react": "^17.0.2", "rimraf": "^3.0.0", "signal-exit": "^3.0.6", "source-map-support": "^0.5.16", "tap-mocha-reporter": "^5.0.3", "tap-parser": "^11.0.2", "tap-yaml": "^1.0.2", "tcompare": "^5.0.7", "treport": "^3.0.4", "which": "^2.0.2" }, "bin": { "tap": "bin/run.js" }, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { "coveralls": "^3.1.1", "flow-remove-types": ">=2.112.0", "ts-node": ">=8.5.2", "typescript": ">=3.7.2" }, "peerDependenciesMeta": { "coveralls": { "optional": true }, "flow-remove-types": { "optional": true }, "ts-node": { "optional": true }, "typescript": { "optional": true } } }, "node_modules/tap-mocha-reporter": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-5.0.3.tgz", "integrity": "sha512-6zlGkaV4J+XMRFkN0X+yuw6xHbE9jyCZ3WUKfw4KxMyRGOpYSRuuQTRJyWX88WWuLdVTuFbxzwXhXuS2XE6o0g==", "dev": true, "dependencies": { "color-support": "^1.1.0", "debug": "^4.1.1", "diff": "^4.0.1", "escape-string-regexp": "^2.0.0", "glob": "^7.0.5", "tap-parser": "^11.0.0", "tap-yaml": "^1.0.0", "unicode-length": "^2.0.2" }, "bin": { "tap-mocha-reporter": "index.js" }, "engines": { "node": ">= 8" } }, "node_modules/tap-mocha-reporter/node_modules/escape-string-regexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/tap-parser": { "version": "11.0.2", "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-11.0.2.tgz", "integrity": "sha512-6qGlC956rcORw+fg7Fv1iCRAY8/bU9UabUAhs3mXRH6eRmVZcNPLheSXCYaVaYeSwx5xa/1HXZb1537YSvwDZg==", "dev": true, "dependencies": { "events-to-array": "^1.0.1", "minipass": "^3.1.6", "tap-yaml": "^1.0.0" }, "bin": { "tap-parser": "bin/cmd.js" }, "engines": { "node": ">= 8" } }, "node_modules/tap-yaml": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-1.0.2.tgz", "integrity": "sha512-GegASpuqBnRNdT1U+yuUPZ8rEU64pL35WPBpCISWwff4dErS2/438barz7WFJl4Nzh3Y05tfPidZnH+GaV1wMg==", "dev": true, "dependencies": { "yaml": "^1.10.2" } }, "node_modules/tap/node_modules/@ampproject/remapping": { "version": "2.2.1", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { "node": ">=6.0.0" } }, "node_modules/tap/node_modules/@babel/code-frame": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/highlight": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/compat-data": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/core": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.22.5", "@babel/generator": "^7.22.5", "@babel/helper-compilation-targets": "^7.22.5", "@babel/helper-module-transforms": "^7.22.5", "@babel/helpers": "^7.22.5", "@babel/parser": "^7.22.5", "@babel/template": "^7.22.5", "@babel/traverse": "^7.22.5", "@babel/types": "^7.22.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.2", "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/babel" } }, "node_modules/tap/node_modules/@babel/generator": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/types": "^7.22.5", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-annotate-as-pure": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-compilation-targets": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.5", "@babel/helper-validator-option": "^7.22.5", "browserslist": "^4.21.3", "lru-cache": "^5.1.1", "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/tap/node_modules/@babel/helper-environment-visitor": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-function-name": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/template": "^7.22.5", "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-hoist-variables": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-module-imports": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-module-transforms": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-module-imports": "^7.22.5", "@babel/helper-simple-access": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.5", "@babel/template": "^7.22.5", "@babel/traverse": "^7.22.5", "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-plugin-utils": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-simple-access": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-split-export-declaration": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-string-parser": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-validator-identifier": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helper-validator-option": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/helpers": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/template": "^7.22.5", "@babel/traverse": "^7.22.5", "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/highlight": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.22.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/parser": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, "engines": { "node": ">=6.0.0" } }, "node_modules/tap/node_modules/@babel/plugin-proposal-object-rest-spread": { "version": "7.20.7", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.20.5", "@babel/helper-compilation-targets": "^7.20.7", "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-parameters": "^7.20.7" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/tap/node_modules/@babel/plugin-syntax-jsx": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/tap/node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/tap/node_modules/@babel/plugin-transform-destructuring": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/tap/node_modules/@babel/plugin-transform-parameters": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/tap/node_modules/@babel/plugin-transform-react-jsx": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-module-imports": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-jsx": "^7.22.5", "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/tap/node_modules/@babel/template": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.22.5", "@babel/parser": "^7.22.5", "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/traverse": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.22.5", "@babel/generator": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.5", "@babel/parser": "^7.22.5", "@babel/types": "^7.22.5", "debug": "^4.1.0", "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@babel/types": { "version": "7.22.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.5", "to-fast-properties": "^2.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/@isaacs/import-jsx": { "version": "4.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@babel/core": "^7.5.5", "@babel/plugin-proposal-object-rest-spread": "^7.5.5", "@babel/plugin-transform-destructuring": "^7.5.0", "@babel/plugin-transform-react-jsx": "^7.3.0", "caller-path": "^3.0.1", "find-cache-dir": "^3.2.0", "make-dir": "^3.0.2", "resolve-from": "^3.0.0", "rimraf": "^3.0.0" }, "engines": { "node": ">=10" } }, "node_modules/tap/node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { "node": ">=6.0.0" } }, "node_modules/tap/node_modules/@jridgewell/resolve-uri": { "version": "3.1.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/tap/node_modules/@jridgewell/set-array": { "version": "1.1.2", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/tap/node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/@jridgewell/trace-mapping": { "version": "0.3.18", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" } }, "node_modules/tap/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.14", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/@types/prop-types": { "version": "15.7.5", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/@types/react": { "version": "17.0.62", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", "csstype": "^3.0.2" } }, "node_modules/tap/node_modules/@types/scheduler": { "version": "0.16.3", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/@types/yoga-layout": { "version": "1.9.2", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/ansi-escapes": { "version": "4.3.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tap/node_modules/ansi-escapes/node_modules/type-fest": { "version": "0.21.3", "dev": true, "inBundle": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tap/node_modules/ansi-regex": { "version": "5.0.1", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/ansi-styles": { "version": "3.2.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, "engines": { "node": ">=4" } }, "node_modules/tap/node_modules/ansicolors": { "version": "0.3.2", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/astral-regex": { "version": "2.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/auto-bind": { "version": "4.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tap/node_modules/balanced-match": { "version": "1.0.2", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/brace-expansion": { "version": "1.1.11", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/tap/node_modules/browserslist": { "version": "4.21.9", "dev": true, "funding": [ { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" }, { "type": "github", "url": "https://github.com/sponsors/ai" } ], "inBundle": true, "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001503", "electron-to-chromium": "^1.4.431", "node-releases": "^2.0.12", "update-browserslist-db": "^1.0.11" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, "node_modules/tap/node_modules/caller-callsite": { "version": "4.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "callsites": "^3.1.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/caller-path": { "version": "3.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "caller-callsite": "^4.1.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/callsites": { "version": "3.1.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tap/node_modules/caniuse-lite": { "version": "1.0.30001506", "dev": true, "funding": [ { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" }, { "type": "github", "url": "https://github.com/sponsors/ai" } ], "inBundle": true, "license": "CC-BY-4.0" }, "node_modules/tap/node_modules/cardinal": { "version": "2.1.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ansicolors": "~0.3.2", "redeyed": "~2.1.0" }, "bin": { "cdl": "bin/cdl.js" } }, "node_modules/tap/node_modules/chalk": { "version": "2.4.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" }, "engines": { "node": ">=4" } }, "node_modules/tap/node_modules/ci-info": { "version": "2.0.0", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/cli-boxes": { "version": "2.2.1", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tap/node_modules/cli-cursor": { "version": "3.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/cli-truncate": { "version": "2.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tap/node_modules/code-excerpt": { "version": "3.0.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "convert-to-spaces": "^1.0.1" }, "engines": { "node": ">=10" } }, "node_modules/tap/node_modules/color-convert": { "version": "1.9.3", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/tap/node_modules/color-name": { "version": "1.1.3", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/commondir": { "version": "1.0.1", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/concat-map": { "version": "0.0.1", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/convert-source-map": { "version": "1.9.0", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/convert-to-spaces": { "version": "1.0.2", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/tap/node_modules/csstype": { "version": "3.1.2", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/debug": { "version": "4.3.4", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ms": "2.1.2" }, "engines": { "node": ">=6.0" }, "peerDependenciesMeta": { "supports-color": { "optional": true } } }, "node_modules/tap/node_modules/electron-to-chromium": { "version": "1.4.438", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/tap/node_modules/emoji-regex": { "version": "8.0.0", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/escalade": { "version": "3.1.1", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tap/node_modules/escape-string-regexp": { "version": "1.0.5", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/tap/node_modules/esprima": { "version": "4.0.1", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" }, "engines": { "node": ">=4" } }, "node_modules/tap/node_modules/events-to-array": { "version": "1.1.2", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/tap/node_modules/find-cache-dir": { "version": "3.3.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", "pkg-dir": "^4.1.0" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, "node_modules/tap/node_modules/find-up": { "version": "4.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/fs.realpath": { "version": "1.0.0", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/tap/node_modules/gensync": { "version": "1.0.0-beta.2", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/tap/node_modules/glob": { "version": "7.2.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, "engines": { "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/tap/node_modules/globals": { "version": "11.12.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/tap/node_modules/has-flag": { "version": "3.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/tap/node_modules/indent-string": { "version": "4.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/inflight": { "version": "1.0.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "node_modules/tap/node_modules/inherits": { "version": "2.0.4", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/tap/node_modules/ink": { "version": "3.2.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", "auto-bind": "4.0.0", "chalk": "^4.1.0", "cli-boxes": "^2.2.0", "cli-cursor": "^3.1.0", "cli-truncate": "^2.1.0", "code-excerpt": "^3.0.0", "indent-string": "^4.0.0", "is-ci": "^2.0.0", "lodash": "^4.17.20", "patch-console": "^1.0.0", "react-devtools-core": "^4.19.1", "react-reconciler": "^0.26.2", "scheduler": "^0.20.2", "signal-exit": "^3.0.2", "slice-ansi": "^3.0.0", "stack-utils": "^2.0.2", "string-width": "^4.2.2", "type-fest": "^0.12.0", "widest-line": "^3.1.0", "wrap-ansi": "^6.2.0", "ws": "^7.5.5", "yoga-layout-prebuilt": "^1.9.6" }, "engines": { "node": ">=10" }, "peerDependencies": { "@types/react": ">=16.8.0", "react": ">=16.8.0" }, "peerDependenciesMeta": { "@types/react": { "optional": true } } }, "node_modules/tap/node_modules/ink/node_modules/ansi-styles": { "version": "4.3.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/tap/node_modules/ink/node_modules/chalk": { "version": "4.1.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/tap/node_modules/ink/node_modules/color-convert": { "version": "2.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, "engines": { "node": ">=7.0.0" } }, "node_modules/tap/node_modules/ink/node_modules/color-name": { "version": "1.1.4", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/ink/node_modules/has-flag": { "version": "4.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/ink/node_modules/supports-color": { "version": "7.2.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/is-ci": { "version": "2.0.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ci-info": "^2.0.0" }, "bin": { "is-ci": "bin.js" } }, "node_modules/tap/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/js-tokens": { "version": "4.0.0", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/jsesc": { "version": "2.5.2", "dev": true, "inBundle": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { "node": ">=4" } }, "node_modules/tap/node_modules/json5": { "version": "2.2.3", "dev": true, "inBundle": true, "license": "MIT", "bin": { "json5": "lib/cli.js" }, "engines": { "node": ">=6" } }, "node_modules/tap/node_modules/locate-path": { "version": "5.0.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/lodash": { "version": "4.17.21", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/loose-envify": { "version": "1.4.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "node_modules/tap/node_modules/lru-cache": { "version": "5.1.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "yallist": "^3.0.2" } }, "node_modules/tap/node_modules/make-dir": { "version": "3.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "semver": "^6.0.0" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tap/node_modules/mimic-fn": { "version": "2.1.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tap/node_modules/minimatch": { "version": "3.1.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, "engines": { "node": "*" } }, "node_modules/tap/node_modules/minipass": { "version": "3.3.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/minipass/node_modules/yallist": { "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/tap/node_modules/ms": { "version": "2.1.2", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/node-releases": { "version": "2.0.12", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/object-assign": { "version": "4.1.1", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/tap/node_modules/once": { "version": "1.4.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/tap/node_modules/onetime": { "version": "5.1.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, "engines": { "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tap/node_modules/p-limit": { "version": "2.3.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, "engines": { "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tap/node_modules/p-locate": { "version": "4.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/p-try": { "version": "2.2.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tap/node_modules/patch-console": { "version": "1.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/tap/node_modules/path-exists": { "version": "4.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/path-is-absolute": { "version": "1.0.1", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/tap/node_modules/picocolors": { "version": "1.0.0", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/tap/node_modules/pkg-dir": { "version": "4.2.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/punycode": { "version": "2.3.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tap/node_modules/react": { "version": "17.0.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" }, "engines": { "node": ">=0.10.0" } }, "node_modules/tap/node_modules/react-devtools-core": { "version": "4.27.8", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "shell-quote": "^1.6.1", "ws": "^7" } }, "node_modules/tap/node_modules/react-reconciler": { "version": "0.26.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "scheduler": "^0.20.2" }, "engines": { "node": ">=0.10.0" }, "peerDependencies": { "react": "^17.0.2" } }, "node_modules/tap/node_modules/redeyed": { "version": "2.1.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "esprima": "~4.0.0" } }, "node_modules/tap/node_modules/resolve-from": { "version": "3.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/tap/node_modules/restore-cursor": { "version": "3.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/rimraf": { "version": "3.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/tap/node_modules/scheduler": { "version": "0.20.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" } }, "node_modules/tap/node_modules/semver": { "version": "6.3.0", "dev": true, "inBundle": true, "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/tap/node_modules/shell-quote": { "version": "1.8.1", "dev": true, "inBundle": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/tap/node_modules/signal-exit": { "version": "3.0.7", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/tap/node_modules/slice-ansi": { "version": "3.0.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/slice-ansi/node_modules/ansi-styles": { "version": "4.3.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/tap/node_modules/slice-ansi/node_modules/color-convert": { "version": "2.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, "engines": { "node": ">=7.0.0" } }, "node_modules/tap/node_modules/slice-ansi/node_modules/color-name": { "version": "1.1.4", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/stack-utils": { "version": "2.0.6", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" }, "engines": { "node": ">=10" } }, "node_modules/tap/node_modules/stack-utils/node_modules/escape-string-regexp": { "version": "2.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/string-width": { "version": "4.2.3", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/strip-ansi": { "version": "6.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/supports-color": { "version": "5.5.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, "engines": { "node": ">=4" } }, "node_modules/tap/node_modules/tap-parser": { "version": "11.0.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "events-to-array": "^1.0.1", "minipass": "^3.1.6", "tap-yaml": "^1.0.0" }, "bin": { "tap-parser": "bin/cmd.js" }, "engines": { "node": ">= 8" } }, "node_modules/tap/node_modules/tap-yaml": { "version": "1.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "yaml": "^1.10.2" } }, "node_modules/tap/node_modules/to-fast-properties": { "version": "2.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/tap/node_modules/treport": { "version": "3.0.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@isaacs/import-jsx": "^4.0.1", "cardinal": "^2.1.1", "chalk": "^3.0.0", "ink": "^3.2.0", "ms": "^2.1.2", "tap-parser": "^11.0.0", "tap-yaml": "^1.0.0", "unicode-length": "^2.0.2" }, "peerDependencies": { "react": "^17.0.2" } }, "node_modules/tap/node_modules/treport/node_modules/ansi-styles": { "version": "4.3.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/tap/node_modules/treport/node_modules/chalk": { "version": "3.0.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/treport/node_modules/color-convert": { "version": "2.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, "engines": { "node": ">=7.0.0" } }, "node_modules/tap/node_modules/treport/node_modules/color-name": { "version": "1.1.4", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/treport/node_modules/has-flag": { "version": "4.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/treport/node_modules/supports-color": { "version": "7.2.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/type-fest": { "version": "0.12.0", "dev": true, "inBundle": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tap/node_modules/unicode-length": { "version": "2.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "punycode": "^2.0.0" } }, "node_modules/tap/node_modules/update-browserslist-db": { "version": "1.0.11", "dev": true, "funding": [ { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" }, { "type": "github", "url": "https://github.com/sponsors/ai" } ], "inBundle": true, "license": "MIT", "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" }, "bin": { "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" } }, "node_modules/tap/node_modules/widest-line": { "version": "3.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "string-width": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/wrap-ansi": { "version": "6.2.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" }, "engines": { "node": ">=8" } }, "node_modules/tap/node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/tap/node_modules/wrap-ansi/node_modules/color-convert": { "version": "2.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, "engines": { "node": ">=7.0.0" } }, "node_modules/tap/node_modules/wrap-ansi/node_modules/color-name": { "version": "1.1.4", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/tap/node_modules/wrappy": { "version": "1.0.2", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/tap/node_modules/ws": { "version": "7.5.9", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8.3.0" }, "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "peerDependenciesMeta": { "bufferutil": { "optional": true }, "utf-8-validate": { "optional": true } } }, "node_modules/tap/node_modules/yallist": { "version": "3.1.1", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/tap/node_modules/yaml": { "version": "1.10.2", "dev": true, "inBundle": true, "license": "ISC", "engines": { "node": ">= 6" } }, "node_modules/tap/node_modules/yoga-layout-prebuilt": { "version": "1.10.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@types/yoga-layout": "1.9.2" }, "engines": { "node": ">=8" } }, "node_modules/tcompare": { "version": "5.0.7", "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-5.0.7.tgz", "integrity": "sha512-d9iddt6YYGgyxJw5bjsN7UJUO1kGOtjSlNy/4PoGYAjQS5pAT/hzIoLf1bZCw+uUxRmZJh7Yy1aA7xKVRT9B4w==", "dev": true, "dependencies": { "diff": "^4.0.2" }, "engines": { "node": ">=10" } }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", "minimatch": "^3.0.4" }, "engines": { "node": ">=8" } }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true, "peer": true }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "dependencies": { "is-number": "^7.0.0" }, "engines": { "node": ">=8.0" } }, "node_modules/trivial-deferred": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-1.1.2.tgz", "integrity": "sha512-vDPiDBC3hyP6O4JrJYMImW3nl3c03Tsj9fEXc7Qc/XKa1O7gf5ZtFfIR/E0dun9SnDHdwjna1Z2rSzYgqpxh/g==", "dev": true, "engines": { "node": ">= 8" } }, "node_modules/ts-node": { "version": "10.9.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", "@tsconfig/node16": "^1.0.2", "acorn": "^8.4.1", "acorn-walk": "^8.1.1", "arg": "^4.1.0", "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "bin": { "ts-node": "dist/bin.js", "ts-node-cwd": "dist/bin-cwd.js", "ts-node-esm": "dist/bin-esm.js", "ts-node-script": "dist/bin-script.js", "ts-node-transpile-only": "dist/bin-transpile.js", "ts-script": "dist/bin-script-deprecated.js" }, "peerDependencies": { "@swc/core": ">=1.2.50", "@swc/wasm": ">=1.2.50", "@types/node": "*", "typescript": ">=2.7" }, "peerDependenciesMeta": { "@swc/core": { "optional": true }, "@swc/wasm": { "optional": true } } }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "peer": true, "dependencies": { "prelude-ls": "^1.2.1" }, "engines": { "node": ">= 0.8.0" } }, "node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "peer": true, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/typedoc": { "version": "0.23.28", "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.28.tgz", "integrity": "sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==", "dev": true, "dependencies": { "lunr": "^2.3.9", "marked": "^4.2.12", "minimatch": "^7.1.3", "shiki": "^0.14.1" }, "bin": { "typedoc": "bin/typedoc" }, "engines": { "node": ">= 14.14" }, "peerDependencies": { "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x" } }, "node_modules/typedoc/node_modules/minimatch": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/typescript": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { "node": ">=4.2.0" } }, "node_modules/unicode-length": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-length/-/unicode-length-2.1.0.tgz", "integrity": "sha512-4bV582zTV9Q02RXBxSUMiuN/KHo5w4aTojuKTNT96DIKps/SIawFp7cS5Mu25VuY1AioGXrmYyzKZUzh8OqoUw==", "dev": true, "dependencies": { "punycode": "^2.0.0" } }, "node_modules/update-browserslist-db": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", "dev": true, "funding": [ { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" }, { "type": "github", "url": "https://github.com/sponsors/ai" } ], "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" }, "bin": { "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" } }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "peer": true, "dependencies": { "punycode": "^2.1.0" } }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true }, "node_modules/v8-to-istanbul": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^1.6.0" }, "engines": { "node": ">=10.12.0" } }, "node_modules/vscode-oniguruma": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", "dev": true }, "node_modules/vscode-textmate": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", "dev": true }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "bin/node-which" }, "engines": { "node": ">= 8" } }, "node_modules/which-module": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", "dev": true }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", "signal-exit": "^3.0.2", "typedarray-to-buffer": "^3.1.5" } }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "engines": { "node": ">=10" } }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, "node_modules/yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, "engines": { "node": ">= 6" } }, "node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" }, "engines": { "node": ">=10" } }, "node_modules/yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, "engines": { "node": ">=10" } }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } } } } minimatch-9.0.3/package.json000066400000000000000000000040721445157213200157710ustar00rootroot00000000000000{ "author": "Isaac Z. Schlueter (http://blog.izs.me)", "name": "minimatch", "description": "a glob matcher in javascript", "version": "9.0.3", "repository": { "type": "git", "url": "git://github.com/isaacs/minimatch.git" }, "main": "./dist/cjs/index.js", "module": "./dist/mjs/index.js", "types": "./dist/cjs/index.d.ts", "exports": { ".": { "import": { "types": "./dist/mjs/index.d.ts", "default": "./dist/mjs/index.js" }, "require": { "types": "./dist/cjs/index.d.ts", "default": "./dist/cjs/index.js" } } }, "files": [ "dist" ], "scripts": { "preversion": "npm test", "postversion": "npm publish", "prepublishOnly": "git push origin --follow-tags", "preprepare": "rm -rf dist", "prepare": "tsc -p tsconfig.json && tsc -p tsconfig-esm.json", "postprepare": "bash fixup.sh", "pretest": "npm run prepare", "presnap": "npm run prepare", "test": "c8 tap", "snap": "c8 tap", "format": "prettier --write . --loglevel warn", "benchmark": "node benchmark/index.js", "typedoc": "typedoc --tsconfig tsconfig-esm.json ./src/*.ts" }, "prettier": { "semi": false, "printWidth": 80, "tabWidth": 2, "useTabs": false, "singleQuote": true, "jsxSingleQuote": false, "bracketSameLine": true, "arrowParens": "avoid", "endOfLine": "lf" }, "engines": { "node": ">=16 || 14 >=14.17" }, "dependencies": { "brace-expansion": "^2.0.1" }, "devDependencies": { "@types/brace-expansion": "^1.1.0", "@types/node": "^18.15.11", "@types/tap": "^15.0.8", "c8": "^7.12.0", "eslint-config-prettier": "^8.6.0", "mkdirp": "1", "prettier": "^2.8.2", "tap": "^16.3.7", "ts-node": "^10.9.1", "typedoc": "^0.23.21", "typescript": "^4.9.3" }, "tap": { "coverage": false, "node-arg": [ "--no-warnings", "--loader", "ts-node/esm" ], "ts": false }, "funding": { "url": "https://github.com/sponsors/isaacs" }, "license": "ISC" } minimatch-9.0.3/src/000077500000000000000000000000001445157213200142675ustar00rootroot00000000000000minimatch-9.0.3/src/assert-valid-pattern.ts000066400000000000000000000005111445157213200207050ustar00rootroot00000000000000const 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') } } minimatch-9.0.3/src/ast.ts000066400000000000000000000520031445157213200154260ustar00rootroot00000000000000// parse a single path portion import { parseClass } from './brace-expressions.js' import { MinimatchOptions, MMRegExp } from './index.js' import { unescape } from './unescape.js' // 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 // 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( allowDot?: boolean ): [re: string, body: string, hasMagic: boolean, uflag: boolean] { const dot = allowDot ?? !!this.#options.dot 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(allowDot) 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 . (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 = !dot && !allowDot && 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, ] } // We need to calculate the body *twice* if it's a repeat pattern // at the start, once in nodot mode, then again in dot mode, so a // pattern like *(?) can match 'x.y' const repeated = this.type === '*' || this.type === '+' // some kind of extglob const start = this.type === '!' ? '(?:(?!(?:' : '(?:' let body = this.#partsToRegExp(dot) 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] } // XXX abstract out this map method let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ? '' : this.#partsToRegExp(true) if (bodyDotAllowed === body) { bodyDotAllowed = '' } if (bodyDotAllowed) { body = `(?:${body})(?:${bodyDotAllowed})*?` } // an empty !() is exactly equivalent to a starNoEmpty let final = '' if (this.type === '!' && this.#emptyExt) { final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty } else { const close = this.type === '!' ? // !() must match something,but !(x) can match '' '))' + (this.isStart() && !dot && !allowDot ? startNoDot : '') + star + ')' : this.type === '@' ? ')' : this.type === '?' ? ')?' : this.type === '+' && bodyDotAllowed ? ')' : this.type === '*' && bodyDotAllowed ? `)?` : `)${this.type}` final = start + body + close } return [ final, unescape(body), (this.#hasMagic = !!this.#hasMagic), this.#uflag, ] } #partsToRegExp(dot: boolean) { return 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(dot) this.#uflag = this.#uflag || uflag return re }) .filter(p => !(this.isStart() && this.isEnd()) || !!p) .join('|') } 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] } } minimatch-9.0.3/src/brace-expressions.ts000066400000000000000000000121451445157213200202760ustar00rootroot00000000000000// translate the various posix character classes into unicode properties // this works across all unicode locales // { : [, /u flag required, negated] const posixClasses: { [k: string]: [e: string, u: boolean, n?: boolean] } = { '[:alnum:]': ['\\p{L}\\p{Nl}\\p{Nd}', true], '[:alpha:]': ['\\p{L}\\p{Nl}', true], '[:ascii:]': ['\\x' + '00-\\x' + '7f', false], '[:blank:]': ['\\p{Zs}\\t', true], '[:cntrl:]': ['\\p{Cc}', true], '[:digit:]': ['\\p{Nd}', true], '[:graph:]': ['\\p{Z}\\p{C}', true, true], '[:lower:]': ['\\p{Ll}', true], '[:print:]': ['\\p{C}', true], '[:punct:]': ['\\p{P}', true], '[:space:]': ['\\p{Z}\\t\\r\\n\\v\\f', true], '[:upper:]': ['\\p{Lu}', true], '[:word:]': ['\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}', true], '[:xdigit:]': ['A-Fa-f0-9', false], } // only need to escape a few things inside of brace expressions // escapes: [ \ ] - const braceEscape = (s: string) => s.replace(/[[\]\\-]/g, '\\$&') // escape all regexp magic characters const regexpEscape = (s: string) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') // everything has already been escaped, we just have to join const rangesToString = (ranges: string[]): string => ranges.join('') export type ParseClassResult = [ src: string, uFlag: boolean, consumed: number, hasMagic: boolean ] // takes a glob string at a posix brace expression, and returns // an equivalent regular expression source, and boolean indicating // whether the /u flag needs to be applied, and the number of chars // consumed to parse the character class. // This also removes out of order ranges, and returns ($.) if the // entire class just no good. export const parseClass = ( glob: string, position: number ): ParseClassResult => { const pos = position /* c8 ignore start */ if (glob.charAt(pos) !== '[') { throw new Error('not in a brace expression') } /* c8 ignore stop */ const ranges: string[] = [] const negs: string[] = [] let i = pos + 1 let sawStart = false let uflag = false let escaping = false let negate = false let endPos = pos let rangeStart = '' WHILE: while (i < glob.length) { const c = glob.charAt(i) if ((c === '!' || c === '^') && i === pos + 1) { negate = true i++ continue } if (c === ']' && sawStart && !escaping) { endPos = i + 1 break } sawStart = true if (c === '\\') { if (!escaping) { escaping = true i++ continue } // escaped \ char, fall through and treat like normal char } if (c === '[' && !escaping) { // either a posix class, a collation equivalent, or just a [ for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) { if (glob.startsWith(cls, i)) { // invalid, [a-[] is fine, but not [a-[:alpha]] if (rangeStart) { return ['$.', false, glob.length - pos, true] } i += cls.length if (neg) negs.push(unip) else ranges.push(unip) uflag = uflag || u continue WHILE } } } // now it's just a normal character, effectively escaping = false if (rangeStart) { // throw this range away if it's not valid, but others // can still match. if (c > rangeStart) { ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c)) } else if (c === rangeStart) { ranges.push(braceEscape(c)) } rangeStart = '' i++ continue } // now might be the start of a range. // can be either c-d or c-] or c] or c] at this point if (glob.startsWith('-]', i + 1)) { ranges.push(braceEscape(c + '-')) i += 2 continue } if (glob.startsWith('-', i + 1)) { rangeStart = c i += 2 continue } // not the start of a range, just a single character ranges.push(braceEscape(c)) i++ } if (endPos < i) { // didn't see the end of the class, not a valid class, // but might still be valid as a literal match. return ['', false, 0, false] } // if we got no ranges and no negates, then we have a range that // cannot possibly match anything, and that poisons the whole glob if (!ranges.length && !negs.length) { return ['$.', false, glob.length - pos, true] } // if we got one positive range, and it's a single character, then that's // not actually a magic pattern, it's just that one literal character. // we should not treat that as "magic", we should just return the literal // character. [_] is a perfectly valid way to escape glob magic chars. if ( negs.length === 0 && ranges.length === 1 && /^\\?.$/.test(ranges[0]) && !negate ) { const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0] return [regexpEscape(r), false, endPos - pos, false] } const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']' const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']' const comb = ranges.length && negs.length ? '(' + sranges + '|' + snegs + ')' : ranges.length ? sranges : snegs return [comb, uflag, endPos - pos, true] } minimatch-9.0.3/src/escape.ts000066400000000000000000000016161445157213200161030ustar00rootroot00000000000000import { MinimatchOptions } from './index.js' /** * Escape all magic characters in a glob pattern. * * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape} * option is used, then characters are escaped by wrapping in `[]`, because * a magic character wrapped in a character class can only be satisfied by * that exact character. In this mode, `\` is _not_ escaped, because it is * not interpreted as a magic character, but instead as a path separator. */ export const escape = ( s: string, { windowsPathsNoEscape = false, }: Pick = {} ) => { // don't need to escape +@! because we escape the parens // that make those magic, and escaping ! as [!] isn't valid, // because [!]] is a valid glob class meaning not ']'. return windowsPathsNoEscape ? s.replace(/[?*()[\]]/g, '[$&]') : s.replace(/[?*()[\]\\]/g, '\\$&') } minimatch-9.0.3/src/index.ts000066400000000000000000001063571445157213200157620ustar00rootroot00000000000000import expand from 'brace-expansion' import { assertValidPattern } from './assert-valid-pattern.js' import { AST, ExtglobType } from './ast.js' import { escape } from './escape.js' import { unescape } from './unescape.js' type Platform = | 'aix' | 'android' | 'darwin' | 'freebsd' | 'haiku' | 'linux' | 'openbsd' | 'sunos' | 'win32' | 'cygwin' | 'netbsd' export interface MinimatchOptions { nobrace?: boolean nocomment?: boolean nonegate?: boolean debug?: boolean noglobstar?: boolean noext?: boolean nonull?: boolean windowsPathsNoEscape?: boolean allowWindowsEscape?: boolean partial?: boolean dot?: boolean nocase?: boolean nocaseMagicOnly?: boolean magicalBraces?: boolean matchBase?: boolean flipNegate?: boolean preserveMultipleSlashes?: boolean optimizationLevel?: number platform?: Platform windowsNoMagicRoot?: boolean } export const minimatch = ( p: string, pattern: string, options: MinimatchOptions = {} ) => { assertValidPattern(pattern) // shortcut: comments match nothing. if (!options.nocomment && pattern.charAt(0) === '#') { return false } return new Minimatch(pattern, options).match(p) } // Optimized checking for the most common glob patterns. const starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/ const starDotExtTest = (ext: string) => (f: string) => !f.startsWith('.') && f.endsWith(ext) const starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext) const starDotExtTestNocase = (ext: string) => { ext = ext.toLowerCase() return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext) } const starDotExtTestNocaseDot = (ext: string) => { ext = ext.toLowerCase() return (f: string) => f.toLowerCase().endsWith(ext) } const starDotStarRE = /^\*+\.\*+$/ const starDotStarTest = (f: string) => !f.startsWith('.') && f.includes('.') const starDotStarTestDot = (f: string) => f !== '.' && f !== '..' && f.includes('.') const dotStarRE = /^\.\*+$/ const dotStarTest = (f: string) => f !== '.' && f !== '..' && f.startsWith('.') const starRE = /^\*+$/ const starTest = (f: string) => f.length !== 0 && !f.startsWith('.') const starTestDot = (f: string) => f.length !== 0 && f !== '.' && f !== '..' const qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/ const qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => { const noext = qmarksTestNoExt([$0]) if (!ext) return noext ext = ext.toLowerCase() return (f: string) => noext(f) && f.toLowerCase().endsWith(ext) } const qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => { const noext = qmarksTestNoExtDot([$0]) if (!ext) return noext ext = ext.toLowerCase() return (f: string) => noext(f) && f.toLowerCase().endsWith(ext) } const qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => { const noext = qmarksTestNoExtDot([$0]) return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext) } const qmarksTest = ([$0, ext = '']: RegExpMatchArray) => { const noext = qmarksTestNoExt([$0]) return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext) } const qmarksTestNoExt = ([$0]: RegExpMatchArray) => { const len = $0.length return (f: string) => f.length === len && !f.startsWith('.') } const qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => { const len = $0.length return (f: string) => f.length === len && f !== '.' && f !== '..' } /* c8 ignore start */ const defaultPlatform: Platform = ( typeof process === 'object' && process ? (typeof process.env === 'object' && process.env && process.env.__MINIMATCH_TESTING_PLATFORM__) || process.platform : 'posix' ) as Platform type Sep = '\\' | '/' const path: { [k: string]: { sep: Sep } } = { win32: { sep: '\\' }, posix: { sep: '/' }, } /* c8 ignore stop */ export const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep minimatch.sep = sep export const GLOBSTAR = Symbol('globstar **') minimatch.GLOBSTAR = GLOBSTAR // any single thing other than / // don't need to escape / when using new RegExp() const qmark = '[^/]' // * => any number of characters const star = qmark + '*?' // ** when dots are allowed. Anything goes, except .. and . // not (^ or / followed by one or two dots followed by $ or /), // followed by anything, any number of times. const twoStarDot = '(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?' // not a ^ or / followed by a dot, // followed by anything, any number of times. const twoStarNoDot = '(?:(?!(?:\\/|^)\\.).)*?' export const filter = (pattern: string, options: MinimatchOptions = {}) => (p: string) => minimatch(p, pattern, options) minimatch.filter = filter const ext = (a: MinimatchOptions, b: MinimatchOptions = {}) => Object.assign({}, a, b) export const defaults = (def: MinimatchOptions): typeof minimatch => { if (!def || typeof def !== 'object' || !Object.keys(def).length) { return minimatch } const orig = minimatch const m = (p: string, pattern: string, options: MinimatchOptions = {}) => orig(p, pattern, ext(def, options)) return Object.assign(m, { Minimatch: class Minimatch extends orig.Minimatch { constructor(pattern: string, options: MinimatchOptions = {}) { super(pattern, ext(def, options)) } static defaults(options: MinimatchOptions) { return orig.defaults(ext(def, options)).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 = {} ) => orig.unescape(s, ext(def, options)), escape: ( s: string, options: Pick = {} ) => orig.escape(s, ext(def, options)), filter: (pattern: string, options: MinimatchOptions = {}) => orig.filter(pattern, ext(def, options)), defaults: (options: MinimatchOptions) => orig.defaults(ext(def, options)), makeRe: (pattern: string, options: MinimatchOptions = {}) => orig.makeRe(pattern, ext(def, options)), braceExpand: (pattern: string, options: MinimatchOptions = {}) => orig.braceExpand(pattern, ext(def, options)), match: (list: string[], pattern: string, options: MinimatchOptions = {}) => orig.match(list, pattern, ext(def, options)), sep: orig.sep, GLOBSTAR: GLOBSTAR as typeof GLOBSTAR, }) } minimatch.defaults = defaults // Brace expansion: // a{b,c}d -> abd acd // a{b,}c -> abc ac // a{0..3}d -> a0d a1d a2d a3d // a{b,c{d,e}f}g -> abg acdfg acefg // a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg // // Invalid sets are not expanded. // a{2..}b -> a{2..}b // a{b}c -> a{b}c export const braceExpand = ( pattern: string, options: MinimatchOptions = {} ) => { assertValidPattern(pattern) // Thanks to Yeting Li for // improving this regexp to avoid a ReDOS vulnerability. if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { // shortcut. no need to expand. return [pattern] } return expand(pattern) } minimatch.braceExpand = braceExpand // 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 // pattern, split on '/', and then turned into a regular expression. // A regexp is made at the end which joins each array with an // escaped /, and another full one which joins each regexp with |. // // Following the lead of Bash 4.1, note that "**" only has special meaning // when it is the *only* thing in a path portion. Otherwise, any series // of * is equivalent to a single *. Globstar behavior is enabled by // default, and can be disabled by setting options.noglobstar. export const makeRe = (pattern: string, options: MinimatchOptions = {}) => new Minimatch(pattern, options).makeRe() minimatch.makeRe = makeRe export const match = ( list: string[], pattern: string, options: MinimatchOptions = {} ) => { const mm = new Minimatch(pattern, options) list = list.filter(f => mm.match(f)) if (mm.options.nonull && !list.length) { list.push(pattern) } return list } minimatch.match = match // replace stuff like \* with * const globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/ const regExpEscape = (s: string) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') export type MMRegExp = RegExp & { _src?: string _glob?: string } export type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR export type ParseReturn = ParseReturnFiltered | false export class Minimatch { options: MinimatchOptions set: ParseReturnFiltered[][] pattern: string windowsPathsNoEscape: boolean nonegate: boolean negate: boolean comment: boolean empty: boolean preserveMultipleSlashes: boolean partial: boolean globSet: string[] globParts: string[][] nocase: boolean isWindows: boolean platform: Platform windowsNoMagicRoot: boolean regexp: false | null | MMRegExp constructor(pattern: string, options: MinimatchOptions = {}) { assertValidPattern(pattern) options = options || {} this.options = options this.pattern = pattern this.platform = options.platform || defaultPlatform this.isWindows = this.platform === 'win32' this.windowsPathsNoEscape = !!options.windowsPathsNoEscape || options.allowWindowsEscape === false if (this.windowsPathsNoEscape) { this.pattern = this.pattern.replace(/\\/g, '/') } this.preserveMultipleSlashes = !!options.preserveMultipleSlashes this.regexp = null this.negate = false this.nonegate = !!options.nonegate this.comment = false this.empty = false this.partial = !!options.partial this.nocase = !!this.options.nocase this.windowsNoMagicRoot = options.windowsNoMagicRoot !== undefined ? options.windowsNoMagicRoot : !!(this.isWindows && this.nocase) this.globSet = [] this.globParts = [] this.set = [] // make the set of regexps etc. this.make() } hasMagic(): boolean { if (this.options.magicalBraces && this.set.length > 1) { return true } for (const pattern of this.set) { for (const part of pattern) { if (typeof part !== 'string') return true } } return false } debug(..._: any[]) {} make() { const pattern = this.pattern const options = this.options // empty patterns and comments match nothing. if (!options.nocomment && pattern.charAt(0) === '#') { this.comment = true return } if (!pattern) { this.empty = true return } // step 1: figure out negation, etc. this.parseNegate() // step 2: expand braces this.globSet = [...new Set(this.braceExpand())] if (options.debug) { this.debug = (...args: any[]) => console.error(...args) } this.debug(this.pattern, this.globSet) // step 3: now we have a set, so turn each one into a series of // path-portion matching patterns. // These will be regexps, except in the case of "**", which is // set to the GLOBSTAR object for globstar behavior, // and will not contain any / characters // // First, we preprocess to make the glob pattern sets a bit simpler // and deduped. There are some perf-killing patterns that can cause // problems with a glob walk, but we can simplify them down a bit. const rawGlobParts = this.globSet.map(s => this.slashSplit(s)) this.globParts = this.preprocess(rawGlobParts) this.debug(this.pattern, this.globParts) // glob --> regexps let set = this.globParts.map((s, _, __) => { if (this.isWindows && this.windowsNoMagicRoot) { // check if it's a drive or unc path. const isUNC = s[0] === '' && s[1] === '' && (s[2] === '?' || !globMagic.test(s[2])) && !globMagic.test(s[3]) const isDrive = /^[a-z]:/i.test(s[0]) if (isUNC) { return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))] } else if (isDrive) { return [s[0], ...s.slice(1).map(ss => this.parse(ss))] } } return s.map(ss => this.parse(ss)) }) this.debug(this.pattern, set) // filter out everything that didn't compile properly. this.set = set.filter( s => s.indexOf(false) === -1 ) as ParseReturnFiltered[][] // do not treat the ? in UNC paths as magic if (this.isWindows) { for (let i = 0; i < this.set.length; i++) { const p = this.set[i] if ( p[0] === '' && p[1] === '' && this.globParts[i][2] === '?' && typeof p[3] === 'string' && /^[a-z]:$/i.test(p[3]) ) { p[2] = '?' } } } this.debug(this.pattern, this.set) } // various transforms to equivalent pattern sets that are // faster to process in a filesystem walk. The goal is to // eliminate what we can, and push all ** patterns as far // to the right as possible, even if it increases the number // of patterns that we have to process. preprocess(globParts: string[][]) { // if we're not in globstar mode, then turn all ** into * if (this.options.noglobstar) { for (let i = 0; i < globParts.length; i++) { for (let j = 0; j < globParts[i].length; j++) { if (globParts[i][j] === '**') { globParts[i][j] = '*' } } } } const { optimizationLevel = 1 } = this.options if (optimizationLevel >= 2) { // aggressive optimization for the purpose of fs walking globParts = this.firstPhasePreProcess(globParts) globParts = this.secondPhasePreProcess(globParts) } else if (optimizationLevel >= 1) { // just basic optimizations to remove some .. parts globParts = this.levelOneOptimize(globParts) } else { globParts = this.adjascentGlobstarOptimize(globParts) } return globParts } // just get rid of adjascent ** portions adjascentGlobstarOptimize(globParts: string[][]) { return globParts.map(parts => { let gs: number = -1 while (-1 !== (gs = parts.indexOf('**', gs + 1))) { let i = gs while (parts[i + 1] === '**') { i++ } if (i !== gs) { parts.splice(gs, i - gs) } } return parts }) } // get rid of adjascent ** and resolve .. portions levelOneOptimize(globParts: string[][]) { return globParts.map(parts => { parts = parts.reduce((set: string[], part) => { const prev = set[set.length - 1] if (part === '**' && prev === '**') { return set } if (part === '..') { if (prev && prev !== '..' && prev !== '.' && prev !== '**') { set.pop() return set } } set.push(part) return set }, []) return parts.length === 0 ? [''] : parts }) } levelTwoFileOptimize(parts: string | string[]) { if (!Array.isArray(parts)) { parts = this.slashSplit(parts) } let didSomething: boolean = false do { didSomething = false //

// -> 
/
      if (!this.preserveMultipleSlashes) {
        for (let i = 1; i < parts.length - 1; i++) {
          const p = parts[i]
          // don't squeeze out UNC patterns
          if (i === 1 && p === '' && parts[0] === '') continue
          if (p === '.' || p === '') {
            didSomething = true
            parts.splice(i, 1)
            i--
          }
        }
        if (
          parts[0] === '.' &&
          parts.length === 2 &&
          (parts[1] === '.' || parts[1] === '')
        ) {
          didSomething = true
          parts.pop()
        }
      }

      // 
/

/../ ->

/
      let dd: number = 0
      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
        const p = parts[dd - 1]
        if (p && p !== '.' && p !== '..' && p !== '**') {
          didSomething = true
          parts.splice(dd - 1, 2)
          dd -= 2
        }
      }
    } while (didSomething)
    return parts.length === 0 ? [''] : parts
  }

  // First phase: single-pattern processing
  // 
 is 1 or more portions
  //  is 1 or more portions
  // 

is any portion other than ., .., '', or ** // is . or '' // // **/.. is *brutal* for filesystem walking performance, because // it effectively resets the recursive walk each time it occurs, // and ** cannot be reduced out by a .. pattern part like a regexp // or most strings (other than .., ., and '') can be. // //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/} //

// -> 
/
  // 
/

/../ ->

/
  // **/**/ -> **/
  //
  // **/*/ -> */**/ <== not valid because ** doesn't follow
  // this WOULD be allowed if ** did follow symlinks, or * didn't
  firstPhasePreProcess(globParts: string[][]) {
    let didSomething = false
    do {
      didSomething = false
      // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/} for (let parts of globParts) { let gs: number = -1 while (-1 !== (gs = parts.indexOf('**', gs + 1))) { let gss: number = gs while (parts[gss + 1] === '**') { //

/**/**/ -> 
/**/
            gss++
          }
          // eg, if gs is 2 and gss is 4, that means we have 3 **
          // parts, and can remove 2 of them.
          if (gss > gs) {
            parts.splice(gs + 1, gss - gs)
          }

          let next = parts[gs + 1]
          const p = parts[gs + 2]
          const p2 = parts[gs + 3]
          if (next !== '..') continue
          if (
            !p ||
            p === '.' ||
            p === '..' ||
            !p2 ||
            p2 === '.' ||
            p2 === '..'
          ) {
            continue
          }
          didSomething = true
          // edit parts in place, and push the new one
          parts.splice(gs, 1)
          const other = parts.slice(0)
          other[gs] = '**'
          globParts.push(other)
          gs--
        }

        // 
// -> 
/
        if (!this.preserveMultipleSlashes) {
          for (let i = 1; i < parts.length - 1; i++) {
            const p = parts[i]
            // don't squeeze out UNC patterns
            if (i === 1 && p === '' && parts[0] === '') continue
            if (p === '.' || p === '') {
              didSomething = true
              parts.splice(i, 1)
              i--
            }
          }
          if (
            parts[0] === '.' &&
            parts.length === 2 &&
            (parts[1] === '.' || parts[1] === '')
          ) {
            didSomething = true
            parts.pop()
          }
        }

        // 
/

/../ ->

/
        let dd: number = 0
        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
          const p = parts[dd - 1]
          if (p && p !== '.' && p !== '..' && p !== '**') {
            didSomething = true
            const needDot = dd === 1 && parts[dd + 1] === '**'
            const splin = needDot ? ['.'] : []
            parts.splice(dd - 1, 2, ...splin)
            if (parts.length === 0) parts.push('')
            dd -= 2
          }
        }
      }
    } while (didSomething)

    return globParts
  }

  // second phase: multi-pattern dedupes
  // {
/*/,
/

/} ->

/*/
  // {
/,
/} -> 
/
  // {
/**/,
/} -> 
/**/
  //
  // {
/**/,
/**/

/} ->

/**/
  // ^-- not valid because ** doens't follow symlinks
  secondPhasePreProcess(globParts: string[][]): string[][] {
    for (let i = 0; i < globParts.length - 1; i++) {
      for (let j = i + 1; j < globParts.length; j++) {
        const matched = this.partsMatch(
          globParts[i],
          globParts[j],
          !this.preserveMultipleSlashes
        )
        if (!matched) continue
        globParts[i] = matched
        globParts[j] = []
      }
    }
    return globParts.filter(gs => gs.length)
  }

  partsMatch(
    a: string[],
    b: string[],
    emptyGSMatch: boolean = false
  ): false | string[] {
    let ai = 0
    let bi = 0
    let result: string[] = []
    let which: string = ''
    while (ai < a.length && bi < b.length) {
      if (a[ai] === b[bi]) {
        result.push(which === 'b' ? b[bi] : a[ai])
        ai++
        bi++
      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {
        result.push(a[ai])
        ai++
      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {
        result.push(b[bi])
        bi++
      } else if (
        a[ai] === '*' &&
        b[bi] &&
        (this.options.dot || !b[bi].startsWith('.')) &&
        b[bi] !== '**'
      ) {
        if (which === 'b') return false
        which = 'a'
        result.push(a[ai])
        ai++
        bi++
      } else if (
        b[bi] === '*' &&
        a[ai] &&
        (this.options.dot || !a[ai].startsWith('.')) &&
        a[ai] !== '**'
      ) {
        if (which === 'a') return false
        which = 'b'
        result.push(b[bi])
        ai++
        bi++
      } else {
        return false
      }
    }
    // if we fall out of the loop, it means they two are identical
    // as long as their lengths match
    return a.length === b.length && result
  }

  parseNegate() {
    if (this.nonegate) return

    const pattern = this.pattern
    let negate = false
    let negateOffset = 0

    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {
      negate = !negate
      negateOffset++
    }

    if (negateOffset) this.pattern = pattern.slice(negateOffset)
    this.negate = negate
  }

  // set partial to true to test if, for example,
  // "/a/b" matches the start of "/*/b/*/d"
  // Partial means, if you run out of file before you run
  // out of pattern, then that's fine, as long as all
  // the parts match.
  matchOne(file: string[], pattern: ParseReturn[], partial: boolean = false) {
    const options = this.options

    // UNC paths like //?/X:/... can match X:/... and vice versa
    // Drive letters in absolute drive or unc paths are always compared
    // case-insensitively.
    if (this.isWindows) {
      const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])
      const fileUNC =
        !fileDrive &&
        file[0] === '' &&
        file[1] === '' &&
        file[2] === '?' &&
        /^[a-z]:$/i.test(file[3])

      const patternDrive =
        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])
      const patternUNC =
        !patternDrive &&
        pattern[0] === '' &&
        pattern[1] === '' &&
        pattern[2] === '?' &&
        typeof pattern[3] === 'string' &&
        /^[a-z]:$/i.test(pattern[3])

      const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined
      const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined
      if (typeof fdi === 'number' && typeof pdi === 'number') {
        const [fd, pd]: [string, string] = [file[fdi], pattern[pdi] as string]
        if (fd.toLowerCase() === pd.toLowerCase()) {
          pattern[pdi] = fd
          if (pdi > fdi) {
            pattern = pattern.slice( pdi)
          } else if (fdi > pdi) {
            file = file.slice(fdi)
          }
        }
      }
    }

    // resolve and reduce . and .. portions in the file as well.
    // dont' need to do the second phase, because it's only one string[]
    const { optimizationLevel = 1 } = this.options
    if (optimizationLevel >= 2) {
      file = this.levelTwoFileOptimize(file)
    }

    this.debug('matchOne', this, { file, pattern })
    this.debug('matchOne', file.length, pattern.length)

    for (
      var fi = 0, pi = 0, fl = file.length, pl = pattern.length;
      fi < fl && pi < pl;
      fi++, pi++
    ) {
      this.debug('matchOne loop')
      var p = pattern[pi]
      var f = file[fi]

      this.debug(pattern, p, f)

      // should be impossible.
      // some invalid regexp stuff in the set.
      /* c8 ignore start */
      if (p === false) {
        return false
      }
      /* c8 ignore stop */

      if (p === GLOBSTAR) {
        this.debug('GLOBSTAR', [pattern, p, f])

        // "**"
        // a/**/b/**/c would match the following:
        // a/b/x/y/z/c
        // a/x/y/z/b/c
        // a/b/x/b/x/c
        // a/b/c
        // To do this, take the rest of the pattern after
        // the **, and see if it would match the file remainder.
        // If so, return success.
        // If not, the ** "swallows" a segment, and try again.
        // This is recursively awful.
        //
        // a/**/b/**/c matching a/b/x/y/z/c
        // - a matches a
        // - doublestar
        //   - matchOne(b/x/y/z/c, b/**/c)
        //     - b matches b
        //     - doublestar
        //       - matchOne(x/y/z/c, c) -> no
        //       - matchOne(y/z/c, c) -> no
        //       - matchOne(z/c, c) -> no
        //       - matchOne(c, c) yes, hit
        var fr = fi
        var pr = pi + 1
        if (pr === pl) {
          this.debug('** at the end')
          // a ** at the end will just swallow the rest.
          // We have found a match.
          // however, it will not swallow /.x, unless
          // options.dot is set.
          // . and .. are *never* matched by **, for explosively
          // exponential reasons.
          for (; fi < fl; fi++) {
            if (
              file[fi] === '.' ||
              file[fi] === '..' ||
              (!options.dot && file[fi].charAt(0) === '.')
            )
              return false
          }
          return true
        }

        // ok, let's see if we can swallow whatever we can.
        while (fr < fl) {
          var swallowee = file[fr]

          this.debug('\nglobstar while', file, fr, pattern, pr, swallowee)

          // XXX remove this slice.  Just pass the start index.
          if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
            this.debug('globstar found match!', fr, fl, swallowee)
            // found a match.
            return true
          } else {
            // can't swallow "." or ".." ever.
            // can only swallow ".foo" when explicitly asked.
            if (
              swallowee === '.' ||
              swallowee === '..' ||
              (!options.dot && swallowee.charAt(0) === '.')
            ) {
              this.debug('dot detected!', file, fr, pattern, pr)
              break
            }

            // ** swallows a segment, and continue.
            this.debug('globstar swallow a segment, and continue')
            fr++
          }
        }

        // no match was found.
        // However, in partial mode, we can't say this is necessarily over.
        /* c8 ignore start */
        if (partial) {
          // ran out of file
          this.debug('\n>>> no match, partial?', file, fr, pattern, pr)
          if (fr === fl) {
            return true
          }
        }
        /* c8 ignore stop */
        return false
      }

      // something other than **
      // non-magic patterns just have to match exactly
      // patterns with magic have been turned into regexps.
      let hit: boolean
      if (typeof p === 'string') {
        hit = f === p
        this.debug('string match', p, f, hit)
      } else {
        hit = p.test(f)
        this.debug('pattern match', p, f, hit)
      }

      if (!hit) return false
    }

    // Note: ending in / means that we'll get a final ""
    // at the end of the pattern.  This can only match a
    // corresponding "" at the end of the file.
    // If the file ends in /, then it can only match a
    // a pattern that ends in /, unless the pattern just
    // doesn't have any more for it. But, a/b/ should *not*
    // match "a/b/*", even though "" matches against the
    // [^/]*? pattern, except in partial mode, where it might
    // simply not be reached yet.
    // However, a/b/ should still satisfy a/*

    // now either we fell off the end of the pattern, or we're done.
    if (fi === fl && pi === pl) {
      // ran out of pattern and filename at the same time.
      // an exact hit!
      return true
    } else if (fi === fl) {
      // ran out of file, but still had pattern left.
      // this is ok if we're doing the match as part of
      // a glob fs traversal.
      return partial
    } else if (pi === pl) {
      // ran out of pattern, still have file left.
      // this is only acceptable if we're on the very last
      // empty segment of a file with a trailing slash.
      // a/* should match a/b/
      return fi === fl - 1 && file[fi] === ''

      /* c8 ignore start */
    } else {
      // should be unreachable.
      throw new Error('wtf?')
    }
    /* c8 ignore stop */
  }

  braceExpand() {
    return braceExpand(this.pattern, this.options)
  }

  parse(pattern: string): ParseReturn {
    assertValidPattern(pattern)

    const options = this.options

    // shortcuts
    if (pattern === '**') return GLOBSTAR
    if (pattern === '') return ''

    // far and away, the most common glob pattern parts are
    // *, *.*, and *.  Add a fast check method for those.
    let m: RegExpMatchArray | null
    let fastTest: null | ((f: string) => boolean) = null
    if ((m = pattern.match(starRE))) {
      fastTest = options.dot ? starTestDot : starTest
    } else if ((m = pattern.match(starDotExtRE))) {
      fastTest = (
        options.nocase
          ? options.dot
            ? starDotExtTestNocaseDot
            : starDotExtTestNocase
          : options.dot
          ? starDotExtTestDot
          : starDotExtTest
      )(m[1])
    } else if ((m = pattern.match(qmarksRE))) {
      fastTest = (
        options.nocase
          ? options.dot
            ? qmarksTestNocaseDot
            : qmarksTestNocase
          : options.dot
          ? qmarksTestDot
          : qmarksTest
      )(m)
    } else if ((m = pattern.match(starDotStarRE))) {
      fastTest = options.dot ? starDotStarTestDot : starDotStarTest
    } else if ((m = pattern.match(dotStarRE))) {
      fastTest = dotStarTest
    }

    const re = AST.fromGlob(pattern, this.options).toMMPattern()
    return fastTest ? Object.assign(re, { test: fastTest }) : re
  }

  makeRe() {
    if (this.regexp || this.regexp === false) return this.regexp

    // at this point, this.set is a 2d array of partial
    // pattern strings, or "**".
    //
    // It's better to use .match().  This function shouldn't
    // be used, really, but it's pretty convenient sometimes,
    // when you just want to work with a regex.
    const set = this.set

    if (!set.length) {
      this.regexp = false
      return this.regexp
    }
    const options = this.options

    const twoStar = options.noglobstar
      ? star
      : options.dot
      ? twoStarDot
      : twoStarNoDot
    const flags = new Set(options.nocase ? ['i'] : [])

    // regexpify non-globstar patterns
    // if ** is only item, then we just do one twoStar
    // if ** is first, and there are more, prepend (\/|twoStar\/)? to next
    // if ** is last, append (\/twoStar|) to previous
    // if ** is in the middle, append (\/|\/twoStar\/) to previous
    // then filter out GLOBSTAR symbols
    let re = set
      .map(pattern => {
        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)[]
        pp.forEach((p, i) => {
          const next = pp[i + 1]
          const prev = pp[i - 1]
          if (p !== GLOBSTAR || prev === GLOBSTAR) {
            return
          }
          if (prev === undefined) {
            if (next !== undefined && next !== GLOBSTAR) {
              pp[i + 1] = '(?:\\/|' + twoStar + '\\/)?' + next
            } else {
              pp[i] = twoStar
            }
          } else if (next === undefined) {
            pp[i - 1] = prev + '(?:\\/|' + twoStar + ')?'
          } else if (next !== GLOBSTAR) {
            pp[i - 1] = prev + '(?:\\/|\\/' + twoStar + '\\/)' + next
            pp[i + 1] = GLOBSTAR
          }
        })
        return pp.filter(p => p !== GLOBSTAR).join('/')
      })
      .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 = '^' + open + re + close + '$'

    // can match anything, as long as it's not this.
    if (this.negate) re = '^(?!' + re + ').+$'

    try {
      this.regexp = new RegExp(re, [...flags].join(''))
      /* c8 ignore start */
    } catch (ex) {
      // should be impossible
      this.regexp = false
    }
    /* c8 ignore stop */
    return this.regexp
  }

  slashSplit(p: string) {
    // if p starts with // on windows, we preserve that
    // so that UNC paths aren't broken.  Otherwise, any number of
    // / characters are coalesced into one, unless
    // preserveMultipleSlashes is set to true.
    if (this.preserveMultipleSlashes) {
      return p.split('/')
    } else if (this.isWindows && /^\/\/[^\/]+/.test(p)) {
      // add an extra '' for the one we lose
      return ['', ...p.split(/\/+/)]
    } else {
      return p.split(/\/+/)
    }
  }

  match(f: string, partial = this.partial) {
    this.debug('match', f, this.pattern)
    // short-circuit in the case of busted things.
    // comments, etc.
    if (this.comment) {
      return false
    }
    if (this.empty) {
      return f === ''
    }

    if (f === '/' && partial) {
      return true
    }

    const options = this.options

    // windows: need to use /, not \
    if (this.isWindows) {
      f = f.split('\\').join('/')
    }

    // treat the test path as a set of pathparts.
    const ff = this.slashSplit(f)
    this.debug(this.pattern, 'split', ff)

    // just ONE of the pattern sets in this.set needs to match
    // in order for it to be valid.  If negating, then just one
    // match means that we have failed.
    // Either way, return on the first hit.

    const set = this.set
    this.debug(this.pattern, 'set', set)

    // Find the basename of the path by looking for the last non-empty segment
    let filename: string = ff[ff.length - 1]
    if (!filename) {
      for (let i = ff.length - 2; !filename && i >= 0; i--) {
        filename = ff[i]
      }
    }

    for (let i = 0; i < set.length; i++) {
      const pattern = set[i]
      let file = ff
      if (options.matchBase && pattern.length === 1) {
        file = [filename]
      }
      const hit = this.matchOne(file, pattern, partial)
      if (hit) {
        if (options.flipNegate) {
          return true
        }
        return !this.negate
      }
    }

    // didn't get any hits.  this is success if it's a negative
    // pattern, failure otherwise.
    if (options.flipNegate) {
      return false
    }
    return this.negate
  }

  static defaults(def: MinimatchOptions) {
    return minimatch.defaults(def).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
minimatch-9.0.3/src/unescape.ts000066400000000000000000000016211445157213200164420ustar00rootroot00000000000000import { MinimatchOptions } from './index.js'
/**
 * Un-escape a string that has been escaped with {@link escape}.
 *
 * If the {@link windowsPathsNoEscape} option is used, then square-brace
 * escapes are removed, but not backslash escapes.  For example, it will turn
 * the string `'[*]'` into `*`, but it will not turn `'\\*'` into `'*'`,
 * becuase `\` is a path separator in `windowsPathsNoEscape` mode.
 *
 * When `windowsPathsNoEscape` is not set, then both brace escapes and
 * backslash escapes are removed.
 *
 * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped
 * or unescaped.
 */
export const unescape = (
  s: string,
  {
    windowsPathsNoEscape = false,
  }: Pick = {}
) => {
  return windowsPathsNoEscape
    ? s.replace(/\[([^\/\\])\]/g, '$1')
    : s.replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2').replace(/\\([^\/])/g, '$1')
}
minimatch-9.0.3/tap-snapshots/000077500000000000000000000000001445157213200163045ustar00rootroot00000000000000minimatch-9.0.3/tap-snapshots/test/000077500000000000000000000000001445157213200172635ustar00rootroot00000000000000minimatch-9.0.3/tap-snapshots/test/basic.js.test.cjs000066400000000000000000002400651445157213200224450ustar00rootroot00000000000000/* IMPORTANT
 * This snapshot file is auto-generated, but designed for humans.
 * It should be checked into source control and tracked carefully.
 * Re-generate by setting TAP_SNAPSHOT=1 and running tests.
 * 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 > *(?) 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 [],
      "?",
    ],
  ],
  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)) 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 [],
      ".",
    ],
    Array [
      Array [],
      "a",
    ],
    Array [
      Array [],
      Array [
        "!",
        Array [
          Array [],
          "b",
          Object {},
        ],
      ],
    ],
  ],
  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 [],
      "?",
    ],
  ],
  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|!(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",
    ],
    Array [
      Array [],
      Array [
        "!",
        Array [
          Array [],
          "b",
          Object {},
        ],
      ],
    ],
  ],
  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 > +(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 [],
      "a",
    ],
    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 [],
      "a",
    ],
    Array [
      Array [],
      "?",
    ],
  ],
  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[^/]*?$/
`

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(?:\\.[^/]*?)(?:$|\\/)))(?!\\.)[^/]*?)(?:(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.[^/]*?)$/
`

exports[`test/basic.js TAP basic tests > makeRe !\\!a* 1`] = `
/^(?!^\\!a[^/]*?$).+$/
`

exports[`test/basic.js TAP basic tests > makeRe !a* 1`] = `
/^(?!^a[^/]*?$).+$/
`

exports[`test/basic.js TAP basic tests > makeRe !a* 2`] = `
/^!a[^/]*?$/
`

exports[`test/basic.js TAP basic tests > makeRe # ignore this 1`] = `
false
`

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 * 2`] = `
/^(?!\\.)[^/]+?$/
`

exports[`test/basic.js TAP basic tests > makeRe * 3`] = `
/^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?$/
`

exports[`test/basic.js TAP basic tests > makeRe *(?) 1`] = `
/^(?:(?:(?!\\.)[^/])(?:(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/])*?)?$/
`

exports[`test/basic.js TAP basic tests > makeRe *(a/b) 1`] = `
/^(?!\\.)[^/]*?\\(a\\/b\\)$/
`

exports[`test/basic.js TAP basic tests > makeRe *(a|{b),c)} 1`] = `
/^(?:(?:a|b)*|(?:a|c)*)$/
`

exports[`test/basic.js TAP basic tests > makeRe *(a|{b,c}) 1`] = `
/^(?:(?:a|b)*|(?:a|c)*)$/
`

exports[`test/basic.js TAP basic tests > makeRe *(a|{b|c,c}) 1`] = `
/^(?:(?:a|b|c)*|(?:a|c)*)$/
`

exports[`test/basic.js TAP basic tests > makeRe *(a|{b|c,c}) 2`] = `
/^(?:(?!\\.)[^/]*?\\(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})($|\\/)).)*?$/
`

exports[`test/basic.js TAP basic tests > makeRe *******? 1`] = `
/^(?!\\.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]$/
`

exports[`test/basic.js TAP basic tests > makeRe *******c 1`] = `
/^(?!\\.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?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(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?$/
`

exports[`test/basic.js TAP basic tests > makeRe **/.x/** 2`] = `
/^(?!\\.)[^/]+?\\/\\.x\\/(?!\\.)[^/]+?$/
`

exports[`test/basic.js TAP basic tests > makeRe *.!(js) 1`] = `
/^(?!\\.)[^/]*?\\.(?:(?!(?:js(?:$|\\/)))[^/]*?)$/
`

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 *.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$/
`

exports[`test/basic.js TAP basic tests > makeRe *.js 2`] = `
/^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]*?\\.js$/
`

exports[`test/basic.js TAP basic tests > makeRe *.js 3`] = `
/^(?!\\.)[^/]*?\\.js$/i
`

exports[`test/basic.js TAP basic tests > makeRe *.js 4`] = `
/^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]*?\\.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\\.[^/]*?$/
`

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[^/]*?[^/][^/]*?[^/]*?$/
`

exports[`test/basic.js TAP basic tests > makeRe *js 1`] = `
/^(?!\\.)[^/]*?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)) 1`] = `
/^(?:(?:\\.|a|(?:(?!(?:b(?:$|\\/)))(?!\\.)[^/]*?))(?:\\.|a|(?:(?!(?:b(?:$|\\/)))[^/]*?))*?)$/
`

exports[`test/basic.js TAP basic tests > makeRe +(?) 1`] = `
/^(?:(?:(?!\\.)[^/])(?:(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/])*?)$/
`

exports[`test/basic.js TAP basic tests > makeRe +(a)!(b)+(c) 1`] = `
/^(?:a)+(?:(?!(?:b(?:c)+(?:$|\\/)))[^/]*?)(?:c)+$/
`

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\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g 1`] = `
/^\\+\\(a\\|[^/]*?|c\\\\\\|d\\\\|e\\\\\\\\\\|f\\\\\\\\|g$/
`

exports[`test/basic.js TAP basic tests > makeRe +(a|.) 1`] = `
/^(?:a|\\.)+$/
`

exports[`test/basic.js TAP basic tests > makeRe +(a|?) 1`] = `
/^(?:(?:a|(?!\\.)[^/])(?:a|(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/])*?)$/
`

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(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)[^/]+?$/
`

exports[`test/basic.js TAP basic tests > makeRe .x/**/* 2`] = `
/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?$/
`

exports[`test/basic.js TAP basic tests > makeRe .x/**/**/* 1`] = `
/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)[^/]+?$/
`

exports[`test/basic.js TAP basic tests > makeRe .x/**/**/* 2`] = `
/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?$/
`

exports[`test/basic.js TAP basic tests > makeRe .x/**/*/** 1`] = `
/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)[^/]+?$/
`

exports[`test/basic.js TAP basic tests > makeRe .x/**/*/** 2`] = `
/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?$/
`

exports[`test/basic.js TAP basic tests > makeRe .x/*/** 1`] = `
/^\\.x\\/(?!\\.)[^/]+?(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?$/
`

exports[`test/basic.js TAP basic tests > makeRe .x/*/** 2`] = `
/^\\.x\\/(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?(?:\\/|(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)?$/
`

exports[`test/basic.js TAP basic tests > makeRe .x/*/**/** 1`] = `
/^\\.x\\/(?!\\.)[^/]+?(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?$/
`

exports[`test/basic.js TAP basic tests > makeRe .x/*/**/** 2`] = `
/^\\.x\\/(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?(?:\\/|(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)?$/
`

exports[`test/basic.js TAP basic tests > makeRe /^root:/{s/^[^:]*:[^:]*:([^:]*).*$// 1`] = `
/^\\/\\^root:\\/\\{s\\/\\^[^:][^/]*?:[^:][^/]*?:\\([^:][^/]*?\\)\\.[^/]*?\\$\\/\\/$/
`

exports[`test/basic.js TAP basic tests > makeRe /^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\1/ 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[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?$/
`

exports[`test/basic.js TAP basic tests > makeRe ?*****?? 1`] = `
/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]$/
`

exports[`test/basic.js TAP basic tests > makeRe ?*****?c 1`] = `
/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]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$/
`

exports[`test/basic.js TAP basic tests > makeRe ?.js 1`] = `
/^(?!\\.)[^/]\\.js$/
`

exports[`test/basic.js TAP basic tests > makeRe ?.js 2`] = `
/^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]\\.js$/
`

exports[`test/basic.js TAP basic tests > makeRe ?.js 3`] = `
/^(?!\\.)[^/]\\.js$/i
`

exports[`test/basic.js TAP basic tests > makeRe ?.js 4`] = `
/^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]\\.js$/i
`

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`] = `
/^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/][^/]$/i
`

exports[`test/basic.js TAP basic tests > makeRe ?? 4`] = `
/^(?!\\.)[^/][^/]$/i
`

exports[`test/basic.js TAP basic tests > makeRe ??**********?****? 1`] = `
/^(?!\\.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]$/
`

exports[`test/basic.js TAP basic tests > makeRe ??**********?****c 1`] = `
/^(?!\\.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?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 ?js 1`] = `
/^(?!\\.)[^/]js$/
`

exports[`test/basic.js TAP basic tests > makeRe ?js 2`] = `
/^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]js$/
`

exports[`test/basic.js TAP basic tests > makeRe ?js 3`] = `
/^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]js$/i
`

exports[`test/basic.js TAP basic tests > makeRe @(*|.*) 1`] = `
/^(?:(?!\\.)[^/]+?|(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.[^/]*?)$/
`

exports[`test/basic.js TAP basic tests > makeRe @(*|a) 1`] = `
/^(?:(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?|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)$/
`

exports[`test/basic.js TAP basic tests > makeRe @(a|a[(])b 1`] = `
/^(?:a|a\\()b$/
`

exports[`test/basic.js TAP basic tests > makeRe @(a|a[)])b 1`] = `
/^(?:a|a\\))b$/
`

exports[`test/basic.js TAP basic tests > makeRe @(js|.*) 1`] = `
/^(?:js|(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.[^/]*?)$/
`

exports[`test/basic.js TAP basic tests > makeRe X* 1`] = `
/^X[^/]*?$/
`

exports[`test/basic.js TAP basic tests > makeRe X* 2`] = `
/^X[^/]*?$/
`

exports[`test/basic.js TAP basic tests > makeRe XYZ 1`] = `
/^XYZ$/i
`

exports[`test/basic.js TAP basic tests > makeRe [ 1`] = `
/^\\[$/
`

exports[`test/basic.js TAP basic tests > makeRe [!a* 1`] = `
/^\\[!a[^/]*?$/
`

exports[`test/basic.js TAP basic tests > makeRe [#a* 1`] = `
/^\\[\\#a[^/]*?$/
`

exports[`test/basic.js TAP basic tests > makeRe [* 1`] = `
/^\\[[^/]*?$/
`

exports[`test/basic.js TAP basic tests > makeRe [-abc] 1`] = `
/^(?!\\.)[\\-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}]$/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}]$/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]$/
`

exports[`test/basic.js TAP basic tests > makeRe [[:graph:][:digit:]]f* 1`] = `
/^([\\p{Nd}]|[^\\p{Z}\\p{C}])f[^/]*?$/u
`

exports[`test/basic.js TAP basic tests > makeRe [[:graph:]]f* 1`] = `
/^(?!\\.)[^\\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][^/][^/][^/]$/
`

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]$/
`

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][^/]*?$/
`

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]$/
`

exports[`test/basic.js TAP basic tests > makeRe [a-c]b* 1`] = `
/^(?!\\.)[a-c]b[^/]*?$/
`

exports[`test/basic.js TAP basic tests > makeRe [a-y]*[^c] 1`] = `
/^(?!\\.)[a-y][^/]*?[^c]$/
`

exports[`test/basic.js TAP basic tests > makeRe [a-z] 1`] = `
/^(?!\\.)[a-z]$/
`

exports[`test/basic.js TAP basic tests > makeRe [abc 1`] = `
/^\\[abc$/
`

exports[`test/basic.js TAP basic tests > makeRe [abc-] 1`] = `
/^(?!\\.)[abc\\-]$/
`

exports[`test/basic.js TAP basic tests > makeRe [f-fz-a]* 1`] = `
/^f[^/]*?$/
`

exports[`test/basic.js TAP basic tests > makeRe [f-gz-a]* 1`] = `
/^(?!\\.)[f-g][^/]*?$/
`

exports[`test/basic.js TAP basic tests > makeRe [fz-a]* 1`] = `
/^f[^/]*?$/
`

exports[`test/basic.js TAP basic tests > makeRe [ia]?[ck] 1`] = `
/^(?!\\.)[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[^/]*?$/
`

exports[`test/basic.js TAP basic tests > makeRe [z\\-a] 1`] = `
/^(?!\\.)[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[^/]*?$/
`

exports[`test/basic.js TAP basic tests > makeRe a********???******* 1`] = `
/^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?$/
`

exports[`test/basic.js TAP basic tests > makeRe a*****?c 1`] = `
/^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c$/
`

exports[`test/basic.js TAP basic tests > makeRe a*****c*?** 1`] = `
/^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?$/
`

exports[`test/basic.js TAP basic tests > makeRe a****c**?**??***** 1`] = `
/^a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?$/
`

exports[`test/basic.js TAP basic tests > makeRe a***c 1`] = `
/^a[^/]*?[^/]*?[^/]*?c$/
`

exports[`test/basic.js TAP basic tests > makeRe a**?**cd**?**??***k 1`] = `
/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k$/
`

exports[`test/basic.js TAP basic tests > makeRe a**?**cd**?**??***k** 1`] = `
/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?$/
`

exports[`test/basic.js TAP basic tests > makeRe a**?**cd**?**??k 1`] = `
/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k$/
`

exports[`test/basic.js TAP basic tests > makeRe a**?**cd**?**??k*** 1`] = `
/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?$/
`

exports[`test/basic.js TAP basic tests > makeRe a*[^c] 1`] = `
/^a[^/]*?[^c]$/
`

exports[`test/basic.js TAP basic tests > makeRe a*cd**?**??k 1`] = `
/^a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k$/
`

exports[`test/basic.js TAP basic tests > makeRe a/*/b 1`] = `
/^a\\/(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?\\/b$/
`

exports[`test/basic.js TAP basic tests > makeRe a/*/b 2`] = `
/^a\\/(?!\\.)[^/]+?\\/b$/
`

exports[`test/basic.js TAP basic tests > makeRe a/.*/b 1`] = `
/^a\\/(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.[^/]*?\\/b$/
`

exports[`test/basic.js TAP basic tests > makeRe a/.*/b 2`] = `
/^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$/
`

exports[`test/basic.js TAP basic tests > makeRe a/[2015-03-10T00:23:08.647Z]/z 1`] = `
/^a\\/(?!\\.)[2010T00:23:08.647Z]\\/z$/
`

exports[`test/basic.js TAP basic tests > makeRe a?b 1`] = `
/^a[^/]b$/
`

exports[`test/basic.js TAP basic tests > makeRe a?c 1`] = `
/^a[^/]c$/
`

exports[`test/basic.js TAP basic tests > makeRe a[X-]b 1`] = `
/^a[X\\-]b$/
`

exports[`test/basic.js TAP basic tests > makeRe a[\\b]c 1`] = `
/^abc$/
`

exports[`test/basic.js TAP basic tests > makeRe a[b]c 1`] = `
/^abc$/
`

exports[`test/basic.js TAP basic tests > makeRe a\\*?/* 1`] = `
/^a\\*[^/]\\/(?!\\.)[^/]+?$/
`

exports[`test/basic.js TAP basic tests > makeRe a\\*b/* 1`] = `
/^a\\*b\\/(?!\\.)[^/]+?$/
`

exports[`test/basic.js TAP basic tests > makeRe a\\*c 1`] = `
/^a\\*c$/
`

exports[`test/basic.js TAP basic tests > makeRe ab* 1`] = `
/^ab[^/]*?$/i
`

exports[`test/basic.js TAP basic tests > makeRe b*/ 1`] = `
/^b[^/]*?\\/$/
`

exports[`test/basic.js TAP basic tests > makeRe c* 1`] = `
/^c[^/]*?$/
`

exports[`test/basic.js TAP basic tests > makeRe man/man1/bash.1 1`] = `
/^man\\/man1\\/bash\\.1$/
`

exports[`test/basic.js TAP basic tests > makeRe s/\\..*// 1`] = `
/^s\\/(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.\\.[^/]*?\\/$/
`

exports[`test/basic.js TAP basic tests > makeRe x/*/../../a/b/c 1`] = `
/^a\\/b\\/c$/
`

exports[`test/basic.js TAP basic tests > makeRe x/*/../a/b/c 1`] = `
/^x\\/a\\/b\\/c$/
`

exports[`test/basic.js TAP basic tests > makeRe x/z/../*/a/b/c 1`] = `
/^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\\))$/
`

exports[`test/basic.js TAP basic tests > makeRe {a,*(b|{c,d})} 1`] = `
/^(?:a|(?:b|c)*|(?:b|d)*)$/
`

exports[`test/basic.js TAP basic tests > makeRe {c*,./c*} 1`] = `
/^(?:c[^/]*?|\\.\\/c[^/]*?)$/
`

exports[`test/basic.js TAP basic tests > makeRe Å 1`] = `
/^Å$/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
`

exports[`test/basic.js TAP basic tests > makeRe å 1`] = `
/^å$/
`

exports[`test/basic.js TAP basic tests > makeRe å 2`] = `
/^å$/i
`

exports[`test/basic.js TAP basic tests > makeRe å 3`] = `
/^å$/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 {},
]
`
minimatch-9.0.3/tap-snapshots/test/class-edge-cases.js.test.cjs000066400000000000000000000016521445157213200244640ustar00rootroot00000000000000/* IMPORTANT
 * This snapshot file is auto-generated, but designed for humans.
 * It should be checked into source control and tracked carefully.
 * Re-generate by setting TAP_SNAPSHOT=1 and running tests.
 * Make sure to inspect the output below.  Do not ignore changes!
 */
'use strict'
exports[`test/class-edge-cases.js TAP > must match snapshot 1`] = `
Object {
  "files": Array [
    "a[]b",
    "[b-a]x",
    "a]b",
    "a[]]b",
    "a[[]b",
  ],
  "matches": Object {
    "[b-a\\\\]*": Array [
      "[b-a]x",
    ],
    "\\\\[b-a]*": Array [
      "[b-a]x",
    ],
    "a[[]]*": Array [
      "a[]b",
      "a[]]b",
    ],
    "a[[]*": Array [
      "a[]b",
      "a[]]b",
      "a[[]b",
    ],
    "a[]]*": Array [
      "a]b",
    ],
    "a[]*": Array [
      "a[]b",
      "a[]]b",
    ],
  },
  "patterns": Array [
    "\\\\[b-a]*",
    "[b-a\\\\]*",
    "a[]*",
    "[b-a]*",
    "a[]]*",
    "a[[]*",
    "a[[]]*",
  ],
}
`
minimatch-9.0.3/tap-snapshots/test/escape-has-magic.js.test.cjs000066400000000000000000000750711445157213200244560ustar00rootroot00000000000000/* IMPORTANT
 * This snapshot file is auto-generated, but designed for humans.
 * It should be checked into source control and tracked carefully.
 * Re-generate by setting TAP_SNAPSHOT=1 and running tests.
 * Make sure to inspect the output below.  Do not ignore changes!
 */
'use strict'
exports[`test/escape-has-magic.js TAP > !!a* 1`] = `
Array [
  Array [
    Array [
      /^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,
]
`

exports[`test/escape-has-magic.js TAP > !(.a|js)@(.*) 1`] = `
Array [
  Array [
    Array [
      /^(?:(?!(?:\\.a(?:\\.[^/]*?)(?:$|\\/)|js(?:\\.[^/]*?)(?:$|\\/)))(?!\\.)[^/]*?)(?:(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.[^/]*?)$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > !\\!a* 1`] = `
Array [
  Array [
    Array [
      /^\\!a[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > !a* 1`] = `
Array [
  Array [
    Array [
      /^a[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > !a* 2`] = `
Array [
  Array [
    Array [
      /^!a[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > # ignore this 1`] = `
Array [
  Array [],
  false,
]
`

exports[`test/escape-has-magic.js TAP > #* 1`] = `
Array [
  Array [
    Array [
      /^\\#[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > * 1`] = `
Array [
  Array [
    Array [
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > * 2`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/]+?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > * 3`] = `
Array [
  Array [
    Array [
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > *(?) 1`] = `
Array [
  Array [
    Array [
      /^(?:(?:(?!\\.)[^/])(?:(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/])*?)?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > *(a/b) 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/]*?\\(a$/,
      "b)",
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > *(a|{b),c)} 1`] = `
Array [
  Array [
    Array [
      /^(?:a|b)*$/,
    ],
    Array [
      /^(?:a|c)*$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > *(a|{b,c}) 1`] = `
Array [
  Array [
    Array [
      /^(?:a|b)*$/,
    ],
    Array [
      /^(?:a|c)*$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > *(a|{b|c,c}) 1`] = `
Array [
  Array [
    Array [
      /^(?:a|b|c)*$/,
    ],
    Array [
      /^(?:a|c)*$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > *(a|{b|c,c}) 2`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/]*?\\(a\\|b\\|c\\)$/,
    ],
    Array [
      /^(?!\\.)[^/]*?\\(a\\|c\\)$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ** 1`] = `
Array [
  Array [
    Array [
      Symbol(globstar **),
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ** 2`] = `
Array [
  Array [
    Array [
      Symbol(globstar **),
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ** 3`] = `
Array [
  Array [
    Array [
      Symbol(globstar **),
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > *******? 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > *******c 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > *****?? 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > **/**/** 1`] = `
Array [
  Array [
    Array [
      Symbol(globstar **),
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > **/.x/** 1`] = `
Array [
  Array [
    Array [
      Symbol(globstar **),
      ".x",
      Symbol(globstar **),
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > **/.x/** 2`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/]+?$/,
      ".x",
      /^(?!\\.)[^/]+?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > *.!(js) 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/]*?\\.(?:(?!(?:js(?:$|\\/)))[^/]*?)$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > *.* 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/]*?\\.[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > *.* 2`] = `
Array [
  Array [
    Array [
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]*?\\.[^/]*?$/,
    ],
  ],
  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,
]
`

exports[`test/escape-has-magic.js TAP > *.\\* 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/]*?\\.\\*$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > *.js 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/]*?\\.js$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > *.js 2`] = `
Array [
  Array [
    Array [
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]*?\\.js$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > *.js 3`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/]*?\\.js$/i,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > *.js 4`] = `
Array [
  Array [
    Array [
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]*?\\.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,
]
`

exports[`test/escape-has-magic.js TAP > */man*/bash.* 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/]+?$/,
      /^man[^/]*?$/,
      /^bash\\.[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > *\\!* 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/]*?\\![^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > *\\\\!* 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/]*?\\\\![^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > *c*?** 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/]*?c[^/]*?[^/][^/]*?[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > *js 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/]*?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,
]
`

exports[`test/escape-has-magic.js TAP > +(.|a|!(b)) 1`] = `
Array [
  Array [
    Array [
      /^(?:(?:\\.|a|(?:(?!(?:b(?:$|\\/)))(?!\\.)[^/]*?))(?:\\.|a|(?:(?!(?:b(?:$|\\/)))[^/]*?))*?)$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > +(?) 1`] = `
Array [
  Array [
    Array [
      /^(?:(?:(?!\\.)[^/])(?:(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/])*?)$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > +(a)!(b)+(c) 1`] = `
Array [
  Array [
    Array [
      /^(?:a)+(?:(?!(?:b(?:c)+(?:$|\\/)))[^/]*?)(?:c)+$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > +(a|!(b)) 1`] = `
Array [
  Array [
    Array [
      /^(?:(?:a|(?:(?!(?:b(?:$|\\/)))(?!\\.)[^/]*?))(?:a|(?:(?!(?:b(?:$|\\/)))[^/]*?))*?)$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > +(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g 1`] = `
Array [
  Array [
    Array [
      /^\\+\\(a\\|[^/]*?|c\\\\\\|d\\\\|e\\\\\\\\\\|f\\\\\\\\|g$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > +(a|.) 1`] = `
Array [
  Array [
    Array [
      /^(?:a|\\.)+$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > +(a|?) 1`] = `
Array [
  Array [
    Array [
      /^(?:(?:a|(?!\\.)[^/])(?:a|(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/])*?)$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > +(x|a[^)]y) 1`] = `
Array [
  Array [
    Array [
      /^(?:x|a[^)]y)+$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > .* 1`] = `
Array [
  Array [
    Array [
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > .* 2`] = `
Array [
  Array [
    Array [
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > .x/**/* 1`] = `
Array [
  Array [
    Array [
      ".x",
      Symbol(globstar **),
      /^(?!\\.)[^/]+?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > .x/**/* 2`] = `
Array [
  Array [
    Array [
      ".x",
      Symbol(globstar **),
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > .x/**/**/* 1`] = `
Array [
  Array [
    Array [
      ".x",
      Symbol(globstar **),
      /^(?!\\.)[^/]+?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > .x/**/**/* 2`] = `
Array [
  Array [
    Array [
      ".x",
      Symbol(globstar **),
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > .x/**/*/** 1`] = `
Array [
  Array [
    Array [
      ".x",
      Symbol(globstar **),
      /^(?!\\.)[^/]+?$/,
      Symbol(globstar **),
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > .x/**/*/** 2`] = `
Array [
  Array [
    Array [
      ".x",
      Symbol(globstar **),
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?$/,
      Symbol(globstar **),
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > .x/*/** 1`] = `
Array [
  Array [
    Array [
      ".x",
      /^(?!\\.)[^/]+?$/,
      Symbol(globstar **),
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > .x/*/** 2`] = `
Array [
  Array [
    Array [
      ".x",
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?$/,
      Symbol(globstar **),
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > .x/*/**/** 1`] = `
Array [
  Array [
    Array [
      ".x",
      /^(?!\\.)[^/]+?$/,
      Symbol(globstar **),
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > .x/*/**/** 2`] = `
Array [
  Array [
    Array [
      ".x",
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?$/,
      Symbol(globstar **),
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > /^root:/{s/^[^:]*:[^:]*:([^:]*).*$// 1`] = `
Array [
  Array [
    Array [
      "",
      "^root:",
      "{s",
      /^\\^[^:][^/]*?:[^:][^/]*?:\\([^:][^/]*?\\)\\.[^/]*?\\$$/,
      "\\u0001",
      "",
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > /^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\1/ 1`] = `
Array [
  Array [
    Array [
      "",
      "^root:",
      "{s",
      /^\\^[^:][^/]*?:[^:][^/]*?:\\([^:][^/]*?\\)\\.[^/]*?\\$$/,
      "1",
      "",
    ],
  ],
  true,
]
`

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,
]
`

exports[`test/escape-has-magic.js TAP > ?************c****?**** 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ?*****?? 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ?*****?c 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ?***?**** 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ?***?****? 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ?***?****c 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ?.js 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/]\\.js$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ?.js 2`] = `
Array [
  Array [
    Array [
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]\\.js$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ?.js 3`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/]\\.js$/i,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ?.js 4`] = `
Array [
  Array [
    Array [
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]\\.js$/i,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ?? 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/][^/]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ?? 2`] = `
Array [
  Array [
    Array [
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/][^/]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ?? 3`] = `
Array [
  Array [
    Array [
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/][^/]$/i,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ?? 4`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/][^/]$/i,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ??**********?****? 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ??**********?****c 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ??? 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/][^/][^/]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ??? 2`] = `
Array [
  Array [
    Array [
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/][^/][^/]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ?js 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^/]js$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ?js 2`] = `
Array [
  Array [
    Array [
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]js$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > ?js 3`] = `
Array [
  Array [
    Array [
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]js$/i,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > @(*|.*) 1`] = `
Array [
  Array [
    Array [
      /^(?:(?!\\.)[^/]+?|(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.[^/]*?)$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > @(*|a) 1`] = `
Array [
  Array [
    Array [
      /^(?:(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?|a)$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > @(.*) 1`] = `
Array [
  Array [
    Array [
      /^(?:(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.[^/]*?)$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > @(.*) 2`] = `
Array [
  Array [
    Array [
      /^(?:(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.[^/]*?)$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > @(.*|*) 1`] = `
Array [
  Array [
    Array [
      /^(?:(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.[^/]*?|(?!\\.)[^/]+?)$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > @(.*|js) 1`] = `
Array [
  Array [
    Array [
      /^(?:(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.[^/]*?|js)$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > @(a|a[(])b 1`] = `
Array [
  Array [
    Array [
      /^(?:a|a\\()b$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > @(a|a[)])b 1`] = `
Array [
  Array [
    Array [
      /^(?:a|a\\))b$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > @(js|.*) 1`] = `
Array [
  Array [
    Array [
      /^(?:js|(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.[^/]*?)$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > X* 1`] = `
Array [
  Array [
    Array [
      /^X[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > X* 2`] = `
Array [
  Array [
    Array [
      /^X[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > XYZ 1`] = `
Array [
  Array [
    Array [
      /^XYZ$/i,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [ 1`] = `
Array [
  Array [
    Array [
      "[",
    ],
  ],
  false,
]
`

exports[`test/escape-has-magic.js TAP > [!a* 1`] = `
Array [
  Array [
    Array [
      /^\\[!a[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [#a* 1`] = `
Array [
  Array [
    Array [
      /^\\[\\#a[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [* 1`] = `
Array [
  Array [
    Array [
      /^\\[[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [-abc] 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[\\-abc]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]] 1`] = `
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,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]] 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}][\\p{L}\\p{Nl}]$/u,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]] 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f][\\x00-\\x7f]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [[:graph:][:digit:]]f* 1`] = `
Array [
  Array [
    Array [
      /^([\\p{Nd}]|[^\\p{Z}\\p{C}])f[^/]*?$/u,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [[:graph:]]f* 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^\\p{Z}\\p{C}]f[^/]*?$/u,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [[:xdigit:]][[:xdigit:]]??? 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[A-Fa-f0-9][A-Fa-f0-9][^/][^/][^/]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]] 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [[] 1`] = `
Array [
  Array [
    Array [
      "[",
    ],
  ],
  false,
]
`

exports[`test/escape-has-magic.js TAP > [\\-\\]] 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[\\-\\]]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [\\\\] 1`] = `
Array [
  Array [
    Array [
      "\\\\",
    ],
  ],
  false,
]
`

exports[`test/escape-has-magic.js TAP > [\\b-a] 1`] = `
Array [
  Array [
    Array [
      /^$.$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [\\z-a] 1`] = `
Array [
  Array [
    Array [
      /^$.$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [] 1`] = `
Array [
  Array [
    Array [
      "[]",
    ],
  ],
  false,
]
`

exports[`test/escape-has-magic.js TAP > []+*] 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[\\]+*]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > []-] 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[\\]\\-]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > []] 1`] = `
Array [
  Array [
    Array [
      "]",
    ],
  ],
  false,
]
`

exports[`test/escape-has-magic.js TAP > [^a-c]* 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[^a-c][^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [a-0][a-Ā] 1`] = `
Array [
  Array [
    Array [
      /^$.$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [a-[:alpha:]*] 1`] = `
Array [
  Array [
    Array [
      /^$.$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [a-b-c] 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[a-b\\-c]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [a-c]b* 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[a-c]b[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [a-y]*[^c] 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[a-y][^/]*?[^c]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [a-z] 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[a-z]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [abc 1`] = `
Array [
  Array [
    Array [
      "[abc",
    ],
  ],
  false,
]
`

exports[`test/escape-has-magic.js TAP > [abc-] 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[abc\\-]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [f-fz-a]* 1`] = `
Array [
  Array [
    Array [
      /^f[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [f-gz-a]* 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[f-g][^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [fz-a]* 1`] = `
Array [
  Array [
    Array [
      /^f[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [ia]?[ck] 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[ia][^/][ck]$/i,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [z-a] 1`] = `
Array [
  Array [
    Array [
      /^$.$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [z-a]* 1`] = `
Array [
  Array [
    Array [
      /^$.$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [z-af]* 1`] = `
Array [
  Array [
    Array [
      /^f[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > [z\\-a] 1`] = `
Array [
  Array [
    Array [
      /^(?!\\.)[z\\-a]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > \\ 1`] = `
Array [
  Array [
    Array [
      "\\\\",
    ],
  ],
  false,
]
`

exports[`test/escape-has-magic.js TAP > \\* 1`] = `
Array [
  Array [
    Array [
      "*",
    ],
  ],
  false,
]
`

exports[`test/escape-has-magic.js TAP > \\** 1`] = `
Array [
  Array [
    Array [
      /^\\*[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > \\*\\* 1`] = `
Array [
  Array [
    Array [
      "**",
    ],
  ],
  false,
]
`

exports[`test/escape-has-magic.js TAP > \\.\\./*/ 1`] = `
Array [
  Array [
    Array [
      "..",
      /^(?!\\.)[^/]+?$/,
      "",
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a* 1`] = `
Array [
  Array [
    Array [
      /^a[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a********???******* 1`] = `
Array [
  Array [
    Array [
      /^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a*****?c 1`] = `
Array [
  Array [
    Array [
      /^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a*****c*?** 1`] = `
Array [
  Array [
    Array [
      /^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a****c**?**??***** 1`] = `
Array [
  Array [
    Array [
      /^a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a***c 1`] = `
Array [
  Array [
    Array [
      /^a[^/]*?[^/]*?[^/]*?c$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a**?**cd**?**??***k 1`] = `
Array [
  Array [
    Array [
      /^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a**?**cd**?**??***k** 1`] = `
Array [
  Array [
    Array [
      /^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a**?**cd**?**??k 1`] = `
Array [
  Array [
    Array [
      /^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a**?**cd**?**??k*** 1`] = `
Array [
  Array [
    Array [
      /^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a*[^c] 1`] = `
Array [
  Array [
    Array [
      /^a[^/]*?[^c]$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a*cd**?**??k 1`] = `
Array [
  Array [
    Array [
      /^a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a/*/b 1`] = `
Array [
  Array [
    Array [
      "a",
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?$/,
      "b",
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a/*/b 2`] = `
Array [
  Array [
    Array [
      "a",
      /^(?!\\.)[^/]+?$/,
      "b",
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a/.*/b 1`] = `
Array [
  Array [
    Array [
      "a",
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.[^/]*?$/,
      "b",
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a/.*/b 2`] = `
Array [
  Array [
    Array [
      "a",
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.[^/]*?$/,
      "b",
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a/[2015-03-10T00:23:08.647Z\\]/z 1`] = `
Array [
  Array [
    Array [
      "a",
      "[2015-03-10T00:23:08.647Z]",
      "z",
    ],
  ],
  false,
]
`

exports[`test/escape-has-magic.js TAP > a/[2015-03-10T00:23:08.647Z]/z 1`] = `
Array [
  Array [
    Array [
      "a",
      /^(?!\\.)[2010T00:23:08.647Z]$/,
      "z",
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a?b 1`] = `
Array [
  Array [
    Array [
      /^a[^/]b$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a?c 1`] = `
Array [
  Array [
    Array [
      /^a[^/]c$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a[X-]b 1`] = `
Array [
  Array [
    Array [
      /^a[X\\-]b$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a[\\b]c 1`] = `
Array [
  Array [
    Array [
      "abc",
    ],
  ],
  false,
]
`

exports[`test/escape-has-magic.js TAP > a[b]c 1`] = `
Array [
  Array [
    Array [
      "abc",
    ],
  ],
  false,
]
`

exports[`test/escape-has-magic.js TAP > a\\*?/* 1`] = `
Array [
  Array [
    Array [
      /^a\\*[^/]$/,
      /^(?!\\.)[^/]+?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a\\*b/* 1`] = `
Array [
  Array [
    Array [
      "a*b",
      /^(?!\\.)[^/]+?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > a\\*c 1`] = `
Array [
  Array [
    Array [
      "a*c",
    ],
  ],
  false,
]
`

exports[`test/escape-has-magic.js TAP > ab* 1`] = `
Array [
  Array [
    Array [
      /^ab[^/]*?$/i,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > b*/ 1`] = `
Array [
  Array [
    Array [
      /^b[^/]*?$/,
      "",
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > c* 1`] = `
Array [
  Array [
    Array [
      /^c[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > man/man1/bash.1 1`] = `
Array [
  Array [
    Array [
      "man",
      "man1",
      "bash.1",
    ],
  ],
  false,
]
`

exports[`test/escape-has-magic.js TAP > must match snapshot 1`] = `
Array [
  Array [],
  false,
]
`

exports[`test/escape-has-magic.js TAP > s/\\..*// 1`] = `
Array [
  Array [
    Array [
      "s",
      /^(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.\\.[^/]*?$/,
      "",
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > x/*/../../a/b/c 1`] = `
Array [
  Array [
    Array [
      "a",
      "b",
      "c",
    ],
  ],
  false,
]
`

exports[`test/escape-has-magic.js TAP > x/*/../a/b/c 1`] = `
Array [
  Array [
    Array [
      "x",
      "a",
      "b",
      "c",
    ],
  ],
  false,
]
`

exports[`test/escape-has-magic.js TAP > x/z/../*/a/b/c 1`] = `
Array [
  Array [
    Array [
      "x",
      /^(?!\\.)[^/]+?$/,
      "a",
      "b",
      "c",
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > {/*,*} 1`] = `
Array [
  Array [
    Array [
      "",
      /^(?!\\.)[^/]+?$/,
    ],
    Array [
      /^(?!\\.)[^/]+?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > {/?,*} 1`] = `
Array [
  Array [
    Array [
      "",
      /^(?!\\.)[^/]$/,
    ],
    Array [
      /^(?!\\.)[^/]+?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > {a,*(b|c,d)} 1`] = `
Array [
  Array [
    Array [
      "a",
    ],
    Array [
      /^(?!\\.)[^/]*?\\(b\\|c$/,
    ],
    Array [
      "d)",
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > {a,*(b|{c,d})} 1`] = `
Array [
  Array [
    Array [
      "a",
    ],
    Array [
      /^(?:b|c)*$/,
    ],
    Array [
      /^(?:b|d)*$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > {c*,./c*} 1`] = `
Array [
  Array [
    Array [
      /^c[^/]*?$/,
    ],
    Array [
      ".",
      /^c[^/]*?$/,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > Å 1`] = `
Array [
  Array [
    Array [
      /^Å$/i,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > Å 2`] = `
Array [
  Array [
    Array [
      "Å",
    ],
  ],
  false,
]
`

exports[`test/escape-has-magic.js TAP > Å 3`] = `
Array [
  Array [
    Array [
      "Å",
    ],
  ],
  false,
]
`

exports[`test/escape-has-magic.js TAP > Å 4`] = `
Array [
  Array [
    Array [
      /^Å$/i,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > å 1`] = `
Array [
  Array [
    Array [
      "å",
    ],
  ],
  false,
]
`

exports[`test/escape-has-magic.js TAP > å 2`] = `
Array [
  Array [
    Array [
      /^å$/i,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > å 3`] = `
Array [
  Array [
    Array [
      /^å$/i,
    ],
  ],
  true,
]
`

exports[`test/escape-has-magic.js TAP > å 4`] = `
Array [
  Array [
    Array [
      "å",
    ],
  ],
  false,
]
`
minimatch-9.0.3/tap-snapshots/test/optimization-level-0.ts.test.cjs000066400000000000000000003505111445157213200253640ustar00rootroot00000000000000/* IMPORTANT
 * This snapshot file is auto-generated, but designed for humans.
 * It should be checked into source control and tracked carefully.
 * Re-generate by setting TAP_SNAPSHOT=1 and running tests.
 * 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",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "!\\\\!a*" ["\\\\!a","a!b","d","e"] 1`] = `
Array [
  "\\\\!a",
  "a!b",
  "d",
  "e",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "!a*" ["!ab","!abc","\\\\!a","d","e"] 1`] = `
Array [
  "!ab",
  "!abc",
  "\\\\!a",
  "d",
  "e",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "!a*" ["!ab","!abc"] 1`] = `
Array [
  "!ab",
  "!abc",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "" [""] 1`] = `
Array [
  "",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "# ignore this" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "#*" ["#a","#b"] 1`] = `
Array [
  "#a",
  "#b",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*" [".JS",".a",".a.JS",".a.js",".js","JS","a","a.JS","a.js","js"] 1`] = `
Array [
  ".JS",
  ".a",
  ".a.JS",
  ".a.js",
  ".js",
  "JS",
  "a",
  "a.JS",
  "a.js",
  "js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*" [".a",".a.js",".js","a","a.js","js"] 1`] = `
Array [
  ".a",
  ".a.js",
  ".js",
  "a",
  "a.js",
  "js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*" ["JS","a","a.JS","a.js","js"] 1`] = `
Array [
  "JS",
  "a",
  "a.JS",
  "a.js",
  "js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*(?)" ["a.a","a.b","aa","aa.","ab","ab.","b.a","b.b","ba","ba.","bb","bb."] 1`] = `
Array [
  "a.a",
  "a.b",
  "aa",
  "aa.",
  "ab",
  "ab.",
  "b.a",
  "b.b",
  "ba",
  "ba.",
  "bb",
  "bb.",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*(a/b)" ["*(a/b)"] 1`] = `
Array [
  "*(a/b)",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*(a|{b),c)}" ["a","ab","ac"] 1`] = `
Array [
  "a",
  "ab",
  "ac",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*(a|{b,c})" ["a","ab","ac","b","c"] 1`] = `
Array [
  "a",
  "ab",
  "ac",
  "b",
  "c",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*(a|{b|c,c})" ["(a|b|c)","(a|c)","x(a|b|c)","x(a|c)"] 1`] = `
Array [
  "(a|b|c)",
  "(a|c)",
  "x(a|b|c)",
  "x(a|c)",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*(a|{b|c,c})" ["a","ab","ac","b","bc","c","cb"] 1`] = `
Array [
  "a",
  "ab",
  "ac",
  "b",
  "bc",
  "c",
  "cb",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "**" [".a/.d","a/.d","a/b"] 1`] = `
Array [
  ".a/.d",
  "a/.d",
  "a/b",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "**" ["a","abc","abd","abe","b","bb","bcd","bdir/","bdir/cfile","c","ca","cb","d","dd","de"] 1`] = `
Array [
  "a",
  "abc",
  "abd",
  "abe",
  "b",
  "bb",
  "bcd",
  "bdir/",
  "bdir/cfile",
  "c",
  "ca",
  "cb",
  "d",
  "dd",
  "de",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "**" ["a/b"] 1`] = `
Array [
  "a/b",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*******?" ["abc"] 1`] = `
Array [
  "abc",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*******c" ["abc"] 1`] = `
Array [
  "abc",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*****??" ["abc"] 1`] = `
Array [
  "abc",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "**/**/**" ["a","abc","abd","abe","b","bb","bcd","bdir/","bdir/cfile","c","ca","cb","d","dd","de"] 1`] = `
Array [
  "a",
  "abc",
  "abd",
  "abe",
  "b",
  "bb",
  "bcd",
  "bdir/",
  "bdir/cfile",
  "c",
  "ca",
  "cb",
  "d",
  "dd",
  "de",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "**/.x/**" [".x/",".x/a/",".x/a/b","a/.x/b","a/b/.x/","a/b/.x/c","a/b/.x/c/d","a/b/.x/c/d/e"] 1`] = `
Array [
  ".x/",
  ".x/a/",
  ".x/a/b",
  "a/.x/b",
  "a/b/.x/",
  "a/b/.x/c",
  "a/b/.x/c/d",
  "a/b/.x/c/d/e",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "**/.x/**" ["a/.x/b"] 1`] = `
Array [
  "a/.x/b",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*.!(js)" ["boo.js.boo","foo.","foo.bar","foo.js.js"] 1`] = `
Array [
  "boo.js.boo",
  "foo.",
  "foo.bar",
  "foo.js.js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*.*" [".JS",".a",".a.JS",".a.js",".js","a.JS","a.js"] 1`] = `
Array [
  ".JS",
  ".a",
  ".a.JS",
  ".a.js",
  ".js",
  "a.JS",
  "a.js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*.*" ["a.JS","a.js"] 1`] = `
Array [
  "a.JS",
  "a.js",
]
`

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.*",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*.js" [".JS",".a.JS",".a.js",".js","a.JS","a.js"] 1`] = `
Array [
  ".JS",
  ".a.JS",
  ".a.js",
  ".js",
  "a.JS",
  "a.js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*.js" [".a.js",".js","a.js"] 1`] = `
Array [
  ".a.js",
  ".js",
  "a.js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*.js" ["a.JS","a.js"] 1`] = `
Array [
  "a.JS",
  "a.js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*.js" ["a.js"] 1`] = `
Array [
  "a.js",
]
`

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",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*\\\\!*" ["echo !7"] 1`] = `
Array [
  "echo !7",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "*\\\\\\\\!*" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "*c*?**" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "*js" ["a.js","js"] 1`] = `
Array [
  "a.js",
  "js",
]
`

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))" [".aa",".ab",".ba",".bb","a.a","a.b","aa","aa.","ab","ab.","b.a","b.b","ba","ba.","bb","bb."] 1`] = `
Array [
  ".aa",
  ".ab",
  ".ba",
  ".bb",
  "a.a",
  "a.b",
  "aa",
  "aa.",
  "ab",
  "ab.",
  "b.a",
  "b.b",
  "ba",
  "ba.",
  "bb",
  "bb.",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "+(?)" ["a.a","a.b","aa","aa.","ab","ab.","b.a","b.b","ba","ba.","bb","bb."] 1`] = `
Array [
  "a.a",
  "a.b",
  "aa",
  "aa.",
  "ab",
  "ab.",
  "b.a",
  "b.b",
  "ba",
  "ba.",
  "bb",
  "bb.",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "+(a)!(b)+(c)" ["ac","acc","adc"] 1`] = `
Array [
  "ac",
  "acc",
  "adc",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "+(a|!(b))" ["a.a","a.b","aa","aa.","ab","ab.","b.a","b.b","ba","ba.","bb","bb."] 1`] = `
Array [
  "a.a",
  "a.b",
  "aa",
  "aa.",
  "ab",
  "ab.",
  "b.a",
  "b.b",
  "ba",
  "ba.",
  "bb",
  "bb.",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "+(a|*\\\\|c\\\\\\\\|d\\\\\\\\\\\\|e\\\\\\\\\\\\\\\\|f\\\\\\\\\\\\\\\\\\\\|g" ["+(a|b\\\\|c\\\\\\\\|d\\\\\\\\|e\\\\\\\\\\\\\\\\|f\\\\\\\\\\\\\\\\|g"] 1`] = `
Array [
  "+(a|b\\\\|c\\\\\\\\|d\\\\\\\\|e\\\\\\\\\\\\\\\\|f\\\\\\\\\\\\\\\\|g",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "+(a|.)" [".aa","a.a","aa","aa."] 1`] = `
Array [
  ".aa",
  "a.a",
  "aa",
  "aa.",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "+(a|?)" ["a.a","a.b","aa","aa.","ab","ab.","b.a","b.b","ba","ba.","bb","bb."] 1`] = `
Array [
  "a.a",
  "a.b",
  "aa",
  "aa.",
  "ab",
  "ab.",
  "b.a",
  "b.b",
  "ba",
  "ba.",
  "bb",
  "bb.",
]
`

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",
  ".a",
  ".a.JS",
  ".a.js",
  ".js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > ".*" [".a",".a.js",".js"] 1`] = `
Array [
  ".a",
  ".a.js",
  ".js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > ".x/**/*" [".x/.x/",".x/.y",".x/a/",".x/a/b"] 1`] = `
Array [
  ".x/.x/",
  ".x/.y",
  ".x/a/",
  ".x/a/b",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > ".x/**/*" [".x/a/",".x/a/b"] 1`] = `
Array [
  ".x/a/",
  ".x/a/b",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > ".x/**/**/*" [".x/.x/",".x/.y",".x/a/",".x/a/b"] 1`] = `
Array [
  ".x/.x/",
  ".x/.y",
  ".x/a/",
  ".x/a/b",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > ".x/**/**/*" [".x/a/",".x/a/b"] 1`] = `
Array [
  ".x/a/",
  ".x/a/b",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > ".x/**/*/**" [".x/.x/",".x/a/",".x/a/b"] 1`] = `
Array [
  ".x/.x/",
  ".x/a/",
  ".x/a/b",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > ".x/**/*/**" [".x/a/",".x/a/b"] 1`] = `
Array [
  ".x/a/",
  ".x/a/b",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > ".x/*/**" [".x/.x/",".x/a/",".x/a/b"] 1`] = `
Array [
  ".x/.x/",
  ".x/a/",
  ".x/a/b",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > ".x/*/**" [".x/a/",".x/a/b"] 1`] = `
Array [
  ".x/a/",
  ".x/a/b",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > ".x/*/**/**" [".x/.x/",".x/a/",".x/a/b"] 1`] = `
Array [
  ".x/.x/",
  ".x/a/",
  ".x/a/b",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > ".x/*/**/**" [".x/a/",".x/a/b"] 1`] = `
Array [
  ".x/a/",
  ".x/a/b",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "/^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\\\1/" ["/^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\\\1/"] 1`] = `
Array [
  "/^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\\\1/",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "/^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\u0001/" ["/^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\u0001/"] 1`] = `
Array [
  "/^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\u0001/",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "?" ["a"] 1`] = `
Array [
  "a",
]
`

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 []
`

exports[`test/optimization-level-0.ts TAP basic tests > "?*****??" ["abc"] 1`] = `
Array [
  "abc",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "?*****?c" ["abc"] 1`] = `
Array [
  "abc",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "?***?****" ["abc"] 1`] = `
Array [
  "abc",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "?***?****?" ["abc"] 1`] = `
Array [
  "abc",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "?***?****c" ["abc"] 1`] = `
Array [
  "abc",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "?.js" ["a.JS","a.js"] 1`] = `
Array [
  "a.JS",
  "a.js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "?.js" ["a.JS","a.js"] 2`] = `
Array [
  "a.JS",
  "a.js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "?.js" ["a.js"] 1`] = `
Array [
  "a.js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "?.js" ["a.js"] 2`] = `
Array [
  "a.js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "??" [".a","JS","js"] 1`] = `
Array [
  ".a",
  "JS",
  "js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "??" [".a","JS","js"] 2`] = `
Array [
  ".a",
  "JS",
  "js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "??" ["JS","js"] 1`] = `
Array [
  "JS",
  "js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "??" ["JS","js"] 2`] = `
Array [
  "JS",
  "js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "??**********?****?" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "??**********?****c" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "???" [".JS",".js"] 1`] = `
Array [
  ".JS",
  ".js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "???" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "?js" [".JS",".js"] 1`] = `
Array [
  ".JS",
  ".js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "?js" [".js"] 1`] = `
Array [
  ".js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "?js" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "@(*|.*)" [".a",".a.js",".js","a","a.js","js"] 1`] = `
Array [
  ".a",
  ".a.js",
  ".js",
  "a",
  "a.js",
  "js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "@(*|a)" [".a",".a.js",".js","a","a.js","js"] 1`] = `
Array [
  ".a",
  ".a.js",
  ".js",
  "a",
  "a.js",
  "js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "@(.*)" [".a",".a.js",".js"] 1`] = `
Array [
  ".a",
  ".a.js",
  ".js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "@(.*)" [".a",".a.js",".js"] 2`] = `
Array [
  ".a",
  ".a.js",
  ".js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "@(.*|*)" [".a",".a.js",".js","a","a.js","js"] 1`] = `
Array [
  ".a",
  ".a.js",
  ".js",
  "a",
  "a.js",
  "js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "@(.*|js)" [".a",".a.js",".js","js"] 1`] = `
Array [
  ".a",
  ".a.js",
  ".js",
  "js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "@(a|a[(])b" ["a(b","ab"] 1`] = `
Array [
  "a(b",
  "ab",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "@(a|a[)])b" ["a)b","ab"] 1`] = `
Array [
  "a)b",
  "ab",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "@(js|.*)" [".a",".a.js",".js","js"] 1`] = `
Array [
  ".a",
  ".a.js",
  ".js",
  "js",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "X*" ["X*"] 1`] = `
Array [
  "X*",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "X*" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "XYZ" ["xYz"] 1`] = `
Array [
  "xYz",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[!a*" ["[!ab"] 1`] = `
Array [
  "[!ab",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[" ["["] 1`] = `
Array [
  "[",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[#a*" ["[#ab"] 1`] = `
Array [
  "[#ab",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[*" ["[abc"] 1`] = `
Array [
  "[abc",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[-abc]" ["-"] 1`] = `
Array [
  "-",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]]" ["0f7fa","99999","aeiou","fffff","åéîøü"] 1`] = `
Array [
  "0f7fa",
  "99999",
  "aeiou",
  "fffff",
  "åéîøü",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]]" ["aeiou","fffff","åéîøü"] 1`] = `
Array [
  "aeiou",
  "fffff",
  "åéîøü",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]]" ["0f7fa","99999","aeiou","fffff"] 1`] = `
Array [
  "0f7fa",
  "99999",
  "aeiou",
  "fffff",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[[:graph:][:digit:]]f*" ["0f7fa","fffff"] 1`] = `
Array [
  "0f7fa",
  "fffff",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[[:graph:]]f*" ["0f7fa","fffff"] 1`] = `
Array [
  "0f7fa",
  "fffff",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[[:xdigit:]][[:xdigit:]]???" ["0f7fa","99999","aeiou","fffff"] 1`] = `
Array [
  "0f7fa",
  "99999",
  "aeiou",
  "fffff",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]]" ["0f7fa","99999","fffff"] 1`] = `
Array [
  "0f7fa",
  "99999",
  "fffff",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[[]" ["["] 1`] = `
Array [
  "[",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[\\\\-\\\\]]" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "[\\\\\\\\]" ["\\\\"] 1`] = `
Array [
  "\\\\",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[\\\\b-a]" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "[\\\\z-a]" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "[]" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "[]+*]" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "[]-]" ["]"] 1`] = `
Array [
  "]",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[]]" ["]"] 1`] = `
Array [
  "]",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[^a-c]*" ["d","dd","de"] 1`] = `
Array [
  "d",
  "dd",
  "de",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[a-0][a-Ā]" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "[a-[:alpha:]*]" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "[a-b-c]" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "[a-c]b*" ["abc","abd","abe","bb","cb"] 1`] = `
Array [
  "abc",
  "abd",
  "abe",
  "bb",
  "cb",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[a-y]*[^c]" ["abd","abe","bb","bcd","bdir/","ca","cb","dd","de"] 1`] = `
Array [
  "abd",
  "abe",
  "bb",
  "bcd",
  "bdir/",
  "ca",
  "cb",
  "dd",
  "de",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[a-z]" ["p"] 1`] = `
Array [
  "p",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[abc" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "[abc-]" ["-"] 1`] = `
Array [
  "-",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[f-fz-a]*" ["fffff"] 1`] = `
Array [
  "fffff",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[f-gz-a]*" ["fffff"] 1`] = `
Array [
  "fffff",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[fz-a]*" ["fffff"] 1`] = `
Array [
  "fffff",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[ia]?[ck]" ["ABC","IjK"] 1`] = `
Array [
  "ABC",
  "IjK",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[z-a]" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "[z-a]*" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "[z-af]*" ["fffff"] 1`] = `
Array [
  "fffff",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "[z\\\\-a]" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "\\\\" ["\\\\"] 1`] = `
Array [
  "\\\\",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "\\\\*" ["\\\\*"] 1`] = `
Array [
  "\\\\*",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "\\\\**" ["\\\\**"] 1`] = `
Array [
  "\\\\**",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "\\\\*\\\\*" ["\\\\*\\\\*"] 1`] = `
Array [
  "\\\\*\\\\*",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "\\\\.\\\\./*/" ["\\\\.\\\\./*/"] 1`] = `
Array [
  "\\\\.\\\\./*/",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a*" ["a","abc","abd","abe"] 1`] = `
Array [
  "a",
  "abc",
  "abd",
  "abe",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a********???*******" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "a*****?c" ["abc"] 1`] = `
Array [
  "abc",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a*****c*?**" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "a****c**?**??*****" ["abcdecdhjk"] 1`] = `
Array [
  "abcdecdhjk",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a***c" ["abc"] 1`] = `
Array [
  "abc",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a**?**cd**?**??***k" ["abcdecdhjk"] 1`] = `
Array [
  "abcdecdhjk",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a**?**cd**?**??***k**" ["abcdecdhjk"] 1`] = `
Array [
  "abcdecdhjk",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a**?**cd**?**??k" ["abcdecdhjk"] 1`] = `
Array [
  "abcdecdhjk",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a**?**cd**?**??k***" ["abcdecdhjk"] 1`] = `
Array [
  "abcdecdhjk",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a*[^c]" ["abd","abe"] 1`] = `
Array [
  "abd",
  "abe",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a*cd**?**??k" ["abcdecdhjk"] 1`] = `
Array [
  "abcdecdhjk",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a/*/b" ["a/.d/b","a/c/b"] 1`] = `
Array [
  "a/.d/b",
  "a/c/b",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a/*/b" ["a/c/b"] 1`] = `
Array [
  "a/c/b",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a/.*/b" ["a/.d/b"] 1`] = `
Array [
  "a/.d/b",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a/.*/b" ["a/.d/b"] 2`] = `
Array [
  "a/.d/b",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a/[2015-03-10T00:23:08.647Z\\\\]/z" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "a/[2015-03-10T00:23:08.647Z]/z" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "a?b" ["acb/","x/y/acb"] 1`] = `
Array [
  "acb/",
  "x/y/acb",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a?c" ["abc"] 1`] = `
Array [
  "abc",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a[X-]b" ["a-b","aXb"] 1`] = `
Array [
  "a-b",
  "aXb",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a[\\\\b]c" ["abc"] 1`] = `
Array [
  "abc",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a[b]c" ["abc"] 1`] = `
Array [
  "abc",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a\\\\*?/*" ["a*b/ooo"] 1`] = `
Array [
  "a*b/ooo",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a\\\\*b/*" ["a*b/ooo"] 1`] = `
Array [
  "a*b/ooo",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "a\\\\*c" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "ab*" ["ABC"] 1`] = `
Array [
  "ABC",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "b*/" ["bdir/"] 1`] = `
Array [
  "bdir/",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "c*" ["c","ca","cb"] 1`] = `
Array [
  "c",
  "ca",
  "cb",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "man/man1/bash.1" ["man/man1/bash.1"] 1`] = `
Array [
  "man/man1/bash.1",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "s/\\\\..*//" ["s/\\\\..*//"] 1`] = `
Array [
  "s/\\\\..*//",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "x/*/../../a/b/c" ["a/b/c"] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "x/*/../a/b/c" ["x/a/b/c"] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "x/z/../*/a/b/c" ["x/y/a/b/c","x/z/a/b/c"] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "{/*,*}" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "{/?,*}" ["/a","bb"] 1`] = `
Array [
  "/a",
  "bb",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "{a,*(b|c,d)}" ["(b|c","*(b|c","a","d)"] 1`] = `
Array [
  "(b|c",
  "*(b|c",
  "a",
  "d)",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "{a,*(b|{c,d})}" ["a","b","bc","c","cb","d"] 1`] = `
Array [
  "a",
  "b",
  "bc",
  "c",
  "cb",
  "d",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "{c*,./c*}" ["c","ca","cb"] 1`] = `
Array [
  "c",
  "ca",
  "cb",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "Å" ["Å"] 1`] = `
Array [
  "Å",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "Å" ["Å"] 2`] = `
Array [
  "Å",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "Å" ["å"] 1`] = `
Array [
  "å",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "Å" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > "å" ["Å"] 1`] = `
Array [
  "Å",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "å" ["å"] 1`] = `
Array [
  "å",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "å" ["å"] 2`] = `
Array [
  "å",
]
`

exports[`test/optimization-level-0.ts TAP basic tests > "å" [] 1`] = `
Array []
`

exports[`test/optimization-level-0.ts TAP basic tests > # ignore this hasMagic known 1`] = `
false
`

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 > # ignore this parsed 1`] = `
Array [
  Array [],
  "# ignore this",
  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 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 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 > * 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 > *(?) 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 [],
      "?",
    ],
  ],
  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`] = `
true
`

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 > *(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",
    ],
  ],
  ",c)}",
  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,c}",
    ],
  ],
  Object {},
]
`

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 > *(a|{b|c,c}) hasMagic known 2`] = `
true
`

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 > *(a|{b|c,c}) hasMagic pre-generate 2`] = `
undefined
`

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 > *(a|{b|c,c}) parsed 2`] = `
Array [
  Array [],
  "*(a|{b|c,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 known 3`] = `
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 > ** 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 > *******? 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 > **/.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 > *.!(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 [
      "js",
      Object {},
    ],
  ],
  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 > *.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 > *.\\* 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 > *.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 > *.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)) hasMagic known 1`] = `
true
`

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 > +(.|a|!(b)) parsed 1`] = `
Array [
  Array [],
  Array [
    "+",
    Array [
      Array [],
      ".",
    ],
    Array [
      Array [],
      "a",
    ],
    Array [
      Array [],
      Array [
        "!",
        Array [
          Array [],
          "b",
          Object {},
        ],
      ],
    ],
  ],
  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 [],
      "?",
    ],
  ],
  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|!(b)) hasMagic known 1`] = `
true
`

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 > +(a|!(b)) parsed 1`] = `
Array [
  Array [],
  Array [
    "+",
    Array [
      Array [],
      "a",
    ],
    Array [
      Array [],
      Array [
        "!",
        Array [
          Array [],
          "b",
          Object {},
        ],
      ],
    ],
  ],
  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 > +(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 [],
      "a",
    ],
    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 [],
      "a",
    ],
    Array [
      Array [],
      "?",
    ],
  ],
  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 *(?) 1`] = `
/^(?:(?:(?!\\.)[^/])(?:(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/])*?)?$/
`

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)) 1`] = `
/^(?:(?:\\.|a|(?:(?!(?:b(?:$|\\/)))(?!\\.)[^/]*?))(?:\\.|a|(?:(?!(?:b(?:$|\\/)))[^/]*?))*?)$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe +(?) 1`] = `
/^(?:(?:(?!\\.)[^/])(?:(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/])*?)$/
`

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|!(b)) 1`] = `
/^(?:(?:a|(?:(?!(?:b(?:$|\\/)))(?!\\.)[^/]*?))(?:a|(?:(?!(?:b(?:$|\\/)))[^/]*?))*?)$/
`

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 +(a|.) 1`] = `
/^(?: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 +(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
`

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 [#a* 1`] = `
/^\\[\\#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]$/
`

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}]$/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}]$/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]$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe [[:graph:][:digit:]]f* 1`] = `
/^([\\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[^/]*?$/u
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe [[:xdigit:]][[:xdigit:]]??? 1`] = `
/^(?!\\.)[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]$/
`

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][^/]*?$/
`

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]$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe [a-c]b* 1`] = `
/^(?!\\.)[a-c]b[^/]*?$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe [a-y]*[^c] 1`] = `
/^(?!\\.)[a-y][^/]*?[^c]$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe [a-z] 1`] = `
/^(?!\\.)[a-z]$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe [abc 1`] = `
/^\\[abc$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe [abc-] 1`] = `
/^(?!\\.)[abc\\-]$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe [f-fz-a]* 1`] = `
/^f[^/]*?$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe [f-gz-a]* 1`] = `
/^(?!\\.)[f-g][^/]*?$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe [fz-a]* 1`] = `
/^f[^/]*?$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe [ia]?[ck] 1`] = `
/^(?!\\.)[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[^/]*?$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe [z\\-a] 1`] = `
/^(?!\\.)[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[^/]*?$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe a********???******* 1`] = `
/^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe a*****?c 1`] = `
/^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe a*****c*?** 1`] = `
/^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe a****c**?**??***** 1`] = `
/^a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe a***c 1`] = `
/^a[^/]*?[^/]*?[^/]*?c$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe a**?**cd**?**??***k 1`] = `
/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe a**?**cd**?**??***k** 1`] = `
/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe a**?**cd**?**??k 1`] = `
/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe a**?**cd**?**??k*** 1`] = `
/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe a*[^c] 1`] = `
/^a[^/]*?[^c]$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe a*cd**?**??k 1`] = `
/^a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k$/
`

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 2`] = `
/^a\\/(?!\\.)[^/]+?\\/b$/
`

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 2`] = `
/^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$/
`

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$/
`

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?c 1`] = `
/^a[^/]c$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe a[X-]b 1`] = `
/^a[X\\-]b$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe a[\\b]c 1`] = `
/^abc$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe a[b]c 1`] = `
/^abc$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe a\\*?/* 1`] = `
/^a\\*[^/]\\/(?!\\.)[^/]+?$/
`

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\\*c 1`] = `
/^a\\*c$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe ab* 1`] = `
/^ab[^/]*?$/i
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe b*/ 1`] = `
/^b[^/]*?\\/$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe c* 1`] = `
/^c[^/]*?$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe man/man1/bash.1 1`] = `
/^man\\/man1\\/bash\\.1$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe s/\\..*// 1`] = `
/^s\\/(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.\\.[^/]*?\\/$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe x/*/../../a/b/c 1`] = `
/^x\\/(?!\\.)[^/]+?\\/\\.\\.\\/\\.\\.\\/a\\/b\\/c$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe x/*/../a/b/c 1`] = `
/^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$/
`

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\\))$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe {a,*(b|{c,d})} 1`] = `
/^(?:a|(?:b|c)*|(?:b|d)*)$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe {c*,./c*} 1`] = `
/^(?:c[^/]*?|\\.\\/c[^/]*?)$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe Å 1`] = `
/^Å$/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
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe å 1`] = `
/^å$/
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe å 2`] = `
/^å$/i
`

exports[`test/optimization-level-0.ts TAP basic tests > makeRe å 3`] = `
/^å$/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 {},
]
`
minimatch-9.0.3/tap-snapshots/test/optimization-level-2.ts.test.cjs000066400000000000000000004265671445157213200254050ustar00rootroot00000000000000/* IMPORTANT
 * This snapshot file is auto-generated, but designed for humans.
 * It should be checked into source control and tracked carefully.
 * Re-generate by setting TAP_SNAPSHOT=1 and running tests.
 * 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 > *(?) 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 [],
      "?",
    ],
  ],
  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)) 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 [],
      ".",
    ],
    Array [
      Array [],
      "a",
    ],
    Array [
      Array [],
      Array [
        "!",
        Array [
          Array [],
          "b",
          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 pre-generate 1`] = `
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 > +(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|!(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",
    ],
    Array [
      Array [],
      Array [
        "!",
        Array [
          Array [],
          "b",
          Object {},
        ],
      ],
    ],
  ],
  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 > +(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 [],
      "a",
    ],
    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 [],
      "a",
    ],
    Array [
      Array [],
      "?",
    ],
  ],
  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[^/]*?$/
`

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(?:\\.[^/]*?)(?:$|\\/)))(?!\\.)[^/]*?)(?:(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.[^/]*?)$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe !\\!a* 1`] = `
/^(?!^\\!a[^/]*?$).+$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe !a* 1`] = `
/^(?!^a[^/]*?$).+$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe !a* 2`] = `
/^!a[^/]*?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe # ignore this 1`] = `
false
`

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 * 2`] = `
/^(?!\\.)[^/]+?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe * 3`] = `
/^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe *(?) 1`] = `
/^(?:(?:(?!\\.)[^/])(?:(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/])*?)?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe *(a/b) 1`] = `
/^(?!\\.)[^/]*?\\(a\\/b\\)$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe *(a|{b),c)} 1`] = `
/^(?:(?:a|b)*|(?:a|c)*)$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe *(a|{b,c}) 1`] = `
/^(?:(?:a|b)*|(?:a|c)*)$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe *(a|{b|c,c}) 1`] = `
/^(?:(?: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\\))$/
`

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})($|\\/)).)*?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe *******? 1`] = `
/^(?!\\.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe *******c 1`] = `
/^(?!\\.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?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(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe **/.x/** 2`] = `
/^(?!\\.)[^/]+?\\/\\.x\\/(?!\\.)[^/]+?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe *.!(js) 1`] = `
/^(?!\\.)[^/]*?\\.(?:(?!(?:js(?:$|\\/)))[^/]*?)$/
`

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 *.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$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe *.js 2`] = `
/^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]*?\\.js$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe *.js 3`] = `
/^(?!\\.)[^/]*?\\.js$/i
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe *.js 4`] = `
/^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]*?\\.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\\.[^/]*?$/
`

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[^/]*?[^/][^/]*?[^/]*?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe *js 1`] = `
/^(?!\\.)[^/]*?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)) 1`] = `
/^(?:(?:\\.|a|(?:(?!(?:b(?:$|\\/)))(?!\\.)[^/]*?))(?:\\.|a|(?:(?!(?:b(?:$|\\/)))[^/]*?))*?)$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe +(?) 1`] = `
/^(?:(?:(?!\\.)[^/])(?:(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/])*?)$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe +(a)!(b)+(c) 1`] = `
/^(?:a)+(?:(?!(?:b(?:c)+(?:$|\\/)))[^/]*?)(?:c)+$/
`

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\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g 1`] = `
/^\\+\\(a\\|[^/]*?|c\\\\\\|d\\\\|e\\\\\\\\\\|f\\\\\\\\|g$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe +(a|.) 1`] = `
/^(?: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 +(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(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)[^/]+?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe .x/**/* 2`] = `
/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe .x/**/**/* 1`] = `
/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)[^/]+?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe .x/**/**/* 2`] = `
/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe .x/**/*/** 1`] = `
/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)\\.).)*?\\/)(?!\\.)[^/]+?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe .x/**/*/** 2`] = `
/^\\.x(?:\\/|\\/(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?\\/)(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe .x/*/** 1`] = `
/^\\.x\\/(?!\\.)[^/]+?(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe .x/*/** 2`] = `
/^\\.x\\/(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?(?:\\/|(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe .x/*/**/** 1`] = `
/^\\.x\\/(?!\\.)[^/]+?(?:\\/|(?:(?!(?:\\/|^)\\.).)*?)?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe .x/*/**/** 2`] = `
/^\\.x\\/(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?(?:\\/|(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe /^root:/{s/^[^:]*:[^:]*:([^:]*).*$// 1`] = `
/^\\/\\^root:\\/\\{s\\/\\^[^:][^/]*?:[^:][^/]*?:\\([^:][^/]*?\\)\\.[^/]*?\\$\\/\\/$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe /^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\1/ 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[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?*****?? 1`] = `
/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?*****?c 1`] = `
/^(?!\\.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]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$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?.js 1`] = `
/^(?!\\.)[^/]\\.js$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?.js 2`] = `
/^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]\\.js$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?.js 3`] = `
/^(?!\\.)[^/]\\.js$/i
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?.js 4`] = `
/^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]\\.js$/i
`

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`] = `
/^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/][^/]$/i
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?? 4`] = `
/^(?!\\.)[^/][^/]$/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$/
`

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 ?js 1`] = `
/^(?!\\.)[^/]js$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?js 2`] = `
/^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]js$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe ?js 3`] = `
/^(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]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`] = `
/^(?:(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?|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)$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe @(a|a[(])b 1`] = `
/^(?:a|a\\()b$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe @(a|a[)])b 1`] = `
/^(?:a|a\\))b$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe @(js|.*) 1`] = `
/^(?:js|(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.[^/]*?)$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe X* 1`] = `
/^X[^/]*?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe X* 2`] = `
/^X[^/]*?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe XYZ 1`] = `
/^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[^/]*?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe [#a* 1`] = `
/^\\[\\#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]$/
`

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}]$/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}]$/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]$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe [[:graph:][:digit:]]f* 1`] = `
/^([\\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[^/]*?$/u
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe [[:xdigit:]][[:xdigit:]]??? 1`] = `
/^(?!\\.)[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]$/
`

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][^/]*?$/
`

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]$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe [a-c]b* 1`] = `
/^(?!\\.)[a-c]b[^/]*?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe [a-y]*[^c] 1`] = `
/^(?!\\.)[a-y][^/]*?[^c]$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe [a-z] 1`] = `
/^(?!\\.)[a-z]$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe [abc 1`] = `
/^\\[abc$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe [abc-] 1`] = `
/^(?!\\.)[abc\\-]$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe [f-fz-a]* 1`] = `
/^f[^/]*?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe [f-gz-a]* 1`] = `
/^(?!\\.)[f-g][^/]*?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe [fz-a]* 1`] = `
/^f[^/]*?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe [ia]?[ck] 1`] = `
/^(?!\\.)[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[^/]*?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe [z\\-a] 1`] = `
/^(?!\\.)[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[^/]*?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a********???******* 1`] = `
/^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a*****?c 1`] = `
/^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a*****c*?** 1`] = `
/^a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a****c**?**??***** 1`] = `
/^a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a***c 1`] = `
/^a[^/]*?[^/]*?[^/]*?c$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a**?**cd**?**??***k 1`] = `
/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a**?**cd**?**??***k** 1`] = `
/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a**?**cd**?**??k 1`] = `
/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a**?**cd**?**??k*** 1`] = `
/^a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a*[^c] 1`] = `
/^a[^/]*?[^c]$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a*cd**?**??k 1`] = `
/^a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a/*/b 1`] = `
/^a\\/(?!(?:^|\\/)\\.\\.?(?:$|\\/))[^/]+?\\/b$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a/*/b 2`] = `
/^a\\/(?!\\.)[^/]+?\\/b$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a/.*/b 1`] = `
/^a\\/(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.[^/]*?\\/b$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a/.*/b 2`] = `
/^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$/
`

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$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a?b 1`] = `
/^a[^/]b$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a?c 1`] = `
/^a[^/]c$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a[X-]b 1`] = `
/^a[X\\-]b$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a[\\b]c 1`] = `
/^abc$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a[b]c 1`] = `
/^abc$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a\\*?/* 1`] = `
/^a\\*[^/]\\/(?!\\.)[^/]+?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a\\*b/* 1`] = `
/^a\\*b\\/(?!\\.)[^/]+?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe a\\*c 1`] = `
/^a\\*c$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe ab* 1`] = `
/^ab[^/]*?$/i
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe b*/ 1`] = `
/^b[^/]*?\\/$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe c* 1`] = `
/^c[^/]*?$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe man/man1/bash.1 1`] = `
/^man\\/man1\\/bash\\.1$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe s/\\..*// 1`] = `
/^s\\/(?!(?:^|\\/)\\.\\.?(?:$|\\/))\\.\\.[^/]*?\\/$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe x/*/../../a/b/c 1`] = `
/^a\\/b\\/c$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe x/*/../a/b/c 1`] = `
/^x\\/a\\/b\\/c$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe x/z/../*/a/b/c 1`] = `
/^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\\))$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe {a,*(b|{c,d})} 1`] = `
/^(?:a|(?:b|c)*|(?:b|d)*)$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe {c*,./c*} 1`] = `
/^(?:c[^/]*?|\\.\\/c[^/]*?)$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe Å 1`] = `
/^Å$/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
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe å 1`] = `
/^å$/
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe å 2`] = `
/^å$/i
`

exports[`test/optimization-level-2.ts TAP basic tests > makeRe å 3`] = `
/^å$/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`] = `
Array [
  Array [
    "**",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ** > multislash 1`] = `
Array [
  Array [
    "**",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ** > no globstar 1`] = `
Array [
  Array [
    "*",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/.. > defaults 1`] = `
Array [
  Array [
    "**",
    "..",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/.. > multislash 1`] = `
Array [
  Array [
    "**",
    "..",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/.. > no globstar 1`] = `
Array [
  Array [
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../ > defaults 1`] = `
Array [
  Array [
    "**",
    "..",
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../ > multislash 1`] = `
Array [
  Array [
    "**",
    "..",
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../ > no globstar 1`] = `
Array [
  Array [
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../*/x > defaults 1`] = `
Array [
  Array [
    "..",
    "*",
    "x",
  ],
  Array [
    "**",
    "*",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../*/x > multislash 1`] = `
Array [
  Array [
    "..",
    "*",
    "x",
  ],
  Array [
    "**",
    "*",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../*/x > no globstar 1`] = `
Array [
  Array [
    "*",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../x > defaults 1`] = `
Array [
  Array [
    "**",
    "..",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../x > defaults 2`] = `
Array [
  Array [
    "**",
    "..",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../x > multislash 1`] = `
Array [
  Array [
    "**",
    "..",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../x > multislash 2`] = `
Array [
  Array [
    "**",
    "..",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../x > no globstar 1`] = `
Array [
  Array [
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../x > no globstar 2`] = `
Array [
  Array [
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../x/* > defaults 1`] = `
Array [
  Array [
    "..",
    "x",
    "*",
  ],
  Array [
    "**",
    "x",
    "*",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../x/* > multislash 1`] = `
Array [
  Array [
    "..",
    "x",
    "*",
  ],
  Array [
    "**",
    "x",
    "*",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../x/* > no globstar 1`] = `
Array [
  Array [
    "x",
    "*",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../x/y > defaults 1`] = `
Array [
  Array [
    "..",
    "x",
    "y",
  ],
  Array [
    "**",
    "x",
    "y",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../x/y > multislash 1`] = `
Array [
  Array [
    "..",
    "x",
    "y",
  ],
  Array [
    "**",
    "x",
    "y",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../x/y > no globstar 1`] = `
Array [
  Array [
    "x",
    "y",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../x/y/z > defaults 1`] = `
Array [
  Array [
    "..",
    "x",
    "y",
    "z",
  ],
  Array [
    "**",
    "x",
    "y",
    "z",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../x/y/z > multislash 1`] = `
Array [
  Array [
    "..",
    "x",
    "y",
    "z",
  ],
  Array [
    "**",
    "x",
    "y",
    "z",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux **/../x/y/z > no globstar 1`] = `
Array [
  Array [
    "x",
    "y",
    "z",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux */../** > defaults 1`] = `
Array [
  Array [
    ".",
    "**",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux */../** > multislash 1`] = `
Array [
  Array [
    ".",
    "**",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux */../** > no globstar 1`] = `
Array [
  Array [
    "*",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux */../**/?/*/[a-z] > defaults 1`] = `
Array [
  Array [
    ".",
    "**",
    "?",
    "*",
    "[a-z]",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux */../**/?/*/[a-z] > multislash 1`] = `
Array [
  Array [
    ".",
    "**",
    "?",
    "*",
    "[a-z]",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux */../**/?/*/[a-z] > no globstar 1`] = `
Array [
  Array [
    "*",
    "?",
    "*",
    "[a-z]",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./ > defaults 1`] = `
Array [
  Array [
    ".",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./ > multislash 1`] = `
Array [
  Array [
    ".",
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./ > no globstar 1`] = `
Array [
  Array [
    ".",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./** > defaults 1`] = `
Array [
  Array [
    ".",
    "**",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./** > multislash 1`] = `
Array [
  Array [
    ".",
    "**",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./** > no globstar 1`] = `
Array [
  Array [
    ".",
    "*",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./**/ > defaults 1`] = `
Array [
  Array [
    ".",
    "**",
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./**/ > multislash 1`] = `
Array [
  Array [
    ".",
    "**",
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./**/ > no globstar 1`] = `
Array [
  Array [
    ".",
    "*",
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./**/../x > defaults 1`] = `
Array [
  Array [
    ".",
    "**",
    "..",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./**/../x > multislash 1`] = `
Array [
  Array [
    ".",
    "**",
    "..",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./**/../x > no globstar 1`] = `
Array [
  Array [
    ".",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./**/../x/y > defaults 1`] = `
Array [
  Array [
    ".",
    "..",
    "x",
    "y",
  ],
  Array [
    ".",
    "**",
    "x",
    "y",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./**/../x/y > multislash 1`] = `
Array [
  Array [
    ".",
    "..",
    "x",
    "y",
  ],
  Array [
    ".",
    "**",
    "x",
    "y",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./**/../x/y > no globstar 1`] = `
Array [
  Array [
    ".",
    "x",
    "y",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./**/x > defaults 1`] = `
Array [
  Array [
    ".",
    "**",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./**/x > multislash 1`] = `
Array [
  Array [
    ".",
    "**",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./**/x > no globstar 1`] = `
Array [
  Array [
    ".",
    "*",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./././. > defaults 1`] = `
Array [
  Array [
    ".",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./././. > multislash 1`] = `
Array [
  Array [
    ".",
    ".",
    ".",
    ".",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./././. > no globstar 1`] = `
Array [
  Array [
    ".",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./x/.././///.//./ > defaults 1`] = `
Array [
  Array [
    ".",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./x/.././///.//./ > multislash 1`] = `
Array [
  Array [
    ".",
    ".",
    "",
    "",
    "",
    ".",
    "",
    ".",
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux ./x/.././///.//./ > no globstar 1`] = `
Array [
  Array [
    ".",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux //host/share > defaults 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux //host/share > multislash 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux //host/share > no globstar 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux //host/share/ > defaults 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux //host/share/ > multislash 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux //host/share/ > no globstar 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux //host/share//s/o//me////.//path > defaults 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
    "s",
    "o",
    "me",
    "path",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux //host/share//s/o//me////.//path > multislash 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
    "",
    "s",
    "o",
    "",
    "me",
    "",
    "",
    "",
    ".",
    "",
    "path",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux //host/share//s/o//me////.//path > no globstar 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
    "s",
    "o",
    "me",
    "path",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/b/c/**///../x/y/z > defaults 1`] = `
Array [
  Array [
    "a",
    "b",
    "x",
    "y",
    "z",
  ],
  Array [
    "a",
    "b",
    "c",
    "**",
    "x",
    "y",
    "z",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/b/c/**///../x/y/z > multislash 1`] = `
Array [
  Array [
    "a",
    "b",
    "c",
    "**",
    "",
    "",
    "..",
    "x",
    "y",
    "z",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/b/c/**///../x/y/z > no globstar 1`] = `
Array [
  Array [
    "a",
    "b",
    "c",
    "x",
    "y",
    "z",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/b/c/..///d > defaults 1`] = `
Array [
  Array [
    "a",
    "b",
    "d",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/b/c/..///d > multislash 1`] = `
Array [
  Array [
    "a",
    "b",
    "",
    "",
    "d",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/b/c/..///d > no globstar 1`] = `
Array [
  Array [
    "a",
    "b",
    "d",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{**/,}*/b > defaults 1`] = `
Array [
  Array [
    "a",
    "**",
    "*",
    "b",
  ],
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{**/,}*/b > multislash 1`] = `
Array [
  Array [
    "a",
    "**",
    "*",
    "b",
  ],
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{**/,}*/b > no globstar 1`] = `
Array [
  Array [
    "a",
    "*",
    "*",
    "b",
  ],
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{**/,}b > defaults 1`] = `
Array [
  Array [
    "a",
    "**",
    "b",
  ],
  Array [
    "a",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{**/,}b > multislash 1`] = `
Array [
  Array [
    "a",
    "**",
    "b",
  ],
  Array [
    "a",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{**/,}b > no globstar 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
  Array [
    "a",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{*,.c}/b > defaults 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
  Array [
    "a",
    ".c",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{*,.c}/b > multislash 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
  Array [
    "a",
    ".c",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{*,.c}/b > no globstar 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
  Array [
    "a",
    ".c",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{*,c}/b > defaults 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{*,c}/b > multislash 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{*,c}/b > no globstar 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{*/b/d,c/b/*}/e > defaults 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
    "d",
    "e",
  ],
  Array [
    "a",
    "c",
    "b",
    "*",
    "e",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{*/b/d,c/b/*}/e > multislash 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
    "d",
    "e",
  ],
  Array [
    "a",
    "c",
    "b",
    "*",
    "e",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{*/b/d,c/b/*}/e > no globstar 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
    "d",
    "e",
  ],
  Array [
    "a",
    "c",
    "b",
    "*",
    "e",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{,**/}*/b > defaults 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
  Array [
    "a",
    "**",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{,**/}*/b > multislash 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
  Array [
    "a",
    "**",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{,**/}*/b > no globstar 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
  Array [
    "a",
    "*",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{,**/}b > defaults 1`] = `
Array [
  Array [
    "a",
    "b",
  ],
  Array [
    "a",
    "**",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{,**/}b > multislash 1`] = `
Array [
  Array [
    "a",
    "b",
  ],
  Array [
    "a",
    "**",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{,**/}b > no globstar 1`] = `
Array [
  Array [
    "a",
    "b",
  ],
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{.c,*}/b > defaults 1`] = `
Array [
  Array [
    "a",
    ".c",
    "b",
  ],
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{.c,*}/b > multislash 1`] = `
Array [
  Array [
    "a",
    ".c",
    "b",
  ],
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{.c,*}/b > no globstar 1`] = `
Array [
  Array [
    "a",
    ".c",
    "b",
  ],
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{c,*}/b > defaults 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{c,*}/b > multislash 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{c,*}/b > no globstar 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{c/b/*,*/b/d}/e > defaults 1`] = `
Array [
  Array [
    "a",
    "c",
    "b",
    "*",
    "e",
  ],
  Array [
    "a",
    "*",
    "b",
    "d",
    "e",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{c/b/*,*/b/d}/e > multislash 1`] = `
Array [
  Array [
    "a",
    "c",
    "b",
    "*",
    "e",
  ],
  Array [
    "a",
    "*",
    "b",
    "d",
    "e",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{c/b/*,*/b/d}/e > no globstar 1`] = `
Array [
  Array [
    "a",
    "c",
    "b",
    "*",
    "e",
  ],
  Array [
    "a",
    "*",
    "b",
    "d",
    "e",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{c/b/d,*/b/*}/e > defaults 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
    "*",
    "e",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{c/b/d,*/b/*}/e > multislash 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
    "*",
    "e",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux a/{c/b/d,*/b/*}/e > no globstar 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
    "*",
    "e",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux {a/**/b,a/b} > defaults 1`] = `
Array [
  Array [
    "a",
    "**",
    "b",
  ],
  Array [
    "a",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux {a/**/b,a/b} > multislash 1`] = `
Array [
  Array [
    "a",
    "**",
    "b",
  ],
  Array [
    "a",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization linux {a/**/b,a/b} > no globstar 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
  Array [
    "a",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ** > defaults 1`] = `
Array [
  Array [
    "**",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ** > multislash 1`] = `
Array [
  Array [
    "**",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ** > no globstar 1`] = `
Array [
  Array [
    "*",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/.. > defaults 1`] = `
Array [
  Array [
    "**",
    "..",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/.. > multislash 1`] = `
Array [
  Array [
    "**",
    "..",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/.. > no globstar 1`] = `
Array [
  Array [
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../ > defaults 1`] = `
Array [
  Array [
    "**",
    "..",
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../ > multislash 1`] = `
Array [
  Array [
    "**",
    "..",
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../ > no globstar 1`] = `
Array [
  Array [
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../*/x > defaults 1`] = `
Array [
  Array [
    "..",
    "*",
    "x",
  ],
  Array [
    "**",
    "*",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../*/x > multislash 1`] = `
Array [
  Array [
    "..",
    "*",
    "x",
  ],
  Array [
    "**",
    "*",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../*/x > no globstar 1`] = `
Array [
  Array [
    "*",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../x > defaults 1`] = `
Array [
  Array [
    "**",
    "..",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../x > defaults 2`] = `
Array [
  Array [
    "**",
    "..",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../x > multislash 1`] = `
Array [
  Array [
    "**",
    "..",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../x > multislash 2`] = `
Array [
  Array [
    "**",
    "..",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../x > no globstar 1`] = `
Array [
  Array [
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../x > no globstar 2`] = `
Array [
  Array [
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../x/* > defaults 1`] = `
Array [
  Array [
    "..",
    "x",
    "*",
  ],
  Array [
    "**",
    "x",
    "*",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../x/* > multislash 1`] = `
Array [
  Array [
    "..",
    "x",
    "*",
  ],
  Array [
    "**",
    "x",
    "*",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../x/* > no globstar 1`] = `
Array [
  Array [
    "x",
    "*",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../x/y > defaults 1`] = `
Array [
  Array [
    "..",
    "x",
    "y",
  ],
  Array [
    "**",
    "x",
    "y",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../x/y > multislash 1`] = `
Array [
  Array [
    "..",
    "x",
    "y",
  ],
  Array [
    "**",
    "x",
    "y",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../x/y > no globstar 1`] = `
Array [
  Array [
    "x",
    "y",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../x/y/z > defaults 1`] = `
Array [
  Array [
    "..",
    "x",
    "y",
    "z",
  ],
  Array [
    "**",
    "x",
    "y",
    "z",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../x/y/z > multislash 1`] = `
Array [
  Array [
    "..",
    "x",
    "y",
    "z",
  ],
  Array [
    "**",
    "x",
    "y",
    "z",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 **/../x/y/z > no globstar 1`] = `
Array [
  Array [
    "x",
    "y",
    "z",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 */../** > defaults 1`] = `
Array [
  Array [
    ".",
    "**",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 */../** > multislash 1`] = `
Array [
  Array [
    ".",
    "**",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 */../** > no globstar 1`] = `
Array [
  Array [
    "*",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 */../**/?/*/[a-z] > defaults 1`] = `
Array [
  Array [
    ".",
    "**",
    "?",
    "*",
    "[a-z]",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 */../**/?/*/[a-z] > multislash 1`] = `
Array [
  Array [
    ".",
    "**",
    "?",
    "*",
    "[a-z]",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 */../**/?/*/[a-z] > no globstar 1`] = `
Array [
  Array [
    "*",
    "?",
    "*",
    "[a-z]",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./ > defaults 1`] = `
Array [
  Array [
    ".",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./ > multislash 1`] = `
Array [
  Array [
    ".",
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./ > no globstar 1`] = `
Array [
  Array [
    ".",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./** > defaults 1`] = `
Array [
  Array [
    ".",
    "**",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./** > multislash 1`] = `
Array [
  Array [
    ".",
    "**",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./** > no globstar 1`] = `
Array [
  Array [
    ".",
    "*",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./**/ > defaults 1`] = `
Array [
  Array [
    ".",
    "**",
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./**/ > multislash 1`] = `
Array [
  Array [
    ".",
    "**",
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./**/ > no globstar 1`] = `
Array [
  Array [
    ".",
    "*",
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./**/../x > defaults 1`] = `
Array [
  Array [
    ".",
    "**",
    "..",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./**/../x > multislash 1`] = `
Array [
  Array [
    ".",
    "**",
    "..",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./**/../x > no globstar 1`] = `
Array [
  Array [
    ".",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./**/../x/y > defaults 1`] = `
Array [
  Array [
    ".",
    "..",
    "x",
    "y",
  ],
  Array [
    ".",
    "**",
    "x",
    "y",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./**/../x/y > multislash 1`] = `
Array [
  Array [
    ".",
    "..",
    "x",
    "y",
  ],
  Array [
    ".",
    "**",
    "x",
    "y",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./**/../x/y > no globstar 1`] = `
Array [
  Array [
    ".",
    "x",
    "y",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./**/x > defaults 1`] = `
Array [
  Array [
    ".",
    "**",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./**/x > multislash 1`] = `
Array [
  Array [
    ".",
    "**",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./**/x > no globstar 1`] = `
Array [
  Array [
    ".",
    "*",
    "x",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./././. > defaults 1`] = `
Array [
  Array [
    ".",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./././. > multislash 1`] = `
Array [
  Array [
    ".",
    ".",
    ".",
    ".",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./././. > no globstar 1`] = `
Array [
  Array [
    ".",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./x/.././///.//./ > defaults 1`] = `
Array [
  Array [
    ".",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./x/.././///.//./ > multislash 1`] = `
Array [
  Array [
    ".",
    ".",
    "",
    "",
    "",
    ".",
    "",
    ".",
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 ./x/.././///.//./ > no globstar 1`] = `
Array [
  Array [
    ".",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 //host/share > defaults 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 //host/share > multislash 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 //host/share > no globstar 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 //host/share/ > defaults 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 //host/share/ > multislash 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 //host/share/ > no globstar 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
    "",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 //host/share//s/o//me////.//path > defaults 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
    "s",
    "o",
    "me",
    "path",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 //host/share//s/o//me////.//path > multislash 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
    "",
    "s",
    "o",
    "",
    "me",
    "",
    "",
    "",
    ".",
    "",
    "path",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 //host/share//s/o//me////.//path > no globstar 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
    "s",
    "o",
    "me",
    "path",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/b/c/**///../x/y/z > defaults 1`] = `
Array [
  Array [
    "a",
    "b",
    "x",
    "y",
    "z",
  ],
  Array [
    "a",
    "b",
    "c",
    "**",
    "x",
    "y",
    "z",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/b/c/**///../x/y/z > multislash 1`] = `
Array [
  Array [
    "a",
    "b",
    "c",
    "**",
    "",
    "",
    "..",
    "x",
    "y",
    "z",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/b/c/**///../x/y/z > no globstar 1`] = `
Array [
  Array [
    "a",
    "b",
    "c",
    "x",
    "y",
    "z",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/b/c/..///d > defaults 1`] = `
Array [
  Array [
    "a",
    "b",
    "d",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/b/c/..///d > multislash 1`] = `
Array [
  Array [
    "a",
    "b",
    "",
    "",
    "d",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/b/c/..///d > no globstar 1`] = `
Array [
  Array [
    "a",
    "b",
    "d",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{**/,}*/b > defaults 1`] = `
Array [
  Array [
    "a",
    "**",
    "*",
    "b",
  ],
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{**/,}*/b > multislash 1`] = `
Array [
  Array [
    "a",
    "**",
    "*",
    "b",
  ],
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{**/,}*/b > no globstar 1`] = `
Array [
  Array [
    "a",
    "*",
    "*",
    "b",
  ],
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{**/,}b > defaults 1`] = `
Array [
  Array [
    "a",
    "**",
    "b",
  ],
  Array [
    "a",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{**/,}b > multislash 1`] = `
Array [
  Array [
    "a",
    "**",
    "b",
  ],
  Array [
    "a",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{**/,}b > no globstar 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
  Array [
    "a",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{*,.c}/b > defaults 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
  Array [
    "a",
    ".c",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{*,.c}/b > multislash 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
  Array [
    "a",
    ".c",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{*,.c}/b > no globstar 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
  Array [
    "a",
    ".c",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{*,c}/b > defaults 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{*,c}/b > multislash 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{*,c}/b > no globstar 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{*/b/d,c/b/*}/e > defaults 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
    "d",
    "e",
  ],
  Array [
    "a",
    "c",
    "b",
    "*",
    "e",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{*/b/d,c/b/*}/e > multislash 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
    "d",
    "e",
  ],
  Array [
    "a",
    "c",
    "b",
    "*",
    "e",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{*/b/d,c/b/*}/e > no globstar 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
    "d",
    "e",
  ],
  Array [
    "a",
    "c",
    "b",
    "*",
    "e",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{,**/}*/b > defaults 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
  Array [
    "a",
    "**",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{,**/}*/b > multislash 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
  Array [
    "a",
    "**",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{,**/}*/b > no globstar 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
  Array [
    "a",
    "*",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{,**/}b > defaults 1`] = `
Array [
  Array [
    "a",
    "b",
  ],
  Array [
    "a",
    "**",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{,**/}b > multislash 1`] = `
Array [
  Array [
    "a",
    "b",
  ],
  Array [
    "a",
    "**",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{,**/}b > no globstar 1`] = `
Array [
  Array [
    "a",
    "b",
  ],
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{.c,*}/b > defaults 1`] = `
Array [
  Array [
    "a",
    ".c",
    "b",
  ],
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{.c,*}/b > multislash 1`] = `
Array [
  Array [
    "a",
    ".c",
    "b",
  ],
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{.c,*}/b > no globstar 1`] = `
Array [
  Array [
    "a",
    ".c",
    "b",
  ],
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{c,*}/b > defaults 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{c,*}/b > multislash 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{c,*}/b > no globstar 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{c/b/*,*/b/d}/e > defaults 1`] = `
Array [
  Array [
    "a",
    "c",
    "b",
    "*",
    "e",
  ],
  Array [
    "a",
    "*",
    "b",
    "d",
    "e",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{c/b/*,*/b/d}/e > multislash 1`] = `
Array [
  Array [
    "a",
    "c",
    "b",
    "*",
    "e",
  ],
  Array [
    "a",
    "*",
    "b",
    "d",
    "e",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{c/b/*,*/b/d}/e > no globstar 1`] = `
Array [
  Array [
    "a",
    "c",
    "b",
    "*",
    "e",
  ],
  Array [
    "a",
    "*",
    "b",
    "d",
    "e",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{c/b/d,*/b/*}/e > defaults 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
    "*",
    "e",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{c/b/d,*/b/*}/e > multislash 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
    "*",
    "e",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 a/{c/b/d,*/b/*}/e > no globstar 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
    "*",
    "e",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 {a/**/b,a/b} > defaults 1`] = `
Array [
  Array [
    "a",
    "**",
    "b",
  ],
  Array [
    "a",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 {a/**/b,a/b} > multislash 1`] = `
Array [
  Array [
    "a",
    "**",
    "b",
  ],
  Array [
    "a",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP explicit pattern coalescing and optimization win32 {a/**/b,a/b} > no globstar 1`] = `
Array [
  Array [
    "a",
    "*",
    "b",
  ],
  Array [
    "a",
    "b",
  ],
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux  > default 1`] = `
Array [
  "",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux  > multislash 1`] = `
Array [
  "",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux . > default 1`] = `
Array [
  ".",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux . > multislash 1`] = `
Array [
  ".",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux ./ > default 1`] = `
Array [
  ".",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux ./ > multislash 1`] = `
Array [
  ".",
  "",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux ./* > default 1`] = `
Array [
  ".",
  "*",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux ./* > multislash 1`] = `
Array [
  ".",
  "*",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux ./. > default 1`] = `
Array [
  ".",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux ./. > multislash 1`] = `
Array [
  ".",
  ".",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux ././. > default 1`] = `
Array [
  ".",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux ././. > multislash 1`] = `
Array [
  ".",
  ".",
  ".",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux .////././//././. > default 1`] = `
Array [
  ".",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux .////././//././. > multislash 1`] = `
Array [
  ".",
  "",
  "",
  "",
  ".",
  ".",
  "",
  "",
  ".",
  ".",
  ".",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux / > default 1`] = `
Array [
  "",
  "",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux / > multislash 1`] = `
Array [
  "",
  "",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux //unc/share///*/../x > default 1`] = `
Array [
  "",
  "unc",
  "share",
  "x",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux //unc/share///*/../x > multislash 1`] = `
Array [
  "",
  "",
  "unc",
  "share",
  "",
  "",
  "x",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux a/../b > default 1`] = `
Array [
  "b",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux a/../b > multislash 1`] = `
Array [
  "b",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux x/.. > default 1`] = `
Array [
  "",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well linux x/.. > multislash 1`] = `
Array [
  "",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32  > default 1`] = `
Array [
  "",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32  > multislash 1`] = `
Array [
  "",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32 . > default 1`] = `
Array [
  ".",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32 . > multislash 1`] = `
Array [
  ".",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32 ./ > default 1`] = `
Array [
  ".",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32 ./ > multislash 1`] = `
Array [
  ".",
  "",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32 ./* > default 1`] = `
Array [
  ".",
  "*",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32 ./* > multislash 1`] = `
Array [
  ".",
  "*",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32 ./. > default 1`] = `
Array [
  ".",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32 ./. > multislash 1`] = `
Array [
  ".",
  ".",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32 ././. > default 1`] = `
Array [
  ".",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32 ././. > multislash 1`] = `
Array [
  ".",
  ".",
  ".",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32 .////././//././. > default 1`] = `
Array [
  ".",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32 .////././//././. > multislash 1`] = `
Array [
  ".",
  "",
  "",
  "",
  ".",
  ".",
  "",
  "",
  ".",
  ".",
  ".",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32 / > default 1`] = `
Array [
  "",
  "",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32 / > multislash 1`] = `
Array [
  "",
  "",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32 //unc/share///*/../x > default 1`] = `
Array [
  "",
  "",
  "unc",
  "share",
  "x",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32 //unc/share///*/../x > multislash 1`] = `
Array [
  "",
  "",
  "unc",
  "share",
  "",
  "",
  "x",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32 a/../b > default 1`] = `
Array [
  "b",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32 a/../b > multislash 1`] = `
Array [
  "b",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32 x/.. > default 1`] = `
Array [
  "",
]
`

exports[`test/optimization-level-2.ts TAP optimize the file as well win32 x/.. > multislash 1`] = `
Array [
  "",
]
`
minimatch-9.0.3/tap-snapshots/test/windows-no-magic-root.ts.test.cjs000066400000000000000000000065561445157213200255460ustar00rootroot00000000000000/* IMPORTANT
 * This snapshot file is auto-generated, but designed for humans.
 * It should be checked into source control and tracked carefully.
 * Re-generate by setting TAP_SNAPSHOT=1 and running tests.
 * Make sure to inspect the output below.  Do not ignore changes!
 */
'use strict'
exports[`test/windows-no-magic-root.ts TAP no magic the root //?/d: > default to true 1`] = `
Array [
  Array [
    "",
    "",
    "?",
    "d:",
  ],
]
`

exports[`test/windows-no-magic-root.ts TAP no magic the root //?/d: > set explicitly false 1`] = `
Array [
  Array [
    "",
    "",
    /^(?!\\.)[^/]$/i,
    /^d:$/i,
  ],
]
`

exports[`test/windows-no-magic-root.ts TAP no magic the root //?/d:/ > default to true 1`] = `
Array [
  Array [
    "",
    "",
    "?",
    "d:",
    "",
  ],
]
`

exports[`test/windows-no-magic-root.ts TAP no magic the root //?/d:/ > set explicitly false 1`] = `
Array [
  Array [
    "",
    "",
    /^(?!\\.)[^/]$/i,
    /^d:$/i,
    "",
  ],
]
`

exports[`test/windows-no-magic-root.ts TAP no magic the root //?/d:/x/y/z > default to true 1`] = `
Array [
  Array [
    "",
    "",
    "?",
    "d:",
    /^x$/i,
    /^y$/i,
    /^z$/i,
  ],
]
`

exports[`test/windows-no-magic-root.ts TAP no magic the root //?/d:/x/y/z > set explicitly false 1`] = `
Array [
  Array [
    "",
    "",
    /^(?!\\.)[^/]$/i,
    /^d:$/i,
    /^x$/i,
    /^y$/i,
    /^z$/i,
  ],
]
`

exports[`test/windows-no-magic-root.ts TAP no magic the root //host/share > default to true 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
  ],
]
`

exports[`test/windows-no-magic-root.ts TAP no magic the root //host/share > set explicitly false 1`] = `
Array [
  Array [
    "",
    "",
    /^host$/i,
    /^share$/i,
  ],
]
`

exports[`test/windows-no-magic-root.ts TAP no magic the root //host/share/ > default to true 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
    "",
  ],
]
`

exports[`test/windows-no-magic-root.ts TAP no magic the root //host/share/ > set explicitly false 1`] = `
Array [
  Array [
    "",
    "",
    /^host$/i,
    /^share$/i,
    "",
  ],
]
`

exports[`test/windows-no-magic-root.ts TAP no magic the root //host/share/x/y/z > default to true 1`] = `
Array [
  Array [
    "",
    "",
    "host",
    "share",
    /^x$/i,
    /^y$/i,
    /^z$/i,
  ],
]
`

exports[`test/windows-no-magic-root.ts TAP no magic the root //host/share/x/y/z > set explicitly false 1`] = `
Array [
  Array [
    "",
    "",
    /^host$/i,
    /^share$/i,
    /^x$/i,
    /^y$/i,
    /^z$/i,
  ],
]
`

exports[`test/windows-no-magic-root.ts TAP no magic the root d: > default to true 1`] = `
Array [
  Array [
    "d:",
  ],
]
`

exports[`test/windows-no-magic-root.ts TAP no magic the root d: > set explicitly false 1`] = `
Array [
  Array [
    /^d:$/i,
  ],
]
`

exports[`test/windows-no-magic-root.ts TAP no magic the root d:/ > default to true 1`] = `
Array [
  Array [
    "d:",
    "",
  ],
]
`

exports[`test/windows-no-magic-root.ts TAP no magic the root d:/ > set explicitly false 1`] = `
Array [
  Array [
    /^d:$/i,
    "",
  ],
]
`

exports[`test/windows-no-magic-root.ts TAP no magic the root d:/x/y/z > default to true 1`] = `
Array [
  Array [
    "d:",
    /^x$/i,
    /^y$/i,
    /^z$/i,
  ],
]
`

exports[`test/windows-no-magic-root.ts TAP no magic the root d:/x/y/z > set explicitly false 1`] = `
Array [
  Array [
    /^d:$/i,
    /^x$/i,
    /^y$/i,
    /^z$/i,
  ],
]
`
minimatch-9.0.3/test/000077500000000000000000000000001445157213200144575ustar00rootroot00000000000000minimatch-9.0.3/test/basic.js000066400000000000000000000165651445157213200161130ustar00rootroot00000000000000// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test
//
// TODO: Some of these tests do very bad things with backslashes, and will
// most likely fail badly on windows.  They should probably be skipped.

const t = require('tap')
const globalBefore = Object.keys(global)
const { minimatch } = require('../')
const patterns = require('./patterns.js')

const mm = process.env._MINIMATCH_TEST_OPTIMIZATION_LEVEL
  ? minimatch.defaults({
      optimizationLevel: +process.env._MINIMATCH_TEST_OPTIMIZATION_LEVEL,
    })
  : minimatch

const optimizationLevel = +(process.env._MINIMATCH_TEST_OPTIMIZATION_LEVEL || 1)

t.test('basic tests', function (t) {
  var start = Date.now()

  // [ pattern, [matches], MM opts, files, TAP opts]
  patterns.forEach(function (c) {
    if (typeof c === 'function') return c()
    if (typeof c === 'string') return t.comment(c)

    var pattern = c[0],
      expect = c[1].sort(alpha),
      options = c[2] || {},
      f = c[3] || patterns.files,
      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)
    t.equal(String(r), String(r2), 'same results from both makeRe fns')
    tapOpts.re = r
    tapOpts.files = JSON.stringify(f)
    tapOpts.glob = pattern
    tapOpts.set = m.set
    tapOpts.globSet = m.globSet
    tapOpts.negated = m.negate
    const o = Object.entries(options)
      .filter(([_, v]) => v)
      .map(([k]) => k)
    if (o.length) {
      tapOpts.flags = o
    }

    var actual = mm.match(f, pattern, options)
    actual.sort(alpha)

    if (optimizationLevel > 0) {
      t.same(
        actual,
        expect,
        JSON.stringify(pattern) + ' ' + JSON.stringify(expect),
        tapOpts
      )
    } else {
      // optimization level 0 just doesn't match a lot of stuff
      // quite the same way, so handle that with snapshots.
      t.matchSnapshot(
        actual,
        JSON.stringify(pattern) + ' ' + JSON.stringify(expect),
        tapOpts
      )
    }

    t.matchSnapshot(tapOpts.re, 'makeRe ' + pattern, tapOpts)
  })

  t.comment('time=' + (Date.now() - start) + 'ms')
  t.end()
})

t.test('global leak test', function (t) {
  var globalAfter = Object.keys(global).filter(function (k) {
    return k !== '__coverage__' && k !== '__core-js_shared__'
  })
  t.same(globalAfter, globalBefore, 'no new globals, please')
  t.end()
})

t.test('invalid patterns', t => {
  const toolong = 'x'.repeat(64 * 1024) + 'y'
  const expectTooLong = { message: 'pattern is too long' }
  t.throws(() => mm.braceExpand(toolong), expectTooLong)
  t.throws(() => new mm.Minimatch(toolong), expectTooLong)
  t.throws(() => mm('xy', toolong), expectTooLong)
  t.throws(() => mm.match(['xy'], toolong), expectTooLong)

  const invalid = { message: 'invalid pattern' }
  const invalids = [null, 1234, NaN, Infinity, undefined, { a: 1 }, true, false]
  for (const i of invalids) {
    t.throws(() => mm.braceExpand(i), invalid)
    t.throws(() => new mm.Minimatch(i), invalid)
    t.throws(() => mm('xy', i), invalid)
    t.throws(() => mm.match(['xy'], i), invalid)
  }

  t.end()
})

t.test('nocomment matches nothing', t => {
  t.equal(mm('#comment', '#comment', { nocomment: false }), false)
  t.equal(mm('#comment', '#comment', { nocomment: true }), true)
  t.end()
})

t.test('filter function', t => {
  t.same(['a', 'b', 'c'].filter(mm.filter('@(a|b)')), ['a', 'b'])
  t.end()
})

t.test('whitespace handling', t => {
  t.equal(mm('x/y', 'y'), false)
  t.equal(mm('x/y', 'y', { matchBase: true }), true)
  t.equal(mm('x/ ', ' '), false)
  t.equal(mm('x/ ', ' ', { matchBase: true }), true)
  t.equal(mm('x/', ''), false)
  t.equal(mm('x/', '', { matchBase: true }), false)
  t.equal(mm('', ''), true)
  t.equal(mm(' ', ''), false)
  t.equal(mm('', ' '), false)
  t.equal(mm(' ', ' '), true)
  t.end()
})

t.test('mm debug', t => {
  const { error } = console
  t.teardown(() => (console.error = error))
  const errs = []
  console.error = (...msg) => errs.push(msg)
  t.equal(mm('a/b/c', 'a/**/@(b|c)/**', { debug: true }), true)
  t.not(errs.length, 0)
  t.end()
})

t.test('makeRe repeated', t => {
  const mmRE = mm.makeRe('a/*/*')
  const m = new mm.Minimatch('a/*/*')
  const mRE = m.makeRe()
  const mRE2 = m.makeRe()
  t.equal(mRE, mRE2)
  t.same(mmRE, mRE)
  t.end()
})

t.test('in noglobstar mode, ** is equivalent to *', t => {
  const re2s = mm.makeRe('**', { noglobstar: true })
  const re1s = mm.makeRe('*', { noglobstar: true })
  t.same(re2s, re1s)
  t.end()
})

t.test('flipNegate', t => {
  t.equal(mm('x', '!x', { flipNegate: true }), true)
  t.equal(mm('x', '!!x', { flipNegate: true }), true)
  t.equal(mm('x', 'x', { flipNegate: true }), true)

  t.equal(mm('x', '!y', { flipNegate: true }), false)
  t.equal(mm('x', '!!y', { flipNegate: true }), false)
  t.equal(mm('x', 'y', { flipNegate: true }), false)
  t.end()
})

function alpha(a, b) {
  return a > b ? 1 : -1
}

t.test('GLOBSTAR marker exposed', t => {
  t.match(mm.GLOBSTAR, Symbol)
  t.end()
})

t.test('globstar re matches zero or more path portions', t => {
  const cases = {
    'path/**/*.html': {
      'path/x.html': true,
      'path/x/y.html': true,
      'path/x/y/z.html': true,
      'path//x.html': true,
      'path//x//y.html': true,
      'path//x//y//z.html': true,
      'path.html': false,
      'pathx.html': false,
      'pathx/y.html': false,
      'pathx/y/z.html': false,
    },
    'path/**/**/*.html': {
      'path/x.html': true,
      'path/x/y.html': true,
      'path/x/y/z.html': true,
      'path//x.html': true,
      'path//x//y.html': true,
      'path//x//y//z.html': true,
      'path.html': false,
      'pathx.html': false,
      'pathx/y.html': false,
      'pathx/y/z.html': false,
    },
    '**/*.html': {
      'path/x.html': true,
      'path/x/y.html': true,
      'path/x/y/z.html': true,
      'path//x.html': true,
      'path//x//y.html': true,
      'path//x//y//z.html': true,
      'path.html': true,
      'pathx.html': true,
      'pathx/y.html': true,
      'pathx/y/z.html': true,
      '/z.html': true,
    },
    '**/**/*.html': {
      'path/x.html': true,
      'path/x/y.html': true,
      'path/x/y/z.html': true,
      'path//x.html': true,
      'path//x//y.html': true,
      'path//x//y//z.html': true,
      'path.html': true,
      'pathx.html': true,
      'pathx/y.html': true,
      'pathx/y/z.html': true,
      '/z.html': true,
    },
  }
  for (const [pattern, set] of Object.entries(cases)) {
    t.test(pattern, t => {
      const re = mm.makeRe(pattern)
      for (const [path, res] of Object.entries(set)) {
        t.equal(re.test(path), res, path, { re, pattern })
      }
      t.end()
    })
  }
  t.end()
})

t.test('do not create empty pattern via ..', t => {
  const m = new mm.Minimatch('*/..')
  t.equal(m.globParts.length, 1)
  t.not(m.globParts[0].length, 0)
  t.end()
})

t.test('option to only nocase regexps, not strings', t => {
  t.match(
    new mm.Minimatch('test/*.js', {
      nocase: true,
      nocaseMagicOnly: true,
    }).set,
    [['test', /^(?!\.)[^/]*?\.js$/i]]
  )
  t.match(
    new mm.Minimatch('test/*.js', {
      nocase: true,
    }).set,
    [[/^test$/i, /^(?!\.)[^/]*?\.js$/i]]
  )
  t.end()
})
minimatch-9.0.3/test/brace-expand.js000066400000000000000000000021761445157213200173540ustar00rootroot00000000000000var tap = require('tap')
const { minimatch } = require('../')

tap.test('brace expansion', function (t) {
  // [ pattern, [expanded] ]
  var patterns = [
    [
      'a{b,c{d,e},{f,g}h}x{y,z}',
      [
        'abxy',
        'abxz',
        'acdxy',
        'acdxz',
        'acexy',
        'acexz',
        'afhxy',
        'afhxz',
        'aghxy',
        'aghxz',
      ],
    ],
    ['a{1..5}b', ['a1b', 'a2b', 'a3b', 'a4b', 'a5b']],
    ['a{b}c', ['a{b}c']],
    ['a{00..05}b', ['a00b', 'a01b', 'a02b', 'a03b', 'a04b', 'a05b']],
    ['z{a,b},c}d', ['za,c}d', 'zb,c}d']],
    ['z{a,b{,c}d', ['z{a,bd', 'z{a,bcd']],
    ['a{b{c{d,e}f}g}h', ['a{b{cdf}g}h', 'a{b{cef}g}h']],
    [
      'a{b{c{d,e}f{x,y}}g}h',
      ['a{b{cdfx}g}h', 'a{b{cdfy}g}h', 'a{b{cefx}g}h', 'a{b{cefy}g}h'],
    ],
    [
      'a{b{c{d,e}f{x,y{}g}h',
      ['a{b{cdfxh', 'a{b{cdfy{}gh', 'a{b{cefxh', 'a{b{cefy{}gh'],
    ],
    ['{a,b}${c}${d}', ['a${c}${d}', 'b${c}${d}']],
    ['${a}${b}{c,d}', ['${a}${b}c', '${a}${b}d']],
  ]
  patterns.forEach(function (tc) {
    var p = tc[0],
      expect = tc[1]
    t.same(minimatch.braceExpand(p), expect, p)
  })
  t.end()
})
minimatch-9.0.3/test/class-edge-cases.js000066400000000000000000000016721445157213200201260ustar00rootroot00000000000000const t = require('tap')
const { minimatch } = require('../')

const files = ['a[]b', '[b-a]x', 'a]b', 'a[]]b', 'a[[]b']

const patterns = [
  '\\[b-a]*',
  '[b-a\\]*',
  'a[]*',
  '[b-a]*',
  'a[]]*',
  'a[[]*',
  'a[[]]*',
]

// uncomment and pipe stderr into a bash script to test bash behavior
// console.error('mkdir x; cd x; shopt -s nullglob')
// for (const f of files) {
//   console.error(`touch '${JSON.stringify(f).slice(1, -1)}'`)
// }
//
// console.error('ls -laF')
// for (const p of patterns) {
//   console.error(`echo PATTERN='${p}'`)
//   console.error(`for i in ${p}; do echo "$i"; done`)
// }
//
// console.error('cd ..; rm -rf x')

const matches = {}

for (const pattern of patterns) {
  for (const file of files) {
    if (minimatch(file, pattern)) {
      matches[pattern] = matches[pattern] || []
      matches[pattern].push(file)
    }
  }
}

t.comment({ files, patterns, matches })
t.matchSnapshot({ files, patterns, matches })
minimatch-9.0.3/test/consecutive-glob-stars.js000066400000000000000000000006351445157213200214230ustar00rootroot00000000000000const t = require('tap')
const { Minimatch, GLOBSTAR } = require('../')

const patterns = []
for (const a of ['**', '**/**', '**/**/**']) {
  for (const b of ['**', '**/**', '**/**/**']) {
    for (const c of ['**', '**/**', '**/**/**']) {
      patterns.push(`x/${a}/y/${b}/z/${c}`)
    }
  }
}

for (const m of patterns.map(p => new Minimatch(p))) {
  t.same(m.globParts, [['x', '**', 'y', '**', 'z', '**']])
}
minimatch-9.0.3/test/defaults.js000066400000000000000000000062651445157213200166350ustar00rootroot00000000000000// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test
//
// TODO: Some of these tests do very bad things with backslashes, and will
// most likely fail badly on windows.  They should probably be skipped.

const t = require('tap')
const globalBefore = Object.keys(global)
const { minimatch: mm } = require('../')

const patterns = require('./patterns.js')

t.test('basic tests', function (t) {
  var start = Date.now()

  // [ pattern, [matches], MM opts, files, TAP opts]
  patterns.forEach(function (c) {
    if (typeof c === 'function') return c()
    if (typeof c === 'string') return t.comment(c)

    var pattern = c[0]
    var expect = c[1].sort(alpha)
    var options = c[2]
    var f = c[3] || patterns.files
    var tapOpts = c[4] || {}

    // options.debug = true
    var Class = mm.defaults(options).Minimatch
    var m = new Class(pattern, {})
    var r = m.makeRe()
    tapOpts.re = String(r) || JSON.stringify(r)
    tapOpts.files = JSON.stringify(f)
    tapOpts.pattern = pattern
    tapOpts.set = m.set
    tapOpts.negated = m.negate

    var actual = mm.match(f, pattern, options)
    actual.sort(alpha)

    t.same(
      actual,
      expect,
      JSON.stringify(pattern) + ' ' + JSON.stringify(expect),
      tapOpts
    )
  })

  t.comment('time=' + (Date.now() - start) + 'ms')
  t.end()
})

t.test('global leak test', function (t) {
  var globalAfter = Object.keys(global).filter(function (k) {
    return k !== '__coverage__'
  })
  t.same(globalAfter, globalBefore, 'no new globals, please')
  t.end()
})

t.test('empty defaults obj returns original ctor', t => {
  for (const empty of [{}, undefined]) {
    const defmm = mm.defaults(empty)
    t.equal(defmm, mm)
    const Class = mm.Minimatch.defaults({})
    t.equal(Class, mm.Minimatch)
  }
  t.end()
})

t.test('call defaults mm function', t => {
  const defmm = mm.defaults({ nocomment: true })
  t.equal(mm('# nocomment', '# nocomment'), false)
  t.equal(defmm('# nocomment', '# nocomment'), true)
  t.equal(defmm('# nocomment', '# nocomment', { nocomment: false }), false)
  const undef = defmm.defaults({ nocomment: false })
  t.equal(undef('# nocomment', '# nocomment'), false)
  const unm = new undef.Minimatch('asdf')
  t.same(unm.options, { nocomment: false })
  const UndefClass = defmm.Minimatch.defaults({ nocomment: false })
  const unmm = new UndefClass('asfd')
  t.same(unmm.options, { nocomment: false })

  const f = defmm.filter('#nc')
  t.same(['x', '#nc', 'y'].filter(f), ['#nc'])
  t.same(defmm.match(['x', '#nc', 'y'], '#nc'), ['#nc'])
  t.same(defmm.braceExpand('# {a,b}'), ['# a', '# b'])
  t.same(defmm.makeRe('# {a,b}'), /^(?:\#\ a|\#\ b)$/)
  t.end()
})

t.test('defaults applied to minimatch.escape()', t => {
  const { escape, unescape } = mm
  const { escape: escapew, unescape: unescapew } = mm.defaults({
    windowsPathsNoEscape: true,
  })
  const { escape: escapep, unescape: unescapep } = mm.defaults({
    windowsPathsNoEscape: false,
  })
  t.equal(escape('*'), '\\*')
  t.equal(unescape(escape('*')), '*')
  t.equal(escapew('*'), '[*]')
  t.equal(unescapew(escapew('*')), '*')
  t.equal(escapep('*'), '\\*')
  t.equal(unescapep(escapep('*')), '*')
  t.end()
})

function alpha(a, b) {
  return a > b ? 1 : -1
}
minimatch-9.0.3/test/escape-has-magic.js000066400000000000000000000023321445157213200201040ustar00rootroot00000000000000const t = require('tap')
const { unescape, escape, Minimatch } = require('../')
const patterns = require('./patterns.js')

for (const p of patterns) {
  if (!Array.isArray(p) || typeof p[0] !== 'string') continue
  const pattern = p[0]
  const opts = p[2] || {}
  const escapep = escape(pattern)
  const escapew = escape(pattern, { windowsPathsNoEscape: true })
  t.equal(unescape(escapep), pattern, 'posix unescape(' + pattern + ')')
  t.equal(
    unescape(escapew, {
      windowsPathsNoEscape: true,
    }),
    pattern,
    'win32 unescape(' + pattern + ')'
  )
  const mmp = new Minimatch(escapep, { ...opts, nocaseMagicOnly: true })
  const mmw = new Minimatch(escapew, {
    ...opts,
    platform: 'win32',
    windowsPathsNoEscape: true,
    nocaseMagicOnly: true,
  })
  t.equal(mmp.hasMagic(), false, 'posix escape(' + pattern + ')')
  t.equal(mmw.hasMagic(), false, 'win32 escape(' + pattern + ')')
  const maybeMagic = new Minimatch(pattern, opts)
  t.matchSnapshot([maybeMagic.set, maybeMagic.hasMagic()], pattern)
}

// edge case, [\\] should be unescaped as [], not \\
t.equal(unescape('[\\]'), '[]')

t.equal(new Minimatch('{a,b}').hasMagic(), false)
t.equal(new Minimatch('{a,b}', { magicalBraces: true }).hasMagic(), true)
minimatch-9.0.3/test/escaping.js000066400000000000000000000026051445157213200166110ustar00rootroot00000000000000var tap = require('tap')
const { minimatch } = require('../')

// test all characters with codes in range [mincc,maxcc]
var mincc = 0x20
var maxcc = 0xff
// except listed in exceptions array
var exceptions = ['/', '\\']
var pre = 'x' // prepended to the testable character
var post = 'y' // appended to the testable character

function escapeChar(cc) {
  return '"\\u' + ('000' + cc.toString(16).toUpperCase()).slice(-4) + '"'
}

tap.test('escaping tests', function (t) {
  for (var cc = mincc; cc <= maxcc; ++cc) {
    var cp = String.fromCharCode(cc)
    if (exceptions.indexOf(cp) === -1) {
      var str = pre + cp + post
      var pattern = '*\\' + cp + '*'
      var msg =
        JSON.stringify(str) +
        ' (for codepoint ' +
        escapeChar(cc) +
        ')' +
        ' should match pattern ' +
        JSON.stringify(pattern)
      t.equal(minimatch(str, pattern), true, msg)
    }
  }
  t.end()
})

tap.test('class escaping tests', function (t) {
  for (var cc = mincc; cc <= maxcc; ++cc) {
    var cp = String.fromCharCode(cc)
    if (exceptions.indexOf(cp) === -1) {
      var str = pre + cp + post
      var pattern = '*[\\' + cp + ']*'
      var msg =
        JSON.stringify(str) +
        ' (for codepoint ' +
        escapeChar(cc) +
        ')' +
        ' should match pattern ' +
        JSON.stringify(pattern)
      t.equal(minimatch(str, pattern), true, msg)
    }
  }
  t.end()
})
minimatch-9.0.3/test/extglob-ending-with-state-char.js000066400000000000000000000003171445157213200227260ustar00rootroot00000000000000var test = require('tap').test
const { minimatch } = require('../')

test('extglob ending with statechar', function (t) {
  t.notOk(minimatch('ax', 'a?(b*)'))
  t.ok(minimatch('ax', '?(a*|b)'))
  t.end()
})
minimatch-9.0.3/test/extglob-unfinished.js000066400000000000000000000004731445157213200206170ustar00rootroot00000000000000var t = require('tap')
const mm = require('../').minimatch

var types = '!?+*@'.split('')

t.plan(types.length)
types.forEach(function (type) {
  t.test(type, function (t) {
    t.plan(2)
    t.ok(mm(type + '(a|B', type + '(a|B', { nonegate: true }))
    t.notOk(mm(type + '(a|B', 'B', { nonegate: true }))
  })
})
minimatch-9.0.3/test/negative-extglob-anchoring.js000066400000000000000000000004571445157213200222350ustar00rootroot00000000000000const t = require('tap')
const mm = require('../').minimatch
const pattern = 'a/b/*/!(bar)/*'
const nope = 'a/b/c/bar/x'
const yup = 'a/b/c/baz/x'
t.equal(mm(nope, pattern), false)
t.equal(mm.makeRe(pattern).test(nope), false)
t.equal(mm(yup, pattern), true)
t.equal(mm.makeRe(pattern).test(yup), true)
minimatch-9.0.3/test/nocase-magic.js000066400000000000000000000004121445157213200173400ustar00rootroot00000000000000const t = require('tap')
const { Minimatch } = require('../')

const nomagic = '../1/2/3'
const yesmagic = '../x'

t.same(new Minimatch(nomagic, { nocase: true }).set, [['..', '1', '2', '3']])

t.same(new Minimatch(yesmagic, { nocase: true }).set, [['..', /^x$/i]])
minimatch-9.0.3/test/optimization-level-0.ts000066400000000000000000000002261445157213200210170ustar00rootroot00000000000000// disable advanced optimizations
process.env._MINIMATCH_TEST_OPTIMIZATION_LEVEL = '0'

// run all the basic tests with this setting
import './basic'
minimatch-9.0.3/test/optimization-level-2.ts000066400000000000000000000055661445157213200210350ustar00rootroot00000000000000// test in posix mode by default
process.env.__MINIMATCH_TESTING_PLATFORM__ = 'linux'

import t from 'tap'
import { braceExpand } from '../'

const optimizationLevel = 2
process.env._MINIMATCH_TEST_OPTIMIZATION_LEVEL = String(optimizationLevel)

// run all the basic tests with this setting
import './basic'

t.test('explicit pattern coalescing and optimization', t => {
  t.plan(2)
  for (const platform of ['win32', 'linux']) {
    t.test(platform, t => {
      process.env.__MINIMATCH_TESTING_PLATFORM__ = platform
      const { Minimatch } = t.mock('../', {})
      const m = new Minimatch('*', { optimizationLevel })
      const noGS = new Minimatch('*', { noglobstar: true, optimizationLevel })
      const ms = new Minimatch('*', {
        preserveMultipleSlashes: true,
        optimizationLevel,
      })

      const patterns = [
        '**',
        '**/../x',
        '**/../*/x',
        '**/../x/*',
        './**',
        './**/',
        './**/x',
        './**/../x',
        './**/../x/y',
        '//host/share',
        '//host/share/',
        '//host/share//s/o//me////.//path',
        '**/..',
        '**/../',
        '**/../x',
        '**/../x/y',
        '**/../x/y/z',
        'a/b/c/**///../x/y/z',
        'a/b/c/..///d',
        'a/{*,c}/b',
        'a/{*,.c}/b',
        'a/{c,*}/b',
        'a/{.c,*}/b',
        'a/{c/b/d,*/b/*}/e',
        'a/{*/b/d,c/b/*}/e',
        'a/{c/b/*,*/b/d}/e',
        '{a/**/b,a/b}',
        'a/{,**/}b',
        'a/{,**/}*/b',
        'a/{**/,}b',
        'a/{**/,}*/b',
        './././.',
        './',
        './x/.././///.//./',
        '*/../**',
        '*/../**/?/*/[a-z]',
      ]

      const exp = (p: string) => braceExpand(p).map(s => s.split('/'))

      t.plan(patterns.length)
      for (const p of patterns) {
        t.test(p, t => {
          t.matchSnapshot(m.preprocess(exp(p)), 'defaults')
          t.matchSnapshot(noGS.preprocess(exp(p)), 'no globstar')
          t.matchSnapshot(ms.preprocess(exp(p)), 'multislash')
          t.end()
        })
      }
    })
  }
})

t.test('optimize the file as well', t => {
  const files = [
    './*',
    '//unc/share///*/../x',
    '/',
    '',
    '.',
    '././.',
    './.',
    './',
    './///././//././.',
    'x/..',
    'a/../b',
  ]
  for (const platform of ['win32', 'linux']) {
    t.test(platform, t => {
      process.env.__MINIMATCH_TESTING_PLATFORM__ = platform
      const { Minimatch } = t.mock('../', {})
      const mm = new Minimatch('.')
      const ms = new Minimatch('.', {
        preserveMultipleSlashes: true,
        optimizationLevel,
      })

      for (const file of files) {
        t.test(file, t => {
          t.matchSnapshot(
            mm.levelTwoFileOptimize(mm.slashSplit(file)),
            'default'
          )
          t.matchSnapshot(ms.levelTwoFileOptimize(file), 'multislash')
          t.end()
        })
      }
      t.end()
    })
  }
  t.end()
})
minimatch-9.0.3/test/partial.js000066400000000000000000000004631445157213200164540ustar00rootroot00000000000000const t = require('tap')
const mm = require('../').minimatch
t.equal(mm('/a/b', '/*/b/x/y/z', { partial: true }), true)
t.equal(mm('/a/b/c', '/*/b/x/y/z', { partial: true }), false)
t.equal(mm('/', 'x', { partial: true }), true)
const m = new mm.Minimatch('/*/b/x/y/z')
t.equal(m.match('/a/b', true), true)
minimatch-9.0.3/test/patterns.js000066400000000000000000000355761445157213200166750ustar00rootroot00000000000000if (module === require.main) {
  console.log('1..1\nok')
}

var files = [
  'a',
  'b',
  'c',
  'd',
  'abc',
  'abd',
  'abe',
  'bb',
  'bcd',
  'ca',
  'cb',
  'dd',
  'de',
  'bdir/',
  'bdir/cfile',
]

module.exports = [
  'http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test',
  ['a*', ['a', 'abc', 'abd', 'abe']],
  ['X*', ['X*'], { nonull: true }],

  // allow null glob expansion
  ['X*', []],

  // isaacs: Slightly different than bash/sh/ksh
  // \\* is not un-escaped to literal "*" in a failed match,
  // but it does make it get treated as a literal star
  ['\\*', ['\\*'], { nonull: true }],
  ['\\**', ['\\**'], { nonull: true }],
  ['\\*\\*', ['\\*\\*'], { nonull: true }],

  ['b*/', ['bdir/']],
  ['c*', ['c', 'ca', 'cb']],
  ['{c*,./c*}', ['c', 'ca', 'cb']],
  ['**', files],
  ['**/**/**', files],

  ['\\.\\./*/', ['\\.\\./*/'], { nonull: true }],
  ['s/\\..*//', ['s/\\..*//'], { nonull: true }],

  'legendary larry crashes bashes',
  [
    '/^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\1/',
    ['/^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\\1/'],
    { nonull: true },
  ],
  [
    '/^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\u0001/',
    ['/^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\u0001/'],
    { nonull: true },
  ],

  'character classes',
  ['[a-c]b*', ['abc', 'abd', 'abe', 'bb', 'cb']],
  ['[a-y]*[^c]', ['abd', 'abe', 'bb', 'bcd', 'bdir/', 'ca', 'cb', 'dd', 'de']],
  ['a*[^c]', ['abd', 'abe']],
  () => files.push('a-b', 'aXb'),
  ['a[X-]b', ['a-b', 'aXb']],
  () => files.push('.x', '.y'),
  ['[^a-c]*', ['d', 'dd', 'de']],
  () => files.push('a*b/', 'a*b/ooo'),
  ['a\\*b/*', ['a*b/ooo']],
  ['a\\*?/*', ['a*b/ooo']],
  ['*\\\\!*', [], { null: true }, ['echo !7']],
  ['*\\!*', ['echo !7'], null, ['echo !7']],
  ['*.\\*', ['r.*'], null, ['r.*']],
  ['a[b]c', ['abc']],
  ['a[\\b]c', ['abc']],
  ['a?c', ['abc']],
  ['a\\*c', [], { null: true }, ['abc']],
  ['', [''], { null: true }, ['']],

  'http://www.opensource.apple.com/source/bash/bash-23/' +
    'bash/tests/glob-test',
  () => files.push('man/', 'man/man1/', 'man/man1/bash.1'),
  ['*/man*/bash.*', ['man/man1/bash.1']],
  ['man/man1/bash.1', ['man/man1/bash.1']],
  ['a***c', ['abc'], null, ['abc']],
  ['a*****?c', ['abc'], null, ['abc']],
  ['?*****??', ['abc'], null, ['abc']],
  ['*****??', ['abc'], null, ['abc']],
  ['?*****?c', ['abc'], null, ['abc']],
  ['?***?****c', ['abc'], null, ['abc']],
  ['?***?****?', ['abc'], null, ['abc']],
  ['?***?****', ['abc'], null, ['abc']],
  ['*******c', ['abc'], null, ['abc']],
  ['*******?', ['abc'], null, ['abc']],
  ['a*cd**?**??k', ['abcdecdhjk'], null, ['abcdecdhjk']],
  ['a**?**cd**?**??k', ['abcdecdhjk'], null, ['abcdecdhjk']],
  ['a**?**cd**?**??k***', ['abcdecdhjk'], null, ['abcdecdhjk']],
  ['a**?**cd**?**??***k', ['abcdecdhjk'], null, ['abcdecdhjk']],
  ['a**?**cd**?**??***k**', ['abcdecdhjk'], null, ['abcdecdhjk']],
  ['a****c**?**??*****', ['abcdecdhjk'], null, ['abcdecdhjk']],
  ['[-abc]', ['-'], null, ['-']],
  ['[abc-]', ['-'], null, ['-']],
  ['\\', ['\\'], null, ['\\'], { skip: process.platform === 'win32' }],
  ['[\\\\]', ['\\'], null, ['\\'], { skip: process.platform === 'win32' }],
  ['[[]', ['['], null, ['[']],
  ['[', ['['], null, ['[']],
  ['[*', ['[abc'], null, ['[abc']],

  'a right bracket shall lose its special meaning and\n' +
    'represent itself in a bracket expression if it occurs\n' +
    'first in the list.  -- POSIX.2 2.8.3.2',
  ['[]]', [']'], null, [']']],
  ['[]-]', [']'], null, [']']],
  ['[a-z]', ['p'], null, ['p']],
  ['??**********?****?', [], { null: true }, ['abc']],
  ['??**********?****c', [], { null: true }, ['abc']],
  ['?************c****?****', [], { null: true }, ['abc']],
  ['*c*?**', [], { null: true }, ['abc']],
  ['a*****c*?**', [], { null: true }, ['abc']],
  ['a********???*******', [], { null: true }, ['abc']],
  ['[]', [], { null: true }, ['a']],
  ['[abc', [], { null: true }, ['[']],

  'nocase tests',
  ['XYZ', ['xYz'], { nocase: true, null: true }, ['xYz', 'ABC', 'IjK']],
  ['ab*', ['ABC'], { nocase: true, null: true }, ['xYz', 'ABC', 'IjK']],
  [
    '[ia]?[ck]',
    ['ABC', 'IjK'],
    { nocase: true, null: true },
    ['xYz', 'ABC', 'IjK'],
  ],

  // [ pattern, [matches], MM opts, files, TAP opts]
  'onestar/twostar',
  ['{/*,*}', [], { null: true }, ['/asdf/asdf/asdf']],
  ['{/?,*}', ['/a', 'bb'], { null: true }, ['/a', '/b/b', '/a/b/c', 'bb']],

  'dots should not match unless requested',
  ['**', ['a/b'], {}, ['a/b', 'a/.d', '.a/.d']],

  // .. and . can only match patterns starting with .,
  // even when options.dot is set.
  () => (files = ['a/./b', 'a/../b', 'a/c/b', 'a/.d/b']),
  ['a/*/b', ['a/c/b', 'a/.d/b'], { dot: true }],
  ['a/.*/b', ['a/.d/b'], { dot: true }],
  ['a/*/b', ['a/c/b'], { dot: false }],
  ['a/.*/b', ['a/.d/b'], { dot: false }],

  // this also tests that changing the options needs
  // to change the cache key, even if the pattern is
  // the same!
  ['**', ['a/b', 'a/.d', '.a/.d'], { dot: true }, ['.a/.d', 'a/.d', 'a/b']],

  'paren sets cannot contain slashes',
  ['*(a/b)', ['*(a/b)'], { nonull: true }, ['a/b']],

  // brace sets trump all else.
  //
  // invalid glob pattern.  fails on bash4 and bsdglob.
  // however, in this implementation, it's easier just
  // to do the intuitive thing, and let brace-expansion
  // actually come before parsing any extglob patterns,
  // like the documentation seems to say.
  //
  // XXX: if anyone complains about this, either fix it
  // or tell them to grow up and stop complaining.
  //
  // bash/bsdglob says this:
  // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]]
  // but we do this instead:
  ['*(a|{b),c)}', ['a', 'ab', 'ac'], {}, ['a', 'ab', 'ac', 'ad']],

  // test partial parsing in the presence of comment/negation chars
  ['[!a*', ['[!ab'], {}, ['[!ab', '[ab']],
  ['[#a*', ['[#ab'], {}, ['[#ab', '[ab']],

  // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped.
  [
    '+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g',
    ['+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g'],
    {},
    ['+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g', 'a', 'b\\c'],
    { skip: process.platform === 'win32' },
  ],

  // crazy nested {,,} and *(||) tests.
  () =>
    (files = [
      'a',
      'b',
      'c',
      'd',
      'ab',
      'ac',
      'ad',
      'bc',
      'cb',
      'bc,d',
      'c,db',
      'c,d',
      'd)',
      '(b|c',
      '*(b|c',
      'b|c',
      'b|cc',
      'cb|c',
      'x(a|b|c)',
      'x(a|c)',
      '(a|b|c)',
      '(a|c)',
    ]),
  ['*(a|{b,c})', ['a', 'b', 'c', 'ab', 'ac']],
  ['{a,*(b|c,d)}', ['a', '(b|c', '*(b|c', 'd)']],
  // a
  // *(b|c)
  // *(b|d)
  ['{a,*(b|{c,d})}', ['a', 'b', 'bc', 'cb', 'c', 'd']],
  ['*(a|{b|c,c})', ['a', 'b', 'c', 'ab', 'ac', 'bc', 'cb']],

  // test various flag settings.
  ['*(a|{b|c,c})', ['x(a|b|c)', 'x(a|c)', '(a|b|c)', '(a|c)'], { noext: true }],
  [
    'a?b',
    ['x/y/acb', 'acb/'],
    { matchBase: true },
    ['x/y/acb', 'acb/', 'acb/d/e', 'x/y/acb/d'],
  ],
  ['#*', ['#a', '#b'], { nocomment: true }, ['#a', '#b', 'c#d']],

  // begin channelling Boole and deMorgan...
  'negation tests',
  () => (files = ['d', 'e', '!ab', '!abc', 'a!b', '\\!a']),

  // anything that is NOT a* matches.
  ['!a*', ['\\!a', 'd', 'e', '!ab', '!abc']],

  // anything that IS !a* matches.
  ['!a*', ['!ab', '!abc'], { nonegate: true }],

  // anything that IS a* matches
  ['!!a*', ['a!b']],

  // anything that is NOT !a* matches
  ['!\\!a*', ['a!b', 'd', 'e', '\\!a']],

  'negation nestled within a pattern',
  () =>
    (files = [
      'foo.js',
      'foo.bar',
      'foo.js.js',
      'blar.js',
      'foo.',
      'boo.js.boo',
    ]),
  // last one is tricky! * matches foo, . matches ., and 'js.js' != 'js'
  // copy bash 4.3 behavior on this.
  ['*.!(js)', ['foo.bar', 'foo.', 'boo.js.boo', 'foo.js.js']],

  'https://github.com/isaacs/minimatch/issues/5',
  () =>
    (files = [
      'a/b/.x/c',
      'a/b/.x/c/d',
      'a/b/.x/c/d/e',
      'a/b/.x',
      'a/b/.x/',
      'a/.x/b',
      '.x',
      '.x/',
      '.x/a/',
      '.x/a/b',
      'a/.x/b/.x/c',
      '.x/.x/',
      '.x/.y',
    ]),
  [
    '**/.x/**',
    [
      '.x/',
      '.x/a/',
      '.x/a/b',
      'a/.x/b',
      'a/b/.x/',
      'a/b/.x/c',
      'a/b/.x/c/d',
      'a/b/.x/c/d/e',
    ],
  ],
  'test equivalence of **/* and */**',
  ['.x/**/*', ['.x/a/', '.x/a/b']],
  ['.x/*/**', ['.x/a/', '.x/a/b']],
  ['.x/**/**/*', ['.x/a/', '.x/a/b']],
  ['.x/**/*/**', ['.x/a/', '.x/a/b']],
  ['.x/*/**/**', ['.x/a/', '.x/a/b']],
  ['.x/**/*', ['.x/a/', '.x/a/b', '.x/.x/', '.x/.y'], { dot: true }],
  ['.x/*/**', ['.x/a/', '.x/a/b', '.x/.x/'], { dot: true }],
  ['.x/**/**/*', ['.x/a/', '.x/a/b', '.x/.x/', '.x/.y'], { dot: true }],
  ['.x/**/*/**', ['.x/a/', '.x/a/b', '.x/.x/'], { dot: true }],
  ['.x/*/**/**', ['.x/a/', '.x/a/b', '.x/.x/'], { dot: true }],

  ['**/.x/**', ['a/.x/b'], { noglobstar: true }],

  'https://github.com/isaacs/minimatch/issues/59',
  ['[z-a]', []],
  ['a/[2015-03-10T00:23:08.647Z]/z', []],
  ['a/[2015-03-10T00:23:08.647Z\\]/z', []],
  ['[a-0][a-\u0100]', []],

  'comments match nothing',
  ['# ignore this', []],

  'escape regex properly within classes',
  ['[\\z-a]', []],
  ['[\\b-a]', []],
  ['[]+*]', []],
  ['[z\\-a]', []],
  ['[\\-\\]]', []],
  ['[a-b-c]', []],

  'https://github.com/isaacs/node-glob/issues/415',
  () => {
    files = ['ac', 'abc', 'acd', 'acc', 'acd', 'adc', 'bbc', 'bac', 'bcc']
  },
  ['+(a)!(b)+(c)', ['ac', 'acc', 'adc']],

  'https://github.com/isaacs/node-glob/issues/394',
  () => (files = ['å']),
  ['å', ['å']],
  ['å', ['å'], { nocase: true }],
  ['Å', ['å'], { nocase: true }],
  ['Å', [], {}],
  () => (files = ['Å']),
  ['Å', ['Å']],
  ['å', ['Å'], { nocase: true }],
  ['Å', ['Å'], { nocase: true }],
  ['å', [], {}],

  'https://github.com/isaacs/node-glob/issues/387',
  () => (files = ['.a', '.a.js', '.js', 'a', 'a.js', 'js']),
  ['.*', ['.a', '.a.js', '.js']],
  ['*', ['.a', '.a.js', '.js', 'a', 'a.js', 'js'], { dot: true }],
  ['@(*|.*)', ['.a', '.a.js', '.js', 'a', 'a.js', 'js']],
  ['@(.*|*)', ['.a', '.a.js', '.js', 'a', 'a.js', 'js']],
  ['@(*|a)', ['.a', '.a.js', '.js', 'a', 'a.js', 'js'], { dot: true }],
  ['@(.*)', ['.a', '.a.js', '.js']],
  ['@(.*)', ['.a', '.a.js', '.js'], { dot: true }],
  ['@(js|.*)', ['js', '.a', '.a.js', '.js']],
  ['@(.*|js)', ['js', '.a', '.a.js', '.js']],
  // doesn't start at 0, no dice
  // neg extglobs don't trigger this behavior.
  ['!(.a|js)@(.*)', ['a.js'], { nonegate: true }],
  () => (files = ['a(b', 'ab', 'a)b']),
  ['@(a|a[(])b', ['a(b', 'ab']],
  ['@(a|a[)])b', ['a)b', 'ab']],

  // TODO: recursive descent parser for extglobs, to do this properly
  // ['@(+(.*))', ['.a', '.a.js', '.js']],

  'optimized checking for some common patterns',
  () =>
    (files = [
      '.a',
      '.a.js',
      '.js',
      'a',
      'a.js',
      'js',
      'JS',
      'a.JS',
      '.a.JS',
      '.JS',
      '.',
      '..',
    ]),
  ['?', ['a']],
  ['??', ['js', 'JS']],
  ['??', ['js', 'JS', '.a'], { dot: true }],
  ['??', ['js', 'JS', '.a'], { dot: true, nocase: true }],
  ['??', ['js', 'JS'], { nocase: true }],
  ['???', []],
  ['???', ['.js', '.JS'], { dot: true }],
  ['?.js', ['a.js']],
  ['?js', []],
  ['?.js', ['a.js'], { dot: true }],
  ['?js', ['.js'], { dot: true }],
  ['?.js', ['a.js', 'a.JS'], { nocase: true }],
  ['?js', ['.js', '.JS'], { dot: true, nocase: true }],
  ['?.js', ['a.js', 'a.JS'], { dot: true, nocase: true }],

  ['*.js', ['a.js']],
  ['*js', ['a.js', 'js']],
  ['*.js', ['a.js', '.a.js', '.js'], { dot: true }],
  ['*.js', ['a.js', 'a.JS'], { nocase: true }],
  [
    '*.js',
    ['a.js', 'a.JS', '.a.js', '.a.JS', '.js', '.JS'],
    { dot: true, nocase: true },
  ],
  ['*.*', ['a.js', 'a.JS']],
  [
    '*.*',
    ['.a', '.a.js', '.js', 'a.js', 'a.JS', '.a.JS', '.JS'],
    { dot: true },
  ],
  ['.*', ['.a', '.a.js', '.js', '.a.JS', '.JS']],
  ['*', ['a', 'a.js', 'js', 'a.JS', 'JS']],
  [
    '*',
    ['.a', '.a.js', '.js', 'a', 'a.js', 'js', 'a.JS', '.a.JS', '.JS', 'JS'],
    { dot: true },
  ],

  () => (files = ['x/y/z/a/b/c', 'x/y/a/b/c', 'x/z/a/b/c', 'x/a/b/c', 'a/b/c']),
  ['x/*/../a/b/c', ['x/a/b/c']],
  ['x/z/../*/a/b/c', ['x/y/a/b/c', 'x/z/a/b/c']],
  ['x/*/../../a/b/c', ['a/b/c']],

  () => (files = ['åéîøü', 'aeiou', 'fffff', '0f7fa', '99999']),
  [
    '[[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]]',
    ['åéîøü', 'aeiou', 'fffff'],
  ],
  [
    '[[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]][[:ascii:]]',
    ['aeiou', 'fffff', '0f7fa', '99999'],
  ],
  ['[a-[:alpha:]*]', []],
  ['[z-a]*', []],
  ['[z-af]*', ['fffff']],
  ['[fz-a]*', ['fffff']],
  ['[f-gz-a]*', ['fffff']],
  ['[f-fz-a]*', ['fffff']],
  [
    '[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]]',
    ['fffff', '0f7fa', '99999'],
  ],
  [
    '[[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]]',
    ['åéîøü', 'aeiou', 'fffff', '0f7fa', '99999'],
  ],
  ['[[: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']],

  () =>
    (files = [
      '.aa',
      '.ab',
      '.ba',
      '.bb',
      'a.a',
      'a.b',
      'b.a',
      'b.b',
      'aa',
      'ab',
      'ba',
      'bb',
      'aa.',
      'ab.',
      'ba.',
      'bb.',
    ]),

  [
    '*(?)',
    [
      'a.a',
      'a.b',
      'b.a',
      'b.b',
      'aa',
      'ab',
      'ba',
      'bb',
      'aa.',
      'ab.',
      'ba.',
      'bb.',
    ],
  ],

  [
    '+(?)',
    [
      'a.a',
      'a.b',
      'b.a',
      'b.b',
      'aa',
      'ab',
      'ba',
      'bb',
      'aa.',
      'ab.',
      'ba.',
      'bb.',
    ],
  ],

  [
    '+(a|?)',
    [
      'a.a',
      'a.b',
      'b.a',
      'b.b',
      'aa',
      'ab',
      'ba',
      'bb',
      'aa.',
      'ab.',
      'ba.',
      'bb.',
    ],
  ],

  [
    '+(a|!(b))',
    [
      'a.a',
      'a.b',
      'aa',
      'aa.',
      'ab',
      'ab.',
      'b.a',
      'b.b',
      'ba',
      'ba.',
      'bb',
      'bb.',
    ],
  ],

  [
    '+(.|a|!(b))',
    [
      '.aa',
      '.ab',
      '.ba',
      '.bb',
      'a.a',
      'a.b',
      'aa',
      'aa.',
      'ab',
      'ab.',
      'b.a',
      'b.b',
      'ba',
      'ba.',
      'bb',
      'bb.',
    ],
  ],

  ['+(a|.)', ['a.a', 'aa', 'aa.', '.aa']],
]

Object.defineProperty(module.exports, 'files', {
  get: function () {
    return files
  },
})
minimatch-9.0.3/test/preserve-multiple-slashes.ts000066400000000000000000000003021445157213200221460ustar00rootroot00000000000000import t from 'tap'
import { Minimatch } from '../'

const mm = new Minimatch('a///b', {
  preserveMultipleSlashes: true,
})

t.same(mm.set, [['a', '', '', 'b']])

t.same(mm.globSet, ['a///b'])
minimatch-9.0.3/test/redos.js000066400000000000000000000012201445157213200161240ustar00rootroot00000000000000var t = require('tap')

var minimatch = require('../').minimatch

// utility function for generating long strings
var genstr = function (len, chr) {
  var result = ''
  for (var i = 0; i <= len; i++) {
    result = result + chr
  }

  return result
}

var exploit = '!(' + genstr(1024 * 15, '\\') + 'A)'

// within the limits, and valid match
t.ok(minimatch('A', exploit))

// within the limits, but results in an invalid regexp
exploit = '[!(' + genstr(1024 * 15, '\\') + 'A'
t.notOk(minimatch('A', exploit))

t.throws(function () {
  // too long, throws TypeError
  exploit = '!(' + genstr(1024 * 64, '\\') + 'A)'
  minimatch('A', exploit)
}, TypeError)
minimatch-9.0.3/test/tricky-negations.js000066400000000000000000000044501445157213200203120ustar00rootroot00000000000000var t = require('tap')
var minimatch = require('../').minimatch
var cases = {
  'bar.min.js': {
    '*.!(js|css)': true,
    '!*.+(js|css)': false,
    '*.+(js|css)': true,
  },

  'a-integration-test.js': {
    '*.!(j)': true,
    '!(*-integration-test.js)': false,
    '*-!(integration-)test.js': true,
    '*-!(integration)-test.js': false,
    '*!(-integration)-test.js': true,
    '*!(-integration-)test.js': true,
    '*!(integration)-test.js': true,
    '*!(integration-test).js': true,
    '*-!(integration-test).js': true,
    '*-!(integration-test.js)': true,
    '*-!(integra)tion-test.js': false,
    '*-integr!(ation)-test.js': false,
    '*-integr!(ation-t)est.js': false,
    '*-i!(ntegration-)test.js': false,
    '*i!(ntegration-)test.js': true,
    '*te!(gration-te)st.js': true,
    '*-!(integration)?test.js': false,
    '*?!(integration)?test.js': true,
  },

  'foo-integration-test.js': {
    'foo-integration-test.js': true,
    '!(*-integration-test.js)': false,
  },

  'foo.jszzz.js': {
    '*.!(js).js': true,
  },

  'asd.jss': {
    '*.!(js)': true,
  },

  'asd.jss.xyz': {
    '*.!(js).!(xy)': true,
  },

  'asd.jss.xy': {
    '*.!(js).!(xy)': false,
  },

  'asd.js.xyz': {
    '*.!(js).!(xy)': false,
  },

  'asd.js.xy': {
    '*.!(js).!(xy)': false,
  },

  'asd.sjs.zxy': {
    '*.!(js).!(xy)': true,
  },

  'asd..xyz': {
    '*.!(js).!(xy)': true,
  },

  'asd..xy': {
    '*.!(js).!(xy)': false,
    '*.!(js|x).!(xy)': false,
  },

  'foo.js.js': {
    '*.!(js)': true,
  },

  'testjson.json': {
    '*(*.json|!(*.js))': true,
    '+(*.json|!(*.js))': true,
    '@(*.json|!(*.js))': true,
    '?(*.json|!(*.js))': true,
  },

  'foojs.js': {
    '*(*.json|!(*.js))': false, // XXX bash 4.3 disagrees!
    '+(*.json|!(*.js))': false, // XXX bash 4.3 disagrees!
    '@(*.json|!(*.js))': false,
    '?(*.json|!(*.js))': false,
  },

  'other.bar': {
    '*(*.json|!(*.js))': true,
    '+(*.json|!(*.js))': true,
    '@(*.json|!(*.js))': true,
    '?(*.json|!(*.js))': true,
  },
}

var options = { nonegate: true }

Object.keys(cases).forEach(function (file) {
  t.test(file, function (t) {
    Object.keys(cases[file]).forEach(function (pattern) {
      var res = cases[file][pattern]
      var s = file + ' ' + pattern
      t.equal(minimatch(file, pattern, options), res, s)
    })
    t.end()
  })
})
minimatch-9.0.3/test/unc.ts000066400000000000000000000040221445157213200156120ustar00rootroot00000000000000import t from 'tap'
import { minimatch, Minimatch, MinimatchOptions } from '../'

t.test('UNC patterns do not lose their //', async t => {
  const share = new Minimatch('//host/share/*', { platform: 'win32' })
  t.match(share.set, [['', '', 'host', 'share', RegExp]])
  const uncPath = new Minimatch('//?/d:/*', { platform: 'win32' })
  t.match(uncPath.set, [['', '', '?', 'd:', RegExp]])
})

type Case = [f: string, p: string, e: boolean, opt?: MinimatchOptions]
const cases: Case[] = [
  ['c:/x', '//?/c:/*', true],
  ['//?/c:/x', 'c:/*', true],
  ['//?/c:/x', '//?/c:/*', true],
  ['C:/x', '//?/c:/*', true],
  ['//?/C:/x', 'c:/*', true],
  ['//?/C:/x', '//?/c:/*', true],
  ['c:/x', '//?/C:/*', true],
  ['//?/c:/x', 'C:/*', true],
  ['//?/c:/x', '//?/C:/*', true],
  ['c:/x', '//?/C:/*', true],
  ['c:/x', 'C:/*', true],
  ['C:/x', '//?/c:/*', true],
  ['C:/x', 'c:/*', true],

  ['d:/x', '//?/c:/*', false],
  ['//?/d:/x', 'c:/*', false],
  ['//?/d:/x', '//?/c:/*', false],

  // ? is not a wild card
  ['//x/c:/x', '//?/c:/*', false],

  // but UNC remote paths do match
  ['//x/y/z', '//x/y/*', true],
]

t.test('UNC drive letter paths match normal paths', async t => {
  for (const [file, pattern, expect, opt = {}] of cases) {
    opt.platform = 'win32'
    t.test(`f=${file} p=${pattern}`, t => {
      t.test('/ only', t => {
        t.equal(minimatch(file, pattern, opt), expect)
        t.end()
      })
      t.test('file \\', t => {
        t.equal(minimatch(file.replace(/\//g, '\\'), pattern, opt), expect)
        t.end()
      })
      t.test('pattern \\', t => {
        t.equal(
          minimatch(file, pattern.replace(/\//g, '\\'), {
            ...opt,
            windowsPathsNoEscape: true,
          }),
          expect
        )
        t.end()
      })
      t.test('both \\', t => {
        t.equal(
          minimatch(file.replace(/\//g, '\\'), pattern.replace(/\//g, '\\'), {
            ...opt,
            windowsPathsNoEscape: true,
          }),
          expect
        )
        t.end()
      })
      t.end()
    })
  }
})
minimatch-9.0.3/test/win-path-sep.js000066400000000000000000000017561445157213200173420ustar00rootroot00000000000000const t = require('tap')
t.test('path separator /', t => {
  process.env.__MINIMATCH_TESTING_PLATFORM__ = 'posix'
  const mm = t.mock('../', {}).minimatch
  t.equal(mm('x/y/z', 'x/y/*/z'), false)
  t.equal(mm('x/y/w/z', 'x/y/*/z'), true)
  t.end()
})

t.test('path separator \\', t => {
  process.env.__MINIMATCH_TESTING_PLATFORM__ = 'win32'
  const mm = t.mock('../', {}).minimatch
  t.equal(mm('x\\y\\z', 'x/y/*/z'), false)
  t.equal(mm('x\\y\\w\\z', 'x/y/*/z'), true)
  t.end()
})

t.test('override with options', t => {
  process.env.__MINIMATCH_TESTING_PLATFORM__ = 'win32'
  const mm = t.mock('../', {}).minimatch

  t.equal(
    mm('c:\\foo\\bar', 'c:\\foo\\*', {
      windowsPathsNoEscape: true,
    }),
    true
  )

  t.equal(
    mm('c:\\foo\\bar', 'c:\\foo\\*', {
      allowWindowsEscape: false,
    }),
    true
  )

  t.equal(mm('c:\\foo\\bar', 'c:\\foo\\*', {}), false)

  t.equal(
    mm('c:\\foo\\bar', 'c:\\foo\\*', {
      allowWindowsEscape: null,
    }),
    false
  )

  t.end()
})
minimatch-9.0.3/test/windows-no-magic-root.ts000066400000000000000000000013171445157213200211740ustar00rootroot00000000000000import { Minimatch } from '../'
import t from 'tap'

t.test('no magic the root', t => {
  const patterns = [
    '//host/share/x/y/z',
    '//host/share/',
    '//host/share',
    '//?/d:/x/y/z',
    '//?/d:/',
    '//?/d:',
    'd:/x/y/z',
    'd:/',
    'd:',
  ]
  t.plan(patterns.length)
  for (const p of patterns) {
    t.test(p, t => {
      t.matchSnapshot(
        new Minimatch(p, {
          platform: 'win32',
          nocase: true,
        }).set,
        'default to true'
      )
      t.matchSnapshot(
        new Minimatch(p, {
          windowsNoMagicRoot: false,
          platform: 'win32',
          nocase: true,
        }).set,
        'set explicitly false'
      )
      t.end()
    })
  }
})
minimatch-9.0.3/tsconfig-base.json000066400000000000000000000007461445157213200171260ustar00rootroot00000000000000{
  "exclude": ["./test", "./tap-snapshots"],
  "include": ["src/**/*.ts"],
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "declaration": true,
    "declarationMap": true,
    "inlineSources": true,
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "isolatedModules": true,
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "skipLibCheck": true,
    "sourceMap": true,
    "strict": true,
    "target": "es2022"
  }
}
minimatch-9.0.3/tsconfig-esm.json000066400000000000000000000002301445157213200167640ustar00rootroot00000000000000{
  "extends": "./tsconfig-base.json",
  "exclude": ["src/index-cjs.ts"],
  "compilerOptions": {
    "module": "esnext",
    "outDir": "dist/mjs"
  }
}
minimatch-9.0.3/tsconfig.json000066400000000000000000000001671445157213200162130ustar00rootroot00000000000000{
  "extends": "./tsconfig-base.json",
  "compilerOptions": {
    "module": "commonjs",
    "outDir": "dist/cjs"
  }
}
minimatch-9.0.3/typedoc.json000066400000000000000000000001221445157213200160350ustar00rootroot00000000000000{
  "navigationLinks": {
    "isaacs projects": "https://isaacs.github.io/"
  }
}