node-install-release 1.19.2 → 1.19.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.
Files changed (38) hide show
  1. package/dist/cjs/installNode/index.d.cts +2 -2
  2. package/dist/cjs/installNode/index.d.ts +2 -2
  3. package/dist/cjs/installNode/index.js.map +1 -1
  4. package/dist/cjs/installNode/installCompressed.d.cts +2 -2
  5. package/dist/cjs/installNode/installCompressed.d.ts +2 -2
  6. package/dist/cjs/installNode/installCompressed.js.map +1 -1
  7. package/dist/cjs/installNode/installExe.d.cts +2 -2
  8. package/dist/cjs/installNode/installExe.d.ts +2 -2
  9. package/dist/cjs/installNode/installExe.js.map +1 -1
  10. package/dist/cjs/installNode/installFilename.d.cts +2 -2
  11. package/dist/cjs/installNode/installFilename.d.ts +2 -2
  12. package/dist/cjs/installNode/installFilename.js.map +1 -1
  13. package/dist/cjs/installNode/installSource/index.d.cts +2 -2
  14. package/dist/cjs/installNode/installSource/index.d.ts +2 -2
  15. package/dist/cjs/installNode/installSource/index.js.map +1 -1
  16. package/dist/cjs/lib/extract.js +3 -4
  17. package/dist/cjs/lib/extract.js.map +1 -1
  18. package/dist/cjs/types.d.cts +1 -0
  19. package/dist/cjs/types.d.ts +1 -0
  20. package/dist/cjs/workers/install.js +37 -8
  21. package/dist/cjs/workers/install.js.map +1 -1
  22. package/dist/esm/installNode/index.d.ts +2 -2
  23. package/dist/esm/installNode/index.js.map +1 -1
  24. package/dist/esm/installNode/installCompressed.d.ts +2 -2
  25. package/dist/esm/installNode/installCompressed.js.map +1 -1
  26. package/dist/esm/installNode/installExe.d.ts +2 -2
  27. package/dist/esm/installNode/installExe.js.map +1 -1
  28. package/dist/esm/installNode/installFilename.d.ts +2 -2
  29. package/dist/esm/installNode/installFilename.js.map +1 -1
  30. package/dist/esm/installNode/installSource/index.d.ts +2 -2
  31. package/dist/esm/installNode/installSource/index.js.map +1 -1
  32. package/dist/esm/lib/extract.js +3 -4
  33. package/dist/esm/lib/extract.js.map +1 -1
  34. package/dist/esm/types.d.ts +1 -0
  35. package/dist/esm/types.js.map +1 -1
  36. package/dist/esm/workers/install.js +14 -10
  37. package/dist/esm/workers/install.js.map +1 -1
  38. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- import type { InstallOptions, NoParamCallback } from '../types.js';
