node-version-use 1.7.15 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/cli.js CHANGED
@@ -10,54 +10,13 @@ Object.defineProperty(exports, "default", {
10
10
  });
11
11
  var _exit = /*#__PURE__*/ _interop_require_default(require("exit"));
12
12
  var _getoptscompat = /*#__PURE__*/ _interop_require_default(require("getopts-compat"));
13
- var _spawnterm = /*#__PURE__*/ _interop_require_wildcard(require("spawn-term"));
14
13
  var _indexts = /*#__PURE__*/ _interop_require_default(require("./index.js"));
14
+ var _loadSpawnTermts = /*#__PURE__*/ _interop_require_default(require("./lib/loadSpawnTerm.js"));
15
15
  function _interop_require_default(obj) {
16
16
  return obj && obj.__esModule ? obj : {
17
17
  default: obj
18
18
  };
19
19
  }
20
- function _getRequireWildcardCache(nodeInterop) {
21
- if (typeof WeakMap !== "function") return null;
22
- var cacheBabelInterop = new WeakMap();
23
- var cacheNodeInterop = new WeakMap();
24
- return (_getRequireWildcardCache = function(nodeInterop) {
25
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
26
- })(nodeInterop);
27
- }
28
- function _interop_require_wildcard(obj, nodeInterop) {
29
- if (!nodeInterop && obj && obj.__esModule) {
30
- return obj;
31
- }
32
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
33
- return {
34
- default: obj
35
- };
36
- }
37
- var cache = _getRequireWildcardCache(nodeInterop);
38
- if (cache && cache.has(obj)) {
39
- return cache.get(obj);
40
- }
41
- var newObj = {
42
- __proto__: null
43
- };
44
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
45
- for(var key in obj){
46
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
47
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
48
- if (desc && (desc.get || desc.set)) {
49
- Object.defineProperty(newObj, key, desc);
50
- } else {
51
- newObj[key] = obj[key];
52
- }
53
- }
54
- }
55
- newObj.default = obj;
56
- if (cache) {
57
- cache.set(obj, newObj);
58
- }
59
- return newObj;
60
- }
61
20
  var ERROR_CODE = 13;
62
21
  var _default = function(argv, name) {
63
22
  var options = (0, _getoptscompat.default)(argv, {
@@ -102,18 +61,24 @@ var _default = function(argv, name) {
102
61
  return !!result.error;
103
62
  });
104
63
  if (!options.silent) {
105
- if (!_spawnterm.default) {
106
- console.log('\n======================');
107
- results.forEach(function(res) {
108
- console.log("".concat(res.error ? _spawnterm.figures.cross : _spawnterm.figures.tick, " ").concat(res.version).concat(res.error ? " Error: ".concat(res.error.message) : ''));
109
- });
110
- }
111
- console.log('\n----------------------');
112
- console.log("".concat(name, " ").concat((0, _spawnterm.formatArguments)(args).join(' ')));
113
- console.log("".concat(_spawnterm.figures.tick, " ").concat(results.length - errors.length, " succeeded"));
114
- if (errors.length) console.log("".concat(_spawnterm.figures.cross, " ").concat(errors.length, " failed"));
64
+ // Load spawn-term to get figures/formatArguments for output formatting
65
+ (0, _loadSpawnTermts.default)(function(_loadErr, param) {
66
+ var spawnTerm = param.spawnTerm, figures = param.figures, formatArguments = param.formatArguments;
67
+ if (!spawnTerm) {
68
+ console.log('\n======================');
69
+ results.forEach(function(res) {
70
+ console.log("".concat(res.error ? figures.cross : figures.tick, " ").concat(res.version).concat(res.error ? " Error: ".concat(res.error.message) : ''));
71
+ });
72
+ console.log('\n----------------------');
73
+ console.log("".concat(name, " ").concat(formatArguments(args).join(' ')));
74
+ console.log("".concat(figures.tick, " ").concat(results.length - errors.length, " succeeded"));
75
+ if (errors.length) console.log("".concat(figures.cross, " ").concat(errors.length, " failed"));
76
+ }
77
+ (0, _exit.default)(err || errors.length ? ERROR_CODE : 0);
78
+ });
79
+ } else {
80
+ (0, _exit.default)(err || errors.length ? ERROR_CODE : 0);
115
81
  }
116
- (0, _exit.default)(err || errors.length ? ERROR_CODE : 0);
117
82
  });
118
83
  };
