From 1ecda5050282c8aa718c717f2b4284b4d5f387ef Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Mon, 4 Mar 2024 23:31:01 +0100 Subject: [PATCH] feat(lockfile)!: dividing "packages" field to "packages" and "snapshots" (#7700) close #7685 --- .meta-updater/src/index.ts | 3 +- __patches__/@zkochan__js-yaml@0.0.6.patch | 13 + __utils__/assert-project/src/index.ts | 6 +- lockfile/lockfile-file/package.json | 1 + .../src/lockfileFormatConverters.ts | 66 +++- .../test/__snapshots__/write.test.ts.snap | 12 +- .../test/lockfileV6Converters.test.ts | 16 +- lockfile/lockfile-file/tsconfig.json | 3 + lockfile/lockfile-types/src/index.ts | 18 + .../lockfile-types/src/lockfileFileTypes.ts | 9 +- package.json | 3 +- packages/make-dedicated-lockfile/package.json | 4 +- .../test/fixtures/fixture/pnpm-lock.yaml | 144 +++++--- .../make-dedicated-lockfile/test/index.ts | 13 +- pkg-manager/core/test/install/aliases.ts | 24 +- .../core/test/install/autoInstallPeers.ts | 30 +- pkg-manager/core/test/install/dedupe.ts | 4 +- .../test/install/defaultPeerDependencies.ts | 10 +- .../test/install/excludeLinksFromLockfile.ts | 4 +- pkg-manager/core/test/install/fixLockfile.ts | 14 +- pkg-manager/core/test/install/fromRepo.ts | 4 +- .../test/install/gitBranchLockfile.test.ts | 4 + .../core/test/install/injectLocalPackages.ts | 228 ++++++------ pkg-manager/core/test/install/local.ts | 26 +- .../core/test/install/multipleImporters.ts | 12 +- pkg-manager/core/test/install/only.ts | 2 +- .../core/test/install/optionalDependencies.ts | 8 +- pkg-manager/core/test/install/overrides.ts | 4 +- .../core/test/install/packageExtensions.ts | 4 +- pkg-manager/core/test/install/patch.ts | 10 +- .../core/test/install/peerDependencies.ts | 76 ++-- pkg-manager/core/test/install/update.ts | 28 +- .../core/test/install/updatingPkgJson.ts | 4 +- pkg-manager/core/test/lockfile.ts | 95 +++-- pkg-manager/core/test/packageImportMethods.ts | 2 +- pkg-manager/core/test/uninstall.ts | 6 +- .../pnpm-lock.yaml | 9 +- .../has-glob-and-rimraf/pnpm-lock.yaml | 52 ++- .../test/fixtures/has-glob/pnpm-lock.yaml | 46 ++- .../pnpm-lock.yaml | 16 +- .../fixtures/has-local-dep/pkg/pnpm-lock.yaml | 4 + .../pnpm-lock.yaml | 114 +++--- .../pnpm-lock.yaml | 110 ++++-- .../prod-dep-is-dev-subdep/pnpm-lock.yaml | 20 +- .../reinstall-peer-deps/pnpm-lock.yaml | 22 +- .../pnpm-lock.yaml | 324 ++++++++++++------ .../side-effects-of-subdep/pnpm-lock.yaml | 25 +- .../test/fixtures/side-effects/pnpm-lock.yaml | 9 +- .../simple-shamefully-flatten/pnpm-lock.yaml | 79 +++-- .../simple-with-more-deps/pnpm-lock.yaml | 77 +++-- .../simple-with-optional-dep/pnpm-lock.yaml | 15 +- .../test/fixtures/simple/pnpm-lock.yaml | 71 ++-- .../test/fixtures/with-1-dep/pnpm-lock.yaml | 48 ++- pkg-manager/headless/test/index.ts | 2 +- .../test/__snapshots__/dedupe.ts.snap | 157 +++++++-- pnpm-lock.yaml | 35 +- pnpm/test/hooks.ts | 2 +- pnpm/test/install/hooks.ts | 10 +- pnpm/test/monorepo/dedupePeers.test.ts | 4 +- pnpm/test/monorepo/index.ts | 20 +- pnpm/test/monorepo/peerDependencies.ts | 4 +- pnpm/test/recursive/misc.ts | 4 +- .../plugin-commands-store/test/storePrune.ts | 6 +- 63 files changed, 1501 insertions(+), 694 deletions(-) create mode 100644 __patches__/@zkochan__js-yaml@0.0.6.patch diff --git a/.meta-updater/src/index.ts b/.meta-updater/src/index.ts index acb7cf73b6..c5f77acc16 100644 --- a/.meta-updater/src/index.ts +++ b/.meta-updater/src/index.ts @@ -99,7 +99,8 @@ async function updateTSConfig ( manifest.name === '@pnpm/git-fetcher' || manifest.name === '@pnpm/tarball-fetcher' || manifest.name === '@pnpm/package-requester' - ) + ) || + depName === 'pnpm' && manifest.name === '@pnpm/make-dedicated-lockfile' ) { // This is to avoid a circular graph (which TypeScript references do not support. continue diff --git a/__patches__/@zkochan__js-yaml@0.0.6.patch b/__patches__/@zkochan__js-yaml@0.0.6.patch new file mode 100644 index 0000000000..af675e611c --- /dev/null +++ b/__patches__/@zkochan__js-yaml@0.0.6.patch @@ -0,0 +1,13 @@ +diff --git a/lib/dumper.js b/lib/dumper.js +index 01775b346be6bfe0e3bcee4e6f2788480ac060e9..6dd3635d599b513aebc054b15d5e239d3a7c0bf0 100644 +--- a/lib/dumper.js ++++ b/lib/dumper.js +@@ -842,7 +842,7 @@ function writeNode(state, level, object, block, compact, iskey, isblockseq, obje + singleLineOnly = SINGLE_LINE_KEYS[objectKey]; + if (block && (Object.keys(state.dump).length !== 0) && !singleLineOnly) { + var doubleLine = state.blankLines ? +- (objectKey === 'packages' || objectKey === 'importers' || level === 0) : false; ++ (objectKey === 'packages' || objectKey === 'importers' || objectKey === 'snapshots' || level === 0) : false; + writeBlockMapping(state, level, state.dump, compact, doubleLine); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; diff --git a/__utils__/assert-project/src/index.ts b/__utils__/assert-project/src/index.ts index 575087b9b6..e40c1b1337 100644 --- a/__utils__/assert-project/src/index.ts +++ b/__utils__/assert-project/src/index.ts @@ -2,7 +2,7 @@ import fs from 'fs' import path from 'path' import { assertStore } from '@pnpm/assert-store' import { WANTED_LOCKFILE } from '@pnpm/constants' -import { type LockfileFile } from '@pnpm/lockfile-types' +import { type LockfileFileV7 } from '@pnpm/lockfile-types' import { type Modules } from '@pnpm/modules-yaml' import { REGISTRY_MOCK_PORT } from '@pnpm/registry-mock' import { sync as readYamlFile } from 'read-yaml-file' @@ -30,14 +30,14 @@ export interface Project { * * https://github.com/microsoft/TypeScript/pull/32695 might help with this. */ - readCurrentLockfile: () => Required + readCurrentLockfile: () => Required readModulesManifest: () => Modules | null /** * TODO: Remove the `Required` cast. * * https://github.com/microsoft/TypeScript/pull/32695 might help with this. */ - readLockfile: (lockfileName?: string) => Required + readLockfile: (lockfileName?: string) => Required writePackageJson: (pkgJson: object) => void } diff --git a/lockfile/lockfile-file/package.json b/lockfile/lockfile-file/package.json index ba0dcd2383..722b99447f 100644 --- a/lockfile/lockfile-file/package.json +++ b/lockfile/lockfile-file/package.json @@ -51,6 +51,7 @@ "@pnpm/error": "workspace:*", "@pnpm/git-utils": "workspace:*", "@pnpm/lockfile-types": "workspace:*", + "@pnpm/lockfile-utils": "workspace:*", "@pnpm/merge-lockfile-changes": "workspace:*", "@pnpm/types": "workspace:*", "@pnpm/util.lex-comparator": "1.0.0", diff --git a/lockfile/lockfile-file/src/lockfileFormatConverters.ts b/lockfile/lockfile-file/src/lockfileFormatConverters.ts index 106b9e000d..ee14c9e66e 100644 --- a/lockfile/lockfile-file/src/lockfileFormatConverters.ts +++ b/lockfile/lockfile-file/src/lockfileFormatConverters.ts @@ -1,25 +1,65 @@ import { type Lockfile, type ProjectSnapshot, + type PackageSnapshotV7, type ResolvedDependencies, type LockfileFile, type InlineSpecifiersLockfile, type InlineSpecifiersProjectSnapshot, type InlineSpecifiersResolvedDependencies, + type PackageInfo, + type LockfileFileV7, + type PackageSnapshots, + type PackageSnapshot, } from '@pnpm/lockfile-types' +import { packageIdFromSnapshot } from '@pnpm/lockfile-utils' import { DEPENDENCIES_FIELDS } from '@pnpm/types' import equals from 'ramda/src/equals' import isEmpty from 'ramda/src/isEmpty' import _mapValues from 'ramda/src/map' +import omit from 'ramda/src/omit' import pickBy from 'ramda/src/pickBy' +import pick from 'ramda/src/pick' export interface NormalizeLockfileOpts { forceSharedFormat: boolean } export function convertToLockfileFile (lockfile: Lockfile, opts: NormalizeLockfileOpts): LockfileFile { + const packages: Record = {} + const snapshots: Record = {} + for (const [depPath, pkg] of Object.entries(lockfile.packages ?? {})) { + snapshots[depPath] = pick([ + 'dependencies', + 'optionalDependencies', + 'transitivePeerDependencies', + 'dev', + 'optional', + 'id', + ], pkg) + const pkgId = packageIdFromSnapshot(depPath, pkg) + if (!packages[pkgId]) { + packages[pkgId] = pick([ + 'bundleDependencies', + 'bundledDependencies', + 'cpu', + 'deprecated', + 'engines', + 'hasBin', + 'libc', + 'name', + 'os', + 'peerDependencies', + 'peerDependenciesMeta', + 'resolution', + 'version', + ], pkg) + } + } const newLockfile = { ...lockfile, + snapshots, + packages, lockfileVersion: lockfile.lockfileVersion.toString(), importers: mapValues(lockfile.importers, convertProjectSnapshotToInlineSpecifiersFormat), } @@ -42,6 +82,9 @@ function normalizeLockfile (lockfile: InlineSpecifiersLockfile, opts: NormalizeL if (isEmpty(lockfileToSave.packages) || (lockfileToSave.packages == null)) { delete lockfileToSave.packages } + if (isEmpty((lockfileToSave as LockfileFileV7).snapshots) || ((lockfileToSave as LockfileFileV7).snapshots == null)) { + delete (lockfileToSave as LockfileFileV7).snapshots + } } else { lockfileToSave = { ...lockfile, @@ -64,6 +107,9 @@ function normalizeLockfile (lockfile: InlineSpecifiersLockfile, opts: NormalizeL if (isEmpty(lockfileToSave.packages) || (lockfileToSave.packages == null)) { delete lockfileToSave.packages } + if (isEmpty((lockfileToSave as LockfileFileV7).snapshots) || ((lockfileToSave as LockfileFileV7).snapshots == null)) { + delete (lockfileToSave as LockfileFileV7).snapshots + } } if (lockfileToSave.time) { lockfileToSave.time = pruneTimeInLockfileV6(lockfileToSave.time, lockfile.importers ?? {}) @@ -139,7 +185,10 @@ function convertFromLockfileFileMutable (lockfileFile: LockfileFile): InlineSpec return lockfileFile as InlineSpecifiersLockfile } -export function convertToLockfileObject (lockfile: LockfileFile): Lockfile { +export function convertToLockfileObject (lockfile: LockfileFile | LockfileFileV7): Lockfile { + if ((lockfile as LockfileFileV7).snapshots) { + return convertLockfileV7ToLockfileObject(lockfile as LockfileFileV7) + } const { importers, ...rest } = convertFromLockfileFileMutable(lockfile) const newLockfile = { @@ -149,6 +198,21 @@ export function convertToLockfileObject (lockfile: LockfileFile): Lockfile { return newLockfile } +export function convertLockfileV7ToLockfileObject (lockfile: LockfileFileV7): Lockfile { + const { importers, ...rest } = convertFromLockfileFileMutable(lockfile) + + const packages: PackageSnapshots = {} + for (const [depPath, pkg] of Object.entries(lockfile.snapshots ?? {})) { + const pkgId = packageIdFromSnapshot(depPath, pkg as PackageSnapshot) + packages[depPath] = Object.assign(pkg, lockfile.packages?.[pkgId]) + } + return { + ...omit(['snapshots'], rest), + packages, + importers: mapValues(importers ?? {}, revertProjectSnapshot), + } +} + function convertProjectSnapshotToInlineSpecifiersFormat ( projectSnapshot: ProjectSnapshot ): InlineSpecifiersProjectSnapshot { diff --git a/lockfile/lockfile-file/test/__snapshots__/write.test.ts.snap b/lockfile/lockfile-file/test/__snapshots__/write.test.ts.snap index 42bae94e06..6458dfd323 100644 --- a/lockfile/lockfile-file/test/__snapshots__/write.test.ts.snap +++ b/lockfile/lockfile-file/test/__snapshots__/write.test.ts.snap @@ -22,13 +22,21 @@ packages: cpu: [x86] os: [darwin] libc: [glibc] - dependencies: - is-positive: 2.0.0 /is-positive@1.0.0: resolution: {integrity: sha1-ChbBDewTLAqLCzb793Fo5VDvg/g=} /is-positive@2.0.0: resolution: {integrity: sha1-ChbBDewTLAqLCzb793Fo5VDvg/g=} + +snapshots: + + /is-negative@1.0.0: + dependencies: + is-positive: 2.0.0 + + /is-positive@1.0.0: {} + + /is-positive@2.0.0: {} " `; diff --git a/lockfile/lockfile-file/test/lockfileV6Converters.test.ts b/lockfile/lockfile-file/test/lockfileV6Converters.test.ts index 6933c20f0d..2d047d2082 100644 --- a/lockfile/lockfile-file/test/lockfileV6Converters.test.ts +++ b/lockfile/lockfile-file/test/lockfileV6Converters.test.ts @@ -70,7 +70,7 @@ test('convertToLockfileFile()', () => { '/foo@1.0.0': { resolution: { integrity: '' }, }, - '/@bar/bar@1.0.0(@babel/core@2.0.0)': { + '/@bar/bar@1.0.0': { resolution: { integrity: '' }, }, 'reg.com/qar@1.0.0': { @@ -80,6 +80,12 @@ test('convertToLockfileFile()', () => { resolution: { integrity: '' }, }, }, + snapshots: { + '/foo@1.0.0': {}, + '/@bar/bar@1.0.0(@babel/core@2.0.0)': {}, + 'reg.com/qar@1.0.0': {}, + '@registry.npmjs.org/is-positive/-/is-positive-1.0.0.tgz': {}, + }, } expect(convertToLockfileFile(lockfileV5, { forceSharedFormat: false })).toEqual(lockfileV6) expect(convertToLockfileObject(lockfileV6)).toEqual(lockfileV5) @@ -155,7 +161,7 @@ test('convertToLockfileFile() with lockfile v6', () => { '/foo@1.0.0': { resolution: { integrity: '' }, }, - '/@bar/bar@1.0.0(@babel/core@2.0.0)': { + '/@bar/bar@1.0.0': { resolution: { integrity: '' }, }, 'reg.com/qar@1.0.0': { @@ -165,6 +171,12 @@ test('convertToLockfileFile() with lockfile v6', () => { resolution: { integrity: '' }, }, }, + snapshots: { + '/foo@1.0.0': {}, + '/@bar/bar@1.0.0(@babel/core@2.0.0)': {}, + 'reg.com/qar@1.0.0': {}, + '@registry.npmjs.org/is-positive/-/is-positive-1.0.0.tgz': {}, + }, } expect(convertToLockfileFile(lockfileV5, { forceSharedFormat: false })).toEqual(lockfileV6) expect(convertToLockfileObject(lockfileV6)).toEqual(lockfileV5) diff --git a/lockfile/lockfile-file/tsconfig.json b/lockfile/lockfile-file/tsconfig.json index b4f03691a3..8c604b7dec 100644 --- a/lockfile/lockfile-file/tsconfig.json +++ b/lockfile/lockfile-file/tsconfig.json @@ -27,6 +27,9 @@ { "path": "../lockfile-types" }, + { + "path": "../lockfile-utils" + }, { "path": "../merge-lockfile-changes" } diff --git a/lockfile/lockfile-types/src/index.ts b/lockfile/lockfile-types/src/index.ts index 0b851be3d3..5913476f17 100644 --- a/lockfile/lockfile-types/src/index.ts +++ b/lockfile/lockfile-types/src/index.ts @@ -22,6 +22,20 @@ export interface Lockfile { settings?: LockfileSettings } +export interface LockfileV7 { + importers: Record + lockfileVersion: number | string + time?: Record + snapshots?: Record + packages?: Record + neverBuiltDependencies?: string[] + onlyBuiltDependencies?: string[] + overrides?: Record + packageExtensionsChecksum?: string + patchedDependencies?: Record + settings?: LockfileSettings +} + export interface ProjectSnapshot { specifiers: ResolvedDependencies dependencies?: ResolvedDependencies @@ -72,6 +86,10 @@ export type LockfileResolution = Resolution | { integrity: string } +export type PackageSnapshotV7 = Pick + +export type PackageInfo = Pick + export interface PackageSnapshot { id?: string dev?: true | false diff --git a/lockfile/lockfile-types/src/lockfileFileTypes.ts b/lockfile/lockfile-types/src/lockfileFileTypes.ts index 7a562650f4..79bddfcd0b 100644 --- a/lockfile/lockfile-types/src/lockfileFileTypes.ts +++ b/lockfile/lockfile-types/src/lockfileFileTypes.ts @@ -1,10 +1,17 @@ -import type { Lockfile, ProjectSnapshot } from '.' +import type { Lockfile, PackageSnapshot, ProjectSnapshot } from '.' import type { DependenciesMeta } from '@pnpm/types' export type LockfileFile = Omit & Partial & Partial> +export type LockfileFileV7 = Omit & +Partial & +Partial> & { + packages?: Record> + snapshots?: Record> +} + /** * Similar to the current Lockfile importers format (lockfile version 5.4 at * time of writing), but specifiers are moved to each ResolvedDependencies block diff --git a/package.json b/package.json index 1ee1b0e40e..7dd4e90f12 100644 --- a/package.json +++ b/package.json @@ -113,7 +113,8 @@ }, "patchedDependencies": { "pkg@5.8.1": "__patches__/pkg.patch", - "graceful-fs@4.2.11": "__patches__/graceful-fs@4.2.11.patch" + "graceful-fs@4.2.11": "__patches__/graceful-fs@4.2.11.patch", + "@zkochan/js-yaml@0.0.6": "__patches__/@zkochan__js-yaml@0.0.6.patch" }, "updateConfig": { "ignoreDependencies": [ diff --git a/packages/make-dedicated-lockfile/package.json b/packages/make-dedicated-lockfile/package.json index 037e9ed99e..eb1a7195dd 100644 --- a/packages/make-dedicated-lockfile/package.json +++ b/packages/make-dedicated-lockfile/package.json @@ -46,9 +46,11 @@ }, "funding": "https://opencollective.com/pnpm", "devDependencies": { + "execa": "npm:safe-execa@0.1.2", "@pnpm/make-dedicated-lockfile": "workspace:*", "@pnpm/test-fixtures": "workspace:*", - "@types/ramda": "0.28.20" + "@types/ramda": "0.28.20", + "pnpm": "workspace:^" }, "exports": { ".": "./lib/index.js" diff --git a/packages/make-dedicated-lockfile/test/fixtures/fixture/pnpm-lock.yaml b/packages/make-dedicated-lockfile/test/fixtures/fixture/pnpm-lock.yaml index 4124e6490a..4a6ada432b 100644 --- a/packages/make-dedicated-lockfile/test/fixtures/fixture/pnpm-lock.yaml +++ b/packages/make-dedicated-lockfile/test/fixtures/fixture/pnpm-lock.yaml @@ -35,6 +35,89 @@ packages: /connect@3.7.0: resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} engines: {node: '>= 0.10.0'} + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + /ee-first@1.1.1: + resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} + + /encodeurl@1.0.2: + resolution: {integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=} + engines: {node: '>= 0.8'} + + /escape-html@1.0.3: + resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=} + + /express@1.0.0: + resolution: {integrity: sha1-SKQ9eKluuSMvYx0jzI3o+FTY4Ok=} + engines: {node: '>= 0.2.0'} + deprecated: express 1.x series is deprecated + hasBin: true + + /finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + + /lodash@1.0.0: + resolution: {integrity: sha1-JTXC99y2k3zujSZyxfcTju4N9qk=} + engines: {'0': node, '1': rhino} + + /ms@2.0.0: + resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} + + /on-finished@2.3.0: + resolution: {integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=} + engines: {node: '>= 0.8'} + + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + /ramda@0.26.0: + resolution: {integrity: sha512-maK1XqpgsOo5DwjhROjqDvpm1vkphLQbpleVv+b3t5Y9uOQ0t8hTHT582+mDs7RLrex1kd4lWYizNXWLVjsq9w==} + + /request@2.0.0: + resolution: {integrity: sha512-/YiTJ2FZtvOWFhRE+HHiq3GxpX4e1RMEnqYYQM/0xhQRzQ/dgdHrfK+WB4uRW3OWrcTjWA6uE8GSMhwbm7dLLw==} + engines: {'0': node >= 0.3.6} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + + /statuses@1.5.0: + resolution: {integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=} + engines: {node: '>= 0.6'} + + /unpipe@1.0.0: + resolution: {integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=} + engines: {node: '>= 0.8'} + + /utils-merge@1.0.1: + resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} + engines: {node: '>= 0.4.0'} + +snapshots: + + /ramda@0.26.0: + dev: false + + /request@2.0.0: + dev: false + + /lodash@1.0.0: + dev: false + + /express@1.0.0: + dependencies: + connect: 3.7.0 + transitivePeerDependencies: + - supports-color + dev: false + + /connect@3.7.0: dependencies: debug: 2.6.9 finalhandler: 1.1.2 @@ -45,43 +128,14 @@ packages: dev: false /debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true dependencies: ms: 2.0.0 dev: false - /ee-first@1.1.1: - resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} - dev: false - - /encodeurl@1.0.2: - resolution: {integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=} - engines: {node: '>= 0.8'} - dev: false - - /escape-html@1.0.3: - resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=} - dev: false - - /express@1.0.0: - resolution: {integrity: sha1-SKQ9eKluuSMvYx0jzI3o+FTY4Ok=} - engines: {node: '>= 0.2.0'} - deprecated: express 1.x series is deprecated - hasBin: true - dependencies: - connect: 3.7.0 - transitivePeerDependencies: - - supports-color + /ms@2.0.0: dev: false /finalhandler@1.1.2: - resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} - engines: {node: '>= 0.8'} dependencies: debug: 2.6.9 encodeurl: 1.0.2 @@ -94,48 +148,28 @@ packages: - supports-color dev: false - /lodash@1.0.0: - resolution: {integrity: sha1-JTXC99y2k3zujSZyxfcTju4N9qk=} - engines: {'0': node, '1': rhino} + /encodeurl@1.0.2: dev: false - /ms@2.0.0: - resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} + /escape-html@1.0.3: dev: false /on-finished@2.3.0: - resolution: {integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=} - engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 dev: false + /ee-first@1.1.1: + dev: false + /parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - dev: false - - /ramda@0.26.0: - resolution: {integrity: sha512-maK1XqpgsOo5DwjhROjqDvpm1vkphLQbpleVv+b3t5Y9uOQ0t8hTHT582+mDs7RLrex1kd4lWYizNXWLVjsq9w==} - dev: false - - /request@2.0.0: - resolution: {integrity: sha512-/YiTJ2FZtvOWFhRE+HHiq3GxpX4e1RMEnqYYQM/0xhQRzQ/dgdHrfK+WB4uRW3OWrcTjWA6uE8GSMhwbm7dLLw==} - engines: {'0': node >= 0.3.6} - deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 dev: false /statuses@1.5.0: - resolution: {integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=} - engines: {node: '>= 0.6'} dev: false /unpipe@1.0.0: - resolution: {integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=} - engines: {node: '>= 0.8'} dev: false /utils-merge@1.0.1: - resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} - engines: {node: '>= 0.4.0'} dev: false diff --git a/packages/make-dedicated-lockfile/test/index.ts b/packages/make-dedicated-lockfile/test/index.ts index e2e4c94b53..98076601b6 100644 --- a/packages/make-dedicated-lockfile/test/index.ts +++ b/packages/make-dedicated-lockfile/test/index.ts @@ -1,22 +1,29 @@ import fs from 'fs' import path from 'path' -import pnpmExec from '@pnpm/exec' +import execa from 'execa' import { readWantedLockfile } from '@pnpm/lockfile-file' import { fixtures } from '@pnpm/test-fixtures' import { makeDedicatedLockfile } from '../lib' const f = fixtures(__dirname) +const pnpmBin = path.join(__dirname, '../../../pnpm/bin/pnpm.cjs') test('makeDedicatedLockfile()', async () => { const tmp = f.prepare('fixture') fs.writeFileSync('.npmrc', 'store-dir=store\ncache-dir=cache', 'utf8') - await pnpmExec(['install', '--no-frozen-lockfile'], { cwd: tmp }) + await execa('node', [ + pnpmBin, + 'install', + '--no-frozen-lockfile', + '--no-prefer-frozen-lockfile', + '--force', + ], { cwd: tmp }) const projectDir = path.join(tmp, 'packages/is-negative') await makeDedicatedLockfile(tmp, projectDir) const lockfile = await readWantedLockfile(projectDir, { ignoreIncompatible: false }) expect(Object.keys(lockfile?.importers ?? {})).toStrictEqual(['.', 'example']) - expect(Object.keys(lockfile?.packages ?? {})).toStrictEqual([ + expect(Object.keys(lockfile?.packages ?? {}).sort()).toStrictEqual([ '/is-positive@1.0.0', '/lodash@1.0.0', '/ramda@0.26.0', diff --git a/pkg-manager/core/test/install/aliases.ts b/pkg-manager/core/test/install/aliases.ts index f96dfa1b45..497e70a666 100644 --- a/pkg-manager/core/test/install/aliases.ts +++ b/pkg-manager/core/test/install/aliases.ts @@ -34,7 +34,6 @@ test('installing aliased dependency', async () => { lockfileVersion: LOCKFILE_VERSION, packages: { '/is-negative@1.0.0': { - dev: false, engines: { node: '>=0.10.0', }, @@ -43,7 +42,6 @@ test('installing aliased dependency', async () => { }, }, '/is-positive@3.1.0': { - dev: false, engines: { node: '>=0.10.0', }, @@ -52,6 +50,14 @@ test('installing aliased dependency', async () => { }, }, }, + snapshots: { + '/is-negative@1.0.0': { + dev: false, + }, + '/is-positive@3.1.0': { + dev: false, + }, + }, }) }) @@ -95,19 +101,25 @@ test('a dependency has an aliased subdependency', async () => { lockfileVersion: LOCKFILE_VERSION, packages: { '/@pnpm.e2e/dep-of-pkg-with-1-dep@100.1.0': { - dev: false, resolution: { integrity: getIntegrity('@pnpm.e2e/dep-of-pkg-with-1-dep', '100.1.0'), }, }, + '/@pnpm.e2e/pkg-with-1-aliased-dep@100.0.0': { + resolution: { + integrity: getIntegrity('@pnpm.e2e/pkg-with-1-aliased-dep', '100.0.0'), + }, + }, + }, + snapshots: { + '/@pnpm.e2e/dep-of-pkg-with-1-dep@100.1.0': { + dev: false, + }, '/@pnpm.e2e/pkg-with-1-aliased-dep@100.0.0': { dependencies: { dep: '/@pnpm.e2e/dep-of-pkg-with-1-dep@100.1.0', }, dev: false, - resolution: { - integrity: getIntegrity('@pnpm.e2e/pkg-with-1-aliased-dep', '100.0.0'), - }, }, }, }) diff --git a/pkg-manager/core/test/install/autoInstallPeers.ts b/pkg-manager/core/test/install/autoInstallPeers.ts index 2113945f7e..b391c9a308 100644 --- a/pkg-manager/core/test/install/autoInstallPeers.ts +++ b/pkg-manager/core/test/install/autoInstallPeers.ts @@ -12,7 +12,7 @@ test('auto install non-optional peer dependencies', async () => { const project = prepareEmpty() await addDependenciesToPackage({}, ['@pnpm.e2e/abc-optional-peers@1.0.0'], testDefaults({ autoInstallPeers: true })) const lockfile = project.readLockfile() - expect(Object.keys(lockfile.packages)).toStrictEqual([ + expect(Object.keys(lockfile.snapshots)).toStrictEqual([ '/@pnpm.e2e/abc-optional-peers@1.0.0(@pnpm.e2e/peer-a@1.0.0)', '/@pnpm.e2e/peer-a@1.0.0', ]) @@ -24,18 +24,18 @@ test('auto install the common peer dependency', async () => { const project = prepareEmpty() await addDependenciesToPackage({}, ['@pnpm.e2e/wants-peer-c-1', '@pnpm.e2e/wants-peer-c-1.0.0'], testDefaults({ autoInstallPeers: true })) const lockfile = project.readLockfile() - expect(Object.keys(lockfile.packages)).toStrictEqual([ + expect(Object.keys(lockfile.snapshots).sort()).toStrictEqual([ '/@pnpm.e2e/peer-c@1.0.0', '/@pnpm.e2e/wants-peer-c-1.0.0@1.0.0(@pnpm.e2e/peer-c@1.0.0)', '/@pnpm.e2e/wants-peer-c-1@1.0.0(@pnpm.e2e/peer-c@1.0.0)', - ]) + ].sort()) }) test('do not auto install when there is no common peer dependency range intersection', async () => { const project = prepareEmpty() await addDependenciesToPackage({}, ['@pnpm.e2e/wants-peer-c-1', '@pnpm.e2e/wants-peer-c-2'], testDefaults({ autoInstallPeers: true })) const lockfile = project.readLockfile() - expect(Object.keys(lockfile.packages)).toStrictEqual([ + expect(Object.keys(lockfile.snapshots)).toStrictEqual([ '/@pnpm.e2e/wants-peer-c-1@1.0.0', '/@pnpm.e2e/wants-peer-c-2@1.0.0', ]) @@ -49,11 +49,11 @@ test('auto install latest when there is no common peer dependency range intersec autoInstallPeersFromHighestMatch: true, })) const lockfile = project.readLockfile() - expect(Object.keys(lockfile.packages)).toStrictEqual([ + expect(Object.keys(lockfile.snapshots).sort()).toStrictEqual([ '/@pnpm.e2e/peer-c@2.0.0', '/@pnpm.e2e/wants-peer-c-1@1.0.0(@pnpm.e2e/peer-c@2.0.0)', '/@pnpm.e2e/wants-peer-c-2@1.0.0(@pnpm.e2e/peer-c@2.0.0)', - ]) + ].sort()) }) test('don\'t fail on linked package, when peers are auto installed', async () => { @@ -87,17 +87,17 @@ test('hoist a peer dependency in order to reuse it by other dependencies, when i await addDependenciesToPackage({}, ['@pnpm/xyz-parent-parent-parent-parent', '@pnpm/xyz-parent-parent-with-xyz'], testDefaults({ autoInstallPeers: true })) const lockfile = project.readLockfile() const suffix = createPeersDirSuffix([{ name: '@pnpm/x', version: '1.0.0' }, { name: '@pnpm/y', version: '1.0.0' }, { name: '@pnpm/z', version: '1.0.0' }]) - expect(Object.keys(lockfile.packages)).toStrictEqual([ + expect(Object.keys(lockfile.snapshots).sort()).toStrictEqual([ '/@pnpm/x@1.0.0', + '/@pnpm/xyz-parent-parent-with-xyz@1.0.0', + '/@pnpm/y@1.0.0', + '/@pnpm/z@1.0.0', `/@pnpm/xyz-parent-parent-parent-parent@1.0.0${suffix}`, `/@pnpm/xyz-parent-parent-parent@1.0.0${suffix}`, - '/@pnpm/xyz-parent-parent-with-xyz@1.0.0', `/@pnpm/xyz-parent-parent@1.0.0${suffix}`, `/@pnpm/xyz-parent@1.0.0${suffix}`, `/@pnpm/xyz@1.0.0${suffix}`, - '/@pnpm/y@1.0.0', - '/@pnpm/z@1.0.0', - ]) + ].sort()) }) test('don\'t hoist a peer dependency when there is a root dependency by that name', async () => { @@ -111,7 +111,7 @@ test('don\'t hoist a peer dependency when there is a root dependency by that nam const lockfile = project.readLockfile() const suffix1 = createPeersDirSuffix([{ name: '@pnpm/y', version: '2.0.0' }, { name: '@pnpm/z', version: '1.0.0' }, { name: '@pnpm.e2e/peer-a', version: '1.0.0' }]) const suffix2 = createPeersDirSuffix([{ name: '@pnpm/x', version: '1.0.0' }, { name: '@pnpm/y', version: '1.0.0' }, { name: '@pnpm/z', version: '1.0.0' }]) - expect(Object.keys(lockfile.packages).sort()).toStrictEqual([ + expect(Object.keys(lockfile.snapshots).sort()).toStrictEqual([ '/@pnpm.e2e/peer-a@1.0.0', '/@pnpm/x@1.0.0', `/@pnpm/xyz-parent-parent-parent-parent@1.0.0${suffix1}`, @@ -137,7 +137,7 @@ test('don\'t auto-install a peer dependency, when that dependency is in the root ], testDefaults({ autoInstallPeers: true })) const lockfile = project.readLockfile() const suffix = createPeersDirSuffix([{ name: '@pnpm/y', version: '2.0.0' }, { name: '@pnpm/z', version: '1.0.0' }, { name: '@pnpm.e2e/peer-a', version: '1.0.0' }]) - expect(Object.keys(lockfile.packages).sort()).toStrictEqual([ + expect(Object.keys(lockfile.snapshots).sort()).toStrictEqual([ `/@pnpm/xyz-parent-parent-parent-parent@1.0.0${suffix}`, `/@pnpm/xyz-parent-parent-parent@1.0.0${suffix}`, `/@pnpm/xyz-parent-parent@1.0.0${suffix}`, @@ -156,7 +156,7 @@ test('don\'t install the same missing peer dependency twice', async () => { '@pnpm.e2e/has-has-y-peer-peer', ], testDefaults({ autoInstallPeers: true })) const lockfile = project.readLockfile() - expect(Object.keys(lockfile.packages).sort()).toStrictEqual([ + expect(Object.keys(lockfile.snapshots).sort()).toStrictEqual([ '/@pnpm/y@1.0.0', '/@pnpm.e2e/has-has-y-peer-peer@1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@1.0.0))(@pnpm/y@1.0.0)', '/@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@1.0.0)', @@ -174,7 +174,7 @@ test('prefer the peer dependency version already used in the root', async () => }, }, testDefaults({ autoInstallPeers: true })) const lockfile = project.readLockfile() - expect(Object.keys(lockfile.packages).sort()).toStrictEqual([ + expect(Object.keys(lockfile.snapshots).sort()).toStrictEqual([ '/@pnpm/y@1.0.0', '/@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@1.0.0)', ].sort()) diff --git a/pkg-manager/core/test/install/dedupe.ts b/pkg-manager/core/test/install/dedupe.ts index 13537268a2..f2734ca4c2 100644 --- a/pkg-manager/core/test/install/dedupe.ts +++ b/pkg-manager/core/test/install/dedupe.ts @@ -207,7 +207,7 @@ test('when resolving dependencies, prefer versions that are used by direct depen await addDependenciesToPackage(manifest, ['@pnpm.e2e/has-foo-100.0.0-range-dep'], testDefaults()) const lockfile = 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') + expect(lockfile.snapshots['/@pnpm.e2e/has-foo-100.0.0-range-dep@1.0.0']).toHaveProperty(['dependencies', '@pnpm.e2e/foo'], '100.0.0') }) test('when resolving dependencies, prefer versions that are used by direct dependencies over versions used in subdeps', async () => { @@ -225,5 +225,5 @@ test('when resolving dependencies, prefer versions that are used by direct depen await addDependenciesToPackage(manifest, ['@pnpm.e2e/has-foo-100.0.0-range-dep'], testDefaults()) const lockfile = 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') + expect(lockfile.snapshots['/@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/core/test/install/defaultPeerDependencies.ts b/pkg-manager/core/test/install/defaultPeerDependencies.ts index 24acb41168..c2b977484f 100644 --- a/pkg-manager/core/test/install/defaultPeerDependencies.ts +++ b/pkg-manager/core/test/install/defaultPeerDependencies.ts @@ -24,10 +24,10 @@ test('don\'t install the default peer dependency when it may be resolved from pa ) const lockfile = project.readLockfile() - expect(Object.keys(lockfile.packages)).toStrictEqual([ + expect(Object.keys(lockfile.snapshots).sort()).toStrictEqual([ '/@pnpm.e2e/dep-of-pkg-with-1-dep@101.0.0', `/@pnpm.e2e/has-default-peer@1.0.0${createPeersDirSuffix([{ name: '@pnpm.e2e/dep-of-pkg-with-1-dep', version: '101.0.0' }])}`, - ]) + ].sort()) }) test('install the default peer dependency when it cannot be resolved from parent packages', async () => { @@ -52,7 +52,7 @@ test('package that resolves its own peer dependency', async () => { const lockfile = project.readLockfile() - expect(lockfile.packages['/@pnpm.e2e/pkg-with-resolved-peer@1.0.0(@pnpm.e2e/peer-c@2.0.0)']?.peerDependencies).toStrictEqual({ '@pnpm.e2e/peer-c': '*' }) - expect(lockfile.packages['/@pnpm.e2e/pkg-with-resolved-peer@1.0.0(@pnpm.e2e/peer-c@2.0.0)'].dependencies).toHaveProperty(['@pnpm.e2e/peer-c']) - expect(lockfile.packages['/@pnpm.e2e/pkg-with-resolved-peer@1.0.0(@pnpm.e2e/peer-c@2.0.0)'].optionalDependencies).toHaveProperty(['@pnpm.e2e/peer-b']) + expect(lockfile.packages['/@pnpm.e2e/pkg-with-resolved-peer@1.0.0']?.peerDependencies).toStrictEqual({ '@pnpm.e2e/peer-c': '*' }) + expect(lockfile.snapshots['/@pnpm.e2e/pkg-with-resolved-peer@1.0.0(@pnpm.e2e/peer-c@2.0.0)'].dependencies).toHaveProperty(['@pnpm.e2e/peer-c']) + expect(lockfile.snapshots['/@pnpm.e2e/pkg-with-resolved-peer@1.0.0(@pnpm.e2e/peer-c@2.0.0)'].optionalDependencies).toHaveProperty(['@pnpm.e2e/peer-b']) }) diff --git a/pkg-manager/core/test/install/excludeLinksFromLockfile.ts b/pkg-manager/core/test/install/excludeLinksFromLockfile.ts index b9918252fe..b45419e52a 100644 --- a/pkg-manager/core/test/install/excludeLinksFromLockfile.ts +++ b/pkg-manager/core/test/install/excludeLinksFromLockfile.ts @@ -234,8 +234,8 @@ test('path to external link is not added to the lockfile, when it resolves a pee const lockfile = project.readLockfile() const key = '/@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-a@node_modules+@pnpm.e2e+peer-a)(@pnpm.e2e/peer-b@1.0.0)(@pnpm.e2e/peer-c@1.0.0)' - expect(lockfile.packages[key]).toBeTruthy() - expect(lockfile.packages[key].dependencies?.['@pnpm.e2e/peer-a']).toBe('link:node_modules/@pnpm.e2e/peer-a') + expect(lockfile.snapshots[key]).toBeTruthy() + expect(lockfile.snapshots[key].dependencies?.['@pnpm.e2e/peer-a']).toBe('link:node_modules/@pnpm.e2e/peer-a') }) test('links resolved from workspace protocol dependencies are not removed', async () => { diff --git a/pkg-manager/core/test/install/fixLockfile.ts b/pkg-manager/core/test/install/fixLockfile.ts index e6196d77a9..bae0888b4d 100644 --- a/pkg-manager/core/test/install/fixLockfile.ts +++ b/pkg-manager/core/test/install/fixLockfile.ts @@ -4,7 +4,7 @@ import { prepareEmpty, preparePackages } from '@pnpm/prepare' import { install, type MutatedProject, mutateModules } from '@pnpm/core' import { sync as writeYamlFile } from 'write-yaml-file' import { sync as readYamlFile } from 'read-yaml-file' -import { type Lockfile, type PackageSnapshots } from '@pnpm/lockfile-file' +import { type LockfileV7 as Lockfile, type PackageSnapshots } from '@pnpm/lockfile-file' import { testDefaults } from '../utils' test('fix broken lockfile with --fix-lockfile', async () => { @@ -58,7 +58,7 @@ test('fix broken lockfile with --fix-lockfile', async () => { expect(lockfile.packages?.['/core-js-pure@3.16.2']?.resolution).toEqual({ integrity: 'sha512-oxKe64UH049mJqrKkynWp6Vu0Rlm/BTXO/bJZuN2mmR3RtOFNepLlSWDd1eo16PzHpQAoNG97rLU1V/YxesJjw==', }) - expect(lockfile.packages?.['/core-js-pure@3.16.2']?.dev).toBeTruthy() + expect(lockfile.snapshots?.['/core-js-pure@3.16.2']?.dev).toBeTruthy() }) test('--fix-lockfile should preserve all locked dependencies version', async () => { @@ -200,7 +200,7 @@ test('--fix-lockfile should preserve all locked dependencies version', async () expect(lockfile.packages?.['/@babel/runtime-corejs3@7.15.3']?.engines).toEqual({ node: '>=6.9.0', }) - expect(lockfile.packages?.['/@babel/runtime-corejs3@7.15.3']?.dev).toBeFalsy() + expect(lockfile.snapshots?.['/@babel/runtime-corejs3@7.15.3']?.dev).toBeFalsy() expect(lockfile.packages?.['/@babel/runtime-corejs3@7.15.4']).toBeTruthy() expect(lockfile.packages?.['/@babel/runtime-corejs3@7.15.4']?.resolution).toEqual({ @@ -209,23 +209,23 @@ test('--fix-lockfile should preserve all locked dependencies version', async () expect(lockfile.packages?.['/@babel/runtime-corejs3@7.15.4']?.engines).toEqual({ node: '>=6.9.0', }) - expect(lockfile.packages?.['/@babel/runtime-corejs3@7.15.4']?.dev).toBeFalsy() + expect(lockfile.snapshots?.['/@babel/runtime-corejs3@7.15.4']?.dev).toBeFalsy() expect(lockfile.packages?.['/core-js-pure@3.17.2']).toBeTruthy() expect(lockfile.packages?.['/core-js-pure@3.17.2']?.resolution).toHaveProperty('integrity', 'sha512-2VV7DlIbooyTI7Bh+yzOOWL9tGwLnQKHno7qATE+fqZzDKYr6llVjVQOzpD/QLZFgXDPb8T71pJokHEZHEYJhQ==') - expect(lockfile.packages?.['/core-js-pure@3.17.2']?.dev).toBeFalsy() + expect(lockfile.snapshots?.['/core-js-pure@3.17.2']?.dev).toBeFalsy() expect(lockfile.packages?.['/core-js-pure@3.17.3']).toBeTruthy() expect(lockfile.packages?.['/core-js-pure@3.17.3']?.resolution).toEqual({ integrity: 'sha512-YusrqwiOTTn8058JDa0cv9unbXdIiIgcgI9gXso0ey4WgkFLd3lYlV9rp9n7nDCsYxXsMDTjA4m1h3T348mdlQ==', }) - expect(lockfile.packages?.['/core-js-pure@3.17.3']?.dev).toBeFalsy() + expect(lockfile.snapshots?.['/core-js-pure@3.17.3']?.dev).toBeFalsy() expect(lockfile.packages?.['/regenerator-runtime@0.13.9']).toBeTruthy() expect(lockfile.packages?.['/regenerator-runtime@0.13.9']?.resolution).toEqual({ integrity: 'sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==', }) - expect(lockfile.packages?.['/regenerator-runtime@0.13.9']?.dev).toBeFalsy() + expect(lockfile.snapshots?.['/regenerator-runtime@0.13.9']?.dev).toBeFalsy() }) test( diff --git a/pkg-manager/core/test/install/fromRepo.ts b/pkg-manager/core/test/install/fromRepo.ts index 1b68249f87..b2cca7c50e 100644 --- a/pkg-manager/core/test/install/fromRepo.ts +++ b/pkg-manager/core/test/install/fromRepo.ts @@ -132,7 +132,7 @@ test('a subdependency is from a github repo with different name', async () => { expect(m).toEqual('Hi') const lockfile = project.readLockfile() - expect(lockfile.packages['/@pnpm.e2e/has-aliased-git-dependency@1.0.0'].dependencies).toStrictEqual({ + expect(lockfile.snapshots['/@pnpm.e2e/has-aliased-git-dependency@1.0.0'].dependencies).toStrictEqual({ '@pnpm.e2e/has-say-hi-peer': '1.0.0(github.com/zkochan/hi/4cdebec76b7b9d1f6e219e06c42d92a6b8ea60cd)', 'say-hi': 'github.com/zkochan/hi/4cdebec76b7b9d1f6e219e06c42d92a6b8ea60cd', }) @@ -259,7 +259,6 @@ test('re-adding a git repo with a different tag', async () => { name: 'is-negative', version: '1.0.0', engines: { node: '>=0.10.0' }, - dev: false, }, } ) @@ -278,7 +277,6 @@ test('re-adding a git repo with a different tag', async () => { name: 'is-negative', version: '1.0.1', engines: { node: '>=0.10.0' }, - dev: false, }, } ) diff --git a/pkg-manager/core/test/install/gitBranchLockfile.test.ts b/pkg-manager/core/test/install/gitBranchLockfile.test.ts index 9054fcf05b..9fb61f754b 100644 --- a/pkg-manager/core/test/install/gitBranchLockfile.test.ts +++ b/pkg-manager/core/test/install/gitBranchLockfile.test.ts @@ -210,6 +210,10 @@ test('install with --merge-git-branch-lockfiles when merged lockfile is up to da }, }, }, + snapshots: { + '/@types/semver@5.3.31': {}, + '/is-positive@3.1.0': {}, + }, } writeYamlFile(otherLockfilePath, otherLockfileContent, { lineWidth: 1000 }) diff --git a/pkg-manager/core/test/install/injectLocalPackages.ts b/pkg-manager/core/test/install/injectLocalPackages.ts index fb1501c838..0375073bae 100644 --- a/pkg-manager/core/test/install/injectLocalPackages.ts +++ b/pkg-manager/core/test/install/injectLocalPackages.ts @@ -143,29 +143,33 @@ test('inject local packages', async () => { injected: true, }, }) - expect(lockfile.packages['file:project-1(is-positive@1.0.0)']).toEqual({ + expect(lockfile.packages['file:project-1']).toEqual({ resolution: { directory: 'project-1', type: 'directory', }, - id: 'file:project-1', name: 'project-1', peerDependencies: { 'is-positive': '>=1.0.0', }, + }) + expect(lockfile.snapshots['file:project-1(is-positive@1.0.0)']).toEqual({ + id: 'file:project-1', dependencies: { 'is-negative': '1.0.0', 'is-positive': '1.0.0', }, dev: false, }) - expect(lockfile.packages['file:project-2(is-positive@2.0.0)']).toEqual({ + expect(lockfile.packages['file:project-2']).toEqual({ resolution: { directory: 'project-2', type: 'directory', }, - id: 'file:project-2', name: 'project-2', + }) + expect(lockfile.snapshots['file:project-2(is-positive@2.0.0)']).toEqual({ + id: 'file:project-2', dependencies: { 'project-1': 'file:project-1(is-positive@2.0.0)', }, @@ -213,16 +217,18 @@ test('inject local packages', async () => { injected: true, }, }) - expect(lockfile.packages['file:project-1(is-positive@1.0.0)']).toEqual({ + expect(lockfile.packages['file:project-1']).toEqual({ resolution: { directory: 'project-1', type: 'directory', }, - id: 'file:project-1', name: 'project-1', peerDependencies: { 'is-positive': '>=1.0.0', }, + }) + expect(lockfile.snapshots['file:project-1(is-positive@1.0.0)']).toEqual({ + id: 'file:project-1', dependencies: { 'is-negative': '2.0.0', 'is-positive': '1.0.0', @@ -372,35 +378,39 @@ test('inject local packages declared via file protocol', async () => { injected: true, }, }) - expect(lockfile.packages['file:project-1(is-positive@1.0.0)']).toEqual({ - resolution: { - directory: 'project-1', - type: 'directory', - }, + expect(lockfile.snapshots['file:project-1(is-positive@1.0.0)']).toEqual({ id: 'file:project-1', - name: 'project-1', - peerDependencies: { - 'is-positive': '>=1.0.0', - }, dependencies: { 'is-negative': '1.0.0', 'is-positive': '1.0.0', }, dev: false, }) - expect(lockfile.packages['file:project-2(is-positive@2.0.0)']).toEqual({ + expect(lockfile.packages['file:project-1']).toEqual({ resolution: { - directory: 'project-2', + directory: 'project-1', type: 'directory', }, + name: 'project-1', + peerDependencies: { + 'is-positive': '>=1.0.0', + }, + }) + expect(lockfile.snapshots['file:project-2(is-positive@2.0.0)']).toEqual({ id: 'file:project-2', - name: 'project-2', dependencies: { 'project-1': 'file:project-1(is-positive@2.0.0)', }, transitivePeerDependencies: ['is-positive'], dev: false, }) + expect(lockfile.packages['file:project-2']).toEqual({ + resolution: { + directory: 'project-2', + type: 'directory', + }, + name: 'project-2', + }) const modulesState = rootModules.readModulesManifest() expect(modulesState?.injectedDeps?.['project-1'].length).toEqual(2) @@ -443,22 +453,24 @@ test('inject local packages declared via file protocol', async () => { injected: true, }, }) - expect(lockfile.packages['file:project-1(is-positive@1.0.0)']).toEqual({ - resolution: { - directory: 'project-1', - type: 'directory', - }, + expect(lockfile.snapshots['file:project-1(is-positive@1.0.0)']).toEqual({ id: 'file:project-1', - name: 'project-1', - peerDependencies: { - 'is-positive': '>=1.0.0', - }, dependencies: { 'is-negative': '2.0.0', 'is-positive': '1.0.0', }, dev: false, }) + expect(lockfile.packages['file:project-1']).toEqual({ + resolution: { + directory: 'project-1', + type: 'directory', + }, + name: 'project-1', + peerDependencies: { + 'is-positive': '>=1.0.0', + }, + }) const modulesState = rootModules.readModulesManifest() expect(modulesState?.injectedDeps?.['project-1'].length).toEqual(2) expect(modulesState?.injectedDeps?.['project-1'][0]).toContain(`node_modules${path.sep}.pnpm`) @@ -587,35 +599,39 @@ test('inject local packages when the file protocol is used', async () => { const rootModules = assertProject(process.cwd()) { const lockfile = rootModules.readLockfile() - expect(lockfile.packages['file:project-1(is-positive@1.0.0)']).toEqual({ - resolution: { - directory: 'project-1', - type: 'directory', - }, + expect(lockfile.snapshots['file:project-1(is-positive@1.0.0)']).toEqual({ id: 'file:project-1', - name: 'project-1', - peerDependencies: { - 'is-positive': '>=1.0.0', - }, dependencies: { 'is-negative': '1.0.0', 'is-positive': '1.0.0', }, dev: false, }) - expect(lockfile.packages['file:project-2(is-positive@2.0.0)']).toEqual({ + expect(lockfile.packages['file:project-1']).toEqual({ resolution: { - directory: 'project-2', + directory: 'project-1', type: 'directory', }, + name: 'project-1', + peerDependencies: { + 'is-positive': '>=1.0.0', + }, + }) + expect(lockfile.snapshots['file:project-2(is-positive@2.0.0)']).toEqual({ id: 'file:project-2', - name: 'project-2', dependencies: { 'project-1': 'file:project-1(is-positive@2.0.0)', }, transitivePeerDependencies: ['is-positive'], dev: false, }) + expect(lockfile.packages['file:project-2']).toEqual({ + resolution: { + directory: 'project-2', + type: 'directory', + }, + name: 'project-2', + }) const modulesState = rootModules.readModulesManifest() expect(modulesState?.injectedDeps?.['project-1'].length).toEqual(2) @@ -657,22 +673,24 @@ test('inject local packages when the file protocol is used', async () => { })) { const lockfile = rootModules.readLockfile() - expect(lockfile.packages['file:project-1(is-positive@1.0.0)']).toEqual({ - resolution: { - directory: 'project-1', - type: 'directory', - }, + expect(lockfile.snapshots['file:project-1(is-positive@1.0.0)']).toEqual({ id: 'file:project-1', - name: 'project-1', - peerDependencies: { - 'is-positive': '>=1.0.0', - }, dependencies: { 'is-negative': '2.0.0', 'is-positive': '1.0.0', }, dev: false, }) + expect(lockfile.packages['file:project-1']).toEqual({ + resolution: { + directory: 'project-1', + type: 'directory', + }, + name: 'project-1', + peerDependencies: { + 'is-positive': '>=1.0.0', + }, + }) const modulesState = rootModules.readModulesManifest() expect(modulesState?.injectedDeps?.['project-1'].length).toEqual(2) expect(modulesState?.injectedDeps?.['project-1'][0]).toContain(`node_modules${path.sep}.pnpm`) @@ -779,22 +797,24 @@ test('inject local packages and relink them after build', async () => { injected: true, }, }) - expect(lockfile.packages['file:project-1(is-positive@1.0.0)']).toEqual({ - resolution: { - directory: 'project-1', - type: 'directory', - }, + expect(lockfile.snapshots['file:project-1(is-positive@1.0.0)']).toEqual({ id: 'file:project-1', - name: 'project-1', - peerDependencies: { - 'is-positive': '1.0.0', - }, dependencies: { 'is-negative': '1.0.0', 'is-positive': '1.0.0', }, dev: false, }) + expect(lockfile.packages['file:project-1']).toEqual({ + resolution: { + directory: 'project-1', + type: 'directory', + }, + name: 'project-1', + peerDependencies: { + 'is-positive': '1.0.0', + }, + }) rimraf('node_modules') rimraf('project-1/main.js') @@ -889,22 +909,24 @@ test('inject local packages and relink them after build (file protocol is used)' const rootModules = assertProject(process.cwd()) const lockfile = rootModules.readLockfile() - expect(lockfile.packages['file:project-1(is-positive@1.0.0)']).toEqual({ - resolution: { - directory: 'project-1', - type: 'directory', - }, + expect(lockfile.snapshots['file:project-1(is-positive@1.0.0)']).toEqual({ id: 'file:project-1', - name: 'project-1', - peerDependencies: { - 'is-positive': '1.0.0', - }, dependencies: { 'is-negative': '1.0.0', 'is-positive': '1.0.0', }, dev: false, }) + expect(lockfile.packages['file:project-1']).toEqual({ + resolution: { + directory: 'project-1', + type: 'directory', + }, + name: 'project-1', + peerDependencies: { + 'is-positive': '1.0.0', + }, + }) rimraf('node_modules') rimraf('project-1/main.js') @@ -1062,16 +1084,8 @@ test('inject local packages when node-linker is hoisted', async () => { injected: true, }, }) - expect(lockfile.packages['file:project-1(is-positive@1.0.0)']).toEqual({ - resolution: { - directory: 'project-1', - type: 'directory', - }, + expect(lockfile.snapshots['file:project-1(is-positive@1.0.0)']).toEqual({ id: 'file:project-1', - name: 'project-1', - peerDependencies: { - 'is-positive': '>=1.0.0', - }, dependencies: { '@pnpm.e2e/dep-of-pkg-with-1-dep': '100.0.0', 'is-negative': '1.0.0', @@ -1079,13 +1093,18 @@ test('inject local packages when node-linker is hoisted', async () => { }, dev: false, }) - expect(lockfile.packages['file:project-2(is-positive@2.0.0)']).toEqual({ + expect(lockfile.packages['file:project-1']).toEqual({ resolution: { - directory: 'project-2', + directory: 'project-1', type: 'directory', }, + name: 'project-1', + peerDependencies: { + 'is-positive': '>=1.0.0', + }, + }) + expect(lockfile.snapshots['file:project-2(is-positive@2.0.0)']).toEqual({ id: 'file:project-2', - name: 'project-2', dependencies: { '@pnpm.e2e/dep-of-pkg-with-1-dep': '101.0.0', 'project-1': 'file:project-1(is-positive@2.0.0)', @@ -1093,6 +1112,13 @@ test('inject local packages when node-linker is hoisted', async () => { transitivePeerDependencies: ['is-positive'], dev: false, }) + expect(lockfile.packages['file:project-2']).toEqual({ + resolution: { + directory: 'project-2', + type: 'directory', + }, + name: 'project-2', + }) const modulesState = rootModules.readModulesManifest() expect(modulesState?.injectedDeps?.['project-1'].length).toEqual(2) @@ -1245,30 +1271,27 @@ test('inject local packages when node-linker is hoisted and dependenciesMeta is injected: true, }, }) - expect(lockfile.packages['file:project-1(is-positive@1.0.0)']).toEqual({ - resolution: { - directory: 'project-1', - type: 'directory', - }, + expect(lockfile.snapshots['file:project-1(is-positive@1.0.0)']).toEqual({ id: 'file:project-1', - name: 'project-1', - peerDependencies: { - 'is-positive': '>=1.0.0', - }, + dev: false, dependencies: { '@pnpm.e2e/dep-of-pkg-with-1-dep': '100.0.0', 'is-negative': '1.0.0', 'is-positive': '1.0.0', }, - dev: false, }) - expect(lockfile.packages['file:project-2(is-positive@2.0.0)']).toEqual({ + expect(lockfile.packages['file:project-1']).toEqual({ resolution: { - directory: 'project-2', + directory: 'project-1', type: 'directory', }, + name: 'project-1', + peerDependencies: { + 'is-positive': '>=1.0.0', + }, + }) + expect(lockfile.snapshots['file:project-2(is-positive@2.0.0)']).toEqual({ id: 'file:project-2', - name: 'project-2', dependencies: { '@pnpm.e2e/dep-of-pkg-with-1-dep': '101.0.0', 'project-1': 'file:project-1(is-positive@2.0.0)', @@ -1276,6 +1299,13 @@ test('inject local packages when node-linker is hoisted and dependenciesMeta is transitivePeerDependencies: ['is-positive'], dev: false, }) + expect(lockfile.packages['file:project-2']).toEqual({ + resolution: { + directory: 'project-2', + type: 'directory', + }, + name: 'project-2', + }) const modulesState = rootModules.readModulesManifest() expect(modulesState?.injectedDeps?.['project-1'].length).toEqual(2) @@ -1388,7 +1418,7 @@ test('peer dependency of injected project should be resolved correctly', async ( const rootModules = assertProject(process.cwd()) const lockfile = rootModules.readLockfile() - expect(lockfile.packages?.['file:project-2(project-1@project-1)'].dependencies?.['project-1']).toEqual('link:project-1') + expect(lockfile.snapshots?.['file:project-2(project-1@project-1)'].dependencies?.['project-1']).toEqual('link:project-1') }) // There was a bug related to this. The manifests in the workspacePackages object were modified @@ -1985,19 +2015,21 @@ test('injected local packages are deduped', async () => { }, }) expect(lockfile.packages['file:project-1(is-positive@1.0.0)']).toBeFalsy() - expect(lockfile.packages['file:project-2(is-positive@2.0.0)']).toEqual({ - resolution: { - directory: 'project-2', - type: 'directory', - }, + expect(lockfile.snapshots['file:project-2(is-positive@2.0.0)']).toEqual({ id: 'file:project-2', - name: 'project-2', dependencies: { 'project-1': 'file:project-1(is-positive@2.0.0)', }, transitivePeerDependencies: ['is-positive'], dev: false, }) + expect(lockfile.packages['file:project-2']).toEqual({ + resolution: { + directory: 'project-2', + type: 'directory', + }, + name: 'project-2', + }) const modulesState = rootModules.readModulesManifest() expect(modulesState?.injectedDeps?.['project-1'].length).toEqual(1) diff --git a/pkg-manager/core/test/install/local.ts b/pkg-manager/core/test/install/local.ts index b2dba715d0..49d7dea678 100644 --- a/pkg-manager/core/test/install/local.ts +++ b/pkg-manager/core/test/install/local.ts @@ -1,7 +1,7 @@ import fs from 'fs' import path from 'path' import { LOCKFILE_VERSION } from '@pnpm/constants' -import { type Lockfile } from '@pnpm/lockfile-file' +import { type LockfileV7 as Lockfile } from '@pnpm/lockfile-file' import { prepareEmpty, preparePackages } from '@pnpm/prepare' import { addDistTag } from '@pnpm/registry-mock' import { fixtures } from '@pnpm/test-fixtures' @@ -183,7 +183,6 @@ test('tarball local package', async () => { const lockfile = project.readLockfile() expect(lockfile.packages[lockfile.importers['.'].dependencies!['tar-pkg'].version]).toStrictEqual({ - dev: false, name: 'tar-pkg', resolution: { integrity: 'sha512-HP/5Rgt3pVFLzjmN9qJJ6vZMgCwoCIl/m2bPndYT283CUqnmFiMx0GeeIJ7SyK6TYoJM78SEvFEOQie++caHqw==', @@ -214,7 +213,6 @@ test('tarball local package from project directory', async () => { const lockfile = project.readLockfile() expect(lockfile.importers['.'].dependencies?.['tar-pkg'].version).toBe(pkgSpec) expect(lockfile.packages[lockfile.importers['.'].dependencies!['tar-pkg'].version]).toStrictEqual({ - dev: false, name: 'tar-pkg', resolution: { integrity: 'sha512-HP/5Rgt3pVFLzjmN9qJJ6vZMgCwoCIl/m2bPndYT283CUqnmFiMx0GeeIJ7SyK6TYoJM78SEvFEOQie++caHqw==', @@ -231,13 +229,13 @@ test('update tarball local package when its integrity changes', async () => { const manifest = await addDependenciesToPackage({}, ['../tar.tgz'], testDefaults()) const lockfile1 = project.readLockfile() - expect(lockfile1.packages['file:../tar.tgz'].dependencies!['is-positive']).toBe('1.0.0') + expect(lockfile1.snapshots['file:../tar.tgz'].dependencies!['is-positive']).toBe('1.0.0') f.copy('tar-pkg-with-dep-2/tar-pkg-with-dep-1.0.0.tgz', path.resolve('..', 'tar.tgz')) await install(manifest, testDefaults()) const lockfile2 = project.readLockfile() - expect(lockfile2.packages['file:../tar.tgz'].dependencies!['is-positive']).toBe('2.0.0') + expect(lockfile2.snapshots['file:../tar.tgz'].dependencies!['is-positive']).toBe('2.0.0') const manifestOfTarballDep = await import(path.resolve('node_modules/tar-pkg-with-dep/package.json')) expect(manifestOfTarballDep.dependencies['is-positive']).toBe('^2.0.0') @@ -430,6 +428,10 @@ test('re-install should update local file dependency', async () => { 'file:../local-pkg': { resolution: { directory: '../local-pkg', type: 'directory' }, name: 'local-pkg', + }, + }, + snapshots: { + 'file:../local-pkg': { dev: false, }, }, @@ -459,16 +461,20 @@ test('re-install should update local file dependency', async () => { expect(fs.existsSync('./node_modules/.pnpm/is-positive@1.0.0')).toBeTruthy() lockfile = project.readLockfile() expect(lockfile).toMatchObject({ - packages: { + snapshots: { 'file:../local-pkg': { - resolution: { directory: '../local-pkg', type: 'directory' }, - name: 'local-pkg', dev: false, dependencies: { 'is-positive': '1.0.0', }, }, }, + packages: { + 'file:../local-pkg': { + resolution: { directory: '../local-pkg', type: 'directory' }, + name: 'local-pkg', + }, + }, }) // update dependency @@ -487,6 +493,10 @@ test('re-install should update local file dependency', async () => { 'file:../local-pkg': { resolution: { directory: '../local-pkg', type: 'directory' }, name: 'local-pkg', + }, + }, + snapshots: { + 'file:../local-pkg': { dev: false, dependencies: { 'is-positive': '2.0.0', diff --git a/pkg-manager/core/test/install/multipleImporters.ts b/pkg-manager/core/test/install/multipleImporters.ts index 0453d0f8ce..fc4c65c45d 100644 --- a/pkg-manager/core/test/install/multipleImporters.ts +++ b/pkg-manager/core/test/install/multipleImporters.ts @@ -1330,7 +1330,7 @@ test('do not resolve a subdependency from the workspace by default', async () => const project = assertProject(process.cwd()) const wantedLockfile = project.readLockfile() - expect(wantedLockfile.packages['/@pnpm.e2e/pkg-with-1-dep@100.0.0'].dependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep']).toBe('100.1.0') + expect(wantedLockfile.snapshots['/@pnpm.e2e/pkg-with-1-dep@100.0.0'].dependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep']).toBe('100.1.0') }) test('resolve a subdependency from the workspace', async () => { @@ -1393,7 +1393,7 @@ test('resolve a subdependency from the workspace', async () => { const project = assertProject(process.cwd()) const wantedLockfile = project.readLockfile() - expect(wantedLockfile.packages['/@pnpm.e2e/pkg-with-1-dep@100.0.0'].dependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep']).toBe('link:@pnpm.e2e/dep-of-pkg-with-1-dep') + expect(wantedLockfile.snapshots['/@pnpm.e2e/pkg-with-1-dep@100.0.0'].dependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep']).toBe('link:@pnpm.e2e/dep-of-pkg-with-1-dep') rimraf('node_modules') @@ -1476,7 +1476,7 @@ test('resolve a subdependency from the workspace and use it as a peer', async () const wantedLockfile = project.readLockfile() const suffix1 = createPeersDirSuffix([{ name: '@pnpm.e2e/peer-a', version: '@pnpm.e2e+peer-a' }, { name: '@pnpm.e2e/peer-b', version: '1.0.0' }]) const suffix2 = createPeersDirSuffix([{ name: '@pnpm.e2e/peer-a', version: '@pnpm.e2e+peer-a' }, { name: '@pnpm.e2e/peer-b', version: '1.0.0' }, { name: '@pnpm.e2e/peer-c', version: '1.0.1' }]) - expect(Object.keys(wantedLockfile.packages).sort()).toStrictEqual( + expect(Object.keys(wantedLockfile.snapshots).sort()).toStrictEqual( [ '/@pnpm.e2e/abc-grand-parent-with-c@1.0.0', '/@pnpm.e2e/abc-parent-with-ab@1.0.0', @@ -1489,8 +1489,8 @@ test('resolve a subdependency from the workspace and use it as a peer', async () '/@pnpm.e2e/peer-c@1.0.1', ].sort() ) - expect(wantedLockfile.packages['/@pnpm.e2e/abc-parent-with-ab@1.0.0'].dependencies?.['@pnpm.e2e/peer-a']).toBe('link:@pnpm.e2e/peer-a') - expect(wantedLockfile.packages[`/@pnpm.e2e/abc@1.0.0${suffix1}`].dependencies?.['@pnpm.e2e/peer-a']).toBe('link:@pnpm.e2e/peer-a') + expect(wantedLockfile.snapshots['/@pnpm.e2e/abc-parent-with-ab@1.0.0'].dependencies?.['@pnpm.e2e/peer-a']).toBe('link:@pnpm.e2e/peer-a') + expect(wantedLockfile.snapshots[`/@pnpm.e2e/abc@1.0.0${suffix1}`].dependencies?.['@pnpm.e2e/peer-a']).toBe('link:@pnpm.e2e/peer-a') }) test('resolve a subdependency from the workspace, when it uses the workspace protocol', async () => { @@ -1561,7 +1561,7 @@ test('resolve a subdependency from the workspace, when it uses the workspace pro const project = assertProject(process.cwd()) const wantedLockfile = project.readLockfile() - expect(wantedLockfile.packages['/@pnpm.e2e/pkg-with-1-dep@100.0.0'].dependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep']).toBe('link:@pnpm.e2e/dep-of-pkg-with-1-dep') + expect(wantedLockfile.snapshots['/@pnpm.e2e/pkg-with-1-dep@100.0.0'].dependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep']).toBe('link:@pnpm.e2e/dep-of-pkg-with-1-dep') rimraf('node_modules') diff --git a/pkg-manager/core/test/install/only.ts b/pkg-manager/core/test/install/only.ts index 21452be935..0b53e5c4b2 100644 --- a/pkg-manager/core/test/install/only.ts +++ b/pkg-manager/core/test/install/only.ts @@ -92,7 +92,7 @@ test('install dev dependencies only', async () => { { const lockfile = project.readLockfile() - expect(lockfile.packages['/is-positive@1.0.0'].dev === false).toBeTruthy() + expect(lockfile.snapshots['/is-positive@1.0.0'].dev === false).toBeTruthy() } { diff --git a/pkg-manager/core/test/install/optionalDependencies.ts b/pkg-manager/core/test/install/optionalDependencies.ts index ae27e18c9d..a5819b46d7 100644 --- a/pkg-manager/core/test/install/optionalDependencies.ts +++ b/pkg-manager/core/test/install/optionalDependencies.ts @@ -1,6 +1,6 @@ import fs from 'fs' import path from 'path' -import { type Lockfile } from '@pnpm/lockfile-file' +import { type LockfileV7 as Lockfile } from '@pnpm/lockfile-file' import { prepareEmpty, preparePackages } from '@pnpm/prepare' import deepRequireCwd from 'deep-require-cwd' import { sync as readYamlFile } from 'read-yaml-file' @@ -355,7 +355,7 @@ test('only that package is skipped which is an optional dependency only and not } const lockfile = project.readLockfile() - expect(typeof lockfile.packages['/@pnpm.e2e/dep-of-optional-pkg@1.0.0'].optional).toBe('undefined') + expect(typeof lockfile.snapshots['/@pnpm.e2e/dep-of-optional-pkg@1.0.0'].optional).toBe('undefined') rimraf('node_modules') @@ -528,8 +528,8 @@ test('do not fail on unsupported dependency of optional dependency', async () => ) const lockfile = project.readLockfile() - expect(lockfile.packages['/@pnpm.e2e/not-compatible-with-any-os@1.0.0'].optional).toBeTruthy() - expect(lockfile.packages['/@pnpm.e2e/dep-of-optional-pkg@1.0.0']).toBeTruthy() + expect(lockfile.snapshots['/@pnpm.e2e/not-compatible-with-any-os@1.0.0'].optional).toBeTruthy() + expect(lockfile.snapshots['/@pnpm.e2e/dep-of-optional-pkg@1.0.0']).toBeTruthy() }) test('fail on unsupported dependency of optional dependency', async () => { diff --git a/pkg-manager/core/test/install/overrides.ts b/pkg-manager/core/test/install/overrides.ts index 091eeebeaa..4b1cc84e25 100644 --- a/pkg-manager/core/test/install/overrides.ts +++ b/pkg-manager/core/test/install/overrides.ts @@ -24,8 +24,8 @@ test('versions are replaced with versions specified through overrides option', a { const lockfile = project.readLockfile() - expect(lockfile.packages['/@pnpm.e2e/foobarqar@1.0.0'].dependencies?.['@pnpm.e2e/foo']).toBe('/@pnpm.e2e/qar@100.0.0') - expect(lockfile.packages['/@pnpm.e2e/foobar@100.0.0'].dependencies?.['@pnpm.e2e/foo']).toBe('100.0.0') + expect(lockfile.snapshots['/@pnpm.e2e/foobarqar@1.0.0'].dependencies?.['@pnpm.e2e/foo']).toBe('/@pnpm.e2e/qar@100.0.0') + expect(lockfile.snapshots['/@pnpm.e2e/foobar@100.0.0'].dependencies?.['@pnpm.e2e/foo']).toBe('100.0.0') expect(lockfile.packages).toHaveProperty(['/@pnpm.e2e/dep-of-pkg-with-1-dep@101.0.0']) expect(lockfile.packages).toHaveProperty(['/@pnpm.e2e/bar@100.1.0']) expect(lockfile.overrides).toStrictEqual({ diff --git a/pkg-manager/core/test/install/packageExtensions.ts b/pkg-manager/core/test/install/packageExtensions.ts index 96552d9baa..5f836dd74a 100644 --- a/pkg-manager/core/test/install/packageExtensions.ts +++ b/pkg-manager/core/test/install/packageExtensions.ts @@ -25,7 +25,7 @@ test('manifests are extended with fields specified by packageExtensions', async { const lockfile = project.readLockfile() - expect(lockfile.packages['/is-positive@1.0.0'].dependencies?.['@pnpm.e2e/bar']).toBe('100.1.0') + expect(lockfile.snapshots['/is-positive@1.0.0'].dependencies?.['@pnpm.e2e/bar']).toBe('100.1.0') expect(lockfile.packageExtensionsChecksum).toStrictEqual(createObjectChecksum({ 'is-positive': { dependencies: { @@ -47,7 +47,7 @@ test('manifests are extended with fields specified by packageExtensions', async { const lockfile = project.readLockfile() - expect(lockfile.packages['/is-positive@1.0.0'].dependencies?.['@pnpm.e2e/foobar']).toBe('100.0.0') + expect(lockfile.snapshots['/is-positive@1.0.0'].dependencies?.['@pnpm.e2e/foobar']).toBe('100.0.0') expect(lockfile.packageExtensionsChecksum).toStrictEqual(createObjectChecksum({ 'is-positive': { dependencies: { diff --git a/pkg-manager/core/test/install/patch.ts b/pkg-manager/core/test/install/patch.ts index 8db2477eb0..4e47851d15 100644 --- a/pkg-manager/core/test/install/patch.ts +++ b/pkg-manager/core/test/install/patch.ts @@ -40,7 +40,7 @@ test('patch package', async () => { hash: patchFileHash, }, }) - expect(lockfile.packages[`/is-positive@1.0.0(patch_hash=${patchFileHash})`]).toBeTruthy() + expect(lockfile.snapshots[`/is-positive@1.0.0(patch_hash=${patchFileHash})`]).toBeTruthy() const filesIndexFile = path.join(opts.storeDir, 'files/c7/1ccf199e0fdae37aad13946b937d67bcd35fa111b84d21b3a19439cfdc2812c5d8da8a735e94c2a1ccb77b4583808ee8405313951e7146ac83ede3671dc292-index.json') const filesIndex = loadJsonFile.sync(filesIndexFile) @@ -207,7 +207,7 @@ test('patch package when scripts are ignored', async () => { hash: patchFileHash, }, }) - expect(lockfile.packages[`/is-positive@1.0.0(patch_hash=${patchFileHash})`]).toBeTruthy() + expect(lockfile.snapshots[`/is-positive@1.0.0(patch_hash=${patchFileHash})`]).toBeTruthy() const filesIndexFile = path.join(opts.storeDir, 'files/c7/1ccf199e0fdae37aad13946b937d67bcd35fa111b84d21b3a19439cfdc2812c5d8da8a735e94c2a1ccb77b4583808ee8405313951e7146ac83ede3671dc292-index.json') const filesIndex = loadJsonFile.sync(filesIndexFile) @@ -294,7 +294,7 @@ test('patch package when the package is not in onlyBuiltDependencies list', asyn hash: patchFileHash, }, }) - expect(lockfile.packages[`/is-positive@1.0.0(patch_hash=${patchFileHash})`]).toBeTruthy() + expect(lockfile.snapshots[`/is-positive@1.0.0(patch_hash=${patchFileHash})`]).toBeTruthy() const filesIndexFile = path.join(opts.storeDir, 'files/c7/1ccf199e0fdae37aad13946b937d67bcd35fa111b84d21b3a19439cfdc2812c5d8da8a735e94c2a1ccb77b4583808ee8405313951e7146ac83ede3671dc292-index.json') const filesIndex = loadJsonFile.sync(filesIndexFile) @@ -377,10 +377,10 @@ test('patch package when the patched package has no dependencies and appears mul expect(fs.readFileSync('node_modules/is-positive/index.js', 'utf8')).toContain('// patched') const lockfile = project.readLockfile() - expect(Object.keys(lockfile.packages)).toStrictEqual([ + expect(Object.keys(lockfile.snapshots).sort()).toStrictEqual([ '/is-not-positive@1.0.0', '/is-positive@1.0.0(patch_hash=jnbpamcxayl5i4ehrkoext3any)', - ]) + ].sort()) }) test('patch package should fail when the patch could not be applied', async () => { diff --git a/pkg-manager/core/test/install/peerDependencies.ts b/pkg-manager/core/test/install/peerDependencies.ts index 1f9a830aca..5f9539ed4c 100644 --- a/pkg-manager/core/test/install/peerDependencies.ts +++ b/pkg-manager/core/test/install/peerDependencies.ts @@ -1,7 +1,7 @@ import fs from 'fs' import path from 'path' import { WANTED_LOCKFILE } from '@pnpm/constants' -import { type Lockfile } from '@pnpm/lockfile-file' +import { type LockfileV7 as Lockfile } from '@pnpm/lockfile-file' import { prepareEmpty, preparePackages } from '@pnpm/prepare' import { addDistTag, REGISTRY_MOCK_PORT } from '@pnpm/registry-mock' import { fixtures } from '@pnpm/test-fixtures' @@ -48,9 +48,9 @@ test('peer dependency is grouped with dependency when peer is resolved not from const lockfile = project.readLockfile() - expect(lockfile.packages['/@pnpm.e2e/using-ajv@1.0.0'].dependencies!['ajv-keywords']).toBe('1.5.0(ajv@4.10.4)') + expect(lockfile.snapshots['/@pnpm.e2e/using-ajv@1.0.0'].dependencies!['ajv-keywords']).toBe('1.5.0(ajv@4.10.4)') // covers https://github.com/pnpm/pnpm/issues/1150 - expect(lockfile.packages).toHaveProperty(['/ajv-keywords@1.5.0(ajv@4.10.4)']) + expect(lockfile.snapshots).toHaveProperty(['/ajv-keywords@1.5.0(ajv@4.10.4)']) }) // Covers https://github.com/pnpm/pnpm/issues/1133 @@ -99,7 +99,7 @@ test('peer dependency is grouped with dependent when the peer is a top dependenc }, testDefaults({ preferFrozenLockfile: false })) const lockfile = project.readLockfile() - expect(lockfile.packages['/ajv-keywords@1.5.0(ajv@4.10.4)'].dependencies).toHaveProperty(['ajv']) + expect(lockfile.snapshots['/ajv-keywords@1.5.0(ajv@4.10.4)'].dependencies).toHaveProperty(['ajv']) }) test('the right peer dependency is used in every workspace package', async () => { @@ -505,7 +505,7 @@ test('the list of transitive peer dependencies is kept up to date', async () => expect(fs.existsSync(path.resolve('node_modules/.pnpm/@pnpm.e2e+abc-grand-parent@1.0.0_@pnpm.e2e+peer-c@1.0.0/node_modules/@pnpm.e2e/abc-grand-parent'))).toBeTruthy() { const lockfile = project.readLockfile() - expect(lockfile.packages['/@pnpm.e2e/abc-grand-parent@1.0.0(@pnpm.e2e/peer-c@1.0.0)'].transitivePeerDependencies).toStrictEqual(['@pnpm.e2e/peer-c']) + expect(lockfile.snapshots['/@pnpm.e2e/abc-grand-parent@1.0.0(@pnpm.e2e/peer-c@1.0.0)'].transitivePeerDependencies).toStrictEqual(['@pnpm.e2e/peer-c']) } await mutateModulesInSingleProject({ @@ -518,7 +518,7 @@ test('the list of transitive peer dependencies is kept up to date', async () => { const lockfile = project.readLockfile() - expect(lockfile.packages['/@pnpm.e2e/abc-grand-parent@1.0.0'].transitivePeerDependencies).toBeFalsy() + expect(lockfile.snapshots['/@pnpm.e2e/abc-grand-parent@1.0.0'].transitivePeerDependencies).toBeFalsy() } }) @@ -643,7 +643,7 @@ test.skip('peer dependencies are linked', async () => { expect(deepRequireCwd(['@pnpm.e2e/abc-grand-parent-with-c', '@pnpm.e2e/abc-parent-with-ab', '@pnpm.e2e/abc', '@pnpm.e2e/peer-c', './package.json']).version).toBe('1.0.0') const lockfile = project.readLockfile() - expect(lockfile.packages['/@pnpm.e2e/abc-parent-with-ab/1.0.0/@pnpm.e2e/peer-a@1.0.0+@pnpm.e2e+peer-b@1.0.0'].dev).toBeTruthy() + expect(lockfile.snapshots['/@pnpm.e2e/abc-parent-with-ab/1.0.0/@pnpm.e2e/peer-a@1.0.0+@pnpm.e2e+peer-b@1.0.0'].dev).toBeTruthy() }) test('scoped peer dependency is linked', async () => { @@ -688,8 +688,8 @@ test('package that has parent as peer dependency', async () => { const lockfile = project.readLockfile() - expect(lockfile.packages).toHaveProperty(['/@pnpm.e2e/has-alpha-as-peer@1.0.0(@pnpm.e2e/alpha@1.0.0)']) - expect(lockfile.packages).not.toHaveProperty(['/@pnpm.e2e/has-alpha-as-peer@1.0.0']) + expect(lockfile.snapshots).toHaveProperty(['/@pnpm.e2e/has-alpha-as-peer@1.0.0(@pnpm.e2e/alpha@1.0.0)']) + expect(lockfile.snapshots).not.toHaveProperty(['/@pnpm.e2e/has-alpha-as-peer@1.0.0']) }) test('own peer installed in root as well is linked to root', async () => { @@ -936,10 +936,10 @@ test('peer dependency is resolved from parent package', async () => { }, testDefaults()) const lockfile = readYamlFile(WANTED_LOCKFILE) - expect(Object.keys(lockfile.packages ?? {})).toStrictEqual([ + expect(Object.keys(lockfile.snapshots ?? {}).sort()).toStrictEqual([ '/@pnpm.e2e/has-tango-as-peer-dep@1.0.0(@pnpm.e2e/tango@1.0.0)', '/@pnpm.e2e/tango@1.0.0', - ]) + ].sort()) }) test('transitive peerDependencies field does not break the lockfile on subsequent named install', async () => { @@ -964,7 +964,7 @@ test('transitive peerDependencies field does not break the lockfile on subsequen const lockfile = readYamlFile(WANTED_LOCKFILE) - expect(Object.keys(lockfile.packages!['/most@1.7.3'].dependencies!)).toStrictEqual([ + expect(Object.keys(lockfile.snapshots!['/most@1.7.3'].dependencies!)).toStrictEqual([ '@most/multicast', '@most/prelude', 'symbol-observable', @@ -985,10 +985,10 @@ test('peer dependency is resolved from parent package via its alias', async () = }, testDefaults()) const lockfile = readYamlFile(WANTED_LOCKFILE) - expect(Object.keys(lockfile.packages ?? {})).toStrictEqual([ + expect(Object.keys(lockfile.snapshots ?? {}).sort()).toStrictEqual([ '/@pnpm.e2e/has-tango-as-peer-dep@1.0.0(@pnpm.e2e/tango-tango@1.0.0(@pnpm.e2e/tango-tango@1.0.0))', '/@pnpm.e2e/tango-tango@1.0.0(@pnpm.e2e/tango-tango@1.0.0)', - ]) + ].sort()) }) test('peer dependency is saved', async () => { @@ -1091,7 +1091,7 @@ test('warning is not reported when cannot resolve optional peer dependency', asy const lockfile = project.readLockfile() - expect(lockfile.packages['/@pnpm.e2e/abc-optional-peers@1.0.0(@pnpm.e2e/peer-c@2.0.0)'].peerDependenciesMeta).toStrictEqual({ + expect(lockfile.packages['/@pnpm.e2e/abc-optional-peers@1.0.0'].peerDependenciesMeta).toStrictEqual({ '@pnpm.e2e/peer-b': { optional: true, }, @@ -1154,12 +1154,12 @@ test('warning is not reported when cannot resolve optional peer dependency (spec const lockfile = project.readLockfile() - expect(lockfile.packages['/@pnpm.e2e/abc-optional-peers-meta-only@1.0.0(@pnpm.e2e/peer-c@2.0.0)'].peerDependencies).toStrictEqual({ + expect(lockfile.packages['/@pnpm.e2e/abc-optional-peers-meta-only@1.0.0'].peerDependencies).toStrictEqual({ '@pnpm.e2e/peer-a': '^1.0.0', '@pnpm.e2e/peer-b': '*', '@pnpm.e2e/peer-c': '*', }) - expect(lockfile.packages['/@pnpm.e2e/abc-optional-peers-meta-only@1.0.0(@pnpm.e2e/peer-c@2.0.0)'].peerDependenciesMeta).toStrictEqual({ + expect(lockfile.packages['/@pnpm.e2e/abc-optional-peers-meta-only@1.0.0'].peerDependenciesMeta).toStrictEqual({ '@pnpm.e2e/peer-b': { optional: true, }, @@ -1218,7 +1218,7 @@ test('peer dependency that is resolved by a dev dependency', async () => { }, testDefaults({ fastUnpack: false, lockfileOnly: true, strictPeerDependencies: false })) const lockfile = project.readLockfile() - expect(lockfile.packages['/@types/mongoose@5.7.32'].dev).toBeUndefined() + expect(lockfile.snapshots['/@types/mongoose@5.7.32'].dev).toBeUndefined() await mutateModulesInSingleProject({ manifest, @@ -1285,7 +1285,7 @@ test('peer dependency is grouped with dependency when peer is resolved not from await mutateModules(importers, testDefaults({ allProjects })) const lockfile = readYamlFile(path.resolve(WANTED_LOCKFILE)) - expect(lockfile.packages?.['/ajv-keywords@1.5.0(ajv@ajv)'].dependencies?.['ajv']).toBe('link:ajv') + expect(lockfile.snapshots?.['/ajv-keywords@1.5.0(ajv@ajv)'].dependencies?.['ajv']).toBe('link:ajv') }) test('deduplicate packages that have optional and non-optional peers', async () => { @@ -1299,7 +1299,7 @@ test('deduplicate packages that have optional and non-optional peers', async () ) const lockfile = readYamlFile(path.resolve(WANTED_LOCKFILE)) - const depPaths = Object.keys(lockfile.packages ?? {}) + const depPaths = Object.keys(lockfile.snapshots ?? {}) expect(depPaths.length).toBe(5) expect(depPaths).toContain(`/@pnpm.e2e/abc-optional-peers@1.0.0${createPeersDirSuffix([{ name: '@pnpm.e2e/peer-a', version: '1.0.0' }, { name: '@pnpm.e2e/peer-b', version: '1.0.0' }, { name: '@pnpm.e2e/peer-c', version: '1.0.0' }])}`) }) @@ -1317,7 +1317,7 @@ test('deduplicate packages that have peers', async () => { ) const lockfile = readYamlFile(path.resolve(WANTED_LOCKFILE)) - const depPaths = Object.keys(lockfile.packages ?? {}) + const depPaths = Object.keys(lockfile.snapshots ?? {}) expect(depPaths.length).toBe(8) expect(depPaths).toContain(`/@pnpm.e2e/abc@1.0.0${createPeersDirSuffix([{ name: '@pnpm.e2e/peer-a', version: '1.0.0' }, { name: '@pnpm.e2e/peer-b', version: '1.0.0' }, { name: '@pnpm.e2e/peer-c', version: '1.0.0' }])}`) expect(depPaths).toContain(`/@pnpm.e2e/abc-parent-with-ab@1.0.0${createPeersDirSuffix([{ name: '@pnpm.e2e/peer-c', version: '1.0.0' }])}`) @@ -1381,7 +1381,7 @@ test('deduplicate packages that have peers, when adding new dependency in a work await mutateModules(importers, testDefaults({ allProjects, autoInstallPeers: false, dedupePeerDependents: true })) const lockfile = readYamlFile(path.resolve(WANTED_LOCKFILE)) - const depPaths = Object.keys(lockfile.packages ?? {}) + const depPaths = Object.keys(lockfile.snapshots ?? {}) expect(depPaths.length).toBe(8) expect(depPaths).toContain(`/@pnpm.e2e/abc@1.0.0${createPeersDirSuffix([{ name: '@pnpm.e2e/peer-a', version: '1.0.0' }, { name: '@pnpm.e2e/peer-b', version: '1.0.0' }, { name: '@pnpm.e2e/peer-c', version: '1.0.0' }])}`) expect(depPaths).toContain(`/@pnpm.e2e/abc-parent-with-ab@1.0.0${createPeersDirSuffix([{ name: '@pnpm.e2e/peer-c', version: '1.0.0' }])}`) @@ -1399,7 +1399,7 @@ test('resolve peer dependencies from aliased subdependencies if they are depende ) const lockfile = readYamlFile(path.resolve(WANTED_LOCKFILE)) // eslint-disable-line - expect(lockfile.packages['/@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-a@1.0.0)(@pnpm.e2e/peer-b@1.0.0)(@pnpm.e2e/peer-c@1.0.0)']).toBeTruthy() + expect(lockfile.snapshots['/@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-a@1.0.0)(@pnpm.e2e/peer-b@1.0.0)(@pnpm.e2e/peer-c@1.0.0)']).toBeTruthy() }) test('resolve peer dependency from aliased direct dependency', async () => { @@ -1410,7 +1410,7 @@ test('resolve peer dependency from aliased direct dependency', async () => { await addDependenciesToPackage(manifest, ['@pnpm.e2e/abc@1.0.0'], opts) const lockfile = readYamlFile(path.resolve(WANTED_LOCKFILE)) // eslint-disable-line - expect(lockfile.packages['/@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-a@1.0.0)']).toBeTruthy() + expect(lockfile.snapshots['/@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-a@1.0.0)']).toBeTruthy() }) test('resolve peer dependency using the alias that differs from the real name of the direct dependency', async () => { @@ -1421,9 +1421,9 @@ test('resolve peer dependency using the alias that differs from the real name of await addDependenciesToPackage(manifest, ['@pnpm.e2e/abc@1.0.0'], opts) const lockfile = readYamlFile(path.resolve(WANTED_LOCKFILE)) // eslint-disable-line - expect(lockfile.packages['/@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-a@1.0.0)(@pnpm.e2e/peer-a@1.0.0)']).toBeTruthy() - expect(lockfile.packages['/@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-a@1.0.0)(@pnpm.e2e/peer-a@1.0.0)']?.dependencies['@pnpm.e2e/peer-a']).toBe('1.0.0') - expect(lockfile.packages['/@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-a@1.0.0)(@pnpm.e2e/peer-a@1.0.0)']?.dependencies['@pnpm.e2e/peer-b']).toBe('/@pnpm.e2e/peer-a@1.0.0') + expect(lockfile.snapshots['/@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-a@1.0.0)(@pnpm.e2e/peer-a@1.0.0)']).toBeTruthy() + expect(lockfile.snapshots['/@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-a@1.0.0)(@pnpm.e2e/peer-a@1.0.0)']?.dependencies['@pnpm.e2e/peer-a']).toBe('1.0.0') + expect(lockfile.snapshots['/@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-a@1.0.0)(@pnpm.e2e/peer-a@1.0.0)']?.dependencies['@pnpm.e2e/peer-b']).toBe('/@pnpm.e2e/peer-a@1.0.0') }) test('when there are several aliased dependencies of the same package, pick the one with the highest version to resolve peers', async () => { @@ -1438,7 +1438,7 @@ test('when there are several aliased dependencies of the same package, pick the await addDependenciesToPackage(manifest, ['@pnpm.e2e/abc@1.0.0'], opts) const lockfile = readYamlFile(path.resolve(WANTED_LOCKFILE)) // eslint-disable-line - expect(lockfile.packages['/@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-c@2.0.0)']).toBeTruthy() + expect(lockfile.snapshots['/@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-c@2.0.0)']).toBeTruthy() }) test('when there is an aliases dependency and a non-aliased one, prefer the non-aliased dependency to resolve peers', async () => { @@ -1452,7 +1452,7 @@ test('when there is an aliases dependency and a non-aliased one, prefer the non- await addDependenciesToPackage(manifest, ['@pnpm.e2e/abc@1.0.0'], opts) const lockfile = readYamlFile(path.resolve(WANTED_LOCKFILE)) // eslint-disable-line - expect(lockfile.packages['/@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-c@1.0.0)']).toBeTruthy() + expect(lockfile.snapshots['/@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-c@1.0.0)']).toBeTruthy() }) test('in a subdependency, when there are several aliased dependencies of the same package, pick the one with the highest version to resolve peers', async () => { @@ -1461,7 +1461,7 @@ test('in a subdependency, when there are several aliased dependencies of the sam await addDependenciesToPackage({}, ['@pnpm.e2e/abc-parent-with-aliases-of-same-pkg@1.0.0'], testDefaults({ autoInstallPeers: false, strictPeerDependencies: false })) const lockfile = readYamlFile(path.resolve(WANTED_LOCKFILE)) // eslint-disable-line - expect(lockfile.packages['/@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-c@2.0.0)']).toBeTruthy() + expect(lockfile.snapshots['/@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-c@2.0.0)']).toBeTruthy() }) test('peer having peer is resolved correctly', async () => { @@ -1527,7 +1527,7 @@ test('peer having peer is resolved correctly', async () => { const lockfile = readYamlFile(path.resolve(WANTED_LOCKFILE)) // eslint-disable-line expect(lockfile.importers['project-1'].dependencies?.['@pnpm.e2e/has-has-y-peer-only-as-peer']['version']).not.toEqual(lockfile.importers['project-2'].dependencies?.['@pnpm.e2e/has-has-y-peer-only-as-peer']['version']) - expect(lockfile.packages['/@pnpm.e2e/has-has-y-peer-only-as-peer@1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@1.0.0))'].dependencies['@pnpm.e2e/has-y-peer']).toEqual('1.0.0(@pnpm/y@1.0.0)') + expect(lockfile.snapshots['/@pnpm.e2e/has-has-y-peer-only-as-peer@1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@1.0.0))'].dependencies['@pnpm.e2e/has-y-peer']).toEqual('1.0.0(@pnpm/y@1.0.0)') }) test('peer having peer is resolved correctly. The peer is also in the dependencies of the dependent package', async () => { @@ -1595,11 +1595,11 @@ test('peer having peer is resolved correctly. The peer is also in the dependenci expect(lockfile.importers['project-1'].dependencies?.['@pnpm.e2e/has-has-y-peer-only-as-peer-and-y']['version']).toEqual('1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@2.0.0))') expect(lockfile.importers['project-2'].dependencies?.['@pnpm.e2e/has-has-y-peer-only-as-peer-and-y']['version']).toEqual('1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@1.0.0))') - expect(lockfile.packages['/@pnpm.e2e/has-has-y-peer-only-as-peer-and-y@1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@1.0.0))'].dependencies['@pnpm/y']).toEqual('1.0.0') - expect(lockfile.packages['/@pnpm.e2e/has-has-y-peer-only-as-peer-and-y@1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@2.0.0))'].dependencies['@pnpm/y']).toEqual('1.0.0') + expect(lockfile.snapshots['/@pnpm.e2e/has-has-y-peer-only-as-peer-and-y@1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@1.0.0))'].dependencies['@pnpm/y']).toEqual('1.0.0') + expect(lockfile.snapshots['/@pnpm.e2e/has-has-y-peer-only-as-peer-and-y@1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@2.0.0))'].dependencies['@pnpm/y']).toEqual('1.0.0') - expect(lockfile.packages['/@pnpm.e2e/has-has-y-peer-only-as-peer-and-y@1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@1.0.0))'].dependencies['@pnpm.e2e/has-y-peer']).toEqual('1.0.0(@pnpm/y@1.0.0)') - expect(lockfile.packages['/@pnpm.e2e/has-has-y-peer-only-as-peer-and-y@1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@2.0.0))'].dependencies['@pnpm.e2e/has-y-peer']).toEqual('1.0.0(@pnpm/y@2.0.0)') + expect(lockfile.snapshots['/@pnpm.e2e/has-has-y-peer-only-as-peer-and-y@1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@1.0.0))'].dependencies['@pnpm.e2e/has-y-peer']).toEqual('1.0.0(@pnpm/y@1.0.0)') + expect(lockfile.snapshots['/@pnpm.e2e/has-has-y-peer-only-as-peer-and-y@1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@2.0.0))'].dependencies['@pnpm.e2e/has-y-peer']).toEqual('1.0.0(@pnpm/y@2.0.0)') }) test('peer having peer is resolved correctly. The peer is also in the dependencies of the dependent package. Test #2', async () => { @@ -1664,8 +1664,8 @@ test('peer having peer is resolved correctly. The peer is also in the dependenci const lockfile = readYamlFile(path.resolve(WANTED_LOCKFILE)) // eslint-disable-line - expect(lockfile.packages['/@pnpm.e2e/has-has-y-peer-only-as-peer-and-y@1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@2.0.0))'].dependencies['@pnpm.e2e/has-y-peer']).toEqual('1.0.0(@pnpm/y@2.0.0)') - expect(lockfile.packages['/@pnpm.e2e/has-has-y-peer-only-as-peer-and-y@2.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@1.0.0))'].dependencies['@pnpm.e2e/has-y-peer']).toEqual('1.0.0(@pnpm/y@1.0.0)') + expect(lockfile.snapshots['/@pnpm.e2e/has-has-y-peer-only-as-peer-and-y@1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@2.0.0))'].dependencies['@pnpm.e2e/has-y-peer']).toEqual('1.0.0(@pnpm/y@2.0.0)') + expect(lockfile.snapshots['/@pnpm.e2e/has-has-y-peer-only-as-peer-and-y@2.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@1.0.0))'].dependencies['@pnpm.e2e/has-y-peer']).toEqual('1.0.0(@pnpm/y@1.0.0)') }) test('resolve peer of peer from the dependencies of the direct dependent package', async () => { @@ -1677,7 +1677,7 @@ test('resolve peer of peer from the dependencies of the direct dependent package expect(lockfile.importers?.['.'].dependencies?.['@pnpm.e2e/has-has-y-peer-only-as-peer-and-y'].version).toBe('1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@2.0.0))') // Even though @pnpm/y@1.0.0 is in the dependencies of the direct dependent package, we resolve y from above. // It might make sense to print a warning in this case and suggest to make y a peer dependency in the dependent package too. - expect(lockfile.packages['/@pnpm.e2e/has-has-y-peer-only-as-peer-and-y@1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@2.0.0))'].dependencies?.['@pnpm.e2e/has-y-peer']).toBe('1.0.0(@pnpm/y@2.0.0)') + expect(lockfile.snapshots['/@pnpm.e2e/has-has-y-peer-only-as-peer-and-y@1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@2.0.0))'].dependencies?.['@pnpm.e2e/has-y-peer']).toBe('1.0.0(@pnpm/y@2.0.0)') }) test('2 circular peers', async () => { diff --git a/pkg-manager/core/test/install/update.ts b/pkg-manager/core/test/install/update.ts index 42d717ea8e..3708c42b14 100644 --- a/pkg-manager/core/test/install/update.ts +++ b/pkg-manager/core/test/install/update.ts @@ -1,6 +1,6 @@ import path from 'path' import { WANTED_LOCKFILE } from '@pnpm/constants' -import { type Lockfile } from '@pnpm/lockfile-file' +import { type LockfileV7 as Lockfile } from '@pnpm/lockfile-file' import { prepareEmpty } from '@pnpm/prepare' import { addDistTag } from '@pnpm/registry-mock' import { sync as readYamlFile } from 'read-yaml-file' @@ -33,10 +33,10 @@ test('preserve subdeps on update', async () => { const lockfile = project.readLockfile() - expect(lockfile.packages).toBeTruthy() - expect(lockfile.packages).toHaveProperty(['/@pnpm.e2e/abc-parent-with-ab@1.0.0(@pnpm.e2e/peer-c@1.0.0)']) - expect(lockfile.packages).toHaveProperty(['/@pnpm.e2e/foobarqar@1.0.1']) - expect(lockfile.packages['/@pnpm.e2e/foobarqar@1.0.1'].dependencies).toStrictEqual({ + expect(lockfile.snapshots).toBeTruthy() + expect(lockfile.snapshots).toHaveProperty(['/@pnpm.e2e/abc-parent-with-ab@1.0.0(@pnpm.e2e/peer-c@1.0.0)']) + expect(lockfile.snapshots).toHaveProperty(['/@pnpm.e2e/foobarqar@1.0.1']) + expect(lockfile.snapshots['/@pnpm.e2e/foobarqar@1.0.1'].dependencies).toStrictEqual({ '@pnpm.e2e/bar': '100.0.0', '@pnpm.e2e/foo': '100.0.0', '@pnpm.e2e/qar': '100.0.0', @@ -70,9 +70,9 @@ test('preserve subdeps on update when no node_modules is present', async () => { const lockfile = project.readLockfile() expect(lockfile.packages).toBeTruthy() - expect(lockfile.packages).toHaveProperty(['/@pnpm.e2e/abc-parent-with-ab@1.0.0(@pnpm.e2e/peer-c@1.0.0)']) // preserve version of package that has resolved peer deps - expect(lockfile.packages).toHaveProperty(['/@pnpm.e2e/foobarqar@1.0.1']) - expect(lockfile.packages['/@pnpm.e2e/foobarqar@1.0.1'].dependencies).toStrictEqual({ + expect(lockfile.snapshots).toHaveProperty(['/@pnpm.e2e/abc-parent-with-ab@1.0.0(@pnpm.e2e/peer-c@1.0.0)']) // preserve version of package that has resolved peer deps + expect(lockfile.snapshots).toHaveProperty(['/@pnpm.e2e/foobarqar@1.0.1']) + expect(lockfile.snapshots['/@pnpm.e2e/foobarqar@1.0.1'].dependencies).toStrictEqual({ '@pnpm.e2e/bar': '100.0.0', '@pnpm.e2e/foo': '100.0.0', '@pnpm.e2e/qar': '100.0.0', @@ -143,9 +143,9 @@ test('preserve subdeps when installing on a package that has one dependency spec const lockfile = project.readLockfile() - expect(lockfile.packages).toHaveProperty(['/@pnpm.e2e/abc-parent-with-ab@1.0.0(@pnpm.e2e/peer-c@1.0.0)']) // preserve version of package that has resolved peer deps - expect(lockfile.packages).toHaveProperty(['/@pnpm.e2e/foobarqar@1.0.1']) - expect(lockfile.packages['/@pnpm.e2e/foobarqar@1.0.1'].dependencies).toStrictEqual({ + expect(lockfile.snapshots).toHaveProperty(['/@pnpm.e2e/abc-parent-with-ab@1.0.0(@pnpm.e2e/peer-c@1.0.0)']) // preserve version of package that has resolved peer deps + expect(lockfile.snapshots).toHaveProperty(['/@pnpm.e2e/foobarqar@1.0.1']) + expect(lockfile.snapshots['/@pnpm.e2e/foobarqar@1.0.1'].dependencies).toStrictEqual({ '@pnpm.e2e/bar': '100.0.0', '@pnpm.e2e/foo': '100.0.0', '@pnpm.e2e/qar': '100.0.0', @@ -202,9 +202,9 @@ test('update only the specified package', async () => { const lockfile = project.readLockfile() - expect(lockfile.packages).toHaveProperty(['/@pnpm.e2e/abc-parent-with-ab@1.0.0(@pnpm.e2e/peer-c@1.0.0)']) - expect(lockfile.packages).toHaveProperty(['/@pnpm.e2e/foobarqar@1.0.0']) - expect(lockfile.packages['/@pnpm.e2e/foobarqar@1.0.0'].dependencies).toStrictEqual({ + expect(lockfile.snapshots).toHaveProperty(['/@pnpm.e2e/abc-parent-with-ab@1.0.0(@pnpm.e2e/peer-c@1.0.0)']) + expect(lockfile.snapshots).toHaveProperty(['/@pnpm.e2e/foobarqar@1.0.0']) + expect(lockfile.snapshots['/@pnpm.e2e/foobarqar@1.0.0'].dependencies).toStrictEqual({ '@pnpm.e2e/bar': '100.0.0', '@pnpm.e2e/foo': '100.1.0', 'is-positive': '3.1.0', diff --git a/pkg-manager/core/test/install/updatingPkgJson.ts b/pkg-manager/core/test/install/updatingPkgJson.ts index fc12d97e9e..c1fbc1592b 100644 --- a/pkg-manager/core/test/install/updatingPkgJson.ts +++ b/pkg-manager/core/test/install/updatingPkgJson.ts @@ -75,10 +75,10 @@ test('dependency should not be added to package.json if it is already there', as const lockfile = project.readLockfile() expect(lockfile.importers['.'].devDependencies?.['@pnpm.e2e/foo'].version).toBe('100.0.0') - expect(lockfile.packages['/@pnpm.e2e/foo@100.0.0'].dev).toBeTruthy() + expect(lockfile.snapshots['/@pnpm.e2e/foo@100.0.0'].dev).toBeTruthy() expect(lockfile.importers['.'].optionalDependencies?.['@pnpm.e2e/bar'].version).toBe('100.0.0') - expect(lockfile.packages['/@pnpm.e2e/bar@100.0.0'].optional).toBeTruthy() + expect(lockfile.snapshots['/@pnpm.e2e/bar@100.0.0'].optional).toBeTruthy() }) test('dependencies should be updated in the fields where they already are', async () => { diff --git a/pkg-manager/core/test/lockfile.ts b/pkg-manager/core/test/lockfile.ts index 608c8a6764..1e98e24184 100644 --- a/pkg-manager/core/test/lockfile.ts +++ b/pkg-manager/core/test/lockfile.ts @@ -5,7 +5,7 @@ import { type RootLog } from '@pnpm/core-loggers' import { type PnpmError } from '@pnpm/error' import { fixtures } from '@pnpm/test-fixtures' import { type Lockfile, type TarballResolution } from '@pnpm/lockfile-file' -import { type LockfileFile } from '@pnpm/lockfile-types' +import { type LockfileFileV7 } from '@pnpm/lockfile-types' import { tempDir, prepareEmpty, preparePackages } from '@pnpm/prepare' import { readPackageJsonFromDir } from '@pnpm/read-package-json' import { addDistTag, getIntegrity, REGISTRY_MOCK_PORT } from '@pnpm/registry-mock' @@ -61,8 +61,8 @@ test('lockfile has correct format', async () => { expect(lockfile.packages).toBeTruthy() // has packages field expect(lockfile.packages).toHaveProperty([id]) - expect(lockfile.packages[id].dependencies).toBeTruthy() - expect(lockfile.packages[id].dependencies).toHaveProperty(['@pnpm.e2e/dep-of-pkg-with-1-dep']) + expect(lockfile.snapshots[id].dependencies).toBeTruthy() + expect(lockfile.snapshots[id].dependencies).toHaveProperty(['@pnpm.e2e/dep-of-pkg-with-1-dep']) expect(lockfile.packages[id].resolution).toBeTruthy() expect((lockfile.packages[id].resolution as { integrity: string }).integrity).toBeTruthy() expect((lockfile.packages[id].resolution as TarballResolution).tarball).toBeFalsy() @@ -371,7 +371,7 @@ test(`subdeps are updated on repeat install if outer ${WANTED_LOCKFILE} does not }, } - lockfile.packages['/@pnpm.e2e/pkg-with-1-dep@100.0.0'].dependencies!['@pnpm.e2e/dep-of-pkg-with-1-dep'] = '100.1.0' + lockfile.snapshots['/@pnpm.e2e/pkg-with-1-dep@100.0.0'].dependencies!['@pnpm.e2e/dep-of-pkg-with-1-dep'] = '100.1.0' writeYamlFile(WANTED_LOCKFILE, lockfile, { lineWidth: 1000 }) @@ -444,7 +444,7 @@ test('package is not marked dev if it is also a subdep of a regular dependency', const lockfile = project.readLockfile() - expect(lockfile.packages['/@pnpm.e2e/dep-of-pkg-with-1-dep@100.0.0'].dev).toBeFalsy() + expect(lockfile.snapshots['/@pnpm.e2e/dep-of-pkg-with-1-dep@100.0.0'].dev).toBeFalsy() }) test('package is not marked optional if it is also a subdep of a regular dependency', async () => { @@ -458,7 +458,7 @@ test('package is not marked optional if it is also a subdep of a regular depende const lockfile = project.readLockfile() - expect(lockfile.packages['/@pnpm.e2e/dep-of-pkg-with-1-dep@100.0.0'].optional).toBeFalsy() + expect(lockfile.snapshots['/@pnpm.e2e/dep-of-pkg-with-1-dep@100.0.0'].optional).toBeFalsy() }) test('scoped module from different registry', async () => { @@ -500,29 +500,21 @@ test('scoped module from different registry', async () => { lockfileVersion: LOCKFILE_VERSION, packages: { '/@foo/has-dep-from-same-scope@1.0.0': { - dependencies: { - '@foo/no-deps': '1.0.0', - 'is-negative': '1.0.0', - }, - dev: false, resolution: { integrity: getIntegrity('@foo/has-dep-from-same-scope', '1.0.0'), }, }, '/@foo/no-deps@1.0.0': { - dev: false, resolution: { integrity: getIntegrity('@foo/no-deps', '1.0.0'), }, }, '/@zkochan/foo@1.0.0': { - dev: false, resolution: { integrity: 'sha512-IFvrYpq7E6BqKex7A7czIFnFncPiUVdhSzGhAOWpp8RlkXns4y/9ZdynxaA/e0VkihRxQkihE2pTyvxjfe/wBg==', }, }, '/is-negative@1.0.0': { - dev: false, engines: { node: '>=0.10.0', }, @@ -531,7 +523,6 @@ test('scoped module from different registry', async () => { }, }, '/is-positive@3.1.0': { - dev: false, engines: { node: '>=0.10.0', }, @@ -540,6 +531,27 @@ test('scoped module from different registry', async () => { }, }, }, + snapshots: { + '/@foo/has-dep-from-same-scope@1.0.0': { + dependencies: { + '@foo/no-deps': '1.0.0', + 'is-negative': '1.0.0', + }, + dev: false, + }, + '/@foo/no-deps@1.0.0': { + dev: false, + }, + '/@zkochan/foo@1.0.0': { + dev: false, + }, + '/is-negative@1.0.0': { + dev: false, + }, + '/is-positive@3.1.0': { + dev: false, + }, + }, }) }) @@ -645,7 +657,7 @@ test('dev properties are correctly updated on named install', async () => { const lockfile = project.readLockfile() expect( - Object.values(lockfile.packages).filter((dep) => typeof dep.dev !== 'undefined') + Object.values(lockfile.snapshots).filter((dep) => typeof dep.dev !== 'undefined') ).toStrictEqual([]) }) @@ -656,7 +668,7 @@ test('optional properties are correctly updated on named install', async () => { await addDependenciesToPackage(manifest, ['foo@npm:inflight@1.0.6'], testDefaults({})) const lockfile = project.readLockfile() - expect(Object.values(lockfile.packages).filter((dep) => typeof dep.optional !== 'undefined')).toStrictEqual([]) + expect(Object.values(lockfile.snapshots).filter((dep) => typeof dep.optional !== 'undefined')).toStrictEqual([]) }) test('dev property is correctly set for package that is duplicated to both the dependencies and devDependencies group', async () => { @@ -666,7 +678,7 @@ test('dev property is correctly set for package that is duplicated to both the d await addDependenciesToPackage({}, ['overlap@2.2.8'], testDefaults()) const lockfile = project.readLockfile() - expect(lockfile.packages['/couleurs@5.0.0'].dev === false).toBeTruthy() + expect(lockfile.snapshots['/couleurs@5.0.0'].dev === false).toBeTruthy() }) test('no lockfile', async () => { @@ -811,22 +823,16 @@ test('packages installed via tarball URL from the default registry are normalize lockfileVersion: LOCKFILE_VERSION, packages: { '/@pnpm.e2e/dep-of-pkg-with-1-dep@100.0.0': { - dev: false, resolution: { integrity: getIntegrity('@pnpm.e2e/dep-of-pkg-with-1-dep', '100.0.0'), }, }, '/@pnpm.e2e/pkg-with-tarball-dep-from-registry@1.0.0': { - dependencies: { - '@pnpm.e2e/dep-of-pkg-with-1-dep': '100.0.0', - }, - dev: false, resolution: { integrity: getIntegrity('@pnpm.e2e/pkg-with-tarball-dep-from-registry', '1.0.0'), }, }, '@registry.npmjs.org/is-positive/-/is-positive-1.0.0.tgz': { - dev: false, engines: { node: '>=0.10.0' }, name: 'is-positive', resolution: { @@ -835,6 +841,20 @@ test('packages installed via tarball URL from the default registry are normalize version: '1.0.0', }, }, + snapshots: { + '/@pnpm.e2e/dep-of-pkg-with-1-dep@100.0.0': { + dev: false, + }, + '/@pnpm.e2e/pkg-with-tarball-dep-from-registry@1.0.0': { + dependencies: { + '@pnpm.e2e/dep-of-pkg-with-1-dep': '100.0.0', + }, + dev: false, + }, + '@registry.npmjs.org/is-positive/-/is-positive-1.0.0.tgz': { + dev: false, + }, + }, }) }) @@ -863,7 +883,7 @@ test('lockfile file has correct format when lockfile directory does not equal th expect(modules.pendingBuilds.length).toBe(0) { - const lockfile: LockfileFile = readYamlFile(WANTED_LOCKFILE) + const lockfile: LockfileFileV7 = readYamlFile(WANTED_LOCKFILE) const id = '/@pnpm.e2e/pkg-with-1-dep@100.0.0' expect(lockfile.lockfileVersion).toBe(LOCKFILE_VERSION) @@ -876,7 +896,7 @@ test('lockfile file has correct format when lockfile directory does not equal th expect(lockfile.importers?.project.dependencies!['@zkochan/foo']).toBeTruthy() expect(lockfile.importers?.project.dependencies!['is-negative'].version).toContain('/') - expect(lockfile.packages![id].dependencies).toHaveProperty(['@pnpm.e2e/dep-of-pkg-with-1-dep']) + expect(lockfile.snapshots![id].dependencies).toHaveProperty(['@pnpm.e2e/dep-of-pkg-with-1-dep']) expect(lockfile.packages![id].resolution).toHaveProperty(['integrity']) expect(lockfile.packages![id].resolution).not.toHaveProperty(['tarball']) @@ -897,7 +917,7 @@ test('lockfile file has correct format when lockfile directory does not equal th })) { - const lockfile = readYamlFile(path.join('..', WANTED_LOCKFILE)) + const lockfile = readYamlFile(path.join('..', WANTED_LOCKFILE)) expect(lockfile.importers).toHaveProperty(['project-2']) @@ -908,9 +928,9 @@ test('lockfile file has correct format when lockfile directory does not equal th expect(lockfile.importers?.project.dependencies).toHaveProperty(['@zkochan/foo']) expect(lockfile.importers?.project.dependencies!['is-negative'].version).toContain('/') - expect(lockfile.packages).toHaveProperty([id]) - expect(lockfile.packages![id].dependencies).toBeTruthy() - expect(lockfile.packages![id].dependencies).toHaveProperty(['@pnpm.e2e/dep-of-pkg-with-1-dep']) + expect(lockfile.snapshots).toHaveProperty([id]) + expect(lockfile.snapshots![id].dependencies).toBeTruthy() + expect(lockfile.snapshots![id].dependencies).toHaveProperty(['@pnpm.e2e/dep-of-pkg-with-1-dep']) expect(lockfile.packages![id].resolution).toHaveProperty(['integrity']) expect(lockfile.packages![id].resolution).not.toHaveProperty(['tarball']) @@ -985,7 +1005,7 @@ test(`doing named installation when shared ${WANTED_LOCKFILE} exists already`, a }) ) - const currentLockfile = readYamlFile(path.resolve('node_modules/.pnpm/lock.yaml')) + const currentLockfile = readYamlFile(path.resolve('node_modules/.pnpm/lock.yaml')) expect(Object.keys(currentLockfile.importers ?? {})).toStrictEqual(['pkg2']) @@ -1069,6 +1089,7 @@ test('broken lockfile is fixed even if it seems like up to date at first. Unless const lockfile = project.readLockfile() expect(lockfile.packages).toHaveProperty(['/@pnpm.e2e/dep-of-pkg-with-1-dep@100.0.0']) delete lockfile.packages['/@pnpm.e2e/dep-of-pkg-with-1-dep@100.0.0'] + delete lockfile.snapshots['/@pnpm.e2e/dep-of-pkg-with-1-dep@100.0.0'] writeYamlFile(WANTED_LOCKFILE, lockfile, { lineWidth: 1000 }) } @@ -1146,7 +1167,6 @@ test('tarball domain differs from registry domain', async () => { lockfileVersion: LOCKFILE_VERSION, packages: { '/is-positive@3.1.0': { - dev: false, engines: { node: '>=0.10.0' }, resolution: { integrity: 'sha1-hX21hKG6XRyymAUn/DtsQ103sP0=', @@ -1154,6 +1174,11 @@ test('tarball domain differs from registry domain', async () => { }, }, }, + snapshots: { + '/is-positive@3.1.0': { + dev: false, + }, + }, }) }) @@ -1197,7 +1222,6 @@ test('tarball installed through non-standard URL endpoint from the registry doma lockfileVersion: LOCKFILE_VERSION, packages: { '@registry.npmjs.org/is-positive/download/is-positive-3.1.0.tgz': { - dev: false, engines: { node: '>=0.10.0' }, name: 'is-positive', resolution: { @@ -1206,6 +1230,11 @@ test('tarball installed through non-standard URL endpoint from the registry doma version: '3.1.0', }, }, + snapshots: { + '@registry.npmjs.org/is-positive/download/is-positive-3.1.0.tgz': { + dev: false, + }, + }, }) }) diff --git a/pkg-manager/core/test/packageImportMethods.ts b/pkg-manager/core/test/packageImportMethods.ts index efeda5b890..ccf6a6da5d 100644 --- a/pkg-manager/core/test/packageImportMethods.ts +++ b/pkg-manager/core/test/packageImportMethods.ts @@ -22,7 +22,7 @@ test('copy does not fail on package that self-requires itself', async () => { expect(m).toBeTruthy() // requires-itself is available with packageImportMethod = copy const lockfile = project.readLockfile() - expect(lockfile.packages['/@pnpm.e2e/requires-itself@1.0.0'].dependencies).toStrictEqual({ 'is-positive': '1.0.0' }) + expect(lockfile.snapshots['/@pnpm.e2e/requires-itself@1.0.0'].dependencies).toStrictEqual({ 'is-positive': '1.0.0' }) }) test('packages are updated in node_modules, when packageImportMethod is set to copy and modules manifest and current lockfile are incorrect', async () => { diff --git a/pkg-manager/core/test/uninstall.ts b/pkg-manager/core/test/uninstall.ts index 1ab0d613f8..3eb99ffa4b 100644 --- a/pkg-manager/core/test/uninstall.ts +++ b/pkg-manager/core/test/uninstall.ts @@ -335,7 +335,6 @@ test('uninstalling a dependency from package that uses shared lockfile', async ( lockfileVersion: LOCKFILE_VERSION, packages: { '/is-negative@1.0.0': { - dev: false, engines: { node: '>=0.10.0', }, @@ -344,6 +343,11 @@ test('uninstalling a dependency from package that uses shared lockfile', async ( }, }, }, + snapshots: { + '/is-negative@1.0.0': { + dev: false, + }, + }, }) }) diff --git a/pkg-manager/headless/test/fixtures/deps-have-lifecycle-scripts/pnpm-lock.yaml b/pkg-manager/headless/test/fixtures/deps-have-lifecycle-scripts/pnpm-lock.yaml index 0238d659ae..d1a6db9133 100644 --- a/pkg-manager/headless/test/fixtures/deps-have-lifecycle-scripts/pnpm-lock.yaml +++ b/pkg-manager/headless/test/fixtures/deps-have-lifecycle-scripts/pnpm-lock.yaml @@ -17,11 +17,16 @@ packages: /@pnpm.e2e/hello-world-js-bin@1.0.0: resolution: {integrity: sha512-EDvJzSLCEMnUnrrIGdV+IUWP/8w+nUjOuay2u0KW20Mnfnm3lyrdquQ+gKPNAOUfAsKL1y21np1nQN0PyP+57A==} hasBin: true - dev: false /@pnpm.e2e/pre-and-postinstall-scripts-example@2.0.0: resolution: {integrity: sha512-o1ULljloNzGcHI+k0NuY7aZigV5F551GpY9prYIrhMjIVNyMsERQMxLYZeKQJUnhZO5VKJNtGZlrUYkmJ1qDbw==} - requiresBuild: true + +snapshots: + + /@pnpm.e2e/hello-world-js-bin@1.0.0: + dev: false + + /@pnpm.e2e/pre-and-postinstall-scripts-example@2.0.0: dependencies: '@pnpm.e2e/hello-world-js-bin': 1.0.0 dev: false diff --git a/pkg-manager/headless/test/fixtures/has-glob-and-rimraf/pnpm-lock.yaml b/pkg-manager/headless/test/fixtures/has-glob-and-rimraf/pnpm-lock.yaml index 3dbf0ff374..88ad8241bb 100644 --- a/pkg-manager/headless/test/fixtures/has-glob-and-rimraf/pnpm-lock.yaml +++ b/pkg-manager/headless/test/fixtures/has-glob-and-rimraf/pnpm-lock.yaml @@ -19,25 +19,60 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: false /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + +snapshots: + + /balanced-match@1.0.2: + dev: false + + /brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 dev: false /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: false /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: false /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -48,40 +83,31 @@ packages: dev: false /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: false /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: false /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: false /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: false /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} dev: false /rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true dependencies: glob: 7.2.3 dev: false /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: false diff --git a/pkg-manager/headless/test/fixtures/has-glob/pnpm-lock.yaml b/pkg-manager/headless/test/fixtures/has-glob/pnpm-lock.yaml index fb1fd49e39..1f48943bd4 100644 --- a/pkg-manager/headless/test/fixtures/has-glob/pnpm-lock.yaml +++ b/pkg-manager/headless/test/fixtures/has-glob/pnpm-lock.yaml @@ -16,25 +16,56 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: false /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + +snapshots: + + /balanced-match@1.0.2: + dev: false + + /brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 dev: false /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: false /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: false /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -45,33 +76,26 @@ packages: dev: false /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: false /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: false /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: false /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: false /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} dev: false /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: false diff --git a/pkg-manager/headless/test/fixtures/has-incompatible-optional-subdep/pnpm-lock.yaml b/pkg-manager/headless/test/fixtures/has-incompatible-optional-subdep/pnpm-lock.yaml index 7f29df56b4..26c740935c 100644 --- a/pkg-manager/headless/test/fixtures/has-incompatible-optional-subdep/pnpm-lock.yaml +++ b/pkg-manager/headless/test/fixtures/has-incompatible-optional-subdep/pnpm-lock.yaml @@ -16,21 +16,27 @@ packages: /@pnpm.e2e/dep-of-optional-pkg@1.0.0: resolution: {integrity: sha512-TBIWnj5MFb8i1cG4vh1WSaRHUsgrGXAuXH1QgKxc0D46l6c/o9bjiwTPZZb7a+CGolS9gNxIzZvc/D1XLCDStg==} - requiresBuild: true - dev: false - optional: true /@pnpm.e2e/not-compatible-with-any-os@1.0.0: resolution: {integrity: sha512-2g2bPBv7vBuBUbZH0DOWUkc9nKa0E7IHI4QyRUZGxr7R1TAG/oCj4Qrn3kK/XJKjhHwIZRUqaf0Kl3REgzQxSw==} os: [this-os-does-not-exist] - requiresBuild: true + + /@pnpm.e2e/pkg-with-optional@1.0.0: + resolution: {integrity: sha512-RzAje0bEtf/XhAXgrTNYuXbpRfnkxHlXIGtfmLkK34B0yPnKXNL8qC/jZYv6LOo7bR0+rBSU6nrVb9qzNHIUmA==} + +snapshots: + + /@pnpm.e2e/dep-of-optional-pkg@1.0.0: + dev: false + optional: true + + /@pnpm.e2e/not-compatible-with-any-os@1.0.0: dependencies: '@pnpm.e2e/dep-of-optional-pkg': 1.0.0 dev: false optional: true /@pnpm.e2e/pkg-with-optional@1.0.0: - resolution: {integrity: sha512-RzAje0bEtf/XhAXgrTNYuXbpRfnkxHlXIGtfmLkK34B0yPnKXNL8qC/jZYv6LOo7bR0+rBSU6nrVb9qzNHIUmA==} optionalDependencies: '@pnpm.e2e/not-compatible-with-any-os': 1.0.0 dev: false diff --git a/pkg-manager/headless/test/fixtures/has-local-dep/pkg/pnpm-lock.yaml b/pkg-manager/headless/test/fixtures/has-local-dep/pkg/pnpm-lock.yaml index 1c7421e186..349610a7e0 100644 --- a/pkg-manager/headless/test/fixtures/has-local-dep/pkg/pnpm-lock.yaml +++ b/pkg-manager/headless/test/fixtures/has-local-dep/pkg/pnpm-lock.yaml @@ -18,4 +18,8 @@ packages: resolution: {integrity: sha512-HP/5Rgt3pVFLzjmN9qJJ6vZMgCwoCIl/m2bPndYT283CUqnmFiMx0GeeIJ7SyK6TYoJM78SEvFEOQie++caHqw==, tarball: file:../tar-pkg-1.0.0.tgz} name: tar-pkg version: 1.0.0 + +snapshots: + + file:../tar-pkg-1.0.0.tgz: dev: false diff --git a/pkg-manager/headless/test/fixtures/has-nonexistent-optional-dep/pnpm-lock.yaml b/pkg-manager/headless/test/fixtures/has-nonexistent-optional-dep/pnpm-lock.yaml index 77f5102d70..924e673c1e 100644 --- a/pkg-manager/headless/test/fixtures/has-nonexistent-optional-dep/pnpm-lock.yaml +++ b/pkg-manager/headless/test/fixtures/has-nonexistent-optional-dep/pnpm-lock.yaml @@ -23,25 +23,64 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: false /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: false /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: false /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: false /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /is-negative@2.1.0: + resolution: {integrity: sha512-+iCKT4ZcvjRnjkHnQjZ8/qfciLLGD8BFKS0GNR5VjDU6jEiwh899R0GSMkaYcuTNd7fEKXb3Qib0webe6HczNw==} + engines: {node: '>=0.10.0'} + + /is-positive@1.0.0: + resolution: {integrity: sha512-xxzPGZ4P2uN6rROUa5N9Z7zTX6ERuE0hs6GUOc/cKBLF2NqKc16UwqHMt3tFg4CO6EBTE5UecUasg+3jZx3Ckg==} + engines: {node: '>=0.10.0'} + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + +snapshots: + + /is-negative@2.1.0: + dev: true + + /is-positive@1.0.0: + dev: false + + /rimraf@2.7.1: + dependencies: + glob: 7.2.3 + dev: false + + /glob@7.2.3: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -51,51 +90,42 @@ packages: path-is-absolute: 1.0.1 dev: false + /fs.realpath@1.0.0: + dev: false + /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: false - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: false - - /is-negative@2.1.0: - resolution: {integrity: sha512-+iCKT4ZcvjRnjkHnQjZ8/qfciLLGD8BFKS0GNR5VjDU6jEiwh899R0GSMkaYcuTNd7fEKXb3Qib0webe6HczNw==} - engines: {node: '>=0.10.0'} - dev: true - - /is-positive@1.0.0: - resolution: {integrity: sha512-xxzPGZ4P2uN6rROUa5N9Z7zTX6ERuE0hs6GUOc/cKBLF2NqKc16UwqHMt3tFg4CO6EBTE5UecUasg+3jZx3Ckg==} - engines: {node: '>=0.10.0'} - dev: false - - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: false - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: false - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: false - - /rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: false - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: false + + /inherits@2.0.4: + dev: false + + /minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + dev: false + + /brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: false + + /balanced-match@1.0.2: + dev: false + + /concat-map@0.0.1: + dev: false + + /path-is-absolute@1.0.1: dev: false diff --git a/pkg-manager/headless/test/fixtures/has-several-versions-of-same-pkg/pnpm-lock.yaml b/pkg-manager/headless/test/fixtures/has-several-versions-of-same-pkg/pnpm-lock.yaml index 20b997cffe..9eaa5d3f0b 100644 --- a/pkg-manager/headless/test/fixtures/has-several-versions-of-same-pkg/pnpm-lock.yaml +++ b/pkg-manager/headless/test/fixtures/has-several-versions-of-same-pkg/pnpm-lock.yaml @@ -27,50 +27,112 @@ packages: peerDependenciesMeta: supports-color: optional: true + + /depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + /destroy@1.0.4: + resolution: {integrity: sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==} + + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + /has-flag@1.0.0: + resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} + engines: {node: '>=0.10.0'} + + /http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + /ms@1.0.0: + resolution: {integrity: sha512-85ytwCiGUnD84ui6ULG1KBFMaZgHW3jg5KPr9jt+ZPYt75+XK+JGbYddGrBQ+RSHXOhekCnCZwJywBoFvFl0kw==} + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + /on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + /send@0.17.2: + resolution: {integrity: sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==} + engines: {node: '>= 0.8.0'} + + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + +snapshots: + + /debug@2.6.9: dependencies: ms: 2.0.0 dev: false /depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} dev: false /destroy@1.0.4: - resolution: {integrity: sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==} dev: false /ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: false /encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} dev: false /escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} dev: false /etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} dev: false /fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} dev: false /has-flag@1.0.0: - resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} - engines: {node: '>=0.10.0'} dev: false /http-errors@1.8.1: - resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} - engines: {node: '>= 0.6'} dependencies: depd: 1.1.2 inherits: 2.0.4 @@ -80,42 +142,29 @@ packages: dev: false /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: false /mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true dev: false /ms@1.0.0: - resolution: {integrity: sha512-85ytwCiGUnD84ui6ULG1KBFMaZgHW3jg5KPr9jt+ZPYt75+XK+JGbYddGrBQ+RSHXOhekCnCZwJywBoFvFl0kw==} dev: false /ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: false /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: false /on-finished@2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 dev: false /range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} dev: false /send@0.17.2: - resolution: {integrity: sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==} - engines: {node: '>= 0.8.0'} dependencies: debug: 2.6.9 depd: 1.1.2 @@ -135,15 +184,10 @@ packages: dev: false /setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: false /statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} dev: false /toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} dev: false diff --git a/pkg-manager/headless/test/fixtures/prod-dep-is-dev-subdep/pnpm-lock.yaml b/pkg-manager/headless/test/fixtures/prod-dep-is-dev-subdep/pnpm-lock.yaml index be088cfbf7..be04c964e4 100644 --- a/pkg-manager/headless/test/fixtures/prod-dep-is-dev-subdep/pnpm-lock.yaml +++ b/pkg-manager/headless/test/fixtures/prod-dep-is-dev-subdep/pnpm-lock.yaml @@ -23,20 +23,30 @@ packages: /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + + /is-positive@1.0.0: + resolution: {integrity: sha512-xxzPGZ4P2uN6rROUa5N9Z7zTX6ERuE0hs6GUOc/cKBLF2NqKc16UwqHMt3tFg4CO6EBTE5UecUasg+3jZx3Ckg==} + engines: {node: '>=0.10.0'} + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + +snapshots: + + /inflight@1.0.6: dependencies: once: 1.4.0 wrappy: 1.0.2 dev: true /is-positive@1.0.0: - resolution: {integrity: sha512-xxzPGZ4P2uN6rROUa5N9Z7zTX6ERuE0hs6GUOc/cKBLF2NqKc16UwqHMt3tFg4CO6EBTE5UecUasg+3jZx3Ckg==} - engines: {node: '>=0.10.0'} dev: false /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + /wrappy@1.0.2: {} diff --git a/pkg-manager/headless/test/fixtures/reinstall-peer-deps/pnpm-lock.yaml b/pkg-manager/headless/test/fixtures/reinstall-peer-deps/pnpm-lock.yaml index 09f9b72cb5..11dae0e878 100644 --- a/pkg-manager/headless/test/fixtures/reinstall-peer-deps/pnpm-lock.yaml +++ b/pkg-manager/headless/test/fixtures/reinstall-peer-deps/pnpm-lock.yaml @@ -14,12 +14,28 @@ importers: packages: - /@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-a@1.0.1)(@pnpm.e2e/peer-b@1.0.0)(@pnpm.e2e/peer-c@1.0.0): + /@pnpm.e2e/abc@1.0.0: resolution: {integrity: sha512-pXCDz60zZZ33NeZpkHZtikJBbyAHjK42Nv33wgxGXV/bNDhLfXQ9yQTsVXfR1xOwJ55n2nV+Zkx/W0Lo5YL8ag==} peerDependencies: '@pnpm.e2e/peer-a': ^1.0.0 '@pnpm.e2e/peer-b': ^1.0.0 '@pnpm.e2e/peer-c': ^1.0.0 + + /@pnpm.e2e/dep-of-pkg-with-1-dep@100.0.0: + resolution: {integrity: sha512-atUXGBNAbym4OioYcKt1qTjiH23CSfZ1K2N8JgCUewSE5gY/i9YoK7Ez6+CuEZbH+O3R+HKNrRIaZfnkv/93tg==} + + /@pnpm.e2e/peer-a@1.0.1: + resolution: {integrity: sha512-cyU9jFho5DTPXyyUuMrR4eK5r9ExqStBjoqVOTxb748Q5G9SOgqjZduUDCxA27x6j8GWCmNTt2qOI5WcAROHuQ==} + + /@pnpm.e2e/peer-b@1.0.0: + resolution: {integrity: sha512-/xEON+6CnPFjT8WUWdDI+ZaK+/foZqWhqhzEslQvjaRUZZPD9ClSa1VQqrRLK7DctB9X01rYorCDfRrCCgNU4w==} + + /@pnpm.e2e/peer-c@1.0.0: + resolution: {integrity: sha512-mIxp7K4B8IeXU/fuEP/llay2xDR+hyyhwlqL9D+/3NewrXTyvJUjp8cNagIuEOjA/1VZCDcNQfI947LjsSe3qQ==} + +snapshots: + + /@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-a@1.0.1)(@pnpm.e2e/peer-b@1.0.0)(@pnpm.e2e/peer-c@1.0.0): dependencies: '@pnpm.e2e/dep-of-pkg-with-1-dep': 100.0.0 '@pnpm.e2e/peer-a': 1.0.1 @@ -28,17 +44,13 @@ packages: dev: true /@pnpm.e2e/dep-of-pkg-with-1-dep@100.0.0: - resolution: {integrity: sha512-atUXGBNAbym4OioYcKt1qTjiH23CSfZ1K2N8JgCUewSE5gY/i9YoK7Ez6+CuEZbH+O3R+HKNrRIaZfnkv/93tg==} dev: true /@pnpm.e2e/peer-a@1.0.1: - resolution: {integrity: sha512-cyU9jFho5DTPXyyUuMrR4eK5r9ExqStBjoqVOTxb748Q5G9SOgqjZduUDCxA27x6j8GWCmNTt2qOI5WcAROHuQ==} dev: true /@pnpm.e2e/peer-b@1.0.0: - resolution: {integrity: sha512-/xEON+6CnPFjT8WUWdDI+ZaK+/foZqWhqhzEslQvjaRUZZPD9ClSa1VQqrRLK7DctB9X01rYorCDfRrCCgNU4w==} dev: true /@pnpm.e2e/peer-c@1.0.0: - resolution: {integrity: sha512-mIxp7K4B8IeXU/fuEP/llay2xDR+hyyhwlqL9D+/3NewrXTyvJUjp8cNagIuEOjA/1VZCDcNQfI947LjsSe3qQ==} dev: true diff --git a/pkg-manager/headless/test/fixtures/resolved-peer-deps-in-subdeps/pnpm-lock.yaml b/pkg-manager/headless/test/fixtures/resolved-peer-deps-in-subdeps/pnpm-lock.yaml index 09e2a5f124..d31e663539 100644 --- a/pkg-manager/headless/test/fixtures/resolved-peer-deps-in-subdeps/pnpm-lock.yaml +++ b/pkg-manager/headless/test/fixtures/resolved-peer-deps-in-subdeps/pnpm-lock.yaml @@ -14,68 +14,280 @@ importers: packages: - /@most/multicast@1.3.0(most@1.9.0): + /@most/multicast@1.3.0: resolution: {integrity: sha512-DWH8AShgp5bXn+auGzf5tzPxvpmEvQJd0CNsApOci1LDF4eAEcnw4HQOr2Jaa+L92NbDYFKBSXxll+i7r1ikvw==} peerDependencies: most: ^1.0.1 + + /@most/prelude@1.8.0: + resolution: {integrity: sha512-t1CcURpZzfmBA6fEWwqmCqeNzWAj1w2WqEmCk/2yXMe/p8Ut000wFmVKMy8A1Rl9VVxZEZ5nBHd/pU0dR4bv/w==} + + /@types/common-tags@1.8.4: + resolution: {integrity: sha512-S+1hLDJPjWNDhcGxsxEbepzaxWqURP/o+3cP4aa2w7yBXgdcmKGQtZzP8JbyfOd0m+33nh+8+kvxYE2UJtBDkg==} + + /@types/node@9.6.61: + resolution: {integrity: sha512-/aKAdg5c8n468cYLy2eQrcR5k6chlbNwZNGUj3TboyPa2hcO2QAJcfymlqPzMiRj8B6nYKXjzQz36minFE0RwQ==} + + /@types/ramda@0.25.51: + resolution: {integrity: sha512-xcmtfHIgF9SYjhGdsZR1nQslxG4hu0cIpFfLQ4CWdw3KzHvl7ki1AzFLQUkbDTG42ZN3ZsQfdRzXRlkAvbIy5Q==} + + /@types/semver@5.5.0: + resolution: {integrity: sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==} + + /ansi-diff@1.1.1: + resolution: {integrity: sha512-XnTdFDQzbEewrDx8epWXdw7oqHMvv315vEtfqDiEhhWghIf4++h26c3/FMz7iTLhNrnj56DNIXpbxHZq+3s6qw==} + + /ansi-regex@3.0.1: + resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} + engines: {node: '>=4'} + + /ansi-split@1.0.1: + resolution: {integrity: sha512-RRxQym4DFtDNmHIkW6aeFVvrXURb11lGAEPXNiryjCe8bK8RsANjzJ0M2aGOkvBYwP4Bl/xZ8ijtr6D3j1x/eg==} + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + /as-table@1.0.55: + resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + /cli-cursor@2.1.0: + resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} + engines: {node: '>=4'} + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + /common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + /data-uri-to-buffer@2.0.2: + resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} + + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + /get-source@1.0.42: + resolution: {integrity: sha512-uM5xCIG5w2meVbiZaID4ajH6J8OfApqhlKXtZwsS/IIM9PLb0b2kc5sRdy78yEDfxsIYEWNk0OVxai6OpDCExA==} + + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + /hasown@2.0.1: + resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} + engines: {node: '>= 0.4'} + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + /json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + /mimic-fn@1.2.0: + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + /most-last@1.0.1: + resolution: {integrity: sha512-ycc+leSrXoGRjxhsZJW/l+Sk0CXj9e/z6EP5ebZ8A+zDWGRq1v/oeNkyQF4TG95LnT5Q0ysG+5piJYSR86k58A==} + peerDependencies: + most: ^1.0.3 + + /most@1.9.0: + resolution: {integrity: sha512-M7yHMcMGaclzEL6eg8Yh8PlAsaWfL/oSThF4+ZuWKM5CKXcbzmLh+qESwgZFzMKHJ+iVJwb28yFvDEOobI653w==} + + /ndjson@1.5.0: + resolution: {integrity: sha512-hUPLuaziboGjNF7wHngkgVc0FOclR8dDk/HfEvTtDr/iUrqBWiRcRSTK3/nLOqKH33th714BrMmTPtObI9gZxQ==} + hasBin: true + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + /onetime@2.0.1: + resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} + engines: {node: '>=4'} + + /pnpm-default-reporter@0.14.7: + resolution: {integrity: sha512-uHBIrBDxS/K82cGaxSQnhMYPJyYI4mX/28voWxqtFwIqhR0Gjf73EGN1wUc3lD38HdQDkCrSk5HBwp5N21AONw==} + engines: {node: '>=4'} + hasBin: true + peerDependencies: + supi: '>=0.12.5 <0.15.0' + + /pretty-bytes@4.0.2: + resolution: {integrity: sha512-yJAF+AjbHKlxQ8eezMd/34Mnj/YTQ3i6kLzvVsH4l/BfIFtp444n0wVbnsn66JimZ9uBofv815aRp1zCppxlWw==} + engines: {node: '>=4'} + + /printable-characters@1.0.42: + resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + /ramda@0.25.0: + resolution: {integrity: sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==} + + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + /restore-cursor@2.0.0: + resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} + engines: {node: '>=4'} + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + /split2@2.2.0: + resolution: {integrity: sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==} + + /stacktracey@1.2.127: + resolution: {integrity: sha512-tj3BObW/adLIAQGGQ0flRTADrCv6KQ4VgncUO8NrQ7pk/H6pGMtXxQLjZYw66eqPDTC1DHtnBwGSmG+Wx/D/kg==} + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + /symbol-observable@2.0.3: + resolution: {integrity: sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==} + engines: {node: '>=0.10'} + + /through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + /zen-observable@0.7.1: + resolution: {integrity: sha512-OI6VMSe0yeqaouIXtedC+F55Sr6r9ppS7+wTbSexkYdHbdt4ctTuPNXP/rwm7GTVI63YBc+EBT0b0tl7YnJLRg==} + + /zen-push@0.2.1: + resolution: {integrity: sha512-Qv4qvc8ZIue51B/0zmeIMxpIGDVhz4GhJALBvnKs/FRa2T7jy4Ori9wFwaHVt0zWV7MIFglKAHbgnVxVTw7U1w==} + +snapshots: + + /@most/multicast@1.3.0(most@1.9.0): dependencies: '@most/prelude': 1.8.0 most: 1.9.0 dev: false /@most/prelude@1.8.0: - resolution: {integrity: sha512-t1CcURpZzfmBA6fEWwqmCqeNzWAj1w2WqEmCk/2yXMe/p8Ut000wFmVKMy8A1Rl9VVxZEZ5nBHd/pU0dR4bv/w==} dev: false /@types/common-tags@1.8.4: - resolution: {integrity: sha512-S+1hLDJPjWNDhcGxsxEbepzaxWqURP/o+3cP4aa2w7yBXgdcmKGQtZzP8JbyfOd0m+33nh+8+kvxYE2UJtBDkg==} dev: false /@types/node@9.6.61: - resolution: {integrity: sha512-/aKAdg5c8n468cYLy2eQrcR5k6chlbNwZNGUj3TboyPa2hcO2QAJcfymlqPzMiRj8B6nYKXjzQz36minFE0RwQ==} dev: false /@types/ramda@0.25.51: - resolution: {integrity: sha512-xcmtfHIgF9SYjhGdsZR1nQslxG4hu0cIpFfLQ4CWdw3KzHvl7ki1AzFLQUkbDTG42ZN3ZsQfdRzXRlkAvbIy5Q==} dev: false /@types/semver@5.5.0: - resolution: {integrity: sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==} dev: false /ansi-diff@1.1.1: - resolution: {integrity: sha512-XnTdFDQzbEewrDx8epWXdw7oqHMvv315vEtfqDiEhhWghIf4++h26c3/FMz7iTLhNrnj56DNIXpbxHZq+3s6qw==} dependencies: ansi-split: 1.0.1 dev: false /ansi-regex@3.0.1: - resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} - engines: {node: '>=4'} dev: false /ansi-split@1.0.1: - resolution: {integrity: sha512-RRxQym4DFtDNmHIkW6aeFVvrXURb11lGAEPXNiryjCe8bK8RsANjzJ0M2aGOkvBYwP4Bl/xZ8ijtr6D3j1x/eg==} dependencies: ansi-regex: 3.0.1 dev: false /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} dependencies: color-convert: 1.9.3 dev: false /as-table@1.0.55: - resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} dependencies: printable-characters: 1.0.42 dev: false /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 @@ -83,38 +295,28 @@ packages: dev: false /cli-cursor@2.1.0: - resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} - engines: {node: '>=4'} dependencies: restore-cursor: 2.0.0 dev: false /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 dev: false /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} dev: false /common-tags@1.8.2: - resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} - engines: {node: '>=4.0.0'} dev: false /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: false /data-uri-to-buffer@2.0.2: - resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} dev: false /define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 @@ -122,8 +324,6 @@ packages: dev: false /define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 @@ -131,29 +331,20 @@ packages: dev: false /es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.4 dev: false /es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} dev: false /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} dev: false /function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} dev: false /get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 function-bind: 1.1.2 @@ -163,84 +354,61 @@ packages: dev: false /get-source@1.0.42: - resolution: {integrity: sha512-uM5xCIG5w2meVbiZaID4ajH6J8OfApqhlKXtZwsS/IIM9PLb0b2kc5sRdy78yEDfxsIYEWNk0OVxai6OpDCExA==} dependencies: data-uri-to-buffer: 2.0.2 source-map: 0.6.1 dev: false /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 dev: false /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.4 dev: false /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} dev: false /has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: es-define-property: 1.0.0 dev: false /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} dev: false /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} dev: false /hasown@2.0.1: - resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} - engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 dev: false /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: false /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: false /json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} dev: false /mimic-fn@1.2.0: - resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} - engines: {node: '>=4'} dev: false /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: false /most-last@1.0.1(most@1.9.0): - resolution: {integrity: sha512-ycc+leSrXoGRjxhsZJW/l+Sk0CXj9e/z6EP5ebZ8A+zDWGRq1v/oeNkyQF4TG95LnT5Q0ysG+5piJYSR86k58A==} - peerDependencies: - most: ^1.0.3 dependencies: most: 1.9.0 dev: false /most@1.9.0: - resolution: {integrity: sha512-M7yHMcMGaclzEL6eg8Yh8PlAsaWfL/oSThF4+ZuWKM5CKXcbzmLh+qESwgZFzMKHJ+iVJwb28yFvDEOobI653w==} dependencies: '@most/multicast': 1.3.0(most@1.9.0) '@most/prelude': 1.8.0 @@ -249,8 +417,6 @@ packages: dev: false /ndjson@1.5.0: - resolution: {integrity: sha512-hUPLuaziboGjNF7wHngkgVc0FOclR8dDk/HfEvTtDr/iUrqBWiRcRSTK3/nLOqKH33th714BrMmTPtObI9gZxQ==} - hasBin: true dependencies: json-stringify-safe: 5.0.1 minimist: 1.2.8 @@ -259,23 +425,14 @@ packages: dev: false /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} dev: false /onetime@2.0.1: - resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} - engines: {node: '>=4'} dependencies: mimic-fn: 1.2.0 dev: false /pnpm-default-reporter@0.14.7: - resolution: {integrity: sha512-uHBIrBDxS/K82cGaxSQnhMYPJyYI4mX/28voWxqtFwIqhR0Gjf73EGN1wUc3lD38HdQDkCrSk5HBwp5N21AONw==} - engines: {node: '>=4'} - hasBin: true - peerDependencies: - supi: '>=0.12.5 <0.15.0' dependencies: '@types/common-tags': 1.8.4 '@types/node': 9.6.61 @@ -296,24 +453,18 @@ packages: dev: false /pretty-bytes@4.0.2: - resolution: {integrity: sha512-yJAF+AjbHKlxQ8eezMd/34Mnj/YTQ3i6kLzvVsH4l/BfIFtp444n0wVbnsn66JimZ9uBofv815aRp1zCppxlWw==} - engines: {node: '>=4'} dev: false /printable-characters@1.0.42: - resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} dev: false /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: false /ramda@0.25.0: - resolution: {integrity: sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==} dev: false /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -325,84 +476,63 @@ packages: dev: false /restore-cursor@2.0.0: - resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} - engines: {node: '>=4'} dependencies: onetime: 2.0.1 signal-exit: 3.0.7 dev: false /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: false /semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true dev: false /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: false /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} dev: false /split2@2.2.0: - resolution: {integrity: sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==} dependencies: through2: 2.0.5 dev: false /stacktracey@1.2.127: - resolution: {integrity: sha512-tj3BObW/adLIAQGGQ0flRTADrCv6KQ4VgncUO8NrQ7pk/H6pGMtXxQLjZYw66eqPDTC1DHtnBwGSmG+Wx/D/kg==} dependencies: as-table: 1.0.55 get-source: 1.0.42 dev: false /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 dev: false /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} dependencies: has-flag: 3.0.0 dev: false /symbol-observable@2.0.3: - resolution: {integrity: sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==} - engines: {node: '>=0.10'} dev: false /through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} dependencies: readable-stream: 2.3.8 xtend: 4.0.2 dev: false /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: false /xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} dev: false /zen-observable@0.7.1: - resolution: {integrity: sha512-OI6VMSe0yeqaouIXtedC+F55Sr6r9ppS7+wTbSexkYdHbdt4ctTuPNXP/rwm7GTVI63YBc+EBT0b0tl7YnJLRg==} dev: false /zen-push@0.2.1: - resolution: {integrity: sha512-Qv4qvc8ZIue51B/0zmeIMxpIGDVhz4GhJALBvnKs/FRa2T7jy4Ori9wFwaHVt0zWV7MIFglKAHbgnVxVTw7U1w==} dependencies: zen-observable: 0.7.1 dev: false diff --git a/pkg-manager/headless/test/fixtures/side-effects-of-subdep/pnpm-lock.yaml b/pkg-manager/headless/test/fixtures/side-effects-of-subdep/pnpm-lock.yaml index 98bfae96b8..1071039127 100644 --- a/pkg-manager/headless/test/fixtures/side-effects-of-subdep/pnpm-lock.yaml +++ b/pkg-manager/headless/test/fixtures/side-effects-of-subdep/pnpm-lock.yaml @@ -22,24 +22,39 @@ packages: peerDependenciesMeta: supports-color: optional: true + + /diskusage@1.2.0: + resolution: {integrity: sha512-2u3OG3xuf5MFyzc4MctNRUKjjwK+UkovRYdD2ed/NZNZPrt0lqHnLKxGhlFVvAb4/oufIgQG3nWgwmeTbHOvXA==} + + /es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + + /expire-fs@2.2.3: + resolution: {integrity: sha512-ofQ0zNXKProir7/dtNAJiOucthMhraUznLiPd2MpoFexVi21BfGj0owPO5wMleO5cmSVOPRPJf8+XZqLpix4Ew==} + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /nan@2.18.0: + resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} + +snapshots: + + /debug@4.3.4: dependencies: ms: 2.1.2 dev: false /diskusage@1.2.0: - resolution: {integrity: sha512-2u3OG3xuf5MFyzc4MctNRUKjjwK+UkovRYdD2ed/NZNZPrt0lqHnLKxGhlFVvAb4/oufIgQG3nWgwmeTbHOvXA==} - requiresBuild: true dependencies: es6-promise: 4.2.8 nan: 2.18.0 dev: false /es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} dev: false /expire-fs@2.2.3: - resolution: {integrity: sha512-ofQ0zNXKProir7/dtNAJiOucthMhraUznLiPd2MpoFexVi21BfGj0owPO5wMleO5cmSVOPRPJf8+XZqLpix4Ew==} dependencies: debug: 4.3.4 diskusage: 1.2.0 @@ -48,9 +63,7 @@ packages: dev: false /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: false /nan@2.18.0: - resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} dev: false diff --git a/pkg-manager/headless/test/fixtures/side-effects/pnpm-lock.yaml b/pkg-manager/headless/test/fixtures/side-effects/pnpm-lock.yaml index 4aa954ca18..03c155fd2a 100644 --- a/pkg-manager/headless/test/fixtures/side-effects/pnpm-lock.yaml +++ b/pkg-manager/headless/test/fixtures/side-effects/pnpm-lock.yaml @@ -17,11 +17,16 @@ packages: /@pnpm.e2e/hello-world-js-bin@1.0.0: resolution: {integrity: sha512-EDvJzSLCEMnUnrrIGdV+IUWP/8w+nUjOuay2u0KW20Mnfnm3lyrdquQ+gKPNAOUfAsKL1y21np1nQN0PyP+57A==} hasBin: true - dev: false /@pnpm.e2e/pre-and-postinstall-scripts-example@1.0.0: resolution: {integrity: sha512-0jRoMb0OT36kI9yyTeu2tUkLkxglmpL1yFS1BUm+fvt4qc22geBqALefFFv3eVWY/6c6GiRHRs6Gba9YPH7QDw==} - requiresBuild: true + +snapshots: + + /@pnpm.e2e/hello-world-js-bin@1.0.0: + dev: false + + /@pnpm.e2e/pre-and-postinstall-scripts-example@1.0.0: dependencies: '@pnpm.e2e/hello-world-js-bin': 1.0.0 dev: false diff --git a/pkg-manager/headless/test/fixtures/simple-shamefully-flatten/pnpm-lock.yaml b/pkg-manager/headless/test/fixtures/simple-shamefully-flatten/pnpm-lock.yaml index 4b33cce83f..5401da58ed 100644 --- a/pkg-manager/headless/test/fixtures/simple-shamefully-flatten/pnpm-lock.yaml +++ b/pkg-manager/headless/test/fixtures/simple-shamefully-flatten/pnpm-lock.yaml @@ -31,44 +31,92 @@ packages: /@pnpm.e2e/hello-world-js-bin@1.0.0: resolution: {integrity: sha512-EDvJzSLCEMnUnrrIGdV+IUWP/8w+nUjOuay2u0KW20Mnfnm3lyrdquQ+gKPNAOUfAsKL1y21np1nQN0PyP+57A==} hasBin: true - dev: false /@pnpm.e2e/pkg-with-peer-having-bin@1.0.0: resolution: {integrity: sha512-PjcOgsbOBI5KvVhVcKlP8cmzzszWgfdvwVzgMWdirrzU1zvq5O/fO1/5/YLLWw1RJ6M+VYu0t2GA08n1pqCxiA==} peerDependencies: '@pnpm.e2e/peer-with-bin': ^1.0.0 + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + /colors@1.2.0: + resolution: {integrity: sha512-lweugcX5nailCqZBttArTojZZpHGWhmFJX78KJHlxwhM8tLAy5QCgRgRxrubrksdvA+2Y3inWG5TToyyjL82BQ==} + engines: {node: '>=0.1.90'} + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /is-negative@2.1.0: + resolution: {integrity: sha512-+iCKT4ZcvjRnjkHnQjZ8/qfciLLGD8BFKS0GNR5VjDU6jEiwh899R0GSMkaYcuTNd7fEKXb3Qib0webe6HczNw==} + engines: {node: '>=0.10.0'} + + /is-positive@1.0.0: + resolution: {integrity: sha512-xxzPGZ4P2uN6rROUa5N9Z7zTX6ERuE0hs6GUOc/cKBLF2NqKc16UwqHMt3tFg4CO6EBTE5UecUasg+3jZx3Ckg==} + engines: {node: '>=0.10.0'} + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + +snapshots: + + /@pnpm.e2e/hello-world-js-bin@1.0.0: + dev: false + + /@pnpm.e2e/pkg-with-peer-having-bin@1.0.0: dependencies: '@pnpm.e2e/hello-world-js-bin': 1.0.0 dev: false /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: false /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 dev: false /colors@1.2.0: - resolution: {integrity: sha512-lweugcX5nailCqZBttArTojZZpHGWhmFJX78KJHlxwhM8tLAy5QCgRgRxrubrksdvA+2Y3inWG5TToyyjL82BQ==} - engines: {node: '>=0.1.90'} - requiresBuild: true dev: false optional: true /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: false /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: false /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -79,50 +127,37 @@ packages: dev: false /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: false /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: false /is-negative@2.1.0: - resolution: {integrity: sha512-+iCKT4ZcvjRnjkHnQjZ8/qfciLLGD8BFKS0GNR5VjDU6jEiwh899R0GSMkaYcuTNd7fEKXb3Qib0webe6HczNw==} - engines: {node: '>=0.10.0'} dev: true /is-positive@1.0.0: - resolution: {integrity: sha512-xxzPGZ4P2uN6rROUa5N9Z7zTX6ERuE0hs6GUOc/cKBLF2NqKc16UwqHMt3tFg4CO6EBTE5UecUasg+3jZx3Ckg==} - engines: {node: '>=0.10.0'} dev: false /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: false /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: false /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} dev: false /rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true dependencies: glob: 7.2.3 dev: false /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: false diff --git a/pkg-manager/headless/test/fixtures/simple-with-more-deps/pnpm-lock.yaml b/pkg-manager/headless/test/fixtures/simple-with-more-deps/pnpm-lock.yaml index 97012a12bd..f73ab16893 100644 --- a/pkg-manager/headless/test/fixtures/simple-with-more-deps/pnpm-lock.yaml +++ b/pkg-manager/headless/test/fixtures/simple-with-more-deps/pnpm-lock.yaml @@ -30,32 +30,80 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: false /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + /colors@1.2.0: + resolution: {integrity: sha512-lweugcX5nailCqZBttArTojZZpHGWhmFJX78KJHlxwhM8tLAy5QCgRgRxrubrksdvA+2Y3inWG5TToyyjL82BQ==} + engines: {node: '>=0.1.90'} + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /is-negative@2.1.0: + resolution: {integrity: sha512-+iCKT4ZcvjRnjkHnQjZ8/qfciLLGD8BFKS0GNR5VjDU6jEiwh899R0GSMkaYcuTNd7fEKXb3Qib0webe6HczNw==} + engines: {node: '>=0.10.0'} + + /is-positive@1.0.0: + resolution: {integrity: sha512-xxzPGZ4P2uN6rROUa5N9Z7zTX6ERuE0hs6GUOc/cKBLF2NqKc16UwqHMt3tFg4CO6EBTE5UecUasg+3jZx3Ckg==} + engines: {node: '>=0.10.0'} + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + +snapshots: + + /balanced-match@1.0.2: + dev: false + + /brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 dev: false /colors@1.2.0: - resolution: {integrity: sha512-lweugcX5nailCqZBttArTojZZpHGWhmFJX78KJHlxwhM8tLAy5QCgRgRxrubrksdvA+2Y3inWG5TToyyjL82BQ==} - engines: {node: '>=0.1.90'} - requiresBuild: true dev: false optional: true /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: false /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: false /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -66,55 +114,40 @@ packages: dev: false /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: false /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: false /is-negative@2.1.0: - resolution: {integrity: sha512-+iCKT4ZcvjRnjkHnQjZ8/qfciLLGD8BFKS0GNR5VjDU6jEiwh899R0GSMkaYcuTNd7fEKXb3Qib0webe6HczNw==} - engines: {node: '>=0.10.0'} dev: true /is-positive@1.0.0: - resolution: {integrity: sha512-xxzPGZ4P2uN6rROUa5N9Z7zTX6ERuE0hs6GUOc/cKBLF2NqKc16UwqHMt3tFg4CO6EBTE5UecUasg+3jZx3Ckg==} - engines: {node: '>=0.10.0'} dev: false /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: false /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: false /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} dev: false /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} dev: false /rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true dependencies: glob: 7.2.3 dev: false /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: false diff --git a/pkg-manager/headless/test/fixtures/simple-with-optional-dep/pnpm-lock.yaml b/pkg-manager/headless/test/fixtures/simple-with-optional-dep/pnpm-lock.yaml index b4df03924a..05005a70ce 100644 --- a/pkg-manager/headless/test/fixtures/simple-with-optional-dep/pnpm-lock.yaml +++ b/pkg-manager/headless/test/fixtures/simple-with-optional-dep/pnpm-lock.yaml @@ -20,10 +20,20 @@ packages: /@pnpm.e2e/dep-of-pkg-with-1-dep@100.1.0: resolution: {integrity: sha512-60+yiZtuRbojMieLzg4UxzBs5fxSVfRtTRNKvdfTaLTb/2XLZTZORTSWkz8ttCGmNbMv5Li2gP4TNgVFMbnYgw==} - dev: false /@pnpm.e2e/pkg-with-good-optional@1.0.0: resolution: {integrity: sha512-KfshZeGJiii1oEMjabBfxZ/rB14oJfE7wtFIRHmElIIZZHZlDtP1u4m8nBYrFKs4b8Dku4BCMV6pO0uMIVwHpQ==} + + /is-positive@1.0.0: + resolution: {integrity: sha512-xxzPGZ4P2uN6rROUa5N9Z7zTX6ERuE0hs6GUOc/cKBLF2NqKc16UwqHMt3tFg4CO6EBTE5UecUasg+3jZx3Ckg==} + engines: {node: '>=0.10.0'} + +snapshots: + + /@pnpm.e2e/dep-of-pkg-with-1-dep@100.1.0: + dev: false + + /@pnpm.e2e/pkg-with-good-optional@1.0.0: dependencies: '@pnpm.e2e/dep-of-pkg-with-1-dep': 100.1.0 optionalDependencies: @@ -31,8 +41,5 @@ packages: dev: false /is-positive@1.0.0: - resolution: {integrity: sha512-xxzPGZ4P2uN6rROUa5N9Z7zTX6ERuE0hs6GUOc/cKBLF2NqKc16UwqHMt3tFg4CO6EBTE5UecUasg+3jZx3Ckg==} - engines: {node: '>=0.10.0'} - requiresBuild: true dev: false optional: true diff --git a/pkg-manager/headless/test/fixtures/simple/pnpm-lock.yaml b/pkg-manager/headless/test/fixtures/simple/pnpm-lock.yaml index dd18015151..d0f547a366 100644 --- a/pkg-manager/headless/test/fixtures/simple/pnpm-lock.yaml +++ b/pkg-manager/headless/test/fixtures/simple/pnpm-lock.yaml @@ -27,32 +27,76 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: false /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + /colors@1.2.0: + resolution: {integrity: sha512-lweugcX5nailCqZBttArTojZZpHGWhmFJX78KJHlxwhM8tLAy5QCgRgRxrubrksdvA+2Y3inWG5TToyyjL82BQ==} + engines: {node: '>=0.1.90'} + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /is-negative@2.1.0: + resolution: {integrity: sha512-+iCKT4ZcvjRnjkHnQjZ8/qfciLLGD8BFKS0GNR5VjDU6jEiwh899R0GSMkaYcuTNd7fEKXb3Qib0webe6HczNw==} + engines: {node: '>=0.10.0'} + + /is-positive@1.0.0: + resolution: {integrity: sha512-xxzPGZ4P2uN6rROUa5N9Z7zTX6ERuE0hs6GUOc/cKBLF2NqKc16UwqHMt3tFg4CO6EBTE5UecUasg+3jZx3Ckg==} + engines: {node: '>=0.10.0'} + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + +snapshots: + + /balanced-match@1.0.2: + dev: false + + /brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 dev: false /colors@1.2.0: - resolution: {integrity: sha512-lweugcX5nailCqZBttArTojZZpHGWhmFJX78KJHlxwhM8tLAy5QCgRgRxrubrksdvA+2Y3inWG5TToyyjL82BQ==} - engines: {node: '>=0.1.90'} - requiresBuild: true dev: false optional: true /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: false /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: false /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -63,50 +107,37 @@ packages: dev: false /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: false /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: false /is-negative@2.1.0: - resolution: {integrity: sha512-+iCKT4ZcvjRnjkHnQjZ8/qfciLLGD8BFKS0GNR5VjDU6jEiwh899R0GSMkaYcuTNd7fEKXb3Qib0webe6HczNw==} - engines: {node: '>=0.10.0'} dev: true /is-positive@1.0.0: - resolution: {integrity: sha512-xxzPGZ4P2uN6rROUa5N9Z7zTX6ERuE0hs6GUOc/cKBLF2NqKc16UwqHMt3tFg4CO6EBTE5UecUasg+3jZx3Ckg==} - engines: {node: '>=0.10.0'} dev: false /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: false /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: false /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} dev: false /rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true dependencies: glob: 7.2.3 dev: false /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: false diff --git a/pkg-manager/headless/test/fixtures/with-1-dep/pnpm-lock.yaml b/pkg-manager/headless/test/fixtures/with-1-dep/pnpm-lock.yaml index 559154b541..09dbed54bc 100644 --- a/pkg-manager/headless/test/fixtures/with-1-dep/pnpm-lock.yaml +++ b/pkg-manager/headless/test/fixtures/with-1-dep/pnpm-lock.yaml @@ -16,21 +16,54 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: false /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /glob@6.0.4: + resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==} + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /rimraf@2.5.1: + resolution: {integrity: sha512-CNymZDrSR9PfkqZnBWaIki7Wlba4c7GzSkSKsHHvjXswXmJA1hM8ZHFrNWIt4L/WcR9kOwvsJZpbxV4fygtXag==} + hasBin: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + +snapshots: + + /balanced-match@1.0.2: + dev: false + + /brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 dev: false /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: false /glob@6.0.4: - resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==} dependencies: inflight: 1.0.6 inherits: 2.0.4 @@ -40,40 +73,31 @@ packages: dev: false /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: false /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: false /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: false /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: false /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} dev: false /rimraf@2.5.1: - resolution: {integrity: sha512-CNymZDrSR9PfkqZnBWaIki7Wlba4c7GzSkSKsHHvjXswXmJA1hM8ZHFrNWIt4L/WcR9kOwvsJZpbxV4fygtXag==} - hasBin: true dependencies: glob: 6.0.4 dev: false /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: false diff --git a/pkg-manager/headless/test/index.ts b/pkg-manager/headless/test/index.ts index 99762a3691..4a065f61c7 100644 --- a/pkg-manager/headless/test/index.ts +++ b/pkg-manager/headless/test/index.ts @@ -225,7 +225,7 @@ test('installing non-prod deps then all deps', async () => { { const lockfile = project.readLockfile() - expect(lockfile.packages['/is-positive@1.0.0'].dev === false).toBeTruthy() + expect(lockfile.snapshots['/is-positive@1.0.0'].dev === false).toBeTruthy() } { diff --git a/pkg-manager/plugin-commands-installation/test/__snapshots__/dedupe.ts.snap b/pkg-manager/plugin-commands-installation/test/__snapshots__/dedupe.ts.snap index 548393d7f1..6324dbbea7 100644 --- a/pkg-manager/plugin-commands-installation/test/__snapshots__/dedupe.ts.snap +++ b/pkg-manager/plugin-commands-installation/test/__snapshots__/dedupe.ts.snap @@ -13,7 +13,7 @@ exports[`pnpm dedupe updates old resolutions from importers block and removes ol }, }, }, -@@ -20,18 +20,6 @@ +@@ -20,99 +20,71 @@ }, "lockfileVersion": "7.0", "packages": Object { @@ -30,22 +30,25 @@ exports[`pnpm dedupe updates old resolutions from importers block and removes ol - }, - }, "/ajv@6.12.6": Object { - "dependencies": Object { - "fast-deep-equal": "3.1.3", -@@ -42,24 +30,12 @@ - "dev": false, +- "dependencies": Object { +- "fast-deep-equal": "3.1.3", +- "fast-json-stable-stringify": "2.1.0", +- "json-schema-traverse": "0.4.1", +- "uri-js": "4.4.1", +- }, +- "dev": false, "resolution": Object { "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", -- }, -- }, + }, + }, - "/fast-deep-equal@2.0.1": Object { - "dev": false, - "resolution": Object { - "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", - }, - }, +- }, +- }, "/fast-deep-equal@3.1.3": Object { - "dev": false, +- "dev": false, "resolution": Object { "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - }, @@ -57,46 +60,92 @@ exports[`pnpm dedupe updates old resolutions from importers block and removes ol }, }, "/fast-json-stable-stringify@2.1.0": Object { -@@ -73,16 +49,7 @@ +- "dev": false, + "resolution": Object { + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + }, + }, + "/json-schema-traverse@0.4.1": Object { +- "dev": false, "resolution": Object { "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", }, -- }, + }, - "/punycode@2.1.1": Object { - "dev": false, ++ "/punycode@2.3.0": Object { + "engines": Object { + "node": ">=6", + }, + "resolution": Object { +- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", ++ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", ++ }, + }, ++ "/uri-js@4.4.1": Object { ++ "resolution": Object { ++ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + }, +- "/punycode@2.3.0": Object { +- "dev": false, - "engines": Object { - "node": ">=6", }, - "resolution": Object { -- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", -- }, -- }, - "/punycode@2.3.0": Object { - "dev": false, - "engines": Object { -@@ -90,15 +57,6 @@ - }, - "resolution": Object { - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", -- }, -- }, +- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + }, ++ "settings": Object { ++ "autoInstallPeers": true, ++ "excludeLinksFromLockfile": false, + }, - "/uri-js@4.2.2": Object { -- "dependencies": Object { ++ "snapshots": Object { ++ "/ajv@6.12.6": Object { + "dependencies": Object { - "punycode": "2.1.1", -- }, -- "dev": false, ++ "fast-deep-equal": "3.1.3", ++ "fast-json-stable-stringify": "2.1.0", ++ "json-schema-traverse": "0.4.1", ++ "uri-js": "4.4.1", ++ }, ++ "dev": false, + }, ++ "/fast-deep-equal@3.1.3": Object { + "dev": false, - "resolution": Object { - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - }, ++ }, ++ "/fast-json-stable-stringify@2.1.0": Object { ++ "dev": false, }, - "/uri-js@4.4.1": Object {" ++ "/json-schema-traverse@0.4.1": Object { ++ "dev": false, + }, ++ "/punycode@2.3.0": Object { ++ "dev": false, ++ }, + "/uri-js@4.4.1": Object { + "dependencies": Object { + "punycode": "2.3.0", + }, + "dev": false, +- "resolution": Object { +- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + }, +- }, +- }, +- "settings": Object { +- "autoInstallPeers": true, +- "excludeLinksFromLockfile": false, + }, + }" `; exports[`pnpm dedupe updates old resolutions from package block 1`] = ` "- Expected + Received -@@ -20,15 +20,6 @@ +@@ -20,17 +20,7 @@ }, "lockfileVersion": "7.0", "packages": Object { @@ -110,15 +159,51 @@ exports[`pnpm dedupe updates old resolutions from package block 1`] = ` - }, - }, "/punycode@2.3.0": Object { - "dev": false, +- "dev": false, "engines": Object { -@@ -40,7 +31,7 @@ + "node": ">=6", + }, +@@ -39,19 +29,11 @@ + }, }, "/uri-js@4.2.2": Object { - "dependencies": Object { +- "dependencies": Object { - "punycode": "2.1.1", -+ "punycode": "2.3.0", +- }, +- "dev": false, + "resolution": Object { + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", }, - "dev": false, - "resolution": Object {" + }, + "/uri-js@4.4.1": Object { +- "dependencies": Object { +- "punycode": "2.3.0", +- }, +- "dev": false, + "resolution": Object { + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + }, +@@ -60,5 +42,22 @@ + "settings": Object { + "autoInstallPeers": true, + "excludeLinksFromLockfile": false, ++ }, ++ "snapshots": Object { ++ "/punycode@2.3.0": Object { ++ "dev": false, ++ }, ++ "/uri-js@4.2.2": Object { ++ "dependencies": Object { ++ "punycode": "2.3.0", ++ }, ++ "dev": false, ++ }, ++ "/uri-js@4.4.1": Object { ++ "dependencies": Object { ++ "punycode": "2.3.0", ++ }, ++ "dev": false, ++ }, + }, + }" `; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b444f655c8..7696048817 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,6 +25,9 @@ overrides: packageExtensionsChecksum: c10f23a87945689e805208f26d04480d patchedDependencies: + '@zkochan/js-yaml@0.0.6': + hash: wqtk5n3rzxb75j47xc7cwv6dje + path: __patches__/@zkochan__js-yaml@0.0.6.patch graceful-fs@4.2.11: hash: ivtm2a2cfr5pomcfbedhmr5v2q path: __patches__/graceful-fs@4.2.11.patch @@ -2106,6 +2109,9 @@ importers: '@pnpm/lockfile-types': specifier: workspace:* version: link:../lockfile-types + '@pnpm/lockfile-utils': + specifier: workspace:* + version: link:../lockfile-utils '@pnpm/logger': specifier: ^5.0.0 version: 5.0.0 @@ -2126,7 +2132,7 @@ importers: version: 1.0.0 js-yaml: specifier: npm:@zkochan/js-yaml@0.0.6 - version: /@zkochan/js-yaml@0.0.6 + version: /@zkochan/js-yaml@0.0.6(patch_hash=wqtk5n3rzxb75j47xc7cwv6dje) normalize-path: specifier: ^3.0.0 version: 3.0.0 @@ -2672,6 +2678,12 @@ importers: '@types/ramda': specifier: 0.28.20 version: 0.28.20 + execa: + specifier: npm:safe-execa@0.1.2 + version: /safe-execa@0.1.2 + pnpm: + specifier: workspace:^ + version: link:../../pnpm packages/parse-wanted-dependency: dependencies: @@ -7837,7 +7849,7 @@ packages: globals: 13.24.0 ignore: 5.3.1 import-fresh: 3.3.0 - js-yaml: /@zkochan/js-yaml@0.0.6 + js-yaml: /@zkochan/js-yaml@0.0.6(patch_hash=wqtk5n3rzxb75j47xc7cwv6dje) minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: @@ -9675,10 +9687,11 @@ packages: istanbul-lib-report: 3.0.1 dev: true - /@zkochan/js-yaml@0.0.6: + /@zkochan/js-yaml@0.0.6(patch_hash=wqtk5n3rzxb75j47xc7cwv6dje): resolution: {integrity: sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==} dependencies: argparse: 2.0.1 + patched: true /@zkochan/retry@0.2.0: resolution: {integrity: sha512-WhB+2B/ZPlW2Xy/kMJBrMbqecWXcbDDgn0K0wKBAgO2OlBTz1iLJrRWduo+DGGn0Akvz1Lu4Xvls7dJojximWw==} @@ -9704,6 +9717,7 @@ packages: /@zkochan/which@2.0.3: resolution: {integrity: sha512-C1ReN7vt2/2O0fyTsx5xnbQuxBrmG5NMSbcIkPKCCfCTJgpZBsuRYzFXHj3nVq8vTfK7vxHUmzfCpSHgO7j4rg==} engines: {node: '>= 8'} + hasBin: true dependencies: isexe: 2.0.0 @@ -10887,7 +10901,7 @@ packages: engines: {node: '>=14'} dependencies: import-fresh: 3.3.0 - js-yaml: /@zkochan/js-yaml@0.0.6 + js-yaml: /@zkochan/js-yaml@0.0.6(patch_hash=wqtk5n3rzxb75j47xc7cwv6dje) parse-json: 5.2.0 path-type: 4.0.0 dev: true @@ -10902,7 +10916,7 @@ packages: optional: true dependencies: import-fresh: 3.3.0 - js-yaml: /@zkochan/js-yaml@0.0.6 + js-yaml: /@zkochan/js-yaml@0.0.6(patch_hash=wqtk5n3rzxb75j47xc7cwv6dje) parse-json: 5.2.0 path-type: 4.0.0 typescript: 5.3.3 @@ -11846,7 +11860,7 @@ packages: imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: /@zkochan/js-yaml@0.0.6 + js-yaml: /@zkochan/js-yaml@0.0.6(patch_hash=wqtk5n3rzxb75j47xc7cwv6dje) json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 @@ -15775,7 +15789,7 @@ packages: resolution: {integrity: sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==} engines: {node: '>=10.13'} dependencies: - js-yaml: /@zkochan/js-yaml@0.0.6 + js-yaml: /@zkochan/js-yaml@0.0.6(patch_hash=wqtk5n3rzxb75j47xc7cwv6dje) strip-bom: 4.0.0 /readable-stream@2.3.8: @@ -17525,7 +17539,7 @@ packages: fast-safe-stringify: 2.1.1 handlebars: 4.7.7 http-errors: 2.0.0 - js-yaml: /@zkochan/js-yaml@0.0.6 + js-yaml: /@zkochan/js-yaml@0.0.6(patch_hash=wqtk5n3rzxb75j47xc7cwv6dje) jsonwebtoken: 9.0.0 kleur: 4.1.5 lodash: 4.17.21 @@ -17857,14 +17871,14 @@ packages: resolution: {integrity: sha512-LwyucHy0uhWqbrOkh9cBluZBeNVxzHjDaE9mwepZG3n3ZlbM4v3ndrFw51zW/NXYFFqP+QWZ72ihtLWTh05e4Q==} engines: {node: '>=10.13'} dependencies: - js-yaml: /@zkochan/js-yaml@0.0.6 + js-yaml: /@zkochan/js-yaml@0.0.6(patch_hash=wqtk5n3rzxb75j47xc7cwv6dje) write-file-atomic: 3.0.3 /write-yaml-file@5.0.0: resolution: {integrity: sha512-FdNA4RyH1L43TlvGG8qOMIfcEczwA5ij+zLXUy3Z83CjxhLvcV7/Q/8pk22wnCgYw7PJhtK+7lhO+qqyT4NdvQ==} engines: {node: '>=16.14'} dependencies: - js-yaml: /@zkochan/js-yaml@0.0.6 + js-yaml: /@zkochan/js-yaml@0.0.6(patch_hash=wqtk5n3rzxb75j47xc7cwv6dje) write-file-atomic: 5.0.1 /xdg-basedir@5.1.0: @@ -18001,4 +18015,5 @@ packages: time: /fuse-native@2.2.6: '2020-06-03T19:26:36.838Z' /node-gyp@10.0.1: '2023-11-02T18:13:42.360Z' + /safe-execa@0.1.2: '2022-07-18T01:09:17.517Z' /symlink-dir@5.2.1: '2023-12-24T23:15:15.543Z' diff --git a/pnpm/test/hooks.ts b/pnpm/test/hooks.ts index ff333d6027..d57f73ce28 100644 --- a/pnpm/test/hooks.ts +++ b/pnpm/test/hooks.ts @@ -275,7 +275,7 @@ test('adding or changing pnpmfile should change pnpmfileChecksum and module stru const lockfile2 = project.readLockfile() expect(lockfile2.pnpmfileChecksum).toBe(createBase32Hash(pnpmfile2)) - expect(lockfile2.packages).toMatchObject({ + expect(lockfile2.snapshots).toMatchObject({ '/@pnpm.e2e/foo@100.0.0': expect.any(Object), '/@pnpm.e2e/bar@100.0.0': expect.any(Object), '/@pnpm.e2e/pkg-with-good-optional@1.0.0': { diff --git a/pnpm/test/install/hooks.ts b/pnpm/test/install/hooks.ts index f68648157f..bd654c01d9 100644 --- a/pnpm/test/install/hooks.ts +++ b/pnpm/test/install/hooks.ts @@ -1,8 +1,7 @@ import fs from 'fs' import path from 'path' -import { type Lockfile } from '@pnpm/lockfile-types' +import { type LockfileV7 as Lockfile } from '@pnpm/lockfile-types' import { prepare, preparePackages } from '@pnpm/prepare' -import { createPeersDirSuffix } from '@pnpm/dependency-path' import { sync as readYamlFile } from 'read-yaml-file' import loadJsonFile from 'load-json-file' import { sync as writeYamlFile } from 'write-yaml-file' @@ -249,10 +248,10 @@ test('readPackage hook from pnpmfile at root of workspace', async () => { process.chdir('..') const lockfile = readYamlFile('pnpm-lock.yaml') - expect(lockfile.packages!['/is-positive@1.0.0'].dependencies).toStrictEqual({ + expect(lockfile.snapshots!['/is-positive@1.0.0'].dependencies).toStrictEqual({ '@pnpm.e2e/dep-of-pkg-with-1-dep': '100.1.0', }) - expect(lockfile.packages!['/is-negative@1.0.0'].dependencies).toStrictEqual({ + expect(lockfile.snapshots!['/is-negative@1.0.0'].dependencies).toStrictEqual({ '@pnpm.e2e/dep-of-pkg-with-1-dep': '100.1.0', }) }) @@ -613,8 +612,7 @@ test('readPackage hook is used during removal inside a workspace', async () => { process.chdir('..') const lockfile = readYamlFile('pnpm-lock.yaml') - const suffix = createPeersDirSuffix([{ name: '@pnpm.e2e/peer-a', version: '1.0.0' }, { name: 'is-negative', version: '1.0.0' }]) - expect(lockfile.packages![`/@pnpm.e2e/abc@1.0.0${suffix}`].peerDependencies!['is-negative']).toBe('1.0.0') + expect(lockfile.packages!['/@pnpm.e2e/abc@1.0.0'].peerDependencies!['is-negative']).toBe('1.0.0') }) test('preResolution hook', async () => { diff --git a/pnpm/test/monorepo/dedupePeers.test.ts b/pnpm/test/monorepo/dedupePeers.test.ts index d675e2ae40..b218aaf092 100644 --- a/pnpm/test/monorepo/dedupePeers.test.ts +++ b/pnpm/test/monorepo/dedupePeers.test.ts @@ -1,7 +1,7 @@ import fs from 'fs' import path from 'path' import { WANTED_LOCKFILE } from '@pnpm/constants' -import { type Lockfile } from '@pnpm/lockfile-types' +import { type LockfileV7 as Lockfile } from '@pnpm/lockfile-types' import { preparePackages } from '@pnpm/prepare' import { addDistTag } from '@pnpm/registry-mock' import { sync as readYamlFile } from 'read-yaml-file' @@ -42,7 +42,7 @@ auto-install-peers=false`, 'utf8') await execPnpm(['--filter=project-2', 'add', '@pnpm.e2e/abc@1.0.0']) const lockfile = readYamlFile(path.resolve(WANTED_LOCKFILE)) - const depPaths = Object.keys(lockfile.packages ?? {}) + const depPaths = Object.keys(lockfile.snapshots ?? {}) expect(depPaths.length).toBe(8) expect(depPaths).toContain(`/@pnpm.e2e/abc@1.0.0${createPeersDirSuffix([{ name: '@pnpm.e2e/peer-a', version: '1.0.0' }, { name: '@pnpm.e2e/peer-b', version: '1.0.0' }, { name: '@pnpm.e2e/peer-c', version: '1.0.0' }])}`) expect(depPaths).toContain(`/@pnpm.e2e/abc-parent-with-ab@1.0.0${createPeersDirSuffix([{ name: '@pnpm.e2e/peer-c', version: '1.0.0' }])}`) diff --git a/pnpm/test/monorepo/index.ts b/pnpm/test/monorepo/index.ts index cde4167241..509d1d4be6 100644 --- a/pnpm/test/monorepo/index.ts +++ b/pnpm/test/monorepo/index.ts @@ -3,7 +3,7 @@ import fs from 'fs' import path from 'path' import { LOCKFILE_VERSION, WANTED_LOCKFILE } from '@pnpm/constants' import { findWorkspacePackages } from '@pnpm/workspace.find-packages' -import { type LockfileFile } from '@pnpm/lockfile-types' +import { type LockfileFileV7 as LockfileFile } from '@pnpm/lockfile-types' import { readModulesManifest } from '@pnpm/modules-yaml' import { prepare, @@ -975,7 +975,6 @@ test("shared-workspace-lockfile: don't install dependencies in projects that are lockfileVersion: LOCKFILE_VERSION, packages: { '/is-positive@1.0.0': { - dev: false, engines: { node: '>=0.10.0', }, @@ -984,6 +983,11 @@ test("shared-workspace-lockfile: don't install dependencies in projects that are }, }, }, + snapshots: { + '/is-positive@1.0.0': { + dev: false, + }, + }, }) }) @@ -1076,7 +1080,6 @@ test('shared-workspace-lockfile: install dependencies in projects that are relat lockfileVersion: LOCKFILE_VERSION, packages: { '/is-negative@1.0.0': { - dev: false, engines: { node: '>=0.10.0', }, @@ -1085,7 +1088,6 @@ test('shared-workspace-lockfile: install dependencies in projects that are relat }, }, '/is-positive@1.0.0': { - dev: false, engines: { node: '>=0.10.0', }, @@ -1094,6 +1096,14 @@ test('shared-workspace-lockfile: install dependencies in projects that are relat }, }, }, + snapshots: { + '/is-negative@1.0.0': { + dev: false, + }, + '/is-positive@1.0.0': { + dev: false, + }, + }, }) }) @@ -1847,7 +1857,7 @@ test('peer dependencies are resolved from the root of the workspace when a new d await execPnpm(['add', 'ajv-keywords@1.5.0', '--strict-peer-dependencies', '--config.resolve-peers-from-workspace-root=true']) const lockfile = projects['project-1'].readLockfile() - expect(lockfile.packages).toHaveProperty(['/ajv-keywords@1.5.0(ajv@4.10.4)']) + expect(lockfile.snapshots).toHaveProperty(['/ajv-keywords@1.5.0(ajv@4.10.4)']) }) test('overrides in workspace project should be taken into account when shared-workspace-lockfiles is false', async () => { diff --git a/pnpm/test/monorepo/peerDependencies.ts b/pnpm/test/monorepo/peerDependencies.ts index f378ceb46b..99ba21cf15 100644 --- a/pnpm/test/monorepo/peerDependencies.ts +++ b/pnpm/test/monorepo/peerDependencies.ts @@ -1,6 +1,6 @@ import fs from 'fs' import { WANTED_LOCKFILE } from '@pnpm/constants' -import type { Lockfile } from '@pnpm/lockfile-types' +import { type LockfileV7 as Lockfile } from '@pnpm/lockfile-types' import { preparePackages } from '@pnpm/prepare' import { sync as readYamlFile } from 'read-yaml-file' import { sync as writeYamlFile } from 'write-yaml-file' @@ -31,5 +31,5 @@ test('peer dependency is not unlinked when adding a new dependency', async () => await execPnpm(['--filter=project-1', 'add', 'is-odd@1.0.0']) const lockfile = readYamlFile(WANTED_LOCKFILE) - expect(Object.keys(lockfile!.packages!)).toContain('/@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-a@@pnpm.e2e+peer-a)') + expect(Object.keys(lockfile!.snapshots!)).toContain('/@pnpm.e2e/abc@1.0.0(@pnpm.e2e/peer-a@@pnpm.e2e+peer-a)') }) diff --git a/pnpm/test/recursive/misc.ts b/pnpm/test/recursive/misc.ts index 007a684c86..5de110630b 100644 --- a/pnpm/test/recursive/misc.ts +++ b/pnpm/test/recursive/misc.ts @@ -1,7 +1,7 @@ import fs from 'fs' import path from 'path' import { prepare, preparePackages } from '@pnpm/prepare' -import { type Lockfile } from '@pnpm/lockfile-types' +import { type LockfileV7 as Lockfile } from '@pnpm/lockfile-types' import { sync as readYamlFile } from 'read-yaml-file' import { isCI } from 'ci-info' import isWindows from 'is-windows' @@ -228,7 +228,7 @@ test('recursive installation of packages in workspace ignores hooks in packages' await execPnpm(['install']) const lockfile = readYamlFile('pnpm-lock.yaml') - const depPaths = Object.keys(lockfile.packages ?? []) + const depPaths = Object.keys(lockfile.snapshots ?? {}) expect(depPaths).not.toContain('/@pnpm.e2e/dep-of-pkg-with-1-dep@100.1.0') expect(depPaths).toContain('/is-number@1.0.0') }) diff --git a/store/plugin-commands-store/test/storePrune.ts b/store/plugin-commands-store/test/storePrune.ts index 36385a7925..d9bc1475cb 100644 --- a/store/plugin-commands-store/test/storePrune.ts +++ b/store/plugin-commands-store/test/storePrune.ts @@ -1,7 +1,7 @@ import fs from 'fs' import path from 'path' import { assertStore } from '@pnpm/assert-store' -import { type LockfileFile } from '@pnpm/lockfile-file' +import { type LockfileFileV7 as LockfileFile } from '@pnpm/lockfile-file' import { store } from '@pnpm/plugin-commands-store' import { prepare } from '@pnpm/prepare' import { REGISTRY_MOCK_PORT } from '@pnpm/registry-mock' @@ -137,9 +137,9 @@ test('keep dependencies used by others', async () => { // all dependencies are marked as dev const lockfile = project.readLockfile() as LockfileFile - expect(isEmpty(lockfile.packages)).toBeFalsy() + expect(isEmpty(lockfile.snapshots)).toBeFalsy() - Object.entries(lockfile.packages ?? {}).forEach(([_, dep]) => { + Object.entries(lockfile.snapshots ?? {}).forEach(([_, dep]) => { expect(dep.dev).toBeTruthy() })