2
- export default function install(version: string, dest: string, options: InstallOptions, callback: NoParamCallback): void;
1
+ import type { NoParamCallback, ResolvedInstallOptions } from '../types.js';
2
+ export default function install(version: string, dest: string, options: ResolvedInstallOptions, callback: NoParamCallback): void;
@@ -1,2 +1,2 @@
1
- import type { InstallOptions, NoParamCallback } from '../types.js';
2
- export default function install(version: string, dest: string, options: InstallOptions, callback: NoParamCallback): void;
1
+ import type { NoParamCallback, ResolvedInstallOptions } from '../types.js';
2
+ export default function install(version: string, dest: string, options: ResolvedInstallOptions, callback: NoParamCallback): void;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/index.ts"],"sourcesContent":["import { FILE_PLATFORM_MAP, FILES } from '../constants.ts';\nimport type { ChecksumResult, InstallOptions, NoParamCallback } from '../types.ts';\nimport installFilename from './installFilename.ts';\n\nexport default function install(version: string, dest: string, options: InstallOptions, callback: NoParamCallback): void {\n let filenames: string[] | null = null;\n\n // a specific filename\n if (options.filename) filenames = [options.filename];\n // infer with fallbacks\n else {\n const { platform, arch } = options;\n const filePlatform = (FILE_PLATFORM_MAP as Record<string, string>)[platform as string] || platform;\n const parts = [filePlatform, arch];\n if (options.type) parts.push(options.type);\n if (options.compression) parts.push(options.compression as unknown as string);\n\n // generate the files in search order\n const archs = [arch, process.arch];\n filenames = archs.map((a) => [filePlatform, a].concat(parts.slice(2)).join('-'));\n ((FILES as Record<string, { filename: string }[]>)[filePlatform as string] || []).forEach((x: { filename: string }) => {\n filenames?.push(x.filename);\n });\n filenames?.push('src');\n filenames = filenames?.filter((filename, i) => filenames?.indexOf(filename) === i);\n }\n\n const tryNext = (cb: (err?: Error | null, checksum?: ChecksumResult) => void, lastErr?: Error) => {\n if (filenames == null || filenames.length === 0) {\n const msg = `Failed to find installable for ${version}${options.filename ? ` Filename: ${options.filename}` : ''}`;\n return cb(new Error(lastErr ? `${msg}: ${lastErr.message}` : msg));\n }\n const filename = filenames.shift() as string;\n installFilename(filename, version, dest, options, (err, checksum) => (err ? tryNext(cb, err) : cb(undefined, checksum)));\n };\n tryNext((err, checksum) => {\n let message = `node ${version.slice(1)}`;\n if (!err) {\n message += ' installed';\n if (checksum) message += ` (${checksum.actual.slice(0, 8)})`;\n } else {\n message += ' install failed';\n if (checksum) message += ` (${checksum.actual} expecting ${checksum.expected})`;\n message += `. Error: ${err.message}`;\n }\n console.log(message);\n callback(err);\n });\n}\n"],"names":["install","version","dest","options","callback","filenames","filename","platform","arch","filePlatform","FILE_PLATFORM_MAP","parts","type","push","compression","archs","process","map","a","concat","slice","join","FILES","forEach","x","filter","i","indexOf","tryNext","cb","lastErr","length","msg","Error","message","shift","installFilename","err","checksum","undefined","actual","expected","console","log"],"mappings":";;;;+BAIA;;;eAAwBA;;;2BAJiB;wEAEb;;;;;;AAEb,SAASA,QAAQC,OAAe,EAAEC,IAAY,EAAEC,OAAuB,EAAEC,QAAyB;IAC/G,IAAIC,YAA6B;IAEjC,sBAAsB;IACtB,IAAIF,QAAQG,QAAQ,EAAED,YAAY;QAACF,QAAQG,QAAQ;KAAC;SAE/C;QACH,IAAQC,WAAmBJ,QAAnBI,UAAUC,OAASL,QAATK;QAClB,IAAMC,eAAe,AAACC,8BAAiB,AAA2B,CAACH,SAAmB,IAAIA;QAC1F,IAAMI,QAAQ;YAACF;YAAcD;SAAK;QAClC,IAAIL,QAAQS,IAAI,EAAED,MAAME,IAAI,CAACV,QAAQS,IAAI;QACzC,IAAIT,QAAQW,WAAW,EAAEH,MAAME,IAAI,CAACV,QAAQW,WAAW;QAEvD,qCAAqC;QACrC,IAAMC,QAAQ;YAACP;YAAMQ,QAAQR,IAAI;SAAC;QAClCH,YAAYU,MAAME,GAAG,CAAC,SAACC;mBAAM;gBAACT;gBAAcS;aAAE,CAACC,MAAM,CAACR,MAAMS,KAAK,CAAC,IAAIC,IAAI,CAAC;;QAC1E,CAAA,AAACC,kBAAK,AAA2C,CAACb,aAAuB,IAAI,EAAE,AAAD,EAAGc,OAAO,CAAC,SAACC;YACzFnB,sBAAAA,gCAAAA,UAAWQ,IAAI,CAACW,EAAElB,QAAQ;QAC5B;QACAD,sBAAAA,gCAAAA,UAAWQ,IAAI,CAAC;QAChBR,YAAYA,sBAAAA,gCAAAA,UAAWoB,MAAM,CAAC,SAACnB,UAAUoB;mBAAMrB,CAAAA,sBAAAA,gCAAAA,UAAWsB,OAAO,CAACrB,eAAcoB;;IAClF;IAEA,IAAME,UAAU,kBAACC,IAA6DC;QAC5E,IAAIzB,aAAa,QAAQA,UAAU0B,MAAM,KAAK,GAAG;YAC/C,IAAMC,MAAM,AAAC,kCAA2C7B,OAAVF,SAAmE,OAAzDE,QAAQG,QAAQ,GAAG,AAAC,cAA8B,OAAjBH,QAAQG,QAAQ,IAAK;YAC9G,OAAOuB,GAAG,IAAII,MAAMH,UAAU,AAAC,GAAUA,OAARE,KAAI,MAAoB,OAAhBF,QAAQI,OAAO,IAAKF;QAC/D;QACA,IAAM1B,WAAWD,UAAU8B,KAAK;QAChCC,IAAAA,0BAAe,EAAC9B,UAAUL,SAASC,MAAMC,SAAS,SAACkC,KAAKC;mBAAcD,MAAMT,QAAQC,IAAIQ,OAAOR,GAAGU,WAAWD;;IAC/G;IACAV,QAAQ,SAACS,KAAKC;QACZ,IAAIJ,UAAU,AAAC,QAAwB,OAAjBjC,QAAQmB,KAAK,CAAC;QACpC,IAAI,CAACiB,KAAK;YACRH,WAAW;YACX,IAAII,UAAUJ,WAAW,AAAC,KAAgC,OAA5BI,SAASE,MAAM,CAACpB,KAAK,CAAC,GAAG,IAAG;QAC5D,OAAO;YACLc,WAAW;YACX,IAAII,UAAUJ,WAAW,AAAC,KAAiCI,OAA7BA,SAASE,MAAM,EAAC,eAA+B,OAAlBF,SAASG,QAAQ,EAAC;YAC7EP,WAAW,AAAC,YAAuB,OAAZG,IAAIH,OAAO;QACpC;QACAQ,QAAQC,GAAG,CAACT;QACZ9B,SAASiC;IACX;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/index.ts"],"sourcesContent":["import { FILE_PLATFORM_MAP, FILES } from '../constants.ts';\nimport type { ChecksumResult, NoParamCallback, ResolvedInstallOptions } from '../types.ts';\nimport installFilename from './installFilename.ts';\n\nexport default function install(version: string, dest: string, options: ResolvedInstallOptions, callback: NoParamCallback): void {\n let filenames: string[] | null = null;\n\n // a specific filename\n if (options.filename) filenames = [options.filename];\n // infer with fallbacks\n else {\n const { platform, arch } = options;\n const filePlatform = (FILE_PLATFORM_MAP as Record<string, string>)[platform as string] || platform;\n const parts = [filePlatform, arch];\n if (options.type) parts.push(options.type);\n if (options.compression) parts.push(options.compression as unknown as string);\n\n // generate the files in search order\n const archs = [arch, process.arch];\n filenames = archs.map((a) => [filePlatform, a].concat(parts.slice(2)).join('-'));\n ((FILES as Record<string, { filename: string }[]>)[filePlatform as string] || []).forEach((x: { filename: string }) => {\n filenames?.push(x.filename);\n });\n filenames?.push('src');\n filenames = filenames?.filter((filename, i) => filenames?.indexOf(filename) === i);\n }\n\n const tryNext = (cb: (err?: Error | null, checksum?: ChecksumResult) => void, lastErr?: Error) => {\n if (filenames == null || filenames.length === 0) {\n const msg = `Failed to find installable for ${version}${options.filename ? ` Filename: ${options.filename}` : ''}`;\n return cb(new Error(lastErr ? `${msg}: ${lastErr.message}` : msg));\n }\n const filename = filenames.shift() as string;\n installFilename(filename, version, dest, options, (err, checksum) => (err ? tryNext(cb, err) : cb(undefined, checksum)));\n };\n tryNext((err, checksum) => {\n let message = `node ${version.slice(1)}`;\n if (!err) {\n message += ' installed';\n if (checksum) message += ` (${checksum.actual.slice(0, 8)})`;\n } else {\n message += ' install failed';\n if (checksum) message += ` (${checksum.actual} expecting ${checksum.expected})`;\n message += `. Error: ${err.message}`;\n }\n console.log(message);\n callback(err);\n });\n}\n"],"names":["install","version","dest","options","callback","filenames","filename","platform","arch","filePlatform","FILE_PLATFORM_MAP","parts","type","push","compression","archs","process","map","a","concat","slice","join","FILES","forEach","x","filter","i","indexOf","tryNext","cb","lastErr","length","msg","Error","message","shift","installFilename","err","checksum","undefined","actual","expected","console","log"],"mappings":";;;;+BAIA;;;eAAwBA;;;2BAJiB;wEAEb;;;;;;AAEb,SAASA,QAAQC,OAAe,EAAEC,IAAY,EAAEC,OAA+B,EAAEC,QAAyB;IACvH,IAAIC,YAA6B;IAEjC,sBAAsB;IACtB,IAAIF,QAAQG,QAAQ,EAAED,YAAY;QAACF,QAAQG,QAAQ;KAAC;SAE/C;QACH,IAAQC,WAAmBJ,QAAnBI,UAAUC,OAASL,QAATK;QAClB,IAAMC,eAAe,AAACC,8BAAiB,AAA2B,CAACH,SAAmB,IAAIA;QAC1F,IAAMI,QAAQ;YAACF;YAAcD;SAAK;QAClC,IAAIL,QAAQS,IAAI,EAAED,MAAME,IAAI,CAACV,QAAQS,IAAI;QACzC,IAAIT,QAAQW,WAAW,EAAEH,MAAME,IAAI,CAACV,QAAQW,WAAW;QAEvD,qCAAqC;QACrC,IAAMC,QAAQ;YAACP;YAAMQ,QAAQR,IAAI;SAAC;QAClCH,YAAYU,MAAME,GAAG,CAAC,SAACC;mBAAM;gBAACT;gBAAcS;aAAE,CAACC,MAAM,CAACR,MAAMS,KAAK,CAAC,IAAIC,IAAI,CAAC;;QAC1E,CAAA,AAACC,kBAAK,AAA2C,CAACb,aAAuB,IAAI,EAAE,AAAD,EAAGc,OAAO,CAAC,SAACC;YACzFnB,sBAAAA,gCAAAA,UAAWQ,IAAI,CAACW,EAAElB,QAAQ;QAC5B;QACAD,sBAAAA,gCAAAA,UAAWQ,IAAI,CAAC;QAChBR,YAAYA,sBAAAA,gCAAAA,UAAWoB,MAAM,CAAC,SAACnB,UAAUoB;mBAAMrB,CAAAA,sBAAAA,gCAAAA,UAAWsB,OAAO,CAACrB,eAAcoB;;IAClF;IAEA,IAAME,UAAU,kBAACC,IAA6DC;QAC5E,IAAIzB,aAAa,QAAQA,UAAU0B,MAAM,KAAK,GAAG;YAC/C,IAAMC,MAAM,AAAC,kCAA2C7B,OAAVF,SAAmE,OAAzDE,QAAQG,QAAQ,GAAG,AAAC,cAA8B,OAAjBH,QAAQG,QAAQ,IAAK;YAC9G,OAAOuB,GAAG,IAAII,MAAMH,UAAU,AAAC,GAAUA,OAARE,KAAI,MAAoB,OAAhBF,QAAQI,OAAO,IAAKF;QAC/D;QACA,IAAM1B,WAAWD,UAAU8B,KAAK;QAChCC,IAAAA,0BAAe,EAAC9B,UAAUL,SAASC,MAAMC,SAAS,SAACkC,KAAKC;mBAAcD,MAAMT,QAAQC,IAAIQ,OAAOR,GAAGU,WAAWD;;IAC/G;IACAV,QAAQ,SAACS,KAAKC;QACZ,IAAIJ,UAAU,AAAC,QAAwB,OAAjBjC,QAAQmB,KAAK,CAAC;QACpC,IAAI,CAACiB,KAAK;YACRH,WAAW;YACX,IAAII,UAAUJ,WAAW,AAAC,KAAgC,OAA5BI,SAASE,MAAM,CAACpB,KAAK,CAAC,GAAG,IAAG;QAC5D,OAAO;YACLc,WAAW;YACX,IAAII,UAAUJ,WAAW,AAAC,KAAiCI,OAA7BA,SAASE,MAAM,EAAC,eAA+B,OAAlBF,SAASG,QAAQ,EAAC;YAC7EP,WAAW,AAAC,YAAuB,OAAZG,IAAIH,OAAO;QACpC;QACAQ,QAAQC,GAAG,CAACT;QACZ9B,SAASiC;IACX;AACF"}
@@ -1,2 +1,2 @@
1
- import type { ChecksumCallback, InstallOptions } from '../types.js';
2
- export default function installCompressed(distPath: string, dest: string, options: InstallOptions, callback: ChecksumCallback): void;
1
+ import type { ChecksumCallback, ResolvedInstallOptions } from '../types.js';
2
+ export default function installCompressed(distPath: string, dest: string, options: ResolvedInstallOptions, callback: ChecksumCallback): void;
@@ -1,2 +1,2 @@
1
- import type { ChecksumCallback, InstallOptions } from '../types.js';
2
- export default function installCompressed(distPath: string, dest: string, options: InstallOptions, callback: ChecksumCallback): void;
1
+ import type { ChecksumCallback, ResolvedInstallOptions } from '../types.js';
2
+ export default function installCompressed(distPath: string, dest: string, options: ResolvedInstallOptions, callback: ChecksumCallback): void;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installCompressed.ts"],"sourcesContent":["import path from 'path';\nimport Queue from 'queue-cb';\n\nimport { NODE_DIST_BASE_URL } from '../constants.ts';\nimport conditionalCache from '../lib/conditionalCache.ts';\nimport extract from '../lib/extract.ts';\nimport type { ChecksumCallback, ChecksumResult, InstallOptions } from '../types.ts';\nimport validateDownload from './validateDownload.ts';\n\nexport default function installCompressed(distPath: string, dest: string, options: InstallOptions, callback: ChecksumCallback): void {\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n const cachePath = path.join(options.cachePath!, path.basename(downloadPath));\n\n let checksum: ChecksumResult | undefined;\n const queue = new Queue(1);\n queue.defer((cb) => conditionalCache(downloadPath, cachePath, options, (err) => cb(err)));\n queue.defer((cb) => {\n validateDownload(distPath, cachePath, (err, result) => {\n checksum = result;\n cb(err);\n });\n });\n queue.defer(extract.bind(null, cachePath, dest, { strip: 1, time: 1000 }));\n queue.await((err) => callback(err, checksum));\n}\n"],"names":["installCompressed","distPath","dest","options","callback","downloadPath","NODE_DIST_BASE_URL","cachePath","path","join","basename","checksum","queue","Queue","defer","cb","conditionalCache","err","validateDownload","result","extract","bind","strip","time","await"],"mappings":";;;;+BASA;;;eAAwBA;;;2DATP;8DACC;2BAEiB;yEACN;gEACT;yEAES;;;;;;AAEd,SAASA,kBAAkBC,QAAgB,EAAEC,IAAY,EAAEC,OAAuB,EAAEC,QAA0B;IAC3H,IAAMC,eAAe,AAAC,GAAwBJ,OAAtBK,+BAAkB,EAAC,KAAY,OAATL;IAC9C,IAAMM,YAAYC,aAAI,CAACC,IAAI,CAACN,QAAQI,SAAS,EAAGC,aAAI,CAACE,QAAQ,CAACL;IAE9D,IAAIM;IACJ,IAAMC,QAAQ,IAAIC,gBAAK,CAAC;IACxBD,MAAME,KAAK,CAAC,SAACC;eAAOC,IAAAA,2BAAgB,EAACX,cAAcE,WAAWJ,SAAS,SAACc;mBAAQF,GAAGE;;;IACnFL,MAAME,KAAK,CAAC,SAACC;QACXG,IAAAA,2BAAgB,EAACjB,UAAUM,WAAW,SAACU,KAAKE;YAC1CR,WAAWQ;YACXJ,GAAGE;QACL;IACF;IACAL,MAAME,KAAK,CAACM,kBAAO,CAACC,IAAI,CAAC,MAAMd,WAAWL,MAAM;QAAEoB,OAAO;QAAGC,MAAM;IAAK;IACvEX,MAAMY,KAAK,CAAC,SAACP;eAAQb,SAASa,KAAKN;;AACrC"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installCompressed.ts"],"sourcesContent":["import path from 'path';\nimport Queue from 'queue-cb';\n\nimport { NODE_DIST_BASE_URL } from '../constants.ts';\nimport conditionalCache from '../lib/conditionalCache.ts';\nimport extract from '../lib/extract.ts';\nimport type { ChecksumCallback, ChecksumResult, ResolvedInstallOptions } from '../types.ts';\nimport validateDownload from './validateDownload.ts';\n\nexport default function installCompressed(distPath: string, dest: string, options: ResolvedInstallOptions, callback: ChecksumCallback): void {\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n const cachePath = path.join(options.cachePath, path.basename(downloadPath));\n\n let checksum: ChecksumResult | undefined;\n const queue = new Queue(1);\n queue.defer((cb) => conditionalCache(downloadPath, cachePath, options, (err) => cb(err)));\n queue.defer((cb) => {\n validateDownload(distPath, cachePath, (err, result) => {\n checksum = result;\n cb(err);\n });\n });\n queue.defer(extract.bind(null, cachePath, dest, { strip: 1, time: 1000 }));\n queue.await((err) => callback(err, checksum));\n}\n"],"names":["installCompressed","distPath","dest","options","callback","downloadPath","NODE_DIST_BASE_URL","cachePath","path","join","basename","checksum","queue","Queue","defer","cb","conditionalCache","err","validateDownload","result","extract","bind","strip","time","await"],"mappings":";;;;+BASA;;;eAAwBA;;;2DATP;8DACC;2BAEiB;yEACN;gEACT;yEAES;;;;;;AAEd,SAASA,kBAAkBC,QAAgB,EAAEC,IAAY,EAAEC,OAA+B,EAAEC,QAA0B;IACnI,IAAMC,eAAe,AAAC,GAAwBJ,OAAtBK,+BAAkB,EAAC,KAAY,OAATL;IAC9C,IAAMM,YAAYC,aAAI,CAACC,IAAI,CAACN,QAAQI,SAAS,EAAEC,aAAI,CAACE,QAAQ,CAACL;IAE7D,IAAIM;IACJ,IAAMC,QAAQ,IAAIC,gBAAK,CAAC;IACxBD,MAAME,KAAK,CAAC,SAACC;eAAOC,IAAAA,2BAAgB,EAACX,cAAcE,WAAWJ,SAAS,SAACc;mBAAQF,GAAGE;;;IACnFL,MAAME,KAAK,CAAC,SAACC;QACXG,IAAAA,2BAAgB,EAACjB,UAAUM,WAAW,SAACU,KAAKE;YAC1CR,WAAWQ;YACXJ,GAAGE;QACL;IACF;IACAL,MAAME,KAAK,CAACM,kBAAO,CAACC,IAAI,CAAC,MAAMd,WAAWL,MAAM;QAAEoB,OAAO;QAAGC,MAAM;IAAK;IACvEX,MAAMY,KAAK,CAAC,SAACP;eAAQb,SAASa,KAAKN;;AACrC"}
@@ -1,2 +1,2 @@
1
- import type { InstallOptions, NoParamCallback } from '../types.js';
2
- export default function installExe(distPath: string, dest: string, options: InstallOptions, callback: NoParamCallback): void;
1
+ import type { NoParamCallback, ResolvedInstallOptions } from '../types.js';
2
+ export default function installExe(distPath: string, dest: string, options: ResolvedInstallOptions, callback: NoParamCallback): void;
@@ -1,2 +1,2 @@
1
- import type { InstallOptions, NoParamCallback } from '../types.js';
2
- export default function installExe(distPath: string, dest: string, options: InstallOptions, callback: NoParamCallback): void;
1
+ import type { NoParamCallback, ResolvedInstallOptions } from '../types.js';
2
+ export default function installExe(distPath: string, dest: string, options: ResolvedInstallOptions, callback: NoParamCallback): void;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installExe.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport Queue from 'queue-cb';\n\nimport { NODE_DIST_BASE_URL, NODE_FILE_PATHS } from '../constants.ts';\nimport conditionalCache from '../lib/conditionalCache.ts';\nimport copyFile from '../lib/copyFile.ts';\nimport type { InstallOptions, NoParamCallback } from '../types.ts';\nimport validateDownload from './validateDownload.ts';\n\nexport default function installExe(distPath: string, dest: string, options: InstallOptions, callback: NoParamCallback): void {\n const platform = options.platform;\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n const cachePath = path.join(options.cachePath!, `node-${distPath}.exe`);\n const nodePath = (NODE_FILE_PATHS as Record<string, string>)[platform as string] || NODE_FILE_PATHS.posix;\n const execPath = path.join(dest, nodePath);\n\n fs.stat(execPath, (err) => {\n if (!err) return callback(); // already exists\n\n const queue = new Queue(1);\n queue.defer((cb) => conditionalCache(downloadPath, cachePath, options, (err) => cb(err)));\n queue.defer((cb) => validateDownload(distPath, cachePath, (err) => cb(err)));\n queue.defer((cb) => copyFile(cachePath, execPath, (err) => cb(err)));\n queue.await(callback);\n });\n}\n"],"names":["installExe","distPath","dest","options","callback","platform","downloadPath","NODE_DIST_BASE_URL","cachePath","path","join","nodePath","NODE_FILE_PATHS","posix","execPath","fs","stat","err","queue","Queue","defer","cb","conditionalCache","validateDownload","copyFile","await"],"mappings":";;;;+BAUA;;;eAAwBA;;;yDAVT;2DACE;8DACC;2BAEkC;yEACvB;iEACR;yEAEQ;;;;;;AAEd,SAASA,WAAWC,QAAgB,EAAEC,IAAY,EAAEC,OAAuB,EAAEC,QAAyB;IACnH,IAAMC,WAAWF,QAAQE,QAAQ;IACjC,IAAMC,eAAe,AAAC,GAAwBL,OAAtBM,+BAAkB,EAAC,KAAY,OAATN;IAC9C,IAAMO,YAAYC,aAAI,CAACC,IAAI,CAACP,QAAQK,SAAS,EAAG,AAAC,QAAgB,OAATP,UAAS;IACjE,IAAMU,WAAW,AAACC,4BAAe,AAA2B,CAACP,SAAmB,IAAIO,4BAAe,CAACC,KAAK;IACzG,IAAMC,WAAWL,aAAI,CAACC,IAAI,CAACR,MAAMS;IAEjCI,WAAE,CAACC,IAAI,CAACF,UAAU,SAACG;QACjB,IAAI,CAACA,KAAK,OAAOb,YAAY,iBAAiB;QAE9C,IAAMc,QAAQ,IAAIC,gBAAK,CAAC;QACxBD,MAAME,KAAK,CAAC,SAACC;mBAAOC,IAAAA,2BAAgB,EAAChB,cAAcE,WAAWL,SAAS,SAACc;uBAAQI,GAAGJ;;;QACnFC,MAAME,KAAK,CAAC,SAACC;mBAAOE,IAAAA,2BAAgB,EAACtB,UAAUO,WAAW,SAACS;uBAAQI,GAAGJ;;;QACtEC,MAAME,KAAK,CAAC,SAACC;mBAAOG,IAAAA,mBAAQ,EAAChB,WAAWM,UAAU,SAACG;uBAAQI,GAAGJ;;;QAC9DC,MAAMO,KAAK,CAACrB;IACd;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installExe.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport Queue from 'queue-cb';\n\nimport { NODE_DIST_BASE_URL, NODE_FILE_PATHS } from '../constants.ts';\nimport conditionalCache from '../lib/conditionalCache.ts';\nimport copyFile from '../lib/copyFile.ts';\nimport type { NoParamCallback, ResolvedInstallOptions } from '../types.ts';\nimport validateDownload from './validateDownload.ts';\n\nexport default function installExe(distPath: string, dest: string, options: ResolvedInstallOptions, callback: NoParamCallback): void {\n const platform = options.platform;\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n const cachePath = path.join(options.cachePath, `node-${distPath}.exe`);\n const nodePath = (NODE_FILE_PATHS as Record<string, string>)[platform as string] || NODE_FILE_PATHS.posix;\n const execPath = path.join(dest, nodePath);\n\n fs.stat(execPath, (err) => {\n if (!err) return callback(); // already exists\n\n const queue = new Queue(1);\n queue.defer((cb) => conditionalCache(downloadPath, cachePath, options, (err) => cb(err)));\n queue.defer((cb) => validateDownload(distPath, cachePath, (err) => cb(err)));\n queue.defer((cb) => copyFile(cachePath, execPath, (err) => cb(err)));\n queue.await(callback);\n });\n}\n"],"names":["installExe","distPath","dest","options","callback","platform","downloadPath","NODE_DIST_BASE_URL","cachePath","path","join","nodePath","NODE_FILE_PATHS","posix","execPath","fs","stat","err","queue","Queue","defer","cb","conditionalCache","validateDownload","copyFile","await"],"mappings":";;;;+BAUA;;;eAAwBA;;;yDAVT;2DACE;8DACC;2BAEkC;yEACvB;iEACR;yEAEQ;;;;;;AAEd,SAASA,WAAWC,QAAgB,EAAEC,IAAY,EAAEC,OAA+B,EAAEC,QAAyB;IAC3H,IAAMC,WAAWF,QAAQE,QAAQ;IACjC,IAAMC,eAAe,AAAC,GAAwBL,OAAtBM,+BAAkB,EAAC,KAAY,OAATN;IAC9C,IAAMO,YAAYC,aAAI,CAACC,IAAI,CAACP,QAAQK,SAAS,EAAE,AAAC,QAAgB,OAATP,UAAS;IAChE,IAAMU,WAAW,AAACC,4BAAe,AAA2B,CAACP,SAAmB,IAAIO,4BAAe,CAACC,KAAK;IACzG,IAAMC,WAAWL,aAAI,CAACC,IAAI,CAACR,MAAMS;IAEjCI,WAAE,CAACC,IAAI,CAACF,UAAU,SAACG;QACjB,IAAI,CAACA,KAAK,OAAOb,YAAY,iBAAiB;QAE9C,IAAMc,QAAQ,IAAIC,gBAAK,CAAC;QACxBD,MAAME,KAAK,CAAC,SAACC;mBAAOC,IAAAA,2BAAgB,EAAChB,cAAcE,WAAWL,SAAS,SAACc;uBAAQI,GAAGJ;;;QACnFC,MAAME,KAAK,CAAC,SAACC;mBAAOE,IAAAA,2BAAgB,EAACtB,UAAUO,WAAW,SAACS;uBAAQI,GAAGJ;;;QACtEC,MAAME,KAAK,CAAC,SAACC;mBAAOG,IAAAA,mBAAQ,EAAChB,WAAWM,UAAU,SAACG;uBAAQI,GAAGJ;;;QAC9DC,MAAMO,KAAK,CAACrB;IACd;AACF"}
@@ -1,2 +1,2 @@
1
- import type { ChecksumCallback, InstallOptions } from '../types.js';
2
- export default function installFilename(filename: string, version: string, dest: string, options: InstallOptions, callback: ChecksumCallback): void;
1
+ import type { ChecksumCallback, ResolvedInstallOptions } from '../types.js';
2
+ export default function installFilename(filename: string, version: string, dest: string, options: ResolvedInstallOptions, callback: ChecksumCallback): void;
@@ -1,2 +1,2 @@
1
- import type { ChecksumCallback, InstallOptions } from '../types.js';
2
- export default function installFilename(filename: string, version: string, dest: string, options: InstallOptions, callback: ChecksumCallback): void;
1
+ import type { ChecksumCallback, ResolvedInstallOptions } from '../types.js';
2
+ export default function installFilename(filename: string, version: string, dest: string, options: ResolvedInstallOptions, callback: ChecksumCallback): void;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installFilename.ts"],"sourcesContent":["import Module from 'module';\nimport path from 'path';\nimport { EXTENSIONS_COMPRESSED } from '../constants.ts';\nimport type { ChecksumCallback, InstallOptions } from '../types.ts';\nimport installCompressed from './installCompressed.ts';\nimport installExe from './installExe.ts';\nimport installSource from './installSource/index.ts';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\nexport default function installFilename(filename: string, version: string, dest: string, options: InstallOptions, callback: ChecksumCallback): void {\n // deferred: node-filename-to-dist-paths pulls fetch-json-cache, only needed to actually resolve an install\n const fromFilenameModule = _require('node-filename-to-dist-paths');\n const fromFilename = fromFilenameModule.default || fromFilenameModule;\n const distPath = fromFilename(filename, version);\n if (!distPath) {\n callback(new Error('Not found'));\n return;\n }\n const ext = path.extname(distPath);\n\n if (filename === 'src') return installSource(distPath, dest, options, callback);\n if (ext === '.exe') return installExe(distPath, dest, options, callback);\n if (EXTENSIONS_COMPRESSED.indexOf(ext) >= 0) {\n return installCompressed(distPath, dest, options, callback);\n }\n callback(new Error(`Unable to install ${version} distPath: ${distPath}`));\n}\n"],"names":["installFilename","_require","require","Module","createRequire","filename","version","dest","options","callback","fromFilenameModule","fromFilename","default","distPath","Error","ext","path","extname","installSource","installExe","EXTENSIONS_COMPRESSED","indexOf","installCompressed"],"mappings":";;;;+BAUA;;;eAAwBA;;;6DAVL;2DACF;2BACqB;0EAER;mEACP;8DACG;;;;;;AAE1B,IAAMC,WAAW,OAAOC,YAAY,cAAcC,eAAM,CAACC,aAAa,CAAC,uDAAmBF;AAE3E,SAASF,gBAAgBK,QAAgB,EAAEC,OAAe,EAAEC,IAAY,EAAEC,OAAuB,EAAEC,QAA0B;IAC1I,2GAA2G;IAC3G,IAAMC,qBAAqBT,SAAS;IACpC,IAAMU,eAAeD,mBAAmBE,OAAO,IAAIF;IACnD,IAAMG,WAAWF,aAAaN,UAAUC;IACxC,IAAI,CAACO,UAAU;QACbJ,SAAS,IAAIK,MAAM;QACnB;IACF;IACA,IAAMC,MAAMC,aAAI,CAACC,OAAO,CAACJ;IAEzB,IAAIR,aAAa,OAAO,OAAOa,IAAAA,gBAAa,EAACL,UAAUN,MAAMC,SAASC;IACtE,IAAIM,QAAQ,QAAQ,OAAOI,IAAAA,qBAAU,EAACN,UAAUN,MAAMC,SAASC;IAC/D,IAAIW,kCAAqB,CAACC,OAAO,CAACN,QAAQ,GAAG;QAC3C,OAAOO,IAAAA,4BAAiB,EAACT,UAAUN,MAAMC,SAASC;IACpD;IACAA,SAAS,IAAIK,MAAM,AAAC,qBAAyCD,OAArBP,SAAQ,eAAsB,OAATO;AAC/D"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installFilename.ts"],"sourcesContent":["import Module from 'module';\nimport path from 'path';\nimport { EXTENSIONS_COMPRESSED } from '../constants.ts';\nimport type { ChecksumCallback, ResolvedInstallOptions } from '../types.ts';\nimport installCompressed from './installCompressed.ts';\nimport installExe from './installExe.ts';\nimport installSource from './installSource/index.ts';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\nexport default function installFilename(filename: string, version: string, dest: string, options: ResolvedInstallOptions, callback: ChecksumCallback): void {\n // deferred: node-filename-to-dist-paths pulls fetch-json-cache, only needed to actually resolve an install\n const fromFilenameModule = _require('node-filename-to-dist-paths');\n const fromFilename = fromFilenameModule.default || fromFilenameModule;\n const distPath = fromFilename(filename, version);\n if (!distPath) {\n callback(new Error('Not found'));\n return;\n }\n const ext = path.extname(distPath);\n\n if (filename === 'src') return installSource(distPath, dest, options, callback);\n if (ext === '.exe') return installExe(distPath, dest, options, callback);\n if (EXTENSIONS_COMPRESSED.indexOf(ext) >= 0) {\n return installCompressed(distPath, dest, options, callback);\n }\n callback(new Error(`Unable to install ${version} distPath: ${distPath}`));\n}\n"],"names":["installFilename","_require","require","Module","createRequire","filename","version","dest","options","callback","fromFilenameModule","fromFilename","default","distPath","Error","ext","path","extname","installSource","installExe","EXTENSIONS_COMPRESSED","indexOf","installCompressed"],"mappings":";;;;+BAUA;;;eAAwBA;;;6DAVL;2DACF;2BACqB;0EAER;mEACP;8DACG;;;;;;AAE1B,IAAMC,WAAW,OAAOC,YAAY,cAAcC,eAAM,CAACC,aAAa,CAAC,uDAAmBF;AAE3E,SAASF,gBAAgBK,QAAgB,EAAEC,OAAe,EAAEC,IAAY,EAAEC,OAA+B,EAAEC,QAA0B;IAClJ,2GAA2G;IAC3G,IAAMC,qBAAqBT,SAAS;IACpC,IAAMU,eAAeD,mBAAmBE,OAAO,IAAIF;IACnD,IAAMG,WAAWF,aAAaN,UAAUC;IACxC,IAAI,CAACO,UAAU;QACbJ,SAAS,IAAIK,MAAM;QACnB;IACF;IACA,IAAMC,MAAMC,aAAI,CAACC,OAAO,CAACJ;IAEzB,IAAIR,aAAa,OAAO,OAAOa,IAAAA,gBAAa,EAACL,UAAUN,MAAMC,SAASC;IACtE,IAAIM,QAAQ,QAAQ,OAAOI,IAAAA,qBAAU,EAACN,UAAUN,MAAMC,SAASC;IAC/D,IAAIW,kCAAqB,CAACC,OAAO,CAACN,QAAQ,GAAG;QAC3C,OAAOO,IAAAA,4BAAiB,EAACT,UAAUN,MAAMC,SAASC;IACpD;IACAA,SAAS,IAAIK,MAAM,AAAC,qBAAyCD,OAArBP,SAAQ,eAAsB,OAATO;AAC/D"}
@@ -1,2 +1,2 @@
1
- import type { InstallOptions, NoParamCallback } from '../../types.js';
2
- export default function InstallSource(distPath: string, dest: string, options: InstallOptions, callback: NoParamCallback): void;
1
+ import type { NoParamCallback, ResolvedInstallOptions } from '../../types.js';
2
+ export default function InstallSource(distPath: string, dest: string, options: ResolvedInstallOptions, callback: NoParamCallback): void;
@@ -1,2 +1,2 @@
1
- import type { InstallOptions, NoParamCallback } from '../../types.js';
2
- export default function InstallSource(distPath: string, dest: string, options: InstallOptions, callback: NoParamCallback): void;
1
+ import type { NoParamCallback, ResolvedInstallOptions } from '../../types.js';
2
+ export default function InstallSource(distPath: string, dest: string, options: ResolvedInstallOptions, callback: NoParamCallback): void;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installSource/index.ts"],"sourcesContent":["import { safeRm } from 'fs-remove-compat';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport tempSuffix from 'temp-suffix';\n\nimport { NODE_DIST_BASE_URL } from '../../constants.ts';\nimport conditionalCache from '../../lib/conditionalCache.ts';\nimport extract from '../../lib/extract.ts';\nimport type { InstallOptions, NoParamCallback } from '../../types.ts';\nimport validateDownload from '../validateDownload.ts';\nimport buildPosix from './buildPosix.ts';\nimport buildWin32 from './buildWin32.ts';\n\nexport default function InstallSource(distPath: string, dest: string, options: InstallOptions, callback: NoParamCallback): void {\n const platform = options.platform;\n const build = platform === 'win32' ? buildWin32 : buildPosix;\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n // Use temp build path to avoid race conditions with parallel builds\n const tempBuildPath = tempSuffix(path.join(options.buildPath!, path.basename(distPath)));\n const cachePath = path.join(options.cachePath!, path.basename(downloadPath));\n\n const queue = new Queue(1);\n queue.defer((cb) => conditionalCache(downloadPath, cachePath, options, (err) => cb(err)));\n queue.defer((cb) => validateDownload(distPath, cachePath, (err) => cb(err)));\n queue.defer((cb) => extract(cachePath, tempBuildPath, (err) => cb(err)));\n queue.defer((cb) => build(tempBuildPath, dest, options, (err) => cb(err)));\n queue.await((err) => {\n // Always clean up temp build directory\n safeRm(tempBuildPath, () => callback(err));\n });\n}\n"],"names":["InstallSource","distPath","dest","options","callback","platform","build","buildWin32","buildPosix","downloadPath","NODE_DIST_BASE_URL","tempBuildPath","tempSuffix","path","join","buildPath","basename","cachePath","queue","Queue","defer","cb","conditionalCache","err","validateDownload","extract","await","safeRm"],"mappings":";;;;+BAaA;;;eAAwBA;;;8BAbD;2DACN;8DACC;iEACK;2BAEY;yEACN;gEACT;yEAES;mEACN;mEACA;;;;;;AAER,SAASA,cAAcC,QAAgB,EAAEC,IAAY,EAAEC,OAAuB,EAAEC,QAAyB;IACtH,IAAMC,WAAWF,QAAQE,QAAQ;IACjC,IAAMC,QAAQD,aAAa,UAAUE,qBAAU,GAAGC,qBAAU;IAC5D,IAAMC,eAAe,AAAC,GAAwBR,OAAtBS,+BAAkB,EAAC,KAAY,OAATT;IAC9C,oEAAoE;IACpE,IAAMU,gBAAgBC,IAAAA,mBAAU,EAACC,aAAI,CAACC,IAAI,CAACX,QAAQY,SAAS,EAAGF,aAAI,CAACG,QAAQ,CAACf;IAC7E,IAAMgB,YAAYJ,aAAI,CAACC,IAAI,CAACX,QAAQc,SAAS,EAAGJ,aAAI,CAACG,QAAQ,CAACP;IAE9D,IAAMS,QAAQ,IAAIC,gBAAK,CAAC;IACxBD,MAAME,KAAK,CAAC,SAACC;eAAOC,IAAAA,2BAAgB,EAACb,cAAcQ,WAAWd,SAAS,SAACoB;mBAAQF,GAAGE;;;IACnFL,MAAME,KAAK,CAAC,SAACC;eAAOG,IAAAA,2BAAgB,EAACvB,UAAUgB,WAAW,SAACM;mBAAQF,GAAGE;;;IACtEL,MAAME,KAAK,CAAC,SAACC;eAAOI,IAAAA,kBAAO,EAACR,WAAWN,eAAe,SAACY;mBAAQF,GAAGE;;;IAClEL,MAAME,KAAK,CAAC,SAACC;eAAOf,MAAMK,eAAeT,MAAMC,SAAS,SAACoB;mBAAQF,GAAGE;;;IACpEL,MAAMQ,KAAK,CAAC,SAACH;QACX,uCAAuC;QACvCI,IAAAA,sBAAM,EAAChB,eAAe;mBAAMP,SAASmB;;IACvC;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installSource/index.ts"],"sourcesContent":["import { safeRm } from 'fs-remove-compat';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport tempSuffix from 'temp-suffix';\n\nimport { NODE_DIST_BASE_URL } from '../../constants.ts';\nimport conditionalCache from '../../lib/conditionalCache.ts';\nimport extract from '../../lib/extract.ts';\nimport type { NoParamCallback, ResolvedInstallOptions } from '../../types.ts';\nimport validateDownload from '../validateDownload.ts';\nimport buildPosix from './buildPosix.ts';\nimport buildWin32 from './buildWin32.ts';\n\nexport default function InstallSource(distPath: string, dest: string, options: ResolvedInstallOptions, callback: NoParamCallback): void {\n const platform = options.platform;\n const build = platform === 'win32' ? buildWin32 : buildPosix;\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n // Use temp build path to avoid race conditions with parallel builds\n const tempBuildPath = tempSuffix(path.join(options.buildPath, path.basename(distPath)));\n const cachePath = path.join(options.cachePath, path.basename(downloadPath));\n\n const queue = new Queue(1);\n queue.defer((cb) => conditionalCache(downloadPath, cachePath, options, (err) => cb(err)));\n queue.defer((cb) => validateDownload(distPath, cachePath, (err) => cb(err)));\n queue.defer((cb) => extract(cachePath, tempBuildPath, (err) => cb(err)));\n queue.defer((cb) => build(tempBuildPath, dest, options, (err) => cb(err)));\n queue.await((err) => {\n // Always clean up temp build directory\n safeRm(tempBuildPath, () => callback(err));\n });\n}\n"],"names":["InstallSource","distPath","dest","options","callback","platform","build","buildWin32","buildPosix","downloadPath","NODE_DIST_BASE_URL","tempBuildPath","tempSuffix","path","join","buildPath","basename","cachePath","queue","Queue","defer","cb","conditionalCache","err","validateDownload","extract","await","safeRm"],"mappings":";;;;+BAaA;;;eAAwBA;;;8BAbD;2DACN;8DACC;iEACK;2BAEY;yEACN;gEACT;yEAES;mEACN;mEACA;;;;;;AAER,SAASA,cAAcC,QAAgB,EAAEC,IAAY,EAAEC,OAA+B,EAAEC,QAAyB;IAC9H,IAAMC,WAAWF,QAAQE,QAAQ;IACjC,IAAMC,QAAQD,aAAa,UAAUE,qBAAU,GAAGC,qBAAU;IAC5D,IAAMC,eAAe,AAAC,GAAwBR,OAAtBS,+BAAkB,EAAC,KAAY,OAATT;IAC9C,oEAAoE;IACpE,IAAMU,gBAAgBC,IAAAA,mBAAU,EAACC,aAAI,CAACC,IAAI,CAACX,QAAQY,SAAS,EAAEF,aAAI,CAACG,QAAQ,CAACf;IAC5E,IAAMgB,YAAYJ,aAAI,CAACC,IAAI,CAACX,QAAQc,SAAS,EAAEJ,aAAI,CAACG,QAAQ,CAACP;IAE7D,IAAMS,QAAQ,IAAIC,gBAAK,CAAC;IACxBD,MAAME,KAAK,CAAC,SAACC;eAAOC,IAAAA,2BAAgB,EAACb,cAAcQ,WAAWd,SAAS,SAACoB;mBAAQF,GAAGE;;;IACnFL,MAAME,KAAK,CAAC,SAACC;eAAOG,IAAAA,2BAAgB,EAACvB,UAAUgB,WAAW,SAACM;mBAAQF,GAAGE;;;IACtEL,MAAME,KAAK,CAAC,SAACC;eAAOI,IAAAA,kBAAO,EAACR,WAAWN,eAAe,SAACY;mBAAQF,GAAGE;;;IAClEL,MAAME,KAAK,CAAC,SAACC;eAAOf,MAAMK,eAAeT,MAAMC,SAAS,SAACoB;mBAAQF,GAAGE;;;IACpEL,MAAMQ,KAAK,CAAC,SAACH;QACX,uCAAuC;QACvCI,IAAAA,sBAAM,EAAChB,eAAe;mBAAMP,SAASmB;;IACvC;AACF"}
@@ -45,12 +45,11 @@ function _object_spread(target) {
45
45
  }
46
46
  var _require = typeof require === 'undefined' ? _module.default.createRequire(require("url").pathToFileURL(__filename).toString()) : require;
47
47
  function extract(src, dest, options, callback) {
48
- callback = typeof options === 'function' ? options : callback;
49
- options = typeof options === 'function' ? {} : options;
48
+ var done = typeof options === 'function' ? options : callback;
50
49
  var extractOptions = _object_spread({
51
50
  strip: 1,
52
51
  time: 1000
53
- }, options);
52
+ }, typeof options === 'function' ? {} : options);
54
53
  // deferred: fast-extract pulls tar/zip/7z/xz/bzip2 decompressors, only needed when an archive is actually extracted
55
54
  var fastExtractModule = _require('fast-extract');
56
55
  var fastExtract = fastExtractModule.default || fastExtractModule;
@@ -61,6 +60,6 @@ function extract(src, dest, options, callback) {
61
60
  });
62
61
  });
63
62
  queue.defer(fastExtract.bind(null, src, dest, extractOptions));
64
- queue.await(callback);
63
+ queue.await(done);
65
64
  }
