@pnpm/pkg-manifest.utils 1100.2.13 → 1100.3.1
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 +25 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/rangeSpecStyle.d.ts +13 -0
- package/lib/rangeSpecStyle.js +30 -0
- package/lib/updateProjectManifestObject.d.ts +3 -3
- package/lib/updateProjectManifestObject.js +6 -15
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @pnpm/manifest-utils
|
|
2
2
|
|
|
3
|
+
## 1100.3.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies:
|
|
8
|
+
- @pnpm/core-loggers@1100.3.2
|
|
9
|
+
- @pnpm/error@1100.1.1
|
|
10
|
+
- @pnpm/types@1101.9.0
|
|
11
|
+
|
|
12
|
+
## 1100.3.0
|
|
13
|
+
|
|
14
|
+
### Minor Changes
|
|
15
|
+
|
|
16
|
+
- Renamed the `PinnedVersion` type to `RangeSpecStyle` and the `pinnedVersion` option fields to `rangeSpecStyle`: the value selects the operator a specifier is saved with, not a pin. `whichVersionIsPinned` is now `inferRangeSpecStyle`, and the new `rangeSpecGranularity` helper collapses the `exact` spelling to its `patch` range width. `@pnpm/types` keeps `PinnedVersion` as a deprecated alias of `RangeSpecStyle`. The rename itself changes no CLI behavior; the `=`-pin handling is described in its own changesets.
|
|
17
|
+
|
|
18
|
+
- The `save-prefix` setting now accepts `=`: newly added dependencies are saved with an explicit `=` operator (`=1.2.3`) instead of the setting being silently treated as the default `^`.
|
|
19
|
+
|
|
20
|
+
### Patch Changes
|
|
21
|
+
|
|
22
|
+
- `pnpm update` keeps the explicit `=` operator of an exact version pin: a dependency saved as `=3.5.1` now updates to `=3.5.2` instead of the bare `3.5.2`. See pnpm/pnpm#13168.
|
|
23
|
+
|
|
24
|
+
- Updated dependencies:
|
|
25
|
+
- @pnpm/core-loggers@1100.3.1
|
|
26
|
+
- @pnpm/types@1101.8.0
|
|
27
|
+
|
|
3
28
|
## 1100.2.13
|
|
4
29
|
|
|
5
30
|
### Patch Changes
|
package/lib/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { getSpecFromPackageManifest } from './getSpecFromPackageManifest.js';
|
|
|
4
4
|
export * from './convertEnginesRuntimeToDependencies.js';
|
|
5
5
|
export * from './getAllDependenciesFromManifest.js';
|
|
6
6
|
export * from './getDependencyTypeFromManifest.js';
|
|
7
|
+
export * from './rangeSpecStyle.js';
|
|
7
8
|
export * from './updateProjectManifestObject.js';
|
|
8
9
|
export { getAllUniqueSpecs, getSpecFromPackageManifest };
|
|
9
10
|
export declare function filterDependenciesByType(manifest: ProjectManifest, include: IncludedDependencies): Dependencies;
|
package/lib/index.js
CHANGED
|
@@ -3,6 +3,7 @@ import { getSpecFromPackageManifest } from './getSpecFromPackageManifest.js';
|
|
|
3
3
|
export * from './convertEnginesRuntimeToDependencies.js';
|
|
4
4
|
export * from './getAllDependenciesFromManifest.js';
|
|
5
5
|
export * from './getDependencyTypeFromManifest.js';
|
|
6
|
+
export * from './rangeSpecStyle.js';
|
|
6
7
|
export * from './updateProjectManifestObject.js';
|
|
7
8
|
export { getAllUniqueSpecs, getSpecFromPackageManifest };
|
|
8
9
|
export function filterDependenciesByType(manifest, include) {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { RangeSpecGranularity, RangeSpecStyle } from '@pnpm/types';
|
|
2
|
+
export declare function rangeSpecGranularity(style: RangeSpecStyle): RangeSpecGranularity;
|
|
3
|
+
/**
|
|
4
|
+
* Interpret the `save-exact` and `save-prefix` settings into a
|
|
5
|
+
* {@link RangeSpecStyle}. `save-exact` (like the empty `save-prefix`) wins
|
|
6
|
+
* and saves the bare version; a `save-prefix` of `=` saves the version with
|
|
7
|
+
* an explicit `=` operator.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getRangeSpecStyle(opts: {
|
|
10
|
+
saveExact?: boolean;
|
|
11
|
+
savePrefix?: string;
|
|
12
|
+
}): RangeSpecStyle;
|
|
13
|
+
export declare function versionWithRangeSpecStyle(version: string, rangeSpecStyle: RangeSpecStyle): string;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export function rangeSpecGranularity(style) {
|
|
2
|
+
return style === 'exact' ? 'patch' : style;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Interpret the `save-exact` and `save-prefix` settings into a
|
|
6
|
+
* {@link RangeSpecStyle}. `save-exact` (like the empty `save-prefix`) wins
|
|
7
|
+
* and saves the bare version; a `save-prefix` of `=` saves the version with
|
|
8
|
+
* an explicit `=` operator.
|
|
9
|
+
*/
|
|
10
|
+
export function getRangeSpecStyle(opts) {
|
|
11
|
+
if (opts.saveExact === true || opts.savePrefix === '')
|
|
12
|
+
return 'patch';
|
|
13
|
+
switch (opts.savePrefix) {
|
|
14
|
+
case '=': return 'exact';
|
|
15
|
+
case '~': return 'minor';
|
|
16
|
+
default: return 'major';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function versionWithRangeSpecStyle(version, rangeSpecStyle) {
|
|
20
|
+
switch (rangeSpecStyle) {
|
|
21
|
+
case 'none':
|
|
22
|
+
case 'major': return `^${version}`;
|
|
23
|
+
case 'minor': return `~${version}`;
|
|
24
|
+
case 'patch': return version;
|
|
25
|
+
case 'exact': return `=${version}`;
|
|
26
|
+
}
|
|
27
|
+
// Unreachable for type-checked callers; fail loudly for untyped JS input.
|
|
28
|
+
throw new Error(`Unknown range spec style: '${String(rangeSpecStyle)}'`);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=rangeSpecStyle.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { type DependenciesField, type DependenciesOrPeersField, type
|
|
1
|
+
import { type DependenciesField, type DependenciesOrPeersField, type ProjectManifest, type RangeSpecStyle } from '@pnpm/types';
|
|
2
2
|
export interface PackageSpecObject {
|
|
3
3
|
alias: string;
|
|
4
4
|
peer?: boolean;
|
|
5
5
|
bareSpecifier?: string;
|
|
6
6
|
resolvedVersion?: string;
|
|
7
|
-
|
|
7
|
+
rangeSpecStyle?: RangeSpecStyle;
|
|
8
8
|
saveType?: DependenciesField;
|
|
9
9
|
}
|
|
10
|
-
export declare function createVersionSpecFromResolvedVersion(resolvedVersion: string,
|
|
10
|
+
export declare function createVersionSpecFromResolvedVersion(resolvedVersion: string, rangeSpecStyle?: RangeSpecStyle): string | null;
|
|
11
11
|
export declare function updateProjectManifestObject(prefix: string, packageManifest: ProjectManifest, packageSpecs: PackageSpecObject[]): Promise<ProjectManifest>;
|
|
12
12
|
export declare function guessDependencyType(alias: string, manifest: ProjectManifest): DependenciesOrPeersField | undefined;
|
|
@@ -2,29 +2,20 @@ import { packageManifestLogger } from '@pnpm/core-loggers';
|
|
|
2
2
|
import { isValidPeerRange } from '@pnpm/deps.peer-range';
|
|
3
3
|
import { DEPENDENCIES_FIELDS, DEPENDENCIES_OR_PEER_FIELDS, } from '@pnpm/types';
|
|
4
4
|
import semver from 'semver';
|
|
5
|
-
|
|
5
|
+
import { versionWithRangeSpecStyle } from './rangeSpecStyle.js';
|
|
6
|
+
function getPeerSpecifier(spec, resolvedVersion, rangeSpecStyle) {
|
|
6
7
|
if (isValidPeerRange(spec))
|
|
7
8
|
return spec;
|
|
8
|
-
const rangeFromResolved = resolvedVersion ? createVersionSpecFromResolvedVersion(resolvedVersion,
|
|
9
|
+
const rangeFromResolved = resolvedVersion ? createVersionSpecFromResolvedVersion(resolvedVersion, rangeSpecStyle) : null;
|
|
9
10
|
return rangeFromResolved ?? '*';
|
|
10
11
|
}
|
|
11
|
-
export function createVersionSpecFromResolvedVersion(resolvedVersion,
|
|
12
|
+
export function createVersionSpecFromResolvedVersion(resolvedVersion, rangeSpecStyle) {
|
|
12
13
|
const parsed = semver.parse(resolvedVersion);
|
|
13
14
|
if (!parsed)
|
|
14
15
|
return null;
|
|
15
16
|
if (parsed.prerelease.length)
|
|
16
17
|
return resolvedVersion;
|
|
17
|
-
|
|
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
|
-
}
|
|
18
|
+
return versionWithRangeSpecStyle(resolvedVersion, rangeSpecStyle ?? 'major');
|
|
28
19
|
}
|
|
29
20
|
export async function updateProjectManifestObject(prefix, packageManifest, packageSpecs) {
|
|
30
21
|
for (const packageSpec of packageSpecs) {
|
|
@@ -40,7 +31,7 @@ export async function updateProjectManifestObject(prefix, packageManifest, packa
|
|
|
40
31
|
}
|
|
41
32
|
if (packageSpec.peer === true) {
|
|
42
33
|
packageManifest.peerDependencies = packageManifest.peerDependencies ?? {};
|
|
43
|
-
defineDepEntry(packageManifest.peerDependencies, packageSpec.alias, getPeerSpecifier(spec, packageSpec.resolvedVersion, packageSpec.
|
|
34
|
+
defineDepEntry(packageManifest.peerDependencies, packageSpec.alias, getPeerSpecifier(spec, packageSpec.resolvedVersion, packageSpec.rangeSpecStyle));
|
|
44
35
|
}
|
|
45
36
|
}
|
|
46
37
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pnpm/pkg-manifest.utils",
|
|
3
|
-
"version": "1100.
|
|
3
|
+
"version": "1100.3.1",
|
|
4
4
|
"description": "Utils for dealing with package manifest",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pnpm",
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
"!*.map"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@pnpm/core-loggers": "1100.3.
|
|
30
|
+
"@pnpm/core-loggers": "1100.3.2",
|
|
31
31
|
"@pnpm/deps.peer-range": "1100.1.1",
|
|
32
|
-
"@pnpm/error": "1100.1.
|
|
33
|
-
"@pnpm/types": "1101.
|
|
32
|
+
"@pnpm/error": "1100.1.1",
|
|
33
|
+
"@pnpm/types": "1101.9.0",
|
|
34
34
|
"semver": "^7.8.5"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
@@ -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.
|
|
42
|
+
"@pnpm/pkg-manifest.utils": "1100.3.1",
|
|
43
43
|
"@types/semver": "7.7.1"
|
|
44
44
|
},
|
|
45
45
|
"engines": {
|