119
84
  /* 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-version-use/src/cli.ts"],"sourcesContent":["import exit from 'exit';\nimport getopts from 'getopts-compat';\nimport spawnTerm, { figures, formatArguments } from 'spawn-term';\nimport run from './index.ts';\nimport type { UseError, UseOptions, UseResult } from './types.ts';\n\nconst ERROR_CODE = 13;\n\nexport default (argv: string[], name: string): undefined => {\n const options = getopts(argv, {\n alias: { range: 'r', desc: 'd', expanded: 'e', streaming: 's', silent: 'si' },\n default: { range: 'major,even' },\n boolean: ['silent', 'desc', 'expanded', 'streaming'],\n stopEarly: true,\n });\n\n // define.option('-r, --range [range]', 'range type of major, minor, or patch with filters of lts, even, odd for version string expressions', 'major,even');\n // define.option('-s, --silent', 'suppress logging', false);\n options.sort = options.desc ? -1 : 1;\n\n const args = options._;\n if (args.length === 0) {\n console.log(`Missing version expression. Example usage: ${name} version command arg1 arg2`);\n return exit(ERROR_CODE);\n }\n if (args.length === 1) {\n console.log(`Missing command. Example usage: ${name} version command arg1 arg2`);\n return exit(ERROR_CODE);\n }\n\n options.stdio = 'inherit'; // pass through stdio\n return run(args[0], args[1], args.slice(2), options as unknown as UseOptions, (err: UseError, results: UseResult[]): undefined => {\n if (err && !err.results) {\n console.log(err.message);\n return exit(ERROR_CODE);\n }\n if (err) results = err.results;\n const errors = results.filter((result) => !!result.error);\n\n if (!options.silent) {\n if (!spawnTerm) {\n console.log('\\n======================');\n results.forEach((res) => {\n console.log(`${res.error ? figures.cross : figures.tick} ${res.version}${res.error ? ` Error: ${res.error.message}` : ''}`);\n });\n }\n console.log('\\n----------------------');\n console.log(`${name} ${formatArguments(args).join(' ')}`);\n console.log(`${figures.tick} ${results.length - errors.length} succeeded`);\n if (errors.length) console.log(`${figures.cross} ${errors.length} failed`);\n }\n exit(err || errors.length ? ERROR_CODE : 0);\n });\n};\n"],"names":["ERROR_CODE","argv","name","options","getopts","alias","range","desc","expanded","streaming","silent","default","boolean","stopEarly","sort","args","_","length","console","log","exit","stdio","run","slice","err","results","message","errors","filter","result","error","spawnTerm","forEach","res","figures","cross","tick","version","formatArguments","join"],"mappings":";;;;+BAQA;;;eAAA;;;2DARiB;oEACG;iEACgC;8DACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGhB,IAAMA,aAAa;IAEnB,WAAe,SAACC,MAAgBC;IAC9B,IAAMC,UAAUC,IAAAA,sBAAO,EAACH,MAAM;QAC5BI,OAAO;YAAEC,OAAO;YAAKC,MAAM;YAAKC,UAAU;YAAKC,WAAW;YAAKC,QAAQ;QAAK;QAC5EC,SAAS;YAAEL,OAAO;QAAa;QAC/BM,SAAS;YAAC;YAAU;YAAQ;YAAY;SAAY;QACpDC,WAAW;IACb;IAEA,4JAA4J;IAC5J,4DAA4D;IAC5DV,QAAQW,IAAI,GAAGX,QAAQI,IAAI,GAAG,CAAC,IAAI;IAEnC,IAAMQ,OAAOZ,QAAQa,CAAC;IACtB,IAAID,KAAKE,MAAM,KAAK,GAAG;QACrBC,QAAQC,GAAG,CAAC,AAAC,8CAAkD,OAALjB,MAAK;QAC/D,OAAOkB,IAAAA,aAAI,EAACpB;IACd;IACA,IAAIe,KAAKE,MAAM,KAAK,GAAG;QACrBC,QAAQC,GAAG,CAAC,AAAC,mCAAuC,OAALjB,MAAK;QACpD,OAAOkB,IAAAA,aAAI,EAACpB;IACd;IAEAG,QAAQkB,KAAK,GAAG,WAAW,qBAAqB;IAChD,OAAOC,IAAAA,gBAAG,EAACP,IAAI,CAAC,EAAE,EAAEA,IAAI,CAAC,EAAE,EAAEA,KAAKQ,KAAK,CAAC,IAAIpB,SAAkC,SAACqB,KAAeC;QAC5F,IAAID,OAAO,CAACA,IAAIC,OAAO,EAAE;YACvBP,QAAQC,GAAG,CAACK,IAAIE,OAAO;YACvB,OAAON,IAAAA,aAAI,EAACpB;QACd;QACA,IAAIwB,KAAKC,UAAUD,IAAIC,OAAO;QAC9B,IAAME,SAASF,QAAQG,MAAM,CAAC,SAACC;mBAAW,CAAC,CAACA,OAAOC,KAAK;;QAExD,IAAI,CAAC3B,QAAQO,MAAM,EAAE;YACnB,IAAI,CAACqB,kBAAS,EAAE;gBACdb,QAAQC,GAAG,CAAC;gBACZM,QAAQO,OAAO,CAAC,SAACC;oBACff,QAAQC,GAAG,CAAC,AAAC,GAA8Cc,OAA5CA,IAAIH,KAAK,GAAGI,kBAAO,CAACC,KAAK,GAAGD,kBAAO,CAACE,IAAI,EAAC,KAAiBH,OAAdA,IAAII,OAAO,EAAmD,OAAhDJ,IAAIH,KAAK,GAAG,AAAC,WAA4B,OAAlBG,IAAIH,KAAK,CAACJ,OAAO,IAAK;gBACxH;YACF;YACAR,QAAQC,GAAG,CAAC;YACZD,QAAQC,GAAG,CAAC,AAAC,GAAUmB,OAARpC,MAAK,KAAmC,OAAhCoC,IAAAA,0BAAe,EAACvB,MAAMwB,IAAI,CAAC;YAClDrB,QAAQC,GAAG,CAAC,AAAC,GAAkBM,OAAhBS,kBAAO,CAACE,IAAI,EAAC,KAAkC,OAA/BX,QAAQR,MAAM,GAAGU,OAAOV,MAAM,EAAC;YAC9D,IAAIU,OAAOV,MAAM,EAAEC,QAAQC,GAAG,CAAC,AAAC,GAAmBQ,OAAjBO,kBAAO,CAACC,KAAK,EAAC,KAAiB,OAAdR,OAAOV,MAAM,EAAC;QACnE;QACAG,IAAAA,aAAI,EAACI,OAAOG,OAAOV,MAAM,GAAGjB,aAAa;IAC3C;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/cli.ts"],"sourcesContent":["import exit from 'exit';\nimport getopts from 'getopts-compat';\nimport run from './index.ts';\nimport loadSpawnTerm from './lib/loadSpawnTerm.ts';\nimport type { UseError, UseOptions, UseResult } from './types.ts';\n\nconst ERROR_CODE = 13;\n\nexport default (argv: string[], name: string): undefined => {\n const options = getopts(argv, {\n alias: { range: 'r', desc: 'd', expanded: 'e', streaming: 's', silent: 'si' },\n default: { range: 'major,even' },\n boolean: ['silent', 'desc', 'expanded', 'streaming'],\n stopEarly: true,\n });\n\n // define.option('-r, --range [range]', 'range type of major, minor, or patch with filters of lts, even, odd for version string expressions', 'major,even');\n // define.option('-s, --silent', 'suppress logging', false);\n options.sort = options.desc ? -1 : 1;\n\n const args = options._;\n if (args.length === 0) {\n console.log(`Missing version expression. Example usage: ${name} version command arg1 arg2`);\n return exit(ERROR_CODE);\n }\n if (args.length === 1) {\n console.log(`Missing command. Example usage: ${name} version command arg1 arg2`);\n return exit(ERROR_CODE);\n }\n\n options.stdio = 'inherit'; // pass through stdio\n return run(args[0], args[1], args.slice(2), options as unknown as UseOptions, (err: UseError, results: UseResult[]): undefined => {\n if (err && !err.results) {\n console.log(err.message);\n return exit(ERROR_CODE);\n }\n if (err) results = err.results;\n const errors = results.filter((result) => !!result.error);\n\n if (!options.silent) {\n // Load spawn-term to get figures/formatArguments for output formatting\n loadSpawnTerm((_loadErr, { spawnTerm, figures, formatArguments }) => {\n if (!spawnTerm) {\n console.log('\\n======================');\n results.forEach((res) => {\n console.log(`${res.error ? figures.cross : figures.tick} ${res.version}${res.error ? ` Error: ${res.error.message}` : ''}`);\n });\n console.log('\\n----------------------');\n console.log(`${name} ${formatArguments(args).join(' ')}`);\n console.log(`${figures.tick} ${results.length - errors.length} succeeded`);\n if (errors.length) console.log(`${figures.cross} ${errors.length} failed`);\n }\n exit(err || errors.length ? ERROR_CODE : 0);\n });\n } else {\n exit(err || errors.length ? ERROR_CODE : 0);\n }\n });\n};\n"],"names":["ERROR_CODE","argv","name","options","getopts","alias","range","desc","expanded","streaming","silent","default","boolean","stopEarly","sort","args","_","length","console","log","exit","stdio","run","slice","err","results","message","errors","filter","result","error","loadSpawnTerm","_loadErr","spawnTerm","figures","formatArguments","forEach","res","cross","tick","version","join"],"mappings":";;;;+BAQA;;;eAAA;;;2DARiB;oEACG;8DACJ;sEACU;;;;;;AAG1B,IAAMA,aAAa;IAEnB,WAAe,SAACC,MAAgBC;IAC9B,IAAMC,UAAUC,IAAAA,sBAAO,EAACH,MAAM;QAC5BI,OAAO;YAAEC,OAAO;YAAKC,MAAM;YAAKC,UAAU;YAAKC,WAAW;YAAKC,QAAQ;QAAK;QAC5EC,SAAS;YAAEL,OAAO;QAAa;QAC/BM,SAAS;YAAC;YAAU;YAAQ;YAAY;SAAY;QACpDC,WAAW;IACb;IAEA,4JAA4J;IAC5J,4DAA4D;IAC5DV,QAAQW,IAAI,GAAGX,QAAQI,IAAI,GAAG,CAAC,IAAI;IAEnC,IAAMQ,OAAOZ,QAAQa,CAAC;IACtB,IAAID,KAAKE,MAAM,KAAK,GAAG;QACrBC,QAAQC,GAAG,CAAC,AAAC,8CAAkD,OAALjB,MAAK;QAC/D,OAAOkB,IAAAA,aAAI,EAACpB;IACd;IACA,IAAIe,KAAKE,MAAM,KAAK,GAAG;QACrBC,QAAQC,GAAG,CAAC,AAAC,mCAAuC,OAALjB,MAAK;QACpD,OAAOkB,IAAAA,aAAI,EAACpB;IACd;IAEAG,QAAQkB,KAAK,GAAG,WAAW,qBAAqB;IAChD,OAAOC,IAAAA,gBAAG,EAACP,IAAI,CAAC,EAAE,EAAEA,IAAI,CAAC,EAAE,EAAEA,KAAKQ,KAAK,CAAC,IAAIpB,SAAkC,SAACqB,KAAeC;QAC5F,IAAID,OAAO,CAACA,IAAIC,OAAO,EAAE;YACvBP,QAAQC,GAAG,CAACK,IAAIE,OAAO;YACvB,OAAON,IAAAA,aAAI,EAACpB;QACd;QACA,IAAIwB,KAAKC,UAAUD,IAAIC,OAAO;QAC9B,IAAME,SAASF,QAAQG,MAAM,CAAC,SAACC;mBAAW,CAAC,CAACA,OAAOC,KAAK;;QAExD,IAAI,CAAC3B,QAAQO,MAAM,EAAE;YACnB,uEAAuE;YACvEqB,IAAAA,wBAAa,EAAC,SAACC;oBAAYC,kBAAAA,WAAWC,gBAAAA,SAASC,wBAAAA;gBAC7C,IAAI,CAACF,WAAW;oBACdf,QAAQC,GAAG,CAAC;oBACZM,QAAQW,OAAO,CAAC,SAACC;wBACfnB,QAAQC,GAAG,CAAC,AAAC,GAA8CkB,OAA5CA,IAAIP,KAAK,GAAGI,QAAQI,KAAK,GAAGJ,QAAQK,IAAI,EAAC,KAAiBF,OAAdA,IAAIG,OAAO,EAAmD,OAAhDH,IAAIP,KAAK,GAAG,AAAC,WAA4B,OAAlBO,IAAIP,KAAK,CAACJ,OAAO,IAAK;oBACxH;oBACAR,QAAQC,GAAG,CAAC;oBACZD,QAAQC,GAAG,CAAC,AAAC,GAAUgB,OAARjC,MAAK,KAAmC,OAAhCiC,gBAAgBpB,MAAM0B,IAAI,CAAC;oBAClDvB,QAAQC,GAAG,CAAC,AAAC,GAAkBM,OAAhBS,QAAQK,IAAI,EAAC,KAAkC,OAA/Bd,QAAQR,MAAM,GAAGU,OAAOV,MAAM,EAAC;oBAC9D,IAAIU,OAAOV,MAAM,EAAEC,QAAQC,GAAG,CAAC,AAAC,GAAmBQ,OAAjBO,QAAQI,KAAK,EAAC,KAAiB,OAAdX,OAAOV,MAAM,EAAC;gBACnE;gBACAG,IAAAA,aAAI,EAACI,OAAOG,OAAOV,MAAM,GAAGjB,aAAa;YAC3C;QACF,OAAO;YACLoB,IAAAA,aAAI,EAACI,OAAOG,OAAOV,MAAM,GAAGjB,aAAa;QAC3C;IACF;AACF"}
@@ -0,0 +1,5 @@
1
+ import type { InstallOptions, InstallResult } from 'node-version-install';
2
+ type InstallCallback = (err?: Error, results?: InstallResult[]) => void;
3
+ type InstallVersionFn = (version: string, options: InstallOptions, callback: InstallCallback) => void;
4
+ export default function loadNodeVersionInstall(callback: (err: Error | null, installVersion: InstallVersionFn) => void): void;
5
+ export {};
@@ -0,0 +1,5 @@
1
+ import type { InstallOptions, InstallResult } from 'node-version-install';
2
+ type InstallCallback = (err?: Error, results?: InstallResult[]) => void;
3
+ type InstallVersionFn = (version: string, options: InstallOptions, callback: InstallCallback) => void;
4
+ export default function loadNodeVersionInstall(callback: (err: Error | null, installVersion: InstallVersionFn) => void): void;
5
+ export {};
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return loadNodeVersionInstall;
9
+ }
10
+ });
11
+ var _installmodulelinked = /*#__PURE__*/ _interop_require_default(require("install-module-linked"));
12
+ var _path = /*#__PURE__*/ _interop_require_default(require("path"));
13
+ var _url = /*#__PURE__*/ _interop_require_default(require("url"));
14
+ function _interop_require_default(obj) {
15
+ return obj && obj.__esModule ? obj : {
16
+ default: obj
17
+ };
18
+ }
19
+ function _getRequireWildcardCache(nodeInterop) {
20
+ if (typeof WeakMap !== "function") return null;
21
+ var cacheBabelInterop = new WeakMap();
22
+ var cacheNodeInterop = new WeakMap();
23
+ return (_getRequireWildcardCache = function(nodeInterop) {
24
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
25
+ })(nodeInterop);
26
+ }
27
+ function _interop_require_wildcard(obj, nodeInterop) {
28
+ if (!nodeInterop && obj && obj.__esModule) {
29
+ return obj;
30
+ }
31
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
32
+ return {
33
+ default: obj
34
+ };
35
+ }
36
+ var cache = _getRequireWildcardCache(nodeInterop);
37
+ if (cache && cache.has(obj)) {
38
+ return cache.get(obj);
39
+ }
40
+ var newObj = {
41
+ __proto__: null
42
+ };
43
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
44
+ for(var key in obj){
45
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
46
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
47
+ if (desc && (desc.get || desc.set)) {
48
+ Object.defineProperty(newObj, key, desc);
49
+ } else {
50
+ newObj[key] = obj[key];
51
+ }
52
+ }
53
+ }
54
+ newObj.default = obj;
55
+ if (cache) {
56
+ cache.set(obj, newObj);
57
+ }
58
+ return newObj;
59
+ }
60
+ var _dirname = _path.default.dirname(typeof __dirname !== 'undefined' ? __dirname : _url.default.fileURLToPath(require("url").pathToFileURL(__filename).toString()));
61
+ var nodeModules = _path.default.join(_dirname, '..', '..', '..', 'node_modules');
62
+ var moduleName = 'node-version-install';
63
+ var cached;
64
+ function loadModule(moduleName, callback) {
65
+ if (typeof require === 'undefined') {
66
+ Promise.resolve(moduleName).then(function(p) {
67
+ return /*#__PURE__*/ _interop_require_wildcard(require(p));
68
+ }).then(function(mod) {
69
+ var _mod_default;
70
+ callback(null, (_mod_default = mod === null || mod === void 0 ? void 0 : mod.default) !== null && _mod_default !== void 0 ? _mod_default : null);
71
+ }).catch(callback);
72
+ } else {
73
+ try {
74
+ callback(null, require(moduleName));
75
+ } catch (err) {
76
+ callback(err, null);
77
+ }
78
+ }
79
+ }
80
+ function loadNodeVersionInstall(callback) {
81
+ if (cached !== undefined) {
82
+ callback(null, cached);
83
+ return;
84
+ }
85
+ (0, _installmodulelinked.default)(moduleName, nodeModules, {}, function(err) {
86
+ if (err) return callback(err, null);
87
+ loadModule(moduleName, function(err, _cached) {
88
+ if (err) return callback(err, null);
89
+ cached = _cached;
90
+ callback(null, cached);
91
+ });
92
+ });
93
+ }
94
+ /* 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; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/lib/loadNodeVersionInstall.ts"],"sourcesContent":["import installModule from 'install-module-linked';\nimport type { InstallOptions, InstallResult } from 'node-version-install';\nimport path from 'path';\nimport url from 'url';\n\nconst _dirname = path.dirname(typeof __dirname !== 'undefined' ? __dirname : url.fileURLToPath(import.meta.url));\nconst nodeModules = path.join(_dirname, '..', '..', '..', 'node_modules');\nconst moduleName = 'node-version-install';\n\ntype InstallCallback = (err?: Error, results?: InstallResult[]) => void;\ntype InstallVersionFn = (version: string, options: InstallOptions, callback: InstallCallback) => void;\n\nlet cached: InstallVersionFn | undefined;\n\nfunction loadModule(moduleName, callback) {\n if (typeof require === 'undefined') {\n import(moduleName)\n .then((mod) => {\n callback(null, mod?.default ?? null);\n })\n .catch(callback);\n } else {\n try {\n callback(null, require(moduleName));\n } catch (err) {\n callback(err, null);\n }\n }\n}\n\nexport default function loadNodeVersionInstall(callback: (err: Error | null, installVersion: InstallVersionFn) => void): void {\n if (cached !== undefined) {\n callback(null, cached);\n return;\n }\n\n installModule(moduleName, nodeModules, {}, (err) => {\n if (err) return callback(err, null);\n loadModule(moduleName, (err, _cached: InstallVersionFn) => {\n if (err) return callback(err, null);\n cached = _cached;\n callback(null, cached);\n });\n });\n}\n"],"names":["loadNodeVersionInstall","_dirname","path","dirname","__dirname","url","fileURLToPath","nodeModules","join","moduleName","cached","loadModule","callback","require","then","mod","default","catch","err","undefined","installModule","_cached"],"mappings":";;;;+BA8BA;;;eAAwBA;;;0EA9BE;2DAET;0DACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEhB,IAAMC,WAAWC,aAAI,CAACC,OAAO,CAAC,OAAOC,cAAc,cAAcA,YAAYC,YAAG,CAACC,aAAa,CAAC;AAC/F,IAAMC,cAAcL,aAAI,CAACM,IAAI,CAACP,UAAU,MAAM,MAAM,MAAM;AAC1D,IAAMQ,aAAa;AAKnB,IAAIC;AAEJ,SAASC,WAAWF,UAAU,EAAEG,QAAQ;IACtC,IAAI,OAAOC,YAAY,aAAa;QAClC,gBAAOJ;2DAAP;WACGK,IAAI,CAAC,SAACC;gBACUA;YAAfH,SAAS,MAAMG,CAAAA,eAAAA,gBAAAA,0BAAAA,IAAKC,OAAO,cAAZD,0BAAAA,eAAgB;QACjC,GACCE,KAAK,CAACL;IACX,OAAO;QACL,IAAI;YACFA,SAAS,MAAMC,QAAQJ;QACzB,EAAE,OAAOS,KAAK;YACZN,SAASM,KAAK;QAChB;IACF;AACF;AAEe,SAASlB,uBAAuBY,QAAuE;IACpH,IAAIF,WAAWS,WAAW;QACxBP,SAAS,MAAMF;QACf;IACF;IAEAU,IAAAA,4BAAa,EAACX,YAAYF,aAAa,CAAC,GAAG,SAACW;QAC1C,IAAIA,KAAK,OAAON,SAASM,KAAK;QAC9BP,WAAWF,YAAY,SAACS,KAAKG;YAC3B,IAAIH,KAAK,OAAON,SAASM,KAAK;YAC9BR,SAASW;YACTT,SAAS,MAAMF;QACjB;IACF;AACF"}
@@ -0,0 +1,11 @@
1
+ type SpawnTermFn = ((command: string, args: string[], options: any, termOptions: any, callback: (err?: Error, res?: any) => void) => void) | null;
2
+ interface SpawnTermModule {
3
+ spawnTerm: SpawnTermFn;
4
+ figures: {
5
+ tick: string;
6
+ cross: string;
7
+ };
8
+ formatArguments: (args: string[]) => string[];
9
+ }
10
+ export default function loadSpawnTerm(callback: (err: Error | null, result: SpawnTermModule) => void): void;
11
+ export {};
@@ -0,0 +1,11 @@
1
+ type SpawnTermFn = ((command: string, args: string[], options: any, termOptions: any, callback: (err?: Error, res?: any) => void) => void) | null;
2
+ interface SpawnTermModule {
3
+ spawnTerm: SpawnTermFn;
4
+ figures: {
5
+ tick: string;
6
+ cross: string;
7
+ };
8
+ formatArguments: (args: string[]) => string[];
9
+ }
10
+ export default function loadSpawnTerm(callback: (err: Error | null, result: SpawnTermModule) => void): void;
11
+ export {};
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return loadSpawnTerm;
9
+ }
10
+ });
11
+ var _installmodulelinked = /*#__PURE__*/ _interop_require_default(require("install-module-linked"));
12
+ var _path = /*#__PURE__*/ _interop_require_default(require("path"));
13
+ var _url = /*#__PURE__*/ _interop_require_default(require("url"));
14
+ function _interop_require_default(obj) {
15
+ return obj && obj.__esModule ? obj : {
16
+ default: obj
17
+ };
18
+ }
19
+ function _getRequireWildcardCache(nodeInterop) {
20
+ if (typeof WeakMap !== "function") return null;
21
+ var cacheBabelInterop = new WeakMap();
22
+ var cacheNodeInterop = new WeakMap();
23
+ return (_getRequireWildcardCache = function(nodeInterop) {
24
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
25
+ })(nodeInterop);
26
+ }
27
+ function _interop_require_wildcard(obj, nodeInterop) {
28
+ if (!nodeInterop && obj && obj.__esModule) {
29
+ return obj;
30
+ }
31
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
32
+ return {
33
+ default: obj
34
+ };
35
+ }
36
+ var cache = _getRequireWildcardCache(nodeInterop);
37
+ if (cache && cache.has(obj)) {
38
+ return cache.get(obj);
39
+ }
40
+ var newObj = {
41
+ __proto__: null
42
+ };
43
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
44
+ for(var key in obj){
45
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
46
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
47
+ if (desc && (desc.get || desc.set)) {
48
+ Object.defineProperty(newObj, key, desc);
49
+ } else {
50
+ newObj[key] = obj[key];
51
+ }
52
+ }
53
+ }
54
+ newObj.default = obj;
55
+ if (cache) {
56
+ cache.set(obj, newObj);
57
+ }
58
+ return newObj;
59
+ }
60
+ var _dirname = _path.default.dirname(typeof __dirname !== 'undefined' ? __dirname : _url.default.fileURLToPath(require("url").pathToFileURL(__filename).toString()));
61
+ var nodeModules = _path.default.join(_dirname, '..', '..', '..', 'node_modules');
62
+ var moduleName = 'spawn-term';
63
+ var cached;
64
+ function loadModule(moduleName, callback) {
65
+ if (typeof require === 'undefined') {
66
+ Promise.resolve(moduleName).then(function(p) {
67
+ return /*#__PURE__*/ _interop_require_wildcard(require(p));
68
+ }).then(function(mod) {
69
+ var _mod_default, _mod_figures, _mod_formatArguments;
70
+ callback(null, {
71
+ spawnTerm: (_mod_default = mod === null || mod === void 0 ? void 0 : mod.default) !== null && _mod_default !== void 0 ? _mod_default : null,
72
+ figures: (_mod_figures = mod === null || mod === void 0 ? void 0 : mod.figures) !== null && _mod_figures !== void 0 ? _mod_figures : {
73
+ tick: '✓',
74
+ cross: '✗'
75
+ },
76
+ formatArguments: (_mod_formatArguments = mod === null || mod === void 0 ? void 0 : mod.formatArguments) !== null && _mod_formatArguments !== void 0 ? _mod_formatArguments : function(args) {
77
+ return args;
78
+ }
79
+ });
80
+ }).catch(callback);
81
+ } else {
82
+ try {
83
+ callback(null, require(moduleName));
84
+ } catch (err) {
85
+ callback(err, null);
86
+ }
87
+ }
88
+ }
89
+ function loadSpawnTerm(callback) {
90
+ if (cached !== undefined) {
91
+ callback(null, cached);
92
+ return;
93
+ }
94
+ (0, _installmodulelinked.default)(moduleName, nodeModules, {}, function(err) {
95
+ if (err) return callback(err, null);
96
+ loadModule(moduleName, function(err, _cached) {
97
+ if (err) return callback(err, null);
98
+ cached = _cached;
99
+ callback(null, cached);
100
+ });
101
+ });
102
+ }
103
+ /* 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; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/lib/loadSpawnTerm.ts"],"sourcesContent":["import installModule from 'install-module-linked';\nimport path from 'path';\nimport url from 'url';\n\nconst _dirname = path.dirname(typeof __dirname !== 'undefined' ? __dirname : url.fileURLToPath(import.meta.url));\nconst nodeModules = path.join(_dirname, '..', '..', '..', 'node_modules');\nconst moduleName = 'spawn-term';\n\n// biome-ignore lint/suspicious/noExplicitAny: module type varies by Node version\ntype SpawnTermFn = ((command: string, args: string[], options: any, termOptions: any, callback: (err?: Error, res?: any) => void) => void) | null;\n\ninterface SpawnTermModule {\n spawnTerm: SpawnTermFn;\n figures: { tick: string; cross: string };\n formatArguments: (args: string[]) => string[];\n}\n\nlet cached: SpawnTermModule | undefined;\n\nfunction loadModule(moduleName, callback) {\n if (typeof require === 'undefined') {\n import(moduleName)\n .then((mod) => {\n callback(null, {\n spawnTerm: mod?.default ?? null,\n figures: mod?.figures ?? { tick: '✓', cross: '✗' },\n formatArguments: mod?.formatArguments ?? ((args: string[]) => args),\n });\n })\n .catch(callback);\n } else {\n try {\n callback(null, require(moduleName));\n } catch (err) {\n callback(err, null);\n }\n }\n}\n\nexport default function loadSpawnTerm(callback: (err: Error | null, result: SpawnTermModule) => void): void {\n if (cached !== undefined) {\n callback(null, cached);\n return;\n }\n installModule(moduleName, nodeModules, {}, (err) => {\n if (err) return callback(err, null);\n loadModule(moduleName, (err, _cached: SpawnTermModule) => {\n if (err) return callback(err, null);\n cached = _cached;\n callback(null, cached);\n });\n });\n}\n"],"names":["loadSpawnTerm","_dirname","path","dirname","__dirname","url","fileURLToPath","nodeModules","join","moduleName","cached","loadModule","callback","require","then","mod","spawnTerm","default","figures","tick","cross","formatArguments","args","catch","err","undefined","installModule","_cached"],"mappings":";;;;+BAuCA;;;eAAwBA;;;0EAvCE;2DACT;0DACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEhB,IAAMC,WAAWC,aAAI,CAACC,OAAO,CAAC,OAAOC,cAAc,cAAcA,YAAYC,YAAG,CAACC,aAAa,CAAC;AAC/F,IAAMC,cAAcL,aAAI,CAACM,IAAI,CAACP,UAAU,MAAM,MAAM,MAAM;AAC1D,IAAMQ,aAAa;AAWnB,IAAIC;AAEJ,SAASC,WAAWF,UAAU,EAAEG,QAAQ;IACtC,IAAI,OAAOC,YAAY,aAAa;QAClC,gBAAOJ;2DAAP;WACGK,IAAI,CAAC,SAACC;gBAEQA,cACFA,cACQA;YAHnBH,SAAS,MAAM;gBACbI,WAAWD,CAAAA,eAAAA,gBAAAA,0BAAAA,IAAKE,OAAO,cAAZF,0BAAAA,eAAgB;gBAC3BG,SAASH,CAAAA,eAAAA,gBAAAA,0BAAAA,IAAKG,OAAO,cAAZH,0BAAAA,eAAgB;oBAAEI,MAAM;oBAAKC,OAAO;gBAAI;gBACjDC,iBAAiBN,CAAAA,uBAAAA,gBAAAA,0BAAAA,IAAKM,eAAe,cAApBN,kCAAAA,uBAAyB,SAACO;2BAAmBA;;YAChE;QACF,GACCC,KAAK,CAACX;IACX,OAAO;QACL,IAAI;YACFA,SAAS,MAAMC,QAAQJ;QACzB,EAAE,OAAOe,KAAK;YACZZ,SAASY,KAAK;QAChB;IACF;AACF;AAEe,SAASxB,cAAcY,QAA8D;IAClG,IAAIF,WAAWe,WAAW;QACxBb,SAAS,MAAMF;QACf;IACF;IACAgB,IAAAA,4BAAa,EAACjB,YAAYF,aAAa,CAAC,GAAG,SAACiB;QAC1C,IAAIA,KAAK,OAAOZ,SAASY,KAAK;QAC9Bb,WAAWF,YAAY,SAACe,KAAKG;YAC3B,IAAIH,KAAK,OAAOZ,SAASY,KAAK;YAC9Bd,SAASiB;YACTf,SAAS,MAAMF;QACjB;IACF;AACF"}
@@ -10,12 +10,12 @@ Object.defineProperty(exports, "default", {
10
10
  });
11
11
  var _crossspawncb = /*#__PURE__*/ _interop_require_default(require("cross-spawn-cb"));
