fix: give priority to packages installed in the root, when deduping (#6054)

This commit is contained in:
Zoltan Kochan
2023-02-08 13:19:40 +02:00
committed by GitHub
parent 05f835446e
commit 029143cfff
26 changed files with 281 additions and 259 deletions

View File

@@ -0,0 +1,5 @@
---
"@pnpm/resolver-base": minor
---
Version selectors may have weights optionally.

View File

@@ -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).

View File

@@ -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",

View File

@@ -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": {

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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": {

View File

@@ -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",

View File

@@ -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'
}
}

View File

@@ -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')
})

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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,

386
pnpm-lock.yaml generated
View File

@@ -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'

View File

@@ -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:*",

View File

@@ -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:*",

View File

@@ -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",

View File

@@ -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<string, number> = {}
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<number, string[]>)
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)])
}
}

View File

@@ -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({

View File

@@ -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 {

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",