@pnpm/lockfile.verification 1001.1.7 → 1001.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface AddedRemoved<Key, Value> {
|
|
2
|
+
key: Key;
|
|
3
|
+
value: Value;
|
|
4
|
+
}
|
|
5
|
+
export interface Modified<Key, Value> {
|
|
6
|
+
key: Key;
|
|
7
|
+
left: Value;
|
|
8
|
+
right: Value;
|
|
9
|
+
}
|
|
10
|
+
export interface Diff<Key, Value> {
|
|
11
|
+
/** Entries that are absent in `left` but present in `right`. */
|
|
12
|
+
added: Array<AddedRemoved<Key, Value>>;
|
|
13
|
+
/** Entries that are present in `left` but absent in `right`. */
|
|
14
|
+
removed: Array<AddedRemoved<Key, Value>>;
|
|
15
|
+
/** Entries that are present in both `left` and `right` but the values are different. */
|
|
16
|
+
modified: Array<Modified<Key, Value>>;
|
|
17
|
+
}
|
|
18
|
+
export declare function diffFlatRecords<Key extends string | number | symbol, Value>(left: Record<Key, Value>, right: Record<Key, Value>): Diff<Key, Value>;
|
|
19
|
+
export declare function isEqual({ added, removed, modified }: Diff<unknown, unknown>): boolean;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.diffFlatRecords = diffFlatRecords;
|
|
4
|
+
exports.isEqual = isEqual;
|
|
5
|
+
function diffFlatRecords(left, right) {
|
|
6
|
+
const result = {
|
|
7
|
+
added: [],
|
|
8
|
+
removed: [],
|
|
9
|
+
modified: [],
|
|
10
|
+
};
|
|
11
|
+
for (const [key, value] of Object.entries(left)) {
|
|
12
|
+
if (!Object.hasOwn(right, key)) {
|
|
13
|
+
result.removed.push({ key, value });
|
|
14
|
+
}
|
|
15
|
+
else if (value !== right[key]) {
|
|
16
|
+
result.modified.push({ key, left: value, right: right[key] });
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
for (const [key, value] of Object.entries(right)) {
|
|
20
|
+
if (!Object.hasOwn(left, key)) {
|
|
21
|
+
result.added.push({ key, value });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
function isEqual({ added, removed, modified }) {
|
|
27
|
+
return added.length === 0 && removed.length === 0 && modified.length === 0;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=diffFlatRecords.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diffFlatRecords.js","sourceRoot":"","sources":["../src/diffFlatRecords.ts"],"names":[],"mappings":";;AAoBA,0CAsBC;AAED,0BAEC;AA1BD,SAAgB,eAAe,CAA+C,IAAwB,EAAE,KAAyB;IAC/H,MAAM,MAAM,GAAqB;QAC/B,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;KACb,CAAA;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAwB,EAAE,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;QACrC,CAAC;aAAM,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC/D,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAwB,EAAE,CAAC;QACxE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAgB,OAAO,CAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAA0B;IAC3E,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAA;AAC5E,CAAC"}
|
|
@@ -8,6 +8,7 @@ const types_1 = require("@pnpm/types");
|
|
|
8
8
|
const equals_1 = __importDefault(require("ramda/src/equals"));
|
|
9
9
|
const pickBy_1 = __importDefault(require("ramda/src/pickBy"));
|
|
10
10
|
const omit_1 = __importDefault(require("ramda/src/omit"));
|
|
11
|
+
const diffFlatRecords_1 = require("./diffFlatRecords");
|
|
11
12
|
function satisfiesPackageManifest(opts, importer, pkg) {
|
|
12
13
|
if (!importer)
|
|
13
14
|
return { satisfies: false, detailedReason: 'no importer' };
|
|
@@ -31,10 +32,11 @@ function satisfiesPackageManifest(opts, importer, pkg) {
|
|
|
31
32
|
existingDeps = pickNonLinkedDeps(existingDeps);
|
|
32
33
|
specs = pickNonLinkedDeps(specs);
|
|
33
34
|
}
|
|
34
|
-
|
|
35
|
+
const specsDiff = (0, diffFlatRecords_1.diffFlatRecords)(specs, existingDeps);
|
|
36
|
+
if (!(0, diffFlatRecords_1.isEqual)(specsDiff)) {
|
|
35
37
|
return {
|
|
36
38
|
satisfies: false,
|
|
37
|
-
detailedReason: `specifiers in the lockfile
|
|
39
|
+
detailedReason: `specifiers in the lockfile don't match specifiers in package.json:\n${displaySpecDiff(specsDiff)}`,
|
|
38
40
|
};
|
|
39
41
|
}
|
|
40
42
|
if (importer.publishDirectory !== pkg.publishConfig?.directory) {
|
|
@@ -92,4 +94,24 @@ function satisfiesPackageManifest(opts, importer, pkg) {
|
|
|
92
94
|
function countOfNonLinkedDeps(lockfileDeps) {
|
|
93
95
|
return Object.values(lockfileDeps).filter((ref) => !ref.includes('link:') && !ref.includes('file:')).length;
|
|
94
96
|
}
|
|
97
|
+
function displaySpecDiff({ added, removed, modified }) {
|
|
98
|
+
let result = '';
|
|
99
|
+
if (added.length !== 0) {
|
|
100
|
+
result += `* ${added.length} dependencies were added: `;
|
|
101
|
+
result += added.map(({ key, value }) => `${key}@${value}`).join(', ');
|
|
102
|
+
result += '\n';
|
|
103
|
+
}
|
|
104
|
+
if (removed.length !== 0) {
|
|
105
|
+
result += `* ${removed.length} dependencies were removed: `;
|
|
106
|
+
result += removed.map(({ key, value }) => `${key}@${value}`).join(', ');
|
|
107
|
+
result += '\n';
|
|
108
|
+
}
|
|
109
|
+
if (modified.length !== 0) {
|
|
110
|
+
result += `* ${modified.length} dependencies are mismatched:\n`;
|
|
111
|
+
for (const { key, left, right } of modified) {
|
|
112
|
+
result += ` - ${key} (lockfile: ${left}, manifest: ${right})\n`;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return result;
|
|
116
|
+
}
|
|
95
117
|
//# sourceMappingURL=satisfiesPackageManifest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"satisfiesPackageManifest.js","sourceRoot":"","sources":["../src/satisfiesPackageManifest.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"satisfiesPackageManifest.js","sourceRoot":"","sources":["../src/satisfiesPackageManifest.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pnpm/lockfile.verification",
|
|
3
|
-
"version": "1001.
|
|
3
|
+
"version": "1001.2.0",
|
|
4
4
|
"description": "Checks a lockfile",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pnpm",
|
|
@@ -29,13 +29,13 @@
|
|
|
29
29
|
"semver": "^7.7.1",
|
|
30
30
|
"version-selector-type": "^3.0.0",
|
|
31
31
|
"@pnpm/catalogs.types": "1000.0.0",
|
|
32
|
+
"@pnpm/crypto.hash": "1000.1.1",
|
|
33
|
+
"@pnpm/get-context": "1001.1.0",
|
|
32
34
|
"@pnpm/dependency-path": "1000.0.9",
|
|
33
|
-
"@pnpm/get-context": "1001.0.14",
|
|
34
35
|
"@pnpm/lockfile.types": "1001.0.8",
|
|
35
|
-
"@pnpm/crypto.hash": "1000.1.1",
|
|
36
|
-
"@pnpm/lockfile.utils": "1001.0.11",
|
|
37
36
|
"@pnpm/read-package-json": "1000.0.9",
|
|
38
|
-
"@pnpm/resolver-base": "
|
|
37
|
+
"@pnpm/resolver-base": "1004.0.0",
|
|
38
|
+
"@pnpm/lockfile.utils": "1001.0.12",
|
|
39
39
|
"@pnpm/types": "1000.6.0"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
@@ -47,9 +47,9 @@
|
|
|
47
47
|
"@types/tar-stream": "^2.2.3",
|
|
48
48
|
"tar-stream": "^2.2.0",
|
|
49
49
|
"@pnpm/constants": "1001.1.0",
|
|
50
|
-
"@pnpm/lockfile.verification": "1001.1.7",
|
|
51
50
|
"@pnpm/logger": "1001.0.0",
|
|
52
|
-
"@pnpm/prepare": "0.0.
|
|
51
|
+
"@pnpm/prepare": "0.0.121",
|
|
52
|
+
"@pnpm/lockfile.verification": "1001.2.0"
|
|
53
53
|
},
|
|
54
54
|
"engines": {
|
|
55
55
|
"node": ">=18.12"
|