12
12
  var _noderesolveversions = /*#__PURE__*/ _interop_require_default(require("node-resolve-versions"));
13
- var _nodeversioninstall = /*#__PURE__*/ _interop_require_default(require("node-version-install"));
14
13
  var _nodeversionutils = require("node-version-utils");
15
14
  var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb"));
16
15
  var _spawnstreaming = /*#__PURE__*/ _interop_require_default(require("spawn-streaming"));
17
- var _spawnterm = /*#__PURE__*/ _interop_require_default(require("spawn-term"));
18
16
  var _constantsts = require("./constants.js");
17
+ var _loadNodeVersionInstallts = /*#__PURE__*/ _interop_require_default(require("./lib/loadNodeVersionInstall.js"));
18
+ var _loadSpawnTermts = /*#__PURE__*/ _interop_require_default(require("./lib/loadSpawnTerm.js"));
19
19
  function _define_property(obj, key, value) {
20
20
  if (key in obj) {
21
21
  Object.defineProperty(obj, key, {
@@ -50,64 +50,86 @@ function _object_spread(target) {
50
50
  return target;
51
51
  }
52
52
  function worker(versionExpression, command, args, options, callback) {
53
- (0, _noderesolveversions.default)(versionExpression, options, function(err, versions) {
54
- if (err) {
55
- callback(err);
56
- return;
57
- }
58
- if (!versions.length) {
59
- callback(new Error("No versions found from expression: ".concat(versionExpression)));
60
- return;
61
- }
62
- var installOptions = _object_spread({
63
- storagePath: _constantsts.storagePath
64
- }, options);
65
- var streamingOptions = options;
66
- var results = [];
67
- var queue = new _queuecb.default(1);
68
- versions.forEach(function(version) {
69
- queue.defer(function(cb) {
70
- (0, _nodeversioninstall.default)(version, installOptions, function(_err, installs) {
71
- var next = function next(err, res) {
72
- if (err && err.message.indexOf('ExperimentalWarning') >= 0) {
73
- res = err;
74
- err = null;
53
+ // Load lazy dependencies in parallel
54
+ var loaderQueue = new _queuecb.default();
55
+ var installVersion;
56
+ var spawnTerm;
57
+ loaderQueue.defer(function(cb) {
58
+ return (0, _loadNodeVersionInstallts.default)(function(err, fn) {
59
+ console.log(fn);
60
+ installVersion = fn;
61
+ cb(err);
62
+ });
63
+ });
64
+ loaderQueue.defer(function(cb) {
65
+ return (0, _loadSpawnTermts.default)(function(err, mod) {
66
+ spawnTerm = mod === null || mod === void 0 ? void 0 : mod.spawnTerm;
67
+ cb(err);
68
+ });
69
+ });
70
+ loaderQueue.await(function(loadErr) {
71
+ if (loadErr) return callback(loadErr);
72
+ (0, _noderesolveversions.default)(versionExpression, options, function(err, versions) {
73
+ if (err) {
74
+ callback(err);
75
+ return;
76
+ }
77
+ if (!versions.length) {
78
+ callback(new Error("No versions found from expression: ".concat(versionExpression)));
79
+ return;
80
+ }
81
+ var installOptions = _object_spread({
82
+ storagePath: _constantsts.storagePath
83
+ }, options);
84
+ var streamingOptions = options;
85
+ var results = [];
86
+ var queue = new _queuecb.default(1);
87
+ versions.forEach(function(version) {
88
+ queue.defer(function(cb) {
89
+ installVersion(version, installOptions, function(_err, installs) {
90
+ var next = function next(err, res) {
91
+ if (err && err.message.indexOf('ExperimentalWarning') >= 0) {
92
+ res = err;
93
+ err = null;
94
+ }
95
+ results.push({
96
+ install: install,
97
+ command: command,
98
+ version: version,
99
+ error: err,
100
+ result: res
101
+ });
102
+ cb();
103
+ };
104
+ var install = installs && installs.length === 1 ? installs[0] : null;
105
+ if (!install) {
106
+ results.push({
107
+ install: install,
108
+ command: command,
109
+ version: version,
110
+ error: new Error("Unexpected version results for version ".concat(version, ". Install ").concat(JSON.stringify(installs))),
111
+ result: null
112
+ });
113
+ return callback();
75
114
  }
76
- results.push({
77
- install: install,
78
- command: command,
79
- version: version,
80
- error: err,
81
- result: res
82
- });
83
- cb();
84
- };
85
- var install = installs && installs.length === 1 ? installs[0] : null;
86
- if (!install) {
87
- results.push({
88
- install: install,
89
- command: command,
90
- version: version,
91
- error: new Error("Unexpected version results for version ".concat(version, ". Install ").concat(JSON.stringify(installs))),
92
- result: null
93
- });
94
- return callback();
95
- }
96
- var spawnOptions = (0, _nodeversionutils.spawnOptions)(install.installPath, options);
97
- var prefix = install.version;
98
- if (versions.length < 2) return (0, _crossspawncb.default)(command, args, spawnOptions, next);
99
- if (_spawnterm.default && !streamingOptions.streaming) (0, _spawnterm.default)(command, args, spawnOptions, {
100
- group: prefix,
101
- expanded: streamingOptions.expanded
102
- }, next);
103
- else (0, _spawnstreaming.default)(command, args, spawnOptions, {
104
- prefix: prefix
105
- }, next);
115
+ var spawnOptions = (0, _nodeversionutils.spawnOptions)(install.installPath, options);
116
+ var prefix = install.version;
117
+ if (versions.length < 2) return (0, _crossspawncb.default)(command, args, spawnOptions, next);
118
+ if (spawnTerm && !streamingOptions.streaming) spawnTerm(command, args, spawnOptions, {
119
+ group: prefix,
120
+ expanded: streamingOptions.expanded,
121
+ header: "".concat(command, " ").concat(args.join(' ')),
122
+ showStatusBar: true
123
+ }, next);
124
+ else (0, _spawnstreaming.default)(command, args, spawnOptions, {
125
+ prefix: prefix
126
+ }, next);
127
+ });
106
128
  });
107
129
  });
108
- });
109
- queue.await(function(err) {
110
- err ? callback(err) : callback(null, results);
130
+ queue.await(function(err) {
131
+ err ? callback(err) : callback(null, results);
132
+ });
111
133
  });
112
134
  });
113
135
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/worker.ts"],"sourcesContent":["import spawn, { type SpawnOptions } from 'cross-spawn-cb';\nimport resolveVersions, { type VersionOptions } from 'node-resolve-versions';\nimport installVersion, { type InstallOptions } from 'node-version-install';\nimport { spawnOptions as createSpawnOptions } from 'node-version-utils';\nimport Queue from 'queue-cb';\nimport spawnStreaming from 'spawn-streaming';\nimport spawnTerm from 'spawn-term';\nimport { storagePath } from './constants.ts';\n\nimport type { Options, UseCallback, UseOptions, UseResult } from './types.ts';\n\nexport default function worker(versionExpression: string, command: string, args: string[], options: UseOptions, callback: UseCallback): undefined {\n resolveVersions(versionExpression, options as VersionOptions, (err?: Error, versions?: string[]) => {\n if (err) {\n callback(err);\n return;\n }\n if (!versions.length) {\n callback(new Error(`No versions found from expression: ${versionExpression}`));\n return;\n }\n\n const installOptions = { storagePath, ...options } as InstallOptions;\n const streamingOptions = options as Options;\n const results: UseResult[] = [];\n const queue = new Queue(1);\n versions.forEach((version: string) => {\n queue.defer((cb) => {\n installVersion(version, installOptions, (_err, installs) => {\n const install = installs && installs.length === 1 ? installs[0] : null;\n if (!install) {\n results.push({ install, command, version, error: new Error(`Unexpected version results for version ${version}. Install ${JSON.stringify(installs)}`), result: null });\n return callback();\n }\n const spawnOptions = createSpawnOptions(install.installPath, options as SpawnOptions);\n const prefix = install.version;\n\n function next(err?, res?): undefined {\n if (err && err.message.indexOf('ExperimentalWarning') >= 0) {\n res = err;\n err = null;\n }\n results.push({ install, command, version, error: err, result: res });\n cb();\n }\n\n if (versions.length < 2) return spawn(command, args, spawnOptions, next);\n if (spawnTerm && !streamingOptions.streaming) spawnTerm(command, args, spawnOptions, { group: prefix, expanded: streamingOptions.expanded }, next);\n else spawnStreaming(command, args, spawnOptions, { prefix }, next);\n });\n });\n });\n queue.await((err) => {\n err ? callback(err) : callback(null, results);\n });\n });\n}\n"],"names":["worker","versionExpression","command","args","options","callback","resolveVersions","err","versions","length","Error","installOptions","storagePath","streamingOptions","results","queue","Queue","forEach","version","defer","cb","installVersion","_err","installs","next","res","message","indexOf","push","install","error","result","JSON","stringify","spawnOptions","createSpawnOptions","installPath","prefix","spawn","spawnTerm","streaming","group","expanded","spawnStreaming","await"],"mappings":";;;;+BAWA;;;eAAwBA;;;mEAXiB;0EACY;yEACD;gCACD;8DACjC;qEACS;gEACL;2BACM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIb,SAASA,OAAOC,iBAAyB,EAAEC,OAAe,EAAEC,IAAc,EAAEC,OAAmB,EAAEC,QAAqB;IACnIC,IAAAA,4BAAe,EAACL,mBAAmBG,SAA2B,SAACG,KAAaC;QAC1E,IAAID,KAAK;YACPF,SAASE;YACT;QACF;QACA,IAAI,CAACC,SAASC,MAAM,EAAE;YACpBJ,SAAS,IAAIK,MAAM,AAAC,sCAAuD,OAAlBT;YACzD;QACF;QAEA,IAAMU,iBAAiB;YAAEC,aAAAA,wBAAW;WAAKR;QACzC,IAAMS,mBAAmBT;QACzB,IAAMU,UAAuB,EAAE;QAC/B,IAAMC,QAAQ,IAAIC,gBAAK,CAAC;QACxBR,SAASS,OAAO,CAAC,SAACC;YAChBH,MAAMI,KAAK,CAAC,SAACC;gBACXC,IAAAA,2BAAc,EAACH,SAASP,gBAAgB,SAACW,MAAMC;wBASpCC,OAAT,SAASA,KAAKjB,GAAI,EAAEkB,GAAI;wBACtB,IAAIlB,OAAOA,IAAImB,OAAO,CAACC,OAAO,CAAC,0BAA0B,GAAG;4BAC1DF,MAAMlB;4BACNA,MAAM;wBACR;wBACAO,QAAQc,IAAI,CAAC;4BAAEC,SAAAA;4BAAS3B,SAAAA;4BAASgB,SAAAA;4BAASY,OAAOvB;4BAAKwB,QAAQN;wBAAI;wBAClEL;oBACF;oBAfA,IAAMS,UAAUN,YAAYA,SAASd,MAAM,KAAK,IAAIc,QAAQ,CAAC,EAAE,GAAG;oBAClE,IAAI,CAACM,SAAS;wBACZf,QAAQc,IAAI,CAAC;4BAAEC,SAAAA;4BAAS3B,SAAAA;4BAASgB,SAAAA;4BAASY,OAAO,IAAIpB,MAAM,AAAC,0CAA6DsB,OAApBd,SAAQ,cAAqC,OAAzBc,KAAKC,SAAS,CAACV;4BAAcQ,QAAQ;wBAAK;wBACnK,OAAO1B;oBACT;oBACA,IAAM6B,eAAeC,IAAAA,8BAAkB,EAACN,QAAQO,WAAW,EAAEhC;oBAC7D,IAAMiC,SAASR,QAAQX,OAAO;oBAW9B,IAAIV,SAASC,MAAM,GAAG,GAAG,OAAO6B,IAAAA,qBAAK,EAACpC,SAASC,MAAM+B,cAAcV;oBACnE,IAAIe,kBAAS,IAAI,CAAC1B,iBAAiB2B,SAAS,EAAED,IAAAA,kBAAS,EAACrC,SAASC,MAAM+B,cAAc;wBAAEO,OAAOJ;wBAAQK,UAAU7B,iBAAiB6B,QAAQ;oBAAC,GAAGlB;yBACxImB,IAAAA,uBAAc,EAACzC,SAASC,MAAM+B,cAAc;wBAAEG,QAAAA;oBAAO,GAAGb;gBAC/D;YACF;QACF;QACAT,MAAM6B,KAAK,CAAC,SAACrC;YACXA,MAAMF,SAASE,OAAOF,SAAS,MAAMS;QACvC;IACF;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/worker.ts"],"sourcesContent":["import spawn, { type SpawnOptions } from 'cross-spawn-cb';\nimport resolveVersions, { type VersionOptions } from 'node-resolve-versions';\nimport type { InstallOptions, InstallResult } from 'node-version-install';\nimport { spawnOptions as createSpawnOptions } from 'node-version-utils';\nimport Queue from 'queue-cb';\nimport spawnStreaming from 'spawn-streaming';\nimport { storagePath } from './constants.ts';\nimport loadNodeVersionInstall from './lib/loadNodeVersionInstall.ts';\nimport loadSpawnTerm from './lib/loadSpawnTerm.ts';\n\nimport type { Options, UseCallback, UseOptions, UseResult } from './types.ts';\n\nexport default function worker(versionExpression: string, command: string, args: string[], options: UseOptions, callback: UseCallback): undefined {\n // Load lazy dependencies in parallel\n const loaderQueue = new Queue();\n let installVersion: (version: string, opts: InstallOptions, cb: (err?: Error, results?: InstallResult[]) => void) => void;\n let spawnTerm: ((cmd: string, a: string[], opts: SpawnOptions, termOpts: unknown, cb: (err?: Error, res?: unknown) => void) => void) | null;\n\n loaderQueue.defer((cb) =>\n loadNodeVersionInstall((err, fn) => {\n console.log(fn);\n installVersion = fn;\n cb(err);\n })\n );\n loaderQueue.defer((cb) =>\n loadSpawnTerm((err, mod) => {\n spawnTerm = mod?.spawnTerm;\n cb(err);\n })\n );\n\n loaderQueue.await((loadErr) => {\n if (loadErr) return callback(loadErr);\n\n resolveVersions(versionExpression, options as VersionOptions, (err?: Error, versions?: string[]) => {\n if (err) {\n callback(err);\n return;\n }\n if (!versions.length) {\n callback(new Error(`No versions found from expression: ${versionExpression}`));\n return;\n }\n\n const installOptions = { storagePath, ...options } as InstallOptions;\n const streamingOptions = options as Options;\n const results: UseResult[] = [];\n const queue = new Queue(1);\n versions.forEach((version: string) => {\n queue.defer((cb) => {\n installVersion(version, installOptions, (_err, installs) => {\n const install = installs && installs.length === 1 ? installs[0] : null;\n if (!install) {\n results.push({ install, command, version, error: new Error(`Unexpected version results for version ${version}. Install ${JSON.stringify(installs)}`), result: null });\n return callback();\n }\n const spawnOptions = createSpawnOptions(install.installPath, options as SpawnOptions);\n const prefix = install.version;\n\n function next(err?, res?): undefined {\n if (err && err.message.indexOf('ExperimentalWarning') >= 0) {\n res = err;\n err = null;\n }\n results.push({ install, command, version, error: err, result: res });\n cb();\n }\n\n if (versions.length < 2) return spawn(command, args, spawnOptions, next);\n if (spawnTerm && !streamingOptions.streaming) spawnTerm(command, args, spawnOptions, { group: prefix, expanded: streamingOptions.expanded, header: `${command} ${args.join(' ')}`, showStatusBar: true }, next);\n else spawnStreaming(command, args, spawnOptions, { prefix }, next);\n });\n });\n });\n queue.await((err) => {\n err ? callback(err) : callback(null, results);\n });\n });\n });\n}\n"],"names":["worker","versionExpression","command","args","options","callback","loaderQueue","Queue","installVersion","spawnTerm","defer","cb","loadNodeVersionInstall","err","fn","console","log","loadSpawnTerm","mod","await","loadErr","resolveVersions","versions","length","Error","installOptions","storagePath","streamingOptions","results","queue","forEach","version","_err","installs","next","res","message","indexOf","push","install","error","result","JSON","stringify","spawnOptions","createSpawnOptions","installPath","prefix","spawn","streaming","group","expanded","header","join","showStatusBar","spawnStreaming"],"mappings":";;;;+BAYA;;;eAAwBA;;;mEAZiB;0EACY;gCAEF;8DACjC;qEACS;2BACC;+EACO;sEACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIX,SAASA,OAAOC,iBAAyB,EAAEC,OAAe,EAAEC,IAAc,EAAEC,OAAmB,EAAEC,QAAqB;IACnI,qCAAqC;IACrC,IAAMC,cAAc,IAAIC,gBAAK;IAC7B,IAAIC;IACJ,IAAIC;IAEJH,YAAYI,KAAK,CAAC,SAACC;eACjBC,IAAAA,iCAAsB,EAAC,SAACC,KAAKC;YAC3BC,QAAQC,GAAG,CAACF;YACZN,iBAAiBM;YACjBH,GAAGE;QACL;;IAEFP,YAAYI,KAAK,CAAC,SAACC;eACjBM,IAAAA,wBAAa,EAAC,SAACJ,KAAKK;YAClBT,YAAYS,gBAAAA,0BAAAA,IAAKT,SAAS;YAC1BE,GAAGE;QACL;;IAGFP,YAAYa,KAAK,CAAC,SAACC;QACjB,IAAIA,SAAS,OAAOf,SAASe;QAE7BC,IAAAA,4BAAe,EAACpB,mBAAmBG,SAA2B,SAACS,KAAaS;YAC1E,IAAIT,KAAK;gBACPR,SAASQ;gBACT;YACF;YACA,IAAI,CAACS,SAASC,MAAM,EAAE;gBACpBlB,SAAS,IAAImB,MAAM,AAAC,sCAAuD,OAAlBvB;gBACzD;YACF;YAEA,IAAMwB,iBAAiB;gBAAEC,aAAAA,wBAAW;eAAKtB;YACzC,IAAMuB,mBAAmBvB;YACzB,IAAMwB,UAAuB,EAAE;YAC/B,IAAMC,QAAQ,IAAItB,gBAAK,CAAC;YACxBe,SAASQ,OAAO,CAAC,SAACC;gBAChBF,MAAMnB,KAAK,CAAC,SAACC;oBACXH,eAAeuB,SAASN,gBAAgB,SAACO,MAAMC;4BASpCC,OAAT,SAASA,KAAKrB,GAAI,EAAEsB,GAAI;4BACtB,IAAItB,OAAOA,IAAIuB,OAAO,CAACC,OAAO,CAAC,0BAA0B,GAAG;gCAC1DF,MAAMtB;gCACNA,MAAM;4BACR;4BACAe,QAAQU,IAAI,CAAC;gCAAEC,SAAAA;gCAASrC,SAAAA;gCAAS6B,SAAAA;gCAASS,OAAO3B;gCAAK4B,QAAQN;4BAAI;4BAClExB;wBACF;wBAfA,IAAM4B,UAAUN,YAAYA,SAASV,MAAM,KAAK,IAAIU,QAAQ,CAAC,EAAE,GAAG;wBAClE,IAAI,CAACM,SAAS;4BACZX,QAAQU,IAAI,CAAC;gCAAEC,SAAAA;gCAASrC,SAAAA;gCAAS6B,SAAAA;gCAASS,OAAO,IAAIhB,MAAM,AAAC,0CAA6DkB,OAApBX,SAAQ,cAAqC,OAAzBW,KAAKC,SAAS,CAACV;gCAAcQ,QAAQ;4BAAK;4BACnK,OAAOpC;wBACT;wBACA,IAAMuC,eAAeC,IAAAA,8BAAkB,EAACN,QAAQO,WAAW,EAAE1C;wBAC7D,IAAM2C,SAASR,QAAQR,OAAO;wBAW9B,IAAIT,SAASC,MAAM,GAAG,GAAG,OAAOyB,IAAAA,qBAAK,EAAC9C,SAASC,MAAMyC,cAAcV;wBACnE,IAAIzB,aAAa,CAACkB,iBAAiBsB,SAAS,EAAExC,UAAUP,SAASC,MAAMyC,cAAc;4BAAEM,OAAOH;4BAAQI,UAAUxB,iBAAiBwB,QAAQ;4BAAEC,QAAQ,AAAC,GAAajD,OAAXD,SAAQ,KAAkB,OAAfC,KAAKkD,IAAI,CAAC;4BAAQC,eAAe;wBAAK,GAAGpB;6BACrMqB,IAAAA,uBAAc,EAACrD,SAASC,MAAMyC,cAAc;4BAAEG,QAAAA;wBAAO,GAAGb;oBAC/D;gBACF;YACF;YACAL,MAAMV,KAAK,CAAC,SAACN;gBACXA,MAAMR,SAASQ,OAAOR,SAAS,MAAMuB;YACvC;QACF;IACF;AACF"}
package/dist/esm/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import exit from 'exit';
2
2
  import getopts from 'getopts-compat';
3
- import spawnTerm, { figures, formatArguments } from 'spawn-term';
4
3
  import run from './index.js';
4
+ import loadSpawnTerm from './lib/loadSpawnTerm.js';
5
5
  const ERROR_CODE = 13;
6
6
  export default ((argv, name)=>{
7
7
  const options = getopts(argv, {
@@ -44,17 +44,22 @@ export default ((argv, name)=>{
44
44
  if (err) results = err.results;
45
45
  const errors = results.filter((result)=>!!result.error);
46
46
  if (!options.silent) {
47
- if (!spawnTerm) {
48
- console.log('\n======================');
49
- results.forEach((res)=>{
50
- console.log(`${res.error ? figures.cross : figures.tick} ${res.version}${res.error ? ` Error: ${res.error.message}` : ''}`);
51
- });
52
- }
53
- console.log('\n----------------------');
54
- console.log(`${name} ${formatArguments(args).join(' ')}`);
55
- console.log(`${figures.tick} ${results.length - errors.length} succeeded`);
56
- if (errors.length) console.log(`${figures.cross} ${errors.length} failed`);
47
+ // Load spawn-term to get figures/formatArguments for output formatting
48
+ loadSpawnTerm((_loadErr, { spawnTerm, figures, formatArguments })=>{
49
+ if (!spawnTerm) {
50
+ console.log('\n======================');
51
+ results.forEach((res)=>{
52
+ console.log(`${res.error ? figures.cross : figures.tick} ${res.version}${res.error ? ` Error: ${res.error.message}` : ''}`);
53
+ });
54
+ console.log('\n----------------------');
55
+ console.log(`${name} ${formatArguments(args).join(' ')}`);
56
+ console.log(`${figures.tick} ${results.length - errors.length} succeeded`);
57
+ if (errors.length) console.log(`${figures.cross} ${errors.length} failed`);
58
+ }
59
+ exit(err || errors.length ? ERROR_CODE : 0);
60
+ });
61
+ } else {
62
+ exit(err || errors.length ? ERROR_CODE : 0);
57
63
  }
58
- exit(err || errors.length ? ERROR_CODE : 0);
59
64
  });
60
65
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/cli.ts"],"sourcesContent":["import exit from 'exit';\nimport getopts from 'getopts-compat';\nimport spawnTerm, { figures, formatArguments } from 'spawn-term';\nimport run from './index.ts';\nimport type { UseError, UseOptions, UseResult } from './types.ts';\n\nconst ERROR_CODE = 13;\n\nexport default (argv: string[], name: string): undefined => {\n const options = getopts(argv, {\n alias: { range: 'r', desc: 'd', expanded: 'e', streaming: 's', silent: 'si' },\n default: { range: 'major,even' },\n boolean: ['silent', 'desc', 'expanded', 'streaming'],\n stopEarly: true,\n });\n\n // define.option('-r, --range [range]', 'range type of major, minor, or patch with filters of lts, even, odd for version string expressions', 'major,even');\n // define.option('-s, --silent', 'suppress logging', false);\n options.sort = options.desc ? -1 : 1;\n\n const args = options._;\n if (args.length === 0) {\n console.log(`Missing version expression. Example usage: ${name} version command arg1 arg2`);\n return exit(ERROR_CODE);\n }\n if (args.length === 1) {\n console.log(`Missing command. Example usage: ${name} version command arg1 arg2`);\n return exit(ERROR_CODE);\n }\n\n options.stdio = 'inherit'; // pass through stdio\n return run(args[0], args[1], args.slice(2), options as unknown as UseOptions, (err: UseError, results: UseResult[]): undefined => {\n if (err && !err.results) {\n console.log(err.message);\n return exit(ERROR_CODE);\n }\n if (err) results = err.results;\n const errors = results.filter((result) => !!result.error);\n\n if (!options.silent) {\n if (!spawnTerm) {\n console.log('\\n======================');\n results.forEach((res) => {\n console.log(`${res.error ? figures.cross : figures.tick} ${res.version}${res.error ? ` Error: ${res.error.message}` : ''}`);\n });\n }\n console.log('\\n----------------------');\n console.log(`${name} ${formatArguments(args).join(' ')}`);\n console.log(`${figures.tick} ${results.length - errors.length} succeeded`);\n if (errors.length) console.log(`${figures.cross} ${errors.length} failed`);\n }\n exit(err || errors.length ? ERROR_CODE : 0);\n });\n};\n"],"names":["exit","getopts","spawnTerm","figures","formatArguments","run","ERROR_CODE","argv","name","options","alias","range","desc","expanded","streaming","silent","default","boolean","stopEarly","sort","args","_","length","console","log","stdio","slice","err","results","message","errors","filter","result","error","forEach","res","cross","tick","version","join"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,aAAa,iBAAiB;AACrC,OAAOC,aAAaC,OAAO,EAAEC,eAAe,QAAQ,aAAa;AACjE,OAAOC,SAAS,aAAa;AAG7B,MAAMC,aAAa;AAEnB,eAAe,CAAA,CAACC,MAAgBC;IAC9B,MAAMC,UAAUR,QAAQM,MAAM;QAC5BG,OAAO;YAAEC,OAAO;YAAKC,MAAM;YAAKC,UAAU;YAAKC,WAAW;YAAKC,QAAQ;QAAK;QAC5EC,SAAS;YAAEL,OAAO;QAAa;QAC/BM,SAAS;YAAC;YAAU;YAAQ;YAAY;SAAY;QACpDC,WAAW;IACb;IAEA,4JAA4J;IAC5J,4DAA4D;IAC5DT,QAAQU,IAAI,GAAGV,QAAQG,IAAI,GAAG,CAAC,IAAI;IAEnC,MAAMQ,OAAOX,QAAQY,CAAC;IACtB,IAAID,KAAKE,MAAM,KAAK,GAAG;QACrBC,QAAQC,GAAG,CAAC,CAAC,2CAA2C,EAAEhB,KAAK,0BAA0B,CAAC;QAC1F,OAAOR,KAAKM;IACd;IACA,IAAIc,KAAKE,MAAM,KAAK,GAAG;QACrBC,QAAQC,GAAG,CAAC,CAAC,gCAAgC,EAAEhB,KAAK,0BAA0B,CAAC;QAC/E,OAAOR,KAAKM;IACd;IAEAG,QAAQgB,KAAK,GAAG,WAAW,qBAAqB;IAChD,OAAOpB,IAAIe,IAAI,CAAC,EAAE,EAAEA,IAAI,CAAC,EAAE,EAAEA,KAAKM,KAAK,CAAC,IAAIjB,SAAkC,CAACkB,KAAeC;QAC5F,IAAID,OAAO,CAACA,IAAIC,OAAO,EAAE;YACvBL,QAAQC,GAAG,CAACG,IAAIE,OAAO;YACvB,OAAO7B,KAAKM;QACd;QACA,IAAIqB,KAAKC,UAAUD,IAAIC,OAAO;QAC9B,MAAME,SAASF,QAAQG,MAAM,CAAC,CAACC,SAAW,CAAC,CAACA,OAAOC,KAAK;QAExD,IAAI,CAACxB,QAAQM,MAAM,EAAE;YACnB,IAAI,CAACb,WAAW;gBACdqB,QAAQC,GAAG,CAAC;gBACZI,QAAQM,OAAO,CAAC,CAACC;oBACfZ,QAAQC,GAAG,CAAC,GAAGW,IAAIF,KAAK,GAAG9B,QAAQiC,KAAK,GAAGjC,QAAQkC,IAAI,CAAC,CAAC,EAAEF,IAAIG,OAAO,GAAGH,IAAIF,KAAK,GAAG,CAAC,QAAQ,EAAEE,IAAIF,KAAK,CAACJ,OAAO,EAAE,GAAG,IAAI;gBAC5H;YACF;YACAN,QAAQC,GAAG,CAAC;YACZD,QAAQC,GAAG,CAAC,GAAGhB,KAAK,CAAC,EAAEJ,gBAAgBgB,MAAMmB,IAAI,CAAC,MAAM;YACxDhB,QAAQC,GAAG,CAAC,GAAGrB,QAAQkC,IAAI,CAAC,CAAC,EAAET,QAAQN,MAAM,GAAGQ,OAAOR,MAAM,CAAC,UAAU,CAAC;YACzE,IAAIQ,OAAOR,MAAM,EAAEC,QAAQC,GAAG,CAAC,GAAGrB,QAAQiC,KAAK,CAAC,CAAC,EAAEN,OAAOR,MAAM,CAAC,OAAO,CAAC;QAC3E;QACAtB,KAAK2B,OAAOG,OAAOR,MAAM,GAAGhB,aAAa;IAC3C;AACF,CAAA,EAAE"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/cli.ts"],"sourcesContent":["import exit from 'exit';\nimport getopts from 'getopts-compat';\nimport run from './index.ts';\nimport loadSpawnTerm from './lib/loadSpawnTerm.ts';\nimport type { UseError, UseOptions, UseResult } from './types.ts';\n\nconst ERROR_CODE = 13;\n\nexport default (argv: string[], name: string): undefined => {\n const options = getopts(argv, {\n alias: { range: 'r', desc: 'd', expanded: 'e', streaming: 's', silent: 'si' },\n default: { range: 'major,even' },\n boolean: ['silent', 'desc', 'expanded', 'streaming'],\n stopEarly: true,\n });\n\n // define.option('-r, --range [range]', 'range type of major, minor, or patch with filters of lts, even, odd for version string expressions', 'major,even');\n // define.option('-s, --silent', 'suppress logging', false);\n options.sort = options.desc ? -1 : 1;\n\n const args = options._;\n if (args.length === 0) {\n console.log(`Missing version expression. Example usage: ${name} version command arg1 arg2`);\n return exit(ERROR_CODE);\n }\n if (args.length === 1) {\n console.log(`Missing command. Example usage: ${name} version command arg1 arg2`);\n return exit(ERROR_CODE);\n }\n\n options.stdio = 'inherit'; // pass through stdio\n return run(args[0], args[1], args.slice(2), options as unknown as UseOptions, (err: UseError, results: UseResult[]): undefined => {\n if (err && !err.results) {\n console.log(err.message);\n return exit(ERROR_CODE);\n }\n if (err) results = err.results;\n const errors = results.filter((result) => !!result.error);\n\n if (!options.silent) {\n // Load spawn-term to get figures/formatArguments for output formatting\n loadSpawnTerm((_loadErr, { spawnTerm, figures, formatArguments }) => {\n if (!spawnTerm) {\n console.log('\\n======================');\n results.forEach((res) => {\n console.log(`${res.error ? figures.cross : figures.tick} ${res.version}${res.error ? ` Error: ${res.error.message}` : ''}`);\n });\n console.log('\\n----------------------');\n console.log(`${name} ${formatArguments(args).join(' ')}`);\n console.log(`${figures.tick} ${results.length - errors.length} succeeded`);\n if (errors.length) console.log(`${figures.cross} ${errors.length} failed`);\n }\n exit(err || errors.length ? ERROR_CODE : 0);\n });\n } else {\n exit(err || errors.length ? ERROR_CODE : 0);\n }\n });\n};\n"],"names":["exit","getopts","run","loadSpawnTerm","ERROR_CODE","argv","name","options","alias","range","desc","expanded","streaming","silent","default","boolean","stopEarly","sort","args","_","length","console","log","stdio","slice","err","results","message","errors","filter","result","error","_loadErr","spawnTerm","figures","formatArguments","forEach","res","cross","tick","version","join"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,aAAa,iBAAiB;AACrC,OAAOC,SAAS,aAAa;AAC7B,OAAOC,mBAAmB,yBAAyB;AAGnD,MAAMC,aAAa;AAEnB,eAAe,CAAA,CAACC,MAAgBC;IAC9B,MAAMC,UAAUN,QAAQI,MAAM;QAC5BG,OAAO;YAAEC,OAAO;YAAKC,MAAM;YAAKC,UAAU;YAAKC,WAAW;YAAKC,QAAQ;QAAK;QAC5EC,SAAS;YAAEL,OAAO;QAAa;QAC/BM,SAAS;YAAC;YAAU;YAAQ;YAAY;SAAY;QACpDC,WAAW;IACb;IAEA,4JAA4J;IAC5J,4DAA4D;IAC5DT,QAAQU,IAAI,GAAGV,QAAQG,IAAI,GAAG,CAAC,IAAI;IAEnC,MAAMQ,OAAOX,QAAQY,CAAC;IACtB,IAAID,KAAKE,MAAM,KAAK,GAAG;QACrBC,QAAQC,GAAG,CAAC,CAAC,2CAA2C,EAAEhB,KAAK,0BAA0B,CAAC;QAC1F,OAAON,KAAKI;IACd;IACA,IAAIc,KAAKE,MAAM,KAAK,GAAG;QACrBC,QAAQC,GAAG,CAAC,CAAC,gCAAgC,EAAEhB,KAAK,0BAA0B,CAAC;QAC/E,OAAON,KAAKI;IACd;IAEAG,QAAQgB,KAAK,GAAG,WAAW,qBAAqB;IAChD,OAAOrB,IAAIgB,IAAI,CAAC,EAAE,EAAEA,IAAI,CAAC,EAAE,EAAEA,KAAKM,KAAK,CAAC,IAAIjB,SAAkC,CAACkB,KAAeC;QAC5F,IAAID,OAAO,CAACA,IAAIC,OAAO,EAAE;YACvBL,QAAQC,GAAG,CAACG,IAAIE,OAAO;YACvB,OAAO3B,KAAKI;QACd;QACA,IAAIqB,KAAKC,UAAUD,IAAIC,OAAO;QAC9B,MAAME,SAASF,QAAQG,MAAM,CAAC,CAACC,SAAW,CAAC,CAACA,OAAOC,KAAK;QAExD,IAAI,CAACxB,QAAQM,MAAM,EAAE;YACnB,uEAAuE;YACvEV,cAAc,CAAC6B,UAAU,EAAEC,SAAS,EAAEC,OAAO,EAAEC,eAAe,EAAE;gBAC9D,IAAI,CAACF,WAAW;oBACdZ,QAAQC,GAAG,CAAC;oBACZI,QAAQU,OAAO,CAAC,CAACC;wBACfhB,QAAQC,GAAG,CAAC,GAAGe,IAAIN,KAAK,GAAGG,QAAQI,KAAK,GAAGJ,QAAQK,IAAI,CAAC,CAAC,EAAEF,IAAIG,OAAO,GAAGH,IAAIN,KAAK,GAAG,CAAC,QAAQ,EAAEM,IAAIN,KAAK,CAACJ,OAAO,EAAE,GAAG,IAAI;oBAC5H;oBACAN,QAAQC,GAAG,CAAC;oBACZD,QAAQC,GAAG,CAAC,GAAGhB,KAAK,CAAC,EAAE6B,gBAAgBjB,MAAMuB,IAAI,CAAC,MAAM;oBACxDpB,QAAQC,GAAG,CAAC,GAAGY,QAAQK,IAAI,CAAC,CAAC,EAAEb,QAAQN,MAAM,GAAGQ,OAAOR,MAAM,CAAC,UAAU,CAAC;oBACzE,IAAIQ,OAAOR,MAAM,EAAEC,QAAQC,GAAG,CAAC,GAAGY,QAAQI,KAAK,CAAC,CAAC,EAAEV,OAAOR,MAAM,CAAC,OAAO,CAAC;gBAC3E;gBACApB,KAAKyB,OAAOG,OAAOR,MAAM,GAAGhB,aAAa;YAC3C;QACF,OAAO;YACLJ,KAAKyB,OAAOG,OAAOR,MAAM,GAAGhB,aAAa;QAC3C;IACF;AACF,CAAA,EAAE"}
@@ -0,0 +1,5 @@
1
+ import type { InstallOptions, InstallResult } from 'node-version-install';
2
+ type InstallCallback = (err?: Error, results?: InstallResult[]) => void;
3
+ type InstallVersionFn = (version: string, options: InstallOptions, callback: InstallCallback) => void;
4
+ export default function loadNodeVersionInstall(callback: (err: Error | null, installVersion: InstallVersionFn) => void): void;
5
+ export {};
@@ -0,0 +1,35 @@
1
+ import installModule from 'install-module-linked';
2
+ import path from 'path';
3
+ import url from 'url';
4
+ const _dirname = path.dirname(typeof __dirname !== 'undefined' ? __dirname : url.fileURLToPath(import.meta.url));
5
+ const nodeModules = path.join(_dirname, '..', '..', '..', 'node_modules');
6
+ const moduleName = 'node-version-install';
7
+ let cached;
8
+ function loadModule(moduleName, callback) {
9
+ if (typeof require === 'undefined') {
10
+ import(moduleName).then((mod)=>{
11
+ var _mod_default;
12
+ callback(null, (_mod_default = mod === null || mod === void 0 ? void 0 : mod.default) !== null && _mod_default !== void 0 ? _mod_default : null);
13
+ }).catch(callback);
14
+ } else {
15
+ try {
16
+ callback(null, require(moduleName));
17
+ } catch (err) {
18
+ callback(err, null);
19
+ }
20
+ }
21
+ }
22
+ export default function loadNodeVersionInstall(callback) {
23
+ if (cached !== undefined) {
24
+ callback(null, cached);
25
+ return;
26
+ }
27
+ installModule(moduleName, nodeModules, {}, (err)=>{
28
+ if (err) return callback(err, null);
29
+ loadModule(moduleName, (err, _cached)=>{
30
+ if (err) return callback(err, null);
31
+ cached = _cached;
32
+ callback(null, cached);
33
+ });
34
+ });
35
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/lib/loadNodeVersionInstall.ts"],"sourcesContent":["import installModule from 'install-module-linked';\nimport type { InstallOptions, InstallResult } from 'node-version-install';\nimport path from 'path';\nimport url from 'url';\n\nconst _dirname = path.dirname(typeof __dirname !== 'undefined' ? __dirname : url.fileURLToPath(import.meta.url));\nconst nodeModules = path.join(_dirname, '..', '..', '..', 'node_modules');\nconst moduleName = 'node-version-install';\n\ntype InstallCallback = (err?: Error, results?: InstallResult[]) => void;\ntype InstallVersionFn = (version: string, options: InstallOptions, callback: InstallCallback) => void;\n\nlet cached: InstallVersionFn | undefined;\n\nfunction loadModule(moduleName, callback) {\n if (typeof require === 'undefined') {\n import(moduleName)\n .then((mod) => {\n callback(null, mod?.default ?? null);\n })\n .catch(callback);\n } else {\n try {\n callback(null, require(moduleName));\n } catch (err) {\n callback(err, null);\n }\n }\n}\n\nexport default function loadNodeVersionInstall(callback: (err: Error | null, installVersion: InstallVersionFn) => void): void {\n if (cached !== undefined) {\n callback(null, cached);\n return;\n }\n\n installModule(moduleName, nodeModules, {}, (err) => {\n if (err) return callback(err, null);\n loadModule(moduleName, (err, _cached: InstallVersionFn) => {\n if (err) return callback(err, null);\n cached = _cached;\n callback(null, cached);\n });\n });\n}\n"],"names":["installModule","path","url","_dirname","dirname","__dirname","fileURLToPath","nodeModules","join","moduleName","cached","loadModule","callback","require","then","mod","default","catch","err","loadNodeVersionInstall","undefined","_cached"],"mappings":"AAAA,OAAOA,mBAAmB,wBAAwB;AAElD,OAAOC,UAAU,OAAO;AACxB,OAAOC,SAAS,MAAM;AAEtB,MAAMC,WAAWF,KAAKG,OAAO,CAAC,OAAOC,cAAc,cAAcA,YAAYH,IAAII,aAAa,CAAC,YAAYJ,GAAG;AAC9G,MAAMK,cAAcN,KAAKO,IAAI,CAACL,UAAU,MAAM,MAAM,MAAM;AAC1D,MAAMM,aAAa;AAKnB,IAAIC;AAEJ,SAASC,WAAWF,UAAU,EAAEG,QAAQ;IACtC,IAAI,OAAOC,YAAY,aAAa;QAClC,MAAM,CAACJ,YACJK,IAAI,CAAC,CAACC;gBACUA;YAAfH,SAAS,MAAMG,CAAAA,eAAAA,gBAAAA,0BAAAA,IAAKC,OAAO,cAAZD,0BAAAA,eAAgB;QACjC,GACCE,KAAK,CAACL;IACX,OAAO;QACL,IAAI;YACFA,SAAS,MAAMC,QAAQJ;QACzB,EAAE,OAAOS,KAAK;YACZN,SAASM,KAAK;QAChB;IACF;AACF;AAEA,eAAe,SAASC,uBAAuBP,QAAuE;IACpH,IAAIF,WAAWU,WAAW;QACxBR,SAAS,MAAMF;QACf;IACF;IAEAV,cAAcS,YAAYF,aAAa,CAAC,GAAG,CAACW;QAC1C,IAAIA,KAAK,OAAON,SAASM,KAAK;QAC9BP,WAAWF,YAAY,CAACS,KAAKG;YAC3B,IAAIH,KAAK,OAAON,SAASM,KAAK;YAC9BR,SAASW;YACTT,SAAS,MAAMF;QACjB;IACF;AACF"}
@@ -0,0 +1,11 @@
1
+ type SpawnTermFn = ((command: string, args: string[], options: any, termOptions: any, callback: (err?: Error, res?: any) => void) => void) | null;
2
+ interface SpawnTermModule {
3
+ spawnTerm: SpawnTermFn;
4
+ figures: {
5
+ tick: string;
6
+ cross: string;
7
+ };
8
+ formatArguments: (args: string[]) => string[];
9
+ }
10
+ export default function loadSpawnTerm(callback: (err: Error | null, result: SpawnTermModule) => void): void;
11
+ export {};
@@ -0,0 +1,42 @@
1
+ import installModule from 'install-module-linked';
2
+ import path from 'path';
3
+ import url from 'url';
4
+ const _dirname = path.dirname(typeof __dirname !== 'undefined' ? __dirname : url.fileURLToPath(import.meta.url));
5
+ const nodeModules = path.join(_dirname, '..', '..', '..', 'node_modules');
6
+ const moduleName = 'spawn-term';
7
+ let cached;
8
+ function loadModule(moduleName, callback) {
9
+ if (typeof require === 'undefined') {
10
+ import(moduleName).then((mod)=>{
11
+ var _mod_default, _mod_figures, _mod_formatArguments;
12
+ callback(null, {
13
+ spawnTerm: (_mod_default = mod === null || mod === void 0 ? void 0 : mod.default) !== null && _mod_default !== void 0 ? _mod_default : null,
14
+ figures: (_mod_figures = mod === null || mod === void 0 ? void 0 : mod.figures) !== null && _mod_figures !== void 0 ? _mod_figures : {
15
+ tick: '✓',
16
+ cross: '✗'
17
+ },
18
+ formatArguments: (_mod_formatArguments = mod === null || mod === void 0 ? void 0 : mod.formatArguments) !== null && _mod_formatArguments !== void 0 ? _mod_formatArguments : (args)=>args
19
+ });
20
+ }).catch(callback);
21
+ } else {
22
+ try {
23
+ callback(null, require(moduleName));
24
+ } catch (err) {
25
+ callback(err, null);
26
+ }
27
+ }
28
+ }
29
+ export default function loadSpawnTerm(callback) {
30
+ if (cached !== undefined) {
31
+ callback(null, cached);
32
+ return;
33
+ }
34
+ installModule(moduleName, nodeModules, {}, (err)=>{
35
+ if (err) return callback(err, null);
36
+ loadModule(moduleName, (err, _cached)=>{
37
+ if (err) return callback(err, null);
38
+ cached = _cached;
39
+ callback(null, cached);
40
+ });
41
+ });
42
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/lib/loadSpawnTerm.ts"],"sourcesContent":["import installModule from 'install-module-linked';\nimport path from 'path';\nimport url from 'url';\n\nconst _dirname = path.dirname(typeof __dirname !== 'undefined' ? __dirname : url.fileURLToPath(import.meta.url));\nconst nodeModules = path.join(_dirname, '..', '..', '..', 'node_modules');\nconst moduleName = 'spawn-term';\n\n// biome-ignore lint/suspicious/noExplicitAny: module type varies by Node version\ntype SpawnTermFn = ((command: string, args: string[], options: any, termOptions: any, callback: (err?: Error, res?: any) => void) => void) | null;\n\ninterface SpawnTermModule {\n spawnTerm: SpawnTermFn;\n figures: { tick: string; cross: string };\n formatArguments: (args: string[]) => string[];\n}\n\nlet cached: SpawnTermModule | undefined;\n\nfunction loadModule(moduleName, callback) {\n if (typeof require === 'undefined') {\n import(moduleName)\n .then((mod) => {\n callback(null, {\n spawnTerm: mod?.default ?? null,\n figures: mod?.figures ?? { tick: '✓', cross: '✗' },\n formatArguments: mod?.formatArguments ?? ((args: string[]) => args),\n });\n })\n .catch(callback);\n } else {\n try {\n callback(null, require(moduleName));\n } catch (err) {\n callback(err, null);\n }\n }\n}\n\nexport default function loadSpawnTerm(callback: (err: Error | null, result: SpawnTermModule) => void): void {\n if (cached !== undefined) {\n callback(null, cached);\n return;\n }\n installModule(moduleName, nodeModules, {}, (err) => {\n if (err) return callback(err, null);\n loadModule(moduleName, (err, _cached: SpawnTermModule) => {\n if (err) return callback(err, null);\n cached = _cached;\n callback(null, cached);\n });\n });\n}\n"],"names":["installModule","path","url","_dirname","dirname","__dirname","fileURLToPath","nodeModules","join","moduleName","cached","loadModule","callback","require","then","mod","spawnTerm","default","figures","tick","cross","formatArguments","args","catch","err","loadSpawnTerm","undefined","_cached"],"mappings":"AAAA,OAAOA,mBAAmB,wBAAwB;AAClD,OAAOC,UAAU,OAAO;AACxB,OAAOC,SAAS,MAAM;AAEtB,MAAMC,WAAWF,KAAKG,OAAO,CAAC,OAAOC,cAAc,cAAcA,YAAYH,IAAII,aAAa,CAAC,YAAYJ,GAAG;AAC9G,MAAMK,cAAcN,KAAKO,IAAI,CAACL,UAAU,MAAM,MAAM,MAAM;AAC1D,MAAMM,aAAa;AAWnB,IAAIC;AAEJ,SAASC,WAAWF,UAAU,EAAEG,QAAQ;IACtC,IAAI,OAAOC,YAAY,aAAa;QAClC,MAAM,CAACJ,YACJK,IAAI,CAAC,CAACC;gBAEQA,cACFA,cACQA;YAHnBH,SAAS,MAAM;gBACbI,WAAWD,CAAAA,eAAAA,gBAAAA,0BAAAA,IAAKE,OAAO,cAAZF,0BAAAA,eAAgB;gBAC3BG,SAASH,CAAAA,eAAAA,gBAAAA,0BAAAA,IAAKG,OAAO,cAAZH,0BAAAA,eAAgB;oBAAEI,MAAM;oBAAKC,OAAO;gBAAI;gBACjDC,iBAAiBN,CAAAA,uBAAAA,gBAAAA,0BAAAA,IAAKM,eAAe,cAApBN,kCAAAA,uBAAyB,CAACO,OAAmBA;YAChE;QACF,GACCC,KAAK,CAACX;IACX,OAAO;QACL,IAAI;YACFA,SAAS,MAAMC,QAAQJ;QACzB,EAAE,OAAOe,KAAK;YACZZ,SAASY,KAAK;QAChB;IACF;AACF;AAEA,eAAe,SAASC,cAAcb,QAA8D;IAClG,IAAIF,WAAWgB,WAAW;QACxBd,SAAS,MAAMF;QACf;IACF;IACAV,cAAcS,YAAYF,aAAa,CAAC,GAAG,CAACiB;QAC1C,IAAIA,KAAK,OAAOZ,SAASY,KAAK;QAC9Bb,WAAWF,YAAY,CAACe,KAAKG;YAC3B,IAAIH,KAAK,OAAOZ,SAASY,KAAK;YAC9Bd,SAASiB;YACTf,SAAS,MAAMF;QACjB;IACF;AACF"}
@@ -1,71 +1,89 @@
1
1
  import spawn from 'cross-spawn-cb';
2
2
  import resolveVersions from 'node-resolve-versions';
3
- import installVersion from 'node-version-install';
4
3
  import { spawnOptions as createSpawnOptions } from 'node-version-utils';
5
4
  import Queue from 'queue-cb';
6
5
  import spawnStreaming from 'spawn-streaming';
7
- import spawnTerm from 'spawn-term';
8
6
  import { storagePath } from './constants.js';
7
+ import loadNodeVersionInstall from './lib/loadNodeVersionInstall.js';
8
+ import loadSpawnTerm from './lib/loadSpawnTerm.js';
9
9
  export default function worker(versionExpression, command, args, options, callback) {
10
- resolveVersions(versionExpression, options, (err, versions)=>{
11
- if (err) {
12
- callback(err);
13
- return;
14
- }
15
- if (!versions.length) {
16
- callback(new Error(`No versions found from expression: ${versionExpression}`));
17
- return;
18
- }
19
- const installOptions = {
20
- storagePath,
21
- ...options
22
- };
23
- const streamingOptions = options;
24
- const results = [];
25
- const queue = new Queue(1);
26
- versions.forEach((version)=>{
27
- queue.defer((cb)=>{
28
- installVersion(version, installOptions, (_err, installs)=>{
29
- const install = installs && installs.length === 1 ? installs[0] : null;
30
- if (!install) {
31
- results.push({
32
- install,
33
- command,
34
- version,
35
- error: new Error(`Unexpected version results for version ${version}. Install ${JSON.stringify(installs)}`),
36
- result: null
37
- });
38
- return callback();
39
- }
40
- const spawnOptions = createSpawnOptions(install.installPath, options);
41
- const prefix = install.version;
42
- function next(err, res) {
43
- if (err && err.message.indexOf('ExperimentalWarning') >= 0) {
44
- res = err;
45
- err = null;
10
+ // Load lazy dependencies in parallel
11
+ const loaderQueue = new Queue();
12
+ let installVersion;
13
+ let spawnTerm;
14
+ loaderQueue.defer((cb)=>loadNodeVersionInstall((err, fn)=>{
15
+ console.log(fn);
16
+ installVersion = fn;
17
+ cb(err);
18
+ }));
19
+ loaderQueue.defer((cb)=>loadSpawnTerm((err, mod)=>{
20
+ spawnTerm = mod === null || mod === void 0 ? void 0 : mod.spawnTerm;
21
+ cb(err);
22
+ }));
23
+ loaderQueue.await((loadErr)=>{
24
+ if (loadErr) return callback(loadErr);
25
+ resolveVersions(versionExpression, options, (err, versions)=>{
26
+ if (err) {
27
+ callback(err);
28
+ return;
29
+ }
30
+ if (!versions.length) {
31
+ callback(new Error(`No versions found from expression: ${versionExpression}`));
32
+ return;
33
+ }
34
+ const installOptions = {
35
+ storagePath,
36
+ ...options
37
+ };
38
+ const streamingOptions = options;
39
+ const results = [];
40
+ const queue = new Queue(1);
41
+ versions.forEach((version)=>{
42
+ queue.defer((cb)=>{
43
+ installVersion(version, installOptions, (_err, installs)=>{
44
+ const install = installs && installs.length === 1 ? installs[0] : null;
45
+ if (!install) {
46
+ results.push({
47
+ install,
48
+ command,
49
+ version,
50
+ error: new Error(`Unexpected version results for version ${version}. Install ${JSON.stringify(installs)}`),
51
+ result: null
52
+ });
53
+ return callback();
46
54
  }
47
- results.push({
48
- install,
49
- command,
50
- version,
51
- error: err,
52
- result: res
53
- });
54
- cb();
55
- }
56
- if (versions.length < 2) return spawn(command, args, spawnOptions, next);
57
- if (spawnTerm && !streamingOptions.streaming) spawnTerm(command, args, spawnOptions, {
58
- group: prefix,
59
- expanded: streamingOptions.expanded
60
- }, next);
61
- else spawnStreaming(command, args, spawnOptions, {
62
- prefix
63
- }, next);
55
+ const spawnOptions = createSpawnOptions(install.installPath, options);
56
+ const prefix = install.version;
57
+ function next(err, res) {
58
+ if (err && err.message.indexOf('ExperimentalWarning') >= 0) {
59
+ res = err;
60
+ err = null;
61
+ }
62
+ results.push({
63
+ install,
64
+ command,
65
+ version,
66
+ error: err,
67
+ result: res
68
+ });
69
+ cb();
70
+ }
71
+ if (versions.length < 2) return spawn(command, args, spawnOptions, next);
72
+ if (spawnTerm && !streamingOptions.streaming) spawnTerm(command, args, spawnOptions, {
73
+ group: prefix,
74
+ expanded: streamingOptions.expanded,
75
+ header: `${command} ${args.join(' ')}`,
76
+ showStatusBar: true
77
+ }, next);
78
+ else spawnStreaming(command, args, spawnOptions, {
79
+ prefix
80
+ }, next);
81
+ });
64
82
  });
65
83
  });
66
- });
67
- queue.await((err)=>{
68
- err ? callback(err) : callback(null, results);
84
+ queue.await((err)=>{
85
+ err ? callback(err) : callback(null, results);
86
+ });
69
87
  });
70
88
  });
71
89
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/worker.ts"],"sourcesContent":["import spawn, { type SpawnOptions } from 'cross-spawn-cb';\nimport resolveVersions, { type VersionOptions } from 'node-resolve-versions';\nimport installVersion, { type InstallOptions } from 'node-version-install';\nimport { spawnOptions as createSpawnOptions } from 'node-version-utils';\nimport Queue from 'queue-cb';\nimport spawnStreaming from 'spawn-streaming';\nimport spawnTerm from 'spawn-term';\nimport { storagePath } from './constants.ts';\n\nimport type { Options, UseCallback, UseOptions, UseResult } from './types.ts';\n\nexport default function worker(versionExpression: string, command: string, args: string[], options: UseOptions, callback: UseCallback): undefined {\n resolveVersions(versionExpression, options as VersionOptions, (err?: Error, versions?: string[]) => {\n if (err) {\n callback(err);\n return;\n }\n if (!versions.length) {\n callback(new Error(`No versions found from expression: ${versionExpression}`));\n return;\n }\n\n const installOptions = { storagePath, ...options } as InstallOptions;\n const streamingOptions = options as Options;\n const results: UseResult[] = [];\n const queue = new Queue(1);\n versions.forEach((version: string) => {\n queue.defer((cb) => {\n installVersion(version, installOptions, (_err, installs) => {\n const install = installs && installs.length === 1 ? installs[0] : null;\n if (!install) {\n results.push({ install, command, version, error: new Error(`Unexpected version results for version ${version}. Install ${JSON.stringify(installs)}`), result: null });\n return callback();\n }\n const spawnOptions = createSpawnOptions(install.installPath, options as SpawnOptions);\n const prefix = install.version;\n\n function next(err?, res?): undefined {\n if (err && err.message.indexOf('ExperimentalWarning') >= 0) {\n res = err;\n err = null;\n }\n results.push({ install, command, version, error: err, result: res });\n cb();\n }\n\n if (versions.length < 2) return spawn(command, args, spawnOptions, next);\n if (spawnTerm && !streamingOptions.streaming) spawnTerm(command, args, spawnOptions, { group: prefix, expanded: streamingOptions.expanded }, next);\n else spawnStreaming(command, args, spawnOptions, { prefix }, next);\n });\n });\n });\n queue.await((err) => {\n err ? callback(err) : callback(null, results);\n });\n });\n}\n"],"names":["spawn","resolveVersions","installVersion","spawnOptions","createSpawnOptions","Queue","spawnStreaming","spawnTerm","storagePath","worker","versionExpression","command","args","options","callback","err","versions","length","Error","installOptions","streamingOptions","results","queue","forEach","version","defer","cb","_err","installs","install","push","error","JSON","stringify","result","installPath","prefix","next","res","message","indexOf","streaming","group","expanded","await"],"mappings":"AAAA,OAAOA,WAAkC,iBAAiB;AAC1D,OAAOC,qBAA8C,wBAAwB;AAC7E,OAAOC,oBAA6C,uBAAuB;AAC3E,SAASC,gBAAgBC,kBAAkB,QAAQ,qBAAqB;AACxE,OAAOC,WAAW,WAAW;AAC7B,OAAOC,oBAAoB,kBAAkB;AAC7C,OAAOC,eAAe,aAAa;AACnC,SAASC,WAAW,QAAQ,iBAAiB;AAI7C,eAAe,SAASC,OAAOC,iBAAyB,EAAEC,OAAe,EAAEC,IAAc,EAAEC,OAAmB,EAAEC,QAAqB;IACnIb,gBAAgBS,mBAAmBG,SAA2B,CAACE,KAAaC;QAC1E,IAAID,KAAK;YACPD,SAASC;YACT;QACF;QACA,IAAI,CAACC,SAASC,MAAM,EAAE;YACpBH,SAAS,IAAII,MAAM,CAAC,mCAAmC,EAAER,mBAAmB;YAC5E;QACF;QAEA,MAAMS,iBAAiB;YAAEX;YAAa,GAAGK,OAAO;QAAC;QACjD,MAAMO,mBAAmBP;QACzB,MAAMQ,UAAuB,EAAE;QAC/B,MAAMC,QAAQ,IAAIjB,MAAM;QACxBW,SAASO,OAAO,CAAC,CAACC;YAChBF,MAAMG,KAAK,CAAC,CAACC;gBACXxB,eAAesB,SAASL,gBAAgB,CAACQ,MAAMC;oBAC7C,MAAMC,UAAUD,YAAYA,SAASX,MAAM,KAAK,IAAIW,QAAQ,CAAC,EAAE,GAAG;oBAClE,IAAI,CAACC,SAAS;wBACZR,QAAQS,IAAI,CAAC;4BAAED;4BAASlB;4BAASa;4BAASO,OAAO,IAAIb,MAAM,CAAC,uCAAuC,EAAEM,QAAQ,UAAU,EAAEQ,KAAKC,SAAS,CAACL,WAAW;4BAAGM,QAAQ;wBAAK;wBACnK,OAAOpB;oBACT;oBACA,MAAMX,eAAeC,mBAAmByB,QAAQM,WAAW,EAAEtB;oBAC7D,MAAMuB,SAASP,QAAQL,OAAO;oBAE9B,SAASa,KAAKtB,GAAI,EAAEuB,GAAI;wBACtB,IAAIvB,OAAOA,IAAIwB,OAAO,CAACC,OAAO,CAAC,0BAA0B,GAAG;4BAC1DF,MAAMvB;4BACNA,MAAM;wBACR;wBACAM,QAAQS,IAAI,CAAC;4BAAED;4BAASlB;4BAASa;4BAASO,OAAOhB;4BAAKmB,QAAQI;wBAAI;wBAClEZ;oBACF;oBAEA,IAAIV,SAASC,MAAM,GAAG,GAAG,OAAOjB,MAAMW,SAASC,MAAMT,cAAckC;oBACnE,IAAI9B,aAAa,CAACa,iBAAiBqB,SAAS,EAAElC,UAAUI,SAASC,MAAMT,cAAc;wBAAEuC,OAAON;wBAAQO,UAAUvB,iBAAiBuB,QAAQ;oBAAC,GAAGN;yBACxI/B,eAAeK,SAASC,MAAMT,cAAc;wBAAEiC;oBAAO,GAAGC;gBAC/D;YACF;QACF;QACAf,MAAMsB,KAAK,CAAC,CAAC7B;YACXA,MAAMD,SAASC,OAAOD,SAAS,MAAMO;QACvC;IACF;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/worker.ts"],"sourcesContent":["import spawn, { type SpawnOptions } from 'cross-spawn-cb';\nimport resolveVersions, { type VersionOptions } from 'node-resolve-versions';\nimport type { InstallOptions, InstallResult } from 'node-version-install';\nimport { spawnOptions as createSpawnOptions } from 'node-version-utils';\nimport Queue from 'queue-cb';\nimport spawnStreaming from 'spawn-streaming';\nimport { storagePath } from './constants.ts';\nimport loadNodeVersionInstall from './lib/loadNodeVersionInstall.ts';\nimport loadSpawnTerm from './lib/loadSpawnTerm.ts';\n\nimport type { Options, UseCallback, UseOptions, UseResult } from './types.ts';\n\nexport default function worker(versionExpression: string, command: string, args: string[], options: UseOptions, callback: UseCallback): undefined {\n // Load lazy dependencies in parallel\n const loaderQueue = new Queue();\n let installVersion: (version: string, opts: InstallOptions, cb: (err?: Error, results?: InstallResult[]) => void) => void;\n let spawnTerm: ((cmd: string, a: string[], opts: SpawnOptions, termOpts: unknown, cb: (err?: Error, res?: unknown) => void) => void) | null;\n\n loaderQueue.defer((cb) =>\n loadNodeVersionInstall((err, fn) => {\n console.log(fn);\n installVersion = fn;\n cb(err);\n })\n );\n loaderQueue.defer((cb) =>\n loadSpawnTerm((err, mod) => {\n spawnTerm = mod?.spawnTerm;\n cb(err);\n })\n );\n\n loaderQueue.await((loadErr) => {\n if (loadErr) return callback(loadErr);\n\n resolveVersions(versionExpression, options as VersionOptions, (err?: Error, versions?: string[]) => {\n if (err) {\n callback(err);\n return;\n }\n if (!versions.length) {\n callback(new Error(`No versions found from expression: ${versionExpression}`));\n return;\n }\n\n const installOptions = { storagePath, ...options } as InstallOptions;\n const streamingOptions = options as Options;\n const results: UseResult[] = [];\n const queue = new Queue(1);\n versions.forEach((version: string) => {\n queue.defer((cb) => {\n installVersion(version, installOptions, (_err, installs) => {\n const install = installs && installs.length === 1 ? installs[0] : null;\n if (!install) {\n results.push({ install, command, version, error: new Error(`Unexpected version results for version ${version}. Install ${JSON.stringify(installs)}`), result: null });\n return callback();\n }\n const spawnOptions = createSpawnOptions(install.installPath, options as SpawnOptions);\n const prefix = install.version;\n\n function next(err?, res?): undefined {\n if (err && err.message.indexOf('ExperimentalWarning') >= 0) {\n res = err;\n err = null;\n }\n results.push({ install, command, version, error: err, result: res });\n cb();\n }\n\n if (versions.length < 2) return spawn(command, args, spawnOptions, next);\n if (spawnTerm && !streamingOptions.streaming) spawnTerm(command, args, spawnOptions, { group: prefix, expanded: streamingOptions.expanded, header: `${command} ${args.join(' ')}`, showStatusBar: true }, next);\n else spawnStreaming(command, args, spawnOptions, { prefix }, next);\n });\n });\n });\n queue.await((err) => {\n err ? callback(err) : callback(null, results);\n });\n });\n });\n}\n"],"names":["spawn","resolveVersions","spawnOptions","createSpawnOptions","Queue","spawnStreaming","storagePath","loadNodeVersionInstall","loadSpawnTerm","worker","versionExpression","command","args","options","callback","loaderQueue","installVersion","spawnTerm","defer","cb","err","fn","console","log","mod","await","loadErr","versions","length","Error","installOptions","streamingOptions","results","queue","forEach","version","_err","installs","install","push","error","JSON","stringify","result","installPath","prefix","next","res","message","indexOf","streaming","group","expanded","header","join","showStatusBar"],"mappings":"AAAA,OAAOA,WAAkC,iBAAiB;AAC1D,OAAOC,qBAA8C,wBAAwB;AAE7E,SAASC,gBAAgBC,kBAAkB,QAAQ,qBAAqB;AACxE,OAAOC,WAAW,WAAW;AAC7B,OAAOC,oBAAoB,kBAAkB;AAC7C,SAASC,WAAW,QAAQ,iBAAiB;AAC7C,OAAOC,4BAA4B,kCAAkC;AACrE,OAAOC,mBAAmB,yBAAyB;AAInD,eAAe,SAASC,OAAOC,iBAAyB,EAAEC,OAAe,EAAEC,IAAc,EAAEC,OAAmB,EAAEC,QAAqB;IACnI,qCAAqC;IACrC,MAAMC,cAAc,IAAIX;IACxB,IAAIY;IACJ,IAAIC;IAEJF,YAAYG,KAAK,CAAC,CAACC,KACjBZ,uBAAuB,CAACa,KAAKC;YAC3BC,QAAQC,GAAG,CAACF;YACZL,iBAAiBK;YACjBF,GAAGC;QACL;IAEFL,YAAYG,KAAK,CAAC,CAACC,KACjBX,cAAc,CAACY,KAAKI;YAClBP,YAAYO,gBAAAA,0BAAAA,IAAKP,SAAS;YAC1BE,GAAGC;QACL;IAGFL,YAAYU,KAAK,CAAC,CAACC;QACjB,IAAIA,SAAS,OAAOZ,SAASY;QAE7BzB,gBAAgBS,mBAAmBG,SAA2B,CAACO,KAAaO;YAC1E,IAAIP,KAAK;gBACPN,SAASM;gBACT;YACF;YACA,IAAI,CAACO,SAASC,MAAM,EAAE;gBACpBd,SAAS,IAAIe,MAAM,CAAC,mCAAmC,EAAEnB,mBAAmB;gBAC5E;YACF;YAEA,MAAMoB,iBAAiB;gBAAExB;gBAAa,GAAGO,OAAO;YAAC;YACjD,MAAMkB,mBAAmBlB;YACzB,MAAMmB,UAAuB,EAAE;YAC/B,MAAMC,QAAQ,IAAI7B,MAAM;YACxBuB,SAASO,OAAO,CAAC,CAACC;gBAChBF,MAAMf,KAAK,CAAC,CAACC;oBACXH,eAAemB,SAASL,gBAAgB,CAACM,MAAMC;wBAC7C,MAAMC,UAAUD,YAAYA,SAAST,MAAM,KAAK,IAAIS,QAAQ,CAAC,EAAE,GAAG;wBAClE,IAAI,CAACC,SAAS;4BACZN,QAAQO,IAAI,CAAC;gCAAED;gCAAS3B;gCAASwB;gCAASK,OAAO,IAAIX,MAAM,CAAC,uCAAuC,EAAEM,QAAQ,UAAU,EAAEM,KAAKC,SAAS,CAACL,WAAW;gCAAGM,QAAQ;4BAAK;4BACnK,OAAO7B;wBACT;wBACA,MAAMZ,eAAeC,mBAAmBmC,QAAQM,WAAW,EAAE/B;wBAC7D,MAAMgC,SAASP,QAAQH,OAAO;wBAE9B,SAASW,KAAK1B,GAAI,EAAE2B,GAAI;4BACtB,IAAI3B,OAAOA,IAAI4B,OAAO,CAACC,OAAO,CAAC,0BAA0B,GAAG;gCAC1DF,MAAM3B;gCACNA,MAAM;4BACR;4BACAY,QAAQO,IAAI,CAAC;gCAAED;gCAAS3B;gCAASwB;gCAASK,OAAOpB;gCAAKuB,QAAQI;4BAAI;4BAClE5B;wBACF;wBAEA,IAAIQ,SAASC,MAAM,GAAG,GAAG,OAAO5B,MAAMW,SAASC,MAAMV,cAAc4C;wBACnE,IAAI7B,aAAa,CAACc,iBAAiBmB,SAAS,EAAEjC,UAAUN,SAASC,MAAMV,cAAc;4BAAEiD,OAAON;4BAAQO,UAAUrB,iBAAiBqB,QAAQ;4BAAEC,QAAQ,GAAG1C,QAAQ,CAAC,EAAEC,KAAK0C,IAAI,CAAC,MAAM;4BAAEC,eAAe;wBAAK,GAAGT;6BACrMzC,eAAeM,SAASC,MAAMV,cAAc;4BAAE2C;wBAAO,GAAGC;oBAC/D;gBACF;YACF;YACAb,MAAMR,KAAK,CAAC,CAACL;gBACXA,MAAMN,SAASM,OAAON,SAAS,MAAMkB;YACvC;QACF;IACF;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-version-use",
3
- "version": "1.7.15",
3
+ "version": "1.8.1",
4
4
  "description": "Cross-platform solution for using multiple versions of node. Useful for compatibility testing",
5
5
  "keywords": [
6
6
  "node",
@@ -36,6 +36,7 @@
36
36
  "scripts": {
37
37
  "build": "tsds build",
38
38
  "format": "biome check --write --unsafe",
39
+ "prepublishOnly": "tsds validate",
39
40
  "test": "mocha --no-timeouts test/**/*.test.*",
40
41
  "test:engines": "nvu engines tsds test:node --no-timeouts",
41
42
  "version": "tsds version"
@@ -45,18 +46,18 @@
45
46
  "exit": "*",
46
47
  "getopts-compat": "*",
47
48
  "homedir-polyfill": "*",
49
+ "install-module-linked": "*",
48
50
  "node-resolve-versions": "*",
49
- "node-version-install": "*",
50
51
  "node-version-utils": "*",
51
52
  "queue-cb": "*",
52
- "spawn-streaming": "*",
53
- "spawn-term": "*"
53
+ "spawn-streaming": "*"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@types/mocha": "*",
57
57
  "@types/node": "*",
58
58
  "cr": "*",
59
59
  "is-version": "*",
60
+ "node-version-install": "*",
60
61
  "pinkie-promise": "*",
61
62
  "rimraf2": "*"
62
63
  },