node-install-release 1.7.5 → 1.7.7

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 (102) hide show
  1. package/dist/cjs/constants.cjs +65 -0
  2. package/dist/cjs/constants.cjs.map +1 -1
  3. package/dist/cjs/index.cjs +0 -1
  4. package/dist/cjs/index.cjs.map +1 -1
  5. package/dist/cjs/installNPM/installBin.cjs +2 -34
  6. package/dist/cjs/installNPM/installBin.cjs.map +1 -1
  7. package/dist/cjs/installNPM/installLib.cjs +12 -20
  8. package/dist/cjs/installNPM/installLib.cjs.map +1 -1
  9. package/dist/cjs/installNode/index.cjs +35 -21
  10. package/dist/cjs/installNode/index.cjs.map +1 -1
  11. package/dist/cjs/installNode/installCompressed.cjs +24 -22
  12. package/dist/cjs/installNode/installCompressed.cjs.map +1 -1
  13. package/dist/cjs/installNode/installExe.cjs +12 -8
  14. package/dist/cjs/installNode/installExe.cjs.map +1 -1
  15. package/dist/cjs/installNode/installFilename.cjs +31 -0
  16. package/dist/cjs/installNode/installFilename.cjs.map +1 -0
  17. package/dist/cjs/installNode/installSource/buildPosix.cjs +14 -18
  18. package/dist/cjs/installNode/installSource/buildPosix.cjs.map +1 -1
  19. package/dist/cjs/installNode/installSource/buildWin32.cjs +5 -8
  20. package/dist/cjs/installNode/installSource/buildWin32.cjs.map +1 -1
  21. package/dist/cjs/installNode/installSource/index.cjs +6 -3
  22. package/dist/cjs/installNode/installSource/index.cjs.map +1 -1
  23. package/dist/cjs/installNode/validateDownload.cjs +42 -0
  24. package/dist/cjs/installNode/validateDownload.cjs.map +1 -0
  25. package/dist/cjs/lib/checkMissing.cjs +11 -3
  26. package/dist/cjs/lib/checkMissing.cjs.map +1 -1
  27. package/dist/cjs/{lib → machine}/arch.cjs +3 -2
  28. package/dist/cjs/machine/arch.cjs.map +1 -0
  29. package/dist/cjs/{polyfills.cjs → machine/execSync/polyfill.cjs} +1 -1
  30. package/dist/cjs/machine/execSync/polyfill.cjs.map +1 -0
  31. package/dist/cjs/machine/execSync/worker.cjs.map +1 -0
  32. package/dist/cjs/workers/install.cjs +2 -33
  33. package/dist/cjs/workers/install.cjs.map +1 -1
  34. package/dist/esm/constants.mjs +44 -0
  35. package/dist/esm/constants.mjs.map +1 -1
  36. package/dist/esm/index.mjs +0 -1
  37. package/dist/esm/index.mjs.map +1 -1
  38. package/dist/esm/installNPM/installBin.mjs +2 -34
  39. package/dist/esm/installNPM/installBin.mjs.map +1 -1
  40. package/dist/esm/installNPM/installLib.mjs +12 -18
  41. package/dist/esm/installNPM/installLib.mjs.map +1 -1
  42. package/dist/esm/installNode/index.mjs +32 -22
  43. package/dist/esm/installNode/index.mjs.map +1 -1
  44. package/dist/esm/installNode/installCompressed.mjs +24 -24
  45. package/dist/esm/installNode/installCompressed.mjs.map +1 -1
  46. package/dist/esm/installNode/installExe.mjs +12 -8
  47. package/dist/esm/installNode/installExe.mjs.map +1 -1
  48. package/dist/esm/installNode/installFilename.mjs +15 -0
  49. package/dist/esm/installNode/installFilename.mjs.map +1 -0
  50. package/dist/esm/installNode/installSource/buildPosix.mjs +13 -17
  51. package/dist/esm/installNode/installSource/buildPosix.mjs.map +1 -1
  52. package/dist/esm/installNode/installSource/buildWin32.mjs +4 -9
  53. package/dist/esm/installNode/installSource/buildWin32.mjs.map +1 -1
  54. package/dist/esm/installNode/installSource/index.mjs +6 -3
  55. package/dist/esm/installNode/installSource/index.mjs.map +1 -1
  56. package/dist/esm/installNode/validateDownload.mjs +24 -0
  57. package/dist/esm/installNode/validateDownload.mjs.map +1 -0
  58. package/dist/esm/lib/checkMissing.mjs +1 -1
  59. package/dist/esm/lib/checkMissing.mjs.map +1 -1
  60. package/dist/esm/{lib → machine}/arch.cjs +1 -0
  61. package/dist/esm/machine/arch.cjs.map +1 -0
  62. package/dist/esm/{polyfills.cjs → machine/execSync/polyfill.cjs} +1 -1
  63. package/dist/esm/machine/execSync/polyfill.cjs.map +1 -0
  64. package/dist/esm/machine/execSync/worker.cjs.map +1 -0
  65. package/dist/esm/workers/install.mjs +2 -9
  66. package/dist/esm/workers/install.mjs.map +1 -1
  67. package/dist/types/constants.d.ts +26 -0
  68. package/dist/types/index.d.ts +0 -1
  69. package/dist/types/installNode/installCompressed.d.ts +1 -1
  70. package/dist/types/installNode/installExe.d.ts +1 -1
  71. package/dist/types/installNode/installFilename.d.ts +1 -0
  72. package/dist/types/installNode/installSource/buildPosix.d.ts +1 -1
  73. package/dist/types/installNode/installSource/index.d.ts +1 -1
  74. package/dist/types/installNode/validateDownload.d.ts +1 -0
  75. package/dist/types/lib/checkMissing.d.ts +10 -0
  76. package/package.json +6 -9
  77. package/dist/cjs/installNode/findDistPaths.cjs +0 -34
  78. package/dist/cjs/installNode/findDistPaths.cjs.map +0 -1
  79. package/dist/cjs/installNode/prebuilts.cjs +0 -53
  80. package/dist/cjs/installNode/prebuilts.cjs.map +0 -1
  81. package/dist/cjs/lib/arch.cjs.map +0 -1
  82. package/dist/cjs/lib/endsWithFn.cjs +0 -29
  83. package/dist/cjs/lib/endsWithFn.cjs.map +0 -1
  84. package/dist/cjs/polyfills/execCallback.cjs.map +0 -1
  85. package/dist/cjs/polyfills.cjs.map +0 -1
  86. package/dist/esm/installNode/findDistPaths.mjs +0 -18
  87. package/dist/esm/installNode/findDistPaths.mjs.map +0 -1
  88. package/dist/esm/installNode/prebuilts.mjs +0 -37
  89. package/dist/esm/installNode/prebuilts.mjs.map +0 -1
  90. package/dist/esm/lib/arch.cjs.map +0 -1
  91. package/dist/esm/lib/endsWithFn.mjs +0 -13
  92. package/dist/esm/lib/endsWithFn.mjs.map +0 -1
  93. package/dist/esm/polyfills/execCallback.cjs.map +0 -1
  94. package/dist/esm/polyfills.cjs.map +0 -1
  95. package/dist/types/installNode/findDistPaths.d.ts +0 -5
  96. package/dist/types/installNode/prebuilts.d.ts +0 -1
  97. package/dist/types/lib/endsWithFn.d.ts +0 -1
  98. /package/dist/cjs/{polyfills/execCallback.cjs → machine/execSync/worker.cjs} +0 -0
  99. /package/dist/esm/{polyfills/execCallback.cjs → machine/execSync/worker.cjs} +0 -0
  100. /package/dist/types/{lib → machine}/arch.d.cts +0 -0
  101. /package/dist/types/{polyfills.d.cts → machine/execSync/polyfill.d.cts} +0 -0
  102. /package/dist/types/{polyfills/execCallback.d.cts → machine/execSync/worker.d.cts} +0 -0
@@ -1,34 +1,34 @@
1
1
  import path from 'path';
2
2
  import access from 'fs-access-compat';
3
+ import Queue from 'queue-cb';
3
4
  import rimraf2 from 'rimraf2';
5
+ import { NODE_DIST_BASE_URL } from '../constants.mjs';
4
6
  import conditionalCache from '../lib/conditionalCache.mjs';
5
7
  import conditionalExtract from '../lib/conditionalExtract.mjs';
6
8
  import progress from '../lib/progress.mjs';
