node-version-use 1.8.0 → 1.8.3

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
@@ -62,9 +62,18 @@ var _default = function(argv, name) {
62
62
  });
63
63
  if (!options.silent) {
64
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) {
65
+ (0, _loadSpawnTermts.default)(function(_loadErr, mod) {
66
+ var _ref = mod || {
67
+ createSession: undefined,
68
+ figures: {
69
+ tick: '✓',
70
+ cross: '✗'
71
+ },
72
+ formatArguments: function(x) {
73
+ return x;
74
+ }
75
+ }, createSession = _ref.createSession, figures = _ref.figures, formatArguments = _ref.formatArguments;
76
+ if (!createSession) {
68
77
  console.log('\n======================');
69
78
  results.forEach(function(res) {
70
79
  console.log("".concat(res.error ? figures.cross : figures.tick, " ").concat(res.version).concat(res.error ? " Error: ".concat(res.error.message) : ''));
@@ -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 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"}
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, mod) => {\n const { createSession, figures, formatArguments } = mod || { createSession: undefined, figures: { tick: '✓', cross: '✗' }, formatArguments: (x: string[]) => x };\n if (!createSession) {\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","mod","createSession","undefined","figures","tick","cross","formatArguments","x","forEach","res","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,UAAUC;gBACvB,IAAoDA,OAAAA,OAAO;oBAAEC,eAAeC;oBAAWC,SAAS;wBAAEC,MAAM;wBAAKC,OAAO;oBAAI;oBAAGC,iBAAiB,SAACC;+BAAgBA;;gBAAE,GAAvJN,gBAA4CD,KAA5CC,eAAeE,UAA6BH,KAA7BG,SAASG,kBAAoBN,KAApBM;gBAChC,IAAI,CAACL,eAAe;oBAClBhB,QAAQC,GAAG,CAAC;oBACZM,QAAQgB,OAAO,CAAC,SAACC;wBACfxB,QAAQC,GAAG,CAAC,AAAC,GAA8CuB,OAA5CA,IAAIZ,KAAK,GAAGM,QAAQE,KAAK,GAAGF,QAAQC,IAAI,EAAC,KAAiBK,OAAdA,IAAIC,OAAO,EAAmD,OAAhDD,IAAIZ,KAAK,GAAG,AAAC,WAA4B,OAAlBY,IAAIZ,KAAK,CAACJ,OAAO,IAAK;oBACxH;oBACAR,QAAQC,GAAG,CAAC;oBACZD,QAAQC,GAAG,CAAC,AAAC,GAAUoB,OAARrC,MAAK,KAAmC,OAAhCqC,gBAAgBxB,MAAM6B,IAAI,CAAC;oBAClD1B,QAAQC,GAAG,CAAC,AAAC,GAAkBM,OAAhBW,QAAQC,IAAI,EAAC,KAAkC,OAA/BZ,QAAQR,MAAM,GAAGU,OAAOV,MAAM,EAAC;oBAC9D,IAAIU,OAAOV,MAAM,EAAEC,QAAQC,GAAG,CAAC,AAAC,GAAmBQ,OAAjBS,QAAQE,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"}
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "default", {
8
8
  return loadNodeVersionInstall;
9
9
  }
10
10
  });
11
- var _installmodulelinked = require("install-module-linked");
11
+ var _installmodulelinked = /*#__PURE__*/ _interop_require_default(require("install-module-linked"));
12
12
  var _path = /*#__PURE__*/ _interop_require_default(require("path"));
13
13
  var _url = /*#__PURE__*/ _interop_require_default(require("url"));
14
14
  function _interop_require_default(obj) {
@@ -16,19 +16,79 @@ function _interop_require_default(obj) {
16
16
  default: obj
17
17
  };
18
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
+ }
19
60
  var _dirname = _path.default.dirname(typeof __dirname !== 'undefined' ? __dirname : _url.default.fileURLToPath(require("url").pathToFileURL(__filename).toString()));
20
- var nodeModules = _path.default.join(_dirname, '..', '..', 'node_modules');
61
+ var nodeModules = _path.default.join(_dirname, '..', '..', '..', 'node_modules');
62
+ var moduleName = 'node-version-install';
21
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
+ }
22
80
  function loadNodeVersionInstall(callback) {
23
81
  if (cached !== undefined) {
24
82
  callback(null, cached);
25
83
  return;
26
84
  }
27
- (0, _installmodulelinked.loadModule)('node-version-install', nodeModules, function(err, mod) {
85
+ (0, _installmodulelinked.default)(moduleName, nodeModules, {}, function(err) {
28
86
  if (err) return callback(err, null);
29
- var _mod_default;
30
- cached = (_mod_default = mod === null || mod === void 0 ? void 0 : mod.default) !== null && _mod_default !== void 0 ? _mod_default : mod;
31
- callback(null, cached);
87
+ loadModule(moduleName, function(err, _cached) {
88
+ if (err) return callback(err, null);
89
+ cached = _cached;
90
+ callback(null, cached);
91
+ });
32
92
  });
33
93
  }
34
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; }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/lib/loadNodeVersionInstall.ts"],"sourcesContent":["import { loadModule } 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');\n\ntype InstallCallback = (err?: Error, results?: InstallResult[]) => void;\ntype InstallVersionFn = (version: string, options: InstallOptions, callback: InstallCallback) => void;\n\nlet cached: InstallVersionFn | undefined;\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 loadModule('node-version-install', nodeModules, (err, mod) => {\n if (err) return callback(err, null);\n cached = mod?.default ?? mod;\n callback(null, cached);\n });\n}\n"],"names":["loadNodeVersionInstall","_dirname","path","dirname","__dirname","url","fileURLToPath","nodeModules","join","cached","callback","undefined","loadModule","err","mod","default"],"mappings":";;;;+BAaA;;;eAAwBA;;;mCAbG;2DAEV;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;AAKpD,IAAIQ;AAEW,SAAST,uBAAuBU,QAAuE;IACpH,IAAID,WAAWE,WAAW;QACxBD,SAAS,MAAMD;QACf;IACF;IAEAG,IAAAA,+BAAU,EAAC,wBAAwBL,aAAa,SAACM,KAAKC;QACpD,IAAID,KAAK,OAAOH,SAASG,KAAK;YACrBC;QAATL,SAASK,CAAAA,eAAAA,gBAAAA,0BAAAA,IAAKC,OAAO,cAAZD,0BAAAA,eAAgBA;QACzBJ,SAAS,MAAMD;IACjB;AACF"}
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"}
@@ -1,6 +1,14 @@
1
- type SpawnTermFn = ((command: string, args: string[], options: any, termOptions: any, callback: (err?: Error, res?: any) => void) => void) | null;
1
+ type CreateSessionFn = ((options?: {
2
+ header?: string;
3
+ showStatusBar?: boolean;
4
+ interactive?: boolean;
5
+ }) => {
6
+ spawn: (command: string, args: string[], options: unknown, termOptions: unknown, callback: (err?: Error, res?: unknown) => void) => void;
7
+ close: () => void;
8
+ waitAndClose: (callback?: () => void) => void;
9
+ }) | undefined;
2
10
  interface SpawnTermModule {
3
- spawnTerm: SpawnTermFn;
11
+ createSession: CreateSessionFn;
4
12
  figures: {
5
13
  tick: string;
6
14
  cross: string;
@@ -1,6 +1,14 @@
1
- type SpawnTermFn = ((command: string, args: string[], options: any, termOptions: any, callback: (err?: Error, res?: any) => void) => void) | null;
1
+ type CreateSessionFn = ((options?: {
2
+ header?: string;
3
+ showStatusBar?: boolean;
4
+ interactive?: boolean;
5
+ }) => {
6
+ spawn: (command: string, args: string[], options: unknown, termOptions: unknown, callback: (err?: Error, res?: unknown) => void) => void;
7
+ close: () => void;
8
+ waitAndClose: (callback?: () => void) => void;
9
+ }) | undefined;
2
10
  interface SpawnTermModule {
3
- spawnTerm: SpawnTermFn;
11
+ createSession: CreateSessionFn;
4
12
  figures: {
5
13
  tick: string;
6
14
  cross: string;
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "default", {
8
8
  return loadSpawnTerm;
9
9
  }
10
10
  });
11
- var _installmodulelinked = require("install-module-linked");
11
+ var _installmodulelinked = /*#__PURE__*/ _interop_require_default(require("install-module-linked"));
12
12
  var _path = /*#__PURE__*/ _interop_require_default(require("path"));
13
13
  var _url = /*#__PURE__*/ _interop_require_default(require("url"));
14
14
  function _interop_require_default(obj) {
@@ -16,28 +16,88 @@ function _interop_require_default(obj) {
16
16
  default: obj
17
17
  };
18
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
+ }
19
60
  var _dirname = _path.default.dirname(typeof __dirname !== 'undefined' ? __dirname : _url.default.fileURLToPath(require("url").pathToFileURL(__filename).toString()));
20
- var nodeModules = _path.default.join(_dirname, '..', '..', 'node_modules');
61
+ var nodeModules = _path.default.join(_dirname, '..', '..', '..', 'node_modules');
62
+ var moduleName = 'spawn-term';
21
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_createSession, _mod_figures, _mod_formatArguments;
70
+ callback(null, {
71
+ createSession: (_mod_createSession = mod === null || mod === void 0 ? void 0 : mod.createSession) !== null && _mod_createSession !== void 0 ? _mod_createSession : undefined,
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
+ }
22
89
  function loadSpawnTerm(callback) {
23
90
  if (cached !== undefined) {
24
91
  callback(null, cached);
25
92
  return;
26
93
  }
27
- (0, _installmodulelinked.loadModule)('spawn-term', nodeModules, function(_err, mod) {
28
- var _mod_default, _mod_figures, _mod_formatArguments;
29
- // spawn-term returns undefined on CJS or Node <= 18
30
- cached = {
31
- spawnTerm: (_mod_default = mod === null || mod === void 0 ? void 0 : mod.default) !== null && _mod_default !== void 0 ? _mod_default : null,
32
- figures: (_mod_figures = mod === null || mod === void 0 ? void 0 : mod.figures) !== null && _mod_figures !== void 0 ? _mod_figures : {
33
- tick: '✓',
34
- cross: '✗'
35
- },
36
- formatArguments: (_mod_formatArguments = mod === null || mod === void 0 ? void 0 : mod.formatArguments) !== null && _mod_formatArguments !== void 0 ? _mod_formatArguments : function(args) {
37
- return args;
38
- }
39
- };
40
- callback(null, cached);
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
+ });
41
101
  });
42
102
  }
43
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; }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/lib/loadSpawnTerm.ts"],"sourcesContent":["import { loadModule } 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');\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\nexport default function loadSpawnTerm(callback: (err: Error | null, result: SpawnTermModule) => void): void {\n if (cached !== undefined) {\n callback(null, cached);\n return;\n }\n\n loadModule('spawn-term', nodeModules, (_err, mod) => {\n // spawn-term returns undefined on CJS or Node <= 18\n cached = {\n spawnTerm: mod?.default ?? null,\n figures: mod?.figures ?? { tick: '✓', cross: '✗' },\n formatArguments: mod?.formatArguments ?? ((args: string[]) => args),\n };\n callback(null, cached);\n });\n}\n"],"names":["loadSpawnTerm","_dirname","path","dirname","__dirname","url","fileURLToPath","nodeModules","join","cached","callback","undefined","loadModule","_err","mod","spawnTerm","default","figures","tick","cross","formatArguments","args"],"mappings":";;;;+BAkBA;;;eAAwBA;;;mCAlBG;2DACV;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;AAWpD,IAAIQ;AAEW,SAAST,cAAcU,QAA8D;IAClG,IAAID,WAAWE,WAAW;QACxBD,SAAS,MAAMD;QACf;IACF;IAEAG,IAAAA,+BAAU,EAAC,cAAcL,aAAa,SAACM,MAAMC;YAG9BA,cACFA,cACQA;QAJnB,oDAAoD;QACpDL,SAAS;YACPM,WAAWD,CAAAA,eAAAA,gBAAAA,0BAAAA,IAAKE,OAAO,cAAZF,0BAAAA,eAAgB;YAC3BG,SAASH,CAAAA,eAAAA,gBAAAA,0BAAAA,IAAKG,OAAO,cAAZH,0BAAAA,eAAgB;gBAAEI,MAAM;gBAAKC,OAAO;YAAI;YACjDC,iBAAiBN,CAAAA,uBAAAA,gBAAAA,0BAAAA,IAAKM,eAAe,cAApBN,kCAAAA,uBAAyB,SAACO;uBAAmBA;;QAChE;QACAX,SAAS,MAAMD;IACjB;AACF"}
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\ntype CreateSessionFn =\n | ((options?: { header?: string; showStatusBar?: boolean; interactive?: boolean }) => {\n spawn: (command: string, args: string[], options: unknown, termOptions: unknown, callback: (err?: Error, res?: unknown) => void) => void;\n close: () => void;\n waitAndClose: (callback?: () => void) => void;\n })\n | undefined;\n\ninterface SpawnTermModule {\n createSession: CreateSessionFn;\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 createSession: mod?.createSession ?? undefined,\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","createSession","undefined","figures","tick","cross","formatArguments","args","catch","err","installModule","_cached"],"mappings":";;;;+BA4CA;;;eAAwBA;;;0EA5CE;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;AAgBnB,IAAIC;AAEJ,SAASC,WAAWF,UAAU,EAAEG,QAAQ;IACtC,IAAI,OAAOC,YAAY,aAAa;QAClC,gBAAOJ;2DAAP;WACGK,IAAI,CAAC,SAACC;gBAEYA,oBACNA,cACQA;YAHnBH,SAAS,MAAM;gBACbI,eAAeD,CAAAA,qBAAAA,gBAAAA,0BAAAA,IAAKC,aAAa,cAAlBD,gCAAAA,qBAAsBE;gBACrCC,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,WAAWO,WAAW;QACxBL,SAAS,MAAMF;QACf;IACF;IACAe,IAAAA,4BAAa,EAAChB,YAAYF,aAAa,CAAC,GAAG,SAACiB;QAC1C,IAAIA,KAAK,OAAOZ,SAASY,KAAK;QAC9Bb,WAAWF,YAAY,SAACe,KAAKE;YAC3B,IAAIF,KAAK,OAAOZ,SAASY,KAAK;YAC9Bd,SAASgB;YACTd,SAAS,MAAMF;QACjB;IACF;AACF"}
@@ -53,16 +53,17 @@ function worker(versionExpression, command, args, options, callback) {
53
53
  // Load lazy dependencies in parallel
54
54
  var loaderQueue = new _queuecb.default();
55
55
  var installVersion;
56
- var spawnTerm;
56
+ var createSession;
57
57
  loaderQueue.defer(function(cb) {
58
58
  return (0, _loadNodeVersionInstallts.default)(function(err, fn) {
59
+ console.log(fn);
59
60
  installVersion = fn;
60
61
  cb(err);
61
62
  });
62
63
  });
63
64
  loaderQueue.defer(function(cb) {
64
65
  return (0, _loadSpawnTermts.default)(function(err, mod) {
65
- spawnTerm = mod === null || mod === void 0 ? void 0 : mod.spawnTerm;
66
+ createSession = mod === null || mod === void 0 ? void 0 : mod.createSession;
66
67
  cb(err);
67
68
  });
68
69
  });
@@ -83,6 +84,11 @@ function worker(versionExpression, command, args, options, callback) {
83
84
  var streamingOptions = options;
84
85
  var results = [];
85
86
  var queue = new _queuecb.default(1);
87
+ // Create session once for all processes (only if multiple versions)
88
+ var session = versions.length >= 2 && createSession && !streamingOptions.streaming ? createSession({
89
+ header: "".concat(command, " ").concat(args.join(' ')),
90
+ showStatusBar: true
91
+ }) : null;
86
92
  versions.forEach(function(version) {
87
93
  queue.defer(function(cb) {
88
94
  installVersion(version, installOptions, function(_err, installs) {
@@ -114,11 +120,9 @@ function worker(versionExpression, command, args, options, callback) {
114
120
  var spawnOptions = (0, _nodeversionutils.spawnOptions)(install.installPath, options);
115
121
  var prefix = install.version;
116
122
  if (versions.length < 2) return (0, _crossspawncb.default)(command, args, spawnOptions, next);
117
- if (spawnTerm && !streamingOptions.streaming) spawnTerm(command, args, spawnOptions, {
123
+ if (session) session.spawn(command, args, spawnOptions, {
118
124
  group: prefix,
119
- expanded: streamingOptions.expanded,
120
- header: "".concat(command, " ").concat(args.join(' ')),
121
- showStatusBar: true
125
+ expanded: streamingOptions.expanded
122
126
  }, next);
123
127
  else (0, _spawnstreaming.default)(command, args, spawnOptions, {
124
128
  prefix: prefix
@@ -127,7 +131,13 @@ function worker(versionExpression, command, args, options, callback) {
127
131
  });
128
132
  });
129
133
  queue.await(function(err) {
130
- err ? callback(err) : callback(null, results);
134
+ if (session) {
135
+ session.waitAndClose(function() {
136
+ err ? callback(err) : callback(null, results);
137
+ });
138
+ } else {
139
+ err ? callback(err) : callback(null, results);
140
+ }
131
141
  });
132
142
  });
133
143
  });
@@ -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 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 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","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;YAC3BN,iBAAiBM;YACjBH,GAAGE;QACL;;IAEFP,YAAYI,KAAK,CAAC,SAACC;eACjBI,IAAAA,wBAAa,EAAC,SAACF,KAAKG;YAClBP,YAAYO,gBAAAA,0BAAAA,IAAKP,SAAS;YAC1BE,GAAGE;QACL;;IAGFP,YAAYW,KAAK,CAAC,SAACC;QACjB,IAAIA,SAAS,OAAOb,SAASa;QAE7BC,IAAAA,4BAAe,EAAClB,mBAAmBG,SAA2B,SAACS,KAAaO;YAC1E,IAAIP,KAAK;gBACPR,SAASQ;gBACT;YACF;YACA,IAAI,CAACO,SAASC,MAAM,EAAE;gBACpBhB,SAAS,IAAIiB,MAAM,AAAC,sCAAuD,OAAlBrB;gBACzD;YACF;YAEA,IAAMsB,iBAAiB;gBAAEC,aAAAA,wBAAW;eAAKpB;YACzC,IAAMqB,mBAAmBrB;YACzB,IAAMsB,UAAuB,EAAE;YAC/B,IAAMC,QAAQ,IAAIpB,gBAAK,CAAC;YACxBa,SAASQ,OAAO,CAAC,SAACC;gBAChBF,MAAMjB,KAAK,CAAC,SAACC;oBACXH,eAAeqB,SAASN,gBAAgB,SAACO,MAAMC;4BASpCC,OAAT,SAASA,KAAKnB,GAAI,EAAEoB,GAAI;4BACtB,IAAIpB,OAAOA,IAAIqB,OAAO,CAACC,OAAO,CAAC,0BAA0B,GAAG;gCAC1DF,MAAMpB;gCACNA,MAAM;4BACR;4BACAa,QAAQU,IAAI,CAAC;gCAAEC,SAAAA;gCAASnC,SAAAA;gCAAS2B,SAAAA;gCAASS,OAAOzB;gCAAK0B,QAAQN;4BAAI;4BAClEtB;wBACF;wBAfA,IAAM0B,UAAUN,YAAYA,SAASV,MAAM,KAAK,IAAIU,QAAQ,CAAC,EAAE,GAAG;wBAClE,IAAI,CAACM,SAAS;4BACZX,QAAQU,IAAI,CAAC;gCAAEC,SAAAA;gCAASnC,SAAAA;gCAAS2B,SAAAA;gCAASS,OAAO,IAAIhB,MAAM,AAAC,0CAA6DkB,OAApBX,SAAQ,cAAqC,OAAzBW,KAAKC,SAAS,CAACV;gCAAcQ,QAAQ;4BAAK;4BACnK,OAAOlC;wBACT;wBACA,IAAMqC,eAAeC,IAAAA,8BAAkB,EAACN,QAAQO,WAAW,EAAExC;wBAC7D,IAAMyC,SAASR,QAAQR,OAAO;wBAW9B,IAAIT,SAASC,MAAM,GAAG,GAAG,OAAOyB,IAAAA,qBAAK,EAAC5C,SAASC,MAAMuC,cAAcV;wBACnE,IAAIvB,aAAa,CAACgB,iBAAiBsB,SAAS,EAAEtC,UAAUP,SAASC,MAAMuC,cAAc;4BAAEM,OAAOH;4BAAQI,UAAUxB,iBAAiBwB,QAAQ;4BAAEC,QAAQ,AAAC,GAAa/C,OAAXD,SAAQ,KAAkB,OAAfC,KAAKgD,IAAI,CAAC;4BAAQC,eAAe;wBAAK,GAAGpB;6BACrMqB,IAAAA,uBAAc,EAACnD,SAASC,MAAMuC,cAAc;4BAAEG,QAAAA;wBAAO,GAAGb;oBAC/D;gBACF;YACF;YACAL,MAAMV,KAAK,CAAC,SAACJ;gBACXA,MAAMR,SAASQ,OAAOR,SAAS,MAAMqB;YACvC;QACF;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 createSession:\n | ((options?: { header?: string; showStatusBar?: boolean; interactive?: boolean }) => {\n spawn: (command: string, args: string[], options: unknown, termOptions: unknown, callback: (err?: Error, res?: unknown) => void) => void;\n close: () => void;\n waitAndClose: (callback?: () => void) => void;\n })\n | undefined;\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 createSession = mod?.createSession;\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\n // Create session once for all processes (only if multiple versions)\n const session = versions.length >= 2 && createSession && !streamingOptions.streaming ? createSession({ header: `${command} ${args.join(' ')}`, showStatusBar: true }) : null;\n\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 (session) session.spawn(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 if (session) {\n session.waitAndClose(() => {\n err ? callback(err) : callback(null, results);\n });\n } else {\n err ? callback(err) : callback(null, results);\n }\n });\n });\n });\n}\n"],"names":["worker","versionExpression","command","args","options","callback","loaderQueue","Queue","installVersion","createSession","defer","cb","loadNodeVersionInstall","err","fn","console","log","loadSpawnTerm","mod","await","loadErr","resolveVersions","versions","length","Error","installOptions","storagePath","streamingOptions","results","queue","session","streaming","header","join","showStatusBar","forEach","version","_err","installs","next","res","message","indexOf","push","install","error","result","JSON","stringify","spawnOptions","createSpawnOptions","installPath","prefix","spawn","group","expanded","spawnStreaming","waitAndClose"],"mappings":"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"}
package/dist/esm/cli.js CHANGED
@@ -45,8 +45,16 @@ export default ((argv, name)=>{
45
45
  const errors = results.filter((result)=>!!result.error);
46
46
  if (!options.silent) {
47
47
  // Load spawn-term to get figures/formatArguments for output formatting
48
- loadSpawnTerm((_loadErr, { spawnTerm, figures, formatArguments })=>{
49
- if (!spawnTerm) {
48
+ loadSpawnTerm((_loadErr, mod)=>{
49
+ const { createSession, figures, formatArguments } = mod || {
50
+ createSession: undefined,
51
+ figures: {
52
+ tick: '✓',
53
+ cross: '✗'
54
+ },
55
+ formatArguments: (x)=>x
56
+ };
57
+ if (!createSession) {
50
58
  console.log('\n======================');
51
59
  results.forEach((res)=>{
52
60
  console.log(`${res.error ? figures.cross : figures.tick} ${res.version}${res.error ? ` Error: ${res.error.message}` : ''}`);
@@ -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 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"}
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, mod) => {\n const { createSession, figures, formatArguments } = mod || { createSession: undefined, figures: { tick: '✓', cross: '✗' }, formatArguments: (x: string[]) => x };\n if (!createSession) {\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","mod","createSession","figures","formatArguments","undefined","tick","cross","x","forEach","res","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,UAAUC;gBACvB,MAAM,EAAEC,aAAa,EAAEC,OAAO,EAAEC,eAAe,EAAE,GAAGH,OAAO;oBAAEC,eAAeG;oBAAWF,SAAS;wBAAEG,MAAM;wBAAKC,OAAO;oBAAI;oBAAGH,iBAAiB,CAACI,IAAgBA;gBAAE;gBAC/J,IAAI,CAACN,eAAe;oBAClBb,QAAQC,GAAG,CAAC;oBACZI,QAAQe,OAAO,CAAC,CAACC;wBACfrB,QAAQC,GAAG,CAAC,GAAGoB,IAAIX,KAAK,GAAGI,QAAQI,KAAK,GAAGJ,QAAQG,IAAI,CAAC,CAAC,EAAEI,IAAIC,OAAO,GAAGD,IAAIX,KAAK,GAAG,CAAC,QAAQ,EAAEW,IAAIX,KAAK,CAACJ,OAAO,EAAE,GAAG,IAAI;oBAC5H;oBACAN,QAAQC,GAAG,CAAC;oBACZD,QAAQC,GAAG,CAAC,GAAGhB,KAAK,CAAC,EAAE8B,gBAAgBlB,MAAM0B,IAAI,CAAC,MAAM;oBACxDvB,QAAQC,GAAG,CAAC,GAAGa,QAAQG,IAAI,CAAC,CAAC,EAAEZ,QAAQN,MAAM,GAAGQ,OAAOR,MAAM,CAAC,UAAU,CAAC;oBACzE,IAAIQ,OAAOR,MAAM,EAAEC,QAAQC,GAAG,CAAC,GAAGa,QAAQI,KAAK,CAAC,CAAC,EAAEX,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"}
@@ -1,18 +1,35 @@
1
- import { loadModule } from 'install-module-linked';
1
+ import installModule from 'install-module-linked';
2
2
  import path from 'path';
3
3
  import url from 'url';
4
4
  const _dirname = path.dirname(typeof __dirname !== 'undefined' ? __dirname : url.fileURLToPath(import.meta.url));
5
- const nodeModules = path.join(_dirname, '..', '..', 'node_modules');
5
+ const nodeModules = path.join(_dirname, '..', '..', '..', 'node_modules');
6
+ const moduleName = 'node-version-install';
6
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
+ }
7
22
  export default function loadNodeVersionInstall(callback) {
8
23
  if (cached !== undefined) {
9
24
  callback(null, cached);
10
25
  return;
11
26
  }
12
- loadModule('node-version-install', nodeModules, (err, mod)=>{
27
+ installModule(moduleName, nodeModules, {}, (err)=>{
13
28
  if (err) return callback(err, null);
14
- var _mod_default;
15
- cached = (_mod_default = mod === null || mod === void 0 ? void 0 : mod.default) !== null && _mod_default !== void 0 ? _mod_default : mod;
16
- callback(null, cached);
29
+ loadModule(moduleName, (err, _cached)=>{
30
+ if (err) return callback(err, null);
31
+ cached = _cached;
32
+ callback(null, cached);
33
+ });
17
34
  });
18
35
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/lib/loadNodeVersionInstall.ts"],"sourcesContent":["import { loadModule } 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');\n\ntype InstallCallback = (err?: Error, results?: InstallResult[]) => void;\ntype InstallVersionFn = (version: string, options: InstallOptions, callback: InstallCallback) => void;\n\nlet cached: InstallVersionFn | undefined;\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 loadModule('node-version-install', nodeModules, (err, mod) => {\n if (err) return callback(err, null);\n cached = mod?.default ?? mod;\n callback(null, cached);\n });\n}\n"],"names":["loadModule","path","url","_dirname","dirname","__dirname","fileURLToPath","nodeModules","join","cached","loadNodeVersionInstall","callback","undefined","err","mod","default"],"mappings":"AAAA,SAASA,UAAU,QAAQ,wBAAwB;AAEnD,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;AAKpD,IAAIM;AAEJ,eAAe,SAASC,uBAAuBC,QAAuE;IACpH,IAAIF,WAAWG,WAAW;QACxBD,SAAS,MAAMF;QACf;IACF;IAEAT,WAAW,wBAAwBO,aAAa,CAACM,KAAKC;QACpD,IAAID,KAAK,OAAOF,SAASE,KAAK;YACrBC;QAATL,SAASK,CAAAA,eAAAA,gBAAAA,0BAAAA,IAAKC,OAAO,cAAZD,0BAAAA,eAAgBA;QACzBH,SAAS,MAAMF;IACjB;AACF"}
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"}
@@ -1,6 +1,14 @@
1
- type SpawnTermFn = ((command: string, args: string[], options: any, termOptions: any, callback: (err?: Error, res?: any) => void) => void) | null;
1
+ type CreateSessionFn = ((options?: {
2
+ header?: string;
3
+ showStatusBar?: boolean;
4
+ interactive?: boolean;
5
+ }) => {
6
+ spawn: (command: string, args: string[], options: unknown, termOptions: unknown, callback: (err?: Error, res?: unknown) => void) => void;
7
+ close: () => void;
8
+ waitAndClose: (callback?: () => void) => void;
9
+ }) | undefined;
2
10
  interface SpawnTermModule {
3
- spawnTerm: SpawnTermFn;
11
+ createSession: CreateSessionFn;
4
12
  figures: {
5
13
  tick: string;
6
14
  cross: string;
@@ -1,25 +1,42 @@
1
- import { loadModule } from 'install-module-linked';
1
+ import installModule from 'install-module-linked';
2
2
  import path from 'path';
3
3
  import url from 'url';
4
4
  const _dirname = path.dirname(typeof __dirname !== 'undefined' ? __dirname : url.fileURLToPath(import.meta.url));
5
- const nodeModules = path.join(_dirname, '..', '..', 'node_modules');
5
+ const nodeModules = path.join(_dirname, '..', '..', '..', 'node_modules');
6
+ const moduleName = 'spawn-term';
6
7
  let cached;
8
+ function loadModule(moduleName, callback) {
9
+ if (typeof require === 'undefined') {
10
+ import(moduleName).then((mod)=>{
11
+ var _mod_createSession, _mod_figures, _mod_formatArguments;
12
+ callback(null, {
13
+ createSession: (_mod_createSession = mod === null || mod === void 0 ? void 0 : mod.createSession) !== null && _mod_createSession !== void 0 ? _mod_createSession : undefined,
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
+ }
7
29
  export default function loadSpawnTerm(callback) {
8
30
  if (cached !== undefined) {
9
31
  callback(null, cached);
10
32
  return;
11
33
  }
12
- loadModule('spawn-term', nodeModules, (_err, mod)=>{
13
- var _mod_default, _mod_figures, _mod_formatArguments;
14
- // spawn-term returns undefined on CJS or Node <= 18
15
- cached = {
16
- spawnTerm: (_mod_default = mod === null || mod === void 0 ? void 0 : mod.default) !== null && _mod_default !== void 0 ? _mod_default : null,
17
- figures: (_mod_figures = mod === null || mod === void 0 ? void 0 : mod.figures) !== null && _mod_figures !== void 0 ? _mod_figures : {
18
- tick: '✓',
19
- cross: '✗'
20
- },
21
- formatArguments: (_mod_formatArguments = mod === null || mod === void 0 ? void 0 : mod.formatArguments) !== null && _mod_formatArguments !== void 0 ? _mod_formatArguments : (args)=>args
22
- };
23
- callback(null, cached);
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
+ });
24
41
  });
25
42
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/lib/loadSpawnTerm.ts"],"sourcesContent":["import { loadModule } 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');\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\nexport default function loadSpawnTerm(callback: (err: Error | null, result: SpawnTermModule) => void): void {\n if (cached !== undefined) {\n callback(null, cached);\n return;\n }\n\n loadModule('spawn-term', nodeModules, (_err, mod) => {\n // spawn-term returns undefined on CJS or Node <= 18\n cached = {\n spawnTerm: mod?.default ?? null,\n figures: mod?.figures ?? { tick: '✓', cross: '✗' },\n formatArguments: mod?.formatArguments ?? ((args: string[]) => args),\n };\n callback(null, cached);\n });\n}\n"],"names":["loadModule","path","url","_dirname","dirname","__dirname","fileURLToPath","nodeModules","join","cached","loadSpawnTerm","callback","undefined","_err","mod","spawnTerm","default","figures","tick","cross","formatArguments","args"],"mappings":"AAAA,SAASA,UAAU,QAAQ,wBAAwB;AACnD,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;AAWpD,IAAIM;AAEJ,eAAe,SAASC,cAAcC,QAA8D;IAClG,IAAIF,WAAWG,WAAW;QACxBD,SAAS,MAAMF;QACf;IACF;IAEAT,WAAW,cAAcO,aAAa,CAACM,MAAMC;YAG9BA,cACFA,cACQA;QAJnB,oDAAoD;QACpDL,SAAS;YACPM,WAAWD,CAAAA,eAAAA,gBAAAA,0BAAAA,IAAKE,OAAO,cAAZF,0BAAAA,eAAgB;YAC3BG,SAASH,CAAAA,eAAAA,gBAAAA,0BAAAA,IAAKG,OAAO,cAAZH,0BAAAA,eAAgB;gBAAEI,MAAM;gBAAKC,OAAO;YAAI;YACjDC,iBAAiBN,CAAAA,uBAAAA,gBAAAA,0BAAAA,IAAKM,eAAe,cAApBN,kCAAAA,uBAAyB,CAACO,OAAmBA;QAChE;QACAV,SAAS,MAAMF;IACjB;AACF"}
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\ntype CreateSessionFn =\n | ((options?: { header?: string; showStatusBar?: boolean; interactive?: boolean }) => {\n spawn: (command: string, args: string[], options: unknown, termOptions: unknown, callback: (err?: Error, res?: unknown) => void) => void;\n close: () => void;\n waitAndClose: (callback?: () => void) => void;\n })\n | undefined;\n\ninterface SpawnTermModule {\n createSession: CreateSessionFn;\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 createSession: mod?.createSession ?? undefined,\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","createSession","undefined","figures","tick","cross","formatArguments","args","catch","err","loadSpawnTerm","_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;AAgBnB,IAAIC;AAEJ,SAASC,WAAWF,UAAU,EAAEG,QAAQ;IACtC,IAAI,OAAOC,YAAY,aAAa;QAClC,MAAM,CAACJ,YACJK,IAAI,CAAC,CAACC;gBAEYA,oBACNA,cACQA;YAHnBH,SAAS,MAAM;gBACbI,eAAeD,CAAAA,qBAAAA,gBAAAA,0BAAAA,IAAKC,aAAa,cAAlBD,gCAAAA,qBAAsBE;gBACrCC,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,WAAWO,WAAW;QACxBL,SAAS,MAAMF;QACf;IACF;IACAV,cAAcS,YAAYF,aAAa,CAAC,GAAG,CAACiB;QAC1C,IAAIA,KAAK,OAAOZ,SAASY,KAAK;QAC9Bb,WAAWF,YAAY,CAACe,KAAKE;YAC3B,IAAIF,KAAK,OAAOZ,SAASY,KAAK;YAC9Bd,SAASgB;YACTd,SAAS,MAAMF;QACjB;IACF;AACF"}
@@ -10,13 +10,14 @@ export default function worker(versionExpression, command, args, options, callba
10
10
  // Load lazy dependencies in parallel
11
11
  const loaderQueue = new Queue();
12
12
  let installVersion;
13
- let spawnTerm;
13
+ let createSession;
14
14
  loaderQueue.defer((cb)=>loadNodeVersionInstall((err, fn)=>{
15
+ console.log(fn);
15
16
  installVersion = fn;
16
17
  cb(err);
17
18
  }));
18
19
  loaderQueue.defer((cb)=>loadSpawnTerm((err, mod)=>{
19
- spawnTerm = mod === null || mod === void 0 ? void 0 : mod.spawnTerm;
20
+ createSession = mod === null || mod === void 0 ? void 0 : mod.createSession;
20
21
  cb(err);
21
22
  }));
22
23
  loaderQueue.await((loadErr)=>{
@@ -37,6 +38,11 @@ export default function worker(versionExpression, command, args, options, callba
37
38
  const streamingOptions = options;
38
39
  const results = [];
39
40
  const queue = new Queue(1);
41
+ // Create session once for all processes (only if multiple versions)
42
+ const session = versions.length >= 2 && createSession && !streamingOptions.streaming ? createSession({
43
+ header: `${command} ${args.join(' ')}`,
44
+ showStatusBar: true
45
+ }) : null;
40
46
  versions.forEach((version)=>{
41
47
  queue.defer((cb)=>{
42
48
  installVersion(version, installOptions, (_err, installs)=>{
@@ -68,11 +74,9 @@ export default function worker(versionExpression, command, args, options, callba
68
74
  cb();
69
75
  }
70
76
  if (versions.length < 2) return spawn(command, args, spawnOptions, next);
71
- if (spawnTerm && !streamingOptions.streaming) spawnTerm(command, args, spawnOptions, {
77
+ if (session) session.spawn(command, args, spawnOptions, {
72
78
  group: prefix,
73
- expanded: streamingOptions.expanded,
74
- header: `${command} ${args.join(' ')}`,
75
- showStatusBar: true
79
+ expanded: streamingOptions.expanded
76
80
  }, next);
77
81
  else spawnStreaming(command, args, spawnOptions, {
78
82
  prefix
@@ -81,7 +85,13 @@ export default function worker(versionExpression, command, args, options, callba
81
85
  });
82
86
  });
83
87
  queue.await((err)=>{
84
- err ? callback(err) : callback(null, results);
88
+ if (session) {
89
+ session.waitAndClose(()=>{
90
+ err ? callback(err) : callback(null, results);
91
+ });
92
+ } else {
93
+ err ? callback(err) : callback(null, results);
94
+ }
85
95
  });
86
96
  });
87
97
  });
@@ -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 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 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","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;YAC3BL,iBAAiBK;YACjBF,GAAGC;QACL;IAEFL,YAAYG,KAAK,CAAC,CAACC,KACjBX,cAAc,CAACY,KAAKE;YAClBL,YAAYK,gBAAAA,0BAAAA,IAAKL,SAAS;YAC1BE,GAAGC;QACL;IAGFL,YAAYQ,KAAK,CAAC,CAACC;QACjB,IAAIA,SAAS,OAAOV,SAASU;QAE7BvB,gBAAgBS,mBAAmBG,SAA2B,CAACO,KAAaK;YAC1E,IAAIL,KAAK;gBACPN,SAASM;gBACT;YACF;YACA,IAAI,CAACK,SAASC,MAAM,EAAE;gBACpBZ,SAAS,IAAIa,MAAM,CAAC,mCAAmC,EAAEjB,mBAAmB;gBAC5E;YACF;YAEA,MAAMkB,iBAAiB;gBAAEtB;gBAAa,GAAGO,OAAO;YAAC;YACjD,MAAMgB,mBAAmBhB;YACzB,MAAMiB,UAAuB,EAAE;YAC/B,MAAMC,QAAQ,IAAI3B,MAAM;YACxBqB,SAASO,OAAO,CAAC,CAACC;gBAChBF,MAAMb,KAAK,CAAC,CAACC;oBACXH,eAAeiB,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;gCAASzB;gCAASsB;gCAASK,OAAO,IAAIX,MAAM,CAAC,uCAAuC,EAAEM,QAAQ,UAAU,EAAEM,KAAKC,SAAS,CAACL,WAAW;gCAAGM,QAAQ;4BAAK;4BACnK,OAAO3B;wBACT;wBACA,MAAMZ,eAAeC,mBAAmBiC,QAAQM,WAAW,EAAE7B;wBAC7D,MAAM8B,SAASP,QAAQH,OAAO;wBAE9B,SAASW,KAAKxB,GAAI,EAAEyB,GAAI;4BACtB,IAAIzB,OAAOA,IAAI0B,OAAO,CAACC,OAAO,CAAC,0BAA0B,GAAG;gCAC1DF,MAAMzB;gCACNA,MAAM;4BACR;4BACAU,QAAQO,IAAI,CAAC;gCAAED;gCAASzB;gCAASsB;gCAASK,OAAOlB;gCAAKqB,QAAQI;4BAAI;4BAClE1B;wBACF;wBAEA,IAAIM,SAASC,MAAM,GAAG,GAAG,OAAO1B,MAAMW,SAASC,MAAMV,cAAc0C;wBACnE,IAAI3B,aAAa,CAACY,iBAAiBmB,SAAS,EAAE/B,UAAUN,SAASC,MAAMV,cAAc;4BAAE+C,OAAON;4BAAQO,UAAUrB,iBAAiBqB,QAAQ;4BAAEC,QAAQ,GAAGxC,QAAQ,CAAC,EAAEC,KAAKwC,IAAI,CAAC,MAAM;4BAAEC,eAAe;wBAAK,GAAGT;6BACrMvC,eAAeM,SAASC,MAAMV,cAAc;4BAAEyC;wBAAO,GAAGC;oBAC/D;gBACF;YACF;YACAb,MAAMR,KAAK,CAAC,CAACH;gBACXA,MAAMN,SAASM,OAAON,SAAS,MAAMgB;YACvC;QACF;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 createSession:\n | ((options?: { header?: string; showStatusBar?: boolean; interactive?: boolean }) => {\n spawn: (command: string, args: string[], options: unknown, termOptions: unknown, callback: (err?: Error, res?: unknown) => void) => void;\n close: () => void;\n waitAndClose: (callback?: () => void) => void;\n })\n | undefined;\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 createSession = mod?.createSession;\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\n // Create session once for all processes (only if multiple versions)\n const session = versions.length >= 2 && createSession && !streamingOptions.streaming ? createSession({ header: `${command} ${args.join(' ')}`, showStatusBar: true }) : null;\n\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 (session) session.spawn(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 if (session) {\n session.waitAndClose(() => {\n err ? callback(err) : callback(null, results);\n });\n } else {\n err ? callback(err) : callback(null, results);\n }\n });\n });\n });\n}\n"],"names":["spawn","resolveVersions","spawnOptions","createSpawnOptions","Queue","spawnStreaming","storagePath","loadNodeVersionInstall","loadSpawnTerm","worker","versionExpression","command","args","options","callback","loaderQueue","installVersion","createSession","defer","cb","err","fn","console","log","mod","await","loadErr","versions","length","Error","installOptions","streamingOptions","results","queue","session","streaming","header","join","showStatusBar","forEach","version","_err","installs","install","push","error","JSON","stringify","result","installPath","prefix","next","res","message","indexOf","group","expanded","waitAndClose"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-version-use",
3
- "version": "1.8.0",
3
+ "version": "1.8.3",
4
4
  "description": "Cross-platform solution for using multiple versions of node. Useful for compatibility testing",
5
5
  "keywords": [
6
6
  "node",