pax_global_header00006660000000000000000000000064151454113520014513gustar00rootroot0000000000000052 comment=04d466514a2400c8a1ced1697b9d500c55aff7a7 isaacs-resolve-import-299e0c4/000077500000000000000000000000001514541135200163045ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/.github/000077500000000000000000000000001514541135200176445ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/.github/workflows/000077500000000000000000000000001514541135200217015ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/.github/workflows/ci.yml000066400000000000000000000020251514541135200230160ustar00rootroot00000000000000name: CI on: push: branches: ["main"] pull_request_target: paths: - 'src/**' - 'test/**' - '*.json' - '*.js' - '*.ts' - 'lib/**' - 'scripts/**' workflow_dispatch: permissions: contents: read jobs: build: strategy: matrix: node-version: [22.x, 24.x, 25.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@v6 - name: Use Nodejs ${{ matrix.node-version }} uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} - name: Install dependencies run: npm install - name: Run Tests run: npm test -- -c -t0 isaacs-resolve-import-299e0c4/.github/workflows/typedoc.yml000066400000000000000000000016461514541135200241020ustar00rootroot00000000000000name: typedoc on: push: branches: ["main"] workflow_dispatch: permissions: contents: read pages: write id-token: write concurrency: group: "pages" cancel-in-progress: true jobs: deploy: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v6 - name: Use Nodejs ${{ matrix.node-version }} uses: actions/setup-node@v6 with: node-version: 20.x - name: Install dependencies run: npm install - name: Generate typedocs run: npm run typedoc - name: Setup Pages uses: actions/configure-pages@v5 - name: Upload artifact uses: actions/upload-pages-artifact@v4 with: path: './docs' - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 isaacs-resolve-import-299e0c4/.gitignore000066400000000000000000000000471514541135200202750ustar00rootroot00000000000000/dist /node_modules /.tap /.tshy /docs isaacs-resolve-import-299e0c4/.prettierignore000066400000000000000000000003111514541135200213420ustar00rootroot00000000000000/node_modules /tsconfig.json /package-lock.json /package.json /LICENSE.md /example /.github /dist /.env /tap-snapshots /.nyc_output /coverage /benchmark /.tap /test/fixture /test/fixtures /.tshy /docs isaacs-resolve-import-299e0c4/.prettierrc.json000066400000000000000000000003521514541135200214400ustar00rootroot00000000000000{ "experimentalTernaries": true, "semi": false, "printWidth": 75, "tabWidth": 2, "useTabs": false, "singleQuote": true, "jsxSingleQuote": false, "bracketSameLine": true, "arrowParens": "avoid", "endOfLine": "lf" } isaacs-resolve-import-299e0c4/LICENSE.md000066400000000000000000000030161514541135200177100ustar00rootroot00000000000000# Blue Oak Model License Version 1.0.0 ## Purpose This license gives everyone as much permission to work with this software as possible, while protecting contributors from liability. ## Acceptance In order to receive this license, you must agree to its rules. The rules of this license are both obligations under that agreement and conditions to your license. You must not do anything with this software that triggers a rule that you cannot or will not follow. ## Copyright Each contributor licenses you to do everything with this software that would otherwise infringe that contributor's copyright in it. ## Notices You must ensure that everyone who gets a copy of any part of this software from you, with or without changes, also gets the text of this license or a link to . ## Excuse If anyone notifies you in writing that you have not complied with [Notices](#notices), you can keep your license by taking all practical steps to comply within 30 days after the notice. If you do not do so, your license ends immediately. ## Patent Each contributor licenses you to do everything with this software that would otherwise infringe any patent claims they can license or become able to license. ## Reliability No contributor can revoke this license. ## No Liability **_As far as the law allows, this software comes as is, without any warranty or condition, and no contributor will be liable to anyone for any damages related to this software or this license, under any kind of legal claim._** isaacs-resolve-import-299e0c4/README.md000066400000000000000000000161631514541135200175720ustar00rootroot00000000000000# resolve-import Look up the file that an `import()` statement will resolve to, for use in node esm loaders. Returns a `file://` URL object for file resolutions, or the builtin module ID string for node builtins. ## USAGE ```js import { resolveImport } from 'resolve-import' // or: const { resolveImport } = require('resolve-import') // sync versions provided as well import { resolveImportSync } from 'resolve-import' // resolving a full file URL just returns it console.log(await resolveImport(new URL('file:///blah/foo.js'))) // same result in sync mode console.log(resolveImportSync(new URL('file:///blah/foo.js'))) // resolving a node built in returns the string console.log(await resolveImport('node:fs')) // 'node:fs' // resolving an absolute full path just file-url-ifies it console.log(await resolveImport('/a/b/c.js')) // URL(file:///a/b/c.js) // resolving a relative path resolves it from the parent module // URL(file:///path/to/x.js) console.log(await resolveImport('./x.js', '/path/to/y.js')) // packages resolved according to their exports, main, etc. // eg: URL(file:///path/node_modules/pkg/dist/mjs/index.js) console.log(await resolveImport('pkg', '/path/to/y.js')) ``` To get very minified versions of just the top level `resolveImport` or `resolveImportSync` methods, load them like this: ```ts // minified tree-shaken bundle, just the async version import { resolveImport } from 'resolve-import/resolve-import-async' // minified tree-shaken bundle, just the sync version import { resolveImportSync } from 'resolve-import/resolve-import-sync' ``` ## API These functions are all exported on the main module, as well as being available on `resolve-import/{hyphen-name}`, for example: ```js import { resolveAllExports, resolveAllExportsSync, } from 'resolve-import/resolve-all-exports' ``` ### Interface `ResolveImportOpts` - `conditions: string[]` The list of conditions to match on. `'default'` is always accepted. Defaults to `['import', 'node']`. ### resolveImport, resolveImportSync ```ts resolveImport( url: string | URL, parentURL?: string | URL, options?: ResolveImportOpts): Promise resolveImportSync( url: string | URL, parentURL?: string | URL, options?: ResolveImportOpts): string | URL ``` - `url` The string or file URL object being imported. - `parentURL` The string or file URL object that the import is coming from. - `options` A ResolveImportOpts object (optional) Returns the string provided for node builtins, like `'fs'` or `'node:path'`. Otherwise, resolves to a `file://` URL object corresponding to the file that will be imported. Raises roughly the same errors that `import()` will raise if the lookup fails. For example, if a package is not found, if a subpath is not exported, etc. ### resolveAllExports, resolveAllExportsSync ```ts resolveAllExports( packageJsonPath: string | URL, options: ResolveImportOpts): Promise> resolveAllExportsSync( packageJsonPath: string | URL, options: ResolveImportOpts): Record ``` Given a `package.json` path or file URL, resolve all valid exports from that package. If the pattern contains a `*` in both the pattern and the target, then it will search for all possible files that could match the pattern, and expand them appropriately in the returned object. In the case where a `*` exists in the pattern, but does not exist in the target, no expansion can be done, because _any_ string there would resolve to the same file. In that case, the `*` is left in the pattern. If the target is a node built-in module, it will be a string. Otherwise, it will be a `file://` URL object. Any exports that fail to load (ie, if the target is invalid, the file does not exist, etc.) will be omitted from the returned object. ### resolveAllLocalImports, resolveAllLocalImportsSync ```ts resolveAllLocalImports( packageJsonPath: string | URL, options: ResolveImportOpts): Promise> resolveAllLocalImportsSync( packageJsonPath: string | URL, options: ResolveImportOpts): Record ``` Similar to `resolveAllExports`, but this resolves the entries in the package.json's `imports` object. ### isRelativeRequire ```ts isRelativeRequire(specifier: string): boolean ``` Simple utility function that returns true if the import or require specifier starts with `./` or `../` (or `.\` or `..\` on Windows). ### getAllConditions ```ts getAllConditions( importsExports: Imports | Exports ): string[] ``` Given an `exports` or `imports` value from a package, return the list of conditions that it is sensitive to. `default` is not included in the returned list, since that's always effectively relevant. Note that a condition being returned by this method does not mean that the export/import object actually has a _target_ for that condition, since it may map to `null`, be nested under another condition, etc. But it does potentially have some kind of conditional behavior for all the conditions returned. Ordering of returned conditions is arbitrary, and does not imply precedence or object shape. ### resolveConditionalValue ```ts resolveConditionalValue( cond: ConditionalValue, options: ResolveImportOpts): string | null ``` Given an entry from an `imports` or `exports` object, resolve the conditional value based on the `conditions` list in the provided `options` object. By default, resolves with the conditions `['import', 'node']`. `'default'` is always allowed (except if you pass the negative condition `'!default'`). ### getAllConditionalValues ```ts getAllConditionalValues( importsExports: Imports | Exports ): string[] ``` Given an `exports` or `imports` value from a package, return the list of all possible conditional values that it might potentially resolve to, for any possible set of import conditions. Filters out cases that are unreachable, such as conditions that appear after a `default` value, or after a set of conditions that would have been satisfied previously. For example: ```json { "import": { "node": "./x.js" }, "node": { "import": { "blah": "./y.js" } } } ``` Will return `['./x.js']`, omitting the unreachable `'./y.js'`, because the conditions ['import','node','blah'] would have been satisfied by the earlier condition. Note that this does _not_ mean that the target actually can be imported, as it may not exist, be an incorrect module type, etc. Star values are not expanded. For that, use `resolveAllExports` or `resolveAllLocalImports`. ### getConditionalValuesList ```ts getConditionalValuesList( importsExports: Imports | Exports ): [string, Set, string | null][] ``` Given an `exports` or `imports` value from a package, return the list of all possible conditional values that it might potentially resolve to, for any possible set of import conditions, along with the `Set` of conditions, any superset of which will result in the condition. The first entry in the returned list is the submodule path, or `'.'` if the value provided did not have submodule paths. The list includes null results, since while these are not a valid resolution per se, they do _prevent_ valid resolutions that match the same conditions. isaacs-resolve-import-299e0c4/changelog.md000066400000000000000000000012451514541135200205570ustar00rootroot00000000000000# 2.4 - export getUniqueConditionSets (tshy uses this) # 2.3 - Ship minified tree-shaken submoduls for just the top level `resolveImport` and `resolveImportSync` methods # 2.2 - Add sync functions # 2.1 - Support negative conditions # 2.0 - drop support for old node versions # 1.4 - realpath module resolutions and parentURL params - add getAllConditionalValues, getUniqueConditionSets, getConditionalValuesList methods # 1.3 - use module.isBuiltin instead of compiling our own - ConditionalValue type should allow any string # 1.2 - make the list of conditions configurable # 1.1 - Add resolveAllExports, resolveAllLocalImports # 1.0 - initial release isaacs-resolve-import-299e0c4/package-lock.json000066400000000000000000005276001514541135200215320ustar00rootroot00000000000000{ "name": "resolve-import", "version": "2.4.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "resolve-import", "version": "2.4.0", "license": "BlueOak-1.0.0", "dependencies": { "glob": "^13.0.0", "walk-up-path": "^4.0.0" }, "devDependencies": { "@types/node": "^25.2.3", "esbuild": "^0.27.3", "prettier": "^3.6.2", "tap": "^21.5.1", "tshy": "^3.3.1", "typedoc": "^0.28.17" }, "engines": { "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@alcalzone/ansi-tokenize": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@alcalzone/ansi-tokenize/-/ansi-tokenize-0.1.3.tgz", "integrity": "sha512-3yWxPTq3UQ/FY9p1ErPxIyfT64elWaMvM9lIHnaqpyft63tkxodF5aUElYHrdisWve5cETkh1+KBw1yJuW0aRw==", "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^4.0.0" }, "engines": { "node": ">=14.13.1" } }, "node_modules/@base2/pretty-print-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz", "integrity": "sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==", "dev": true, "license": "BSD-2-Clause" }, "node_modules/@bcoe/v8-coverage": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", "dev": true, "license": "MIT", "engines": { "node": ">=18" } }, "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, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, "engines": { "node": ">=12" } }, "node_modules/@esbuild/aix-ppc64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", "cpu": [ "ppc64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "aix" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/android-arm": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", "cpu": [ "arm" ], "dev": true, "license": "MIT", "optional": true, "os": [ "android" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", "cpu": [ "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "android" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/android-x64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", "cpu": [ "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "android" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", "cpu": [ "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", "cpu": [ "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", "cpu": [ "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", "cpu": [ "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", "cpu": [ "arm" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", "cpu": [ "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", "cpu": [ "ia32" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", "cpu": [ "loong64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", "cpu": [ "mips64el" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", "cpu": [ "ppc64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", "cpu": [ "riscv64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", "cpu": [ "s390x" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", "cpu": [ "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/netbsd-arm64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", "cpu": [ "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "netbsd" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", "cpu": [ "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "netbsd" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/openbsd-arm64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", "cpu": [ "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "openbsd" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", "cpu": [ "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "openbsd" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/openharmony-arm64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", "cpu": [ "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "openharmony" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", "cpu": [ "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "sunos" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", "cpu": [ "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", "cpu": [ "ia32" ], "dev": true, "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", "cpu": [ "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { "node": ">=18" } }, "node_modules/@gerrit0/mini-shiki": { "version": "3.22.0", "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.22.0.tgz", "integrity": "sha512-jMpciqEVUBKE1QwU64S4saNMzpsSza6diNCk4MWAeCxO2+LFi2FIFmL2S0VDLzEJCxuvCbU783xi8Hp/gkM5CQ==", "dev": true, "license": "MIT", "dependencies": { "@shikijs/engine-oniguruma": "^3.22.0", "@shikijs/langs": "^3.22.0", "@shikijs/themes": "^3.22.0", "@shikijs/types": "^3.22.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "node_modules/@isaacs/cliui": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=18" } }, "node_modules/@isaacs/fs-minipass": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", "dev": true, "license": "ISC", "dependencies": { "minipass": "^7.0.4" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@isaacs/ts-node-temp-fork-for-pr-2009": { "version": "10.9.7", "resolved": "https://registry.npmjs.org/@isaacs/ts-node-temp-fork-for-pr-2009/-/ts-node-temp-fork-for-pr-2009-10.9.7.tgz", "integrity": "sha512-9f0bhUr9TnwwpgUhEpr3FjxSaH/OHaARkE2F9fM0lS4nIs2GNerrvGwQz493dk0JKlTaGYVrKbq36vA/whZ34g==", "dev": true, "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node14": "*", "@tsconfig/node16": "*", "@tsconfig/node18": "*", "@tsconfig/node20": "*", "acorn": "^8.4.1", "acorn-walk": "^8.1.1", "arg": "^4.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", "v8-compile-cache-lib": "^3.0.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" }, "peerDependencies": { "@swc/core": ">=1.2.50", "@swc/wasm": ">=1.2.50", "@types/node": "*", "typescript": ">=4.2" }, "peerDependenciesMeta": { "@swc/core": { "optional": true }, "@swc/wasm": { "optional": true } } }, "node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/node_modules/diff": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "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, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true, "license": "MIT" }, "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, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "node_modules/@npmcli/agent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz", "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==", "dev": true, "license": "ISC", "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^11.2.1", "socks-proxy-agent": "^8.0.3" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@npmcli/fs": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-5.0.0.tgz", "integrity": "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==", "dev": true, "license": "ISC", "dependencies": { "semver": "^7.3.5" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@npmcli/git": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.1.tgz", "integrity": "sha512-+XTFxK2jJF/EJJ5SoAzXk3qwIDfvFc5/g+bD274LZ7uY7LE8sTfG6Z8rOanPl2ZEvZWqNvmEdtXC25cE54VcoA==", "dev": true, "license": "ISC", "dependencies": { "@npmcli/promise-spawn": "^9.0.0", "ini": "^6.0.0", "lru-cache": "^11.2.1", "npm-pick-manifest": "^11.0.1", "proc-log": "^6.0.0", "promise-retry": "^2.0.1", "semver": "^7.3.5", "which": "^6.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@npmcli/git/node_modules/isexe": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=20" } }, "node_modules/@npmcli/git/node_modules/which": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", "dev": true, "license": "ISC", "dependencies": { "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@npmcli/installed-package-contents": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-4.0.0.tgz", "integrity": "sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==", "dev": true, "license": "ISC", "dependencies": { "npm-bundled": "^5.0.0", "npm-normalize-package-bin": "^5.0.0" }, "bin": { "installed-package-contents": "bin/index.js" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@npmcli/node-gyp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-5.0.0.tgz", "integrity": "sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==", "dev": true, "license": "ISC", "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@npmcli/package-json": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.4.tgz", "integrity": "sha512-0wInJG3j/K40OJt/33ax47WfWMzZTm6OQxB9cDhTt5huCP2a9g2GnlsxmfN+PulItNPIpPrZ+kfwwUil7eHcZQ==", "dev": true, "license": "ISC", "dependencies": { "@npmcli/git": "^7.0.0", "glob": "^13.0.0", "hosted-git-info": "^9.0.0", "json-parse-even-better-errors": "^5.0.0", "proc-log": "^6.0.0", "semver": "^7.5.3", "validate-npm-package-license": "^3.0.4" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@npmcli/promise-spawn": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-9.0.1.tgz", "integrity": "sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==", "dev": true, "license": "ISC", "dependencies": { "which": "^6.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@npmcli/promise-spawn/node_modules/isexe": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=20" } }, "node_modules/@npmcli/promise-spawn/node_modules/which": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", "dev": true, "license": "ISC", "dependencies": { "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@npmcli/redact": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-4.0.0.tgz", "integrity": "sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==", "dev": true, "license": "ISC", "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@npmcli/run-script": { "version": "10.0.3", "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.3.tgz", "integrity": "sha512-ER2N6itRkzWbbtVmZ9WKaWxVlKlOeBFF1/7xx+KA5J1xKa4JjUwBdb6tDpk0v1qA+d+VDwHI9qmLcXSWcmi+Rw==", "dev": true, "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^5.0.0", "@npmcli/package-json": "^7.0.0", "@npmcli/promise-spawn": "^9.0.0", "node-gyp": "^12.1.0", "proc-log": "^6.0.0", "which": "^6.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@npmcli/run-script/node_modules/isexe": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=20" } }, "node_modules/@npmcli/run-script/node_modules/which": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", "dev": true, "license": "ISC", "dependencies": { "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, "license": "MIT", "optional": true, "engines": { "node": ">=14" } }, "node_modules/@shikijs/engine-oniguruma": { "version": "3.22.0", "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.22.0.tgz", "integrity": "sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA==", "dev": true, "license": "MIT", "dependencies": { "@shikijs/types": "3.22.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "node_modules/@shikijs/langs": { "version": "3.22.0", "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.22.0.tgz", "integrity": "sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA==", "dev": true, "license": "MIT", "dependencies": { "@shikijs/types": "3.22.0" } }, "node_modules/@shikijs/themes": { "version": "3.22.0", "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.22.0.tgz", "integrity": "sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g==", "dev": true, "license": "MIT", "dependencies": { "@shikijs/types": "3.22.0" } }, "node_modules/@shikijs/types": { "version": "3.22.0", "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.22.0.tgz", "integrity": "sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg==", "dev": true, "license": "MIT", "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "node_modules/@shikijs/vscode-textmate": { "version": "10.0.2", "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", "dev": true, "license": "MIT" }, "node_modules/@sigstore/bundle": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-4.0.0.tgz", "integrity": "sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==", "dev": true, "license": "Apache-2.0", "dependencies": { "@sigstore/protobuf-specs": "^0.5.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@sigstore/core": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-3.1.0.tgz", "integrity": "sha512-o5cw1QYhNQ9IroioJxpzexmPjfCe7gzafd2RY3qnMpxr4ZEja+Jad/U8sgFpaue6bOaF+z7RVkyKVV44FN+N8A==", "dev": true, "license": "Apache-2.0", "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@sigstore/protobuf-specs": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.5.0.tgz", "integrity": "sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==", "dev": true, "license": "Apache-2.0", "engines": { "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@sigstore/sign": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.1.0.tgz", "integrity": "sha512-Vx1RmLxLGnSUqx/o5/VsCjkuN5L7y+vxEEwawvc7u+6WtX2W4GNa7b9HEjmcRWohw/d6BpATXmvOwc78m+Swdg==", "dev": true, "license": "Apache-2.0", "dependencies": { "@sigstore/bundle": "^4.0.0", "@sigstore/core": "^3.1.0", "@sigstore/protobuf-specs": "^0.5.0", "make-fetch-happen": "^15.0.3", "proc-log": "^6.1.0", "promise-retry": "^2.0.1" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@sigstore/tuf": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.1.tgz", "integrity": "sha512-OPZBg8y5Vc9yZjmWCHrlWPMBqW5yd8+wFNl+thMdtcWz3vjVSoJQutF8YkrzI0SLGnkuFof4HSsWUhXrf219Lw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@sigstore/protobuf-specs": "^0.5.0", "tuf-js": "^4.1.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@sigstore/verify": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-3.1.0.tgz", "integrity": "sha512-mNe0Iigql08YupSOGv197YdHpPPr+EzDZmfCgMc7RPNaZTw5aLN01nBl6CHJOh3BGtnMIj83EeN4butBchc8Ag==", "dev": true, "license": "Apache-2.0", "dependencies": { "@sigstore/bundle": "^4.0.0", "@sigstore/core": "^3.1.0", "@sigstore/protobuf-specs": "^0.5.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@tapjs/after": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/@tapjs/after/-/after-3.3.1.tgz", "integrity": "sha512-/RZb0DZxfHP74ursSByTpgKU6jVUtNOtoQ3/prf76+5+G7Q7D7QIQtlrH3bUgk84DI89j+4Nc2DTkMCOLy7BWQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "is-actual-promise": "^1.0.1" }, "engines": { "node": "20 || >=22" }, "peerDependencies": { "@tapjs/core": "4.4.1" } }, "node_modules/@tapjs/after-each": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@tapjs/after-each/-/after-each-4.3.1.tgz", "integrity": "sha512-kgRbmhKisIl31FsCxFkDmZLNj0qCdNte0aarVLsaFq1LVJOtpITdBfnuiKigrLj4Go9XiASmIpGrU8h1uYF2Xw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "function-loop": "^4.0.0" }, "engines": { "node": "20 || >=22" }, "peerDependencies": { "@tapjs/core": "4.4.1" } }, "node_modules/@tapjs/asserts": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@tapjs/asserts/-/asserts-4.3.1.tgz", "integrity": "sha512-PyBE1/umvg/o9Ntg3gryWaamCFHhMV0zSdoD6n5saexa8AYUb9XM6XA4y7uXRisdSFVVnD8/yX0OAWsQhryE0g==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@tapjs/stack": "4.3.0", "is-actual-promise": "^1.0.1", "tcompare": "9.3.0", "trivial-deferred": "^2.0.0" }, "engines": { "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { "@tapjs/core": "4.4.1" } }, "node_modules/@tapjs/before": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@tapjs/before/-/before-4.3.1.tgz", "integrity": "sha512-zxa+DrruCGJhTQCLjYa8nfyYihLsWBWCEgiSvtwOkQKNZhxcaLmH/W85zEWKJ+MnZaa4wVqkyyRkhAM12eq0Lg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "is-actual-promise": "^1.0.1" }, "engines": { "node": "20 || >=22" }, "peerDependencies": { "@tapjs/core": "4.4.1" } }, "node_modules/@tapjs/before-each": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@tapjs/before-each/-/before-each-4.3.1.tgz", "integrity": "sha512-vPCbni80H7/6JtQY2LoO4kiRmuyOwPJXpgR2SRrH9Aq07EVveSlgMkKJxomkbuE5lGr/l6zhO/TZDPnuorSvrg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "function-loop": "^4.0.0" }, "engines": { "node": "20 || >=22" }, "peerDependencies": { "@tapjs/core": "4.4.1" } }, "node_modules/@tapjs/chdir": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/@tapjs/chdir/-/chdir-3.3.1.tgz", "integrity": "sha512-8awqiQswpJRtlOdag+wV/ezuX1kv9YKiG3DAKcNVr7exkGr61StL7qV1cdHah2rPAXlJv6blgDIYbR80d3s9qA==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" }, "peerDependencies": { "@tapjs/core": "4.4.1" } }, "node_modules/@tapjs/config": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/@tapjs/config/-/config-5.4.1.tgz", "integrity": "sha512-ZK1Zs58ALGWx6Zxd0fDlN9VlGNxoudpXZqjlr2asC/Zu6v5oyilN9CX2r9PWHyTHNe6b/TpfpOvt2gTCTpuROA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@tapjs/core": "4.4.1", "@tapjs/test": "4.3.1", "chalk": "^5.6.2", "jackspeak": "^4.1.2", "polite-json": "^5.0.0", "tap-yaml": "4.3.0", "walk-up-path": "^4.0.0" }, "engines": { "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { "@tapjs/core": "4.4.1", "@tapjs/test": "4.3.1" } }, "node_modules/@tapjs/core": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/@tapjs/core/-/core-4.4.1.tgz", "integrity": "sha512-zEeDgt6YNOKXs4NfGGZ1Lz5aLTlHNCUpwvx5hVl7CuL+/noudWZvL39Vy2rKb+zZnTSgF7b34DqGLoy8+jgpfg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@tapjs/processinfo": "^3.1.9", "@tapjs/stack": "4.3.0", "@tapjs/test": "4.3.1", "async-hook-domain": "^4.0.1", "diff": "^8.0.2", "is-actual-promise": "^1.0.1", "minipass": "^7.0.4", "signal-exit": "4.1", "tap-parser": "18.3.0", "tap-yaml": "4.3.0", "tcompare": "9.3.0", "trivial-deferred": "^2.0.0" }, "engines": { "node": "20 || >=22" } }, "node_modules/@tapjs/error-serdes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/@tapjs/error-serdes/-/error-serdes-4.3.0.tgz", "integrity": "sha512-qP266uvPm2G95ClPFpqAN6n4nicLbHrZYbZWl0UO+biOdmvjSSuxeY5f7YFygTl+UuzlyxjlRgHTq8qifnqTcw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "minipass": "^7.0.4" }, "engines": { "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@tapjs/filter": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@tapjs/filter/-/filter-4.3.1.tgz", "integrity": "sha512-oyoqmUcHjYvr5f7LOryVB9ruEtjTiABdwZghx3XgeRnaNiVX3J9J8/xvdctnkbDB7cq3g9Ao2DYzweDl6Zfvhg==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { "@tapjs/core": "4.4.1" } }, "node_modules/@tapjs/fixture": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@tapjs/fixture/-/fixture-4.3.1.tgz", "integrity": "sha512-x3w6Ro4H6UAxNSkDTtmz73kVCjZP4TNY2m+wLLiRdi8fa3lCn7WfvHUn9zoATgRFjgOnG4XrXSkjybhqHZ4Ibw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "mkdirp": "^3.0.0", "rimraf": "^6.0.0" }, "engines": { "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { "@tapjs/core": "4.4.1" } }, "node_modules/@tapjs/intercept": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@tapjs/intercept/-/intercept-4.3.1.tgz", "integrity": "sha512-AvfZwFqAh8g+226HRVMUwoHm1ncf6xMHRQfcsPPIMtjnIrbJZjr2S2uM9qTWTnlk2EVgerqfyh3H8R6ykJsGIg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@tapjs/after": "3.3.1", "@tapjs/stack": "4.3.0" }, "engines": { "node": "20 || >=22" }, "peerDependencies": { "@tapjs/core": "4.4.1" } }, "node_modules/@tapjs/mock": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@tapjs/mock/-/mock-4.3.1.tgz", "integrity": "sha512-oiR34RhC0+h0fqLNHkDA5QmQXmVJkujvdGwUEBxR3HzUIKZWp5SfVw4dY2/Lvl33tPBOtsFDFuqnpt3+f6SrXg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@tapjs/after": "3.3.1", "@tapjs/stack": "4.3.0", "resolve-import": "^2.1.1", "walk-up-path": "^4.0.0" }, "engines": { "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { "@tapjs/core": "4.4.1" } }, "node_modules/@tapjs/node-serialize": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@tapjs/node-serialize/-/node-serialize-4.3.1.tgz", "integrity": "sha512-dOsTr75HFESskVvuv8L6SAw23c2WtF6aoNkaD9SwtbTQZxvZQNGMechWPWYGaMsHB+aB+6EBg1MVnqWHQrOVcw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@tapjs/error-serdes": "4.3.0", "@tapjs/stack": "4.3.0", "tap-parser": "18.3.0" }, "engines": { "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { "@tapjs/core": "4.4.1" } }, "node_modules/@tapjs/processinfo": { "version": "3.1.9", "resolved": "https://registry.npmjs.org/@tapjs/processinfo/-/processinfo-3.1.9.tgz", "integrity": "sha512-yIbYH9ROI5m5F2B5Hpk6t89OkHBrDbL3qncPO9OfPuSvJsvAIDG91I0hxGQNohdaxmqz5L4QiIYc5Y0KmtLzCQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "node-options-to-argv": "^1.0.0", "pirates": "^4.0.5", "process-on-spawn": "^1.0.0", "signal-exit": "^4.0.2", "uuid": "^8.3.2" }, "engines": { "node": ">=16.17" } }, "node_modules/@tapjs/reporter": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/@tapjs/reporter/-/reporter-4.4.1.tgz", "integrity": "sha512-kOppWVcv3sa0fmsBrpzwJiUZbwEdhixBAg0J39dUDMDdNIYrefVUSJsi7f1Agi9uRRXeJfZlUw23tII4CV06rQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@tapjs/config": "5.4.1", "@tapjs/stack": "4.3.0", "chalk": "^5.6.2", "ink": "^5.2.1", "minipass": "^7.0.4", "ms": "^2.1.3", "patch-console": "^2.0.0", "prismjs-terminal": "^1.2.3", "react": "^18.2.0", "string-length": "^6.0.0", "tap-parser": "18.3.0", "tap-yaml": "4.3.0", "tcompare": "9.3.0" }, "engines": { "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { "@tapjs/core": "4.4.1" } }, "node_modules/@tapjs/run": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/@tapjs/run/-/run-4.4.1.tgz", "integrity": "sha512-mVD9FCknr1mkkCv1vMKL2x4pmpka8ArqHufMP8Mb3Etj6blfePNv0Mu75RWVN9bKYzKAkqPGLenDBPb9hnbUgg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@tapjs/after": "3.3.1", "@tapjs/before": "4.3.1", "@tapjs/config": "5.4.1", "@tapjs/processinfo": "^3.1.9", "@tapjs/reporter": "4.4.1", "@tapjs/spawn": "4.3.1", "@tapjs/stdin": "4.3.1", "@tapjs/test": "4.3.1", "c8": "^10.1.3", "chalk": "^5.6.2", "chokidar": "^4.0.2", "foreground-child": "^4.0.0", "glob": "^13.0.0", "minipass": "^7.0.4", "mkdirp": "^3.0.1", "node-options-to-argv": "^1.0.0", "opener": "^1.5.2", "pacote": "^21.0.4", "path-scurry": "^2.0.0", "resolve-import": "^2.0.0", "rimraf": "^6.0.0", "semver": "^7.7.2", "signal-exit": "^4.1.0", "tap-parser": "18.3.0", "tap-yaml": "4.3.0", "tcompare": "9.3.0", "trivial-deferred": "^2.0.0", "which": "^5.0.0" }, "bin": { "tap-run": "dist/esm/index.js" }, "engines": { "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { "@tapjs/core": "4.4.1" } }, "node_modules/@tapjs/snapshot": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@tapjs/snapshot/-/snapshot-4.3.1.tgz", "integrity": "sha512-xPE5yxnck9EhpbH2i60xIB9HxgG39wSyn6Hj+UQal/lDgprbdYNG+36Owdp52TNHOL14GcVO3aiqyOy4UdkN6A==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "is-actual-promise": "^1.0.1", "tcompare": "9.3.0", "trivial-deferred": "^2.0.0" }, "engines": { "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { "@tapjs/core": "4.4.1" } }, "node_modules/@tapjs/spawn": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@tapjs/spawn/-/spawn-4.3.1.tgz", "integrity": "sha512-bQ5Mb0F8Vm07TDe3DYFEzuIN1aCbRyFPYjM6cD62iszT0B4znaXL4PseRXB0VoL9cxJICeNm6AiT0G9PF09z4Q==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" }, "peerDependencies": { "@tapjs/core": "4.4.1" } }, "node_modules/@tapjs/stack": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/@tapjs/stack/-/stack-4.3.0.tgz", "integrity": "sha512-SFASe4YaVBzMr/FXTm/QsSzbzXZOmgDNpmY3EU0JNiDCN4izHMUnoXY+Kh0EY35hx9C4JDvRjgv2MSIM7bBygg==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@tapjs/stdin": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@tapjs/stdin/-/stdin-4.3.1.tgz", "integrity": "sha512-wD4bJM+1LmnDkBpR7aLJ6tlwDM/OT0RaiHPFgRrpDv7FB50LeR3h9wh7s+c+Ysc9OgZDkLNLkvG9jIhb937bZA==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" }, "peerDependencies": { "@tapjs/core": "4.4.1" } }, "node_modules/@tapjs/test": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@tapjs/test/-/test-4.3.1.tgz", "integrity": "sha512-NOsYB1VhaSPmWqrvsdeVnUuklNtJwFEQnybPHjVCqq0ecjP/SZKW+nnVzt9ISAPF+FDtQisqgJV2/Y54jzhpgA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/ts-node-temp-fork-for-pr-2009": "^10.9.7", "@tapjs/after": "3.3.1", "@tapjs/after-each": "4.3.1", "@tapjs/asserts": "4.3.1", "@tapjs/before": "4.3.1", "@tapjs/before-each": "4.3.1", "@tapjs/chdir": "3.3.1", "@tapjs/filter": "4.3.1", "@tapjs/fixture": "4.3.1", "@tapjs/intercept": "4.3.1", "@tapjs/mock": "4.3.1", "@tapjs/node-serialize": "4.3.1", "@tapjs/snapshot": "4.3.1", "@tapjs/spawn": "4.3.1", "@tapjs/stdin": "4.3.1", "@tapjs/typescript": "3.5.1", "@tapjs/worker": "4.3.1", "glob": "^13.0.0", "jackspeak": "^4.1.2", "mkdirp": "^3.0.0", "package-json-from-dist": "^1.0.0", "resolve-import": "^2.1.1", "rimraf": "^6.0.0", "sync-content": "^2.0.1", "tap-parser": "18.3.0", "tshy": "^3.1.3", "typescript": "5.9", "walk-up-path": "^4.0.0" }, "bin": { "generate-tap-test-class": "dist/esm/build.mjs" }, "engines": { "node": "20 || >=22" }, "peerDependencies": { "@tapjs/core": "4.4.1" } }, "node_modules/@tapjs/typescript": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/@tapjs/typescript/-/typescript-3.5.1.tgz", "integrity": "sha512-4clGpzF1OTjLZYlavI167rCseSVsLpd5ygBAf297o468VEtpRAJPYx1IjoPrnGWC/M5iJadsCrTlIuBYABw81g==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/ts-node-temp-fork-for-pr-2009": "^10.9.7" }, "engines": { "node": "20 || >=22" }, "peerDependencies": { "@tapjs/core": "4.4.1" } }, "node_modules/@tapjs/worker": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@tapjs/worker/-/worker-4.3.1.tgz", "integrity": "sha512-RInbFaGUH+KsAl/ozRVCMhpXaQPsvwEQ7PiKprpXgKjxjUrzwlkAbFAxo4K79axCWWdm6JUD5pH93n0FJ75jYQ==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" }, "peerDependencies": { "@tapjs/core": "4.4.1" } }, "node_modules/@tsconfig/node14": { "version": "14.1.8", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-14.1.8.tgz", "integrity": "sha512-SjGT+qPvh8Uhc849yNMD0ZIPr69AyB7Z46nMqhrI3gCVocd6mhI0jP4YE4onO/ufpmengRfTxNMpdpKEp2xRIg==", "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node16": { "version": "16.1.8", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-16.1.8.tgz", "integrity": "sha512-T/CfdwFry660WjZor56z0F3pxeCllt8KOxWcHFW6ZEuULKUObTDEMdgtctyuJPxwqyWDsvHRfxHaJ4FIICyoqQ==", "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node18": { "version": "18.2.6", "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.6.tgz", "integrity": "sha512-eAWQzAjPj18tKnDzmWstz4OyWewLUNBm9tdoN9LayzoboRktYx3Enk1ZXPmThj55L7c4VWYq/Bzq0A51znZfhw==", "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node20": { "version": "20.1.9", "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.9.tgz", "integrity": "sha512-IjlTv1RsvnPtUcjTqtVsZExKVq+KQx4g5pCP5tI7rAs6Xesl2qFwSz/tPDBC4JajkL/MlezBu3gPUwqRHl+RIg==", "dev": true, "license": "MIT" }, "node_modules/@tufjs/canonical-json": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", "dev": true, "license": "MIT", "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@tufjs/models": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-4.1.0.tgz", "integrity": "sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==", "dev": true, "license": "MIT", "dependencies": { "@tufjs/canonical-json": "2.0.0", "minimatch": "^10.1.1" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@types/hast": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", "dev": true, "license": "MIT", "dependencies": { "@types/unist": "*" } }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true, "license": "MIT" }, "node_modules/@types/node": { "version": "25.2.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~7.16.0" } }, "node_modules/@types/unist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "dev": true, "license": "MIT" }, "node_modules/@typescript/native-preview": { "version": "7.0.0-dev.20260218.1", "resolved": "https://registry.npmjs.org/@typescript/native-preview/-/native-preview-7.0.0-dev.20260218.1.tgz", "integrity": "sha512-hbGRXBk7abFvOQJk/7mc8K9q1kPkiyziyUsS8r8Hc1sLxrDFUbGgsW9p8qg67Xe1K6NUv/9UU2cdeIitUDexIQ==", "dev": true, "license": "Apache-2.0", "bin": { "tsgo": "bin/tsgo.js" }, "optionalDependencies": { "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20260218.1", "@typescript/native-preview-darwin-x64": "7.0.0-dev.20260218.1", "@typescript/native-preview-linux-arm": "7.0.0-dev.20260218.1", "@typescript/native-preview-linux-arm64": "7.0.0-dev.20260218.1", "@typescript/native-preview-linux-x64": "7.0.0-dev.20260218.1", "@typescript/native-preview-win32-arm64": "7.0.0-dev.20260218.1", "@typescript/native-preview-win32-x64": "7.0.0-dev.20260218.1" } }, "node_modules/@typescript/native-preview-darwin-arm64": { "version": "7.0.0-dev.20260218.1", "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-arm64/-/native-preview-darwin-arm64-7.0.0-dev.20260218.1.tgz", "integrity": "sha512-ybxez4ClJU12TUvX/IxGPIQfS26+Zia7kbB1L4RH+G8yzYg90RPt4njfJkU2WxP70Hp59zS2copPkaBz5gUJkQ==", "cpu": [ "arm64" ], "dev": true, "license": "Apache-2.0", "optional": true, "os": [ "darwin" ] }, "node_modules/@typescript/native-preview-darwin-x64": { "version": "7.0.0-dev.20260218.1", "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-x64/-/native-preview-darwin-x64-7.0.0-dev.20260218.1.tgz", "integrity": "sha512-n9Ki8WTW82w6PlBTlrAQAjEUQB2V7C2oXrkN5U7ElwUH4FOostSFzZHuAdnPMbdzMx76P0pEw9FteYrLDA4m9g==", "cpu": [ "x64" ], "dev": true, "license": "Apache-2.0", "optional": true, "os": [ "darwin" ] }, "node_modules/@typescript/native-preview-linux-arm": { "version": "7.0.0-dev.20260218.1", "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm/-/native-preview-linux-arm-7.0.0-dev.20260218.1.tgz", "integrity": "sha512-WRPMvTztPatQ91UzYWSp82NT45JmjMgo/pVgZjXYEWdF2rwS4ejzR6DnHq30jXhEPnMah1bTeOzSWFF2kvXUmg==", "cpu": [ "arm" ], "dev": true, "license": "Apache-2.0", "optional": true, "os": [ "linux" ] }, "node_modules/@typescript/native-preview-linux-arm64": { "version": "7.0.0-dev.20260218.1", "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm64/-/native-preview-linux-arm64-7.0.0-dev.20260218.1.tgz", "integrity": "sha512-Osus82LSlwi1l3LoxLWKDuxh5E8JyWwkseBjr2n+TMaTuDPcRSzT8Jr4ywIp3NJpCUUV/LzR84i64jA6g8iVIw==", "cpu": [ "arm64" ], "dev": true, "license": "Apache-2.0", "optional": true, "os": [ "linux" ] }, "node_modules/@typescript/native-preview-linux-x64": { "version": "7.0.0-dev.20260218.1", "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-x64/-/native-preview-linux-x64-7.0.0-dev.20260218.1.tgz", "integrity": "sha512-jcDhKCvhWQyMbra4MiqSgyUoSdM9mAiSkIdc80qScpk03aZOU+BZEmHz51S+fEn+8KRWuMuIHXM3sG3oX/EJZA==", "cpu": [ "x64" ], "dev": true, "license": "Apache-2.0", "optional": true, "os": [ "linux" ] }, "node_modules/@typescript/native-preview-win32-arm64": { "version": "7.0.0-dev.20260218.1", "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-arm64/-/native-preview-win32-arm64-7.0.0-dev.20260218.1.tgz", "integrity": "sha512-VmWvJ+TEuTPmZrhWe+buvvUvHbMyiD4ZLgxYPdYcJ3kRQlk2mD5lOq63ZISx1pDB8kYz5/R5xYKy/8gSIU5MgQ==", "cpu": [ "arm64" ], "dev": true, "license": "Apache-2.0", "optional": true, "os": [ "win32" ] }, "node_modules/@typescript/native-preview-win32-x64": { "version": "7.0.0-dev.20260218.1", "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-x64/-/native-preview-win32-x64-7.0.0-dev.20260218.1.tgz", "integrity": "sha512-9zfUrKV3xBog2tpIR9NZOags+QJZSj7v9Ek7KdSkVu978IJqF9RX7oa2xftX+eiHySfV5ZQ8r2fdhdbYBk+kMw==", "cpu": [ "x64" ], "dev": true, "license": "Apache-2.0", "optional": true, "os": [ "win32" ] }, "node_modules/abbrev": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz", "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==", "dev": true, "license": "ISC", "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", "bin": { "acorn": "bin/acorn" }, "engines": { "node": ">=0.4.0" } }, "node_modules/acorn-walk": { "version": "8.3.4", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, "license": "MIT", "dependencies": { "acorn": "^8.11.0" }, "engines": { "node": ">=0.4.0" } }, "node_modules/agent-base": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, "license": "MIT", "engines": { "node": ">= 14" } }, "node_modules/ansi-escapes": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz", "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==", "dev": true, "license": "MIT", "dependencies": { "environment": "^1.0.0" }, "engines": { "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/ansi-regex": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/ansi-styles": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true, "license": "MIT" }, "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, "license": "Python-2.0" }, "node_modules/async-hook-domain": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/async-hook-domain/-/async-hook-domain-4.0.1.tgz", "integrity": "sha512-bSktexGodAjfHWIrSrrqxqWzf1hWBZBpmPNZv+TYUMyWa2eoefFc6q6H1+KtdHYSz35lrhWdmXt/XK9wNEZvww==", "dev": true, "license": "ISC", "engines": { "node": ">=16" } }, "node_modules/auto-bind": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-5.0.1.tgz", "integrity": "sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg==", "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/balanced-match": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.3.tgz", "integrity": "sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==", "license": "MIT", "engines": { "node": "20 || >=22" } }, "node_modules/brace-expansion": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz", "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==", "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" }, "engines": { "node": "20 || >=22" } }, "node_modules/c8": { "version": "10.1.3", "resolved": "https://registry.npmjs.org/c8/-/c8-10.1.3.tgz", "integrity": "sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==", "dev": true, "license": "ISC", "dependencies": { "@bcoe/v8-coverage": "^1.0.1", "@istanbuljs/schema": "^0.1.3", "find-up": "^5.0.0", "foreground-child": "^3.1.1", "istanbul-lib-coverage": "^3.2.0", "istanbul-lib-report": "^3.0.1", "istanbul-reports": "^3.1.6", "test-exclude": "^7.0.1", "v8-to-istanbul": "^9.0.0", "yargs": "^17.7.2", "yargs-parser": "^21.1.1" }, "bin": { "c8": "bin/c8.js" }, "engines": { "node": ">=18" }, "peerDependencies": { "monocart-coverage-reports": "^2" }, "peerDependenciesMeta": { "monocart-coverage-reports": { "optional": true } } }, "node_modules/c8/node_modules/foreground-child": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "license": "ISC", "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/cacache": { "version": "20.0.3", "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.3.tgz", "integrity": "sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==", "dev": true, "license": "ISC", "dependencies": { "@npmcli/fs": "^5.0.0", "fs-minipass": "^3.0.0", "glob": "^13.0.0", "lru-cache": "^11.1.0", "minipass": "^7.0.3", "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^7.0.2", "ssri": "^13.0.0", "unique-filename": "^5.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/chalk": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/chokidar": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "license": "MIT", "dependencies": { "readdirp": "^4.0.1" }, "engines": { "node": ">= 14.16.0" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/chownr": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=18" } }, "node_modules/cli-boxes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", "dev": true, "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cli-cursor": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", "dev": true, "license": "MIT", "dependencies": { "restore-cursor": "^4.0.0" }, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cli-truncate": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", "dev": true, "license": "MIT", "dependencies": { "slice-ansi": "^5.0.0", "string-width": "^7.0.0" }, "engines": { "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cli-truncate/node_modules/slice-ansi": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" }, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" }, "engines": { "node": ">=12" } }, "node_modules/cliui/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, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cliui/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, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/cliui/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, "license": "MIT" }, "node_modules/cliui/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, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cliui/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, "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/cliui/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, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, "node_modules/cliui/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, "license": "MIT", "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/code-excerpt": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-4.0.0.tgz", "integrity": "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==", "dev": true, "license": "MIT", "dependencies": { "convert-to-spaces": "^2.0.1" }, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.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, "license": "MIT", "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, "license": "MIT" }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, "license": "MIT" }, "node_modules/convert-to-spaces": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz", "integrity": "sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==", "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" }, "engines": { "node": ">= 8" } }, "node_modules/cross-spawn/node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, "license": "ISC" }, "node_modules/cross-spawn/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, "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "bin/node-which" }, "engines": { "node": ">= 8" } }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" }, "engines": { "node": ">=6.0" }, "peerDependenciesMeta": { "supports-color": { "optional": true } } }, "node_modules/diff": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz", "integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==", "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true, "license": "MIT" }, "node_modules/emoji-regex": { "version": "10.6.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", "dev": true, "license": "MIT" }, "node_modules/encoding": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.2" } }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/environment": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", "dev": true, "license": "MIT", "engines": { "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/err-code": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true, "license": "MIT" }, "node_modules/es-toolkit": { "version": "1.44.0", "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.44.0.tgz", "integrity": "sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg==", "dev": true, "license": "MIT", "workspaces": [ "docs", "benchmarks" ] }, "node_modules/esbuild": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", "dev": true, "hasInstallScript": true, "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, "engines": { "node": ">=18" }, "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.3", "@esbuild/android-arm": "0.27.3", "@esbuild/android-arm64": "0.27.3", "@esbuild/android-x64": "0.27.3", "@esbuild/darwin-arm64": "0.27.3", "@esbuild/darwin-x64": "0.27.3", "@esbuild/freebsd-arm64": "0.27.3", "@esbuild/freebsd-x64": "0.27.3", "@esbuild/linux-arm": "0.27.3", "@esbuild/linux-arm64": "0.27.3", "@esbuild/linux-ia32": "0.27.3", "@esbuild/linux-loong64": "0.27.3", "@esbuild/linux-mips64el": "0.27.3", "@esbuild/linux-ppc64": "0.27.3", "@esbuild/linux-riscv64": "0.27.3", "@esbuild/linux-s390x": "0.27.3", "@esbuild/linux-x64": "0.27.3", "@esbuild/netbsd-arm64": "0.27.3", "@esbuild/netbsd-x64": "0.27.3", "@esbuild/openbsd-arm64": "0.27.3", "@esbuild/openbsd-x64": "0.27.3", "@esbuild/openharmony-arm64": "0.27.3", "@esbuild/sunos-x64": "0.27.3", "@esbuild/win32-arm64": "0.27.3", "@esbuild/win32-ia32": "0.27.3", "@esbuild/win32-x64": "0.27.3" } }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "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, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/events-to-array": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-2.0.3.tgz", "integrity": "sha512-f/qE2gImHRa4Cp2y1stEOSgw8wTFyUdVJX7G//bMwbaV9JqISFxg99NbmVQeP7YLnDUZ2un851jlaDrlpmGehQ==", "dev": true, "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/exponential-backoff": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", "dev": true, "license": "Apache-2.0" }, "node_modules/fdir": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, "license": "MIT", "engines": { "node": ">=12.0.0" }, "peerDependencies": { "picomatch": "^3 || ^4" }, "peerDependenciesMeta": { "picomatch": { "optional": true } } }, "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, "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/foreground-child": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-4.0.3.tgz", "integrity": "sha512-yeXZaNbCBGaT9giTpLPBdtedzjwhlJBUoL/R4BVQU5mn0TQXOHwVIl1Q2DMuBIdNno4ktA1abZ7dQFVxD6uHxw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "signal-exit": "^4.0.1" }, "engines": { "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "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" } ], "license": "MIT" }, "node_modules/fs-minipass": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dev": true, "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/function-loop": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/function-loop/-/function-loop-4.0.0.tgz", "integrity": "sha512-f34iQBedYF3XcI93uewZZOnyscDragxgTK/eTvVB74k3fCD0ZorOi5BV9GS4M8rz/JoNi0Kl3qX5Y9MH3S/CLQ==", "dev": true, "license": "ISC" }, "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, "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-east-asian-width": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", "dev": true, "license": "MIT", "engines": { "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/glob": { "version": "13.0.5", "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.5.tgz", "integrity": "sha512-BzXxZg24Ibra1pbQ/zE7Kys4Ua1ks7Bn6pKLkVPZ9FZe4JQS6/Q7ef3LG1H+k7lUf5l4T3PLSyYyYJVYUvfgTw==", "license": "BlueOak-1.0.0", "dependencies": { "minimatch": "^10.2.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" }, "engines": { "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "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, "license": "ISC" }, "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, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/hosted-git-info": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.2.tgz", "integrity": "sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==", "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^11.1.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "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, "license": "MIT" }, "node_modules/http-cache-semantics": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", "dev": true, "license": "BSD-2-Clause" }, "node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" }, "engines": { "node": ">= 14" } }, "node_modules/https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", "dependencies": { "agent-base": "^7.1.2", "debug": "4" }, "engines": { "node": ">= 14" } }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/ignore-walk": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-8.0.0.tgz", "integrity": "sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==", "dev": true, "license": "ISC", "dependencies": { "minimatch": "^10.0.3" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/ini": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz", "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==", "dev": true, "license": "ISC", "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/ink": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/ink/-/ink-5.2.1.tgz", "integrity": "sha512-BqcUyWrG9zq5HIwW6JcfFHsIYebJkWWb4fczNah1goUO0vv5vneIlfwuS85twyJ5hYR/y18FlAYUxrO9ChIWVg==", "dev": true, "license": "MIT", "dependencies": { "@alcalzone/ansi-tokenize": "^0.1.3", "ansi-escapes": "^7.0.0", "ansi-styles": "^6.2.1", "auto-bind": "^5.0.1", "chalk": "^5.3.0", "cli-boxes": "^3.0.0", "cli-cursor": "^4.0.0", "cli-truncate": "^4.0.0", "code-excerpt": "^4.0.0", "es-toolkit": "^1.22.0", "indent-string": "^5.0.0", "is-in-ci": "^1.0.0", "patch-console": "^2.0.0", "react-reconciler": "^0.29.0", "scheduler": "^0.23.0", "signal-exit": "^3.0.7", "slice-ansi": "^7.1.0", "stack-utils": "^2.0.6", "string-width": "^7.2.0", "type-fest": "^4.27.0", "widest-line": "^5.0.0", "wrap-ansi": "^9.0.0", "ws": "^8.18.0", "yoga-layout": "~3.2.1" }, "engines": { "node": ">=18" }, "peerDependencies": { "@types/react": ">=18.0.0", "react": ">=18.0.0", "react-devtools-core": "^4.19.1" }, "peerDependenciesMeta": { "@types/react": { "optional": true }, "react-devtools-core": { "optional": true } } }, "node_modules/ink/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, "license": "ISC" }, "node_modules/ip-address": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "dev": true, "license": "MIT", "engines": { "node": ">= 12" } }, "node_modules/is-actual-promise": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-actual-promise/-/is-actual-promise-1.0.2.tgz", "integrity": "sha512-xsFiO1of0CLsQnPZ1iXHNTyR9YszOeWKYv+q6n8oSFW3ipooFJ1j1lbRMgiMCr+pp2gLruESI4zb5Ak6eK5OnQ==", "dev": true, "license": "BlueOak-1.0.0" }, "node_modules/is-fullwidth-code-point": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "dev": true, "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-in-ci": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-in-ci/-/is-in-ci-1.0.0.tgz", "integrity": "sha512-eUuAjybVTHMYWm/U+vBO1sY/JOCgoPCXRxzdju0K+K0BiGW0SChEL1MLC0PoCIR1OlPo5YAp8HuQoUlsWEICwg==", "dev": true, "license": "MIT", "bin": { "is-in-ci": "cli.js" }, "engines": { "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-plain-object": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/isexe": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=18" } }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-report": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { "node": ">=10" } }, "node_modules/istanbul-reports": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" }, "engines": { "node": ">=8" } }, "node_modules/jackspeak": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^9.0.0" }, "engines": { "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "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, "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-5.0.0.tgz", "integrity": "sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==", "dev": true, "license": "MIT", "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/jsonc-simple-parser": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/jsonc-simple-parser/-/jsonc-simple-parser-3.0.0.tgz", "integrity": "sha512-0qi9Kuj4JPar4/3b9wZteuPZrTeFzXsQyOZj7hksnReCZN3Vr17Doz7w/i3E9XH7vRkVTHhHES+r1h97I+hfww==", "dev": true, "dependencies": { "reghex": "^3.0.2" } }, "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true, "engines": [ "node >= 0.2.0" ], "license": "MIT" }, "node_modules/linkify-it": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", "dev": true, "license": "MIT", "dependencies": { "uc.micro": "^2.0.0" } }, "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, "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "node_modules/lru-cache": { "version": "11.2.6", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } }, "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, "license": "MIT" }, "node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "license": "MIT", "dependencies": { "semver": "^7.5.3" }, "engines": { "node": ">=10" }, "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, "license": "ISC" }, "node_modules/make-fetch-happen": { "version": "15.0.3", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.3.tgz", "integrity": "sha512-iyyEpDty1mwW3dGlYXAJqC/azFn5PPvgKVwXayOGBSmKLxhKZ9fg4qIan2ePpp1vJIwfFiO34LAPZgq9SZW9Aw==", "dev": true, "license": "ISC", "dependencies": { "@npmcli/agent": "^4.0.0", "cacache": "^20.0.1", "http-cache-semantics": "^4.1.1", "minipass": "^7.0.2", "minipass-fetch": "^5.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^1.0.0", "proc-log": "^6.0.0", "promise-retry": "^2.0.1", "ssri": "^13.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/markdown-it": { "version": "14.1.1", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz", "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==", "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", "linkify-it": "^5.0.0", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" }, "bin": { "markdown-it": "bin/markdown-it.mjs" } }, "node_modules/mdurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", "dev": true, "license": "MIT" }, "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/minimatch": { "version": "10.2.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", "license": "BlueOak-1.0.0", "dependencies": { "brace-expansion": "^5.0.2" }, "engines": { "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/minipass-collect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", "dev": true, "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/minipass-fetch": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-5.0.1.tgz", "integrity": "sha512-yHK8pb0iCGat0lDrs/D6RZmCdaBT64tULXjdxjSMAqoDi18Q3qKEUTHypHQZQd9+FYpIS+lkvpq6C/R6SbUeRw==", "dev": true, "license": "MIT", "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^2.0.0", "minizlib": "^3.0.1" }, "engines": { "node": "^20.17.0 || >=22.9.0" }, "optionalDependencies": { "encoding": "^0.1.13" } }, "node_modules/minipass-flush": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, "engines": { "node": ">= 8" } }, "node_modules/minipass-flush/node_modules/minipass": { "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/minipass-flush/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, "license": "ISC" }, "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, "engines": { "node": ">=8" } }, "node_modules/minipass-pipeline/node_modules/minipass": { "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/minipass-pipeline/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, "license": "ISC" }, "node_modules/minipass-sized": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-2.0.0.tgz", "integrity": "sha512-zSsHhto5BcUVM2m1LurnXY6M//cGhVaegT71OfOXoprxT6o780GZd792ea6FfrQkuU4usHZIUczAQMRUE2plzA==", "dev": true, "license": "ISC", "dependencies": { "minipass": "^7.1.2" }, "engines": { "node": ">=8" } }, "node_modules/minizlib": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", "dev": true, "license": "MIT", "dependencies": { "minipass": "^7.1.2" }, "engines": { "node": ">= 18" } }, "node_modules/mkdirp": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", "dev": true, "license": "MIT", "bin": { "mkdirp": "dist/cjs/src/bin.js" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, "node_modules/negotiator": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/node-gyp": { "version": "12.2.0", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-12.2.0.tgz", "integrity": "sha512-q23WdzrQv48KozXlr0U1v9dwO/k59NHeSzn6loGcasyf0UnSrtzs8kRxM+mfwJSf0DkX0s43hcqgnSO4/VNthQ==", "dev": true, "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", "graceful-fs": "^4.2.6", "make-fetch-happen": "^15.0.0", "nopt": "^9.0.0", "proc-log": "^6.0.0", "semver": "^7.3.5", "tar": "^7.5.4", "tinyglobby": "^0.2.12", "which": "^6.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/node-gyp/node_modules/isexe": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=20" } }, "node_modules/node-gyp/node_modules/which": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", "dev": true, "license": "ISC", "dependencies": { "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/node-options-to-argv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-options-to-argv/-/node-options-to-argv-1.0.0.tgz", "integrity": "sha512-99rLlP+Cn/FsSV9kjpk2UmF2Ltmrpv/L9U7fUfws/MVXkeZWPpPDsQkMr79qCvSF/oTKVVJBTm5sHzmK2j6IIg==", "dev": true, "license": "BlueOak-1.0.0" }, "node_modules/nopt": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-9.0.0.tgz", "integrity": "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==", "dev": true, "license": "ISC", "dependencies": { "abbrev": "^4.0.0" }, "bin": { "nopt": "bin/nopt.js" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm-bundled": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-5.0.0.tgz", "integrity": "sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==", "dev": true, "license": "ISC", "dependencies": { "npm-normalize-package-bin": "^5.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm-install-checks": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-8.0.0.tgz", "integrity": "sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "semver": "^7.1.1" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm-normalize-package-bin": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-5.0.0.tgz", "integrity": "sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==", "dev": true, "license": "ISC", "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm-package-arg": { "version": "13.0.2", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-13.0.2.tgz", "integrity": "sha512-IciCE3SY3uE84Ld8WZU23gAPPV9rIYod4F+rc+vJ7h7cwAJt9Vk6TVsK60ry7Uj3SRS3bqRRIGuTp9YVlk6WNA==", "dev": true, "license": "ISC", "dependencies": { "hosted-git-info": "^9.0.0", "proc-log": "^6.0.0", "semver": "^7.3.5", "validate-npm-package-name": "^7.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm-packlist": { "version": "10.0.3", "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-10.0.3.tgz", "integrity": "sha512-zPukTwJMOu5X5uvm0fztwS5Zxyvmk38H/LfidkOMt3gbZVCyro2cD/ETzwzVPcWZA3JOyPznfUN/nkyFiyUbxg==", "dev": true, "license": "ISC", "dependencies": { "ignore-walk": "^8.0.0", "proc-log": "^6.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm-pick-manifest": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-11.0.3.tgz", "integrity": "sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ==", "dev": true, "license": "ISC", "dependencies": { "npm-install-checks": "^8.0.0", "npm-normalize-package-bin": "^5.0.0", "npm-package-arg": "^13.0.0", "semver": "^7.3.5" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/npm-registry-fetch": { "version": "19.1.1", "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-19.1.1.tgz", "integrity": "sha512-TakBap6OM1w0H73VZVDf44iFXsOS3h+L4wVMXmbWOQroZgFhMch0juN6XSzBNlD965yIKvWg2dfu7NSiaYLxtw==", "dev": true, "license": "ISC", "dependencies": { "@npmcli/redact": "^4.0.0", "jsonparse": "^1.3.1", "make-fetch-happen": "^15.0.0", "minipass": "^7.0.2", "minipass-fetch": "^5.0.0", "minizlib": "^3.0.1", "npm-package-arg": "^13.0.0", "proc-log": "^6.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, "engines": { "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "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, "license": "(WTFPL OR MIT)", "bin": { "opener": "bin/opener-bin.js" } }, "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, "license": "MIT", "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, "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-map": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", "dev": true, "license": "MIT", "engines": { "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "dev": true, "license": "BlueOak-1.0.0" }, "node_modules/pacote": { "version": "21.3.1", "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.3.1.tgz", "integrity": "sha512-O0EDXi85LF4AzdjG74GUwEArhdvawi/YOHcsW6IijKNj7wm8IvEWNF5GnfuxNpQ/ZpO3L37+v8hqdVh8GgWYhg==", "dev": true, "license": "ISC", "dependencies": { "@npmcli/git": "^7.0.0", "@npmcli/installed-package-contents": "^4.0.0", "@npmcli/package-json": "^7.0.0", "@npmcli/promise-spawn": "^9.0.0", "@npmcli/run-script": "^10.0.0", "cacache": "^20.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", "npm-package-arg": "^13.0.0", "npm-packlist": "^10.0.1", "npm-pick-manifest": "^11.0.1", "npm-registry-fetch": "^19.0.0", "proc-log": "^6.0.0", "promise-retry": "^2.0.1", "sigstore": "^4.0.0", "ssri": "^13.0.0", "tar": "^7.4.3" }, "bin": { "pacote": "bin/index.js" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/patch-console": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/patch-console/-/patch-console-2.0.0.tgz", "integrity": "sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==", "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, "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, "license": "MIT", "engines": { "node": ">=8" } }, "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, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-scurry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" }, "engines": { "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/picomatch": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/pirates": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/polite-json": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/polite-json/-/polite-json-5.0.0.tgz", "integrity": "sha512-OLS/0XeUAcE8a2fdwemNja+udKgXNnY6yKVIXqAD2zVRx1KvY6Ato/rZ2vdzbxqYwPW0u6SCNC/bAMPNzpzxbw==", "dev": true, "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/prettier": { "version": "3.8.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", "dev": true, "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, "engines": { "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/prismjs": { "version": "1.30.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/prismjs-terminal": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/prismjs-terminal/-/prismjs-terminal-1.2.4.tgz", "integrity": "sha512-S2nsjy6s2x2jF4uTW8ulX19rvmRfe9R1wmnNwI5wmBgQEErB0vuKueVPMzN6KsFRCCJ2IQrWUS0BqhcNsrR9xg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "chalk": "^5.2.0", "prismjs": "^1.30.0", "string-length": "^6.0.0" }, "engines": { "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/proc-log": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", "dev": true, "license": "ISC", "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/process-on-spawn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.1.0.tgz", "integrity": "sha512-JOnOPQ/8TZgjs1JIH/m9ni7FfimjNa/PRx7y/Wb5qdItsnhO0jE4AT7fC0HjC28DUQWDr50dwSYZLdRMlqDq3Q==", "dev": true, "license": "MIT", "dependencies": { "fromentries": "^1.2.0" }, "engines": { "node": ">=8" } }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, "license": "MIT", "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" }, "engines": { "node": ">=10" } }, "node_modules/punycode.js": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/react": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" }, "peerDependencies": { "react": "^18.3.1" } }, "node_modules/react-element-to-jsx-string": { "version": "15.0.0", "resolved": "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz", "integrity": "sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==", "dev": true, "license": "MIT", "dependencies": { "@base2/pretty-print-object": "1.0.1", "is-plain-object": "5.0.0", "react-is": "18.1.0" }, "peerDependencies": { "react": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0", "react-dom": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0" } }, "node_modules/react-is": { "version": "18.1.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", "dev": true, "license": "MIT" }, "node_modules/react-reconciler": { "version": "0.29.2", "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.29.2.tgz", "integrity": "sha512-zZQqIiYgDCTP/f1N/mAR10nJGrPD2ZR+jDSEsKWJHYC7Cm2wodlwbR3upZRdC3cjIjSlTLNVyO7Iu0Yy7t2AYg==", "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" }, "engines": { "node": ">=0.10.0" }, "peerDependencies": { "react": "^18.3.1" } }, "node_modules/readdirp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, "license": "MIT", "engines": { "node": ">= 14.18.0" }, "funding": { "type": "individual", "url": "https://paulmillr.com/funding/" } }, "node_modules/reghex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/reghex/-/reghex-3.0.2.tgz", "integrity": "sha512-Zb9DJ5u6GhgqRSBnxV2QSnLqEwcKxHWFA1N2yUa4ZUAO1P8jlWKYtWZ6/ooV6yylspGXJX0O/uNzEv0xrCtwaA==", "dev": true, "license": "MIT" }, "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, "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/resolve-import": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/resolve-import/-/resolve-import-2.1.1.tgz", "integrity": "sha512-pgTo41KMWjSZNNA4Ptgs+AtB+/w+a2/MDm6VzZiEnt2op2rXHYK/EYdRYhBsPlGN1naYMogJopBoJxtHgGTHEA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "glob": "^13.0.0", "walk-up-path": "^4.0.0" }, "engines": { "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/restore-cursor": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", "dev": true, "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" }, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/restore-cursor/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, "license": "ISC" }, "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/rimraf": { "version": "6.1.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz", "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "glob": "^13.0.3", "package-json-from-dist": "^1.0.1" }, "bin": { "rimraf": "dist/esm/bin.mjs" }, "engines": { "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "license": "MIT", "optional": true }, "node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" } }, "node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, "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, "license": "MIT", "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, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "license": "ISC", "engines": { "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/sigstore": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-4.1.0.tgz", "integrity": "sha512-/fUgUhYghuLzVT/gaJoeVehLCgZiUxPCPMcyVNY0lIf/cTCz58K/WTI7PefDarXxp9nUKpEwg1yyz3eSBMTtgA==", "dev": true, "license": "Apache-2.0", "dependencies": { "@sigstore/bundle": "^4.0.0", "@sigstore/core": "^3.1.0", "@sigstore/protobuf-specs": "^0.5.0", "@sigstore/sign": "^4.1.0", "@sigstore/tuf": "^4.0.1", "@sigstore/verify": "^3.1.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/slice-ansi": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" }, "engines": { "node": ">=18" }, "funding": { "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", "dev": true, "license": "MIT", "dependencies": { "get-east-asian-width": "^1.3.1" }, "engines": { "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" } }, "node_modules/socks": { "version": "2.8.7", "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", "dev": true, "license": "MIT", "dependencies": { "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" }, "engines": { "node": ">= 10.0.0", "npm": ">= 3.0.0" } }, "node_modules/socks-proxy-agent": { "version": "8.0.5", "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", "dev": true, "license": "MIT", "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" }, "engines": { "node": ">= 14" } }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-exceptions": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true, "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-license-ids": { "version": "3.0.22", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", "dev": true, "license": "CC0-1.0" }, "node_modules/ssri": { "version": "13.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.1.tgz", "integrity": "sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==", "dev": true, "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "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, "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" }, "engines": { "node": ">=10" } }, "node_modules/string-length": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-6.0.0.tgz", "integrity": "sha512-1U361pxZHEQ+FeSjzqRpV+cu2vTzYeWeafXFLykiFlv4Vc0n3njgU8HrMbyik5uwm77naWMuVG8fhEF+Ovb1Kg==", "dev": true, "license": "MIT", "dependencies": { "strip-ansi": "^7.1.0" }, "engines": { "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/string-width": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" }, "engines": { "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/string-width-cjs": { "name": "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, "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/string-width-cjs/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, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/string-width-cjs/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, "license": "MIT" }, "node_modules/string-width-cjs/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, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/string-width-cjs/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, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, "node_modules/strip-ansi": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/strip-ansi-cjs": { "name": "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, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, "node_modules/strip-ansi-cjs/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, "license": "MIT", "engines": { "node": ">=8" } }, "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, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/sync-content": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/sync-content/-/sync-content-2.0.4.tgz", "integrity": "sha512-w3ioiBmbaogob33WdLnuwFk+8tpePI58CTWKqtdAgEqc2hfGuSwP02gPETqNX/3PLS5skv5a1wQR0gbaa2W0XQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "glob": "^13.0.1", "mkdirp": "^3.0.1", "path-scurry": "^2.0.0", "rimraf": "^6.0.0" }, "bin": { "sync-content": "dist/esm/bin.mjs" }, "engines": { "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/tap": { "version": "21.5.1", "resolved": "https://registry.npmjs.org/tap/-/tap-21.5.1.tgz", "integrity": "sha512-uhS20sTR4Q+/T2ovawxgVLjdsTQuU+xFz9htRwlx5jwkaWiv+1xes/0ZW5IlO+hlQp9iQH3rj30FNRlnN2ZVtw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@tapjs/after": "3.3.1", "@tapjs/after-each": "4.3.1", "@tapjs/asserts": "4.3.1", "@tapjs/before": "4.3.1", "@tapjs/before-each": "4.3.1", "@tapjs/chdir": "3.3.1", "@tapjs/core": "4.4.1", "@tapjs/filter": "4.3.1", "@tapjs/fixture": "4.3.1", "@tapjs/intercept": "4.3.1", "@tapjs/mock": "4.3.1", "@tapjs/node-serialize": "4.3.1", "@tapjs/run": "4.4.1", "@tapjs/snapshot": "4.3.1", "@tapjs/spawn": "4.3.1", "@tapjs/stdin": "4.3.1", "@tapjs/test": "4.3.1", "@tapjs/typescript": "3.5.1", "@tapjs/worker": "4.3.1", "resolve-import": "^2.1.1" }, "bin": { "tap": "dist/esm/run.mjs" }, "engines": { "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/tap-parser": { "version": "18.3.0", "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-18.3.0.tgz", "integrity": "sha512-sa0M18e6RARfO0Lrm1zbQvb+7G4G/ThkFIJFvjeH1DKenl4xwyUgpRUCb5Jq64Xe086p4auiLvRzfpRjGd3Zow==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "events-to-array": "^2.0.3", "tap-yaml": "4.3.0" }, "bin": { "tap-parser": "bin/cmd.cjs" }, "engines": { "node": "20 || >=22" } }, "node_modules/tap-yaml": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-4.3.0.tgz", "integrity": "sha512-48BiwXj3cUa1Lt6BLzfawJGZVihfRCY19gyjaHftQpe8ulEmB9gZW9kChQkdb0+L4YUlGWUJMpWRAJ/9bPSgVA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "yaml": "^2.8.1", "yaml-types": "^0.4.0" }, "engines": { "node": "20 || >=22" } }, "node_modules/tar": { "version": "7.5.9", "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.9.tgz", "integrity": "sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" }, "engines": { "node": ">=18" } }, "node_modules/tcompare": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.3.0.tgz", "integrity": "sha512-6kFTU2xlXNFU88/DAAIQvjBu5znTGx8QPnFtaKiLin2OtspHXyevSu0iUTZt4UrSfuRC6fIahRCqaQIhXlsTVQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "diff": "^8.0.2", "react-element-to-jsx-string": "^15.0.0" }, "engines": { "node": "20 || >=22" } }, "node_modules/test-exclude": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", "dev": true, "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^10.4.1", "minimatch": "^9.0.4" }, "engines": { "node": ">=18" } }, "node_modules/test-exclude/node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { "node": ">=12" } }, "node_modules/test-exclude/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==", "dev": true, "license": "MIT" }, "node_modules/test-exclude/node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/test-exclude/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true, "license": "MIT" }, "node_modules/test-exclude/node_modules/foreground-child": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "license": "ISC", "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/test-exclude/node_modules/glob": { "version": "10.5.0", "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/test-exclude/node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, "funding": { "url": "https://github.com/sponsors/isaacs" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/test-exclude/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, "license": "ISC" }, "node_modules/test-exclude/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/test-exclude/node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/test-exclude/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" }, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/test-exclude/node_modules/wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" }, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" }, "engines": { "node": ">=12.0.0" }, "funding": { "url": "https://github.com/sponsors/SuperchupuDev" } }, "node_modules/trivial-deferred": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-2.0.0.tgz", "integrity": "sha512-iGbM7X2slv9ORDVj2y2FFUq3cP/ypbtu2nQ8S38ufjL0glBABvmR9pTdsib1XtS2LUhhLMbelaBUaf/s5J3dSw==", "dev": true, "license": "ISC", "engines": { "node": ">= 8" } }, "node_modules/tshy": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/tshy/-/tshy-3.3.1.tgz", "integrity": "sha512-5X4g0Jy1Ff5ugZXAb82wivsk+ROmMiawcJJ7l07685SqLwsdWa7OzgkNzI2n4v4ARVmCHOjf8WJ9DaV8/IYseQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@typescript/native-preview": "^7.0.0-dev.20260218.1", "chalk": "^5.6.2", "chokidar": "^4.0.3", "foreground-child": "^4.0.0", "jsonc-simple-parser": "^3.0.0", "minimatch": "^10.0.3", "mkdirp": "^3.0.1", "polite-json": "^5.0.0", "resolve-import": "^2.1.1", "rimraf": "^6.1.2", "sync-content": "^2.0.3", "typescript": "^5.9.3", "walk-up-path": "^4.0.0" }, "bin": { "tshy": "dist/esm/bin-min.mjs" }, "engines": { "node": "20 || >=22" } }, "node_modules/tuf-js": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-4.1.0.tgz", "integrity": "sha512-50QV99kCKH5P/Vs4E2Gzp7BopNV+KzTXqWeaxrfu5IQJBOULRsTIS9seSsOVT8ZnGXzCyx55nYWAi4qJzpZKEQ==", "dev": true, "license": "MIT", "dependencies": { "@tufjs/models": "4.1.0", "debug": "^4.4.3", "make-fetch-happen": "^15.0.1" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/type-fest": { "version": "4.41.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/typedoc": { "version": "0.28.17", "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.17.tgz", "integrity": "sha512-ZkJ2G7mZrbxrKxinTQMjFqsCoYY6a5Luwv2GKbTnBCEgV2ihYm5CflA9JnJAwH0pZWavqfYxmDkFHPt4yx2oDQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@gerrit0/mini-shiki": "^3.17.0", "lunr": "^2.3.9", "markdown-it": "^14.1.0", "minimatch": "^9.0.5", "yaml": "^2.8.1" }, "bin": { "typedoc": "bin/typedoc" }, "engines": { "node": ">= 18", "pnpm": ">= 10" }, "peerDependencies": { "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x" } }, "node_modules/typedoc/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==", "dev": true, "license": "MIT" }, "node_modules/typedoc/node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/typedoc/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { "node": ">=14.17" } }, "node_modules/uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", "dev": true, "license": "MIT" }, "node_modules/undici-types": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "dev": true, "license": "MIT" }, "node_modules/unique-filename": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-5.0.0.tgz", "integrity": "sha512-2RaJTAvAb4owyjllTfXzFClJ7WsGxlykkPvCr9pA//LD9goVq+m4PPAeBgNodGZ7nSrntT/auWpJ6Y5IFXcfjg==", "dev": true, "license": "ISC", "dependencies": { "unique-slug": "^6.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/unique-slug": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-6.0.0.tgz", "integrity": "sha512-4Lup7Ezn8W3d52/xBhZBVdx323ckxa7DEvd9kPQHppTkLoJXw6ltrBCyj5pnrxj0qKDxYMJ56CoxNuFCscdTiw==", "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" }, "engines": { "node": "^20.17.0 || >=22.9.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, "license": "MIT", "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, "license": "MIT" }, "node_modules/v8-to-istanbul": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^2.0.0" }, "engines": { "node": ">=10.12.0" } }, "node_modules/v8-to-istanbul/node_modules/@jridgewell/trace-mapping": { "version": "0.3.31", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, "node_modules/validate-npm-package-name": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz", "integrity": "sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==", "dev": true, "license": "ISC", "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/walk-up-path": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-4.0.0.tgz", "integrity": "sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==", "license": "ISC", "engines": { "node": "20 || >=22" } }, "node_modules/which": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" }, "engines": { "node": "^18.17.0 || >=20.5.0" } }, "node_modules/widest-line": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", "dev": true, "license": "MIT", "dependencies": { "string-width": "^7.0.0" }, "engines": { "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/wrap-ansi": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" }, "engines": { "node": ">=18" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/wrap-ansi-cjs": { "name": "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, "license": "MIT", "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/wrap-ansi-cjs/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, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/wrap-ansi-cjs/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, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/wrap-ansi-cjs/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, "license": "MIT" }, "node_modules/wrap-ansi-cjs/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, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/wrap-ansi-cjs/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, "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/wrap-ansi-cjs/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, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, "node_modules/ws": { "version": "8.19.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", "dev": true, "license": "MIT", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { "optional": true }, "utf-8-validate": { "optional": true } } }, "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, "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yallist": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=18" } }, "node_modules/yaml": { "version": "2.8.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", "dev": true, "license": "ISC", "bin": { "yaml": "bin.mjs" }, "engines": { "node": ">= 14.6" }, "funding": { "url": "https://github.com/sponsors/eemeli" } }, "node_modules/yaml-types": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/yaml-types/-/yaml-types-0.4.0.tgz", "integrity": "sha512-XfbA30NUg4/LWUiplMbiufUiwYhgB9jvBhTWel7XQqjV+GaB79c2tROu/8/Tu7jO0HvDvnKWtBk5ksWRrhQ/0g==", "dev": true, "license": "ISC", "engines": { "node": ">= 16", "npm": ">= 7" }, "peerDependencies": { "yaml": "^2.3.0" } }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" }, "engines": { "node": ">=12" } }, "node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/yargs/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, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/yargs/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, "license": "MIT" }, "node_modules/yargs/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, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/yargs/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, "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/yargs/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, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, "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, "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/yoga-layout": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/yoga-layout/-/yoga-layout-3.2.1.tgz", "integrity": "sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==", "dev": true, "license": "MIT" } } } isaacs-resolve-import-299e0c4/package.json000066400000000000000000000162471514541135200206040ustar00rootroot00000000000000{ "name": "resolve-import", "version": "2.4.0", "description": "Look up the file that an `import()` statement will resolve to, possibly relative to a given parentURL", "author": "Isaac Z. Schlueter (https://blog.izs.me)", "repository": { "type": "git", "url": "git://github.com/isaacs/resolve-import.git" }, "type": "module", "tshy": { "compiler": "tsgo", "selfLink": false, "exports": { "./package.json": "./package.json", "./raw": "./src/index.ts", ".": { "import": { "types": "./dist/esm/index.d.ts", "default": "./dist/esm/index.min.js" }, "require": { "types": "./dist/commonjs/index.d.ts", "default": "./dist/commonjs/index.min.js" } }, "./resolve-import-async": { "import": { "types": "./dist/esm/resolve-import-async.d.ts", "default": "./dist/esm/resolve-import-async.min.js" }, "require": { "types": "./dist/commonjs/resolve-import-async.d.ts", "default": "./dist/commonjs/resolve-import-async.min.js" } }, "./resolve-import-sync": { "import": { "types": "./dist/esm/resolve-import-sync.d.ts", "default": "./dist/esm/resolve-import-sync.min.js" }, "require": { "types": "./dist/commonjs/resolve-import-sync.d.ts", "default": "./dist/commonjs/resolve-import-sync.min.js" } }, "./resolve-import": "./src/resolve-import.ts", "./is-relative-require": "./src/is-relative-require.ts", "./resolve-conditional-value": "./src/resolve-conditional-value.ts", "./resolve-all-exports": "./src/resolve-all-exports.ts", "./resolve-all-local-imports": "./src/resolve-all-local-imports.ts", "./get-unique-condition-sets": "./src/get-unique-condition-sets.ts", "./get-all-conditions": "./src/get-all-conditions.ts", "./get-all-conditional-values": "./src/get-all-conditional-values.ts", "./get-conditional-values-list": "./src/get-conditional-values-list.ts" } }, "files": [ "dist" ], "license": "BlueOak-1.0.0", "scripts": { "preversion": "npm test", "postversion": "npm publish", "prepublishOnly": "git push origin --follow-tags", "prepare": "tshy && bash scripts/build.sh", "pretest": "npm run prepare", "presnap": "npm run prepare", "test": "tap", "snap": "tap", "format": "prettier --write . --loglevel warn", "typedoc": "typedoc" }, "engines": { "node": "20 || >=22" }, "dependencies": { "glob": "^13.0.0", "walk-up-path": "^4.0.0" }, "devDependencies": { "@types/node": "^25.2.3", "esbuild": "^0.27.3", "prettier": "^3.6.2", "tap": "^21.5.1", "tshy": "^3.3.1", "typedoc": "^0.28.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" }, "main": "./dist/commonjs/index.min.js", "types": "./dist/commonjs/index.d.ts", "module": "./dist/esm/index.min.js", "exports": { "./package.json": "./package.json", "./raw": { "import": { "types": "./dist/esm/index.d.ts", "default": "./dist/esm/index.js" }, "require": { "types": "./dist/commonjs/index.d.ts", "default": "./dist/commonjs/index.js" } }, ".": { "import": { "types": "./dist/esm/index.d.ts", "default": "./dist/esm/index.min.js" }, "require": { "types": "./dist/commonjs/index.d.ts", "default": "./dist/commonjs/index.min.js" } }, "./resolve-import-async": { "import": { "types": "./dist/esm/resolve-import-async.d.ts", "default": "./dist/esm/resolve-import-async.min.js" }, "require": { "types": "./dist/commonjs/resolve-import-async.d.ts", "default": "./dist/commonjs/resolve-import-async.min.js" } }, "./resolve-import-sync": { "import": { "types": "./dist/esm/resolve-import-sync.d.ts", "default": "./dist/esm/resolve-import-sync.min.js" }, "require": { "types": "./dist/commonjs/resolve-import-sync.d.ts", "default": "./dist/commonjs/resolve-import-sync.min.js" } }, "./resolve-import": { "import": { "types": "./dist/esm/resolve-import.d.ts", "default": "./dist/esm/resolve-import.js" }, "require": { "types": "./dist/commonjs/resolve-import.d.ts", "default": "./dist/commonjs/resolve-import.js" } }, "./is-relative-require": { "import": { "types": "./dist/esm/is-relative-require.d.ts", "default": "./dist/esm/is-relative-require.js" }, "require": { "types": "./dist/commonjs/is-relative-require.d.ts", "default": "./dist/commonjs/is-relative-require.js" } }, "./resolve-conditional-value": { "import": { "types": "./dist/esm/resolve-conditional-value.d.ts", "default": "./dist/esm/resolve-conditional-value.js" }, "require": { "types": "./dist/commonjs/resolve-conditional-value.d.ts", "default": "./dist/commonjs/resolve-conditional-value.js" } }, "./resolve-all-exports": { "import": { "types": "./dist/esm/resolve-all-exports.d.ts", "default": "./dist/esm/resolve-all-exports.js" }, "require": { "types": "./dist/commonjs/resolve-all-exports.d.ts", "default": "./dist/commonjs/resolve-all-exports.js" } }, "./resolve-all-local-imports": { "import": { "types": "./dist/esm/resolve-all-local-imports.d.ts", "default": "./dist/esm/resolve-all-local-imports.js" }, "require": { "types": "./dist/commonjs/resolve-all-local-imports.d.ts", "default": "./dist/commonjs/resolve-all-local-imports.js" } }, "./get-unique-condition-sets": { "import": { "types": "./dist/esm/get-unique-condition-sets.d.ts", "default": "./dist/esm/get-unique-condition-sets.js" }, "require": { "types": "./dist/commonjs/get-unique-condition-sets.d.ts", "default": "./dist/commonjs/get-unique-condition-sets.js" } }, "./get-all-conditions": { "import": { "types": "./dist/esm/get-all-conditions.d.ts", "default": "./dist/esm/get-all-conditions.js" }, "require": { "types": "./dist/commonjs/get-all-conditions.d.ts", "default": "./dist/commonjs/get-all-conditions.js" } }, "./get-all-conditional-values": { "import": { "types": "./dist/esm/get-all-conditional-values.d.ts", "default": "./dist/esm/get-all-conditional-values.js" }, "require": { "types": "./dist/commonjs/get-all-conditional-values.d.ts", "default": "./dist/commonjs/get-all-conditional-values.js" } }, "./get-conditional-values-list": { "import": { "types": "./dist/esm/get-conditional-values-list.d.ts", "default": "./dist/esm/get-conditional-values-list.js" }, "require": { "types": "./dist/commonjs/get-conditional-values-list.d.ts", "default": "./dist/commonjs/get-conditional-values-list.js" } } } } isaacs-resolve-import-299e0c4/scripts/000077500000000000000000000000001514541135200177735ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/scripts/build.sh000066400000000000000000000017721514541135200214350ustar00rootroot00000000000000#!/usr/bin/env bash esbuild \ --minify \ --platform=node \ --sourcemap \ --bundle dist/commonjs/index.js \ --outfile=dist/commonjs/index.min.js \ --format=cjs esbuild \ --minify \ --platform=node \ --sourcemap \ --bundle dist/esm/index.js \ --outfile=dist/esm/index.min.js \ --format=esm esbuild \ --minify \ --platform=node \ --sourcemap \ --bundle dist/commonjs/resolve-import-sync.js \ --outfile=dist/commonjs/resolve-import-sync.min.js \ --format=cjs esbuild \ --minify \ --platform=node \ --sourcemap \ --bundle dist/esm/resolve-import-sync.js \ --outfile=dist/esm/resolve-import-sync.min.js \ --format=esm esbuild \ --minify \ --platform=node \ --sourcemap \ --bundle dist/commonjs/resolve-import-async.js \ --outfile=dist/commonjs/resolve-import-async.min.js \ --format=cjs esbuild \ --minify \ --platform=node \ --sourcemap \ --bundle dist/esm/resolve-import-async.js \ --outfile=dist/esm/resolve-import-async.min.js \ --format=esm isaacs-resolve-import-299e0c4/src/000077500000000000000000000000001514541135200170735ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/src/errors.ts000066400000000000000000000051041514541135200207570ustar00rootroot00000000000000/** * Errors raised by resolve failures. * @module */ import { resolveImport } from './resolve-import.js' // TODO: move "caller" to an options object. Then the same options object can // be used that handles conditions, parentURL, etc., and the relevant // top-level function can set it explicitly at the start of the process and // just pass it along. export const invalidImportSpecifier = ( url: string, caller: (...a: any[]) => any = resolveImport, ) => { const er = new Error('invalid import() specifier: ' + url) Error.captureStackTrace(er, caller) return er } export const invalidPackage = ( pj: string | URL, caller: (...a: any[]) => any = resolveImport, ) => { const er = new Error(`Not a valid package: ${pj}`) Error.captureStackTrace(er, caller) return er } export const relativeImportWithoutParentURL = ( url: string, parentURL: any, caller: (...a: any[]) => any = resolveImport, ) => { const er = Object.assign( new Error('relative import without parentURL'), { url, parentURL, }, ) Error.captureStackTrace(er, caller) return er } export const subpathNotExported = ( sub: string, pj: string, from: string, caller: (...a: any[]) => any = resolveImport, ) => { const p = sub === '.' ? 'No "exports" main defined' : `Package subpath '${sub}' is not defined by "exports"` const er = Object.assign( new Error(`${p} in ${pj} imported from ${from}`), { code: 'ERR_PACKAGE_PATH_NOT_EXPORTED', }, ) Error.captureStackTrace(er, caller) return er } export const packageNotFound = ( path: string | null, from: string, caller: (...a: any[]) => any = resolveImport, ) => { const er = Object.assign( new Error(`Cannot find package '${path}' imported from ${from}`), { code: 'ERR_MODULE_NOT_FOUND', }, ) Error.captureStackTrace(er, caller) return er } export const moduleNotFound = ( path: string, from: string, caller: (...a: any[]) => any = resolveImport, ) => { const er = Object.assign( new Error(`Cannot find module '${path}' imported from ${from}`), { code: 'ERR_MODULE_NOT_FOUND', }, ) Error.captureStackTrace(er, caller) return er } export const packageImportNotDefined = ( path: string, pj: string, from: string, caller: (...a: any[]) => any = resolveImport, ) => { const er = Object.assign( new Error( `Package import specifier "${path}" is not defined in package ` + `${pj} imported from ${from}`, ), { code: 'ERR_PACKAGE_IMPORT_NOT_DEFINED' }, ) Error.captureStackTrace(er, caller) return er } isaacs-resolve-import-299e0c4/src/file-exists.ts000066400000000000000000000010331514541135200216740ustar00rootroot00000000000000import { stat } from 'node:fs/promises' import { statSync } from 'node:fs' import { fileURLToPath } from 'node:url' const toPath = (p: string | URL) => typeof p === 'object' || p.startsWith('file://') ? fileURLToPath(p) : p export const fileExists = async (f: string | URL): Promise => { try { return (await stat(toPath(f))).isFile() } catch (er) { return false } } export const fileExistsSync = (f: string | URL): boolean => { try { return statSync(toPath(f)).isFile() } catch { return false } } isaacs-resolve-import-299e0c4/src/find-dep-package.ts000066400000000000000000000043321514541135200225240ustar00rootroot00000000000000import { realpathSync, statSync } from 'node:fs' import { realpath, stat } from 'node:fs/promises' import { dirname, resolve, sep } from 'node:path' import { walkUp } from 'walk-up-path' const dirExists = async (f: string): Promise => { try { return (await stat(f)).isDirectory() } catch { return false } } const dirExistsSync = (f: string): boolean => { try { return statSync(f).isDirectory() } catch { return false } } export const findDepPackage = async ( pkgName: string | null, parentPath: string, ) => { // starting from the dirname, try to find the nearest node_modules for (const dir of walkUp(dirname(parentPath))) { const nm = resolve(dir, 'node_modules') + sep // if it's null, then we need the node_modules itself // if it's '' then we use node_modules with an extra / on it // thisis only relevant when generating the error message, since // of course node_modules// is never going to be a valid package. const ppath = pkgName === null ? nm : (!pkgName ? nm : resolve(nm, pkgName)) + sep if (await dirExists(ppath)) { try { return (await realpath(ppath)) + sep // the direxists stat will avoid almost all throws that could // occur here, but just in case. /* c8 ignore start */ } catch {} /* c8 ignore stop */ } } } export const findDepPackageSync = ( pkgName: string | null, parentPath: string, ) => { // starting from the dirname, try to find the nearest node_modules for (const dir of walkUp(dirname(parentPath))) { const nm = resolve(dir, 'node_modules') + sep // if it's null, then we need the node_modules itself // if it's '' then we use node_modules with an extra / on it // thisis only relevant when generating the error message, since // of course node_modules// is never going to be a valid package. const ppath = pkgName === null ? nm : (!pkgName ? nm : resolve(nm, pkgName)) + sep if (dirExistsSync(ppath)) { try { return realpathSync(ppath) + sep // the direxists stat will avoid almost all throws that could // occur here, but just in case. /* c8 ignore start */ } catch {} /* c8 ignore stop */ } } } isaacs-resolve-import-299e0c4/src/find-star-match.ts000066400000000000000000000014671514541135200224340ustar00rootroot00000000000000/** * Given an object with string keys possibly containing *, and a test * string, return the matching key, and the section that the star should * expand to when matching against the test string. */ export const findStarMatch = ( s: string, obj: Record, ): [string, string] | null => { // longest pattern matches take priority const patterns = Object.keys(obj) .filter(p => p.length <= s.length) .sort((a, b) => b.length - a.length) .map(p => [p, p.split('*')]) .filter(([, p]) => (p as string[]).length === 2) as [ string, [string, string], ][] for (const [key, [before, after]] of patterns) { if (s.startsWith(before) && s.endsWith(after)) { const mid = s.substring(before.length, s.length - after.length) return [key, mid] } } return null } isaacs-resolve-import-299e0c4/src/get-all-conditional-values.ts000066400000000000000000000025231514541135200245700ustar00rootroot00000000000000/** * Exported as `'resolve-import/get-all-conditional-values'` * @module */ import { getConditionalValuesList } from './get-conditional-values-list.js' import { Exports, Imports } from './index.js' /** * Given an `exports` or `imports` value from a package, return the list of all * possible conditional values that it might potentially resolve to, for any * possible set of import conditions. * * Filters out cases that are unreachable, such as conditions that appear after * a `default` value, or after a set of conditions that would have been * satisfied previously. * * For example: * * ```json * { * "import": { "node": "./x.js" }, * "node": { "import": { "blah": "./y.js" } } * } * ``` * * Will return `['./x.js']`, omitting the unreachable `'./y.js'`, because the * conditions ['import','node','blah'] would have been satisfied by the earlier * condition. * * Note that this does *not* mean that the target actually can be imported, as * it may not exist, be an incorrect module type, etc. * * Star values are not expanded. For that, use `resolveAllExports` or * `resolveAllLocalImports`. */ export const getAllConditionalValues = ( importsExports: Imports | Exports, ): string[] => [ ...new Set( getConditionalValuesList(importsExports) .map(([_, __, c]) => c) .filter(c => !!c) as string[], ), ] isaacs-resolve-import-299e0c4/src/get-all-conditions.ts000066400000000000000000000054111514541135200231400ustar00rootroot00000000000000/** * Exported as `'resolve-import/get-all-conditions'` * @module */ import { ConditionalValue, Exports, Imports } from './index.js' /** * Given an `exports` or `imports` value from a package, return the list of * conditions that it is sensitive to. * * `default` is not included in the returned list, since that's always * effectively relevant. * * Note that a condition being returned by this method does not mean * that the export/import object actually has a *target* for that condition, * since it may map to `null`, be nested under another condition, etc. But it * does potentially have some kind of conditional behavior for all the * conditions returned. * * Ordering of returned conditions is arbitrary, and does not imply precedence * or object shape. */ export const getAllConditions = ( importsExports: Imports | Exports, ): string[] => { if ( !!importsExports && typeof importsExports === 'object' && !Array.isArray(importsExports) ) { let subs: string | undefined = undefined const conditions: string[] = [] for (const [k, v] of Object.entries(importsExports)) { /* c8 ignore start */ if (!k) continue /* c8 ignore stop */ if (subs === undefined) { if (!k.startsWith('#') && k !== '.' && !k.startsWith('./')) { return getAllConditionsFromCond( importsExports as ConditionalValue, ) } subs = k.charAt(0) } if ( // imports have to be # (subs === '#' && (k === '#' || !k.startsWith('#'))) || // exports can be ./ or . (subs === '.' && k !== '.' && !k.startsWith('./')) ) { throw new Error( `invalid ${ subs === '.' ? 'exports' : 'imports' } object, all keys ` + `must start with ${subs}. Found ${k}.`, ) } conditions.push(...getAllConditionsFromCond(v)) } return [...new Set(conditions)] } return getAllConditionsFromCond(importsExports as ConditionalValue) } const getAllConditionsFromCond = (cond?: ConditionalValue): string[] => { if (!cond || typeof cond === 'string') return [] if (Array.isArray(cond)) { const conditions: string[] = [] for (const e of cond) { if (!e || typeof e === 'string') break conditions.push(...getAllConditionsFromCond(e)) } return [...new Set(conditions)] } const conditions: string[] = [] for (const [k, v] of Object.entries(cond)) { if (k.startsWith('#') || k === '.' || k.startsWith('./')) { throw new Error(`Expected valid import condition, got: ${k}`) } // anything after 'default' isn't relevant conditions.push(...getAllConditionsFromCond(v)) if (k === 'default') break else conditions.push(k) } return [...new Set(conditions)] } isaacs-resolve-import-299e0c4/src/get-conditional-values-list.ts000066400000000000000000000072701514541135200247770ustar00rootroot00000000000000/** * Exported as `'resolve-import/get-conditional-values-list'` * @module */ import { ConditionalValue, Exports, Imports } from './index.js' export type ConditionalValuesList = [ submodulePath: string, conditions: Set, resolvedValue: string | null, ][] /** * Given an `exports` or `imports` value from a package, return the list of all * possible conditional values that it might potentially resolve to, for any * possible set of import conditions, along with the `Set` of * conditions, any superset of which will result in the condition. * * The list includes null results, since while these are not a valid resolution * per se, they do *prevent* valid resolutions that match the same conditions. */ export const getConditionalValuesList = ( importsExports: Imports | Exports, ): ConditionalValuesList => { if ( !!importsExports && typeof importsExports === 'object' && !Array.isArray(importsExports) ) { let subs: string | undefined = undefined const conditions: ConditionalValuesList = [] for (const [k, v] of Object.entries(importsExports)) { /* c8 ignore start */ if (!k) continue /* c8 ignore stop */ if (subs === undefined) { if (!k.startsWith('#') && k !== '.' && !k.startsWith('./')) { return getConditionalValuesListFromCond( importsExports as ConditionalValue, ).map(s => ['.', ...s]) } subs = k.charAt(0) } if ( // imports have to be # (subs === '#' && (k === '#' || !k.startsWith('#'))) || // exports can be ./ or . (subs === '.' && k !== '.' && !k.startsWith('./')) ) { throw new Error( `invalid ${ subs === '.' ? 'exports' : 'imports' } object, all keys ` + `must start with ${subs}. Found ${k}.`, ) } conditions.push( ...getConditionalValuesListFromCond(v).map( s => [k, ...s] as [string, Set, string | null], ), ) } return conditions } return getConditionalValuesListFromCond( importsExports as ConditionalValue, ).map(s => ['.', ...s]) } const isSubset = (maybeSub: Set, sup: Set) => { if (maybeSub.size > sup.size) return false for (const c of maybeSub) { if (!sup.has(c)) return false } return true } // walk down the tree, creating a list of [Set, value] // if a subset of the current set is already present in the list, then omit it const getConditionalValuesListFromCond = ( cond?: ConditionalValue, path: string[] = [], // path of conditions that got here list: [Set, string | null][] = [], ): [Set, string | null][] => { /* c8 ignore start */ if (cond === undefined) return list /* c8 ignore stop */ if (cond === null || typeof cond === 'string') { // reached a resolution value. // if we got here, we know it has not yet been seen. list.push([new Set(path), cond]) return list } if (Array.isArray(cond)) { for (const c of cond) { getConditionalValuesListFromCond(c, path, list) // if we hit a default condition, break if (!c || typeof c === 'string') break } return list } // ConditionalValueObject for (const [k, v] of Object.entries(cond)) { if (k.startsWith('#') || k === '.' || k.startsWith('./')) { throw new Error(`Expected valid import condition, got: ${k}`) } const p = k === 'default' ? path : path.concat(k) // if no subset seen, then recurse const ps = new Set(p) const seen = list.some(([s]) => isSubset(s, ps)) if (!seen) { getConditionalValuesListFromCond(v, p, list) } if (k === 'default') break } return list } isaacs-resolve-import-299e0c4/src/get-named-exports-list.ts000066400000000000000000000011251514541135200237560ustar00rootroot00000000000000import { Exports, ExportsSubpaths } from './index.js' /** * Get the condition-resolved targets of all exports * * Stars are not expanded. */ export const getNamedExportsList = (exports?: Exports): string[] => { if (!exports) return [] if (!isExportSubpaths(exports)) return ['.'] return Object.keys(exports).filter(e => e === '.' || e.startsWith('./')) } const isExportSubpaths = (e: Exports): e is ExportsSubpaths => { if (!e || typeof e !== 'object' || Array.isArray(e)) return false for (const p in e) { if (p !== '.' && !p.startsWith('./')) return false } return true } isaacs-resolve-import-299e0c4/src/get-unique-condition-sets.ts000066400000000000000000000026301514541135200244670ustar00rootroot00000000000000import { getConditionalValuesList } from './get-conditional-values-list.js' import { Exports, Imports } from './index.js' /** * Get the minimal set of conditions that can potentially produce different * resolution values for a given imports or exports object from a package * manifest. * * For example: * * ```json * { * ".": [{"import":[{"types":"x.d.ts"},"x.mjs"], "require":"y.js"}] * "./a": {"browser":{"require":"./a.js"}}, * "./b": {"browser":"./b.js"}, * "./c": {"require":{"browser":"./c.js"}} * } * ``` * * would return: * ```js * [ * ['import','types'], * ['import'], * ['require'], * ['browser'], * ['browser', 'require'], * ] * ``` * * With the `['require', 'browser']` condition set omitted, as it is already * covered by `['browser', 'require']`. * * Condition ordering is arbitrary and not guaranteed to be consistent. */ export const getUniqueConditionSets = ( importsExports: Imports | Exports, ): string[][] => { const list = getConditionalValuesList(importsExports) let results: string[][] = [] for (const [_, conditions] of list) { if (!results.some(arr => arrayIsEquivalent(arr, conditions))) { results.push([...conditions]) } } return results } const arrayIsEquivalent = (arr: string[], sup: Set) => { if (arr.length !== sup.size) return false for (const c of arr) { if (!sup.has(c)) return false } return true } isaacs-resolve-import-299e0c4/src/index.ts000066400000000000000000000025561514541135200205620ustar00rootroot00000000000000export * from './get-all-conditional-values.js' export * from './get-all-conditions.js' export * from './get-unique-condition-sets.js' export * from './get-conditional-values-list.js' export * from './is-relative-require.js' export * from './resolve-all-exports.js' export * from './resolve-all-exports-sync.js' export * from './resolve-all-local-imports.js' export * from './resolve-all-local-imports-sync.js' export * from './resolve-conditional-value.js' export * from './resolve-import.js' export * from './resolve-import-sync.js' export interface ResolveImportOpts { /** * Used when resolves take multiple steps through dependencies. * * @internal */ originalParent?: string /** * List of conditions to resolve. Defaults to ['import', 'node']. * * If set to ['require', 'node'], then this is functionally equivalent to * `require.resolve()`. * * 'default' is always allowed (except if you pass the negative condition * '!default'). */ conditions?: string[] } export type ConditionalValueObject = { [k: string]: ConditionalValue } export type ConditionalValue = | null | string | ConditionalValueObject | ConditionalValue[] export type ExportsSubpaths = { [path: string]: ConditionalValue } export type Exports = Exclude | ExportsSubpaths export type Imports = { [path: string]: ConditionalValue } isaacs-resolve-import-299e0c4/src/is-relative-require.ts000066400000000000000000000003451514541135200233430ustar00rootroot00000000000000/** * Exported as `'resolve-import/is-relative-require'` * @module */ import { isWindows } from './is-windows.js' export const isRelativeRequire = (url: string) => /^\.\.?\//.test(url) || (isWindows && /^\.\.?\\/.test(url)) isaacs-resolve-import-299e0c4/src/is-windows.ts000066400000000000000000000001421514541135200215430ustar00rootroot00000000000000export const isWindows = typeof process === 'object' && process && process.platform === 'win32' isaacs-resolve-import-299e0c4/src/read-json.ts000066400000000000000000000006001514541135200213210ustar00rootroot00000000000000import { readFile } from 'node:fs/promises' import { readFileSync } from 'node:fs' export const readJSON = async (f: string): Promise => { try { return JSON.parse(await readFile(f, 'utf8')) } catch { return null } } export const readJSONSync = (f: string): unknown => { try { return JSON.parse(readFileSync(f, 'utf8')) } catch { return null } } isaacs-resolve-import-299e0c4/src/read-pkg.ts000066400000000000000000000022261514541135200211370ustar00rootroot00000000000000import { Exports, Imports } from './index.js' import { readJSON, readJSONSync } from './read-json.js' export type Pkg = { name?: string main?: string type?: string module?: string exports?: Exports imports?: Imports } const isExports = (e: any): e is Exports => !!e && (typeof e === 'object' || typeof e === 'string') const isImports = (e: any): e is Exports => { if (!e || typeof e !== 'object' || Array.isArray(e)) return false for (const p in e) { if (!p.startsWith('#')) return false } return true } const isPkg = (o: any): o is Pkg => !!o && typeof o === 'object' && (typeof o.name === 'string' || typeof o.name === 'undefined') && (typeof o.main === 'string' || typeof o.main === 'undefined') && (typeof o.module === 'string' || typeof o.module === 'undefined') && (typeof o.exports === 'undefined' || isExports(o.exports)) && (typeof o.imports === 'undefined' || isImports(o.imports)) const ifPkg = (p: unknown): Pkg | null => (isPkg(p) ? p : null) export const readPkg = async (f: string): Promise => ifPkg(await readJSON(f)) export const readPkgSync = (f: string): Pkg | null => ifPkg(readJSONSync(f)) isaacs-resolve-import-299e0c4/src/resolve-all-exports-sync.ts000066400000000000000000000044041514541135200243460ustar00rootroot00000000000000/** * Exported as `'resolve-import/resolve-all-exports'` * @module */ import { dirname, resolve } from 'path' import { pathToFileURL } from 'url' import { invalidPackage } from './errors.js' import { getNamedExportsList } from './get-named-exports-list.js' import { Exports, ResolveImportOpts } from './index.js' import { readPkgSync } from './read-pkg.js' import { resolveExport } from './resolve-export.js' import { starGlobSync } from './star-glob.js' import { toPath } from './to-path.js' /** * Given a path or file URL to a package.json file, return an object where each * possible export path is mapped to the file URL that it would resolve to. * * Invalid exports are omitted. No errors are raised as long as the file is a * valid `package.json`. * * Note: in cases like `"./x/*": "./file.js"`, where the list of possible * import paths is unbounded, the returned object will contain `"./x/*"` as the * key, since there's no way to expand that to every possible match. */ export const resolveAllExportsSync = ( packageJsonPath: string | URL, options: ResolveImportOpts = {}, ): Record => { const pjPath = toPath(packageJsonPath) const pjDir = dirname(pjPath) const pkg = readPkgSync(pjPath) if (!pkg) { throw invalidPackage(packageJsonPath, resolveAllExportsSync) } const results: Record = {} const { exports } = pkg for (const sub of getNamedExportsList(exports)) { let res // this can't shouldn't be able to actually throw, because we're // pulling the list from the set itself. /* c8 ignore start */ try { res = resolveExport(sub, exports as Exports, pjPath, pjPath, options) } catch {} if (!res) continue /* c8 ignore stop */ // if it contains a *, then we have to glob, // in package.json exports * is actually **, but only // relevant if there is exactly ONE star const sres = res.split('*') const ssub = sub.split('*') if (sres.length === 2 && ssub.length === 2) { for (const [rep, target] of starGlobSync( sres as [string, string], pjDir, )) { results[ssub[0] + rep + ssub[1]] = pathToFileURL(target) } } else { results[sub] = pathToFileURL(resolve(pjDir, res)) } } return results } isaacs-resolve-import-299e0c4/src/resolve-all-exports.ts000066400000000000000000000044651514541135200234030ustar00rootroot00000000000000/** * Exported as `'resolve-import/resolve-all-exports'` * @module */ import { dirname, resolve } from 'path' import { pathToFileURL } from 'url' import { invalidPackage } from './errors.js' import { getNamedExportsList } from './get-named-exports-list.js' import { Exports, ResolveImportOpts } from './index.js' import { readPkg } from './read-pkg.js' import { resolveExport } from './resolve-export.js' import { starGlob } from './star-glob.js' import { toPath } from './to-path.js' export * from './resolve-all-exports-sync.js' /** * Given a path or file URL to a package.json file, return an object where each * possible export path is mapped to the file URL that it would resolve to. * * Invalid exports are omitted. No errors are raised as long as the file is a * valid `package.json`. * * Note: in cases like `"./x/*": "./file.js"`, where the list of possible * import paths is unbounded, the returned object will contain `"./x/*"` as the * key, since there's no way to expand that to every possible match. */ export const resolveAllExports = async ( packageJsonPath: string | URL, options: ResolveImportOpts = {}, ): Promise> => { const pjPath = toPath(packageJsonPath) const pjDir = dirname(pjPath) const pkg = await readPkg(pjPath) if (!pkg) { throw invalidPackage(packageJsonPath, resolveAllExports) } const results: Record = {} const { exports } = pkg for (const sub of getNamedExportsList(exports)) { let res // this can't shouldn't be able to actually throw, because we're // pulling the list from the set itself. /* c8 ignore start */ try { res = resolveExport(sub, exports as Exports, pjPath, pjPath, options) } catch {} if (!res) continue /* c8 ignore stop */ // if it contains a *, then we have to glob, // in package.json exports * is actually **, but only // relevant if there is exactly ONE star const sres = res.split('*') const ssub = sub.split('*') if (sres.length === 2 && ssub.length === 2) { for (const [rep, target] of await starGlob( sres as [string, string], pjDir, )) { results[ssub[0] + rep + ssub[1]] = pathToFileURL(target) } } else { results[sub] = pathToFileURL(resolve(pjDir, res)) } } return results } isaacs-resolve-import-299e0c4/src/resolve-all-local-imports-sync.ts000066400000000000000000000102531514541135200254260ustar00rootroot00000000000000/** * Exported as `'resolve-import/resolve-all-local-imports-sync'` * @module */ import { dirname, resolve } from 'path' import { pathToFileURL } from 'url' import { invalidPackage } from './errors.js' import { fileExistsSync } from './file-exists.js' import { findDepPackageSync } from './find-dep-package.js' import type { ResolveImportOpts } from './index.js' import { Pkg, readPkgSync } from './read-pkg.js' import { resolveAllExportsSync } from './resolve-all-exports-sync.js' import { resolveConditionalValue } from './resolve-conditional-value.js' import { resolveImportSync } from './resolve-import-sync.js' import { starGlobSync } from './star-glob.js' import { toFileURL } from './to-file-url.js' import { toPath } from './to-path.js' /** * Given a path or file URL to a package.json file, return an object where each * possible local import path is mapped to the file URL that it would resolve * to. * * Invalid and non-resolving imports are omitted. */ export const resolveAllLocalImportsSync = ( packageJsonPath: string | URL, options: ResolveImportOpts = {}, ): Record => { const pjPath = toPath(packageJsonPath) const pjDir = dirname(pjPath) const pjURL = toFileURL(packageJsonPath) const pkg = readPkgSync(pjPath) if (!pkg) { throw invalidPackage(packageJsonPath, resolveAllLocalImportsSync) } const results: Record = {} for (const [sub, target] of getNamedImportsList(pkg, options)) { // if the import is local, then look it up // if it's another package, then look up that package // if it's another package with a *, then look up all exports // of that package, and filter by the matches. const parts = target.match(/^(@[^\/]+\/[^\/]+|[^\/]+)/) // make internal package named modules consistently `./` const name = pkg.name // non-matches already filtered out /* c8 ignore start */ if (!parts) continue /* c8 ignore stop */ const ssub = sub.split('*') const starget = target.split('*') as [string, string] const star = ssub.length === 2 && starget.length === 2 if (!star) { // simple case, no * replacement // if not found, just omit it. // do a full resolve, because the target can be anything like // './foo/bar' or 'dep/blah', etc. try { results[sub] = resolveImportSync(target, pjURL) } catch {} continue } // has a star, have to glob if it's localPath, or look up exports if not const localPath = parts[1] === '.' if (localPath) { for (const [rep, target] of starGlobSync(starget, pjDir)) { results[ssub[0] + rep + ssub[1]] = pathToFileURL(target) } continue } const localName = parts[1] === name const dep = !localPath && !localName ? parts[1] : null // if we can't find the package, it's not valid. const ppath = dep ? findDepPackageSync(dep, pjDir) : pjDir if (!ppath) continue const pj = resolve(ppath, 'package.json') if (!fileExistsSync(pj)) { continue } const allExports = resolveAllExportsSync(pj) for (const [k, v] of Object.entries(allExports)) { if (k === '.' || k === './') continue const i = dep + k.substring(1) if (i.startsWith(starget[0]) && i.endsWith(starget[1])) { const s = ssub[0] + i.substring(starget[0].length, i.length - starget[1].length) + ssub[1] // should be impossible to throw, because we're pulling the list // from the package itself, and it gets resolved at that point. /* c8 ignore start */ try { results[s] = resolveImportSync(v, pjURL) } catch {} /* c8 ignore stop */ } } } return results } /** * Get the condition-resolved targets of all imports * * Stars are not expanded. */ const getNamedImportsList = ( pkg: Pkg, options: ResolveImportOpts, ): [string, string][] => { const results: [string, string][] = [] const { imports } = pkg if (!imports || typeof imports !== 'object') return results for (const [k, v] of Object.entries(imports)) { const r = resolveConditionalValue(v, options) if (r && !r.startsWith('#')) results.push([k, r]) } return results } isaacs-resolve-import-299e0c4/src/resolve-all-local-imports.ts000066400000000000000000000103121514541135200244500ustar00rootroot00000000000000/** * Exported as `'resolve-import/resolve-all-local-imports'` * @module */ import { dirname, resolve } from 'path' import { pathToFileURL } from 'url' import { invalidPackage } from './errors.js' import { fileExists } from './file-exists.js' import { findDepPackage } from './find-dep-package.js' import { ResolveImportOpts } from './index.js' import { Pkg, readPkg } from './read-pkg.js' import { resolveAllExports } from './resolve-all-exports.js' import { resolveConditionalValue } from './resolve-conditional-value.js' import { resolveImport } from './resolve-import.js' import { starGlob } from './star-glob.js' import { toFileURL } from './to-file-url.js' import { toPath } from './to-path.js' export * from './resolve-all-local-imports-sync.js' /** * Given a path or file URL to a package.json file, return an object where each * possible local import path is mapped to the file URL that it would resolve * to. * * Invalid and non-resolving imports are omitted. */ export const resolveAllLocalImports = async ( packageJsonPath: string | URL, options: ResolveImportOpts = {}, ): Promise> => { const pjPath = toPath(packageJsonPath) const pjDir = dirname(pjPath) const pjURL = toFileURL(packageJsonPath) const pkg = await readPkg(pjPath) if (!pkg) { throw invalidPackage(packageJsonPath, resolveAllLocalImports) } const results: Record = {} for (const [sub, target] of getNamedImportsList(pkg, options)) { // if the import is local, then look it up // if it's another package, then look up that package // if it's another package with a *, then look up all exports // of that package, and filter by the matches. const parts = target.match(/^(@[^\/]+\/[^\/]+|[^\/]+)/) // make internal package named modules consistently `./` const name = pkg.name // non-matches already filtered out /* c8 ignore start */ if (!parts) continue /* c8 ignore stop */ const ssub = sub.split('*') const starget = target.split('*') as [string, string] const star = ssub.length === 2 && starget.length === 2 if (!star) { // simple case, no * replacement // if not found, just omit it. // do a full resolve, because the target can be anything like // './foo/bar' or 'dep/blah', etc. try { results[sub] = await resolveImport(target, pjURL) } catch {} continue } // has a star, have to glob if it's localPath, or look up exports if not const localPath = parts[1] === '.' if (localPath) { for (const [rep, target] of await starGlob(starget, pjDir)) { results[ssub[0] + rep + ssub[1]] = pathToFileURL(target) } continue } const localName = parts[1] === name const dep = !localPath && !localName ? parts[1] : null // if we can't find the package, it's not valid. const ppath = dep ? await findDepPackage(dep, pjDir) : pjDir if (!ppath) continue const pj = resolve(ppath, 'package.json') if (!(await fileExists(pj))) { continue } const allExports = await resolveAllExports(pj) for (const [k, v] of Object.entries(allExports)) { if (k === '.' || k === './') continue const i = dep + k.substring(1) if (i.startsWith(starget[0]) && i.endsWith(starget[1])) { const s = ssub[0] + i.substring(starget[0].length, i.length - starget[1].length) + ssub[1] // should be impossible to throw, because we're pulling the list // from the package itself, and it gets resolved at that point. /* c8 ignore start */ try { results[s] = await resolveImport(v, pjURL) } catch {} /* c8 ignore stop */ } } } return results } /** * Get the condition-resolved targets of all imports * * Stars are not expanded. */ const getNamedImportsList = ( pkg: Pkg, options: ResolveImportOpts, ): [string, string][] => { const results: [string, string][] = [] const { imports } = pkg if (!imports || typeof imports !== 'object') return results for (const [k, v] of Object.entries(imports)) { const r = resolveConditionalValue(v, options) if (r && !r.startsWith('#')) results.push([k, r]) } return results } isaacs-resolve-import-299e0c4/src/resolve-conditional-value.ts000066400000000000000000000017551514541135200245450ustar00rootroot00000000000000/** * Exported as `'resolve-import/resolve-conditional-value'` * @module */ import { ConditionalValue, ResolveImportOpts } from './index.js' /** * find the first match for string, import, node, or default * at this point, we know we're on the right subpath already */ export const resolveConditionalValue = ( exp: ConditionalValue, options: ResolveImportOpts, ): string | null => { if (exp === null || typeof exp === 'string') return exp if (Array.isArray(exp)) { for (const e of exp) { const r = resolveConditionalValue(e, options) if (r) return r } return null } const conditions = new Set(['default']) for (const condition of options.conditions ?? ['import', 'node']) { if (condition.startsWith('!')) { conditions.delete(condition.slice(1)) } else { conditions.add(condition) } } for (const [k, v] of Object.entries(exp)) { if (conditions.has(k)) { return resolveConditionalValue(v, options) } } return null } isaacs-resolve-import-299e0c4/src/resolve-dependency-export-sync.ts000066400000000000000000000051101514541135200255240ustar00rootroot00000000000000import { resolve } from 'node:path' import { pathToFileURL } from 'node:url' import { moduleNotFound, packageNotFound } from './errors.js' import { fileExistsSync } from './file-exists.js' import { findDepPackageSync } from './find-dep-package.js' import { ResolveImportOpts } from './index.js' import { readPkgSync } from './read-pkg.js' import { resolveExport } from './resolve-export.js' /** * Resolve a dependency like '@dep/name/sub/module' where * '@dep/name' is in node_modules somewhere and exports './sub/module' */ export const resolveDependencyExportsSync = ( url: string | null, parentPath: string, options: ResolveImportOpts & { originalParent: string }, ): URL => { const { originalParent } = options const parts = url?.match(/^(@[^\/]+\/[^\/]+|[^\/]+)(?:\/(.*))?$/) const [, pkgName, sub] = url === null ? [, null, ''] : parts || ['', '', ''] const ppath = findDepPackageSync(pkgName, parentPath) if (!ppath) { throw packageNotFound(pkgName, originalParent) } const indexjs = resolve(ppath, 'index.js') const pj = resolve(ppath, 'package.json') const pkg = readPkgSync(pj) const subpath = sub ? resolve(ppath, sub) : false // if not a package, then the sub can still be a direct path // if no sub, then resolves to index.js if available. if (!pkg) { if (!subpath) { // try index.js, otherwise fail if (fileExistsSync(indexjs)) return pathToFileURL(indexjs) else throw packageNotFound(ppath, originalParent) } else { if (fileExistsSync(subpath)) { return pathToFileURL(subpath) } else throw moduleNotFound(subpath, originalParent) } } // ok, have a package, look up the export if present. // otherwise, use main, otherwise index.js if (pkg.exports) { const subPath = resolveExport( sub, pkg.exports, pj, originalParent, options, ) const resolved = resolve(ppath, subPath) if (fileExistsSync(resolved)) return pathToFileURL(resolved) else throw moduleNotFound(resolved, originalParent) } else if (subpath) { if (fileExistsSync(subpath)) return pathToFileURL(subpath) else throw moduleNotFound(subpath, originalParent) } else if (pkg.main) { // fall back to index.js if main is missing const rmain = resolve(ppath, pkg.main) if (fileExistsSync(rmain)) return pathToFileURL(rmain) else if (fileExistsSync(indexjs)) return pathToFileURL(indexjs) else throw packageNotFound(ppath, originalParent) } else if (fileExistsSync(indexjs)) { return pathToFileURL(indexjs) } else { throw packageNotFound(ppath, originalParent) } } isaacs-resolve-import-299e0c4/src/resolve-dependency-export.ts000066400000000000000000000052031514541135200245550ustar00rootroot00000000000000import { resolve } from 'path' import { pathToFileURL } from 'url' import { moduleNotFound, packageNotFound } from './errors.js' import { fileExists } from './file-exists.js' import { findDepPackage } from './find-dep-package.js' import { ResolveImportOpts } from './index.js' import { readPkg } from './read-pkg.js' import { resolveExport } from './resolve-export.js' export * from './resolve-dependency-export-sync.js' /** * Resolve a dependency like '@dep/name/sub/module' where * '@dep/name' is in node_modules somewhere and exports './sub/module' */ export const resolveDependencyExports = async ( url: string | null, parentPath: string, options: ResolveImportOpts & { originalParent: string }, ): Promise => { const { originalParent } = options const parts = url?.match(/^(@[^\/]+\/[^\/]+|[^\/]+)(?:\/(.*))?$/) const [, pkgName, sub] = url === null ? [, null, ''] : parts || ['', '', ''] const ppath = await findDepPackage(pkgName, parentPath) if (!ppath) { throw packageNotFound(pkgName, originalParent) } const indexjs = resolve(ppath, 'index.js') const pj = resolve(ppath, 'package.json') const pkg = await readPkg(pj) const subpath = sub ? resolve(ppath, sub) : false // if not a package, then the sub can still be a direct path // if no sub, then resolves to index.js if available. if (!pkg) { if (!subpath) { // try index.js, otherwise fail if (await fileExists(indexjs)) return pathToFileURL(indexjs) else throw packageNotFound(ppath, originalParent) } else { if (await fileExists(subpath)) { return pathToFileURL(subpath) } else throw moduleNotFound(subpath, originalParent) } } // ok, have a package, look up the export if present. // otherwise, use main, otherwise index.js if (pkg.exports) { const subPath = resolveExport( sub, pkg.exports, pj, originalParent, options, ) const resolved = resolve(ppath, subPath) if (await fileExists(resolved)) return pathToFileURL(resolved) else throw moduleNotFound(resolved, originalParent) } else if (subpath) { if (await fileExists(subpath)) return pathToFileURL(subpath) else throw moduleNotFound(subpath, originalParent) } else if (pkg.main) { // fall back to index.js if main is missing const rmain = resolve(ppath, pkg.main) if (await fileExists(rmain)) return pathToFileURL(rmain) else if (await fileExists(indexjs)) return pathToFileURL(indexjs) else throw packageNotFound(ppath, originalParent) } else if (await fileExists(indexjs)) { return pathToFileURL(indexjs) } else { throw packageNotFound(ppath, originalParent) } } isaacs-resolve-import-299e0c4/src/resolve-export.ts000066400000000000000000000032471514541135200224470ustar00rootroot00000000000000import { subpathNotExported } from './errors.js' import { findStarMatch } from './find-star-match.js' import { ConditionalValue, Exports, ExportsSubpaths, ResolveImportOpts, } from './index.js' import { resolveConditionalValue } from './resolve-conditional-value.js' /** * Resolve an export that might be a string, subpath exports, exports value * object, or array of strings and exports value objects */ export const resolveExport = ( sub: string, exp: Exports, pj: string, from: string, options: ResolveImportOpts, ): string => { const s = !sub ? '.' : sub === '.' || sub.startsWith('./') ? sub : `./${sub}` if (typeof exp === 'string' || Array.isArray(exp)) { const res = s === '.' && resolveConditionalValue(exp, options) if (!res) throw subpathNotExported(s, pj, from) return res } // now it must be a set of named exports or an export value object // first try to resolve as a value object, if that's allowed if (s === '.') { const res = resolveConditionalValue(exp, options) if (res) return res } // otherwise the only way to match is with subpaths const es = exp as ExportsSubpaths // if we have an exact match, use that const e = es[s] if (e !== undefined) { const res = resolveConditionalValue(e, options) if (!res) throw subpathNotExported(s, pj, from) return res } const sm = findStarMatch(s, es) if (sm) { const [key, mid] = sm const res = resolveConditionalValue( es[key] as ConditionalValue, options, ) if (!res) throw subpathNotExported(s, pj, from) return res.replace(/\*/g, mid) } // did not find a match throw subpathNotExported(s, pj, from) } isaacs-resolve-import-299e0c4/src/resolve-import-async.ts000066400000000000000000000071411514541135200235500ustar00rootroot00000000000000/** * Exported as `'resolve-import/resolve-import'` * @module */ import { realpath } from 'fs/promises' import Module from 'module' import { basename, dirname, isAbsolute, resolve } from 'path' import { fileURLToPath, pathToFileURL } from 'url' import { moduleNotFound, relativeImportWithoutParentURL, } from './errors.js' import { fileExists } from './file-exists.js' import { ResolveImportOpts } from './index.js' import { isRelativeRequire } from './is-relative-require.js' import { resolveDependencyExports } from './resolve-dependency-export.js' import { resolvePackageImport } from './resolve-package-import.js' import { toFileURL } from './to-file-url.js' import { toPath } from './to-path.js' export * from './resolve-import-sync.js' // affordance for node 16 <16.17 and 18 <18.9 /* c8 ignore start */ if (typeof Module.isBuiltin !== 'function') { Module.isBuiltin = (moduleName: string) => { if (moduleName.startsWith('node:')) { moduleName = moduleName.substring('node:'.length) } return Module.builtinModules.includes(moduleName) } } /* c8 ignore stop */ // It's pretty common to resolve against, eg, cwd + '/x', since we might not // know the actual file that it's being loaded from, and want to resolve what // a dep WOULD be from a given path. This allows us to realpath that directory, // without requiring that the file exist. const realpathParentDir = async (path: string | URL) => { path = toPath(path) return resolve(await realpath(dirname(path)), basename(path)) } /** * Resolve an import URL or string as if it were coming from the * module at parentURL. * * Returns a string for node builtin modules, and a file:// URL * object for anything resolved on disk. * * If the resolution is impossible, then an error will be raised, which * closely matches the errors raised by Node when failing for the same * reason. */ export const resolveImport = async ( /** the thing being imported */ url: string | URL, /** * the place the import() would be coming from. Required for relative * imports. */ parentURL: string | URL | undefined = undefined, options: ResolveImportOpts = {}, ): Promise => { // already resolved, just check that it exists if (typeof url === 'string' && url.startsWith('file://')) { url = new URL(url) } if (typeof url === 'object') { if (!(await fileExists(url))) { throw moduleNotFound(String(url), String(parentURL)) } const rp = await realpath(toPath(url)) return rp !== fileURLToPath(url) ? pathToFileURL(rp) : url } const pu = parentURL ? toFileURL(await realpathParentDir(parentURL)) : undefined if (isRelativeRequire(url)) { if (!pu) { throw relativeImportWithoutParentURL(url, parentURL) } const u = new URL(url, pu) if (!(await fileExists(u))) { throw moduleNotFound(url, String(parentURL)) } return pathToFileURL(await realpath(new URL(url, pu))) } if (isAbsolute(url)) { if (!(await fileExists(url))) { throw moduleNotFound(url, String(parentURL)) } return pathToFileURL(await realpath(url)) } if (Module.isBuiltin(String(url))) { return String(url) } // ok, we have to resolve it. some kind of bare dep import, // either a package name resolving to module or main, or a named export. const parentPath: string = toPath( parentURL || resolve(await realpath(process.cwd()), 'x'), ) const opts = { ...options, originalParent: String(options.originalParent || parentPath), } if (url) { return resolvePackageImport(url, parentPath, opts) } else { return resolveDependencyExports(url, parentPath, opts) } } isaacs-resolve-import-299e0c4/src/resolve-import-sync.ts000066400000000000000000000071021514541135200234040ustar00rootroot00000000000000/** * Exported as `'resolve-import/resolve-import-sync'` * @module */ import { realpathSync } from 'node:fs' import Module from 'node:module' import { basename, dirname, isAbsolute, resolve } from 'node:path' import { fileURLToPath, pathToFileURL } from 'node:url' import { moduleNotFound, relativeImportWithoutParentURL, } from './errors.js' import { fileExistsSync } from './file-exists.js' import type { ResolveImportOpts } from './index.js' import { isRelativeRequire } from './is-relative-require.js' import { resolveDependencyExportsSync } from './resolve-dependency-export-sync.js' import { resolvePackageImportSync } from './resolve-package-import-sync.js' import { toFileURL } from './to-file-url.js' import { toPath } from './to-path.js' // affordance for node 16 <16.17 and 18 <18.9 /* c8 ignore start */ if (typeof Module.isBuiltin !== 'function') { Module.isBuiltin = (moduleName: string) => { if (moduleName.startsWith('node:')) { moduleName = moduleName.substring('node:'.length) } return Module.builtinModules.includes(moduleName) } } /* c8 ignore stop */ // It's pretty common to resolve against, eg, cwd + '/x', since we might not // know the actual file that it's being loaded from, and want to resolve what // a dep WOULD be from a given path. This allows us to realpath that directory, // without requiring that the file exist. const realpathParentDir = (path: string | URL) => { path = toPath(path) return resolve(realpathSync(dirname(path)), basename(path)) } /** * Resolve an import URL or string as if it were coming from the * module at parentURL. * * Returns a string for node builtin modules, and a file:// URL * object for anything resolved on disk. * * If the resolution is impossible, then an error will be raised, which * closely matches the errors raised by Node when failing for the same * reason. */ export const resolveImportSync = ( /** the thing being imported */ url: string | URL, /** * the place the import() would be coming from. Required for relative * imports. */ parentURL: string | URL | undefined = undefined, options: ResolveImportOpts = {}, ): URL | string => { // already resolved, just check that it exists if (typeof url === 'string' && url.startsWith('file://')) { url = new URL(url) } if (typeof url === 'object') { if (!fileExistsSync(url)) { throw moduleNotFound(String(url), String(parentURL)) } const rp = realpathSync(toPath(url)) return rp !== fileURLToPath(url) ? pathToFileURL(rp) : url } const pu = parentURL ? toFileURL(realpathParentDir(parentURL)) : undefined if (isRelativeRequire(url)) { if (!pu) { throw relativeImportWithoutParentURL(url, parentURL) } const u = new URL(url, pu) if (!fileExistsSync(u)) { throw moduleNotFound(url, String(parentURL)) } return pathToFileURL(realpathSync(new URL(url, pu))) } if (isAbsolute(url)) { if (!fileExistsSync(url)) { throw moduleNotFound(url, String(parentURL)) } return pathToFileURL(realpathSync(url)) } if (Module.isBuiltin(String(url))) { return String(url) } // ok, we have to resolve it. some kind of bare dep import, // either a package name resolving to module or main, or a named export. const parentPath: string = toPath( parentURL || resolve(realpathSync(process.cwd()), 'x'), ) const opts = { ...options, originalParent: String(options.originalParent || parentPath), } if (url) { return resolvePackageImportSync(url, parentPath, opts) } else { return resolveDependencyExportsSync(url, parentPath, opts) } } isaacs-resolve-import-299e0c4/src/resolve-import.ts000066400000000000000000000001231514541135200224260ustar00rootroot00000000000000export * from './resolve-import-sync.js' export * from './resolve-import-async.js' isaacs-resolve-import-299e0c4/src/resolve-package-import-sync.ts000066400000000000000000000063301514541135200247770ustar00rootroot00000000000000import { dirname, resolve } from 'node:path' import { pathToFileURL } from 'node:url' import { walkUp } from 'walk-up-path' import { invalidImportSpecifier, moduleNotFound, packageImportNotDefined, } from './errors.js' import { fileExistsSync } from './file-exists.js' import { findStarMatch } from './find-star-match.js' import { ConditionalValue, ResolveImportOpts } from './index.js' import { readPkgSync } from './read-pkg.js' import { resolveConditionalValue } from './resolve-conditional-value.js' import { resolveDependencyExportsSync } from './resolve-dependency-export-sync.js' import { resolveExport } from './resolve-export.js' import { resolveImportSync } from './resolve-import-sync.js' /** * Resolve an import like '@package/name/sub/module', where * './sub/module' appears in the exports of the local package. */ export const resolvePackageImportSync = ( url: string, parentPath: string, options: ResolveImportOpts & { originalParent: string }, ): URL | string => { const { originalParent } = options const parts = url.match(/^(@[^\/]+\/[^\/]+|[^\/]+)(?:\/(.*))?$/) as | null | (RegExpMatchArray & [string, string, string]) // impossible /* c8 ignore start */ if (!parts) throw invalidImportSpecifier(url) /* c8 ignore stop */ for (const dir of walkUp(dirname(parentPath))) { const pj = resolve(dir, 'package.json') const pkg = readPkgSync(pj) if (!pkg) continue if (pkg.name && pkg.exports) { // can import from this package name if exports is defined const [, pkgName, sub] = parts if (pkgName === pkg.name) { // ok, see if sub is a valid export then const subPath = resolveExport( sub, pkg.exports, pj, originalParent, options, ) const resolved = resolve(dir, subPath) if (fileExistsSync(resolved)) return pathToFileURL(resolved) else throw moduleNotFound(resolved, originalParent) } } if (url.startsWith('#')) { if (!pkg.imports) { throw packageImportNotDefined(url, pj, originalParent) } const exact = pkg.imports[url] if (exact !== undefined) { const res = resolveConditionalValue(exact, options) if (!res) { throw packageImportNotDefined(url, pj, originalParent) } // kind of weird behavior, but it's what node does if (res.startsWith('#')) { return resolveDependencyExportsSync(null, parentPath, options) } return resolveImportSync(res, pj, options) } const sm = findStarMatch(url, pkg.imports) if (!sm) { throw packageImportNotDefined(url, pj, originalParent) } const [key, mid] = sm const match = pkg.imports[key] as ConditionalValue const res = resolveConditionalValue(match, options) if (!res) { throw packageImportNotDefined(url, pj, originalParent) } if (res.startsWith('#')) { return resolveDependencyExportsSync(null, parentPath, options) } const expand = res.replace(/\*/g, mid) // start over with the resolved import return resolveImportSync(expand, pj, options) } break } return resolveDependencyExportsSync(url, parentPath, options) } isaacs-resolve-import-299e0c4/src/resolve-package-import.ts000066400000000000000000000063401514541135200240260ustar00rootroot00000000000000import { dirname, resolve } from 'path' import { pathToFileURL } from 'url' import { walkUp } from 'walk-up-path' import { invalidImportSpecifier, moduleNotFound, packageImportNotDefined, } from './errors.js' import { fileExists } from './file-exists.js' import { findStarMatch } from './find-star-match.js' import { ConditionalValue, ResolveImportOpts } from './index.js' import { readPkg } from './read-pkg.js' import { resolveConditionalValue } from './resolve-conditional-value.js' import { resolveDependencyExports } from './resolve-dependency-export.js' import { resolveExport } from './resolve-export.js' import { resolveImport } from './resolve-import.js' export * from './resolve-package-import-sync.js' /** * Resolve an import like '@package/name/sub/module', where * './sub/module' appears in the exports of the local package. */ export const resolvePackageImport = async ( url: string, parentPath: string, options: ResolveImportOpts & { originalParent: string }, ): Promise => { const { originalParent } = options const parts = url.match(/^(@[^\/]+\/[^\/]+|[^\/]+)(?:\/(.*))?$/) as | null | (RegExpMatchArray & [string, string, string]) // impossible /* c8 ignore start */ if (!parts) throw invalidImportSpecifier(url) /* c8 ignore stop */ for (const dir of walkUp(dirname(parentPath))) { const pj = resolve(dir, 'package.json') const pkg = await readPkg(pj) if (!pkg) continue if (pkg.name && pkg.exports) { // can import from this package name if exports is defined const [, pkgName, sub] = parts if (pkgName === pkg.name) { // ok, see if sub is a valid export then const subPath = resolveExport( sub, pkg.exports, pj, originalParent, options, ) const resolved = resolve(dir, subPath) if (await fileExists(resolved)) return pathToFileURL(resolved) else throw moduleNotFound(resolved, originalParent) } } if (url.startsWith('#')) { if (!pkg.imports) { throw packageImportNotDefined(url, pj, originalParent) } const exact = pkg.imports[url] if (exact !== undefined) { const res = resolveConditionalValue(exact, options) if (!res) { throw packageImportNotDefined(url, pj, originalParent) } // kind of weird behavior, but it's what node does if (res.startsWith('#')) { return resolveDependencyExports(null, parentPath, options) } return resolveImport(res, pj, options) } const sm = findStarMatch(url, pkg.imports) if (!sm) { throw packageImportNotDefined(url, pj, originalParent) } const [key, mid] = sm const match = pkg.imports[key] as ConditionalValue const res = resolveConditionalValue(match, options) if (!res) { throw packageImportNotDefined(url, pj, originalParent) } if (res.startsWith('#')) { return resolveDependencyExports(null, parentPath, options) } const expand = res.replace(/\*/g, mid) // start over with the resolved import return resolveImport(expand, pj, options) } break } return resolveDependencyExports(url, parentPath, options) } isaacs-resolve-import-299e0c4/src/star-glob.ts000066400000000000000000000024031514541135200213340ustar00rootroot00000000000000import { escape, glob, globSync } from 'glob' import { resolve } from 'node:path' export const starGlob = async ( star: [string, string], // actually [string,string] dir: string, ): Promise<[string, string][]> => { const pattern = escape(star[0]) + (star[0].endsWith('/') ? '' : '*/') + '**' + (star[1].startsWith('/') ? '' : '/*') + escape(star[1]) const matches = await glob(pattern, { posix: true, absolute: false, nodir: true, cwd: dir, dotRelative: true, }) return matches.map(match => { const rep = match.substring( star[0].length, match.length - star[1].length, ) return [rep, resolve(dir, match)] }) } export const starGlobSync = ( star: [string, string], // actually [string,string] dir: string, ): [string, string][] => { const pattern = escape(star[0]) + (star[0].endsWith('/') ? '' : '*/') + '**' + (star[1].startsWith('/') ? '' : '/*') + escape(star[1]) const matches = globSync(pattern, { posix: true, absolute: false, nodir: true, cwd: dir, dotRelative: true, }) return matches.map(match => { const rep = match.substring( star[0].length, match.length - star[1].length, ) return [rep, resolve(dir, match)] }) } isaacs-resolve-import-299e0c4/src/to-file-url.ts000066400000000000000000000002621514541135200216020ustar00rootroot00000000000000import { pathToFileURL } from 'url' export const toFileURL = (p: string | URL): URL => typeof p === 'object' ? p : p.startsWith('file://') ? new URL(p) : pathToFileURL(p) isaacs-resolve-import-299e0c4/src/to-path.ts000066400000000000000000000002421514541135200210150ustar00rootroot00000000000000import { fileURLToPath } from 'url' export const toPath = (p: string | URL): string => typeof p === 'object' || p.startsWith('file://') ? fileURLToPath(p) : p isaacs-resolve-import-299e0c4/tap-snapshots/000077500000000000000000000000001514541135200211105ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/tap-snapshots/test/000077500000000000000000000000001514541135200220675ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/tap-snapshots/test/conditions.ts.test.cjs000066400000000000000000000012311514541135200263410ustar00rootroot00000000000000/* 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/conditions.ts > TAP > resolve import types > must match snapshot 1`] = ` file://{CWD}/dist/esm/index.d.ts ` exports[`test/conditions.ts > TAP > resolve require > must match snapshot 1`] = ` file://{CWD}/dist/commonjs/index.min.js ` exports[`test/conditions.ts > TAP > resolve require types > must match snapshot 1`] = ` file://{CWD}/dist/commonjs/index.d.ts ` isaacs-resolve-import-299e0c4/tap-snapshots/test/errors.ts.test.cjs000066400000000000000000000030611514541135200255070ustar00rootroot00000000000000/* 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/errors.ts > TAP > must match snapshot 1`] = ` Error: invalid import() specifier: some invalid url ` exports[`test/errors.ts > TAP > must match snapshot 2`] = ` Error: Not a valid package: /some/package.json ` exports[`test/errors.ts > TAP > must match snapshot 3`] = ` Error: Cannot find module '/path/to/module' imported from /from { "code": "ERR_MODULE_NOT_FOUND", } ` exports[`test/errors.ts > TAP > must match snapshot 4`] = ` Error: Package import specifier "./a" is not defined in package /x/package.json imported from /from { "code": "ERR_PACKAGE_IMPORT_NOT_DEFINED", } ` exports[`test/errors.ts > TAP > must match snapshot 5`] = ` Error: Cannot find package '@some/pkg' imported from /from { "code": "ERR_MODULE_NOT_FOUND", } ` exports[`test/errors.ts > TAP > must match snapshot 6`] = ` Error: relative import without parentURL { "parentURL": null, "url": "../foo", } ` exports[`test/errors.ts > TAP > must match snapshot 7`] = ` Error: No "exports" main defined in /x/package.json imported from /from { "code": "ERR_PACKAGE_PATH_NOT_EXPORTED", } ` exports[`test/errors.ts > TAP > must match snapshot 8`] = ` Error: Package subpath './x' is not defined by "exports" in /x/package.json imported from /from { "code": "ERR_PACKAGE_PATH_NOT_EXPORTED", } ` isaacs-resolve-import-299e0c4/tap-snapshots/test/get-all-conditional-values.ts.test.cjs000066400000000000000000000037331514541135200313240ustar00rootroot00000000000000/* 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/get-all-conditional-values.ts > TAP > valid values > [{"import":{"node":"x"}},{"node":{"import":"y"}}] > must match snapshot 1`] = ` Array [ Array [ ".", Set { "import", "node", }, "x", ], ] ` exports[`test/get-all-conditional-values.ts > TAP > valid values > {"./x":{"import":"./x.js"},"./y":"./y.js"} > must match snapshot 1`] = ` Array [ Array [ "./x", Set { "import", }, "./x.js", ], Array [ "./y", Set {}, "./y.js", ], ] ` exports[`test/get-all-conditional-values.ts > TAP > valid values > {"import":{"node":"x"},"node":{"import":"y"}} > must match snapshot 1`] = ` Array [ Array [ ".", Set { "import", "node", }, "x", ], ] ` exports[`test/get-all-conditional-values.ts > TAP > valid values > {"import":{"node":[{"z":"z"},"x"]},"node":{"import":"y"}} > must match snapshot 1`] = ` Array [ Array [ ".", Set { "import", "node", "z", }, "z", ], Array [ ".", Set { "import", "node", }, "x", ], ] ` exports[`test/get-all-conditional-values.ts > TAP > valid values > {"import":{"node":{"default":"x"}},"node":{"import":"y"}} > must match snapshot 1`] = ` Array [ Array [ ".", Set { "import", "node", }, "x", ], ] ` exports[`test/get-all-conditional-values.ts > TAP > valid values > {"import":null,"node":[{"require":"x"},{"import":"y"},"z"]} > must match snapshot 1`] = ` Array [ Array [ ".", Set { "import", }, null, ], Array [ ".", Set { "node", "require", }, "x", ], Array [ ".", Set { "node", }, "z", ], ] ` isaacs-resolve-import-299e0c4/tap-snapshots/test/index.ts.test.cjs000066400000000000000000000026261514541135200253100ustar00rootroot00000000000000/* 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/index.ts > TAP > more custom internal imports > #failing-conditional => null > must match snapshot 1`] = ` ERR_PACKAGE_IMPORT_NOT_DEFINED ` exports[`test/index.ts > TAP > more custom internal imports > #failing-starmatch => null > must match snapshot 1`] = ` ERR_PACKAGE_IMPORT_NOT_DEFINED ` exports[`test/index.ts > TAP > more custom internal imports > #invalid => null > must match snapshot 1`] = ` ERR_MODULE_NOT_FOUND ` exports[`test/index.ts > TAP > more custom internal imports > #invalid-star-expand => null > must match snapshot 1`] = ` ERR_MODULE_NOT_FOUND ` exports[`test/index.ts > TAP > more custom internal imports > #not-found => null > must match snapshot 1`] = ` ERR_PACKAGE_IMPORT_NOT_DEFINED ` exports[`test/index.ts > TAP > more custom internal imports > #null => null > must match snapshot 1`] = ` ERR_PACKAGE_IMPORT_NOT_DEFINED ` exports[`test/index.ts > TAP > more custom internal imports > #starreplace => null > must match snapshot 1`] = ` ERR_PACKAGE_IMPORT_NOT_DEFINED ` exports[`test/index.ts > TAP > more custom internal imports > => null > must match snapshot 1`] = ` ERR_MODULE_NOT_FOUND ` isaacs-resolve-import-299e0c4/tap-snapshots/test/resolve-all-sync.ts.test.cjs000066400000000000000000000033371514541135200274000ustar00rootroot00000000000000/* 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/resolve-all-sync.ts > TAP > if exports is only one path, return "." only > must match snapshot 1`] = ` { ".": "file://{CWD}/test/fixtures/resolve-all/default.js" } ` exports[`test/resolve-all-sync.ts > TAP > if exports is only one path, return "." only > must match snapshot 2`] = ` { ".": "file://{CWD}/test/fixtures/resolve-all/default.js" } ` exports[`test/resolve-all-sync.ts > TAP > resolveAllExports > must match snapshot 1`] = ` { ".": "file://{CWD}/test/fixtures/resolve-all/default.js", "./blah/*": "file://{CWD}/test/fixtures/resolve-all/default.js", "./deep/a/b/c/d/y/x.js": "file://{CWD}/test/fixtures/resolve-all/deep/a/b/c/d/y.js", "./deep/a/b/c/d/y/y.js": "file://{CWD}/test/fixtures/resolve-all/deep/a/b/c/d/y.js", "./deep/a/b/c/d/z.js": "file://{CWD}/test/fixtures/resolve-all/deep/a/b/c/d/y.js" } ` exports[`test/resolve-all-sync.ts > TAP > resolveAllLocalImports > must match snapshot 1`] = ` { "#module": "node:fs", "#g": "file://{CWD}/test/fixtures/resolve-all/node_modules/glob/dist/mjs/index.js", "#y/package.json": "file://{CWD}/node_modules/yaml/package.json", "#y/util": "file://{CWD}/node_modules/yaml/dist/util.js", "#u/ti/l": "file://{CWD}/node_modules/yaml/dist/util.js", "#localpath": "file://{CWD}/test/fixtures/resolve-all/default.js", "#localpath/a/b/c/d/y": "file://{CWD}/test/fixtures/resolve-all/deep/a/b/c/d/y.js", "#localname": "file://{CWD}/test/fixtures/resolve-all/default.js" } ` isaacs-resolve-import-299e0c4/tap-snapshots/test/resolve-all.ts.test.cjs000066400000000000000000000033131514541135200264200ustar00rootroot00000000000000/* 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/resolve-all.ts > TAP > if exports is only one path, return "." only > must match snapshot 1`] = ` { ".": "file://{CWD}/test/fixtures/resolve-all/default.js" } ` exports[`test/resolve-all.ts > TAP > if exports is only one path, return "." only > must match snapshot 2`] = ` { ".": "file://{CWD}/test/fixtures/resolve-all/default.js" } ` exports[`test/resolve-all.ts > TAP > resolveAllExports > must match snapshot 1`] = ` { ".": "file://{CWD}/test/fixtures/resolve-all/default.js", "./blah/*": "file://{CWD}/test/fixtures/resolve-all/default.js", "./deep/a/b/c/d/y/x.js": "file://{CWD}/test/fixtures/resolve-all/deep/a/b/c/d/y.js", "./deep/a/b/c/d/y/y.js": "file://{CWD}/test/fixtures/resolve-all/deep/a/b/c/d/y.js", "./deep/a/b/c/d/z.js": "file://{CWD}/test/fixtures/resolve-all/deep/a/b/c/d/y.js" } ` exports[`test/resolve-all.ts > TAP > resolveAllLocalImports > must match snapshot 1`] = ` { "#module": "node:fs", "#g": "file://{CWD}/test/fixtures/resolve-all/node_modules/glob/dist/mjs/index.js", "#y/package.json": "file://{CWD}/node_modules/yaml/package.json", "#y/util": "file://{CWD}/node_modules/yaml/dist/util.js", "#u/ti/l": "file://{CWD}/node_modules/yaml/dist/util.js", "#localpath": "file://{CWD}/test/fixtures/resolve-all/default.js", "#localpath/a/b/c/d/y": "file://{CWD}/test/fixtures/resolve-all/deep/a/b/c/d/y.js", "#localname": "file://{CWD}/test/fixtures/resolve-all/default.js" } ` isaacs-resolve-import-299e0c4/tap-snapshots/test/sync.ts.test.cjs000066400000000000000000000026161514541135200251540ustar00rootroot00000000000000/* 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/sync.ts > TAP > more custom internal imports > #failing-conditional => null > must match snapshot 1`] = ` ERR_PACKAGE_IMPORT_NOT_DEFINED ` exports[`test/sync.ts > TAP > more custom internal imports > #failing-starmatch => null > must match snapshot 1`] = ` ERR_PACKAGE_IMPORT_NOT_DEFINED ` exports[`test/sync.ts > TAP > more custom internal imports > #invalid => null > must match snapshot 1`] = ` ERR_MODULE_NOT_FOUND ` exports[`test/sync.ts > TAP > more custom internal imports > #invalid-star-expand => null > must match snapshot 1`] = ` ERR_MODULE_NOT_FOUND ` exports[`test/sync.ts > TAP > more custom internal imports > #not-found => null > must match snapshot 1`] = ` ERR_PACKAGE_IMPORT_NOT_DEFINED ` exports[`test/sync.ts > TAP > more custom internal imports > #null => null > must match snapshot 1`] = ` ERR_PACKAGE_IMPORT_NOT_DEFINED ` exports[`test/sync.ts > TAP > more custom internal imports > #starreplace => null > must match snapshot 1`] = ` ERR_PACKAGE_IMPORT_NOT_DEFINED ` exports[`test/sync.ts > TAP > more custom internal imports > => null > must match snapshot 1`] = ` ERR_MODULE_NOT_FOUND ` isaacs-resolve-import-299e0c4/test/000077500000000000000000000000001514541135200172635ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/conditions.ts000066400000000000000000000011521514541135200220030ustar00rootroot00000000000000import t from 'tap' import { resolveImport } from '../src/index.js' t.formatSnapshot = (v: URL) => String(v) t.test('resolve import types', async t => t.matchSnapshot( await resolveImport('resolve-import', undefined, { conditions: ['import', 'types'], }), ), ) t.test('resolve require', async t => t.matchSnapshot( await resolveImport('resolve-import', undefined, { conditions: ['require', 'node'], }), ), ) t.test('resolve require types', async t => t.matchSnapshot( await resolveImport('resolve-import', undefined, { conditions: ['require', 'types'], }), ), ) isaacs-resolve-import-299e0c4/test/errors.ts000066400000000000000000000013321514541135200211460ustar00rootroot00000000000000import t from 'tap' import { invalidImportSpecifier, invalidPackage, moduleNotFound, packageImportNotDefined, packageNotFound, relativeImportWithoutParentURL, subpathNotExported, } from '../src/errors.js' t.matchSnapshot(invalidImportSpecifier('some invalid url')) t.matchSnapshot(invalidPackage('/some/package.json')) t.matchSnapshot(moduleNotFound('/path/to/module', '/from')) t.matchSnapshot(packageImportNotDefined('./a', '/x/package.json', '/from')) t.matchSnapshot(packageNotFound('@some/pkg', '/from')) t.matchSnapshot(relativeImportWithoutParentURL('../foo', null)) t.matchSnapshot(subpathNotExported('.', '/x/package.json', '/from')) t.matchSnapshot(subpathNotExported('./x', '/x/package.json', '/from')) isaacs-resolve-import-299e0c4/test/file-exists.ts000066400000000000000000000013531514541135200220710ustar00rootroot00000000000000import t from 'tap' import { fileExists, fileExistsSync } from '../src/file-exists.js' import { dirname } from 'node:path' import { fileURLToPath, pathToFileURL } from 'node:url' const __dirname = dirname(fileURLToPath(import.meta.url)) const dirUrl = pathToFileURL(__dirname) t.equal(await fileExists(import.meta.url), true) t.equal(fileExistsSync(import.meta.url), true) t.equal(await fileExists(fileURLToPath(import.meta.url)), true) t.equal(fileExistsSync(fileURLToPath(import.meta.url)), true) t.equal(await fileExists('yolo'), false) t.equal(fileExistsSync('yolo'), false) t.equal(await fileExists(__dirname), false) t.equal(fileExistsSync(__dirname), false) t.equal(await fileExists(dirUrl), false) t.equal(fileExistsSync(dirUrl), false) isaacs-resolve-import-299e0c4/test/fixtures/000077500000000000000000000000001514541135200211345ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/Makefile000066400000000000000000000000121514541135200225650ustar00rootroot00000000000000all: tsc isaacs-resolve-import-299e0c4/test/fixtures/foo-bar.js000066400000000000000000000000261514541135200230150ustar00rootroot00000000000000console.log('foobar') isaacs-resolve-import-299e0c4/test/fixtures/multi-x-star-x.js000066400000000000000000000000621514541135200243030ustar00rootroot00000000000000console.log(require('path').basename(__filename)) isaacs-resolve-import-299e0c4/test/fixtures/node_modules/000077500000000000000000000000001514541135200236115ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/empty-pj-no-main-no-index/000077500000000000000000000000001514541135200304315ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/empty-pj-no-main-no-index/package.json000066400000000000000000000000031514541135200327100ustar00rootroot00000000000000{} isaacs-resolve-import-299e0c4/test/fixtures/node_modules/empty-pj-no-main-no-index/sub.js000066400000000000000000000000341514541135200315550ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/empty/000077500000000000000000000000001514541135200247475ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/empty/sub.js000066400000000000000000000000341514541135200260730ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-main-missing-type-module/000077500000000000000000000000001514541135200327225ustar00rootroot00000000000000index.js000066400000000000000000000000461514541135200343100ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-main-missing-type-moduleexport const whoami = import.meta.url main.js000066400000000000000000000000461514541135200341250ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-main-missing-type-moduleexport const whoami = import.meta.url package.json000066400000000000000000000000531514541135200351270ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-main-missing-type-module{ "type": "module", "main": "missing.js" } sub.js000066400000000000000000000000461514541135200337720ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-main-missing-type-moduleexport const whoami = import.meta.url isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-main-missing/000077500000000000000000000000001514541135200304605ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-main-missing/index.js000066400000000000000000000000341514541135200321220ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-main-missing/main.js000066400000000000000000000000341514541135200317370ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-main-missing/package.json000066400000000000000000000000311514541135200327400ustar00rootroot00000000000000{ "main": "missing.js" } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-main-missing/sub.js000066400000000000000000000000341514541135200316040ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-main-type-module/000077500000000000000000000000001514541135200312535ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-main-type-module/index.js000066400000000000000000000000461514541135200327200ustar00rootroot00000000000000export const whoami = import.meta.url isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-main-type-module/main.js000066400000000000000000000000461514541135200325350ustar00rootroot00000000000000export const whoami = import.meta.url isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-main-type-module/package.json000066400000000000000000000000501514541135200335340ustar00rootroot00000000000000{ "type": "module", "main": "main.js" } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-main-type-module/sub.js000066400000000000000000000000461514541135200324020ustar00rootroot00000000000000export const whoami = import.meta.url isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-main/000077500000000000000000000000001514541135200270115ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-main/index.js000066400000000000000000000000341514541135200304530ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-main/main.js000066400000000000000000000000341514541135200302700ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-main/package.json000066400000000000000000000000261514541135200312750ustar00rootroot00000000000000{ "main": "main.js" } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-main/sub.js000066400000000000000000000000341514541135200301350ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-module/000077500000000000000000000000001514541135200273525ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-module/index.js000066400000000000000000000000341514541135200310140ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-module/main.js000066400000000000000000000000341514541135200306310ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-module/package.json000066400000000000000000000000301514541135200316310ustar00rootroot00000000000000{ "module": "main.js" } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-module/sub.js000066400000000000000000000000341514541135200304760ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-type-module/000077500000000000000000000000001514541135200303315ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-type-module/index.js000066400000000000000000000000461514541135200317760ustar00rootroot00000000000000export const whoami = import.meta.url isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-type-module/main.js000066400000000000000000000000461514541135200316130ustar00rootroot00000000000000export const whoami = import.meta.url isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-type-module/package.json000066400000000000000000000000271514541135200326160ustar00rootroot00000000000000{ "type": "module" } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj-type-module/sub.js000066400000000000000000000000461514541135200314600ustar00rootroot00000000000000export const whoami = import.meta.url isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj/000077500000000000000000000000001514541135200260675ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj/index.js000066400000000000000000000000341514541135200275310ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj/main.js000066400000000000000000000000341514541135200273460ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj/package.json000066400000000000000000000000031514541135200303460ustar00rootroot00000000000000{} isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-and-pj/sub.js000066400000000000000000000000341514541135200272130ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-no-pj/000077500000000000000000000000001514541135200257415ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-no-pj/index.js000066400000000000000000000000341514541135200274030ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-no-pj/main.js000066400000000000000000000000341514541135200272200ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/index-no-pj/sub.js000066400000000000000000000000341514541135200270650ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/no-index-and-pj-main-missing-type-module/000077500000000000000000000000001514541135200333345ustar00rootroot00000000000000main.js000066400000000000000000000000461514541135200345370ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/no-index-and-pj-main-missing-type-moduleexport const whoami = import.meta.url package.json000066400000000000000000000000531514541135200355410ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/no-index-and-pj-main-missing-type-module{ "type": "module", "main": "missing.js" } sub.js000066400000000000000000000000461514541135200344040ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/no-index-and-pj-main-missing-type-moduleexport const whoami = import.meta.url isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array-multimatch/000077500000000000000000000000001514541135200312055ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array-multimatch/index.js000066400000000000000000000000341514541135200326470ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array-multimatch/main.js000066400000000000000000000000341514541135200324640ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array-multimatch/package.json000066400000000000000000000005141514541135200334730ustar00rootroot00000000000000{ "exports": { ".": [ { "require": "./index.js" }, { "import": { "default": "./main.js" } }, "./missing.js" ], "./sub.js": [ { "import": "./sub.js" }, { "import": "./missing.js" }, "./missing.js" ] } } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array-multimatch/sub.js000066400000000000000000000000341514541135200323310ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array-nested-no-sub-match/000077500000000000000000000000001514541135200326135ustar00rootroot00000000000000index.js000066400000000000000000000000341514541135200341760ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array-nested-no-sub-matchexports.whoami = __filename main.js000066400000000000000000000000341514541135200340130ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array-nested-no-sub-matchexports.whoami = __filename package.json000066400000000000000000000006011514541135200350170ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array-nested-no-sub-match{ "exports": { ".": [ { "require": "./index.js" }, { "import": [ { "import": [ "./main.js" ] }, "./missing.js" ] }, "./foo.js" ], "./sub.js": [ { "require": "./sub.js" }, { "browser": "./sub.js" } ] } } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array-nested-no-sub-match/sub.js000066400000000000000000000000341514541135200337370ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array-nested/000077500000000000000000000000001514541135200303205ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array-nested/index.js000066400000000000000000000000341514541135200317620ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array-nested/main.js000066400000000000000000000000341514541135200315770ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array-nested/package.json000066400000000000000000000005471514541135200326140ustar00rootroot00000000000000{ "exports": { ".": [ { "require": "./index.js" }, { "import": [ { "import": [ "./main.js" ] }, "./missing.js" ] }, "./foo.js" ], "./sub.js": [ { "import": "./sub.js" }, "./missing.js" ] } } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array-nested/sub.js000066400000000000000000000000341514541135200314440ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array-no-main-match/000077500000000000000000000000001514541135200314665ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array-no-main-match/index.js000066400000000000000000000000341514541135200331300ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array-no-main-match/main.js000066400000000000000000000000341514541135200327450ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array-no-main-match/package.json000066400000000000000000000003441514541135200337550ustar00rootroot00000000000000{ "exports": { ".": [ { "require": "./index.js" }, { "browser": "./main.js" } ], "./sub.js": [ { "import": "./sub.js" }, "./missing.js" ] } } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array-no-main-match/sub.js000066400000000000000000000000341514541135200326120ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array/000077500000000000000000000000001514541135200270405ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array/index.js000066400000000000000000000000341514541135200305020ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array/main.js000066400000000000000000000000341514541135200303170ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array/package.json000066400000000000000000000003071514541135200313260ustar00rootroot00000000000000{ "exports": { ".": [ { "require": "./index.js" }, "./main.js" ], "./sub.js": [ { "import": "./sub.js" }, "./missing.js" ] } } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-array/sub.js000066400000000000000000000000341514541135200301640ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-bare-string-type-module/000077500000000000000000000000001514541135200324015ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-bare-string-type-module/index.js000066400000000000000000000000461514541135200340460ustar00rootroot00000000000000export const whoami = import.meta.url isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-bare-string-type-module/main.js000066400000000000000000000000461514541135200336630ustar00rootroot00000000000000export const whoami = import.meta.url package.json000066400000000000000000000000611514541135200346050ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-bare-string-type-module{ "type": "module", "exports": "./main.js" } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-bare-string-type-module/sub.js000066400000000000000000000000461514541135200335300ustar00rootroot00000000000000export const whoami = import.meta.url isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-bare-string/000077500000000000000000000000001514541135200301375ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-bare-string/index.js000066400000000000000000000000341514541135200316010ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-bare-string/main.js000066400000000000000000000000341514541135200314160ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-bare-string/package.json000066400000000000000000000000351514541135200324230ustar00rootroot00000000000000{ "exports": "./main.js" } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-bare-string/sub.js000066400000000000000000000000341514541135200312630ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-default-string/000077500000000000000000000000001514541135200306525ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-default-string/index.js000066400000000000000000000000341514541135200323140ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-default-string/main.js000066400000000000000000000000341514541135200321310ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-default-string/package.json000066400000000000000000000000621514541135200331360ustar00rootroot00000000000000{ "exports": { "default": "./main.js" } } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-default-string/sub.js000066400000000000000000000000341514541135200317760ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-no-default/000077500000000000000000000000001514541135200277605ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-no-default/index.js000066400000000000000000000000341514541135200314220ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-no-default/main.js000066400000000000000000000000341514541135200312370ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-no-default/package.json000066400000000000000000000001641514541135200322470ustar00rootroot00000000000000{ "exports": { ".": { "blah": "./main.js" }, "./sub.js": { "blah": "./sub.js" } } } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-no-default/sub.js000066400000000000000000000000341514541135200311040ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-default-type-module/000077500000000000000000000000001514541135200323605ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-default-type-module/index.js000066400000000000000000000000461514541135200340250ustar00rootroot00000000000000export const whoami = import.meta.url isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-default-type-module/main.js000066400000000000000000000000461514541135200336420ustar00rootroot00000000000000export const whoami = import.meta.url package.json000066400000000000000000000003061514541135200345660ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-default-type-module{ "type": "module", "exports": { ".": { "import": { "default": "./main.js" } }, "./sub.js": { "import": { "default": "./sub.js" } } } } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-default-type-module/sub.js000066400000000000000000000000461514541135200335070ustar00rootroot00000000000000export const whoami = import.meta.url isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-default/000077500000000000000000000000001514541135200301165ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-default/index.js000066400000000000000000000000341514541135200315600ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-default/main.js000066400000000000000000000000341514541135200313750ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-default/package.json000066400000000000000000000002621514541135200324040ustar00rootroot00000000000000{ "exports": { ".": { "import": { "default": "./main.js" } }, "./sub.js": { "import": { "default": "./sub.js" } } } } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-default/sub.js000066400000000000000000000000341514541135200312420ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-import-then-node/000077500000000000000000000000001514541135200316635ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-import-then-node/index.js000066400000000000000000000000341514541135200333250ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-import-then-node/main.js000066400000000000000000000000341514541135200331420ustar00rootroot00000000000000exports.whoami = __filename package.json000066400000000000000000000002621514541135200340720ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-import-then-node{ "exports": { ".": { "import": "./index.js", "node": "./main.js" }, "./sub.js": { "import": "./missing.js", "node": "./sub.js" } } } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-import-then-node/sub.js000066400000000000000000000000341514541135200330070ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-nested/000077500000000000000000000000001514541135200277545ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-nested/index.js000066400000000000000000000000341514541135200314160ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-nested/main.js000066400000000000000000000000341514541135200312330ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-nested/package.json000066400000000000000000000003561514541135200322460ustar00rootroot00000000000000{ "exports": { ".": { "node": { "import": { "default": "./main.js" } } }, "./sub.js": { "import": { "default": { "node": "./sub.js" } } } } } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-nested/sub.js000066400000000000000000000000341514541135200311000ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-node-then-import/000077500000000000000000000000001514541135200316635ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-node-then-import/index.js000066400000000000000000000000341514541135200333250ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-node-then-import/main.js000066400000000000000000000000341514541135200331420ustar00rootroot00000000000000exports.whoami = __filename package.json000066400000000000000000000002621514541135200340720ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-node-then-import{ "exports": { ".": { "node": "./main.js", "import": "./index.js" }, "./sub.js": { "node": "./sub.js", "import": "./missing.js" } } } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-node-then-import/sub.js000066400000000000000000000000341514541135200330070ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-node/000077500000000000000000000000001514541135200274175ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-node/index.js000066400000000000000000000000341514541135200310610ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-node/main.js000066400000000000000000000000341514541135200306760ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-node/package.json000066400000000000000000000001641514541135200317060ustar00rootroot00000000000000{ "exports": { ".": { "node": "./main.js" }, "./sub.js": { "node": "./sub.js" } } } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-node/sub.js000066400000000000000000000000341514541135200305430ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-require/000077500000000000000000000000001514541135200301465ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-require/index.js000066400000000000000000000000341514541135200316100ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-require/main.js000066400000000000000000000000341514541135200314250ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-require/package.json000066400000000000000000000001721514541135200324340ustar00rootroot00000000000000{ "exports": { ".": { "require": "./main.js" }, "./sub.js": { "require": "./sub.js" } } } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-require/sub.js000066400000000000000000000000341514541135200312720ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-type-module-sub-missing/000077500000000000000000000000001514541135200331745ustar00rootroot00000000000000index.js000066400000000000000000000000461514541135200345620ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-type-module-sub-missingexport const whoami = import.meta.url main.js000066400000000000000000000000461514541135200343770ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-type-module-sub-missingexport const whoami = import.meta.url package.json000066400000000000000000000002201514541135200353750ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-type-module-sub-missing{ "type": "module", "exports": { ".": { "import": "./main.js" }, "./sub.js": { "import": "./missing.js" } } } sub.js000066400000000000000000000000461514541135200342440ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-type-module-sub-missingexport const whoami = import.meta.url isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-type-module/000077500000000000000000000000001514541135200307365ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-type-module/index.js000066400000000000000000000000461514541135200324030ustar00rootroot00000000000000export const whoami = import.meta.url isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-type-module/main.js000066400000000000000000000000461514541135200322200ustar00rootroot00000000000000export const whoami = import.meta.url isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-type-module/package.json000066400000000000000000000002141514541135200332210ustar00rootroot00000000000000{ "type": "module", "exports": { ".": { "import": "./main.js" }, "./sub.js": { "import": "./sub.js" } } } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj-type-module/sub.js000066400000000000000000000000461514541135200320650ustar00rootroot00000000000000export const whoami = import.meta.url isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj/000077500000000000000000000000001514541135200264745ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj/index.js000066400000000000000000000000341514541135200301360ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj/main.js000066400000000000000000000000341514541135200277530ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj/package.json000066400000000000000000000001701514541135200307600ustar00rootroot00000000000000{ "exports": { ".": { "import": "./main.js" }, "./sub.js": { "import": "./sub.js" } } } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-obj/sub.js000066400000000000000000000000341514541135200276200ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-star/000077500000000000000000000000001514541135200266735ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-star/index.js000066400000000000000000000000341514541135200303350ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-star/main.js000066400000000000000000000000341514541135200301520ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-star/package.json000066400000000000000000000002111514541135200311530ustar00rootroot00000000000000{ "exports": { ".": { "import": "./main.js" }, "./s*": null, "./sub*s": { "import": "./sub.js" } } } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-star/sub.js000066400000000000000000000000341514541135200300170ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-string-array/000077500000000000000000000000001514541135200303445ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-string-array/index.js000066400000000000000000000000341514541135200320060ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-string-array/main.js000066400000000000000000000000341514541135200316230ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-string-array/package.json000066400000000000000000000000671514541135200326350ustar00rootroot00000000000000{ "exports": [ "./main.js", "./sub.js" ] } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-string-array/sub.js000066400000000000000000000000341514541135200314700ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-string-type-module/000077500000000000000000000000001514541135200314725ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-string-type-module/index.js000066400000000000000000000000461514541135200331370ustar00rootroot00000000000000export const whoami = import.meta.url isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-string-type-module/main.js000066400000000000000000000000461514541135200327540ustar00rootroot00000000000000export const whoami = import.meta.url isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-string-type-module/package.json000066400000000000000000000001341514541135200337560ustar00rootroot00000000000000{ "type": "module", "exports": { ".": "./main.js", "./sub.js": "./sub.js" } } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-string-type-module/sub.js000066400000000000000000000000461514541135200326210ustar00rootroot00000000000000export const whoami = import.meta.url isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-string/000077500000000000000000000000001514541135200272305ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-string/index.js000066400000000000000000000000341514541135200306720ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-string/main.js000066400000000000000000000000341514541135200305070ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-string/package.json000066400000000000000000000001101514541135200315060ustar00rootroot00000000000000{ "exports": { ".": "./main.js", "./sub.js": "./sub.js" } } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-string/sub.js000066400000000000000000000000341514541135200303540ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-top-array-no-main-match/000077500000000000000000000000001514541135200322665ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-top-array-no-main-match/index.js000066400000000000000000000000341514541135200337300ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-top-array-no-main-match/main.js000066400000000000000000000000341514541135200335450ustar00rootroot00000000000000exports.whoami = __filename package.json000066400000000000000000000001531514541135200344740ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-top-array-no-main-match{ "exports": [ { "require": "./index.js" }, { "browser": "./main.js" } ] } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-top-array-no-main-match/sub.js000066400000000000000000000000341514541135200334120ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-top-obj-no-main-match/000077500000000000000000000000001514541135200317225ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-top-obj-no-main-match/index.js000066400000000000000000000000341514541135200333640ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-top-obj-no-main-match/main.js000066400000000000000000000000341514541135200332010ustar00rootroot00000000000000exports.whoami = __filename package.json000066400000000000000000000001611514541135200341270ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-top-obj-no-main-match{ "exports": { "require": [ { "browser": "./main.js" }, "./index.js" ] } } isaacs-resolve-import-299e0c4/test/fixtures/node_modules/pj-exports-top-obj-no-main-match/sub.js000066400000000000000000000000341514541135200330460ustar00rootroot00000000000000exports.whoami = __filename isaacs-resolve-import-299e0c4/test/fixtures/p.js000066400000000000000000000000331514541135200217250ustar00rootroot00000000000000require('#multi-x-star-y') isaacs-resolve-import-299e0c4/test/fixtures/package.json000066400000000000000000000065531514541135200234330ustar00rootroot00000000000000{ "name": "@isaacs/resolve-import-test-fixture", "exports": { "./nope": null, "./x": "./x.js", ".": "./t.js", "./missing": "./this-file-does-not-exist.js", "./passing-*": "./x.js", "./failing-*": null }, "type": "commonjs", "imports": { "#x": "./x.js", "#foo*bar": "./multi-x-star-x.js", "#star*replace": "./star-*-*.js", "#multi-*-star": "./multi-*-star-*.js", "#blorg": "tap", "#nu*": "minipass", "#null": null, "#invalid": "#blorg", "#invalid-*-expand": "#nope-not-allowed", "#.": [ { "import": "glob" }, { "node": { "default": "glob" } }, { "require": "minipass" } ], "#failing-conditional": { "require": "./x.js" }, "#failing-*": { "require": "./x.js" }, "#passing-*": { "import": "./x.js" }, "#internal-empty": "empty", "#internal-empty-pj-no-main-no-index": "empty-pj-no-main-no-index", "#internal-index-and-pj": "index-and-pj", "#internal-index-and-pj-main": "index-and-pj-main", "#internal-index-and-pj-main-missing": "index-and-pj-main-missing", "#internal-index-and-pj-main-missing-type-module": "index-and-pj-main-missing-type-module", "#internal-index-and-pj-main-type-module": "index-and-pj-main-type-module", "#internal-index-and-pj-module": "index-and-pj-module", "#internal-index-and-pj-type-module": "index-and-pj-type-module", "#internal-index-no-pj": "index-no-pj", "#internal-no-index-and-pj-main-missing-type-module": "no-index-and-pj-main-missing-type-module", "#internal-pj-exports-array": "pj-exports-array", "#internal-pj-exports-array-multimatch": "pj-exports-array-multimatch", "#internal-pj-exports-array-nested": "pj-exports-array-nested", "#internal-pj-exports-array-nested-no-sub-match": "pj-exports-array-nested-no-sub-match", "#internal-pj-exports-array-no-main-match": "pj-exports-array-no-main-match", "#internal-pj-exports-bare-string": "pj-exports-bare-string", "#internal-pj-exports-bare-string-type-module": "pj-exports-bare-string-type-module", "#internal-pj-exports-default-string": "pj-exports-default-string", "#internal-pj-exports-no-default": "pj-exports-no-default", "#internal-pj-exports-obj": "pj-exports-obj", "#internal-pj-exports-obj-default": "pj-exports-obj-default", "#internal-pj-exports-obj-default-type-module": "pj-exports-obj-default-type-module", "#internal-pj-exports-obj-import-then-node": "pj-exports-obj-import-then-node", "#internal-pj-exports-obj-nested": "pj-exports-obj-nested", "#internal-pj-exports-obj-node": "pj-exports-obj-node", "#internal-pj-exports-obj-node-then-import": "pj-exports-obj-node-then-import", "#internal-pj-exports-obj-require": "pj-exports-obj-require", "#internal-pj-exports-obj-type-module": "pj-exports-obj-type-module", "#internal-pj-exports-obj-type-module-sub-missing": "pj-exports-obj-type-module-sub-missing", "#internal-pj-exports-star": "pj-exports-star", "#internal-pj-exports-string": "pj-exports-string", "#internal-pj-exports-string-array": "pj-exports-string-array", "#internal-pj-exports-string-type-module": "pj-exports-string-type-module", "#internal-pj-exports-top-array-no-main-match": "pj-exports-top-array-no-main-match", "#internal-pj-exports-top-obj-no-main-match": "pj-exports-top-obj-no-main-match" } } isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/000077500000000000000000000000001514541135200233615ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/deep/000077500000000000000000000000001514541135200242765ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/deep/a/000077500000000000000000000000001514541135200245165ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/deep/a/b/000077500000000000000000000000001514541135200247375ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/deep/a/b/c/000077500000000000000000000000001514541135200251615ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/deep/a/b/c/d/000077500000000000000000000000001514541135200254045ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/deep/a/b/c/d/y.js000066400000000000000000000000261514541135200262100ustar00rootroot00000000000000console.error('deep') isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/default.js000066400000000000000000000000371514541135200253430ustar00rootroot00000000000000console.error('in default.js') isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/exports-not-subpaths-object.json000066400000000000000000000001401514541135200316440ustar00rootroot00000000000000{ "name": "exports-not-subpath", "exports": { "asdf": "foo.js", "default": "default.js" } } isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/exports-not-subpaths.json000066400000000000000000000001271514541135200304050ustar00rootroot00000000000000{ "name": "exports-not-subpath", "exports": [{ "asdf": "foo.js" }, "default.js"] } isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/imports-invalid-array.json000066400000000000000000000002401514541135200305050ustar00rootroot00000000000000{ "name": "imports-invalid", "description": "they have to start with # to count", "imports": [ { "#g": "glob", "yolo": "yaml" } ] } isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/imports-invalid.json000066400000000000000000000002201514541135200273670ustar00rootroot00000000000000{ "name": "imports-invalid", "description": "they have to start with # to count", "imports": { "#g": "glob", "yolo": "yaml" } } isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/no-exports-imports.json000066400000000000000000000001211514541135200300570ustar00rootroot00000000000000{ "name": "no-exports-imports", "description": "has no imports or exports" } isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/node_modules/000077500000000000000000000000001514541135200260365ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/node_modules/empty-dep/000077500000000000000000000000001514541135200277425ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/node_modules/empty-dep/.keep000066400000000000000000000000001514541135200306550ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/node_modules/glob/000077500000000000000000000000001514541135200267615ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/node_modules/glob/dist/000077500000000000000000000000001514541135200277245ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/node_modules/glob/dist/cjs/000077500000000000000000000000001514541135200305035ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/node_modules/glob/dist/cjs/index.js000066400000000000000000000000001514541135200321360ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/node_modules/glob/dist/mjs/000077500000000000000000000000001514541135200305155ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/node_modules/glob/dist/mjs/index.js000066400000000000000000000000001514541135200321500ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/node_modules/glob/package.json000066400000000000000000000051101514541135200312440ustar00rootroot00000000000000{ "author": "Isaac Z. Schlueter (https://blog.izs.me/)", "name": "glob", "description": "the most correct and second fastest glob implementation in JavaScript", "version": "10.3.3", "bin": "./dist/cjs/src/bin.js", "repository": { "type": "git", "url": "git://github.com/isaacs/node-glob.git" }, "main": "./dist/cjs/src/index.js", "module": "./dist/mjs/index.js", "types": "./dist/mjs/index.d.ts", "exports": { ".": { "import": { "types": "./dist/mjs/index.d.ts", "default": "./dist/mjs/index.js" }, "require": { "types": "./dist/cjs/src/index.d.ts", "default": "./dist/cjs/src/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 && bash fixup.sh", "pretest": "npm run prepare", "presnap": "npm run prepare", "test": "c8 tap", "snap": "c8 tap", "format": "prettier --write . --loglevel warn", "typedoc": "typedoc --tsconfig tsconfig-esm.json ./src/*.ts", "prepublish": "npm run benchclean", "profclean": "rm -f v8.log profile.txt", "test-regen": "npm run profclean && TEST_REGEN=1 node --no-warnings --loader ts-node/esm test/00-setup.ts", "prebench": "npm run prepare", "bench": "bash benchmark.sh", "preprof": "npm run prepare", "prof": "bash prof.sh", "benchclean": "node benchclean.js" }, "prettier": { "semi": false, "printWidth": 75, "tabWidth": 2, "useTabs": false, "singleQuote": true, "jsxSingleQuote": false, "bracketSameLine": true, "arrowParens": "avoid", "endOfLine": "lf" }, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", "minimatch": "^9.0.1", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", "path-scurry": "^1.10.1" }, "devDependencies": { "@types/node": "^20.3.2", "@types/tap": "^15.0.7", "c8": "^7.12.0", "memfs": "^3.4.13", "mkdirp": "^2.1.4", "prettier": "^2.8.3", "rimraf": "^4.1.3", "tap": "^16.3.4", "ts-node": "^10.9.1", "typedoc": "^0.23.24", "typescript": "^4.9.4" }, "tap": { "before": "test/00-setup.ts", "coverage": false, "node-arg": [ "--no-warnings", "--loader", "ts-node/esm" ], "ts": false }, "license": "ISC", "funding": { "url": "https://github.com/sponsors/isaacs" }, "engines": { "node": ">=16 || 14 >=14.17" } } isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/node_modules/yaml/000077500000000000000000000000001514541135200270005ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/node_modules/yaml/package.json000066400000000000000000000046331514541135200312740ustar00rootroot00000000000000{ "name": "yaml", "version": "1.10.2", "license": "ISC", "author": "Eemeli Aro ", "repository": "github:eemeli/yaml", "description": "JavaScript parser and stringifier for YAML", "keywords": [ "YAML", "parser", "stringifier" ], "homepage": "https://eemeli.org/yaml/v1/", "files": [ "browser/", "dist/", "types/", "*.d.ts", "*.js", "*.mjs", "!*config.js" ], "type": "commonjs", "main": "./index.js", "exports": { ".": "./index.js", "./does-not-exist": "./nope-not-here.js", "./invalidstar/*": "./nope-not-here/*.js", "./parse-cst": "./parse-cst.js", "./types": [ { "import": "./types.mjs" }, "./types.js" ], "./util": [ { "import": "./util.mjs" }, "./util.js" ], "./": "./index.js" }, "scripts": { "build": "npm run build:node && npm run build:browser", "build:browser": "rollup -c rollup.browser-config.js", "build:node": "rollup -c rollup.node-config.js", "clean": "git clean -fdxe node_modules", "lint": "eslint src/", "prettier": "prettier --write .", "start": "cross-env TRACE_LEVEL=log npm run build:node && node -i -e 'YAML=require(\".\")'", "test": "jest", "test:browsers": "cd playground && npm test", "test:dist": "npm run build:node && jest", "test:types": "tsc --lib ES2017 --noEmit tests/typings.ts", "docs:install": "cd docs-slate && bundle install", "docs:deploy": "cd docs-slate && ./deploy.sh", "docs": "cd docs-slate && bundle exec middleman server", "preversion": "npm test && npm run build", "prepublishOnly": "npm run clean && npm test && npm run build" }, "browserslist": "> 0.5%, not dead", "prettier": { "arrowParens": "avoid", "semi": false, "singleQuote": true, "trailingComma": "none" }, "devDependencies": { "@babel/core": "^7.12.10", "@babel/plugin-proposal-class-properties": "^7.12.1", "@babel/preset-env": "^7.12.11", "@rollup/plugin-babel": "^5.2.3", "babel-eslint": "^10.1.0", "babel-jest": "^26.6.3", "babel-plugin-trace": "^1.1.0", "common-tags": "^1.8.0", "cross-env": "^7.0.3", "eslint": "^7.19.0", "eslint-config-prettier": "^7.2.0", "fast-check": "^2.12.0", "jest": "^26.6.3", "prettier": "^2.2.1", "rollup": "^2.38.2", "typescript": "^4.1.3" }, "engines": { "node": ">= 6" } } isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/node_modules/yaml/parse-cst.js000066400000000000000000000000001514541135200312250ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/node_modules/yaml/types.mjs000066400000000000000000000000001514541135200306450ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/node_modules/yaml/util.mjs000066400000000000000000000000001514541135200304560ustar00rootroot00000000000000isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/package.json000066400000000000000000000013261514541135200256510ustar00rootroot00000000000000{ "type": "module", "name": "resolve-all", "exports": { ".": "./default.js", "./blah/*": "./default.js", "./deep/*/x.js": "./deep/*.js", "./de*/y.js": "./de*.js", "./deep/*/z.js": "./deep/*/y.js" }, "imports": { "#module": "node:fs", "#g": "glob", "#y/*": "yaml/*", "#u/*/l": "yaml/u*l", "#invalid": "#g", "#localpath": "./default.js", "#localpath/*": "./deep/*.js", "#localname": "resolve-all/blah/x", "#localname/*": "resolve-all/deep/*", "#yamlinvalid": "yaml/invalid", "#yamlinvalid/*": "yaml/invalid/*", "#missingdep/*": "some-missing-dependency-thats-missing/submodule/*", "#emptydep/*": "empty/submodule/*", "#emptystring": "" } } isaacs-resolve-import-299e0c4/test/fixtures/resolve-all/test.js000066400000000000000000000003751514541135200247030ustar00rootroot00000000000000// import "x/blah/x/y/z" // import "x/deep/a/b/c/d/y/x.js" // import "x/deep/a/b/c/d/y/y.js" // import "#deep/a/b/c/d/y" import { glob } from '#x' import * as yaml from '#y/' import * as yamlUtils from '#u/ti/l' console.error({ glob, yaml, yamlUtils }) isaacs-resolve-import-299e0c4/test/fixtures/star-x-x.js000066400000000000000000000000621514541135200231530ustar00rootroot00000000000000console.log(require('path').basename(__filename)) isaacs-resolve-import-299e0c4/test/fixtures/t.d.ts000066400000000000000000000001371514541135200221720ustar00rootroot00000000000000export declare const testAll: (which?: string) => Promise; //# sourceMappingURL=t.d.ts.mapisaacs-resolve-import-299e0c4/test/fixtures/t.d.ts.map000066400000000000000000000002041514541135200227410ustar00rootroot00000000000000{"version":3,"file":"t.d.ts","sourceRoot":"","sources":["t.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,WAAkB,MAAM,iBAyB3C,CAAA"}isaacs-resolve-import-299e0c4/test/fixtures/t.js000066400000000000000000000025221514541135200217360ustar00rootroot00000000000000"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.testAll = void 0; const promises_1 = require("fs/promises"); const url_1 = require("url"); const testAll = async (which) => { const types = which ? [which] : (await (0, promises_1.readdir)(__dirname + '/node_modules')).filter(f => f && !f.startsWith('.')); const res = await Promise.all(types.map(async (pkg) => { return [ pkg, await import(pkg).then(({ whoami }) => whoami).catch(e => niceErr(e)), await import(`${pkg}/sub.js`) .then(({ whoami }) => whoami) .catch(e => niceErr(e)), await import(`${pkg}/missing.js`) .then(({ whoami }) => whoami) .catch(e => niceErr(e)), ]; })); return Object.fromEntries(res.map(([p, i, s, m]) => { return [p, [tofurl(i), tofurl(s), tofurl(m)]]; })); }; exports.testAll = testAll; const niceErr = (e) => [ e.code, e.message.replace(/\nDid you mean.*/, ''), ]; const tofurl = (s) => typeof s !== 'string' ? s : s.startsWith('file://') ? s : String((0, url_1.pathToFileURL)(s)); if (require.main === module) { (0, exports.testAll)(process.argv[2]).then(res => console.log(JSON.stringify(res, null, 2))); } //# sourceMappingURL=t.js.mapisaacs-resolve-import-299e0c4/test/fixtures/t.js.map000066400000000000000000000060701514541135200225140ustar00rootroot00000000000000{"version":3,"file":"t.js","sourceRoot":"","sources":["t.ts"],"names":[],"mappings":";;;AAAA,0CAAqC;AACrC,6BAAmC;AAE5B,MAAM,OAAO,GAAG,KAAK,EAAE,KAAc,EAAE,EAAE;IAC9C,MAAM,KAAK,GAAG,KAAK;QACjB,CAAC,CAAC,CAAC,KAAK,CAAC;QACT,CAAC,CAAC,CAAC,MAAM,IAAA,kBAAO,EAAC,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,CACjD,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAC7B,CAAA;IACL,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAC3B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;QACpB,OAAO;YACL,GAAG;YACH,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACrE,MAAM,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC;iBAC1B,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC;iBAC5B,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,MAAM,CAAC,GAAG,GAAG,aAAa,CAAC;iBAC9B,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC;iBAC5B,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SAC1B,CAAA;IACH,CAAC,CAAC,CACH,CAAA;IACD,OAAO,MAAM,CAAC,WAAW,CACvB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;QACvB,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/C,CAAC,CAAC,CACH,CAAA;AACH,CAAC,CAAA;AAzBY,QAAA,OAAO,WAyBnB;AAED,MAAM,OAAO,GAAG,CAAC,CAAwB,EAAE,EAAE,CAAC;IAC5C,CAAC,CAAC,IAAI;IACN,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAC1C,CAAA;AAED,MAAM,MAAM,GAAG,CAAC,CAA4B,EAAE,EAAE,CAC9C,OAAO,CAAC,KAAK,QAAQ;IACnB,CAAC,CAAC,CAAC;IACH,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,MAAM,CAAC,IAAA,mBAAa,EAAC,CAAC,CAAC,CAAC,CAAA;AAE9B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;IAC3B,IAAA,eAAO,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAC1C,CAAA;CACF","sourcesContent":["import { readdir } from 'fs/promises'\nimport { pathToFileURL } from 'url'\n\nexport const testAll = async (which?: string) => {\n const types = which\n ? [which]\n : (await readdir(__dirname + '/node_modules')).filter(\n f => f && !f.startsWith('.')\n )\n const res = await Promise.all(\n types.map(async pkg => {\n return [\n pkg,\n await import(pkg).then(({ whoami }) => whoami).catch(e => niceErr(e)),\n await import(`${pkg}/sub.js`)\n .then(({ whoami }) => whoami)\n .catch(e => niceErr(e)),\n await import(`${pkg}/missing.js`)\n .then(({ whoami }) => whoami)\n .catch(e => niceErr(e)),\n ]\n })\n )\n return Object.fromEntries(\n res.map(([p, i, s, m]) => {\n return [p, [tofurl(i), tofurl(s), tofurl(m)]]\n })\n )\n}\n\nconst niceErr = (e: NodeJS.ErrnoException) => [\n e.code,\n e.message.replace(/\\nDid you mean.*/, ''),\n]\n\nconst tofurl = (s: string | [string, string]) =>\n typeof s !== 'string'\n ? s\n : s.startsWith('file://')\n ? s\n : String(pathToFileURL(s))\n\nif (require.main === module) {\n testAll(process.argv[2]).then(res =>\n console.log(JSON.stringify(res, null, 2))\n )\n}\n"]}isaacs-resolve-import-299e0c4/test/fixtures/t.ts000066400000000000000000000022461514541135200217530ustar00rootroot00000000000000import { readdir } from 'fs/promises' import { pathToFileURL } from 'url' export const testAll = async (which?: string) => { const types = which ? [which] : (await readdir(__dirname + '/node_modules')).filter( f => f && !f.startsWith('.') ) const res = await Promise.all( types.map(async pkg => { return [ pkg, await import(pkg).then(({ whoami }) => whoami).catch(e => niceErr(e)), await import(`${pkg}/sub.js`) .then(({ whoami }) => whoami) .catch(e => niceErr(e)), await import(`${pkg}/missing.js`) .then(({ whoami }) => whoami) .catch(e => niceErr(e)), ] }) ) return Object.fromEntries( res.map(([p, i, s, m]) => { return [p, [tofurl(i), tofurl(s), tofurl(m)]] }) ) } const niceErr = (e: NodeJS.ErrnoException) => [ e.code, e.message.replace(/\nDid you mean.*/, ''), ] const tofurl = (s: string | [string, string]) => typeof s !== 'string' ? s : s.startsWith('file://') ? s : String(pathToFileURL(s)) if (require.main === module) { testAll(process.argv[2]).then(res => console.log(JSON.stringify(res, null, 2)) ) } isaacs-resolve-import-299e0c4/test/fixtures/tsconfig.json000066400000000000000000000007171514541135200236500ustar00rootroot00000000000000{ "include": ["./*.ts"], "compilerOptions": { "allowSyntheticDefaultImports": true, "declaration": true, "declarationMap": true, "inlineSources": true, "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "isolatedModules": true, "moduleResolution": "node16", "resolveJsonModule": true, "skipLibCheck": true, "sourceMap": true, "strict": true, "target": "es2022", "module": "node16" } } isaacs-resolve-import-299e0c4/test/fixtures/x.js000066400000000000000000000000211514541135200217320ustar00rootroot00000000000000console.log('x') isaacs-resolve-import-299e0c4/test/get-all-conditional-values.ts000066400000000000000000000025651514541135200247660ustar00rootroot00000000000000import t from 'tap' import { getAllConditionalValues } from '../src/get-all-conditional-values.js' import { getConditionalValuesList } from '../src/get-conditional-values-list.js' import { Exports, Imports } from '../src/index.js' t.test('valid values', t => { const cases: [Imports | Exports, string[]][] = [ [{ import: { node: 'x' }, node: { import: 'y' } }, ['x']], [{ import: { node: { default: 'x' } }, node: { import: 'y' } }, ['x']], [ { import: { node: [{ z: 'z' }, 'x'] }, node: { import: 'y' } }, ['z', 'x'], ], [ { import: null, node: [{ require: 'x' }, { import: 'y' }, 'z'] }, ['x', 'z'], ], [ { './x': { import: './x.js' }, './y': './y.js' }, ['./x.js', './y.js'], ], [[{ import: { node: 'x' } }, { node: { import: 'y' } }], ['x']], ] t.plan(cases.length) for (const [ie, expect] of cases) { t.test(JSON.stringify(ie), t => { const actual = getAllConditionalValues(ie) t.strictSame(actual, expect) t.matchSnapshot(getConditionalValuesList(ie)) t.end() }) } }) // cannot mix types t.throws(() => getAllConditionalValues({ '#x': 'y', './z': 'invalid' })) t.throws(() => getAllConditionalValues({ './x': 'y', '#z': 'invalid' })) t.throws(() => getAllConditionalValues({ x: 'y', '#z': 'invalid' })) t.throws(() => getAllConditionalValues({ x: 'y', './z': 'invalid' })) isaacs-resolve-import-299e0c4/test/get-unique-condition-sets.ts000066400000000000000000000025251514541135200246620ustar00rootroot00000000000000import t from 'tap' import { getUniqueConditionSets } from '../src/get-unique-condition-sets.js' import { Exports, Imports } from '../src/index.js' const cases: [Imports | Exports, string[][]][] = [ [{ import: { node: 'x' }, node: { import: 'y' } }, [['import', 'node']]], [ { import: { node: { default: 'x' } }, node: { import: 'y' } }, [['import', 'node']], ], [ { import: { node: [{ z: 'z' }, 'x'] }, node: { import: 'y' } }, [ ['import', 'node', 'z'], ['import', 'node'], ], ], [ { import: null, node: [{ require: 'x' }, { import: 'y' }, 'z'] }, [['import'], ['node', 'require'], ['node']], ], [{ './x': { import: './x.js' }, './y': './y.js' }, [['import'], []]], [ [{ import: { node: 'x' } }, { node: { import: 'y' } }], [['import', 'node']], ], [ { './x': { import: './x.js' }, './y': { import: './y.js' } }, [['import']], ], [ { './a': './a.js', './x': { import: './x.js' }, './y': { import: './y.js' }, }, [[], ['import']], ], ] for (const [ie, e] of cases) { t.test(JSON.stringify(ie), t => { // turn into sets for t.strictSame comparison const expect = new Set(e.map(e => new Set(e))) const a = getUniqueConditionSets(ie) const actual = new Set(a.map(a => new Set(a))) t.strictSame(actual, expect) t.end() }) } isaacs-resolve-import-299e0c4/test/index.ts000066400000000000000000000303511514541135200207440ustar00rootroot00000000000000import { spawn } from 'node:child_process' import { readdir } from 'node:fs/promises' import { createRequire } from 'node:module' import { tmpdir } from 'node:os' import { resolve } from 'node:path' import { fileURLToPath, pathToFileURL } from 'node:url' import t from 'tap' import { Exports, getAllConditions, Imports, resolveImport, } from '../src/index.js' const require = createRequire(import.meta.url) const fixtures = resolve( fileURLToPath(new URL('.', import.meta.url)), 'fixtures', ) const nm = resolve(fixtures, 'node_modules') t.test('basic run-through of all dep cases', async t => { const p = require.resolve('./fixtures/t.js') const cases = (await readdir(nm)).filter(f => f && !f.startsWith('.')) const proc = spawn(process.execPath, [p]) const out: Buffer[] = [] proc.stdout.on('data', c => out.push(c)) await new Promise(r => proc.on('close', () => r())) const expect = JSON.parse(Buffer.concat(out).toString()) for (const c of cases) { t.test(c, async t => { const root = await resolveImport(c, p) .then(r => String(r)) .catch(e => { const er = e as NodeJS.ErrnoException return [er.code, er.message] }) const sub = await resolveImport(`${c}/sub.js`, p) .then(r => String(r)) .catch(e => { const er = e as NodeJS.ErrnoException return [er.code, er.message] }) const missing = await resolveImport(`${c}/missing.js`, p) .then(r => String(r)) .catch(e => { const er = e as NodeJS.ErrnoException return [er.code, er.message] }) // node 20.5 started reporting the package.json not being findable, // instead of the folder, which is also not ideal. // See: https://github.com/nodejs/node/issues/49674 const fix = (s: string | (string | undefined)[]) => ( Array.isArray(s) && s[0] === 'ERR_MODULE_NOT_FOUND' && typeof s[1] === 'string' ) ? [s[0], s[1].replace(/package\.json|missing\.js|index\.js/, '')] : s const e = expect[c].map(fix) t.strictSame([root, sub, missing].map(fix), e) const internal = await resolveImport(`#internal-${c}`, p) .then(r => String(r)) .catch(e => { const er = e as NodeJS.ErrnoException return [er.code, er.message] }) t.strictSame(internal, root) t.end() }) } t.end() }) t.test('missing package fails', async t => { const p = t.testdir() const n = 'this package does not exist' await t.rejects(resolveImport(n, p), { code: 'ERR_MODULE_NOT_FOUND', message: `Cannot find package '${n}' imported from ${p}`, }) }) t.test('builtin returns string', async t => { t.equal(await resolveImport('fs'), 'fs') const p = String(pathToFileURL(resolve(tmpdir()))) t.equal(await resolveImport('node:url', p), 'node:url') }) t.test('absolute url returns file url of it', async t => { const d = t.testdir({ 'c.js': '', }) const p = resolve(d, 'c.js') const u = pathToFileURL(p) const f = String(u) t.strictSame(await resolveImport(p), u) t.strictSame(await resolveImport(p, tmpdir()), u) t.equal(await resolveImport(u), u) t.equal(await resolveImport(u, tmpdir()), u) t.strictSame(await resolveImport(f), u) t.strictSame(await resolveImport(f, tmpdir()), u) t.rejects(resolveImport(resolve(d, 'x.js'))) t.rejects(resolveImport(pathToFileURL(resolve(d, 'x.js')))) t.rejects(resolveImport(String(pathToFileURL(resolve(d, 'x.js'))))) }) t.test('relative url resolves', async t => { const d = t.testdir({ x: { a: { 'b.js': '', }, y: { 'z.js': '', }, }, }) const rel = '../a/b.js' await t.rejects(resolveImport(rel), { message: 'relative import without parentURL', url: '../a/b.js', parentURL: undefined, }) const from = pathToFileURL(resolve(d, 'x/y/z.js')) const expect = pathToFileURL(resolve(d, 'x/a/b.js')) t.strictSame(await resolveImport(rel, from), expect) }) t.test('resolve a dep from right here', async t => { const dep = 'tap' const expect = pathToFileURL( resolve('node_modules/tap/dist/esm/index.js'), ) t.strictSame(await resolveImport(dep), expect) t.strictSame(await resolveImport(dep, import.meta.url), expect) }) t.test('more custom internal imports', async t => { const p = require.resolve('./fixtures/t.js') const cases: [string, string | null][] = [ ['#x', './x.js'], ['#not-found', null], ['#foo-xyz-bar', './multi-x-star-x.js'], ['#starxreplace', './star-x-x.js'], ['#starreplace', null], ['#multi-x-star', './multi-x-star-x.js'], ['#blorg', 'tap'], ['#nuevo', 'minipass'], ['#nul', 'minipass'], ['#null', null], ['#invalid', null], ['#invalid-star-expand', null], ['#.', 'glob'], ['#failing-conditional', null], ['#failing-starmatch', null], ['#passing-starmatch', './x.js'], ['', null], ] for (const [i, expect] of cases) { t.test(`${i} => ${expect}`, async t => { if (expect === null) { const e = await resolveImport(i, p).catch(e => e) t.match(e, Error) t.matchSnapshot(e.code) } else { t.strictSame( await resolveImport(i, p), await resolveImport(expect, p), ) } }) } t.end() }) t.test('named package with exports internal import', async t => { const p = require.resolve('./fixtures/t.js') const ir = '@isaacs/resolve-import-test-fixture' const x = ir + '/x' const res = await resolveImport(x, p) t.strictSame(res, await resolveImport('./x.js', p)) const passingStar = ir + '/passing-starmatch' const ps = await resolveImport(passingStar, p) t.strictSame(ps, await resolveImport('./x.js', p)) t.rejects(resolveImport(ir + '/y', p)) t.rejects(resolveImport(ir + '/nope', p)) t.rejects(resolveImport(ir + '/missing', p)) t.rejects(resolveImport(ir + '/failing-starmatch', p)) }) t.test('internal imports relative to package.json', async t => { const d = t.testdir({ 'package.json': JSON.stringify({ name: '@i/p', imports: { '#vnd': './source/vendor/x.js', '#missing': './source/vendor/missing.js', }, exports: { './vnd': './source/vendor/x.js', './missing': './source/vendor/missingjs', }, }), source: { vendor: { 'x.js': '', }, }, src: { 'mine.js': '', }, }) const expect = pathToFileURL(resolve(d, 'source/vendor/x.js')) const from = resolve(d, 'src/mine.js') t.strictSame(await resolveImport('#vnd', from), expect) t.strictSame(await resolveImport('@i/p/vnd', from), expect) t.rejects(resolveImport('#missing', from)) t.rejects(resolveImport('@i/p/missing', from)) }) t.test('getAllConditions', t => { t.test('valid cases', t => { const cases: [Imports | Exports, string[]][] = [ ['./hello.js', []], [{ default: './x.js' }, []], [ { import: { types: './x.d.ts', default: './x.mjs' } }, ['import', 'types'], ], [ { import: [{ types: './x.d.ts' }, './x.mjs'] }, ['import', 'types'], ], [{ import: ['./x.mjs', { types: './x.d.ts' }] }, ['import']], [{ default: ['./x.mjs', { types: './x.d.ts' }] }, []], [ { default: ['./x.mjs', { types: './x.d.ts' }], require: 'x.cjs' }, [], ], [ { require: 'x.cjs', default: ['./x.mjs', { types: './x.d.ts' }] }, ['require'], ], [ { blah: 'x.cjs', default: ['./x.mjs', { types: './x.d.ts' }] }, ['blah'], ], [ [{ x: 'y' }, { x: 'z' }, { y: 'z' }, { y: 'a' }], ['x', 'y'], ], [ { '#a': [{ x: 'y' }, { x: 'z' }, { y: 'z' }, { y: 'a' }], '#b': [{ x: 'y' }, { x: 'z' }, { y: 'z' }, { y: 'a' }], }, ['x', 'y'], ], ] t.plan(cases.length) for (const [ie, conds] of cases) { t.test(JSON.stringify(ie), t => { t.strictSame(new Set(getAllConditions(ie)), new Set(conds)) t.end() }) } }) // cannot mix types t.throws(() => getAllConditions({ '#x': 'y', './z': 'invalid' })) t.throws(() => getAllConditions({ './x': 'y', '#z': 'invalid' })) t.throws(() => getAllConditions({ x: 'y', '#z': 'invalid' })) t.throws(() => getAllConditions({ x: 'y', './z': 'invalid' })) t.end() }) t.test('link packages get realpathed', async t => { // resolving resolving should follow links const pkga = { 'package.json': JSON.stringify({ name: 'a', exports: './index.js' }), 'index.js': '', } const pkgb = { 'package.json': JSON.stringify({ name: 'b', exports: './index.js' }), 'index.js': '', } const pkgc = { 'package.json': JSON.stringify({ name: 'c', exports: './index.js' }), 'index.js': '', } const pkgloop = { 'package.json': JSON.stringify({ name: 'loop', exports: './index.js', }), 'index.js': '', } const dir = t.testdir({ 'index.js': '', node_modules: { a: t.fixture('symlink', '../a'), b: { ...pkgb, node_modules: { loop: t.fixture('symlink', './loopy'), loopy: t.fixture('symlink', './loop'), }, }, c: t.fixture('symlink', '../c'), loop: { ...pkgloop }, }, a: { ...pkga, b: { ...pkgb, node_modules: { c: t.fixture('symlink', '../../c'), loop: t.fixture('symlink', './loopy'), loopy: t.fixture('symlink', './loop'), }, }, c: { ...pkgc }, node_modules: { b: t.fixture('symlink', '../b'), c: { ...pkgc }, loop: t.fixture('symlink', './loopy'), loopy: t.fixture('symlink', './loop'), }, }, c: { ...pkgc }, }) const url = pathToFileURL(resolve(dir, 'index.js')) const r = async (id: string | URL, base: string | URL = url) => String(await resolveImport(id, base)) const u = (u: string) => new URL(u + '/index.js', url) const p = (p: string) => String(u(p)) t.equal(await r('a'), p('a'), 'a') t.equal(await r('b'), p('node_modules/b'), 'b') t.equal(await r('c'), p('c'), 'c') t.equal(await r('b', await r('a')), p('a/b'), 'a->b') t.equal(await r('c', await r('a')), p('a/node_modules/c'), 'a->c') t.equal(await r('a', await r('b')), p('a'), 'b->a') t.equal(await r('c', await r('b')), p('c'), 'b->c') t.equal(await r('b', await r('c')), p('node_modules/b'), 'c->b') t.equal(await r('a', await r('c')), p('a'), 'c->a') t.equal(await r('c', await r('b', await r('a'))), p('a/c'), 'a->b->c') t.test('url gets realpathed', async t => { t.equal( await r(u('a/node_modules/b/node_modules/c')), p('a/c'), 'url gets realpathed', ) t.equal( await r(u('node_modules/a/node_modules/c')), p('a/node_modules/c'), 'url gets realpathed', ) }) t.test('symlink loop is not valid dep', async t => { const loop = p('node_modules/loop') t.equal(await r('loop'), loop) t.equal(await r('loop', await r('b')), loop) t.equal(await r('loop', await r('b', await r('a'))), loop) t.equal(await r('loop', await r('b', await r('a'))), loop) }) }) t.test('fail to resolve #import if no pj imports', async t => { const dir = t.testdir({ 'index.js': '', 'x.js': '', 'package.json': JSON.stringify({ imports: { '#x': './x.js', }, }), x: { 'index.js': '', 'package.json': JSON.stringify({}), }, }) t.equal( String(await resolveImport('#x', resolve(dir, 'x.js'))), String(pathToFileURL(resolve(dir, 'x.js'))), ) t.rejects(resolveImport('#x', resolve(dir, 'x/index.js')), { message: `Package import specifier "#x" is not defined in package ` + `${resolve(dir, 'x/package.json')} imported from ${resolve( dir, 'x/index.js', )}`, }) }) t.test('parentURL needs a valid folder, not file', async t => { const dir = t.testdir({ node_modules: { dep: { 'package.json': JSON.stringify({ main: './dep.js' }), 'dep.js': '', }, }, folder: {}, }) const expect = String( pathToFileURL(resolve(dir, 'node_modules/dep/dep.js')), ) t.equal(String(await resolveImport('dep', dir + '/x')), expect) t.equal( String(await resolveImport('dep', pathToFileURL(dir + '/x'))), expect, ) }) isaacs-resolve-import-299e0c4/test/is-relative-require.ts000066400000000000000000000021721514541135200235330ustar00rootroot00000000000000import t from 'tap' t.test('not windows', async t => { const { isRelativeRequire } = await t.mockImport( '../src/is-relative-require.js', { '../src/is-windows.js': { isWindows: false, }, }, ) t.equal(isRelativeRequire('./x'), true) t.equal(isRelativeRequire('../x'), true) t.equal(isRelativeRequire('../../x'), true) t.equal(isRelativeRequire('x'), false) t.equal(isRelativeRequire('/x'), false) t.equal(isRelativeRequire('.\\x'), false) t.equal(isRelativeRequire('..\\x'), false) t.equal(isRelativeRequire('..\\..\\x'), false) }) t.test('yes windows', async t => { const { isRelativeRequire } = await t.mockImport( '../src/is-relative-require.js', { '../src/is-windows.js': { isWindows: true, }, }, ) t.equal(isRelativeRequire('./x'), true) t.equal(isRelativeRequire('../x'), true) t.equal(isRelativeRequire('../../x'), true) t.equal(isRelativeRequire('x'), false) t.equal(isRelativeRequire('/x'), false) t.equal(isRelativeRequire('.\\x'), true) t.equal(isRelativeRequire('..\\x'), true) t.equal(isRelativeRequire('..\\..\\x'), true) }) isaacs-resolve-import-299e0c4/test/is-windows.ts000066400000000000000000000016331514541135200217410ustar00rootroot00000000000000import t from 'tap' t.test('not windows', async t => { const d = Object.getOwnPropertyDescriptor( process, 'platform', ) as PropertyDescriptor t.teardown(() => { Object.defineProperty(process, 'platform', d) }) Object.defineProperty(process, 'platform', { value: 'linux', enumerable: true, configurable: true, writable: true, }) const { isWindows } = await t.mockImport('../src/is-windows.js', {}) t.equal(isWindows, false) }) t.test('yes windows', async t => { const d = Object.getOwnPropertyDescriptor( process, 'platform', ) as PropertyDescriptor t.teardown(() => { Object.defineProperty(process, 'platform', d) }) Object.defineProperty(process, 'platform', { value: 'win32', enumerable: true, configurable: true, writable: true, }) const { isWindows } = await t.mockImport('../src/is-windows.js', {}) t.equal(isWindows, true) }) isaacs-resolve-import-299e0c4/test/load-all.ts000066400000000000000000000004161514541135200213210ustar00rootroot00000000000000import t from 'tap' t.pass('just enforcing coverage') import { readdirSync } from 'node:fs' import { fileURLToPath } from 'node:url' const dir = fileURLToPath(new URL('..', import.meta.url)) + '/src' for (const f of readdirSync(dir)) { await import(`../src/${f}`) } isaacs-resolve-import-299e0c4/test/resolve-all-sync.ts000066400000000000000000000042011514541135200230270ustar00rootroot00000000000000import { resolve } from 'path' import t from 'tap' import { fileURLToPath, pathToFileURL } from 'url' import { resolveAllExportsSync, resolveAllLocalImportsSync, } from '../src/index.js' const cwd = pathToFileURL(process.cwd()).pathname t.formatSnapshot = (o: Record) => { return JSON.stringify( Object.fromEntries( Object.entries(o).map(([k, v]) => [ k, String(v).split(cwd).join('{CWD}'), ]), ), null, 2, ) } const __dirname = fileURLToPath(new URL('.', import.meta.url)) const pj = resolve(__dirname, 'fixtures/resolve-all/package.json') const noExportsImports = resolve( __dirname, 'fixtures/resolve-all/no-exports-imports.json', ) const exportsNotSubpaths = resolve( __dirname, 'fixtures/resolve-all/exports-not-subpaths.json', ) const exportsNotSubpathsObject = resolve( __dirname, 'fixtures/resolve-all/exports-not-subpaths-object.json', ) const importsInvalid = resolve( __dirname, 'fixtures/resolve-all/imports-invalid.json', ) const importsInvalidArray = resolve( __dirname, 'fixtures/resolve-all/imports-invalid-array.json', ) t.test('resolveAllLocalImports', async t => { t.matchSnapshot(resolveAllLocalImportsSync(pj)) }) t.test('resolveAllExports', async t => { t.matchSnapshot(resolveAllExportsSync(pj)) }) t.test('throws on invalid package', async t => { const __filename = fileURLToPath(import.meta.url) t.throws(() => resolveAllLocalImportsSync(__filename)) t.throws(() => resolveAllExportsSync(__filename)) t.throws(() => resolveAllLocalImportsSync(pathToFileURL(importsInvalid))) t.throws(() => resolveAllLocalImportsSync(importsInvalidArray)) }) t.test('no imports/exports returns no {}', async t => { t.strictSame( resolveAllLocalImportsSync(String(pathToFileURL(noExportsImports))), {}, ) t.strictSame( resolveAllExportsSync(String(pathToFileURL(noExportsImports))), {}, ) }) t.test('if exports is only one path, return "." only', async t => { t.matchSnapshot(resolveAllExportsSync(pathToFileURL(exportsNotSubpaths))) t.matchSnapshot( resolveAllExportsSync(pathToFileURL(exportsNotSubpathsObject)), ) }) isaacs-resolve-import-299e0c4/test/resolve-all.ts000066400000000000000000000041751514541135200220670ustar00rootroot00000000000000import { resolve } from 'path' import t from 'tap' import { fileURLToPath, pathToFileURL } from 'url' import { resolveAllExports, resolveAllLocalImports } from '../src/index.js' const cwd = pathToFileURL(process.cwd()).pathname t.formatSnapshot = (o: Record) => { return JSON.stringify( Object.fromEntries( Object.entries(o).map(([k, v]) => [ k, String(v).split(cwd).join('{CWD}'), ]), ), null, 2, ) } const __dirname = fileURLToPath(new URL('.', import.meta.url)) const pj = resolve(__dirname, 'fixtures/resolve-all/package.json') const noExportsImports = resolve( __dirname, 'fixtures/resolve-all/no-exports-imports.json', ) const exportsNotSubpaths = resolve( __dirname, 'fixtures/resolve-all/exports-not-subpaths.json', ) const exportsNotSubpathsObject = resolve( __dirname, 'fixtures/resolve-all/exports-not-subpaths-object.json', ) const importsInvalid = resolve( __dirname, 'fixtures/resolve-all/imports-invalid.json', ) const importsInvalidArray = resolve( __dirname, 'fixtures/resolve-all/imports-invalid-array.json', ) t.test('resolveAllLocalImports', async t => { t.matchSnapshot(await resolveAllLocalImports(pj)) }) t.test('resolveAllExports', async t => { t.matchSnapshot(await resolveAllExports(pj)) }) t.test('throws on invalid package', async t => { const __filename = fileURLToPath(import.meta.url) await t.rejects(resolveAllLocalImports(__filename)) await t.rejects(resolveAllExports(__filename)) await t.rejects(resolveAllLocalImports(pathToFileURL(importsInvalid))) await t.rejects(resolveAllLocalImports(importsInvalidArray)) }) t.test('no imports/exports returns no {}', async t => { t.strictSame( await resolveAllLocalImports(String(pathToFileURL(noExportsImports))), {}, ) t.strictSame( await resolveAllExports(String(pathToFileURL(noExportsImports))), {}, ) }) t.test('if exports is only one path, return "." only', async t => { t.matchSnapshot( await resolveAllExports(pathToFileURL(exportsNotSubpaths)), ) t.matchSnapshot( await resolveAllExports(pathToFileURL(exportsNotSubpathsObject)), ) }) isaacs-resolve-import-299e0c4/test/resolve-conditional-value.ts000066400000000000000000000021701514541135200247250ustar00rootroot00000000000000import t from 'tap' import { resolveConditionalValue } from '../src/index.js' t.test('without conditions', t => { t.equal(resolveConditionalValue(null, {}), null) t.equal(resolveConditionalValue('./x', {}), './x') t.equal(resolveConditionalValue(['./x'], {}), './x') t.equal(resolveConditionalValue({ default: './x' }, {}), './x') t.end() }) t.test('with conditions', t => { t.equal( resolveConditionalValue( { require: './x', default: './y' }, { conditions: ['require'] }, ), './x', ) t.equal( resolveConditionalValue( { node: './x', require: './y' }, { conditions: ['require'] }, ), './y', ) t.equal( resolveConditionalValue( { import: './x', default: './y' }, { conditions: ['require'] }, ), './y', ) t.end() }) t.test('with negative conditions', t => { t.equal( resolveConditionalValue( { type: './x' }, { conditions: ['type', '!default'] }, ), './x', ) t.equal( resolveConditionalValue( { import: './x', default: './y' }, { conditions: ['type', '!default'] }, ), null, ) t.end() }) isaacs-resolve-import-299e0c4/test/sync.ts000066400000000000000000000310211514541135200206040ustar00rootroot00000000000000import { spawn } from 'node:child_process' import { readdirSync } from 'node:fs' import { createRequire } from 'node:module' import { tmpdir } from 'node:os' import { resolve } from 'node:path' import { fileURLToPath, pathToFileURL } from 'node:url' import t from 'tap' import { type Exports, getAllConditions, type Imports, resolveImportSync, } from '../src/index.js' const require = createRequire(import.meta.url) const fixtures = resolve( fileURLToPath(new URL('.', import.meta.url)), 'fixtures', ) const nm = resolve(fixtures, 'node_modules') const pWrap = (fn: () => T): Promise => new Promise((res, rej) => { try { res(fn()) } catch (er) { rej(er) } }) t.test('basic run-through of all dep cases', async t => { const p = require.resolve('./fixtures/t.js') const cases = readdirSync(nm).filter(f => f && !f.startsWith('.')) const proc = spawn(process.execPath, [p]) const out: Buffer[] = [] proc.stdout.on('data', c => out.push(c)) await new Promise(r => proc.on('close', () => r())) const expect = JSON.parse(Buffer.concat(out).toString()) for (const c of cases) { t.test(c, async t => { const root = await pWrap(() => resolveImportSync(c, p)) .then(r => String(r)) .catch(e => { const er = e as NodeJS.ErrnoException return [er.code, er.message] }) const sub = await pWrap(() => resolveImportSync(`${c}/sub.js`, p)) .then(r => String(r)) .catch(e => { const er = e as NodeJS.ErrnoException return [er.code, er.message] }) const missing = await pWrap(() => resolveImportSync(`${c}/missing.js`, p), ) .then(r => String(r)) .catch(e => { const er = e as NodeJS.ErrnoException return [er.code, er.message] }) // node 20.5 started reporting the package.json not being findable, // instead of the folder, which is also not ideal. // See: https://github.com/nodejs/node/issues/49674 const fix = (s: string | (string | undefined)[]) => ( Array.isArray(s) && s[0] === 'ERR_MODULE_NOT_FOUND' && typeof s[1] === 'string' ) ? [s[0], s[1].replace(/package\.json|missing\.js|index\.js/, '')] : s const e = expect[c].map(fix) t.strictSame([root, sub, missing].map(fix), e) const internal = await pWrap(() => resolveImportSync(`#internal-${c}`, p), ) .then(r => String(r)) .catch(e => { const er = e as NodeJS.ErrnoException return [er.code, er.message] }) t.strictSame(internal, root) t.end() }) } t.end() }) t.test('missing package fails', async t => { const p = t.testdir() const n = 'this package does not exist' t.throws(() => resolveImportSync(n, p), { code: 'ERR_MODULE_NOT_FOUND', message: `Cannot find package '${n}' imported from ${p}`, }) }) t.test('builtin returns string', async t => { t.equal(resolveImportSync('fs'), 'fs') const p = String(pathToFileURL(resolve(tmpdir()))) t.equal(resolveImportSync('node:url', p), 'node:url') }) t.test('absolute url returns file url of it', async t => { const d = t.testdir({ 'c.js': '', }) const p = resolve(d, 'c.js') const u = pathToFileURL(p) const f = String(u) t.strictSame(resolveImportSync(p), u) t.strictSame(resolveImportSync(p, tmpdir()), u) t.equal(resolveImportSync(u), u) t.equal(resolveImportSync(u, tmpdir()), u) t.strictSame(resolveImportSync(f), u) t.strictSame(resolveImportSync(f, tmpdir()), u) t.throws(() => resolveImportSync(resolve(d, 'x.js'))) t.throws(() => resolveImportSync(pathToFileURL(resolve(d, 'x.js')))) t.throws(() => resolveImportSync(String(pathToFileURL(resolve(d, 'x.js')))), ) }) t.test('relative url resolves', async t => { const d = t.testdir({ x: { a: { 'b.js': '', }, y: { 'z.js': '', }, }, }) const rel = '../a/b.js' t.throws(() => resolveImportSync(rel), { message: 'relative import without parentURL', url: '../a/b.js', parentURL: undefined, }) const from = pathToFileURL(resolve(d, 'x/y/z.js')) const expect = pathToFileURL(resolve(d, 'x/a/b.js')) t.strictSame(resolveImportSync(rel, from), expect) }) t.test('resolve a dep from right here', async t => { const dep = 'tap' const expect = pathToFileURL( resolve('node_modules/tap/dist/esm/index.js'), ) t.strictSame(resolveImportSync(dep), expect) t.strictSame(resolveImportSync(dep, import.meta.url), expect) }) t.test('more custom internal imports', async t => { const p = require.resolve('./fixtures/t.js') const cases: [string, string | null][] = [ ['#x', './x.js'], ['#not-found', null], ['#foo-xyz-bar', './multi-x-star-x.js'], ['#starxreplace', './star-x-x.js'], ['#starreplace', null], ['#multi-x-star', './multi-x-star-x.js'], ['#blorg', 'tap'], ['#nuevo', 'minipass'], ['#nul', 'minipass'], ['#null', null], ['#invalid', null], ['#invalid-star-expand', null], ['#.', 'glob'], ['#failing-conditional', null], ['#failing-starmatch', null], ['#passing-starmatch', './x.js'], ['', null], ] for (const [i, expect] of cases) { t.test(`${i} => ${expect}`, async t => { if (expect === null) { const e = await pWrap(() => resolveImportSync(i, p)).catch(e => e) t.match(e, Error) t.matchSnapshot(e.code) } else { t.strictSame(resolveImportSync(i, p), resolveImportSync(expect, p)) } }) } t.end() }) t.test('named package with exports internal import', async t => { const p = require.resolve('./fixtures/t.js') const ir = '@isaacs/resolve-import-test-fixture' const x = ir + '/x' const res = resolveImportSync(x, p) t.strictSame(res, resolveImportSync('./x.js', p)) const passingStar = ir + '/passing-starmatch' const ps = resolveImportSync(passingStar, p) t.strictSame(ps, resolveImportSync('./x.js', p)) t.throws(() => resolveImportSync(ir + '/y', p)) t.throws(() => resolveImportSync(ir + '/nope', p)) t.throws(() => resolveImportSync(ir + '/missing', p)) t.throws(() => resolveImportSync(ir + '/failing-starmatch', p)) }) t.test('internal imports relative to package.json', async t => { const d = t.testdir({ 'package.json': JSON.stringify({ name: '@i/p', imports: { '#vnd': './source/vendor/x.js', '#missing': './source/vendor/missing.js', }, exports: { './vnd': './source/vendor/x.js', './missing': './source/vendor/missingjs', }, }), source: { vendor: { 'x.js': '', }, }, src: { 'mine.js': '', }, }) const expect = pathToFileURL(resolve(d, 'source/vendor/x.js')) const from = resolve(d, 'src/mine.js') t.strictSame(resolveImportSync('#vnd', from), expect) t.strictSame(resolveImportSync('@i/p/vnd', from), expect) t.throws(() => resolveImportSync('#missing', from)) t.throws(() => resolveImportSync('@i/p/missing', from)) }) t.test('getAllConditions', t => { t.test('valid cases', t => { const cases: [Imports | Exports, string[]][] = [ ['./hello.js', []], [{ default: './x.js' }, []], [ { import: { types: './x.d.ts', default: './x.mjs' } }, ['import', 'types'], ], [ { import: [{ types: './x.d.ts' }, './x.mjs'] }, ['import', 'types'], ], [{ import: ['./x.mjs', { types: './x.d.ts' }] }, ['import']], [{ default: ['./x.mjs', { types: './x.d.ts' }] }, []], [ { default: ['./x.mjs', { types: './x.d.ts' }], require: 'x.cjs' }, [], ], [ { require: 'x.cjs', default: ['./x.mjs', { types: './x.d.ts' }] }, ['require'], ], [ { blah: 'x.cjs', default: ['./x.mjs', { types: './x.d.ts' }] }, ['blah'], ], [ [{ x: 'y' }, { x: 'z' }, { y: 'z' }, { y: 'a' }], ['x', 'y'], ], [ { '#a': [{ x: 'y' }, { x: 'z' }, { y: 'z' }, { y: 'a' }], '#b': [{ x: 'y' }, { x: 'z' }, { y: 'z' }, { y: 'a' }], }, ['x', 'y'], ], ] t.plan(cases.length) for (const [ie, conds] of cases) { t.test(JSON.stringify(ie), t => { t.strictSame(new Set(getAllConditions(ie)), new Set(conds)) t.end() }) } }) // cannot mix types t.throws(() => getAllConditions({ '#x': 'y', './z': 'invalid' })) t.throws(() => getAllConditions({ './x': 'y', '#z': 'invalid' })) t.throws(() => getAllConditions({ x: 'y', '#z': 'invalid' })) t.throws(() => getAllConditions({ x: 'y', './z': 'invalid' })) t.end() }) t.test('link packages get realpathed', async t => { // resolving resolving should follow links const pkga = { 'package.json': JSON.stringify({ name: 'a', exports: './index.js' }), 'index.js': '', } const pkgb = { 'package.json': JSON.stringify({ name: 'b', exports: './index.js' }), 'index.js': '', } const pkgc = { 'package.json': JSON.stringify({ name: 'c', exports: './index.js' }), 'index.js': '', } const pkgloop = { 'package.json': JSON.stringify({ name: 'loop', exports: './index.js', }), 'index.js': '', } const dir = t.testdir({ 'index.js': '', node_modules: { a: t.fixture('symlink', '../a'), b: { ...pkgb, node_modules: { loop: t.fixture('symlink', './loopy'), loopy: t.fixture('symlink', './loop'), }, }, c: t.fixture('symlink', '../c'), loop: { ...pkgloop }, }, a: { ...pkga, b: { ...pkgb, node_modules: { c: t.fixture('symlink', '../../c'), loop: t.fixture('symlink', './loopy'), loopy: t.fixture('symlink', './loop'), }, }, c: { ...pkgc }, node_modules: { b: t.fixture('symlink', '../b'), c: { ...pkgc }, loop: t.fixture('symlink', './loopy'), loopy: t.fixture('symlink', './loop'), }, }, c: { ...pkgc }, }) const url = pathToFileURL(resolve(dir, 'index.js')) const r = async (id: string | URL, base: string | URL = url) => String(resolveImportSync(id, base)) const u = (u: string) => new URL(u + '/index.js', url) const p = (p: string) => String(u(p)) t.equal(await r('a'), p('a'), 'a') t.equal(await r('b'), p('node_modules/b'), 'b') t.equal(await r('c'), p('c'), 'c') t.equal(await r('b', await r('a')), p('a/b'), 'a->b') t.equal(await r('c', await r('a')), p('a/node_modules/c'), 'a->c') t.equal(await r('a', await r('b')), p('a'), 'b->a') t.equal(await r('c', await r('b')), p('c'), 'b->c') t.equal(await r('b', await r('c')), p('node_modules/b'), 'c->b') t.equal(await r('a', await r('c')), p('a'), 'c->a') t.equal(await r('c', await r('b', await r('a'))), p('a/c'), 'a->b->c') t.test('url gets realpathed', async t => { t.equal( await r(u('a/node_modules/b/node_modules/c')), p('a/c'), 'url gets realpathed', ) t.equal( await r(u('node_modules/a/node_modules/c')), p('a/node_modules/c'), 'url gets realpathed', ) }) t.test('symlink loop is not valid dep', async t => { const loop = p('node_modules/loop') t.equal(await r('loop'), loop) t.equal(await r('loop', await r('b')), loop) t.equal(await r('loop', await r('b', await r('a'))), loop) t.equal(await r('loop', await r('b', await r('a'))), loop) }) }) t.test('fail to resolve #import if no pj imports', async t => { const dir = t.testdir({ 'index.js': '', 'x.js': '', 'package.json': JSON.stringify({ imports: { '#x': './x.js', }, }), x: { 'index.js': '', 'package.json': JSON.stringify({}), }, }) t.equal( String(resolveImportSync('#x', resolve(dir, 'x.js'))), String(pathToFileURL(resolve(dir, 'x.js'))), ) t.throws(() => resolveImportSync('#x', resolve(dir, 'x/index.js')), { message: `Package import specifier "#x" is not defined in package ` + `${resolve(dir, 'x/package.json')} imported from ${resolve( dir, 'x/index.js', )}`, }) }) t.test('parentURL needs a valid folder, not file', async t => { const dir = t.testdir({ node_modules: { dep: { 'package.json': JSON.stringify({ main: './dep.js' }), 'dep.js': '', }, }, folder: {}, }) const expect = String( pathToFileURL(resolve(dir, 'node_modules/dep/dep.js')), ) t.equal(String(resolveImportSync('dep', dir + '/x')), expect) t.equal( String(resolveImportSync('dep', pathToFileURL(dir + '/x'))), expect, ) }) isaacs-resolve-import-299e0c4/tsconfig.json000066400000000000000000000006551514541135200210210ustar00rootroot00000000000000{ "compilerOptions": { "declaration": true, "declarationMap": true, "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "inlineSources": true, "jsx": "react", "module": "nodenext", "moduleResolution": "nodenext", "noUncheckedIndexedAccess": true, "resolveJsonModule": true, "skipLibCheck": true, "sourceMap": true, "strict": true, "target": "es2022" } } isaacs-resolve-import-299e0c4/typedoc.json000066400000000000000000000003411514541135200206440ustar00rootroot00000000000000{ "tsconfig": "./.tshy/esm.json", "entryPoints": ["./src/**/*.+(ts|tsx|mts|cts)"], "navigationLinks": { "GitHub": "https://github.com/isaacs/resolve-import", "isaacs projects": "https://isaacs.github.io/" } }