@pnpm/lockfile.utils 1004.0.5 → 1004.0.6
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.
- package/lib/assertRegistryShapedResolution.d.ts +17 -0
- package/lib/assertRegistryShapedResolution.js +102 -0
- package/lib/assertRegistryShapedResolution.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +4 -1
- package/lib/index.js.map +1 -1
- package/lib/pkgSnapshotToResolution.js +2 -0
- package/lib/pkgSnapshotToResolution.js.map +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type PackageSnapshot } from '@pnpm/lockfile.types';
|
|
2
|
+
/**
|
|
3
|
+
* Matches the known git-host tarball download endpoints. Schemes and
|
|
4
|
+
* hostnames are case-insensitive, so the URL is matched against a lowercased
|
|
5
|
+
* copy: a tampered `https://CODELOAD.GITHUB.COM/...` must not slip past as a
|
|
6
|
+
* non-git-hosted (and therefore registry-trusted) tarball. Only the
|
|
7
|
+
* lowercased copy is inspected; the original URL is never rewritten.
|
|
8
|
+
*/
|
|
9
|
+
export declare function isGitHostedTarballUrl(url: string): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* A registry-style depPath (name@semver) must be backed by a registry-shaped
|
|
12
|
+
* resolution: the allowBuild policy derives a trusted package identity from
|
|
13
|
+
* that key shape, which is only sound while this invariant holds. The check
|
|
14
|
+
* is offline and runs wherever a lockfile entry is materialized into a
|
|
15
|
+
* fetchable resolution or its scripts are about to run.
|
|
16
|
+
*/
|
|
17
|
+
export declare function assertRegistryShapedResolution(depPath: string, pkgSnapshot: PackageSnapshot): void;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.isGitHostedTarballUrl = isGitHostedTarballUrl;
|
|
27
|
+
exports.assertRegistryShapedResolution = assertRegistryShapedResolution;
|
|
28
|
+
const error_1 = require("@pnpm/error");
|
|
29
|
+
const dp = __importStar(require("@pnpm/dependency-path"));
|
|
30
|
+
/**
|
|
31
|
+
* Matches the known git-host tarball download endpoints. Schemes and
|
|
32
|
+
* hostnames are case-insensitive, so the URL is matched against a lowercased
|
|
33
|
+
* copy: a tampered `https://CODELOAD.GITHUB.COM/...` must not slip past as a
|
|
34
|
+
* non-git-hosted (and therefore registry-trusted) tarball. Only the
|
|
35
|
+
* lowercased copy is inspected; the original URL is never rewritten.
|
|
36
|
+
*/
|
|
37
|
+
function isGitHostedTarballUrl(url) {
|
|
38
|
+
const lowerUrl = url.toLowerCase();
|
|
39
|
+
return (lowerUrl.startsWith('https://codeload.github.com/') ||
|
|
40
|
+
lowerUrl.startsWith('https://bitbucket.org/') ||
|
|
41
|
+
lowerUrl.startsWith('https://gitlab.com/')) && lowerUrl.includes('tar.gz');
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* A registry-style depPath (name@semver) must be backed by a registry-shaped
|
|
45
|
+
* resolution: the allowBuild policy derives a trusted package identity from
|
|
46
|
+
* that key shape, which is only sound while this invariant holds. The check
|
|
47
|
+
* is offline and runs wherever a lockfile entry is materialized into a
|
|
48
|
+
* fetchable resolution or its scripts are about to run.
|
|
49
|
+
*/
|
|
50
|
+
function assertRegistryShapedResolution(depPath, pkgSnapshot) {
|
|
51
|
+
const { name, version, nonSemverVersion } = dp.parse(depPath);
|
|
52
|
+
if (name == null || version == null || nonSemverVersion != null)
|
|
53
|
+
return;
|
|
54
|
+
if (isRegistryShapedResolution(pkgSnapshot.resolution))
|
|
55
|
+
return;
|
|
56
|
+
throw new error_1.PnpmError('RESOLUTION_SHAPE_MISMATCH', `Cannot use the lockfile entry of "${depPath}": its registry-style dependency path is backed by a non-registry resolution.`, { hint: 'The lockfile may be corrupted or have been tampered with. Restore it from a trusted source, or delete it and re-run installation without --frozen-lockfile to regenerate.' });
|
|
57
|
+
}
|
|
58
|
+
function isRegistryShapedResolution(resolution) {
|
|
59
|
+
if (resolution == null)
|
|
60
|
+
return true;
|
|
61
|
+
if (typeof resolution !== 'object')
|
|
62
|
+
return false;
|
|
63
|
+
const { type, gitHosted, tarball, variants } = resolution;
|
|
64
|
+
if (type === 'variations') {
|
|
65
|
+
return Array.isArray(variants) && variants.every((variant) => isRegistryShapedResolution(variant?.resolution));
|
|
66
|
+
}
|
|
67
|
+
if (type != null)
|
|
68
|
+
return false;
|
|
69
|
+
// Plain tarball / registry resolution. The lockfile is parsed from YAML
|
|
70
|
+
// without schema validation, so the `gitHosted` flag is not trustworthy on
|
|
71
|
+
// its own: a tampered entry could set a non-boolean (dodging a strict
|
|
72
|
+
// `=== true`) or an explicit `false` on a git-host URL (the loader only
|
|
73
|
+
// backfills the flag when absent). Treat any non-boolean flag as git-hosted
|
|
74
|
+
// and gate on the URL so the verdict never depends on the flag alone.
|
|
75
|
+
if (gitHosted != null && (typeof gitHosted !== 'boolean' || gitHosted))
|
|
76
|
+
return false;
|
|
77
|
+
// A registry resolution reconstructs its tarball URL from name+version, so
|
|
78
|
+
// an absent/empty `tarball` is registry-shaped. When a URL with a scheme is
|
|
79
|
+
// present it must be an http(s) artifact: a `file:` tarball under a
|
|
80
|
+
// name@semver key is a local artifact that a package-name rule must not
|
|
81
|
+
// approve.
|
|
82
|
+
if (typeof tarball === 'string' && tarball !== '') {
|
|
83
|
+
if (hasUrlScheme(tarball)) {
|
|
84
|
+
if (!/^https?:\/\//i.test(tarball))
|
|
85
|
+
return false;
|
|
86
|
+
if (isGitHostedTarballUrl(tarball))
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
else if (tarball.startsWith('/') || tarball.startsWith('\\')) {
|
|
90
|
+
// Protocol-relative and path-absolute forms (`//host`, `/\host`, ...)
|
|
91
|
+
// can escape the configured registry host when resolved as a URL.
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
// A scheme-less relative path is resolved against the configured
|
|
95
|
+
// registry, so it cannot point off-registry.
|
|
96
|
+
}
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
function hasUrlScheme(url) {
|
|
100
|
+
return /^[a-z][a-z0-9+.-]*:/i.test(url);
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=assertRegistryShapedResolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertRegistryShapedResolution.js","sourceRoot":"","sources":["../src/assertRegistryShapedResolution.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAWA,sDAOC;AASD,wEAQC;AAnCD,uCAAuC;AAEvC,0DAA2C;AAE3C;;;;;;GAMG;AACH,SAAgB,qBAAqB,CAAE,GAAW;IAChD,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IAClC,OAAO,CACL,QAAQ,CAAC,UAAU,CAAC,8BAA8B,CAAC;QACnD,QAAQ,CAAC,UAAU,CAAC,wBAAwB,CAAC;QAC7C,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAC3C,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAClC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,8BAA8B,CAAE,OAAe,EAAE,WAA4B;IAC3F,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC7D,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,gBAAgB,IAAI,IAAI;QAAE,OAAM;IACvE,IAAI,0BAA0B,CAAC,WAAW,CAAC,UAAU,CAAC;QAAE,OAAM;IAC9D,MAAM,IAAI,iBAAS,CAAC,2BAA2B,EAC7C,qCAAqC,OAAO,+EAA+E,EAC3H,EAAE,IAAI,EAAE,2KAA2K,EAAE,CACtL,CAAA;AACH,CAAC;AAED,SAAS,0BAA0B,CAAE,UAAmB;IACtD,IAAI,UAAU,IAAI,IAAI;QAAE,OAAO,IAAI,CAAA;IACnC,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAChD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,UAK9C,CAAA;IACD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK,CAC9C,CAAC,OAAO,EAAE,EAAE,CAAC,0BAA0B,CAAE,OAAoC,EAAE,UAAU,CAAC,CAC3F,CAAA;IACH,CAAC;IACD,IAAI,IAAI,IAAI,IAAI;QAAE,OAAO,KAAK,CAAA;IAC9B,wEAAwE;IACxE,2EAA2E;IAC3E,sEAAsE;IACtE,wEAAwE;IACxE,4EAA4E;IAC5E,sEAAsE;IACtE,IAAI,SAAS,IAAI,IAAI,IAAI,CAAC,OAAO,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC;QAAE,OAAO,KAAK,CAAA;IACpF,2EAA2E;IAC3E,4EAA4E;IAC5E,oEAAoE;IACpE,wEAAwE;IACxE,WAAW;IACX,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QAClD,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;gBAAE,OAAO,KAAK,CAAA;YAChD,IAAI,qBAAqB,CAAC,OAAO,CAAC;gBAAE,OAAO,KAAK,CAAA;QAClD,CAAC;aAAM,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/D,sEAAsE;YACtE,kEAAkE;YAClE,OAAO,KAAK,CAAA;QACd,CAAC;QACD,iEAAiE;QACjE,6CAA6C;IAC/C,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,YAAY,CAAE,GAAW;IAChC,OAAO,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACzC,CAAC"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { refToRelative } from '@pnpm/dependency-path';
|
|
2
|
+
export { assertRegistryShapedResolution, isGitHostedTarballUrl } from './assertRegistryShapedResolution.js';
|
|
2
3
|
export { nameVerFromPkgSnapshot } from './nameVerFromPkgSnapshot.js';
|
|
3
4
|
export { packageIdFromSnapshot } from './packageIdFromSnapshot.js';
|
|
4
5
|
export { packageIsIndependent } from './packageIsIndependent.js';
|
package/lib/index.js
CHANGED
|
@@ -14,8 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.getPkgShortId = exports.refIsLocalDirectory = exports.refIsLocalTarball = exports.pkgSnapshotToResolution = exports.packageIsIndependent = exports.packageIdFromSnapshot = exports.nameVerFromPkgSnapshot = void 0;
|
|
17
|
+
exports.getPkgShortId = exports.refIsLocalDirectory = exports.refIsLocalTarball = exports.pkgSnapshotToResolution = exports.packageIsIndependent = exports.packageIdFromSnapshot = exports.nameVerFromPkgSnapshot = exports.isGitHostedTarballUrl = exports.assertRegistryShapedResolution = void 0;
|
|
18
18
|
const dependency_path_1 = require("@pnpm/dependency-path");
|
|
19
|
+
var assertRegistryShapedResolution_js_1 = require("./assertRegistryShapedResolution.js");
|
|
20
|
+
Object.defineProperty(exports, "assertRegistryShapedResolution", { enumerable: true, get: function () { return assertRegistryShapedResolution_js_1.assertRegistryShapedResolution; } });
|
|
21
|
+
Object.defineProperty(exports, "isGitHostedTarballUrl", { enumerable: true, get: function () { return assertRegistryShapedResolution_js_1.isGitHostedTarballUrl; } });
|
|
19
22
|
var nameVerFromPkgSnapshot_js_1 = require("./nameVerFromPkgSnapshot.js");
|
|
20
23
|
Object.defineProperty(exports, "nameVerFromPkgSnapshot", { enumerable: true, get: function () { return nameVerFromPkgSnapshot_js_1.nameVerFromPkgSnapshot; } });
|
|
21
24
|
var packageIdFromSnapshot_js_1 = require("./packageIdFromSnapshot.js");
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2DAAqD;AAErD,yEAAoE;AAA3D,mIAAA,sBAAsB,OAAA;AAC/B,uEAAkE;AAAzD,iIAAA,qBAAqB,OAAA;AAC9B,qEAAgE;AAAvD,+HAAA,oBAAoB,OAAA;AAC7B,2EAAsE;AAA7D,qIAAA,uBAAuB,OAAA;AAChC,+DAA+E;AAAtE,yHAAA,iBAAiB,OAAA;AAAE,2HAAA,mBAAmB,OAAA;AAC/C,uDAAoC;AAEpC,6BAA6B;AAChB,QAAA,aAAa,GAAG,+BAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2DAAqD;AAErD,yFAA2G;AAAlG,mJAAA,8BAA8B,OAAA;AAAE,0IAAA,qBAAqB,OAAA;AAC9D,yEAAoE;AAA3D,mIAAA,sBAAsB,OAAA;AAC/B,uEAAkE;AAAzD,iIAAA,qBAAqB,OAAA;AAC9B,qEAAgE;AAAvD,+HAAA,oBAAoB,OAAA;AAC7B,2EAAsE;AAA7D,qIAAA,uBAAuB,OAAA;AAChC,+DAA+E;AAAtE,yHAAA,iBAAiB,OAAA;AAAE,2HAAA,mBAAmB,OAAA;AAC/C,uDAAoC;AAEpC,6BAA6B;AAChB,QAAA,aAAa,GAAG,+BAAa,CAAA"}
|
|
@@ -7,8 +7,10 @@ exports.pkgSnapshotToResolution = pkgSnapshotToResolution;
|
|
|
7
7
|
const url_1 = __importDefault(require("url"));
|
|
8
8
|
const error_1 = require("@pnpm/error");
|
|
9
9
|
const get_npm_tarball_url_1 = __importDefault(require("get-npm-tarball-url"));
|
|
10
|
+
const assertRegistryShapedResolution_js_1 = require("./assertRegistryShapedResolution.js");
|
|
10
11
|
const nameVerFromPkgSnapshot_js_1 = require("./nameVerFromPkgSnapshot.js");
|
|
11
12
|
function pkgSnapshotToResolution(depPath, pkgSnapshot, registries) {
|
|
13
|
+
(0, assertRegistryShapedResolution_js_1.assertRegistryShapedResolution)(depPath, pkgSnapshot);
|
|
12
14
|
const resolution = pkgSnapshot.resolution;
|
|
13
15
|
// Tarball-shaped resolutions (no `type` field) must carry `integrity`,
|
|
14
16
|
// except where the URL itself anchors the bytes:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkgSnapshotToResolution.js","sourceRoot":"","sources":["../src/pkgSnapshotToResolution.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"pkgSnapshotToResolution.js","sourceRoot":"","sources":["../src/pkgSnapshotToResolution.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pnpm/lockfile.utils",
|
|
3
|
-
"version": "1004.0.
|
|
3
|
+
"version": "1004.0.6",
|
|
4
4
|
"description": "Utils for dealing with pnpm-lock.yaml",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pnpm",
|
|
@@ -28,18 +28,18 @@
|
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"get-npm-tarball-url": "^2.1.0",
|
|
30
30
|
"ramda": "npm:@pnpm/ramda@0.28.1",
|
|
31
|
-
"@pnpm/dependency-path": "1001.1.10",
|
|
32
|
-
"@pnpm/resolver-base": "1005.4.2",
|
|
33
31
|
"@pnpm/error": "1000.1.0",
|
|
34
|
-
"@pnpm/
|
|
35
|
-
"@pnpm/types": "
|
|
32
|
+
"@pnpm/dependency-path": "1001.1.11",
|
|
33
|
+
"@pnpm/lockfile.types": "1002.1.2",
|
|
34
|
+
"@pnpm/resolver-base": "1005.4.3",
|
|
35
|
+
"@pnpm/types": "1001.3.1"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@types/ramda": "0.29.12",
|
|
39
39
|
"tempy": "^1.0.1",
|
|
40
40
|
"write-yaml-file": "^5.0.0",
|
|
41
41
|
"yaml-tag": "1.1.0",
|
|
42
|
-
"@pnpm/lockfile.utils": "1004.0.
|
|
42
|
+
"@pnpm/lockfile.utils": "1004.0.6"
|
|
43
43
|
},
|
|
44
44
|
"engines": {
|
|
45
45
|
"node": ">=18.12"
|