@pnpm/pkg-manifest.utils 1100.2.7 → 1100.2.9
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/CHANGELOG.md +14 -0
- package/package.json +4 -4
- package/lib/convertEnginesRuntimeToDependencies.d.ts +0 -3
- package/lib/convertEnginesRuntimeToDependencies.js +0 -64
- package/lib/filterDependenciesByType.d.ts +0 -2
- package/lib/filterDependenciesByType.js +0 -8
- package/lib/getAllDependenciesFromManifest.d.ts +0 -4
- package/lib/getAllDependenciesFromManifest.js +0 -9
- package/lib/getAllUniqueSpecs.d.ts +0 -2
- package/lib/getAllUniqueSpecs.js +0 -20
- package/lib/getDependencyTypeFromManifest.d.ts +0 -2
- package/lib/getDependencyTypeFromManifest.js +0 -12
- package/lib/getSpecFromPackageManifest.d.ts +0 -2
- package/lib/getSpecFromPackageManifest.js +0 -8
- package/lib/index.d.ts +0 -11
- package/lib/updateProjectManifestObject.d.ts +0 -12
- package/lib/updateProjectManifestObject.js +0 -99
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @pnpm/manifest-utils
|
|
2
2
|
|
|
3
|
+
## 1100.2.9
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies:
|
|
8
|
+
- @pnpm/deps.peer-range@1100.1.0
|
|
9
|
+
|
|
10
|
+
## 1100.2.8
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Updated dependencies:
|
|
15
|
+
- @pnpm/core-loggers@1100.2.3
|
|
16
|
+
|
|
3
17
|
## 1100.2.7
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pnpm/pkg-manifest.utils",
|
|
3
|
-
"version": "1100.2.
|
|
3
|
+
"version": "1100.2.9",
|
|
4
4
|
"description": "Utils for dealing with package manifest",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pnpm",
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"!*.map"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@pnpm/core-loggers": "1100.2.
|
|
31
|
-
"@pnpm/deps.peer-range": "1100.0
|
|
30
|
+
"@pnpm/core-loggers": "1100.2.3",
|
|
31
|
+
"@pnpm/deps.peer-range": "1100.1.0",
|
|
32
32
|
"@pnpm/error": "1100.0.1",
|
|
33
33
|
"@pnpm/types": "1101.4.0",
|
|
34
34
|
"semver": "^7.8.4"
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@jest/globals": "30.4.1",
|
|
41
41
|
"@pnpm/logger": "1100.0.0",
|
|
42
|
-
"@pnpm/pkg-manifest.utils": "1100.2.
|
|
42
|
+
"@pnpm/pkg-manifest.utils": "1100.2.9",
|
|
43
43
|
"@types/semver": "7.7.1"
|
|
44
44
|
},
|
|
45
45
|
"engines": {
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { type DependenciesField, type ProjectManifest } from '@pnpm/types';
|
|
2
|
-
export declare function convertEnginesRuntimeToDependencies(manifest: ProjectManifest, enginesFieldName: 'devEngines' | 'engines', dependenciesFieldName: DependenciesField): void;
|
|
3
|
-
export declare function applyRuntimeOnFailOverride(manifest: ProjectManifest, onFailOverride: 'ignore' | 'warn' | 'error' | 'download'): void;
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { globalWarn } from '@pnpm/logger';
|
|
2
|
-
import { RUNTIME_NAMES, } from '@pnpm/types';
|
|
3
|
-
export function convertEnginesRuntimeToDependencies(manifest, enginesFieldName, dependenciesFieldName) {
|
|
4
|
-
for (const runtimeName of RUNTIME_NAMES) {
|
|
5
|
-
const enginesFieldRuntime = manifest[enginesFieldName]?.runtime;
|
|
6
|
-
if (enginesFieldRuntime == null || manifest[dependenciesFieldName]?.[runtimeName]) {
|
|
7
|
-
continue;
|
|
8
|
-
}
|
|
9
|
-
const runtimes = Array.isArray(enginesFieldRuntime) ? enginesFieldRuntime : [enginesFieldRuntime];
|
|
10
|
-
const runtime = runtimes.find((runtime) => runtime.name === runtimeName);
|
|
11
|
-
if (runtime?.onFail !== 'download') {
|
|
12
|
-
continue;
|
|
13
|
-
}
|
|
14
|
-
if (typeof runtime.version !== 'string') {
|
|
15
|
-
globalWarn(`Cannot download ${runtimeName} because no version is specified in ${enginesFieldName}.runtime`);
|
|
16
|
-
continue;
|
|
17
|
-
}
|
|
18
|
-
const version = runtime.version.trim();
|
|
19
|
-
if ('webcontainer' in process.versions) {
|
|
20
|
-
globalWarn(`Installation of ${runtimeName} versions is not supported in WebContainer`);
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
const deps = (manifest[dependenciesFieldName] ??= {});
|
|
24
|
-
// Use Object.defineProperty so a future RUNTIME_NAMES entry that
|
|
25
|
-
// happens to match an inherited property name (`__proto__`,
|
|
26
|
-
// `constructor`, `prototype`) becomes a regular own data property
|
|
27
|
-
// instead of altering Object.prototype.
|
|
28
|
-
Object.defineProperty(deps, runtimeName, {
|
|
29
|
-
value: `runtime:${version}`,
|
|
30
|
-
enumerable: true,
|
|
31
|
-
writable: true,
|
|
32
|
-
configurable: true,
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
export function applyRuntimeOnFailOverride(manifest, onFailOverride) {
|
|
38
|
-
for (const [enginesFieldName, dependenciesFieldName] of [
|
|
39
|
-
['devEngines', 'devDependencies'],
|
|
40
|
-
['engines', 'dependencies'],
|
|
41
|
-
]) {
|
|
42
|
-
const enginesFieldRuntime = manifest[enginesFieldName]?.runtime;
|
|
43
|
-
if (enginesFieldRuntime == null)
|
|
44
|
-
continue;
|
|
45
|
-
const runtimes = Array.isArray(enginesFieldRuntime) ? enginesFieldRuntime : [enginesFieldRuntime];
|
|
46
|
-
for (const runtime of runtimes) {
|
|
47
|
-
runtime.onFail = onFailOverride;
|
|
48
|
-
}
|
|
49
|
-
if (onFailOverride !== 'download') {
|
|
50
|
-
const deps = manifest[dependenciesFieldName];
|
|
51
|
-
if (deps) {
|
|
52
|
-
for (const runtimeName of RUNTIME_NAMES) {
|
|
53
|
-
if (typeof deps[runtimeName] === 'string' && deps[runtimeName].startsWith('runtime:')) {
|
|
54
|
-
delete deps[runtimeName];
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
convertEnginesRuntimeToDependencies(manifest, enginesFieldName, dependenciesFieldName);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=convertEnginesRuntimeToDependencies.js.map
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export function filterDependenciesByType(manifest, include) {
|
|
2
|
-
return {
|
|
3
|
-
...(include.dependencies ? manifest.dependencies : {}),
|
|
4
|
-
...(include.devDependencies ? manifest.devDependencies : {}),
|
|
5
|
-
...(include.optionalDependencies ? manifest.optionalDependencies : {}),
|
|
6
|
-
};
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=filterDependenciesByType.js.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export function getAllDependenciesFromManifest(pkg, opts) {
|
|
2
|
-
return {
|
|
3
|
-
...pkg.devDependencies,
|
|
4
|
-
...pkg.dependencies,
|
|
5
|
-
...pkg.optionalDependencies,
|
|
6
|
-
...(opts?.autoInstallPeers ? pkg.peerDependencies : {}),
|
|
7
|
-
};
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=getAllDependenciesFromManifest.js.map
|
package/lib/getAllUniqueSpecs.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { getAllDependenciesFromManifest } from './getAllDependenciesFromManifest.js';
|
|
2
|
-
export function getAllUniqueSpecs(manifests) {
|
|
3
|
-
const allSpecs = {};
|
|
4
|
-
const ignored = new Set();
|
|
5
|
-
for (const manifest of manifests) {
|
|
6
|
-
const specs = getAllDependenciesFromManifest(manifest);
|
|
7
|
-
for (const [name, spec] of Object.entries(specs)) {
|
|
8
|
-
if (ignored.has(name))
|
|
9
|
-
continue;
|
|
10
|
-
if (allSpecs[name] != null && allSpecs[name] !== spec || spec.includes(':')) {
|
|
11
|
-
ignored.add(name);
|
|
12
|
-
delete allSpecs[name];
|
|
13
|
-
continue;
|
|
14
|
-
}
|
|
15
|
-
allSpecs[name] = spec;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
return allSpecs;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=getAllUniqueSpecs.js.map
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export function getDependencyTypeFromManifest(manifest, depName) {
|
|
2
|
-
if (manifest.optionalDependencies?.[depName])
|
|
3
|
-
return 'optionalDependencies';
|
|
4
|
-
if (manifest.dependencies?.[depName])
|
|
5
|
-
return 'dependencies';
|
|
6
|
-
if (manifest.devDependencies?.[depName])
|
|
7
|
-
return 'devDependencies';
|
|
8
|
-
if (manifest.peerDependencies?.[depName])
|
|
9
|
-
return 'peerDependencies';
|
|
10
|
-
return null;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=getDependencyTypeFromManifest.js.map
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export function getSpecFromPackageManifest(manifest, depName) {
|
|
2
|
-
return manifest.optionalDependencies?.[depName] ??
|
|
3
|
-
manifest.dependencies?.[depName] ??
|
|
4
|
-
manifest.devDependencies?.[depName] ??
|
|
5
|
-
manifest.peerDependencies?.[depName] ??
|
|
6
|
-
'';
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=getSpecFromPackageManifest.js.map
|
package/lib/index.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Dependencies, IncludedDependencies, ProjectManifest } from '@pnpm/types';
|
|
2
|
-
import { getAllUniqueSpecs } from './getAllUniqueSpecs.js';
|
|
3
|
-
import { getSpecFromPackageManifest } from './getSpecFromPackageManifest.js';
|
|
4
|
-
export * from './convertEnginesRuntimeToDependencies.js';
|
|
5
|
-
export * from './getDependencyTypeFromManifest.js';
|
|
6
|
-
export * from './updateProjectManifestObject.js';
|
|
7
|
-
export { getAllUniqueSpecs, getSpecFromPackageManifest };
|
|
8
|
-
export declare function filterDependenciesByType(manifest: ProjectManifest, include: IncludedDependencies): Dependencies;
|
|
9
|
-
export declare function getAllDependenciesFromManifest(manifest: Pick<ProjectManifest, 'devDependencies' | 'dependencies' | 'optionalDependencies' | 'peerDependencies'>, opts?: {
|
|
10
|
-
autoInstallPeers?: boolean;
|
|
11
|
-
}): Dependencies;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { type DependenciesField, type DependenciesOrPeersField, type PinnedVersion, type ProjectManifest } from '@pnpm/types';
|
|
2
|
-
export interface PackageSpecObject {
|
|
3
|
-
alias: string;
|
|
4
|
-
peer?: boolean;
|
|
5
|
-
bareSpecifier?: string;
|
|
6
|
-
resolvedVersion?: string;
|
|
7
|
-
pinnedVersion?: PinnedVersion;
|
|
8
|
-
saveType?: DependenciesField;
|
|
9
|
-
}
|
|
10
|
-
export declare function createVersionSpecFromResolvedVersion(resolvedVersion: string, pinnedVersion?: PinnedVersion): string | null;
|
|
11
|
-
export declare function updateProjectManifestObject(prefix: string, packageManifest: ProjectManifest, packageSpecs: PackageSpecObject[]): Promise<ProjectManifest>;
|
|
12
|
-
export declare function guessDependencyType(alias: string, manifest: ProjectManifest): DependenciesOrPeersField | undefined;
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { packageManifestLogger } from '@pnpm/core-loggers';
|
|
2
|
-
import { isValidPeerRange } from '@pnpm/deps.peer-range';
|
|
3
|
-
import { DEPENDENCIES_FIELDS, DEPENDENCIES_OR_PEER_FIELDS, } from '@pnpm/types';
|
|
4
|
-
import semver from 'semver';
|
|
5
|
-
function getPeerSpecifier(spec, resolvedVersion, pinnedVersion) {
|
|
6
|
-
if (isValidPeerRange(spec))
|
|
7
|
-
return spec;
|
|
8
|
-
const rangeFromResolved = resolvedVersion ? createVersionSpecFromResolvedVersion(resolvedVersion, pinnedVersion) : null;
|
|
9
|
-
return rangeFromResolved ?? '*';
|
|
10
|
-
}
|
|
11
|
-
export function createVersionSpecFromResolvedVersion(resolvedVersion, pinnedVersion) {
|
|
12
|
-
const parsed = semver.parse(resolvedVersion);
|
|
13
|
-
if (!parsed)
|
|
14
|
-
return null;
|
|
15
|
-
if (parsed.prerelease.length)
|
|
16
|
-
return resolvedVersion;
|
|
17
|
-
switch (pinnedVersion ?? 'major') {
|
|
18
|
-
case 'none':
|
|
19
|
-
case 'major':
|
|
20
|
-
return `^${resolvedVersion}`;
|
|
21
|
-
case 'minor':
|
|
22
|
-
return `~${resolvedVersion}`;
|
|
23
|
-
case 'patch':
|
|
24
|
-
return resolvedVersion;
|
|
25
|
-
default:
|
|
26
|
-
return `^${resolvedVersion}`;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
export async function updateProjectManifestObject(prefix, packageManifest, packageSpecs) {
|
|
30
|
-
for (const packageSpec of packageSpecs) {
|
|
31
|
-
if (packageSpec.saveType) {
|
|
32
|
-
const spec = packageSpec.bareSpecifier ?? findSpec(packageSpec.alias, packageManifest);
|
|
33
|
-
if (spec) {
|
|
34
|
-
packageManifest[packageSpec.saveType] = packageManifest[packageSpec.saveType] ?? {};
|
|
35
|
-
defineDepEntry(packageManifest[packageSpec.saveType], packageSpec.alias, spec);
|
|
36
|
-
for (const deptype of DEPENDENCIES_FIELDS) {
|
|
37
|
-
if (deptype !== packageSpec.saveType) {
|
|
38
|
-
deleteDepEntry(packageManifest[deptype], packageSpec.alias);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (packageSpec.peer === true) {
|
|
42
|
-
packageManifest.peerDependencies = packageManifest.peerDependencies ?? {};
|
|
43
|
-
defineDepEntry(packageManifest.peerDependencies, packageSpec.alias, getPeerSpecifier(spec, packageSpec.resolvedVersion, packageSpec.pinnedVersion));
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
else if (packageSpec.bareSpecifier) {
|
|
48
|
-
const usedDepType = guessDependencyType(packageSpec.alias, packageManifest) ?? 'dependencies';
|
|
49
|
-
if (usedDepType !== 'peerDependencies') {
|
|
50
|
-
packageManifest[usedDepType] = packageManifest[usedDepType] ?? {};
|
|
51
|
-
defineDepEntry(packageManifest[usedDepType], packageSpec.alias, packageSpec.bareSpecifier);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
packageManifestLogger.debug({
|
|
56
|
-
prefix,
|
|
57
|
-
updated: packageManifest,
|
|
58
|
-
});
|
|
59
|
-
return packageManifest;
|
|
60
|
-
}
|
|
61
|
-
function findSpec(alias, manifest) {
|
|
62
|
-
const foundDepType = guessDependencyType(alias, manifest);
|
|
63
|
-
if (foundDepType == null)
|
|
64
|
-
return undefined;
|
|
65
|
-
const deps = manifest[foundDepType];
|
|
66
|
-
return Object.hasOwn(deps, alias) ? deps[alias] : undefined;
|
|
67
|
-
}
|
|
68
|
-
export function guessDependencyType(alias, manifest) {
|
|
69
|
-
return DEPENDENCIES_OR_PEER_FIELDS.find((depField) => {
|
|
70
|
-
const deps = manifest[depField];
|
|
71
|
-
if (deps == null || !Object.hasOwn(deps, alias))
|
|
72
|
-
return false;
|
|
73
|
-
return deps[alias] === '' || Boolean(deps[alias]);
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Write a dependency entry without risking prototype pollution: even when the
|
|
78
|
-
* alias matches a name like `__proto__`, `Object.defineProperty` creates a
|
|
79
|
-
* regular own data property rather than reaching through the setter.
|
|
80
|
-
*/
|
|
81
|
-
function defineDepEntry(target, alias, value) {
|
|
82
|
-
Object.defineProperty(target, alias, {
|
|
83
|
-
value,
|
|
84
|
-
enumerable: true,
|
|
85
|
-
writable: true,
|
|
86
|
-
configurable: true,
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Mirror of `defineDepEntry` for deletes. The `Object.hasOwn` guard keeps the
|
|
91
|
-
* `delete` from reaching into the prototype chain when the alias matches an
|
|
92
|
-
* inherited property like `constructor`.
|
|
93
|
-
*/
|
|
94
|
-
function deleteDepEntry(target, alias) {
|
|
95
|
-
if (target != null && Object.hasOwn(target, alias)) {
|
|
96
|
-
delete target[alias];
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
//# sourceMappingURL=updateProjectManifestObject.js.map
|