checkly 8.22.0 → 8.23.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.
- package/dist/ai-context/skills-command/references/configure-playwright-checks.md +24 -19
- package/dist/commands/debug/parse-project.js +3 -0
- package/dist/commands/debug/parse-project.js.map +1 -1
- package/dist/commands/deploy.js +3 -0
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/pw-test.js +3 -0
- package/dist/commands/pw-test.js.map +1 -1
- package/dist/commands/test.js +3 -0
- package/dist/commands/test.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js.map +1 -1
- package/dist/constructs/playwright-check-bundle.d.ts +5 -5
- package/dist/constructs/playwright-check-bundle.js.map +1 -1
- package/dist/constructs/project.js +5 -2
- package/dist/constructs/project.js.map +1 -1
- package/dist/constructs/session.d.ts +2 -1
- package/dist/constructs/session.js +2 -1
- package/dist/constructs/session.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/services/check-parser/bundler.d.ts +79 -8
- package/dist/services/check-parser/bundler.js +567 -9
- package/dist/services/check-parser/bundler.js.map +1 -1
- package/dist/services/check-parser/cache-hash.d.ts +141 -17
- package/dist/services/check-parser/cache-hash.js +78 -12
- package/dist/services/check-parser/cache-hash.js.map +1 -1
- package/dist/services/check-parser/faux-package.d.ts +5 -0
- package/dist/services/check-parser/faux-package.js +9 -1
- package/dist/services/check-parser/faux-package.js.map +1 -1
- package/dist/services/check-parser/lockfile-pruner.d.ts +104 -0
- package/dist/services/check-parser/lockfile-pruner.js +1107 -0
- package/dist/services/check-parser/lockfile-pruner.js.map +1 -0
- package/dist/services/check-parser/package-files/package-manager.d.ts +34 -0
- package/dist/services/check-parser/package-files/package-manager.js +131 -3
- package/dist/services/check-parser/package-files/package-manager.js.map +1 -1
- package/dist/services/check-parser/package-files/pnpmfile.d.ts +40 -0
- package/dist/services/check-parser/package-files/pnpmfile.js +322 -0
- package/dist/services/check-parser/package-files/pnpmfile.js.map +1 -0
- package/dist/services/check-parser/package-files/resolver.d.ts +6 -1
- package/dist/services/check-parser/package-files/resolver.js +34 -0
- package/dist/services/check-parser/package-files/resolver.js.map +1 -1
- package/dist/services/check-parser/package-files/workspace.d.ts +16 -1
- package/dist/services/check-parser/package-files/workspace.js +17 -2
- package/dist/services/check-parser/package-files/workspace.js.map +1 -1
- package/dist/services/check-parser/package-prune.d.ts +68 -0
- package/dist/services/check-parser/package-prune.js +274 -0
- package/dist/services/check-parser/package-prune.js.map +1 -0
- package/dist/services/check-parser/parser.js +9 -0
- package/dist/services/check-parser/parser.js.map +1 -1
- package/dist/services/check-parser/patched-dependencies.d.ts +133 -0
- package/dist/services/check-parser/patched-dependencies.js +428 -0
- package/dist/services/check-parser/patched-dependencies.js.map +1 -0
- package/dist/services/checkly-config-loader.d.ts +164 -10
- package/dist/services/checkly-config-loader.js +39 -0
- package/dist/services/checkly-config-loader.js.map +1 -1
- package/dist/services/embedded-packages/cache.d.ts +8 -4
- package/dist/services/embedded-packages/cache.js +27 -6
- package/dist/services/embedded-packages/cache.js.map +1 -1
- package/dist/services/embedded-packages/diagnostics.d.ts +129 -0
- package/dist/services/embedded-packages/diagnostics.js +212 -0
- package/dist/services/embedded-packages/diagnostics.js.map +1 -0
- package/dist/services/embedded-packages/lockfile-filter.d.ts +20 -0
- package/dist/services/embedded-packages/lockfile-filter.js +40 -0
- package/dist/services/embedded-packages/lockfile-filter.js.map +1 -0
- package/dist/services/embedded-packages/lockfile-packages.d.ts +31 -2
- package/dist/services/embedded-packages/lockfile-packages.js +234 -30
- package/dist/services/embedded-packages/lockfile-packages.js.map +1 -1
- package/dist/services/embedded-packages/materializer.d.ts +19 -5
- package/dist/services/embedded-packages/materializer.js +445 -91
- package/dist/services/embedded-packages/materializer.js.map +1 -1
- package/dist/services/embedded-packages/npmrc.d.ts +163 -21
- package/dist/services/embedded-packages/npmrc.js +440 -75
- package/dist/services/embedded-packages/npmrc.js.map +1 -1
- package/dist/services/embedded-packages/spec.d.ts +89 -17
- package/dist/services/embedded-packages/spec.js +199 -30
- package/dist/services/embedded-packages/spec.js.map +1 -1
- package/dist/services/embedded-packages/url.d.ts +39 -0
- package/dist/services/embedded-packages/url.js +60 -0
- package/dist/services/embedded-packages/url.js.map +1 -0
- package/dist/services/playwright-project-bundler.js +27 -23
- package/dist/services/playwright-project-bundler.js.map +1 -1
- package/dist/services/runner/registries.d.ts +144 -0
- package/dist/services/runner/registries.js +232 -0
- package/dist/services/runner/registries.js.map +1 -0
- package/oclif.manifest.json +1 -1
- package/package.json +5 -5
|
@@ -5,7 +5,22 @@
|
|
|
5
5
|
export interface LockfileRegistryPackage {
|
|
6
6
|
name: string;
|
|
7
7
|
version: string;
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* SRI integrity of the registry tarball. Absent only for `yarn.lock`
|
|
10
|
+
* entries: Yarn Berry checksums hash yarn's own cache archive, not the
|
|
11
|
+
* registry tarball, so the tarball integrity is resolved from registry
|
|
12
|
+
* metadata at materialization time instead. Entries without either hash
|
|
13
|
+
* are excluded by the parsers, so `lockfileChecksum` is always present
|
|
14
|
+
* when this is absent.
|
|
15
|
+
*/
|
|
16
|
+
integrity?: string;
|
|
17
|
+
/**
|
|
18
|
+
* The lockfile's own content pin when it is not an SRI tarball hash
|
|
19
|
+
* (Yarn Berry's `checksum` value). Used in place of `integrity` where a
|
|
20
|
+
* stable content identifier known at plan time is needed (the dependency
|
|
21
|
+
* cache hash).
|
|
22
|
+
*/
|
|
23
|
+
lockfileChecksum?: string;
|
|
9
24
|
/**
|
|
10
25
|
* The full tarball URL when the lockfile records one (npm's `resolved`,
|
|
11
26
|
* pnpm's `resolution.tarball`). When absent, the URL is derived from the
|
|
@@ -38,11 +53,25 @@ export interface LockfilePackages {
|
|
|
38
53
|
export declare class UnsupportedLockfileError extends Error {
|
|
39
54
|
constructor(message: string);
|
|
40
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Whether a lockfile is pnpm's. Callers use this to decide which package
|
|
58
|
+
* manager's credential conventions apply to the project.
|
|
59
|
+
*/
|
|
60
|
+
export declare function isPnpmLockfile(lockfilePath: string): boolean;
|
|
41
61
|
/**
|
|
42
62
|
* Enumerates every package entry in a lockfile, classified into embeddable
|
|
43
63
|
* registry packages and excluded (git/file/link/integrity-less) entries.
|
|
44
|
-
* Supports `pnpm-lock.yaml` (v6/v9)
|
|
64
|
+
* Supports `pnpm-lock.yaml` (v6/v9), `package-lock.json` (v2/v3),
|
|
65
|
+
* `bun.lock` (v1) and Yarn Berry's `yarn.lock`.
|
|
45
66
|
*/
|
|
46
67
|
export declare function loadLockfilePackages(lockfilePath: string): Promise<LockfilePackages>;
|
|
68
|
+
/**
|
|
69
|
+
* Content-based variant of {@link loadLockfilePackages} for lockfiles that
|
|
70
|
+
* exist only in memory (e.g. a pruned copy of the bundled lockfile). The
|
|
71
|
+
* format is dispatched on the lockfile's filename.
|
|
72
|
+
*/
|
|
73
|
+
export declare function parseLockfilePackagesContent(content: string, lockfileName: string): LockfilePackages;
|
|
47
74
|
export declare function parsePnpmLockfilePackages(content: string): LockfilePackages;
|
|
75
|
+
export declare function parseBunLockfilePackages(content: string): LockfilePackages;
|
|
76
|
+
export declare function parseYarnLockfilePackages(content: string): LockfilePackages;
|
|
48
77
|
export declare function parseNpmLockfilePackages(content: string): LockfilePackages;
|
|
@@ -9,24 +9,58 @@ export class UnsupportedLockfileError extends Error {
|
|
|
9
9
|
this.name = 'UnsupportedLockfileError';
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
+
const PNPM_LOCKFILE = 'pnpm-lock.yaml';
|
|
13
|
+
/**
|
|
14
|
+
* Whether a lockfile is pnpm's. Callers use this to decide which package
|
|
15
|
+
* manager's credential conventions apply to the project.
|
|
16
|
+
*/
|
|
17
|
+
export function isPnpmLockfile(lockfilePath) {
|
|
18
|
+
return path.basename(lockfilePath) === PNPM_LOCKFILE;
|
|
19
|
+
}
|
|
12
20
|
/**
|
|
13
21
|
* Enumerates every package entry in a lockfile, classified into embeddable
|
|
14
22
|
* registry packages and excluded (git/file/link/integrity-less) entries.
|
|
15
|
-
* Supports `pnpm-lock.yaml` (v6/v9)
|
|
23
|
+
* Supports `pnpm-lock.yaml` (v6/v9), `package-lock.json` (v2/v3),
|
|
24
|
+
* `bun.lock` (v1) and Yarn Berry's `yarn.lock`.
|
|
16
25
|
*/
|
|
17
26
|
export async function loadLockfilePackages(lockfilePath) {
|
|
18
27
|
const basename = path.basename(lockfilePath);
|
|
19
28
|
const content = await fs.readFile(lockfilePath, 'utf8');
|
|
20
|
-
|
|
21
|
-
|
|
29
|
+
return parseLockfilePackagesContent(content, basename);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Content-based variant of {@link loadLockfilePackages} for lockfiles that
|
|
33
|
+
* exist only in memory (e.g. a pruned copy of the bundled lockfile). The
|
|
34
|
+
* format is dispatched on the lockfile's filename.
|
|
35
|
+
*/
|
|
36
|
+
export function parseLockfilePackagesContent(content, lockfileName) {
|
|
37
|
+
switch (lockfileName) {
|
|
38
|
+
case PNPM_LOCKFILE:
|
|
22
39
|
return parsePnpmLockfilePackages(content);
|
|
23
40
|
case 'package-lock.json':
|
|
24
41
|
return parseNpmLockfilePackages(content);
|
|
42
|
+
case 'bun.lock':
|
|
43
|
+
return parseBunLockfilePackages(content);
|
|
44
|
+
case 'yarn.lock':
|
|
45
|
+
return parseYarnLockfilePackages(content);
|
|
46
|
+
case 'bun.lockb':
|
|
47
|
+
throw new UnsupportedLockfileError(`Embedded packages are not supported for bun's binary lockfile (bun.lockb).`
|
|
48
|
+
+ ` Regenerate a text lockfile with \`bun install --save-text-lockfile\`.`);
|
|
25
49
|
default:
|
|
26
|
-
throw new UnsupportedLockfileError(`Embedded packages are not supported for '${
|
|
27
|
-
+ ` Only pnpm (pnpm-lock.yaml)
|
|
50
|
+
throw new UnsupportedLockfileError(`Embedded packages are not supported for '${lockfileName}' lockfiles yet.`
|
|
51
|
+
+ ` Only pnpm (pnpm-lock.yaml), npm (package-lock.json), bun (bun.lock)`
|
|
52
|
+
+ ` and Yarn Berry (yarn.lock) are currently supported.`);
|
|
28
53
|
}
|
|
29
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Whether a directory-link target points outside the workspace the bundle
|
|
57
|
+
* carries. Shared by the parsers' link classification: an in-workspace link
|
|
58
|
+
* is part of the project (safe for a wildcard to skip silently), while an
|
|
59
|
+
* escaping one is not.
|
|
60
|
+
*/
|
|
61
|
+
function linkTargetEscapesWorkspace(target) {
|
|
62
|
+
return target === '..' || target.startsWith('../') || path.isAbsolute(target);
|
|
63
|
+
}
|
|
30
64
|
/**
|
|
31
65
|
* Strips a pnpm peer-dependency suffix (`(react@18.2.0)`) from a package
|
|
32
66
|
* key. The v9 `packages` section doesn't use them (they live in
|
|
@@ -36,6 +70,60 @@ function stripPeerSuffix(key) {
|
|
|
36
70
|
const cut = key.indexOf('(');
|
|
37
71
|
return cut === -1 ? key : key.slice(0, cut);
|
|
38
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Splits a `name@ref` package key at the first `@` past the name. Searching
|
|
75
|
+
* from the front (after the scope, when present) keeps the name intact when
|
|
76
|
+
* the ref itself contains `@`, as git refs do
|
|
77
|
+
* (`foo@git+ssh://git@github.com/...`). Shared by the pnpm and bun parsers,
|
|
78
|
+
* whose keys use the same shape.
|
|
79
|
+
*/
|
|
80
|
+
function splitPackageKey(key) {
|
|
81
|
+
const searchFrom = key.startsWith('@') ? key.indexOf('/') + 1 : 1;
|
|
82
|
+
const separator = searchFrom > 0 ? key.indexOf('@', searchFrom) : -1;
|
|
83
|
+
if (separator <= 0) {
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
return { name: key.slice(0, separator), ref: key.slice(separator + 1) };
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Classifies one `name@ref` entry into a registry package or an unfetchable
|
|
90
|
+
* exclusion, appending to `result`. Shared by the pnpm and bun parsers,
|
|
91
|
+
* which record the same information in different places (pnpm's
|
|
92
|
+
* `resolution.integrity`/`resolution.tarball` vs bun's tuple indices).
|
|
93
|
+
*/
|
|
94
|
+
function classifyRegistryEntry(result, name, ref, integrity, tarball) {
|
|
95
|
+
// Validate with semver but keep the ref as written: semver.valid()
|
|
96
|
+
// normalizes away build metadata (`1.0.0+sha.abc` → `1.0.0`), which
|
|
97
|
+
// would break both version-pin matching and the derived tarball URL.
|
|
98
|
+
const version = semver.valid(ref) !== null ? ref : null;
|
|
99
|
+
if (version === null) {
|
|
100
|
+
result.excluded.push({
|
|
101
|
+
name,
|
|
102
|
+
reason: `'${name}@${ref}' resolves to a git, file or URL dependency,`
|
|
103
|
+
+ ` which cannot be embedded as a registry tarball`,
|
|
104
|
+
kind: 'unfetchable',
|
|
105
|
+
});
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (typeof integrity !== 'string' || integrity === '') {
|
|
109
|
+
result.excluded.push({
|
|
110
|
+
name,
|
|
111
|
+
version,
|
|
112
|
+
reason: `the lockfile records no integrity hash for '${name}@${version}',`
|
|
113
|
+
+ ` which is required to embed it`,
|
|
114
|
+
kind: 'unfetchable',
|
|
115
|
+
});
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
result.registry.push({
|
|
119
|
+
name,
|
|
120
|
+
version,
|
|
121
|
+
integrity,
|
|
122
|
+
// Only absolute http(s) URLs are usable for downloading; anything
|
|
123
|
+
// else falls back to the registry-derived URL.
|
|
124
|
+
tarballUrl: typeof tarball === 'string' && /^https?:/.test(tarball) ? tarball : undefined,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
39
127
|
export function parsePnpmLockfilePackages(content) {
|
|
40
128
|
const data = parseYaml(content);
|
|
41
129
|
// The version can arrive as a number: pnpm writes `lockfileVersion: '9.0'`
|
|
@@ -66,7 +154,7 @@ export function parsePnpmLockfilePackages(content) {
|
|
|
66
154
|
// target escapes the workspace is not part of the project the
|
|
67
155
|
// bundle carries.
|
|
68
156
|
const target = version.slice('link:'.length);
|
|
69
|
-
const escapesWorkspace =
|
|
157
|
+
const escapesWorkspace = linkTargetEscapesWorkspace(target);
|
|
70
158
|
result.excluded.push({
|
|
71
159
|
name,
|
|
72
160
|
reason: escapesWorkspace
|
|
@@ -88,54 +176,170 @@ export function parsePnpmLockfilePackages(content) {
|
|
|
88
176
|
for (const [rawKey, rawEntry] of Object.entries(packages)) {
|
|
89
177
|
// v6 keys have a leading slash (`/name@1.2.3`), v9 keys do not.
|
|
90
178
|
const key = stripPeerSuffix(rawKey.startsWith('/') ? rawKey.slice(1) : rawKey);
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
// the ref itself contains `@`, as git refs do
|
|
94
|
-
// (`foo@git+ssh://git@github.com/...`).
|
|
95
|
-
const searchFrom = key.startsWith('@') ? key.indexOf('/') + 1 : 1;
|
|
96
|
-
const separator = searchFrom > 0 ? key.indexOf('@', searchFrom) : -1;
|
|
97
|
-
if (separator <= 0) {
|
|
179
|
+
const split = splitPackageKey(key);
|
|
180
|
+
if (split === undefined) {
|
|
98
181
|
continue;
|
|
99
182
|
}
|
|
100
|
-
const name =
|
|
101
|
-
const ref = key.slice(separator + 1);
|
|
183
|
+
const { name, ref } = split;
|
|
102
184
|
if (seen.has(`${name}@${ref}`)) {
|
|
103
185
|
continue;
|
|
104
186
|
}
|
|
105
187
|
seen.add(`${name}@${ref}`);
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
188
|
+
const resolution = rawEntry?.resolution;
|
|
189
|
+
classifyRegistryEntry(result, name, ref, resolution?.integrity, resolution?.tarball);
|
|
190
|
+
}
|
|
191
|
+
return result;
|
|
192
|
+
}
|
|
193
|
+
export function parseBunLockfilePackages(content) {
|
|
194
|
+
// bun.lock is JSONC (bun writes trailing commas), hence JSON5.
|
|
195
|
+
const data = JSON5.parse(content);
|
|
196
|
+
const lockfileVersion = data?.lockfileVersion;
|
|
197
|
+
if (lockfileVersion !== 1) {
|
|
198
|
+
throw new UnsupportedLockfileError(`Embedded packages require bun lockfile version 1`
|
|
199
|
+
+ ` (found '${lockfileVersion ?? 'unknown'}'). Regenerate the lockfile with a supported`
|
|
200
|
+
+ ` bun version, or update the Checkly CLI if the lockfile is newer.`);
|
|
201
|
+
}
|
|
202
|
+
const packages = data?.packages;
|
|
203
|
+
const result = { registry: [], excluded: [] };
|
|
204
|
+
if (typeof packages !== 'object' || packages === null) {
|
|
205
|
+
return result;
|
|
206
|
+
}
|
|
207
|
+
const seen = new Set();
|
|
208
|
+
for (const tuple of Object.values(packages)) {
|
|
209
|
+
// Package values are tuples whose first element is `name@ref`; the rest
|
|
210
|
+
// varies by resolution kind (registry entries carry the tarball URL at
|
|
211
|
+
// index 1 — '' for the default registry — and the integrity hash at
|
|
212
|
+
// index 3). An unrecognizable value is skipped rather than guessed at,
|
|
213
|
+
// like unparseable pnpm keys. Aliased installs appear under the alias
|
|
214
|
+
// key but record the real package name in the tuple, so the split below
|
|
215
|
+
// always yields the real name.
|
|
216
|
+
if (!Array.isArray(tuple) || typeof tuple[0] !== 'string') {
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
219
|
+
const split = splitPackageKey(tuple[0]);
|
|
220
|
+
if (split === undefined) {
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
const { name, ref } = split;
|
|
224
|
+
if (seen.has(`${name}@${ref}`)) {
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
seen.add(`${name}@${ref}`);
|
|
228
|
+
if (ref.startsWith('workspace:')) {
|
|
229
|
+
result.excluded.push({
|
|
230
|
+
name,
|
|
231
|
+
reason: `'${name}' is a workspace package, which cannot be embedded as a registry tarball`,
|
|
232
|
+
kind: 'workspace',
|
|
233
|
+
});
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
classifyRegistryEntry(result, name, ref, tuple[3], tuple[1]);
|
|
237
|
+
}
|
|
238
|
+
return result;
|
|
239
|
+
}
|
|
240
|
+
export function parseYarnLockfilePackages(content) {
|
|
241
|
+
// Yarn Berry lockfiles are YAML; Yarn Classic's v1 format happens to
|
|
242
|
+
// YAML-parse too, so Berry is recognized by its __metadata section.
|
|
243
|
+
const data = parseYaml(content);
|
|
244
|
+
if (data === null || typeof data !== 'object') {
|
|
245
|
+
throw new UnsupportedLockfileError(`Embedded packages could not parse the yarn.lock file.`);
|
|
246
|
+
}
|
|
247
|
+
const metadata = data.__metadata;
|
|
248
|
+
if (metadata === null || typeof metadata !== 'object' || metadata.version === undefined) {
|
|
249
|
+
throw new UnsupportedLockfileError(`Embedded packages are not supported for Yarn Classic (v1) lockfiles.`
|
|
250
|
+
+ ` Migrate to Yarn Berry, whose lockfile records the resolution data embedding needs.`);
|
|
251
|
+
}
|
|
252
|
+
const result = { registry: [], excluded: [] };
|
|
253
|
+
const seen = new Set();
|
|
254
|
+
for (const [key, entry] of Object.entries(data)) {
|
|
255
|
+
if (key === '__metadata') {
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
// Every entry records its resolved locator as `name@protocol:ref` in
|
|
259
|
+
// `resolution` — under an aliased or multi-descriptor key this is the
|
|
260
|
+
// REAL package locator, so names and refs are always taken from it. An
|
|
261
|
+
// unrecognizable entry is skipped rather than guessed at, like
|
|
262
|
+
// unparseable pnpm keys.
|
|
263
|
+
const resolution = entry?.resolution;
|
|
264
|
+
if (typeof resolution !== 'string') {
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
const split = splitPackageKey(resolution);
|
|
268
|
+
if (split === undefined) {
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
271
|
+
const { name, ref } = split;
|
|
272
|
+
if (seen.has(`${name}@${ref}`)) {
|
|
273
|
+
continue;
|
|
274
|
+
}
|
|
275
|
+
seen.add(`${name}@${ref}`);
|
|
276
|
+
if (ref.startsWith('workspace:')) {
|
|
277
|
+
result.excluded.push({
|
|
278
|
+
name,
|
|
279
|
+
reason: `'${name}' is a workspace package, which cannot be embedded as a registry tarball`,
|
|
280
|
+
kind: 'workspace',
|
|
281
|
+
});
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
// Directory links (`portal:`/`link:`) carry their target between the
|
|
285
|
+
// protocol and the `::locator=...` suffix. Same distinction as the
|
|
286
|
+
// pnpm/npm parsers: an in-workspace link is part of the project itself.
|
|
287
|
+
const linkPrefix = ['portal:', 'link:'].find(prefix => ref.startsWith(prefix));
|
|
288
|
+
if (linkPrefix !== undefined) {
|
|
289
|
+
const target = ref.slice(linkPrefix.length).split('::')[0];
|
|
290
|
+
const escapesWorkspace = linkTargetEscapesWorkspace(target);
|
|
291
|
+
result.excluded.push({
|
|
292
|
+
name,
|
|
293
|
+
reason: escapesWorkspace
|
|
294
|
+
? `'${name}' is a local directory link outside the workspace, which cannot be embedded`
|
|
295
|
+
+ ` as a registry tarball`
|
|
296
|
+
: `'${name}' is a workspace package, which cannot be embedded as a registry tarball`,
|
|
297
|
+
kind: escapesWorkspace ? 'unfetchable' : 'workspace',
|
|
298
|
+
});
|
|
299
|
+
continue;
|
|
300
|
+
}
|
|
301
|
+
// Anything that is not a plain `npm:<semver>` locator cannot be a
|
|
302
|
+
// registry tarball: patch:, git, https:, file:, exec:, or an npm ref
|
|
303
|
+
// whose version is not valid semver (a range or tag yarn left
|
|
304
|
+
// unresolved). file: targets an archive the bundle does not carry, so
|
|
305
|
+
// unlike directory links it warrants the unfetchable warning; builtin
|
|
306
|
+
// and user patches always coexist with the underlying npm: entry,
|
|
307
|
+
// which shadows the exclusion for reporting purposes.
|
|
308
|
+
const rawVersion = ref.startsWith('npm:') ? ref.slice('npm:'.length) : null;
|
|
309
|
+
// As in the other parsers: validate with semver but keep the version as
|
|
310
|
+
// written, preserving build metadata.
|
|
311
|
+
const version = rawVersion !== null && semver.valid(rawVersion) !== null ? rawVersion : null;
|
|
110
312
|
if (version === null) {
|
|
111
313
|
result.excluded.push({
|
|
112
314
|
name,
|
|
113
|
-
reason: `'${name}@${ref}' resolves to a git, file or
|
|
315
|
+
reason: `'${name}@${ref}' resolves to a git, file, URL or patched dependency,`
|
|
114
316
|
+ ` which cannot be embedded as a registry tarball`,
|
|
115
317
|
kind: 'unfetchable',
|
|
116
318
|
});
|
|
117
319
|
continue;
|
|
118
320
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
321
|
+
// Berry's checksum hashes yarn's own cache archive rather than the
|
|
322
|
+
// registry tarball, so it cannot serve as SRI integrity — the
|
|
323
|
+
// materializer resolves the tarball integrity from registry metadata
|
|
324
|
+
// instead. It IS a stable content pin, recorded for the dependency
|
|
325
|
+
// cache hash. Without one (checksumBehavior: ignore) the lockfile pins
|
|
326
|
+
// nothing, and the entry is excluded like the other parsers'
|
|
327
|
+
// integrity-less entries.
|
|
328
|
+
const checksum = entry?.checksum;
|
|
329
|
+
if (typeof checksum !== 'string' || checksum === '') {
|
|
122
330
|
result.excluded.push({
|
|
123
331
|
name,
|
|
124
332
|
version,
|
|
125
|
-
reason: `the lockfile records no
|
|
333
|
+
reason: `the lockfile records no checksum for '${name}@${version}',`
|
|
126
334
|
+ ` which is required to embed it`,
|
|
127
335
|
kind: 'unfetchable',
|
|
128
336
|
});
|
|
129
337
|
continue;
|
|
130
338
|
}
|
|
131
|
-
const tarball = resolution?.tarball;
|
|
132
339
|
result.registry.push({
|
|
133
340
|
name,
|
|
134
341
|
version,
|
|
135
|
-
|
|
136
|
-
// Only absolute http(s) URLs are usable for downloading; anything
|
|
137
|
-
// else falls back to the registry-derived URL.
|
|
138
|
-
tarballUrl: typeof tarball === 'string' && /^https?:/.test(tarball) ? tarball : undefined,
|
|
342
|
+
lockfileChecksum: checksum,
|
|
139
343
|
});
|
|
140
344
|
}
|
|
141
345
|
return result;
|
|
@@ -171,7 +375,7 @@ export function parseNpmLockfilePackages(content) {
|
|
|
171
375
|
// part of the project the bundle carries, so a wildcard must not
|
|
172
376
|
// skip it silently.
|
|
173
377
|
const target = typeof entry?.resolved === 'string' ? entry.resolved : '';
|
|
174
|
-
const escapesWorkspace =
|
|
378
|
+
const escapesWorkspace = linkTargetEscapesWorkspace(target);
|
|
175
379
|
result.excluded.push({
|
|
176
380
|
name: key.slice(lastNodeModules + 'node_modules/'.length),
|
|
177
381
|
reason: escapesWorkspace
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lockfile-packages.js","sourceRoot":"","sources":["../../../src/services/embedded-packages/lockfile-packages.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lockfile-packages.js","sourceRoot":"","sources":["../../../src/services/embedded-packages/lockfile-packages.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,6 +47,11 @@ export interface EmbeddedPackagesPlan {
|
|
|
47
47
|
* to be added to the code bundle.
|
|
48
48
|
*/
|
|
49
49
|
export interface MaterializedTarball extends PlannedTarball {
|
|
50
|
+
/**
|
|
51
|
+
* SRI integrity the tarball was verified against — the lockfile's, or for
|
|
52
|
+
* yarn.lock plans the one resolved from registry metadata.
|
|
53
|
+
*/
|
|
54
|
+
integrity: string;
|
|
50
55
|
/** Absolute path of the verified tarball in the CLI cache. */
|
|
51
56
|
filePath: string;
|
|
52
57
|
/** Bundle-root-relative archive path (POSIX). */
|
|
@@ -73,16 +78,25 @@ export interface EmbeddedPackagesMaterializerOptions {
|
|
|
73
78
|
/**
|
|
74
79
|
* Resolves the configured `bundle.packages.embed` specs against the
|
|
75
80
|
* workspace lockfile (plan) and sources the selected tarballs into the CLI
|
|
76
|
-
* cache (
|
|
81
|
+
* cache (materializeTarballs), through a chain of CLI cache → npm cacache →
|
|
77
82
|
* registry download, always verified against the lockfile integrity.
|
|
78
83
|
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
84
|
+
* The plan memoizes its in-flight promise: validation and bundling share
|
|
85
|
+
* one instance per parsed project, so the (purely local) resolution runs
|
|
86
|
+
* exactly once. Materialization has a single caller — the Bundler, at
|
|
87
|
+
* finalize time, after the bundled lockfile has been pruned — which passes
|
|
88
|
+
* the subset of the plan the shipped lockfile still references, so
|
|
89
|
+
* pruned-away tarballs are never downloaded.
|
|
82
90
|
*/
|
|
83
91
|
export declare class EmbeddedPackagesMaterializer {
|
|
84
92
|
#private;
|
|
85
93
|
constructor(options: EmbeddedPackagesMaterializerOptions);
|
|
86
94
|
plan(): Promise<EmbeddedPackagesPlan>;
|
|
87
|
-
|
|
95
|
+
/**
|
|
96
|
+
* Sources the given subset of the planned tarballs (CLI cache → npm
|
|
97
|
+
* cacache → registry download, verified against the lockfile integrity).
|
|
98
|
+
* Lets the caller materialize only the tarballs a pruned bundled lockfile
|
|
99
|
+
* still references, so pruned-away packages are never downloaded.
|
|
100
|
+
*/
|
|
101
|
+
materializeTarballs(tarballs: PlannedTarball[]): Promise<MaterializedTarball[]>;
|
|
88
102
|
}
|