pax_global_header00006660000000000000000000000064143463657100014523gustar00rootroot0000000000000052 comment=6d788049958514dbce52ef2bebc633f0ad336b51 resolve-pkg-maps-1.0.0/000077500000000000000000000000001434636571000147155ustar00rootroot00000000000000resolve-pkg-maps-1.0.0/.editorconfig000066400000000000000000000002571434636571000173760ustar00rootroot00000000000000root = true [*] indent_style = tab end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true [*.yml] indent_style = space indent_size = 2 resolve-pkg-maps-1.0.0/.gitattributes000066400000000000000000000000231434636571000176030ustar00rootroot00000000000000* text=auto eol=lf resolve-pkg-maps-1.0.0/.github/000077500000000000000000000000001434636571000162555ustar00rootroot00000000000000resolve-pkg-maps-1.0.0/.github/workflows/000077500000000000000000000000001434636571000203125ustar00rootroot00000000000000resolve-pkg-maps-1.0.0/.github/workflows/release.yml000066400000000000000000000012451434636571000224570ustar00rootroot00000000000000name: Release on: push: branches: master jobs: release: name: Release runs-on: ubuntu-latest timeout-minutes: 10 steps: - name: Checkout uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version-file: '.nvmrc' - name: Install pnpm & dependencies uses: pnpm/action-setup@v2.0.1 with: version: 7 run_install: true - name: Test run: pnpm test - name: Lint run: pnpm lint - name: Release env: GH_TOKEN: ${{ secrets.GH_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} run: pnpm dlx semantic-release resolve-pkg-maps-1.0.0/.github/workflows/test.yml000066400000000000000000000010641434636571000220150ustar00rootroot00000000000000name: Test on: push: branches: [develop] pull_request: branches: [master, develop] jobs: test: name: Test runs-on: ubuntu-latest timeout-minutes: 10 steps: - name: Checkout uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version-file: '.nvmrc' - name: Install pnpm & dependencies uses: pnpm/action-setup@v2.0.1 with: version: 7 run_install: true - name: Test run: pnpm test - name: Lint run: pnpm lint resolve-pkg-maps-1.0.0/.gitignore000066400000000000000000000004341434636571000167060ustar00rootroot00000000000000# macOS .DS_Store # Logs logs *.log npm-debug.log* yarn-debug.log* yarn-error.log* lerna-debug.log* # Dependency directories node_modules/ # Output of 'npm pack' *.tgz # dotenv environment variables file .env .env.test # VSCode .vscode # Distribution dist # Cache .eslintcache resolve-pkg-maps-1.0.0/.nvmrc000066400000000000000000000000111434636571000160330ustar00rootroot00000000000000v16.15.1 resolve-pkg-maps-1.0.0/LICENSE000066400000000000000000000021011434636571000157140ustar00rootroot00000000000000MIT License Copyright (c) Hiroki Osame Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. resolve-pkg-maps-1.0.0/README.md000066400000000000000000000171351434636571000162030ustar00rootroot00000000000000# resolve-pkg-maps Utils to resolve `package.json` subpath & conditional [`exports`](https://nodejs.org/api/packages.html#exports)/[`imports`](https://nodejs.org/api/packages.html#imports) in resolvers. Implements the [ESM resolution algorithm](https://nodejs.org/api/esm.html#resolver-algorithm-specification). Tested [against Node.js](/tests/) for accuracy. Support this project by ⭐️ starring and sharing it. [Follow me](https://github.com/privatenumber) to see what other cool projects I'm working on! ❤️ ## Usage ### Resolving `exports` _utils/package.json_ ```json5 { // ... "exports": { "./reverse": { "require": "./file.cjs", "default": "./file.mjs" } }, // ... } ``` ```ts import { resolveExports } from 'resolve-pkg-maps' const [packageName, packageSubpath] = parseRequest('utils/reverse') const resolvedPaths: string[] = resolveExports( getPackageJson(packageName).exports, packageSubpath, ['import', ...otherConditions] ) // => ['./file.mjs'] ``` ### Resolving `imports` _package.json_ ```json5 { // ... "imports": { "#supports-color": { "node": "./index.js", "default": "./browser.js" } }, // ... } ``` ```ts import { resolveImports } from 'resolve-pkg-maps' const resolvedPaths: string[] = resolveImports( getPackageJson('.').imports, '#supports-color', ['node', ...otherConditions] ) // => ['./index.js'] ``` ## API ### resolveExports(exports, request, conditions) Returns: `string[]` Resolves the `request` based on `exports` and `conditions`. Returns an array of paths (e.g. in case a fallback array is matched). #### exports Type: ```ts type Exports = PathOrMap | readonly PathOrMap[] type PathOrMap = string | PathConditionsMap type PathConditionsMap = { [condition: string]: PathConditions | null } ``` The [`exports` property](https://nodejs.org/api/packages.html#exports) value in `package.json`. #### request Type: `string` The package subpath to resolve. Assumes a normalized path is passed in (eg. [repeating slashes `//`](https://github.com/nodejs/node/issues/44316)). It _should not_ start with `/` or `./`. Example: if the full import path is `some-package/subpath/file`, the request is `subpath/file`. #### conditions Type: `readonly string[]` An array of conditions to use when resolving the request. For reference, Node.js's default conditions are [`['node', 'import']`](https://nodejs.org/api/esm.html#:~:text=defaultConditions%20is%20the%20conditional%20environment%20name%20array%2C%20%5B%22node%22%2C%20%22import%22%5D.). The order of this array does not matter; the order of condition keys in the export map is what matters instead. Not all conditions in the array need to be met to resolve the request. It just needs enough to resolve to a path. --- ### resolveImports(imports, request, conditions) Returns: `string[]` Resolves the `request` based on `imports` and `conditions`. Returns an array of paths (e.g. in case a fallback array is matched). #### imports Type: ```ts type Imports = { [condition: string]: PathOrMap | readonly PathOrMap[] | null } type PathOrMap = string | Imports ``` The [`imports` property](https://nodejs.org/api/packages.html#imports) value in `package.json`. #### request Type: `string` The request resolve. Assumes a normalized path is passed in (eg. [repeating slashes `//`](https://github.com/nodejs/node/issues/44316)). > **Note:** In Node.js, imports resolutions are limited to requests prefixed with `#`. However, this package does not enforce that requirement in case you want to add custom support for non-prefixed entries. #### conditions Type: `readonly string[]` An array of conditions to use when resolving the request. For reference, Node.js's default conditions are [`['node', 'import']`](https://nodejs.org/api/esm.html#:~:text=defaultConditions%20is%20the%20conditional%20environment%20name%20array%2C%20%5B%22node%22%2C%20%22import%22%5D.). The order of this array does not matter; the order of condition keys in the import map is what matters instead. Not all conditions in the array need to be met to resolve the request. It just needs enough to resolve to a path. --- ### Errors #### `ERR_PACKAGE_PATH_NOT_EXPORTED` - If the request is not exported by the export map #### `ERR_PACKAGE_IMPORT_NOT_DEFINED` - If the request is not defined by the import map #### `ERR_INVALID_PACKAGE_CONFIG` - If an object contains properties that are both paths and conditions (e.g. start with and without `.`) - If an object contains numeric properties #### `ERR_INVALID_PACKAGE_TARGET` - If a resolved exports path is not a valid path (e.g. not relative or has protocol) - If a resolved path includes `..` or `node_modules` - If a resolved path is a type that cannot be parsed ## FAQ ### Why do the APIs return an array of paths? `exports`/`imports` supports passing in a [fallback array](https://github.com/jkrems/proposal-pkg-exports/#:~:text=Whenever%20there%20is,to%20new%20cases.) to provide fallback paths if the previous one is invalid: ```json5 { "exports": { "./feature": [ "./file.js", "./fallback.js" ] } } ``` Node.js's implementation [picks the first valid path (without attempting to resolve it)](https://github.com/nodejs/node/issues/44282#issuecomment-1220151715) and throws an error if it can't be resolved. Node.js's fallback array is designed for [forward compatibility with features](https://github.com/jkrems/proposal-pkg-exports/#:~:text=providing%20forwards%20compatiblitiy%20for%20new%20features) (e.g. protocols) that can be immediately/inexpensively validated: ```json5 { "exports": { "./core-polyfill": ["std:core-module", "./core-polyfill.js"] } } ``` However, [Webpack](https://webpack.js.org/guides/package-exports/#alternatives) and [TypeScript](https://github.com/microsoft/TypeScript/blob/71e852922888337ef51a0e48416034a94a6c34d9/src/compiler/moduleSpecifiers.ts#L695) have deviated from this behavior and attempts to resolve the next path if a path cannot be resolved. By returning an array of matched paths instead of just the first one, the user can decide which behavior to adopt. ### How is it different from [`resolve.exports`](https://github.com/lukeed/resolve.exports)? `resolve.exports` only resolves `exports`, whereas this package resolves both `exports` & `imports`. This comparison will only cover resolving `exports`. - Despite it's name, `resolve.exports` handles more than just `exports`. It takes in the entire `package.json` object to handle resolving `.` and [self-references](https://nodejs.org/api/packages.html#self-referencing-a-package-using-its-name). This package only accepts `exports`/`imports` maps from `package.json` and is scoped to only resolving what's defined in the maps. - `resolve.exports` accepts the full request (e.g. `foo/bar`), whereas this package only accepts the requested subpath (e.g. `bar`). - `resolve.exports` only returns the first result in a fallback array. This package returns an array of results for the user to decide how to handle it. - `resolve.exports` supports [subpath folder mapping](https://nodejs.org/docs/latest-v16.x/api/packages.html#subpath-folder-mappings) (deprecated in Node.js v16 & removed in v17) but seems to [have a bug](https://github.com/lukeed/resolve.exports/issues/7). This package does not support subpath folder mapping because Node.js has removed it in favor of using subpath patterns. - Neither resolvers rely on a file-system This package also addresses many of the bugs in `resolve.exports`, demonstrated in [this test](/tests/exports/compare-resolve.exports.ts). resolve-pkg-maps-1.0.0/package.json000066400000000000000000000031201434636571000171770ustar00rootroot00000000000000{ "name": "resolve-pkg-maps", "version": "0.0.0-semantic-release", "description": "Resolve package.json exports & imports maps", "keywords": [ "node.js", "package.json", "exports", "imports" ], "license": "MIT", "repository": "privatenumber/resolve-pkg-maps", "funding": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1", "author": { "name": "Hiroki Osame", "email": "hiroki.osame@gmail.com" }, "type": "module", "files": [ "dist" ], "main": "./dist/index.cjs", "module": "./dist/index.mjs", "types": "./dist/index.d.cts", "exports": { "require": { "types": "./dist/index.d.cts", "default": "./dist/index.cjs" }, "import": { "types": "./dist/index.d.mts", "default": "./dist/index.mjs" } }, "imports": { "#resolve-pkg-maps": { "types": "./src/index.ts", "development": "./src/index.ts", "default": "./dist/index.mjs" } }, "scripts": { "build": "pkgroll --target=node12.19 --minify", "lint": "eslint --cache .", "type-check": "tsc --noEmit", "test": "pnpm build && tsx tests", "dev": "tsx watch --conditions=development tests", "prepack": "pnpm build && clean-pkg-json" }, "devDependencies": { "@pvtnbr/eslint-config": "^0.33.0", "@types/node": "^18.11.11", "clean-pkg-json": "^1.2.0", "eslint": "^8.29.0", "execa": "^6.1.0", "fs-fixture": "^1.2.0", "manten": "^0.6.0", "pkgroll": "^1.8.0", "resolve.exports": "^1.1.0", "tsx": "^3.12.1", "typescript": "^4.9.4" }, "eslintConfig": { "extends": "@pvtnbr", "rules": { "unicorn/no-array-reduce": "off", "no-prototype-builtins": "off" } } } resolve-pkg-maps-1.0.0/pnpm-lock.yaml000066400000000000000000003214301434636571000175040ustar00rootroot00000000000000lockfileVersion: 5.4 specifiers: '@pvtnbr/eslint-config': ^0.33.0 '@types/node': ^18.11.11 clean-pkg-json: ^1.2.0 eslint: ^8.29.0 execa: ^6.1.0 fs-fixture: ^1.2.0 manten: ^0.6.0 pkgroll: ^1.8.0 resolve.exports: ^1.1.0 tsx: ^3.12.1 typescript: ^4.9.4 devDependencies: '@pvtnbr/eslint-config': 0.33.0_ha6vam6werchizxrnqvarmz2zu '@types/node': 18.11.11 clean-pkg-json: 1.2.0 eslint: 8.29.0 execa: 6.1.0 fs-fixture: 1.2.0 manten: 0.6.0 pkgroll: 1.8.0_typescript@4.9.4 resolve.exports: 1.1.0 tsx: 3.12.1 typescript: 4.9.4 packages: /@babel/code-frame/7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 dev: true /@babel/helper-validator-identifier/7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} dev: true /@babel/highlight/7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.19.1 chalk: 2.4.2 js-tokens: 4.0.0 dev: true /@esbuild-kit/cjs-loader/2.4.1: resolution: {integrity: sha512-lhc/XLith28QdW0HpHZvZKkorWgmCNT7sVelMHDj3HFdTfdqkwEKvT+aXVQtNAmCC39VJhunDkWhONWB7335mg==} dependencies: '@esbuild-kit/core-utils': 3.0.0 get-tsconfig: 4.2.0 dev: true /@esbuild-kit/core-utils/3.0.0: resolution: {integrity: sha512-TXmwH9EFS3DC2sI2YJWJBgHGhlteK0Xyu1VabwetMULfm3oYhbrsWV5yaSr2NTWZIgDGVLHbRf0inxbjXqAcmQ==} dependencies: esbuild: 0.15.18 source-map-support: 0.5.21 dev: true /@esbuild-kit/esm-loader/2.5.4: resolution: {integrity: sha512-afmtLf6uqxD5IgwCzomtqCYIgz/sjHzCWZFvfS5+FzeYxOURPUo4QcHtqJxbxWOMOogKriZanN/1bJQE/ZL93A==} dependencies: '@esbuild-kit/core-utils': 3.0.0 get-tsconfig: 4.2.0 dev: true /@esbuild/android-arm/0.15.18: resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} engines: {node: '>=12'} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true /@esbuild/linux-loong64/0.15.18: resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] requiresBuild: true dev: true optional: true /@eslint/eslintrc/1.3.3: resolution: {integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 espree: 9.4.1 globals: 13.18.0 ignore: 5.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color dev: true /@humanwhocodes/config-array/0.11.7: resolution: {integrity: sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color dev: true /@humanwhocodes/module-importer/1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} dev: true /@humanwhocodes/object-schema/1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true /@jest/expect-utils/29.3.1: resolution: {integrity: sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.2.0 dev: true /@jest/schemas/29.0.0: resolution: {integrity: sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.24.51 dev: true /@jest/types/29.3.1: resolution: {integrity: sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.0.0 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 '@types/node': 18.11.11 '@types/yargs': 17.0.17 chalk: 4.1.2 dev: true /@nodelib/fs.scandir/2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 dev: true /@nodelib/fs.stat/2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} dev: true /@nodelib/fs.walk/1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.14.0 dev: true /@pkgr/utils/2.3.1: resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dependencies: cross-spawn: 7.0.3 is-glob: 4.0.3 open: 8.4.0 picocolors: 1.0.0 tiny-glob: 0.2.9 tslib: 2.4.1 dev: true /@pvtnbr/eslint-config/0.33.0_ha6vam6werchizxrnqvarmz2zu: resolution: {integrity: sha512-27Zs5L1LKtT4DKfFPalPTjImCiU3UMvfTMIModuFWn7nhGhbv4SEUPo5pc8fYoTgmAlnwp/NNMhw3yUUFZKyzw==} peerDependencies: eslint: ^7.15.0 || ^8.0.0 dependencies: '@typescript-eslint/eslint-plugin': 5.45.1_f3ripjxnrcbcxlztumpiegdjha '@typescript-eslint/parser': 5.45.1_ha6vam6werchizxrnqvarmz2zu confusing-browser-globals: 1.0.11 eslint: 8.29.0 eslint-import-resolver-typescript: 3.5.2_lt3hqehuojhfcbzgzqfngbtmrq eslint-plugin-eslint-comments: 3.2.0_eslint@8.29.0 eslint-plugin-import: 2.26.0_qfsg7upu5e4dqco5ntekgyqxwu eslint-plugin-jsonc: 2.5.0_eslint@8.29.0 eslint-plugin-markdown: 3.0.0_eslint@8.29.0 eslint-plugin-no-use-extend-native: 0.5.0 eslint-plugin-node: 11.1.0_eslint@8.29.0 eslint-plugin-promise: 6.1.1_eslint@8.29.0 eslint-plugin-react: 7.31.11_eslint@8.29.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.29.0 eslint-plugin-regexp: 1.11.0_eslint@8.29.0 eslint-plugin-unicorn: 44.0.2_eslint@8.29.0 eslint-plugin-vue: 9.8.0_eslint@8.29.0 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color - typescript dev: true /@rollup/plugin-alias/3.1.9_rollup@2.79.1: resolution: {integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==} engines: {node: '>=8.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0 dependencies: rollup: 2.79.1 slash: 3.0.0 dev: true /@rollup/plugin-commonjs/22.0.2_rollup@2.79.1: resolution: {integrity: sha512-//NdP6iIwPbMTcazYsiBMbJW7gfmpHom33u1beiIoHDEM0Q9clvtQB1T0efvMqHeKsGohiHo97BCPCkBXdscwg==} engines: {node: '>= 12.0.0'} peerDependencies: rollup: ^2.68.0 dependencies: '@rollup/pluginutils': 3.1.0_rollup@2.79.1 commondir: 1.0.1 estree-walker: 2.0.2 glob: 7.2.3 is-reference: 1.2.1 magic-string: 0.25.9 resolve: 1.22.1 rollup: 2.79.1 dev: true /@rollup/plugin-inject/4.0.4_rollup@2.79.1: resolution: {integrity: sha512-4pbcU4J/nS+zuHk+c+OL3WtmEQhqxlZ9uqfjQMQDOHOPld7PsCd8k5LWs8h5wjwJN7MgnAn768F2sDxEP4eNFQ==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: '@rollup/pluginutils': 3.1.0_rollup@2.79.1 estree-walker: 2.0.2 magic-string: 0.25.9 rollup: 2.79.1 dev: true /@rollup/plugin-json/4.1.0_rollup@2.79.1: resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: '@rollup/pluginutils': 3.1.0_rollup@2.79.1 rollup: 2.79.1 dev: true /@rollup/plugin-node-resolve/13.3.0_rollup@2.79.1: resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==} engines: {node: '>= 10.0.0'} peerDependencies: rollup: ^2.42.0 dependencies: '@rollup/pluginutils': 3.1.0_rollup@2.79.1 '@types/resolve': 1.17.1 deepmerge: 4.2.2 is-builtin-module: 3.2.0 is-module: 1.0.0 resolve: 1.22.1 rollup: 2.79.1 dev: true /@rollup/plugin-replace/4.0.0_rollup@2.79.1: resolution: {integrity: sha512-+rumQFiaNac9y64OHtkHGmdjm7us9bo1PlbgQfdihQtuNxzjpaB064HbRnewUOggLQxVCCyINfStkgmBeQpv1g==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: '@rollup/pluginutils': 3.1.0_rollup@2.79.1 magic-string: 0.25.9 rollup: 2.79.1 dev: true /@rollup/pluginutils/3.1.0_rollup@2.79.1: resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0 dependencies: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 rollup: 2.79.1 dev: true /@rollup/pluginutils/4.2.1: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} dependencies: estree-walker: 2.0.2 picomatch: 2.3.1 dev: true /@sinclair/typebox/0.24.51: resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} dev: true /@types/estree/0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} dev: true /@types/estree/1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} dev: true /@types/istanbul-lib-coverage/2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true /@types/istanbul-lib-report/3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: '@types/istanbul-lib-coverage': 2.0.4 dev: true /@types/istanbul-reports/3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 dev: true /@types/json-schema/7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true /@types/json5/0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true /@types/mdast/3.0.10: resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} dependencies: '@types/unist': 2.0.6 dev: true /@types/node/18.11.11: resolution: {integrity: sha512-KJ021B1nlQUBLopzZmPBVuGU9un7WJd/W4ya7Ih02B4Uwky5Nja0yGYav2EfYIk0RR2Q9oVhf60S2XR1BCWJ2g==} dev: true /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: '@types/node': 18.11.11 dev: true /@types/semver/7.3.13: resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} dev: true /@types/stack-utils/2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true /@types/unist/2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: true /@types/yargs-parser/21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true /@types/yargs/17.0.17: resolution: {integrity: sha512-72bWxFKTK6uwWJAVT+3rF6Jo6RTojiJ27FQo8Rf60AL+VZbzoVPnMFhKsUnbjR8A3BTCYQ7Mv3hnl8T0A+CX9g==} dependencies: '@types/yargs-parser': 21.0.0 dev: true /@typescript-eslint/eslint-plugin/5.45.1_f3ripjxnrcbcxlztumpiegdjha: resolution: {integrity: sha512-cOizjPlKEh0bXdFrBLTrI/J6B/QMlhwE9auOov53tgB+qMukH6/h8YAK/qw+QJGct/PTbdh2lytGyipxCcEtAw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@typescript-eslint/parser': 5.45.1_ha6vam6werchizxrnqvarmz2zu '@typescript-eslint/scope-manager': 5.45.1 '@typescript-eslint/type-utils': 5.45.1_ha6vam6werchizxrnqvarmz2zu '@typescript-eslint/utils': 5.45.1_ha6vam6werchizxrnqvarmz2zu debug: 4.3.4 eslint: 8.29.0 ignore: 5.2.1 natural-compare-lite: 1.4.0 regexpp: 3.2.0 semver: 7.3.8 tsutils: 3.21.0_typescript@4.9.4 typescript: 4.9.4 transitivePeerDependencies: - supports-color dev: true /@typescript-eslint/parser/5.45.1_ha6vam6werchizxrnqvarmz2zu: resolution: {integrity: sha512-JQ3Ep8bEOXu16q0ztsatp/iQfDCtvap7sp/DKo7DWltUquj5AfCOpX2zSzJ8YkAVnrQNqQ5R62PBz2UtrfmCkA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@typescript-eslint/scope-manager': 5.45.1 '@typescript-eslint/types': 5.45.1 '@typescript-eslint/typescript-estree': 5.45.1_typescript@4.9.4 debug: 4.3.4 eslint: 8.29.0 typescript: 4.9.4 transitivePeerDependencies: - supports-color dev: true /@typescript-eslint/scope-manager/5.45.1: resolution: {integrity: sha512-D6fCileR6Iai7E35Eb4Kp+k0iW7F1wxXYrOhX/3dywsOJpJAQ20Fwgcf+P/TDtvQ7zcsWsrJaglaQWDhOMsspQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.45.1 '@typescript-eslint/visitor-keys': 5.45.1 dev: true /@typescript-eslint/type-utils/5.45.1_ha6vam6werchizxrnqvarmz2zu: resolution: {integrity: sha512-aosxFa+0CoYgYEl3aptLe1svP910DJq68nwEJzyQcrtRhC4BN0tJAvZGAe+D0tzjJmFXe+h4leSsiZhwBa2vrA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@typescript-eslint/typescript-estree': 5.45.1_typescript@4.9.4 '@typescript-eslint/utils': 5.45.1_ha6vam6werchizxrnqvarmz2zu debug: 4.3.4 eslint: 8.29.0 tsutils: 3.21.0_typescript@4.9.4 typescript: 4.9.4 transitivePeerDependencies: - supports-color dev: true /@typescript-eslint/types/5.45.1: resolution: {integrity: sha512-HEW3U0E5dLjUT+nk7b4lLbOherS1U4ap+b9pfu2oGsW3oPu7genRaY9dDv3nMczC1rbnRY2W/D7SN05wYoGImg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true /@typescript-eslint/typescript-estree/5.45.1_typescript@4.9.4: resolution: {integrity: sha512-76NZpmpCzWVrrb0XmYEpbwOz/FENBi+5W7ipVXAsG3OoFrQKJMiaqsBMbvGRyLtPotGqUfcY7Ur8j0dksDJDng==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@typescript-eslint/types': 5.45.1 '@typescript-eslint/visitor-keys': 5.45.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 tsutils: 3.21.0_typescript@4.9.4 typescript: 4.9.4 transitivePeerDependencies: - supports-color dev: true /@typescript-eslint/utils/5.45.1_ha6vam6werchizxrnqvarmz2zu: resolution: {integrity: sha512-rlbC5VZz68+yjAzQBc4I7KDYVzWG2X/OrqoZrMahYq3u8FFtmQYc+9rovo/7wlJH5kugJ+jQXV5pJMnofGmPRw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.11 '@types/semver': 7.3.13 '@typescript-eslint/scope-manager': 5.45.1 '@typescript-eslint/types': 5.45.1 '@typescript-eslint/typescript-estree': 5.45.1_typescript@4.9.4 eslint: 8.29.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@8.29.0 semver: 7.3.8 transitivePeerDependencies: - supports-color - typescript dev: true /@typescript-eslint/visitor-keys/5.45.1: resolution: {integrity: sha512-cy9ln+6rmthYWjH9fmx+5FU/JDpjQb586++x2FZlveq7GdGuLLW9a2Jcst2TGekH82bXpfmRNSwP9tyEs6RjvQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.45.1 eslint-visitor-keys: 3.3.0 dev: true /acorn-jsx/5.3.2_acorn@8.8.1: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.8.1 dev: true /acorn/8.8.1: resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} engines: {node: '>=0.4.0'} hasBin: true dev: true /ajv/6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 dev: true /ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} dev: true /ansi-styles/3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 dev: true /ansi-styles/4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 dev: true /ansi-styles/5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} dev: true /argparse/2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true /array-includes/3.1.6: resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 get-intrinsic: 1.1.3 is-string: 1.0.7 dev: true /array-union/2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} dev: true /array.prototype.flat/1.3.1: resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 es-shim-unscopables: 1.0.0 dev: true /array.prototype.flatmap/1.3.1: resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 es-shim-unscopables: 1.0.0 dev: true /array.prototype.tosorted/1.1.1: resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 es-shim-unscopables: 1.0.0 get-intrinsic: 1.1.3 dev: true /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true /boolbase/1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} dev: true /brace-expansion/1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 dev: true /braces/3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 dev: true /buffer-from/1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true /builtin-modules/3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} dev: true /call-bind/1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.1.3 dev: true /callsites/3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: true /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 dev: true /chalk/4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 dev: true /character-entities-legacy/1.1.4: resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} dev: true /character-entities/1.2.4: resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} dev: true /character-reference-invalid/1.1.4: resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} dev: true /ci-info/3.7.0: resolution: {integrity: sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==} engines: {node: '>=8'} dev: true /clean-pkg-json/1.2.0: resolution: {integrity: sha512-QHBWWOtpSCv5nfMFKwyxn4WMvkYE0msxj5xiqejYGqYepWVrK7O/om1Vn6nSl/WPtYn8ge9YmSCbTi1Hp8k+Hg==} hasBin: true dev: true /clean-regexp/1.0.0: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} dependencies: escape-string-regexp: 1.0.5 dev: true /color-convert/1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 dev: true /color-convert/2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 dev: true /color-name/1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} dev: true /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true /comment-parser/1.3.1: resolution: {integrity: sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==} engines: {node: '>= 12.0.0'} dev: true /commondir/1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} dev: true /concat-map/0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true /confusing-browser-globals/1.0.11: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} dev: true /cross-spawn/7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 dev: true /cssesc/3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true dev: true /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: supports-color: '*' peerDependenciesMeta: supports-color: optional: true dependencies: ms: 2.0.0 dev: true /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: supports-color: '*' peerDependenciesMeta: supports-color: optional: true dependencies: ms: 2.1.3 dev: true /debug/4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' peerDependenciesMeta: supports-color: optional: true dependencies: ms: 2.1.2 dev: true /deep-is/0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true /deepmerge/4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} engines: {node: '>=0.10.0'} dev: true /define-lazy-prop/2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} dev: true /define-properties/1.1.4: resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} engines: {node: '>= 0.4'} dependencies: has-property-descriptors: 1.0.0 object-keys: 1.1.1 dev: true /diff-sequences/29.3.1: resolution: {integrity: sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true /dir-glob/3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 dev: true /doctrine/2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 dev: true /doctrine/3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 dev: true /enhanced-resolve/5.12.0: resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.10 tapable: 2.2.1 dev: true /error-ex/1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 dev: true /es-abstract/1.20.5: resolution: {integrity: sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 es-to-primitive: 1.2.1 function-bind: 1.1.1 function.prototype.name: 1.1.5 get-intrinsic: 1.1.3 get-symbol-description: 1.0.0 gopd: 1.0.1 has: 1.0.3 has-property-descriptors: 1.0.0 has-symbols: 1.0.3 internal-slot: 1.0.3 is-callable: 1.2.7 is-negative-zero: 2.0.2 is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 is-string: 1.0.7 is-weakref: 1.0.2 object-inspect: 1.12.2 object-keys: 1.1.1 object.assign: 4.1.4 regexp.prototype.flags: 1.4.3 safe-regex-test: 1.0.0 string.prototype.trimend: 1.0.6 string.prototype.trimstart: 1.0.6 unbox-primitive: 1.0.2 dev: true /es-shim-unscopables/1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: has: 1.0.3 dev: true /es-to-primitive/1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 dev: true /esbuild-android-64/0.15.18: resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} engines: {node: '>=12'} cpu: [x64] os: [android] requiresBuild: true dev: true optional: true /esbuild-android-arm64/0.15.18: resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true /esbuild-darwin-64/0.15.18: resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} engines: {node: '>=12'} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true /esbuild-darwin-arm64/0.15.18: resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true /esbuild-freebsd-64/0.15.18: resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] requiresBuild: true dev: true optional: true /esbuild-freebsd-arm64/0.15.18: resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] requiresBuild: true dev: true optional: true /esbuild-linux-32/0.15.18: resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] requiresBuild: true dev: true optional: true /esbuild-linux-64/0.15.18: resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} engines: {node: '>=12'} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true /esbuild-linux-arm/0.15.18: resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} engines: {node: '>=12'} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true /esbuild-linux-arm64/0.15.18: resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} engines: {node: '>=12'} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true /esbuild-linux-mips64le/0.15.18: resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] requiresBuild: true dev: true optional: true /esbuild-linux-ppc64le/0.15.18: resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] requiresBuild: true dev: true optional: true /esbuild-linux-riscv64/0.15.18: resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] requiresBuild: true dev: true optional: true /esbuild-linux-s390x/0.15.18: resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] requiresBuild: true dev: true optional: true /esbuild-netbsd-64/0.15.18: resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] requiresBuild: true dev: true optional: true /esbuild-openbsd-64/0.15.18: resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] requiresBuild: true dev: true optional: true /esbuild-sunos-64/0.15.18: resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} engines: {node: '>=12'} cpu: [x64] os: [sunos] requiresBuild: true dev: true optional: true /esbuild-windows-32/0.15.18: resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true /esbuild-windows-64/0.15.18: resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} engines: {node: '>=12'} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true /esbuild-windows-arm64/0.15.18: resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true /esbuild/0.15.18: resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: '@esbuild/android-arm': 0.15.18 '@esbuild/linux-loong64': 0.15.18 esbuild-android-64: 0.15.18 esbuild-android-arm64: 0.15.18 esbuild-darwin-64: 0.15.18 esbuild-darwin-arm64: 0.15.18 esbuild-freebsd-64: 0.15.18 esbuild-freebsd-arm64: 0.15.18 esbuild-linux-32: 0.15.18 esbuild-linux-64: 0.15.18 esbuild-linux-arm: 0.15.18 esbuild-linux-arm64: 0.15.18 esbuild-linux-mips64le: 0.15.18 esbuild-linux-ppc64le: 0.15.18 esbuild-linux-riscv64: 0.15.18 esbuild-linux-s390x: 0.15.18 esbuild-netbsd-64: 0.15.18 esbuild-openbsd-64: 0.15.18 esbuild-sunos-64: 0.15.18 esbuild-windows-32: 0.15.18 esbuild-windows-64: 0.15.18 esbuild-windows-arm64: 0.15.18 dev: true /escape-string-regexp/1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} dev: true /escape-string-regexp/2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} dev: true /escape-string-regexp/4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} dev: true /eslint-import-resolver-node/0.3.6: resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} dependencies: debug: 3.2.7 resolve: 1.22.1 transitivePeerDependencies: - supports-color dev: true /eslint-import-resolver-typescript/3.5.2_lt3hqehuojhfcbzgzqfngbtmrq: resolution: {integrity: sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' dependencies: debug: 4.3.4 enhanced-resolve: 5.12.0 eslint: 8.29.0 eslint-plugin-import: 2.26.0_qfsg7upu5e4dqco5ntekgyqxwu get-tsconfig: 4.2.0 globby: 13.1.2 is-core-module: 2.11.0 is-glob: 4.0.3 synckit: 0.8.4 transitivePeerDependencies: - supports-color dev: true /eslint-module-utils/2.7.4_wbv6cezew2qbikiravago3ef2u: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' eslint: '*' eslint-import-resolver-node: '*' eslint-import-resolver-typescript: '*' eslint-import-resolver-webpack: '*' peerDependenciesMeta: '@typescript-eslint/parser': optional: true eslint: optional: true eslint-import-resolver-node: optional: true eslint-import-resolver-typescript: optional: true eslint-import-resolver-webpack: optional: true dependencies: '@typescript-eslint/parser': 5.45.1_ha6vam6werchizxrnqvarmz2zu debug: 3.2.7 eslint: 8.29.0 eslint-import-resolver-node: 0.3.6 eslint-import-resolver-typescript: 3.5.2_lt3hqehuojhfcbzgzqfngbtmrq transitivePeerDependencies: - supports-color dev: true /eslint-plugin-es/3.0.1_eslint@8.29.0: resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=4.19.1' dependencies: eslint: 8.29.0 eslint-utils: 2.1.0 regexpp: 3.2.0 dev: true /eslint-plugin-eslint-comments/3.2.0_eslint@8.29.0: resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} engines: {node: '>=6.5.0'} peerDependencies: eslint: '>=4.19.1' dependencies: escape-string-regexp: 1.0.5 eslint: 8.29.0 ignore: 5.2.1 dev: true /eslint-plugin-import/2.26.0_qfsg7upu5e4dqco5ntekgyqxwu: resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 peerDependenciesMeta: '@typescript-eslint/parser': optional: true dependencies: '@typescript-eslint/parser': 5.45.1_ha6vam6werchizxrnqvarmz2zu array-includes: 3.1.6 array.prototype.flat: 1.3.1 debug: 2.6.9 doctrine: 2.1.0 eslint: 8.29.0 eslint-import-resolver-node: 0.3.6 eslint-module-utils: 2.7.4_wbv6cezew2qbikiravago3ef2u has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 minimatch: 3.1.2 object.values: 1.1.6 resolve: 1.22.1 tsconfig-paths: 3.14.1 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color dev: true /eslint-plugin-jsonc/2.5.0_eslint@8.29.0: resolution: {integrity: sha512-G257khwkrOQ5MJpSzz4yQh5K12W4xFZRcHmVlhVFWh2GCLDX+JwHnmkQoUoFDbOieSPBMsPFZDTJScwrXiWlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: eslint: 8.29.0 eslint-utils: 3.0.0_eslint@8.29.0 jsonc-eslint-parser: 2.1.0 natural-compare: 1.4.0 dev: true /eslint-plugin-markdown/3.0.0_eslint@8.29.0: resolution: {integrity: sha512-hRs5RUJGbeHDLfS7ELanT0e29Ocyssf/7kBM+p7KluY5AwngGkDf8Oyu4658/NZSGTTq05FZeWbkxXtbVyHPwg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: eslint: 8.29.0 mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color dev: true /eslint-plugin-no-use-extend-native/0.5.0: resolution: {integrity: sha512-dBNjs8hor8rJgeXLH4HTut5eD3RGWf9JUsadIfuL7UosVQ/dnvOKwxEcRrXrFxrMZ8llUVWT+hOimxJABsAUzQ==} engines: {node: '>=6.0.0'} dependencies: is-get-set-prop: 1.0.0 is-js-type: 2.0.0 is-obj-prop: 1.0.0 is-proto-prop: 2.0.0 dev: true /eslint-plugin-node/11.1.0_eslint@8.29.0: resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=5.16.0' dependencies: eslint: 8.29.0 eslint-plugin-es: 3.0.1_eslint@8.29.0 eslint-utils: 2.1.0 ignore: 5.2.1 minimatch: 3.1.2 resolve: 1.22.1 semver: 6.3.0 dev: true /eslint-plugin-promise/6.1.1_eslint@8.29.0: resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: eslint: 8.29.0 dev: true /eslint-plugin-react-hooks/4.6.0_eslint@8.29.0: resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: eslint: 8.29.0 dev: true /eslint-plugin-react/7.31.11_eslint@8.29.0: resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: array-includes: 3.1.6 array.prototype.flatmap: 1.3.1 array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 eslint: 8.29.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 object.entries: 1.1.6 object.fromentries: 2.0.6 object.hasown: 1.1.2 object.values: 1.1.6 prop-types: 15.8.1 resolve: 2.0.0-next.4 semver: 6.3.0 string.prototype.matchall: 4.0.8 dev: true /eslint-plugin-regexp/1.11.0_eslint@8.29.0: resolution: {integrity: sha512-xSFARZrg0LMIp6g7XXUByS52w0fBp3lucoDi347BbeN9XqkGNFdsN+nDzNZIJbJJ1tWB08h3Pd8RfA5p7Kezhg==} engines: {node: ^12 || >=14} peerDependencies: eslint: '>=6.0.0' dependencies: comment-parser: 1.3.1 eslint: 8.29.0 eslint-utils: 3.0.0_eslint@8.29.0 grapheme-splitter: 1.0.4 jsdoctypeparser: 9.0.0 refa: 0.9.1 regexp-ast-analysis: 0.5.1 regexpp: 3.2.0 scslre: 0.1.6 dev: true /eslint-plugin-unicorn/44.0.2_eslint@8.29.0: resolution: {integrity: sha512-GLIDX1wmeEqpGaKcnMcqRvMVsoabeF0Ton0EX4Th5u6Kmf7RM9WBl705AXFEsns56ESkEs0uyelLuUTvz9Tr0w==} engines: {node: '>=14.18'} peerDependencies: eslint: '>=8.23.1' dependencies: '@babel/helper-validator-identifier': 7.19.1 ci-info: 3.7.0 clean-regexp: 1.0.0 eslint: 8.29.0 eslint-utils: 3.0.0_eslint@8.29.0 esquery: 1.4.0 indent-string: 4.0.0 is-builtin-module: 3.2.0 lodash: 4.17.21 pluralize: 8.0.0 read-pkg-up: 7.0.1 regexp-tree: 0.1.24 safe-regex: 2.1.1 semver: 7.3.8 strip-indent: 3.0.0 dev: true /eslint-plugin-vue/9.8.0_eslint@8.29.0: resolution: {integrity: sha512-E/AXwcTzunyzM83C2QqDHxepMzvI2y6x+mmeYHbVDQlKFqmKYvRrhaVixEeeG27uI44p9oKDFiyCRw4XxgtfHA==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 dependencies: eslint: 8.29.0 eslint-utils: 3.0.0_eslint@8.29.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.0.11 semver: 7.3.8 vue-eslint-parser: 9.1.0_eslint@8.29.0 xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color dev: true /eslint-scope/5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 dev: true /eslint-scope/7.1.1: resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 dev: true /eslint-utils/2.1.0: resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} engines: {node: '>=6'} dependencies: eslint-visitor-keys: 1.3.0 dev: true /eslint-utils/3.0.0_eslint@8.29.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: eslint: 8.29.0 eslint-visitor-keys: 2.1.0 dev: true /eslint-visitor-keys/1.3.0: resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} engines: {node: '>=4'} dev: true /eslint-visitor-keys/2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} dev: true /eslint-visitor-keys/3.3.0: resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true /eslint/8.29.0: resolution: {integrity: sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: '@eslint/eslintrc': 1.3.3 '@humanwhocodes/config-array': 0.11.7 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 eslint-utils: 3.0.0_eslint@8.29.0 eslint-visitor-keys: 3.3.0 espree: 9.4.1 esquery: 1.4.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 globals: 13.18.0 grapheme-splitter: 1.0.4 ignore: 5.2.1 import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 js-sdsl: 4.2.0 js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.1 regexpp: 3.2.0 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color dev: true /espree/9.4.1: resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.8.1 acorn-jsx: 5.3.2_acorn@8.8.1 eslint-visitor-keys: 3.3.0 dev: true /esquery/1.4.0: resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 dev: true /esrecurse/4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 dev: true /estraverse/4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} dev: true /estraverse/5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} dev: true /estree-walker/1.0.1: resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} dev: true /estree-walker/2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true /esutils/2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} dev: true /execa/6.1.0: resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 human-signals: 3.0.1 is-stream: 3.0.0 merge-stream: 2.0.0 npm-run-path: 5.1.0 onetime: 6.0.0 signal-exit: 3.0.7 strip-final-newline: 3.0.0 dev: true /expect/29.3.1: resolution: {integrity: sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/expect-utils': 29.3.1 jest-get-type: 29.2.0 jest-matcher-utils: 29.3.1 jest-message-util: 29.3.1 jest-util: 29.3.1 dev: true /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true /fast-glob/3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 dev: true /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true /fastq/1.14.0: resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==} dependencies: reusify: 1.0.4 dev: true /file-entry-cache/6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 dev: true /fill-range/7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 dev: true /find-up/4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} dependencies: locate-path: 5.0.0 path-exists: 4.0.0 dev: true /find-up/5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} dependencies: locate-path: 6.0.0 path-exists: 4.0.0 dev: true /flat-cache/3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flatted: 3.2.7 rimraf: 3.0.2 dev: true /flatted/3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true /fs-fixture/1.2.0: resolution: {integrity: sha512-bPBNW12US81zxCXzP/BQ6ntSvMXNgX76nHVUxzQJVTmHkzXnbfp+M4mNWeJ9LuCG8M1wyeFov7oiwO9wnCEBjQ==} engines: {node: '>=16.7.0'} dev: true /fs.realpath/1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true /fsevents/2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true dev: true optional: true /function-bind/1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true /function.prototype.name/1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 functions-have-names: 1.2.3 dev: true /functions-have-names/1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true /get-intrinsic/1.1.3: resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} dependencies: function-bind: 1.1.1 has: 1.0.3 has-symbols: 1.0.3 dev: true /get-set-props/0.1.0: resolution: {integrity: sha512-7oKuKzAGKj0ag+eWZwcGw2fjiZ78tXnXQoBgY0aU7ZOxTu4bB7hSuQSDgtKy978EDH062P5FmD2EWiDpQS9K9Q==} engines: {node: '>=0.10.0'} dev: true /get-stream/6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} dev: true /get-symbol-description/1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.3 dev: true /get-tsconfig/4.2.0: resolution: {integrity: sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==} dev: true /glob-parent/5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 dev: true /glob-parent/6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 dev: true /glob/7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 dev: true /globals/13.18.0: resolution: {integrity: sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: true /globalyzer/0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} dev: true /globby/11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} dependencies: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.2.12 ignore: 5.2.1 merge2: 1.4.1 slash: 3.0.0 dev: true /globby/13.1.2: resolution: {integrity: sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 fast-glob: 3.2.12 ignore: 5.2.1 merge2: 1.4.1 slash: 4.0.0 dev: true /globrex/0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} dev: true /gopd/1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.1.3 dev: true /graceful-fs/4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} dev: true /grapheme-splitter/1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true /has-bigints/1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true /has-flag/3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} dev: true /has-flag/4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} dev: true /has-property-descriptors/1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: get-intrinsic: 1.1.3 dev: true /has-symbols/1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} dev: true /has-tostringtag/1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: true /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 dev: true /hosted-git-info/2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true /human-signals/3.0.1: resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} engines: {node: '>=12.20.0'} dev: true /ignore/5.2.1: resolution: {integrity: sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==} engines: {node: '>= 4'} dev: true /import-fresh/3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 dev: true /imurmurhash/0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} dev: true /indent-string/4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} dev: true /inflight/1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: true /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true /internal-slot/1.0.3: resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.1.3 has: 1.0.3 side-channel: 1.0.4 dev: true /is-alphabetical/1.0.4: resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} dev: true /is-alphanumerical/1.0.4: resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} dependencies: is-alphabetical: 1.0.4 is-decimal: 1.0.4 dev: true /is-arrayish/0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true /is-bigint/1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 dev: true /is-boolean-object/1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 dev: true /is-builtin-module/3.2.0: resolution: {integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==} engines: {node: '>=6'} dependencies: builtin-modules: 3.3.0 dev: true /is-callable/1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} dev: true /is-core-module/2.11.0: resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: has: 1.0.3 dev: true /is-core-module/2.9.0: resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} dependencies: has: 1.0.3 dev: true /is-date-object/1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true /is-decimal/1.0.4: resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} dev: true /is-docker/2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true dev: true /is-extglob/2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} dev: true /is-get-set-prop/1.0.0: resolution: {integrity: sha512-DvAYZ1ZgGUz4lzxKMPYlt08qAUqyG9ckSg2pIjfvcQ7+pkVNUHk8yVLXOnCLe5WKXhLop8oorWFBJHpwWQpszQ==} dependencies: get-set-props: 0.1.0 lowercase-keys: 1.0.1 dev: true /is-glob/4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 dev: true /is-hexadecimal/1.0.4: resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} dev: true /is-js-type/2.0.0: resolution: {integrity: sha512-Aj13l47+uyTjlQNHtXBV8Cji3jb037vxwMWCgopRR8h6xocgBGW3qG8qGlIOEmbXQtkKShKuBM9e8AA1OeQ+xw==} dependencies: js-types: 1.0.0 dev: true /is-module/1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true /is-negative-zero/2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} dev: true /is-number-object/1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} dev: true /is-obj-prop/1.0.0: resolution: {integrity: sha512-5Idb61slRlJlsAzi0Wsfwbp+zZY+9LXKUAZpvT/1ySw+NxKLRWfa0Bzj+wXI3fX5O9hiddm5c3DAaRSNP/yl2w==} dependencies: lowercase-keys: 1.0.1 obj-props: 1.4.0 dev: true /is-path-inside/3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} dev: true /is-proto-prop/2.0.0: resolution: {integrity: sha512-jl3NbQ/fGLv5Jhan4uX+Ge9ohnemqyblWVVCpAvtTQzNFvV2xhJq+esnkIbYQ9F1nITXoLfDDQLp7LBw/zzncg==} dependencies: lowercase-keys: 1.0.1 proto-props: 2.0.0 dev: true /is-reference/1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: '@types/estree': 1.0.0 dev: true /is-regex/1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 dev: true /is-shared-array-buffer/1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 dev: true /is-stream/3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true /is-string/1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true /is-symbol/1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: true /is-weakref/1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: true /is-wsl/2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} dependencies: is-docker: 2.2.1 dev: true /isexe/2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true /jest-diff/29.3.1: resolution: {integrity: sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 diff-sequences: 29.3.1 jest-get-type: 29.2.0 pretty-format: 29.3.1 dev: true /jest-get-type/29.2.0: resolution: {integrity: sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true /jest-matcher-utils/29.3.1: resolution: {integrity: sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 jest-diff: 29.3.1 jest-get-type: 29.2.0 pretty-format: 29.3.1 dev: true /jest-message-util/29.3.1: resolution: {integrity: sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/code-frame': 7.18.6 '@jest/types': 29.3.1 '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.10 micromatch: 4.0.5 pretty-format: 29.3.1 slash: 3.0.0 stack-utils: 2.0.6 dev: true /jest-util/29.3.1: resolution: {integrity: sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.3.1 '@types/node': 18.11.11 chalk: 4.1.2 ci-info: 3.7.0 graceful-fs: 4.2.10 picomatch: 2.3.1 dev: true /js-sdsl/4.2.0: resolution: {integrity: sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==} dev: true /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: true /js-types/1.0.0: resolution: {integrity: sha512-bfwqBW9cC/Lp7xcRpug7YrXm0IVw+T9e3g4mCYnv0Pjr3zIzU9PCQElYU9oSGAWzXlbdl9X5SAMPejO9sxkeUw==} engines: {node: '>=0.10.0'} dev: true /js-yaml/4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 dev: true /jsdoctypeparser/9.0.0: resolution: {integrity: sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==} engines: {node: '>=10'} hasBin: true dev: true /json-parse-even-better-errors/2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true /json-stable-stringify-without-jsonify/1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true /json5/1.0.1: resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} hasBin: true dependencies: minimist: 1.2.7 dev: true /jsonc-eslint-parser/2.1.0: resolution: {integrity: sha512-qCRJWlbP2v6HbmKW7R3lFbeiVWHo+oMJ0j+MizwvauqnCV/EvtAeEeuCgoc/ErtsuoKgYB8U4Ih8AxJbXoE6/g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.8.1 eslint-visitor-keys: 3.3.0 espree: 9.4.1 semver: 7.3.8 dev: true /jsx-ast-utils/3.3.3: resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} engines: {node: '>=4.0'} dependencies: array-includes: 3.1.6 object.assign: 4.1.4 dev: true /levn/0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 dev: true /lines-and-columns/1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true /locate-path/5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} dependencies: p-locate: 4.1.0 dev: true /locate-path/6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 dev: true /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true /lodash/4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: true /loose-envify/1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true dependencies: js-tokens: 4.0.0 dev: true /lowercase-keys/1.0.1: resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} engines: {node: '>=0.10.0'} dev: true /lru-cache/6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 dev: true /magic-string/0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: sourcemap-codec: 1.4.8 dev: true /magic-string/0.26.7: resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} engines: {node: '>=12'} dependencies: sourcemap-codec: 1.4.8 dev: true /manten/0.6.0: resolution: {integrity: sha512-8OqNXWdPnP1xJ6F6wi1uY/T1pKFkZ+T0/BQxSkuTS5SKKyOPWj4yLWFsE9k0Z4CuyHz1DHB9/B/SOCGCRgQmMA==} dependencies: expect: 29.3.1 dev: true /mdast-util-from-markdown/0.8.5: resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} dependencies: '@types/mdast': 3.0.10 mdast-util-to-string: 2.0.0 micromark: 2.11.4 parse-entities: 2.0.0 unist-util-stringify-position: 2.0.3 transitivePeerDependencies: - supports-color dev: true /mdast-util-to-string/2.0.0: resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} dev: true /merge-stream/2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true /merge2/1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} dev: true /micromark/2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} dependencies: debug: 4.3.4 parse-entities: 2.0.0 transitivePeerDependencies: - supports-color dev: true /micromatch/4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: braces: 3.0.2 picomatch: 2.3.1 dev: true /mimic-fn/4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} dev: true /min-indent/1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} dev: true /minimatch/3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: true /minimist/1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} dev: true /ms/2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: true /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true /ms/2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true /natural-compare-lite/1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true /natural-compare/1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 resolve: 1.22.1 semver: 5.7.1 validate-npm-package-license: 3.0.4 dev: true /npm-run-path/5.1.0: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 dev: true /nth-check/2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: boolbase: 1.0.0 dev: true /obj-props/1.4.0: resolution: {integrity: sha512-p7p/7ltzPDiBs6DqxOrIbtRdwxxVRBj5ROukeNb9RgA+fawhrz5n2hpNz8DDmYR//tviJSj7nUnlppGmONkjiQ==} engines: {node: '>=0.10.0'} dev: true /object-assign/4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} dev: true /object-inspect/1.12.2: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} dev: true /object-keys/1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} dev: true /object.assign/4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 has-symbols: 1.0.3 object-keys: 1.1.1 dev: true /object.entries/1.1.6: resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 dev: true /object.fromentries/2.0.6: resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 dev: true /object.hasown/1.1.2: resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: define-properties: 1.1.4 es-abstract: 1.20.5 dev: true /object.values/1.1.6: resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 dev: true /once/1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: true /onetime/6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 dev: true /open/8.4.0: resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} engines: {node: '>=12'} dependencies: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 dev: true /optionator/0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} dependencies: deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 word-wrap: 1.2.3 dev: true /p-limit/2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} dependencies: p-try: 2.2.0 dev: true /p-limit/3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 dev: true /p-locate/4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} dependencies: p-limit: 2.3.0 dev: true /p-locate/5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 dev: true /p-try/2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} dev: true /parent-module/1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} dependencies: callsites: 3.1.0 dev: true /parse-entities/2.0.0: resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} dependencies: character-entities: 1.2.4 character-entities-legacy: 1.1.4 character-reference-invalid: 1.1.4 is-alphanumerical: 1.0.4 is-decimal: 1.0.4 is-hexadecimal: 1.0.4 dev: true /parse-json/5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: '@babel/code-frame': 7.18.6 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 dev: true /path-exists/4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} dev: true /path-is-absolute/1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} dev: true /path-key/3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} dev: true /path-key/4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} dev: true /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true /path-type/4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} dev: true /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true /picomatch/2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} dev: true /pkgroll/1.8.0_typescript@4.9.4: resolution: {integrity: sha512-udmzTqrlFcUxHG+KU+bYZqb1Z/2LFFRGwLg4EuOCe6t52dIFJYrWE7iAqY3/sU9EmwDQqIVoLbxX5NKj1d1h6Q==} hasBin: true peerDependencies: typescript: ^4.1 peerDependenciesMeta: typescript: optional: true dependencies: '@rollup/plugin-alias': 3.1.9_rollup@2.79.1 '@rollup/plugin-commonjs': 22.0.2_rollup@2.79.1 '@rollup/plugin-inject': 4.0.4_rollup@2.79.1 '@rollup/plugin-json': 4.1.0_rollup@2.79.1 '@rollup/plugin-node-resolve': 13.3.0_rollup@2.79.1 '@rollup/plugin-replace': 4.0.0_rollup@2.79.1 '@rollup/pluginutils': 4.2.1 esbuild: 0.15.18 magic-string: 0.26.7 rollup: 2.79.1 typescript: 4.9.4 dev: true /pluralize/8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} dev: true /postcss-selector-parser/6.0.11: resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 dev: true /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} dev: true /pretty-format/29.3.1: resolution: {integrity: sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.0.0 ansi-styles: 5.2.0 react-is: 18.2.0 dev: true /prop-types/15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 dev: true /proto-props/2.0.0: resolution: {integrity: sha512-2yma2tog9VaRZY2mn3Wq51uiSW4NcPYT1cQdBagwyrznrilKSZwIZ0UG3ZPL/mx+axEns0hE35T5ufOYZXEnBQ==} engines: {node: '>=4'} dev: true /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} dev: true /queue-microtask/1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true /react-is/16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: true /react-is/18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true /read-pkg-up/7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} dependencies: find-up: 4.1.0 read-pkg: 5.2.0 type-fest: 0.8.1 dev: true /read-pkg/5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} dependencies: '@types/normalize-package-data': 2.4.1 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 dev: true /refa/0.9.1: resolution: {integrity: sha512-egU8LgFq2VXlAfUi8Jcbr5X38wEOadMFf8tCbshgcpVCYlE7k84pJOSlnvXF+muDB4igkdVMq7Z/kiNPqDT9TA==} dependencies: regexpp: 3.2.0 dev: true /regexp-ast-analysis/0.2.4: resolution: {integrity: sha512-8L7kOZQaKPxKKAwGuUZxTQtlO3WZ+tiXy4s6G6PKL6trbOXcZoumwC3AOHHFtI/xoSbNxt7jgLvCnP1UADLWqg==} dependencies: refa: 0.9.1 regexpp: 3.2.0 dev: true /regexp-ast-analysis/0.5.1: resolution: {integrity: sha512-Ca/g9gaTNuMewLuu+mBIq4vCrGRSO8AE9bP32NMQjJ/wBTdWq0g96qLkBb0NbGwEbp7S/q+NQF3o7veeuRfg0g==} dependencies: refa: 0.9.1 regexpp: 3.2.0 dev: true /regexp-tree/0.1.24: resolution: {integrity: sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==} hasBin: true dev: true /regexp.prototype.flags/1.4.3: resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 functions-have-names: 1.2.3 dev: true /regexpp/3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} dev: true /resolve-from/4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} dev: true /resolve.exports/1.1.0: resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} engines: {node: '>=10'} dev: true /resolve/1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: is-core-module: 2.9.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true /resolve/2.0.0-next.4: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} hasBin: true dependencies: is-core-module: 2.11.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true /rimraf/3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.3 dev: true /rollup/2.79.1: resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.2 dev: true /run-parallel/1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 dev: true /safe-regex-test/1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.3 is-regex: 1.1.4 dev: true /safe-regex/2.1.1: resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} dependencies: regexp-tree: 0.1.24 dev: true /scslre/0.1.6: resolution: {integrity: sha512-JORxVRlQTfjvlOAaiQKebgFElyAm5/W8b50lgaZ0OkEnKnagJW2ufDh3xRfU75UD9z3FGIu1gL1IyR3Poa6Qmw==} dependencies: refa: 0.9.1 regexp-ast-analysis: 0.2.4 regexpp: 3.2.0 dev: true /semver/5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true dev: true /semver/6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true dev: true /semver/7.3.8: resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 dev: true /shebang-command/2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 dev: true /shebang-regex/3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} dev: true /side-channel/1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.3 object-inspect: 1.12.2 dev: true /signal-exit/3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true /slash/3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} dev: true /slash/4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} dev: true /source-map-support/0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: true /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} dev: true /sourcemap-codec/1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead dev: true /spdx-correct/3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.12 dev: true /spdx-exceptions/2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} dev: true /spdx-expression-parse/3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.12 dev: true /spdx-license-ids/3.0.12: resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} dev: true /stack-utils/2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 dev: true /string.prototype.matchall/4.0.8: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 get-intrinsic: 1.1.3 has-symbols: 1.0.3 internal-slot: 1.0.3 regexp.prototype.flags: 1.4.3 side-channel: 1.0.4 dev: true /string.prototype.trimend/1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 dev: true /string.prototype.trimstart/1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.5 dev: true /strip-ansi/6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 dev: true /strip-bom/3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} dev: true /strip-final-newline/3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} dev: true /strip-indent/3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} dependencies: min-indent: 1.0.1 dev: true /strip-json-comments/3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} dev: true /supports-color/5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 dev: true /supports-color/7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 dev: true /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} dev: true /synckit/0.8.4: resolution: {integrity: sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/utils': 2.3.1 tslib: 2.4.1 dev: true /tapable/2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} dev: true /text-table/0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true /tiny-glob/0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} dependencies: globalyzer: 0.1.0 globrex: 0.1.2 dev: true /to-regex-range/5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 dev: true /tsconfig-paths/3.14.1: resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} dependencies: '@types/json5': 0.0.29 json5: 1.0.1 minimist: 1.2.7 strip-bom: 3.0.0 dev: true /tslib/1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true /tslib/2.4.1: resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} dev: true /tsutils/3.21.0_typescript@4.9.4: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 typescript: 4.9.4 dev: true /tsx/3.12.1: resolution: {integrity: sha512-Rcg1x+rNe7qwlP8j7kx4VjP/pJo/V57k+17hlrn6a7FuQLNwkaw5W4JF75tYornNVCxkXdSUnqlIT8JY/ttvIw==} hasBin: true dependencies: '@esbuild-kit/cjs-loader': 2.4.1 '@esbuild-kit/core-utils': 3.0.0 '@esbuild-kit/esm-loader': 2.5.4 optionalDependencies: fsevents: 2.3.2 dev: true /type-check/0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 dev: true /type-fest/0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} dev: true /type-fest/0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} dev: true /type-fest/0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} dev: true /typescript/4.9.4: resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} engines: {node: '>=4.2.0'} hasBin: true dev: true /unbox-primitive/1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.2 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 dev: true /unist-util-stringify-position/2.0.3: resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} dependencies: '@types/unist': 2.0.6 dev: true /uri-js/4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 dev: true /util-deprecate/1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true /validate-npm-package-license/3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.1.1 spdx-expression-parse: 3.0.1 dev: true /vue-eslint-parser/9.1.0_eslint@8.29.0: resolution: {integrity: sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4 eslint: 8.29.0 eslint-scope: 7.1.1 eslint-visitor-keys: 3.3.0 espree: 9.4.1 esquery: 1.4.0 lodash: 4.17.21 semver: 7.3.8 transitivePeerDependencies: - supports-color dev: true /which-boxed-primitive/1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 dev: true /which/2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true dependencies: isexe: 2.0.0 dev: true /word-wrap/1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} dev: true /wrappy/1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true /xml-name-validator/4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} dev: true /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true /yocto-queue/0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: true resolve-pkg-maps-1.0.0/src/000077500000000000000000000000001434636571000155045ustar00rootroot00000000000000resolve-pkg-maps-1.0.0/src/@types/000077500000000000000000000000001434636571000167505ustar00rootroot00000000000000resolve-pkg-maps-1.0.0/src/@types/array.d.ts000066400000000000000000000001421434636571000206550ustar00rootroot00000000000000interface ArrayConstructor { isArray(array: unknown): array is unknown[] | readonly unknown[]; } resolve-pkg-maps-1.0.0/src/exports.ts000066400000000000000000000043201434636571000175570ustar00rootroot00000000000000import { isObject } from './utils/is-object.js'; import { createError } from './utils/create-error.js'; import { resolveConditions, Type } from './utils/resolve-conditions.js'; import { findMatchingPath } from './utils/find-matching-map-entry.js'; import { ERR_INVALID_PACKAGE_CONFIG, ERR_INVALID_PACKAGE_TARGET, ERR_PACKAGE_PATH_NOT_EXPORTED, } from './utils/errors.js'; import type { PathConditions, PathConditionsMap } from './types.js'; const isConditionalObject = ( exportsMap: PathConditionsMap, ) => Object.keys(exportsMap).reduce( (firstKey, key) => { const isKeyConditionalSugar = key === '' || key[0] !== '.'; if ( firstKey === undefined || firstKey === isKeyConditionalSugar ) { return isKeyConditionalSugar; } throw createError( ERR_INVALID_PACKAGE_CONFIG, '"exports" cannot contain some keys starting with "." and some not', ); }, undefined, ); const hasProtocolPattern = /^\w+:/; // Based on https://github.com/nodejs/node/blob/v18.8.0/lib/internal/modules/esm/resolve.js#L549 export const resolveExports = ( exports: PathConditions, request: string, conditions: readonly string[], ): string[] => { if (!exports) { throw new Error('"exports" is required'); } request = request === '' ? '.' : `./${request}`; // https://github.com/nodejs/node/blob/v18.7.0/lib/internal/modules/esm/resolve.js#L651-L652 if ( typeof exports === 'string' || Array.isArray(exports) || (isObject(exports) && isConditionalObject(exports)) ) { exports = { '.': exports }; } const [pathMatch, starMatch] = findMatchingPath(exports, request); const resolved = resolveConditions( Type.Export, exports[pathMatch as string], request, conditions, starMatch, ); if (resolved.length === 0) { throw createError( ERR_PACKAGE_PATH_NOT_EXPORTED, request === '.' ? 'No "exports" main defined' : `Package subpath '${request}' is not defined by "exports"`, ); } for (const resolvedPath of resolved) { if ( !resolvedPath.startsWith('./') && !hasProtocolPattern.test(resolvedPath) ) { throw createError( ERR_INVALID_PACKAGE_TARGET, `Invalid "exports" target "${resolvedPath}" defined in the package config`, ); } } return resolved; }; resolve-pkg-maps-1.0.0/src/imports.ts000066400000000000000000000017411434636571000175540ustar00rootroot00000000000000import { resolveConditions, Type } from './utils/resolve-conditions.js'; import { findMatchingPath } from './utils/find-matching-map-entry.js'; import { createError } from './utils/create-error.js'; import { ERR_PACKAGE_IMPORT_NOT_DEFINED } from './utils/errors.js'; import type { PathConditionsMap } from './types.js'; // Based on https://github.com/nodejs/node/blob/v18.8.0/lib/internal/modules/esm/resolve.js#L642 export const resolveImports = ( imports: PathConditionsMap, request: string, conditions: readonly string[], ): string[] => { if (!imports) { throw new Error('"imports" is required'); } const [pathMatch, starMatch] = findMatchingPath(imports, request); const resolved = resolveConditions( Type.Import, imports[pathMatch as string], request, conditions, starMatch, ); if (resolved.length === 0) { throw createError( ERR_PACKAGE_IMPORT_NOT_DEFINED, `Package import specifier "${request}" is not defined in package`, ); } return resolved; }; resolve-pkg-maps-1.0.0/src/index.ts000066400000000000000000000001301434636571000171550ustar00rootroot00000000000000export * from './exports.js'; export * from './imports.js'; export * from './types.js'; resolve-pkg-maps-1.0.0/src/types.ts000066400000000000000000000003001434636571000172110ustar00rootroot00000000000000export type PathConditionsMap = { [condition: string]: PathConditions | null; }; type PathOrMap = string | PathConditionsMap; export type PathConditions = PathOrMap | readonly PathOrMap[]; resolve-pkg-maps-1.0.0/src/utils/000077500000000000000000000000001434636571000166445ustar00rootroot00000000000000resolve-pkg-maps-1.0.0/src/utils/create-error.ts000066400000000000000000000002371434636571000216100ustar00rootroot00000000000000export const createError = ( code: string, message: string, ): Error & { code: string } => Object.assign( new Error(`[${code}]: ${message}`), { code }, ); resolve-pkg-maps-1.0.0/src/utils/errors.ts000066400000000000000000000004561434636571000205350ustar00rootroot00000000000000export const ERR_INVALID_PACKAGE_CONFIG = 'ERR_INVALID_PACKAGE_CONFIG'; export const ERR_INVALID_PACKAGE_TARGET = 'ERR_INVALID_PACKAGE_TARGET'; export const ERR_PACKAGE_PATH_NOT_EXPORTED = 'ERR_PACKAGE_PATH_NOT_EXPORTED'; export const ERR_PACKAGE_IMPORT_NOT_DEFINED = 'ERR_PACKAGE_IMPORT_NOT_DEFINED'; resolve-pkg-maps-1.0.0/src/utils/find-matching-map-entry.ts000066400000000000000000000022661434636571000236440ustar00rootroot00000000000000import type { PathConditions } from '../types.js'; const STAR = '*'; const hasHigherSpecificity = ( keyA: string, keyB: string, ) => { const starIndexA = keyA.indexOf(STAR); const starIndexB = keyB.indexOf(STAR); return ( starIndexA === starIndexB ? keyB.length > keyA.length : starIndexB > starIndexA ); }; export function findMatchingPath( pathConditions: PathConditions, request: string, ) { if ( !request.includes(STAR) && pathConditions.hasOwnProperty(request) ) { return [request]; } let pathMatch: string | undefined; let starMatch: string | undefined; for (const exportPath of Object.keys(pathConditions)) { if (exportPath.includes(STAR)) { const [prefix, suffix, remaining] = exportPath.split(STAR); if ( remaining === undefined && request.startsWith(prefix) && request.endsWith(suffix) ) { const currentStarMatch = request.slice( prefix.length, -suffix.length || undefined, ); if ( currentStarMatch && ( !pathMatch || hasHigherSpecificity(pathMatch, exportPath) ) ) { pathMatch = exportPath; starMatch = currentStarMatch; } } } } return [pathMatch, starMatch]; } resolve-pkg-maps-1.0.0/src/utils/is-object.ts000066400000000000000000000001641434636571000210740ustar00rootroot00000000000000export const isObject = ( object: any, ): object is object => ( object !== null && typeof object === 'object' ); resolve-pkg-maps-1.0.0/src/utils/resolve-conditions.ts000066400000000000000000000042231434636571000230430ustar00rootroot00000000000000import type { PathConditions } from '../types.js'; import { isObject } from './is-object.js'; import { createError } from './create-error.js'; import { ERR_INVALID_PACKAGE_CONFIG, ERR_INVALID_PACKAGE_TARGET } from './errors.js'; const isInteger = /^\d+$/; // eslint-disable-next-line regexp/no-unused-capturing-group const disallowedPathSegments = /^(\.{1,2}|node_modules)$/i; const pathSeparator = /\/|\\/; export enum Type { Export = 'exports', Import = 'imports', } export const resolveConditions = ( type: Type, pathConditions: PathConditions | null, request: string, conditions: readonly string[], asterisk?: string, ): string[] => { /** * Handle null or undefined * Null is an acceptable value in export maps. * undefined can will be passed in if there is no path match * in exports or imports. */ // eslint-disable-next-line no-eq-null if (pathConditions == null) { return []; } if (typeof pathConditions === 'string') { const [firstSegment, ...pathSegments] = pathConditions.split(pathSeparator); if ( firstSegment === '..' || pathSegments.some( segment => disallowedPathSegments.test(segment), ) ) { throw createError( ERR_INVALID_PACKAGE_TARGET, `Invalid "${type}" target "${pathConditions}" defined in the package config`, ); } return [ asterisk ? pathConditions.replace(/\*/g, asterisk) : pathConditions, ]; } if (Array.isArray(pathConditions)) { return pathConditions .flatMap( pathCondition => resolveConditions( type, pathCondition, request, conditions, asterisk, ), ); } if (isObject(pathConditions)) { for (const condition of Object.keys(pathConditions)) { if (isInteger.test(condition)) { throw createError( ERR_INVALID_PACKAGE_CONFIG, 'Cannot contain numeric property keys', ); } if ( condition === 'default' || conditions.includes(condition) ) { return resolveConditions( type, pathConditions[condition], request, conditions, asterisk, ); } } return []; } throw createError( ERR_INVALID_PACKAGE_TARGET, `Invalid "${type}" target "${pathConditions}"`, ); }; resolve-pkg-maps-1.0.0/tests/000077500000000000000000000000001434636571000160575ustar00rootroot00000000000000resolve-pkg-maps-1.0.0/tests/exports/000077500000000000000000000000001434636571000175635ustar00rootroot00000000000000resolve-pkg-maps-1.0.0/tests/exports/basic.ts000066400000000000000000000025461434636571000212230ustar00rootroot00000000000000import { testSuite } from 'manten'; import { resolveExportsWithNode } from '../utils/resolve-with-node.js'; export default testSuite(({ describe }) => { describe('basic', ({ test, describe }) => { describe('main entry point', ({ test }) => { test( 'export string', () => resolveExportsWithNode({ exports: './entry.js', assertions: [{ request: '', conditions: [], output: ['./entry.js'], }], }), ); test( 'export map', () => resolveExportsWithNode({ exports: { '.': './entry.js' }, assertions: [ { request: '', conditions: [], output: ['./entry.js'], }, { request: '.', conditions: [], error: '[ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath \'./.\' is not defined by "exports"', }, ], }), ); }); test( 'multiple entries', () => resolveExportsWithNode({ exports: { './a': './lib/a.js', './.invisible': './.invisible.js', }, assertions: [ // Non relative path { request: 'a', conditions: [], output: ['./lib/a.js'], }, { request: 'a', conditions: [], output: ['./lib/a.js'], }, // Invisible file { request: '.invisible', conditions: [], output: ['./.invisible.js'], }, ], }), ); }); }); resolve-pkg-maps-1.0.0/tests/exports/compare-resolve.exports.ts000066400000000000000000000125031434636571000247420ustar00rootroot00000000000000import { testSuite, expect } from 'manten'; // @ts-expect-error broken types import { resolve as lukeedResolve } from 'resolve.exports'; import { nodeResolveExports } from '../utils/node-resolve.js'; import { resolveExports } from '#resolve-pkg-maps'; export default testSuite(({ describe }) => { describe('compare with resolve.exports', ({ test }) => { // https://github.com/lukeed/resolve.exports/issues/19 test( 'request starting with .', async () => { const packageJson = { exports: { './.hidden': './file.js', }, }; const request = '.hidden'; const conditions = ['worker', 'node']; // lukeed/resolve.exports: Fails expect(() => { lukeedResolve(packageJson, request, { conditions }); }).toThrow('Missing ".hidden" export in "undefined" package'); // resolve-pkg-maps: Passes expect( resolveExports(packageJson.exports, request, conditions), ).toStrictEqual(['./file.js']); // Node.js: Expected behavior expect( await nodeResolveExports( packageJson.exports, request, conditions, ), ).toBe('./file.js'); }, ); // https://github.com/lukeed/resolve.exports/issues/16 test( 'null target exclusion', async () => { const packageJson = { exports: { './*': './*', './file.js': null, }, }; const request = 'file.js'; const conditions = ['worker', 'node']; // lukeed/resolve.exports: Fails - should be blocked expect( lukeedResolve(packageJson, request, { conditions }), ).toBe('./file.js'); const error = '[ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath \'./file.js\' is not defined by "exports"'; // resolve-pkg-maps: Passes expect( () => resolveExports(packageJson.exports, request, conditions), ).toThrow(error); // Node.js: Expected behavior await expect( nodeResolveExports( packageJson.exports, request, conditions, { '/file.js': '' }, ), ).rejects.toThrow(error); }, ); // https://github.com/lukeed/resolve.exports/issues/17 test( 'fallback array', async () => { const packageJson = { exports: { './file': ['http://a.com', './file.js'], }, }; const request = 'file'; const conditions = ['worker', 'node']; // lukeed/resolve.exports: Fails - should leave fallback to user to handle expect( lukeedResolve(packageJson, request, { conditions }), ).toBe('http://a.com'); // resolve-pkg-maps: Passes - Leaves fallback up to user to handle expect( resolveExports(packageJson.exports, request, conditions), ).toStrictEqual(['http://a.com', './file.js']); // Node.js: Expected behavior expect( await nodeResolveExports( packageJson.exports, request, conditions, ), ).toBe('./file.js'); }, ); // https://github.com/lukeed/resolve.exports/issues/22 test( 'star with suffix', async () => { const packageJson = { exports: { './*.js': './*.js', }, }; const request = 'file.js'; const conditions = ['worker', 'node']; // lukeed/resolve.exports: Fails - should resolve expect(() => { lukeedResolve(packageJson, request, { conditions }); }).toThrow('Missing "./file.js" export in "undefined" package'); // resolve-pkg-maps: Passes - Leaves fallback up to user to handle expect( resolveExports(packageJson.exports, request, conditions), ).toStrictEqual(['./file.js']); // Node.js: Expected behavior expect( await nodeResolveExports( packageJson.exports, request, conditions, { '/file.js': '' }, ), ).toBe('./file.js'); }, ); // https://github.com/lukeed/resolve.exports/issues/9 test( 'multiple stars', async () => { const packageJson = { exports: { './*.js': './*/*.js', }, }; const request = 'file.js'; const conditions = ['worker', 'node']; // lukeed/resolve.exports: Fails - should resolve expect(() => { lukeedResolve(packageJson, request, { conditions }); }).toThrow('Missing "./file.js" export in "undefined" package'); // resolve-pkg-maps: Passes - Leaves fallback up to user to handle expect( resolveExports(packageJson.exports, request, conditions), ).toStrictEqual(['./file/file.js']); // Node.js: Expected behavior expect( await nodeResolveExports( packageJson.exports, request, conditions, { '/file/file.js': '' }, ), ).toBe('./file/file.js'); }, ); // https://github.com/lukeed/resolve.exports/issues/7 test( 'should apply suffix to star / order of exports should not matter', async () => { const packageJson = { exports: { './': './', './*': './*.js', }, }; const request = 'file'; const conditions = ['worker', 'node']; // lukeed/resolve.exports: Fails - should have .js appended expect( lukeedResolve(packageJson, request, { conditions }), ).toBe('./file'); // resolve-pkg-maps: Passes expect( resolveExports(packageJson.exports, request, conditions), ).toStrictEqual(['./file.js']); // Node.js: Expected behavior expect( await nodeResolveExports( packageJson.exports, request, conditions, { '/file.js': '' }, ), ).toBe('./file.js'); }, ); }); }); resolve-pkg-maps-1.0.0/tests/exports/conditions.ts000066400000000000000000000065751434636571000223210ustar00rootroot00000000000000import { testSuite, expect } from 'manten'; import { nodeResolveExports } from '../utils/node-resolve.js'; import { resolveExportsWithNode } from '../utils/resolve-with-node.js'; import { resolveExports } from '#resolve-pkg-maps'; export default testSuite(({ describe }) => { describe('conditions', ({ test }) => { describe( 'single entry - only conditions', ({ test }) => { const exports = { 'condition-a': './lib/a.js', 'condition-b': './lib/b.js', }; const request = ''; test('no match', async () => { const error = '[ERR_PACKAGE_PATH_NOT_EXPORTED]: No "exports" main defined'; expect( () => resolveExports(exports, request, []), ).toThrow(error); await expect( nodeResolveExports(exports, request, []), ).rejects.toThrow(error); }); test('match', async () => { const validCondition = ['condition-b']; expect( resolveExports(exports, request, validCondition), ).toStrictEqual(['./lib/b.js']); expect( await nodeResolveExports(exports, request, validCondition), ).toBe('./lib/b.js'); }); test('no match on non-existent condition', async () => { const invalidCondition = ['nonexistent-condition']; const error = '[ERR_PACKAGE_PATH_NOT_EXPORTED]: No "exports" main defined'; expect( () => resolveExports(exports, request, invalidCondition), ).toThrow(error); await expect( nodeResolveExports(exports, request, invalidCondition), ).rejects.toThrow(error); }); }, ); test( 'single-entry - with path', () => resolveExportsWithNode({ exports: { '.': { 'condition-a': './lib/a.js', 'condition-b': './lib/b.js', }, }, assertions: [{ request: '', conditions: ['condition-b'], output: ['./lib/b.js'], }], }), ); test( 'use default when no conditions', () => resolveExportsWithNode({ exports: { '.': { 'condition-a': './lib/a.js', default: './lib/index.js', }, }, assertions: [ { request: '', conditions: [], output: ['./lib/index.js'], }, { request: '', conditions: ['non-existent-condition'], output: ['./lib/index.js'], }, ], }), ); test( 'nested conditions', () => resolveExportsWithNode({ exports: { node: { import: './node.import.js', require: './node.require.js', }, browser: { import: './browser.import.js', require: './browser.require.js', }, }, assertions: [ { request: '', conditions: ['require', 'node'], output: ['./node.require.js'], }, { request: '', conditions: ['node', 'import'], output: ['./node.import.js'], }, { request: '', conditions: ['import', 'browser'], output: ['./browser.import.js'], }, { request: '', conditions: ['require', 'browser'], output: ['./browser.require.js'], }, { request: '', conditions: ['node', 'require', 'random-condition-doesnt-matter'], output: ['./node.require.js'], }, // Errors { request: '', conditions: [], error: 'No "exports" main defined', }, { request: '', conditions: ['node'], // incomplete conditions error: 'No "exports" main defined', }, ], }), ); }); }); resolve-pkg-maps-1.0.0/tests/exports/error-cases.ts000066400000000000000000000144421434636571000223650ustar00rootroot00000000000000import { testSuite, expect } from 'manten'; import { nodeResolveExports } from '../utils/node-resolve.js'; import { resolveExports } from '#resolve-pkg-maps'; export default testSuite(({ describe }) => { describe('error cases', ({ describe }) => { describe('invalid exports', ({ test }) => { test( 'mixing conditional with paths', async () => { const exports = { '.': './index.js', condition: './index.js', }; const expectedError = '"exports" cannot contain some keys starting with'; expect(() => resolveExports(exports, '', [])).toThrow(expectedError); await expect(nodeResolveExports(exports, '', [])).rejects.toThrow(expectedError); }, ); test( 'numeric value', async () => { const exports = { '.': 1 }; // @ts-expect-error number type expect(() => resolveExports(exports, '', [])).toThrow('Invalid "exports" target "1"'); // @ts-expect-error invalid exports await expect(nodeResolveExports(exports, '', [])).rejects.toThrow('Invalid "exports" main target "1"'); }, ); test( 'boolean value', async () => { const exports = { '.': true }; // @ts-expect-error number type expect(() => resolveExports(exports, '', [])).toThrow('[ERR_INVALID_PACKAGE_TARGET]: Invalid "exports" target "true"'); // @ts-expect-error invalid exports await expect(nodeResolveExports(exports, '', [])).rejects.toThrow('[ERR_INVALID_PACKAGE_TARGET]: Invalid "exports" main target "true"'); }, ); test( 'numeric keys', async () => { const exports = { 0: './index.js' }; const error = 'annot contain numeric property keys'; expect(() => resolveExports(exports, '', [])).toThrow(error); await expect(nodeResolveExports(exports, '', [])).rejects.toThrow(error); }, ); test( 'path doesnt start with ./', async () => { const target = 'entry'; const exports = { './entry': target }; const error = `[ERR_INVALID_PACKAGE_TARGET]: Invalid "exports" target "${target}"`; expect(() => resolveExports(exports, 'entry', [])).toThrow(error); await expect(nodeResolveExports(exports, 'entry', [])).rejects.toThrow(error); }, ); test( './ in middle of path', async () => { const target = './lib/./entry.js'; const exports = { './entry': target }; const error = `[ERR_INVALID_PACKAGE_TARGET]: Invalid "exports" target "${target}"`; expect(() => resolveExports(exports, 'entry', [])).toThrow(error); await expect(nodeResolveExports(exports, 'entry', [])).rejects.toThrow(error); }, ); test( 'starts with ..', async () => { const target = '../entry'; const exports = { './entry': target }; const error = `[ERR_INVALID_PACKAGE_TARGET]: Invalid "exports" target "${target}"`; expect(() => resolveExports(exports, 'entry', [])).toThrow(error); await expect(nodeResolveExports(exports, 'entry', [])).rejects.toThrow(error); }, ); test( '../ in middle of path', async () => { const target = './lib/../entry.js'; const exports = { './entry': target }; const error = `[ERR_INVALID_PACKAGE_TARGET]: Invalid "exports" target "${target}"`; expect(() => resolveExports(exports, 'entry', [])).toThrow(error); await expect(nodeResolveExports(exports, 'entry', [])).rejects.toThrow(error); }, ); test( 'node_modules in path', async () => { const target = './lib/node_modules/entry.js'; const exports = { './entry': target }; const error = `[ERR_INVALID_PACKAGE_TARGET]: Invalid "exports" target "${target}"`; expect(() => resolveExports(exports, 'entry', [])).toThrow(error); await expect(nodeResolveExports(exports, 'entry', [])).rejects.toThrow(error); }, ); test( 'case insensitive node_modules in path', async () => { const target = './lib/NODE_MODULES/entry.js'; const exports = { './entry': target }; const error = `[ERR_INVALID_PACKAGE_TARGET]: Invalid "exports" target "${target}"`; expect(() => resolveExports(exports, 'entry', [])).toThrow(error); await expect(nodeResolveExports(exports, 'entry', [])).rejects.toThrow(error); }, ); }); describe('throws on null exports', ({ test }) => { test( 'falls back to package.json#main', async () => { const exports = null; const request = ''; expect( // @ts-expect-error invalid exports () => resolveExports(exports, request, []), ).toThrow('"exports" is required'); // Node.js resolves to main expect( await nodeResolveExports( 'manually created below', request, [], { 'entry.js': '', 'package.json': JSON.stringify({ main: './entry.js', exports: null, }), }, ), ).toBe('./entry.js'); }, ); test( 'resolves subpath', async () => { const exports = null; const request = 'non-existent-export.js'; expect( // @ts-expect-error invalid exports () => resolveExports(exports, request, []), ).toThrow('"exports" is required'); expect( await nodeResolveExports( // @ts-expect-error invalid exports exports, request, [], { 'non-existent-export.js': '' }, ), ).toBe('./non-existent-export.js'); }, ); }); describe('missing export', ({ test }) => { test( 'non-existent export', async () => { const exports = './entry.js'; const request = 'non-existent-export'; const error = '[ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath \'./non-existent-export\' is not defined by "exports"'; expect( () => resolveExports(exports, request, []), ).toThrow(error); await expect( nodeResolveExports(exports, request, []), ).rejects.toThrow(error); }, ); test( 'null path', async () => { const exports = { './entry.js': null }; const request = 'entry.js'; const error = '[ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath \'./entry.js\' is not defined by "exports"'; expect( () => resolveExports(exports, request, []), ).toThrow(error); await expect( nodeResolveExports( exports, request, [], { 'entry.js': '' }, ), ).rejects.toThrow(error); }, ); }); }); }); resolve-pkg-maps-1.0.0/tests/exports/fallback-array.ts000066400000000000000000000030151434636571000230050ustar00rootroot00000000000000import { testSuite, expect } from 'manten'; import { resolveExportsWithNode } from '../utils/resolve-with-node.js'; import { resolveExports } from '#resolve-pkg-maps'; export default testSuite(({ describe }) => { describe('fallback array', ({ test }) => { test( 'skips false condition', () => resolveExportsWithNode({ exports: [ { 'condition-a': './a.js', }, './b.js', 'std:core-module', ], assertions: [ { request: '', conditions: [], output: ['./b.js', 'std:core-module'], }, ], }), ); test( 'returns array of matched fallback paths', () => { const exports = [ './a.js', { 'condition-b': './b.js', }, './c.js', { 'condition-d': './d.js', default: ['./e.js', './f.js'], }, ] as const; const resolved = resolveExports(exports, '', []); expect(resolved).toStrictEqual([ './a.js', './c.js', './e.js', './f.js', ]); }, ); test( 'stars replaced', () => { const exports = { './*': [ { condition: './dir-a/*.js' }, './dir-b/*.js', { default: './dir-c/*.js' }, { default: { default: [ './dir-d/*', './dir-e/*/*.js', ], }, }, ], } as const; const resolved = resolveExports(exports, 'file', []); expect(resolved).toStrictEqual([ './dir-b/file.js', './dir-c/file.js', './dir-d/file', './dir-e/file/file.js', ]); }, ); }); }); resolve-pkg-maps-1.0.0/tests/exports/index.ts000066400000000000000000000006211434636571000212410ustar00rootroot00000000000000import { testSuite } from 'manten'; export default testSuite(({ describe }) => { describe('exports', ({ runTestSuite }) => { runTestSuite(import('./error-cases.js')); runTestSuite(import('./basic.js')); runTestSuite(import('./star.js')); runTestSuite(import('./conditions.js')); runTestSuite(import('./fallback-array.js')); runTestSuite(import('./compare-resolve.exports.js')); }); }); resolve-pkg-maps-1.0.0/tests/exports/star.ts000066400000000000000000000140271434636571000211100ustar00rootroot00000000000000import { testSuite, expect } from 'manten'; import { nodeResolveExports } from '../utils/node-resolve.js'; import { resolveExportsWithNode } from '../utils/resolve-with-node.js'; import { resolveExports } from '#resolve-pkg-maps'; export default testSuite(({ describe }) => { describe('star', ({ test }) => { test( 'static match', () => resolveExportsWithNode({ exports: { './*': './file.js', }, assertions: [{ request: 'any-entry', conditions: [], output: ['./file.js'], }], }), ); test( 'dynamic match - prefix', () => resolveExportsWithNode({ exports: { './prefix/*': './lib/*.js', }, files: { 'lib/a.js': '', }, assertions: [{ request: 'prefix/a', conditions: [], output: ['./lib/a.js'], }], }), ); test( 'dynamic match - prefix & suffix', () => resolveExportsWithNode({ exports: { './prefix/*.suffix': './lib/*.mjs', }, files: { lib: { 'a.mjs': '', 'b.mjs': '', 'directory/a/b/c.mjs': '', '.mjs': '', }, }, assertions: [ { request: 'prefix/a.suffix', conditions: [], output: ['./lib/a.mjs'], }, { request: 'prefix/b.suffix', conditions: [], output: ['./lib/b.mjs'], }, { request: 'prefix/directory/a/b/c.suffix', conditions: [], output: ['./lib/directory/a/b/c.mjs'], }, ], }), ); test( 'error: shouldnt resolve value-less star', async () => { const exports = { './prefix/*.suffix': './lib/*.mjs', }; const request = './prefix/.suffix'; const error = '[ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath \'././prefix/.suffix\' is not defined by "exports"'; expect( () => resolveExports(exports, request, []), ).toThrow(error); await expect( nodeResolveExports(exports, request, []), ).rejects.toThrow(error); }, ); test( 'multiple stars', () => resolveExportsWithNode({ exports: { './*.ext': './*/src/*.mjs', }, files: { 'match/src/match.mjs': '', }, assertions: [{ request: 'match.ext', conditions: [], output: ['./match/src/match.mjs'], }], }), ); test( 'star treated literally if only in path', () => resolveExportsWithNode({ exports: { './file': './lib/*.js', }, files: { 'lib/*.js': '', }, assertions: [{ request: 'file', conditions: [], output: ['./lib/*.js'], }], }), ); test( 'export ignored if multiple stars', async () => { const exports = { './*/*': './file.js', }; const requestInvalid = './dir/file.js'; const error = '[ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath \'././dir/file.js\' is not defined by "exports"'; expect( () => resolveExports(exports, requestInvalid, []), ).toThrow(error); await expect( nodeResolveExports( exports, requestInvalid, [], { 'file.js': '' }, ), ).rejects.toThrow(error); }, ); test( 'export ignored if multiple stars', async () => { const exports = { './**': './file.js', }; const requestInvalid = 'file.js'; const error = '[ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath \'./file.js\' is not defined by "exports"'; expect( () => resolveExports(exports, requestInvalid, []), ).toThrow(error); await expect( nodeResolveExports( exports, requestInvalid, [], { 'file.js': '' }, ), ).rejects.toThrow(error); }, ); test( 'path order - null blocks entry', async () => { const exports = { './*': './*', './internal/*': null, }; const requestValid = 'file.js'; expect(resolveExports(exports, requestValid, [])).toStrictEqual(['./file.js']); await expect( await nodeResolveExports( exports, requestValid, [], { 'file.js': '' }, ), ).toBe('./file.js'); const requestInvalid = 'internal/file.js'; const error = '[ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath \'./internal/file.js\' is not defined by "exports"'; expect( () => resolveExports(exports, requestInvalid, []), ).toThrow(error); await expect( nodeResolveExports( exports, requestInvalid, [], { 'internal/file.js': '' }, ), ).rejects.toThrow(error); }, ); test( 'path order - null blocks entry - same star position (compares entire length)', async () => { const exports = { './*': './*', './*.js': null, }; const requestValid = 'file.mjs'; expect(resolveExports(exports, requestValid, [])).toStrictEqual(['./file.mjs']); await expect( await nodeResolveExports( exports, requestValid, [], { 'file.mjs': '' }, ), ).toBe('./file.mjs'); const requestInvalid = 'file.js'; const error = '[ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath \'./file.js\' is not defined by "exports"'; expect( () => resolveExports(exports, requestInvalid, []), ).toThrow(error); await expect( nodeResolveExports( exports, requestInvalid, [], { 'file.js': '' }, ), ).rejects.toThrow(error); }, ); test( 'path order - same prefix & length', async () => { const exports = { './*.cjs': './*.cjs', './*.mjs': null, }; const requestValid = 'file.cjs'; expect(resolveExports(exports, requestValid, [])).toStrictEqual(['./file.cjs']); await expect( await nodeResolveExports( exports, requestValid, [], { 'file.cjs': '' }, ), ).toBe('./file.cjs'); const requestInvalid = 'file.mjs'; const error = '[ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath \'./file.mjs\' is not defined by "exports"'; expect( () => resolveExports(exports, requestInvalid, []), ).toThrow(error); await expect( nodeResolveExports( exports, requestInvalid, [], { 'file.mjs': '' }, ), ).rejects.toThrow(error); }, ); }); }); resolve-pkg-maps-1.0.0/tests/imports/000077500000000000000000000000001434636571000175545ustar00rootroot00000000000000resolve-pkg-maps-1.0.0/tests/imports/error-cases.ts000066400000000000000000000065261434636571000223620ustar00rootroot00000000000000import { testSuite, expect } from 'manten'; import { nodeResolveImports } from '../utils/node-resolve.js'; import { resolveImports } from '#resolve-pkg-maps'; export default testSuite(({ describe }) => { describe('error cases', ({ test }) => { test( 'missing target', async () => { const request = '#entry'; const dependencyName = 1; const imports = {}; const files = { [`node_modules/${dependencyName}`]: { 'package.json': '{}', 'index.js': '', }, }; expect( () => resolveImports(imports, request, []), ).toThrow( 'Package import specifier "#entry" is not defined in package', ); await expect( nodeResolveImports(imports, request, [], files), ).rejects.toThrow( '[ERR_PACKAGE_IMPORT_NOT_DEFINED]: Package import specifier "#entry" is not defined', ); }, ); test( 'numeric value', async () => { const request = '#entry'; const dependencyName = 1; const imports = { [request]: dependencyName }; const files = { [`node_modules/${dependencyName}`]: { 'package.json': '{}', 'index.js': '', }, }; // @ts-expect-error number type expect(() => resolveImports(imports, request, [])).toThrow('Invalid "imports" target "1"'); // @ts-expect-error number type await expect(nodeResolveImports(imports, request, [], files)).rejects.toThrow('Invalid "imports" target "1"'); }, ); test( 'boolean value', async () => { const request = '#entry'; const dependencyName = true; const imports = { [request]: dependencyName }; const files = { [`node_modules/${dependencyName}`]: { 'package.json': '{}', 'index.js': '', }, }; // @ts-expect-error number type expect(() => resolveImports(imports, request, [])).toThrow('Invalid "imports" target "true"'); // @ts-expect-error number type await expect(nodeResolveImports(imports, request, [], files)).rejects.toThrow('Invalid "imports" target "true"'); }, ); test( 'starts with ..', async () => { const request = '#entry'; const target = '../file.js'; const imports = { [request]: target }; expect(() => resolveImports(imports, request, [])).toThrow(`Invalid "imports" target "${target}"`); await expect(nodeResolveImports(imports, request, [])).rejects.toThrow(`Invalid "imports" target "${target}"`); }, ); test( '.. in path', async () => { const request = '#entry'; const target = './directory/../file.js'; const imports = { [request]: target }; expect(() => resolveImports(imports, request, [])).toThrow(`Invalid "imports" target "${target}"`); await expect(nodeResolveImports(imports, request, [])).rejects.toThrow(`Invalid "imports" target "${target}"`); }, ); test( 'node_modules in path', async () => { const request = '#entry'; const dependencyName = 'dependency'; const target = `./node_modules/${dependencyName}/file.js`; const imports = { [request]: target }; const files = { [`node_modules/${dependencyName}`]: { 'package.json': '{}', 'file.js': '', }, }; expect(() => resolveImports(imports, request, [])).toThrow(`Invalid "imports" target "${target}"`); await expect(nodeResolveImports(imports, request, [], files)).rejects.toThrow(`Invalid "imports" target "${target}"`); }, ); }); }); resolve-pkg-maps-1.0.0/tests/imports/index.ts000066400000000000000000000070571434636571000212440ustar00rootroot00000000000000import { testSuite, expect } from 'manten'; import { nodeResolveImports } from '../utils/node-resolve.js'; import { resolveImports } from '#resolve-pkg-maps'; export default testSuite(({ describe }) => { describe('imports', ({ test, runTestSuite }) => { runTestSuite(import('./error-cases.js')); test( 'resolves', async () => { const request = '#a'; const imports = { [request]: './file.js' }; const nodeResolved = await nodeResolveImports(imports, request, []); const resolved = resolveImports(imports, request, []); await expect(nodeResolved).toBe('./file.js'); await expect(resolved[0]).toBe(nodeResolved); }, ); test( 'resolves node_modules dependency (not allowed in exports)', async () => { const request = '#entry'; const imports = { [request]: 'dependency' }; const nodeResolved = await nodeResolveImports(imports, request, [], { 'node_modules/dependency': { 'package.json': '{}', 'index.js': '', }, }); const resolved = resolveImports(imports, request, []); await expect(nodeResolved).toBe('./node_modules/dependency/index.js'); await expect(resolved[0]).toBe('dependency'); }, ); test( 'conditions', async () => { const request = '#entry'; const imports = { [request]: { 'condition-a': './condition-a.js', 'condition-b': './condition-b.js', default: './default.js', }, }; const conditions = [ [[], './default.js'], [['condition-a'], './condition-a.js'], [['condition-a', 'condition-b'], './condition-a.js'], ] as const; for (const [condition, expected] of conditions) { const nodeResolved = await nodeResolveImports(imports, request, condition); const resolved = resolveImports(imports, request, condition); await expect(nodeResolved).toBe(expected); await expect(resolved[0]).toBe(nodeResolved); } }, ); test( 'star', async () => { const request = '#entry/file'; const imports = { '#entry/*': { dev: './src/*.js', test: './tests/*/*.spec.js', default: './dist/*.js', }, }; const conditions = [ [[], './dist/file.js'], [['dev'], './src/file.js'], [['test'], './tests/file/file.spec.js'], ] as const; const files = { 'src/file.js': '', 'tests/file/file.spec.js': '', 'dist/file.js': '', } as const; for (const [condition, expected] of conditions) { const nodeResolved = await nodeResolveImports(imports, request, condition, files); const resolved = resolveImports(imports, request, condition); await expect(nodeResolved).toBe(expected); await expect(resolved[0]).toBe(nodeResolved); } }, ); describe('star order', ({ test }) => { const imports = { '#entry/*': './*.js', '#entry/*.js': null, }; const files = { 'file.js': '' }; test('resolves', async () => { const request = '#entry/file'; const nodeResolved = await nodeResolveImports(imports, request, [], files); const [resolved] = resolveImports(imports, request, []); await expect(nodeResolved).toBe('./file.js'); await expect(resolved).toBe(nodeResolved); }); test('blocks request', async () => { const request = '#entry/file.js'; const error = '[ERR_PACKAGE_IMPORT_NOT_DEFINED]: Package import specifier "#entry/file.js" is not defined in package'; expect( () => resolveImports(imports, request, []), ).toThrow(error); await expect( nodeResolveImports(imports, request, [], files), ).rejects.toThrow(error); }); }); }); }); resolve-pkg-maps-1.0.0/tests/index.ts000066400000000000000000000002671434636571000175430ustar00rootroot00000000000000import { describe } from 'manten'; describe('resolve-pkg-maps', ({ runTestSuite }) => { runTestSuite(import('./exports/index.js')); runTestSuite(import('./imports/index.js')); }); resolve-pkg-maps-1.0.0/tests/utils/000077500000000000000000000000001434636571000172175ustar00rootroot00000000000000resolve-pkg-maps-1.0.0/tests/utils/node-resolve.ts000066400000000000000000000055201434636571000221730ustar00rootroot00000000000000import path from 'path'; import { fileURLToPath } from 'node:url'; import { execaNode } from 'execa'; import { createFixture, type FileTree } from 'fs-fixture'; import type { PathConditions, PathConditionsMap } from '#resolve-pkg-maps'; const loaderPath = path.resolve('./tests/utils/resolve-logger.mjs'); const packagePath = 'node_modules/package/'; const loaderWarning = 'to show where the warning was created)'; export async function nodeResolve( files: FileTree, request: string, conditions: readonly string[], ) { const fixture = await createFixture({ ...files, 'resolve.mjs': `import '${request}'`, }); const nodeProcess = await execaNode( './resolve.mjs', [], { nodeOptions: [ '--loader', loaderPath, ...conditions.map(condition => `--conditions=${condition}`), ], cwd: fixture.path, reject: false, }, ); await fixture.rm(); const stderr = nodeProcess.stderr.slice( nodeProcess.stderr.indexOf(loaderWarning) + loaderWarning.length, ); if (stderr) { throw new Error(stderr); } if (nodeProcess.stdout) { return fileURLToPath(nodeProcess.stdout).replace( path.join(fixture.path), '.', ); } } function normalizeExports( exports: PathConditions, ): PathConditionsMap { if ( !exports || typeof exports === 'string' || Array.isArray(exports) || ( exports && typeof exports === 'object' // If condition object && Object.keys(exports).every(key => key === '' || key[0] !== '.') ) ) { return { '.': exports }; } return exports; } const getMapPaths = ( exports: PathConditions | null, ): string[] => { if (!exports) { return []; } if (typeof exports === 'string') { return exports.includes('*') ? [] : [exports]; } return ( Array.isArray(exports) ? exports : Object.values(exports) ).flatMap(getMapPaths); }; export async function nodeResolveExports( exports: PathConditions, request: string, conditions: readonly string[], files?: FileTree, ) { if (!files) { // Generate files from export map files = Object.fromEntries( getMapPaths( normalizeExports(exports), ) .filter(filePath => filePath !== './non-existent.js') .map(filePath => [filePath, '']), ); } const resolved = await nodeResolve( { [packagePath]: { 'package.json': JSON.stringify({ exports }), ...files, }, }, `package${request ? `/${request}` : ''}`, conditions, ); if (resolved) { return resolved.replace(packagePath, ''); } } export async function nodeResolveImports( imports: PathConditionsMap, request: string, conditions: readonly string[], files?: FileTree, ) { if (!files) { // Generate files from import map files = Object.fromEntries( getMapPaths(imports).map(filePath => [filePath, '']), ); } return await nodeResolve( { 'package.json': JSON.stringify({ imports }), ...files, }, request, conditions, ); } resolve-pkg-maps-1.0.0/tests/utils/resolve-logger.mjs000066400000000000000000000005351434636571000226710ustar00rootroot00000000000000let firstCall = true; export async function resolve( specifier, context, nextResolve, ) { // Remove default conditions context.conditions = context.conditions.slice(3); const resolved = await nextResolve(specifier, context, nextResolve); if (firstCall) { firstCall = false; } else { console.log(resolved.url); } return resolved; } resolve-pkg-maps-1.0.0/tests/utils/resolve-with-node.ts000066400000000000000000000032501434636571000231420ustar00rootroot00000000000000import { expect } from 'manten'; import { type FileTree } from 'fs-fixture'; import { nodeResolveExports } from './node-resolve.js'; import { resolveExports, type PathConditions } from '#resolve-pkg-maps'; type AssertionBase = { request: string; conditions: string[]; debug?: boolean; disableNodeCheck?: boolean; }; export async function resolveExportsWithNode({ exports, files, assertions, }: { exports: PathConditions; files?: FileTree; assertions: ((AssertionBase & { output: string[] }) | (AssertionBase & { error: string }))[]; }) { for (const assertion of assertions) { const { request, conditions, debug } = assertion; const error = 'error' in assertion ? assertion.error : undefined; const output = 'output' in assertion ? assertion.output : undefined; let resolved: string[]; try { resolved = resolveExports(exports, request, conditions); } catch (resolvedError) { if (error) { expect((resolvedError as any).message).toMatch(error); continue; } throw resolvedError; } if (error) { throw new Error(`Expected to throw error matching ${error}`); } expect(resolved).toStrictEqual(output); let resolvedNode: string | undefined; try { resolvedNode = await nodeResolveExports( exports, request, conditions, files, ); } catch (nodeError) { if (error) { expect((nodeError as any).message).toMatch(error); continue; } throw nodeError; } if (debug) { console.log({ request, conditions, resolved, resolvedNode, }); } if (error) { throw new Error( `Expected Node.js to throw error matching ${error}`, ); } expect(resolvedNode).toBe(resolved[0]); } } resolve-pkg-maps-1.0.0/tsconfig.json000066400000000000000000000001731434636571000174250ustar00rootroot00000000000000{ "compilerOptions": { "module": "Node16", "isolatedModules": true, "esModuleInterop": true, "strict": true, } }