@pnpm/engine.runtime.node-resolver 1101.1.6 → 1101.1.8

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.
@@ -10,4 +10,4 @@ export interface GetNodeArtifactAddressOptions {
10
10
  arch: string;
11
11
  libc?: string;
12
12
  }
13
- export declare function getNodeArtifactAddress({ version, baseUrl, platform, arch, libc }: GetNodeArtifactAddressOptions): NodeArtifactAddress;
13
+ export declare function getNodeArtifactAddress({ version, baseUrl, platform, arch, libc, }: GetNodeArtifactAddressOptions): NodeArtifactAddress;
package/lib/index.js CHANGED
@@ -33,7 +33,7 @@ export async function resolveNodeRuntime(ctx, wantedDependency, opts) {
33
33
  throw new PnpmError('NODEJS_VERSION_NOT_FOUND', `Could not find a Node.js version that satisfies ${versionSpec}`);
34
34
  }
35
35
  const variants = await readNodeAssets(ctx.fetchFromRegistry, nodeMirrorBaseUrl, version, releaseChannel);
36
- const range = version === versionSpec ? version : `^${version}`;
36
+ const range = createNodeRuntimeVersionSpec(versionSpec, version, wantedDependency);
37
37
  return {
38
38
  id: `node@runtime:${version}`,
39
39
  normalizedBareSpecifier: `runtime:${range}`,
@@ -61,6 +61,20 @@ export async function resolveLatestNodeRuntime(ctx, query, _opts) {
61
61
  return {};
62
62
  return { latestManifest: { name: 'node', version } };
63
63
  }
64
+ function createNodeRuntimeVersionSpec(versionSpec, resolvedVersion, wantedDependency) {
65
+ if (resolvedVersion === versionSpec || semver.parse(resolvedVersion)?.prerelease.length) {
66
+ return resolvedVersion;
67
+ }
68
+ const source = wantedDependency.prevSpecifier?.startsWith('runtime:')
69
+ ? wantedDependency.prevSpecifier.substring('runtime:'.length)
70
+ : versionSpec;
71
+ const spec = source.includes('/') ? source.split('/', 2)[1] : source;
72
+ if (spec.startsWith('^'))
73
+ return `^${resolvedVersion}`;
74
+ if (spec.startsWith('~'))
75
+ return `~${resolvedVersion}`;
76
+ return resolvedVersion;
77
+ }
64
78
  async function readNodeAssets(fetch, nodeMirrorBaseUrl, version, releaseChannel) {
65
79
  // The mirror is repository-configurable, so the SHASUMS file's hashes are only
66
80
  // trustworthy once its OpenPGP signature is verified against the Node.js
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pnpm/engine.runtime.node-resolver",
3
- "version": "1101.1.6",
3
+ "version": "1101.1.8",
4
4
  "description": "Resolves a Node.js version specifier to an exact Node.js version",
5
5
  "keywords": [
6
6
  "pnpm",
@@ -29,20 +29,20 @@
29
29
  "!*.map"
30
30
  ],
31
31
  "dependencies": {
32
- "semver": "^7.8.1",
32
+ "semver": "^7.8.4",
33
33
  "version-selector-type": "^3.0.0",
34
- "@pnpm/config.reader": "1101.8.0",
35
- "@pnpm/fetching.types": "1100.0.1",
34
+ "@pnpm/config.reader": "1101.10.0",
36
35
  "@pnpm/error": "1100.0.0",
37
- "@pnpm/crypto.shasums-file": "1100.1.0",
38
- "@pnpm/types": "1101.3.1",
39
- "@pnpm/resolving.resolver-base": "1100.4.1"
36
+ "@pnpm/fetching.types": "1100.0.2",
37
+ "@pnpm/resolving.resolver-base": "1100.4.2",
38
+ "@pnpm/types": "1101.3.2",
39
+ "@pnpm/crypto.shasums-file": "1100.1.1"
40
40
  },
41
41
  "devDependencies": {
42
- "@jest/globals": "30.3.0",
42
+ "@jest/globals": "30.4.1",
43
43
  "@types/semver": "7.7.1",
44
- "@pnpm/engine.runtime.node-resolver": "1101.1.6",
45
- "@pnpm/network.fetch": "1100.1.2"
44
+ "@pnpm/engine.runtime.node-resolver": "1101.1.8",
45
+ "@pnpm/network.fetch": "1100.1.3"
46
46
  },
47
47
  "engines": {
48
48
  "node": ">=22.13"