@pnpm/node.resolver 1.0.18 → 1.1.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/lib/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  import { FetchFromRegistry } from '@pnpm/fetching-types';
2
2
  export declare function resolveNodeVersion(fetch: FetchFromRegistry, versionSpec: string, nodeMirrorBaseUrl?: string): Promise<string | null>;
3
+ export declare function resolveNodeVersions(fetch: FetchFromRegistry, versionSpec?: string, nodeMirrorBaseUrl?: string): Promise<string[]>;
package/lib/index.js CHANGED
@@ -3,26 +3,47 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.resolveNodeVersion = void 0;
6
+ exports.resolveNodeVersions = exports.resolveNodeVersion = void 0;
7
7
  const semver_1 = __importDefault(require("semver"));
8
8
  const version_selector_type_1 = __importDefault(require("version-selector-type"));
9
+ const SEMVER_OPTS = {
10
+ includePrerelease: true,
11
+ loose: true,
12
+ };
9
13
  async function resolveNodeVersion(fetch, versionSpec, nodeMirrorBaseUrl) {
10
- const response = await fetch(`${nodeMirrorBaseUrl ?? 'https://nodejs.org/download/release/'}index.json`);
11
- const allVersions = (await response.json());
14
+ const allVersions = await fetchAllVersions(fetch, nodeMirrorBaseUrl);
12
15
  if (versionSpec === 'latest') {
13
- return allVersions[0].version.substring(1);
16
+ return allVersions[0].version;
14
17
  }
15
18
  const { versions, versionRange } = filterVersions(allVersions, versionSpec);
16
- const pickedVersion = semver_1.default.maxSatisfying(versions.map(({ version }) => version), versionRange, { includePrerelease: true, loose: true });
17
- if (!pickedVersion)
18
- return null;
19
- return pickedVersion.substring(1);
19
+ return semver_1.default.maxSatisfying(versions, versionRange, SEMVER_OPTS) ?? null;
20
20
  }
21
21
  exports.resolveNodeVersion = resolveNodeVersion;
22
+ async function resolveNodeVersions(fetch, versionSpec, nodeMirrorBaseUrl) {
23
+ const allVersions = await fetchAllVersions(fetch, nodeMirrorBaseUrl);
24
+ if (!versionSpec) {
25
+ return allVersions.map(({ version }) => version);
26
+ }
27
+ if (versionSpec === 'latest') {
28
+ return [allVersions[0].version];
29
+ }
30
+ const { versions, versionRange } = filterVersions(allVersions, versionSpec);
31
+ return versions.filter(version => semver_1.default.satisfies(version, versionRange, SEMVER_OPTS));
32
+ }
33
+ exports.resolveNodeVersions = resolveNodeVersions;
34
+ async function fetchAllVersions(fetch, nodeMirrorBaseUrl) {
35
+ const response = await fetch(`${nodeMirrorBaseUrl ?? 'https://nodejs.org/download/release/'}index.json`);
36
+ return (await response.json()).map(({ version, lts }) => ({
37
+ version: version.substring(1),
38
+ lts,
39
+ }));
40
+ }
22
41
  function filterVersions(versions, versionSelector) {
23
42
  if (versionSelector === 'lts') {
24
43
  return {
25
- versions: versions.filter(({ lts }) => lts !== false),
44
+ versions: versions
45
+ .filter(({ lts }) => lts !== false)
46
+ .map(({ version }) => version),
26
47
  versionRange: '*',
27
48
  };
28
49
  }
@@ -30,10 +51,15 @@ function filterVersions(versions, versionSelector) {
30
51
  if (vst?.type === 'tag') {
31
52
  const wantedLtsVersion = vst.normalized.toLowerCase();
32
53
  return {
33
- versions: versions.filter(({ lts }) => typeof lts === 'string' && lts.toLowerCase() === wantedLtsVersion),
54
+ versions: versions
55
+ .filter(({ lts }) => typeof lts === 'string' && lts.toLowerCase() === wantedLtsVersion)
56
+ .map(({ version }) => version),
34
57
  versionRange: '*',
35
58
  };
36
59
  }
37
- return { versions, versionRange: versionSelector };
60
+ return {
61
+ versions: versions.map(({ version }) => version),
62
+ versionRange: versionSelector,
63
+ };
38
64
  }
39
65
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AACA,oDAA2B;AAC3B,kFAAuD;AAOhD,KAAK,UAAU,kBAAkB,CACtC,KAAwB,EACxB,WAAmB,EACnB,iBAA0B;IAE1B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,iBAAiB,IAAI,sCAAsC,YAAY,CAAC,CAAA;IACxG,MAAM,WAAW,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAkB,CAAA;IAC5D,IAAI,WAAW,KAAK,QAAQ,EAAE;QAC5B,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;KAC3C;IACD,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IAC3E,MAAM,aAAa,GAAG,gBAAM,CAAC,aAAa,CACxC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACjG,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAA;IAC/B,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;AACnC,CAAC;AAfD,gDAeC;AAED,SAAS,cAAc,CAAE,QAAuB,EAAE,eAAuB;IACvE,IAAI,eAAe,KAAK,KAAK,EAAE;QAC7B,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC;YACrD,YAAY,EAAE,GAAG;SAClB,CAAA;KACF;IACD,MAAM,GAAG,GAAG,IAAA,+BAAmB,EAAC,eAAe,CAAC,CAAA;IAChD,IAAI,GAAG,EAAE,IAAI,KAAK,KAAK,EAAE;QACvB,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,CAAA;QACrD,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,gBAAgB,CAAC;YACzG,YAAY,EAAE,GAAG;SAClB,CAAA;KACF;IACD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,CAAA;AACpD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pnpm/node.resolver",
3
- "version": "1.0.18",
3
+ "version": "1.1.0",
4
4
  "description": "Resolves a Node.js version specifier to an exact Node.js version",
5
5
  "funding": "https://opencollective.com/pnpm",
6
6
  "main": "lib/index.js",
@@ -29,14 +29,14 @@
29
29
  "homepage": "https://github.com/pnpm/pnpm/blob/main/packages/node.resolver#readme",
30
30
  "dependencies": {
31
31
  "@pnpm/fetching-types": "4.0.0",
32
- "@pnpm/node.fetcher": "2.0.2",
32
+ "@pnpm/node.fetcher": "2.0.3",
33
33
  "semver": "^7.3.8",
34
34
  "version-selector-type": "^3.0.0"
35
35
  },
36
36
  "devDependencies": {
37
- "@pnpm/fetch": "6.0.2",
38
- "@pnpm/node.resolver": "1.0.18",
39
- "@types/semver": "7.3.12"
37
+ "@pnpm/fetch": "6.0.3",
38
+ "@pnpm/node.resolver": "1.1.0",
39
+ "@types/semver": "7.3.13"
40
40
  },
41
41
  "scripts": {
42
42
  "lint": "eslint src/**/*.ts test/**/*.ts",