66
65
  /* 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-install-release/src/lib/extract.ts"],"sourcesContent":["import mkdirp from 'mkdirp-classic';\nimport Module from 'module';\nimport path from 'path';\nimport Queue from 'queue-cb';\n\nimport type { NoParamCallback } from '../types.ts';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\ninterface ExtractOptions {\n strip?: number;\n time?: number;\n}\n\nexport default function extract(src: string, dest: string, options: ExtractOptions | NoParamCallback, callback?: NoParamCallback): void {\n callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : options;\n\n const extractOptions = { strip: 1, time: 1000, ...options };\n // deferred: fast-extract pulls tar/zip/7z/xz/bzip2 decompressors, only needed when an archive is actually extracted\n const fastExtractModule = _require('fast-extract');\n const fastExtract = fastExtractModule.default || fastExtractModule;\n const queue = new Queue(1);\n queue.defer((cb) => mkdirp(path.dirname(dest), (err) => cb(err)));\n queue.defer(fastExtract.bind(null, src, dest, extractOptions));\n queue.await(callback!);\n}\n"],"names":["extract","_require","require","Module","createRequire","src","dest","options","callback","extractOptions","strip","time","fastExtractModule","fastExtract","default","queue","Queue","defer","cb","mkdirp","path","dirname","err","bind","await"],"mappings":";;;;+BAcA;;;eAAwBA;;;oEAdL;6DACA;2DACF;8DACC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIlB,IAAMC,WAAW,OAAOC,YAAY,cAAcC,eAAM,CAACC,aAAa,CAAC,uDAAmBF;AAO3E,SAASF,QAAQK,GAAW,EAAEC,IAAY,EAAEC,OAAyC,EAAEC,QAA0B;IAC9HA,WAAW,OAAOD,YAAY,aAAaA,UAAUC;IACrDD,UAAU,OAAOA,YAAY,aAAa,CAAC,IAAIA;IAE/C,IAAME,iBAAiB;QAAEC,OAAO;QAAGC,MAAM;OAASJ;IAClD,oHAAoH;IACpH,IAAMK,oBAAoBX,SAAS;IACnC,IAAMY,cAAcD,kBAAkBE,OAAO,IAAIF;IACjD,IAAMG,QAAQ,IAAIC,gBAAK,CAAC;IACxBD,MAAME,KAAK,CAAC,SAACC;eAAOC,IAAAA,sBAAM,EAACC,aAAI,CAACC,OAAO,CAACf,OAAO,SAACgB;mBAAQJ,GAAGI;;;IAC3DP,MAAME,KAAK,CAACJ,YAAYU,IAAI,CAAC,MAAMlB,KAAKC,MAAMG;IAC9CM,MAAMS,KAAK,CAAChB;AACd"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/extract.ts"],"sourcesContent":["import mkdirp from 'mkdirp-classic';\nimport Module from 'module';\nimport path from 'path';\nimport Queue from 'queue-cb';\n\nimport type { NoParamCallback } from '../types.ts';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\ninterface ExtractOptions {\n strip?: number;\n time?: number;\n}\n\nexport default function extract(src: string, dest: string, options: ExtractOptions | NoParamCallback, callback?: NoParamCallback): void {\n const done = (typeof options === 'function' ? options : callback) as NoParamCallback;\n const extractOptions = { strip: 1, time: 1000, ...(typeof options === 'function' ? {} : options) };\n // deferred: fast-extract pulls tar/zip/7z/xz/bzip2 decompressors, only needed when an archive is actually extracted\n const fastExtractModule = _require('fast-extract');\n const fastExtract = fastExtractModule.default || fastExtractModule;\n const queue = new Queue(1);\n queue.defer((cb) => mkdirp(path.dirname(dest), (err) => cb(err)));\n queue.defer(fastExtract.bind(null, src, dest, extractOptions));\n queue.await(done);\n}\n"],"names":["extract","_require","require","Module","createRequire","src","dest","options","callback","done","extractOptions","strip","time","fastExtractModule","fastExtract","default","queue","Queue","defer","cb","mkdirp","path","dirname","err","bind","await"],"mappings":";;;;+BAcA;;;eAAwBA;;;oEAdL;6DACA;2DACF;8DACC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIlB,IAAMC,WAAW,OAAOC,YAAY,cAAcC,eAAM,CAACC,aAAa,CAAC,uDAAmBF;AAO3E,SAASF,QAAQK,GAAW,EAAEC,IAAY,EAAEC,OAAyC,EAAEC,QAA0B;IAC9H,IAAMC,OAAQ,OAAOF,YAAY,aAAaA,UAAUC;IACxD,IAAME,iBAAiB;QAAEC,OAAO;QAAGC,MAAM;OAAU,OAAOL,YAAY,aAAa,CAAC,IAAIA;IACxF,oHAAoH;IACpH,IAAMM,oBAAoBZ,SAAS;IACnC,IAAMa,cAAcD,kBAAkBE,OAAO,IAAIF;IACjD,IAAMG,QAAQ,IAAIC,gBAAK,CAAC;IACxBD,MAAME,KAAK,CAAC,SAACC;eAAOC,IAAAA,sBAAM,EAACC,aAAI,CAACC,OAAO,CAAChB,OAAO,SAACiB;mBAAQJ,GAAGI;;;IAC3DP,MAAME,KAAK,CAACJ,YAAYU,IAAI,CAAC,MAAMnB,KAAKC,MAAMI;IAC9CM,MAAMS,KAAK,CAAChB;AACd"}
@@ -31,6 +31,7 @@ export interface InstallOptions extends VersionOptions {
31
31
  arch?: NodeJS.Architecture;
32
32
  cachePath?: string;
33
33
  }
34
+ export type ResolvedInstallOptions = InstallOptions & StorageLocations;
34
35
  export interface Target {
35
36
  platform: NodeJS.Platform;
36
37
  arch: NodeJS.Architecture;
@@ -31,6 +31,7 @@ export interface InstallOptions extends VersionOptions {
31
31
  arch?: NodeJS.Architecture;
32
32
  cachePath?: string;
33
33
  }
34
+ export type ResolvedInstallOptions = InstallOptions & StorageLocations;
34
35
  export interface Target {
35
36
  platform: NodeJS.Platform;
36
37
  arch: NodeJS.Architecture;
@@ -55,6 +55,29 @@ function _object_spread(target) {
55
55
  }
56
56
  return target;
57
57
  }
58
+ function ownKeys(object, enumerableOnly) {
59
+ var keys = Object.keys(object);
60
+ if (Object.getOwnPropertySymbols) {
61
+ var symbols = Object.getOwnPropertySymbols(object);
62
+ if (enumerableOnly) {
63
+ symbols = symbols.filter(function(sym) {
64
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
65
+ });
66
+ }
67
+ keys.push.apply(keys, symbols);
68
+ }
69
+ return keys;
70
+ }
71
+ function _object_spread_props(target, source) {
72
+ source = source != null ? source : {};
73
+ if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
74
+ else {
75
+ ownKeys(Object(source)).forEach(function(key) {
76
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
77
+ });
78
+ }
79
+ return target;
80
+ }
58
81
  var _require = typeof require === 'undefined' ? _module.default.createRequire(require("url").pathToFileURL(__filename).toString()) : require;
59
82
  function getVersions(versionExpression, options, callback) {
60
83
  // short circuit
@@ -69,9 +92,15 @@ function getVersions(versionExpression, options, callback) {
69
92
  });
70
93
  }
71
94
  function install(versionExpression, options, callback) {
95
+ var _options_cachePath, _options_buildPath, _options_installPath;
72
96
  var storagePaths = options.storagePath ? (0, _createStoragePathsts.default)(options.storagePath) : _constantsts.DEFAULT_STORAGE_PATHS;
73
- options = _object_spread({}, storagePaths, options, (0, _getTargetts.default)(options));
74
- getVersions(versionExpression, options, function(err, versions) {
97
+ // ?? not spread order: an explicitly-undefined path in the caller's options would overwrite the default
98
+ var resolved = _object_spread_props(_object_spread({}, options, (0, _getTargetts.default)(options)), {
99
+ cachePath: (_options_cachePath = options.cachePath) !== null && _options_cachePath !== void 0 ? _options_cachePath : storagePaths.cachePath,
100
+ buildPath: (_options_buildPath = options.buildPath) !== null && _options_buildPath !== void 0 ? _options_buildPath : storagePaths.buildPath,
101
+ installPath: (_options_installPath = options.installPath) !== null && _options_installPath !== void 0 ? _options_installPath : storagePaths.installPath
102
+ });
103
+ getVersions(versionExpression, resolved, function(err, versions) {
75
104
  if (err) return callback(err);
76
105
  if (!versions || !versions.length) {
77
106
  callback(new Error("Could not resolve versions for: ".concat(versionExpression)));
@@ -84,7 +113,7 @@ function install(versionExpression, options, callback) {
84
113
  return;
85
114
  }
86
115
  var version = versions[0];
87
- var result = (0, _createResultts.default)(options, version);
116
+ var result = (0, _createResultts.default)(resolved, version);
88
117
  // Fast path: with atomic installs, folder exists = complete installation
89
118
  _fs.default.stat(result.installPath, function(err) {
90
119
  if (!err) return callback(undefined, result);
@@ -92,20 +121,20 @@ function install(versionExpression, options, callback) {
92
121
  var tempPath = (0, _tempsuffix.default)(result.installPath);
93
122
  var queue = new _queuecb.default(1);
94
123
  queue.defer(function(cb) {
95
- return (0, _mkdirpclassic.default)(options.cachePath, function(err) {
124
+ return (0, _mkdirpclassic.default)(resolved.cachePath, function(err) {
96
125
  return cb(err);
97
126
  });
98
127
  });
99
128
  queue.defer(_ensureDestinationParentts.default.bind(null, tempPath));
100
129
  // Install node to temp folder
101
- queue.defer(_indexts.default.bind(null, version, tempPath, options));
130
+ queue.defer(_indexts.default.bind(null, version, tempPath, resolved));
102
131
  // Check and install npm to temp folder
103
132
  // Skip npm download only if bundled npm is modern (>= 3)
104
133
  queue.defer(function(cb) {
105
- (0, _checkMissingts.default)(tempPath, options, function(err, npmMissing) {
134
+ (0, _checkMissingts.default)(tempPath, resolved, function(err, npmMissing) {
106
135
  if (err) return cb(err);
107
136
  // npm not bundled with node - download it
108
- if (~(npmMissing || []).indexOf('npm')) return (0, _indexts1.default)(version, tempPath, options, cb);
137
+ if (~(npmMissing || []).indexOf('npm')) return (0, _indexts1.default)(version, tempPath, resolved, cb);
109
138
  // npm is present (bundled with node) - keep it unless the dist index positively says it is ancient (<3)
110
139
  // deferred: node-filename-to-dist-paths pulls fetch-json-cache, only needed to check a bundled npm's age
111
140
  var getDistAsync = _require('node-filename-to-dist-paths').getDistAsync;
@@ -117,7 +146,7 @@ function install(versionExpression, options, callback) {
117
146
  var libPath = platform === 'win32' ? tempPath : _path.default.join(tempPath, 'lib');
118
147
  var npmPath = _path.default.join(libPath, 'node_modules', 'npm');
119
148
  (0, _fsremovecompat.safeRm)(npmPath, function() {
120
- return (0, _indexts1.default)(version, tempPath, options, cb);
149
+ return (0, _indexts1.default)(version, tempPath, resolved, cb);
121
150
  });
122
151
  });
123
152
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/workers/install.ts"],"sourcesContent":["import fs from 'fs';\nimport { safeRm } from 'fs-remove-compat';\nimport isVersion from 'is-version';\nimport mkdirp from 'mkdirp-classic';\nimport Module from 'module';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport tempSuffix from 'temp-suffix';\n\nimport { DEFAULT_STORAGE_PATHS } from '../constants.ts';\n\nimport createResult from '../createResult.ts';\nimport createStoragePaths from '../createStoragePaths.ts';\nimport installNode from '../installNode/index.ts';\n\nimport installNPM from '../installNPM/index.ts';\nimport checkMissing from '../lib/checkMissing.ts';\nimport ensureDestinationParent from '../lib/ensureDestinationParent.ts';\nimport getTarget from '../lib/getTarget.ts';\n\nimport type { InstallCallback, InstallOptions } from '../types.ts';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\ntype GetVersionsCallback = (error?: Error | null, results?: string[]) => void;\nfunction getVersions(versionExpression: string, options: InstallOptions, callback: GetVersionsCallback) {\n // short circuit\n if (isVersion(versionExpression)) return callback(undefined, [versionExpression]);\n // deferred: node-resolve-versions pulls node-semvers/fetch-json-cache, only needed for a non-literal version expression\n const resolveVersionsModule = _require('node-resolve-versions');\n const resolveVersions = resolveVersionsModule.default || resolveVersionsModule;\n resolveVersions(versionExpression, options, (err?: Error | null, result?: string[] | unknown[]) => callback(err, result as string[] | undefined));\n}\n\nexport default function install(versionExpression: string, options: InstallOptions, callback: InstallCallback): void {\n const storagePaths = options.storagePath ? createStoragePaths(options.storagePath) : DEFAULT_STORAGE_PATHS;\n options = { ...storagePaths, ...options, ...getTarget(options) };\n getVersions(versionExpression, options, (err?: Error | null, versions?: string[]): void => {\n if (err) return callback(err);\n if (!versions || !versions.length) {\n callback(new Error(`Could not resolve versions for: ${versionExpression}`));\n return;\n }\n if (versions.length !== 1) {\n callback(new Error(`Version ${versionExpression} resolved to multiple versions: ${versions.map((x) => x)}. Expecting one.`));\n return;\n }\n\n const version = versions[0];\n const result = createResult(options, version);\n\n // Fast path: with atomic installs, folder exists = complete installation\n fs.stat(result.installPath, (err) => {\n if (!err) return callback(undefined, result);\n\n // Folder doesn't exist - do atomic install with temp folder\n const tempPath = tempSuffix(result.installPath);\n\n const queue = new Queue(1);\n queue.defer((cb) => mkdirp(options.cachePath!, (err) => cb(err)));\n queue.defer(ensureDestinationParent.bind(null, tempPath));\n\n // Install node to temp folder\n queue.defer(installNode.bind(null, version, tempPath, options));\n\n // Check and install npm to temp folder\n // Skip npm download only if bundled npm is modern (>= 3)\n queue.defer((cb) => {\n checkMissing(tempPath, options, (err, npmMissing): void => {\n if (err) return cb(err);\n // npm not bundled with node - download it\n if (~(npmMissing || []).indexOf('npm')) return installNPM(version, tempPath, options, cb);\n\n // npm is present (bundled with node) - keep it unless the dist index positively says it is ancient (<3)\n // deferred: node-filename-to-dist-paths pulls fetch-json-cache, only needed to check a bundled npm's age\n const { getDistAsync } = _require('node-filename-to-dist-paths');\n getDistAsync(version, (_err: Error | null, dist: { npm?: string }) => {\n const bundledNpmIsAncient = dist && dist.npm && +dist.npm.split('.')[0] < 3;\n if (!bundledNpmIsAncient) return cb(); // unknown version keeps the bundled npm\n\n // old npm (<3) is buggy - delete it so installNPM can override\n const platform = options.platform;\n const libPath = platform === 'win32' ? tempPath : path.join(tempPath, 'lib');\n const npmPath = path.join(libPath, 'node_modules', 'npm');\n safeRm(npmPath, () => installNPM(version, tempPath, options, cb));\n });\n });\n });\n\n // Atomic rename: move temp folder to final destination\n queue.defer((cb) => {\n fs.rename(tempPath, result.installPath, (err) => {\n if (!err) return cb();\n // Race condition: another process may have already created dest\n if (err.code === 'EEXIST' || err.code === 'ENOTEMPTY' || err.code === 'EPERM') {\n // Another process won the race - clean up temp and succeed\n safeRm(tempPath, () => cb());\n return;\n }\n cb(err);\n });\n });\n\n queue.await((err) => {\n // Clean up temp folder on error\n if (err) return safeRm(tempPath, () => callback(err));\n\n callback(undefined, result);\n });\n });\n });\n}\n"],"names":["install","_require","require","Module","createRequire","getVersions","versionExpression","options","callback","isVersion","undefined","resolveVersionsModule","resolveVersions","default","err","result","storagePaths","storagePath","createStoragePaths","DEFAULT_STORAGE_PATHS","getTarget","versions","length","Error","map","x","version","createResult","fs","stat","installPath","tempPath","tempSuffix","queue","Queue","defer","cb","mkdirp","cachePath","ensureDestinationParent","bind","installNode","checkMissing","npmMissing","indexOf","installNPM","getDistAsync","_err","dist","bundledNpmIsAncient","npm","split","platform","libPath","path","join","npmPath","safeRm","rename","code","await"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/workers/install.ts"],"sourcesContent":["import fs from 'fs';\nimport { safeRm } from 'fs-remove-compat';\nimport isVersion from 'is-version';\nimport mkdirp from 'mkdirp-classic';\nimport Module from 'module';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport tempSuffix from 'temp-suffix';\n\nimport { DEFAULT_STORAGE_PATHS } from '../constants.ts';\n\nimport createResult from '../createResult.ts';\nimport createStoragePaths from '../createStoragePaths.ts';\nimport installNode from '../installNode/index.ts';\n\nimport installNPM from '../installNPM/index.ts';\nimport checkMissing from '../lib/checkMissing.ts';\nimport ensureDestinationParent from '../lib/ensureDestinationParent.ts';\nimport getTarget from '../lib/getTarget.ts';\n\nimport type { InstallCallback, InstallOptions, ResolvedInstallOptions } from '../types.ts';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\ntype GetVersionsCallback = (error?: Error | null, results?: string[]) => void;\nfunction getVersions(versionExpression: string, options: InstallOptions, callback: GetVersionsCallback) {\n // short circuit\n if (isVersion(versionExpression)) return callback(undefined, [versionExpression]);\n // deferred: node-resolve-versions pulls node-semvers/fetch-json-cache, only needed for a non-literal version expression\n const resolveVersionsModule = _require('node-resolve-versions');\n const resolveVersions = resolveVersionsModule.default || resolveVersionsModule;\n resolveVersions(versionExpression, options, (err?: Error | null, result?: string[] | unknown[]) => callback(err, result as string[] | undefined));\n}\n\nexport default function install(versionExpression: string, options: InstallOptions, callback: InstallCallback): void {\n const storagePaths = options.storagePath ? createStoragePaths(options.storagePath) : DEFAULT_STORAGE_PATHS;\n // ?? not spread order: an explicitly-undefined path in the caller's options would overwrite the default\n const resolved: ResolvedInstallOptions = {\n ...options,\n ...getTarget(options),\n cachePath: options.cachePath ?? storagePaths.cachePath,\n buildPath: options.buildPath ?? storagePaths.buildPath,\n installPath: options.installPath ?? storagePaths.installPath,\n };\n getVersions(versionExpression, resolved, (err?: Error | null, versions?: string[]): void => {\n if (err) return callback(err);\n if (!versions || !versions.length) {\n callback(new Error(`Could not resolve versions for: ${versionExpression}`));\n return;\n }\n if (versions.length !== 1) {\n callback(new Error(`Version ${versionExpression} resolved to multiple versions: ${versions.map((x) => x)}. Expecting one.`));\n return;\n }\n\n const version = versions[0];\n const result = createResult(resolved, version);\n\n // Fast path: with atomic installs, folder exists = complete installation\n fs.stat(result.installPath, (err) => {\n if (!err) return callback(undefined, result);\n\n // Folder doesn't exist - do atomic install with temp folder\n const tempPath = tempSuffix(result.installPath);\n\n const queue = new Queue(1);\n queue.defer((cb) => mkdirp(resolved.cachePath, (err) => cb(err)));\n queue.defer(ensureDestinationParent.bind(null, tempPath));\n\n // Install node to temp folder\n queue.defer(installNode.bind(null, version, tempPath, resolved));\n\n // Check and install npm to temp folder\n // Skip npm download only if bundled npm is modern (>= 3)\n queue.defer((cb) => {\n checkMissing(tempPath, resolved, (err, npmMissing): void => {\n if (err) return cb(err);\n // npm not bundled with node - download it\n if (~(npmMissing || []).indexOf('npm')) return installNPM(version, tempPath, resolved, cb);\n\n // npm is present (bundled with node) - keep it unless the dist index positively says it is ancient (<3)\n // deferred: node-filename-to-dist-paths pulls fetch-json-cache, only needed to check a bundled npm's age\n const { getDistAsync } = _require('node-filename-to-dist-paths');\n getDistAsync(version, (_err: Error | null, dist: { npm?: string }) => {\n const bundledNpmIsAncient = dist && dist.npm && +dist.npm.split('.')[0] < 3;\n if (!bundledNpmIsAncient) return cb(); // unknown version keeps the bundled npm\n\n // old npm (<3) is buggy - delete it so installNPM can override\n const platform = options.platform;\n const libPath = platform === 'win32' ? tempPath : path.join(tempPath, 'lib');\n const npmPath = path.join(libPath, 'node_modules', 'npm');\n safeRm(npmPath, () => installNPM(version, tempPath, resolved, cb));\n });\n });\n });\n\n // Atomic rename: move temp folder to final destination\n queue.defer((cb) => {\n fs.rename(tempPath, result.installPath, (err) => {\n if (!err) return cb();\n // Race condition: another process may have already created dest\n if (err.code === 'EEXIST' || err.code === 'ENOTEMPTY' || err.code === 'EPERM') {\n // Another process won the race - clean up temp and succeed\n safeRm(tempPath, () => cb());\n return;\n }\n cb(err);\n });\n });\n\n queue.await((err) => {\n // Clean up temp folder on error\n if (err) return safeRm(tempPath, () => callback(err));\n\n callback(undefined, result);\n });\n });\n });\n}\n"],"names":["install","_require","require","Module","createRequire","getVersions","versionExpression","options","callback","isVersion","undefined","resolveVersionsModule","resolveVersions","default","err","result","storagePaths","storagePath","createStoragePaths","DEFAULT_STORAGE_PATHS","resolved","getTarget","cachePath","buildPath","installPath","versions","length","Error","map","x","version","createResult","fs","stat","tempPath","tempSuffix","queue","Queue","defer","cb","mkdirp","ensureDestinationParent","bind","installNode","checkMissing","npmMissing","indexOf","installNPM","getDistAsync","_err","dist","bundledNpmIsAncient","npm","split","platform","libPath","path","join","npmPath","safeRm","rename","code","await"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import type { InstallOptions, NoParamCallback } from '../types.js';
2
- export default function install(version: string, dest: string, options: InstallOptions, callback: NoParamCallback): void;
1
+ import type { NoParamCallback, ResolvedInstallOptions } from '../types.js';
2
+ export default function install(version: string, dest: string, options: ResolvedInstallOptions, callback: NoParamCallback): void;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/index.ts"],"sourcesContent":["import { FILE_PLATFORM_MAP, FILES } from '../constants.ts';\nimport type { ChecksumResult, InstallOptions, NoParamCallback } from '../types.ts';\nimport installFilename from './installFilename.ts';\n\nexport default function install(version: string, dest: string, options: InstallOptions, callback: NoParamCallback): void {\n let filenames: string[] | null = null;\n\n // a specific filename\n if (options.filename) filenames = [options.filename];\n // infer with fallbacks\n else {\n const { platform, arch } = options;\n const filePlatform = (FILE_PLATFORM_MAP as Record<string, string>)[platform as string] || platform;\n const parts = [filePlatform, arch];\n if (options.type) parts.push(options.type);\n if (options.compression) parts.push(options.compression as unknown as string);\n\n // generate the files in search order\n const archs = [arch, process.arch];\n filenames = archs.map((a) => [filePlatform, a].concat(parts.slice(2)).join('-'));\n ((FILES as Record<string, { filename: string }[]>)[filePlatform as string] || []).forEach((x: { filename: string }) => {\n filenames?.push(x.filename);\n });\n filenames?.push('src');\n filenames = filenames?.filter((filename, i) => filenames?.indexOf(filename) === i);\n }\n\n const tryNext = (cb: (err?: Error | null, checksum?: ChecksumResult) => void, lastErr?: Error) => {\n if (filenames == null || filenames.length === 0) {\n const msg = `Failed to find installable for ${version}${options.filename ? ` Filename: ${options.filename}` : ''}`;\n return cb(new Error(lastErr ? `${msg}: ${lastErr.message}` : msg));\n }\n const filename = filenames.shift() as string;\n installFilename(filename, version, dest, options, (err, checksum) => (err ? tryNext(cb, err) : cb(undefined, checksum)));\n };\n tryNext((err, checksum) => {\n let message = `node ${version.slice(1)}`;\n if (!err) {\n message += ' installed';\n if (checksum) message += ` (${checksum.actual.slice(0, 8)})`;\n } else {\n message += ' install failed';\n if (checksum) message += ` (${checksum.actual} expecting ${checksum.expected})`;\n message += `. Error: ${err.message}`;\n }\n console.log(message);\n callback(err);\n });\n}\n"],"names":["FILE_PLATFORM_MAP","FILES","installFilename","install","version","dest","options","callback","filenames","filename","platform","arch","filePlatform","parts","type","push","compression","archs","process","map","a","concat","slice","join","forEach","x","filter","i","indexOf","tryNext","cb","lastErr","length","msg","Error","message","shift","err","checksum","undefined","actual","expected","console","log"],"mappings":"AAAA,SAASA,iBAAiB,EAAEC,KAAK,QAAQ,kBAAkB;AAE3D,OAAOC,qBAAqB,uBAAuB;AAEnD,eAAe,SAASC,QAAQC,OAAe,EAAEC,IAAY,EAAEC,OAAuB,EAAEC,QAAyB;IAC/G,IAAIC,YAA6B;IAEjC,sBAAsB;IACtB,IAAIF,QAAQG,QAAQ,EAAED,YAAY;QAACF,QAAQG,QAAQ;KAAC;SAE/C;QACH,MAAM,EAAEC,QAAQ,EAAEC,IAAI,EAAE,GAAGL;QAC3B,MAAMM,eAAe,AAACZ,iBAA4C,CAACU,SAAmB,IAAIA;QAC1F,MAAMG,QAAQ;YAACD;YAAcD;SAAK;QAClC,IAAIL,QAAQQ,IAAI,EAAED,MAAME,IAAI,CAACT,QAAQQ,IAAI;QACzC,IAAIR,QAAQU,WAAW,EAAEH,MAAME,IAAI,CAACT,QAAQU,WAAW;QAEvD,qCAAqC;QACrC,MAAMC,QAAQ;YAACN;YAAMO,QAAQP,IAAI;SAAC;QAClCH,YAAYS,MAAME,GAAG,CAAC,CAACC,IAAM;gBAACR;gBAAcQ;aAAE,CAACC,MAAM,CAACR,MAAMS,KAAK,CAAC,IAAIC,IAAI,CAAC;QAC1E,CAAA,AAACtB,KAAgD,CAACW,aAAuB,IAAI,EAAE,AAAD,EAAGY,OAAO,CAAC,CAACC;YACzFjB,sBAAAA,gCAAAA,UAAWO,IAAI,CAACU,EAAEhB,QAAQ;QAC5B;QACAD,sBAAAA,gCAAAA,UAAWO,IAAI,CAAC;QAChBP,YAAYA,sBAAAA,gCAAAA,UAAWkB,MAAM,CAAC,CAACjB,UAAUkB,IAAMnB,CAAAA,sBAAAA,gCAAAA,UAAWoB,OAAO,CAACnB,eAAckB;IAClF;IAEA,MAAME,UAAU,CAACC,IAA6DC;QAC5E,IAAIvB,aAAa,QAAQA,UAAUwB,MAAM,KAAK,GAAG;YAC/C,MAAMC,MAAM,CAAC,+BAA+B,EAAE7B,UAAUE,QAAQG,QAAQ,GAAG,CAAC,WAAW,EAAEH,QAAQG,QAAQ,EAAE,GAAG,IAAI;YAClH,OAAOqB,GAAG,IAAII,MAAMH,UAAU,GAAGE,IAAI,EAAE,EAAEF,QAAQI,OAAO,EAAE,GAAGF;QAC/D;QACA,MAAMxB,WAAWD,UAAU4B,KAAK;QAChClC,gBAAgBO,UAAUL,SAASC,MAAMC,SAAS,CAAC+B,KAAKC,WAAcD,MAAMR,QAAQC,IAAIO,OAAOP,GAAGS,WAAWD;IAC/G;IACAT,QAAQ,CAACQ,KAAKC;QACZ,IAAIH,UAAU,CAAC,KAAK,EAAE/B,QAAQkB,KAAK,CAAC,IAAI;QACxC,IAAI,CAACe,KAAK;YACRF,WAAW;YACX,IAAIG,UAAUH,WAAW,CAAC,EAAE,EAAEG,SAASE,MAAM,CAAClB,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;QAC9D,OAAO;YACLa,WAAW;YACX,IAAIG,UAAUH,WAAW,CAAC,EAAE,EAAEG,SAASE,MAAM,CAAC,WAAW,EAAEF,SAASG,QAAQ,CAAC,CAAC,CAAC;YAC/EN,WAAW,CAAC,SAAS,EAAEE,IAAIF,OAAO,EAAE;QACtC;QACAO,QAAQC,GAAG,CAACR;QACZ5B,SAAS8B;IACX;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/index.ts"],"sourcesContent":["import { FILE_PLATFORM_MAP, FILES } from '../constants.ts';\nimport type { ChecksumResult, NoParamCallback, ResolvedInstallOptions } from '../types.ts';\nimport installFilename from './installFilename.ts';\n\nexport default function install(version: string, dest: string, options: ResolvedInstallOptions, callback: NoParamCallback): void {\n let filenames: string[] | null = null;\n\n // a specific filename\n if (options.filename) filenames = [options.filename];\n // infer with fallbacks\n else {\n const { platform, arch } = options;\n const filePlatform = (FILE_PLATFORM_MAP as Record<string, string>)[platform as string] || platform;\n const parts = [filePlatform, arch];\n if (options.type) parts.push(options.type);\n if (options.compression) parts.push(options.compression as unknown as string);\n\n // generate the files in search order\n const archs = [arch, process.arch];\n filenames = archs.map((a) => [filePlatform, a].concat(parts.slice(2)).join('-'));\n ((FILES as Record<string, { filename: string }[]>)[filePlatform as string] || []).forEach((x: { filename: string }) => {\n filenames?.push(x.filename);\n });\n filenames?.push('src');\n filenames = filenames?.filter((filename, i) => filenames?.indexOf(filename) === i);\n }\n\n const tryNext = (cb: (err?: Error | null, checksum?: ChecksumResult) => void, lastErr?: Error) => {\n if (filenames == null || filenames.length === 0) {\n const msg = `Failed to find installable for ${version}${options.filename ? ` Filename: ${options.filename}` : ''}`;\n return cb(new Error(lastErr ? `${msg}: ${lastErr.message}` : msg));\n }\n const filename = filenames.shift() as string;\n installFilename(filename, version, dest, options, (err, checksum) => (err ? tryNext(cb, err) : cb(undefined, checksum)));\n };\n tryNext((err, checksum) => {\n let message = `node ${version.slice(1)}`;\n if (!err) {\n message += ' installed';\n if (checksum) message += ` (${checksum.actual.slice(0, 8)})`;\n } else {\n message += ' install failed';\n if (checksum) message += ` (${checksum.actual} expecting ${checksum.expected})`;\n message += `. Error: ${err.message}`;\n }\n console.log(message);\n callback(err);\n });\n}\n"],"names":["FILE_PLATFORM_MAP","FILES","installFilename","install","version","dest","options","callback","filenames","filename","platform","arch","filePlatform","parts","type","push","compression","archs","process","map","a","concat","slice","join","forEach","x","filter","i","indexOf","tryNext","cb","lastErr","length","msg","Error","message","shift","err","checksum","undefined","actual","expected","console","log"],"mappings":"AAAA,SAASA,iBAAiB,EAAEC,KAAK,QAAQ,kBAAkB;AAE3D,OAAOC,qBAAqB,uBAAuB;AAEnD,eAAe,SAASC,QAAQC,OAAe,EAAEC,IAAY,EAAEC,OAA+B,EAAEC,QAAyB;IACvH,IAAIC,YAA6B;IAEjC,sBAAsB;IACtB,IAAIF,QAAQG,QAAQ,EAAED,YAAY;QAACF,QAAQG,QAAQ;KAAC;SAE/C;QACH,MAAM,EAAEC,QAAQ,EAAEC,IAAI,EAAE,GAAGL;QAC3B,MAAMM,eAAe,AAACZ,iBAA4C,CAACU,SAAmB,IAAIA;QAC1F,MAAMG,QAAQ;YAACD;YAAcD;SAAK;QAClC,IAAIL,QAAQQ,IAAI,EAAED,MAAME,IAAI,CAACT,QAAQQ,IAAI;QACzC,IAAIR,QAAQU,WAAW,EAAEH,MAAME,IAAI,CAACT,QAAQU,WAAW;QAEvD,qCAAqC;QACrC,MAAMC,QAAQ;YAACN;YAAMO,QAAQP,IAAI;SAAC;QAClCH,YAAYS,MAAME,GAAG,CAAC,CAACC,IAAM;gBAACR;gBAAcQ;aAAE,CAACC,MAAM,CAACR,MAAMS,KAAK,CAAC,IAAIC,IAAI,CAAC;QAC1E,CAAA,AAACtB,KAAgD,CAACW,aAAuB,IAAI,EAAE,AAAD,EAAGY,OAAO,CAAC,CAACC;YACzFjB,sBAAAA,gCAAAA,UAAWO,IAAI,CAACU,EAAEhB,QAAQ;QAC5B;QACAD,sBAAAA,gCAAAA,UAAWO,IAAI,CAAC;QAChBP,YAAYA,sBAAAA,gCAAAA,UAAWkB,MAAM,CAAC,CAACjB,UAAUkB,IAAMnB,CAAAA,sBAAAA,gCAAAA,UAAWoB,OAAO,CAACnB,eAAckB;IAClF;IAEA,MAAME,UAAU,CAACC,IAA6DC;QAC5E,IAAIvB,aAAa,QAAQA,UAAUwB,MAAM,KAAK,GAAG;YAC/C,MAAMC,MAAM,CAAC,+BAA+B,EAAE7B,UAAUE,QAAQG,QAAQ,GAAG,CAAC,WAAW,EAAEH,QAAQG,QAAQ,EAAE,GAAG,IAAI;YAClH,OAAOqB,GAAG,IAAII,MAAMH,UAAU,GAAGE,IAAI,EAAE,EAAEF,QAAQI,OAAO,EAAE,GAAGF;QAC/D;QACA,MAAMxB,WAAWD,UAAU4B,KAAK;QAChClC,gBAAgBO,UAAUL,SAASC,MAAMC,SAAS,CAAC+B,KAAKC,WAAcD,MAAMR,QAAQC,IAAIO,OAAOP,GAAGS,WAAWD;IAC/G;IACAT,QAAQ,CAACQ,KAAKC;QACZ,IAAIH,UAAU,CAAC,KAAK,EAAE/B,QAAQkB,KAAK,CAAC,IAAI;QACxC,IAAI,CAACe,KAAK;YACRF,WAAW;YACX,IAAIG,UAAUH,WAAW,CAAC,EAAE,EAAEG,SAASE,MAAM,CAAClB,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;QAC9D,OAAO;YACLa,WAAW;YACX,IAAIG,UAAUH,WAAW,CAAC,EAAE,EAAEG,SAASE,MAAM,CAAC,WAAW,EAAEF,SAASG,QAAQ,CAAC,CAAC,CAAC;YAC/EN,WAAW,CAAC,SAAS,EAAEE,IAAIF,OAAO,EAAE;QACtC;QACAO,QAAQC,GAAG,CAACR;QACZ5B,SAAS8B;IACX;AACF"}
@@ -1,2 +1,2 @@
1
- import type { ChecksumCallback, InstallOptions } from '../types.js';
2
- export default function installCompressed(distPath: string, dest: string, options: InstallOptions, callback: ChecksumCallback): void;
1
+ import type { ChecksumCallback, ResolvedInstallOptions } from '../types.js';
2
+ export default function installCompressed(distPath: string, dest: string, options: ResolvedInstallOptions, callback: ChecksumCallback): void;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installCompressed.ts"],"sourcesContent":["import path from 'path';\nimport Queue from 'queue-cb';\n\nimport { NODE_DIST_BASE_URL } from '../constants.ts';\nimport conditionalCache from '../lib/conditionalCache.ts';\nimport extract from '../lib/extract.ts';\nimport type { ChecksumCallback, ChecksumResult, InstallOptions } from '../types.ts';\nimport validateDownload from './validateDownload.ts';\n\nexport default function installCompressed(distPath: string, dest: string, options: InstallOptions, callback: ChecksumCallback): void {\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n const cachePath = path.join(options.cachePath!, path.basename(downloadPath));\n\n let checksum: ChecksumResult | undefined;\n const queue = new Queue(1);\n queue.defer((cb) => conditionalCache(downloadPath, cachePath, options, (err) => cb(err)));\n queue.defer((cb) => {\n validateDownload(distPath, cachePath, (err, result) => {\n checksum = result;\n cb(err);\n });\n });\n queue.defer(extract.bind(null, cachePath, dest, { strip: 1, time: 1000 }));\n queue.await((err) => callback(err, checksum));\n}\n"],"names":["path","Queue","NODE_DIST_BASE_URL","conditionalCache","extract","validateDownload","installCompressed","distPath","dest","options","callback","downloadPath","cachePath","join","basename","checksum","queue","defer","cb","err","result","bind","strip","time","await"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAE7B,SAASC,kBAAkB,QAAQ,kBAAkB;AACrD,OAAOC,sBAAsB,6BAA6B;AAC1D,OAAOC,aAAa,oBAAoB;AAExC,OAAOC,sBAAsB,wBAAwB;AAErD,eAAe,SAASC,kBAAkBC,QAAgB,EAAEC,IAAY,EAAEC,OAAuB,EAAEC,QAA0B;IAC3H,MAAMC,eAAe,GAAGT,mBAAmB,CAAC,EAAEK,UAAU;IACxD,MAAMK,YAAYZ,KAAKa,IAAI,CAACJ,QAAQG,SAAS,EAAGZ,KAAKc,QAAQ,CAACH;IAE9D,IAAII;IACJ,MAAMC,QAAQ,IAAIf,MAAM;IACxBe,MAAMC,KAAK,CAAC,CAACC,KAAOf,iBAAiBQ,cAAcC,WAAWH,SAAS,CAACU,MAAQD,GAAGC;IACnFH,MAAMC,KAAK,CAAC,CAACC;QACXb,iBAAiBE,UAAUK,WAAW,CAACO,KAAKC;YAC1CL,WAAWK;YACXF,GAAGC;QACL;IACF;IACAH,MAAMC,KAAK,CAACb,QAAQiB,IAAI,CAAC,MAAMT,WAAWJ,MAAM;QAAEc,OAAO;QAAGC,MAAM;IAAK;IACvEP,MAAMQ,KAAK,CAAC,CAACL,MAAQT,SAASS,KAAKJ;AACrC"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installCompressed.ts"],"sourcesContent":["import path from 'path';\nimport Queue from 'queue-cb';\n\nimport { NODE_DIST_BASE_URL } from '../constants.ts';\nimport conditionalCache from '../lib/conditionalCache.ts';\nimport extract from '../lib/extract.ts';\nimport type { ChecksumCallback, ChecksumResult, ResolvedInstallOptions } from '../types.ts';\nimport validateDownload from './validateDownload.ts';\n\nexport default function installCompressed(distPath: string, dest: string, options: ResolvedInstallOptions, callback: ChecksumCallback): void {\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n const cachePath = path.join(options.cachePath, path.basename(downloadPath));\n\n let checksum: ChecksumResult | undefined;\n const queue = new Queue(1);\n queue.defer((cb) => conditionalCache(downloadPath, cachePath, options, (err) => cb(err)));\n queue.defer((cb) => {\n validateDownload(distPath, cachePath, (err, result) => {\n checksum = result;\n cb(err);\n });\n });\n queue.defer(extract.bind(null, cachePath, dest, { strip: 1, time: 1000 }));\n queue.await((err) => callback(err, checksum));\n}\n"],"names":["path","Queue","NODE_DIST_BASE_URL","conditionalCache","extract","validateDownload","installCompressed","distPath","dest","options","callback","downloadPath","cachePath","join","basename","checksum","queue","defer","cb","err","result","bind","strip","time","await"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAE7B,SAASC,kBAAkB,QAAQ,kBAAkB;AACrD,OAAOC,sBAAsB,6BAA6B;AAC1D,OAAOC,aAAa,oBAAoB;AAExC,OAAOC,sBAAsB,wBAAwB;AAErD,eAAe,SAASC,kBAAkBC,QAAgB,EAAEC,IAAY,EAAEC,OAA+B,EAAEC,QAA0B;IACnI,MAAMC,eAAe,GAAGT,mBAAmB,CAAC,EAAEK,UAAU;IACxD,MAAMK,YAAYZ,KAAKa,IAAI,CAACJ,QAAQG,SAAS,EAAEZ,KAAKc,QAAQ,CAACH;IAE7D,IAAII;IACJ,MAAMC,QAAQ,IAAIf,MAAM;IACxBe,MAAMC,KAAK,CAAC,CAACC,KAAOf,iBAAiBQ,cAAcC,WAAWH,SAAS,CAACU,MAAQD,GAAGC;IACnFH,MAAMC,KAAK,CAAC,CAACC;QACXb,iBAAiBE,UAAUK,WAAW,CAACO,KAAKC;YAC1CL,WAAWK;YACXF,GAAGC;QACL;IACF;IACAH,MAAMC,KAAK,CAACb,QAAQiB,IAAI,CAAC,MAAMT,WAAWJ,MAAM;QAAEc,OAAO;QAAGC,MAAM;IAAK;IACvEP,MAAMQ,KAAK,CAAC,CAACL,MAAQT,SAASS,KAAKJ;AACrC"}
@@ -1,2 +1,2 @@
1
- import type { InstallOptions, NoParamCallback } from '../types.js';
2
- export default function installExe(distPath: string, dest: string, options: InstallOptions, callback: NoParamCallback): void;
1
+ import type { NoParamCallback, ResolvedInstallOptions } from '../types.js';
2
+ export default function installExe(distPath: string, dest: string, options: ResolvedInstallOptions, callback: NoParamCallback): void;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installExe.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport Queue from 'queue-cb';\n\nimport { NODE_DIST_BASE_URL, NODE_FILE_PATHS } from '../constants.ts';\nimport conditionalCache from '../lib/conditionalCache.ts';\nimport copyFile from '../lib/copyFile.ts';\nimport type { InstallOptions, NoParamCallback } from '../types.ts';\nimport validateDownload from './validateDownload.ts';\n\nexport default function installExe(distPath: string, dest: string, options: InstallOptions, callback: NoParamCallback): void {\n const platform = options.platform;\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n const cachePath = path.join(options.cachePath!, `node-${distPath}.exe`);\n const nodePath = (NODE_FILE_PATHS as Record<string, string>)[platform as string] || NODE_FILE_PATHS.posix;\n const execPath = path.join(dest, nodePath);\n\n fs.stat(execPath, (err) => {\n if (!err) return callback(); // already exists\n\n const queue = new Queue(1);\n queue.defer((cb) => conditionalCache(downloadPath, cachePath, options, (err) => cb(err)));\n queue.defer((cb) => validateDownload(distPath, cachePath, (err) => cb(err)));\n queue.defer((cb) => copyFile(cachePath, execPath, (err) => cb(err)));\n queue.await(callback);\n });\n}\n"],"names":["fs","path","Queue","NODE_DIST_BASE_URL","NODE_FILE_PATHS","conditionalCache","copyFile","validateDownload","installExe","distPath","dest","options","callback","platform","downloadPath","cachePath","join","nodePath","posix","execPath","stat","err","queue","defer","cb","await"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAE7B,SAASC,kBAAkB,EAAEC,eAAe,QAAQ,kBAAkB;AACtE,OAAOC,sBAAsB,6BAA6B;AAC1D,OAAOC,cAAc,qBAAqB;AAE1C,OAAOC,sBAAsB,wBAAwB;AAErD,eAAe,SAASC,WAAWC,QAAgB,EAAEC,IAAY,EAAEC,OAAuB,EAAEC,QAAyB;IACnH,MAAMC,WAAWF,QAAQE,QAAQ;IACjC,MAAMC,eAAe,GAAGX,mBAAmB,CAAC,EAAEM,UAAU;IACxD,MAAMM,YAAYd,KAAKe,IAAI,CAACL,QAAQI,SAAS,EAAG,CAAC,KAAK,EAAEN,SAAS,IAAI,CAAC;IACtE,MAAMQ,WAAW,AAACb,eAA0C,CAACS,SAAmB,IAAIT,gBAAgBc,KAAK;IACzG,MAAMC,WAAWlB,KAAKe,IAAI,CAACN,MAAMO;IAEjCjB,GAAGoB,IAAI,CAACD,UAAU,CAACE;QACjB,IAAI,CAACA,KAAK,OAAOT,YAAY,iBAAiB;QAE9C,MAAMU,QAAQ,IAAIpB,MAAM;QACxBoB,MAAMC,KAAK,CAAC,CAACC,KAAOnB,iBAAiBS,cAAcC,WAAWJ,SAAS,CAACU,MAAQG,GAAGH;QACnFC,MAAMC,KAAK,CAAC,CAACC,KAAOjB,iBAAiBE,UAAUM,WAAW,CAACM,MAAQG,GAAGH;QACtEC,MAAMC,KAAK,CAAC,CAACC,KAAOlB,SAASS,WAAWI,UAAU,CAACE,MAAQG,GAAGH;QAC9DC,MAAMG,KAAK,CAACb;IACd;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installExe.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport Queue from 'queue-cb';\n\nimport { NODE_DIST_BASE_URL, NODE_FILE_PATHS } from '../constants.ts';\nimport conditionalCache from '../lib/conditionalCache.ts';\nimport copyFile from '../lib/copyFile.ts';\nimport type { NoParamCallback, ResolvedInstallOptions } from '../types.ts';\nimport validateDownload from './validateDownload.ts';\n\nexport default function installExe(distPath: string, dest: string, options: ResolvedInstallOptions, callback: NoParamCallback): void {\n const platform = options.platform;\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n const cachePath = path.join(options.cachePath, `node-${distPath}.exe`);\n const nodePath = (NODE_FILE_PATHS as Record<string, string>)[platform as string] || NODE_FILE_PATHS.posix;\n const execPath = path.join(dest, nodePath);\n\n fs.stat(execPath, (err) => {\n if (!err) return callback(); // already exists\n\n const queue = new Queue(1);\n queue.defer((cb) => conditionalCache(downloadPath, cachePath, options, (err) => cb(err)));\n queue.defer((cb) => validateDownload(distPath, cachePath, (err) => cb(err)));\n queue.defer((cb) => copyFile(cachePath, execPath, (err) => cb(err)));\n queue.await(callback);\n });\n}\n"],"names":["fs","path","Queue","NODE_DIST_BASE_URL","NODE_FILE_PATHS","conditionalCache","copyFile","validateDownload","installExe","distPath","dest","options","callback","platform","downloadPath","cachePath","join","nodePath","posix","execPath","stat","err","queue","defer","cb","await"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAE7B,SAASC,kBAAkB,EAAEC,eAAe,QAAQ,kBAAkB;AACtE,OAAOC,sBAAsB,6BAA6B;AAC1D,OAAOC,cAAc,qBAAqB;AAE1C,OAAOC,sBAAsB,wBAAwB;AAErD,eAAe,SAASC,WAAWC,QAAgB,EAAEC,IAAY,EAAEC,OAA+B,EAAEC,QAAyB;IAC3H,MAAMC,WAAWF,QAAQE,QAAQ;IACjC,MAAMC,eAAe,GAAGX,mBAAmB,CAAC,EAAEM,UAAU;IACxD,MAAMM,YAAYd,KAAKe,IAAI,CAACL,QAAQI,SAAS,EAAE,CAAC,KAAK,EAAEN,SAAS,IAAI,CAAC;IACrE,MAAMQ,WAAW,AAACb,eAA0C,CAACS,SAAmB,IAAIT,gBAAgBc,KAAK;IACzG,MAAMC,WAAWlB,KAAKe,IAAI,CAACN,MAAMO;IAEjCjB,GAAGoB,IAAI,CAACD,UAAU,CAACE;QACjB,IAAI,CAACA,KAAK,OAAOT,YAAY,iBAAiB;QAE9C,MAAMU,QAAQ,IAAIpB,MAAM;QACxBoB,MAAMC,KAAK,CAAC,CAACC,KAAOnB,iBAAiBS,cAAcC,WAAWJ,SAAS,CAACU,MAAQG,GAAGH;QACnFC,MAAMC,KAAK,CAAC,CAACC,KAAOjB,iBAAiBE,UAAUM,WAAW,CAACM,MAAQG,GAAGH;QACtEC,MAAMC,KAAK,CAAC,CAACC,KAAOlB,SAASS,WAAWI,UAAU,CAACE,MAAQG,GAAGH;QAC9DC,MAAMG,KAAK,CAACb;IACd;AACF"}
@@ -1,2 +1,2 @@
1
- import type { ChecksumCallback, InstallOptions } from '../types.js';
2
- export default function installFilename(filename: string, version: string, dest: string, options: InstallOptions, callback: ChecksumCallback): void;
1
+ import type { ChecksumCallback, ResolvedInstallOptions } from '../types.js';
2
+ export default function installFilename(filename: string, version: string, dest: string, options: ResolvedInstallOptions, callback: ChecksumCallback): void;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installFilename.ts"],"sourcesContent":["import Module from 'module';\nimport path from 'path';\nimport { EXTENSIONS_COMPRESSED } from '../constants.ts';\nimport type { ChecksumCallback, InstallOptions } from '../types.ts';\nimport installCompressed from './installCompressed.ts';\nimport installExe from './installExe.ts';\nimport installSource from './installSource/index.ts';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\nexport default function installFilename(filename: string, version: string, dest: string, options: InstallOptions, callback: ChecksumCallback): void {\n // deferred: node-filename-to-dist-paths pulls fetch-json-cache, only needed to actually resolve an install\n const fromFilenameModule = _require('node-filename-to-dist-paths');\n const fromFilename = fromFilenameModule.default || fromFilenameModule;\n const distPath = fromFilename(filename, version);\n if (!distPath) {\n callback(new Error('Not found'));\n return;\n }\n const ext = path.extname(distPath);\n\n if (filename === 'src') return installSource(distPath, dest, options, callback);\n if (ext === '.exe') return installExe(distPath, dest, options, callback);\n if (EXTENSIONS_COMPRESSED.indexOf(ext) >= 0) {\n return installCompressed(distPath, dest, options, callback);\n }\n callback(new Error(`Unable to install ${version} distPath: ${distPath}`));\n}\n"],"names":["Module","path","EXTENSIONS_COMPRESSED","installCompressed","installExe","installSource","_require","require","createRequire","url","installFilename","filename","version","dest","options","callback","fromFilenameModule","fromFilename","default","distPath","Error","ext","extname","indexOf"],"mappings":"AAAA,OAAOA,YAAY,SAAS;AAC5B,OAAOC,UAAU,OAAO;AACxB,SAASC,qBAAqB,QAAQ,kBAAkB;AAExD,OAAOC,uBAAuB,yBAAyB;AACvD,OAAOC,gBAAgB,kBAAkB;AACzC,OAAOC,mBAAmB,2BAA2B;AAErD,MAAMC,WAAW,OAAOC,YAAY,cAAcP,OAAOQ,aAAa,CAAC,YAAYC,GAAG,IAAIF;AAE1F,eAAe,SAASG,gBAAgBC,QAAgB,EAAEC,OAAe,EAAEC,IAAY,EAAEC,OAAuB,EAAEC,QAA0B;IAC1I,2GAA2G;IAC3G,MAAMC,qBAAqBV,SAAS;IACpC,MAAMW,eAAeD,mBAAmBE,OAAO,IAAIF;IACnD,MAAMG,WAAWF,aAAaN,UAAUC;IACxC,IAAI,CAACO,UAAU;QACbJ,SAAS,IAAIK,MAAM;QACnB;IACF;IACA,MAAMC,MAAMpB,KAAKqB,OAAO,CAACH;IAEzB,IAAIR,aAAa,OAAO,OAAON,cAAcc,UAAUN,MAAMC,SAASC;IACtE,IAAIM,QAAQ,QAAQ,OAAOjB,WAAWe,UAAUN,MAAMC,SAASC;IAC/D,IAAIb,sBAAsBqB,OAAO,CAACF,QAAQ,GAAG;QAC3C,OAAOlB,kBAAkBgB,UAAUN,MAAMC,SAASC;IACpD;IACAA,SAAS,IAAIK,MAAM,CAAC,kBAAkB,EAAER,QAAQ,WAAW,EAAEO,UAAU;AACzE"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installFilename.ts"],"sourcesContent":["import Module from 'module';\nimport path from 'path';\nimport { EXTENSIONS_COMPRESSED } from '../constants.ts';\nimport type { ChecksumCallback, ResolvedInstallOptions } from '../types.ts';\nimport installCompressed from './installCompressed.ts';\nimport installExe from './installExe.ts';\nimport installSource from './installSource/index.ts';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\nexport default function installFilename(filename: string, version: string, dest: string, options: ResolvedInstallOptions, callback: ChecksumCallback): void {\n // deferred: node-filename-to-dist-paths pulls fetch-json-cache, only needed to actually resolve an install\n const fromFilenameModule = _require('node-filename-to-dist-paths');\n const fromFilename = fromFilenameModule.default || fromFilenameModule;\n const distPath = fromFilename(filename, version);\n if (!distPath) {\n callback(new Error('Not found'));\n return;\n }\n const ext = path.extname(distPath);\n\n if (filename === 'src') return installSource(distPath, dest, options, callback);\n if (ext === '.exe') return installExe(distPath, dest, options, callback);\n if (EXTENSIONS_COMPRESSED.indexOf(ext) >= 0) {\n return installCompressed(distPath, dest, options, callback);\n }\n callback(new Error(`Unable to install ${version} distPath: ${distPath}`));\n}\n"],"names":["Module","path","EXTENSIONS_COMPRESSED","installCompressed","installExe","installSource","_require","require","createRequire","url","installFilename","filename","version","dest","options","callback","fromFilenameModule","fromFilename","default","distPath","Error","ext","extname","indexOf"],"mappings":"AAAA,OAAOA,YAAY,SAAS;AAC5B,OAAOC,UAAU,OAAO;AACxB,SAASC,qBAAqB,QAAQ,kBAAkB;AAExD,OAAOC,uBAAuB,yBAAyB;AACvD,OAAOC,gBAAgB,kBAAkB;AACzC,OAAOC,mBAAmB,2BAA2B;AAErD,MAAMC,WAAW,OAAOC,YAAY,cAAcP,OAAOQ,aAAa,CAAC,YAAYC,GAAG,IAAIF;AAE1F,eAAe,SAASG,gBAAgBC,QAAgB,EAAEC,OAAe,EAAEC,IAAY,EAAEC,OAA+B,EAAEC,QAA0B;IAClJ,2GAA2G;IAC3G,MAAMC,qBAAqBV,SAAS;IACpC,MAAMW,eAAeD,mBAAmBE,OAAO,IAAIF;IACnD,MAAMG,WAAWF,aAAaN,UAAUC;IACxC,IAAI,CAACO,UAAU;QACbJ,SAAS,IAAIK,MAAM;QACnB;IACF;IACA,MAAMC,MAAMpB,KAAKqB,OAAO,CAACH;IAEzB,IAAIR,aAAa,OAAO,OAAON,cAAcc,UAAUN,MAAMC,SAASC;IACtE,IAAIM,QAAQ,QAAQ,OAAOjB,WAAWe,UAAUN,MAAMC,SAASC;IAC/D,IAAIb,sBAAsBqB,OAAO,CAACF,QAAQ,GAAG;QAC3C,OAAOlB,kBAAkBgB,UAAUN,MAAMC,SAASC;IACpD;IACAA,SAAS,IAAIK,MAAM,CAAC,kBAAkB,EAAER,QAAQ,WAAW,EAAEO,UAAU;AACzE"}
@@ -1,2 +1,2 @@
1
- import type { InstallOptions, NoParamCallback } from '../../types.js';
2
- export default function InstallSource(distPath: string, dest: string, options: InstallOptions, callback: NoParamCallback): void;
1
+ import type { NoParamCallback, ResolvedInstallOptions } from '../../types.js';
2
+ export default function InstallSource(distPath: string, dest: string, options: ResolvedInstallOptions, callback: NoParamCallback): void;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installSource/index.ts"],"sourcesContent":["import { safeRm } from 'fs-remove-compat';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport tempSuffix from 'temp-suffix';\n\nimport { NODE_DIST_BASE_URL } from '../../constants.ts';\nimport conditionalCache from '../../lib/conditionalCache.ts';\nimport extract from '../../lib/extract.ts';\nimport type { InstallOptions, NoParamCallback } from '../../types.ts';\nimport validateDownload from '../validateDownload.ts';\nimport buildPosix from './buildPosix.ts';\nimport buildWin32 from './buildWin32.ts';\n\nexport default function InstallSource(distPath: string, dest: string, options: InstallOptions, callback: NoParamCallback): void {\n const platform = options.platform;\n const build = platform === 'win32' ? buildWin32 : buildPosix;\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n // Use temp build path to avoid race conditions with parallel builds\n const tempBuildPath = tempSuffix(path.join(options.buildPath!, path.basename(distPath)));\n const cachePath = path.join(options.cachePath!, path.basename(downloadPath));\n\n const queue = new Queue(1);\n queue.defer((cb) => conditionalCache(downloadPath, cachePath, options, (err) => cb(err)));\n queue.defer((cb) => validateDownload(distPath, cachePath, (err) => cb(err)));\n queue.defer((cb) => extract(cachePath, tempBuildPath, (err) => cb(err)));\n queue.defer((cb) => build(tempBuildPath, dest, options, (err) => cb(err)));\n queue.await((err) => {\n // Always clean up temp build directory\n safeRm(tempBuildPath, () => callback(err));\n });\n}\n"],"names":["safeRm","path","Queue","tempSuffix","NODE_DIST_BASE_URL","conditionalCache","extract","validateDownload","buildPosix","buildWin32","InstallSource","distPath","dest","options","callback","platform","build","downloadPath","tempBuildPath","join","buildPath","basename","cachePath","queue","defer","cb","err","await"],"mappings":"AAAA,SAASA,MAAM,QAAQ,mBAAmB;AAC1C,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAC7B,OAAOC,gBAAgB,cAAc;AAErC,SAASC,kBAAkB,QAAQ,qBAAqB;AACxD,OAAOC,sBAAsB,gCAAgC;AAC7D,OAAOC,aAAa,uBAAuB;AAE3C,OAAOC,sBAAsB,yBAAyB;AACtD,OAAOC,gBAAgB,kBAAkB;AACzC,OAAOC,gBAAgB,kBAAkB;AAEzC,eAAe,SAASC,cAAcC,QAAgB,EAAEC,IAAY,EAAEC,OAAuB,EAAEC,QAAyB;IACtH,MAAMC,WAAWF,QAAQE,QAAQ;IACjC,MAAMC,QAAQD,aAAa,UAAUN,aAAaD;IAClD,MAAMS,eAAe,GAAGb,mBAAmB,CAAC,EAAEO,UAAU;IACxD,oEAAoE;IACpE,MAAMO,gBAAgBf,WAAWF,KAAKkB,IAAI,CAACN,QAAQO,SAAS,EAAGnB,KAAKoB,QAAQ,CAACV;IAC7E,MAAMW,YAAYrB,KAAKkB,IAAI,CAACN,QAAQS,SAAS,EAAGrB,KAAKoB,QAAQ,CAACJ;IAE9D,MAAMM,QAAQ,IAAIrB,MAAM;IACxBqB,MAAMC,KAAK,CAAC,CAACC,KAAOpB,iBAAiBY,cAAcK,WAAWT,SAAS,CAACa,MAAQD,GAAGC;IACnFH,MAAMC,KAAK,CAAC,CAACC,KAAOlB,iBAAiBI,UAAUW,WAAW,CAACI,MAAQD,GAAGC;IACtEH,MAAMC,KAAK,CAAC,CAACC,KAAOnB,QAAQgB,WAAWJ,eAAe,CAACQ,MAAQD,GAAGC;IAClEH,MAAMC,KAAK,CAAC,CAACC,KAAOT,MAAME,eAAeN,MAAMC,SAAS,CAACa,MAAQD,GAAGC;IACpEH,MAAMI,KAAK,CAAC,CAACD;QACX,uCAAuC;QACvC1B,OAAOkB,eAAe,IAAMJ,SAASY;IACvC;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installSource/index.ts"],"sourcesContent":["import { safeRm } from 'fs-remove-compat';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport tempSuffix from 'temp-suffix';\n\nimport { NODE_DIST_BASE_URL } from '../../constants.ts';\nimport conditionalCache from '../../lib/conditionalCache.ts';\nimport extract from '../../lib/extract.ts';\nimport type { NoParamCallback, ResolvedInstallOptions } from '../../types.ts';\nimport validateDownload from '../validateDownload.ts';\nimport buildPosix from './buildPosix.ts';\nimport buildWin32 from './buildWin32.ts';\n\nexport default function InstallSource(distPath: string, dest: string, options: ResolvedInstallOptions, callback: NoParamCallback): void {\n const platform = options.platform;\n const build = platform === 'win32' ? buildWin32 : buildPosix;\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n // Use temp build path to avoid race conditions with parallel builds\n const tempBuildPath = tempSuffix(path.join(options.buildPath, path.basename(distPath)));\n const cachePath = path.join(options.cachePath, path.basename(downloadPath));\n\n const queue = new Queue(1);\n queue.defer((cb) => conditionalCache(downloadPath, cachePath, options, (err) => cb(err)));\n queue.defer((cb) => validateDownload(distPath, cachePath, (err) => cb(err)));\n queue.defer((cb) => extract(cachePath, tempBuildPath, (err) => cb(err)));\n queue.defer((cb) => build(tempBuildPath, dest, options, (err) => cb(err)));\n queue.await((err) => {\n // Always clean up temp build directory\n safeRm(tempBuildPath, () => callback(err));\n });\n}\n"],"names":["safeRm","path","Queue","tempSuffix","NODE_DIST_BASE_URL","conditionalCache","extract","validateDownload","buildPosix","buildWin32","InstallSource","distPath","dest","options","callback","platform","build","downloadPath","tempBuildPath","join","buildPath","basename","cachePath","queue","defer","cb","err","await"],"mappings":"AAAA,SAASA,MAAM,QAAQ,mBAAmB;AAC1C,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAC7B,OAAOC,gBAAgB,cAAc;AAErC,SAASC,kBAAkB,QAAQ,qBAAqB;AACxD,OAAOC,sBAAsB,gCAAgC;AAC7D,OAAOC,aAAa,uBAAuB;AAE3C,OAAOC,sBAAsB,yBAAyB;AACtD,OAAOC,gBAAgB,kBAAkB;AACzC,OAAOC,gBAAgB,kBAAkB;AAEzC,eAAe,SAASC,cAAcC,QAAgB,EAAEC,IAAY,EAAEC,OAA+B,EAAEC,QAAyB;IAC9H,MAAMC,WAAWF,QAAQE,QAAQ;IACjC,MAAMC,QAAQD,aAAa,UAAUN,aAAaD;IAClD,MAAMS,eAAe,GAAGb,mBAAmB,CAAC,EAAEO,UAAU;IACxD,oEAAoE;IACpE,MAAMO,gBAAgBf,WAAWF,KAAKkB,IAAI,CAACN,QAAQO,SAAS,EAAEnB,KAAKoB,QAAQ,CAACV;IAC5E,MAAMW,YAAYrB,KAAKkB,IAAI,CAACN,QAAQS,SAAS,EAAErB,KAAKoB,QAAQ,CAACJ;IAE7D,MAAMM,QAAQ,IAAIrB,MAAM;IACxBqB,MAAMC,KAAK,CAAC,CAACC,KAAOpB,iBAAiBY,cAAcK,WAAWT,SAAS,CAACa,MAAQD,GAAGC;IACnFH,MAAMC,KAAK,CAAC,CAACC,KAAOlB,iBAAiBI,UAAUW,WAAW,CAACI,MAAQD,GAAGC;IACtEH,MAAMC,KAAK,CAAC,CAACC,KAAOnB,QAAQgB,WAAWJ,eAAe,CAACQ,MAAQD,GAAGC;IAClEH,MAAMC,KAAK,CAAC,CAACC,KAAOT,MAAME,eAAeN,MAAMC,SAAS,CAACa,MAAQD,GAAGC;IACpEH,MAAMI,KAAK,CAAC,CAACD;QACX,uCAAuC;QACvC1B,OAAOkB,eAAe,IAAMJ,SAASY;IACvC;AACF"}
@@ -4,12 +4,11 @@ import path from 'path';
4
4
  import Queue from 'queue-cb';
5
5
  const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;
6
6
  export default function extract(src, dest, options, callback) {
7
- callback = typeof options === 'function' ? options : callback;
8
- options = typeof options === 'function' ? {} : options;
7
+ const done = typeof options === 'function' ? options : callback;
9
8
  const extractOptions = {
10
9
  strip: 1,
11
10
  time: 1000,
12
- ...options
11
+ ...typeof options === 'function' ? {} : options
13
12
  };
14
13
  // deferred: fast-extract pulls tar/zip/7z/xz/bzip2 decompressors, only needed when an archive is actually extracted
15
14
  const fastExtractModule = _require('fast-extract');
@@ -17,5 +16,5 @@ export default function extract(src, dest, options, callback) {
17
16
  const queue = new Queue(1);
18
17
  queue.defer((cb)=>mkdirp(path.dirname(dest), (err)=>cb(err)));
19
18
  queue.defer(fastExtract.bind(null, src, dest, extractOptions));
20
- queue.await(callback);
19
+ queue.await(done);
21
20
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/extract.ts"],"sourcesContent":["import mkdirp from 'mkdirp-classic';\nimport Module from 'module';\nimport path from 'path';\nimport Queue from 'queue-cb';\n\nimport type { NoParamCallback } from '../types.ts';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\ninterface ExtractOptions {\n strip?: number;\n time?: number;\n}\n\nexport default function extract(src: string, dest: string, options: ExtractOptions | NoParamCallback, callback?: NoParamCallback): void {\n callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : options;\n\n const extractOptions = { strip: 1, time: 1000, ...options };\n // deferred: fast-extract pulls tar/zip/7z/xz/bzip2 decompressors, only needed when an archive is actually extracted\n const fastExtractModule = _require('fast-extract');\n const fastExtract = fastExtractModule.default || fastExtractModule;\n const queue = new Queue(1);\n queue.defer((cb) => mkdirp(path.dirname(dest), (err) => cb(err)));\n queue.defer(fastExtract.bind(null, src, dest, extractOptions));\n queue.await(callback!);\n}\n"],"names":["mkdirp","Module","path","Queue","_require","require","createRequire","url","extract","src","dest","options","callback","extractOptions","strip","time","fastExtractModule","fastExtract","default","queue","defer","cb","dirname","err","bind","await"],"mappings":"AAAA,OAAOA,YAAY,iBAAiB;AACpC,OAAOC,YAAY,SAAS;AAC5B,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAI7B,MAAMC,WAAW,OAAOC,YAAY,cAAcJ,OAAOK,aAAa,CAAC,YAAYC,GAAG,IAAIF;AAO1F,eAAe,SAASG,QAAQC,GAAW,EAAEC,IAAY,EAAEC,OAAyC,EAAEC,QAA0B;IAC9HA,WAAW,OAAOD,YAAY,aAAaA,UAAUC;IACrDD,UAAU,OAAOA,YAAY,aAAa,CAAC,IAAIA;IAE/C,MAAME,iBAAiB;QAAEC,OAAO;QAAGC,MAAM;QAAM,GAAGJ,OAAO;IAAC;IAC1D,oHAAoH;IACpH,MAAMK,oBAAoBZ,SAAS;IACnC,MAAMa,cAAcD,kBAAkBE,OAAO,IAAIF;IACjD,MAAMG,QAAQ,IAAIhB,MAAM;IACxBgB,MAAMC,KAAK,CAAC,CAACC,KAAOrB,OAAOE,KAAKoB,OAAO,CAACZ,OAAO,CAACa,MAAQF,GAAGE;IAC3DJ,MAAMC,KAAK,CAACH,YAAYO,IAAI,CAAC,MAAMf,KAAKC,MAAMG;IAC9CM,MAAMM,KAAK,CAACb;AACd"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/extract.ts"],"sourcesContent":["import mkdirp from 'mkdirp-classic';\nimport Module from 'module';\nimport path from 'path';\nimport Queue from 'queue-cb';\n\nimport type { NoParamCallback } from '../types.ts';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\ninterface ExtractOptions {\n strip?: number;\n time?: number;\n}\n\nexport default function extract(src: string, dest: string, options: ExtractOptions | NoParamCallback, callback?: NoParamCallback): void {\n const done = (typeof options === 'function' ? options : callback) as NoParamCallback;\n const extractOptions = { strip: 1, time: 1000, ...(typeof options === 'function' ? {} : options) };\n // deferred: fast-extract pulls tar/zip/7z/xz/bzip2 decompressors, only needed when an archive is actually extracted\n const fastExtractModule = _require('fast-extract');\n const fastExtract = fastExtractModule.default || fastExtractModule;\n const queue = new Queue(1);\n queue.defer((cb) => mkdirp(path.dirname(dest), (err) => cb(err)));\n queue.defer(fastExtract.bind(null, src, dest, extractOptions));\n queue.await(done);\n}\n"],"names":["mkdirp","Module","path","Queue","_require","require","createRequire","url","extract","src","dest","options","callback","done","extractOptions","strip","time","fastExtractModule","fastExtract","default","queue","defer","cb","dirname","err","bind","await"],"mappings":"AAAA,OAAOA,YAAY,iBAAiB;AACpC,OAAOC,YAAY,SAAS;AAC5B,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAI7B,MAAMC,WAAW,OAAOC,YAAY,cAAcJ,OAAOK,aAAa,CAAC,YAAYC,GAAG,IAAIF;AAO1F,eAAe,SAASG,QAAQC,GAAW,EAAEC,IAAY,EAAEC,OAAyC,EAAEC,QAA0B;IAC9H,MAAMC,OAAQ,OAAOF,YAAY,aAAaA,UAAUC;IACxD,MAAME,iBAAiB;QAAEC,OAAO;QAAGC,MAAM;QAAM,GAAI,OAAOL,YAAY,aAAa,CAAC,IAAIA,OAAO;IAAE;IACjG,oHAAoH;IACpH,MAAMM,oBAAoBb,SAAS;IACnC,MAAMc,cAAcD,kBAAkBE,OAAO,IAAIF;IACjD,MAAMG,QAAQ,IAAIjB,MAAM;IACxBiB,MAAMC,KAAK,CAAC,CAACC,KAAOtB,OAAOE,KAAKqB,OAAO,CAACb,OAAO,CAACc,MAAQF,GAAGE;IAC3DJ,MAAMC,KAAK,CAACH,YAAYO,IAAI,CAAC,MAAMhB,KAAKC,MAAMI;IAC9CM,MAAMM,KAAK,CAACb;AACd"}
@@ -31,6 +31,7 @@ export interface InstallOptions extends VersionOptions {
31
31
  arch?: NodeJS.Architecture;
32
32
  cachePath?: string;
33
33
  }
34
+ export type ResolvedInstallOptions = InstallOptions & StorageLocations;
34
35
  export interface Target {
35
36
  platform: NodeJS.Platform;
36
37
  arch: NodeJS.Architecture;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/types.ts"],"sourcesContent":["import type { VersionOptions } from 'node-resolve-versions';\n\nexport interface File {\n filename: string;\n starting: string;\n}\n\nexport interface FilePath {\n src: string;\n dest: string;\n optional?: boolean;\n}\n\nexport type StorageLocations = {\n cachePath: string;\n buildPath: string;\n installPath: string;\n};\n\nexport type InstallResult = {\n version: string;\n installPath: string;\n execPath: string;\n platform: NodeJS.Platform;\n};\n\nexport interface InstallOptions extends VersionOptions {\n type?: string;\n compression?: boolean;\n installPath?: string;\n buildPath?: string;\n name?: string;\n storagePath?: string;\n filename?: string;\n platform?: NodeJS.Platform;\n arch?: NodeJS.Architecture;\n cachePath?: string;\n}\n\nexport interface Target {\n platform: NodeJS.Platform;\n arch: NodeJS.Architecture;\n}\n\nexport type ChecksumResult = {\n actual: string;\n expected: string;\n match: boolean;\n};\n\nexport type InstallCallback = (err?: Error | null, result?: InstallResult) => void;\nexport type NoParamCallback = (err?: Error | null) => void;\nexport type ChecksumCallback = (err?: Error | null, checksum?: ChecksumResult) => void;\n"],"names":[],"mappings":"AAoDA,WAAuF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/types.ts"],"sourcesContent":["import type { VersionOptions } from 'node-resolve-versions';\n\nexport interface File {\n filename: string;\n starting: string;\n}\n\nexport interface FilePath {\n src: string;\n dest: string;\n optional?: boolean;\n}\n\nexport type StorageLocations = {\n cachePath: string;\n buildPath: string;\n installPath: string;\n};\n\nexport type InstallResult = {\n version: string;\n installPath: string;\n execPath: string;\n platform: NodeJS.Platform;\n};\n\nexport interface InstallOptions extends VersionOptions {\n type?: string;\n compression?: boolean;\n installPath?: string;\n buildPath?: string;\n name?: string;\n storagePath?: string;\n filename?: string;\n platform?: NodeJS.Platform;\n arch?: NodeJS.Architecture;\n cachePath?: string;\n}\n\n// InstallOptions after createStoragePaths/DEFAULT_STORAGE_PATHS have been merged in.\nexport type ResolvedInstallOptions = InstallOptions & StorageLocations;\n\nexport interface Target {\n platform: NodeJS.Platform;\n arch: NodeJS.Architecture;\n}\n\nexport type ChecksumResult = {\n actual: string;\n expected: string;\n match: boolean;\n};\n\nexport type InstallCallback = (err?: Error | null, result?: InstallResult) => void;\nexport type NoParamCallback = (err?: Error | null) => void;\nexport type ChecksumCallback = (err?: Error | null, checksum?: ChecksumResult) => void;\n"],"names":[],"mappings":"AAuDA,WAAuF"}
@@ -26,13 +26,17 @@ function getVersions(versionExpression, options, callback) {
26
26
  resolveVersions(versionExpression, options, (err, result)=>callback(err, result));
27
27
  }
28
28
  export default function install(versionExpression, options, callback) {
29
+ var _options_cachePath, _options_buildPath, _options_installPath;
29
30
  const storagePaths = options.storagePath ? createStoragePaths(options.storagePath) : DEFAULT_STORAGE_PATHS;
30
- options = {
31
- ...storagePaths,
31
+ // ?? not spread order: an explicitly-undefined path in the caller's options would overwrite the default
32
+ const resolved = {
32
33
  ...options,
33
- ...getTarget(options)
34
+ ...getTarget(options),
35
+ cachePath: (_options_cachePath = options.cachePath) !== null && _options_cachePath !== void 0 ? _options_cachePath : storagePaths.cachePath,
36
+ buildPath: (_options_buildPath = options.buildPath) !== null && _options_buildPath !== void 0 ? _options_buildPath : storagePaths.buildPath,
37
+ installPath: (_options_installPath = options.installPath) !== null && _options_installPath !== void 0 ? _options_installPath : storagePaths.installPath
34
38
  };
35
- getVersions(versionExpression, options, (err, versions)=>{
39
+ getVersions(versionExpression, resolved, (err, versions)=>{
36
40
  if (err) return callback(err);
37
41
  if (!versions || !versions.length) {
38
42
  callback(new Error(`Could not resolve versions for: ${versionExpression}`));
@@ -43,24 +47,24 @@ export default function install(versionExpression, options, callback) {
43
47
  return;
44
48
  }
45
49
  const version = versions[0];
46
- const result = createResult(options, version);
50
+ const result = createResult(resolved, version);
47
51
  // Fast path: with atomic installs, folder exists = complete installation
48
52
  fs.stat(result.installPath, (err)=>{
49
53
  if (!err) return callback(undefined, result);
50
54
  // Folder doesn't exist - do atomic install with temp folder
51
55
  const tempPath = tempSuffix(result.installPath);
52
56
  const queue = new Queue(1);
53
- queue.defer((cb)=>mkdirp(options.cachePath, (err)=>cb(err)));
57
+ queue.defer((cb)=>mkdirp(resolved.cachePath, (err)=>cb(err)));
54
58
  queue.defer(ensureDestinationParent.bind(null, tempPath));
55
59
  // Install node to temp folder
56
- queue.defer(installNode.bind(null, version, tempPath, options));
60
+ queue.defer(installNode.bind(null, version, tempPath, resolved));
57
61
  // Check and install npm to temp folder
58
62
  // Skip npm download only if bundled npm is modern (>= 3)
59
63
  queue.defer((cb)=>{
60
- checkMissing(tempPath, options, (err, npmMissing)=>{
64
+ checkMissing(tempPath, resolved, (err, npmMissing)=>{
61
65
  if (err) return cb(err);
62
66
  // npm not bundled with node - download it
63
- if (~(npmMissing || []).indexOf('npm')) return installNPM(version, tempPath, options, cb);
67
+ if (~(npmMissing || []).indexOf('npm')) return installNPM(version, tempPath, resolved, cb);
64
68
  // npm is present (bundled with node) - keep it unless the dist index positively says it is ancient (<3)
65
69
  // deferred: node-filename-to-dist-paths pulls fetch-json-cache, only needed to check a bundled npm's age
66
70
  const { getDistAsync } = _require('node-filename-to-dist-paths');
@@ -71,7 +75,7 @@ export default function install(versionExpression, options, callback) {
71
75
  const platform = options.platform;
72
76
  const libPath = platform === 'win32' ? tempPath : path.join(tempPath, 'lib');
73
77
  const npmPath = path.join(libPath, 'node_modules', 'npm');
74
- safeRm(npmPath, ()=>installNPM(version, tempPath, options, cb));
78
+ safeRm(npmPath, ()=>installNPM(version, tempPath, resolved, cb));
75
79
  });
76
80
  });
77
81
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/workers/install.ts"],"sourcesContent":["import fs from 'fs';\nimport { safeRm } from 'fs-remove-compat';\nimport isVersion from 'is-version';\nimport mkdirp from 'mkdirp-classic';\nimport Module from 'module';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport tempSuffix from 'temp-suffix';\n\nimport { DEFAULT_STORAGE_PATHS } from '../constants.ts';\n\nimport createResult from '../createResult.ts';\nimport createStoragePaths from '../createStoragePaths.ts';\nimport installNode from '../installNode/index.ts';\n\nimport installNPM from '../installNPM/index.ts';\nimport checkMissing from '../lib/checkMissing.ts';\nimport ensureDestinationParent from '../lib/ensureDestinationParent.ts';\nimport getTarget from '../lib/getTarget.ts';\n\nimport type { InstallCallback, InstallOptions } from '../types.ts';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\ntype GetVersionsCallback = (error?: Error | null, results?: string[]) => void;\nfunction getVersions(versionExpression: string, options: InstallOptions, callback: GetVersionsCallback) {\n // short circuit\n if (isVersion(versionExpression)) return callback(undefined, [versionExpression]);\n // deferred: node-resolve-versions pulls node-semvers/fetch-json-cache, only needed for a non-literal version expression\n const resolveVersionsModule = _require('node-resolve-versions');\n const resolveVersions = resolveVersionsModule.default || resolveVersionsModule;\n resolveVersions(versionExpression, options, (err?: Error | null, result?: string[] | unknown[]) => callback(err, result as string[] | undefined));\n}\n\nexport default function install(versionExpression: string, options: InstallOptions, callback: InstallCallback): void {\n const storagePaths = options.storagePath ? createStoragePaths(options.storagePath) : DEFAULT_STORAGE_PATHS;\n options = { ...storagePaths, ...options, ...getTarget(options) };\n getVersions(versionExpression, options, (err?: Error | null, versions?: string[]): void => {\n if (err) return callback(err);\n if (!versions || !versions.length) {\n callback(new Error(`Could not resolve versions for: ${versionExpression}`));\n return;\n }\n if (versions.length !== 1) {\n callback(new Error(`Version ${versionExpression} resolved to multiple versions: ${versions.map((x) => x)}. Expecting one.`));\n return;\n }\n\n const version = versions[0];\n const result = createResult(options, version);\n\n // Fast path: with atomic installs, folder exists = complete installation\n fs.stat(result.installPath, (err) => {\n if (!err) return callback(undefined, result);\n\n // Folder doesn't exist - do atomic install with temp folder\n const tempPath = tempSuffix(result.installPath);\n\n const queue = new Queue(1);\n queue.defer((cb) => mkdirp(options.cachePath!, (err) => cb(err)));\n queue.defer(ensureDestinationParent.bind(null, tempPath));\n\n // Install node to temp folder\n queue.defer(installNode.bind(null, version, tempPath, options));\n\n // Check and install npm to temp folder\n // Skip npm download only if bundled npm is modern (>= 3)\n queue.defer((cb) => {\n checkMissing(tempPath, options, (err, npmMissing): void => {\n if (err) return cb(err);\n // npm not bundled with node - download it\n if (~(npmMissing || []).indexOf('npm')) return installNPM(version, tempPath, options, cb);\n\n // npm is present (bundled with node) - keep it unless the dist index positively says it is ancient (<3)\n // deferred: node-filename-to-dist-paths pulls fetch-json-cache, only needed to check a bundled npm's age\n const { getDistAsync } = _require('node-filename-to-dist-paths');\n getDistAsync(version, (_err: Error | null, dist: { npm?: string }) => {\n const bundledNpmIsAncient = dist && dist.npm && +dist.npm.split('.')[0] < 3;\n if (!bundledNpmIsAncient) return cb(); // unknown version keeps the bundled npm\n\n // old npm (<3) is buggy - delete it so installNPM can override\n const platform = options.platform;\n const libPath = platform === 'win32' ? tempPath : path.join(tempPath, 'lib');\n const npmPath = path.join(libPath, 'node_modules', 'npm');\n safeRm(npmPath, () => installNPM(version, tempPath, options, cb));\n });\n });\n });\n\n // Atomic rename: move temp folder to final destination\n queue.defer((cb) => {\n fs.rename(tempPath, result.installPath, (err) => {\n if (!err) return cb();\n // Race condition: another process may have already created dest\n if (err.code === 'EEXIST' || err.code === 'ENOTEMPTY' || err.code === 'EPERM') {\n // Another process won the race - clean up temp and succeed\n safeRm(tempPath, () => cb());\n return;\n }\n cb(err);\n });\n });\n\n queue.await((err) => {\n // Clean up temp folder on error\n if (err) return safeRm(tempPath, () => callback(err));\n\n callback(undefined, result);\n });\n });\n });\n}\n"],"names":["fs","safeRm","isVersion","mkdirp","Module","path","Queue","tempSuffix","DEFAULT_STORAGE_PATHS","createResult","createStoragePaths","installNode","installNPM","checkMissing","ensureDestinationParent","getTarget","_require","require","createRequire","url","getVersions","versionExpression","options","callback","undefined","resolveVersionsModule","resolveVersions","default","err","result","install","storagePaths","storagePath","versions","length","Error","map","x","version","stat","installPath","tempPath","queue","defer","cb","cachePath","bind","npmMissing","indexOf","getDistAsync","_err","dist","bundledNpmIsAncient","npm","split","platform","libPath","join","npmPath","rename","code","await"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/workers/install.ts"],"sourcesContent":["import fs from 'fs';\nimport { safeRm } from 'fs-remove-compat';\nimport isVersion from 'is-version';\nimport mkdirp from 'mkdirp-classic';\nimport Module from 'module';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport tempSuffix from 'temp-suffix';\n\nimport { DEFAULT_STORAGE_PATHS } from '../constants.ts';\n\nimport createResult from '../createResult.ts';\nimport createStoragePaths from '../createStoragePaths.ts';\nimport installNode from '../installNode/index.ts';\n\nimport installNPM from '../installNPM/index.ts';\nimport checkMissing from '../lib/checkMissing.ts';\nimport ensureDestinationParent from '../lib/ensureDestinationParent.ts';\nimport getTarget from '../lib/getTarget.ts';\n\nimport type { InstallCallback, InstallOptions, ResolvedInstallOptions } from '../types.ts';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\ntype GetVersionsCallback = (error?: Error | null, results?: string[]) => void;\nfunction getVersions(versionExpression: string, options: InstallOptions, callback: GetVersionsCallback) {\n // short circuit\n if (isVersion(versionExpression)) return callback(undefined, [versionExpression]);\n // deferred: node-resolve-versions pulls node-semvers/fetch-json-cache, only needed for a non-literal version expression\n const resolveVersionsModule = _require('node-resolve-versions');\n const resolveVersions = resolveVersionsModule.default || resolveVersionsModule;\n resolveVersions(versionExpression, options, (err?: Error | null, result?: string[] | unknown[]) => callback(err, result as string[] | undefined));\n}\n\nexport default function install(versionExpression: string, options: InstallOptions, callback: InstallCallback): void {\n const storagePaths = options.storagePath ? createStoragePaths(options.storagePath) : DEFAULT_STORAGE_PATHS;\n // ?? not spread order: an explicitly-undefined path in the caller's options would overwrite the default\n const resolved: ResolvedInstallOptions = {\n ...options,\n ...getTarget(options),\n cachePath: options.cachePath ?? storagePaths.cachePath,\n buildPath: options.buildPath ?? storagePaths.buildPath,\n installPath: options.installPath ?? storagePaths.installPath,\n };\n getVersions(versionExpression, resolved, (err?: Error | null, versions?: string[]): void => {\n if (err) return callback(err);\n if (!versions || !versions.length) {\n callback(new Error(`Could not resolve versions for: ${versionExpression}`));\n return;\n }\n if (versions.length !== 1) {\n callback(new Error(`Version ${versionExpression} resolved to multiple versions: ${versions.map((x) => x)}. Expecting one.`));\n return;\n }\n\n const version = versions[0];\n const result = createResult(resolved, version);\n\n // Fast path: with atomic installs, folder exists = complete installation\n fs.stat(result.installPath, (err) => {\n if (!err) return callback(undefined, result);\n\n // Folder doesn't exist - do atomic install with temp folder\n const tempPath = tempSuffix(result.installPath);\n\n const queue = new Queue(1);\n queue.defer((cb) => mkdirp(resolved.cachePath, (err) => cb(err)));\n queue.defer(ensureDestinationParent.bind(null, tempPath));\n\n // Install node to temp folder\n queue.defer(installNode.bind(null, version, tempPath, resolved));\n\n // Check and install npm to temp folder\n // Skip npm download only if bundled npm is modern (>= 3)\n queue.defer((cb) => {\n checkMissing(tempPath, resolved, (err, npmMissing): void => {\n if (err) return cb(err);\n // npm not bundled with node - download it\n if (~(npmMissing || []).indexOf('npm')) return installNPM(version, tempPath, resolved, cb);\n\n // npm is present (bundled with node) - keep it unless the dist index positively says it is ancient (<3)\n // deferred: node-filename-to-dist-paths pulls fetch-json-cache, only needed to check a bundled npm's age\n const { getDistAsync } = _require('node-filename-to-dist-paths');\n getDistAsync(version, (_err: Error | null, dist: { npm?: string }) => {\n const bundledNpmIsAncient = dist && dist.npm && +dist.npm.split('.')[0] < 3;\n if (!bundledNpmIsAncient) return cb(); // unknown version keeps the bundled npm\n\n // old npm (<3) is buggy - delete it so installNPM can override\n const platform = options.platform;\n const libPath = platform === 'win32' ? tempPath : path.join(tempPath, 'lib');\n const npmPath = path.join(libPath, 'node_modules', 'npm');\n safeRm(npmPath, () => installNPM(version, tempPath, resolved, cb));\n });\n });\n });\n\n // Atomic rename: move temp folder to final destination\n queue.defer((cb) => {\n fs.rename(tempPath, result.installPath, (err) => {\n if (!err) return cb();\n // Race condition: another process may have already created dest\n if (err.code === 'EEXIST' || err.code === 'ENOTEMPTY' || err.code === 'EPERM') {\n // Another process won the race - clean up temp and succeed\n safeRm(tempPath, () => cb());\n return;\n }\n cb(err);\n });\n });\n\n queue.await((err) => {\n // Clean up temp folder on error\n if (err) return safeRm(tempPath, () => callback(err));\n\n callback(undefined, result);\n });\n });\n });\n}\n"],"names":["fs","safeRm","isVersion","mkdirp","Module","path","Queue","tempSuffix","DEFAULT_STORAGE_PATHS","createResult","createStoragePaths","installNode","installNPM","checkMissing","ensureDestinationParent","getTarget","_require","require","createRequire","url","getVersions","versionExpression","options","callback","undefined","resolveVersionsModule","resolveVersions","default","err","result","install","storagePaths","storagePath","resolved","cachePath","buildPath","installPath","versions","length","Error","map","x","version","stat","tempPath","queue","defer","cb","bind","npmMissing","indexOf","getDistAsync","_err","dist","bundledNpmIsAncient","npm","split","platform","libPath","join","npmPath","rename","code","await"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,OAAOC,eAAe,aAAa;AACnC,OAAOC,YAAY,iBAAiB;AACpC,OAAOC,YAAY,SAAS;AAC5B,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAC7B,OAAOC,gBAAgB,cAAc;AAErC,SAASC,qBAAqB,QAAQ,kBAAkB;AAExD,OAAOC,kBAAkB,qBAAqB;AAC9C,OAAOC,wBAAwB,2BAA2B;AAC1D,OAAOC,iBAAiB,0BAA0B;AAElD,OAAOC,gBAAgB,yBAAyB;AAChD,OAAOC,kBAAkB,yBAAyB;AAClD,OAAOC,6BAA6B,oCAAoC;AACxE,OAAOC,eAAe,sBAAsB;AAI5C,MAAMC,WAAW,OAAOC,YAAY,cAAcb,OAAOc,aAAa,CAAC,YAAYC,GAAG,IAAIF;AAG1F,SAASG,YAAYC,iBAAyB,EAAEC,OAAuB,EAAEC,QAA6B;IACpG,gBAAgB;IAChB,IAAIrB,UAAUmB,oBAAoB,OAAOE,SAASC,WAAW;QAACH;KAAkB;IAChF,wHAAwH;IACxH,MAAMI,wBAAwBT,SAAS;IACvC,MAAMU,kBAAkBD,sBAAsBE,OAAO,IAAIF;IACzDC,gBAAgBL,mBAAmBC,SAAS,CAACM,KAAoBC,SAAkCN,SAASK,KAAKC;AACnH;AAEA,eAAe,SAASC,QAAQT,iBAAyB,EAAEC,OAAuB,EAAEC,QAAyB;QAM9FD,oBACAA,oBACEA;IAPf,MAAMS,eAAeT,QAAQU,WAAW,GAAGtB,mBAAmBY,QAAQU,WAAW,IAAIxB;IACrF,wGAAwG;IACxG,MAAMyB,WAAmC;QACvC,GAAGX,OAAO;QACV,GAAGP,UAAUO,QAAQ;QACrBY,SAAS,GAAEZ,qBAAAA,QAAQY,SAAS,cAAjBZ,gCAAAA,qBAAqBS,aAAaG,SAAS;QACtDC,SAAS,GAAEb,qBAAAA,QAAQa,SAAS,cAAjBb,gCAAAA,qBAAqBS,aAAaI,SAAS;QACtDC,WAAW,GAAEd,uBAAAA,QAAQc,WAAW,cAAnBd,kCAAAA,uBAAuBS,aAAaK,WAAW;IAC9D;IACAhB,YAAYC,mBAAmBY,UAAU,CAACL,KAAoBS;QAC5D,IAAIT,KAAK,OAAOL,SAASK;QACzB,IAAI,CAACS,YAAY,CAACA,SAASC,MAAM,EAAE;YACjCf,SAAS,IAAIgB,MAAM,CAAC,gCAAgC,EAAElB,mBAAmB;YACzE;QACF;QACA,IAAIgB,SAASC,MAAM,KAAK,GAAG;YACzBf,SAAS,IAAIgB,MAAM,CAAC,QAAQ,EAAElB,kBAAkB,gCAAgC,EAAEgB,SAASG,GAAG,CAAC,CAACC,IAAMA,GAAG,gBAAgB,CAAC;YAC1H;QACF;QAEA,MAAMC,UAAUL,QAAQ,CAAC,EAAE;QAC3B,MAAMR,SAASpB,aAAawB,UAAUS;QAEtC,yEAAyE;QACzE1C,GAAG2C,IAAI,CAACd,OAAOO,WAAW,EAAE,CAACR;YAC3B,IAAI,CAACA,KAAK,OAAOL,SAASC,WAAWK;YAErC,4DAA4D;YAC5D,MAAMe,WAAWrC,WAAWsB,OAAOO,WAAW;YAE9C,MAAMS,QAAQ,IAAIvC,MAAM;YACxBuC,MAAMC,KAAK,CAAC,CAACC,KAAO5C,OAAO8B,SAASC,SAAS,EAAE,CAACN,MAAQmB,GAAGnB;YAC3DiB,MAAMC,KAAK,CAAChC,wBAAwBkC,IAAI,CAAC,MAAMJ;YAE/C,8BAA8B;YAC9BC,MAAMC,KAAK,CAACnC,YAAYqC,IAAI,CAAC,MAAMN,SAASE,UAAUX;YAEtD,uCAAuC;YACvC,yDAAyD;YACzDY,MAAMC,KAAK,CAAC,CAACC;gBACXlC,aAAa+B,UAAUX,UAAU,CAACL,KAAKqB;oBACrC,IAAIrB,KAAK,OAAOmB,GAAGnB;oBACnB,0CAA0C;oBAC1C,IAAI,CAAC,AAACqB,CAAAA,cAAc,EAAE,AAAD,EAAGC,OAAO,CAAC,QAAQ,OAAOtC,WAAW8B,SAASE,UAAUX,UAAUc;oBAEvF,wGAAwG;oBACxG,yGAAyG;oBACzG,MAAM,EAAEI,YAAY,EAAE,GAAGnC,SAAS;oBAClCmC,aAAaT,SAAS,CAACU,MAAoBC;wBACzC,MAAMC,sBAAsBD,QAAQA,KAAKE,GAAG,IAAI,CAACF,KAAKE,GAAG,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG;wBAC1E,IAAI,CAACF,qBAAqB,OAAOP,MAAM,wCAAwC;wBAE/E,+DAA+D;wBAC/D,MAAMU,WAAWnC,QAAQmC,QAAQ;wBACjC,MAAMC,UAAUD,aAAa,UAAUb,WAAWvC,KAAKsD,IAAI,CAACf,UAAU;wBACtE,MAAMgB,UAAUvD,KAAKsD,IAAI,CAACD,SAAS,gBAAgB;wBACnDzD,OAAO2D,SAAS,IAAMhD,WAAW8B,SAASE,UAAUX,UAAUc;oBAChE;gBACF;YACF;YAEA,uDAAuD;YACvDF,MAAMC,KAAK,CAAC,CAACC;gBACX/C,GAAG6D,MAAM,CAACjB,UAAUf,OAAOO,WAAW,EAAE,CAACR;oBACvC,IAAI,CAACA,KAAK,OAAOmB;oBACjB,gEAAgE;oBAChE,IAAInB,IAAIkC,IAAI,KAAK,YAAYlC,IAAIkC,IAAI,KAAK,eAAelC,IAAIkC,IAAI,KAAK,SAAS;wBAC7E,2DAA2D;wBAC3D7D,OAAO2C,UAAU,IAAMG;wBACvB;oBACF;oBACAA,GAAGnB;gBACL;YACF;YAEAiB,MAAMkB,KAAK,CAAC,CAACnC;gBACX,gCAAgC;gBAChC,IAAIA,KAAK,OAAO3B,OAAO2C,UAAU,IAAMrB,SAASK;gBAEhDL,SAASC,WAAWK;YACtB;QACF;IACF;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-install-release",
3
- "version": "1.19.2",
3
+ "version": "1.19.3",
4
4
  "description": "Cross-platform solution for installing releases of Node.js",
5
5
  "keywords": [
6
6
  "node",