├── .eslintrc ├── .github ├── FUNDING.yml ├── actions │ └── setup │ │ └── action.yml └── workflows │ ├── ci.yml │ └── release.yml ├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── bin └── pnpm-deduplicate.mjs ├── esbuild.mjs ├── package.json ├── pnpm-lock.yaml ├── src ├── cli.ts └── index.ts └── tsconfig.json /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@ocavue/eslint-config" 3 | } 4 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [ocavue] 2 | -------------------------------------------------------------------------------- /.github/actions/setup/action.yml: -------------------------------------------------------------------------------- 1 | name: Setup 2 | description: Setup the environment 3 | 4 | inputs: 5 | node-version: 6 | description: The version of node.js 7 | required: false 8 | default: '16' 9 | 10 | runs: 11 | using: composite 12 | steps: 13 | - name: Install pnpm 14 | uses: pnpm/action-setup@v2 15 | with: 16 | run_install: false 17 | 18 | - name: Setup node 19 | uses: actions/setup-node@v3 20 | with: 21 | node-version: ${{ inputs.node-version }} 22 | cache: pnpm 23 | registry-url: 'https://registry.npmjs.org' 24 | 25 | - name: Setup ni 26 | run: npm i -g @antfu/ni 27 | shell: bash 28 | 29 | - name: Install 30 | run: ni 31 | shell: bash 32 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | pull_request: 9 | branches: 10 | - master 11 | 12 | jobs: 13 | lint: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v3 17 | 18 | - uses: ./.github/actions/setup 19 | 20 | - name: Lint 21 | run: nr lint 22 | 23 | test: 24 | runs-on: ${{ matrix.os }} 25 | 26 | strategy: 27 | matrix: 28 | node: [16.x, 18.x] 29 | os: [ubuntu-latest, windows-latest, macos-latest] 30 | fail-fast: false 31 | 32 | steps: 33 | - uses: actions/checkout@v3 34 | 35 | - uses: ./.github/actions/setup 36 | with: 37 | node-version: ${{ matrix.node }} 38 | 39 | - name: Build 40 | run: nr build 41 | 42 | - name: Run --help 43 | run: ./bin/pnpm-deduplicate.mjs --help 44 | 45 | - name: Run --version 46 | run: ./bin/pnpm-deduplicate.mjs --version 47 | 48 | - name: Run --list 49 | run: ./bin/pnpm-deduplicate.mjs --list 50 | 51 | - name: Run main 52 | run: ./bin/pnpm-deduplicate.mjs 53 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | version: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: google-github-actions/release-please-action@v3 13 | id: release-please 14 | with: 15 | release-type: node 16 | outputs: 17 | release_created: ${{ steps.release-please.outputs.release_created }} 18 | 19 | publish: 20 | runs-on: ubuntu-latest 21 | needs: [version] 22 | if: ${{ needs.version.outputs.release_created }} 23 | steps: 24 | - uses: actions/checkout@v3 25 | 26 | - uses: ./.github/actions/setup 27 | 28 | - name: Build 29 | run: nr build 30 | 31 | - name: Publish to NPM 32 | run: npm publish 33 | env: 34 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 35 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## [0.4.2](https://github.com/ocavue/pnpm-deduplicate/compare/v0.4.1...v0.4.2) (2023-02-01) 4 | 5 | 6 | ### Documentation 7 | 8 | * update README and retire this project ([7a480ae](https://github.com/ocavue/pnpm-deduplicate/commit/7a480aeeb534597fc9685b977364f51bccffa5e2)) 9 | 10 | ## [0.4.1](https://github.com/ocavue/pnpm-deduplicate/compare/v0.4.0...v0.4.1) (2022-12-06) 11 | 12 | 13 | ### Bug Fixes 14 | 15 | * update all dependencies ([#6](https://github.com/ocavue/pnpm-deduplicate/issues/6)) ([cc4f993](https://github.com/ocavue/pnpm-deduplicate/commit/cc4f993dc633211b210d79e63eba39a6b198dac4)) 16 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 ocavue 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | **🎉 The official built-in `pnpm dedupe` command is added since `pnpm` [v7.26.0](https://github.com/pnpm/pnpm/releases/tag/v7.26.0), so this project is retired. 🎉** 2 | 3 | # pnpm-deduplicate 4 | 5 | Remove duplicate dependencies from `pnpm-lock.yaml`. 6 | 7 | This project is simple and not have many features. I see it as a temporary solution until we have official built-in `pnpm deduple` command. Pull requests are welcome! 8 | 9 | **Support this project by giving it a :star: on GitHub.** 10 | 11 | ## Install 12 | 13 | ``` 14 | pnpm install -g pnpm-deduplicate 15 | ``` 16 | 17 | ## Usage 18 | 19 | ### Remove duplicates 20 | 21 | Go to your project's root directory and run the following command to remove duplicate dependencies: 22 | 23 | ``` 24 | pnpm-deduplicate 25 | ``` 26 | 27 | ### List duplicates 28 | 29 | If you only want to list duplicates instead of update `pnpm-lock.yaml`, run: 30 | 31 | ``` 32 | pnpm-deduplicate --list 33 | ``` 34 | 35 | You will get a list of duplicates like this: 36 | 37 | ``` 38 | Package "@babel/core" wants ^7.17.10 and could get 7.18.2, but got 7.18.0 39 | Package "@babel/core" wants ^7.15.5 and could get 7.18.2, but got 7.18.0 40 | Package "@babel/core" wants ^7.7.5 and could get 7.18.2, but got 7.18.0 41 | Package "@babel/generator" wants ^7.7.2 and could get 7.18.2, but got 7.18.0 42 | Package "@babel/generator" wants ^7.18.0 and could get 7.18.2, but got 7.18.0 43 | ``` 44 | 45 | This command will return a non-zero exit code if there are duplicates. You can 46 | use it in CI to check if there are duplicates. 47 | 48 | ## Solutions for other package managers 49 | 50 | For Yarn v1, you can use [`yarn-deduplicate`](https://github.com/atlassian/yarn-deduplicate/). 51 | 52 | For Yarn v2 or greater version, you can use the built-in [`yarn dedupe`](https://yarnpkg.com/cli/dedupe) command. 53 | 54 | For NPM, you can use the built-in [`npm dedupe`](https://docs.npmjs.com/cli/v8/commands/npm-dedupe) command. 55 | 56 | For PNPM, use this tool! 57 | 58 | Also, removing `node_modules` folder as well as the lock file (i.e. `yarn.lock`, `package-lock.json` or `pnpm-lock.yaml`) is another option. This will update all your dependencies to the latest version that matches the version range in your `package.json`, which could break your project. 59 | 60 | ## License 61 | 62 | MIT 63 | -------------------------------------------------------------------------------- /bin/pnpm-deduplicate.mjs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import {runCli} from '../dist/cli.mjs' 4 | 5 | runCli(); 6 | -------------------------------------------------------------------------------- /esbuild.mjs: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | 3 | import { build } from "esbuild"; 4 | import path from "node:path"; 5 | import { nodeExternalsPlugin } from "esbuild-node-externals"; 6 | 7 | async function main() { 8 | await build({ 9 | entryPoints: ["./src/cli.ts", "./src/index.ts"], 10 | outExtension: { ".js": ".mjs" }, 11 | outdir: path.join("./dist"), 12 | bundle: true, 13 | platform: "node", 14 | format: "esm", 15 | target: "node14", 16 | sourcemap: false, 17 | minify: false, 18 | plugins: [nodeExternalsPlugin()], 19 | }); 20 | } 21 | 22 | main(); 23 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pnpm-deduplicate", 3 | "type": "module", 4 | "version": "0.4.2", 5 | "packageManager": "pnpm@7.18.1", 6 | "description": "Deduplication tool for pnpm-lock.yaml files", 7 | "author": "ocavue ", 8 | "license": "MIT", 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/ocavue/pnpm-deduplicate.git" 12 | }, 13 | "main": "dist/index.mjs", 14 | "types": "dist/index.d.ts", 15 | "bin": { 16 | "pnpm-deduplicate": "bin/pnpm-deduplicate.mjs" 17 | }, 18 | "files": [ 19 | "README.md", 20 | "dist/*", 21 | "bin/*" 22 | ], 23 | "scripts": { 24 | "build": "pnpm build:esbuild && pnpm build:tsc", 25 | "build:esbuild": "node esbuild.mjs", 26 | "build:tsc": "tsc --build", 27 | "lint": "eslint ." 28 | }, 29 | "dependencies": { 30 | "@pnpm/lockfile-file": "^6.0.3", 31 | "@pnpm/lockfile-utils": "^5.0.0", 32 | "@pnpm/lockfile-walker": "^6.0.2", 33 | "@pnpm/logger": "^5.0.0", 34 | "@pnpm/manifest-utils": "^4.1.2", 35 | "@pnpm/read-project-manifest": "^4.1.1", 36 | "@pnpm/types": "^8.9.0", 37 | "commander": "^9.4.1", 38 | "dependency-path": "^9.2.8", 39 | "path-exists": "^5.0.0", 40 | "semver": "^7.3.8" 41 | }, 42 | "devDependencies": { 43 | "@ocavue/eslint-config": "^0.4.5", 44 | "@types/node": "^18.11.11", 45 | "@types/semver": "^7.3.13", 46 | "esbuild": "^0.15.18", 47 | "esbuild-node-externals": "^1.5.0", 48 | "eslint": "^8.29.0", 49 | "prettier": "^2.8.0", 50 | "typescript": "^4.9.3" 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@ocavue/eslint-config': ^0.4.5 5 | '@pnpm/lockfile-file': ^6.0.3 6 | '@pnpm/lockfile-utils': ^5.0.0 7 | '@pnpm/lockfile-walker': ^6.0.2 8 | '@pnpm/logger': ^5.0.0 9 | '@pnpm/manifest-utils': ^4.1.2 10 | '@pnpm/read-project-manifest': ^4.1.1 11 | '@pnpm/types': ^8.9.0 12 | '@types/node': ^18.11.11 13 | '@types/semver': ^7.3.13 14 | commander: ^9.4.1 15 | dependency-path: ^9.2.8 16 | esbuild: ^0.15.18 17 | esbuild-node-externals: ^1.5.0 18 | eslint: ^8.29.0 19 | path-exists: ^5.0.0 20 | prettier: ^2.8.0 21 | semver: ^7.3.8 22 | typescript: ^4.9.3 23 | 24 | dependencies: 25 | '@pnpm/lockfile-file': 6.0.3_@pnpm+logger@5.0.0 26 | '@pnpm/lockfile-utils': 5.0.0 27 | '@pnpm/lockfile-walker': 6.0.2 28 | '@pnpm/logger': 5.0.0 29 | '@pnpm/manifest-utils': 4.1.2_@pnpm+logger@5.0.0 30 | '@pnpm/read-project-manifest': 4.1.1 31 | '@pnpm/types': 8.9.0 32 | commander: 9.4.1 33 | dependency-path: 9.2.8 34 | path-exists: 5.0.0 35 | semver: 7.3.8 36 | 37 | devDependencies: 38 | '@ocavue/eslint-config': 0.4.5_x4fmxu3xk26jacyvrarq5vdbpq 39 | '@types/node': 18.11.11 40 | '@types/semver': 7.3.13 41 | esbuild: 0.15.18 42 | esbuild-node-externals: 1.5.0_esbuild@0.15.18 43 | eslint: 8.29.0 44 | prettier: 2.8.0 45 | typescript: 4.9.3 46 | 47 | packages: 48 | 49 | /@babel/code-frame/7.16.7: 50 | resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} 51 | engines: {node: '>=6.9.0'} 52 | dependencies: 53 | '@babel/highlight': 7.17.12 54 | 55 | /@babel/helper-validator-identifier/7.19.1: 56 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 57 | engines: {node: '>=6.9.0'} 58 | 59 | /@babel/highlight/7.17.12: 60 | resolution: {integrity: sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==} 61 | engines: {node: '>=6.9.0'} 62 | dependencies: 63 | '@babel/helper-validator-identifier': 7.19.1 64 | chalk: 2.4.2 65 | js-tokens: 4.0.0 66 | 67 | /@esbuild/android-arm/0.15.18: 68 | resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} 69 | engines: {node: '>=12'} 70 | cpu: [arm] 71 | os: [android] 72 | requiresBuild: true 73 | dev: true 74 | optional: true 75 | 76 | /@esbuild/linux-loong64/0.15.18: 77 | resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} 78 | engines: {node: '>=12'} 79 | cpu: [loong64] 80 | os: [linux] 81 | requiresBuild: true 82 | dev: true 83 | optional: true 84 | 85 | /@eslint-community/eslint-utils/4.1.2_eslint@8.29.0: 86 | resolution: {integrity: sha512-7qELuQWWjVDdVsFQ5+beUl+KPczrEDA7S3zM4QUd/bJl7oXgsmpXaEVqrRTnOBqenOV4rWf2kVZk2Ot085zPWA==} 87 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 88 | peerDependencies: 89 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 90 | dependencies: 91 | eslint: 8.29.0 92 | eslint-visitor-keys: 3.3.0 93 | dev: true 94 | 95 | /@eslint/eslintrc/1.3.3: 96 | resolution: {integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==} 97 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 98 | dependencies: 99 | ajv: 6.12.6 100 | debug: 4.3.4 101 | espree: 9.4.1 102 | globals: 13.18.0 103 | ignore: 5.2.1 104 | import-fresh: 3.3.0 105 | js-yaml: 4.1.0 106 | minimatch: 3.1.2 107 | strip-json-comments: 3.1.1 108 | transitivePeerDependencies: 109 | - supports-color 110 | dev: true 111 | 112 | /@gwhitney/detect-indent/7.0.1: 113 | resolution: {integrity: sha512-7bQW+gkKa2kKZPeJf6+c6gFK9ARxQfn+FKy9ScTBppyKRWH2KzsmweXUoklqeEiHiNVWaeP5csIdsNq6w7QhzA==} 114 | engines: {node: '>=12.20'} 115 | dev: false 116 | 117 | /@humanwhocodes/config-array/0.11.7: 118 | resolution: {integrity: sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==} 119 | engines: {node: '>=10.10.0'} 120 | dependencies: 121 | '@humanwhocodes/object-schema': 1.2.1 122 | debug: 4.3.4 123 | minimatch: 3.1.2 124 | transitivePeerDependencies: 125 | - supports-color 126 | dev: true 127 | 128 | /@humanwhocodes/module-importer/1.0.1: 129 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 130 | engines: {node: '>=12.22'} 131 | dev: true 132 | 133 | /@humanwhocodes/object-schema/1.2.1: 134 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 135 | dev: true 136 | 137 | /@nodelib/fs.scandir/2.1.5: 138 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 139 | engines: {node: '>= 8'} 140 | dependencies: 141 | '@nodelib/fs.stat': 2.0.5 142 | run-parallel: 1.2.0 143 | dev: true 144 | 145 | /@nodelib/fs.stat/2.0.5: 146 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 147 | engines: {node: '>= 8'} 148 | dev: true 149 | 150 | /@nodelib/fs.walk/1.2.8: 151 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 152 | engines: {node: '>= 8'} 153 | dependencies: 154 | '@nodelib/fs.scandir': 2.1.5 155 | fastq: 1.14.0 156 | dev: true 157 | 158 | /@ocavue/eslint-config-basic/0.6.3_s5ps7njkmjlaqajutnox5ntcla: 159 | resolution: {integrity: sha512-7CmIUGN97gUfFZ8nNSEYC3L73apAvzRkURCL1a23HjSHAQ6z4xPhBKTzs/lHPAIgsS2ahNNHr/m0tzGElLlPCg==} 160 | peerDependencies: 161 | eslint: '>=8.0.0' 162 | typescript: '>=4.0.0' 163 | dependencies: 164 | '@typescript-eslint/eslint-plugin': 5.45.1_tdm6ms4ntwhlpozn7kjqrhum74 165 | '@typescript-eslint/parser': 5.45.1_s5ps7njkmjlaqajutnox5ntcla 166 | eslint: 8.29.0 167 | eslint-define-config: 1.12.0 168 | eslint-import-resolver-typescript: 3.5.2_lt3hqehuojhfcbzgzqfngbtmrq 169 | eslint-plugin-import: 2.26.0_qfsg7upu5e4dqco5ntekgyqxwu 170 | eslint-plugin-jsonc: 2.5.0_eslint@8.29.0 171 | eslint-plugin-markdown: 3.0.0_eslint@8.29.0 172 | eslint-plugin-no-only-tests: 3.1.0 173 | eslint-plugin-unicorn: 45.0.1_eslint@8.29.0 174 | typescript: 4.9.3 175 | yaml-eslint-parser: 1.1.0 176 | transitivePeerDependencies: 177 | - eslint-import-resolver-webpack 178 | - supports-color 179 | dev: true 180 | 181 | /@ocavue/eslint-config-prettier/0.4.1_yz7jvh5l5mgl5xhpwlgtkgcccy: 182 | resolution: {integrity: sha512-O83AnRPZ4a1eyjqknzaUWccb7fEJaRfI6o6jCWTHWNZqVxAJ7N3c0eg7bMnLlDY0Qws3D1YRB0wz5qZ67mrDqg==} 183 | peerDependencies: 184 | eslint: '>=8.0.0' 185 | prettier: '>=2.0.0' 186 | peerDependenciesMeta: 187 | eslint: 188 | optional: true 189 | prettier: 190 | optional: true 191 | dependencies: 192 | eslint: 8.29.0 193 | eslint-config-prettier: 8.5.0_eslint@8.29.0 194 | eslint-define-config: 1.12.0 195 | eslint-plugin-prettier: 4.2.1_nrhoyyjffvfyk4vtlt5destxgm 196 | prettier: 2.8.0 197 | dev: true 198 | 199 | /@ocavue/eslint-config/0.4.5_x4fmxu3xk26jacyvrarq5vdbpq: 200 | resolution: {integrity: sha512-tOFHRpOR4Ajai8aaVxqGTXDmGWhWwHPjauRkhu8cXhajt+qlANezqhhRmy3ZzE//96ZHreXn/TjSM+RcQv0hSg==} 201 | peerDependencies: 202 | eslint: '>=8.0.0' 203 | dependencies: 204 | '@ocavue/eslint-config-basic': 0.6.3_s5ps7njkmjlaqajutnox5ntcla 205 | '@ocavue/eslint-config-prettier': 0.4.1_yz7jvh5l5mgl5xhpwlgtkgcccy 206 | eslint: 8.29.0 207 | eslint-define-config: 1.12.0 208 | transitivePeerDependencies: 209 | - eslint-import-resolver-webpack 210 | - prettier 211 | - supports-color 212 | - typescript 213 | dev: true 214 | 215 | /@pkgr/utils/2.3.1: 216 | resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} 217 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 218 | dependencies: 219 | cross-spawn: 7.0.3 220 | is-glob: 4.0.3 221 | open: 8.4.0 222 | picocolors: 1.0.0 223 | tiny-glob: 0.2.9 224 | tslib: 2.4.1 225 | dev: true 226 | 227 | /@pnpm/constants/6.1.0: 228 | resolution: {integrity: sha512-L6AiU3OXv9kjKGTJN9j8n1TeJGDcLX9atQlZvAkthlvbXjvKc5SKNWESc/eXhr5nEfuMWhQhiKHDJCpYejmeCQ==} 229 | engines: {node: '>=14.19'} 230 | dev: false 231 | 232 | /@pnpm/core-loggers/8.0.2_@pnpm+logger@5.0.0: 233 | resolution: {integrity: sha512-Pn7hQCGBAqT9q0ITaoW1fUXby9pw5nLsP9GRGXIJ2e+6RkHWVL7U4RyEL2isPlH32bEqqVk2KFSCxtVFSZtCjA==} 234 | engines: {node: '>=14.6'} 235 | peerDependencies: 236 | '@pnpm/logger': ^5.0.0 237 | dependencies: 238 | '@pnpm/logger': 5.0.0 239 | '@pnpm/types': 8.9.0 240 | dev: false 241 | 242 | /@pnpm/crypto.base32-hash/1.0.1: 243 | resolution: {integrity: sha512-pzAXNn6KxTA3kbcI3iEnYs4vtH51XEVqmK/1EiD18MaPKylhqy8UvMJK3zKG+jeP82cqQbozcTGm4yOQ8i3vNw==} 244 | engines: {node: '>=14.6'} 245 | dependencies: 246 | rfc4648: 1.5.1 247 | dev: false 248 | 249 | /@pnpm/error/4.0.0: 250 | resolution: {integrity: sha512-NI4DFCMF6xb1SA0bZiiV5KrMCaJM2QmPJFC6p78FXujn7FpiRSWhT9r032wpuQumsl7DEmN4s3wl/P8TA+bL8w==} 251 | engines: {node: '>=14.6'} 252 | dependencies: 253 | '@pnpm/constants': 6.1.0 254 | dev: false 255 | 256 | /@pnpm/git-utils/0.1.0: 257 | resolution: {integrity: sha512-W3zsG9585cKL+FqgcT+IfTgZX5C+CbNkFjOnJN+qbysT1N30+BbvEByCcDMsTy7QDrAk6oS7WU1Rym3U2xlh2Q==} 258 | engines: {node: '>=14.6'} 259 | dependencies: 260 | execa: /safe-execa/0.1.2 261 | dev: false 262 | 263 | /@pnpm/graceful-fs/2.0.0: 264 | resolution: {integrity: sha512-ogUZCGf0/UILZt6d8PsO4gA4pXh7f0BumXeFkcCe4AQ65PXPKfAkHC0C30Lheh2EgFOpLZm3twDP1Eiww18gew==} 265 | engines: {node: '>=14.19'} 266 | dependencies: 267 | graceful-fs: 4.2.10 268 | dev: false 269 | 270 | /@pnpm/lockfile-file/6.0.3_@pnpm+logger@5.0.0: 271 | resolution: {integrity: sha512-hciTTCsx/XwHrwFUI4jr6F8NYx/CWkp5LYUEwjnsLPamoBpOQxmAmleMxMQqhl5+Zd5wXouaHdBhDUQQZivL6w==} 272 | engines: {node: '>=14.6'} 273 | peerDependencies: 274 | '@pnpm/logger': ^5.0.0 275 | dependencies: 276 | '@pnpm/constants': 6.1.0 277 | '@pnpm/error': 4.0.0 278 | '@pnpm/git-utils': 0.1.0 279 | '@pnpm/lockfile-types': 4.3.5 280 | '@pnpm/logger': 5.0.0 281 | '@pnpm/merge-lockfile-changes': 4.0.2 282 | '@pnpm/types': 8.9.0 283 | '@pnpm/util.lex-comparator': 1.0.0 284 | '@zkochan/rimraf': 2.1.2 285 | comver-to-semver: 1.0.0 286 | dependency-path: 9.2.8 287 | js-yaml: /@zkochan/js-yaml/0.0.6 288 | normalize-path: 3.0.0 289 | ramda: /@pnpm/ramda/0.28.1 290 | semver: 7.3.8 291 | sort-keys: 4.2.0 292 | strip-bom: 4.0.0 293 | write-file-atomic: 5.0.0 294 | dev: false 295 | 296 | /@pnpm/lockfile-types/4.3.5: 297 | resolution: {integrity: sha512-5GdnnhGdz+4JphrKYYZ7rcv9t37BllNwdCbFLYli6ajyIeoSCklNNCHWNewskWs3PZZUHW8LxD/nKHPaarbm9g==} 298 | engines: {node: '>=14.6'} 299 | dependencies: 300 | '@pnpm/types': 8.9.0 301 | dev: false 302 | 303 | /@pnpm/lockfile-utils/5.0.0: 304 | resolution: {integrity: sha512-jY5idWkuh4sXRS0PjHqSQ//ycsTYEzYPX0Uypp69NeDhw9Jdd+jY7SYrdd24QieuMlrdY9nKZEIKBbN+GSyOjg==} 305 | engines: {node: '>=14.6'} 306 | dependencies: 307 | '@pnpm/lockfile-types': 4.3.5 308 | '@pnpm/resolver-base': 9.1.4 309 | '@pnpm/types': 8.9.0 310 | dependency-path: 9.2.8 311 | get-npm-tarball-url: 2.0.3 312 | ramda: /@pnpm/ramda/0.28.1 313 | dev: false 314 | 315 | /@pnpm/lockfile-walker/6.0.2: 316 | resolution: {integrity: sha512-FCGr1vIvD94xX2ZgWtfiis4INb1RwBxHyHmsfhK4bl9Yy1L3+XHhQVVCuxSiEhwQb5Ax/Df7XPXWcHFlnRtJUQ==} 317 | engines: {node: '>=14.6'} 318 | dependencies: 319 | '@pnpm/lockfile-types': 4.3.5 320 | '@pnpm/types': 8.9.0 321 | dependency-path: 9.2.8 322 | ramda: /@pnpm/ramda/0.28.1 323 | dev: false 324 | 325 | /@pnpm/logger/5.0.0: 326 | resolution: {integrity: sha512-YfcB2QrX+Wx1o6LD1G2Y2fhDhOix/bAY/oAnMpHoNLsKkWIRbt1oKLkIFvxBMzLwAEPqnYWguJrYC+J6i4ywbw==} 327 | engines: {node: '>=12.17'} 328 | dependencies: 329 | bole: 5.0.1 330 | ndjson: 2.0.0 331 | dev: false 332 | 333 | /@pnpm/manifest-utils/4.1.2_@pnpm+logger@5.0.0: 334 | resolution: {integrity: sha512-UNBYi/RzjIGs3nZPqwhf5eGF77FaFEIxKl3VWj08NLuAQZHzglJbqs56igzYdB3iZN81Tjb5RY1+pS0otB2pvg==} 335 | engines: {node: '>=14.6'} 336 | dependencies: 337 | '@pnpm/core-loggers': 8.0.2_@pnpm+logger@5.0.0 338 | '@pnpm/error': 4.0.0 339 | '@pnpm/types': 8.9.0 340 | transitivePeerDependencies: 341 | - '@pnpm/logger' 342 | dev: false 343 | 344 | /@pnpm/merge-lockfile-changes/4.0.2: 345 | resolution: {integrity: sha512-BD3w3XD2BCEXjL7UNcOzjAnTpMuI1hDzJ5MaMdSLBzbr6yfpjsyG+arNZvbECIcqh0YA4Ss0Jsks2yHwa/gCYw==} 346 | engines: {node: '>=14.6'} 347 | dependencies: 348 | '@pnpm/lockfile-types': 4.3.5 349 | comver-to-semver: 1.0.0 350 | ramda: /@pnpm/ramda/0.28.1 351 | semver: 7.3.8 352 | dev: false 353 | 354 | /@pnpm/ramda/0.28.1: 355 | resolution: {integrity: sha512-zcAG+lvU0fMziNeGXpPyCyCJYp5ZVrPElEE4t14jAmViaihohocZ+dDkcRIyAomox8pQsuZnv1EyHR+pOhmUWw==} 356 | dev: false 357 | 358 | /@pnpm/read-project-manifest/4.1.1: 359 | resolution: {integrity: sha512-jGNoofG8kkUlgAMX8fqbUwRRXYf4WcWdvi/y1Sv1abUfcoVgXW6GdGVm0MIJ+enaong3hXHjaLl/AwmSj6O1Uw==} 360 | engines: {node: '>=14.6'} 361 | dependencies: 362 | '@gwhitney/detect-indent': 7.0.1 363 | '@pnpm/error': 4.0.0 364 | '@pnpm/graceful-fs': 2.0.0 365 | '@pnpm/text.comments-parser': 1.0.0 366 | '@pnpm/types': 8.9.0 367 | '@pnpm/write-project-manifest': 4.1.1 368 | fast-deep-equal: 3.1.3 369 | is-windows: 1.0.2 370 | json5: 2.2.1 371 | parse-json: 5.2.0 372 | read-yaml-file: 2.1.0 373 | sort-keys: 4.2.0 374 | strip-bom: 4.0.0 375 | dev: false 376 | 377 | /@pnpm/resolver-base/9.1.4: 378 | resolution: {integrity: sha512-OoclNn2NxqyJ+BjrB6gaR2Vj1rA6eryIn+xEh5UDX5y3rNrFL1pKCYHkEJv4qqKSayX1JsGHv7NzK5iSh4g3iA==} 379 | engines: {node: '>=14.6'} 380 | dependencies: 381 | '@pnpm/types': 8.9.0 382 | dev: false 383 | 384 | /@pnpm/text.comments-parser/1.0.0: 385 | resolution: {integrity: sha512-iG0qrFcObze3uK+HligvzaTocZKukqqIj1dC3NOH58NeMACUW1NUitSKBgeWuNIE4LJT3SPxnyLEBARMMcqVKA==} 386 | engines: {node: '>=14.6'} 387 | dependencies: 388 | strip-comments-strings: 1.2.0 389 | dev: false 390 | 391 | /@pnpm/types/8.9.0: 392 | resolution: {integrity: sha512-3MYHYm8epnciApn6w5Fzx6sepawmsNU7l6lvIq+ER22/DPSrr83YMhU/EQWnf4lORn2YyiXFj0FJSyJzEtIGmw==} 393 | engines: {node: '>=14.6'} 394 | dev: false 395 | 396 | /@pnpm/util.lex-comparator/1.0.0: 397 | resolution: {integrity: sha512-3aBQPHntVgk5AweBWZn+1I/fqZ9krK/w01197aYVkAJQGftb+BVWgEepxY5GChjSW12j52XX+CmfynYZ/p0DFQ==} 398 | engines: {node: '>=12.22.0'} 399 | dev: false 400 | 401 | /@pnpm/write-project-manifest/4.1.1: 402 | resolution: {integrity: sha512-nRqvPYO8xUVdgy/KhJuaCrWlVT/4uZr97Mpbuizsa6CmvtCQf3NuYnVvOOrpYiKUJcZYtEvm84OooJ8+lJytMQ==} 403 | engines: {node: '>=14.6'} 404 | dependencies: 405 | '@pnpm/text.comments-parser': 1.0.0 406 | '@pnpm/types': 8.9.0 407 | json5: 2.2.1 408 | write-file-atomic: 5.0.0 409 | write-yaml-file: 4.2.0 410 | dev: false 411 | 412 | /@types/json-schema/7.0.11: 413 | resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} 414 | dev: true 415 | 416 | /@types/json5/0.0.29: 417 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 418 | dev: true 419 | 420 | /@types/mdast/3.0.10: 421 | resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} 422 | dependencies: 423 | '@types/unist': 2.0.6 424 | dev: true 425 | 426 | /@types/node/18.11.11: 427 | resolution: {integrity: sha512-KJ021B1nlQUBLopzZmPBVuGU9un7WJd/W4ya7Ih02B4Uwky5Nja0yGYav2EfYIk0RR2Q9oVhf60S2XR1BCWJ2g==} 428 | dev: true 429 | 430 | /@types/normalize-package-data/2.4.1: 431 | resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} 432 | dev: true 433 | 434 | /@types/semver/7.3.13: 435 | resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} 436 | dev: true 437 | 438 | /@types/unist/2.0.6: 439 | resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} 440 | dev: true 441 | 442 | /@typescript-eslint/eslint-plugin/5.45.1_tdm6ms4ntwhlpozn7kjqrhum74: 443 | resolution: {integrity: sha512-cOizjPlKEh0bXdFrBLTrI/J6B/QMlhwE9auOov53tgB+qMukH6/h8YAK/qw+QJGct/PTbdh2lytGyipxCcEtAw==} 444 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 445 | peerDependencies: 446 | '@typescript-eslint/parser': ^5.0.0 447 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 448 | typescript: '*' 449 | peerDependenciesMeta: 450 | typescript: 451 | optional: true 452 | dependencies: 453 | '@typescript-eslint/parser': 5.45.1_s5ps7njkmjlaqajutnox5ntcla 454 | '@typescript-eslint/scope-manager': 5.45.1 455 | '@typescript-eslint/type-utils': 5.45.1_s5ps7njkmjlaqajutnox5ntcla 456 | '@typescript-eslint/utils': 5.45.1_s5ps7njkmjlaqajutnox5ntcla 457 | debug: 4.3.4 458 | eslint: 8.29.0 459 | ignore: 5.2.1 460 | natural-compare-lite: 1.4.0 461 | regexpp: 3.2.0 462 | semver: 7.3.8 463 | tsutils: 3.21.0_typescript@4.9.3 464 | typescript: 4.9.3 465 | transitivePeerDependencies: 466 | - supports-color 467 | dev: true 468 | 469 | /@typescript-eslint/parser/5.45.1_s5ps7njkmjlaqajutnox5ntcla: 470 | resolution: {integrity: sha512-JQ3Ep8bEOXu16q0ztsatp/iQfDCtvap7sp/DKo7DWltUquj5AfCOpX2zSzJ8YkAVnrQNqQ5R62PBz2UtrfmCkA==} 471 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 472 | peerDependencies: 473 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 474 | typescript: '*' 475 | peerDependenciesMeta: 476 | typescript: 477 | optional: true 478 | dependencies: 479 | '@typescript-eslint/scope-manager': 5.45.1 480 | '@typescript-eslint/types': 5.45.1 481 | '@typescript-eslint/typescript-estree': 5.45.1_typescript@4.9.3 482 | debug: 4.3.4 483 | eslint: 8.29.0 484 | typescript: 4.9.3 485 | transitivePeerDependencies: 486 | - supports-color 487 | dev: true 488 | 489 | /@typescript-eslint/scope-manager/5.45.1: 490 | resolution: {integrity: sha512-D6fCileR6Iai7E35Eb4Kp+k0iW7F1wxXYrOhX/3dywsOJpJAQ20Fwgcf+P/TDtvQ7zcsWsrJaglaQWDhOMsspQ==} 491 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 492 | dependencies: 493 | '@typescript-eslint/types': 5.45.1 494 | '@typescript-eslint/visitor-keys': 5.45.1 495 | dev: true 496 | 497 | /@typescript-eslint/type-utils/5.45.1_s5ps7njkmjlaqajutnox5ntcla: 498 | resolution: {integrity: sha512-aosxFa+0CoYgYEl3aptLe1svP910DJq68nwEJzyQcrtRhC4BN0tJAvZGAe+D0tzjJmFXe+h4leSsiZhwBa2vrA==} 499 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 500 | peerDependencies: 501 | eslint: '*' 502 | typescript: '*' 503 | peerDependenciesMeta: 504 | typescript: 505 | optional: true 506 | dependencies: 507 | '@typescript-eslint/typescript-estree': 5.45.1_typescript@4.9.3 508 | '@typescript-eslint/utils': 5.45.1_s5ps7njkmjlaqajutnox5ntcla 509 | debug: 4.3.4 510 | eslint: 8.29.0 511 | tsutils: 3.21.0_typescript@4.9.3 512 | typescript: 4.9.3 513 | transitivePeerDependencies: 514 | - supports-color 515 | dev: true 516 | 517 | /@typescript-eslint/types/5.45.1: 518 | resolution: {integrity: sha512-HEW3U0E5dLjUT+nk7b4lLbOherS1U4ap+b9pfu2oGsW3oPu7genRaY9dDv3nMczC1rbnRY2W/D7SN05wYoGImg==} 519 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 520 | dev: true 521 | 522 | /@typescript-eslint/typescript-estree/5.45.1_typescript@4.9.3: 523 | resolution: {integrity: sha512-76NZpmpCzWVrrb0XmYEpbwOz/FENBi+5W7ipVXAsG3OoFrQKJMiaqsBMbvGRyLtPotGqUfcY7Ur8j0dksDJDng==} 524 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 525 | peerDependencies: 526 | typescript: '*' 527 | peerDependenciesMeta: 528 | typescript: 529 | optional: true 530 | dependencies: 531 | '@typescript-eslint/types': 5.45.1 532 | '@typescript-eslint/visitor-keys': 5.45.1 533 | debug: 4.3.4 534 | globby: 11.1.0 535 | is-glob: 4.0.3 536 | semver: 7.3.8 537 | tsutils: 3.21.0_typescript@4.9.3 538 | typescript: 4.9.3 539 | transitivePeerDependencies: 540 | - supports-color 541 | dev: true 542 | 543 | /@typescript-eslint/utils/5.45.1_s5ps7njkmjlaqajutnox5ntcla: 544 | resolution: {integrity: sha512-rlbC5VZz68+yjAzQBc4I7KDYVzWG2X/OrqoZrMahYq3u8FFtmQYc+9rovo/7wlJH5kugJ+jQXV5pJMnofGmPRw==} 545 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 546 | peerDependencies: 547 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 548 | dependencies: 549 | '@types/json-schema': 7.0.11 550 | '@types/semver': 7.3.13 551 | '@typescript-eslint/scope-manager': 5.45.1 552 | '@typescript-eslint/types': 5.45.1 553 | '@typescript-eslint/typescript-estree': 5.45.1_typescript@4.9.3 554 | eslint: 8.29.0 555 | eslint-scope: 5.1.1 556 | eslint-utils: 3.0.0_eslint@8.29.0 557 | semver: 7.3.8 558 | transitivePeerDependencies: 559 | - supports-color 560 | - typescript 561 | dev: true 562 | 563 | /@typescript-eslint/visitor-keys/5.45.1: 564 | resolution: {integrity: sha512-cy9ln+6rmthYWjH9fmx+5FU/JDpjQb586++x2FZlveq7GdGuLLW9a2Jcst2TGekH82bXpfmRNSwP9tyEs6RjvQ==} 565 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 566 | dependencies: 567 | '@typescript-eslint/types': 5.45.1 568 | eslint-visitor-keys: 3.3.0 569 | dev: true 570 | 571 | /@zkochan/js-yaml/0.0.6: 572 | resolution: {integrity: sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==} 573 | hasBin: true 574 | dependencies: 575 | argparse: 2.0.1 576 | dev: false 577 | 578 | /@zkochan/rimraf/2.1.2: 579 | resolution: {integrity: sha512-Lc2oK51J6aQWcLWTloobJun5ZF41BbTDdLvE+aMcexoVWFoFqvZmnZoyXR2IZk6NJEVoZW8tjgtvQLfTsmRs2Q==} 580 | engines: {node: '>=12.10'} 581 | dependencies: 582 | rimraf: 3.0.2 583 | dev: false 584 | 585 | /@zkochan/which/2.0.3: 586 | resolution: {integrity: sha512-C1ReN7vt2/2O0fyTsx5xnbQuxBrmG5NMSbcIkPKCCfCTJgpZBsuRYzFXHj3nVq8vTfK7vxHUmzfCpSHgO7j4rg==} 587 | engines: {node: '>= 8'} 588 | hasBin: true 589 | dependencies: 590 | isexe: 2.0.0 591 | dev: false 592 | 593 | /acorn-jsx/5.3.2_acorn@8.8.1: 594 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 595 | peerDependencies: 596 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 597 | dependencies: 598 | acorn: 8.8.1 599 | dev: true 600 | 601 | /acorn/8.8.1: 602 | resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} 603 | engines: {node: '>=0.4.0'} 604 | hasBin: true 605 | dev: true 606 | 607 | /ajv/6.12.6: 608 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 609 | dependencies: 610 | fast-deep-equal: 3.1.3 611 | fast-json-stable-stringify: 2.1.0 612 | json-schema-traverse: 0.4.1 613 | uri-js: 4.4.1 614 | dev: true 615 | 616 | /ansi-regex/5.0.1: 617 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 618 | engines: {node: '>=8'} 619 | dev: true 620 | 621 | /ansi-styles/3.2.1: 622 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 623 | engines: {node: '>=4'} 624 | dependencies: 625 | color-convert: 1.9.3 626 | 627 | /ansi-styles/4.3.0: 628 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 629 | engines: {node: '>=8'} 630 | dependencies: 631 | color-convert: 2.0.1 632 | dev: true 633 | 634 | /argparse/2.0.1: 635 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 636 | 637 | /array-includes/3.1.6: 638 | resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} 639 | engines: {node: '>= 0.4'} 640 | dependencies: 641 | call-bind: 1.0.2 642 | define-properties: 1.1.4 643 | es-abstract: 1.20.4 644 | get-intrinsic: 1.1.3 645 | is-string: 1.0.7 646 | dev: true 647 | 648 | /array-union/2.1.0: 649 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 650 | engines: {node: '>=8'} 651 | dev: true 652 | 653 | /array.prototype.flat/1.3.1: 654 | resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} 655 | engines: {node: '>= 0.4'} 656 | dependencies: 657 | call-bind: 1.0.2 658 | define-properties: 1.1.4 659 | es-abstract: 1.20.4 660 | es-shim-unscopables: 1.0.0 661 | dev: true 662 | 663 | /balanced-match/1.0.2: 664 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 665 | 666 | /bole/5.0.1: 667 | resolution: {integrity: sha512-1eK7/EWcuDYq3t7WpALEsIQGHXDMpLIxqUKG3rb1B9YVygEuLNnaVfZbcF1XxxLSEoOau8AWOONrWokMGVESiw==} 668 | dependencies: 669 | fast-safe-stringify: 2.1.1 670 | individual: 3.0.0 671 | dev: false 672 | 673 | /brace-expansion/1.1.11: 674 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 675 | dependencies: 676 | balanced-match: 1.0.2 677 | concat-map: 0.0.1 678 | 679 | /braces/3.0.2: 680 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 681 | engines: {node: '>=8'} 682 | dependencies: 683 | fill-range: 7.0.1 684 | dev: true 685 | 686 | /builtin-modules/3.3.0: 687 | resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} 688 | engines: {node: '>=6'} 689 | dev: true 690 | 691 | /call-bind/1.0.2: 692 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 693 | dependencies: 694 | function-bind: 1.1.1 695 | get-intrinsic: 1.1.3 696 | dev: true 697 | 698 | /callsites/3.1.0: 699 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 700 | engines: {node: '>=6'} 701 | dev: true 702 | 703 | /chalk/2.4.2: 704 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 705 | engines: {node: '>=4'} 706 | dependencies: 707 | ansi-styles: 3.2.1 708 | escape-string-regexp: 1.0.5 709 | supports-color: 5.5.0 710 | 711 | /chalk/4.1.2: 712 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 713 | engines: {node: '>=10'} 714 | dependencies: 715 | ansi-styles: 4.3.0 716 | supports-color: 7.2.0 717 | dev: true 718 | 719 | /character-entities-legacy/1.1.4: 720 | resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} 721 | dev: true 722 | 723 | /character-entities/1.2.4: 724 | resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} 725 | dev: true 726 | 727 | /character-reference-invalid/1.1.4: 728 | resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} 729 | dev: true 730 | 731 | /ci-info/3.7.0: 732 | resolution: {integrity: sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==} 733 | engines: {node: '>=8'} 734 | dev: true 735 | 736 | /clean-regexp/1.0.0: 737 | resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} 738 | engines: {node: '>=4'} 739 | dependencies: 740 | escape-string-regexp: 1.0.5 741 | dev: true 742 | 743 | /color-convert/1.9.3: 744 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 745 | dependencies: 746 | color-name: 1.1.3 747 | 748 | /color-convert/2.0.1: 749 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 750 | engines: {node: '>=7.0.0'} 751 | dependencies: 752 | color-name: 1.1.4 753 | dev: true 754 | 755 | /color-name/1.1.3: 756 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 757 | 758 | /color-name/1.1.4: 759 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 760 | dev: true 761 | 762 | /commander/9.4.1: 763 | resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} 764 | engines: {node: ^12.20.0 || >=14} 765 | dev: false 766 | 767 | /comver-to-semver/1.0.0: 768 | resolution: {integrity: sha512-gcGtbRxjwROQOdXLUWH1fQAXqThUVRZ219aAwgtX3KfYw429/Zv6EIJRf5TBSzWdAGwePmqH7w70WTaX4MDqag==} 769 | engines: {node: '>=12.17'} 770 | dev: false 771 | 772 | /concat-map/0.0.1: 773 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 774 | 775 | /cross-spawn/7.0.3: 776 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 777 | engines: {node: '>= 8'} 778 | dependencies: 779 | path-key: 3.1.1 780 | shebang-command: 2.0.0 781 | which: 2.0.2 782 | 783 | /debug/2.6.9: 784 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 785 | peerDependencies: 786 | supports-color: '*' 787 | peerDependenciesMeta: 788 | supports-color: 789 | optional: true 790 | dependencies: 791 | ms: 2.0.0 792 | dev: true 793 | 794 | /debug/3.2.7: 795 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 796 | peerDependencies: 797 | supports-color: '*' 798 | peerDependenciesMeta: 799 | supports-color: 800 | optional: true 801 | dependencies: 802 | ms: 2.1.3 803 | dev: true 804 | 805 | /debug/4.3.4: 806 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 807 | engines: {node: '>=6.0'} 808 | peerDependencies: 809 | supports-color: '*' 810 | peerDependenciesMeta: 811 | supports-color: 812 | optional: true 813 | dependencies: 814 | ms: 2.1.2 815 | dev: true 816 | 817 | /deep-is/0.1.4: 818 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 819 | dev: true 820 | 821 | /define-lazy-prop/2.0.0: 822 | resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} 823 | engines: {node: '>=8'} 824 | dev: true 825 | 826 | /define-properties/1.1.4: 827 | resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} 828 | engines: {node: '>= 0.4'} 829 | dependencies: 830 | has-property-descriptors: 1.0.0 831 | object-keys: 1.1.1 832 | dev: true 833 | 834 | /dependency-path/9.2.8: 835 | resolution: {integrity: sha512-S0OhIK7sIyAsph8hVH/LMCTDL3jozKtlrPx3dMQrlE2nAlXTquTT+AcOufphDMTQqLkfn4acvfiem9I1IWZ4jQ==} 836 | engines: {node: '>=14.6'} 837 | dependencies: 838 | '@pnpm/crypto.base32-hash': 1.0.1 839 | '@pnpm/types': 8.9.0 840 | encode-registry: 3.0.0 841 | semver: 7.3.8 842 | dev: false 843 | 844 | /dir-glob/3.0.1: 845 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 846 | engines: {node: '>=8'} 847 | dependencies: 848 | path-type: 4.0.0 849 | dev: true 850 | 851 | /doctrine/2.1.0: 852 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 853 | engines: {node: '>=0.10.0'} 854 | dependencies: 855 | esutils: 2.0.3 856 | dev: true 857 | 858 | /doctrine/3.0.0: 859 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 860 | engines: {node: '>=6.0.0'} 861 | dependencies: 862 | esutils: 2.0.3 863 | dev: true 864 | 865 | /encode-registry/3.0.0: 866 | resolution: {integrity: sha512-2fRYji8K6FwYuQ6EPBKR/J9mcqb7kIoNqt1vGvJr3NrvKfncRiNm00Oxo6gi/YJF8R5Sp2bNFSFdGKTG0rje1Q==} 867 | engines: {node: '>=10'} 868 | dependencies: 869 | mem: 8.1.1 870 | dev: false 871 | 872 | /enhanced-resolve/5.12.0: 873 | resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} 874 | engines: {node: '>=10.13.0'} 875 | dependencies: 876 | graceful-fs: 4.2.10 877 | tapable: 2.2.1 878 | dev: true 879 | 880 | /error-ex/1.3.2: 881 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 882 | dependencies: 883 | is-arrayish: 0.2.1 884 | 885 | /es-abstract/1.20.4: 886 | resolution: {integrity: sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==} 887 | engines: {node: '>= 0.4'} 888 | dependencies: 889 | call-bind: 1.0.2 890 | es-to-primitive: 1.2.1 891 | function-bind: 1.1.1 892 | function.prototype.name: 1.1.5 893 | get-intrinsic: 1.1.3 894 | get-symbol-description: 1.0.0 895 | has: 1.0.3 896 | has-property-descriptors: 1.0.0 897 | has-symbols: 1.0.3 898 | internal-slot: 1.0.3 899 | is-callable: 1.2.7 900 | is-negative-zero: 2.0.2 901 | is-regex: 1.1.4 902 | is-shared-array-buffer: 1.0.2 903 | is-string: 1.0.7 904 | is-weakref: 1.0.2 905 | object-inspect: 1.12.2 906 | object-keys: 1.1.1 907 | object.assign: 4.1.4 908 | regexp.prototype.flags: 1.4.3 909 | safe-regex-test: 1.0.0 910 | string.prototype.trimend: 1.0.6 911 | string.prototype.trimstart: 1.0.6 912 | unbox-primitive: 1.0.2 913 | dev: true 914 | 915 | /es-shim-unscopables/1.0.0: 916 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} 917 | dependencies: 918 | has: 1.0.3 919 | dev: true 920 | 921 | /es-to-primitive/1.2.1: 922 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 923 | engines: {node: '>= 0.4'} 924 | dependencies: 925 | is-callable: 1.2.7 926 | is-date-object: 1.0.5 927 | is-symbol: 1.0.4 928 | dev: true 929 | 930 | /esbuild-android-64/0.15.18: 931 | resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} 932 | engines: {node: '>=12'} 933 | cpu: [x64] 934 | os: [android] 935 | requiresBuild: true 936 | dev: true 937 | optional: true 938 | 939 | /esbuild-android-arm64/0.15.18: 940 | resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} 941 | engines: {node: '>=12'} 942 | cpu: [arm64] 943 | os: [android] 944 | requiresBuild: true 945 | dev: true 946 | optional: true 947 | 948 | /esbuild-darwin-64/0.15.18: 949 | resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} 950 | engines: {node: '>=12'} 951 | cpu: [x64] 952 | os: [darwin] 953 | requiresBuild: true 954 | dev: true 955 | optional: true 956 | 957 | /esbuild-darwin-arm64/0.15.18: 958 | resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} 959 | engines: {node: '>=12'} 960 | cpu: [arm64] 961 | os: [darwin] 962 | requiresBuild: true 963 | dev: true 964 | optional: true 965 | 966 | /esbuild-freebsd-64/0.15.18: 967 | resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} 968 | engines: {node: '>=12'} 969 | cpu: [x64] 970 | os: [freebsd] 971 | requiresBuild: true 972 | dev: true 973 | optional: true 974 | 975 | /esbuild-freebsd-arm64/0.15.18: 976 | resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} 977 | engines: {node: '>=12'} 978 | cpu: [arm64] 979 | os: [freebsd] 980 | requiresBuild: true 981 | dev: true 982 | optional: true 983 | 984 | /esbuild-linux-32/0.15.18: 985 | resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} 986 | engines: {node: '>=12'} 987 | cpu: [ia32] 988 | os: [linux] 989 | requiresBuild: true 990 | dev: true 991 | optional: true 992 | 993 | /esbuild-linux-64/0.15.18: 994 | resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} 995 | engines: {node: '>=12'} 996 | cpu: [x64] 997 | os: [linux] 998 | requiresBuild: true 999 | dev: true 1000 | optional: true 1001 | 1002 | /esbuild-linux-arm/0.15.18: 1003 | resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} 1004 | engines: {node: '>=12'} 1005 | cpu: [arm] 1006 | os: [linux] 1007 | requiresBuild: true 1008 | dev: true 1009 | optional: true 1010 | 1011 | /esbuild-linux-arm64/0.15.18: 1012 | resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} 1013 | engines: {node: '>=12'} 1014 | cpu: [arm64] 1015 | os: [linux] 1016 | requiresBuild: true 1017 | dev: true 1018 | optional: true 1019 | 1020 | /esbuild-linux-mips64le/0.15.18: 1021 | resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} 1022 | engines: {node: '>=12'} 1023 | cpu: [mips64el] 1024 | os: [linux] 1025 | requiresBuild: true 1026 | dev: true 1027 | optional: true 1028 | 1029 | /esbuild-linux-ppc64le/0.15.18: 1030 | resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} 1031 | engines: {node: '>=12'} 1032 | cpu: [ppc64] 1033 | os: [linux] 1034 | requiresBuild: true 1035 | dev: true 1036 | optional: true 1037 | 1038 | /esbuild-linux-riscv64/0.15.18: 1039 | resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} 1040 | engines: {node: '>=12'} 1041 | cpu: [riscv64] 1042 | os: [linux] 1043 | requiresBuild: true 1044 | dev: true 1045 | optional: true 1046 | 1047 | /esbuild-linux-s390x/0.15.18: 1048 | resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} 1049 | engines: {node: '>=12'} 1050 | cpu: [s390x] 1051 | os: [linux] 1052 | requiresBuild: true 1053 | dev: true 1054 | optional: true 1055 | 1056 | /esbuild-netbsd-64/0.15.18: 1057 | resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} 1058 | engines: {node: '>=12'} 1059 | cpu: [x64] 1060 | os: [netbsd] 1061 | requiresBuild: true 1062 | dev: true 1063 | optional: true 1064 | 1065 | /esbuild-node-externals/1.5.0_esbuild@0.15.18: 1066 | resolution: {integrity: sha512-9394Ne2t2Z243BWeNBRkXEYVMOVbQuzp7XSkASZTOQs0GSXDuno5aH5OmzEXc6GMuln5zJjpkZpgwUPW0uRKgw==} 1067 | peerDependencies: 1068 | esbuild: 0.12 - 0.15 1069 | dependencies: 1070 | esbuild: 0.15.18 1071 | find-up: 5.0.0 1072 | tslib: 2.3.1 1073 | dev: true 1074 | 1075 | /esbuild-openbsd-64/0.15.18: 1076 | resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} 1077 | engines: {node: '>=12'} 1078 | cpu: [x64] 1079 | os: [openbsd] 1080 | requiresBuild: true 1081 | dev: true 1082 | optional: true 1083 | 1084 | /esbuild-sunos-64/0.15.18: 1085 | resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} 1086 | engines: {node: '>=12'} 1087 | cpu: [x64] 1088 | os: [sunos] 1089 | requiresBuild: true 1090 | dev: true 1091 | optional: true 1092 | 1093 | /esbuild-windows-32/0.15.18: 1094 | resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} 1095 | engines: {node: '>=12'} 1096 | cpu: [ia32] 1097 | os: [win32] 1098 | requiresBuild: true 1099 | dev: true 1100 | optional: true 1101 | 1102 | /esbuild-windows-64/0.15.18: 1103 | resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} 1104 | engines: {node: '>=12'} 1105 | cpu: [x64] 1106 | os: [win32] 1107 | requiresBuild: true 1108 | dev: true 1109 | optional: true 1110 | 1111 | /esbuild-windows-arm64/0.15.18: 1112 | resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} 1113 | engines: {node: '>=12'} 1114 | cpu: [arm64] 1115 | os: [win32] 1116 | requiresBuild: true 1117 | dev: true 1118 | optional: true 1119 | 1120 | /esbuild/0.15.18: 1121 | resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} 1122 | engines: {node: '>=12'} 1123 | hasBin: true 1124 | requiresBuild: true 1125 | optionalDependencies: 1126 | '@esbuild/android-arm': 0.15.18 1127 | '@esbuild/linux-loong64': 0.15.18 1128 | esbuild-android-64: 0.15.18 1129 | esbuild-android-arm64: 0.15.18 1130 | esbuild-darwin-64: 0.15.18 1131 | esbuild-darwin-arm64: 0.15.18 1132 | esbuild-freebsd-64: 0.15.18 1133 | esbuild-freebsd-arm64: 0.15.18 1134 | esbuild-linux-32: 0.15.18 1135 | esbuild-linux-64: 0.15.18 1136 | esbuild-linux-arm: 0.15.18 1137 | esbuild-linux-arm64: 0.15.18 1138 | esbuild-linux-mips64le: 0.15.18 1139 | esbuild-linux-ppc64le: 0.15.18 1140 | esbuild-linux-riscv64: 0.15.18 1141 | esbuild-linux-s390x: 0.15.18 1142 | esbuild-netbsd-64: 0.15.18 1143 | esbuild-openbsd-64: 0.15.18 1144 | esbuild-sunos-64: 0.15.18 1145 | esbuild-windows-32: 0.15.18 1146 | esbuild-windows-64: 0.15.18 1147 | esbuild-windows-arm64: 0.15.18 1148 | dev: true 1149 | 1150 | /escape-string-regexp/1.0.5: 1151 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1152 | engines: {node: '>=0.8.0'} 1153 | 1154 | /escape-string-regexp/4.0.0: 1155 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1156 | engines: {node: '>=10'} 1157 | dev: true 1158 | 1159 | /eslint-config-prettier/8.5.0_eslint@8.29.0: 1160 | resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} 1161 | hasBin: true 1162 | peerDependencies: 1163 | eslint: '>=7.0.0' 1164 | dependencies: 1165 | eslint: 8.29.0 1166 | dev: true 1167 | 1168 | /eslint-define-config/1.12.0: 1169 | resolution: {integrity: sha512-Kt9TcMbgsY9VRt7jIuw76KE/2RuD31eWB4Ubv6btXgU8NTSsbT6gZ8qzeiU+rAih/8sOl8Kt89spAZBMElu6qQ==} 1170 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13', pnpm: '>= 7.0.0'} 1171 | dev: true 1172 | 1173 | /eslint-import-resolver-node/0.3.6: 1174 | resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} 1175 | dependencies: 1176 | debug: 3.2.7 1177 | resolve: 1.22.1 1178 | transitivePeerDependencies: 1179 | - supports-color 1180 | dev: true 1181 | 1182 | /eslint-import-resolver-typescript/3.5.2_lt3hqehuojhfcbzgzqfngbtmrq: 1183 | resolution: {integrity: sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==} 1184 | engines: {node: ^14.18.0 || >=16.0.0} 1185 | peerDependencies: 1186 | eslint: '*' 1187 | eslint-plugin-import: '*' 1188 | dependencies: 1189 | debug: 4.3.4 1190 | enhanced-resolve: 5.12.0 1191 | eslint: 8.29.0 1192 | eslint-plugin-import: 2.26.0_qfsg7upu5e4dqco5ntekgyqxwu 1193 | get-tsconfig: 4.2.0 1194 | globby: 13.1.2 1195 | is-core-module: 2.11.0 1196 | is-glob: 4.0.3 1197 | synckit: 0.8.4 1198 | transitivePeerDependencies: 1199 | - supports-color 1200 | dev: true 1201 | 1202 | /eslint-module-utils/2.7.4_wbv6cezew2qbikiravago3ef2u: 1203 | resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} 1204 | engines: {node: '>=4'} 1205 | peerDependencies: 1206 | '@typescript-eslint/parser': '*' 1207 | eslint: '*' 1208 | eslint-import-resolver-node: '*' 1209 | eslint-import-resolver-typescript: '*' 1210 | eslint-import-resolver-webpack: '*' 1211 | peerDependenciesMeta: 1212 | '@typescript-eslint/parser': 1213 | optional: true 1214 | eslint: 1215 | optional: true 1216 | eslint-import-resolver-node: 1217 | optional: true 1218 | eslint-import-resolver-typescript: 1219 | optional: true 1220 | eslint-import-resolver-webpack: 1221 | optional: true 1222 | dependencies: 1223 | '@typescript-eslint/parser': 5.45.1_s5ps7njkmjlaqajutnox5ntcla 1224 | debug: 3.2.7 1225 | eslint: 8.29.0 1226 | eslint-import-resolver-node: 0.3.6 1227 | eslint-import-resolver-typescript: 3.5.2_lt3hqehuojhfcbzgzqfngbtmrq 1228 | transitivePeerDependencies: 1229 | - supports-color 1230 | dev: true 1231 | 1232 | /eslint-plugin-import/2.26.0_qfsg7upu5e4dqco5ntekgyqxwu: 1233 | resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} 1234 | engines: {node: '>=4'} 1235 | peerDependencies: 1236 | '@typescript-eslint/parser': '*' 1237 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 1238 | peerDependenciesMeta: 1239 | '@typescript-eslint/parser': 1240 | optional: true 1241 | dependencies: 1242 | '@typescript-eslint/parser': 5.45.1_s5ps7njkmjlaqajutnox5ntcla 1243 | array-includes: 3.1.6 1244 | array.prototype.flat: 1.3.1 1245 | debug: 2.6.9 1246 | doctrine: 2.1.0 1247 | eslint: 8.29.0 1248 | eslint-import-resolver-node: 0.3.6 1249 | eslint-module-utils: 2.7.4_wbv6cezew2qbikiravago3ef2u 1250 | has: 1.0.3 1251 | is-core-module: 2.11.0 1252 | is-glob: 4.0.3 1253 | minimatch: 3.1.2 1254 | object.values: 1.1.6 1255 | resolve: 1.22.1 1256 | tsconfig-paths: 3.14.1 1257 | transitivePeerDependencies: 1258 | - eslint-import-resolver-typescript 1259 | - eslint-import-resolver-webpack 1260 | - supports-color 1261 | dev: true 1262 | 1263 | /eslint-plugin-jsonc/2.5.0_eslint@8.29.0: 1264 | resolution: {integrity: sha512-G257khwkrOQ5MJpSzz4yQh5K12W4xFZRcHmVlhVFWh2GCLDX+JwHnmkQoUoFDbOieSPBMsPFZDTJScwrXiWlIg==} 1265 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1266 | peerDependencies: 1267 | eslint: '>=6.0.0' 1268 | dependencies: 1269 | eslint: 8.29.0 1270 | eslint-utils: 3.0.0_eslint@8.29.0 1271 | jsonc-eslint-parser: 2.1.0 1272 | natural-compare: 1.4.0 1273 | dev: true 1274 | 1275 | /eslint-plugin-markdown/3.0.0_eslint@8.29.0: 1276 | resolution: {integrity: sha512-hRs5RUJGbeHDLfS7ELanT0e29Ocyssf/7kBM+p7KluY5AwngGkDf8Oyu4658/NZSGTTq05FZeWbkxXtbVyHPwg==} 1277 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1278 | peerDependencies: 1279 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 1280 | dependencies: 1281 | eslint: 8.29.0 1282 | mdast-util-from-markdown: 0.8.5 1283 | transitivePeerDependencies: 1284 | - supports-color 1285 | dev: true 1286 | 1287 | /eslint-plugin-no-only-tests/3.1.0: 1288 | resolution: {integrity: sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==} 1289 | engines: {node: '>=5.0.0'} 1290 | dev: true 1291 | 1292 | /eslint-plugin-prettier/4.2.1_nrhoyyjffvfyk4vtlt5destxgm: 1293 | resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} 1294 | engines: {node: '>=12.0.0'} 1295 | peerDependencies: 1296 | eslint: '>=7.28.0' 1297 | eslint-config-prettier: '*' 1298 | prettier: '>=2.0.0' 1299 | peerDependenciesMeta: 1300 | eslint-config-prettier: 1301 | optional: true 1302 | dependencies: 1303 | eslint: 8.29.0 1304 | eslint-config-prettier: 8.5.0_eslint@8.29.0 1305 | prettier: 2.8.0 1306 | prettier-linter-helpers: 1.0.0 1307 | dev: true 1308 | 1309 | /eslint-plugin-unicorn/45.0.1_eslint@8.29.0: 1310 | resolution: {integrity: sha512-tLnIw5oDJJc3ILYtlKtqOxPP64FZLTkZkgeuoN6e7x6zw+rhBjOxyvq2c7577LGxXuIhBYrwisZuKNqOOHp3BA==} 1311 | engines: {node: '>=14.18'} 1312 | peerDependencies: 1313 | eslint: '>=8.28.0' 1314 | dependencies: 1315 | '@babel/helper-validator-identifier': 7.19.1 1316 | '@eslint-community/eslint-utils': 4.1.2_eslint@8.29.0 1317 | ci-info: 3.7.0 1318 | clean-regexp: 1.0.0 1319 | eslint: 8.29.0 1320 | esquery: 1.4.0 1321 | indent-string: 4.0.0 1322 | is-builtin-module: 3.2.0 1323 | jsesc: 3.0.2 1324 | lodash: 4.17.21 1325 | pluralize: 8.0.0 1326 | read-pkg-up: 7.0.1 1327 | regexp-tree: 0.1.24 1328 | regjsparser: 0.9.1 1329 | safe-regex: 2.1.1 1330 | semver: 7.3.8 1331 | strip-indent: 3.0.0 1332 | dev: true 1333 | 1334 | /eslint-scope/5.1.1: 1335 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 1336 | engines: {node: '>=8.0.0'} 1337 | dependencies: 1338 | esrecurse: 4.3.0 1339 | estraverse: 4.3.0 1340 | dev: true 1341 | 1342 | /eslint-scope/7.1.1: 1343 | resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} 1344 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1345 | dependencies: 1346 | esrecurse: 4.3.0 1347 | estraverse: 5.3.0 1348 | dev: true 1349 | 1350 | /eslint-utils/3.0.0_eslint@8.29.0: 1351 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 1352 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 1353 | peerDependencies: 1354 | eslint: '>=5' 1355 | dependencies: 1356 | eslint: 8.29.0 1357 | eslint-visitor-keys: 2.1.0 1358 | dev: true 1359 | 1360 | /eslint-visitor-keys/2.1.0: 1361 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 1362 | engines: {node: '>=10'} 1363 | dev: true 1364 | 1365 | /eslint-visitor-keys/3.3.0: 1366 | resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} 1367 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1368 | dev: true 1369 | 1370 | /eslint/8.29.0: 1371 | resolution: {integrity: sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==} 1372 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1373 | hasBin: true 1374 | dependencies: 1375 | '@eslint/eslintrc': 1.3.3 1376 | '@humanwhocodes/config-array': 0.11.7 1377 | '@humanwhocodes/module-importer': 1.0.1 1378 | '@nodelib/fs.walk': 1.2.8 1379 | ajv: 6.12.6 1380 | chalk: 4.1.2 1381 | cross-spawn: 7.0.3 1382 | debug: 4.3.4 1383 | doctrine: 3.0.0 1384 | escape-string-regexp: 4.0.0 1385 | eslint-scope: 7.1.1 1386 | eslint-utils: 3.0.0_eslint@8.29.0 1387 | eslint-visitor-keys: 3.3.0 1388 | espree: 9.4.1 1389 | esquery: 1.4.0 1390 | esutils: 2.0.3 1391 | fast-deep-equal: 3.1.3 1392 | file-entry-cache: 6.0.1 1393 | find-up: 5.0.0 1394 | glob-parent: 6.0.2 1395 | globals: 13.18.0 1396 | grapheme-splitter: 1.0.4 1397 | ignore: 5.2.1 1398 | import-fresh: 3.3.0 1399 | imurmurhash: 0.1.4 1400 | is-glob: 4.0.3 1401 | is-path-inside: 3.0.3 1402 | js-sdsl: 4.2.0 1403 | js-yaml: 4.1.0 1404 | json-stable-stringify-without-jsonify: 1.0.1 1405 | levn: 0.4.1 1406 | lodash.merge: 4.6.2 1407 | minimatch: 3.1.2 1408 | natural-compare: 1.4.0 1409 | optionator: 0.9.1 1410 | regexpp: 3.2.0 1411 | strip-ansi: 6.0.1 1412 | strip-json-comments: 3.1.1 1413 | text-table: 0.2.0 1414 | transitivePeerDependencies: 1415 | - supports-color 1416 | dev: true 1417 | 1418 | /espree/9.4.1: 1419 | resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} 1420 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1421 | dependencies: 1422 | acorn: 8.8.1 1423 | acorn-jsx: 5.3.2_acorn@8.8.1 1424 | eslint-visitor-keys: 3.3.0 1425 | dev: true 1426 | 1427 | /esquery/1.4.0: 1428 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} 1429 | engines: {node: '>=0.10'} 1430 | dependencies: 1431 | estraverse: 5.3.0 1432 | dev: true 1433 | 1434 | /esrecurse/4.3.0: 1435 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1436 | engines: {node: '>=4.0'} 1437 | dependencies: 1438 | estraverse: 5.3.0 1439 | dev: true 1440 | 1441 | /estraverse/4.3.0: 1442 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 1443 | engines: {node: '>=4.0'} 1444 | dev: true 1445 | 1446 | /estraverse/5.3.0: 1447 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1448 | engines: {node: '>=4.0'} 1449 | dev: true 1450 | 1451 | /esutils/2.0.3: 1452 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1453 | engines: {node: '>=0.10.0'} 1454 | dev: true 1455 | 1456 | /execa/5.1.1: 1457 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 1458 | engines: {node: '>=10'} 1459 | dependencies: 1460 | cross-spawn: 7.0.3 1461 | get-stream: 6.0.1 1462 | human-signals: 2.1.0 1463 | is-stream: 2.0.1 1464 | merge-stream: 2.0.0 1465 | npm-run-path: 4.0.1 1466 | onetime: 5.1.2 1467 | signal-exit: 3.0.7 1468 | strip-final-newline: 2.0.0 1469 | dev: false 1470 | 1471 | /fast-deep-equal/3.1.3: 1472 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1473 | 1474 | /fast-diff/1.2.0: 1475 | resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} 1476 | dev: true 1477 | 1478 | /fast-glob/3.2.12: 1479 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 1480 | engines: {node: '>=8.6.0'} 1481 | dependencies: 1482 | '@nodelib/fs.stat': 2.0.5 1483 | '@nodelib/fs.walk': 1.2.8 1484 | glob-parent: 5.1.2 1485 | merge2: 1.4.1 1486 | micromatch: 4.0.5 1487 | dev: true 1488 | 1489 | /fast-json-stable-stringify/2.1.0: 1490 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1491 | dev: true 1492 | 1493 | /fast-levenshtein/2.0.6: 1494 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1495 | dev: true 1496 | 1497 | /fast-safe-stringify/2.1.1: 1498 | resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} 1499 | dev: false 1500 | 1501 | /fastq/1.14.0: 1502 | resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==} 1503 | dependencies: 1504 | reusify: 1.0.4 1505 | dev: true 1506 | 1507 | /file-entry-cache/6.0.1: 1508 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1509 | engines: {node: ^10.12.0 || >=12.0.0} 1510 | dependencies: 1511 | flat-cache: 3.0.4 1512 | dev: true 1513 | 1514 | /fill-range/7.0.1: 1515 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1516 | engines: {node: '>=8'} 1517 | dependencies: 1518 | to-regex-range: 5.0.1 1519 | dev: true 1520 | 1521 | /find-up/4.1.0: 1522 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1523 | engines: {node: '>=8'} 1524 | dependencies: 1525 | locate-path: 5.0.0 1526 | path-exists: 4.0.0 1527 | dev: true 1528 | 1529 | /find-up/5.0.0: 1530 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1531 | engines: {node: '>=10'} 1532 | dependencies: 1533 | locate-path: 6.0.0 1534 | path-exists: 4.0.0 1535 | dev: true 1536 | 1537 | /flat-cache/3.0.4: 1538 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1539 | engines: {node: ^10.12.0 || >=12.0.0} 1540 | dependencies: 1541 | flatted: 3.2.7 1542 | rimraf: 3.0.2 1543 | dev: true 1544 | 1545 | /flatted/3.2.7: 1546 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 1547 | dev: true 1548 | 1549 | /fs.realpath/1.0.0: 1550 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1551 | 1552 | /function-bind/1.1.1: 1553 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1554 | dev: true 1555 | 1556 | /function.prototype.name/1.1.5: 1557 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} 1558 | engines: {node: '>= 0.4'} 1559 | dependencies: 1560 | call-bind: 1.0.2 1561 | define-properties: 1.1.4 1562 | es-abstract: 1.20.4 1563 | functions-have-names: 1.2.3 1564 | dev: true 1565 | 1566 | /functions-have-names/1.2.3: 1567 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1568 | dev: true 1569 | 1570 | /get-intrinsic/1.1.3: 1571 | resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} 1572 | dependencies: 1573 | function-bind: 1.1.1 1574 | has: 1.0.3 1575 | has-symbols: 1.0.3 1576 | dev: true 1577 | 1578 | /get-npm-tarball-url/2.0.3: 1579 | resolution: {integrity: sha512-R/PW6RqyaBQNWYaSyfrh54/qtcnOp22FHCCiRhSSZj0FP3KQWCsxxt0DzIdVTbwTqe9CtQfvl/FPD4UIPt4pqw==} 1580 | engines: {node: '>=12.17'} 1581 | dev: false 1582 | 1583 | /get-stream/6.0.1: 1584 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1585 | engines: {node: '>=10'} 1586 | dev: false 1587 | 1588 | /get-symbol-description/1.0.0: 1589 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1590 | engines: {node: '>= 0.4'} 1591 | dependencies: 1592 | call-bind: 1.0.2 1593 | get-intrinsic: 1.1.3 1594 | dev: true 1595 | 1596 | /get-tsconfig/4.2.0: 1597 | resolution: {integrity: sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==} 1598 | dev: true 1599 | 1600 | /glob-parent/5.1.2: 1601 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1602 | engines: {node: '>= 6'} 1603 | dependencies: 1604 | is-glob: 4.0.3 1605 | dev: true 1606 | 1607 | /glob-parent/6.0.2: 1608 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1609 | engines: {node: '>=10.13.0'} 1610 | dependencies: 1611 | is-glob: 4.0.3 1612 | dev: true 1613 | 1614 | /glob/7.2.3: 1615 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1616 | dependencies: 1617 | fs.realpath: 1.0.0 1618 | inflight: 1.0.6 1619 | inherits: 2.0.4 1620 | minimatch: 3.1.2 1621 | once: 1.4.0 1622 | path-is-absolute: 1.0.1 1623 | 1624 | /globals/13.18.0: 1625 | resolution: {integrity: sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==} 1626 | engines: {node: '>=8'} 1627 | dependencies: 1628 | type-fest: 0.20.2 1629 | dev: true 1630 | 1631 | /globalyzer/0.1.0: 1632 | resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} 1633 | dev: true 1634 | 1635 | /globby/11.1.0: 1636 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1637 | engines: {node: '>=10'} 1638 | dependencies: 1639 | array-union: 2.1.0 1640 | dir-glob: 3.0.1 1641 | fast-glob: 3.2.12 1642 | ignore: 5.2.1 1643 | merge2: 1.4.1 1644 | slash: 3.0.0 1645 | dev: true 1646 | 1647 | /globby/13.1.2: 1648 | resolution: {integrity: sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==} 1649 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1650 | dependencies: 1651 | dir-glob: 3.0.1 1652 | fast-glob: 3.2.12 1653 | ignore: 5.2.1 1654 | merge2: 1.4.1 1655 | slash: 4.0.0 1656 | dev: true 1657 | 1658 | /globrex/0.1.2: 1659 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 1660 | dev: true 1661 | 1662 | /graceful-fs/4.2.10: 1663 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 1664 | 1665 | /grapheme-splitter/1.0.4: 1666 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 1667 | dev: true 1668 | 1669 | /has-bigints/1.0.2: 1670 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1671 | dev: true 1672 | 1673 | /has-flag/3.0.0: 1674 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1675 | engines: {node: '>=4'} 1676 | 1677 | /has-flag/4.0.0: 1678 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1679 | engines: {node: '>=8'} 1680 | dev: true 1681 | 1682 | /has-property-descriptors/1.0.0: 1683 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 1684 | dependencies: 1685 | get-intrinsic: 1.1.3 1686 | dev: true 1687 | 1688 | /has-symbols/1.0.3: 1689 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1690 | engines: {node: '>= 0.4'} 1691 | dev: true 1692 | 1693 | /has-tostringtag/1.0.0: 1694 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1695 | engines: {node: '>= 0.4'} 1696 | dependencies: 1697 | has-symbols: 1.0.3 1698 | dev: true 1699 | 1700 | /has/1.0.3: 1701 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1702 | engines: {node: '>= 0.4.0'} 1703 | dependencies: 1704 | function-bind: 1.1.1 1705 | dev: true 1706 | 1707 | /hosted-git-info/2.8.9: 1708 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} 1709 | dev: true 1710 | 1711 | /human-signals/2.1.0: 1712 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1713 | engines: {node: '>=10.17.0'} 1714 | dev: false 1715 | 1716 | /ignore/5.2.1: 1717 | resolution: {integrity: sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==} 1718 | engines: {node: '>= 4'} 1719 | dev: true 1720 | 1721 | /import-fresh/3.3.0: 1722 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1723 | engines: {node: '>=6'} 1724 | dependencies: 1725 | parent-module: 1.0.1 1726 | resolve-from: 4.0.0 1727 | dev: true 1728 | 1729 | /imurmurhash/0.1.4: 1730 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1731 | engines: {node: '>=0.8.19'} 1732 | 1733 | /indent-string/4.0.0: 1734 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 1735 | engines: {node: '>=8'} 1736 | dev: true 1737 | 1738 | /individual/3.0.0: 1739 | resolution: {integrity: sha512-rUY5vtT748NMRbEMrTNiFfy29BgGZwGXUi2NFUVMWQrogSLzlJvQV9eeMWi+g1aVaQ53tpyLAQtd5x/JH0Nh1g==} 1740 | dev: false 1741 | 1742 | /inflight/1.0.6: 1743 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1744 | dependencies: 1745 | once: 1.4.0 1746 | wrappy: 1.0.2 1747 | 1748 | /inherits/2.0.4: 1749 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1750 | 1751 | /internal-slot/1.0.3: 1752 | resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} 1753 | engines: {node: '>= 0.4'} 1754 | dependencies: 1755 | get-intrinsic: 1.1.3 1756 | has: 1.0.3 1757 | side-channel: 1.0.4 1758 | dev: true 1759 | 1760 | /is-alphabetical/1.0.4: 1761 | resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} 1762 | dev: true 1763 | 1764 | /is-alphanumerical/1.0.4: 1765 | resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} 1766 | dependencies: 1767 | is-alphabetical: 1.0.4 1768 | is-decimal: 1.0.4 1769 | dev: true 1770 | 1771 | /is-arrayish/0.2.1: 1772 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 1773 | 1774 | /is-bigint/1.0.4: 1775 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1776 | dependencies: 1777 | has-bigints: 1.0.2 1778 | dev: true 1779 | 1780 | /is-boolean-object/1.1.2: 1781 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1782 | engines: {node: '>= 0.4'} 1783 | dependencies: 1784 | call-bind: 1.0.2 1785 | has-tostringtag: 1.0.0 1786 | dev: true 1787 | 1788 | /is-builtin-module/3.2.0: 1789 | resolution: {integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==} 1790 | engines: {node: '>=6'} 1791 | dependencies: 1792 | builtin-modules: 3.3.0 1793 | dev: true 1794 | 1795 | /is-callable/1.2.7: 1796 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 1797 | engines: {node: '>= 0.4'} 1798 | dev: true 1799 | 1800 | /is-core-module/2.11.0: 1801 | resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} 1802 | dependencies: 1803 | has: 1.0.3 1804 | dev: true 1805 | 1806 | /is-date-object/1.0.5: 1807 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 1808 | engines: {node: '>= 0.4'} 1809 | dependencies: 1810 | has-tostringtag: 1.0.0 1811 | dev: true 1812 | 1813 | /is-decimal/1.0.4: 1814 | resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} 1815 | dev: true 1816 | 1817 | /is-docker/2.2.1: 1818 | resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} 1819 | engines: {node: '>=8'} 1820 | hasBin: true 1821 | dev: true 1822 | 1823 | /is-extglob/2.1.1: 1824 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1825 | engines: {node: '>=0.10.0'} 1826 | dev: true 1827 | 1828 | /is-glob/4.0.3: 1829 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1830 | engines: {node: '>=0.10.0'} 1831 | dependencies: 1832 | is-extglob: 2.1.1 1833 | dev: true 1834 | 1835 | /is-hexadecimal/1.0.4: 1836 | resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} 1837 | dev: true 1838 | 1839 | /is-negative-zero/2.0.2: 1840 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 1841 | engines: {node: '>= 0.4'} 1842 | dev: true 1843 | 1844 | /is-number-object/1.0.7: 1845 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 1846 | engines: {node: '>= 0.4'} 1847 | dependencies: 1848 | has-tostringtag: 1.0.0 1849 | dev: true 1850 | 1851 | /is-number/7.0.0: 1852 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1853 | engines: {node: '>=0.12.0'} 1854 | dev: true 1855 | 1856 | /is-path-inside/3.0.3: 1857 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1858 | engines: {node: '>=8'} 1859 | dev: true 1860 | 1861 | /is-plain-obj/2.1.0: 1862 | resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} 1863 | engines: {node: '>=8'} 1864 | dev: false 1865 | 1866 | /is-regex/1.1.4: 1867 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1868 | engines: {node: '>= 0.4'} 1869 | dependencies: 1870 | call-bind: 1.0.2 1871 | has-tostringtag: 1.0.0 1872 | dev: true 1873 | 1874 | /is-shared-array-buffer/1.0.2: 1875 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 1876 | dependencies: 1877 | call-bind: 1.0.2 1878 | dev: true 1879 | 1880 | /is-stream/2.0.1: 1881 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1882 | engines: {node: '>=8'} 1883 | dev: false 1884 | 1885 | /is-string/1.0.7: 1886 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 1887 | engines: {node: '>= 0.4'} 1888 | dependencies: 1889 | has-tostringtag: 1.0.0 1890 | dev: true 1891 | 1892 | /is-symbol/1.0.4: 1893 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 1894 | engines: {node: '>= 0.4'} 1895 | dependencies: 1896 | has-symbols: 1.0.3 1897 | dev: true 1898 | 1899 | /is-typedarray/1.0.0: 1900 | resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} 1901 | dev: false 1902 | 1903 | /is-weakref/1.0.2: 1904 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 1905 | dependencies: 1906 | call-bind: 1.0.2 1907 | dev: true 1908 | 1909 | /is-windows/1.0.2: 1910 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} 1911 | engines: {node: '>=0.10.0'} 1912 | dev: false 1913 | 1914 | /is-wsl/2.2.0: 1915 | resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} 1916 | engines: {node: '>=8'} 1917 | dependencies: 1918 | is-docker: 2.2.1 1919 | dev: true 1920 | 1921 | /isexe/2.0.0: 1922 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1923 | 1924 | /js-sdsl/4.2.0: 1925 | resolution: {integrity: sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==} 1926 | dev: true 1927 | 1928 | /js-tokens/4.0.0: 1929 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1930 | 1931 | /js-yaml/4.1.0: 1932 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1933 | hasBin: true 1934 | dependencies: 1935 | argparse: 2.0.1 1936 | 1937 | /jsesc/0.5.0: 1938 | resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} 1939 | hasBin: true 1940 | dev: true 1941 | 1942 | /jsesc/3.0.2: 1943 | resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} 1944 | engines: {node: '>=6'} 1945 | hasBin: true 1946 | dev: true 1947 | 1948 | /json-parse-even-better-errors/2.3.1: 1949 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1950 | 1951 | /json-schema-traverse/0.4.1: 1952 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1953 | dev: true 1954 | 1955 | /json-stable-stringify-without-jsonify/1.0.1: 1956 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1957 | dev: true 1958 | 1959 | /json-stringify-safe/5.0.1: 1960 | resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} 1961 | dev: false 1962 | 1963 | /json5/1.0.1: 1964 | resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} 1965 | hasBin: true 1966 | dependencies: 1967 | minimist: 1.2.6 1968 | dev: true 1969 | 1970 | /json5/2.2.1: 1971 | resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} 1972 | engines: {node: '>=6'} 1973 | hasBin: true 1974 | dev: false 1975 | 1976 | /jsonc-eslint-parser/2.1.0: 1977 | resolution: {integrity: sha512-qCRJWlbP2v6HbmKW7R3lFbeiVWHo+oMJ0j+MizwvauqnCV/EvtAeEeuCgoc/ErtsuoKgYB8U4Ih8AxJbXoE6/g==} 1978 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1979 | dependencies: 1980 | acorn: 8.8.1 1981 | eslint-visitor-keys: 3.3.0 1982 | espree: 9.4.1 1983 | semver: 7.3.8 1984 | dev: true 1985 | 1986 | /levn/0.4.1: 1987 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1988 | engines: {node: '>= 0.8.0'} 1989 | dependencies: 1990 | prelude-ls: 1.2.1 1991 | type-check: 0.4.0 1992 | dev: true 1993 | 1994 | /lines-and-columns/1.2.4: 1995 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1996 | 1997 | /locate-path/5.0.0: 1998 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 1999 | engines: {node: '>=8'} 2000 | dependencies: 2001 | p-locate: 4.1.0 2002 | dev: true 2003 | 2004 | /locate-path/6.0.0: 2005 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2006 | engines: {node: '>=10'} 2007 | dependencies: 2008 | p-locate: 5.0.0 2009 | dev: true 2010 | 2011 | /lodash.merge/4.6.2: 2012 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2013 | dev: true 2014 | 2015 | /lodash/4.17.21: 2016 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 2017 | dev: true 2018 | 2019 | /lru-cache/6.0.0: 2020 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2021 | engines: {node: '>=10'} 2022 | dependencies: 2023 | yallist: 4.0.0 2024 | 2025 | /map-age-cleaner/0.1.3: 2026 | resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} 2027 | engines: {node: '>=6'} 2028 | dependencies: 2029 | p-defer: 1.0.0 2030 | dev: false 2031 | 2032 | /mdast-util-from-markdown/0.8.5: 2033 | resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} 2034 | dependencies: 2035 | '@types/mdast': 3.0.10 2036 | mdast-util-to-string: 2.0.0 2037 | micromark: 2.11.4 2038 | parse-entities: 2.0.0 2039 | unist-util-stringify-position: 2.0.3 2040 | transitivePeerDependencies: 2041 | - supports-color 2042 | dev: true 2043 | 2044 | /mdast-util-to-string/2.0.0: 2045 | resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} 2046 | dev: true 2047 | 2048 | /mem/8.1.1: 2049 | resolution: {integrity: sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==} 2050 | engines: {node: '>=10'} 2051 | dependencies: 2052 | map-age-cleaner: 0.1.3 2053 | mimic-fn: 3.1.0 2054 | dev: false 2055 | 2056 | /merge-stream/2.0.0: 2057 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 2058 | dev: false 2059 | 2060 | /merge2/1.4.1: 2061 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2062 | engines: {node: '>= 8'} 2063 | dev: true 2064 | 2065 | /micromark/2.11.4: 2066 | resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} 2067 | dependencies: 2068 | debug: 4.3.4 2069 | parse-entities: 2.0.0 2070 | transitivePeerDependencies: 2071 | - supports-color 2072 | dev: true 2073 | 2074 | /micromatch/4.0.5: 2075 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2076 | engines: {node: '>=8.6'} 2077 | dependencies: 2078 | braces: 3.0.2 2079 | picomatch: 2.3.1 2080 | dev: true 2081 | 2082 | /mimic-fn/2.1.0: 2083 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 2084 | engines: {node: '>=6'} 2085 | dev: false 2086 | 2087 | /mimic-fn/3.1.0: 2088 | resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==} 2089 | engines: {node: '>=8'} 2090 | dev: false 2091 | 2092 | /min-indent/1.0.1: 2093 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 2094 | engines: {node: '>=4'} 2095 | dev: true 2096 | 2097 | /minimatch/3.1.2: 2098 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2099 | dependencies: 2100 | brace-expansion: 1.1.11 2101 | 2102 | /minimist/1.2.6: 2103 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} 2104 | 2105 | /ms/2.0.0: 2106 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 2107 | dev: true 2108 | 2109 | /ms/2.1.2: 2110 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2111 | dev: true 2112 | 2113 | /ms/2.1.3: 2114 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 2115 | dev: true 2116 | 2117 | /natural-compare-lite/1.4.0: 2118 | resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} 2119 | dev: true 2120 | 2121 | /natural-compare/1.4.0: 2122 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2123 | dev: true 2124 | 2125 | /ndjson/2.0.0: 2126 | resolution: {integrity: sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==} 2127 | engines: {node: '>=10'} 2128 | hasBin: true 2129 | dependencies: 2130 | json-stringify-safe: 5.0.1 2131 | minimist: 1.2.6 2132 | readable-stream: 3.6.0 2133 | split2: 3.2.2 2134 | through2: 4.0.2 2135 | dev: false 2136 | 2137 | /normalize-package-data/2.5.0: 2138 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} 2139 | dependencies: 2140 | hosted-git-info: 2.8.9 2141 | resolve: 1.22.1 2142 | semver: 5.7.1 2143 | validate-npm-package-license: 3.0.4 2144 | dev: true 2145 | 2146 | /normalize-path/3.0.0: 2147 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2148 | engines: {node: '>=0.10.0'} 2149 | dev: false 2150 | 2151 | /npm-run-path/4.0.1: 2152 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 2153 | engines: {node: '>=8'} 2154 | dependencies: 2155 | path-key: 3.1.1 2156 | dev: false 2157 | 2158 | /object-inspect/1.12.2: 2159 | resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} 2160 | dev: true 2161 | 2162 | /object-keys/1.1.1: 2163 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2164 | engines: {node: '>= 0.4'} 2165 | dev: true 2166 | 2167 | /object.assign/4.1.4: 2168 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} 2169 | engines: {node: '>= 0.4'} 2170 | dependencies: 2171 | call-bind: 1.0.2 2172 | define-properties: 1.1.4 2173 | has-symbols: 1.0.3 2174 | object-keys: 1.1.1 2175 | dev: true 2176 | 2177 | /object.values/1.1.6: 2178 | resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} 2179 | engines: {node: '>= 0.4'} 2180 | dependencies: 2181 | call-bind: 1.0.2 2182 | define-properties: 1.1.4 2183 | es-abstract: 1.20.4 2184 | dev: true 2185 | 2186 | /once/1.4.0: 2187 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2188 | dependencies: 2189 | wrappy: 1.0.2 2190 | 2191 | /onetime/5.1.2: 2192 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 2193 | engines: {node: '>=6'} 2194 | dependencies: 2195 | mimic-fn: 2.1.0 2196 | dev: false 2197 | 2198 | /open/8.4.0: 2199 | resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} 2200 | engines: {node: '>=12'} 2201 | dependencies: 2202 | define-lazy-prop: 2.0.0 2203 | is-docker: 2.2.1 2204 | is-wsl: 2.2.0 2205 | dev: true 2206 | 2207 | /optionator/0.9.1: 2208 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 2209 | engines: {node: '>= 0.8.0'} 2210 | dependencies: 2211 | deep-is: 0.1.4 2212 | fast-levenshtein: 2.0.6 2213 | levn: 0.4.1 2214 | prelude-ls: 1.2.1 2215 | type-check: 0.4.0 2216 | word-wrap: 1.2.3 2217 | dev: true 2218 | 2219 | /p-defer/1.0.0: 2220 | resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} 2221 | engines: {node: '>=4'} 2222 | dev: false 2223 | 2224 | /p-limit/2.3.0: 2225 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 2226 | engines: {node: '>=6'} 2227 | dependencies: 2228 | p-try: 2.2.0 2229 | dev: true 2230 | 2231 | /p-limit/3.1.0: 2232 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2233 | engines: {node: '>=10'} 2234 | dependencies: 2235 | yocto-queue: 0.1.0 2236 | dev: true 2237 | 2238 | /p-locate/4.1.0: 2239 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 2240 | engines: {node: '>=8'} 2241 | dependencies: 2242 | p-limit: 2.3.0 2243 | dev: true 2244 | 2245 | /p-locate/5.0.0: 2246 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2247 | engines: {node: '>=10'} 2248 | dependencies: 2249 | p-limit: 3.1.0 2250 | dev: true 2251 | 2252 | /p-try/2.2.0: 2253 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 2254 | engines: {node: '>=6'} 2255 | dev: true 2256 | 2257 | /parent-module/1.0.1: 2258 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2259 | engines: {node: '>=6'} 2260 | dependencies: 2261 | callsites: 3.1.0 2262 | dev: true 2263 | 2264 | /parse-entities/2.0.0: 2265 | resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} 2266 | dependencies: 2267 | character-entities: 1.2.4 2268 | character-entities-legacy: 1.1.4 2269 | character-reference-invalid: 1.1.4 2270 | is-alphanumerical: 1.0.4 2271 | is-decimal: 1.0.4 2272 | is-hexadecimal: 1.0.4 2273 | dev: true 2274 | 2275 | /parse-json/5.2.0: 2276 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 2277 | engines: {node: '>=8'} 2278 | dependencies: 2279 | '@babel/code-frame': 7.16.7 2280 | error-ex: 1.3.2 2281 | json-parse-even-better-errors: 2.3.1 2282 | lines-and-columns: 1.2.4 2283 | 2284 | /path-exists/4.0.0: 2285 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2286 | engines: {node: '>=8'} 2287 | dev: true 2288 | 2289 | /path-exists/5.0.0: 2290 | resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} 2291 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2292 | dev: false 2293 | 2294 | /path-is-absolute/1.0.1: 2295 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2296 | engines: {node: '>=0.10.0'} 2297 | 2298 | /path-key/3.1.1: 2299 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2300 | engines: {node: '>=8'} 2301 | 2302 | /path-name/1.0.0: 2303 | resolution: {integrity: sha512-/dcAb5vMXH0f51yvMuSUqFpxUcA8JelbRmE5mW/p4CUJxrNgK24IkstnV7ENtg2IDGBOu6izKTG6eilbnbNKWQ==} 2304 | dev: false 2305 | 2306 | /path-parse/1.0.7: 2307 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2308 | dev: true 2309 | 2310 | /path-type/4.0.0: 2311 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2312 | engines: {node: '>=8'} 2313 | dev: true 2314 | 2315 | /picocolors/1.0.0: 2316 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2317 | dev: true 2318 | 2319 | /picomatch/2.3.1: 2320 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2321 | engines: {node: '>=8.6'} 2322 | dev: true 2323 | 2324 | /pluralize/8.0.0: 2325 | resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} 2326 | engines: {node: '>=4'} 2327 | dev: true 2328 | 2329 | /prelude-ls/1.2.1: 2330 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2331 | engines: {node: '>= 0.8.0'} 2332 | dev: true 2333 | 2334 | /prettier-linter-helpers/1.0.0: 2335 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} 2336 | engines: {node: '>=6.0.0'} 2337 | dependencies: 2338 | fast-diff: 1.2.0 2339 | dev: true 2340 | 2341 | /prettier/2.8.0: 2342 | resolution: {integrity: sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==} 2343 | engines: {node: '>=10.13.0'} 2344 | hasBin: true 2345 | dev: true 2346 | 2347 | /punycode/2.1.1: 2348 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 2349 | engines: {node: '>=6'} 2350 | dev: true 2351 | 2352 | /queue-microtask/1.2.3: 2353 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2354 | dev: true 2355 | 2356 | /read-pkg-up/7.0.1: 2357 | resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} 2358 | engines: {node: '>=8'} 2359 | dependencies: 2360 | find-up: 4.1.0 2361 | read-pkg: 5.2.0 2362 | type-fest: 0.8.1 2363 | dev: true 2364 | 2365 | /read-pkg/5.2.0: 2366 | resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} 2367 | engines: {node: '>=8'} 2368 | dependencies: 2369 | '@types/normalize-package-data': 2.4.1 2370 | normalize-package-data: 2.5.0 2371 | parse-json: 5.2.0 2372 | type-fest: 0.6.0 2373 | dev: true 2374 | 2375 | /read-yaml-file/2.1.0: 2376 | resolution: {integrity: sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==} 2377 | engines: {node: '>=10.13'} 2378 | dependencies: 2379 | js-yaml: 4.1.0 2380 | strip-bom: 4.0.0 2381 | dev: false 2382 | 2383 | /readable-stream/3.6.0: 2384 | resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} 2385 | engines: {node: '>= 6'} 2386 | dependencies: 2387 | inherits: 2.0.4 2388 | string_decoder: 1.3.0 2389 | util-deprecate: 1.0.2 2390 | dev: false 2391 | 2392 | /regexp-tree/0.1.24: 2393 | resolution: {integrity: sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==} 2394 | hasBin: true 2395 | dev: true 2396 | 2397 | /regexp.prototype.flags/1.4.3: 2398 | resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} 2399 | engines: {node: '>= 0.4'} 2400 | dependencies: 2401 | call-bind: 1.0.2 2402 | define-properties: 1.1.4 2403 | functions-have-names: 1.2.3 2404 | dev: true 2405 | 2406 | /regexpp/3.2.0: 2407 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} 2408 | engines: {node: '>=8'} 2409 | dev: true 2410 | 2411 | /regjsparser/0.9.1: 2412 | resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} 2413 | hasBin: true 2414 | dependencies: 2415 | jsesc: 0.5.0 2416 | dev: true 2417 | 2418 | /resolve-from/4.0.0: 2419 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2420 | engines: {node: '>=4'} 2421 | dev: true 2422 | 2423 | /resolve/1.22.1: 2424 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 2425 | hasBin: true 2426 | dependencies: 2427 | is-core-module: 2.11.0 2428 | path-parse: 1.0.7 2429 | supports-preserve-symlinks-flag: 1.0.0 2430 | dev: true 2431 | 2432 | /reusify/1.0.4: 2433 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2434 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2435 | dev: true 2436 | 2437 | /rfc4648/1.5.1: 2438 | resolution: {integrity: sha512-60e/YWs2/D3MV1ErdjhJHcmlgnyLUiG4X/14dgsfm9/zmCWLN16xI6YqJYSCd/OANM7bUNzJqPY5B8/02S9Ibw==} 2439 | dev: false 2440 | 2441 | /rimraf/3.0.2: 2442 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2443 | hasBin: true 2444 | dependencies: 2445 | glob: 7.2.3 2446 | 2447 | /run-parallel/1.2.0: 2448 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2449 | dependencies: 2450 | queue-microtask: 1.2.3 2451 | dev: true 2452 | 2453 | /safe-buffer/5.2.1: 2454 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 2455 | dev: false 2456 | 2457 | /safe-execa/0.1.2: 2458 | resolution: {integrity: sha512-vdTshSQ2JsRCgT8eKZWNJIL26C6bVqy1SOmuCMlKHegVeo8KYRobRrefOdUq9OozSPUUiSxrylteeRmLOMFfWg==} 2459 | engines: {node: '>=12'} 2460 | dependencies: 2461 | '@zkochan/which': 2.0.3 2462 | execa: 5.1.1 2463 | path-name: 1.0.0 2464 | dev: false 2465 | 2466 | /safe-regex-test/1.0.0: 2467 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} 2468 | dependencies: 2469 | call-bind: 1.0.2 2470 | get-intrinsic: 1.1.3 2471 | is-regex: 1.1.4 2472 | dev: true 2473 | 2474 | /safe-regex/2.1.1: 2475 | resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} 2476 | dependencies: 2477 | regexp-tree: 0.1.24 2478 | dev: true 2479 | 2480 | /semver/5.7.1: 2481 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} 2482 | hasBin: true 2483 | dev: true 2484 | 2485 | /semver/7.3.8: 2486 | resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} 2487 | engines: {node: '>=10'} 2488 | hasBin: true 2489 | dependencies: 2490 | lru-cache: 6.0.0 2491 | 2492 | /shebang-command/2.0.0: 2493 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2494 | engines: {node: '>=8'} 2495 | dependencies: 2496 | shebang-regex: 3.0.0 2497 | 2498 | /shebang-regex/3.0.0: 2499 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2500 | engines: {node: '>=8'} 2501 | 2502 | /side-channel/1.0.4: 2503 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2504 | dependencies: 2505 | call-bind: 1.0.2 2506 | get-intrinsic: 1.1.3 2507 | object-inspect: 1.12.2 2508 | dev: true 2509 | 2510 | /signal-exit/3.0.7: 2511 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 2512 | dev: false 2513 | 2514 | /slash/3.0.0: 2515 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2516 | engines: {node: '>=8'} 2517 | dev: true 2518 | 2519 | /slash/4.0.0: 2520 | resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} 2521 | engines: {node: '>=12'} 2522 | dev: true 2523 | 2524 | /sort-keys/4.2.0: 2525 | resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==} 2526 | engines: {node: '>=8'} 2527 | dependencies: 2528 | is-plain-obj: 2.1.0 2529 | dev: false 2530 | 2531 | /spdx-correct/3.1.1: 2532 | resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} 2533 | dependencies: 2534 | spdx-expression-parse: 3.0.1 2535 | spdx-license-ids: 3.0.12 2536 | dev: true 2537 | 2538 | /spdx-exceptions/2.3.0: 2539 | resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} 2540 | dev: true 2541 | 2542 | /spdx-expression-parse/3.0.1: 2543 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} 2544 | dependencies: 2545 | spdx-exceptions: 2.3.0 2546 | spdx-license-ids: 3.0.12 2547 | dev: true 2548 | 2549 | /spdx-license-ids/3.0.12: 2550 | resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} 2551 | dev: true 2552 | 2553 | /split2/3.2.2: 2554 | resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} 2555 | dependencies: 2556 | readable-stream: 3.6.0 2557 | dev: false 2558 | 2559 | /string.prototype.trimend/1.0.6: 2560 | resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} 2561 | dependencies: 2562 | call-bind: 1.0.2 2563 | define-properties: 1.1.4 2564 | es-abstract: 1.20.4 2565 | dev: true 2566 | 2567 | /string.prototype.trimstart/1.0.6: 2568 | resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} 2569 | dependencies: 2570 | call-bind: 1.0.2 2571 | define-properties: 1.1.4 2572 | es-abstract: 1.20.4 2573 | dev: true 2574 | 2575 | /string_decoder/1.3.0: 2576 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 2577 | dependencies: 2578 | safe-buffer: 5.2.1 2579 | dev: false 2580 | 2581 | /strip-ansi/6.0.1: 2582 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2583 | engines: {node: '>=8'} 2584 | dependencies: 2585 | ansi-regex: 5.0.1 2586 | dev: true 2587 | 2588 | /strip-bom/3.0.0: 2589 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 2590 | engines: {node: '>=4'} 2591 | dev: true 2592 | 2593 | /strip-bom/4.0.0: 2594 | resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} 2595 | engines: {node: '>=8'} 2596 | dev: false 2597 | 2598 | /strip-comments-strings/1.2.0: 2599 | resolution: {integrity: sha512-zwF4bmnyEjZwRhaak9jUWNxc0DoeKBJ7lwSN/LEc8dQXZcUFG6auaaTQJokQWXopLdM3iTx01nQT8E4aL29DAQ==} 2600 | dev: false 2601 | 2602 | /strip-final-newline/2.0.0: 2603 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 2604 | engines: {node: '>=6'} 2605 | dev: false 2606 | 2607 | /strip-indent/3.0.0: 2608 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 2609 | engines: {node: '>=8'} 2610 | dependencies: 2611 | min-indent: 1.0.1 2612 | dev: true 2613 | 2614 | /strip-json-comments/3.1.1: 2615 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2616 | engines: {node: '>=8'} 2617 | dev: true 2618 | 2619 | /supports-color/5.5.0: 2620 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2621 | engines: {node: '>=4'} 2622 | dependencies: 2623 | has-flag: 3.0.0 2624 | 2625 | /supports-color/7.2.0: 2626 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2627 | engines: {node: '>=8'} 2628 | dependencies: 2629 | has-flag: 4.0.0 2630 | dev: true 2631 | 2632 | /supports-preserve-symlinks-flag/1.0.0: 2633 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2634 | engines: {node: '>= 0.4'} 2635 | dev: true 2636 | 2637 | /synckit/0.8.4: 2638 | resolution: {integrity: sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==} 2639 | engines: {node: ^14.18.0 || >=16.0.0} 2640 | dependencies: 2641 | '@pkgr/utils': 2.3.1 2642 | tslib: 2.4.1 2643 | dev: true 2644 | 2645 | /tapable/2.2.1: 2646 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} 2647 | engines: {node: '>=6'} 2648 | dev: true 2649 | 2650 | /text-table/0.2.0: 2651 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2652 | dev: true 2653 | 2654 | /through2/4.0.2: 2655 | resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} 2656 | dependencies: 2657 | readable-stream: 3.6.0 2658 | dev: false 2659 | 2660 | /tiny-glob/0.2.9: 2661 | resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} 2662 | dependencies: 2663 | globalyzer: 0.1.0 2664 | globrex: 0.1.2 2665 | dev: true 2666 | 2667 | /to-regex-range/5.0.1: 2668 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2669 | engines: {node: '>=8.0'} 2670 | dependencies: 2671 | is-number: 7.0.0 2672 | dev: true 2673 | 2674 | /tsconfig-paths/3.14.1: 2675 | resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} 2676 | dependencies: 2677 | '@types/json5': 0.0.29 2678 | json5: 1.0.1 2679 | minimist: 1.2.6 2680 | strip-bom: 3.0.0 2681 | dev: true 2682 | 2683 | /tslib/1.14.1: 2684 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 2685 | dev: true 2686 | 2687 | /tslib/2.3.1: 2688 | resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} 2689 | dev: true 2690 | 2691 | /tslib/2.4.1: 2692 | resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} 2693 | dev: true 2694 | 2695 | /tsutils/3.21.0_typescript@4.9.3: 2696 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 2697 | engines: {node: '>= 6'} 2698 | peerDependencies: 2699 | 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' 2700 | dependencies: 2701 | tslib: 1.14.1 2702 | typescript: 4.9.3 2703 | dev: true 2704 | 2705 | /type-check/0.4.0: 2706 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2707 | engines: {node: '>= 0.8.0'} 2708 | dependencies: 2709 | prelude-ls: 1.2.1 2710 | dev: true 2711 | 2712 | /type-fest/0.20.2: 2713 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2714 | engines: {node: '>=10'} 2715 | dev: true 2716 | 2717 | /type-fest/0.6.0: 2718 | resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} 2719 | engines: {node: '>=8'} 2720 | dev: true 2721 | 2722 | /type-fest/0.8.1: 2723 | resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} 2724 | engines: {node: '>=8'} 2725 | dev: true 2726 | 2727 | /typedarray-to-buffer/3.1.5: 2728 | resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} 2729 | dependencies: 2730 | is-typedarray: 1.0.0 2731 | dev: false 2732 | 2733 | /typescript/4.9.3: 2734 | resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} 2735 | engines: {node: '>=4.2.0'} 2736 | hasBin: true 2737 | dev: true 2738 | 2739 | /unbox-primitive/1.0.2: 2740 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 2741 | dependencies: 2742 | call-bind: 1.0.2 2743 | has-bigints: 1.0.2 2744 | has-symbols: 1.0.3 2745 | which-boxed-primitive: 1.0.2 2746 | dev: true 2747 | 2748 | /unist-util-stringify-position/2.0.3: 2749 | resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} 2750 | dependencies: 2751 | '@types/unist': 2.0.6 2752 | dev: true 2753 | 2754 | /uri-js/4.4.1: 2755 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2756 | dependencies: 2757 | punycode: 2.1.1 2758 | dev: true 2759 | 2760 | /util-deprecate/1.0.2: 2761 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2762 | dev: false 2763 | 2764 | /validate-npm-package-license/3.0.4: 2765 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} 2766 | dependencies: 2767 | spdx-correct: 3.1.1 2768 | spdx-expression-parse: 3.0.1 2769 | dev: true 2770 | 2771 | /which-boxed-primitive/1.0.2: 2772 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 2773 | dependencies: 2774 | is-bigint: 1.0.4 2775 | is-boolean-object: 1.1.2 2776 | is-number-object: 1.0.7 2777 | is-string: 1.0.7 2778 | is-symbol: 1.0.4 2779 | dev: true 2780 | 2781 | /which/2.0.2: 2782 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2783 | engines: {node: '>= 8'} 2784 | hasBin: true 2785 | dependencies: 2786 | isexe: 2.0.0 2787 | 2788 | /word-wrap/1.2.3: 2789 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 2790 | engines: {node: '>=0.10.0'} 2791 | dev: true 2792 | 2793 | /wrappy/1.0.2: 2794 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2795 | 2796 | /write-file-atomic/3.0.3: 2797 | resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} 2798 | dependencies: 2799 | imurmurhash: 0.1.4 2800 | is-typedarray: 1.0.0 2801 | signal-exit: 3.0.7 2802 | typedarray-to-buffer: 3.1.5 2803 | dev: false 2804 | 2805 | /write-file-atomic/5.0.0: 2806 | resolution: {integrity: sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==} 2807 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 2808 | dependencies: 2809 | imurmurhash: 0.1.4 2810 | signal-exit: 3.0.7 2811 | dev: false 2812 | 2813 | /write-yaml-file/4.2.0: 2814 | resolution: {integrity: sha512-LwyucHy0uhWqbrOkh9cBluZBeNVxzHjDaE9mwepZG3n3ZlbM4v3ndrFw51zW/NXYFFqP+QWZ72ihtLWTh05e4Q==} 2815 | engines: {node: '>=10.13'} 2816 | dependencies: 2817 | js-yaml: 4.1.0 2818 | write-file-atomic: 3.0.3 2819 | dev: false 2820 | 2821 | /yallist/4.0.0: 2822 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2823 | 2824 | /yaml-eslint-parser/1.1.0: 2825 | resolution: {integrity: sha512-b464Q1fYiX1oYx2kE8k4mEp6S9Prk+tfDsY/IPxQ0FCjEuj3AKko5Skf3/yQJeYTTDyjDE+aWIJemnv29HvEWQ==} 2826 | engines: {node: ^14.17.0 || >=16.0.0} 2827 | dependencies: 2828 | eslint-visitor-keys: 3.3.0 2829 | lodash: 4.17.21 2830 | yaml: 2.1.3 2831 | dev: true 2832 | 2833 | /yaml/2.1.3: 2834 | resolution: {integrity: sha512-AacA8nRULjKMX2DvWvOAdBZMOfQlypSFkjcOcu9FalllIDJ1kvlREzcdIZmidQUqqeMv7jorHjq2HlLv/+c2lg==} 2835 | engines: {node: '>= 14'} 2836 | dev: true 2837 | 2838 | /yocto-queue/0.1.0: 2839 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2840 | engines: {node: '>=10'} 2841 | dev: true 2842 | -------------------------------------------------------------------------------- /src/cli.ts: -------------------------------------------------------------------------------- 1 | import { program } from "commander"; 2 | import { fixDuplicates, listDuplicates } from "./index.js"; 3 | import { readFileSync } from "fs"; 4 | import { fileURLToPath } from "url"; 5 | import { join } from "path"; 6 | 7 | function readVersion() { 8 | const __filename = fileURLToPath(import.meta.url); 9 | const __dirname = fileURLToPath(new URL(".", import.meta.url)); 10 | const pkgPath = join(__dirname, "../package.json"); 11 | return JSON.parse(readFileSync(pkgPath, "utf8")).version; 12 | } 13 | 14 | export async function runCli() { 15 | program 16 | .version(readVersion()) 17 | .usage("[options]") 18 | .option( 19 | "-l, --list", 20 | "do not change pnpm-lock.yaml, just output the diagnosis" 21 | ); 22 | 23 | program.parse(process.argv); 24 | 25 | const { list } = program.opts(); 26 | 27 | const root = process.cwd(); 28 | 29 | if (list) { 30 | if (await listDuplicates(root)) { 31 | process.exit(1); 32 | } 33 | } else { 34 | await fixDuplicates(root); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { readWantedLockfile, type Dependencies } from "@pnpm/lockfile-file"; 2 | import { nameVerFromPkgSnapshot } from "@pnpm/lockfile-utils"; 3 | import { lockfileWalker, type LockfileWalkerStep } from "@pnpm/lockfile-walker"; 4 | import { getAllDependenciesFromManifest } from "@pnpm/manifest-utils"; 5 | import { 6 | readProjectManifest, 7 | safeReadProjectManifestOnly, 8 | } from "@pnpm/read-project-manifest"; 9 | import type { ProjectManifest } from "@pnpm/types"; 10 | import { execSync } from "child_process"; 11 | import * as dp from "dependency-path"; 12 | import fs from "fs/promises"; 13 | import path from "path"; 14 | import semver from "semver"; 15 | 16 | type Package = { 17 | name: string; 18 | specifier: string; 19 | version: string; 20 | bestVersion?: string; 21 | }; 22 | 23 | type PackageMap = { [key: string]: Package }; 24 | 25 | const MAX_DEPTH = 100; 26 | 27 | async function walkLockfile( 28 | root: string, 29 | step: LockfileWalkerStep, 30 | specifiers: Dependencies, 31 | packageMap: PackageMap, 32 | depth = 1 33 | ) { 34 | if (depth > MAX_DEPTH) return; 35 | 36 | await Promise.all( 37 | step.dependencies.map(async (dep) => { 38 | const { depPath, pkgSnapshot } = dep; 39 | const { name, version } = nameVerFromPkgSnapshot(depPath, pkgSnapshot); 40 | 41 | const specifier = specifiers[name]; 42 | 43 | if (name && version && specifier) { 44 | const key = `${name}#${version}#${specifier}`; 45 | packageMap[key] = { name, version, specifier }; 46 | } 47 | 48 | // TODO: read config instead of hardcoded value 49 | const virtualStoreDir = path.join(root, "node_modules", ".pnpm"); 50 | const modules = path.join( 51 | virtualStoreDir, 52 | dp.depPathToFilename(depPath), 53 | "node_modules" 54 | ); 55 | const dir = path.join(modules, name); 56 | const manifest: ProjectManifest = 57 | (await safeReadProjectManifestOnly(dir)) || {}; 58 | 59 | await walkLockfile( 60 | root, 61 | dep.next(), 62 | getAllDependenciesFromManifest(manifest), 63 | packageMap, 64 | depth + 1 65 | ); 66 | }) 67 | ); 68 | } 69 | 70 | async function getAllDependencies(root: string): Promise { 71 | const lockfile = await readWantedLockfile(root, { ignoreIncompatible: true }); 72 | if (!lockfile) { 73 | throw new Error(`failed to find pnpm-lock.yaml in ${root}`); 74 | } 75 | const packageMap: PackageMap = {}; 76 | await Promise.all( 77 | Object.entries(lockfile.importers).map(([importer, projectSnapshot]) => 78 | walkLockfile( 79 | root, 80 | lockfileWalker(lockfile, [importer]).step, 81 | projectSnapshot.specifiers, 82 | packageMap 83 | ) 84 | ) 85 | ); 86 | return Object.values(packageMap); 87 | } 88 | 89 | function getDuplicates(packages: Package[]): Package[] { 90 | const candidateVersions = Array.from( 91 | new Set(packages.map((pkg) => pkg.version)) 92 | ); 93 | if (candidateVersions.length <= 1) { 94 | return []; 95 | } 96 | 97 | candidateVersions.sort((versionA: string, versionB: string) => { 98 | return semver.rcompare(versionA, versionB); 99 | }); 100 | 101 | for (const pkg of packages) { 102 | for (const candidateVersion of candidateVersions) { 103 | if (semver.satisfies(candidateVersion, pkg.specifier)) { 104 | pkg.bestVersion = candidateVersion; 105 | break; 106 | } 107 | } 108 | } 109 | 110 | return packages.filter( 111 | (pkg) => pkg.bestVersion && pkg.bestVersion !== pkg.version 112 | ); 113 | } 114 | 115 | async function findDuplicatePackages(root: string) { 116 | const packages = await getAllDependencies(root); 117 | const packageGroups: Record = {}; 118 | for (const pkg of packages) { 119 | if (!packageGroups[pkg.name]) { 120 | packageGroups[pkg.name] = []; 121 | } 122 | packageGroups[pkg.name].push(pkg); 123 | } 124 | const duplicatePackages: Package[] = []; 125 | for (const packagesWithSameName of Object.values(packageGroups)) { 126 | duplicatePackages.push(...getDuplicates(packagesWithSameName)); 127 | } 128 | return duplicatePackages; 129 | } 130 | 131 | function buildOverrides(packages: Package[]) { 132 | const overrides: { [packageName: string]: string } = {}; 133 | for (const pkg of packages) { 134 | if (pkg.bestVersion) { 135 | overrides[`${pkg.name}@${pkg.specifier}`] = pkg.bestVersion; 136 | } 137 | } 138 | return overrides; 139 | } 140 | 141 | async function writeOverride(root: string, duplicatePackages: Package[]) { 142 | const { fileName, manifest, writeProjectManifest } = 143 | await readProjectManifest(root); 144 | 145 | const manifestPath = path.resolve(root, fileName); 146 | const manifestText = await fs.readFile(manifestPath, { encoding: "utf-8" }); 147 | 148 | const overrides = buildOverrides(duplicatePackages); 149 | const newManifest: ProjectManifest = { 150 | ...manifest, 151 | pnpm: { 152 | ...manifest.pnpm, 153 | overrides: { 154 | ...manifest.pnpm?.overrides, 155 | ...overrides, 156 | }, 157 | }, 158 | }; 159 | 160 | await writeProjectManifest(newManifest); 161 | 162 | const restoreManifest = () => fs.writeFile(manifestPath, manifestText); 163 | return restoreManifest; 164 | } 165 | 166 | function runPnpmInstall(root: string) { 167 | // Use `--prefer-offline` and `--ignore-scripts` here to increase the install 168 | // speed. Use `--no-frozen-lockfile` to make sure the lockfile can be updated 169 | // even in the CI environment. 170 | execSync( 171 | "pnpm install --prefer-offline --ignore-scripts --no-frozen-lockfile", 172 | { stdio: "inherit", cwd: root } 173 | ); 174 | } 175 | 176 | function logDuplicatePackages(duplicatePackages: Package[]) { 177 | if (duplicatePackages.length === 0) { 178 | console.log("No duplicate packages found. You are good to go!"); 179 | return; 180 | } 181 | 182 | for (const { name, version, bestVersion, specifier } of duplicatePackages) { 183 | console.log( 184 | `Package "${name}" wants ${specifier} and could get ${bestVersion}, but got ${version}` 185 | ); 186 | } 187 | } 188 | 189 | export async function fixDuplicates(root: string) { 190 | // Run `pnpm install` to make sure dependencies are downloaded 191 | runPnpmInstall(root); 192 | // Find duplicate dependencies 193 | const duplicatePackages = await findDuplicatePackages(root); 194 | // Print duplicate dependencies to console 195 | logDuplicatePackages(duplicatePackages); 196 | 197 | if (duplicatePackages.length === 0) { 198 | return; 199 | } 200 | 201 | // Write `override` into the root package.json 202 | const restoreManifest = await writeOverride(root, duplicatePackages); 203 | // Run `pnpm install` and let pnpm remove unnecessary dependencies 204 | runPnpmInstall(root); 205 | // Restore the original package.json 206 | await restoreManifest(); 207 | // Run `pnpm install` to remove the `override` information in the lockfile 208 | runPnpmInstall(root); 209 | } 210 | 211 | export async function listDuplicates(root: string) { 212 | // Run `pnpm install` to make sure dependencies are downloaded 213 | runPnpmInstall(root); 214 | // Find duplicate dependencies 215 | const duplicatePackages = await findDuplicatePackages(root); 216 | // Print duplicate dependencies to console 217 | logDuplicatePackages(duplicatePackages); 218 | return duplicatePackages.length ? duplicatePackages : null; 219 | } 220 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "module": "ES2022", 5 | "moduleResolution": "node", 6 | "allowSyntheticDefaultImports": true, 7 | "esModuleInterop": true, 8 | "declaration": true, 9 | "emitDeclarationOnly": true, 10 | "outDir": "./dist", 11 | "strict": true, 12 | }, 13 | "include": ["./src/**/*"] 14 | } 15 | --------------------------------------------------------------------------------