From 029143cfff2c8a0b9a3af77dfad2d5d0248882ac Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Wed, 8 Feb 2023 13:19:40 +0200 Subject: [PATCH] fix: give priority to packages installed in the root, when deduping (#6054) --- .changeset/chilly-apples-hang.md | 5 + .changeset/silly-cars-double.md | 9 + __utils__/assert-project/package.json | 2 +- __utils__/assert-store/package.json | 2 +- exec/plugin-commands-rebuild/package.json | 2 +- .../package.json | 2 +- package.json | 2 +- .../plugin-commands-patching/package.json | 2 +- pkg-manager/core/package.json | 2 +- .../core/src/install/getPreferredVersions.ts | 9 +- pkg-manager/core/test/install/dedupe.ts | 18 + pkg-manager/headless/package.json | 2 +- pkg-manager/package-requester/package.json | 2 +- .../plugin-commands-installation/package.json | 2 +- .../src/resolveDependencies.ts | 12 +- pnpm-lock.yaml | 386 ++++++++---------- pnpm/package.json | 2 +- releasing/plugin-commands-deploy/package.json | 2 +- .../plugin-commands-publishing/package.json | 2 +- .../npm-resolver/src/pickPackageFromMeta.ts | 29 +- resolving/npm-resolver/test/index.ts | 25 ++ resolving/resolver-base/src/index.ts | 13 +- .../plugin-commands-licenses/package.json | 2 +- .../plugin-commands-listing/package.json | 2 +- .../plugin-commands-outdated/package.json | 2 +- store/plugin-commands-store/package.json | 2 +- 26 files changed, 281 insertions(+), 259 deletions(-) create mode 100644 .changeset/chilly-apples-hang.md create mode 100644 .changeset/silly-cars-double.md diff --git a/.changeset/chilly-apples-hang.md b/.changeset/chilly-apples-hang.md new file mode 100644 index 00000000000..4080d162ddc --- /dev/null +++ b/.changeset/chilly-apples-hang.md @@ -0,0 +1,5 @@ +--- +"@pnpm/resolver-base": minor +--- + +Version selectors may have weights optionally. diff --git a/.changeset/silly-cars-double.md b/.changeset/silly-cars-double.md new file mode 100644 index 00000000000..ff2d142fa8f --- /dev/null +++ b/.changeset/silly-cars-double.md @@ -0,0 +1,9 @@ +--- +"@pnpm/resolve-dependencies": patch +"@pnpm/resolver-base": patch +"@pnpm/npm-resolver": patch +"@pnpm/core": patch +"pnpm": patch +--- + +When resolving dependencies, prefer versions that are already used in the root of the project. This is important to minimize the number of packages that will be nested during hoisting [#6054](https://github.com/pnpm/pnpm/pull/6054). diff --git a/__utils__/assert-project/package.json b/__utils__/assert-project/package.json index 59eebe85d4c..9b1ced98f72 100644 --- a/__utils__/assert-project/package.json +++ b/__utils__/assert-project/package.json @@ -44,7 +44,7 @@ "@pnpm/constants": "workspace:*", "@pnpm/lockfile-types": "workspace:*", "@pnpm/modules-yaml": "workspace:*", - "@pnpm/registry-mock": "3.3.0", + "@pnpm/registry-mock": "3.4.0", "@pnpm/types": "workspace:*", "is-windows": "^1.0.2", "isexe": "2.0.0", diff --git a/__utils__/assert-store/package.json b/__utils__/assert-store/package.json index 6fe3191f167..d419c81508c 100644 --- a/__utils__/assert-store/package.json +++ b/__utils__/assert-store/package.json @@ -41,7 +41,7 @@ }, "dependencies": { "@pnpm/cafs": "workspace:*", - "@pnpm/registry-mock": "3.3.0", + "@pnpm/registry-mock": "3.4.0", "path-exists": "^4.0.0" }, "devDependencies": { diff --git a/exec/plugin-commands-rebuild/package.json b/exec/plugin-commands-rebuild/package.json index 77a6b3b38b8..d14aa5b8756 100644 --- a/exec/plugin-commands-rebuild/package.json +++ b/exec/plugin-commands-rebuild/package.json @@ -38,7 +38,7 @@ "@pnpm/filter-workspace-packages": "workspace:*", "@pnpm/plugin-commands-rebuild": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.3.0", + "@pnpm/registry-mock": "3.4.0", "@pnpm/test-fixtures": "workspace:*", "@types/ramda": "0.28.20", "@types/semver": "7.3.13", diff --git a/exec/plugin-commands-script-runners/package.json b/exec/plugin-commands-script-runners/package.json index 4812d48b9dc..9ab6cea33b4 100644 --- a/exec/plugin-commands-script-runners/package.json +++ b/exec/plugin-commands-script-runners/package.json @@ -37,7 +37,7 @@ "@pnpm/filter-workspace-packages": "workspace:*", "@pnpm/plugin-commands-script-runners": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.3.0", + "@pnpm/registry-mock": "3.4.0", "@types/is-windows": "^1.0.0", "@types/ramda": "0.28.20", "is-windows": "^1.0.2", diff --git a/package.json b/package.json index 039030ae3d2..893eddae67b 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "@commitlint/prompt-cli": "^17.4.2", "@pnpm/eslint-config": "workspace:*", "@pnpm/meta-updater": "0.2.2", - "@pnpm/registry-mock": "3.3.0", + "@pnpm/registry-mock": "3.4.0", "@pnpm/tsconfig": "workspace:*", "@types/jest": "^29.4.0", "@types/node": "^14.18.36", diff --git a/patching/plugin-commands-patching/package.json b/patching/plugin-commands-patching/package.json index 7d598df3bac..c958f3ef346 100644 --- a/patching/plugin-commands-patching/package.json +++ b/patching/plugin-commands-patching/package.json @@ -35,7 +35,7 @@ "devDependencies": { "@pnpm/plugin-commands-patching": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.3.0", + "@pnpm/registry-mock": "3.4.0", "@types/ramda": "0.28.20" }, "dependencies": { diff --git a/pkg-manager/core/package.json b/pkg-manager/core/package.json index 289f3df25e0..27934fcb384 100644 --- a/pkg-manager/core/package.json +++ b/pkg-manager/core/package.json @@ -77,7 +77,7 @@ "@pnpm/git-utils": "workspace:*", "@pnpm/package-store": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.3.0", + "@pnpm/registry-mock": "3.4.0", "@pnpm/store-path": "workspace:*", "@pnpm/test-fixtures": "workspace:*", "@types/fs-extra": "^9.0.13", diff --git a/pkg-manager/core/src/install/getPreferredVersions.ts b/pkg-manager/core/src/install/getPreferredVersions.ts index 8168019f2b3..472728cc422 100644 --- a/pkg-manager/core/src/install/getPreferredVersions.ts +++ b/pkg-manager/core/src/install/getPreferredVersions.ts @@ -1,6 +1,6 @@ import { nameVerFromPkgSnapshot, PackageSnapshots } from '@pnpm/lockfile-utils' import { getAllDependenciesFromManifest } from '@pnpm/manifest-utils' -import { PreferredVersions } from '@pnpm/resolver-base' +import { DIRECT_DEP_SELECTOR_WEIGHT, PreferredVersions } from '@pnpm/resolver-base' import { DependencyManifest, ProjectManifest } from '@pnpm/types' import getVersionSelectorType from 'version-selector-type' @@ -33,7 +33,10 @@ export function getPreferredVersionsFromLockfileAndManifests ( const selector = getVersionSelectorType(spec) if (!selector) continue preferredVersions[name] = preferredVersions[name] ?? {} - preferredVersions[name][spec] = selector.type + preferredVersions[name][spec] = { + selectorType: selector.type, + weight: DIRECT_DEP_SELECTOR_WEIGHT, + } } } if (!snapshots) return preferredVersions @@ -46,7 +49,7 @@ function addPreferredVersionsFromLockfile (snapshots: PackageSnapshots, preferre const { name, version } = nameVerFromPkgSnapshot(depPath, snapshot) if (!preferredVersions[name]) { preferredVersions[name] = { [version]: 'version' } - } else { + } else if (!preferredVersions[name][version]) { preferredVersions[name][version] = 'version' } } diff --git a/pkg-manager/core/test/install/dedupe.ts b/pkg-manager/core/test/install/dedupe.ts index 5a7d580d5ce..75c782fb258 100644 --- a/pkg-manager/core/test/install/dedupe.ts +++ b/pkg-manager/core/test/install/dedupe.ts @@ -191,3 +191,21 @@ test('dedupe subdependency when a newer version of the same package is installed expect(lockfile.packages).toHaveProperty(['/@pnpm.e2e/dep-of-pkg-with-1-dep/100.1.0']) expect(lockfile.packages).not.toHaveProperty(['/@pnpm.e2e/dep-of-pkg-with-1-dep/100.0.0']) }) + +test('when resolving dependencies, prefer versions that are used by direct dependencies over versions used in subdeps', async () => { + await addDistTag({ package: '@pnpm.e2e/foo', version: '100.1.0', distTag: 'latest' }) + const project = prepareEmpty() + + const manifest = await install({ + dependencies: { + '@pnpm.e2e/foo': '100.0.0', + '@pnpm.e2e/has-foo-100.1.0-dep-1': '1.0.0', + '@pnpm.e2e/has-foo-100.1.0-dep-2': '1.0.0', + }, + }, await testDefaults()) + + await addDependenciesToPackage(manifest, ['@pnpm.e2e/has-foo-100.0.0-range-dep'], await testDefaults()) + + const lockfile = await project.readLockfile() + expect(lockfile.packages['/@pnpm.e2e/has-foo-100.0.0-range-dep/1.0.0']).toHaveProperty(['dependencies', '@pnpm.e2e/foo'], '100.0.0') +}) diff --git a/pkg-manager/headless/package.json b/pkg-manager/headless/package.json index dcc7672a00a..11c64e46a3d 100644 --- a/pkg-manager/headless/package.json +++ b/pkg-manager/headless/package.json @@ -22,7 +22,7 @@ "@pnpm/package-store": "workspace:*", "@pnpm/prepare": "workspace:*", "@pnpm/read-projects-context": "workspace:*", - "@pnpm/registry-mock": "3.3.0", + "@pnpm/registry-mock": "3.4.0", "@pnpm/store-path": "workspace:*", "@pnpm/test-fixtures": "workspace:*", "@types/fs-extra": "^9.0.13", diff --git a/pkg-manager/package-requester/package.json b/pkg-manager/package-requester/package.json index be06624468b..53186deec8b 100644 --- a/pkg-manager/package-requester/package.json +++ b/pkg-manager/package-requester/package.json @@ -68,7 +68,7 @@ "@pnpm/client": "workspace:*", "@pnpm/create-cafs-store": "workspace:*", "@pnpm/package-requester": "workspace:*", - "@pnpm/registry-mock": "3.3.0", + "@pnpm/registry-mock": "3.4.0", "@pnpm/test-fixtures": "workspace:*", "@types/normalize-path": "^3.0.0", "@types/ramda": "0.28.20", diff --git a/pkg-manager/plugin-commands-installation/package.json b/pkg-manager/plugin-commands-installation/package.json index fb0d157a7ef..186898bff02 100644 --- a/pkg-manager/plugin-commands-installation/package.json +++ b/pkg-manager/plugin-commands-installation/package.json @@ -38,7 +38,7 @@ "@pnpm/modules-yaml": "workspace:*", "@pnpm/plugin-commands-installation": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.3.0", + "@pnpm/registry-mock": "3.4.0", "@pnpm/test-fixtures": "workspace:*", "@types/proxyquire": "^1.3.28", "@types/ramda": "0.28.20", diff --git a/pkg-manager/resolve-dependencies/src/resolveDependencies.ts b/pkg-manager/resolve-dependencies/src/resolveDependencies.ts index 8807d4e1dec..3495963a441 100644 --- a/pkg-manager/resolve-dependencies/src/resolveDependencies.ts +++ b/pkg-manager/resolve-dependencies/src/resolveDependencies.ts @@ -19,6 +19,7 @@ import { logger } from '@pnpm/logger' import { pickRegistryForPackage } from '@pnpm/pick-registry-for-package' import { DirectoryResolution, + DIRECT_DEP_SELECTOR_WEIGHT, PreferredVersions, Resolution, WorkspacePackages, @@ -405,7 +406,12 @@ async function resolveDependenciesOfImporters ( if (!newPreferredVersions[resolvedPackage.name]) { newPreferredVersions[resolvedPackage.name] = {} } - newPreferredVersions[resolvedPackage.name][resolvedPackage.version] = 'version' + if (!newPreferredVersions[resolvedPackage.name][resolvedPackage.version]) { + newPreferredVersions[resolvedPackage.name][resolvedPackage.version] = { + selectorType: 'version', + weight: DIRECT_DEP_SELECTOR_WEIGHT, + } + } } const newParentPkgAliases = { ...importer.parentPkgAliases, ...currentParentPkgAliases } const postponedResolutionOpts = { @@ -527,7 +533,9 @@ export async function resolveDependencies ( if (!newPreferredVersions[resolvedPackage.name]) { newPreferredVersions[resolvedPackage.name] = {} } - newPreferredVersions[resolvedPackage.name][resolvedPackage.version] = 'version' + if (!newPreferredVersions[resolvedPackage.name][resolvedPackage.version]) { + newPreferredVersions[resolvedPackage.name][resolvedPackage.version] = 'version' + } } const newParentPkgAliases = { ...options.parentPkgAliases, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9c3ac65abfb..e42e0be29af 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,8 +62,8 @@ importers: specifier: 0.2.2 version: 0.2.2(typanion@3.12.1) '@pnpm/registry-mock': - specifier: 3.3.0 - version: 3.3.0(typanion@3.12.1) + specifier: 3.4.0 + version: 3.4.0(typanion@3.12.1) '@pnpm/tsconfig': specifier: workspace:* version: link:__utils__/tsconfig @@ -174,8 +174,8 @@ importers: specifier: workspace:* version: link:../../pkg-manager/modules-yaml '@pnpm/registry-mock': - specifier: 3.3.0 - version: 3.3.0(typanion@3.12.1) + specifier: 3.4.0 + version: 3.4.0(typanion@3.12.1) '@pnpm/types': specifier: workspace:* version: link:../../packages/types @@ -214,8 +214,8 @@ importers: specifier: workspace:* version: link:../../store/cafs '@pnpm/registry-mock': - specifier: 3.3.0 - version: 3.3.0(typanion@3.12.1) + specifier: 3.4.0 + version: 3.4.0(typanion@3.12.1) path-exists: specifier: ^4.0.0 version: 4.0.0 @@ -1099,8 +1099,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.3.0 - version: 3.3.0(typanion@3.12.1) + specifier: 3.4.0 + version: 3.4.0(typanion@3.12.1) '@pnpm/test-fixtures': specifier: workspace:* version: link:../../__utils__/test-fixtures @@ -1205,8 +1205,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.3.0 - version: 3.3.0(typanion@3.12.1) + specifier: 3.4.0 + version: 3.4.0(typanion@3.12.1) '@types/is-windows': specifier: ^1.0.0 version: 1.0.0 @@ -2523,8 +2523,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.3.0 - version: 3.3.0(typanion@3.12.1) + specifier: 3.4.0 + version: 3.4.0(typanion@3.12.1) '@types/ramda': specifier: 0.28.20 version: 0.28.20 @@ -2756,8 +2756,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.3.0 - version: 3.3.0(typanion@3.12.1) + specifier: 3.4.0 + version: 3.4.0(typanion@3.12.1) '@pnpm/store-path': specifier: workspace:* version: link:../../store/store-path @@ -3020,8 +3020,8 @@ importers: specifier: workspace:* version: link:../read-projects-context '@pnpm/registry-mock': - specifier: 3.3.0 - version: 3.3.0(typanion@3.12.1) + specifier: 3.4.0 + version: 3.4.0(typanion@3.12.1) '@pnpm/store-path': specifier: workspace:* version: link:../../store/store-path @@ -3383,8 +3383,8 @@ importers: specifier: workspace:* version: 'link:' '@pnpm/registry-mock': - specifier: 3.3.0 - version: 3.3.0(typanion@3.12.1) + specifier: 3.4.0 + version: 3.4.0(typanion@3.12.1) '@pnpm/test-fixtures': specifier: workspace:* version: link:../../__utils__/test-fixtures @@ -3567,8 +3567,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.3.0 - version: 3.3.0(typanion@3.12.1) + specifier: 3.4.0 + version: 3.4.0(typanion@3.12.1) '@pnpm/test-fixtures': specifier: workspace:* version: link:../../__utils__/test-fixtures @@ -4096,8 +4096,8 @@ importers: specifier: workspace:* version: link:../pkg-manifest/read-project-manifest '@pnpm/registry-mock': - specifier: 3.3.0 - version: 3.3.0(typanion@3.12.1) + specifier: 3.4.0 + version: 3.4.0(typanion@3.12.1) '@pnpm/run-npm': specifier: workspace:* version: link:../exec/run-npm @@ -4347,8 +4347,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.3.0 - version: 3.3.0(typanion@3.12.1) + specifier: 3.4.0 + version: 3.4.0(typanion@3.12.1) releasing/plugin-commands-publishing: dependencies: @@ -4444,8 +4444,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.3.0 - version: 3.3.0(typanion@3.12.1) + specifier: 3.4.0 + version: 3.4.0(typanion@3.12.1) '@types/cross-spawn': specifier: ^6.0.2 version: 6.0.2 @@ -4992,8 +4992,8 @@ importers: specifier: workspace:* version: link:../../pkg-manifest/read-package-json '@pnpm/registry-mock': - specifier: 3.3.0 - version: 3.3.0(typanion@3.12.1) + specifier: 3.4.0 + version: 3.4.0(typanion@3.12.1) '@types/ramda': specifier: 0.28.20 version: 0.28.20 @@ -5056,8 +5056,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.3.0 - version: 3.3.0(typanion@3.12.1) + specifier: 3.4.0 + version: 3.4.0(typanion@3.12.1) '@types/ramda': specifier: 0.28.20 version: 0.28.20 @@ -5153,8 +5153,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.3.0 - version: 3.3.0(typanion@3.12.1) + specifier: 3.4.0 + version: 3.4.0(typanion@3.12.1) '@pnpm/test-fixtures': specifier: workspace:* version: link:../../__utils__/test-fixtures @@ -5500,8 +5500,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.3.0 - version: 3.3.0(typanion@3.12.1) + specifier: 3.4.0 + version: 3.4.0(typanion@3.12.1) '@types/archy': specifier: 0.0.32 version: 0.0.32 @@ -6607,15 +6607,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.0 '@commitlint/types': 17.4.0 - '@types/node': 18.11.18 + '@types/node': 14.18.36 chalk: 4.1.2 cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.3.0(@types/node@18.11.18)(cosmiconfig@8.0.0)(ts-node@10.9.1)(typescript@4.9.4) + cosmiconfig-typescript-loader: 4.3.0(@types/node@14.18.36)(cosmiconfig@8.0.0)(ts-node@10.9.1)(typescript@4.9.4) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@18.11.18)(typescript@4.9.4) + ts-node: 10.9.1(@types/node@14.18.36)(typescript@4.9.4) typescript: 4.9.4 transitivePeerDependencies: - '@swc/core' @@ -7309,15 +7309,15 @@ packages: dev: false optional: true - /@pnpm/build-modules@10.1.4(@pnpm/logger@5.0.0)(typanion@3.12.1): - resolution: {integrity: sha512-NZRN9MF5JWPC7DLtd3CN9mE5b9LzyyHVcvL3jQSb00RZFhTcv6OvNtTxzR1gHKJjF3cIpkdIg8uu0AeR6IQxeg==} + /@pnpm/build-modules@10.1.5(@pnpm/logger@5.0.0)(typanion@3.12.1): + resolution: {integrity: sha512-Cz9dDVkDxEoyRFuN+Neq3AUzgTw8bP2aU+OAVHPCq5rUjlf4hMz4kNGlwREOJ38FZjTOuf+JzbXCtIvIng51Qg==} engines: {node: '>=14.6'} peerDependencies: '@pnpm/logger': ^5.0.0 dependencies: '@pnpm/calc-dep-state': 3.0.2 '@pnpm/core-loggers': 8.0.3(@pnpm/logger@5.0.0) - '@pnpm/fs.hard-link-dir': 1.0.2 + '@pnpm/fs.hard-link-dir': 1.0.3 '@pnpm/graph-sequencer': 1.0.0 '@pnpm/lifecycle': 14.1.5(@pnpm/logger@5.0.0)(typanion@3.12.1) '@pnpm/link-bins': 8.0.8(@pnpm/logger@5.0.0) @@ -7374,15 +7374,15 @@ packages: load-json-file: 6.2.0 dev: true - /@pnpm/cli-utils@1.0.30(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1): - resolution: {integrity: sha512-FnTn+qByq0JJKj4wAJTupYIJG0irD2yzYCh4hHf1fRaYYEUPdaO3C7vGCt5WoajCxM4p30F93frMTUMwO5kp6w==} + /@pnpm/cli-utils@1.0.32(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1): + resolution: {integrity: sha512-i32tPPB+plQ9LuUDjzwBr3OIwnQI8msxJcTC64EoYltfrsV8a74O44pZ/myZey3L1uDN3hRF33FNimOr9qPZJw==} engines: {node: '>=14.6'} peerDependencies: '@pnpm/logger': ^5.0.0 dependencies: '@pnpm/cli-meta': 4.0.3 - '@pnpm/config': 16.5.4(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1) - '@pnpm/default-reporter': 11.0.30(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1) + '@pnpm/config': 16.6.0(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1) + '@pnpm/default-reporter': 11.0.32(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1) '@pnpm/error': 4.0.1 '@pnpm/logger': 5.0.0 '@pnpm/manifest-utils': 4.1.4(@pnpm/logger@5.0.0) @@ -7410,8 +7410,8 @@ packages: resolution: {integrity: sha512-ZVPVDi1E8oeXlYqkGRtX0CkzLTwE2zt62bjWaWKaAvI8NZqHzlMvGeSNDpW+JB3+aKanYb4UETJOF1/CxGPemA==} engines: {node: '>=12.22.0'} - /@pnpm/config@16.5.4(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1): - resolution: {integrity: sha512-mZ9TiZJeumHscOPwtDSBPvoJDeo8bxGxxO+1gq94k8GLtwzPmwrnWsJp6gb2tAK/a8mKcVf6nzWNtBwCX5fbAQ==} + /@pnpm/config@16.6.0(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1): + resolution: {integrity: sha512-R1FISObvNvWEbo5EqGkw71PLIkL5lVitO/MLbSmb34BzUAz/DPt8tc5lGEt/BZtQ4tYMqw/sIxOYiwSVCBiLcg==} engines: {node: '>=14.6'} dependencies: '@pnpm/config.env-replace': 1.0.0 @@ -7420,7 +7420,7 @@ packages: '@pnpm/git-utils': 0.1.0 '@pnpm/matcher': 4.0.1 '@pnpm/npm-conf': 2.0.4 - '@pnpm/pnpmfile': 4.0.28(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1) + '@pnpm/pnpmfile': 4.0.30(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1) '@pnpm/read-project-manifest': 4.1.3 '@pnpm/types': 8.10.0 camelcase: 6.3.0 @@ -7458,47 +7458,47 @@ packages: '@pnpm/types': 8.10.0 dev: true - /@pnpm/core@7.7.2(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1): - resolution: {integrity: sha512-fPb06FQE+OGvPFdk7HFdqZ1whqivMrbN2KxLHabq8XONi4Q6kj210cr7TkvXClJcrGGg7yPNOkvqg62hY/qU6w==} + /@pnpm/core@7.8.0(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1): + resolution: {integrity: sha512-qxbXwFAp309DXe6G02+dwq4oCw4BYIvXy4kAjIVhFgHynLGGKII7u1KC1chRJDbT1mWkrV8E10XF9FAWdLYTDQ==} engines: {node: '>=14.6'} peerDependencies: '@pnpm/logger': ^5.0.0 dependencies: - '@pnpm/build-modules': 10.1.4(@pnpm/logger@5.0.0)(typanion@3.12.1) + '@pnpm/build-modules': 10.1.5(@pnpm/logger@5.0.0)(typanion@3.12.1) '@pnpm/calc-dep-state': 3.0.2 '@pnpm/constants': 6.2.0 '@pnpm/core-loggers': 8.0.3(@pnpm/logger@5.0.0) '@pnpm/crypto.base32-hash': 1.0.1 - '@pnpm/dependency-path': 1.1.1 + '@pnpm/dependency-path': 1.1.3 '@pnpm/error': 4.0.1 - '@pnpm/filter-lockfile': 7.0.7(@pnpm/logger@5.0.0) - '@pnpm/get-context': 8.2.0(@pnpm/logger@5.0.0) + '@pnpm/filter-lockfile': 7.0.9(@pnpm/logger@5.0.0) + '@pnpm/get-context': 8.2.2(@pnpm/logger@5.0.0) '@pnpm/graph-sequencer': 1.0.0 - '@pnpm/headless': 19.4.9(@pnpm/logger@5.0.0)(typanion@3.12.1) - '@pnpm/hoist': 7.0.12(@pnpm/logger@5.0.0) - '@pnpm/hooks.read-package-hook': 2.0.11(@yarnpkg/core@4.0.0-rc.14) + '@pnpm/headless': 19.4.11(@pnpm/logger@5.0.0)(typanion@3.12.1) + '@pnpm/hoist': 7.0.14(@pnpm/logger@5.0.0) + '@pnpm/hooks.read-package-hook': 2.0.12(@yarnpkg/core@4.0.0-rc.14) '@pnpm/lifecycle': 14.1.5(@pnpm/logger@5.0.0)(typanion@3.12.1) '@pnpm/link-bins': 8.0.8(@pnpm/logger@5.0.0) - '@pnpm/lockfile-file': 7.0.2(@pnpm/logger@5.0.0) - '@pnpm/lockfile-to-pnp': 2.0.9(@pnpm/logger@5.0.0) - '@pnpm/lockfile-utils': 5.0.4 - '@pnpm/lockfile-walker': 6.0.6 + '@pnpm/lockfile-file': 7.0.4(@pnpm/logger@5.0.0) + '@pnpm/lockfile-to-pnp': 2.0.11(@pnpm/logger@5.0.0) + '@pnpm/lockfile-utils': 5.0.6 + '@pnpm/lockfile-walker': 6.0.8 '@pnpm/logger': 5.0.0 '@pnpm/manifest-utils': 4.1.4(@pnpm/logger@5.0.0) '@pnpm/matcher': 4.0.1 - '@pnpm/modules-cleaner': 13.0.9(@pnpm/logger@5.0.0) + '@pnpm/modules-cleaner': 13.0.11(@pnpm/logger@5.0.0) '@pnpm/modules-yaml': 11.1.0 '@pnpm/normalize-registries': 4.0.3 '@pnpm/npm-package-arg': 1.0.0 - '@pnpm/package-requester': 20.1.3(@pnpm/logger@5.0.0) + '@pnpm/package-requester': 20.1.5(@pnpm/logger@5.0.0) '@pnpm/parse-wanted-dependency': 4.1.0 '@pnpm/pkg-manager.direct-dep-linker': 1.0.2(@pnpm/logger@5.0.0) - '@pnpm/prune-lockfile': 4.0.22 + '@pnpm/prune-lockfile': 4.0.24 '@pnpm/read-modules-dir': 5.0.0 '@pnpm/read-package-json': 7.0.5 '@pnpm/read-project-manifest': 4.1.3 '@pnpm/remove-bins': 4.0.5(@pnpm/logger@5.0.0) - '@pnpm/resolve-dependencies': 29.2.4(@pnpm/logger@5.0.0)(typanion@3.12.1) + '@pnpm/resolve-dependencies': 29.3.0(@pnpm/logger@5.0.0)(typanion@3.12.1) '@pnpm/resolver-base': 9.1.5 '@pnpm/store-controller-types': 14.3.0 '@pnpm/symlink-dependency': 6.0.3(@pnpm/logger@5.0.0) @@ -7532,13 +7532,13 @@ packages: rfc4648: 1.5.2 dev: true - /@pnpm/default-reporter@11.0.30(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1): - resolution: {integrity: sha512-ifZ3ivqHFMm1YbHJJaWR0ejNw+aO6zmjzJRD8QVRm8dmuJe1l6e4TSDBNOoBlIij3GSeJwU5EdN1ldqz9EI30g==} + /@pnpm/default-reporter@11.0.32(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1): + resolution: {integrity: sha512-Xb3dA960SvLF7PGmZDwdTSIXLp+BQ6ikGVRAmLw3yjzwgfFEGu2OpmbQnGljLttO3C8tIsxx44ouR3L7nLAdng==} engines: {node: '>=14.6'} peerDependencies: '@pnpm/logger': ^5.0.0 dependencies: - '@pnpm/config': 16.5.4(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1) + '@pnpm/config': 16.6.0(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1) '@pnpm/core-loggers': 8.0.3(@pnpm/logger@5.0.0) '@pnpm/error': 4.0.1 '@pnpm/logger': 5.0.0 @@ -7565,8 +7565,8 @@ packages: - typanion dev: true - /@pnpm/dependency-path@1.1.1: - resolution: {integrity: sha512-DISm2k/SfSTRu8zTzu8u4dg4be3rlcOq5pP12pW3fhaB4ILdPg/cTyDiX725MjxswSCgh1wMO11812cRxkNDIQ==} + /@pnpm/dependency-path@1.1.3: + resolution: {integrity: sha512-HXmS9XzZ1CLCGFtfydAkWayn/o3jaftVFESXrJH0W6NENS92rYCUVvutqL/4Kfx72k0HHUbIZLQAsoISxKId8Q==} engines: {node: '>=14.6'} dependencies: '@pnpm/crypto.base32-hash': 1.0.1 @@ -7622,18 +7622,18 @@ packages: - domexception dev: true - /@pnpm/filter-lockfile@7.0.7(@pnpm/logger@5.0.0): - resolution: {integrity: sha512-8+tgLiz58p+MzrgzVmVdudpfezgHKHU7PrMr3kbdKnMbjGDZxpsQKTLUV2Wpxl/RcmZfuVfb+j0RrK7XoHNAow==} + /@pnpm/filter-lockfile@7.0.9(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-kfU8FOhSfS59v+66+Pzv4g8MG3Ce9yp6DTbzfD/ql5rDPuWH2Ou9eXXG/JoGzIFGjDyUkdnoopcrRgCMl0ryCA==} engines: {node: '>=14.6'} peerDependencies: '@pnpm/logger': ^5.0.0 dependencies: '@pnpm/constants': 6.2.0 - '@pnpm/dependency-path': 1.1.1 + '@pnpm/dependency-path': 1.1.3 '@pnpm/error': 4.0.1 '@pnpm/lockfile-types': 4.3.6 - '@pnpm/lockfile-utils': 5.0.4 - '@pnpm/lockfile-walker': 6.0.6 + '@pnpm/lockfile-utils': 5.0.6 + '@pnpm/lockfile-walker': 6.0.8 '@pnpm/logger': 5.0.0 '@pnpm/package-is-installable': 7.0.4(@pnpm/logger@5.0.0) '@pnpm/types': 8.10.0 @@ -7648,11 +7648,11 @@ packages: find-up: 5.0.0 dev: true - /@pnpm/find-workspace-packages@5.0.30(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1): - resolution: {integrity: sha512-P67I9Rfvi9rk6MhA8KX5d7L822USaAY9lb06nPAW8P1jH/EKQ4xKnC+L4mRcxlZP4XET1G3P3WXG1m2IVA7UFQ==} + /@pnpm/find-workspace-packages@5.0.32(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1): + resolution: {integrity: sha512-aoiKh30LnpNt0N6WQ+TWki3xh1zcUn0AJjW27w2KQosxY7o46j7SPidA/3JheDawlapNuNTJfynigJn6LjYNkw==} engines: {node: '>=14.6'} dependencies: - '@pnpm/cli-utils': 1.0.30(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1) + '@pnpm/cli-utils': 1.0.32(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1) '@pnpm/constants': 6.2.0 '@pnpm/fs.find-packages': 1.0.2 '@pnpm/types': 8.10.0 @@ -7678,13 +7678,13 @@ packages: p-filter: 2.1.0 dev: true - /@pnpm/fs.hard-link-dir@1.0.2: - resolution: {integrity: sha512-MSga26f0i3dF5HQTInKhYWIfvAOzV32hnv9bHSnuvMCLQ7DxymMddrkMGMXUIrYYaFErj3jkMGy0m6bTv82aCA==} + /@pnpm/fs.hard-link-dir@1.0.3: + resolution: {integrity: sha512-zJIVUAhwYjfDCu+h4TfrEKSLUZXoE20iWAQ7lA5GrMImmt6qEimpLb9SfZblpsza3KsCVQGiG6SAUdNwN8BUbA==} engines: {node: '>=14.6'} dev: true - /@pnpm/get-context@8.2.0(@pnpm/logger@5.0.0): - resolution: {integrity: sha512-nXOMlkvd0HHB2sGQq06ktGhPTxBrR3II3O/9Sd7yfzNzLsHO61zxke+l0ldoQEPf3evbBYq2XETc6Iq7EPH6LQ==} + /@pnpm/get-context@8.2.2(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-NgzWqnvT2x/kZOHggHe1ty8luyPgAxf897KcEUs0adBNaY43aDU3gyzVWJPWlQaiF7Ki5eRdH7dnkZlibLAJ8g==} engines: {node: '>=14.6'} peerDependencies: '@pnpm/logger': ^5.0.0 @@ -7692,10 +7692,10 @@ packages: '@pnpm/constants': 6.2.0 '@pnpm/core-loggers': 8.0.3(@pnpm/logger@5.0.0) '@pnpm/error': 4.0.1 - '@pnpm/lockfile-file': 7.0.2(@pnpm/logger@5.0.0) + '@pnpm/lockfile-file': 7.0.4(@pnpm/logger@5.0.0) '@pnpm/logger': 5.0.0 '@pnpm/modules-yaml': 11.1.0 - '@pnpm/read-projects-context': 7.0.8(@pnpm/logger@5.0.0) + '@pnpm/read-projects-context': 7.0.10(@pnpm/logger@5.0.0) '@pnpm/types': 8.10.0 '@zkochan/rimraf': 2.1.2 ci-info: 3.7.1 @@ -7720,34 +7720,34 @@ packages: /@pnpm/graph-sequencer@1.0.0: resolution: {integrity: sha512-iIJhmi7QjmafhijaEkh34Yxhjq3S/eiZnxww9K/SRXuDB5/30QnCyihR4R7vep8ONsGIR29hNPAtaNGd1rC/VA==} - /@pnpm/headless@19.4.9(@pnpm/logger@5.0.0)(typanion@3.12.1): - resolution: {integrity: sha512-ep2EgdZrbm/RjEVTGwMhqfcWVcktlELMchD9ljzXfrw60I8D8TkEr8gRrKHW3RVa83cDrhVIn4jlMfevUZbORw==} + /@pnpm/headless@19.4.11(@pnpm/logger@5.0.0)(typanion@3.12.1): + resolution: {integrity: sha512-DTkprGCuy56Pf4aetBSCcM/f3yvF3oCcFQW+85rDxr0WwNsmESZG2PL9XCBFNWeX6GdHjNL09Prqchnut94zAQ==} engines: {node: '>=14.6'} peerDependencies: '@pnpm/logger': ^5.0.0 dependencies: - '@pnpm/build-modules': 10.1.4(@pnpm/logger@5.0.0)(typanion@3.12.1) + '@pnpm/build-modules': 10.1.5(@pnpm/logger@5.0.0)(typanion@3.12.1) '@pnpm/calc-dep-state': 3.0.2 '@pnpm/constants': 6.2.0 '@pnpm/core-loggers': 8.0.3(@pnpm/logger@5.0.0) - '@pnpm/dependency-path': 1.1.1 + '@pnpm/dependency-path': 1.1.3 '@pnpm/error': 4.0.1 - '@pnpm/filter-lockfile': 7.0.7(@pnpm/logger@5.0.0) - '@pnpm/hoist': 7.0.12(@pnpm/logger@5.0.0) + '@pnpm/filter-lockfile': 7.0.9(@pnpm/logger@5.0.0) + '@pnpm/hoist': 7.0.14(@pnpm/logger@5.0.0) '@pnpm/lifecycle': 14.1.5(@pnpm/logger@5.0.0)(typanion@3.12.1) '@pnpm/link-bins': 8.0.8(@pnpm/logger@5.0.0) - '@pnpm/lockfile-file': 7.0.2(@pnpm/logger@5.0.0) - '@pnpm/lockfile-to-pnp': 2.0.9(@pnpm/logger@5.0.0) - '@pnpm/lockfile-utils': 5.0.4 + '@pnpm/lockfile-file': 7.0.4(@pnpm/logger@5.0.0) + '@pnpm/lockfile-to-pnp': 2.0.11(@pnpm/logger@5.0.0) + '@pnpm/lockfile-utils': 5.0.6 '@pnpm/logger': 5.0.0 - '@pnpm/modules-cleaner': 13.0.9(@pnpm/logger@5.0.0) + '@pnpm/modules-cleaner': 13.0.11(@pnpm/logger@5.0.0) '@pnpm/modules-yaml': 11.1.0 '@pnpm/package-is-installable': 7.0.4(@pnpm/logger@5.0.0) - '@pnpm/package-requester': 20.1.3(@pnpm/logger@5.0.0) + '@pnpm/package-requester': 20.1.5(@pnpm/logger@5.0.0) '@pnpm/pkg-manager.direct-dep-linker': 1.0.2(@pnpm/logger@5.0.0) '@pnpm/read-package-json': 7.0.5 '@pnpm/read-project-manifest': 4.1.3 - '@pnpm/real-hoist': 1.1.3(typanion@3.12.1) + '@pnpm/real-hoist': 1.1.5(typanion@3.12.1) '@pnpm/store-controller-types': 14.3.0 '@pnpm/symlink-dependency': 6.0.3(@pnpm/logger@5.0.0) '@pnpm/types': 8.10.0 @@ -7763,19 +7763,19 @@ packages: - typanion dev: true - /@pnpm/hoist@7.0.12(@pnpm/logger@5.0.0): - resolution: {integrity: sha512-svb4I5eLWop+N8lIP4PMYRC0DH0iiV5ZmMe41j6YZemTw1ZbumWpuaSkAt11NhiG8qmOm8TEDnIVzI8WJtumBA==} + /@pnpm/hoist@7.0.14(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-IWCFGek/v3Y2nHwSW+eDZd1RZBcjwxeYIAB5WeSTi5KfNDTUiIl6ZyWsXdJs989RnEZ9qTtgsf4eMwlg8tIkTw==} engines: {node: '>=14.6'} peerDependencies: '@pnpm/logger': ^5.0.0 dependencies: '@pnpm/constants': 6.2.0 '@pnpm/core-loggers': 8.0.3(@pnpm/logger@5.0.0) - '@pnpm/dependency-path': 1.1.1 + '@pnpm/dependency-path': 1.1.3 '@pnpm/link-bins': 8.0.8(@pnpm/logger@5.0.0) '@pnpm/lockfile-types': 4.3.6 - '@pnpm/lockfile-utils': 5.0.4 - '@pnpm/lockfile-walker': 6.0.6 + '@pnpm/lockfile-utils': 5.0.6 + '@pnpm/lockfile-walker': 6.0.8 '@pnpm/logger': 5.0.0 '@pnpm/matcher': 4.0.1 '@pnpm/types': 8.10.0 @@ -7786,8 +7786,8 @@ packages: symlink-dir: 5.1.1 dev: true - /@pnpm/hooks.read-package-hook@2.0.11(@yarnpkg/core@4.0.0-rc.14): - resolution: {integrity: sha512-Z8C0iS3/O7WsOnO+I6eNZ+fTCMgcc2T60dogIlrp7f6ILdB31sSBgRU7yR4sLhPm4siUoSFY5uaDe38AcGattQ==} + /@pnpm/hooks.read-package-hook@2.0.12(@yarnpkg/core@4.0.0-rc.14): + resolution: {integrity: sha512-9GT4U3GDpaGGVN1YcG+5mKaykXRDo1bDru0PIQ7+XA2IDO3ys5geNtsZHT6CyJv+6MLalEnQsmNvN+gjJ1xcBw==} engines: {node: '>=14.6'} dependencies: '@pnpm/matcher': 4.0.1 @@ -7849,14 +7849,14 @@ packages: symlink-dir: 5.1.1 dev: true - /@pnpm/lockfile-file@7.0.2(@pnpm/logger@5.0.0): - resolution: {integrity: sha512-SXWjBO1Fz3VG1QgwN1kdGOiEfS1ESxzzsy9nMJ933SOdKwn1nYe+ztpyJPqMg84+cjpAj+LacYDToTPVja+b6Q==} + /@pnpm/lockfile-file@7.0.4(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-6B0Zf+XQkVwSgCHbdvv5XihhjArpVZjmptug3q3arkO0X4UOD1fSFK//oWomPsQ5ySMEV1qQVfb/uhjfaVWJAg==} engines: {node: '>=14.6'} peerDependencies: '@pnpm/logger': ^5.0.0 dependencies: '@pnpm/constants': 6.2.0 - '@pnpm/dependency-path': 1.1.1 + '@pnpm/dependency-path': 1.1.3 '@pnpm/error': 4.0.1 '@pnpm/git-utils': 0.1.0 '@pnpm/lockfile-types': 4.3.6 @@ -7875,15 +7875,15 @@ packages: write-file-atomic: 5.0.0 dev: true - /@pnpm/lockfile-to-pnp@2.0.9(@pnpm/logger@5.0.0): - resolution: {integrity: sha512-4RMtcINGQsvOPVo3O8PiK9Zboa86Er9dj1ffuy15YF/GaDkk6usP6duuOS8l3rX8Y7IAil3DDyacP0lvkmHtzA==} + /@pnpm/lockfile-to-pnp@2.0.11(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-i+7amlvBnQsunwi6QX4p4JotZqRk0QEERhJEpi+PAdePXcCewOqEh24qNs2fxWf9XNgd0u6L9xJsvB9ynoi7/A==} engines: {node: '>=14.6'} peerDependencies: '@pnpm/logger': ^5.0.0 dependencies: - '@pnpm/dependency-path': 1.1.1 - '@pnpm/lockfile-file': 7.0.2(@pnpm/logger@5.0.0) - '@pnpm/lockfile-utils': 5.0.4 + '@pnpm/dependency-path': 1.1.3 + '@pnpm/lockfile-file': 7.0.4(@pnpm/logger@5.0.0) + '@pnpm/lockfile-utils': 5.0.6 '@pnpm/logger': 5.0.0 '@pnpm/types': 8.10.0 '@yarnpkg/pnp': 2.3.2 @@ -7898,11 +7898,11 @@ packages: '@pnpm/types': 8.10.0 dev: true - /@pnpm/lockfile-utils@5.0.4: - resolution: {integrity: sha512-6KpzAFZFp411ln6SMgXXrQcznRXG0OYE7jEGovk1Y6Edywu2judFcac+4LU0eAMP0Fn+53rvLCOf3SFHfKxDgQ==} + /@pnpm/lockfile-utils@5.0.6: + resolution: {integrity: sha512-91Yd3O7Zbey3dv1Up5hi0yLcVZ0M10ZtZn/Xms3As1zzpSqJCE/V378LZidmJT9dQ1IpUCaJYL+rQ+R8OcWCrA==} engines: {node: '>=14.6'} dependencies: - '@pnpm/dependency-path': 1.1.1 + '@pnpm/dependency-path': 1.1.3 '@pnpm/lockfile-types': 4.3.6 '@pnpm/resolver-base': 9.1.5 '@pnpm/types': 8.10.0 @@ -7910,11 +7910,11 @@ packages: ramda: /@pnpm/ramda@0.28.1 dev: true - /@pnpm/lockfile-walker@6.0.6: - resolution: {integrity: sha512-fhtk4wKC8aEpuN33zH3XMqDfICMw2aCLaqQktXnhjmVuv1TogWSeDYJ8CV4dyHVHgqv3Ity1ucDq9fxkAIpwwQ==} + /@pnpm/lockfile-walker@6.0.8: + resolution: {integrity: sha512-PH1/vq1DqLZnIjqNDE0+unOVCe52G8xShWTZU++mmQKkNnw5Mi+EV5VfARzCuNH9FVpGvV+nNK6iConTsEQ+sg==} engines: {node: '>=14.6'} dependencies: - '@pnpm/dependency-path': 1.1.1 + '@pnpm/dependency-path': 1.1.3 '@pnpm/lockfile-types': 4.3.6 '@pnpm/types': 8.10.0 ramda: /@pnpm/ramda@0.28.1 @@ -7961,7 +7961,7 @@ packages: hasBin: true dependencies: '@pnpm/find-workspace-dir': 5.0.1 - '@pnpm/find-workspace-packages': 5.0.30(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1) + '@pnpm/find-workspace-packages': 5.0.32(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1) '@pnpm/logger': 5.0.0 '@pnpm/types': 8.10.0 '@yarnpkg/core': 4.0.0-rc.14(typanion@3.12.1) @@ -7977,17 +7977,17 @@ packages: - typanion dev: true - /@pnpm/modules-cleaner@13.0.9(@pnpm/logger@5.0.0): - resolution: {integrity: sha512-fye+h5b1dEGmWS6Mi6x94JV+3OMp9Bz3fHXKhn6cS+G5YRSNgwhFoN1sBI7sFlya18VSUu6cJ+2nrqJTHOOQqQ==} + /@pnpm/modules-cleaner@13.0.11(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-PF7ayqtU+gUmNLZjWW9bxtUlSR8xgSBEeowhhgU086Zb6gH+ftdNsIT/ruyCqIfF16OKzHEHabyC2R5ViQ/GVg==} engines: {node: '>=14.6'} peerDependencies: '@pnpm/logger': ^5.0.0 dependencies: '@pnpm/core-loggers': 8.0.3(@pnpm/logger@5.0.0) - '@pnpm/dependency-path': 1.1.1 - '@pnpm/filter-lockfile': 7.0.7(@pnpm/logger@5.0.0) + '@pnpm/dependency-path': 1.1.3 + '@pnpm/filter-lockfile': 7.0.9(@pnpm/logger@5.0.0) '@pnpm/lockfile-types': 4.3.6 - '@pnpm/lockfile-utils': 5.0.4 + '@pnpm/lockfile-utils': 5.0.6 '@pnpm/logger': 5.0.0 '@pnpm/read-modules-dir': 5.0.0 '@pnpm/remove-bins': 4.0.5(@pnpm/logger@5.0.0) @@ -8087,8 +8087,8 @@ packages: semver: 7.3.8 validate-npm-package-name: 4.0.0 - /@pnpm/npm-resolver@15.0.6(@pnpm/logger@5.0.0): - resolution: {integrity: sha512-EIhV7u28MaPJQwVVxC+moDIjbC1OoVkyEsFEG1DrENQDU2R0EgdMAmOHwyf5Ou/+tN2qrBHy1zYpqBMXP2BV6w==} + /@pnpm/npm-resolver@15.0.7(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-iVze5cNrbdwpgnJnv0R7F0WxZIKVUPE3UX76kINTDWdZ0TxdkoOyVRJIB5buLXdMrgfFwFbha162teRFd2Y3Aw==} engines: {node: '>=14.6'} peerDependencies: '@pnpm/logger': ^5.0.0 @@ -8168,15 +8168,15 @@ packages: semver: 7.3.8 dev: true - /@pnpm/package-requester@20.1.3(@pnpm/logger@5.0.0): - resolution: {integrity: sha512-cUfz6NFyesqpgFZCuxyFl9iqm6q4KGLuN0XHGs4GhyTr7FuTYvqJ6+TqBcJg46CJBaaKX/DlEAUwN/GFL1UdiA==} + /@pnpm/package-requester@20.1.5(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-B2UJtUinNITsQyrZGD2JWUxhRr6s3v2fvfOFMqw1gFNDBK9qB+VbSoyeQ3BRh4o1lD07o5t22I+0Z6+ojDbEZQ==} engines: {node: '>=14.6'} peerDependencies: '@pnpm/logger': ^5.0.0 dependencies: '@pnpm/cafs': 6.0.0 '@pnpm/core-loggers': 8.0.3(@pnpm/logger@5.0.0) - '@pnpm/dependency-path': 1.1.1 + '@pnpm/dependency-path': 1.1.3 '@pnpm/error': 4.0.1 '@pnpm/fetcher-base': 13.1.5 '@pnpm/graceful-fs': 2.0.0 @@ -8251,13 +8251,13 @@ packages: resolve-link-target: 2.0.0 dev: true - /@pnpm/pnpmfile@4.0.28(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1): - resolution: {integrity: sha512-TZwRIBl2XAZB4VIhy4Y3uiILINczY6n5DUR57dHiut+UNIo2tECCQtKLx6LRNG9RJVG4jLwkOPGinan74VjvNA==} + /@pnpm/pnpmfile@4.0.30(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1): + resolution: {integrity: sha512-fvq2+/AnZVfe266NkWBi/wYvxrzhJY2p4uuyYoF7d9A7/1f+//IxKu48BllZbSKrPm2RYciB31tkh/XK2yC1FQ==} engines: {node: '>=14.6'} peerDependencies: '@pnpm/logger': ^5.0.0 dependencies: - '@pnpm/core': 7.7.2(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1) + '@pnpm/core': 7.8.0(@pnpm/logger@5.0.0)(@yarnpkg/core@4.0.0-rc.14)(typanion@3.12.1) '@pnpm/core-loggers': 8.0.3(@pnpm/logger@5.0.0) '@pnpm/error': 4.0.1 '@pnpm/lockfile-types': 4.3.6 @@ -8274,12 +8274,12 @@ packages: - typanion dev: true - /@pnpm/prune-lockfile@4.0.22: - resolution: {integrity: sha512-/ut6KeMShLWtcjAMmz1tFj6bFaKncasPUtlxE+s+JFoba9JEOdnvkvlmaO4U7Cn5vWFkVfsvUJbmBXvWzDGnuw==} + /@pnpm/prune-lockfile@4.0.24: + resolution: {integrity: sha512-v0NA9ZkxUkaT9LxwCwN6JNrQ8ok1L7skxn9wk+1icLYKPQXgSNKap0zSAJeBtyNd9NXGXxO0QG8Noeto/MCAKg==} engines: {node: '>=14.6'} dependencies: '@pnpm/constants': 6.2.0 - '@pnpm/dependency-path': 1.1.1 + '@pnpm/dependency-path': 1.1.3 '@pnpm/lockfile-types': 4.3.6 '@pnpm/types': 8.10.0 ramda: /@pnpm/ramda@0.28.1 @@ -8324,13 +8324,13 @@ packages: strip-bom: 4.0.0 dev: true - /@pnpm/read-projects-context@7.0.8(@pnpm/logger@5.0.0): - resolution: {integrity: sha512-3auSQj5NIdYL/UPotVH0OzYa2NKvem+DcUzlhtz8FSjNhkS8oEizk+nx5C/KslWXPJHSN0+otukQcpQV09SFXA==} + /@pnpm/read-projects-context@7.0.10(@pnpm/logger@5.0.0): + resolution: {integrity: sha512-2mqFIW9/RfjkpKdfiI3XopBa25QQ2W2FBSToTY3EtPBBtfhXcrCoKZr62nWuSbCB3cknRkL46f9kXWDhqzsg1A==} engines: {node: '>=14.6'} peerDependencies: '@pnpm/logger': ^5.0.0 dependencies: - '@pnpm/lockfile-file': 7.0.2(@pnpm/logger@5.0.0) + '@pnpm/lockfile-file': 7.0.4(@pnpm/logger@5.0.0) '@pnpm/logger': 5.0.0 '@pnpm/modules-yaml': 11.1.0 '@pnpm/normalize-registries': 4.0.3 @@ -8338,20 +8338,20 @@ packages: realpath-missing: 1.1.0 dev: true - /@pnpm/real-hoist@1.1.3(typanion@3.12.1): - resolution: {integrity: sha512-XVqFGrI34KiBQfjcXYSllLNrd+4x09ZaChGwHJscy0WrGmHJ7CaqSHWgtSKLtF1kSC4uw3IXQ5hg9Cd29MpKjg==} + /@pnpm/real-hoist@1.1.5(typanion@3.12.1): + resolution: {integrity: sha512-7G8qLVfPZ3nmgnFig9G7C9j9xSniBdH2G9FOSp3/7DwX5xyZDOHlJRL4LD9/oqSsNTy0pmkYUU4sryY6ZvrEoQ==} engines: {node: '>=14.6'} dependencies: - '@pnpm/dependency-path': 1.1.1 + '@pnpm/dependency-path': 1.1.3 '@pnpm/error': 4.0.1 - '@pnpm/lockfile-utils': 5.0.4 + '@pnpm/lockfile-utils': 5.0.6 '@yarnpkg/nm': 4.0.0-rc.27(typanion@3.12.1) transitivePeerDependencies: - typanion dev: true - /@pnpm/registry-mock@3.3.0(typanion@3.12.1): - resolution: {integrity: sha512-Wi/6s3NdekAcDd/KkfziUfInjY+8+EhZrV4Ug5fjdt3b1RZnFJTmodi/i7oub9y9dZWPMKRaFQ8rFQ50Dcv0IQ==} + /@pnpm/registry-mock@3.4.0(typanion@3.12.1): + resolution: {integrity: sha512-M61ULPZS0ByO0gokTFmJCLvlb6W/idHp7Z6lIDQjKBII2z8DpFjI5D895F2MsNVxYLu3ZfZ3c3GISNtIbSFuPA==} engines: {node: '>=10.13'} hasBin: true dependencies: @@ -8394,23 +8394,23 @@ packages: cli-columns: 4.0.0 dev: true - /@pnpm/resolve-dependencies@29.2.4(@pnpm/logger@5.0.0)(typanion@3.12.1): - resolution: {integrity: sha512-38YkJviVAXuF+QhG9jER+fB9hIPToldfSnZ5BrRkjmkBBQkhatGs08LQd/Yl3ALqoOS5fg4/hOonsvUgwERHzQ==} + /@pnpm/resolve-dependencies@29.3.0(@pnpm/logger@5.0.0)(typanion@3.12.1): + resolution: {integrity: sha512-2mEVsT2s3CcbuJhzcez15JLm1rmM5YD5NW+W705ncPC0cQa3QV9tgeK7v9adVjG/3pmQaLA2KvbuoDCGzOW84Q==} engines: {node: '>=14.6'} peerDependencies: '@pnpm/logger': ^5.0.0 dependencies: '@pnpm/constants': 6.2.0 '@pnpm/core-loggers': 8.0.3(@pnpm/logger@5.0.0) - '@pnpm/dependency-path': 1.1.1 + '@pnpm/dependency-path': 1.1.3 '@pnpm/error': 4.0.1 '@pnpm/lockfile-types': 4.3.6 - '@pnpm/lockfile-utils': 5.0.4 + '@pnpm/lockfile-utils': 5.0.6 '@pnpm/logger': 5.0.0 '@pnpm/manifest-utils': 4.1.4(@pnpm/logger@5.0.0) - '@pnpm/npm-resolver': 15.0.6(@pnpm/logger@5.0.0) + '@pnpm/npm-resolver': 15.0.7(@pnpm/logger@5.0.0) '@pnpm/pick-registry-for-package': 4.0.3 - '@pnpm/prune-lockfile': 4.0.22 + '@pnpm/prune-lockfile': 4.0.24 '@pnpm/read-package-json': 7.0.5 '@pnpm/resolver-base': 9.1.5 '@pnpm/store-controller-types': 14.3.0 @@ -8644,7 +8644,7 @@ packages: /@types/byline@4.2.33: resolution: {integrity: sha512-LJYez7wrWcJQQDknqZtrZuExMGP0IXmPl1rOOGDqLbu+H7UNNRfKNuSxCBcQMLH1EfjeWidLedC/hCc5dDfBog==} dependencies: - '@types/node': 18.11.18 + '@types/node': 18.13.0 dev: true /@types/cacheable-request@6.0.3: @@ -8686,7 +8686,7 @@ packages: /@types/graceful-fs@4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 18.11.18 + '@types/node': 14.18.36 dev: true /@types/hosted-git-info@3.0.2: @@ -8802,6 +8802,10 @@ packages: /@types/node@18.11.18: resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} + /@types/node@18.13.0: + resolution: {integrity: sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==} + dev: true + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true @@ -9231,39 +9235,6 @@ packages: transitivePeerDependencies: - typanion - /@yarnpkg/core@4.0.0-rc.37(typanion@3.12.1): - resolution: {integrity: sha512-9XjdGqMtb7IUa3NmXCekZaTYsuZ3KY1q3on4xp8dYewi6kaZQR9bLX53z+Rab2O0FF2nizz03cpu5lLryUMV7w==} - engines: {node: '>=14.15.0'} - dependencies: - '@arcanis/slice-ansi': 1.1.1 - '@types/lodash': 4.14.181 - '@types/semver': 7.3.13 - '@types/treeify': 1.0.0 - '@yarnpkg/fslib': 3.0.0-rc.25 - '@yarnpkg/libzip': 3.0.0-rc.25(@yarnpkg/fslib@3.0.0-rc.25) - '@yarnpkg/parsers': 3.0.0-rc.37 - '@yarnpkg/shell': 4.0.0-rc.37(typanion@3.12.1) - camelcase: 5.3.1 - chalk: 3.0.0 - ci-info: 3.7.1 - clipanion: 3.2.0-rc.6(typanion@3.12.1) - cross-spawn: 7.0.3 - diff: 5.1.0 - globby: 11.1.0 - got: 11.8.6 - lodash: 4.17.21 - micromatch: 4.0.5 - p-limit: 2.3.0 - semver: 7.3.8 - strip-ansi: 6.0.1 - tar: 6.1.13 - tinylogic: 2.0.0 - treeify: 1.1.0 - tslib: 2.5.0 - tunnel: 0.0.6 - transitivePeerDependencies: - - typanion - /@yarnpkg/extensions@2.0.0-rc.9(@yarnpkg/core@4.0.0-rc.14): resolution: {integrity: sha512-WWXBCKyIhG4pkpS42erPUkxgPXt3NEjGb3ha+HlEKgSVdJThNFE9CmwSyDdfdiV3QhCDkZR2R0jQVmbrCrigRw==} engines: {node: '>=14.15.0'} @@ -9305,9 +9276,9 @@ packages: resolution: {integrity: sha512-KfoYI38XY0PjpPu+LGvRHxg3OFO+5nwbQy/c5FuLR0ipQkXcinS3JbG+de17Mf6QdKnBTcghA7mdrUKs5JbxyA==} engines: {node: '>=14.15.0'} dependencies: - '@yarnpkg/core': 4.0.0-rc.37(typanion@3.12.1) + '@yarnpkg/core': 4.0.0-rc.27(typanion@3.12.1) '@yarnpkg/fslib': 3.0.0-rc.25 - '@yarnpkg/pnp': 4.0.0-rc.37 + '@yarnpkg/pnp': 4.0.0-rc.38 transitivePeerDependencies: - typanion @@ -9341,8 +9312,8 @@ packages: '@yarnpkg/fslib': 3.0.0-rc.25 tslib: 1.14.1 - /@yarnpkg/pnp@4.0.0-rc.37: - resolution: {integrity: sha512-i77kN+zvj6QJvmr2TiWwXZu1eQCy+ijcQ2E6Xe1M/wskJn0nAJtWQy7svvDI5IWKlXnTxBGKkwQCnZJ7LvVowQ==} + /@yarnpkg/pnp@4.0.0-rc.38: + resolution: {integrity: sha512-bInHywHLXEq7O+u+Urb0LTE/FLiuGCM7Q3INgSFWboWZ4azij5Pdc36PeUVp7JtcDM2yPNjphZiK3uEHS4zHKg==} engines: {node: '>=14.15.0'} dependencies: '@types/node': 18.11.18 @@ -10530,7 +10501,7 @@ packages: object-assign: 4.1.1 vary: 1.1.2 - /cosmiconfig-typescript-loader@4.3.0(@types/node@18.11.18)(cosmiconfig@8.0.0)(ts-node@10.9.1)(typescript@4.9.4): + /cosmiconfig-typescript-loader@4.3.0(@types/node@14.18.36)(cosmiconfig@8.0.0)(ts-node@10.9.1)(typescript@4.9.4): resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -10539,9 +10510,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.11.18 + '@types/node': 14.18.36 cosmiconfig: 8.0.0 - ts-node: 10.9.1(@types/node@18.11.18)(typescript@4.9.4) + ts-node: 10.9.1(@types/node@14.18.36)(typescript@4.9.4) typescript: 4.9.4 dev: true @@ -13204,7 +13175,7 @@ packages: resolution: {integrity: sha512-O9doU/S1EBe+yp/mstQ0VpPwpv0Clgn68TkNwGxL6/usX/KUW9Arnn4ag8C3jc6qHcXznhsT5Na1liYzAsuAbQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.11.18 + '@types/node': 14.18.36 jest-util: 29.4.1 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -16533,37 +16504,6 @@ packages: yn: 3.1.1 dev: true - /ts-node@10.9.1(@types/node@18.11.18)(typescript@4.9.4): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 18.11.18 - acorn: 8.8.2 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.4 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: true - /ts-toolbelt@6.15.5: resolution: {integrity: sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==} dev: true @@ -17453,7 +17393,7 @@ time: /@pnpm/npm-package-arg@1.0.0: '2022-06-28T12:48:31.287Z' /@pnpm/os.env.path-extender@0.2.9: '2023-01-31T02:04:06.460Z' /@pnpm/ramda@0.28.1: '2022-08-03T13:56:59.597Z' - /@pnpm/registry-mock@3.3.0: '2023-01-31T01:42:28.175Z' + /@pnpm/registry-mock@3.4.0: '2023-02-08T00:47:00.662Z' /@pnpm/semver-diff@1.1.0: '2021-11-16T12:40:59.941Z' /@pnpm/tabtab@0.1.2: '2021-03-05T17:31:19.932Z' /@pnpm/types@8.9.0: '2022-11-09T23:07:02.862Z' diff --git a/pnpm/package.json b/pnpm/package.json index 9943f7f0e20..bae1074f755 100644 --- a/pnpm/package.json +++ b/pnpm/package.json @@ -60,7 +60,7 @@ "@pnpm/prepare": "workspace:*", "@pnpm/read-package-json": "workspace:*", "@pnpm/read-project-manifest": "workspace:*", - "@pnpm/registry-mock": "3.3.0", + "@pnpm/registry-mock": "3.4.0", "@pnpm/run-npm": "workspace:*", "@pnpm/tabtab": "^0.1.2", "@pnpm/test-fixtures": "workspace:*", diff --git a/releasing/plugin-commands-deploy/package.json b/releasing/plugin-commands-deploy/package.json index 54bde92eb7d..77aa4db7ada 100644 --- a/releasing/plugin-commands-deploy/package.json +++ b/releasing/plugin-commands-deploy/package.json @@ -42,7 +42,7 @@ "@pnpm/lockfile-types": "workspace:*", "@pnpm/plugin-commands-deploy": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.3.0" + "@pnpm/registry-mock": "3.4.0" }, "dependencies": { "@pnpm/cli-utils": "workspace:*", diff --git a/releasing/plugin-commands-publishing/package.json b/releasing/plugin-commands-publishing/package.json index a1ac5dcc2d2..9dd53e79b9c 100644 --- a/releasing/plugin-commands-publishing/package.json +++ b/releasing/plugin-commands-publishing/package.json @@ -38,7 +38,7 @@ "@pnpm/filter-workspace-packages": "workspace:*", "@pnpm/plugin-commands-publishing": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.3.0", + "@pnpm/registry-mock": "3.4.0", "@types/cross-spawn": "^6.0.2", "@types/is-windows": "^1.0.0", "@types/npm-packlist": "^3.0.0", diff --git a/resolving/npm-resolver/src/pickPackageFromMeta.ts b/resolving/npm-resolver/src/pickPackageFromMeta.ts index 4e91332a98a..ae035e7da26 100644 --- a/resolving/npm-resolver/src/pickPackageFromMeta.ts +++ b/resolving/npm-resolver/src/pickPackageFromMeta.ts @@ -124,10 +124,13 @@ function prioritizePreferredVersions ( const preferredVerSelsArr = Object.entries(preferredVerSels ?? {}) const versionsPrioritizer = new PreferredVersionsPrioritizer() for (const [preferredSelector, preferredSelectorType] of preferredVerSelsArr) { + const { selectorType, weight } = typeof preferredSelectorType === 'string' + ? { selectorType: preferredSelectorType, weight: 1 } + : preferredSelectorType if (preferredSelector === versionRange) continue - switch (preferredSelectorType) { + switch (selectorType) { case 'tag': { - versionsPrioritizer.add(meta['dist-tags'][preferredSelector]) + versionsPrioritizer.add(meta['dist-tags'][preferredSelector], weight) break } case 'range': { @@ -137,14 +140,14 @@ function prioritizePreferredVersions ( const versions = Object.keys(meta.versions) for (const version of versions) { if (semver.satisfies(version, preferredSelector, true)) { - versionsPrioritizer.add(version) + versionsPrioritizer.add(version, weight) } } break } case 'version': { if (meta.versions[preferredSelector]) { - versionsPrioritizer.add(preferredSelector) + versionsPrioritizer.add(preferredSelector, weight) } break } @@ -156,23 +159,23 @@ function prioritizePreferredVersions ( class PreferredVersionsPrioritizer { private preferredVersions: Record = {} - add (version: string) { + add (version: string, weight: number) { if (!this.preferredVersions[version]) { - this.preferredVersions[version] = 1 + this.preferredVersions[version] = weight } else { - this.preferredVersions[version]++ + this.preferredVersions[version] += weight } } versionsByPriority () { - const versionsByOccurrences = Object.entries(this.preferredVersions) - .reduce((acc, [version, occurrences]) => { - acc[occurrences] = acc[occurrences] ?? [] - acc[occurrences].push(version) + const versionsByWeight = Object.entries(this.preferredVersions) + .reduce((acc, [version, weight]) => { + acc[weight] = acc[weight] ?? [] + acc[weight].push(version) return acc }, {} as Record) - return Object.keys(versionsByOccurrences) + return Object.keys(versionsByWeight) .sort((a, b) => parseInt(b, 10) - parseInt(a, 10)) - .map((occurrences) => versionsByOccurrences[parseInt(occurrences, 10)]) + .map((weigth) => versionsByWeight[parseInt(weigth, 10)]) } } diff --git a/resolving/npm-resolver/test/index.ts b/resolving/npm-resolver/test/index.ts index 837057930a6..5a98f034e1e 100644 --- a/resolving/npm-resolver/test/index.ts +++ b/resolving/npm-resolver/test/index.ts @@ -607,6 +607,31 @@ test('prefer the version that is matched by more preferred selectors', async () expect(resolveResult!.id).toBe('registry.npmjs.org/is-positive/3.0.0') }) +test('prefer the version that has bigger weight in preferred selectors', async () => { + nock(registry) + .get('/is-positive') + .reply(200, isPositiveMeta) + + const resolveFromNpm = createResolveFromNpm({ + cacheDir: tempy.directory(), + }) + const resolveResult = await resolveFromNpm({ + alias: 'is-positive', + pref: '^3.0.0', + }, { + preferredVersions: { + 'is-positive': { + '^3.0.0': 'range', + '3.0.0': { selectorType: 'version', weight: 100 }, + '3.1.0': 'version', + }, + }, + registry, + }) + + expect(resolveResult!.id).toBe('registry.npmjs.org/is-positive/3.0.0') +}) + test('offline resolution fails when package meta not found in the store', async () => { const cacheDir = tempy.directory() const resolve = createResolveFromNpm({ diff --git a/resolving/resolver-base/src/index.ts b/resolving/resolver-base/src/index.ts index 3f466d2829b..9bf6f83271a 100644 --- a/resolving/resolver-base/src/index.ts +++ b/resolving/resolver-base/src/index.ts @@ -52,8 +52,19 @@ export interface WorkspacePackages { } } +// This weight is set for selectors that are used on direct dependencies. +// It is important to give a bigger weight to direct dependencies. +export const DIRECT_DEP_SELECTOR_WEIGHT = 1000 + +export type VersionSelectorType = 'version' | 'range' | 'tag' + export interface VersionSelectors { - [selector: string]: 'version' | 'range' | 'tag' + [selector: string]: VersionSelectorWithWeight | VersionSelectorType +} + +export interface VersionSelectorWithWeight { + selectorType: VersionSelectorType + weight: number } export interface PreferredVersions { diff --git a/reviewing/plugin-commands-licenses/package.json b/reviewing/plugin-commands-licenses/package.json index 086f01548c8..1de258b8ffd 100644 --- a/reviewing/plugin-commands-licenses/package.json +++ b/reviewing/plugin-commands-licenses/package.json @@ -38,7 +38,7 @@ "@pnpm/plugin-commands-installation": "workspace:*", "@pnpm/plugin-commands-licenses": "workspace:*", "@pnpm/read-package-json": "workspace:*", - "@pnpm/registry-mock": "3.3.0", + "@pnpm/registry-mock": "3.4.0", "@types/ramda": "0.28.20", "@types/wrap-ansi": "^8.0.1", "@types/zkochan__table": "npm:@types/table@6.0.0", diff --git a/reviewing/plugin-commands-listing/package.json b/reviewing/plugin-commands-listing/package.json index 34619caa9a9..1a4950bdf50 100644 --- a/reviewing/plugin-commands-listing/package.json +++ b/reviewing/plugin-commands-listing/package.json @@ -37,7 +37,7 @@ "@pnpm/plugin-commands-installation": "workspace:*", "@pnpm/plugin-commands-listing": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.3.0", + "@pnpm/registry-mock": "3.4.0", "@types/ramda": "0.28.20", "execa": "npm:safe-execa@0.1.2", "strip-ansi": "^6.0.1", diff --git a/reviewing/plugin-commands-outdated/package.json b/reviewing/plugin-commands-outdated/package.json index 36ed2723bca..2b927fa0a0d 100644 --- a/reviewing/plugin-commands-outdated/package.json +++ b/reviewing/plugin-commands-outdated/package.json @@ -38,7 +38,7 @@ "@pnpm/plugin-commands-installation": "workspace:*", "@pnpm/plugin-commands-outdated": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.3.0", + "@pnpm/registry-mock": "3.4.0", "@pnpm/test-fixtures": "workspace:*", "@types/ramda": "0.28.20", "@types/wrap-ansi": "^8.0.1", diff --git a/store/plugin-commands-store/package.json b/store/plugin-commands-store/package.json index d6615d1573e..1bcb6c12ced 100644 --- a/store/plugin-commands-store/package.json +++ b/store/plugin-commands-store/package.json @@ -37,7 +37,7 @@ "@pnpm/lockfile-file": "workspace:*", "@pnpm/plugin-commands-store": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.3.0", + "@pnpm/registry-mock": "3.4.0", "@types/archy": "0.0.32", "@types/ramda": "0.28.20", "@types/ssri": "^7.1.1",