node-version-use 1.8.1 → 1.8.4

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
@@ -28,13 +28,15 @@ var _default = function(argv, name) {
28
28
  silent: 'si'
29
29
  },
30
30
  default: {
31
- range: 'major,even'
31
+ range: 'major,even',
32
+ interactive: true
32
33
  },
33
34
  boolean: [
34
35
  'silent',
35
36
  'desc',
36
37
  'expanded',
37
- 'streaming'
38
+ 'streaming',
39
+ 'interactive'
38
40
  ],
39
41
  stopEarly: true
40
42
  });
@@ -62,9 +64,18 @@ var _default = function(argv, name) {
62
64
  });
63
65
  if (!options.silent) {
64
66
  // 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) {
67
+ (0, _loadSpawnTermts.default)(function(_loadErr, mod) {
68
+ var _ref = mod || {
69
+ createSession: undefined,
70
+ figures: {
71
+ tick: '✓',
72
+ cross: '✗'
73
+ },
74
+ formatArguments: function(x) {
75
+ return x;
76
+ }
77
+ }, createSession = _ref.createSession, figures = _ref.figures, formatArguments = _ref.formatArguments;
78
+ if (!createSession) {
68
79
  console.log('\n======================');
69
80
  results.forEach(function(res) {
70
81
  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', interactive: true },\n boolean: ['silent', 'desc', 'expanded', 'streaming', 'interactive'],\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","interactive","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;YAAcM,aAAa;QAAK;QAClDC,SAAS;YAAC;YAAU;YAAQ;YAAY;YAAa;SAAc;QACnEC,WAAW;IACb;IAEA,4JAA4J;IAC5J,4DAA4D;IAC5DX,QAAQY,IAAI,GAAGZ,QAAQI,IAAI,GAAG,CAAC,IAAI;IAEnC,IAAMS,OAAOb,QAAQc,CAAC;IACtB,IAAID,KAAKE,MAAM,KAAK,GAAG;QACrBC,QAAQC,GAAG,CAAC,AAAC,8CAAkD,OAALlB,MAAK;QAC/D,OAAOmB,IAAAA,aAAI,EAACrB;IACd;IACA,IAAIgB,KAAKE,MAAM,KAAK,GAAG;QACrBC,QAAQC,GAAG,CAAC,AAAC,mCAAuC,OAALlB,MAAK;QACpD,OAAOmB,IAAAA,aAAI,EAACrB;IACd;IAEAG,QAAQmB,KAAK,GAAG,WAAW,qBAAqB;IAChD,OAAOC,IAAAA,gBAAG,EAACP,IAAI,CAAC,EAAE,EAAEA,IAAI,CAAC,EAAE,EAAEA,KAAKQ,KAAK,CAAC,IAAIrB,SAAkC,SAACsB,KAAeC;QAC5F,IAAID,OAAO,CAACA,IAAIC,OAAO,EAAE;YACvBP,QAAQC,GAAG,CAACK,IAAIE,OAAO;YACvB,OAAON,IAAAA,aAAI,EAACrB;QACd;QACA,IAAIyB,KAAKC,UAAUD,IAAIC,OAAO;QAC9B,IAAME,SAASF,QAAQG,MAAM,CAAC,SAACC;mBAAW,CAAC,CAACA,OAAOC,KAAK;;QAExD,IAAI,CAAC5B,QAAQO,MAAM,EAAE;YACnB,uEAAuE;YACvEsB,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,OAARtC,MAAK,KAAmC,OAAhCsC,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,GAAGlB,aAAa;YAC3C;QACF,OAAO;YACLqB,IAAAA,aAAI,EAACI,OAAOG,OAAOV,MAAM,GAAGlB,aAAa;QAC3C;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;
@@ -66,9 +66,9 @@ function loadModule(moduleName, callback) {
66
66
  Promise.resolve(moduleName).then(function(p) {
67
67
  return /*#__PURE__*/ _interop_require_wildcard(require(p));
68
68
  }).then(function(mod) {
69
- var _mod_default, _mod_figures, _mod_formatArguments;
69
+ var _mod_createSession, _mod_figures, _mod_formatArguments;
70
70
  callback(null, {
71
- spawnTerm: (_mod_default = mod === null || mod === void 0 ? void 0 : mod.default) !== null && _mod_default !== void 0 ? _mod_default : null,
71
+ createSession: (_mod_createSession = mod === null || mod === void 0 ? void 0 : mod.createSession) !== null && _mod_createSession !== void 0 ? _mod_createSession : undefined,
72
72
  figures: (_mod_figures = mod === null || mod === void 0 ? void 0 : mod.figures) !== null && _mod_figures !== void 0 ? _mod_figures : {
73
73
  tick: '✓',
74
74
  cross: '✗'
@@ -1 +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"}
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"}
@@ -17,6 +17,7 @@ export interface Options {
17
17
  sort?: number;
18
18
  streaming?: boolean;
19
19
  expanded?: boolean;
20
+ interactive?: boolean;
20
21
  }
21
- export type UseOptions = Options | InstallOptions | VersionOptions | SpawnOptions;
22
+ export type UseOptions = Options & InstallOptions & VersionOptions & SpawnOptions;
22
23
  export type UseCallback = (err?: UseError | Error, results?: UseResult[]) => undefined;
@@ -17,6 +17,7 @@ export interface Options {
17
17
  sort?: number;
18
18
  streaming?: boolean;
19
19
  expanded?: boolean;
20
+ interactive?: boolean;
20
21
  }
21
- export type UseOptions = Options | InstallOptions | VersionOptions | SpawnOptions;
22
+ export type UseOptions = Options & InstallOptions & VersionOptions & SpawnOptions;
22
23
  export type UseCallback = (err?: UseError | Error, results?: UseResult[]) => undefined;
@@ -53,7 +53,7 @@ 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
59
  console.log(fn);
@@ -63,7 +63,7 @@ function worker(versionExpression, command, args, options, callback) {
63
63
  });
64
64
  loaderQueue.defer(function(cb) {
65
65
  return (0, _loadSpawnTermts.default)(function(err, mod) {
66
- spawnTerm = mod === null || mod === void 0 ? void 0 : mod.spawnTerm;
66
+ createSession = mod === null || mod === void 0 ? void 0 : mod.createSession;
67
67
  cb(err);
68
68
  });
69
69
  });
@@ -84,6 +84,13 @@ function worker(versionExpression, command, args, options, callback) {
84
84
  var streamingOptions = options;
85
85
  var results = [];
86
86
  var queue = new _queuecb.default(1);
87
+ // Create session once for all processes (only if multiple versions)
88
+ var interactive = options.interactive !== false;
89
+ var session = versions.length >= 2 && createSession && !streamingOptions.streaming ? createSession({
90
+ header: "".concat(command, " ").concat(args.join(' ')),
91
+ showStatusBar: true,
92
+ interactive: interactive
93
+ }) : null;
87
94
  versions.forEach(function(version) {
88
95
  queue.defer(function(cb) {
89
96
  installVersion(version, installOptions, function(_err, installs) {
@@ -115,11 +122,9 @@ function worker(versionExpression, command, args, options, callback) {
115
122
  var spawnOptions = (0, _nodeversionutils.spawnOptions)(install.installPath, options);
116
123
  var prefix = install.version;
117
124
  if (versions.length < 2) return (0, _crossspawncb.default)(command, args, spawnOptions, next);
118
- if (spawnTerm && !streamingOptions.streaming) spawnTerm(command, args, spawnOptions, {
125
+ if (session) session.spawn(command, args, spawnOptions, {
119
126
  group: prefix,
120
- expanded: streamingOptions.expanded,
121
- header: "".concat(command, " ").concat(args.join(' ')),
122
- showStatusBar: true
127
+ expanded: streamingOptions.expanded
123
128
  }, next);
124
129
  else (0, _spawnstreaming.default)(command, args, spawnOptions, {
125
130
  prefix: prefix
@@ -128,7 +133,13 @@ function worker(versionExpression, command, args, options, callback) {
128
133
  });
129
134
  });
130
135
  queue.await(function(err) {
131
- err ? callback(err) : callback(null, results);
136
+ if (session) {
137
+ session.waitAndClose(function() {
138
+ err ? callback(err) : callback(null, results);
139
+ });
140
+ } else {
141
+ err ? callback(err) : callback(null, results);
142
+ }
132
143
  });
133
144
  });
134
145
  });
@@ -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 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":"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"}
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 interactive = options.interactive !== false;\n const session = versions.length >= 2 && createSession && !streamingOptions.streaming ? createSession({ header: `${command} ${args.join(' ')}`, showStatusBar: true, interactive }) : 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","interactive","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
@@ -13,13 +13,15 @@ export default ((argv, name)=>{
13
13
  silent: 'si'
14
14
  },
15
15
  default: {
16
- range: 'major,even'
16
+ range: 'major,even',
17
+ interactive: true
17
18
  },
18
19
  boolean: [
19
20
  'silent',
20
21
  'desc',
21
22
  'expanded',
22
- 'streaming'
23
+ 'streaming',
24
+ 'interactive'
23
25
  ],
24
26
  stopEarly: true
25
27
  });
@@ -45,8 +47,16 @@ export default ((argv, name)=>{
45
47
  const errors = results.filter((result)=>!!result.error);
46
48
  if (!options.silent) {
47
49
  // Load spawn-term to get figures/formatArguments for output formatting
48
- loadSpawnTerm((_loadErr, { spawnTerm, figures, formatArguments })=>{
49
- if (!spawnTerm) {
50
+ loadSpawnTerm((_loadErr, mod)=>{
51
+ const { createSession, figures, formatArguments } = mod || {
52
+ createSession: undefined,
53
+ figures: {
54
+ tick: '✓',
55
+ cross: '✗'
56
+ },
57
+ formatArguments: (x)=>x
58
+ };
59
+ if (!createSession) {
50
60
  console.log('\n======================');
51
61
  results.forEach((res)=>{
52
62
  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', interactive: true },\n boolean: ['silent', 'desc', 'expanded', 'streaming', 'interactive'],\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","interactive","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;YAAcM,aAAa;QAAK;QAClDC,SAAS;YAAC;YAAU;YAAQ;YAAY;YAAa;SAAc;QACnEC,WAAW;IACb;IAEA,4JAA4J;IAC5J,4DAA4D;IAC5DV,QAAQW,IAAI,GAAGX,QAAQG,IAAI,GAAG,CAAC,IAAI;IAEnC,MAAMS,OAAOZ,QAAQa,CAAC;IACtB,IAAID,KAAKE,MAAM,KAAK,GAAG;QACrBC,QAAQC,GAAG,CAAC,CAAC,2CAA2C,EAAEjB,KAAK,0BAA0B,CAAC;QAC1F,OAAON,KAAKI;IACd;IACA,IAAIe,KAAKE,MAAM,KAAK,GAAG;QACrBC,QAAQC,GAAG,CAAC,CAAC,gCAAgC,EAAEjB,KAAK,0BAA0B,CAAC;QAC/E,OAAON,KAAKI;IACd;IAEAG,QAAQiB,KAAK,GAAG,WAAW,qBAAqB;IAChD,OAAOtB,IAAIiB,IAAI,CAAC,EAAE,EAAEA,IAAI,CAAC,EAAE,EAAEA,KAAKM,KAAK,CAAC,IAAIlB,SAAkC,CAACmB,KAAeC;QAC5F,IAAID,OAAO,CAACA,IAAIC,OAAO,EAAE;YACvBL,QAAQC,GAAG,CAACG,IAAIE,OAAO;YACvB,OAAO5B,KAAKI;QACd;QACA,IAAIsB,KAAKC,UAAUD,IAAIC,OAAO;QAC9B,MAAME,SAASF,QAAQG,MAAM,CAAC,CAACC,SAAW,CAAC,CAACA,OAAOC,KAAK;QAExD,IAAI,CAACzB,QAAQM,MAAM,EAAE;YACnB,uEAAuE;YACvEV,cAAc,CAAC8B,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,GAAGjB,KAAK,CAAC,EAAE+B,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;gBACArB,KAAK0B,OAAOG,OAAOR,MAAM,GAAGjB,aAAa;YAC3C;QACF,OAAO;YACLJ,KAAK0B,OAAOG,OAAOR,MAAM,GAAGjB,aAAa;QAC3C;IACF;AACF,CAAA,EAAE"}
@@ -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,9 +8,9 @@ let cached;
8
8
  function loadModule(moduleName, callback) {
9
9
  if (typeof require === 'undefined') {
10
10
  import(moduleName).then((mod)=>{
11
- var _mod_default, _mod_figures, _mod_formatArguments;
11
+ var _mod_createSession, _mod_figures, _mod_formatArguments;
12
12
  callback(null, {
13
- spawnTerm: (_mod_default = mod === null || mod === void 0 ? void 0 : mod.default) !== null && _mod_default !== void 0 ? _mod_default : null,
13
+ createSession: (_mod_createSession = mod === null || mod === void 0 ? void 0 : mod.createSession) !== null && _mod_createSession !== void 0 ? _mod_createSession : undefined,
14
14
  figures: (_mod_figures = mod === null || mod === void 0 ? void 0 : mod.figures) !== null && _mod_figures !== void 0 ? _mod_figures : {
15
15
  tick: '✓',
16
16
  cross: '✗'
@@ -1 +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
+ {"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"}
@@ -17,6 +17,7 @@ export interface Options {
17
17
  sort?: number;
18
18
  streaming?: boolean;
19
19
  expanded?: boolean;
20
+ interactive?: boolean;
20
21
  }
21
- export type UseOptions = Options | InstallOptions | VersionOptions | SpawnOptions;
22
+ export type UseOptions = Options & InstallOptions & VersionOptions & SpawnOptions;
22
23
  export type UseCallback = (err?: UseError | Error, results?: UseResult[]) => undefined;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/types.ts"],"sourcesContent":["import type { SpawnOptions, SpawnResult } from 'cross-spawn-cb';\nimport type { VersionOptions } from 'node-resolve-versions';\nimport type { InstallOptions, InstallResult } from 'node-version-install';\n\nexport interface UseResult {\n install: InstallResult;\n command: string;\n version: string;\n result?: SpawnResult;\n error?: Error;\n}\n\nexport interface UseError extends Error {\n results: UseResult[] | undefined;\n}\n\nexport interface Options {\n range?: string;\n concurrency?: number;\n sort?: number;\n streaming?: boolean;\n expanded?: boolean;\n}\nexport type UseOptions = Options | InstallOptions | VersionOptions | SpawnOptions;\n\nexport type UseCallback = (err?: UseError | Error, results?: UseResult[]) => undefined;\n"],"names":[],"mappings":"AAyBA,WAAuF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/types.ts"],"sourcesContent":["import type { SpawnOptions, SpawnResult } from 'cross-spawn-cb';\nimport type { VersionOptions } from 'node-resolve-versions';\nimport type { InstallOptions, InstallResult } from 'node-version-install';\n\nexport interface UseResult {\n install: InstallResult;\n command: string;\n version: string;\n result?: SpawnResult;\n error?: Error;\n}\n\nexport interface UseError extends Error {\n results: UseResult[] | undefined;\n}\n\nexport interface Options {\n range?: string;\n concurrency?: number;\n sort?: number;\n streaming?: boolean;\n expanded?: boolean;\n interactive?: boolean;\n}\nexport type UseOptions = Options & InstallOptions & VersionOptions & SpawnOptions;\n\nexport type UseCallback = (err?: UseError | Error, results?: UseResult[]) => undefined;\n"],"names":[],"mappings":"AA0BA,WAAuF"}
@@ -10,14 +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
15
  console.log(fn);
16
16
  installVersion = fn;
17
17
  cb(err);
18
18
  }));
19
19
  loaderQueue.defer((cb)=>loadSpawnTerm((err, mod)=>{
20
- spawnTerm = mod === null || mod === void 0 ? void 0 : mod.spawnTerm;
20
+ createSession = mod === null || mod === void 0 ? void 0 : mod.createSession;
21
21
  cb(err);
22
22
  }));
23
23
  loaderQueue.await((loadErr)=>{
@@ -38,6 +38,13 @@ export default function worker(versionExpression, command, args, options, callba
38
38
  const streamingOptions = options;
39
39
  const results = [];
40
40
  const queue = new Queue(1);
41
+ // Create session once for all processes (only if multiple versions)
42
+ const interactive = options.interactive !== false;
43
+ const session = versions.length >= 2 && createSession && !streamingOptions.streaming ? createSession({
44
+ header: `${command} ${args.join(' ')}`,
45
+ showStatusBar: true,
46
+ interactive
47
+ }) : null;
41
48
  versions.forEach((version)=>{
42
49
  queue.defer((cb)=>{
43
50
  installVersion(version, installOptions, (_err, installs)=>{
@@ -69,11 +76,9 @@ export default function worker(versionExpression, command, args, options, callba
69
76
  cb();
70
77
  }
71
78
  if (versions.length < 2) return spawn(command, args, spawnOptions, next);
72
- if (spawnTerm && !streamingOptions.streaming) spawnTerm(command, args, spawnOptions, {
79
+ if (session) session.spawn(command, args, spawnOptions, {
73
80
  group: prefix,
74
- expanded: streamingOptions.expanded,
75
- header: `${command} ${args.join(' ')}`,
76
- showStatusBar: true
81
+ expanded: streamingOptions.expanded
77
82
  }, next);
78
83
  else spawnStreaming(command, args, spawnOptions, {
79
84
  prefix
@@ -82,7 +87,13 @@ export default function worker(versionExpression, command, args, options, callba
82
87
  });
83
88
  });
84
89
  queue.await((err)=>{
85
- err ? callback(err) : callback(null, results);
90
+ if (session) {
91
+ session.waitAndClose(()=>{
92
+ err ? callback(err) : callback(null, results);
93
+ });
94
+ } else {
95
+ err ? callback(err) : callback(null, results);
96
+ }
86
97
  });
87
98
  });
88
99
  });
@@ -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 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"}
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 interactive = options.interactive !== false;\n const session = versions.length >= 2 && createSession && !streamingOptions.streaming ? createSession({ header: `${command} ${args.join(' ')}`, showStatusBar: true, interactive }) : 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","interactive","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":"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;IAQJF,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,gBAAgBO,gBAAAA,0BAAAA,IAAKP,aAAa;YAClCE,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;YAExB,oEAAoE;YACpE,MAAM8B,cAAcrB,QAAQqB,WAAW,KAAK;YAC5C,MAAMC,UAAUR,SAASC,MAAM,IAAI,KAAKX,iBAAiB,CAACc,iBAAiBK,SAAS,GAAGnB,cAAc;gBAAEoB,QAAQ,GAAG1B,QAAQ,CAAC,EAAEC,KAAK0B,IAAI,CAAC,MAAM;gBAAEC,eAAe;gBAAML;YAAY,KAAK;YAErLP,SAASa,OAAO,CAAC,CAACC;gBAChBR,MAAMf,KAAK,CAAC,CAACC;oBACXH,eAAeyB,SAASX,gBAAgB,CAACY,MAAMC;wBAC7C,MAAMC,UAAUD,YAAYA,SAASf,MAAM,KAAK,IAAIe,QAAQ,CAAC,EAAE,GAAG;wBAClE,IAAI,CAACC,SAAS;4BACZZ,QAAQa,IAAI,CAAC;gCAAED;gCAASjC;gCAAS8B;gCAASK,OAAO,IAAIjB,MAAM,CAAC,uCAAuC,EAAEY,QAAQ,UAAU,EAAEM,KAAKC,SAAS,CAACL,WAAW;gCAAGM,QAAQ;4BAAK;4BACnK,OAAOnC;wBACT;wBACA,MAAMZ,eAAeC,mBAAmByC,QAAQM,WAAW,EAAErC;wBAC7D,MAAMsC,SAASP,QAAQH,OAAO;wBAE9B,SAASW,KAAKhC,GAAI,EAAEiC,GAAI;4BACtB,IAAIjC,OAAOA,IAAIkC,OAAO,CAACC,OAAO,CAAC,0BAA0B,GAAG;gCAC1DF,MAAMjC;gCACNA,MAAM;4BACR;4BACAY,QAAQa,IAAI,CAAC;gCAAED;gCAASjC;gCAAS8B;gCAASK,OAAO1B;gCAAK6B,QAAQI;4BAAI;4BAClElC;wBACF;wBAEA,IAAIQ,SAASC,MAAM,GAAG,GAAG,OAAO5B,MAAMW,SAASC,MAAMV,cAAckD;wBACnE,IAAIjB,SAASA,QAAQnC,KAAK,CAACW,SAASC,MAAMV,cAAc;4BAAEsD,OAAOL;4BAAQM,UAAU1B,iBAAiB0B,QAAQ;wBAAC,GAAGL;6BAC3G/C,eAAeM,SAASC,MAAMV,cAAc;4BAAEiD;wBAAO,GAAGC;oBAC/D;gBACF;YACF;YACAnB,MAAMR,KAAK,CAAC,CAACL;gBACX,IAAIe,SAAS;oBACXA,QAAQuB,YAAY,CAAC;wBACnBtC,MAAMN,SAASM,OAAON,SAAS,MAAMkB;oBACvC;gBACF,OAAO;oBACLZ,MAAMN,SAASM,OAAON,SAAS,MAAMkB;gBACvC;YACF;QACF;IACF;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-version-use",
3
- "version": "1.8.1",
3
+ "version": "1.8.4",
4
4
  "description": "Cross-platform solution for using multiple versions of node. Useful for compatibility testing",
5
5
  "keywords": [
6
6
  "node",