node-semvers 1.7.0 → 1.7.2

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.
Files changed (40) hide show
  1. package/bin/cli.cjs +1 -1
  2. package/dist/cjs/NodeVersions.js +10 -5
  3. package/dist/cjs/NodeVersions.js.map +1 -1
  4. package/dist/cjs/assets/postinstall.cjs +3 -4
  5. package/dist/cjs/assets/postinstall.cjs.map +1 -1
  6. package/dist/cjs/cli.d.cts +0 -0
  7. package/dist/cjs/cli.d.ts +0 -0
  8. package/dist/cjs/cli.js +3 -5
  9. package/dist/cjs/cli.js.map +1 -1
  10. package/dist/cjs/lib/match.d.cts +1 -1
  11. package/dist/cjs/lib/match.d.ts +1 -1
  12. package/dist/cjs/lib/match.js.map +1 -1
  13. package/dist/cjs/lib/normalizeVersion.js +1 -1
  14. package/dist/cjs/lib/normalizeVersion.js.map +1 -1
  15. package/dist/cjs/parseExpression/index.d.cts +4 -2
  16. package/dist/cjs/parseExpression/index.d.ts +4 -2
  17. package/dist/cjs/parseExpression/index.js.map +1 -1
  18. package/dist/cjs/parseExpression/isLTSFn.js +1 -1
  19. package/dist/cjs/parseExpression/isLTSFn.js.map +1 -1
  20. package/dist/cjs/parseExpression/schedulesLatest.d.cts +1 -1
  21. package/dist/cjs/parseExpression/schedulesLatest.d.ts +1 -1
  22. package/dist/cjs/parseExpression/schedulesLatest.js.map +1 -1
  23. package/dist/esm/NodeVersions.js +14 -5
  24. package/dist/esm/NodeVersions.js.map +1 -1
  25. package/dist/esm/assets/postinstall.cjs +3 -4
  26. package/dist/esm/assets/postinstall.cjs.map +1 -1
  27. package/dist/esm/cli.d.ts +0 -0
  28. package/dist/esm/cli.js +3 -5
  29. package/dist/esm/cli.js.map +1 -1
  30. package/dist/esm/lib/match.d.ts +1 -1
  31. package/dist/esm/lib/match.js.map +1 -1
  32. package/dist/esm/lib/normalizeVersion.js +1 -1
  33. package/dist/esm/lib/normalizeVersion.js.map +1 -1
  34. package/dist/esm/parseExpression/index.d.ts +4 -2
  35. package/dist/esm/parseExpression/index.js.map +1 -1
  36. package/dist/esm/parseExpression/isLTSFn.js +1 -1
  37. package/dist/esm/parseExpression/isLTSFn.js.map +1 -1
  38. package/dist/esm/parseExpression/schedulesLatest.d.ts +1 -1
  39. package/dist/esm/parseExpression/schedulesLatest.js.map +1 -1
  40. package/package.json +2 -1
package/bin/cli.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // biome-ignore lint/security/noGlobalEval: dual esm and cjs
4
- if (typeof require === 'undefined') eval("import('../dist/esm/cli.js').then((cli) => cli.default(process.argv.slice(2), 'nsv')).catch((err) => { console.log(err); process.exit(-1); });");
4
+ if (typeof require === 'undefined') eval("import('../dist/esm/cli.js').then((cli) => cli.default(process.argv.slice(2), 'nsv')).catch((err) => { console.error(err); process.exit(-1); });");
5
5
  else require('../dist/cjs/cli.js')(process.argv.slice(2), 'nsv');
@@ -36,7 +36,9 @@ var NodeVersions = /*#__PURE__*/ function() {
36
36
  this.schedules = [];
37
37
  for(var name in schedule)this.schedules.push((0, _normalizeSchedulets.default)(name, schedule[name]));
38
38
  this.schedules = this.schedules.sort(function(a, b) {
39
- return _semver.default.gt(_semver.default.coerce(a.semver), _semver.default.coerce(b.semver)) ? 1 : -1;
39
+ var _ref, _ref1;
40
+ var _semver_coerce, _semver_coerce1;
41
+ return _semver.default.gt((_ref = (_semver_coerce = _semver.default.coerce(a.semver)) === null || _semver_coerce === void 0 ? void 0 : _semver_coerce.version) !== null && _ref !== void 0 ? _ref : '0.0.0', (_ref1 = (_semver_coerce1 = _semver.default.coerce(b.semver)) === null || _semver_coerce1 === void 0 ? void 0 : _semver_coerce1.version) !== null && _ref1 !== void 0 ? _ref1 : '0.0.0') ? 1 : -1;
40
42
  });
41
43
  this.versions = [];
42
44
  for(var index = 0; index < versions.length; index++)this.versions.push((0, _normalizeVersionts.default)(versions[index], this.schedules));
@@ -83,8 +85,9 @@ var NodeVersions = /*#__PURE__*/ function() {
83
85
  if (filters.line && !filters.line(test1)) continue;
84
86
  if (!_semver.default.satisfies(test1.semver, expression)) continue;
85
87
  if (filters.key) {
86
- if (founds[filters.key(test1)]) continue;
87
- founds[filters.key(test1)] = true;
88
+ var k = filters.key(test1);
89
+ if (founds[k]) continue;
90
+ founds[k] = true;
88
91
  }
89
92
  results.unshift(test1[path]);
90
93
  }
@@ -98,14 +101,16 @@ var NodeVersions = /*#__PURE__*/ function() {
98
101
  cache.get(_constantsts.DISTS_URL, function(err, versions) {
99
102
  if (err) return callback(err);
100
103
  cache.get(_constantsts.SCHEDULES_URL, function(err, schedule) {
101
- err ? callback(err) : callback(null, new NodeVersions(versions, schedule));
104
+ if (err || !versions || !schedule) return callback(err !== null && err !== void 0 ? err : new Error('Missing data'));
105
+ callback(undefined, new NodeVersions(versions, schedule));
102
106
  });
103
107
  });
104
108
  }
105
109
  if (typeof callback === 'function') return worker(options, callback);
106
110
  return new Promise(function(resolve, reject) {
107
111
  return worker(options, function(err, versions) {
108
- return err ? reject(err) : resolve(versions);
112
+ if (err || !versions) return reject(err !== null && err !== void 0 ? err : new Error('No versions returned'));
113
+ resolve(versions);
109
114
  });
110
115
  });
111
116
  };
@@ -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), semver.coerce(b.semver)) ? 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, callback) {\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(SCHEDULES_URL, (err, schedule: ScheduleRaw[]) => {\n err ? callback(err) : callback(null, new NodeVersions(versions, schedule));\n });\n });\n }\n\n if (typeof callback === 'function') return worker(options, callback);\n return new Promise((resolve, reject) => worker(options, (err, versions) => (err ? reject(err) : resolve(versions))));\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 = 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, query)) continue;\n version = test;\n break;\n }\n if (version) return version[path];\n }\n\n // filtered expression\n const range = options.range || '';\n const filters = { lts: !!~range.indexOf('lts'), key: undefined, line: undefined };\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 = [];\n const founds = {};\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 if (founds[filters.key(test)]) continue;\n founds[filters.key(test)] = true;\n }\n results.unshift(test[path]);\n }\n return results;\n }\n}\n"],"names":["NodeVersions","versions","schedule","Error","schedules","name","push","normalizeSchedule","sort","a","b","semver","gt","coerce","index","length","normalizeVersion","resolve","expression","options","path","trim","query","parseExpression","call","now","Date","version","test","date","match","range","filters","lts","indexOf","key","undefined","line","major","minor","even","odd","results","founds","satisfies","unshift","load","callback","worker","cache","Cache","cachePath","CACHE_PATH","get","DISTS_URL","err","SCHEDULES_URL","Promise","reject","loadSync","getSync"],"mappings":"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"}
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":["NodeVersions","versions","schedule","Error","schedules","name","push","normalizeSchedule","sort","a","b","semver","gt","coerce","version","index","length","normalizeVersion","resolve","expression","options","path","trim","query","parseExpression","call","now","Date","test","date","match","range","filters","lts","indexOf","key","undefined","line","major","minor","even","odd","results","founds","satisfies","k","unshift","load","callback","worker","cache","Cache","cachePath","CACHE_PATH","get","DISTS_URL","err","SCHEDULES_URL","Promise","reject","loadSync","getSync"],"mappings":"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"}
@@ -27,10 +27,9 @@ cacheWithRetry(function(err) {
27
27
  if (err) {
28
28
  console.log("postinstall warning: ".concat(err.message));
29
29
  console.log('Cache not updated after retries.');
30
- exit(0);
31
- } else {
32
- console.log('postinstall succeeded');
33
- exit(0);
30
+ return exit(0);
34
31
  }
32
+ console.log('postinstall succeeded');
33
+ exit(0);
35
34
  });
