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":["spawn","resolveVersions","installVersion","spawnOptions","createSpawnOptions","Queue","spawnStreaming","spawnTerm","storagePath","worker","versionExpression","command","args","options","callback","err","versions","length","Error","installOptions","results","queue","forEach","version","defer","cb","_err","installs","install","push","error","JSON","stringify","result","installPath","prefix","next","res","message","indexOf","streaming","group","expanded","await"],"mappings":"AAAA,OAAOA,WAAW,iBAAiB;AACnC,OAAOC,qBAAqB,wBAAwB;AACpD,OAAOC,oBAAoB,uBAAuB;AAClD,SAASC,gBAAgBC,kBAAkB,QAAQ,qBAAqB;AACxE,OAAOC,WAAW,WAAW;AAC7B,OAAOC,oBAAoB,kBAAkB;AAC7C,OAAOC,eAAe,aAAa;AACnC,SAASC,WAAW,QAAQ,cAAc;AAE1C,eAAe,SAASC,OAAOC,iBAAiB,EAAEC,OAAO,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IAChFb,gBAAgBS,mBAAmBG,SAAS,CAACE,KAAKC;QAChD,IAAID,KAAK,OAAOD,SAASC;QACzB,IAAI,CAACC,SAASC,MAAM,EAAE,OAAOH,SAAS,IAAII,MAAM,CAAC,mCAAmC,EAAER,mBAAmB;QAEzG,MAAMS,iBAAiB;YAAEX;YAAa,GAAGK,OAAO;QAAC;QACjD,MAAMO,UAAU,EAAE;QAClB,MAAMC,QAAQ,IAAIhB,MAAM;QACxBW,SAASM,OAAO,CAAC,CAACC,UAChBF,MAAMG,KAAK,CAAC,CAACC;gBACXvB,eAAeqB,SAASJ,gBAAgB,CAACO,MAAMC;oBAC7C,MAAMC,UAAUD,YAAYA,SAASV,MAAM,KAAK,IAAIU,QAAQ,CAAC,EAAE,GAAG;oBAClE,IAAI,CAACC,SAAS;wBACZR,QAAQS,IAAI,CAAC;4BAAED;4BAASjB;4BAASY;4BAASO,OAAO,IAAIZ,MAAM,CAAC,uCAAuC,EAAEK,QAAQ,UAAU,EAAEQ,KAAKC,SAAS,CAACL,WAAW;4BAAGM,QAAQ;wBAAK;wBACnK,OAAOnB;oBACT;oBACA,MAAMX,eAAeC,mBAAmBwB,QAAQM,WAAW,EAAErB;oBAC7D,MAAMsB,SAASP,QAAQL,OAAO;oBAE9B,MAAMa,OAAO,CAACrB,KAAKsB;wBACjB,IAAItB,OAAOA,IAAIuB,OAAO,CAACC,OAAO,CAAC,0BAA0B,GAAG;4BAC1DF,MAAMtB;4BACNA,MAAM;wBACR;wBACAK,QAAQS,IAAI,CAAC;4BAAED;4BAASjB;4BAASY;4BAASO,OAAOf;4BAAKkB,QAAQI;wBAAI;wBAClEZ;oBACF;oBAEA,IAAIT,SAASC,MAAM,GAAG,GAAG,OAAOjB,MAAMW,SAASC,MAAMT,cAAciC;oBACnE,IAAI7B,aAAa,CAACM,QAAQ2B,SAAS,EAAEjC,UAAUI,SAASC,MAAMT,cAAc;wBAAEsC,OAAON;wBAAQO,UAAU7B,QAAQ6B,QAAQ;oBAAC,GAAGN;yBACtH9B,eAAeK,SAASC,MAAMT,cAAc;wBAAEgC;oBAAO,GAAGC;gBAC/D;YACF;QAEFf,MAAMsB,KAAK,CAAC,CAAC5B;YACXA,MAAMD,SAASC,OAAOD,SAAS,MAAMM;QACvC;IACF;AACF"}