@pnpm/workspace.project-manifest-reader 1100.0.13 → 1100.0.14
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/index.js +42 -7
- package/package.json +8 -8
package/lib/index.js
CHANGED
|
@@ -194,10 +194,11 @@ function convertManifestBeforeWrite(manifest) {
|
|
|
194
194
|
return manifest;
|
|
195
195
|
}
|
|
196
196
|
function convertDependenciesToEnginesRuntime(manifest, dependenciesFieldName, enginesFieldName) {
|
|
197
|
+
const dependencies = readDependenciesField(manifest, dependenciesFieldName);
|
|
197
198
|
for (const runtimeName of ['node', 'deno', 'bun']) {
|
|
198
|
-
const dep =
|
|
199
|
-
if (typeof dep === 'string' && dep.startsWith('runtime:')) {
|
|
200
|
-
const version = dep.
|
|
199
|
+
const dep = dependencies?.[runtimeName];
|
|
200
|
+
if (dependencies != null && typeof dep === 'string' && dep.startsWith('runtime:')) {
|
|
201
|
+
const version = dep.slice('runtime:'.length).trim();
|
|
201
202
|
manifest[enginesFieldName] ??= {};
|
|
202
203
|
const runtimeEntry = {
|
|
203
204
|
name: runtimeName,
|
|
@@ -226,11 +227,42 @@ function convertDependenciesToEnginesRuntime(manifest, dependenciesFieldName, en
|
|
|
226
227
|
runtimeEntry,
|
|
227
228
|
];
|
|
228
229
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
230
|
+
delete dependencies[runtimeName];
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
removeManagedRuntimeEntry(manifest[enginesFieldName], runtimeName);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
function readDependenciesField(manifest, dependenciesFieldName) {
|
|
238
|
+
const dependencies = manifest[dependenciesFieldName];
|
|
239
|
+
if (dependencies === undefined)
|
|
240
|
+
return undefined;
|
|
241
|
+
if (dependencies === null || typeof dependencies !== 'object' || Array.isArray(dependencies)) {
|
|
242
|
+
throw new PnpmError('INVALID_DEPENDENCIES_FIELD', `The "${dependenciesFieldName}" field must be an object.`);
|
|
243
|
+
}
|
|
244
|
+
return dependencies;
|
|
245
|
+
}
|
|
246
|
+
function removeManagedRuntimeEntry(enginesField, runtimeName) {
|
|
247
|
+
if (!enginesField?.runtime)
|
|
248
|
+
return;
|
|
249
|
+
if (Array.isArray(enginesField.runtime)) {
|
|
250
|
+
const runtimes = enginesField.runtime.filter((runtime) => !isManagedRuntimeEntry(runtime, runtimeName));
|
|
251
|
+
if (runtimes.length === 0) {
|
|
252
|
+
delete enginesField.runtime;
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
enginesField.runtime = runtimes;
|
|
232
256
|
}
|
|
233
257
|
}
|
|
258
|
+
else if (isManagedRuntimeEntry(enginesField.runtime, runtimeName)) {
|
|
259
|
+
delete enginesField.runtime;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
function isManagedRuntimeEntry(runtime, runtimeName) {
|
|
263
|
+
return runtime.name === runtimeName &&
|
|
264
|
+
runtime.onFail === 'download' &&
|
|
265
|
+
typeof runtime.version === 'string';
|
|
234
266
|
}
|
|
235
267
|
const dependencyKeys = new Set([
|
|
236
268
|
'dependencies',
|
|
@@ -243,7 +275,10 @@ function normalize(manifest) {
|
|
|
243
275
|
for (const key in manifest) {
|
|
244
276
|
if (Object.hasOwn(manifest, key)) {
|
|
245
277
|
const value = manifest[key];
|
|
246
|
-
if (typeof value !== 'object' ||
|
|
278
|
+
if (typeof value !== 'object' ||
|
|
279
|
+
value === null ||
|
|
280
|
+
!dependencyKeys.has(key) ||
|
|
281
|
+
Array.isArray(value)) {
|
|
247
282
|
result[key] = structuredClone(value);
|
|
248
283
|
}
|
|
249
284
|
else {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pnpm/workspace.project-manifest-reader",
|
|
3
|
-
"version": "1100.0.
|
|
3
|
+
"version": "1100.0.14",
|
|
4
4
|
"description": "Read a project manifest (called package.json in most cases)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pnpm",
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
"funding": "https://opencollective.com/pnpm",
|
|
11
11
|
"repository": {
|
|
12
12
|
"type": "git",
|
|
13
|
-
"url": "https://github.com/pnpm/pnpm/tree/main/workspace/project-manifest-reader"
|
|
13
|
+
"url": "https://github.com/pnpm/pnpm/tree/main/pnpm11/workspace/project-manifest-reader"
|
|
14
14
|
},
|
|
15
|
-
"homepage": "https://github.com/pnpm/pnpm/tree/main/workspace/project-manifest-reader#readme",
|
|
15
|
+
"homepage": "https://github.com/pnpm/pnpm/tree/main/pnpm11/workspace/project-manifest-reader#readme",
|
|
16
16
|
"bugs": {
|
|
17
17
|
"url": "https://github.com/pnpm/pnpm/issues"
|
|
18
18
|
},
|
|
@@ -35,12 +35,12 @@
|
|
|
35
35
|
"parse-json": "^8.3.0",
|
|
36
36
|
"read-yaml-file": "^3.0.0",
|
|
37
37
|
"strip-bom": "^5.0.0",
|
|
38
|
-
"@pnpm/error": "1100.0.
|
|
39
|
-
"@pnpm/
|
|
38
|
+
"@pnpm/error": "1100.0.1",
|
|
39
|
+
"@pnpm/fs.graceful-fs": "1100.1.0",
|
|
40
40
|
"@pnpm/text.comments-parser": "1100.0.0",
|
|
41
41
|
"@pnpm/types": "1101.3.2",
|
|
42
42
|
"@pnpm/workspace.project-manifest-writer": "1100.0.8",
|
|
43
|
-
"@pnpm/
|
|
43
|
+
"@pnpm/pkg-manifest.utils": "1100.2.6"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
46
|
"@pnpm/logger": "^1100.0.0"
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
"@types/is-windows": "^1.0.2",
|
|
51
51
|
"@types/parse-json": "^7.0.0",
|
|
52
52
|
"tempy": "3.0.0",
|
|
53
|
-
"@pnpm/
|
|
54
|
-
"@pnpm/
|
|
53
|
+
"@pnpm/test-fixtures": "1100.0.0",
|
|
54
|
+
"@pnpm/workspace.project-manifest-reader": "1100.0.14"
|
|
55
55
|
},
|
|
56
56
|
"engines": {
|
|
57
57
|
"node": ">=22.13"
|