node-semvers 1.7.3 → 1.8.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/.cache/3e518548def49188754e83e93390ac26.json +1 -0
- package/.cache/5b29244cf59413e77327386593beb199.json +1 -0
- package/dist/cjs/NodeVersions.d.cts +2 -2
- package/dist/cjs/NodeVersions.d.ts +2 -2
- package/dist/cjs/NodeVersions.js +15 -2
- package/dist/cjs/NodeVersions.js.map +1 -1
- package/dist/cjs/cli.js +77 -14
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/constants.d.cts +2 -2
- package/dist/cjs/constants.d.ts +2 -2
- package/dist/cjs/constants.js +6 -6
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/types.d.cts +10 -18
- package/dist/cjs/types.d.ts +10 -18
- package/dist/esm/NodeVersions.d.ts +2 -2
- package/dist/esm/NodeVersions.js +10 -2
- package/dist/esm/NodeVersions.js.map +1 -1
- package/dist/esm/cli.js +35 -14
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/constants.d.ts +2 -2
- package/dist/esm/constants.js +8 -6
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/types.d.ts +10 -18
- package/dist/esm/types.js.map +1 -1
- package/package.json +9 -4
- package/assets/constants.cjs +0 -16
- package/assets/postinstall.cjs +0 -51
- package/dist/cjs/assets/constants.cjs +0 -8
- package/dist/cjs/assets/constants.cjs.map +0 -1
- package/dist/cjs/assets/constants.d.cts +0 -1
- package/dist/cjs/assets/postinstall.cjs +0 -35
- package/dist/cjs/assets/postinstall.cjs.map +0 -1
- package/dist/cjs/assets/postinstall.d.cts +0 -1
- package/dist/esm/assets/constants.cjs +0 -6
- package/dist/esm/assets/constants.cjs.map +0 -1
- package/dist/esm/assets/constants.d.cts +0 -1
- package/dist/esm/assets/postinstall.cjs +0 -33
- package/dist/esm/assets/postinstall.cjs.map +0 -1
- package/dist/esm/assets/postinstall.d.cts +0 -1
package/dist/cjs/types.d.cts
CHANGED
|
@@ -10,17 +10,21 @@ export interface ResolveOptions {
|
|
|
10
10
|
range?: string;
|
|
11
11
|
path?: string;
|
|
12
12
|
}
|
|
13
|
-
export interface
|
|
13
|
+
export interface VersionRaw {
|
|
14
14
|
version: string;
|
|
15
|
-
name: string;
|
|
16
|
-
semver: string;
|
|
17
15
|
date: string;
|
|
16
|
+
lts: string | false;
|
|
17
|
+
}
|
|
18
|
+
export interface ScheduleRaw {
|
|
18
19
|
start: string;
|
|
19
20
|
end: string;
|
|
20
|
-
|
|
21
|
-
lts: string;
|
|
21
|
+
lts?: string;
|
|
22
22
|
maintenance?: string;
|
|
23
|
+
codename?: string;
|
|
23
24
|
}
|
|
25
|
+
export type ScheduleRawMap = {
|
|
26
|
+
[name: string]: ScheduleRaw;
|
|
27
|
+
};
|
|
24
28
|
export interface Schedule {
|
|
25
29
|
name: string;
|
|
26
30
|
semver: string;
|
|
@@ -31,18 +35,6 @@ export interface Schedule {
|
|
|
31
35
|
lts?: Date;
|
|
32
36
|
maintenance?: Date;
|
|
33
37
|
}
|
|
34
|
-
export interface VersionRaw {
|
|
35
|
-
version: string;
|
|
36
|
-
name: string;
|
|
37
|
-
semver: string;
|
|
38
|
-
major: number;
|
|
39
|
-
minor: number;
|
|
40
|
-
patch: number;
|
|
41
|
-
lts: string;
|
|
42
|
-
date: Date;
|
|
43
|
-
raw: ScheduleRaw;
|
|
44
|
-
codename: string;
|
|
45
|
-
}
|
|
46
38
|
export interface Version {
|
|
47
39
|
version: string;
|
|
48
40
|
name: string;
|
|
@@ -50,7 +42,7 @@ export interface Version {
|
|
|
50
42
|
major: number;
|
|
51
43
|
minor: number;
|
|
52
44
|
patch: number;
|
|
53
|
-
lts: string;
|
|
45
|
+
lts: string | false;
|
|
54
46
|
date: Date;
|
|
55
47
|
raw: VersionRaw;
|
|
56
48
|
codename: string;
|
package/dist/cjs/types.d.ts
CHANGED
|
@@ -10,17 +10,21 @@ export interface ResolveOptions {
|
|
|
10
10
|
range?: string;
|
|
11
11
|
path?: string;
|
|
12
12
|
}
|
|
13
|
-
export interface
|
|
13
|
+
export interface VersionRaw {
|
|
14
14
|
version: string;
|
|
15
|
-
name: string;
|
|
16
|
-
semver: string;
|
|
17
15
|
date: string;
|
|
16
|
+
lts: string | false;
|
|
17
|
+
}
|
|
18
|
+
export interface ScheduleRaw {
|
|
18
19
|
start: string;
|
|
19
20
|
end: string;
|
|
20
|
-
|
|
21
|
-
lts: string;
|
|
21
|
+
lts?: string;
|
|
22
22
|
maintenance?: string;
|
|
23
|
+
codename?: string;
|
|
23
24
|
}
|
|
25
|
+
export type ScheduleRawMap = {
|
|
26
|
+
[name: string]: ScheduleRaw;
|
|
27
|
+
};
|
|
24
28
|
export interface Schedule {
|
|
25
29
|
name: string;
|
|
26
30
|
semver: string;
|
|
@@ -31,18 +35,6 @@ export interface Schedule {
|
|
|
31
35
|
lts?: Date;
|
|
32
36
|
maintenance?: Date;
|
|
33
37
|
}
|
|
34
|
-
export interface VersionRaw {
|
|
35
|
-
version: string;
|
|
36
|
-
name: string;
|
|
37
|
-
semver: string;
|
|
38
|
-
major: number;
|
|
39
|
-
minor: number;
|
|
40
|
-
patch: number;
|
|
41
|
-
lts: string;
|
|
42
|
-
date: Date;
|
|
43
|
-
raw: ScheduleRaw;
|
|
44
|
-
codename: string;
|
|
45
|
-
}
|
|
46
38
|
export interface Version {
|
|
47
39
|
version: string;
|
|
48
40
|
name: string;
|
|
@@ -50,7 +42,7 @@ export interface Version {
|
|
|
50
42
|
major: number;
|
|
51
43
|
minor: number;
|
|
52
44
|
patch: number;
|
|
53
|
-
lts: string;
|
|
45
|
+
lts: string | false;
|
|
54
46
|
date: Date;
|
|
55
47
|
raw: VersionRaw;
|
|
56
48
|
codename: string;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { LoadError, LoadOptions, ResolveOptions, Schedule,
|
|
1
|
+
import type { LoadError, LoadOptions, ResolveOptions, Schedule, ScheduleRawMap, Version, VersionRaw } from './types.js';
|
|
2
2
|
export type LoadCallback = (error?: LoadError, semvers?: NodeVersions) => void;
|
|
3
3
|
export default class NodeVersions {
|
|
4
4
|
versions: Version[];
|
|
5
5
|
schedules: Schedule[];
|
|
6
|
-
constructor(versions: VersionRaw[], schedule:
|
|
6
|
+
constructor(versions: VersionRaw[], schedule: ScheduleRawMap);
|
|
7
7
|
static load(callback: LoadCallback): void;
|
|
8
8
|
static load(options: LoadOptions, callback: LoadCallback): void;
|
|
9
9
|
static load(options?: LoadOptions): Promise<NodeVersions>;
|
package/dist/esm/NodeVersions.js
CHANGED
|
@@ -7,12 +7,20 @@ import match from './lib/match.js';
|
|
|
7
7
|
import normalizeSchedule from './lib/normalizeSchedule.js';
|
|
8
8
|
import normalizeVersion from './lib/normalizeVersion.js';
|
|
9
9
|
import parseExpression from './parseExpression/index.js';
|
|
10
|
+
// Only these fields are read, and the cache ships in the package, so store nothing else
|
|
11
|
+
const cacheOptions = {
|
|
12
|
+
transform: (body, endpoint)=>endpoint === DISTS_URL && Array.isArray(body) ? body.map(({ version, date, lts })=>({
|
|
13
|
+
version,
|
|
14
|
+
date,
|
|
15
|
+
lts
|
|
16
|
+
})) : body
|
|
17
|
+
};
|
|
10
18
|
let NodeVersions = class NodeVersions {
|
|
11
19
|
static load(options, callback) {
|
|
12
20
|
callback = typeof options === 'function' ? options : callback;
|
|
13
21
|
options = typeof options === 'function' ? {} : options || {};
|
|
14
22
|
function worker(options, callback) {
|
|
15
|
-
const cache = new Cache(options.cachePath || CACHE_PATH);
|
|
23
|
+
const cache = new Cache(options.cachePath || CACHE_PATH, cacheOptions);
|
|
16
24
|
cache.get(DISTS_URL, (err, versions)=>{
|
|
17
25
|
if (err) return callback(err);
|
|
18
26
|
cache.get(SCHEDULES_URL, (err, schedule)=>{
|
|
@@ -28,7 +36,7 @@ let NodeVersions = class NodeVersions {
|
|
|
28
36
|
}));
|
|
29
37
|
}
|
|
30
38
|
static loadSync(options) {
|
|
31
|
-
const cache = new Cache((options === null || options === void 0 ? void 0 : options.cachePath) || CACHE_PATH);
|
|
39
|
+
const cache = new Cache((options === null || options === void 0 ? void 0 : options.cachePath) || CACHE_PATH, cacheOptions);
|
|
32
40
|
const versions = cache.getSync(DISTS_URL);
|
|
33
41
|
const schedule = cache.getSync(SCHEDULES_URL);
|
|
34
42
|
if (!versions || !schedule) return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/NodeVersions.ts"],"sourcesContent":["import Cache from 'fetch-json-cache';\nimport semver from 'semver';\n\nimport { CACHE_PATH, DISTS_URL, SCHEDULES_URL } from './constants.ts';\nimport { major, minor } from './lib/keyFunctions.ts';\nimport { even, odd } from './lib/lineFunctions.ts';\nimport match from './lib/match.ts';\nimport normalizeSchedule from './lib/normalizeSchedule.ts';\nimport normalizeVersion from './lib/normalizeVersion.ts';\nimport parseExpression from './parseExpression/index.ts';\n\nimport type { LoadError, LoadOptions, ResolveOptions, Schedule, ScheduleRaw, Version, VersionRaw } from './types.ts';\n\nexport type LoadCallback = (error?: LoadError, semvers?: NodeVersions) => void;\n\nexport default class NodeVersions {\n versions: Version[];\n schedules: Schedule[];\n\n constructor(versions: VersionRaw[], schedule: ScheduleRaw[]) {\n if (!versions) throw new Error('Missing option: versions');\n if (!schedule) throw new Error('Missing option: schedule');\n\n this.schedules = [];\n for (const name in schedule) this.schedules.push(normalizeSchedule(name, schedule[name]));\n this.schedules = this.schedules.sort((a, b) => (semver.gt(semver.coerce(a.semver)?.version ?? '0.0.0', semver.coerce(b.semver)?.version ?? '0.0.0') ? 1 : -1));\n\n this.versions = [];\n for (let index = 0; index < versions.length; index++) this.versions.push(normalizeVersion(versions[index], this.schedules));\n this.versions = this.versions.sort((a, b) => (semver.gt(a.semver, b.semver) ? -1 : 1));\n }\n\n static load(callback: LoadCallback): void;\n static load(options: LoadOptions, callback: LoadCallback): void;\n static load(options?: LoadOptions): Promise<NodeVersions>;\n static load(options?: LoadOptions | LoadCallback, callback?: LoadCallback): void | Promise<NodeVersions> {\n callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : ((options || {}) as LoadOptions);\n\n function worker(options: LoadOptions, callback: LoadCallback) {\n const cache = new Cache(options.cachePath || CACHE_PATH);\n cache.get<VersionRaw[]>(DISTS_URL, (err, versions) => {\n if (err) return callback(err);\n\n cache.get<ScheduleRaw[]>(SCHEDULES_URL, (err, schedule) => {\n if (err || !versions || !schedule) return callback(err ?? new Error('Missing data'));\n callback(undefined, new NodeVersions(versions, schedule));\n });\n });\n }\n\n if (typeof callback === 'function') return worker(options, callback);\n return new Promise((resolve, reject) =>\n worker(options, (err?: LoadError, versions?: NodeVersions) => {\n if (err || !versions) return reject(err ?? new Error('No versions returned'));\n resolve(versions);\n })\n );\n }\n\n static loadSync(options?: LoadOptions): NodeVersions | null {\n const cache = new Cache(options?.cachePath || CACHE_PATH);\n const versions = cache.getSync<VersionRaw[]>(DISTS_URL);\n const schedule = cache.getSync<ScheduleRaw[]>(SCHEDULES_URL);\n if (!versions || !schedule) return null;\n return new NodeVersions(versions, schedule);\n }\n\n resolve(expression: string | number | Date, options?: ResolveOptions): string | string[] | Version | Version[] | null {\n options = options || {};\n const path = options.path || 'version';\n\n // normalize\n if (typeof expression === 'number') expression = `${expression}`;\n if (typeof expression !== 'string') return null;\n expression = expression.trim();\n\n // single result, try a match\n const query = parseExpression.call(this, expression, options.now || new Date());\n if (query) {\n let version: Version | null = null;\n for (let index = 0; index < this.versions.length; index++) {\n const test = this.versions[index];\n if (options.now && options.now < test.date) continue;\n if (!match(test as unknown as Record<string, unknown>, query as unknown as Record<string, unknown>)) continue;\n version = test;\n break;\n }\n if (version) return (version as unknown as Record<string, unknown>)[path] as string | Version;\n }\n\n // filtered expression\n const range = options.range || '';\n const filters: { lts: boolean; key: ((v: Version) => string) | undefined; line: ((v: Version) => boolean) | undefined } = {\n lts: !!~range.indexOf('lts'),\n key: undefined,\n line: undefined,\n };\n filters.key = ~range.indexOf('major') ? major : ~range.indexOf('minor') ? minor : undefined;\n filters.line = ~range.indexOf('even') ? even : ~range.indexOf('odd') ? odd : undefined;\n\n const results: unknown[] = [];\n const founds: Record<string, boolean> = {};\n\n for (let index = 0; index < this.versions.length; index++) {\n const test = this.versions[index];\n if (options.now && options.now < test.date) continue;\n if (filters.lts && !test.lts) continue;\n if (filters.line && !filters.line(test)) continue;\n if (!semver.satisfies(test.semver, expression)) continue;\n if (filters.key) {\n const k = filters.key(test);\n if (founds[k]) continue;\n founds[k] = true;\n }\n results.unshift((test as unknown as Record<string, unknown>)[path]);\n }\n return results as string[];\n }\n}\n"],"names":["Cache","semver","CACHE_PATH","DISTS_URL","SCHEDULES_URL","major","minor","even","odd","match","normalizeSchedule","normalizeVersion","parseExpression","NodeVersions","load","options","callback","worker","cache","cachePath","get","err","versions","schedule","Error","undefined","Promise","resolve","reject","loadSync","getSync","expression","path","trim","query","call","now","Date","version","index","length","test","date","range","filters","lts","indexOf","key","line","results","founds","satisfies","k","unshift","schedules","name","push","sort","a","b","gt","coerce"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/NodeVersions.ts"],"sourcesContent":["import Cache, { type CacheOptions } from 'fetch-json-cache';\nimport semver from 'semver';\n\nimport { CACHE_PATH, DISTS_URL, SCHEDULES_URL } from './constants.ts';\nimport { major, minor } from './lib/keyFunctions.ts';\nimport { even, odd } from './lib/lineFunctions.ts';\nimport match from './lib/match.ts';\nimport normalizeSchedule from './lib/normalizeSchedule.ts';\nimport normalizeVersion from './lib/normalizeVersion.ts';\nimport parseExpression from './parseExpression/index.ts';\n\nimport type { LoadError, LoadOptions, ResolveOptions, Schedule, ScheduleRawMap, Version, VersionRaw } from './types.ts';\n\nexport type LoadCallback = (error?: LoadError, semvers?: NodeVersions) => void;\n\ntype Wire = VersionRaw[] | ScheduleRawMap;\n\n// Only these fields are read, and the cache ships in the package, so store nothing else\nconst cacheOptions: CacheOptions<Wire, Wire> = {\n transform: (body, endpoint) => (endpoint === DISTS_URL && Array.isArray(body) ? body.map(({ version, date, lts }) => ({ version, date, lts })) : body),\n};\n\nexport default class NodeVersions {\n versions: Version[];\n schedules: Schedule[];\n\n constructor(versions: VersionRaw[], schedule: ScheduleRawMap) {\n if (!versions) throw new Error('Missing option: versions');\n if (!schedule) throw new Error('Missing option: schedule');\n\n this.schedules = [];\n for (const name in schedule) this.schedules.push(normalizeSchedule(name, schedule[name]));\n this.schedules = this.schedules.sort((a, b) => (semver.gt(semver.coerce(a.semver)?.version ?? '0.0.0', semver.coerce(b.semver)?.version ?? '0.0.0') ? 1 : -1));\n\n this.versions = [];\n for (let index = 0; index < versions.length; index++) this.versions.push(normalizeVersion(versions[index], this.schedules));\n this.versions = this.versions.sort((a, b) => (semver.gt(a.semver, b.semver) ? -1 : 1));\n }\n\n static load(callback: LoadCallback): void;\n static load(options: LoadOptions, callback: LoadCallback): void;\n static load(options?: LoadOptions): Promise<NodeVersions>;\n static load(options?: LoadOptions | LoadCallback, callback?: LoadCallback): void | Promise<NodeVersions> {\n callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : ((options || {}) as LoadOptions);\n\n function worker(options: LoadOptions, callback: LoadCallback) {\n const cache = new Cache(options.cachePath || CACHE_PATH, cacheOptions);\n cache.get<VersionRaw[]>(DISTS_URL, (err, versions) => {\n if (err) return callback(err);\n\n cache.get<ScheduleRawMap>(SCHEDULES_URL, (err, schedule) => {\n if (err || !versions || !schedule) return callback(err ?? new Error('Missing data'));\n callback(undefined, new NodeVersions(versions, schedule));\n });\n });\n }\n\n if (typeof callback === 'function') return worker(options, callback);\n return new Promise((resolve, reject) =>\n worker(options, (err?: LoadError, versions?: NodeVersions) => {\n if (err || !versions) return reject(err ?? new Error('No versions returned'));\n resolve(versions);\n })\n );\n }\n\n static loadSync(options?: LoadOptions): NodeVersions | null {\n const cache = new Cache(options?.cachePath || CACHE_PATH, cacheOptions);\n const versions = cache.getSync<VersionRaw[]>(DISTS_URL);\n const schedule = cache.getSync<ScheduleRawMap>(SCHEDULES_URL);\n if (!versions || !schedule) return null;\n return new NodeVersions(versions, schedule);\n }\n\n resolve(expression: string | number | Date, options?: ResolveOptions): string | string[] | Version | Version[] | null {\n options = options || {};\n const path = options.path || 'version';\n\n // normalize\n if (typeof expression === 'number') expression = `${expression}`;\n if (typeof expression !== 'string') return null;\n expression = expression.trim();\n\n // single result, try a match\n const query = parseExpression.call(this, expression, options.now || new Date());\n if (query) {\n let version: Version | null = null;\n for (let index = 0; index < this.versions.length; index++) {\n const test = this.versions[index];\n if (options.now && options.now < test.date) continue;\n if (!match(test as unknown as Record<string, unknown>, query as unknown as Record<string, unknown>)) continue;\n version = test;\n break;\n }\n if (version) return (version as unknown as Record<string, unknown>)[path] as string | Version;\n }\n\n // filtered expression\n const range = options.range || '';\n const filters: { lts: boolean; key: ((v: Version) => string) | undefined; line: ((v: Version) => boolean) | undefined } = {\n lts: !!~range.indexOf('lts'),\n key: undefined,\n line: undefined,\n };\n filters.key = ~range.indexOf('major') ? major : ~range.indexOf('minor') ? minor : undefined;\n filters.line = ~range.indexOf('even') ? even : ~range.indexOf('odd') ? odd : undefined;\n\n const results: unknown[] = [];\n const founds: Record<string, boolean> = {};\n\n for (let index = 0; index < this.versions.length; index++) {\n const test = this.versions[index];\n if (options.now && options.now < test.date) continue;\n if (filters.lts && !test.lts) continue;\n if (filters.line && !filters.line(test)) continue;\n if (!semver.satisfies(test.semver, expression)) continue;\n if (filters.key) {\n const k = filters.key(test);\n if (founds[k]) continue;\n founds[k] = true;\n }\n results.unshift((test as unknown as Record<string, unknown>)[path]);\n }\n return results as string[];\n }\n}\n"],"names":["Cache","semver","CACHE_PATH","DISTS_URL","SCHEDULES_URL","major","minor","even","odd","match","normalizeSchedule","normalizeVersion","parseExpression","cacheOptions","transform","body","endpoint","Array","isArray","map","version","date","lts","NodeVersions","load","options","callback","worker","cache","cachePath","get","err","versions","schedule","Error","undefined","Promise","resolve","reject","loadSync","getSync","expression","path","trim","query","call","now","Date","index","length","test","range","filters","indexOf","key","line","results","founds","satisfies","k","unshift","schedules","name","push","sort","a","b","gt","coerce"],"mappings":"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"}
|
package/dist/esm/cli.js
CHANGED
|
@@ -3,7 +3,6 @@ import fs from 'fs';
|
|
|
3
3
|
import getopts from 'getopts-compat';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import url from 'url';
|
|
6
|
-
import NodeVersions from './index.js';
|
|
7
6
|
// biome-ignore lint/suspicious/noShadowRestrictedNames: Legacy
|
|
8
7
|
import isNaN from './lib/isNaN.js';
|
|
9
8
|
const isArray = Array.isArray || ((x)=>Object.prototype.toString.call(x) === '[object Array]');
|
|
@@ -75,20 +74,42 @@ export default ((argv, name)=>{
|
|
|
75
74
|
function stringify(value) {
|
|
76
75
|
return typeof value === 'string' ? value : JSON.stringify(value);
|
|
77
76
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
// deferred: index.ts pulls fetch-json-cache/semver. require() cannot load this ESM sibling below
|
|
78
|
+
// Node 20.19 (require(esm)), so the ESM half needs a real dynamic import; the CJS half's sibling
|
|
79
|
+
// is genuine CommonJS, so a plain synchronous require avoids depending on Promise, which isn't
|
|
80
|
+
// global before Node 0.12.
|
|
81
|
+
loadIndex((err, NodeVersions)=>{
|
|
82
|
+
if (err || !NodeVersions) {
|
|
83
|
+
console.log(err ? err.message : 'Failed to load node-semvers');
|
|
81
84
|
return exit(ERROR_CODE);
|
|
82
85
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
86
|
+
NodeVersions.load(options, (err, semvers)=>{
|
|
87
|
+
if (err) {
|
|
88
|
+
console.log(err.message);
|
|
89
|
+
return exit(ERROR_CODE);
|
|
90
|
+
}
|
|
91
|
+
const version = semvers === null || semvers === void 0 ? void 0 : semvers.resolve(args[0], options);
|
|
92
|
+
if (!version || isArray(version) && !version.length) {
|
|
93
|
+
console.log(`Unrecognized: ${args[0]}`);
|
|
94
|
+
return exit(ERROR_CODE);
|
|
95
|
+
}
|
|
96
|
+
console.log('versions:');
|
|
97
|
+
if (isArray(version)) {
|
|
98
|
+
for(let index = 0; index < version.length; index++)console.log(stringify(version[index]));
|
|
99
|
+
} else console.log(stringify(version));
|
|
100
|
+
exit(0);
|
|
101
|
+
});
|
|
93
102
|
});
|
|
94
103
|
});
|
|
104
|
+
function loadIndex(callback) {
|
|
105
|
+
if (typeof require === 'undefined') {
|
|
106
|
+
import('./index.js').then((mod)=>callback(null, mod.default || mod)).catch((err)=>callback(err instanceof Error ? err : new Error(String(err))));
|
|
107
|
+
} else {
|
|
108
|
+
try {
|
|
109
|
+
const mod = require('./index.js');
|
|
110
|
+
callback(null, mod.default || mod);
|
|
111
|
+
} catch (err) {
|
|
112
|
+
callback(err instanceof Error ? err : new Error(String(err)));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
package/dist/esm/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/cli.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport getopts from 'getopts-compat';\nimport path from 'path';\nimport url from 'url';\nimport
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/cli.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport getopts from 'getopts-compat';\nimport path from 'path';\nimport url from 'url';\nimport type NodeVersionsClass from './index.ts';\nimport type { LoadOptions, ResolveOptions } from './index.ts';\n// biome-ignore lint/suspicious/noShadowRestrictedNames: Legacy\nimport isNaN from './lib/isNaN.ts';\n\nconst isArray = Array.isArray || ((x) => Object.prototype.toString.call(x) === '[object Array]');\n\nconst ERROR_CODE = 11;\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\n\nfunction getVersion(): string {\n const pkgPath = path.join(__dirname, '..', '..', 'package.json');\n return JSON.parse(fs.readFileSync(pkgPath, 'utf8')).version;\n}\n\nfunction printHelp(name: string): void {\n const version = getVersion();\n console.log(`${name} v${version}`);\n console.log('');\n console.log(`Usage: ${name} [options] <version-string>`);\n console.log('');\n console.log('Version Strings:');\n console.log('Any command that calls for a version can be provided any of the');\n console.log('following \"version-ish\" identifies:');\n console.log('');\n console.log('- x.y.z A specific SemVer tuple');\n console.log('- x.y Major and minor version number');\n console.log('- x Just a major version number');\n console.log('- lts The most recent LTS (long-term support) node version');\n console.log('- lts/<name> The latest in a named LTS set. (argon, boron, etc.)');\n console.log('- lts/* Same as just \"lts\"');\n console.log('- latest The most recent (non-LTS) version');\n console.log('- stable Backwards-compatible alias for \"lts\"');\n console.log('- [expression] Engine and semver module expression like \"10.1.x || >=12.0.0\"');\n console.log('');\n console.log('Options:');\n console.log(' -p, --path <path> Path within version including raw for unprocessed version');\n console.log(' -r, --range <range> Range type of major, minor, or patch with filters of lts, even, odd');\n console.log(' -n, --now <date> Use a specific time as a Date.parse');\n console.log(' -v, --version Show version number');\n console.log(' -h, --help Show this help message');\n}\n\nexport default (argv: string[], name?: string): void => {\n const cliName = name || 'nsv';\n const options = getopts(argv, {\n alias: { path: 'p', range: 'r', now: 'n', version: 'v', help: 'h' },\n boolean: ['version', 'help'],\n });\n\n if (options.version) {\n console.log(getVersion());\n exit(0);\n return;\n }\n\n if (options.help) {\n printHelp(cliName);\n exit(0);\n return;\n }\n\n if (typeof options.now !== 'undefined') options.now = new Date(isNaN(+options.now) ? Date.parse(options.now) : +options.now);\n\n const args = options._;\n if (args.length < 1) {\n console.log(`Missing version string. Example usage: ${cliName} [version string]. Use ${cliName} --help for information on version strings`);\n exit(ERROR_CODE);\n return;\n }\n\n function stringify(value: unknown) {\n return typeof value === 'string' ? value : JSON.stringify(value);\n }\n\n // deferred: index.ts pulls fetch-json-cache/semver. require() cannot load this ESM sibling below\n // Node 20.19 (require(esm)), so the ESM half needs a real dynamic import; the CJS half's sibling\n // is genuine CommonJS, so a plain synchronous require avoids depending on Promise, which isn't\n // global before Node 0.12.\n loadIndex((err, NodeVersions) => {\n if (err || !NodeVersions) {\n console.log(err ? err.message : 'Failed to load node-semvers');\n return exit(ERROR_CODE);\n }\n\n NodeVersions.load(options as LoadOptions, (err, semvers) => {\n if (err) {\n console.log(err.message);\n return exit(ERROR_CODE);\n }\n\n const version = semvers?.resolve(args[0], options as ResolveOptions);\n if (!version || (isArray(version) && !(version as string[]).length)) {\n console.log(`Unrecognized: ${args[0]}`);\n return exit(ERROR_CODE);\n }\n\n console.log('versions:');\n if (isArray(version)) {\n for (let index = 0; index < (version as string[]).length; index++) console.log(stringify(version[index]));\n } else console.log(stringify(version));\n exit(0);\n });\n });\n};\n\nfunction loadIndex(callback: (err: Error | null, NodeVersions?: typeof NodeVersionsClass) => void): void {\n if (typeof require === 'undefined') {\n import('./index.js').then((mod) => callback(null, mod.default || mod)).catch((err) => callback(err instanceof Error ? err : new Error(String(err))));\n } else {\n try {\n const mod = require('./index.js');\n callback(null, mod.default || mod);\n } catch (err) {\n callback(err instanceof Error ? err : new Error(String(err)));\n }\n }\n}\n"],"names":["exit","fs","getopts","path","url","isNaN","isArray","Array","x","Object","prototype","toString","call","ERROR_CODE","__dirname","dirname","__filename","fileURLToPath","getVersion","pkgPath","join","JSON","parse","readFileSync","version","printHelp","name","console","log","argv","cliName","options","alias","range","now","help","boolean","Date","args","_","length","stringify","value","loadIndex","err","NodeVersions","message","load","semvers","resolve","index","callback","require","then","mod","default","catch","Error","String"],"mappings":"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"}
|
package/dist/esm/constants.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export declare const CACHE_PATH: string;
|
|
2
|
-
export declare const DISTS_URL
|
|
3
|
-
export declare const SCHEDULES_URL
|
|
2
|
+
export declare const DISTS_URL = "https://nodejs.org/dist/index.json";
|
|
3
|
+
export declare const SCHEDULES_URL = "https://raw.githubusercontent.com/nodejs/Release/master/schedule.json";
|
package/dist/esm/constants.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export const
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import url from 'url';
|
|
3
|
+
const __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));
|
|
4
|
+
// Seeded at build time by scripts/generate-cache.mjs and shipped in the package, so loadSync works
|
|
5
|
+
// on a fresh install. Refreshed at runtime by fetch-json-cache's etag revalidation.
|
|
6
|
+
export const CACHE_PATH = path.join(__dirname, '..', '..', '.cache');
|
|
7
|
+
export const DISTS_URL = 'https://nodejs.org/dist/index.json';
|
|
8
|
+
export const SCHEDULES_URL = 'https://raw.githubusercontent.com/nodejs/Release/master/schedule.json';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/constants.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/constants.ts"],"sourcesContent":["import path from 'path';\nimport url from 'url';\n\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\n\n// Seeded at build time by scripts/generate-cache.mjs and shipped in the package, so loadSync works\n// on a fresh install. Refreshed at runtime by fetch-json-cache's etag revalidation.\nexport const CACHE_PATH = path.join(__dirname, '..', '..', '.cache');\nexport const DISTS_URL = 'https://nodejs.org/dist/index.json';\nexport const SCHEDULES_URL = 'https://raw.githubusercontent.com/nodejs/Release/master/schedule.json';\n"],"names":["path","url","__dirname","dirname","__filename","fileURLToPath","CACHE_PATH","join","DISTS_URL","SCHEDULES_URL"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,SAAS,MAAM;AAEtB,MAAMC,YAAYF,KAAKG,OAAO,CAAC,OAAOC,eAAe,cAAcA,aAAaH,IAAII,aAAa,CAAC,YAAYJ,GAAG;AAEjH,mGAAmG;AACnG,oFAAoF;AACpF,OAAO,MAAMK,aAAaN,KAAKO,IAAI,CAACL,WAAW,MAAM,MAAM,UAAU;AACrE,OAAO,MAAMM,YAAY,qCAAqC;AAC9D,OAAO,MAAMC,gBAAgB,wEAAwE"}
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -10,17 +10,21 @@ export interface ResolveOptions {
|
|
|
10
10
|
range?: string;
|
|
11
11
|
path?: string;
|
|
12
12
|
}
|
|
13
|
-
export interface
|
|
13
|
+
export interface VersionRaw {
|
|
14
14
|
version: string;
|
|
15
|
-
name: string;
|
|
16
|
-
semver: string;
|
|
17
15
|
date: string;
|
|
16
|
+
lts: string | false;
|
|
17
|
+
}
|
|
18
|
+
export interface ScheduleRaw {
|
|
18
19
|
start: string;
|
|
19
20
|
end: string;
|
|
20
|
-
|
|
21
|
-
lts: string;
|
|
21
|
+
lts?: string;
|
|
22
22
|
maintenance?: string;
|
|
23
|
+
codename?: string;
|
|
23
24
|
}
|
|
25
|
+
export type ScheduleRawMap = {
|
|
26
|
+
[name: string]: ScheduleRaw;
|
|
27
|
+
};
|
|
24
28
|
export interface Schedule {
|
|
25
29
|
name: string;
|
|
26
30
|
semver: string;
|
|
@@ -31,18 +35,6 @@ export interface Schedule {
|
|
|
31
35
|
lts?: Date;
|
|
32
36
|
maintenance?: Date;
|
|
33
37
|
}
|
|
34
|
-
export interface VersionRaw {
|
|
35
|
-
version: string;
|
|
36
|
-
name: string;
|
|
37
|
-
semver: string;
|
|
38
|
-
major: number;
|
|
39
|
-
minor: number;
|
|
40
|
-
patch: number;
|
|
41
|
-
lts: string;
|
|
42
|
-
date: Date;
|
|
43
|
-
raw: ScheduleRaw;
|
|
44
|
-
codename: string;
|
|
45
|
-
}
|
|
46
38
|
export interface Version {
|
|
47
39
|
version: string;
|
|
48
40
|
name: string;
|
|
@@ -50,7 +42,7 @@ export interface Version {
|
|
|
50
42
|
major: number;
|
|
51
43
|
minor: number;
|
|
52
44
|
patch: number;
|
|
53
|
-
lts: string;
|
|
45
|
+
lts: string | false;
|
|
54
46
|
date: Date;
|
|
55
47
|
raw: VersionRaw;
|
|
56
48
|
codename: string;
|
package/dist/esm/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/types.ts"],"sourcesContent":["export interface LoadOptions {\n cachePath?: string;\n now?: Date;\n}\n\nexport interface LoadError extends Error {\n code?: number;\n}\n\nexport interface ResolveOptions {\n now?: Date;\n range?: string;\n path?: string;\n}\n\nexport interface
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/types.ts"],"sourcesContent":["export interface LoadOptions {\n cachePath?: string;\n now?: Date;\n}\n\nexport interface LoadError extends Error {\n code?: number;\n}\n\nexport interface ResolveOptions {\n now?: Date;\n range?: string;\n path?: string;\n}\n\n// The wire shapes, as nodejs.org/dist/index.json and nodejs/Release/schedule.json send them.\n// Distinct from the normalized Version/Schedule this package exposes.\nexport interface VersionRaw {\n version: string;\n date: string;\n lts: string | false;\n}\n\nexport interface ScheduleRaw {\n start: string;\n end: string;\n lts?: string;\n maintenance?: string;\n codename?: string;\n}\n\nexport type ScheduleRawMap = { [name: string]: ScheduleRaw };\n\nexport interface Schedule {\n name: string;\n semver: string;\n raw: ScheduleRaw;\n start: Date;\n end: Date;\n codename?: string;\n lts?: Date;\n maintenance?: Date;\n}\n\nexport interface Version {\n version: string;\n name: string;\n semver: string;\n major: number;\n minor: number;\n patch: number;\n lts: string | false;\n date: Date;\n raw: VersionRaw;\n codename: string;\n}\n\nexport interface ParsedVersion {\n major: number;\n minor?: number;\n patch?: number;\n}\n\nexport interface ParsedCodename {\n codename: string;\n}\n\nexport interface ParsedName {\n name: string;\n}\n\nexport type ParsedExpression = ParsedVersion | ParsedCodename | ParsedName;\n"],"names":[],"mappings":"AAuEA,WAA2E"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-semvers",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"description": "Utilities for managing versions of node including looking up codenames",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"node",
|
|
@@ -33,13 +33,12 @@
|
|
|
33
33
|
},
|
|
34
34
|
"files": [
|
|
35
35
|
"dist",
|
|
36
|
-
"
|
|
36
|
+
".cache"
|
|
37
37
|
],
|
|
38
38
|
"scripts": {
|
|
39
39
|
"build": "tsds build",
|
|
40
|
-
"build:
|
|
40
|
+
"build:cache": "node scripts/generate-cache.mjs",
|
|
41
41
|
"format": "tsds format",
|
|
42
|
-
"postinstall": "node assets/postinstall.cjs",
|
|
43
42
|
"prepublishOnly": "tsds validate",
|
|
44
43
|
"test": "tsds test:node --no-timeouts",
|
|
45
44
|
"test:engines": "nvu engines tsds test:node --no-timeouts",
|
|
@@ -66,5 +65,11 @@
|
|
|
66
65
|
},
|
|
67
66
|
"engines": {
|
|
68
67
|
"node": ">=0.8"
|
|
68
|
+
},
|
|
69
|
+
"allowScripts": {
|
|
70
|
+
"node-filename-to-dist-paths": true,
|
|
71
|
+
"node-semvers": true,
|
|
72
|
+
"node-version-use": true,
|
|
73
|
+
"thread-sleep-compat": true
|
|
69
74
|
}
|
|
70
75
|
}
|
package/assets/constants.cjs
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
var path = require('path');
|
|
3
|
-
module.exports = {
|
|
4
|
-
CACHE_PATH: path.join(__dirname, '..', '.cache'),
|
|
5
|
-
DISTS_URL: 'https://nodejs.org/dist/index.json',
|
|
6
|
-
SCHEDULES_URL: 'https://raw.githubusercontent.com/nodejs/Release/master/schedule.json',
|
|
7
|
-
};
|
|
8
|
-
/* CJS INTEROP */ if (exports.__esModule && exports.default) {
|
|
9
|
-
try {
|
|
10
|
-
Object.defineProperty(exports.default, '__esModule', { value: true });
|
|
11
|
-
for (var key in exports) {
|
|
12
|
-
exports.default[key] = exports[key];
|
|
13
|
-
}
|
|
14
|
-
} catch (_) {}
|
|
15
|
-
module.exports = exports.default;
|
|
16
|
-
}
|
package/assets/postinstall.cjs
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
var exit = require('exit-compat');
|
|
3
|
-
var Cache = require('fetch-json-cache');
|
|
4
|
-
var _require = require('./constants.cjs');
|
|
5
|
-
var CACHE_PATH = _require.CACHE_PATH;
|
|
6
|
-
var DISTS_URL = _require.DISTS_URL;
|
|
7
|
-
var SCHEDULES_URL = _require.SCHEDULES_URL;
|
|
8
|
-
function fetchWithRetry(cache, url, retries, callback) {
|
|
9
|
-
cache.get(
|
|
10
|
-
url,
|
|
11
|
-
{
|
|
12
|
-
force: true,
|
|
13
|
-
},
|
|
14
|
-
function (err) {
|
|
15
|
-
if (err && retries > 0) {
|
|
16
|
-
setTimeout(function () {
|
|
17
|
-
fetchWithRetry(cache, url, retries - 1, callback);
|
|
18
|
-
}, 1000);
|
|
19
|
-
} else {
|
|
20
|
-
callback(err);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
);
|
|
24
|
-
}
|
|
25
|
-
function cacheWithRetry(callback) {
|
|
26
|
-
var cache = new Cache(CACHE_PATH);
|
|
27
|
-
fetchWithRetry(cache, DISTS_URL, 3, function (err) {
|
|
28
|
-
if (err) return callback(err);
|
|
29
|
-
fetchWithRetry(cache, SCHEDULES_URL, 3, callback);
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
// run patch
|
|
33
|
-
cacheWithRetry(function (err) {
|
|
34
|
-
if (err) {
|
|
35
|
-
console.log('postinstall warning: '.concat(err.message));
|
|
36
|
-
console.log('Cache not updated after retries.');
|
|
37
|
-
exit(0);
|
|
38
|
-
} else {
|
|
39
|
-
console.log('postinstall succeeded');
|
|
40
|
-
exit(0);
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
/* CJS INTEROP */ if (exports.__esModule && exports.default) {
|
|
44
|
-
try {
|
|
45
|
-
Object.defineProperty(exports.default, '__esModule', { value: true });
|
|
46
|
-
for (var key in exports) {
|
|
47
|
-
exports.default[key] = exports[key];
|
|
48
|
-
}
|
|
49
|
-
} catch (_) {}
|
|
50
|
-
module.exports = exports.default;
|
|
51
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var path = require('path');
|
|
3
|
-
module.exports = {
|
|
4
|
-
CACHE_PATH: path.join(__dirname, '..', '.cache'),
|
|
5
|
-
DISTS_URL: 'https://nodejs.org/dist/index.json',
|
|
6
|
-
SCHEDULES_URL: 'https://raw.githubusercontent.com/nodejs/Release/master/schedule.json'
|
|
7
|
-
};
|
|
8
|
-
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/assets/constants.cts"],"sourcesContent":["const path = require('path');\n\nmodule.exports = {\n CACHE_PATH: path.join(__dirname, '..', '.cache'),\n DISTS_URL: 'https://nodejs.org/dist/index.json',\n SCHEDULES_URL: 'https://raw.githubusercontent.com/nodejs/Release/master/schedule.json',\n};\n"],"names":["path","require","module","exports","CACHE_PATH","join","__dirname","DISTS_URL","SCHEDULES_URL"],"mappings":";AAAA,IAAMA,OAAOC,QAAQ;AAErBC,OAAOC,OAAO,GAAG;IACfC,YAAYJ,KAAKK,IAAI,CAACC,WAAW,MAAM;IACvCC,WAAW;IACXC,eAAe;AACjB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var exit = require('exit-compat');
|
|
3
|
-
var Cache = require('fetch-json-cache');
|
|
4
|
-
var _require = require('./constants.cjs'), CACHE_PATH = _require.CACHE_PATH, DISTS_URL = _require.DISTS_URL, SCHEDULES_URL = _require.SCHEDULES_URL;
|
|
5
|
-
function fetchWithRetry(cache, url, retries, callback) {
|
|
6
|
-
cache.get(url, {
|
|
7
|
-
force: true
|
|
8
|
-
}, function(err) {
|
|
9
|
-
if (err && retries > 0) {
|
|
10
|
-
setTimeout(function() {
|
|
11
|
-
fetchWithRetry(cache, url, retries - 1, callback);
|
|
12
|
-
}, 1000);
|
|
13
|
-
} else {
|
|
14
|
-
callback(err);
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
function cacheWithRetry(callback) {
|
|
19
|
-
var cache = new Cache(CACHE_PATH);
|
|
20
|
-
fetchWithRetry(cache, DISTS_URL, 3, function(err) {
|
|
21
|
-
if (err) return callback(err);
|
|
22
|
-
fetchWithRetry(cache, SCHEDULES_URL, 3, callback);
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
// run patch
|
|
26
|
-
cacheWithRetry(function(err) {
|
|
27
|
-
if (err) {
|
|
28
|
-
console.log("postinstall warning: ".concat(err.message));
|
|
29
|
-
console.log('Cache not updated after retries.');
|
|
30
|
-
return exit(0);
|
|
31
|
-
}
|
|
32
|
-
console.log('postinstall succeeded');
|
|
33
|
-
exit(0);
|
|
34
|
-
});
|
|
35
|
-
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/assets/postinstall.cts"],"sourcesContent":["const exit = require('exit-compat');\nconst Cache = require('fetch-json-cache');\nconst { CACHE_PATH, DISTS_URL, SCHEDULES_URL } = require('./constants.cts');\n\ntype Callback = (err: Error | null) => void;\n\nfunction fetchWithRetry(cache: typeof Cache.prototype, url: string, retries: number, callback: Callback) {\n cache.get(url, { force: true }, (err: Error | null) => {\n if (err && retries > 0) {\n setTimeout(() => {\n fetchWithRetry(cache, url, retries - 1, callback);\n }, 1000);\n } else {\n callback(err);\n }\n });\n}\n\nfunction cacheWithRetry(callback: Callback) {\n const cache = new Cache(CACHE_PATH);\n fetchWithRetry(cache, DISTS_URL, 3, (err) => {\n if (err) return callback(err);\n fetchWithRetry(cache, SCHEDULES_URL, 3, callback);\n });\n}\n\n// run patch\ncacheWithRetry((err) => {\n if (err) {\n console.log(`postinstall warning: ${err.message}`);\n console.log('Cache not updated after retries.');\n return exit(0);\n }\n\n console.log('postinstall succeeded');\n exit(0);\n});\n"],"names":["exit","require","Cache","CACHE_PATH","DISTS_URL","SCHEDULES_URL","fetchWithRetry","cache","url","retries","callback","get","force","err","setTimeout","cacheWithRetry","console","log","message"],"mappings":";AAAA,IAAMA,OAAOC,QAAQ;AACrB,IAAMC,QAAQD,QAAQ;AACtB,IAAiDA,WAAAA,QAAQ,oBAAjDE,aAAyCF,SAAzCE,YAAYC,YAA6BH,SAA7BG,WAAWC,gBAAkBJ,SAAlBI;AAI/B,SAASC,eAAeC,KAA6B,EAAEC,GAAW,EAAEC,OAAe,EAAEC,QAAkB;IACrGH,MAAMI,GAAG,CAACH,KAAK;QAAEI,OAAO;IAAK,GAAG,SAACC;QAC/B,IAAIA,OAAOJ,UAAU,GAAG;YACtBK,WAAW;gBACTR,eAAeC,OAAOC,KAAKC,UAAU,GAAGC;YAC1C,GAAG;QACL,OAAO;YACLA,SAASG;QACX;IACF;AACF;AAEA,SAASE,eAAeL,QAAkB;IACxC,IAAMH,QAAQ,IAAIL,MAAMC;IACxBG,eAAeC,OAAOH,WAAW,GAAG,SAACS;QACnC,IAAIA,KAAK,OAAOH,SAASG;QACzBP,eAAeC,OAAOF,eAAe,GAAGK;IAC1C;AACF;AAEA,YAAY;AACZK,eAAe,SAACF;IACd,IAAIA,KAAK;QACPG,QAAQC,GAAG,CAAC,AAAC,wBAAmC,OAAZJ,IAAIK,OAAO;QAC/CF,QAAQC,GAAG,CAAC;QACZ,OAAOjB,KAAK;IACd;IAEAgB,QAAQC,GAAG,CAAC;IACZjB,KAAK;AACP"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/assets/constants.cts"],"sourcesContent":["const path = require('path');\n\nmodule.exports = {\n CACHE_PATH: path.join(__dirname, '..', '.cache'),\n DISTS_URL: 'https://nodejs.org/dist/index.json',\n SCHEDULES_URL: 'https://raw.githubusercontent.com/nodejs/Release/master/schedule.json',\n};\n"],"names":["path","require","module","exports","CACHE_PATH","join","__dirname","DISTS_URL","SCHEDULES_URL"],"mappings":"AAAA,MAAMA,OAAOC,QAAQ;AAErBC,OAAOC,OAAO,GAAG;IACfC,YAAYJ,KAAKK,IAAI,CAACC,WAAW,MAAM;IACvCC,WAAW;IACXC,eAAe;AACjB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
const exit = require('exit-compat');
|
|
2
|
-
const Cache = require('fetch-json-cache');
|
|
3
|
-
const { CACHE_PATH, DISTS_URL, SCHEDULES_URL } = require('./constants.cts');
|
|
4
|
-
function fetchWithRetry(cache, url, retries, callback) {
|
|
5
|
-
cache.get(url, {
|
|
6
|
-
force: true
|
|
7
|
-
}, (err)=>{
|
|
8
|
-
if (err && retries > 0) {
|
|
9
|
-
setTimeout(()=>{
|
|
10
|
-
fetchWithRetry(cache, url, retries - 1, callback);
|
|
11
|
-
}, 1000);
|
|
12
|
-
} else {
|
|
13
|
-
callback(err);
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
function cacheWithRetry(callback) {
|
|
18
|
-
const cache = new Cache(CACHE_PATH);
|
|
19
|
-
fetchWithRetry(cache, DISTS_URL, 3, (err)=>{
|
|
20
|
-
if (err) return callback(err);
|
|
21
|
-
fetchWithRetry(cache, SCHEDULES_URL, 3, callback);
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
// run patch
|
|
25
|
-
cacheWithRetry((err)=>{
|
|
26
|
-
if (err) {
|
|
27
|
-
console.log(`postinstall warning: ${err.message}`);
|
|
28
|
-
console.log('Cache not updated after retries.');
|
|
29
|
-
return exit(0);
|
|
30
|
-
}
|
|
31
|
-
console.log('postinstall succeeded');
|
|
32
|
-
exit(0);
|
|
33
|
-
});
|