diff --git a/.github/actions/install-deps-with-current-fc/action.yml b/.github/actions/install-deps-with-current-fc/action.yml index 1c7234c8..26090da7 100644 --- a/.github/actions/install-deps-with-current-fc/action.yml +++ b/.github/actions/install-deps-with-current-fc/action.yml @@ -11,10 +11,8 @@ runs: using: 'composite' steps: - run: | - echo "ℹ️ Install dependencies..." - yarn workspace "${{inputs.package}}" install --immutable echo "ℹ️ Install current build for fast-check..." - yarn workspace "${{inputs.package}}" add "fast-check@$(pwd)/fast-check.tgz" + yarn workspace "${{inputs.package}}" add "fast-check@$(pwd)/packages/fast-check/package.tgz" shell: bash - run: | echo "ℹ️ Copy script..." diff --git a/.github/workflows/build-status.yml b/.github/workflows/build-status.yml index 74c8b969..381b2dc6 100644 --- a/.github/workflows/build-status.yml +++ b/.github/workflows/build-status.yml @@ -202,8 +202,8 @@ jobs: path: packages/fast-check/docs/ if-no-files-found: error retention-days: 1 - production_package: - name: 'Build production package' + production_packages: + name: 'Build production packages' needs: warmup_yarn_cache runs-on: ubuntu-latest steps: @@ -214,48 +214,47 @@ jobs: node-version: '16.x' cache: 'yarn' - name: Install dependencies - run: yarn workspace fast-check install --immutable - - name: Build production package - run: yarn workspace fast-check build-ci - - name: Create bundle - run: yarn workspace fast-check pack --out %s.tgz - - name: Upload production package + run: yarn install --immutable + - name: Build production packages + run: yarn build-ci:all + - name: Create bundles + run: yarn pack:all + - name: Upload production packages uses: actions/upload-artifact@v3 with: - name: bundle - path: packages/fast-check/fast-check.tgz + name: bundles + path: packages/**/package.tgz if-no-files-found: error retention-days: 1 test_es_version: name: 'Test ES Version' needs: - warmup_yarn_cache - - production_package + - production_packages runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Download production package - uses: actions/download-artifact@v3 - with: - name: bundle - - name: Extract pre-bundled lib - run: | - tar -xvf fast-check.tgz package/lib - mv package/lib packages/fast-check/lib - name: Using Node v16.x uses: actions/setup-node@v3 with: node-version: '16.x' cache: 'yarn' - name: Install dependencies - run: yarn workspace fast-check install --immutable + run: yarn install --immutable + - name: Download production packages + uses: actions/download-artifact@v3 + with: + name: bundles + path: packages/ + - name: Unpack production packages + run: yarn unpack:all - name: Check ES Version run: yarn workspace fast-check test:es test_examples: name: 'Test examples/' needs: - warmup_yarn_cache - - production_package + - production_packages runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -264,10 +263,15 @@ jobs: with: node-version: '16.x' cache: 'yarn' - - name: Download production package + - name: Install dependencies + run: yarn install --immutable + - name: Download production packages uses: actions/download-artifact@v3 with: - name: bundle + name: bundles + path: packages/ + - name: Unpack production packages + run: yarn unpack:all - name: Install dependencies but use current build for fast-check uses: ./.github/actions/install-deps-with-current-fc with: @@ -281,7 +285,7 @@ jobs: name: 'Test types' needs: - warmup_yarn_cache - - production_package + - production_packages runs-on: ubuntu-latest strategy: matrix: @@ -302,10 +306,15 @@ jobs: with: node-version: '16.x' cache: 'yarn' - - name: Download production package + - name: Install dependencies + run: yarn install --immutable + - name: Download production packages uses: actions/download-artifact@v3 with: - name: bundle + name: bundles + path: packages/ + - name: Unpack production packages + run: yarn unpack:all - name: Install dependencies but use current build for fast-check uses: ./.github/actions/install-deps-with-current-fc with: @@ -334,7 +343,7 @@ jobs: name: 'Test legacy Node' needs: - warmup_yarn_cache - - production_package + - production_packages runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -343,10 +352,15 @@ jobs: with: node-version: '16.x' cache: 'yarn' - - name: Download production package + - name: Install dependencies + run: yarn install --immutable + - name: Download production packages uses: actions/download-artifact@v3 with: - name: bundle + name: bundles + path: packages/ + - name: Unpack production packages + run: yarn unpack:all - name: Install dependencies but use current build for fast-check uses: ./.github/actions/install-deps-with-current-fc with: @@ -371,7 +385,7 @@ jobs: name: 'Test CJS & ESM' needs: - warmup_yarn_cache - - production_package + - production_packages runs-on: ubuntu-latest strategy: matrix: @@ -396,18 +410,23 @@ jobs: - '13' steps: - uses: actions/checkout@v3 - - name: Using Node v16.x to fetch Yarn cache + - name: Using Node v16.x uses: actions/setup-node@v3 with: node-version: '16.x' cache: 'yarn' + - name: Install dependencies + run: yarn install --immutable + - name: Download production packages + uses: actions/download-artifact@v3 + with: + name: bundles + path: packages/ + - name: Unpack production packages + run: yarn unpack:all - name: Using Node v${{matrix.node-version}} shell: bash -l {0} run: nvm install ${{matrix.node-version}} - - name: Download production package - uses: actions/download-artifact@v3 - with: - name: bundle - name: Install dependencies but use current build for fast-check (node-extension-cjs) uses: ./.github/actions/install-deps-with-current-fc with: @@ -484,7 +503,7 @@ jobs: publish_package: name: 'Publish package' needs: - - production_package + - production_packages - documentation - format_lint - dedupe_required @@ -506,10 +525,11 @@ jobs: with: node-version: '16.x' registry-url: 'https://registry.npmjs.org' - - name: Download production package + - name: Download production packages uses: actions/download-artifact@v3 with: - name: bundle + name: bundles + path: packages/ - name: Publish package run: npm publish fast-check.tgz env: diff --git a/.yarn/versions/cfdaa0c2.yml b/.yarn/versions/cfdaa0c2.yml new file mode 100644 index 00000000..2f0c9016 --- /dev/null +++ b/.yarn/versions/cfdaa0c2.yml @@ -0,0 +1,5 @@ +releases: + "@fast-check/packaged": patch + +declined: + - "@fast-check/monorepo" diff --git a/package.json b/package.json index 05517725..b12d5f8b 100644 --- a/package.json +++ b/package.json @@ -12,13 +12,16 @@ "scripts": { "contributor:add": "all-contributors add", "build:all": "yarn workspaces foreach -ptvi run build", + "build-ci:all": "yarn workspaces foreach -ptvi run build-ci", "test:all": "yarn workspaces foreach -pvi run test && yarn workspaces foreach -pvi run e2e", "typecheck:all": "yarn workspaces foreach -pvi run typecheck", "format": "prettier --write .", "format:check": "prettier --list-different .", "lint": "eslint . --fix", "lint:check": "eslint .", - "version:bump": "yarn version check --interactive && yarn workspace @fast-check/monorepo version decline" + "version:bump": "yarn version check --interactive && yarn workspace @fast-check/monorepo version decline", + "pack:all": "yarn workspaces foreach -pvi --no-private pack --out package.tgz", + "unpack:all": "yarn workspaces foreach -pvi --no-private exec tar -xvf package.tgz --strip-components=1 --exclude='package/package.json'" }, "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.0.0", diff --git a/packages/packaged/LICENSE b/packages/packaged/LICENSE new file mode 100644 index 00000000..87958246 --- /dev/null +++ b/packages/packaged/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Nicolas DUBIEN + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/packaged/README.md b/packages/packaged/README.md new file mode 100644 index 00000000..6a451c6f --- /dev/null +++ b/packages/packaged/README.md @@ -0,0 +1,52 @@ +# `@fast-check/packaged` + +Utility package removing any files that will not be part of the final bundle published to npm registry + +npm version +monthly downloads +License + +--- + +## Why? + +When publishing packages to npm registry, it is quite easy to forget about some files. It also happens many times that we want somehow to check the packaged bundle in some of our tests but totally forget that some files have not been added to the bundle and so that the final user will actually never be able to run this code. + +This package mostly try to prevent this issue. It can easily be used in monorepos to emulate the bundled package when used against other packages of the monorepo to make sure others do not depend on internals or non published stuff. + +## Easy to use + +Run the following command at the root of your package to drop any file that will not make it in the final bundle published to npm. + +```bash +# With npm +npx -p @fast-check/packaged packaged +# With yarn +yarn dlx -p @fast-check/packaged packaged +``` + +⚠️ You may want to try with `--dry-run` flag first to give it a try. + +It also comes with some extra flags: + +- `--dry-run`: do not drop any file or directory from the file system and only print what would have been removed +- `--keep-node-modules`: keep the `node_modules` directory if any at the root of the directory + +## Simple API + +```js +import { computePublishedFiles, removeNonPublishedFiles } from '@fast-check/packaged'; + +// Compute the list of all files that would be part of the bundle +// if we attempted to publish the packge defined at . +const publishedFilesRoot = await computePublishedFiles('.'); + +// Compute the list of all files that would be part of the bundle +// if we attempted to publish the packge defined at ./sub-directory +const publishedFilesSubDirectory = await computePublishedFiles('./sub-directory'); + +// Run the deletion of unwanted files +const { kept, removed } = await removeNonPublishedFiles('.', { dryRun: false, keepNodeModules: false }); +// kept and removed are arrays of strings +// they may contain files or directories +``` diff --git a/packages/packaged/bin/packaged.js b/packages/packaged/bin/packaged.js new file mode 100644 index 00000000..411414d1 --- /dev/null +++ b/packages/packaged/bin/packaged.js @@ -0,0 +1,31 @@ +/* global process, console, require */ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { removeNonPublishedFiles } = require('../lib/packaged.js'); + +const args = process.argv.slice(2); +const help = args.includes('--help') || args.includes('-h'); +if (help) { + console.log('Usages:'); + console.log('- packaged'); + console.log(' Drop any file in the current directory that will not be part of the package'); + console.log(' if published to npm registry'); + console.log('- packaged --dry-run'); + console.log(' No removal, just printing'); + console.log('- packaged --keep-node-modules'); + console.log(' Keep root level node_modules if any'); + return; +} +const dryRun = args.includes('--dry-run'); +const keepNodeModules = args.includes('--keep-node-modules'); +removeNonPublishedFiles('.', { dryRun, keepNodeModules }).then((out) => { + if (dryRun) { + console.log('Those files would have been kept:'); + for (const k of out.kept) { + console.log(`- ${k}`); + } + console.log('Those files would have been removed:'); + for (const r of out.removed) { + console.log(`- ${r}`); + } + } +}); diff --git a/packages/packaged/package.json b/packages/packaged/package.json new file mode 100644 index 00000000..5658b45e --- /dev/null +++ b/packages/packaged/package.json @@ -0,0 +1,47 @@ +{ + "name": "@fast-check/packaged", + "description": "Utility package removing any files that will not be part of the final bundle", + "version": "0.0.0", + "type": "commonjs", + "main": "lib/packaged.js", + "types": "lib/packaged.d.ts", + "bin": "./bin/packaged.js", + "files": [ + "bin", + "lib" + ], + "sideEffects": false, + "scripts": { + "build": "tsc --incremental", + "build-ci": "tsc", + "typecheck": "tsc --noEmit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/dubzzz/fast-check.git", + "directory": "packages/packaged" + }, + "author": "Nicolas DUBIEN ", + "license": "MIT", + "bugs": { + "url": "https://github.com/dubzzz/fast-check/issues" + }, + "homepage": "https://github.com/dubzzz/fast-check/packages/packaged", + "engines": { + "node": ">=10.0.0" + }, + "dependencies": { + "pacote": "^13.6.0", + "tar": "^6.1.11" + }, + "devDependencies": { + "@types/pacote": "^11.1.4", + "@types/tar": "^6.1.1", + "typescript": "^4.3.2" + }, + "keywords": [], + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } +} diff --git a/packages/packaged/src/packaged.ts b/packages/packaged/src/packaged.ts new file mode 100644 index 00000000..fa16a748 --- /dev/null +++ b/packages/packaged/src/packaged.ts @@ -0,0 +1,76 @@ +import * as fs from 'fs/promises'; +import { tarball } from 'pacote'; +import * as path from 'path'; +import { list } from 'tar'; + +/** + * Compute the list of all files that will be part of the package if published + * @param packageRoot - The path to the root of the package, eg.: . + */ +export async function computePublishedFiles(packageRoot: string): Promise { + const publishedFiles: string[] = []; + const tarBuffer = await tarball(`file:${packageRoot}`, { dryRun: true }); + const stream = list({ + onentry: (entry) => { + const entryPath: string = entry.path as any; + publishedFiles.push(entryPath.substring(8)); // dropping 'package/' + }, + }); + stream.end(tarBuffer); + return publishedFiles; +} + +/** + * Remove from the filesystem any file that will not be published + * @param packageRoot - The path to the root of the package, eg.: . + */ +export async function removeNonPublishedFiles( + packageRoot: string, + opts: { dryRun?: boolean; keepNodeModules?: boolean } = {} +): Promise<{ kept: string[]; removed: string[] }> { + const kept: string[] = []; + const removed: string[] = []; + const publishedFiles = await computePublishedFiles(packageRoot); + const normalizedPublishedFiles = new Set(publishedFiles.map((filename) => path.normalize(filename))); + + const rootNodeModulesPath = path.join(packageRoot, 'node_modules'); + + async function traverse(currentPath: string): Promise { + const content = await fs.readdir(currentPath); + let numRemoved = 0; + await Promise.all( + content.map(async (itemName) => { + const itemPath = path.join(currentPath, itemName); + const normalizedItemPath = path.normalize(itemPath); + const itemDetails = await fs.stat(itemPath); + if (opts.keepNodeModules && itemPath === rootNodeModulesPath) { + kept.push(normalizedItemPath); + } else if (itemDetails.isDirectory()) { + const fullyCleaned = await traverse(itemPath); + if (!fullyCleaned) { + kept.push(normalizedItemPath); + } else { + ++numRemoved; + removed.push(normalizedItemPath); + if (!opts.dryRun) { + await fs.rmdir(itemPath); + } + } + } else if (itemDetails.isFile()) { + if (normalizedPublishedFiles.has(normalizedItemPath)) { + kept.push(normalizedItemPath); + } else { + ++numRemoved; + removed.push(normalizedItemPath); + if (!opts.dryRun) { + await fs.rm(itemPath); + } + } + } + }) + ); + return content.length === numRemoved; + } + await traverse(packageRoot); + return { kept, removed }; +} diff --git a/packages/packaged/tsconfig.json b/packages/packaged/tsconfig.json new file mode 100644 index 00000000..16501f0e --- /dev/null +++ b/packages/packaged/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "noEmit": false, + "outDir": "lib/", + "target": "es2017", + "module": "commonjs", + "declaration": true, + "importHelpers": false, + "incremental": false, + "noFallthroughCasesInSwitch": true, + "noUnusedLocals": true, + "preserveConstEnums": true, + "skipLibCheck": true, + "sourceMap": false, + "strict": true + }, + "include": ["src/**/*"] +} diff --git a/yarn.lock b/yarn.lock index 263d3ca2..d43cc695 100644 --- a/yarn.lock +++ b/yarn.lock @@ -820,6 +820,20 @@ __metadata: languageName: unknown linkType: soft +"@fast-check/packaged@workspace:packages/packaged": + version: 0.0.0-use.local + resolution: "@fast-check/packaged@workspace:packages/packaged" + dependencies: + "@types/pacote": ^11.1.4 + "@types/tar": ^6.1.1 + pacote: ^13.6.0 + tar: ^6.1.11 + typescript: ^4.3.2 + bin: + packaged: ./bin/packaged.js + languageName: unknown + linkType: soft + "@fast-check/test-bundle-esbuild-with-import@workspace:packages/test-bundle-esbuild-with-import": version: 0.0.0-use.local resolution: "@fast-check/test-bundle-esbuild-with-import@workspace:packages/test-bundle-esbuild-with-import" @@ -931,7 +945,7 @@ __metadata: languageName: unknown linkType: soft -"@gar/promisify@npm:^1.1.3": +"@gar/promisify@npm:^1.0.1, @gar/promisify@npm:^1.1.3": version: 1.1.3 resolution: "@gar/promisify@npm:1.1.3" checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 @@ -2050,6 +2064,16 @@ __metadata: languageName: node linkType: hard +"@npmcli/fs@npm:^1.0.0": + version: 1.1.1 + resolution: "@npmcli/fs@npm:1.1.1" + dependencies: + "@gar/promisify": ^1.0.1 + semver: ^7.3.5 + checksum: f5ad92f157ed222e4e31c352333d0901df02c7c04311e42a81d8eb555d4ec4276ea9c635011757de20cc476755af33e91622838de573b17e52e2e7703f0a9965 + languageName: node + linkType: hard + "@npmcli/fs@npm:^2.1.0": version: 2.1.0 resolution: "@npmcli/fs@npm:2.1.0" @@ -2060,6 +2084,45 @@ __metadata: languageName: node linkType: hard +"@npmcli/git@npm:^3.0.0": + version: 3.0.1 + resolution: "@npmcli/git@npm:3.0.1" + dependencies: + "@npmcli/promise-spawn": ^3.0.0 + lru-cache: ^7.4.4 + mkdirp: ^1.0.4 + npm-pick-manifest: ^7.0.0 + proc-log: ^2.0.0 + promise-inflight: ^1.0.1 + promise-retry: ^2.0.1 + semver: ^7.3.5 + which: ^2.0.2 + checksum: 0e289d11e2d6034652993f2d05f68396d8377603a1c1f983b2d0893e7591a22bcf3896a43c7dfbcc43f03c308a110f0b9ec37e0191e48b0bd1d236e0f57a3ec6 + languageName: node + linkType: hard + +"@npmcli/installed-package-contents@npm:^1.0.7": + version: 1.0.7 + resolution: "@npmcli/installed-package-contents@npm:1.0.7" + dependencies: + npm-bundled: ^1.1.1 + npm-normalize-package-bin: ^1.0.1 + bin: + installed-package-contents: index.js + checksum: a4a29b99d439827ce2e7817c1f61b56be160e640696e31dc513a2c8a37c792f75cdb6258ec15a1e22904f20df0a8a3019dd3766de5e6619f259834cf64233538 + languageName: node + linkType: hard + +"@npmcli/move-file@npm:^1.0.1": + version: 1.1.2 + resolution: "@npmcli/move-file@npm:1.1.2" + dependencies: + mkdirp: ^1.0.4 + rimraf: ^3.0.2 + checksum: c96381d4a37448ea280951e46233f7e541058cf57a57d4094dd4bdcaae43fa5872b5f2eb6bfb004591a68e29c5877abe3cdc210cb3588cbf20ab2877f31a7de7 + languageName: node + linkType: hard + "@npmcli/move-file@npm:^2.0.0": version: 2.0.0 resolution: "@npmcli/move-file@npm:2.0.0" @@ -2070,6 +2133,34 @@ __metadata: languageName: node linkType: hard +"@npmcli/node-gyp@npm:^2.0.0": + version: 2.0.0 + resolution: "@npmcli/node-gyp@npm:2.0.0" + checksum: b6bbf0015000f9b64d31aefdc30f244b0348c57adb64017667e0304e96c38644d83da46a4581252652f5d606268df49118f9c9993b41d8020f62b7b15dd2c8d8 + languageName: node + linkType: hard + +"@npmcli/promise-spawn@npm:^3.0.0": + version: 3.0.0 + resolution: "@npmcli/promise-spawn@npm:3.0.0" + dependencies: + infer-owner: ^1.0.4 + checksum: 3454465a2731cea5875ba51f80873e2205e5bd878c31517286b0ede4ea931c7bf3de895382287e906d03710fff6f9e44186bd0eee068ce578901c5d3b58e7692 + languageName: node + linkType: hard + +"@npmcli/run-script@npm:^3.0.1": + version: 3.0.3 + resolution: "@npmcli/run-script@npm:3.0.3" + dependencies: + "@npmcli/node-gyp": ^2.0.0 + "@npmcli/promise-spawn": ^3.0.0 + node-gyp: ^8.4.1 + read-package-json-fast: ^2.0.3 + checksum: 3d0540a95620420d6e77c796a9e9d4fdf2600b5cf5b8d1ceabda15b1dd1d88cc5abf11e28b0494f03eee79c075a1549127bcfa550eb758b08f3948557d77b27a + languageName: node + linkType: hard + "@octokit/auth-token@npm:^2.4.4": version: 2.5.0 resolution: "@octokit/auth-token@npm:2.5.0" @@ -2462,6 +2553,13 @@ __metadata: languageName: node linkType: hard +"@tootallnate/once@npm:1": + version: 1.1.2 + resolution: "@tootallnate/once@npm:1.1.2" + checksum: e1fb1bbbc12089a0cb9433dc290f97bddd062deadb6178ce9bcb93bb7c1aecde5e60184bc7065aec42fe1663622a213493c48bbd4972d931aae48315f18e1be9 + languageName: node + linkType: hard + "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" @@ -2828,6 +2926,24 @@ __metadata: languageName: node linkType: hard +"@types/minipass@npm:*": + version: 3.1.2 + resolution: "@types/minipass@npm:3.1.2" + dependencies: + "@types/node": "*" + checksum: 0d01e11b5b959625385a482ad29ea16352be42506b459555b0f77fd82235e9c540946cc9c05a73fed1ae30b132914baaa4ccf257ed2cad20bc9773f0a06f4bac + languageName: node + linkType: hard + +"@types/node-fetch@npm:*": + version: 3.0.2 + resolution: "@types/node-fetch@npm:3.0.2" + dependencies: + node-fetch: "*" + checksum: b9f97bc4219c37f70299133b36389719cf4adacad46cea80df70f77d4a9f6999ea5be18a1ab90b34239b684cae032adeec10756cce8d2ae81c17f5e4c56fd4e9 + languageName: node + linkType: hard + "@types/node-fetch@npm:^2.1.6": version: 2.6.1 resolution: "@types/node-fetch@npm:2.6.1" @@ -2873,6 +2989,45 @@ __metadata: languageName: node linkType: hard +"@types/npm-package-arg@npm:*": + version: 6.1.1 + resolution: "@types/npm-package-arg@npm:6.1.1" + checksum: b7027893d3dee6c265d5904c441648db741788e35541a628886326d8f6049d3e31b121b881c245cde81806b76ca5356449a9d12d738bc77d056dba6b3e5af724 + languageName: node + linkType: hard + +"@types/npm-registry-fetch@npm:*": + version: 8.0.4 + resolution: "@types/npm-registry-fetch@npm:8.0.4" + dependencies: + "@types/node": "*" + "@types/node-fetch": "*" + "@types/npm-package-arg": "*" + "@types/npmlog": "*" + "@types/ssri": "*" + checksum: 590e66bdf383959c8bf0b11f8565115d8299efc328c5f976eab3de51881008f87f688877a65d89376c6e52b1c9402ed6868b814198bc98f4f04db70aba2d4408 + languageName: node + linkType: hard + +"@types/npmlog@npm:*": + version: 4.1.4 + resolution: "@types/npmlog@npm:4.1.4" + checksum: 740f7431ccfc0e127aa8d162fe05c6ce8aa71290be020d179b2824806d19bd2c706c7e0c9a3c9963cefcdf2ceacb1dec6988c394c3694451387759dafe0aa927 + languageName: node + linkType: hard + +"@types/pacote@npm:^11.1.4": + version: 11.1.4 + resolution: "@types/pacote@npm:11.1.4" + dependencies: + "@types/node": "*" + "@types/npm-registry-fetch": "*" + "@types/npmlog": "*" + "@types/ssri": "*" + checksum: a898498dbb752c5b2b38b909f8771de56b8fc9246d5e14702eba40b9833ea3432adfa5cd2ed4c8d96bf2cc49435e00cbfdc2141b6b367d2b4c616ec8bfe5e95f + languageName: node + linkType: hard + "@types/parse5@npm:*": version: 6.0.3 resolution: "@types/parse5@npm:6.0.3" @@ -2981,6 +3136,15 @@ __metadata: languageName: node linkType: hard +"@types/ssri@npm:*": + version: 7.1.1 + resolution: "@types/ssri@npm:7.1.1" + dependencies: + "@types/node": "*" + checksum: 0327eb212a8d52e09f0fe4df5e0f580db9daaf2e03fc9dbbc5c1356c92fd870084588e5b0b9b58546e1a5cae9a825097a74100c463b241f38dafb49043569de3 + languageName: node + linkType: hard + "@types/stack-utils@npm:^2.0.0": version: 2.0.1 resolution: "@types/stack-utils@npm:2.0.1" @@ -3023,6 +3187,16 @@ __metadata: languageName: node linkType: hard +"@types/tar@npm:^6.1.1": + version: 6.1.1 + resolution: "@types/tar@npm:6.1.1" + dependencies: + "@types/minipass": "*" + "@types/node": "*" + checksum: 06cfffc606525fab223f7e7cae74b88347a6c21de39454a9b85a56c61b4cab034e9cefacd6a053c7ac2a07e29bed71ce72bc4ca8bc101f61e2e5248950508b7d + languageName: node + linkType: hard + "@types/testing-library__jest-dom@npm:^5.9.1": version: 5.14.3 resolution: "@types/testing-library__jest-dom@npm:5.14.3" @@ -3530,7 +3704,7 @@ __metadata: languageName: node linkType: hard -"agentkeepalive@npm:^4.2.1": +"agentkeepalive@npm:^4.1.3, agentkeepalive@npm:^4.2.1": version: 4.2.1 resolution: "agentkeepalive@npm:4.2.1" dependencies: @@ -4451,7 +4625,33 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^16.1.0": +"cacache@npm:^15.2.0": + version: 15.3.0 + resolution: "cacache@npm:15.3.0" + dependencies: + "@npmcli/fs": ^1.0.0 + "@npmcli/move-file": ^1.0.1 + chownr: ^2.0.0 + fs-minipass: ^2.0.0 + glob: ^7.1.4 + infer-owner: ^1.0.4 + lru-cache: ^6.0.0 + minipass: ^3.1.1 + minipass-collect: ^1.0.2 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.2 + mkdirp: ^1.0.3 + p-map: ^4.0.0 + promise-inflight: ^1.0.1 + rimraf: ^3.0.2 + ssri: ^8.0.1 + tar: ^6.0.2 + unique-filename: ^1.1.1 + checksum: a07327c27a4152c04eb0a831c63c00390d90f94d51bb80624a66f4e14a6b6360bbf02a84421267bd4d00ca73ac9773287d8d7169e8d2eafe378d2ce140579db8 + languageName: node + linkType: hard + +"cacache@npm:^16.0.0, cacache@npm:^16.1.0": version: 16.1.1 resolution: "cacache@npm:16.1.1" dependencies: @@ -6113,7 +6313,7 @@ __metadata: languageName: node linkType: hard -"encoding@npm:^0.1.13": +"encoding@npm:^0.1.12, encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" dependencies: @@ -8109,6 +8309,15 @@ __metadata: languageName: node linkType: hard +"hosted-git-info@npm:^5.0.0": + version: 5.0.0 + resolution: "hosted-git-info@npm:5.0.0" + dependencies: + lru-cache: ^7.5.1 + checksum: 515e69463d123635f70d70656c5ec648951ffc1987f92a87cb4a038e1794bfed833cf87569b358b137ebbc75d992c073ed0408d420c9e5b717c2b4f0a291490c + languageName: node + linkType: hard + "html-encoding-sniffer@npm:^3.0.0": version: 3.0.0 resolution: "html-encoding-sniffer@npm:3.0.0" @@ -8165,6 +8374,17 @@ __metadata: languageName: node linkType: hard +"http-proxy-agent@npm:^4.0.1": + version: 4.0.1 + resolution: "http-proxy-agent@npm:4.0.1" + dependencies: + "@tootallnate/once": 1 + agent-base: 6 + debug: 4 + checksum: c6a5da5a1929416b6bbdf77b1aca13888013fe7eb9d59fc292e25d18e041bb154a8dfada58e223fc7b76b9b2d155a87e92e608235201f77d34aa258707963a82 + languageName: node + linkType: hard + "http-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" @@ -8272,6 +8492,15 @@ __metadata: languageName: node linkType: hard +"ignore-walk@npm:^5.0.1": + version: 5.0.1 + resolution: "ignore-walk@npm:5.0.1" + dependencies: + minimatch: ^5.0.1 + checksum: 1a4ef35174653a1aa6faab3d9f8781269166536aee36a04946f6e2b319b2475c1903a75ed42f04219274128242f49d0a10e20c4354ee60d9548e97031451150b + languageName: node + linkType: hard + "ignore@npm:^4.0.3": version: 4.0.6 resolution: "ignore@npm:4.0.6" @@ -9773,6 +10002,13 @@ __metadata: languageName: node linkType: hard +"jsonparse@npm:^1.3.1": + version: 1.3.1 + resolution: "jsonparse@npm:1.3.1" + checksum: 6514a7be4674ebf407afca0eda3ba284b69b07f9958a8d3113ef1005f7ec610860c312be067e450c569aab8b89635e332cee3696789c750692bb60daba627f4d + languageName: node + linkType: hard + "jsonwebtoken@npm:^8.5.1": version: 8.5.1 resolution: "jsonwebtoken@npm:8.5.1" @@ -10347,7 +10583,7 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^7.7.1": +"lru-cache@npm:^7.4.4, lru-cache@npm:^7.5.1, lru-cache@npm:^7.7.1": version: 7.10.1 resolution: "lru-cache@npm:7.10.1" checksum: e8b190d71ed0fcd7b29c71a3e9b01f851c92d1ef8865ff06b5581ca991db1e5e006920ed4da8b56da1910664ed51abfd76c46fb55e82ac252ff6c970ff910d72 @@ -10428,7 +10664,7 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^10.0.3": +"make-fetch-happen@npm:^10.0.3, make-fetch-happen@npm:^10.0.6": version: 10.1.7 resolution: "make-fetch-happen@npm:10.1.7" dependencies: @@ -10452,6 +10688,30 @@ __metadata: languageName: node linkType: hard +"make-fetch-happen@npm:^9.1.0": + version: 9.1.0 + resolution: "make-fetch-happen@npm:9.1.0" + dependencies: + agentkeepalive: ^4.1.3 + cacache: ^15.2.0 + http-cache-semantics: ^4.1.0 + http-proxy-agent: ^4.0.1 + https-proxy-agent: ^5.0.0 + is-lambda: ^1.0.1 + lru-cache: ^6.0.0 + minipass: ^3.1.3 + minipass-collect: ^1.0.2 + minipass-fetch: ^1.3.2 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + negotiator: ^0.6.2 + promise-retry: ^2.0.1 + socks-proxy-agent: ^6.0.0 + ssri: ^8.0.0 + checksum: 0eb371c85fdd0b1584fcfdf3dc3c62395761b3c14658be02620c310305a9a7ecf1617a5e6fb30c1d081c5c8aaf177fa133ee225024313afabb7aa6a10f1e3d04 + languageName: node + linkType: hard + "makeerror@npm:1.0.12": version: 1.0.12 resolution: "makeerror@npm:1.0.12" @@ -10736,6 +10996,21 @@ __metadata: languageName: node linkType: hard +"minipass-fetch@npm:^1.3.2": + version: 1.4.1 + resolution: "minipass-fetch@npm:1.4.1" + dependencies: + encoding: ^0.1.12 + minipass: ^3.1.0 + minipass-sized: ^1.0.3 + minizlib: ^2.0.0 + dependenciesMeta: + encoding: + optional: true + checksum: ec93697bdb62129c4e6c0104138e681e30efef8c15d9429dd172f776f83898471bc76521b539ff913248cc2aa6d2b37b652c993504a51cc53282563640f29216 + languageName: node + linkType: hard + "minipass-fetch@npm:^2.0.3": version: 2.1.0 resolution: "minipass-fetch@npm:2.1.0" @@ -10760,7 +11035,17 @@ __metadata: languageName: node linkType: hard -"minipass-pipeline@npm:^1.2.4": +"minipass-json-stream@npm:^1.0.1": + version: 1.0.1 + resolution: "minipass-json-stream@npm:1.0.1" + dependencies: + jsonparse: ^1.3.1 + minipass: ^3.0.0 + checksum: 791b696a27d1074c4c08dab1bf5a9f3201145c2933e428f45d880467bce12c60de4703203d2928de4b162d0ae77b0bb4b55f96cb846645800aa0eb4919b3e796 + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.2, minipass-pipeline@npm:^1.2.4": version: 1.2.4 resolution: "minipass-pipeline@npm:1.2.4" dependencies: @@ -10788,12 +11073,12 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": - version: 3.1.6 - resolution: "minipass@npm:3.1.6" +"minipass@npm:^3.0.0, minipass@npm:^3.1.0, minipass@npm:^3.1.1, minipass@npm:^3.1.3, minipass@npm:^3.1.6": + version: 3.2.1 + resolution: "minipass@npm:3.2.1" dependencies: yallist: ^4.0.0 - checksum: 57a04041413a3531a65062452cb5175f93383ef245d6f4a2961d34386eb9aa8ac11ac7f16f791f5e8bbaf1dfb1ef01596870c88e8822215db57aa591a5bb0a77 + checksum: 3a33b74784dda2299d7d16b847247848e8d2f99f026ba4df22321ea09fcf6bacea7fff027046375e9aff60941bc4ddf3e7ca993a50e2f2f8d90cb32bbfa952e0 languageName: node linkType: hard @@ -10806,7 +11091,7 @@ __metadata: languageName: node linkType: hard -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": +"minizlib@npm:^2.0.0, minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": version: 2.1.2 resolution: "minizlib@npm:2.1.2" dependencies: @@ -10971,7 +11256,7 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": +"negotiator@npm:0.6.3, negotiator@npm:^0.6.2, negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 @@ -11187,6 +11472,17 @@ __metadata: languageName: node linkType: hard +"node-fetch@npm:*, node-fetch@npm:^3.0.0, node-fetch@npm:^3.1.1": + version: 3.2.6 + resolution: "node-fetch@npm:3.2.6" + dependencies: + data-uri-to-buffer: ^4.0.0 + fetch-blob: ^3.1.4 + formdata-polyfill: ^4.0.10 + checksum: ece307ace3a3ff28638ccb0fa0545bb5c0cfd673a9d06fc314d937a73ae6a55917d5bacd7f080f9a9f1449ca20a5c01b1281d0e616acb20315e5ac315971da46 + languageName: node + linkType: hard + "node-fetch@npm:^2.3.0, node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.7": version: 2.6.7 resolution: "node-fetch@npm:2.6.7" @@ -11201,17 +11497,6 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^3.0.0, node-fetch@npm:^3.1.1": - version: 3.2.5 - resolution: "node-fetch@npm:3.2.5" - dependencies: - data-uri-to-buffer: ^4.0.0 - fetch-blob: ^3.1.4 - formdata-polyfill: ^4.0.10 - checksum: 11fd4118fa3f9f15b4e3d7d37dce80d051340cf641fdb843f8dec0ee021d52a5b5101e1fff73c13ede986844bb40c5832a3b17ba7c894a1db44fde95ebfe8589 - languageName: node - linkType: hard - "node-gyp-build@npm:^4.2.2": version: 4.4.0 resolution: "node-gyp-build@npm:4.4.0" @@ -11223,6 +11508,26 @@ __metadata: languageName: node linkType: hard +"node-gyp@npm:^8.4.1": + version: 8.4.1 + resolution: "node-gyp@npm:8.4.1" + dependencies: + env-paths: ^2.2.0 + glob: ^7.1.4 + graceful-fs: ^4.2.6 + make-fetch-happen: ^9.1.0 + nopt: ^5.0.0 + npmlog: ^6.0.0 + rimraf: ^3.0.2 + semver: ^7.3.5 + tar: ^6.1.2 + which: ^2.0.2 + bin: + node-gyp: bin/node-gyp.js + checksum: 341710b5da39d3660e6a886b37e210d33f8282047405c2e62c277bcc744c7552c5b8b972ebc3a7d5c2813794e60cc48c3ebd142c46d6e0321db4db6c92dd0355 + languageName: node + linkType: hard + "node-gyp@npm:latest": version: 9.0.0 resolution: "node-gyp@npm:9.0.0" @@ -11382,6 +11687,18 @@ __metadata: languageName: node linkType: hard +"normalize-package-data@npm:^4.0.0": + version: 4.0.0 + resolution: "normalize-package-data@npm:4.0.0" + dependencies: + hosted-git-info: ^5.0.0 + is-core-module: ^2.8.1 + semver: ^7.3.5 + validate-npm-package-license: ^3.0.4 + checksum: b0f47de4295a0f8499bd478e84b9f9592a29f65227c2b4446ae80f7dff6e7a5ec6ef25ea8f06f3dcb9b7b7d945c2daa274385925b3d85e77e34eaffa0b42e316 + languageName: node + linkType: hard + "normalize-path@npm:^2.1.1": version: 2.1.1 resolution: "normalize-path@npm:2.1.1" @@ -11423,7 +11740,7 @@ __metadata: languageName: node linkType: hard -"npm-bundled@npm:^1.0.1": +"npm-bundled@npm:^1.0.1, npm-bundled@npm:^1.1.1, npm-bundled@npm:^1.1.2": version: 1.1.2 resolution: "npm-bundled@npm:1.1.2" dependencies: @@ -11432,6 +11749,15 @@ __metadata: languageName: node linkType: hard +"npm-install-checks@npm:^5.0.0": + version: 5.0.0 + resolution: "npm-install-checks@npm:5.0.0" + dependencies: + semver: ^7.1.1 + checksum: 0e7d1aae52b1fe9d3a0fd4a008850c7047931722dd49ee908afd13fd0297ac5ddb10964d9c59afcdaaa2ca04b51d75af2788f668c729ae71fec0e4cdac590ffc + languageName: node + linkType: hard + "npm-normalize-package-bin@npm:^1.0.1": version: 1.0.1 resolution: "npm-normalize-package-bin@npm:1.0.1" @@ -11439,6 +11765,17 @@ __metadata: languageName: node linkType: hard +"npm-package-arg@npm:^9.0.0, npm-package-arg@npm:^9.0.1": + version: 9.0.2 + resolution: "npm-package-arg@npm:9.0.2" + dependencies: + hosted-git-info: ^5.0.0 + semver: ^7.3.5 + validate-npm-package-name: ^4.0.0 + checksum: 07828f330f611214a0aa1e87f402b30b3dc90388671470ad8dc1551f28b0cb886f1f75fa7c37e894a9598640a555c05643642994ecacb9a6c68f655e571968f7 + languageName: node + linkType: hard + "npm-packlist@npm:^1.1.6": version: 1.4.8 resolution: "npm-packlist@npm:1.4.8" @@ -11450,6 +11787,47 @@ __metadata: languageName: node linkType: hard +"npm-packlist@npm:^5.1.0": + version: 5.1.0 + resolution: "npm-packlist@npm:5.1.0" + dependencies: + glob: ^8.0.1 + ignore-walk: ^5.0.1 + npm-bundled: ^1.1.2 + npm-normalize-package-bin: ^1.0.1 + bin: + npm-packlist: bin/index.js + checksum: aeeed530858bd760236e49f42f36174a437e632406d71ee8af91f15ad42e3a49332365c3dfa3dc0686599506e3a3701d8c7eab157480993ad8634dbc5af27adc + languageName: node + linkType: hard + +"npm-pick-manifest@npm:^7.0.0": + version: 7.0.1 + resolution: "npm-pick-manifest@npm:7.0.1" + dependencies: + npm-install-checks: ^5.0.0 + npm-normalize-package-bin: ^1.0.1 + npm-package-arg: ^9.0.0 + semver: ^7.3.5 + checksum: 9a4a8e64d2214783b2b74a361845000f5d91bb40c7858e2a30af2ac7876d9296efc37f8cacf60335e96a45effee2035b033d9bdefb4889757cc60d85959accbb + languageName: node + linkType: hard + +"npm-registry-fetch@npm:^13.0.1": + version: 13.1.1 + resolution: "npm-registry-fetch@npm:13.1.1" + dependencies: + make-fetch-happen: ^10.0.6 + minipass: ^3.1.6 + minipass-fetch: ^2.0.3 + minipass-json-stream: ^1.0.1 + minizlib: ^2.1.2 + npm-package-arg: ^9.0.1 + proc-log: ^2.0.0 + checksum: e085faf5cdc1cfe9b8f825065a0823531b2a28799d84614b3971e344dde087f9089c0f0220360771a81f110c5444978c6f7309084ff7d7d396252b068148bb44 + languageName: node + linkType: hard + "npm-run-path@npm:^4.0.1": version: 4.0.1 resolution: "npm-run-path@npm:4.0.1" @@ -12018,6 +12396,37 @@ __metadata: languageName: node linkType: hard +"pacote@npm:^13.6.0": + version: 13.6.0 + resolution: "pacote@npm:13.6.0" + dependencies: + "@npmcli/git": ^3.0.0 + "@npmcli/installed-package-contents": ^1.0.7 + "@npmcli/promise-spawn": ^3.0.0 + "@npmcli/run-script": ^3.0.1 + cacache: ^16.0.0 + chownr: ^2.0.0 + fs-minipass: ^2.1.0 + infer-owner: ^1.0.4 + minipass: ^3.1.6 + mkdirp: ^1.0.4 + npm-package-arg: ^9.0.0 + npm-packlist: ^5.1.0 + npm-pick-manifest: ^7.0.0 + npm-registry-fetch: ^13.0.1 + proc-log: ^2.0.0 + promise-retry: ^2.0.1 + read-package-json: ^5.0.0 + read-package-json-fast: ^2.0.3 + rimraf: ^3.0.2 + ssri: ^9.0.0 + tar: ^6.1.11 + bin: + pacote: lib/bin.js + checksum: 9e68300fbe35d4f004444f949b88ce3f5a92c44b92b63e57514962b228ef78bb1a92208f8f2a5fc8066e639c76a442e1cf6fad2a1d29efa63f07aece3cccc6f7 + languageName: node + linkType: hard + "parallel-transform@npm:^1.2.0": version: 1.2.0 resolution: "parallel-transform@npm:1.2.0" @@ -12443,6 +12852,13 @@ __metadata: languageName: node linkType: hard +"proc-log@npm:^2.0.0": + version: 2.0.1 + resolution: "proc-log@npm:2.0.1" + checksum: f6f23564ff759097db37443e6e2765af84979a703d2c52c1b9df506ee9f87caa101ba49d8fdc115c1a313ec78e37e8134704e9069e6a870f3499d98bb24c436f + languageName: node + linkType: hard + "process-nextick-args@npm:~2.0.0": version: 2.0.1 resolution: "process-nextick-args@npm:2.0.1" @@ -12683,7 +13099,7 @@ __metadata: languageName: node linkType: hard -"read-package-json-fast@npm:^2.0.2": +"read-package-json-fast@npm:^2.0.2, read-package-json-fast@npm:^2.0.3": version: 2.0.3 resolution: "read-package-json-fast@npm:2.0.3" dependencies: @@ -12693,6 +13109,18 @@ __metadata: languageName: node linkType: hard +"read-package-json@npm:^5.0.0": + version: 5.0.1 + resolution: "read-package-json@npm:5.0.1" + dependencies: + glob: ^8.0.1 + json-parse-even-better-errors: ^2.3.1 + normalize-package-data: ^4.0.0 + npm-normalize-package-bin: ^1.0.1 + checksum: e8c2ad72df1f17e71268feabdb9bb0153ed2c7d38a05b759c5c49cf368a754bdd3c0e8a279fbc8d707802ff91d2cf144a995e6ebd5534de2848d52ab2c14034d + languageName: node + linkType: hard + "read-pkg-up@npm:^7.0.1": version: 7.0.1 resolution: "read-pkg-up@npm:7.0.1" @@ -13324,7 +13752,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.x, semver@npm:^7.0.0, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:~7.3.0": +"semver@npm:7.x, semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:~7.3.0": version: 7.3.7 resolution: "semver@npm:7.3.7" dependencies: @@ -13574,6 +14002,17 @@ __metadata: languageName: node linkType: hard +"socks-proxy-agent@npm:^6.0.0": + version: 6.2.1 + resolution: "socks-proxy-agent@npm:6.2.1" + dependencies: + agent-base: ^6.0.2 + debug: ^4.3.3 + socks: ^2.6.2 + checksum: 9ca089d489e5ee84af06741135c4b0d2022977dad27ac8d649478a114cdce87849e8d82b7c22b51501a4116e231241592946fc7fae0afc93b65030ee57084f58 + languageName: node + linkType: hard + "socks-proxy-agent@npm:^7.0.0": version: 7.0.0 resolution: "socks-proxy-agent@npm:7.0.0" @@ -13759,6 +14198,15 @@ __metadata: languageName: node linkType: hard +"ssri@npm:^8.0.0, ssri@npm:^8.0.1": + version: 8.0.1 + resolution: "ssri@npm:8.0.1" + dependencies: + minipass: ^3.1.1 + checksum: bc447f5af814fa9713aa201ec2522208ae0f4d8f3bda7a1f445a797c7b929a02720436ff7c478fb5edc4045adb02b1b88d2341b436a80798734e2494f1067b36 + languageName: node + linkType: hard + "ssri@npm:^9.0.0": version: 9.0.1 resolution: "ssri@npm:9.0.1" @@ -14260,7 +14708,7 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.1.11, tar@npm:^6.1.2": +"tar@npm:^6.0.2, tar@npm:^6.1.11, tar@npm:^6.1.2": version: 6.1.11 resolution: "tar@npm:6.1.11" dependencies: @@ -15067,7 +15515,7 @@ __metadata: languageName: node linkType: hard -"validate-npm-package-license@npm:^3.0.1": +"validate-npm-package-license@npm:^3.0.1, validate-npm-package-license@npm:^3.0.4": version: 3.0.4 resolution: "validate-npm-package-license@npm:3.0.4" dependencies: