diff --git a/.changeset/eight-walls-collect.md b/.changeset/eight-walls-collect.md new file mode 100644 index 0000000000..f2848a8dc5 --- /dev/null +++ b/.changeset/eight-walls-collect.md @@ -0,0 +1,5 @@ +--- +"pnpm": major +--- + +When automatically installing peer dependencies, use versions of the peers already present in the dependency graph. Even if they don't satisfy the wanted peer dependency ranges. diff --git a/.changeset/thirty-schools-behave.md b/.changeset/thirty-schools-behave.md new file mode 100644 index 0000000000..cb82ee57f9 --- /dev/null +++ b/.changeset/thirty-schools-behave.md @@ -0,0 +1,5 @@ +--- +"@pnpm/lockfile.preferred-versions": major +--- + +Initial release. diff --git a/__utils__/assert-project/package.json b/__utils__/assert-project/package.json index d583489109..12eefe12f4 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.25.0", + "@pnpm/registry-mock": "3.27.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 6852bf52dd..a6b9f370c8 100644 --- a/__utils__/assert-store/package.json +++ b/__utils__/assert-store/package.json @@ -40,7 +40,7 @@ "test": "pnpm pretest && pnpm run compile && jest" }, "dependencies": { - "@pnpm/registry-mock": "3.25.0", + "@pnpm/registry-mock": "3.27.0", "@pnpm/store.cafs": "workspace:*", "path-exists": "^4.0.0" }, diff --git a/exec/plugin-commands-rebuild/package.json b/exec/plugin-commands-rebuild/package.json index 1051f7dcf0..6b940715a6 100644 --- a/exec/plugin-commands-rebuild/package.json +++ b/exec/plugin-commands-rebuild/package.json @@ -35,7 +35,7 @@ "@pnpm/filter-workspace-packages": "workspace:*", "@pnpm/plugin-commands-rebuild": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.25.0", + "@pnpm/registry-mock": "3.27.0", "@pnpm/test-fixtures": "workspace:*", "@pnpm/test-ipc-server": "workspace:*", "@types/ramda": "0.28.20", diff --git a/exec/plugin-commands-script-runners/package.json b/exec/plugin-commands-script-runners/package.json index c0679204f9..9a53e07c42 100644 --- a/exec/plugin-commands-script-runners/package.json +++ b/exec/plugin-commands-script-runners/package.json @@ -34,7 +34,7 @@ "@pnpm/filter-workspace-packages": "workspace:*", "@pnpm/plugin-commands-script-runners": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.25.0", + "@pnpm/registry-mock": "3.27.0", "@pnpm/test-ipc-server": "workspace:*", "@types/is-windows": "^1.0.2", "@types/ramda": "0.28.20", diff --git a/lockfile/preferred-versions/README.md b/lockfile/preferred-versions/README.md new file mode 100644 index 0000000000..3f991fe75d --- /dev/null +++ b/lockfile/preferred-versions/README.md @@ -0,0 +1,13 @@ +# @pnpm/lockfile.preferred-versions + +> Get preferred version from lockfile + +## Install + +``` +pnpm add @pnpm/lockfile.preferred-versions +``` + +## License + +[MIT](LICENSE) diff --git a/lockfile/preferred-versions/package.json b/lockfile/preferred-versions/package.json new file mode 100644 index 0000000000..cacf4685f4 --- /dev/null +++ b/lockfile/preferred-versions/package.json @@ -0,0 +1,46 @@ +{ + "name": "@pnpm/lockfile.preferred-versions", + "version": "0.0.0", + "description": "Get preferred version from lockfile", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "engines": { + "node": ">=18.12" + }, + "files": [ + "lib", + "!*.map" + ], + "scripts": { + "lint": "eslint \"src/**/*.ts\"", + "test": "pnpm run compile", + "prepublishOnly": "pnpm run compile", + "compile": "tsc --build && pnpm run lint --fix" + }, + "repository": "https://github.com/pnpm/pnpm/blob/main/lockfile/preferred-versions", + "keywords": [ + "pnpm9", + "pnpm", + "shrinkwrap", + "lockfile" + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/pnpm/pnpm/issues" + }, + "homepage": "https://github.com/pnpm/pnpm/blob/main/lockfile/preferred-versions#readme", + "devDependencies": { + "@pnpm/lockfile.preferred-versions": "workspace:*" + }, + "dependencies": { + "@pnpm/lockfile-utils": "workspace:*", + "@pnpm/manifest-utils": "workspace:*", + "@pnpm/resolver-base": "workspace:*", + "@pnpm/types": "workspace:*", + "version-selector-type": "^3.0.0" + }, + "funding": "https://opencollective.com/pnpm", + "exports": { + ".": "./lib/index.js" + } +} diff --git a/pkg-manager/core/src/install/getPreferredVersions.ts b/lockfile/preferred-versions/src/index.ts similarity index 74% rename from pkg-manager/core/src/install/getPreferredVersions.ts rename to lockfile/preferred-versions/src/index.ts index 071cc5f47d..cb36ca8d91 100644 --- a/pkg-manager/core/src/install/getPreferredVersions.ts +++ b/lockfile/preferred-versions/src/index.ts @@ -4,24 +4,6 @@ import { DIRECT_DEP_SELECTOR_WEIGHT, type PreferredVersions } from '@pnpm/resolv import { type DependencyManifest, type ProjectManifest } from '@pnpm/types' import getVersionSelectorType from 'version-selector-type' -export function getAllUniqueSpecs (manifests: DependencyManifest[]) { - const allSpecs: Record = {} - const ignored = new Set() - for (const manifest of manifests) { - const specs = getAllDependenciesFromManifest(manifest) - for (const [name, spec] of Object.entries(specs)) { - if (ignored.has(name)) continue - if (allSpecs[name] != null && allSpecs[name] !== spec || spec.includes(':')) { - ignored.add(name) - delete allSpecs[name] - continue - } - allSpecs[name] = spec - } - } - return allSpecs -} - export function getPreferredVersionsFromLockfileAndManifests ( snapshots: PackageSnapshots | undefined, manifests: Array diff --git a/lockfile/preferred-versions/tsconfig.json b/lockfile/preferred-versions/tsconfig.json new file mode 100644 index 0000000000..1df5bb5f8c --- /dev/null +++ b/lockfile/preferred-versions/tsconfig.json @@ -0,0 +1,26 @@ +{ + "extends": "@pnpm/tsconfig", + "compilerOptions": { + "outDir": "lib", + "rootDir": "src" + }, + "include": [ + "src/**/*.ts", + "../../__typings__/**/*.d.ts" + ], + "references": [ + { + "path": "../../packages/types" + }, + { + "path": "../../pkg-manifest/manifest-utils" + }, + { + "path": "../../resolving/resolver-base" + }, + { + "path": "../lockfile-utils" + } + ], + "composite": true +} diff --git a/lockfile/preferred-versions/tsconfig.lint.json b/lockfile/preferred-versions/tsconfig.lint.json new file mode 100644 index 0000000000..1bbe711971 --- /dev/null +++ b/lockfile/preferred-versions/tsconfig.lint.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "include": [ + "src/**/*.ts", + "test/**/*.ts", + "../../__typings__/**/*.d.ts" + ] +} diff --git a/package.json b/package.json index c6aabb0500..105b8110b0 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "@commitlint/prompt-cli": "^17.8.1", "@pnpm/eslint-config": "workspace:*", "@pnpm/meta-updater": "1.0.0", - "@pnpm/registry-mock": "3.25.0", + "@pnpm/registry-mock": "3.27.0", "@pnpm/tsconfig": "workspace:*", "@pnpm/worker": "workspace:*", "@types/jest": "^29.5.12", diff --git a/patching/plugin-commands-patching/package.json b/patching/plugin-commands-patching/package.json index 6700de999d..c6974b9371 100644 --- a/patching/plugin-commands-patching/package.json +++ b/patching/plugin-commands-patching/package.json @@ -34,7 +34,7 @@ "@pnpm/filter-workspace-packages": "workspace:*", "@pnpm/plugin-commands-patching": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.25.0", + "@pnpm/registry-mock": "3.27.0", "@pnpm/test-fixtures": "workspace:*", "@types/normalize-path": "^3.0.2", "@types/ramda": "0.28.20", diff --git a/pkg-manager/core/package.json b/pkg-manager/core/package.json index 99263e36e6..3a92b742bb 100644 --- a/pkg-manager/core/package.json +++ b/pkg-manager/core/package.json @@ -37,6 +37,7 @@ "@pnpm/lockfile-to-pnp": "workspace:*", "@pnpm/lockfile-utils": "workspace:*", "@pnpm/lockfile-walker": "workspace:*", + "@pnpm/lockfile.preferred-versions": "workspace:*", "@pnpm/manifest-utils": "workspace:*", "@pnpm/matcher": "workspace:*", "@pnpm/modules-cleaner": "workspace:*", @@ -82,7 +83,7 @@ "@pnpm/lockfile-types": "workspace:*", "@pnpm/package-store": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.25.0", + "@pnpm/registry-mock": "3.27.0", "@pnpm/store-path": "workspace:*", "@pnpm/store.cafs": "workspace:*", "@pnpm/test-fixtures": "workspace:*", diff --git a/pkg-manager/core/src/getPeerDependencyIssues.ts b/pkg-manager/core/src/getPeerDependencyIssues.ts index f9eb012450..bdfb2ef5fd 100644 --- a/pkg-manager/core/src/getPeerDependencyIssues.ts +++ b/pkg-manager/core/src/getPeerDependencyIssues.ts @@ -1,8 +1,8 @@ +import { getPreferredVersionsFromLockfileAndManifests } from '@pnpm/lockfile.preferred-versions' import { resolveDependencies, getWantedDependencies } from '@pnpm/resolve-dependencies' import { type PeerDependencyIssuesByProjects } from '@pnpm/types' import { getContext, type GetContextOptions, type ProjectOptions } from '@pnpm/get-context' import { createReadPackageHook } from '@pnpm/hooks.read-package-hook' -import { getPreferredVersionsFromLockfileAndManifests } from './install/getPreferredVersions' import { type InstallOptions } from './install/extendInstallOptions' import { DEFAULT_REGISTRIES } from '@pnpm/normalize-registries' diff --git a/pkg-manager/core/src/install/index.ts b/pkg-manager/core/src/install/index.ts index 7720a2fdbb..953022583c 100644 --- a/pkg-manager/core/src/install/index.ts +++ b/pkg-manager/core/src/install/index.ts @@ -34,8 +34,9 @@ import { } from '@pnpm/lockfile-file' import { writePnpFile } from '@pnpm/lockfile-to-pnp' import { extendProjectsWithTargetDirs, satisfiesPackageManifest } from '@pnpm/lockfile-utils' +import { getPreferredVersionsFromLockfileAndManifests } from '@pnpm/lockfile.preferred-versions' import { logger, globalInfo, streamParser } from '@pnpm/logger' -import { getAllDependenciesFromManifest } from '@pnpm/manifest-utils' +import { getAllDependenciesFromManifest, getAllUniqueSpecs } from '@pnpm/manifest-utils' import { writeModulesManifest } from '@pnpm/modules-yaml' import { readModulesDir } from '@pnpm/read-modules-dir' import { safeReadProjectManifestOnly } from '@pnpm/read-project-manifest' @@ -82,7 +83,6 @@ import { type InstallOptions, type ProcessedInstallOptions as StrictInstallOptions, } from './extendInstallOptions' -import { getAllUniqueSpecs, getPreferredVersionsFromLockfileAndManifests } from './getPreferredVersions' import { linkPackages } from './link' import { reportPeerDependencyIssues } from './reportPeerDependencyIssues' diff --git a/pkg-manager/core/test/install/autoInstallPeers.ts b/pkg-manager/core/test/install/autoInstallPeers.ts index 80a1ceed1f..52786c6d12 100644 --- a/pkg-manager/core/test/install/autoInstallPeers.ts +++ b/pkg-manager/core/test/install/autoInstallPeers.ts @@ -602,3 +602,13 @@ test('do not override the direct dependency with an auto installed peer dependen const lockfile = project.readLockfile() expect(lockfile.importers['.'].dependencies?.rxjs.version).toStrictEqual('6.6.7') }) + +test('auto install hoisted peer dependency', async () => { + await addDistTag({ package: '@pnpm.e2e/peer-c', version: '1.0.0', distTag: 'latest' }) + const project = prepareEmpty() + await addDependenciesToPackage({}, ['@pnpm.e2e/has-peer-c-in-deps@1.0.0', '@pnpm.e2e/abc'], testDefaults({ autoInstallPeers: true })) + const lockfile = project.readLockfile() + expect(Object.keys(lockfile.snapshots).filter((depPath) => depPath.startsWith('@pnpm.e2e/peer-c@'))).toStrictEqual([ + '@pnpm.e2e/peer-c@2.0.0', + ]) +}) diff --git a/pkg-manager/core/tsconfig.json b/pkg-manager/core/tsconfig.json index f0a4a8cbf4..f689967d6d 100644 --- a/pkg-manager/core/tsconfig.json +++ b/pkg-manager/core/tsconfig.json @@ -72,6 +72,9 @@ { "path": "../../lockfile/lockfile-walker" }, + { + "path": "../../lockfile/preferred-versions" + }, { "path": "../../lockfile/prune-lockfile" }, diff --git a/pkg-manager/headless/package.json b/pkg-manager/headless/package.json index 637a29e0a9..c419a844d0 100644 --- a/pkg-manager/headless/package.json +++ b/pkg-manager/headless/package.json @@ -23,7 +23,7 @@ "@pnpm/package-store": "workspace:*", "@pnpm/prepare": "workspace:*", "@pnpm/read-projects-context": "workspace:*", - "@pnpm/registry-mock": "3.25.0", + "@pnpm/registry-mock": "3.27.0", "@pnpm/store-path": "workspace:*", "@pnpm/store.cafs": "workspace:*", "@pnpm/test-fixtures": "workspace:*", diff --git a/pkg-manager/package-requester/package.json b/pkg-manager/package-requester/package.json index debcac4265..6279fa4908 100644 --- a/pkg-manager/package-requester/package.json +++ b/pkg-manager/package-requester/package.json @@ -61,7 +61,7 @@ "@pnpm/client": "workspace:*", "@pnpm/create-cafs-store": "workspace:*", "@pnpm/package-requester": "workspace:*", - "@pnpm/registry-mock": "3.25.0", + "@pnpm/registry-mock": "3.27.0", "@pnpm/test-fixtures": "workspace:*", "@types/normalize-path": "^3.0.2", "@types/ramda": "0.28.20", diff --git a/pkg-manager/plugin-commands-installation/package.json b/pkg-manager/plugin-commands-installation/package.json index f686e4c0c2..10430b96e9 100644 --- a/pkg-manager/plugin-commands-installation/package.json +++ b/pkg-manager/plugin-commands-installation/package.json @@ -34,7 +34,7 @@ "@pnpm/modules-yaml": "workspace:*", "@pnpm/plugin-commands-installation": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.25.0", + "@pnpm/registry-mock": "3.27.0", "@pnpm/test-fixtures": "workspace:*", "@pnpm/test-ipc-server": "workspace:*", "@types/proxyquire": "^1.3.31", diff --git a/pkg-manager/resolve-dependencies/package.json b/pkg-manager/resolve-dependencies/package.json index 1c4ab65146..a5682dc91c 100644 --- a/pkg-manager/resolve-dependencies/package.json +++ b/pkg-manager/resolve-dependencies/package.json @@ -35,6 +35,7 @@ "@pnpm/error": "workspace:*", "@pnpm/lockfile-types": "workspace:*", "@pnpm/lockfile-utils": "workspace:*", + "@pnpm/lockfile.preferred-versions": "workspace:*", "@pnpm/manifest-utils": "workspace:*", "@pnpm/npm-resolver": "workspace:*", "@pnpm/pick-fetcher": "workspace:*", diff --git a/pkg-manager/resolve-dependencies/src/resolveDependencies.ts b/pkg-manager/resolve-dependencies/src/resolveDependencies.ts index 263edb1002..a4976da00a 100644 --- a/pkg-manager/resolve-dependencies/src/resolveDependencies.ts +++ b/pkg-manager/resolve-dependencies/src/resolveDependencies.ts @@ -38,6 +38,7 @@ import { type Registries, } from '@pnpm/types' import * as dp from '@pnpm/dependency-path' +import { getPreferredVersionsFromLockfileAndManifests } from '@pnpm/lockfile.preferred-versions' import normalizePath from 'normalize-path' import exists from 'path-exists' import pDefer from 'p-defer' @@ -131,6 +132,7 @@ export interface ResolutionContext { autoInstallPeersFromHighestMatch: boolean allowBuild?: (pkgName: string) => boolean allowedDeprecatedVersions: AllowedDeprecatedVersions + allPreferredVersions?: PreferredVersions appliedPatches: Set updatedSet: Set defaultTag: string @@ -287,6 +289,9 @@ export async function resolveRootDependencies ( ctx: ResolutionContext, importers: ImporterToResolve[] ): Promise { + if (ctx.autoInstallPeers) { + ctx.allPreferredVersions = getPreferredVersionsFromLockfileAndManifests(ctx.wantedLockfile.packages, []) + } const { pkgAddressesByImportersWithoutPeers, publishedBy, time } = await resolveDependenciesOfImporters(ctx, importers) const pkgAddressesByImporters = await Promise.all(zipWith(async (importerResolutionResult, { parentPkgAliases, preferredVersions, options }) => { const pkgAddresses = importerResolutionResult.pkgAddresses @@ -307,7 +312,14 @@ export async function resolveRootDependencies ( } } if (!Object.keys(importerResolutionResult.missingPeers).length) break - const wantedDependencies = getNonDevWantedDependencies({ dependencies: importerResolutionResult.missingPeers }) + const dependencies = Object.fromEntries( + Object.entries(importerResolutionResult.missingPeers) + .map(([peerName, peerRange]) => { + if (!ctx.allPreferredVersions![peerName]) return [peerName, peerRange] + return [peerName, Object.keys(ctx.allPreferredVersions![peerName]).join(' || ')] + }) + ) + const wantedDependencies = getNonDevWantedDependencies({ dependencies }) // eslint-disable-next-line no-await-in-loop const resolveDependenciesResult = await resolveDependencies(ctx, preferredVersions, wantedDependencies, { @@ -1152,6 +1164,13 @@ async function resolveDependency ( pkgResponse.body.id = encodePkgId(pkgResponse.body.id) + if (ctx.allPreferredVersions && pkgResponse.body.manifest?.version) { + if (!ctx.allPreferredVersions[pkgResponse.body.manifest.name]) { + ctx.allPreferredVersions[pkgResponse.body.manifest.name] = {} + } + ctx.allPreferredVersions[pkgResponse.body.manifest.name][pkgResponse.body.manifest.version] = 'version' + } + if ( !pkgResponse.body.updated && options.currentDepth === Math.max(0, options.updateDepth) && diff --git a/pkg-manager/resolve-dependencies/tsconfig.json b/pkg-manager/resolve-dependencies/tsconfig.json index 7cf2357d61..318173ae17 100644 --- a/pkg-manager/resolve-dependencies/tsconfig.json +++ b/pkg-manager/resolve-dependencies/tsconfig.json @@ -21,6 +21,9 @@ { "path": "../../lockfile/lockfile-utils" }, + { + "path": "../../lockfile/preferred-versions" + }, { "path": "../../lockfile/prune-lockfile" }, diff --git a/pkg-manifest/manifest-utils/src/getAllUniqueSpecs.ts b/pkg-manifest/manifest-utils/src/getAllUniqueSpecs.ts new file mode 100644 index 0000000000..e3cfbb7882 --- /dev/null +++ b/pkg-manifest/manifest-utils/src/getAllUniqueSpecs.ts @@ -0,0 +1,20 @@ +import { type DependencyManifest } from '@pnpm/types' +import { getAllDependenciesFromManifest } from './getAllDependenciesFromManifest' + +export function getAllUniqueSpecs (manifests: DependencyManifest[]) { + const allSpecs: Record = {} + const ignored = new Set() + for (const manifest of manifests) { + const specs = getAllDependenciesFromManifest(manifest) + for (const [name, spec] of Object.entries(specs)) { + if (ignored.has(name)) continue + if (allSpecs[name] != null && allSpecs[name] !== spec || spec.includes(':')) { + ignored.add(name) + delete allSpecs[name] + continue + } + allSpecs[name] = spec + } + } + return allSpecs +} diff --git a/pkg-manifest/manifest-utils/src/index.ts b/pkg-manifest/manifest-utils/src/index.ts index bbccf74979..374682a3b3 100644 --- a/pkg-manifest/manifest-utils/src/index.ts +++ b/pkg-manifest/manifest-utils/src/index.ts @@ -3,13 +3,14 @@ import { type IncludedDependencies, type ProjectManifest, } from '@pnpm/types' +import { getAllUniqueSpecs } from './getAllUniqueSpecs' import { getSpecFromPackageManifest } from './getSpecFromPackageManifest' export * from './getPref' export * from './updateProjectManifestObject' export * from './getDependencyTypeFromManifest' -export { getSpecFromPackageManifest } +export { getSpecFromPackageManifest, getAllUniqueSpecs } export function filterDependenciesByType ( manifest: ProjectManifest, diff --git a/pkg-manager/core/src/install/getPreferredVersions.test.ts b/pkg-manifest/manifest-utils/test/getAllUniqueSpecs.test.ts similarity index 88% rename from pkg-manager/core/src/install/getPreferredVersions.test.ts rename to pkg-manifest/manifest-utils/test/getAllUniqueSpecs.test.ts index 97f7e5cf69..2c0411e4f0 100644 --- a/pkg-manager/core/src/install/getPreferredVersions.test.ts +++ b/pkg-manifest/manifest-utils/test/getAllUniqueSpecs.test.ts @@ -1,4 +1,4 @@ -import { getAllUniqueSpecs } from './getPreferredVersions' +import { getAllUniqueSpecs } from '@pnpm/manifest-utils' test('getAllUniqueSpecs()', () => { expect(getAllUniqueSpecs([ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 568680d762..a82d9c0f3e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -72,8 +72,8 @@ importers: specifier: 1.0.0 version: 1.0.0 '@pnpm/registry-mock': - specifier: 3.25.0 - version: 3.25.0(typanion@3.14.0) + specifier: 3.27.0 + version: 3.27.0(typanion@3.14.0) '@pnpm/tsconfig': specifier: workspace:* version: link:__utils__/tsconfig @@ -190,8 +190,8 @@ importers: specifier: workspace:* version: link:../../pkg-manager/modules-yaml '@pnpm/registry-mock': - specifier: 3.25.0 - version: 3.25.0(typanion@3.14.0) + specifier: 3.27.0 + version: 3.27.0(typanion@3.14.0) '@pnpm/types': specifier: workspace:* version: link:../../packages/types @@ -224,8 +224,8 @@ importers: __utils__/assert-store: dependencies: '@pnpm/registry-mock': - specifier: 3.25.0 - version: 3.25.0(typanion@3.14.0) + specifier: 3.27.0 + version: 3.27.0(typanion@3.14.0) '@pnpm/store.cafs': specifier: workspace:* version: link:../../store/cafs @@ -1337,8 +1337,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.25.0 - version: 3.25.0(typanion@3.14.0) + specifier: 3.27.0 + version: 3.27.0(typanion@3.14.0) '@pnpm/test-fixtures': specifier: workspace:* version: link:../../__utils__/test-fixtures @@ -1458,8 +1458,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.25.0 - version: 3.25.0(typanion@3.14.0) + specifier: 3.27.0 + version: 3.27.0(typanion@3.14.0) '@pnpm/test-ipc-server': specifier: workspace:* version: link:../../__utils__/test-ipc-server @@ -2408,6 +2408,28 @@ importers: specifier: ^1.0.1 version: 1.0.1 + lockfile/preferred-versions: + dependencies: + '@pnpm/lockfile-utils': + specifier: workspace:* + version: link:../lockfile-utils + '@pnpm/manifest-utils': + specifier: workspace:* + version: link:../../pkg-manifest/manifest-utils + '@pnpm/resolver-base': + specifier: workspace:* + version: link:../../resolving/resolver-base + '@pnpm/types': + specifier: workspace:* + version: link:../../packages/types + version-selector-type: + specifier: ^3.0.0 + version: 3.0.0 + devDependencies: + '@pnpm/lockfile.preferred-versions': + specifier: workspace:* + version: 'link:' + lockfile/prune-lockfile: dependencies: '@pnpm/constants': @@ -2957,8 +2979,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.25.0 - version: 3.25.0(typanion@3.14.0) + specifier: 3.27.0 + version: 3.27.0(typanion@3.14.0) '@pnpm/test-fixtures': specifier: workspace:* version: link:../../__utils__/test-fixtures @@ -3083,6 +3105,9 @@ importers: '@pnpm/lockfile-walker': specifier: workspace:* version: link:../../lockfile/lockfile-walker + '@pnpm/lockfile.preferred-versions': + specifier: workspace:* + version: link:../../lockfile/preferred-versions '@pnpm/logger': specifier: ^5.0.0 version: 5.0.0 @@ -3220,8 +3245,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.25.0 - version: 3.25.0(typanion@3.14.0) + specifier: 3.27.0 + version: 3.27.0(typanion@3.14.0) '@pnpm/store-path': specifier: workspace:* version: link:../../store/store-path @@ -3502,8 +3527,8 @@ importers: specifier: workspace:* version: link:../read-projects-context '@pnpm/registry-mock': - specifier: 3.25.0 - version: 3.25.0(typanion@3.14.0) + specifier: 3.27.0 + version: 3.27.0(typanion@3.14.0) '@pnpm/store-path': specifier: workspace:* version: link:../../store/store-path @@ -3859,8 +3884,8 @@ importers: specifier: workspace:* version: 'link:' '@pnpm/registry-mock': - specifier: 3.25.0 - version: 3.25.0(typanion@3.14.0) + specifier: 3.27.0 + version: 3.27.0(typanion@3.14.0) '@pnpm/test-fixtures': specifier: workspace:* version: link:../../__utils__/test-fixtures @@ -4052,8 +4077,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.25.0 - version: 3.25.0(typanion@3.14.0) + specifier: 3.27.0 + version: 3.27.0(typanion@3.14.0) '@pnpm/test-fixtures': specifier: workspace:* version: link:../../__utils__/test-fixtures @@ -4216,6 +4241,9 @@ importers: '@pnpm/lockfile-utils': specifier: workspace:* version: link:../../lockfile/lockfile-utils + '@pnpm/lockfile.preferred-versions': + specifier: workspace:* + version: link:../../lockfile/preferred-versions '@pnpm/logger': specifier: ^5.0.0 version: 5.0.0 @@ -4615,8 +4643,8 @@ importers: specifier: workspace:* version: link:../pkg-manifest/read-project-manifest '@pnpm/registry-mock': - specifier: 3.25.0 - version: 3.25.0(typanion@3.14.0) + specifier: 3.27.0 + version: 3.27.0(typanion@3.14.0) '@pnpm/run-npm': specifier: workspace:* version: link:../exec/run-npm @@ -4875,8 +4903,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.25.0 - version: 3.25.0(typanion@3.14.0) + specifier: 3.27.0 + version: 3.27.0(typanion@3.14.0) releasing/plugin-commands-publishing: dependencies: @@ -4975,8 +5003,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.25.0 - version: 3.25.0(typanion@3.14.0) + specifier: 3.27.0 + version: 3.27.0(typanion@3.14.0) '@pnpm/test-ipc-server': specifier: workspace:* version: link:../../__utils__/test-ipc-server @@ -5544,8 +5572,8 @@ importers: specifier: workspace:* version: link:../../pkg-manifest/read-package-json '@pnpm/registry-mock': - specifier: 3.25.0 - version: 3.25.0(typanion@3.14.0) + specifier: 3.27.0 + version: 3.27.0(typanion@3.14.0) '@pnpm/test-fixtures': specifier: workspace:* version: link:../../__utils__/test-fixtures @@ -5611,8 +5639,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.25.0 - version: 3.25.0(typanion@3.14.0) + specifier: 3.27.0 + version: 3.27.0(typanion@3.14.0) '@types/ramda': specifier: 0.28.20 version: 0.28.20 @@ -5705,8 +5733,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.25.0 - version: 3.25.0(typanion@3.14.0) + specifier: 3.27.0 + version: 3.27.0(typanion@3.14.0) '@pnpm/test-fixtures': specifier: workspace:* version: link:../../__utils__/test-fixtures @@ -6040,8 +6068,8 @@ importers: specifier: workspace:* version: link:../../__utils__/prepare '@pnpm/registry-mock': - specifier: 3.25.0 - version: 3.25.0(typanion@3.14.0) + specifier: 3.27.0 + version: 3.27.0(typanion@3.14.0) '@types/archy': specifier: 0.0.33 version: 0.0.33 @@ -6750,6 +6778,10 @@ packages: resolution: {integrity: sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==} engines: {node: '>=6.9.0'} + '@babel/runtime@7.24.1': + resolution: {integrity: sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==} + engines: {node: '>=6.9.0'} + '@babel/template@7.24.0': resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} engines: {node: '>=6.9.0'} @@ -7595,8 +7627,8 @@ packages: resolution: {integrity: sha512-MDXuQpYFbabSXzAnqP7VIQqBx5Z1fzOhzB/3YmIXJ+tE7Wue//IR3itMSYlWeaFLo1G5PCJklM2zBdvggRw1nw==} engines: {node: '>=16.14'} - '@pnpm/registry-mock@3.25.0': - resolution: {integrity: sha512-rSKgbINc7T9s0hn8K/YHTJtMaUG2LWmXybzmiVNwDwrNx1SMHbLsZ+QafHz0wyktQhPQB2274BAd72jYLgFHFg==} + '@pnpm/registry-mock@3.27.0': + resolution: {integrity: sha512-z6ETaTye2uVGhMHYWVhy3SOxW7oMyAkcOZn5KauSitm3tdv/kt51tMWSFKa3zmHeYDVDlUzhmxLyq1u7lDFVzg==} engines: {node: '>=10.13'} hasBin: true @@ -9437,8 +9469,8 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-redact@3.4.0: - resolution: {integrity: sha512-2gwPvyna0zwBdxKnng1suu/dTL5s8XEy2ZqH8mwDUwJdDkV8w5kp+JV26mupdK68HmPMbm6yjW9m7/Ys/BHEHg==} + fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} engines: {node: '>=6'} fast-safe-stringify@2.1.1: @@ -13171,6 +13203,10 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 + '@babel/runtime@7.24.1': + dependencies: + regenerator-runtime: 0.14.1 + '@babel/template@7.24.0': dependencies: '@babel/code-frame': 7.23.5 @@ -14559,7 +14595,7 @@ snapshots: strip-bom: 4.0.0 dev: true - '@pnpm/registry-mock@3.25.0(typanion@3.14.0)': + '@pnpm/registry-mock@3.27.0(typanion@3.14.0)': dependencies: anonymous-npm-registry-client: 0.2.0 execa: 5.1.1 @@ -17011,7 +17047,7 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-redact@3.4.0: {} + fast-redact@3.5.0: {} fast-safe-stringify@2.1.1: {} @@ -19445,7 +19481,7 @@ snapshots: pino@6.14.0: dependencies: - fast-redact: 3.4.0 + fast-redact: 3.5.0 fast-safe-stringify: 2.1.1 flatstr: 1.0.12 pino-std-serializers: 3.2.0 @@ -21391,7 +21427,7 @@ snapshots: yup@0.32.11: dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.1 '@types/lodash': 4.17.0 lodash: 4.17.21 lodash-es: 4.17.21 diff --git a/pnpm/package.json b/pnpm/package.json index bd7addae18..904734046a 100644 --- a/pnpm/package.json +++ b/pnpm/package.json @@ -65,7 +65,7 @@ "@pnpm/prepare": "workspace:*", "@pnpm/read-package-json": "workspace:*", "@pnpm/read-project-manifest": "workspace:*", - "@pnpm/registry-mock": "3.25.0", + "@pnpm/registry-mock": "3.27.0", "@pnpm/run-npm": "workspace:*", "@pnpm/tabtab": "^0.5.2", "@pnpm/test-fixtures": "workspace:*", diff --git a/releasing/plugin-commands-deploy/package.json b/releasing/plugin-commands-deploy/package.json index c59f042dd7..14d0c1c170 100644 --- a/releasing/plugin-commands-deploy/package.json +++ b/releasing/plugin-commands-deploy/package.json @@ -39,7 +39,7 @@ "@pnpm/lockfile-types": "workspace:*", "@pnpm/plugin-commands-deploy": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.25.0" + "@pnpm/registry-mock": "3.27.0" }, "dependencies": { "@pnpm/cli-utils": "workspace:*", diff --git a/releasing/plugin-commands-publishing/package.json b/releasing/plugin-commands-publishing/package.json index 4d24a977e0..1710db09ce 100644 --- a/releasing/plugin-commands-publishing/package.json +++ b/releasing/plugin-commands-publishing/package.json @@ -35,7 +35,7 @@ "@pnpm/filter-workspace-packages": "workspace:*", "@pnpm/plugin-commands-publishing": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.25.0", + "@pnpm/registry-mock": "3.27.0", "@pnpm/test-ipc-server": "workspace:*", "@types/cross-spawn": "^6.0.6", "@types/is-windows": "^1.0.2", diff --git a/reviewing/plugin-commands-licenses/package.json b/reviewing/plugin-commands-licenses/package.json index c11c3821d8..a3daf8d121 100644 --- a/reviewing/plugin-commands-licenses/package.json +++ b/reviewing/plugin-commands-licenses/package.json @@ -36,7 +36,7 @@ "@pnpm/plugin-commands-licenses": "workspace:*", "@pnpm/prepare": "workspace:*", "@pnpm/read-package-json": "workspace:*", - "@pnpm/registry-mock": "3.25.0", + "@pnpm/registry-mock": "3.27.0", "@pnpm/test-fixtures": "workspace:*", "@types/ramda": "0.28.20", "@types/semver": "7.5.3", diff --git a/reviewing/plugin-commands-listing/package.json b/reviewing/plugin-commands-listing/package.json index 02989812ca..d893e615f6 100644 --- a/reviewing/plugin-commands-listing/package.json +++ b/reviewing/plugin-commands-listing/package.json @@ -34,7 +34,7 @@ "@pnpm/plugin-commands-installation": "workspace:*", "@pnpm/plugin-commands-listing": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.25.0", + "@pnpm/registry-mock": "3.27.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 c06fea6ff5..dbfe0cccd3 100644 --- a/reviewing/plugin-commands-outdated/package.json +++ b/reviewing/plugin-commands-outdated/package.json @@ -35,7 +35,7 @@ "@pnpm/plugin-commands-installation": "workspace:*", "@pnpm/plugin-commands-outdated": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.25.0", + "@pnpm/registry-mock": "3.27.0", "@pnpm/test-fixtures": "workspace:*", "@types/ramda": "0.28.20", "@types/wrap-ansi": "8.0.2", diff --git a/store/plugin-commands-store/package.json b/store/plugin-commands-store/package.json index 2d92f2c714..9ed643fe43 100644 --- a/store/plugin-commands-store/package.json +++ b/store/plugin-commands-store/package.json @@ -34,7 +34,7 @@ "@pnpm/lockfile-file": "workspace:*", "@pnpm/plugin-commands-store": "workspace:*", "@pnpm/prepare": "workspace:*", - "@pnpm/registry-mock": "3.25.0", + "@pnpm/registry-mock": "3.27.0", "@types/archy": "0.0.33", "@types/ramda": "0.28.20", "@types/ssri": "^7.1.5",