node-version-use
Version:
Cross-platform solution for using multiple versions of node. Useful for compatibility testing
1 lines • 4.25 kB
Source Map (JSON)
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-use/src/worker.ts"],"sourcesContent":["import spawn from 'cross-spawn-cb';\nimport resolveVersions from 'node-resolve-versions';\nimport installVersion from 'node-version-install';\nimport { spawnOptions as createSpawnOptions } from 'node-version-utils';\nimport Queue from 'queue-cb';\nimport spawnStreaming from 'spawn-streaming';\nimport spawnTerm from 'spawn-term';\nimport { storagePath } from './constants';\n\nexport default function worker(versionExpression, command, args, options, callback) {\n resolveVersions(versionExpression, options, (err, versions) => {\n if (err) return callback(err);\n if (!versions.length) return callback(new Error(`No versions found from expression: ${versionExpression}`));\n\n const installOptions = { storagePath, ...options };\n const results = [];\n const queue = new Queue(1);\n versions.forEach((version) =>\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);\n const prefix = install.version;\n\n const next = (err, res) => {\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 && !options.streaming) spawnTerm(command, args, spawnOptions, { group: prefix, expanded: options.expanded }, next);\n else spawnStreaming(command, args, spawnOptions, { prefix }, next);\n });\n })\n );\n queue.await((err) => {\n err ? callback(err) : callback(null, results);\n });\n });\n}\n"],"names":["worker","versionExpression","command","args","options","callback","resolveVersions","err","versions","length","Error","installOptions","storagePath","results","queue","Queue","forEach","version","defer","cb","installVersion","_err","installs","install","push","error","JSON","stringify","result","spawnOptions","createSpawnOptions","installPath","prefix","next","res","message","indexOf","spawn","spawnTerm","streaming","group","expanded","spawnStreaming","await"],"mappings":";;;;+BASA;;;eAAwBA;;;mEATN;0EACU;yEACD;gCACwB;8DACjC;qEACS;gEACL;yBACM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEb,SAASA,OAAOC,iBAAiB,EAAEC,OAAO,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IAChFC,IAAAA,4BAAe,EAACL,mBAAmBG,SAAS,SAACG,KAAKC;QAChD,IAAID,KAAK,OAAOF,SAASE;QACzB,IAAI,CAACC,SAASC,MAAM,EAAE,OAAOJ,SAAS,IAAIK,MAAM,AAAC,sCAAuD,OAAlBT;QAEtF,IAAMU,iBAAiB;YAAEC,aAAAA,sBAAW;WAAKR;QACzC,IAAMS,UAAU,EAAE;QAClB,IAAMC,QAAQ,IAAIC,gBAAK,CAAC;QACxBP,SAASQ,OAAO,CAAC,SAACC;mBAChBH,MAAMI,KAAK,CAAC,SAACC;gBACXC,IAAAA,2BAAc,EAACH,SAASN,gBAAgB,SAACU,MAAMC;oBAC7C,IAAMC,UAAUD,YAAYA,SAASb,MAAM,KAAK,IAAIa,QAAQ,CAAC,EAAE,GAAG;oBAClE,IAAI,CAACC,SAAS;wBACZV,QAAQW,IAAI,CAAC;4BAAED,SAAAA;4BAASrB,SAAAA;4BAASe,SAAAA;4BAASQ,OAAO,IAAIf,MAAM,AAAC,0CAA6DgB,OAApBT,SAAQ,cAAqC,OAAzBS,KAAKC,SAAS,CAACL;4BAAcM,QAAQ;wBAAK;wBACnK,OAAOvB;oBACT;oBACA,IAAMwB,eAAeC,IAAAA,8BAAkB,EAACP,QAAQQ,WAAW,EAAE3B;oBAC7D,IAAM4B,SAAST,QAAQN,OAAO;oBAE9B,IAAMgB,OAAO,SAAC1B,KAAK2B;wBACjB,IAAI3B,OAAOA,IAAI4B,OAAO,CAACC,OAAO,CAAC,0BAA0B,GAAG;4BAC1DF,MAAM3B;4BACNA,MAAM;wBACR;wBACAM,QAAQW,IAAI,CAAC;4BAAED,SAAAA;4BAASrB,SAAAA;4BAASe,SAAAA;4BAASQ,OAAOlB;4BAAKqB,QAAQM;wBAAI;wBAClEf;oBACF;oBAEA,IAAIX,SAASC,MAAM,GAAG,GAAG,OAAO4B,IAAAA,qBAAK,EAACnC,SAASC,MAAM0B,cAAcI;oBACnE,IAAIK,kBAAS,IAAI,CAAClC,QAAQmC,SAAS,EAAED,IAAAA,kBAAS,EAACpC,SAASC,MAAM0B,cAAc;wBAAEW,OAAOR;wBAAQS,UAAUrC,QAAQqC,QAAQ;oBAAC,GAAGR;yBACtHS,IAAAA,uBAAc,EAACxC,SAASC,MAAM0B,cAAc;wBAAEG,QAAAA;oBAAO,GAAGC;gBAC/D;YACF;;QAEFnB,MAAM6B,KAAK,CAAC,SAACpC;YACXA,MAAMF,SAASE,OAAOF,SAAS,MAAMQ;QACvC;IACF;AACF"}