7
- export default function installCompressed(relativePath, dest, _record, options, callback) {
8
- const downloadPath = options.downloadURL(relativePath);
9
+ import validateDownload from './validateDownload.mjs';
10
+ export default function installCompressed(distPath, dest, options, callback) {
11
+ const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;
9
12
  const cachePath = path.join(options.cachePath, path.basename(downloadPath));
10
- conditionalCache(downloadPath, cachePath, (err)=>{
11
- if (err) return callback(err);
12
- access(dest, (err)=>{
13
- if (!err) return callback(); // already exists
14
- conditionalExtract(cachePath, dest, {
15
- strip: 1,
16
- progress: progress,
17
- time: 1000,
18
- ...options
19
- }, (err)=>{
20
- console.log('');
21
- if (err) return callback(err);
22
- // some compressed versions of node come with npm pre-installed, but we want to override with a specific version
23
- const platform = options.platform || process.platform;
24
- const libPath = platform === 'win32' ? dest : path.join(dest, 'lib');
25
- const installPath = path.join(libPath, 'node_modules', 'npm');
26
- rimraf2(installPath, {
27
- disableGlob: true
28
- }, ()=>{
29
- callback(err);
30
- });
31
- });
13
+ access(dest, (err)=>{
14
+ if (!err) return callback(); // already exists
15
+ const queue = new Queue(1);
16
+ queue.defer(conditionalCache.bind(null, downloadPath, cachePath));
17
+ queue.defer(validateDownload.bind(null, distPath, cachePath));
18
+ queue.defer(conditionalExtract.bind(null, cachePath, dest, {
19
+ strip: 1,
20
+ progress: progress,
21
+ time: 1000,
22
+ ...options
23
+ }));
24
+ queue.await((err)=>{
25
+ // some compressed versions of node come with npm pre-installed, but we want to override with a specific version
26
+ const platform = options.platform || process.platform;
27
+ const libPath = platform === 'win32' ? dest : path.join(dest, 'lib');
28
+ const installPath = path.join(libPath, 'node_modules', 'npm');
29
+ rimraf2(installPath, {
30
+ disableGlob: true
31
+ }, ()=>callback(err));
32
32
  });
33
33
  });
34
34
  }
@@ -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 access from 'fs-access-compat';\nimport rimraf2 from 'rimraf2';\n\nimport conditionalCache from '../lib/conditionalCache';\nimport conditionalExtract from '../lib/conditionalExtract';\nimport progress from '../lib/progress.js';\n\nexport default function installCompressed(relativePath, dest, _record, options, callback) {\n const downloadPath = options.downloadURL(relativePath);\n const cachePath = path.join(options.cachePath, path.basename(downloadPath));\n\n conditionalCache(downloadPath, cachePath, (err) => {\n if (err) return callback(err);\n access(dest, (err) => {\n if (!err) return callback(); // already exists\n conditionalExtract(cachePath, dest, { strip: 1, progress: progress, time: 1000, ...options }, (err) => {\n console.log('');\n if (err) return callback(err);\n\n // some compressed versions of node come with npm pre-installed, but we want to override with a specific version\n const platform = options.platform || process.platform;\n const libPath = platform === 'win32' ? dest : path.join(dest, 'lib');\n const installPath = path.join(libPath, 'node_modules', 'npm');\n rimraf2(installPath, { disableGlob: true }, () => {\n callback(err);\n });\n });\n });\n });\n}\n"],"names":["path","access","rimraf2","conditionalCache","conditionalExtract","progress","installCompressed","relativePath","dest","_record","options","callback","downloadPath","downloadURL","cachePath","join","basename","err","strip","time","console","log","platform","process","libPath","installPath","disableGlob"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,YAAY,mBAAmB;AACtC,OAAOC,aAAa,UAAU;AAE9B,OAAOC,sBAAsB,0BAA0B;AACvD,OAAOC,wBAAwB,4BAA4B;AAC3D,OAAOC,cAAc,qBAAqB;AAE1C,eAAe,SAASC,kBAAkBC,YAAY,EAAEC,IAAI,EAAEC,OAAO,EAAEC,OAAO,EAAEC,QAAQ;IACtF,MAAMC,eAAeF,QAAQG,WAAW,CAACN;IACzC,MAAMO,YAAYd,KAAKe,IAAI,CAACL,QAAQI,SAAS,EAAEd,KAAKgB,QAAQ,CAACJ;IAE7DT,iBAAiBS,cAAcE,WAAW,CAACG;QACzC,IAAIA,KAAK,OAAON,SAASM;QACzBhB,OAAOO,MAAM,CAACS;YACZ,IAAI,CAACA,KAAK,OAAON,YAAY,iBAAiB;YAC9CP,mBAAmBU,WAAWN,MAAM;gBAAEU,OAAO;gBAAGb,UAAUA;gBAAUc,MAAM;gBAAM,GAAGT,OAAO;YAAC,GAAG,CAACO;gBAC7FG,QAAQC,GAAG,CAAC;gBACZ,IAAIJ,KAAK,OAAON,SAASM;gBAEzB,gHAAgH;gBAChH,MAAMK,WAAWZ,QAAQY,QAAQ,IAAIC,QAAQD,QAAQ;gBACrD,MAAME,UAAUF,aAAa,UAAUd,OAAOR,KAAKe,IAAI,CAACP,MAAM;gBAC9D,MAAMiB,cAAczB,KAAKe,IAAI,CAACS,SAAS,gBAAgB;gBACvDtB,QAAQuB,aAAa;oBAAEC,aAAa;gBAAK,GAAG;oBAC1Cf,SAASM;gBACX;YACF;QACF;IACF;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installCompressed.ts"],"sourcesContent":["import path from 'path';\nimport access from 'fs-access-compat';\nimport Queue from 'queue-cb';\nimport rimraf2 from 'rimraf2';\n\nimport { NODE_DIST_BASE_URL } from '../constants';\nimport conditionalCache from '../lib/conditionalCache';\nimport conditionalExtract from '../lib/conditionalExtract';\nimport progress from '../lib/progress.js';\nimport validateDownload from './validateDownload';\n\nexport default function installCompressed(distPath, dest, options, callback) {\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n const cachePath = path.join(options.cachePath, path.basename(downloadPath));\n\n access(dest, (err) => {\n if (!err) return callback(); // already exists\n\n const queue = new Queue(1);\n queue.defer(conditionalCache.bind(null, downloadPath, cachePath));\n queue.defer(validateDownload.bind(null, distPath, cachePath));\n queue.defer(conditionalExtract.bind(null, cachePath, dest, { strip: 1, progress: progress, time: 1000, ...options }));\n queue.await((err) => {\n // some compressed versions of node come with npm pre-installed, but we want to override with a specific version\n const platform = options.platform || process.platform;\n const libPath = platform === 'win32' ? dest : path.join(dest, 'lib');\n const installPath = path.join(libPath, 'node_modules', 'npm');\n rimraf2(installPath, { disableGlob: true }, () => callback(err));\n });\n });\n}\n"],"names":["path","access","Queue","rimraf2","NODE_DIST_BASE_URL","conditionalCache","conditionalExtract","progress","validateDownload","installCompressed","distPath","dest","options","callback","downloadPath","cachePath","join","basename","err","queue","defer","bind","strip","time","await","platform","process","libPath","installPath","disableGlob"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,YAAY,mBAAmB;AACtC,OAAOC,WAAW,WAAW;AAC7B,OAAOC,aAAa,UAAU;AAE9B,SAASC,kBAAkB,QAAQ,eAAe;AAClD,OAAOC,sBAAsB,0BAA0B;AACvD,OAAOC,wBAAwB,4BAA4B;AAC3D,OAAOC,cAAc,qBAAqB;AAC1C,OAAOC,sBAAsB,qBAAqB;AAElD,eAAe,SAASC,kBAAkBC,QAAQ,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IACzE,MAAMC,eAAe,GAAGV,mBAAmB,CAAC,EAAEM,UAAU;IACxD,MAAMK,YAAYf,KAAKgB,IAAI,CAACJ,QAAQG,SAAS,EAAEf,KAAKiB,QAAQ,CAACH;IAE7Db,OAAOU,MAAM,CAACO;QACZ,IAAI,CAACA,KAAK,OAAOL,YAAY,iBAAiB;QAE9C,MAAMM,QAAQ,IAAIjB,MAAM;QACxBiB,MAAMC,KAAK,CAACf,iBAAiBgB,IAAI,CAAC,MAAMP,cAAcC;QACtDI,MAAMC,KAAK,CAACZ,iBAAiBa,IAAI,CAAC,MAAMX,UAAUK;QAClDI,MAAMC,KAAK,CAACd,mBAAmBe,IAAI,CAAC,MAAMN,WAAWJ,MAAM;YAAEW,OAAO;YAAGf,UAAUA;YAAUgB,MAAM;YAAM,GAAGX,OAAO;QAAC;QAClHO,MAAMK,KAAK,CAAC,CAACN;YACX,gHAAgH;YAChH,MAAMO,WAAWb,QAAQa,QAAQ,IAAIC,QAAQD,QAAQ;YACrD,MAAME,UAAUF,aAAa,UAAUd,OAAOX,KAAKgB,IAAI,CAACL,MAAM;YAC9D,MAAMiB,cAAc5B,KAAKgB,IAAI,CAACW,SAAS,gBAAgB;YACvDxB,QAAQyB,aAAa;gBAAEC,aAAa;YAAK,GAAG,IAAMhB,SAASK;QAC7D;IACF;AACF"}
@@ -1,16 +1,20 @@
1
1
  import path from 'path';
2
2
  import access from 'fs-access-compat';
3
+ import Queue from 'queue-cb';
4
+ import { NODE_DIST_BASE_URL } from '../constants.mjs';
3
5
  import conditionalCache from '../lib/conditionalCache.mjs';
4
6
  import copyFile from '../lib/copyFile.mjs';
5
- export default function installExe(relativePath, dest, record, options, callback) {
6
- const downloadPath = options.downloadURL(relativePath);
7
- const cachePath = path.join(options.cachePath, `node-${record.version}.exe`);
8
- const destPath = path.join(dest, path.basename(relativePath));
7
+ import validateDownload from './validateDownload.mjs';
8
+ export default function installExe(distPath, dest, options, callback) {
9
+ const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;
10
+ const cachePath = path.join(options.cachePath, `node-${distPath}.exe`);
11
+ const destPath = path.join(dest, path.basename(distPath));
9
12
  access(destPath, (err)=>{
10
13
  if (!err) return callback(); // already exists
11
- conditionalCache(downloadPath, cachePath, (err)=>{
12
- if (err) return callback(err);
13
- copyFile(cachePath, destPath, callback);
14
- });
14
+ const queue = new Queue(1);
15
+ queue.defer(conditionalCache.bind(null, downloadPath, cachePath));
16
+ queue.defer(validateDownload.bind(null, distPath, cachePath));
17
+ queue.defer(copyFile.bind(cachePath, destPath));
18
+ queue.await(callback);
15
19
  });
16
20
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installExe.ts"],"sourcesContent":["import path from 'path';\nimport access from 'fs-access-compat';\n\nimport conditionalCache from '../lib/conditionalCache';\nimport copyFile from '../lib/copyFile';\n\nexport default function installExe(relativePath, dest, record, options, callback) {\n const downloadPath = options.downloadURL(relativePath);\n const cachePath = path.join(options.cachePath, `node-${record.version}.exe`);\n const destPath = path.join(dest, path.basename(relativePath));\n\n access(destPath, (err) => {\n if (!err) return callback(); // already exists\n conditionalCache(downloadPath, cachePath, (err) => {\n if (err) return callback(err);\n copyFile(cachePath, destPath, callback);\n });\n });\n}\n"],"names":["path","access","conditionalCache","copyFile","installExe","relativePath","dest","record","options","callback","downloadPath","downloadURL","cachePath","join","version","destPath","basename","err"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,YAAY,mBAAmB;AAEtC,OAAOC,sBAAsB,0BAA0B;AACvD,OAAOC,cAAc,kBAAkB;AAEvC,eAAe,SAASC,WAAWC,YAAY,EAAEC,IAAI,EAAEC,MAAM,EAAEC,OAAO,EAAEC,QAAQ;IAC9E,MAAMC,eAAeF,QAAQG,WAAW,CAACN;IACzC,MAAMO,YAAYZ,KAAKa,IAAI,CAACL,QAAQI,SAAS,EAAE,CAAC,KAAK,EAAEL,OAAOO,OAAO,CAAC,IAAI,CAAC;IAC3E,MAAMC,WAAWf,KAAKa,IAAI,CAACP,MAAMN,KAAKgB,QAAQ,CAACX;IAE/CJ,OAAOc,UAAU,CAACE;QAChB,IAAI,CAACA,KAAK,OAAOR,YAAY,iBAAiB;QAC9CP,iBAAiBQ,cAAcE,WAAW,CAACK;YACzC,IAAIA,KAAK,OAAOR,SAASQ;YACzBd,SAASS,WAAWG,UAAUN;QAChC;IACF;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installExe.ts"],"sourcesContent":["import path from 'path';\nimport access from 'fs-access-compat';\nimport Queue from 'queue-cb';\n\nimport { NODE_DIST_BASE_URL } from '../constants';\nimport conditionalCache from '../lib/conditionalCache';\nimport copyFile from '../lib/copyFile';\nimport validateDownload from './validateDownload';\n\nexport default function installExe(distPath, dest, options, callback) {\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n const cachePath = path.join(options.cachePath, `node-${distPath}.exe`);\n const destPath = path.join(dest, path.basename(distPath));\n\n access(destPath, (err) => {\n if (!err) return callback(); // already exists\n\n const queue = new Queue(1);\n queue.defer(conditionalCache.bind(null, downloadPath, cachePath));\n queue.defer(validateDownload.bind(null, distPath, cachePath));\n queue.defer(copyFile.bind(cachePath, destPath));\n queue.await(callback);\n });\n}\n"],"names":["path","access","Queue","NODE_DIST_BASE_URL","conditionalCache","copyFile","validateDownload","installExe","distPath","dest","options","callback","downloadPath","cachePath","join","destPath","basename","err","queue","defer","bind","await"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,YAAY,mBAAmB;AACtC,OAAOC,WAAW,WAAW;AAE7B,SAASC,kBAAkB,QAAQ,eAAe;AAClD,OAAOC,sBAAsB,0BAA0B;AACvD,OAAOC,cAAc,kBAAkB;AACvC,OAAOC,sBAAsB,qBAAqB;AAElD,eAAe,SAASC,WAAWC,QAAQ,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IAClE,MAAMC,eAAe,GAAGT,mBAAmB,CAAC,EAAEK,UAAU;IACxD,MAAMK,YAAYb,KAAKc,IAAI,CAACJ,QAAQG,SAAS,EAAE,CAAC,KAAK,EAAEL,SAAS,IAAI,CAAC;IACrE,MAAMO,WAAWf,KAAKc,IAAI,CAACL,MAAMT,KAAKgB,QAAQ,CAACR;IAE/CP,OAAOc,UAAU,CAACE;QAChB,IAAI,CAACA,KAAK,OAAON,YAAY,iBAAiB;QAE9C,MAAMO,QAAQ,IAAIhB,MAAM;QACxBgB,MAAMC,KAAK,CAACf,iBAAiBgB,IAAI,CAAC,MAAMR,cAAcC;QACtDK,MAAMC,KAAK,CAACb,iBAAiBc,IAAI,CAAC,MAAMZ,UAAUK;QAClDK,MAAMC,KAAK,CAACd,SAASe,IAAI,CAACP,WAAWE;QACrCG,MAAMG,KAAK,CAACV;IACd;AACF"}
@@ -0,0 +1,15 @@
1
+ import path from 'path';
2
+ import fromFilename from 'node-filename-to-dist-paths';
3
+ import { EXTENSIONS_COMPRESSED } from '../constants.mjs';
4
+ import installCompressed from './installCompressed.mjs';
5
+ import installExe from './installExe.mjs';
6
+ import installSource from './installSource/index.mjs';
7
+ export default function installFilename(filename, version, dest, options, callback) {
8
+ const distPath = fromFilename(filename, version);
9
+ if (!distPath) return callback(new Error('Not found'));
10
+ const ext = path.extname(distPath);
11
+ if (ext === '.exe') return installExe(distPath, dest, options, callback);
12
+ if (EXTENSIONS_COMPRESSED.indexOf(ext) >= 0) return installCompressed(distPath, dest, options, callback);
13
+ if (filename === 'src') return installSource(distPath, dest, options, callback);
14
+ callback(new Error(`Unable to install ${version} distPath: ${distPath}`));
15
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installFilename.ts"],"sourcesContent":["import path from 'path';\nimport fromFilename from 'node-filename-to-dist-paths';\nimport { EXTENSIONS_COMPRESSED } from '../constants';\n\nimport installCompressed from './installCompressed';\nimport installExe from './installExe';\nimport installSource from './installSource/index';\n\nexport default function installFilename(filename, version, dest, options, callback) {\n const distPath = fromFilename(filename, version);\n if (!distPath) return callback(new Error('Not found'));\n const ext = path.extname(distPath);\n\n if (ext === '.exe') return installExe(distPath, dest, options, callback);\n if (EXTENSIONS_COMPRESSED.indexOf(ext) >= 0) return installCompressed(distPath, dest, options, callback);\n if (filename === 'src') return installSource(distPath, dest, options, callback);\n callback(new Error(`Unable to install ${version} distPath: ${distPath}`));\n}\n"],"names":["path","fromFilename","EXTENSIONS_COMPRESSED","installCompressed","installExe","installSource","installFilename","filename","version","dest","options","callback","distPath","Error","ext","extname","indexOf"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,kBAAkB,8BAA8B;AACvD,SAASC,qBAAqB,QAAQ,eAAe;AAErD,OAAOC,uBAAuB,sBAAsB;AACpD,OAAOC,gBAAgB,eAAe;AACtC,OAAOC,mBAAmB,wBAAwB;AAElD,eAAe,SAASC,gBAAgBC,QAAQ,EAAEC,OAAO,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IAChF,MAAMC,WAAWX,aAAaM,UAAUC;IACxC,IAAI,CAACI,UAAU,OAAOD,SAAS,IAAIE,MAAM;IACzC,MAAMC,MAAMd,KAAKe,OAAO,CAACH;IAEzB,IAAIE,QAAQ,QAAQ,OAAOV,WAAWQ,UAAUH,MAAMC,SAASC;IAC/D,IAAIT,sBAAsBc,OAAO,CAACF,QAAQ,GAAG,OAAOX,kBAAkBS,UAAUH,MAAMC,SAASC;IAC/F,IAAIJ,aAAa,OAAO,OAAOF,cAAcO,UAAUH,MAAMC,SAASC;IACtEA,SAAS,IAAIE,MAAM,CAAC,kBAAkB,EAAEL,QAAQ,WAAW,EAAEI,UAAU;AACzE"}
@@ -2,27 +2,23 @@ import path from 'path';
2
2
  import spawn from 'cross-spawn-cb';
3
3
  import access from 'fs-access-compat';
4
4
  import Queue from 'queue-cb';
5
- export default function installDefault(buildPath, dest, _options, callback) {
5
+ export default function installPosix(buildPath, dest, _options, callback) {
6
6
  const buildTarget = path.join(dest, 'node');
7
7
  access(buildTarget, (err)=>{
8
8
  if (!err) return callback(); // already exists
9
9
  const queue = new Queue(1);
10
- queue.defer((callback)=>{
11
- spawn('./configure', [
12
- `--prefix=${dest}`
13
- ], {
14
- stdio: 'inherit',
15
- cwd: buildPath
16
- }, callback);
17
- });
18
- queue.defer((callback)=>{
19
- spawn('make', [
20
- 'install'
21
- ], {
22
- stdio: 'inherit',
23
- cwd: buildPath
24
- }, callback);
25
- });
10
+ queue.defer(spawn.bind(null, './configure', [
11
+ `--prefix=${dest}`
12
+ ], {
13
+ stdio: 'inherit',
14
+ cwd: buildPath
15
+ }));
16
+ queue.defer(spawn.bind(null, 'make', [
17
+ 'install'
18
+ ], {
19
+ stdio: 'inherit',
20
+ cwd: buildPath
21
+ }, callback));
26
22
  queue.await(callback);
27
23
  });
28
24
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installSource/buildPosix.ts"],"sourcesContent":["import path from 'path';\nimport spawn from 'cross-spawn-cb';\nimport access from 'fs-access-compat';\nimport Queue from 'queue-cb';\n\nexport default function installDefault(buildPath, dest, _options, callback) {\n const buildTarget = path.join(dest, 'node');\n\n access(buildTarget, (err) => {\n if (!err) return callback(); // already exists\n\n const queue = new Queue(1);\n queue.defer((callback) => {\n spawn('./configure', [`--prefix=${dest}`], { stdio: 'inherit', cwd: buildPath }, callback);\n });\n queue.defer((callback) => {\n spawn('make', ['install'], { stdio: 'inherit', cwd: buildPath }, callback);\n });\n queue.await(callback);\n });\n}\n"],"names":["path","spawn","access","Queue","installDefault","buildPath","dest","_options","callback","buildTarget","join","err","queue","defer","stdio","cwd","await"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,WAAW,iBAAiB;AACnC,OAAOC,YAAY,mBAAmB;AACtC,OAAOC,WAAW,WAAW;AAE7B,eAAe,SAASC,eAAeC,SAAS,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,QAAQ;IACxE,MAAMC,cAAcT,KAAKU,IAAI,CAACJ,MAAM;IAEpCJ,OAAOO,aAAa,CAACE;QACnB,IAAI,CAACA,KAAK,OAAOH,YAAY,iBAAiB;QAE9C,MAAMI,QAAQ,IAAIT,MAAM;QACxBS,MAAMC,KAAK,CAAC,CAACL;YACXP,MAAM,eAAe;gBAAC,CAAC,SAAS,EAAEK,MAAM;aAAC,EAAE;gBAAEQ,OAAO;gBAAWC,KAAKV;YAAU,GAAGG;QACnF;QACAI,MAAMC,KAAK,CAAC,CAACL;YACXP,MAAM,QAAQ;gBAAC;aAAU,EAAE;gBAAEa,OAAO;gBAAWC,KAAKV;YAAU,GAAGG;QACnE;QACAI,MAAMI,KAAK,CAACR;IACd;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installSource/buildPosix.ts"],"sourcesContent":["import path from 'path';\nimport spawn from 'cross-spawn-cb';\nimport access from 'fs-access-compat';\nimport Queue from 'queue-cb';\n\nexport default function installPosix(buildPath, dest, _options, callback) {\n const buildTarget = path.join(dest, 'node');\n\n access(buildTarget, (err) => {\n if (!err) return callback(); // already exists\n\n const queue = new Queue(1);\n queue.defer(spawn.bind(null, './configure', [`--prefix=${dest}`], { stdio: 'inherit', cwd: buildPath }));\n queue.defer(spawn.bind(null, 'make', ['install'], { stdio: 'inherit', cwd: buildPath }, callback));\n queue.await(callback);\n });\n}\n"],"names":["path","spawn","access","Queue","installPosix","buildPath","dest","_options","callback","buildTarget","join","err","queue","defer","bind","stdio","cwd","await"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,WAAW,iBAAiB;AACnC,OAAOC,YAAY,mBAAmB;AACtC,OAAOC,WAAW,WAAW;AAE7B,eAAe,SAASC,aAAaC,SAAS,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,QAAQ;IACtE,MAAMC,cAAcT,KAAKU,IAAI,CAACJ,MAAM;IAEpCJ,OAAOO,aAAa,CAACE;QACnB,IAAI,CAACA,KAAK,OAAOH,YAAY,iBAAiB;QAE9C,MAAMI,QAAQ,IAAIT,MAAM;QACxBS,MAAMC,KAAK,CAACZ,MAAMa,IAAI,CAAC,MAAM,eAAe;YAAC,CAAC,SAAS,EAAER,MAAM;SAAC,EAAE;YAAES,OAAO;YAAWC,KAAKX;QAAU;QACrGO,MAAMC,KAAK,CAACZ,MAAMa,IAAI,CAAC,MAAM,QAAQ;YAAC;SAAU,EAAE;YAAEC,OAAO;YAAWC,KAAKX;QAAU,GAAGG;QACxFI,MAAMK,KAAK,CAACT;IACd;AACF"}
@@ -9,15 +9,10 @@ export default function installWin32(buildPath, dest, _options, callback) {
9
9
  access(buildTarget, (err)=>{
10
10
  if (!err) return callback(); // already exists
11
11
  const queue = new Queue(1);
12
- queue.defer((callback)=>{
13
- access(buildSource, (err)=>{
14
- if (!err) return callback(); // already exists
15
- spawn('./vcbuild', [], {
16
- stdio: 'inherit',
17
- cwd: buildPath
18
- }, callback);
19
- });
20
- });
12
+ queue.defer(access.bind(null, buildSource, (err)=>!err ? callback() : spawn('./vcbuild', [], {
13
+ stdio: 'inherit',
14
+ cwd: buildPath
15
+ })));
21
16
  queue.defer(conditionalCopy.bind(null, buildSource, buildTarget));
22
17
  queue.await(callback);
23
18
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installSource/buildWin32.ts"],"sourcesContent":["import path from 'path';\nimport spawn from 'cross-spawn-cb';\nimport Queue from 'queue-cb';\n\nimport access from 'fs-access-compat';\nimport conditionalCopy from '../../lib/conditionalCopy';\n\nexport default function installWin32(buildPath, dest, _options, callback) {\n const buildSource = path.join(buildPath, 'out', 'Release', 'node.exe');\n const buildTarget = path.join(dest, 'node.exe');\n\n access(buildTarget, (err) => {\n if (!err) return callback(); // already exists\n\n const queue = new Queue(1);\n queue.defer((callback) => {\n access(buildSource, (err) => {\n if (!err) return callback(); // already exists\n spawn('./vcbuild', [], { stdio: 'inherit', cwd: buildPath }, callback);\n });\n });\n queue.defer(conditionalCopy.bind(null, buildSource, buildTarget));\n queue.await(callback);\n });\n}\n"],"names":["path","spawn","Queue","access","conditionalCopy","installWin32","buildPath","dest","_options","callback","buildSource","join","buildTarget","err","queue","defer","stdio","cwd","bind","await"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,WAAW,iBAAiB;AACnC,OAAOC,WAAW,WAAW;AAE7B,OAAOC,YAAY,mBAAmB;AACtC,OAAOC,qBAAqB,4BAA4B;AAExD,eAAe,SAASC,aAAaC,SAAS,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,QAAQ;IACtE,MAAMC,cAAcV,KAAKW,IAAI,CAACL,WAAW,OAAO,WAAW;IAC3D,MAAMM,cAAcZ,KAAKW,IAAI,CAACJ,MAAM;IAEpCJ,OAAOS,aAAa,CAACC;QACnB,IAAI,CAACA,KAAK,OAAOJ,YAAY,iBAAiB;QAE9C,MAAMK,QAAQ,IAAIZ,MAAM;QACxBY,MAAMC,KAAK,CAAC,CAACN;YACXN,OAAOO,aAAa,CAACG;gBACnB,IAAI,CAACA,KAAK,OAAOJ,YAAY,iBAAiB;gBAC9CR,MAAM,aAAa,EAAE,EAAE;oBAAEe,OAAO;oBAAWC,KAAKX;gBAAU,GAAGG;YAC/D;QACF;QACAK,MAAMC,KAAK,CAACX,gBAAgBc,IAAI,CAAC,MAAMR,aAAaE;QACpDE,MAAMK,KAAK,CAACV;IACd;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installSource/buildWin32.ts"],"sourcesContent":["import path from 'path';\nimport spawn from 'cross-spawn-cb';\nimport Queue from 'queue-cb';\n\nimport access from 'fs-access-compat';\nimport conditionalCopy from '../../lib/conditionalCopy';\n\nexport default function installWin32(buildPath, dest, _options, callback) {\n const buildSource = path.join(buildPath, 'out', 'Release', 'node.exe');\n const buildTarget = path.join(dest, 'node.exe');\n\n access(buildTarget, (err) => {\n if (!err) return callback(); // already exists\n\n const queue = new Queue(1);\n queue.defer(access.bind(null, buildSource, (err) => (!err ? callback() : spawn('./vcbuild', [], { stdio: 'inherit', cwd: buildPath }))));\n queue.defer(conditionalCopy.bind(null, buildSource, buildTarget));\n queue.await(callback);\n });\n}\n"],"names":["path","spawn","Queue","access","conditionalCopy","installWin32","buildPath","dest","_options","callback","buildSource","join","buildTarget","err","queue","defer","bind","stdio","cwd","await"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,WAAW,iBAAiB;AACnC,OAAOC,WAAW,WAAW;AAE7B,OAAOC,YAAY,mBAAmB;AACtC,OAAOC,qBAAqB,4BAA4B;AAExD,eAAe,SAASC,aAAaC,SAAS,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,QAAQ;IACtE,MAAMC,cAAcV,KAAKW,IAAI,CAACL,WAAW,OAAO,WAAW;IAC3D,MAAMM,cAAcZ,KAAKW,IAAI,CAACJ,MAAM;IAEpCJ,OAAOS,aAAa,CAACC;QACnB,IAAI,CAACA,KAAK,OAAOJ,YAAY,iBAAiB;QAE9C,MAAMK,QAAQ,IAAIZ,MAAM;QACxBY,MAAMC,KAAK,CAACZ,OAAOa,IAAI,CAAC,MAAMN,aAAa,CAACG,MAAS,CAACA,MAAMJ,aAAaR,MAAM,aAAa,EAAE,EAAE;gBAAEgB,OAAO;gBAAWC,KAAKZ;YAAU;QACnIQ,MAAMC,KAAK,CAACX,gBAAgBY,IAAI,CAAC,MAAMN,aAAaE;QACpDE,MAAMK,KAAK,CAACV;IACd;AACF"}
@@ -1,17 +1,20 @@
1
1
  import path from 'path';
2
2
  import Queue from 'queue-cb';
3
+ import { NODE_DIST_BASE_URL } from '../../constants.mjs';
3
4
  import conditionalCache from '../../lib/conditionalCache.mjs';
4
5
  import conditionalExtract from '../../lib/conditionalExtract.mjs';
6
+ import validateDownload from '../validateDownload.mjs';
5
7
  import buildPosix from './buildPosix.mjs';
6
8
  import buildWin32 from './buildWin32.mjs';
7
- export default function InstallSource(relativePath, dest, _record, options, callback) {
9
+ export default function InstallSource(distPath, dest, options, callback) {
8
10
  const platform = options.platform || process.platform;
9
11
  const build = platform === 'win32' ? buildWin32 : buildPosix;
10
- const downloadPath = options.downloadURL(relativePath);
11
- const buildPath = path.join(options.buildPath, path.basename(relativePath));
12
+ const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;
13
+ const buildPath = path.join(options.buildPath, path.basename(distPath));
12
14
  const cachePath = path.join(options.cachePath, path.basename(downloadPath));
13
15
  const queue = new Queue(1);
14
16
  queue.defer(conditionalCache.bind(null, downloadPath, cachePath));
17
+ queue.defer(validateDownload.bind(null, distPath, cachePath));
15
18
  queue.defer(conditionalExtract.bind(null, cachePath, buildPath, {
16
19
  strip: 1
17
20
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installSource/index.ts"],"sourcesContent":["import path from 'path';\nimport Queue from 'queue-cb';\n\nimport conditionalCache from '../../lib/conditionalCache';\nimport conditionalExtract from '../../lib/conditionalExtract';\nimport buildPosix from './buildPosix';\nimport buildWin32 from './buildWin32';\n\nexport default function InstallSource(relativePath, dest, _record, options, callback) {\n const platform = options.platform || process.platform;\n const build = platform === 'win32' ? buildWin32 : buildPosix;\n const downloadPath = options.downloadURL(relativePath);\n const buildPath = path.join(options.buildPath, path.basename(relativePath));\n const cachePath = path.join(options.cachePath, path.basename(downloadPath));\n\n const queue = new Queue(1);\n queue.defer(conditionalCache.bind(null, downloadPath, cachePath));\n queue.defer(conditionalExtract.bind(null, cachePath, buildPath, { strip: 1 }));\n queue.defer(build.bind(null, buildPath, dest, options));\n queue.await(callback);\n}\n"],"names":["path","Queue","conditionalCache","conditionalExtract","buildPosix","buildWin32","InstallSource","relativePath","dest","_record","options","callback","platform","process","build","downloadPath","downloadURL","buildPath","join","basename","cachePath","queue","defer","bind","strip","await"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAE7B,OAAOC,sBAAsB,6BAA6B;AAC1D,OAAOC,wBAAwB,+BAA+B;AAC9D,OAAOC,gBAAgB,eAAe;AACtC,OAAOC,gBAAgB,eAAe;AAEtC,eAAe,SAASC,cAAcC,YAAY,EAAEC,IAAI,EAAEC,OAAO,EAAEC,OAAO,EAAEC,QAAQ;IAClF,MAAMC,WAAWF,QAAQE,QAAQ,IAAIC,QAAQD,QAAQ;IACrD,MAAME,QAAQF,aAAa,UAAUP,aAAaD;IAClD,MAAMW,eAAeL,QAAQM,WAAW,CAACT;IACzC,MAAMU,YAAYjB,KAAKkB,IAAI,CAACR,QAAQO,SAAS,EAAEjB,KAAKmB,QAAQ,CAACZ;IAC7D,MAAMa,YAAYpB,KAAKkB,IAAI,CAACR,QAAQU,SAAS,EAAEpB,KAAKmB,QAAQ,CAACJ;IAE7D,MAAMM,QAAQ,IAAIpB,MAAM;IACxBoB,MAAMC,KAAK,CAACpB,iBAAiBqB,IAAI,CAAC,MAAMR,cAAcK;IACtDC,MAAMC,KAAK,CAACnB,mBAAmBoB,IAAI,CAAC,MAAMH,WAAWH,WAAW;QAAEO,OAAO;IAAE;IAC3EH,MAAMC,KAAK,CAACR,MAAMS,IAAI,CAAC,MAAMN,WAAWT,MAAME;IAC9CW,MAAMI,KAAK,CAACd;AACd"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installSource/index.ts"],"sourcesContent":["import path from 'path';\nimport Queue from 'queue-cb';\n\nimport { NODE_DIST_BASE_URL } from '../../constants';\nimport conditionalCache from '../../lib/conditionalCache';\nimport conditionalExtract from '../../lib/conditionalExtract';\nimport validateDownload from '../validateDownload';\nimport buildPosix from './buildPosix';\nimport buildWin32 from './buildWin32';\n\nexport default function InstallSource(distPath, dest, options, callback) {\n const platform = options.platform || process.platform;\n const build = platform === 'win32' ? buildWin32 : buildPosix;\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n const buildPath = 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(conditionalCache.bind(null, downloadPath, cachePath));\n queue.defer(validateDownload.bind(null, distPath, cachePath));\n queue.defer(conditionalExtract.bind(null, cachePath, buildPath, { strip: 1 }));\n queue.defer(build.bind(null, buildPath, dest, options));\n queue.await(callback);\n}\n"],"names":["path","Queue","NODE_DIST_BASE_URL","conditionalCache","conditionalExtract","validateDownload","buildPosix","buildWin32","InstallSource","distPath","dest","options","callback","platform","process","build","downloadPath","buildPath","join","basename","cachePath","queue","defer","bind","strip","await"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAE7B,SAASC,kBAAkB,QAAQ,kBAAkB;AACrD,OAAOC,sBAAsB,6BAA6B;AAC1D,OAAOC,wBAAwB,+BAA+B;AAC9D,OAAOC,sBAAsB,sBAAsB;AACnD,OAAOC,gBAAgB,eAAe;AACtC,OAAOC,gBAAgB,eAAe;AAEtC,eAAe,SAASC,cAAcC,QAAQ,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IACrE,MAAMC,WAAWF,QAAQE,QAAQ,IAAIC,QAAQD,QAAQ;IACrD,MAAME,QAAQF,aAAa,UAAUN,aAAaD;IAClD,MAAMU,eAAe,GAAGd,mBAAmB,CAAC,EAAEO,UAAU;IACxD,MAAMQ,YAAYjB,KAAKkB,IAAI,CAACP,QAAQM,SAAS,EAAEjB,KAAKmB,QAAQ,CAACV;IAC7D,MAAMW,YAAYpB,KAAKkB,IAAI,CAACP,QAAQS,SAAS,EAAEpB,KAAKmB,QAAQ,CAACH;IAE7D,MAAMK,QAAQ,IAAIpB,MAAM;IACxBoB,MAAMC,KAAK,CAACnB,iBAAiBoB,IAAI,CAAC,MAAMP,cAAcI;IACtDC,MAAMC,KAAK,CAACjB,iBAAiBkB,IAAI,CAAC,MAAMd,UAAUW;IAClDC,MAAMC,KAAK,CAAClB,mBAAmBmB,IAAI,CAAC,MAAMH,WAAWH,WAAW;QAAEO,OAAO;IAAE;IAC3EH,MAAMC,KAAK,CAACP,MAAMQ,IAAI,CAAC,MAAMN,WAAWP,MAAMC;IAC9CU,MAAMI,KAAK,CAACb;AACd"}
@@ -0,0 +1,24 @@
1
+ import crypto from 'crypto';
2
+ import fs from 'fs';
3
+ import eos from 'end-of-stream';
4
+ import get from 'get-remote';
5
+ import { NODE_DIST_BASE_URL } from '../constants.mjs';
6
+ export default function validateDownload(distPath, installPath, callback) {
7
+ const version = distPath.split('/')[0];
8
+ const downloadPath = `${NODE_DIST_BASE_URL}/${version}/SHASUMS256.txt`;
9
+ get(downloadPath).text((err, res)=>{
10
+ if (err) return callback(err);
11
+ const text = res.body;
12
+ const filename = distPath.split('/').slice(1).join('/');
13
+ const expected = text.split(filename)[0].split('\n').pop().trim();
14
+ const hash = crypto.createHash('sha256');
15
+ const input = fs.createReadStream(installPath);
16
+ input.on('data', (data)=>hash.update(data));
17
+ eos(input, (err)=>{
18
+ if (err) return callback(err);
19
+ const digest = hash.digest('hex');
20
+ console.log(`hash ${digest === expected ? 'matches' : 'different'} for ${filename}`);
21
+ digest !== expected ? callback(new Error(`SHASUMS256 failed for ${filename}`)) : callback();
22
+ });
23
+ });
24
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/validateDownload.ts"],"sourcesContent":["import crypto from 'crypto';\nimport fs from 'fs';\nimport eos from 'end-of-stream';\nimport get from 'get-remote';\nimport { NODE_DIST_BASE_URL } from '../constants';\nexport default function validateDownload(distPath, installPath, callback) {\n const version = distPath.split('/')[0];\n const downloadPath = `${NODE_DIST_BASE_URL}/${version}/SHASUMS256.txt`;\n get(downloadPath).text((err, res) => {\n if (err) return callback(err);\n const text = res.body;\n const filename = distPath.split('/').slice(1).join('/');\n const expected = text.split(filename)[0].split('\\n').pop().trim();\n const hash = crypto.createHash('sha256');\n const input = fs.createReadStream(installPath);\n input.on('data', (data) => hash.update(data));\n eos(input, (err) => {\n if (err) return callback(err);\n const digest = hash.digest('hex');\n console.log(`hash ${digest === expected ? 'matches' : 'different'} for ${filename}`);\n digest !== expected ? callback(new Error(`SHASUMS256 failed for ${filename}`)) : callback();\n });\n });\n}\n"],"names":["crypto","fs","eos","get","NODE_DIST_BASE_URL","validateDownload","distPath","installPath","callback","version","split","downloadPath","text","err","res","body","filename","slice","join","expected","pop","trim","hash","createHash","input","createReadStream","on","data","update","digest","console","log","Error"],"mappings":"AAAA,OAAOA,YAAY,SAAS;AAC5B,OAAOC,QAAQ,KAAK;AACpB,OAAOC,SAAS,gBAAgB;AAChC,OAAOC,SAAS,aAAa;AAC7B,SAASC,kBAAkB,QAAQ,eAAe;AAClD,eAAe,SAASC,iBAAiBC,QAAQ,EAAEC,WAAW,EAAEC,QAAQ;IACtE,MAAMC,UAAUH,SAASI,KAAK,CAAC,IAAI,CAAC,EAAE;IACtC,MAAMC,eAAe,GAAGP,mBAAmB,CAAC,EAAEK,QAAQ,eAAe,CAAC;IACtEN,IAAIQ,cAAcC,IAAI,CAAC,CAACC,KAAKC;QAC3B,IAAID,KAAK,OAAOL,SAASK;QACzB,MAAMD,OAAOE,IAAIC,IAAI;QACrB,MAAMC,WAAWV,SAASI,KAAK,CAAC,KAAKO,KAAK,CAAC,GAAGC,IAAI,CAAC;QACnD,MAAMC,WAAWP,KAAKF,KAAK,CAACM,SAAS,CAAC,EAAE,CAACN,KAAK,CAAC,MAAMU,GAAG,GAAGC,IAAI;QAC/D,MAAMC,OAAOtB,OAAOuB,UAAU,CAAC;QAC/B,MAAMC,QAAQvB,GAAGwB,gBAAgB,CAAClB;QAClCiB,MAAME,EAAE,CAAC,QAAQ,CAACC,OAASL,KAAKM,MAAM,CAACD;QACvCzB,IAAIsB,OAAO,CAACX;YACV,IAAIA,KAAK,OAAOL,SAASK;YACzB,MAAMgB,SAASP,KAAKO,MAAM,CAAC;YAC3BC,QAAQC,GAAG,CAAC,CAAC,KAAK,EAAEF,WAAWV,WAAW,YAAY,YAAY,KAAK,EAAEH,UAAU;YACnFa,WAAWV,WAAWX,SAAS,IAAIwB,MAAM,CAAC,sBAAsB,EAAEhB,UAAU,KAAKR;QACnF;IACF;AACF"}
@@ -1,7 +1,7 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
3
  import keys from 'lodash.keys';
4
- const PLATFORM_FILES = {
4
+ export const PLATFORM_FILES = {
5
5
  win32: {
6
6
  node: [
7
7
  'node.exe'
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/checkMissing.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport keys from 'lodash.keys';\n\nconst PLATFORM_FILES = {\n win32: {\n node: ['node.exe'],\n npm: ['npm', 'npm.cmd'],\n },\n posix: {\n node: ['node'],\n npm: ['npm'],\n },\n};\n\nexport default function checkMissing(dest, options, callback) {\n const platform = options.platform || process.platform;\n const files = PLATFORM_FILES[platform] || PLATFORM_FILES.posix;\n const binPath = platform === 'win32' ? dest : path.join(dest, 'bin');\n\n fs.readdir(binPath, (err, names) => {\n if (err || !names.length) return callback(null, keys(files));\n\n const missing = [];\n for (const key in files) {\n const needed = files[key];\n for (let index = 0; index < needed.length; index++) {\n if (!~names.indexOf(needed[index])) {\n missing.push(key);\n break;\n }\n }\n }\n return callback(null, missing);\n });\n}\n"],"names":["fs","path","keys","PLATFORM_FILES","win32","node","npm","posix","checkMissing","dest","options","callback","platform","process","files","binPath","join","readdir","err","names","length","missing","key","needed","index","indexOf","push"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,OAAOC,UAAU,cAAc;AAE/B,MAAMC,iBAAiB;IACrBC,OAAO;QACLC,MAAM;YAAC;SAAW;QAClBC,KAAK;YAAC;YAAO;SAAU;IACzB;IACAC,OAAO;QACLF,MAAM;YAAC;SAAO;QACdC,KAAK;YAAC;SAAM;IACd;AACF;AAEA,eAAe,SAASE,aAAaC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IAC1D,MAAMC,WAAWF,QAAQE,QAAQ,IAAIC,QAAQD,QAAQ;IACrD,MAAME,QAAQX,cAAc,CAACS,SAAS,IAAIT,eAAeI,KAAK;IAC9D,MAAMQ,UAAUH,aAAa,UAAUH,OAAOR,KAAKe,IAAI,CAACP,MAAM;IAE9DT,GAAGiB,OAAO,CAACF,SAAS,CAACG,KAAKC;QACxB,IAAID,OAAO,CAACC,MAAMC,MAAM,EAAE,OAAOT,SAAS,MAAMT,KAAKY;QAErD,MAAMO,UAAU,EAAE;QAClB,IAAK,MAAMC,OAAOR,MAAO;YACvB,MAAMS,SAAST,KAAK,CAACQ,IAAI;YACzB,IAAK,IAAIE,QAAQ,GAAGA,QAAQD,OAAOH,MAAM,EAAEI,QAAS;gBAClD,IAAI,CAAC,CAACL,MAAMM,OAAO,CAACF,MAAM,CAACC,MAAM,GAAG;oBAClCH,QAAQK,IAAI,CAACJ;oBACb;gBACF;YACF;QACF;QACA,OAAOX,SAAS,MAAMU;IACxB;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/checkMissing.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport keys from 'lodash.keys';\n\nexport const PLATFORM_FILES = {\n win32: {\n node: ['node.exe'],\n npm: ['npm', 'npm.cmd'],\n },\n posix: {\n node: ['node'],\n npm: ['npm'],\n },\n};\n\nexport default function checkMissing(dest, options, callback) {\n const platform = options.platform || process.platform;\n const files = PLATFORM_FILES[platform] || PLATFORM_FILES.posix;\n const binPath = platform === 'win32' ? dest : path.join(dest, 'bin');\n\n fs.readdir(binPath, (err, names) => {\n if (err || !names.length) return callback(null, keys(files));\n\n const missing = [];\n for (const key in files) {\n const needed = files[key];\n for (let index = 0; index < needed.length; index++) {\n if (!~names.indexOf(needed[index])) {\n missing.push(key);\n break;\n }\n }\n }\n return callback(null, missing);\n });\n}\n"],"names":["fs","path","keys","PLATFORM_FILES","win32","node","npm","posix","checkMissing","dest","options","callback","platform","process","files","binPath","join","readdir","err","names","length","missing","key","needed","index","indexOf","push"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,OAAOC,UAAU,cAAc;AAE/B,OAAO,MAAMC,iBAAiB;IAC5BC,OAAO;QACLC,MAAM;YAAC;SAAW;QAClBC,KAAK;YAAC;YAAO;SAAU;IACzB;IACAC,OAAO;QACLF,MAAM;YAAC;SAAO;QACdC,KAAK;YAAC;SAAM;IACd;AACF,EAAE;AAEF,eAAe,SAASE,aAAaC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IAC1D,MAAMC,WAAWF,QAAQE,QAAQ,IAAIC,QAAQD,QAAQ;IACrD,MAAME,QAAQX,cAAc,CAACS,SAAS,IAAIT,eAAeI,KAAK;IAC9D,MAAMQ,UAAUH,aAAa,UAAUH,OAAOR,KAAKe,IAAI,CAACP,MAAM;IAE9DT,GAAGiB,OAAO,CAACF,SAAS,CAACG,KAAKC;QACxB,IAAID,OAAO,CAACC,MAAMC,MAAM,EAAE,OAAOT,SAAS,MAAMT,KAAKY;QAErD,MAAMO,UAAU,EAAE;QAClB,IAAK,MAAMC,OAAOR,MAAO;YACvB,MAAMS,SAAST,KAAK,CAACQ,IAAI;YACzB,IAAK,IAAIE,QAAQ,GAAGA,QAAQD,OAAOH,MAAM,EAAEI,QAAS;gBAClD,IAAI,CAAC,CAACL,MAAMM,OAAO,CAACF,MAAM,CAACC,MAAM,GAAG;oBAClCH,QAAQK,IAAI,CAACJ;oBACb;gBACF;YACF;QACF;QACA,OAAOX,SAAS,MAAMU;IACxB;AACF"}
@@ -1,6 +1,7 @@
1
1
  // <<<<****************************>>>>
2
2
  // Inline until merged: https://github.com/jakejarvis/arch/blob/detect-arm/index.js
3
3
  // <<<<****************************>>>>
4
+ require('./execSync/polyfill.cjs');
4
5
  /*! arch. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */ const cp = require('child_process');
5
6
  const fs = require('fs');
6
7
  const path = require('path');
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/machine/arch.cjs"],"sourcesContent":["// <<<<****************************>>>>\n// Inline until merged: https://github.com/jakejarvis/arch/blob/detect-arm/index.js\n// <<<<****************************>>>>\nrequire('./execSync/polyfill.cjs');\n\n/*! arch. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\nconst cp = require('child_process');\nconst fs = require('fs');\nconst path = require('path');\n\n// <<<<****************************>>>>\nconst isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);\n// <<<<****************************>>>>\n\n/**\n * Returns the operating system's CPU architecture. This is different than\n * `process.arch` or `os.arch()` which returns the architecture the Node.js (or\n * Electron) binary was compiled for.\n */\nmodule.exports = function arch() {\n /**\n * On macOS, we need to detect if x64 Node is running because the CPU is truly\n * an Intel chip, or if it's running on Apple Silicon via Rosetta 2:\n * https://developer.apple.com/documentation/apple-silicon/about-the-rosetta-translation-environment\n */\n if (process.platform === 'darwin') {\n const nativeArm = process.arch === 'arm64';\n const rosettaArm = cp.execSync('sysctl -in sysctl.proc_translated', { encoding: 'utf8' }) === '1\\n';\n\n return nativeArm || rosettaArm ? 'arm64' : 'x64';\n }\n\n /**\n * On Windows, the most reliable way to detect a 64-bit OS from within a 32-bit\n * app is based on the presence of a WOW64 file: %SystemRoot%\\SysNative.\n * See: https://twitter.com/feross/status/776949077208510464\n */\n // <<<<****************************>>>>\n if (isWindows) {\n // <<<<****************************>>>>\n let useEnv = false;\n try {\n useEnv = !!(process.env.SYSTEMROOT && fs.statSync(process.env.SYSTEMROOT));\n } catch (_err) {}\n\n const sysRoot = useEnv ? process.env.SYSTEMROOT : 'C:\\\\Windows';\n\n // If %SystemRoot%\\SysNative exists, we are in a WOW64 FS Redirected application.\n let isWOW64 = false;\n try {\n isWOW64 = !!fs.statSync(path.join(sysRoot, 'sysnative'));\n } catch (_err) {}\n\n return isWOW64 ? 'x64' : 'x86';\n }\n\n /**\n * On Linux, use the `getconf` command to get the architecture.\n */\n if (process.platform === 'linux') {\n try {\n const output1 = cp.execSync('uname -a', { encoding: 'utf8' });\n if (~output1.indexOf('raspberrypi')) return 'arm-pi';\n } catch (_err) {}\n\n const output = cp.execSync('getconf LONG_BIT', { encoding: 'utf8' });\n return output === '64\\n' ? 'x64' : 'x86';\n }\n\n // <<<<****************************>>>>\n /**\n * The running binary is 64-bit, so the OS is clearly 64-bit.\n */\n if (process.arch === 'x64') {\n return 'x64';\n }\n // <<<<****************************>>>>\n\n /**\n * If none of the above, assume the architecture is 32-bit.\n */\n return 'x86';\n};\n"],"names":["require","cp","fs","path","isWindows","process","platform","test","env","OSTYPE","module","exports","arch","nativeArm","rosettaArm","execSync","encoding","useEnv","SYSTEMROOT","statSync","_err","sysRoot","isWOW64","join","output1","indexOf","output"],"mappings":"AAAA,uCAAuC;AACvC,mFAAmF;AACnF,uCAAuC;AACvCA,QAAQ;AAER,2EAA2E,GAC3E,MAAMC,KAAKD,QAAQ;AACnB,MAAME,KAAKF,QAAQ;AACnB,MAAMG,OAAOH,QAAQ;AAErB,uCAAuC;AACvC,MAAMI,YAAYC,QAAQC,QAAQ,KAAK,WAAW,kBAAkBC,IAAI,CAACF,QAAQG,GAAG,CAACC,MAAM;AAC3F,uCAAuC;AAEvC;;;;CAIC,GACDC,OAAOC,OAAO,GAAG,SAASC;IACxB;;;;GAIC,GACD,IAAIP,QAAQC,QAAQ,KAAK,UAAU;QACjC,MAAMO,YAAYR,QAAQO,IAAI,KAAK;QACnC,MAAME,aAAab,GAAGc,QAAQ,CAAC,qCAAqC;YAAEC,UAAU;QAAO,OAAO;QAE9F,OAAOH,aAAaC,aAAa,UAAU;IAC7C;IAEA;;;;GAIC,GACD,uCAAuC;IACvC,IAAIV,WAAW;QACb,uCAAuC;QACvC,IAAIa,SAAS;QACb,IAAI;YACFA,SAAS,CAAC,CAAEZ,CAAAA,QAAQG,GAAG,CAACU,UAAU,IAAIhB,GAAGiB,QAAQ,CAACd,QAAQG,GAAG,CAACU,UAAU,CAAA;QAC1E,EAAE,OAAOE,MAAM,CAAC;QAEhB,MAAMC,UAAUJ,SAASZ,QAAQG,GAAG,CAACU,UAAU,GAAG;QAElD,iFAAiF;QACjF,IAAII,UAAU;QACd,IAAI;YACFA,UAAU,CAAC,CAACpB,GAAGiB,QAAQ,CAAChB,KAAKoB,IAAI,CAACF,SAAS;QAC7C,EAAE,OAAOD,MAAM,CAAC;QAEhB,OAAOE,UAAU,QAAQ;IAC3B;IAEA;;GAEC,GACD,IAAIjB,QAAQC,QAAQ,KAAK,SAAS;QAChC,IAAI;YACF,MAAMkB,UAAUvB,GAAGc,QAAQ,CAAC,YAAY;gBAAEC,UAAU;YAAO;YAC3D,IAAI,CAACQ,QAAQC,OAAO,CAAC,gBAAgB,OAAO;QAC9C,EAAE,OAAOL,MAAM,CAAC;QAEhB,MAAMM,SAASzB,GAAGc,QAAQ,CAAC,oBAAoB;YAAEC,UAAU;QAAO;QAClE,OAAOU,WAAW,SAAS,QAAQ;IACrC;IAEA,uCAAuC;IACvC;;GAEC,GACD,IAAIrB,QAAQO,IAAI,KAAK,OAAO;QAC1B,OAAO;IACT;IACA,uCAAuC;IAEvC;;GAEC,GACD,OAAO;AACT"}
@@ -1,7 +1,7 @@
1
1
  const cp = require('child_process');
2
2
  if (!cp.execSync) {
3
3
  const path = require('path');
4
- const execCallback = path.join(__dirname, 'polyfills', 'execCallback.cjs');
4
+ const execCallback = path.join(__dirname, 'worker.cjs');
5
5
  let functionExec = null; // break dependencies
6
6
  cp.execSync = function execSyncPolyfill(cmd, options = {}) {
7
7
  if (!functionExec) functionExec = require('function-exec-sync');
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/machine/execSync/polyfill.cjs"],"sourcesContent":["const cp = require('child_process');\nif (!cp.execSync) {\n const path = require('path');\n const execCallback = path.join(__dirname, 'worker.cjs');\n\n let functionExec = null; // break dependencies\n cp.execSync = function execSyncPolyfill(cmd, options = {}) {\n if (!functionExec) functionExec = require('function-exec-sync');\n return functionExec({ callbacks: true }, execCallback, cmd, options);\n };\n}\n"],"names":["cp","require","execSync","path","execCallback","join","__dirname","functionExec","execSyncPolyfill","cmd","options","callbacks"],"mappings":"AAAA,MAAMA,KAAKC,QAAQ;AACnB,IAAI,CAACD,GAAGE,QAAQ,EAAE;IAChB,MAAMC,OAAOF,QAAQ;IACrB,MAAMG,eAAeD,KAAKE,IAAI,CAACC,WAAW;IAE1C,IAAIC,eAAe,MAAM,qBAAqB;IAC9CP,GAAGE,QAAQ,GAAG,SAASM,iBAAiBC,GAAG,EAAEC,UAAU,CAAC,CAAC;QACvD,IAAI,CAACH,cAAcA,eAAeN,QAAQ;QAC1C,OAAOM,aAAa;YAAEI,WAAW;QAAK,GAAGP,cAAcK,KAAKC;IAC9D;AACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/machine/execSync/worker.cjs"],"sourcesContent":["const cp = require('child_process');\n\nmodule.exports = function execCallback(cmd, options, callback) {\n return cp.exec(cmd, options, callback);\n};\n"],"names":["cp","require","module","exports","execCallback","cmd","options","callback","exec"],"mappings":"AAAA,MAAMA,KAAKC,QAAQ;AAEnBC,OAAOC,OAAO,GAAG,SAASC,aAAaC,GAAG,EAAEC,OAAO,EAAEC,QAAQ;IAC3D,OAAOP,GAAGQ,IAAI,CAACH,KAAKC,SAASC;AAC/B"}
@@ -8,18 +8,11 @@ import installNPM from '../installNPM/index.mjs';
8
8
  import installNode from '../installNode/index.mjs';
9
9
  import checkMissing from '../lib/checkMissing.mjs';
10
10
  import ensureDestinationParent from '../lib/ensureDestinationParent.mjs';
11
- const DEFAULT_OPTIONS = {
12
- downloadURL: function downloadURL(relativePath) {
13
- return `https://nodejs.org/dist/${relativePath}`;
14
- }
15
- };
16
11
  export default function install(versionExpression, options, callback) {
17
12
  const storagePaths = options.storagePath ? createStoragePaths(options.storagePath) : DEFAULT_STORAGE_PATHS;
18
13
  options = {
19
14
  ...storagePaths,
20
- ...DEFAULT_OPTIONS,
21
- ...options,
22
- path: 'raw'
15
+ ...options
23
16
  };
24
17
  resolveVersions(versionExpression, options, (err, versions)=>{
25
18
  if (err) return callback(err);
@@ -28,7 +21,7 @@ export default function install(versionExpression, options, callback) {
28
21
  mkdirp(options.cachePath, (err)=>{
29
22
  if (err) return callback(err);
30
23
  const version = versions[0];
31
- const result = createResult(options, version.version);
24
+ const result = createResult(options, version);
32
25
  checkMissing(result.installPath, options, (err, missing)=>{
33
26
  if (err || !missing.length) return callback(err, result);
34
27
  const queue = new Queue(1);
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/workers/install.ts"],"sourcesContent":["import mkdirp from 'mkdirp-classic';\nimport Queue from 'queue-cb';\nimport { DEFAULT_STORAGE_PATHS } from '../constants';\n\nimport createResult from '../createResult';\nimport createStoragePaths from '../createStoragePaths';\n\nimport resolveVersions from 'node-resolve-versions';\n\nimport installNPM from '../installNPM/index';\nimport installNode from '../installNode/index';\nimport checkMissing from '../lib/checkMissing';\nimport ensureDestinationParent from '../lib/ensureDestinationParent';\n\nconst DEFAULT_OPTIONS = {\n downloadURL: function downloadURL(relativePath) {\n return `https://nodejs.org/dist/${relativePath}`;\n },\n};\n\nexport default function install(versionExpression, options, callback) {\n const storagePaths = options.storagePath ? createStoragePaths(options.storagePath) : DEFAULT_STORAGE_PATHS;\n\n options = { ...storagePaths, ...DEFAULT_OPTIONS, ...options, path: 'raw' };\n resolveVersions(versionExpression, options, (err, versions) => {\n if (err) return callback(err);\n if (!versions.length) return callback(new Error(`Could not resolve versions for: ${versionExpression}`));\n if (versions.length !== 1) return callback(new Error(`Version ${versionExpression} resolved to multiple versions: ${versions.map((x) => x.version)}. Expecting one.`));\n\n mkdirp(options.cachePath, (err) => {\n if (err) return callback(err);\n const version = versions[0];\n const result = createResult(options, version.version);\n\n checkMissing(result.installPath, options, (err, missing) => {\n if (err || !missing.length) return callback(err, result);\n\n const queue = new Queue(1);\n queue.defer(ensureDestinationParent.bind(null, result.installPath));\n !~missing.indexOf('node') || queue.defer(installNode.bind(null, version, result.installPath, options));\n !~missing.indexOf('npm') || queue.defer(installNPM.bind(null, version, result.installPath, options));\n queue.await((err) => (err ? callback(err) : callback(null, result)));\n });\n });\n });\n}\n"],"names":["mkdirp","Queue","DEFAULT_STORAGE_PATHS","createResult","createStoragePaths","resolveVersions","installNPM","installNode","checkMissing","ensureDestinationParent","DEFAULT_OPTIONS","downloadURL","relativePath","install","versionExpression","options","callback","storagePaths","storagePath","path","err","versions","length","Error","map","x","version","cachePath","result","installPath","missing","queue","defer","bind","indexOf","await"],"mappings":"AAAA,OAAOA,YAAY,iBAAiB;AACpC,OAAOC,WAAW,WAAW;AAC7B,SAASC,qBAAqB,QAAQ,eAAe;AAErD,OAAOC,kBAAkB,kBAAkB;AAC3C,OAAOC,wBAAwB,wBAAwB;AAEvD,OAAOC,qBAAqB,wBAAwB;AAEpD,OAAOC,gBAAgB,sBAAsB;AAC7C,OAAOC,iBAAiB,uBAAuB;AAC/C,OAAOC,kBAAkB,sBAAsB;AAC/C,OAAOC,6BAA6B,iCAAiC;AAErE,MAAMC,kBAAkB;IACtBC,aAAa,SAASA,YAAYC,YAAY;QAC5C,OAAO,CAAC,wBAAwB,EAAEA,cAAc;IAClD;AACF;AAEA,eAAe,SAASC,QAAQC,iBAAiB,EAAEC,OAAO,EAAEC,QAAQ;IAClE,MAAMC,eAAeF,QAAQG,WAAW,GAAGd,mBAAmBW,QAAQG,WAAW,IAAIhB;IAErFa,UAAU;QAAE,GAAGE,YAAY;QAAE,GAAGP,eAAe;QAAE,GAAGK,OAAO;QAAEI,MAAM;IAAM;IACzEd,gBAAgBS,mBAAmBC,SAAS,CAACK,KAAKC;QAChD,IAAID,KAAK,OAAOJ,SAASI;QACzB,IAAI,CAACC,SAASC,MAAM,EAAE,OAAON,SAAS,IAAIO,MAAM,CAAC,gCAAgC,EAAET,mBAAmB;QACtG,IAAIO,SAASC,MAAM,KAAK,GAAG,OAAON,SAAS,IAAIO,MAAM,CAAC,QAAQ,EAAET,kBAAkB,gCAAgC,EAAEO,SAASG,GAAG,CAAC,CAACC,IAAMA,EAAEC,OAAO,EAAE,gBAAgB,CAAC;QAEpK1B,OAAOe,QAAQY,SAAS,EAAE,CAACP;YACzB,IAAIA,KAAK,OAAOJ,SAASI;YACzB,MAAMM,UAAUL,QAAQ,CAAC,EAAE;YAC3B,MAAMO,SAASzB,aAAaY,SAASW,QAAQA,OAAO;YAEpDlB,aAAaoB,OAAOC,WAAW,EAAEd,SAAS,CAACK,KAAKU;gBAC9C,IAAIV,OAAO,CAACU,QAAQR,MAAM,EAAE,OAAON,SAASI,KAAKQ;gBAEjD,MAAMG,QAAQ,IAAI9B,MAAM;gBACxB8B,MAAMC,KAAK,CAACvB,wBAAwBwB,IAAI,CAAC,MAAML,OAAOC,WAAW;gBACjE,CAAC,CAACC,QAAQI,OAAO,CAAC,WAAWH,MAAMC,KAAK,CAACzB,YAAY0B,IAAI,CAAC,MAAMP,SAASE,OAAOC,WAAW,EAAEd;gBAC7F,CAAC,CAACe,QAAQI,OAAO,CAAC,UAAUH,MAAMC,KAAK,CAAC1B,WAAW2B,IAAI,CAAC,MAAMP,SAASE,OAAOC,WAAW,EAAEd;gBAC3FgB,MAAMI,KAAK,CAAC,CAACf,MAASA,MAAMJ,SAASI,OAAOJ,SAAS,MAAMY;YAC7D;QACF;IACF;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/workers/install.ts"],"sourcesContent":["import mkdirp from 'mkdirp-classic';\nimport Queue from 'queue-cb';\nimport { DEFAULT_STORAGE_PATHS } from '../constants';\n\nimport createResult from '../createResult';\nimport createStoragePaths from '../createStoragePaths';\n\nimport resolveVersions from 'node-resolve-versions';\n\nimport installNPM from '../installNPM/index';\nimport installNode from '../installNode/index';\nimport checkMissing from '../lib/checkMissing';\nimport ensureDestinationParent from '../lib/ensureDestinationParent';\n\nexport default function install(versionExpression, options, callback) {\n const storagePaths = options.storagePath ? createStoragePaths(options.storagePath) : DEFAULT_STORAGE_PATHS;\n\n options = { ...storagePaths, ...options };\n resolveVersions(versionExpression, options, (err, versions) => {\n if (err) return callback(err);\n if (!versions.length) return callback(new Error(`Could not resolve versions for: ${versionExpression}`));\n if (versions.length !== 1) return callback(new Error(`Version ${versionExpression} resolved to multiple versions: ${versions.map((x) => x.version)}. Expecting one.`));\n\n mkdirp(options.cachePath, (err) => {\n if (err) return callback(err);\n const version = versions[0];\n const result = createResult(options, version);\n\n checkMissing(result.installPath, options, (err, missing) => {\n if (err || !missing.length) return callback(err, result);\n\n const queue = new Queue(1);\n queue.defer(ensureDestinationParent.bind(null, result.installPath));\n !~missing.indexOf('node') || queue.defer(installNode.bind(null, version, result.installPath, options));\n !~missing.indexOf('npm') || queue.defer(installNPM.bind(null, version, result.installPath, options));\n queue.await((err) => (err ? callback(err) : callback(null, result)));\n });\n });\n });\n}\n"],"names":["mkdirp","Queue","DEFAULT_STORAGE_PATHS","createResult","createStoragePaths","resolveVersions","installNPM","installNode","checkMissing","ensureDestinationParent","install","versionExpression","options","callback","storagePaths","storagePath","err","versions","length","Error","map","x","version","cachePath","result","installPath","missing","queue","defer","bind","indexOf","await"],"mappings":"AAAA,OAAOA,YAAY,iBAAiB;AACpC,OAAOC,WAAW,WAAW;AAC7B,SAASC,qBAAqB,QAAQ,eAAe;AAErD,OAAOC,kBAAkB,kBAAkB;AAC3C,OAAOC,wBAAwB,wBAAwB;AAEvD,OAAOC,qBAAqB,wBAAwB;AAEpD,OAAOC,gBAAgB,sBAAsB;AAC7C,OAAOC,iBAAiB,uBAAuB;AAC/C,OAAOC,kBAAkB,sBAAsB;AAC/C,OAAOC,6BAA6B,iCAAiC;AAErE,eAAe,SAASC,QAAQC,iBAAiB,EAAEC,OAAO,EAAEC,QAAQ;IAClE,MAAMC,eAAeF,QAAQG,WAAW,GAAGX,mBAAmBQ,QAAQG,WAAW,IAAIb;IAErFU,UAAU;QAAE,GAAGE,YAAY;QAAE,GAAGF,OAAO;IAAC;IACxCP,gBAAgBM,mBAAmBC,SAAS,CAACI,KAAKC;QAChD,IAAID,KAAK,OAAOH,SAASG;QACzB,IAAI,CAACC,SAASC,MAAM,EAAE,OAAOL,SAAS,IAAIM,MAAM,CAAC,gCAAgC,EAAER,mBAAmB;QACtG,IAAIM,SAASC,MAAM,KAAK,GAAG,OAAOL,SAAS,IAAIM,MAAM,CAAC,QAAQ,EAAER,kBAAkB,gCAAgC,EAAEM,SAASG,GAAG,CAAC,CAACC,IAAMA,EAAEC,OAAO,EAAE,gBAAgB,CAAC;QAEpKtB,OAAOY,QAAQW,SAAS,EAAE,CAACP;YACzB,IAAIA,KAAK,OAAOH,SAASG;YACzB,MAAMM,UAAUL,QAAQ,CAAC,EAAE;YAC3B,MAAMO,SAASrB,aAAaS,SAASU;YAErCd,aAAagB,OAAOC,WAAW,EAAEb,SAAS,CAACI,KAAKU;gBAC9C,IAAIV,OAAO,CAACU,QAAQR,MAAM,EAAE,OAAOL,SAASG,KAAKQ;gBAEjD,MAAMG,QAAQ,IAAI1B,MAAM;gBACxB0B,MAAMC,KAAK,CAACnB,wBAAwBoB,IAAI,CAAC,MAAML,OAAOC,WAAW;gBACjE,CAAC,CAACC,QAAQI,OAAO,CAAC,WAAWH,MAAMC,KAAK,CAACrB,YAAYsB,IAAI,CAAC,MAAMP,SAASE,OAAOC,WAAW,EAAEb;gBAC7F,CAAC,CAACc,QAAQI,OAAO,CAAC,UAAUH,MAAMC,KAAK,CAACtB,WAAWuB,IAAI,CAAC,MAAMP,SAASE,OAAOC,WAAW,EAAEb;gBAC3Fe,MAAMI,KAAK,CAAC,CAACf,MAASA,MAAMH,SAASG,OAAOH,SAAS,MAAMW;YAC7D;QACF;IACF;AACF"}
@@ -2,3 +2,29 @@ export declare const isWindows: boolean;
2
2
  export declare const NODE: string;
3
3
  export declare const DEFAULT_STORAGE_PATH: any;
4
4
  export declare const DEFAULT_STORAGE_PATHS: import("./types").StorageLocations;
5
+ export declare const EXTENSIONS_COMPRESSED: string[];
6
+ export declare const NODE_DIST_BASE_URL = "https://nodejs.org/dist";
7
+ export declare const NODE_SCHEDULES_URL = "https://raw.githubusercontent.com/nodejs/Release/master/schedule.json";
8
+ export declare const NPM_DIST_URL = "https://registry.npmjs.org/npm";
9
+ export declare const NPM_DIST_TAGS_URL = "https://registry.npmjs.org/-/package/npm/dist-tags";
10
+ export declare const NPM_MIN_VERSION = 3;
11
+ export declare const NPM_PLATFORM_FILES: {
12
+ win32: ({
13
+ src: any;
14
+ dest: string;
15
+ optional?: undefined;
16
+ } | {
17
+ src: any;
18
+ dest: string;
19
+ optional: boolean;
20
+ })[];
21
+ posix: ({
22
+ src: any;
23
+ dest: string;
24
+ optional?: undefined;
25
+ } | {
26
+ src: any;
27
+ dest: string;
28
+ optional: boolean;
29
+ })[];
30
+ };
@@ -1,4 +1,3 @@
1
- import './polyfills.cjs';
2
1
  import type { InstallCallback, InstallOptions, InstallResult } from './types';
3
2
  export type * from './types';
4
3
  export default function install(versionExpression: string, options?: InstallOptions | InstallCallback, callback?: InstallCallback): undefined | Promise<InstallResult>;
@@ -1 +1 @@
1
- export default function installCompressed(relativePath: any, dest: any, _record: any, options: any, callback: any): void;
1
+ export default function installCompressed(distPath: any, dest: any, options: any, callback: any): void;
@@ -1 +1 @@
1
- export default function installExe(relativePath: any, dest: any, record: any, options: any, callback: any): void;
1
+ export default function installExe(distPath: any, dest: any, options: any, callback: any): void;
@@ -0,0 +1 @@
1
+ export default function installFilename(filename: any, version: any, dest: any, options: any, callback: any): any;
@@ -1 +1 @@
1
- export default function installDefault(buildPath: any, dest: any, _options: any, callback: any): void;
1
+ export default function installPosix(buildPath: any, dest: any, _options: any, callback: any): void;
@@ -1 +1 @@
1
- export default function InstallSource(relativePath: any, dest: any, _record: any, options: any, callback: any): void;
1
+ export default function InstallSource(distPath: any, dest: any, options: any, callback: any): void;
@@ -0,0 +1 @@
1
+ export default function validateDownload(distPath: any, installPath: any, callback: any): void;
@@ -1 +1,11 @@
1
+ export declare const PLATFORM_FILES: {
2
+ win32: {
3
+ node: string[];
4
+ npm: string[];
5
+ };
6
+ posix: {
7
+ node: string[];
8
+ npm: string[];
9
+ };
10
+ };
1
11
  export default function checkMissing(dest: any, options: any, callback: any): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-install-release",
3
- "version": "1.7.5",
3
+ "version": "1.7.7",
4
4
  "description": "Cross-platform solution for installing releases of Node.js",
5
5
  "keywords": [
6
6
  "node",
@@ -43,20 +43,18 @@
43
43
  "version": "tsds version"
44
44
  },
45
45
  "dependencies": {
46
- "cross-spawn-cb": "^2.0.0",
47
- "end-with": "^1.0.2",
46
+ "cross-spawn-cb": "^2.0.3",
47
+ "end-of-stream": "^1.4.4",
48
48
  "exit": "^0.1.2",
49
49
  "fast-extract": "^1.3.1",
50
50
  "fs-access-compat": "^1.0.3",
51
- "function-exec-sync": "^1.1.5",
51
+ "function-exec-sync": "^1.1.6",
52
52
  "get-remote": "^1.3.2",
53
53
  "getopts-compat": "^2.2.5",
54
54
  "homedir-polyfill": "^1.0.3",
55
- "isarray": "^2.0.5",
56
- "lodash.find": "^4.6.0",
57
55
  "lodash.keys": "^4.2.0",
58
56
  "mkdirp-classic": "^0.5.3",
59
- "node-filename-to-dist-paths": "^0.2.5",
57
+ "node-filename-to-dist-paths": "^1.1.3",
60
58
  "node-resolve-versions": "^1.0.5",
61
59
  "pump": "^3.0.2",
62
60
  "queue-cb": "^1.4.4",
@@ -66,9 +64,8 @@
66
64
  "devDependencies": {
67
65
  "@biomejs/biome": "^1.9.4",
68
66
  "@types/mocha": "^10.0.10",
69
- "@types/node": "^22.10.3",
67
+ "@types/node": "^22.10.5",
70
68
  "cr": "^0.1.0",
71
- "depcheck": "^1.4.7",
72
69
  "fs-exists-sync": "^0.1.0",
73
70
  "is-version": "^0.2.1",
74
71
  "node-version-utils": "^1.2.1",
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return findDistPaths;
9
- }
10
- });
11
- var _nodefilenametodistpaths = /*#__PURE__*/ _interop_require_default(require("node-filename-to-dist-paths"));
12
- var _prebuilts = /*#__PURE__*/ _interop_require_default(require("./prebuilts.cjs"));
13
- function _interop_require_default(obj) {
14
- return obj && obj.__esModule ? obj : {
15
- default: obj
16
- };
17
- }
18
- function findDistPaths(version, options) {
19
- var filenames = options.filename ? [
20
- options.filename
21
- ] : (0, _prebuilts.default)(options);
22
- for(var index = 0; index < filenames.length; index++){
23
- var filename = filenames[index];
24
- if (!~version.files.indexOf(filename)) continue;
25
- var relativePaths = (0, _nodefilenametodistpaths.default)(filename, version.version);
26
- if (relativePaths && relativePaths.length) return {
27
- version: version.version,
28
- filename: filename,
29
- relativePaths: relativePaths
30
- };
31
- }
32
- return null;
33
- }
34
- /* 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; }