36
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 +1 @@
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 exit(0);\n } else {\n console.log('postinstall succeeded');\n exit(0);\n }\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;QACZjB,KAAK;IACP,OAAO;QACLgB,QAAQC,GAAG,CAAC;QACZjB,KAAK;IACP;AACF"}
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"}
File without changes
package/dist/cjs/cli.d.ts CHANGED
File without changes
package/dist/cjs/cli.js CHANGED
@@ -94,14 +94,12 @@ var _default = function(argv, name) {
94
94
  _indexts.default.load(options, function(err, semvers) {
95
95
  if (err) {
96
96
  console.log(err.message);
97
- (0, _exitcompat.default)(ERROR_CODE);
98
- return;
97
+ return (0, _exitcompat.default)(ERROR_CODE);
99
98
  }
100
- var version = semvers.resolve(args[0], options);
99
+ var version = semvers === null || semvers === void 0 ? void 0 : semvers.resolve(args[0], options);
101
100
  if (!version || isArray(version) && !version.length) {
102
101
  console.log("Unrecognized: ".concat(args[0]));
103
- (0, _exitcompat.default)(ERROR_CODE);
104
- return;
102
+ return (0, _exitcompat.default)(ERROR_CODE);
105
103
  }
106
104
  console.log('versions:');
107
105
  if (isArray(version)) {
@@ -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 NodeVersions, { type LoadOptions, type 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) {\n return typeof value === 'string' ? value : JSON.stringify(value);\n }\n\n NodeVersions.load(options as LoadOptions, (err, semvers) => {\n if (err) {\n console.log(err.message);\n exit(ERROR_CODE);\n return;\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 exit(ERROR_CODE);\n return;\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"],"names":["isArray","Array","x","Object","prototype","toString","call","ERROR_CODE","__dirname","path","dirname","__filename","url","fileURLToPath","getVersion","pkgPath","join","JSON","parse","fs","readFileSync","version","printHelp","name","console","log","argv","stringify","value","cliName","options","getopts","alias","range","now","help","boolean","exit","Date","isNaN","args","_","length","NodeVersions","load","err","semvers","message","resolve","index"],"mappings":";;;;+BA+CA;;;eAAA;;;iEA/CiB;yDACF;oEACK;2DACH;0DACD;8DACoD;8DAElD;;;;;;AAElB,IAAMA,UAAUC,MAAMD,OAAO,IAAK,SAACE;WAAMC,OAAOC,SAAS,CAACC,QAAQ,CAACC,IAAI,CAACJ,OAAO;;AAE/E,IAAMK,aAAa;AACnB,IAAMC,YAAYC,aAAI,CAACC,OAAO,CAAC,OAAOC,eAAe,cAAcA,aAAaC,YAAG,CAACC,aAAa,CAAC;AAElG,SAASC;IACP,IAAMC,UAAUN,aAAI,CAACO,IAAI,CAACR,WAAW,MAAM,MAAM;IACjD,OAAOS,KAAKC,KAAK,CAACC,WAAE,CAACC,YAAY,CAACL,SAAS,SAASM,OAAO;AAC7D;AAEA,SAASC,UAAUC,IAAY;IAC7B,IAAMF,UAAUP;IAChBU,QAAQC,GAAG,CAAC,AAAC,GAAWJ,OAATE,MAAK,MAAY,OAARF;IACxBG,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC,AAAC,UAAc,OAALF,MAAK;IAC3BC,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;AACd;IAEA,WAAe,SAACC,MAAgBH;QA4BrBI,YAAT,SAASA,UAAUC,KAAK;QACtB,OAAO,OAAOA,UAAU,WAAWA,QAAQX,KAAKU,SAAS,CAACC;IAC5D;IA7BA,IAAMC,UAAUN,QAAQ;IACxB,IAAMO,UAAUC,IAAAA,sBAAO,EAACL,MAAM;QAC5BM,OAAO;YAAEvB,MAAM;YAAKwB,OAAO;YAAKC,KAAK;YAAKb,SAAS;YAAKc,MAAM;QAAI;QAClEC,SAAS;YAAC;YAAW;SAAO;IAC9B;IAEA,IAAIN,QAAQT,OAAO,EAAE;QACnBG,QAAQC,GAAG,CAACX;QACZuB,IAAAA,mBAAI,EAAC;QACL;IACF;IAEA,IAAIP,QAAQK,IAAI,EAAE;QAChBb,UAAUO;QACVQ,IAAAA,mBAAI,EAAC;QACL;IACF;IAEA,IAAI,OAAOP,QAAQI,GAAG,KAAK,aAAaJ,QAAQI,GAAG,GAAG,IAAII,KAAKC,IAAAA,gBAAK,EAAC,CAACT,QAAQI,GAAG,IAAII,KAAKpB,KAAK,CAACY,QAAQI,GAAG,IAAI,CAACJ,QAAQI,GAAG;IAE3H,IAAMM,OAAOV,QAAQW,CAAC;IACtB,IAAID,KAAKE,MAAM,GAAG,GAAG;QACnBlB,QAAQC,GAAG,CAAC,AAAC,0CAA0EI,OAAjCA,SAAQ,2BAAiC,OAARA,SAAQ;QAC/FQ,IAAAA,mBAAI,EAAC9B;QACL;IACF;IAMAoC,gBAAY,CAACC,IAAI,CAACd,SAAwB,SAACe,KAAKC;QAC9C,IAAID,KAAK;YACPrB,QAAQC,GAAG,CAACoB,IAAIE,OAAO;YACvBV,IAAAA,mBAAI,EAAC9B;YACL;QACF;QAEA,IAAMc,UAAUyB,QAAQE,OAAO,CAACR,IAAI,CAAC,EAAE,EAAEV;QACzC,IAAI,CAACT,WAAYrB,QAAQqB,YAAY,CAAC,AAACA,QAAqBqB,MAAM,EAAG;YACnElB,QAAQC,GAAG,CAAC,AAAC,iBAAwB,OAARe,IAAI,CAAC,EAAE;YACpCH,IAAAA,mBAAI,EAAC9B;YACL;QACF;QAEAiB,QAAQC,GAAG,CAAC;QACZ,IAAIzB,QAAQqB,UAAU;YACpB,IAAK,IAAI4B,QAAQ,GAAGA,QAAQ,AAAC5B,QAAqBqB,MAAM,EAAEO,QAASzB,QAAQC,GAAG,CAACE,UAAUN,OAAO,CAAC4B,MAAM;QACzG,OAAOzB,QAAQC,GAAG,CAACE,UAAUN;QAC7BgB,IAAAA,mBAAI,EAAC;IACP;AACF"}
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 NodeVersions, { type LoadOptions, type 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 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"],"names":["isArray","Array","x","Object","prototype","toString","call","ERROR_CODE","__dirname","path","dirname","__filename","url","fileURLToPath","getVersion","pkgPath","join","JSON","parse","fs","readFileSync","version","printHelp","name","console","log","argv","stringify","value","cliName","options","getopts","alias","range","now","help","boolean","exit","Date","isNaN","args","_","length","NodeVersions","load","err","semvers","message","resolve","index"],"mappings":"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"}
@@ -1 +1 @@
1
- export default function match(test: object, query: object): boolean;
1
+ export default function match(test: Record<string, unknown>, query: Record<string, unknown>): boolean;
@@ -1 +1 @@
1
- export default function match(test: object, query: object): boolean;
1
+ export default function match(test: Record<string, unknown>, query: Record<string, unknown>): boolean;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/lib/match.ts"],"sourcesContent":["export default function match(test: object, query: object): boolean {\n for (const key in query) {\n if (test[key] !== query[key]) return false;\n }\n return true;\n}\n"],"names":["match","test","query","key"],"mappings":";;;;+BAAA;;;eAAwBA;;;AAAT,SAASA,MAAMC,IAAY,EAAEC,KAAa;IACvD,IAAK,IAAMC,OAAOD,MAAO;QACvB,IAAID,IAAI,CAACE,IAAI,KAAKD,KAAK,CAACC,IAAI,EAAE,OAAO;IACvC;IACA,OAAO;AACT"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/lib/match.ts"],"sourcesContent":["export default function match(test: Record<string, unknown>, query: Record<string, unknown>): boolean {\n for (const key in query) {\n if (test[key] !== query[key]) return false;\n }\n return true;\n}\n"],"names":["match","test","query","key"],"mappings":";;;;+BAAA;;;eAAwBA;;;AAAT,SAASA,MAAMC,IAA6B,EAAEC,KAA8B;IACzF,IAAK,IAAMC,OAAOD,MAAO;QACvB,IAAID,IAAI,CAACE,IAAI,KAAKD,KAAK,CAACC,IAAI,EAAE,OAAO;IACvC;IACA,OAAO;AACT"}
@@ -29,7 +29,7 @@ function normalizeVersion(raw, schedules) {
29
29
  break;
30
30
  }
31
31
  }
32
- if (schedule && raw.lts) version.codename = schedule.codename;
32
+ if (schedule && raw.lts) version.codename = schedule.codename || '';
33
33
  return version;
34
34
  }
35
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 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/lib/normalizeVersion.ts"],"sourcesContent":["import type { Schedule, Version, VersionRaw } from '../types.ts';\n\nexport default function normalizeVersion(raw: VersionRaw, schedules: Schedule[]): Version {\n const parts = raw.version.substr(1).split('.');\n\n const version = {\n version: raw.version,\n name: parts[0] !== '0' ? `v${+parts[0]}` : `v${+parts[0]}.${+parts[1]}`,\n semver: `${parts[0]}.${+parts[1]}.${+parts[2]}`,\n major: +parts[0],\n minor: +parts[1],\n patch: +parts[2],\n lts: raw.lts,\n date: new Date(raw.date),\n raw: raw,\n } as Version;\n\n let schedule = null;\n for (let index = 0; index < schedules.length; index++) {\n const test = schedules[index];\n if (test.name === version.name) {\n schedule = test;\n break;\n }\n }\n if (schedule && raw.lts) version.codename = schedule.codename;\n return version;\n}\n"],"names":["normalizeVersion","raw","schedules","parts","version","substr","split","name","semver","major","minor","patch","lts","date","Date","schedule","index","length","test","codename"],"mappings":";;;;+BAEA;;;eAAwBA;;;AAAT,SAASA,iBAAiBC,GAAe,EAAEC,SAAqB;IAC7E,IAAMC,QAAQF,IAAIG,OAAO,CAACC,MAAM,CAAC,GAAGC,KAAK,CAAC;IAE1C,IAAMF,UAAU;QACdA,SAASH,IAAIG,OAAO;QACpBG,MAAMJ,KAAK,CAAC,EAAE,KAAK,MAAM,AAAC,IAAa,OAAV,CAACA,KAAK,CAAC,EAAE,IAAK,AAAC,IAAgB,OAAb,CAACA,KAAK,CAAC,EAAE,EAAC,KAAa,OAAV,CAACA,KAAK,CAAC,EAAE;QACrEK,QAAQ,AAAC,GAAc,OAAZL,KAAK,CAAC,EAAE,EAAC,KAAgB,OAAb,CAACA,KAAK,CAAC,EAAE,EAAC,KAAa,OAAV,CAACA,KAAK,CAAC,EAAE;QAC7CM,OAAO,CAACN,KAAK,CAAC,EAAE;QAChBO,OAAO,CAACP,KAAK,CAAC,EAAE;QAChBQ,OAAO,CAACR,KAAK,CAAC,EAAE;QAChBS,KAAKX,IAAIW,GAAG;QACZC,MAAM,IAAIC,KAAKb,IAAIY,IAAI;QACvBZ,KAAKA;IACP;IAEA,IAAIc,WAAW;IACf,IAAK,IAAIC,QAAQ,GAAGA,QAAQd,UAAUe,MAAM,EAAED,QAAS;QACrD,IAAME,OAAOhB,SAAS,CAACc,MAAM;QAC7B,IAAIE,KAAKX,IAAI,KAAKH,QAAQG,IAAI,EAAE;YAC9BQ,WAAWG;YACX;QACF;IACF;IACA,IAAIH,YAAYd,IAAIW,GAAG,EAAER,QAAQe,QAAQ,GAAGJ,SAASI,QAAQ;IAC7D,OAAOf;AACT"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/lib/normalizeVersion.ts"],"sourcesContent":["import type { Schedule, Version, VersionRaw } from '../types.ts';\n\nexport default function normalizeVersion(raw: VersionRaw, schedules: Schedule[]): Version {\n const parts = raw.version.substr(1).split('.');\n\n const version = {\n version: raw.version,\n name: parts[0] !== '0' ? `v${+parts[0]}` : `v${+parts[0]}.${+parts[1]}`,\n semver: `${parts[0]}.${+parts[1]}.${+parts[2]}`,\n major: +parts[0],\n minor: +parts[1],\n patch: +parts[2],\n lts: raw.lts,\n date: new Date(raw.date),\n raw: raw,\n } as Version;\n\n let schedule: Schedule | null = null;\n for (let index = 0; index < schedules.length; index++) {\n const test = schedules[index];\n if (test.name === version.name) {\n schedule = test;\n break;\n }\n }\n if (schedule && raw.lts) version.codename = schedule.codename || '';\n return version;\n}\n"],"names":["normalizeVersion","raw","schedules","parts","version","substr","split","name","semver","major","minor","patch","lts","date","Date","schedule","index","length","test","codename"],"mappings":";;;;+BAEA;;;eAAwBA;;;AAAT,SAASA,iBAAiBC,GAAe,EAAEC,SAAqB;IAC7E,IAAMC,QAAQF,IAAIG,OAAO,CAACC,MAAM,CAAC,GAAGC,KAAK,CAAC;IAE1C,IAAMF,UAAU;QACdA,SAASH,IAAIG,OAAO;QACpBG,MAAMJ,KAAK,CAAC,EAAE,KAAK,MAAM,AAAC,IAAa,OAAV,CAACA,KAAK,CAAC,EAAE,IAAK,AAAC,IAAgB,OAAb,CAACA,KAAK,CAAC,EAAE,EAAC,KAAa,OAAV,CAACA,KAAK,CAAC,EAAE;QACrEK,QAAQ,AAAC,GAAc,OAAZL,KAAK,CAAC,EAAE,EAAC,KAAgB,OAAb,CAACA,KAAK,CAAC,EAAE,EAAC,KAAa,OAAV,CAACA,KAAK,CAAC,EAAE;QAC7CM,OAAO,CAACN,KAAK,CAAC,EAAE;QAChBO,OAAO,CAACP,KAAK,CAAC,EAAE;QAChBQ,OAAO,CAACR,KAAK,CAAC,EAAE;QAChBS,KAAKX,IAAIW,GAAG;QACZC,MAAM,IAAIC,KAAKb,IAAIY,IAAI;QACvBZ,KAAKA;IACP;IAEA,IAAIc,WAA4B;IAChC,IAAK,IAAIC,QAAQ,GAAGA,QAAQd,UAAUe,MAAM,EAAED,QAAS;QACrD,IAAME,OAAOhB,SAAS,CAACc,MAAM;QAC7B,IAAIE,KAAKX,IAAI,KAAKH,QAAQG,IAAI,EAAE;YAC9BQ,WAAWG;YACX;QACF;IACF;IACA,IAAIH,YAAYd,IAAIW,GAAG,EAAER,QAAQe,QAAQ,GAAGJ,SAASI,QAAQ,IAAI;IACjE,OAAOf;AACT"}
@@ -1,2 +1,4 @@
1
- import type { ParsedExpression } from '../types.js';
2
- export default function parseExpression(expression: string, now: Date): ParsedExpression;
1
+ import type { ParsedExpression, Schedule } from '../types.js';
2
+ export default function parseExpression(this: {
3
+ schedules: Schedule[];
4
+ }, expression: string, now: Date): ParsedExpression | null;
@@ -1,2 +1,4 @@
1
- import type { ParsedExpression } from '../types.js';
2
- export default function parseExpression(expression: string, now: Date): ParsedExpression;
1
+ import type { ParsedExpression, Schedule } from '../types.js';
2
+ export default function parseExpression(this: {
3
+ schedules: Schedule[];
4
+ }, expression: string, now: Date): ParsedExpression | null;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/parseExpression/index.ts"],"sourcesContent":["// biome-ignore lint/suspicious/noShadowRestrictedNames: Legacy\nimport isNaN from '../lib/isNaN.ts';\nimport type { ParsedExpression } from '../types.ts';\nimport isLatestFn from './isLatestFn.ts';\nimport isLTSFn from './isLTSFn.ts';\nimport schedulesLatest from './schedulesLatest.ts';\n\nexport default function parseExpression(expression: string, now: Date): ParsedExpression {\n if (expression[0] === 'v' && !isNaN(+expression.substr(1, 1))) expression = expression.substr(1);\n if (expression.substr(0, 4) === 'lts/') expression = expression.substr(4) === '*' ? 'lts' : expression.substr(4);\n if (expression === 'stable') expression = 'lts';\n\n if (typeof expression === 'number') return { major: expression };\n if (~expression.indexOf('.')) {\n const parts = expression.split('.');\n if (parts.length === 1) return isNaN(+parts[0]) ? null : { major: +parts[0] };\n if (parts.length === 2) return isNaN(+parts[0]) && isNaN(+parts[1]) ? null : { major: +parts[0], minor: +parts[1] };\n return isNaN(+parts[0]) && isNaN(+parts[1]) && isNaN(+parts[2]) ? null : { major: +parts[0], minor: +parts[1], patch: +parts[2] };\n }\n if (!isNaN(+expression)) return { major: +expression };\n if (expression === 'lts') {\n const lts = schedulesLatest(this.schedules, isLTSFn(now));\n return lts ? { name: lts.name } : null;\n }\n if (expression === 'latest') {\n const latest = schedulesLatest(this.schedules, isLatestFn(now));\n return latest ? { name: latest.name } : null;\n }\n return { codename: expression.toLowerCase() };\n}\n"],"names":["parseExpression","expression","now","isNaN","substr","major","indexOf","parts","split","length","minor","patch","lts","schedulesLatest","schedules","isLTSFn","name","latest","isLatestFn","codename","toLowerCase"],"mappings":"AAAA,+DAA+D;;;;;+BAO/D;;;eAAwBA;;;8DANN;mEAEK;gEACH;wEACQ;;;;;;AAEb,SAASA,gBAAgBC,UAAkB,EAAEC,GAAS;IACnE,IAAID,UAAU,CAAC,EAAE,KAAK,OAAO,CAACE,IAAAA,gBAAK,EAAC,CAACF,WAAWG,MAAM,CAAC,GAAG,KAAKH,aAAaA,WAAWG,MAAM,CAAC;IAC9F,IAAIH,WAAWG,MAAM,CAAC,GAAG,OAAO,QAAQH,aAAaA,WAAWG,MAAM,CAAC,OAAO,MAAM,QAAQH,WAAWG,MAAM,CAAC;IAC9G,IAAIH,eAAe,UAAUA,aAAa;IAE1C,IAAI,OAAOA,eAAe,UAAU,OAAO;QAAEI,OAAOJ;IAAW;IAC/D,IAAI,CAACA,WAAWK,OAAO,CAAC,MAAM;QAC5B,IAAMC,QAAQN,WAAWO,KAAK,CAAC;QAC/B,IAAID,MAAME,MAAM,KAAK,GAAG,OAAON,IAAAA,gBAAK,EAAC,CAACI,KAAK,CAAC,EAAE,IAAI,OAAO;YAAEF,OAAO,CAACE,KAAK,CAAC,EAAE;QAAC;QAC5E,IAAIA,MAAME,MAAM,KAAK,GAAG,OAAON,IAAAA,gBAAK,EAAC,CAACI,KAAK,CAAC,EAAE,KAAKJ,IAAAA,gBAAK,EAAC,CAACI,KAAK,CAAC,EAAE,IAAI,OAAO;YAAEF,OAAO,CAACE,KAAK,CAAC,EAAE;YAAEG,OAAO,CAACH,KAAK,CAAC,EAAE;QAAC;QAClH,OAAOJ,IAAAA,gBAAK,EAAC,CAACI,KAAK,CAAC,EAAE,KAAKJ,IAAAA,gBAAK,EAAC,CAACI,KAAK,CAAC,EAAE,KAAKJ,IAAAA,gBAAK,EAAC,CAACI,KAAK,CAAC,EAAE,IAAI,OAAO;YAAEF,OAAO,CAACE,KAAK,CAAC,EAAE;YAAEG,OAAO,CAACH,KAAK,CAAC,EAAE;YAAEI,OAAO,CAACJ,KAAK,CAAC,EAAE;QAAC;IAClI;IACA,IAAI,CAACJ,IAAAA,gBAAK,EAAC,CAACF,aAAa,OAAO;QAAEI,OAAO,CAACJ;IAAW;IACrD,IAAIA,eAAe,OAAO;QACxB,IAAMW,MAAMC,IAAAA,0BAAe,EAAC,IAAI,CAACC,SAAS,EAAEC,IAAAA,kBAAO,EAACb;QACpD,OAAOU,MAAM;YAAEI,MAAMJ,IAAII,IAAI;QAAC,IAAI;IACpC;IACA,IAAIf,eAAe,UAAU;QAC3B,IAAMgB,SAASJ,IAAAA,0BAAe,EAAC,IAAI,CAACC,SAAS,EAAEI,IAAAA,qBAAU,EAAChB;QAC1D,OAAOe,SAAS;YAAED,MAAMC,OAAOD,IAAI;QAAC,IAAI;IAC1C;IACA,OAAO;QAAEG,UAAUlB,WAAWmB,WAAW;IAAG;AAC9C"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/parseExpression/index.ts"],"sourcesContent":["// biome-ignore lint/suspicious/noShadowRestrictedNames: Legacy\nimport isNaN from '../lib/isNaN.ts';\nimport type { ParsedExpression, Schedule } from '../types.ts';\nimport isLatestFn from './isLatestFn.ts';\nimport isLTSFn from './isLTSFn.ts';\nimport schedulesLatest from './schedulesLatest.ts';\n\nexport default function parseExpression(this: { schedules: Schedule[] }, expression: string, now: Date): ParsedExpression | null {\n if (expression[0] === 'v' && !isNaN(+expression.substr(1, 1))) expression = expression.substr(1);\n if (expression.substr(0, 4) === 'lts/') expression = expression.substr(4) === '*' ? 'lts' : expression.substr(4);\n if (expression === 'stable') expression = 'lts';\n\n if (typeof expression === 'number') return { major: expression };\n if (~expression.indexOf('.')) {\n const parts = expression.split('.');\n if (parts.length === 1) return isNaN(+parts[0]) ? null : { major: +parts[0] };\n if (parts.length === 2) return isNaN(+parts[0]) && isNaN(+parts[1]) ? null : { major: +parts[0], minor: +parts[1] };\n return isNaN(+parts[0]) && isNaN(+parts[1]) && isNaN(+parts[2]) ? null : { major: +parts[0], minor: +parts[1], patch: +parts[2] };\n }\n if (!isNaN(+expression)) return { major: +expression };\n if (expression === 'lts') {\n const lts = schedulesLatest(this.schedules, isLTSFn(now));\n return lts ? { name: lts.name } : null;\n }\n if (expression === 'latest') {\n const latest = schedulesLatest(this.schedules, isLatestFn(now));\n return latest ? { name: latest.name } : null;\n }\n return { codename: expression.toLowerCase() };\n}\n"],"names":["parseExpression","expression","now","isNaN","substr","major","indexOf","parts","split","length","minor","patch","lts","schedulesLatest","schedules","isLTSFn","name","latest","isLatestFn","codename","toLowerCase"],"mappings":"AAAA,+DAA+D;;;;;+BAO/D;;;eAAwBA;;;8DANN;mEAEK;gEACH;wEACQ;;;;;;AAEb,SAASA,gBAAiDC,UAAkB,EAAEC,GAAS;IACpG,IAAID,UAAU,CAAC,EAAE,KAAK,OAAO,CAACE,IAAAA,gBAAK,EAAC,CAACF,WAAWG,MAAM,CAAC,GAAG,KAAKH,aAAaA,WAAWG,MAAM,CAAC;IAC9F,IAAIH,WAAWG,MAAM,CAAC,GAAG,OAAO,QAAQH,aAAaA,WAAWG,MAAM,CAAC,OAAO,MAAM,QAAQH,WAAWG,MAAM,CAAC;IAC9G,IAAIH,eAAe,UAAUA,aAAa;IAE1C,IAAI,OAAOA,eAAe,UAAU,OAAO;QAAEI,OAAOJ;IAAW;IAC/D,IAAI,CAACA,WAAWK,OAAO,CAAC,MAAM;QAC5B,IAAMC,QAAQN,WAAWO,KAAK,CAAC;QAC/B,IAAID,MAAME,MAAM,KAAK,GAAG,OAAON,IAAAA,gBAAK,EAAC,CAACI,KAAK,CAAC,EAAE,IAAI,OAAO;YAAEF,OAAO,CAACE,KAAK,CAAC,EAAE;QAAC;QAC5E,IAAIA,MAAME,MAAM,KAAK,GAAG,OAAON,IAAAA,gBAAK,EAAC,CAACI,KAAK,CAAC,EAAE,KAAKJ,IAAAA,gBAAK,EAAC,CAACI,KAAK,CAAC,EAAE,IAAI,OAAO;YAAEF,OAAO,CAACE,KAAK,CAAC,EAAE;YAAEG,OAAO,CAACH,KAAK,CAAC,EAAE;QAAC;QAClH,OAAOJ,IAAAA,gBAAK,EAAC,CAACI,KAAK,CAAC,EAAE,KAAKJ,IAAAA,gBAAK,EAAC,CAACI,KAAK,CAAC,EAAE,KAAKJ,IAAAA,gBAAK,EAAC,CAACI,KAAK,CAAC,EAAE,IAAI,OAAO;YAAEF,OAAO,CAACE,KAAK,CAAC,EAAE;YAAEG,OAAO,CAACH,KAAK,CAAC,EAAE;YAAEI,OAAO,CAACJ,KAAK,CAAC,EAAE;QAAC;IAClI;IACA,IAAI,CAACJ,IAAAA,gBAAK,EAAC,CAACF,aAAa,OAAO;QAAEI,OAAO,CAACJ;IAAW;IACrD,IAAIA,eAAe,OAAO;QACxB,IAAMW,MAAMC,IAAAA,0BAAe,EAAC,IAAI,CAACC,SAAS,EAAEC,IAAAA,kBAAO,EAACb;QACpD,OAAOU,MAAM;YAAEI,MAAMJ,IAAII,IAAI;QAAC,IAAI;IACpC;IACA,IAAIf,eAAe,UAAU;QAC3B,IAAMgB,SAASJ,IAAAA,0BAAe,EAAC,IAAI,CAACC,SAAS,EAAEI,IAAAA,qBAAU,EAAChB;QAC1D,OAAOe,SAAS;YAAED,MAAMC,OAAOD,IAAI;QAAC,IAAI;IAC1C;IACA,OAAO;QAAEG,UAAUlB,WAAWmB,WAAW;IAAG;AAC9C"}
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "default", {
10
10
  });
11
11
  function isLTSFn(now) {
12
12
  return function isLTS(item) {
13
- return item.lts && now >= item.start && now <= item.end;
13
+ return !!item.lts && now >= item.start && now <= item.end;
14
14
  };
15
15
  }
16
16
  /* 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 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/parseExpression/isLTSFn.ts"],"sourcesContent":["import type { Schedule } from '../types.ts';\n\nexport type Function = (item: Schedule) => boolean;\n\nexport default function isLTSFn(now: Date): Function {\n return function isLTS(item: Schedule): boolean {\n return item.lts && now >= item.start && now <= item.end;\n };\n}\n"],"names":["isLTSFn","now","isLTS","item","lts","start","end"],"mappings":";;;;+BAIA;;;eAAwBA;;;AAAT,SAASA,QAAQC,GAAS;IACvC,OAAO,SAASC,MAAMC,IAAc;QAClC,OAAOA,KAAKC,GAAG,IAAIH,OAAOE,KAAKE,KAAK,IAAIJ,OAAOE,KAAKG,GAAG;IACzD;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/parseExpression/isLTSFn.ts"],"sourcesContent":["import type { Schedule } from '../types.ts';\n\nexport type Function = (item: Schedule) => boolean;\n\nexport default function isLTSFn(now: Date): Function {\n return function isLTS(item: Schedule): boolean {\n return !!item.lts && now >= item.start && now <= item.end;\n };\n}\n"],"names":["isLTSFn","now","isLTS","item","lts","start","end"],"mappings":";;;;+BAIA;;;eAAwBA;;;AAAT,SAASA,QAAQC,GAAS;IACvC,OAAO,SAASC,MAAMC,IAAc;QAClC,OAAO,CAAC,CAACA,KAAKC,GAAG,IAAIH,OAAOE,KAAKE,KAAK,IAAIJ,OAAOE,KAAKG,GAAG;IAC3D;AACF"}
@@ -1,3 +1,3 @@
1
1
  import type { Schedule } from '../types.js';
2
2
  export type Filter = (item: Schedule) => boolean;
3
- export default function schedulesLatest(schedules: Schedule[], filter: Filter): Schedule;
3
+ export default function schedulesLatest(schedules: Schedule[], filter: Filter): Schedule | null;
@@ -1,3 +1,3 @@
1
1
  import type { Schedule } from '../types.js';
2
2
  export type Filter = (item: Schedule) => boolean;
3
- export default function schedulesLatest(schedules: Schedule[], filter: Filter): Schedule;
3
+ export default function schedulesLatest(schedules: Schedule[], filter: Filter): Schedule | null;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/parseExpression/schedulesLatest.ts"],"sourcesContent":["import type { Schedule } from '../types.ts';\n\nexport type Filter = (item: Schedule) => boolean;\n\nexport default function schedulesLatest(schedules: Schedule[], filter: Filter): Schedule {\n let latest = null;\n for (let index = 0; index < schedules.length; index++) {\n const schedule = schedules[index];\n if (!filter(schedule)) continue;\n if (!latest || latest.start < schedule.start) latest = schedule;\n }\n return latest;\n}\n"],"names":["schedulesLatest","schedules","filter","latest","index","length","schedule","start"],"mappings":";;;;+BAIA;;;eAAwBA;;;AAAT,SAASA,gBAAgBC,SAAqB,EAAEC,MAAc;IAC3E,IAAIC,SAAS;IACb,IAAK,IAAIC,QAAQ,GAAGA,QAAQH,UAAUI,MAAM,EAAED,QAAS;QACrD,IAAME,WAAWL,SAAS,CAACG,MAAM;QACjC,IAAI,CAACF,OAAOI,WAAW;QACvB,IAAI,CAACH,UAAUA,OAAOI,KAAK,GAAGD,SAASC,KAAK,EAAEJ,SAASG;IACzD;IACA,OAAOH;AACT"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/parseExpression/schedulesLatest.ts"],"sourcesContent":["import type { Schedule } from '../types.ts';\n\nexport type Filter = (item: Schedule) => boolean;\n\nexport default function schedulesLatest(schedules: Schedule[], filter: Filter): Schedule | null {\n let latest: Schedule | null = null;\n for (let index = 0; index < schedules.length; index++) {\n const schedule = schedules[index];\n if (!filter(schedule)) continue;\n if (!latest || latest.start < schedule.start) latest = schedule;\n }\n return latest;\n}\n"],"names":["schedulesLatest","schedules","filter","latest","index","length","schedule","start"],"mappings":";;;;+BAIA;;;eAAwBA;;;AAAT,SAASA,gBAAgBC,SAAqB,EAAEC,MAAc;IAC3E,IAAIC,SAA0B;IAC9B,IAAK,IAAIC,QAAQ,GAAGA,QAAQH,UAAUI,MAAM,EAAED,QAAS;QACrD,IAAME,WAAWL,SAAS,CAACG,MAAM;QACjC,IAAI,CAACF,OAAOI,WAAW;QACvB,IAAI,CAACH,UAAUA,OAAOI,KAAK,GAAGD,SAASC,KAAK,EAAEJ,SAASG;IACzD;IACA,OAAOH;AACT"}
@@ -16,12 +16,16 @@ let NodeVersions = class NodeVersions {
16
16
  cache.get(DISTS_URL, (err, versions)=>{
17
17
  if (err) return callback(err);
18
18
  cache.get(SCHEDULES_URL, (err, schedule)=>{
19
- err ? callback(err) : callback(null, new NodeVersions(versions, schedule));
19
+ if (err || !versions || !schedule) return callback(err !== null && err !== void 0 ? err : new Error('Missing data'));
20
+ callback(undefined, new NodeVersions(versions, schedule));
20
21
  });
21
22
  });
22
23
  }
23
24
  if (typeof callback === 'function') return worker(options, callback);
24
- return new Promise((resolve, reject)=>worker(options, (err, versions)=>err ? reject(err) : resolve(versions)));
25
+ return new Promise((resolve, reject)=>worker(options, (err, versions)=>{
26
+ if (err || !versions) return reject(err !== null && err !== void 0 ? err : new Error('No versions returned'));
27
+ resolve(versions);
28
+ }));
25
29
  }
26
30
  static loadSync(options) {
27
31
  const cache = new Cache((options === null || options === void 0 ? void 0 : options.cachePath) || CACHE_PATH);
@@ -68,8 +72,9 @@ let NodeVersions = class NodeVersions {
68
72
  if (filters.line && !filters.line(test)) continue;
69
73
  if (!semver.satisfies(test.semver, expression)) continue;
70
74
  if (filters.key) {
71
- if (founds[filters.key(test)]) continue;
72
- founds[filters.key(test)] = true;
75
+ const k = filters.key(test);
76
+ if (founds[k]) continue;
77
+ founds[k] = true;
73
78
  }
74
79
  results.unshift(test[path]);
75
80
  }
@@ -80,7 +85,11 @@ let NodeVersions = class NodeVersions {
80
85
  if (!schedule) throw new Error('Missing option: schedule');
81
86
  this.schedules = [];
82
87
  for(const name in schedule)this.schedules.push(normalizeSchedule(name, schedule[name]));
83
- this.schedules = this.schedules.sort((a, b)=>semver.gt(semver.coerce(a.semver), semver.coerce(b.semver)) ? 1 : -1);
88
+ this.schedules = this.schedules.sort((a, b)=>{
89
+ var _ref, _ref1;
90
+ var _semver_coerce, _semver_coerce1;
91
+ return semver.gt((_ref = (_semver_coerce = semver.coerce(a.semver)) === null || _semver_coerce === void 0 ? void 0 : _semver_coerce.version) !== null && _ref !== void 0 ? _ref : '0.0.0', (_ref1 = (_semver_coerce1 = semver.coerce(b.semver)) === null || _semver_coerce1 === void 0 ? void 0 : _semver_coerce1.version) !== null && _ref1 !== void 0 ? _ref1 : '0.0.0') ? 1 : -1;
92
+ });
84
93
  this.versions = [];
85
94
  for(let index = 0; index < versions.length; index++)this.versions.push(normalizeVersion(versions[index], this.schedules));
86
95
  this.versions = this.versions.sort((a, b)=>semver.gt(a.semver, b.semver) ? -1 : 1);
@@ -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), semver.coerce(b.semver)) ? 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, callback) {\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(SCHEDULES_URL, (err, schedule: ScheduleRaw[]) => {\n err ? callback(err) : callback(null, new NodeVersions(versions, schedule));\n });\n });\n }\n\n if (typeof callback === 'function') return worker(options, callback);\n return new Promise((resolve, reject) => worker(options, (err, versions) => (err ? reject(err) : resolve(versions))));\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 = 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, query)) continue;\n version = test;\n break;\n }\n if (version) return version[path];\n }\n\n // filtered expression\n const range = options.range || '';\n const filters = { lts: !!~range.indexOf('lts'), key: undefined, line: undefined };\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 = [];\n const founds = {};\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 if (founds[filters.key(test)]) continue;\n founds[filters.key(test)] = true;\n }\n results.unshift(test[path]);\n }\n return results;\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","Promise","resolve","reject","loadSync","getSync","expression","path","trim","query","call","now","Date","version","index","length","test","date","range","filters","lts","indexOf","key","undefined","line","results","founds","satisfies","unshift","Error","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 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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"}
@@ -26,9 +26,8 @@ cacheWithRetry((err)=>{
26
26
  if (err) {
27
27
  console.log(`postinstall warning: ${err.message}`);
28
28
  console.log('Cache not updated after retries.');
29
- exit(0);
30
- } else {
31
- console.log('postinstall succeeded');
32
- exit(0);
29
+ return exit(0);
33
30
  }
31
+ console.log('postinstall succeeded');
32
+ exit(0);
34
33
  });
@@ -1 +1 @@
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 exit(0);\n } else {\n console.log('postinstall succeeded');\n exit(0);\n }\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,MAAMA,OAAOC,QAAQ;AACrB,MAAMC,QAAQD,QAAQ;AACtB,MAAM,EAAEE,UAAU,EAAEC,SAAS,EAAEC,aAAa,EAAE,GAAGJ,QAAQ;AAIzD,SAASK,eAAeC,KAA6B,EAAEC,GAAW,EAAEC,OAAe,EAAEC,QAAkB;IACrGH,MAAMI,GAAG,CAACH,KAAK;QAAEI,OAAO;IAAK,GAAG,CAACC;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,MAAMH,QAAQ,IAAIL,MAAMC;IACxBG,eAAeC,OAAOH,WAAW,GAAG,CAACS;QACnC,IAAIA,KAAK,OAAOH,SAASG;QACzBP,eAAeC,OAAOF,eAAe,GAAGK;IAC1C;AACF;AAEA,YAAY;AACZK,eAAe,CAACF;IACd,IAAIA,KAAK;QACPG,QAAQC,GAAG,CAAC,CAAC,qBAAqB,EAAEJ,IAAIK,OAAO,EAAE;QACjDF,QAAQC,GAAG,CAAC;QACZjB,KAAK;IACP,OAAO;QACLgB,QAAQC,GAAG,CAAC;QACZjB,KAAK;IACP;AACF"}
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,MAAMA,OAAOC,QAAQ;AACrB,MAAMC,QAAQD,QAAQ;AACtB,MAAM,EAAEE,UAAU,EAAEC,SAAS,EAAEC,aAAa,EAAE,GAAGJ,QAAQ;AAIzD,SAASK,eAAeC,KAA6B,EAAEC,GAAW,EAAEC,OAAe,EAAEC,QAAkB;IACrGH,MAAMI,GAAG,CAACH,KAAK;QAAEI,OAAO;IAAK,GAAG,CAACC;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,MAAMH,QAAQ,IAAIL,MAAMC;IACxBG,eAAeC,OAAOH,WAAW,GAAG,CAACS;QACnC,IAAIA,KAAK,OAAOH,SAASG;QACzBP,eAAeC,OAAOF,eAAe,GAAGK;IAC1C;AACF;AAEA,YAAY;AACZK,eAAe,CAACF;IACd,IAAIA,KAAK;QACPG,QAAQC,GAAG,CAAC,CAAC,qBAAqB,EAAEJ,IAAIK,OAAO,EAAE;QACjDF,QAAQC,GAAG,CAAC;QACZ,OAAOjB,KAAK;IACd;IAEAgB,QAAQC,GAAG,CAAC;IACZjB,KAAK;AACP"}
package/dist/esm/cli.d.ts CHANGED
File without changes
package/dist/esm/cli.js CHANGED
@@ -78,14 +78,12 @@ export default ((argv, name)=>{
78
78
  NodeVersions.load(options, (err, semvers)=>{
79
79
  if (err) {
80
80
  console.log(err.message);
81
- exit(ERROR_CODE);
82
- return;
81
+ return exit(ERROR_CODE);
83
82
  }
84
- const version = semvers.resolve(args[0], options);
83
+ const version = semvers === null || semvers === void 0 ? void 0 : semvers.resolve(args[0], options);
85
84
  if (!version || isArray(version) && !version.length) {
86
85
  console.log(`Unrecognized: ${args[0]}`);
87
- exit(ERROR_CODE);
88
- return;
86
+ return exit(ERROR_CODE);
89
87
  }
90
88
  console.log('versions:');
91
89
  if (isArray(version)) {
@@ -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 NodeVersions, { type LoadOptions, type 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) {\n return typeof value === 'string' ? value : JSON.stringify(value);\n }\n\n NodeVersions.load(options as LoadOptions, (err, semvers) => {\n if (err) {\n console.log(err.message);\n exit(ERROR_CODE);\n return;\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 exit(ERROR_CODE);\n return;\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"],"names":["exit","fs","getopts","path","url","NodeVersions","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","load","err","semvers","message","resolve","index"],"mappings":"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"}
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 NodeVersions, { type LoadOptions, type 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 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"],"names":["exit","fs","getopts","path","url","NodeVersions","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","load","err","semvers","message","resolve","index"],"mappings":"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"}
@@ -1 +1 @@
1
- export default function match(test: object, query: object): boolean;
1
+ export default function match(test: Record<string, unknown>, query: Record<string, unknown>): boolean;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/lib/match.ts"],"sourcesContent":["export default function match(test: object, query: object): boolean {\n for (const key in query) {\n if (test[key] !== query[key]) return false;\n }\n return true;\n}\n"],"names":["match","test","query","key"],"mappings":"AAAA,eAAe,SAASA,MAAMC,IAAY,EAAEC,KAAa;IACvD,IAAK,MAAMC,OAAOD,MAAO;QACvB,IAAID,IAAI,CAACE,IAAI,KAAKD,KAAK,CAACC,IAAI,EAAE,OAAO;IACvC;IACA,OAAO;AACT"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/lib/match.ts"],"sourcesContent":["export default function match(test: Record<string, unknown>, query: Record<string, unknown>): boolean {\n for (const key in query) {\n if (test[key] !== query[key]) return false;\n }\n return true;\n}\n"],"names":["match","test","query","key"],"mappings":"AAAA,eAAe,SAASA,MAAMC,IAA6B,EAAEC,KAA8B;IACzF,IAAK,MAAMC,OAAOD,MAAO;QACvB,IAAID,IAAI,CAACE,IAAI,KAAKD,KAAK,CAACC,IAAI,EAAE,OAAO;IACvC;IACA,OAAO;AACT"}
@@ -19,6 +19,6 @@ export default function normalizeVersion(raw, schedules) {
19
19
  break;
20
20
  }
21
21
  }
22
- if (schedule && raw.lts) version.codename = schedule.codename;
22
+ if (schedule && raw.lts) version.codename = schedule.codename || '';
23
23
  return version;
24
24
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/lib/normalizeVersion.ts"],"sourcesContent":["import type { Schedule, Version, VersionRaw } from '../types.ts';\n\nexport default function normalizeVersion(raw: VersionRaw, schedules: Schedule[]): Version {\n const parts = raw.version.substr(1).split('.');\n\n const version = {\n version: raw.version,\n name: parts[0] !== '0' ? `v${+parts[0]}` : `v${+parts[0]}.${+parts[1]}`,\n semver: `${parts[0]}.${+parts[1]}.${+parts[2]}`,\n major: +parts[0],\n minor: +parts[1],\n patch: +parts[2],\n lts: raw.lts,\n date: new Date(raw.date),\n raw: raw,\n } as Version;\n\n let schedule = null;\n for (let index = 0; index < schedules.length; index++) {\n const test = schedules[index];\n if (test.name === version.name) {\n schedule = test;\n break;\n }\n }\n if (schedule && raw.lts) version.codename = schedule.codename;\n return version;\n}\n"],"names":["normalizeVersion","raw","schedules","parts","version","substr","split","name","semver","major","minor","patch","lts","date","Date","schedule","index","length","test","codename"],"mappings":"AAEA,eAAe,SAASA,iBAAiBC,GAAe,EAAEC,SAAqB;IAC7E,MAAMC,QAAQF,IAAIG,OAAO,CAACC,MAAM,CAAC,GAAGC,KAAK,CAAC;IAE1C,MAAMF,UAAU;QACdA,SAASH,IAAIG,OAAO;QACpBG,MAAMJ,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,EAAE,CAACA,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAACA,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAACA,KAAK,CAAC,EAAE,EAAE;QACvEK,QAAQ,GAAGL,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAACA,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAACA,KAAK,CAAC,EAAE,EAAE;QAC/CM,OAAO,CAACN,KAAK,CAAC,EAAE;QAChBO,OAAO,CAACP,KAAK,CAAC,EAAE;QAChBQ,OAAO,CAACR,KAAK,CAAC,EAAE;QAChBS,KAAKX,IAAIW,GAAG;QACZC,MAAM,IAAIC,KAAKb,IAAIY,IAAI;QACvBZ,KAAKA;IACP;IAEA,IAAIc,WAAW;IACf,IAAK,IAAIC,QAAQ,GAAGA,QAAQd,UAAUe,MAAM,EAAED,QAAS;QACrD,MAAME,OAAOhB,SAAS,CAACc,MAAM;QAC7B,IAAIE,KAAKX,IAAI,KAAKH,QAAQG,IAAI,EAAE;YAC9BQ,WAAWG;YACX;QACF;IACF;IACA,IAAIH,YAAYd,IAAIW,GAAG,EAAER,QAAQe,QAAQ,GAAGJ,SAASI,QAAQ;IAC7D,OAAOf;AACT"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/lib/normalizeVersion.ts"],"sourcesContent":["import type { Schedule, Version, VersionRaw } from '../types.ts';\n\nexport default function normalizeVersion(raw: VersionRaw, schedules: Schedule[]): Version {\n const parts = raw.version.substr(1).split('.');\n\n const version = {\n version: raw.version,\n name: parts[0] !== '0' ? `v${+parts[0]}` : `v${+parts[0]}.${+parts[1]}`,\n semver: `${parts[0]}.${+parts[1]}.${+parts[2]}`,\n major: +parts[0],\n minor: +parts[1],\n patch: +parts[2],\n lts: raw.lts,\n date: new Date(raw.date),\n raw: raw,\n } as Version;\n\n let schedule: Schedule | null = null;\n for (let index = 0; index < schedules.length; index++) {\n const test = schedules[index];\n if (test.name === version.name) {\n schedule = test;\n break;\n }\n }\n if (schedule && raw.lts) version.codename = schedule.codename || '';\n return version;\n}\n"],"names":["normalizeVersion","raw","schedules","parts","version","substr","split","name","semver","major","minor","patch","lts","date","Date","schedule","index","length","test","codename"],"mappings":"AAEA,eAAe,SAASA,iBAAiBC,GAAe,EAAEC,SAAqB;IAC7E,MAAMC,QAAQF,IAAIG,OAAO,CAACC,MAAM,CAAC,GAAGC,KAAK,CAAC;IAE1C,MAAMF,UAAU;QACdA,SAASH,IAAIG,OAAO;QACpBG,MAAMJ,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,EAAE,CAACA,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAACA,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAACA,KAAK,CAAC,EAAE,EAAE;QACvEK,QAAQ,GAAGL,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAACA,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAACA,KAAK,CAAC,EAAE,EAAE;QAC/CM,OAAO,CAACN,KAAK,CAAC,EAAE;QAChBO,OAAO,CAACP,KAAK,CAAC,EAAE;QAChBQ,OAAO,CAACR,KAAK,CAAC,EAAE;QAChBS,KAAKX,IAAIW,GAAG;QACZC,MAAM,IAAIC,KAAKb,IAAIY,IAAI;QACvBZ,KAAKA;IACP;IAEA,IAAIc,WAA4B;IAChC,IAAK,IAAIC,QAAQ,GAAGA,QAAQd,UAAUe,MAAM,EAAED,QAAS;QACrD,MAAME,OAAOhB,SAAS,CAACc,MAAM;QAC7B,IAAIE,KAAKX,IAAI,KAAKH,QAAQG,IAAI,EAAE;YAC9BQ,WAAWG;YACX;QACF;IACF;IACA,IAAIH,YAAYd,IAAIW,GAAG,EAAER,QAAQe,QAAQ,GAAGJ,SAASI,QAAQ,IAAI;IACjE,OAAOf;AACT"}
@@ -1,2 +1,4 @@
1
- import type { ParsedExpression } from '../types.js';
2
- export default function parseExpression(expression: string, now: Date): ParsedExpression;
1
+ import type { ParsedExpression, Schedule } from '../types.js';
2
+ export default function parseExpression(this: {
3
+ schedules: Schedule[];
4
+ }, expression: string, now: Date): ParsedExpression | null;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/parseExpression/index.ts"],"sourcesContent":["// biome-ignore lint/suspicious/noShadowRestrictedNames: Legacy\nimport isNaN from '../lib/isNaN.ts';\nimport type { ParsedExpression } from '../types.ts';\nimport isLatestFn from './isLatestFn.ts';\nimport isLTSFn from './isLTSFn.ts';\nimport schedulesLatest from './schedulesLatest.ts';\n\nexport default function parseExpression(expression: string, now: Date): ParsedExpression {\n if (expression[0] === 'v' && !isNaN(+expression.substr(1, 1))) expression = expression.substr(1);\n if (expression.substr(0, 4) === 'lts/') expression = expression.substr(4) === '*' ? 'lts' : expression.substr(4);\n if (expression === 'stable') expression = 'lts';\n\n if (typeof expression === 'number') return { major: expression };\n if (~expression.indexOf('.')) {\n const parts = expression.split('.');\n if (parts.length === 1) return isNaN(+parts[0]) ? null : { major: +parts[0] };\n if (parts.length === 2) return isNaN(+parts[0]) && isNaN(+parts[1]) ? null : { major: +parts[0], minor: +parts[1] };\n return isNaN(+parts[0]) && isNaN(+parts[1]) && isNaN(+parts[2]) ? null : { major: +parts[0], minor: +parts[1], patch: +parts[2] };\n }\n if (!isNaN(+expression)) return { major: +expression };\n if (expression === 'lts') {\n const lts = schedulesLatest(this.schedules, isLTSFn(now));\n return lts ? { name: lts.name } : null;\n }\n if (expression === 'latest') {\n const latest = schedulesLatest(this.schedules, isLatestFn(now));\n return latest ? { name: latest.name } : null;\n }\n return { codename: expression.toLowerCase() };\n}\n"],"names":["isNaN","isLatestFn","isLTSFn","schedulesLatest","parseExpression","expression","now","substr","major","indexOf","parts","split","length","minor","patch","lts","schedules","name","latest","codename","toLowerCase"],"mappings":"AAAA,+DAA+D;AAC/D,OAAOA,WAAW,kBAAkB;AAEpC,OAAOC,gBAAgB,kBAAkB;AACzC,OAAOC,aAAa,eAAe;AACnC,OAAOC,qBAAqB,uBAAuB;AAEnD,eAAe,SAASC,gBAAgBC,UAAkB,EAAEC,GAAS;IACnE,IAAID,UAAU,CAAC,EAAE,KAAK,OAAO,CAACL,MAAM,CAACK,WAAWE,MAAM,CAAC,GAAG,KAAKF,aAAaA,WAAWE,MAAM,CAAC;IAC9F,IAAIF,WAAWE,MAAM,CAAC,GAAG,OAAO,QAAQF,aAAaA,WAAWE,MAAM,CAAC,OAAO,MAAM,QAAQF,WAAWE,MAAM,CAAC;IAC9G,IAAIF,eAAe,UAAUA,aAAa;IAE1C,IAAI,OAAOA,eAAe,UAAU,OAAO;QAAEG,OAAOH;IAAW;IAC/D,IAAI,CAACA,WAAWI,OAAO,CAAC,MAAM;QAC5B,MAAMC,QAAQL,WAAWM,KAAK,CAAC;QAC/B,IAAID,MAAME,MAAM,KAAK,GAAG,OAAOZ,MAAM,CAACU,KAAK,CAAC,EAAE,IAAI,OAAO;YAAEF,OAAO,CAACE,KAAK,CAAC,EAAE;QAAC;QAC5E,IAAIA,MAAME,MAAM,KAAK,GAAG,OAAOZ,MAAM,CAACU,KAAK,CAAC,EAAE,KAAKV,MAAM,CAACU,KAAK,CAAC,EAAE,IAAI,OAAO;YAAEF,OAAO,CAACE,KAAK,CAAC,EAAE;YAAEG,OAAO,CAACH,KAAK,CAAC,EAAE;QAAC;QAClH,OAAOV,MAAM,CAACU,KAAK,CAAC,EAAE,KAAKV,MAAM,CAACU,KAAK,CAAC,EAAE,KAAKV,MAAM,CAACU,KAAK,CAAC,EAAE,IAAI,OAAO;YAAEF,OAAO,CAACE,KAAK,CAAC,EAAE;YAAEG,OAAO,CAACH,KAAK,CAAC,EAAE;YAAEI,OAAO,CAACJ,KAAK,CAAC,EAAE;QAAC;IAClI;IACA,IAAI,CAACV,MAAM,CAACK,aAAa,OAAO;QAAEG,OAAO,CAACH;IAAW;IACrD,IAAIA,eAAe,OAAO;QACxB,MAAMU,MAAMZ,gBAAgB,IAAI,CAACa,SAAS,EAAEd,QAAQI;QACpD,OAAOS,MAAM;YAAEE,MAAMF,IAAIE,IAAI;QAAC,IAAI;IACpC;IACA,IAAIZ,eAAe,UAAU;QAC3B,MAAMa,SAASf,gBAAgB,IAAI,CAACa,SAAS,EAAEf,WAAWK;QAC1D,OAAOY,SAAS;YAAED,MAAMC,OAAOD,IAAI;QAAC,IAAI;IAC1C;IACA,OAAO;QAAEE,UAAUd,WAAWe,WAAW;IAAG;AAC9C"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/parseExpression/index.ts"],"sourcesContent":["// biome-ignore lint/suspicious/noShadowRestrictedNames: Legacy\nimport isNaN from '../lib/isNaN.ts';\nimport type { ParsedExpression, Schedule } from '../types.ts';\nimport isLatestFn from './isLatestFn.ts';\nimport isLTSFn from './isLTSFn.ts';\nimport schedulesLatest from './schedulesLatest.ts';\n\nexport default function parseExpression(this: { schedules: Schedule[] }, expression: string, now: Date): ParsedExpression | null {\n if (expression[0] === 'v' && !isNaN(+expression.substr(1, 1))) expression = expression.substr(1);\n if (expression.substr(0, 4) === 'lts/') expression = expression.substr(4) === '*' ? 'lts' : expression.substr(4);\n if (expression === 'stable') expression = 'lts';\n\n if (typeof expression === 'number') return { major: expression };\n if (~expression.indexOf('.')) {\n const parts = expression.split('.');\n if (parts.length === 1) return isNaN(+parts[0]) ? null : { major: +parts[0] };\n if (parts.length === 2) return isNaN(+parts[0]) && isNaN(+parts[1]) ? null : { major: +parts[0], minor: +parts[1] };\n return isNaN(+parts[0]) && isNaN(+parts[1]) && isNaN(+parts[2]) ? null : { major: +parts[0], minor: +parts[1], patch: +parts[2] };\n }\n if (!isNaN(+expression)) return { major: +expression };\n if (expression === 'lts') {\n const lts = schedulesLatest(this.schedules, isLTSFn(now));\n return lts ? { name: lts.name } : null;\n }\n if (expression === 'latest') {\n const latest = schedulesLatest(this.schedules, isLatestFn(now));\n return latest ? { name: latest.name } : null;\n }\n return { codename: expression.toLowerCase() };\n}\n"],"names":["isNaN","isLatestFn","isLTSFn","schedulesLatest","parseExpression","expression","now","substr","major","indexOf","parts","split","length","minor","patch","lts","schedules","name","latest","codename","toLowerCase"],"mappings":"AAAA,+DAA+D;AAC/D,OAAOA,WAAW,kBAAkB;AAEpC,OAAOC,gBAAgB,kBAAkB;AACzC,OAAOC,aAAa,eAAe;AACnC,OAAOC,qBAAqB,uBAAuB;AAEnD,eAAe,SAASC,gBAAiDC,UAAkB,EAAEC,GAAS;IACpG,IAAID,UAAU,CAAC,EAAE,KAAK,OAAO,CAACL,MAAM,CAACK,WAAWE,MAAM,CAAC,GAAG,KAAKF,aAAaA,WAAWE,MAAM,CAAC;IAC9F,IAAIF,WAAWE,MAAM,CAAC,GAAG,OAAO,QAAQF,aAAaA,WAAWE,MAAM,CAAC,OAAO,MAAM,QAAQF,WAAWE,MAAM,CAAC;IAC9G,IAAIF,eAAe,UAAUA,aAAa;IAE1C,IAAI,OAAOA,eAAe,UAAU,OAAO;QAAEG,OAAOH;IAAW;IAC/D,IAAI,CAACA,WAAWI,OAAO,CAAC,MAAM;QAC5B,MAAMC,QAAQL,WAAWM,KAAK,CAAC;QAC/B,IAAID,MAAME,MAAM,KAAK,GAAG,OAAOZ,MAAM,CAACU,KAAK,CAAC,EAAE,IAAI,OAAO;YAAEF,OAAO,CAACE,KAAK,CAAC,EAAE;QAAC;QAC5E,IAAIA,MAAME,MAAM,KAAK,GAAG,OAAOZ,MAAM,CAACU,KAAK,CAAC,EAAE,KAAKV,MAAM,CAACU,KAAK,CAAC,EAAE,IAAI,OAAO;YAAEF,OAAO,CAACE,KAAK,CAAC,EAAE;YAAEG,OAAO,CAACH,KAAK,CAAC,EAAE;QAAC;QAClH,OAAOV,MAAM,CAACU,KAAK,CAAC,EAAE,KAAKV,MAAM,CAACU,KAAK,CAAC,EAAE,KAAKV,MAAM,CAACU,KAAK,CAAC,EAAE,IAAI,OAAO;YAAEF,OAAO,CAACE,KAAK,CAAC,EAAE;YAAEG,OAAO,CAACH,KAAK,CAAC,EAAE;YAAEI,OAAO,CAACJ,KAAK,CAAC,EAAE;QAAC;IAClI;IACA,IAAI,CAACV,MAAM,CAACK,aAAa,OAAO;QAAEG,OAAO,CAACH;IAAW;IACrD,IAAIA,eAAe,OAAO;QACxB,MAAMU,MAAMZ,gBAAgB,IAAI,CAACa,SAAS,EAAEd,QAAQI;QACpD,OAAOS,MAAM;YAAEE,MAAMF,IAAIE,IAAI;QAAC,IAAI;IACpC;IACA,IAAIZ,eAAe,UAAU;QAC3B,MAAMa,SAASf,gBAAgB,IAAI,CAACa,SAAS,EAAEf,WAAWK;QAC1D,OAAOY,SAAS;YAAED,MAAMC,OAAOD,IAAI;QAAC,IAAI;IAC1C;IACA,OAAO;QAAEE,UAAUd,WAAWe,WAAW;IAAG;AAC9C"}
@@ -1,5 +1,5 @@
1
1
  export default function isLTSFn(now) {
2
2
  return function isLTS(item) {
3
- return item.lts && now >= item.start && now <= item.end;
3
+ return !!item.lts && now >= item.start && now <= item.end;
4
4
  };
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/parseExpression/isLTSFn.ts"],"sourcesContent":["import type { Schedule } from '../types.ts';\n\nexport type Function = (item: Schedule) => boolean;\n\nexport default function isLTSFn(now: Date): Function {\n return function isLTS(item: Schedule): boolean {\n return item.lts && now >= item.start && now <= item.end;\n };\n}\n"],"names":["isLTSFn","now","isLTS","item","lts","start","end"],"mappings":"AAIA,eAAe,SAASA,QAAQC,GAAS;IACvC,OAAO,SAASC,MAAMC,IAAc;QAClC,OAAOA,KAAKC,GAAG,IAAIH,OAAOE,KAAKE,KAAK,IAAIJ,OAAOE,KAAKG,GAAG;IACzD;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/parseExpression/isLTSFn.ts"],"sourcesContent":["import type { Schedule } from '../types.ts';\n\nexport type Function = (item: Schedule) => boolean;\n\nexport default function isLTSFn(now: Date): Function {\n return function isLTS(item: Schedule): boolean {\n return !!item.lts && now >= item.start && now <= item.end;\n };\n}\n"],"names":["isLTSFn","now","isLTS","item","lts","start","end"],"mappings":"AAIA,eAAe,SAASA,QAAQC,GAAS;IACvC,OAAO,SAASC,MAAMC,IAAc;QAClC,OAAO,CAAC,CAACA,KAAKC,GAAG,IAAIH,OAAOE,KAAKE,KAAK,IAAIJ,OAAOE,KAAKG,GAAG;IAC3D;AACF"}
@@ -1,3 +1,3 @@
1
1
  import type { Schedule } from '../types.js';
2
2
  export type Filter = (item: Schedule) => boolean;
3
- export default function schedulesLatest(schedules: Schedule[], filter: Filter): Schedule;
3
+ export default function schedulesLatest(schedules: Schedule[], filter: Filter): Schedule | null;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/parseExpression/schedulesLatest.ts"],"sourcesContent":["import type { Schedule } from '../types.ts';\n\nexport type Filter = (item: Schedule) => boolean;\n\nexport default function schedulesLatest(schedules: Schedule[], filter: Filter): Schedule {\n let latest = null;\n for (let index = 0; index < schedules.length; index++) {\n const schedule = schedules[index];\n if (!filter(schedule)) continue;\n if (!latest || latest.start < schedule.start) latest = schedule;\n }\n return latest;\n}\n"],"names":["schedulesLatest","schedules","filter","latest","index","length","schedule","start"],"mappings":"AAIA,eAAe,SAASA,gBAAgBC,SAAqB,EAAEC,MAAc;IAC3E,IAAIC,SAAS;IACb,IAAK,IAAIC,QAAQ,GAAGA,QAAQH,UAAUI,MAAM,EAAED,QAAS;QACrD,MAAME,WAAWL,SAAS,CAACG,MAAM;QACjC,IAAI,CAACF,OAAOI,WAAW;QACvB,IAAI,CAACH,UAAUA,OAAOI,KAAK,GAAGD,SAASC,KAAK,EAAEJ,SAASG;IACzD;IACA,OAAOH;AACT"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-semvers/src/parseExpression/schedulesLatest.ts"],"sourcesContent":["import type { Schedule } from '../types.ts';\n\nexport type Filter = (item: Schedule) => boolean;\n\nexport default function schedulesLatest(schedules: Schedule[], filter: Filter): Schedule | null {\n let latest: Schedule | null = null;\n for (let index = 0; index < schedules.length; index++) {\n const schedule = schedules[index];\n if (!filter(schedule)) continue;\n if (!latest || latest.start < schedule.start) latest = schedule;\n }\n return latest;\n}\n"],"names":["schedulesLatest","schedules","filter","latest","index","length","schedule","start"],"mappings":"AAIA,eAAe,SAASA,gBAAgBC,SAAqB,EAAEC,MAAc;IAC3E,IAAIC,SAA0B;IAC9B,IAAK,IAAIC,QAAQ,GAAGA,QAAQH,UAAUI,MAAM,EAAED,QAAS;QACrD,MAAME,WAAWL,SAAS,CAACG,MAAM;QACjC,IAAI,CAACF,OAAOI,WAAW;QACvB,IAAI,CAACH,UAAUA,OAAOI,KAAK,GAAGD,SAASC,KAAK,EAAEJ,SAASG;IACzD;IACA,OAAOH;AACT"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-semvers",
3
- "version": "1.7.0",
3
+ "version": "1.7.2",
4
4
  "description": "Utilities for managing versions of node including looking up codenames",
5
5
  "keywords": [
6
6
  "node",
@@ -55,6 +55,7 @@
55
55
  "devDependencies": {
56
56
  "@types/mocha": "*",
57
57
  "@types/node": "*",
58
+ "@types/semver": "^7.7.1",
58
59
  "cr": "^0.1.0",
59
60
  "cross-spawn-cb": "^3.0.0",
60
61
  "fs-remove-compat": "^1.0.0",