node-install-release 1.19.1 → 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 (68) hide show
  1. package/dist/cjs/cli.js +62 -2
  2. package/dist/cjs/cli.js.map +1 -1
  3. package/dist/cjs/installNPM/installLib.js +7 -4
  4. package/dist/cjs/installNPM/installLib.js.map +1 -1
  5. package/dist/cjs/installNode/index.d.cts +2 -2
  6. package/dist/cjs/installNode/index.d.ts +2 -2
  7. package/dist/cjs/installNode/index.js.map +1 -1
  8. package/dist/cjs/installNode/installCompressed.d.cts +2 -2
  9. package/dist/cjs/installNode/installCompressed.d.ts +2 -2
  10. package/dist/cjs/installNode/installCompressed.js.map +1 -1
  11. package/dist/cjs/installNode/installExe.d.cts +2 -2
  12. package/dist/cjs/installNode/installExe.d.ts +2 -2
  13. package/dist/cjs/installNode/installExe.js.map +1 -1
  14. package/dist/cjs/installNode/installFilename.d.cts +2 -2
  15. package/dist/cjs/installNode/installFilename.d.ts +2 -2
  16. package/dist/cjs/installNode/installFilename.js +6 -2
  17. package/dist/cjs/installNode/installFilename.js.map +1 -1
  18. package/dist/cjs/installNode/installSource/buildPosix.js +7 -3
  19. package/dist/cjs/installNode/installSource/buildPosix.js.map +1 -1
  20. package/dist/cjs/installNode/installSource/buildWin32.js +6 -2
  21. package/dist/cjs/installNode/installSource/buildWin32.js.map +1 -1
  22. package/dist/cjs/installNode/installSource/index.d.cts +2 -2
  23. package/dist/cjs/installNode/installSource/index.d.ts +2 -2
  24. package/dist/cjs/installNode/installSource/index.js.map +1 -1
  25. package/dist/cjs/installNode/validateDownload.js +5 -2
  26. package/dist/cjs/installNode/validateDownload.js.map +1 -1
  27. package/dist/cjs/lib/conditionalCache.js +6 -2
  28. package/dist/cjs/lib/conditionalCache.js.map +1 -1
  29. package/dist/cjs/lib/copyFile.js +5 -2
  30. package/dist/cjs/lib/copyFile.js.map +1 -1
  31. package/dist/cjs/lib/extract.js +9 -6
  32. package/dist/cjs/lib/extract.js.map +1 -1
  33. package/dist/cjs/types.d.cts +1 -0
  34. package/dist/cjs/types.d.ts +1 -0
  35. package/dist/cjs/workers/install.js +47 -13
  36. package/dist/cjs/workers/install.js.map +1 -1
  37. package/dist/esm/cli.js +19 -3
  38. package/dist/esm/cli.js.map +1 -1
  39. package/dist/esm/installNPM/installLib.js +5 -2
  40. package/dist/esm/installNPM/installLib.js.map +1 -1
  41. package/dist/esm/installNode/index.d.ts +2 -2
  42. package/dist/esm/installNode/index.js.map +1 -1
  43. package/dist/esm/installNode/installCompressed.d.ts +2 -2
  44. package/dist/esm/installNode/installCompressed.js.map +1 -1
  45. package/dist/esm/installNode/installExe.d.ts +2 -2
  46. package/dist/esm/installNode/installExe.js.map +1 -1
  47. package/dist/esm/installNode/installFilename.d.ts +2 -2
  48. package/dist/esm/installNode/installFilename.js +5 -1
  49. package/dist/esm/installNode/installFilename.js.map +1 -1
  50. package/dist/esm/installNode/installSource/buildPosix.js +5 -1
  51. package/dist/esm/installNode/installSource/buildPosix.js.map +1 -1
  52. package/dist/esm/installNode/installSource/buildWin32.js +5 -1
  53. package/dist/esm/installNode/installSource/buildWin32.js.map +1 -1
  54. package/dist/esm/installNode/installSource/index.d.ts +2 -2
  55. package/dist/esm/installNode/installSource/index.js.map +1 -1
  56. package/dist/esm/installNode/validateDownload.js +4 -1
  57. package/dist/esm/installNode/validateDownload.js.map +1 -1
  58. package/dist/esm/lib/conditionalCache.js +6 -2
  59. package/dist/esm/lib/conditionalCache.js.map +1 -1
  60. package/dist/esm/lib/copyFile.js +7 -2
  61. package/dist/esm/lib/copyFile.js.map +1 -1
  62. package/dist/esm/lib/extract.js +8 -5
  63. package/dist/esm/lib/extract.js.map +1 -1
  64. package/dist/esm/types.d.ts +1 -0
  65. package/dist/esm/types.js.map +1 -1
  66. package/dist/esm/workers/install.js +23 -14
  67. package/dist/esm/workers/install.js.map +1 -1
  68. package/package.json +7 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/copyFile.ts"],"sourcesContent":["import { copyFile } from 'fs-copy-compat';\nimport { safeRm } from 'fs-remove-compat';\nimport Queue from 'queue-cb';\nimport type { NoParamCallback } from '../types.ts';\n\nimport ensureDestinationParent from './ensureDestinationParent.ts';\n\nexport default function safeCopyFile(src: string, dest: string, callback: NoParamCallback) {\n const queue = new Queue(1);\n\n queue.defer(ensureDestinationParent.bind(null, dest));\n queue.defer((cb) => safeRm(dest, (err) => cb(err)));\n queue.defer((cb) => copyFile(src, dest, (err) => cb(err)));\n queue.await(callback);\n}\n"],"names":["safeCopyFile","src","dest","callback","queue","Queue","defer","ensureDestinationParent","bind","cb","safeRm","err","copyFile","await"],"mappings":";;;;+BAOA;;;eAAwBA;;;4BAPC;8BACF;8DACL;gFAGkB;;;;;;AAErB,SAASA,aAAaC,GAAW,EAAEC,IAAY,EAAEC,QAAyB;IACvF,IAAMC,QAAQ,IAAIC,gBAAK,CAAC;IAExBD,MAAME,KAAK,CAACC,kCAAuB,CAACC,IAAI,CAAC,MAAMN;IAC/CE,MAAME,KAAK,CAAC,SAACG;eAAOC,IAAAA,sBAAM,EAACR,MAAM,SAACS;mBAAQF,GAAGE;;;IAC7CP,MAAME,KAAK,CAAC,SAACG;eAAOG,IAAAA,sBAAQ,EAACX,KAAKC,MAAM,SAACS;mBAAQF,GAAGE;;;IACpDP,MAAMS,KAAK,CAACV;AACd"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/copyFile.ts"],"sourcesContent":["import { safeRm } from 'fs-remove-compat';\nimport Module from 'module';\nimport Queue from 'queue-cb';\nimport type { NoParamCallback } from '../types.ts';\n\nimport ensureDestinationParent from './ensureDestinationParent.ts';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\nexport default function safeCopyFile(src: string, dest: string, callback: NoParamCallback) {\n const queue = new Queue(1);\n\n queue.defer(ensureDestinationParent.bind(null, dest));\n queue.defer((cb) => safeRm(dest, (err) => cb(err)));\n queue.defer((cb) => {\n // deferred: fs-copy-compat is only needed when a file is actually copied\n const { copyFile } = _require('fs-copy-compat');\n copyFile(src, dest, (err: Error | null) => cb(err));\n });\n queue.await(callback);\n}\n"],"names":["safeCopyFile","_require","require","Module","createRequire","src","dest","callback","queue","Queue","defer","ensureDestinationParent","bind","cb","safeRm","err","copyFile","await"],"mappings":";;;;+BASA;;;eAAwBA;;;8BATD;6DACJ;8DACD;gFAGkB;;;;;;AAEpC,IAAMC,WAAW,OAAOC,YAAY,cAAcC,eAAM,CAACC,aAAa,CAAC,uDAAmBF;AAE3E,SAASF,aAAaK,GAAW,EAAEC,IAAY,EAAEC,QAAyB;IACvF,IAAMC,QAAQ,IAAIC,gBAAK,CAAC;IAExBD,MAAME,KAAK,CAACC,kCAAuB,CAACC,IAAI,CAAC,MAAMN;IAC/CE,MAAME,KAAK,CAAC,SAACG;eAAOC,IAAAA,sBAAM,EAACR,MAAM,SAACS;mBAAQF,GAAGE;;;IAC7CP,MAAME,KAAK,CAAC,SAACG;QACX,yEAAyE;QACzE,IAAM,AAAEG,WAAaf,SAAS,kBAAtBe;QACRA,SAASX,KAAKC,MAAM,SAACS;mBAAsBF,GAAGE;;IAChD;IACAP,MAAMS,KAAK,CAACV;AACd"}
@@ -8,8 +8,8 @@ Object.defineProperty(exports, "default", {
8
8
  return extract;
9
9
  }
10
10
  });
11
- var _fastextract = /*#__PURE__*/ _interop_require_default(require("fast-extract"));
12
11
  var _mkdirpclassic = /*#__PURE__*/ _interop_require_default(require("mkdirp-classic"));
12
+ var _module = /*#__PURE__*/ _interop_require_default(require("module"));
13
13
  var _path = /*#__PURE__*/ _interop_require_default(require("path"));
14
14
  var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb"));
15
15
  function _define_property(obj, key, value) {
@@ -43,20 +43,23 @@ function _object_spread(target) {
43
43
  }
44
44
  return target;
45
45
  }
46
+ var _require = typeof require === 'undefined' ? _module.default.createRequire(require("url").pathToFileURL(__filename).toString()) : require;
46
47
  function extract(src, dest, options, callback) {
47
- callback = typeof options === 'function' ? options : callback;
48
- options = typeof options === 'function' ? {} : options;
48
+ var done = typeof options === 'function' ? options : callback;
49
49
  var extractOptions = _object_spread({
50
50
  strip: 1,
51
51
  time: 1000
52
- }, options);
52
+ }, typeof options === 'function' ? {} : options);
53
+ // deferred: fast-extract pulls tar/zip/7z/xz/bzip2 decompressors, only needed when an archive is actually extracted
54
+ var fastExtractModule = _require('fast-extract');
55
+ var fastExtract = fastExtractModule.default || fastExtractModule;
53
56
  var queue = new _queuecb.default(1);
54
57
  queue.defer(function(cb) {
55
58
  return (0, _mkdirpclassic.default)(_path.default.dirname(dest), function(err) {
56
59
  return cb(err);
57
60
  });
58
61
  });
59
- queue.defer(_fastextract.default.bind(null, src, dest, extractOptions));
60
- queue.await(callback);
62
+ queue.defer(fastExtract.bind(null, src, dest, extractOptions));
63
+ queue.await(done);
61
64
  }
62
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 fastExtract from 'fast-extract';\nimport mkdirp from 'mkdirp-classic';\nimport path from 'path';\nimport Queue from 'queue-cb';\n\nimport type { NoParamCallback } from '../types.ts';\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 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","src","dest","options","callback","extractOptions","strip","time","queue","Queue","defer","cb","mkdirp","path","dirname","err","fastExtract","bind","await"],"mappings":";;;;+BAYA;;;eAAwBA;;;kEAZA;oEACL;2DACF;8DACC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASH,SAASA,QAAQC,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,IAAMK,QAAQ,IAAIC,gBAAK,CAAC;IACxBD,MAAME,KAAK,CAAC,SAACC;eAAOC,IAAAA,sBAAM,EAACC,aAAI,CAACC,OAAO,CAACZ,OAAO,SAACa;mBAAQJ,GAAGI;;;IAC3DP,MAAME,KAAK,CAACM,oBAAW,CAACC,IAAI,CAAC,MAAMhB,KAAKC,MAAMG;IAC9CG,MAAMU,KAAK,CAACd;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;
@@ -12,8 +12,7 @@ var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
12
12
  var _fsremovecompat = require("fs-remove-compat");
13
13
  var _isversion = /*#__PURE__*/ _interop_require_default(require("is-version"));
14
14
  var _mkdirpclassic = /*#__PURE__*/ _interop_require_default(require("mkdirp-classic"));
15
- var _nodefilenametodistpaths = require("node-filename-to-dist-paths");
16
- var _noderesolveversions = /*#__PURE__*/ _interop_require_default(require("node-resolve-versions"));
15
+ var _module = /*#__PURE__*/ _interop_require_default(require("module"));
17
16
  var _path = /*#__PURE__*/ _interop_require_default(require("path"));
18
17
  var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb"));
19
18
  var _tempsuffix = /*#__PURE__*/ _interop_require_default(require("temp-suffix"));
@@ -56,19 +55,52 @@ function _object_spread(target) {
56
55
  }
57
56
  return target;
58
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
+ }
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
61
- if ((0, _isversion.default)(versionExpression)) callback(undefined, [
84
+ if ((0, _isversion.default)(versionExpression)) return callback(undefined, [
62
85
  versionExpression
63
86
  ]);
64
- else (0, _noderesolveversions.default)(versionExpression, options, function(err, result) {
87
+ // deferred: node-resolve-versions pulls node-semvers/fetch-json-cache, only needed for a non-literal version expression
88
+ var resolveVersionsModule = _require('node-resolve-versions');
89
+ var resolveVersions = resolveVersionsModule.default || resolveVersionsModule;
90
+ resolveVersions(versionExpression, options, function(err, result) {
65
91
  return callback(err, result);
66
92
  });
67
93
  }
68
94
  function install(versionExpression, options, callback) {
95
+ var _options_cachePath, _options_buildPath, _options_installPath;
69
96
  var storagePaths = options.storagePath ? (0, _createStoragePathsts.default)(options.storagePath) : _constantsts.DEFAULT_STORAGE_PATHS;
70
- options = _object_spread({}, storagePaths, options, (0, _getTargetts.default)(options));
71
- 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) {
72
104
  if (err) return callback(err);
73
105
  if (!versions || !versions.length) {
74
106
  callback(new Error("Could not resolve versions for: ".concat(versionExpression)));
@@ -81,7 +113,7 @@ function install(versionExpression, options, callback) {
81
113
  return;
82
114
  }
83
115
  var version = versions[0];
84
- var result = (0, _createResultts.default)(options, version);
116
+ var result = (0, _createResultts.default)(resolved, version);
85
117
  // Fast path: with atomic installs, folder exists = complete installation
86
118
  _fs.default.stat(result.installPath, function(err) {
87
119
  if (!err) return callback(undefined, result);
@@ -89,22 +121,24 @@ function install(versionExpression, options, callback) {
89
121
  var tempPath = (0, _tempsuffix.default)(result.installPath);
90
122
  var queue = new _queuecb.default(1);
91
123
  queue.defer(function(cb) {
92
- return (0, _mkdirpclassic.default)(options.cachePath, function(err) {
124
+ return (0, _mkdirpclassic.default)(resolved.cachePath, function(err) {
93
125
  return cb(err);
94
126
  });
95
127
  });
96
128
  queue.defer(_ensureDestinationParentts.default.bind(null, tempPath));
97
129
  // Install node to temp folder
98
- queue.defer(_indexts.default.bind(null, version, tempPath, options));
130
+ queue.defer(_indexts.default.bind(null, version, tempPath, resolved));
99
131
  // Check and install npm to temp folder
100
132
  // Skip npm download only if bundled npm is modern (>= 3)
101
133
  queue.defer(function(cb) {
102
- (0, _checkMissingts.default)(tempPath, options, function(err, npmMissing) {
134
+ (0, _checkMissingts.default)(tempPath, resolved, function(err, npmMissing) {
103
135
  if (err) return cb(err);
104
136
  // npm not bundled with node - download it
105
- 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);
106
138
  // npm is present (bundled with node) - keep it unless the dist index positively says it is ancient (<3)
107
- (0, _nodefilenametodistpaths.getDistAsync)(version, function(_err, dist) {
139
+ // deferred: node-filename-to-dist-paths pulls fetch-json-cache, only needed to check a bundled npm's age
140
+ var getDistAsync = _require('node-filename-to-dist-paths').getDistAsync;
141
+ getDistAsync(version, function(_err, dist) {
108
142
  var bundledNpmIsAncient = dist && dist.npm && +dist.npm.split('.')[0] < 3;
109
143
  if (!bundledNpmIsAncient) return cb(); // unknown version keeps the bundled npm
110
144
  // old npm (<3) is buggy - delete it so installNPM can override
@@ -112,7 +146,7 @@ function install(versionExpression, options, callback) {
112
146
  var libPath = platform === 'win32' ? tempPath : _path.default.join(tempPath, 'lib');
113
147
  var npmPath = _path.default.join(libPath, 'node_modules', 'npm');
114
148
  (0, _fsremovecompat.safeRm)(npmPath, function() {
115
- return (0, _indexts1.default)(version, tempPath, options, cb);
149
+ return (0, _indexts1.default)(version, tempPath, resolved, cb);
116
150
  });
117
151
  });
118
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 { getDistAsync } from 'node-filename-to-dist-paths';\nimport resolveVersions from 'node-resolve-versions';\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\ntype GetVersionsCallback = (error?: Error | null, results?: string[]) => void;\nfunction getVersions(versionExpression: string, options: InstallOptions, callback: GetVersionsCallback) {\n // short circuit\n if (isVersion(versionExpression)) callback(undefined, [versionExpression]);\n else 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 getDistAsync(version, (_err, dist) => {\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","getVersions","versionExpression","options","callback","isVersion","undefined","resolveVersions","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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"}
package/dist/esm/cli.js CHANGED
@@ -3,7 +3,6 @@ import fs from 'fs';
3
3
  import getopts from 'getopts-compat';
4
4
  import path from 'path';
5
5
  import url from 'url';
6
- import install from './index.js';
7
6
  const ERROR_CODE = 9;
8
7
  const __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));
9
8
  function getPackageVersion() {
@@ -65,7 +64,7 @@ export default ((argv, name)=>{
65
64
  exit(ERROR_CODE);
66
65
  return;
67
66
  }
68
- install(args[0], options, (err, result)=>{
67
+ const report = (err, result)=>{
69
68
  if (!options.silent) {
70
69
  console.log('\n======================');
71
70
  if (err) console.log(`${args[0]} not installed. Error: ${err.message}`);
@@ -73,5 +72,22 @@ export default ((argv, name)=>{
73
72
  console.log('======================');
74
73
  }
75
74
  exit(err ? ERROR_CODE : 0);
76
- });
75
+ };
76
+ // deferred: index.ts pulls the whole download+extract+build pipeline. require() cannot load this
77
+ // ESM sibling below Node 20.19 (require(esm)), so the ESM half needs a real dynamic import; the
78
+ // CJS half's sibling is genuine CommonJS, so a plain synchronous require avoids depending on
79
+ // Promise, which isn't global before Node 0.12.
80
+ loadIndex((err, install)=>err || !install ? report(err) : install(args[0], options, report));
77
81
  });
82
+ function loadIndex(callback) {
83
+ if (typeof require === 'undefined') {
84
+ import('./index.js').then((mod)=>callback(null, mod.default || mod)).catch((err)=>callback(err instanceof Error ? err : new Error(String(err))));
85
+ } else {
86
+ try {
87
+ const mod = require('./index.js');
88
+ callback(null, mod.default || mod);
89
+ } catch (err) {
90
+ callback(err instanceof Error ? err : new Error(String(err)));
91
+ }
92
+ }
93
+ }
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/cli.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport getopts from 'getopts-compat';\nimport path from 'path';\nimport url from 'url';\nimport install, { type InstallOptions } from './index.ts';\n\nconst ERROR_CODE = 9;\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\n\nfunction getPackageVersion(): string {\n const packagePath = path.join(__dirname, '..', '..', 'package.json');\n const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf8'));\n return packageJson.version;\n}\n\nfunction printHelp(name: string): void {\n const version = getPackageVersion();\n console.log(`${name} v${version}`);\n console.log('');\n console.log(`Usage: ${name} <version> [options]`);\n console.log('');\n console.log('Arguments:');\n console.log(' version Node.js version to install (e.g., 18.0.0, lts, stable)');\n console.log('');\n console.log('Options:');\n console.log(' -p, --platform Target platform (default: current platform)');\n console.log(' -a, --arch Target architecture (default: current architecture)');\n console.log(' -f, --filename Specific filename to download');\n console.log(' -i, --installPath Installation directory');\n console.log(' -c, --storagePath Cache storage directory');\n console.log(' -si, --silent Suppress output');\n console.log(' -v, --version Show version number');\n console.log(' -h, --help Show this help message');\n}\n\nexport default (argv: string[], name?: string): void => {\n const cliName = name || 'nir';\n const options = getopts(argv, {\n alias: { platform: 'p', arch: 'a', filename: 'f', installPath: 'i', storagePath: 'c', silent: 'si', version: 'v', help: 'h' },\n boolean: ['silent', 'version', 'help'],\n });\n\n if (options.version) {\n console.log(getPackageVersion());\n exit(0);\n return;\n }\n\n if (options.help) {\n printHelp(cliName);\n exit(0);\n return;\n }\n\n const args = options._;\n if (args.length < 1) {\n console.log(`Missing command. Example usage: ${cliName} <version> [directory]`);\n exit(ERROR_CODE);\n return;\n }\n install(args[0], options as InstallOptions, (err, result) => {\n if (!options.silent) {\n console.log('\\n======================');\n if (err) console.log(`${args[0]} not installed. Error: ${err.message}`);\n else console.log(`${result?.version} installed in: ${result?.installPath}`);\n console.log('======================');\n }\n exit(err ? ERROR_CODE : 0);\n });\n};\n"],"names":["exit","fs","getopts","path","url","install","ERROR_CODE","__dirname","dirname","__filename","fileURLToPath","getPackageVersion","packagePath","join","packageJson","JSON","parse","readFileSync","version","printHelp","name","console","log","argv","cliName","options","alias","platform","arch","filename","installPath","storagePath","silent","help","boolean","args","_","length","err","result","message"],"mappings":"AAAA,OAAOA,UAAU,cAAc;AAC/B,OAAOC,QAAQ,KAAK;AACpB,OAAOC,aAAa,iBAAiB;AACrC,OAAOC,UAAU,OAAO;AACxB,OAAOC,SAAS,MAAM;AACtB,OAAOC,aAAsC,aAAa;AAE1D,MAAMC,aAAa;AACnB,MAAMC,YAAYJ,KAAKK,OAAO,CAAC,OAAOC,eAAe,cAAcA,aAAaL,IAAIM,aAAa,CAAC,YAAYN,GAAG;AAEjH,SAASO;IACP,MAAMC,cAAcT,KAAKU,IAAI,CAACN,WAAW,MAAM,MAAM;IACrD,MAAMO,cAAcC,KAAKC,KAAK,CAACf,GAAGgB,YAAY,CAACL,aAAa;IAC5D,OAAOE,YAAYI,OAAO;AAC5B;AAEA,SAASC,UAAUC,IAAY;IAC7B,MAAMF,UAAUP;IAChBU,QAAQC,GAAG,CAAC,GAAGF,KAAK,EAAE,EAAEF,SAAS;IACjCG,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC,CAAC,OAAO,EAAEF,KAAK,oBAAoB,CAAC;IAChDC,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;AACd;AAEA,eAAe,CAAA,CAACC,MAAgBH;IAC9B,MAAMI,UAAUJ,QAAQ;IACxB,MAAMK,UAAUvB,QAAQqB,MAAM;QAC5BG,OAAO;YAAEC,UAAU;YAAKC,MAAM;YAAKC,UAAU;YAAKC,aAAa;YAAKC,aAAa;YAAKC,QAAQ;YAAMd,SAAS;YAAKe,MAAM;QAAI;QAC5HC,SAAS;YAAC;YAAU;YAAW;SAAO;IACxC;IAEA,IAAIT,QAAQP,OAAO,EAAE;QACnBG,QAAQC,GAAG,CAACX;QACZX,KAAK;QACL;IACF;IAEA,IAAIyB,QAAQQ,IAAI,EAAE;QAChBd,UAAUK;QACVxB,KAAK;QACL;IACF;IAEA,MAAMmC,OAAOV,QAAQW,CAAC;IACtB,IAAID,KAAKE,MAAM,GAAG,GAAG;QACnBhB,QAAQC,GAAG,CAAC,CAAC,gCAAgC,EAAEE,QAAQ,sBAAsB,CAAC;QAC9ExB,KAAKM;QACL;IACF;IACAD,QAAQ8B,IAAI,CAAC,EAAE,EAAEV,SAA2B,CAACa,KAAKC;QAChD,IAAI,CAACd,QAAQO,MAAM,EAAE;YACnBX,QAAQC,GAAG,CAAC;YACZ,IAAIgB,KAAKjB,QAAQC,GAAG,CAAC,GAAGa,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAEG,IAAIE,OAAO,EAAE;iBACjEnB,QAAQC,GAAG,CAAC,GAAGiB,mBAAAA,6BAAAA,OAAQrB,OAAO,CAAC,eAAe,EAAEqB,mBAAAA,6BAAAA,OAAQT,WAAW,EAAE;YAC1ET,QAAQC,GAAG,CAAC;QACd;QACAtB,KAAKsC,MAAMhC,aAAa;IAC1B;AACF,CAAA,EAAE"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/cli.ts"],"sourcesContent":["import exit from 'exit-compat';\nimport fs from 'fs';\nimport getopts from 'getopts-compat';\nimport path from 'path';\nimport url from 'url';\nimport type { InstallOptions, InstallResult } from './index.ts';\n\nconst ERROR_CODE = 9;\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\n\nfunction getPackageVersion(): string {\n const packagePath = path.join(__dirname, '..', '..', 'package.json');\n const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf8'));\n return packageJson.version;\n}\n\nfunction printHelp(name: string): void {\n const version = getPackageVersion();\n console.log(`${name} v${version}`);\n console.log('');\n console.log(`Usage: ${name} <version> [options]`);\n console.log('');\n console.log('Arguments:');\n console.log(' version Node.js version to install (e.g., 18.0.0, lts, stable)');\n console.log('');\n console.log('Options:');\n console.log(' -p, --platform Target platform (default: current platform)');\n console.log(' -a, --arch Target architecture (default: current architecture)');\n console.log(' -f, --filename Specific filename to download');\n console.log(' -i, --installPath Installation directory');\n console.log(' -c, --storagePath Cache storage directory');\n console.log(' -si, --silent Suppress output');\n console.log(' -v, --version Show version number');\n console.log(' -h, --help Show this help message');\n}\n\nexport default (argv: string[], name?: string): void => {\n const cliName = name || 'nir';\n const options = getopts(argv, {\n alias: { platform: 'p', arch: 'a', filename: 'f', installPath: 'i', storagePath: 'c', silent: 'si', version: 'v', help: 'h' },\n boolean: ['silent', 'version', 'help'],\n });\n\n if (options.version) {\n console.log(getPackageVersion());\n exit(0);\n return;\n }\n\n if (options.help) {\n printHelp(cliName);\n exit(0);\n return;\n }\n\n const args = options._;\n if (args.length < 1) {\n console.log(`Missing command. Example usage: ${cliName} <version> [directory]`);\n exit(ERROR_CODE);\n return;\n }\n const report = (err?: Error | null, result?: InstallResult) => {\n if (!options.silent) {\n console.log('\\n======================');\n if (err) console.log(`${args[0]} not installed. Error: ${err.message}`);\n else console.log(`${result?.version} installed in: ${result?.installPath}`);\n console.log('======================');\n }\n exit(err ? ERROR_CODE : 0);\n };\n // deferred: index.ts pulls the whole download+extract+build pipeline. require() cannot load this\n // ESM sibling below Node 20.19 (require(esm)), so the ESM half needs a real dynamic import; the\n // CJS half's sibling is genuine CommonJS, so a plain synchronous require avoids depending on\n // Promise, which isn't global before Node 0.12.\n loadIndex((err, install) => (err || !install ? report(err) : install(args[0], options as InstallOptions, report)));\n};\n\ntype InstallFn = (versionExpression: string, options: InstallOptions, callback: (err?: Error | null, result?: InstallResult) => void) => void;\n\nfunction loadIndex(callback: (err: Error | null, install?: InstallFn) => void): void {\n if (typeof require === 'undefined') {\n import('./index.js').then((mod) => callback(null, mod.default || mod)).catch((err) => callback(err instanceof Error ? err : new Error(String(err))));\n } else {\n try {\n const mod = require('./index.js');\n callback(null, mod.default || mod);\n } catch (err) {\n callback(err instanceof Error ? err : new Error(String(err)));\n }\n }\n}\n"],"names":["exit","fs","getopts","path","url","ERROR_CODE","__dirname","dirname","__filename","fileURLToPath","getPackageVersion","packagePath","join","packageJson","JSON","parse","readFileSync","version","printHelp","name","console","log","argv","cliName","options","alias","platform","arch","filename","installPath","storagePath","silent","help","boolean","args","_","length","report","err","result","message","loadIndex","install","callback","require","then","mod","default","catch","Error","String"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import crypto from 'crypto';
2
2
  import fs from 'fs';
3
- import { getContent } from 'get-file-compat';
4
- import { getDistAsync } from 'node-filename-to-dist-paths';
3
+ import Module from 'module';
5
4
  import oo from 'on-one';
6
5
  import path from 'path';
7
6
  import Queue from 'queue-cb';
@@ -9,6 +8,7 @@ import { tmpdir } from '../compat.js';
9
8
  import { NPM_DIST_TAGS_URL, NPM_DIST_URL, NPM_MIN_VERSION } from '../constants.js';
10
9
  import conditionalCache from '../lib/conditionalCache.js';
11
10
  import extract from '../lib/extract.js';
11
+ const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;
12
12
  function calculateChecksum(filePath, callback) {
13
13
  const hash = crypto.createHash('sha256');
14
14
  const stream = fs.createReadStream(filePath);
@@ -27,6 +27,9 @@ export default function installLib(version, dest, options, callback) {
27
27
  const platform = options.platform;
28
28
  const libPath = platform === 'win32' ? dest : path.join(dest, 'lib');
29
29
  const installPath = path.join(libPath, 'node_modules', 'npm');
30
+ // deferred: both pull fetch-json-cache / get-file-compat, only needed to actually install npm
31
+ const { getDistAsync } = _require('node-filename-to-dist-paths');
32
+ const { getContent } = _require('get-file-compat');
30
33
  getDistAsync(version, (_err, dist)=>{
31
34
  // pin the npm major only when the dist index knows this version; unknown means use latest
32
35
  const npmMajor = dist && dist.npm ? Math.max(+dist.npm.split('.')[0], NPM_MIN_VERSION) : null;
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNPM/installLib.ts"],"sourcesContent":["import crypto from 'crypto';\nimport fs from 'fs';\nimport { getContent } from 'get-file-compat';\nimport { getDistAsync } from 'node-filename-to-dist-paths';\nimport oo from 'on-one';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport { tmpdir } from '../compat.ts';\nimport { NPM_DIST_TAGS_URL, NPM_DIST_URL, NPM_MIN_VERSION } from '../constants.ts';\nimport conditionalCache from '../lib/conditionalCache.ts';\nimport extract from '../lib/extract.ts';\n\nimport type { InstallOptions } from '../types.ts';\n\nexport type Callback = (error?: Error | null, npmVersion?: string, checksum?: string) => void;\n\nfunction calculateChecksum(filePath: string, callback: (err?: Error | null, checksum?: string) => void): void {\n const hash = crypto.createHash('sha256');\n const stream = fs.createReadStream(filePath);\n stream.on('data', (data) => hash.update(data));\n oo(stream, ['error', 'end', 'close', 'finish'], (err: Error | null) => {\n if (err) return callback(err);\n callback(undefined, hash.digest('hex'));\n });\n}\n\nexport default function installLib(version: string, dest: string, options: InstallOptions, callback: Callback): void {\n const platform = options.platform;\n const libPath = platform === 'win32' ? dest : path.join(dest, 'lib');\n const installPath = path.join(libPath, 'node_modules', 'npm');\n\n getDistAsync(version, (_err, dist) => {\n // pin the npm major only when the dist index knows this version; unknown means use latest\n const npmMajor = dist && dist.npm ? Math.max(+dist.npm.split('.')[0], NPM_MIN_VERSION) : null;\n\n getContent(NPM_DIST_TAGS_URL, 'utf8', (err, res) => {\n if (err) return callback(err);\n try {\n const distTags = JSON.parse(res?.content ?? '{}') as Record<string, string>;\n const npmVersion = npmMajor === null ? distTags.latest : distTags[`latest-${npmMajor}`] || distTags[`next-${npmMajor}`] || distTags.latest;\n const downloadPath = `${NPM_DIST_URL}/-/npm-${npmVersion}.tgz`;\n const cachePath = path.join(options.cachePath ?? tmpdir(), path.basename(downloadPath));\n\n let checksum: string | undefined;\n const queue = new Queue(1);\n queue.defer((cb) => conditionalCache(downloadPath, cachePath, options, (err) => cb(err)));\n queue.defer((cb) => {\n calculateChecksum(cachePath, (err, hash) => {\n checksum = hash;\n cb(err);\n });\n });\n queue.defer((cb) => extract(cachePath, installPath, (err) => cb(err)));\n queue.await((err) => {\n err ? callback(err) : callback(undefined, npmVersion, checksum);\n });\n } catch (_e) {\n return callback(new Error('Failed to parse npm dist-tags'));\n }\n });\n });\n}\n"],"names":["crypto","fs","getContent","getDistAsync","oo","path","Queue","tmpdir","NPM_DIST_TAGS_URL","NPM_DIST_URL","NPM_MIN_VERSION","conditionalCache","extract","calculateChecksum","filePath","callback","hash","createHash","stream","createReadStream","on","data","update","err","undefined","digest","installLib","version","dest","options","platform","libPath","join","installPath","_err","dist","npmMajor","npm","Math","max","split","res","distTags","JSON","parse","content","npmVersion","latest","downloadPath","cachePath","basename","checksum","queue","defer","cb","await","_e","Error"],"mappings":"AAAA,OAAOA,YAAY,SAAS;AAC5B,OAAOC,QAAQ,KAAK;AACpB,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,YAAY,QAAQ,8BAA8B;AAC3D,OAAOC,QAAQ,SAAS;AACxB,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAC7B,SAASC,MAAM,QAAQ,eAAe;AACtC,SAASC,iBAAiB,EAAEC,YAAY,EAAEC,eAAe,QAAQ,kBAAkB;AACnF,OAAOC,sBAAsB,6BAA6B;AAC1D,OAAOC,aAAa,oBAAoB;AAMxC,SAASC,kBAAkBC,QAAgB,EAAEC,QAAyD;IACpG,MAAMC,OAAOhB,OAAOiB,UAAU,CAAC;IAC/B,MAAMC,SAASjB,GAAGkB,gBAAgB,CAACL;IACnCI,OAAOE,EAAE,CAAC,QAAQ,CAACC,OAASL,KAAKM,MAAM,CAACD;IACxCjB,GAAGc,QAAQ;QAAC;QAAS;QAAO;QAAS;KAAS,EAAE,CAACK;QAC/C,IAAIA,KAAK,OAAOR,SAASQ;QACzBR,SAASS,WAAWR,KAAKS,MAAM,CAAC;IAClC;AACF;AAEA,eAAe,SAASC,WAAWC,OAAe,EAAEC,IAAY,EAAEC,OAAuB,EAAEd,QAAkB;IAC3G,MAAMe,WAAWD,QAAQC,QAAQ;IACjC,MAAMC,UAAUD,aAAa,UAAUF,OAAOvB,KAAK2B,IAAI,CAACJ,MAAM;IAC9D,MAAMK,cAAc5B,KAAK2B,IAAI,CAACD,SAAS,gBAAgB;IAEvD5B,aAAawB,SAAS,CAACO,MAAMC;QAC3B,0FAA0F;QAC1F,MAAMC,WAAWD,QAAQA,KAAKE,GAAG,GAAGC,KAAKC,GAAG,CAAC,CAACJ,KAAKE,GAAG,CAACG,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE9B,mBAAmB;QAEzFR,WAAWM,mBAAmB,QAAQ,CAACe,KAAKkB;YAC1C,IAAIlB,KAAK,OAAOR,SAASQ;YACzB,IAAI;0BAI0BM;gBAH5B,MAAMa,WAAWC,KAAKC,KAAK,SAACH,gBAAAA,0BAAAA,IAAKI,OAAO,uCAAI;gBAC5C,MAAMC,aAAaV,aAAa,OAAOM,SAASK,MAAM,GAAGL,QAAQ,CAAC,CAAC,OAAO,EAAEN,UAAU,CAAC,IAAIM,QAAQ,CAAC,CAAC,KAAK,EAAEN,UAAU,CAAC,IAAIM,SAASK,MAAM;gBAC1I,MAAMC,eAAe,GAAGvC,aAAa,OAAO,EAAEqC,WAAW,IAAI,CAAC;gBAC9D,MAAMG,YAAY5C,KAAK2B,IAAI,EAACH,qBAAAA,QAAQoB,SAAS,cAAjBpB,gCAAAA,qBAAqBtB,UAAUF,KAAK6C,QAAQ,CAACF;gBAEzE,IAAIG;gBACJ,MAAMC,QAAQ,IAAI9C,MAAM;gBACxB8C,MAAMC,KAAK,CAAC,CAACC,KAAO3C,iBAAiBqC,cAAcC,WAAWpB,SAAS,CAACN,MAAQ+B,GAAG/B;gBACnF6B,MAAMC,KAAK,CAAC,CAACC;oBACXzC,kBAAkBoC,WAAW,CAAC1B,KAAKP;wBACjCmC,WAAWnC;wBACXsC,GAAG/B;oBACL;gBACF;gBACA6B,MAAMC,KAAK,CAAC,CAACC,KAAO1C,QAAQqC,WAAWhB,aAAa,CAACV,MAAQ+B,GAAG/B;gBAChE6B,MAAMG,KAAK,CAAC,CAAChC;oBACXA,MAAMR,SAASQ,OAAOR,SAASS,WAAWsB,YAAYK;gBACxD;YACF,EAAE,OAAOK,IAAI;gBACX,OAAOzC,SAAS,IAAI0C,MAAM;YAC5B;QACF;IACF;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNPM/installLib.ts"],"sourcesContent":["import crypto from 'crypto';\nimport fs from 'fs';\nimport Module from 'module';\nimport oo from 'on-one';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport { tmpdir } from '../compat.ts';\nimport { NPM_DIST_TAGS_URL, NPM_DIST_URL, NPM_MIN_VERSION } from '../constants.ts';\nimport conditionalCache from '../lib/conditionalCache.ts';\nimport extract from '../lib/extract.ts';\n\nimport type { InstallOptions } from '../types.ts';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\nexport type Callback = (error?: Error | null, npmVersion?: string, checksum?: string) => void;\n\nfunction calculateChecksum(filePath: string, callback: (err?: Error | null, checksum?: string) => void): void {\n const hash = crypto.createHash('sha256');\n const stream = fs.createReadStream(filePath);\n stream.on('data', (data) => hash.update(data));\n oo(stream, ['error', 'end', 'close', 'finish'], (err: Error | null) => {\n if (err) return callback(err);\n callback(undefined, hash.digest('hex'));\n });\n}\n\nexport default function installLib(version: string, dest: string, options: InstallOptions, callback: Callback): void {\n const platform = options.platform;\n const libPath = platform === 'win32' ? dest : path.join(dest, 'lib');\n const installPath = path.join(libPath, 'node_modules', 'npm');\n\n // deferred: both pull fetch-json-cache / get-file-compat, only needed to actually install npm\n const { getDistAsync } = _require('node-filename-to-dist-paths');\n const { getContent } = _require('get-file-compat');\n getDistAsync(version, (_err: Error | null, dist: { npm?: string }) => {\n // pin the npm major only when the dist index knows this version; unknown means use latest\n const npmMajor = dist && dist.npm ? Math.max(+dist.npm.split('.')[0], NPM_MIN_VERSION) : null;\n\n getContent(NPM_DIST_TAGS_URL, 'utf8', (err: Error | null, res: { content?: string }) => {\n if (err) return callback(err);\n try {\n const distTags = JSON.parse(res?.content ?? '{}') as Record<string, string>;\n const npmVersion = npmMajor === null ? distTags.latest : distTags[`latest-${npmMajor}`] || distTags[`next-${npmMajor}`] || distTags.latest;\n const downloadPath = `${NPM_DIST_URL}/-/npm-${npmVersion}.tgz`;\n const cachePath = path.join(options.cachePath ?? tmpdir(), path.basename(downloadPath));\n\n let checksum: string | undefined;\n const queue = new Queue(1);\n queue.defer((cb) => conditionalCache(downloadPath, cachePath, options, (err) => cb(err)));\n queue.defer((cb) => {\n calculateChecksum(cachePath, (err, hash) => {\n checksum = hash;\n cb(err);\n });\n });\n queue.defer((cb) => extract(cachePath, installPath, (err) => cb(err)));\n queue.await((err) => {\n err ? callback(err) : callback(undefined, npmVersion, checksum);\n });\n } catch (_e) {\n return callback(new Error('Failed to parse npm dist-tags'));\n }\n });\n });\n}\n"],"names":["crypto","fs","Module","oo","path","Queue","tmpdir","NPM_DIST_TAGS_URL","NPM_DIST_URL","NPM_MIN_VERSION","conditionalCache","extract","_require","require","createRequire","url","calculateChecksum","filePath","callback","hash","createHash","stream","createReadStream","on","data","update","err","undefined","digest","installLib","version","dest","options","platform","libPath","join","installPath","getDistAsync","getContent","_err","dist","npmMajor","npm","Math","max","split","res","distTags","JSON","parse","content","npmVersion","latest","downloadPath","cachePath","basename","checksum","queue","defer","cb","await","_e","Error"],"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,10 +1,14 @@
1
- import fromFilename from 'node-filename-to-dist-paths';
1
+ import Module from 'module';
2
2
  import path from 'path';
3
3
  import { EXTENSIONS_COMPRESSED } from '../constants.js';
4
4
  import installCompressed from './installCompressed.js';
5
5
  import installExe from './installExe.js';
6
6
  import installSource from './installSource/index.js';
7
+ const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;
7
8
  export default function installFilename(filename, version, dest, options, callback) {
9
+ // deferred: node-filename-to-dist-paths pulls fetch-json-cache, only needed to actually resolve an install
10
+ const fromFilenameModule = _require('node-filename-to-dist-paths');
11
+ const fromFilename = fromFilenameModule.default || fromFilenameModule;
8
12
  const distPath = fromFilename(filename, version);
9
13
  if (!distPath) {
10
14
  callback(new Error('Not found'));
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installFilename.ts"],"sourcesContent":["import fromFilename from 'node-filename-to-dist-paths';\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\nexport default function installFilename(filename: string, version: string, dest: string, options: InstallOptions, callback: ChecksumCallback): void {\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":["fromFilename","path","EXTENSIONS_COMPRESSED","installCompressed","installExe","installSource","installFilename","filename","version","dest","options","callback","distPath","Error","ext","extname","indexOf"],"mappings":"AAAA,OAAOA,kBAAkB,8BAA8B;AACvD,OAAOC,UAAU,OAAO;AACxB,SAASC,qBAAqB,QAAQ,kBAAkB;AAExD,OAAOC,uBAAuB,yBAAyB;AACvD,OAAOC,gBAAgB,kBAAkB;AACzC,OAAOC,mBAAmB,2BAA2B;AAErD,eAAe,SAASC,gBAAgBC,QAAgB,EAAEC,OAAe,EAAEC,IAAY,EAAEC,OAAuB,EAAEC,QAA0B;IAC1I,MAAMC,WAAWZ,aAAaO,UAAUC;IACxC,IAAI,CAACI,UAAU;QACbD,SAAS,IAAIE,MAAM;QACnB;IACF;IACA,MAAMC,MAAMb,KAAKc,OAAO,CAACH;IAEzB,IAAIL,aAAa,OAAO,OAAOF,cAAcO,UAAUH,MAAMC,SAASC;IACtE,IAAIG,QAAQ,QAAQ,OAAOV,WAAWQ,UAAUH,MAAMC,SAASC;IAC/D,IAAIT,sBAAsBc,OAAO,CAACF,QAAQ,GAAG;QAC3C,OAAOX,kBAAkBS,UAAUH,MAAMC,SAASC;IACpD;IACAA,SAAS,IAAIE,MAAM,CAAC,kBAAkB,EAAEL,QAAQ,WAAW,EAAEI,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,11 +1,15 @@
1
- import spawn from 'cross-spawn-cb';
2
1
  import fs from 'fs';
2
+ import Module from 'module';
3
3
  import path from 'path';
4
4
  import Queue from 'queue-cb';
5
+ const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;
5
6
  export default function installPosix(buildPath, dest, _options, callback) {
6
7
  const buildTarget = path.join(dest, 'node');
7
8
  fs.stat(buildTarget, (err)=>{
8
9
  if (!err) return callback(); // already exists
10
+ // deferred: cross-spawn-cb is only needed when a build from source actually runs
11
+ const spawnModule = _require('cross-spawn-cb');
12
+ const spawn = spawnModule.default || spawnModule;
9
13
  const queue = new Queue(1);
10
14
  queue.defer((cb)=>spawn('./configure', [
11
15
  `--prefix=${dest}`
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installSource/buildPosix.ts"],"sourcesContent":["import spawn from 'cross-spawn-cb';\nimport fs from 'fs';\nimport path from 'path';\nimport Queue from 'queue-cb';\n\nimport type { InstallOptions, NoParamCallback } from '../../types.ts';\n\nexport default function installPosix(buildPath: string, dest: string, _options: InstallOptions, callback: NoParamCallback): void {\n const buildTarget = path.join(dest, 'node');\n\n fs.stat(buildTarget, (err) => {\n if (!err) return callback(); // already exists\n\n const queue = new Queue(1);\n queue.defer((cb) => spawn('./configure', [`--prefix=${dest}`], { stdio: 'inherit', cwd: buildPath }, (err) => cb(err)));\n queue.defer((cb) => spawn('make', ['install'], { stdio: 'inherit', cwd: buildPath }, (err) => cb(err)));\n queue.await(callback);\n });\n}\n"],"names":["spawn","fs","path","Queue","installPosix","buildPath","dest","_options","callback","buildTarget","join","stat","err","queue","defer","cb","stdio","cwd","await"],"mappings":"AAAA,OAAOA,WAAW,iBAAiB;AACnC,OAAOC,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAI7B,eAAe,SAASC,aAAaC,SAAiB,EAAEC,IAAY,EAAEC,QAAwB,EAAEC,QAAyB;IACvH,MAAMC,cAAcP,KAAKQ,IAAI,CAACJ,MAAM;IAEpCL,GAAGU,IAAI,CAACF,aAAa,CAACG;QACpB,IAAI,CAACA,KAAK,OAAOJ,YAAY,iBAAiB;QAE9C,MAAMK,QAAQ,IAAIV,MAAM;QACxBU,MAAMC,KAAK,CAAC,CAACC,KAAOf,MAAM,eAAe;gBAAC,CAAC,SAAS,EAAEM,MAAM;aAAC,EAAE;gBAAEU,OAAO;gBAAWC,KAAKZ;YAAU,GAAG,CAACO,MAAQG,GAAGH;QACjHC,MAAMC,KAAK,CAAC,CAACC,KAAOf,MAAM,QAAQ;gBAAC;aAAU,EAAE;gBAAEgB,OAAO;gBAAWC,KAAKZ;YAAU,GAAG,CAACO,MAAQG,GAAGH;QACjGC,MAAMK,KAAK,CAACV;IACd;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installSource/buildPosix.ts"],"sourcesContent":["import fs from 'fs';\nimport Module from 'module';\nimport path from 'path';\nimport Queue from 'queue-cb';\n\nimport type { InstallOptions, NoParamCallback } from '../../types.ts';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\nexport default function installPosix(buildPath: string, dest: string, _options: InstallOptions, callback: NoParamCallback): void {\n const buildTarget = path.join(dest, 'node');\n\n fs.stat(buildTarget, (err) => {\n if (!err) return callback(); // already exists\n\n // deferred: cross-spawn-cb is only needed when a build from source actually runs\n const spawnModule = _require('cross-spawn-cb');\n const spawn = spawnModule.default || spawnModule;\n const queue = new Queue(1);\n queue.defer((cb) => spawn('./configure', [`--prefix=${dest}`], { stdio: 'inherit', cwd: buildPath }, (err: Error | null) => cb(err)));\n queue.defer((cb) => spawn('make', ['install'], { stdio: 'inherit', cwd: buildPath }, (err: Error | null) => cb(err)));\n queue.await(callback);\n });\n}\n"],"names":["fs","Module","path","Queue","_require","require","createRequire","url","installPosix","buildPath","dest","_options","callback","buildTarget","join","stat","err","spawnModule","spawn","default","queue","defer","cb","stdio","cwd","await"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,YAAY,SAAS;AAC5B,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAI7B,MAAMC,WAAW,OAAOC,YAAY,cAAcJ,OAAOK,aAAa,CAAC,YAAYC,GAAG,IAAIF;AAE1F,eAAe,SAASG,aAAaC,SAAiB,EAAEC,IAAY,EAAEC,QAAwB,EAAEC,QAAyB;IACvH,MAAMC,cAAcX,KAAKY,IAAI,CAACJ,MAAM;IAEpCV,GAAGe,IAAI,CAACF,aAAa,CAACG;QACpB,IAAI,CAACA,KAAK,OAAOJ,YAAY,iBAAiB;QAE9C,iFAAiF;QACjF,MAAMK,cAAcb,SAAS;QAC7B,MAAMc,QAAQD,YAAYE,OAAO,IAAIF;QACrC,MAAMG,QAAQ,IAAIjB,MAAM;QACxBiB,MAAMC,KAAK,CAAC,CAACC,KAAOJ,MAAM,eAAe;gBAAC,CAAC,SAAS,EAAER,MAAM;aAAC,EAAE;gBAAEa,OAAO;gBAAWC,KAAKf;YAAU,GAAG,CAACO,MAAsBM,GAAGN;QAC/HI,MAAMC,KAAK,CAAC,CAACC,KAAOJ,MAAM,QAAQ;gBAAC;aAAU,EAAE;gBAAEK,OAAO;gBAAWC,KAAKf;YAAU,GAAG,CAACO,MAAsBM,GAAGN;QAC/GI,MAAMK,KAAK,CAACb;IACd;AACF"}
@@ -1,8 +1,9 @@
1
- import spawn from 'cross-spawn-cb';
2
1
  import fs from 'fs';
2
+ import Module from 'module';
3
3
  import path from 'path';
4
4
  import Queue from 'queue-cb';
5
5
  import conditionalCopy from '../../lib/conditionalCopy.js';
6
+ const _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;
6
7
  export default function installWin32(buildPath, dest, _options, callback) {
7
8
  const buildSource = path.join(buildPath, 'out', 'Release', 'node.exe');
8
9
  const buildTarget = path.join(dest, 'node.exe');
@@ -15,6 +16,9 @@ export default function installWin32(buildPath, dest, _options, callback) {
15
16
  callback();
16
17
  return;
17
18
  }
19
+ // deferred: cross-spawn-cb is only needed when a build from source actually runs
20
+ const spawnModule = _require('cross-spawn-cb');
21
+ const spawn = spawnModule.default || spawnModule;
18
22
  spawn('./vcbuild', [], {
19
23
  stdio: 'inherit',
20
24
  cwd: buildPath
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installSource/buildWin32.ts"],"sourcesContent":["import spawn from 'cross-spawn-cb';\nimport fs from 'fs';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport conditionalCopy from '../../lib/conditionalCopy.ts';\n\nimport type { InstallOptions, NoParamCallback } from '../../types.ts';\n\nexport default function installWin32(buildPath: string, dest: string, _options: InstallOptions, callback: NoParamCallback): void {\n const buildSource = path.join(buildPath, 'out', 'Release', 'node.exe');\n const buildTarget = path.join(dest, 'node.exe');\n\n fs.stat(buildTarget, (err) => {\n if (!err) return callback(); // already exists\n\n const queue = new Queue(1);\n queue.defer((cb) => {\n fs.stat(buildSource, (err: NodeJS.ErrnoException | null) => {\n if (!err) {\n callback();\n return;\n }\n spawn('./vcbuild', [], { stdio: 'inherit', cwd: buildPath }, (spawnErr) => cb(spawnErr));\n });\n });\n queue.defer((cb) => conditionalCopy(buildSource, buildTarget, false, (err) => cb(err)));\n queue.await(callback);\n });\n}\n"],"names":["spawn","fs","path","Queue","conditionalCopy","installWin32","buildPath","dest","_options","callback","buildSource","join","buildTarget","stat","err","queue","defer","cb","stdio","cwd","spawnErr","await"],"mappings":"AAAA,OAAOA,WAAW,iBAAiB;AACnC,OAAOC,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAC7B,OAAOC,qBAAqB,+BAA+B;AAI3D,eAAe,SAASC,aAAaC,SAAiB,EAAEC,IAAY,EAAEC,QAAwB,EAAEC,QAAyB;IACvH,MAAMC,cAAcR,KAAKS,IAAI,CAACL,WAAW,OAAO,WAAW;IAC3D,MAAMM,cAAcV,KAAKS,IAAI,CAACJ,MAAM;IAEpCN,GAAGY,IAAI,CAACD,aAAa,CAACE;QACpB,IAAI,CAACA,KAAK,OAAOL,YAAY,iBAAiB;QAE9C,MAAMM,QAAQ,IAAIZ,MAAM;QACxBY,MAAMC,KAAK,CAAC,CAACC;YACXhB,GAAGY,IAAI,CAACH,aAAa,CAACI;gBACpB,IAAI,CAACA,KAAK;oBACRL;oBACA;gBACF;gBACAT,MAAM,aAAa,EAAE,EAAE;oBAAEkB,OAAO;oBAAWC,KAAKb;gBAAU,GAAG,CAACc,WAAaH,GAAGG;YAChF;QACF;QACAL,MAAMC,KAAK,CAAC,CAACC,KAAOb,gBAAgBM,aAAaE,aAAa,OAAO,CAACE,MAAQG,GAAGH;QACjFC,MAAMM,KAAK,CAACZ;IACd;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installSource/buildWin32.ts"],"sourcesContent":["import fs from 'fs';\nimport Module from 'module';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport conditionalCopy from '../../lib/conditionalCopy.ts';\n\nimport type { InstallOptions, NoParamCallback } from '../../types.ts';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\nexport default function installWin32(buildPath: string, dest: string, _options: InstallOptions, callback: NoParamCallback): void {\n const buildSource = path.join(buildPath, 'out', 'Release', 'node.exe');\n const buildTarget = path.join(dest, 'node.exe');\n\n fs.stat(buildTarget, (err) => {\n if (!err) return callback(); // already exists\n\n const queue = new Queue(1);\n queue.defer((cb) => {\n fs.stat(buildSource, (err: NodeJS.ErrnoException | null) => {\n if (!err) {\n callback();\n return;\n }\n // deferred: cross-spawn-cb is only needed when a build from source actually runs\n const spawnModule = _require('cross-spawn-cb');\n const spawn = spawnModule.default || spawnModule;\n spawn('./vcbuild', [], { stdio: 'inherit', cwd: buildPath }, (spawnErr: Error | null) => cb(spawnErr));\n });\n });\n queue.defer((cb) => conditionalCopy(buildSource, buildTarget, false, (err) => cb(err)));\n queue.await(callback);\n });\n}\n"],"names":["fs","Module","path","Queue","conditionalCopy","_require","require","createRequire","url","installWin32","buildPath","dest","_options","callback","buildSource","join","buildTarget","stat","err","queue","defer","cb","spawnModule","spawn","default","stdio","cwd","spawnErr","await"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,YAAY,SAAS;AAC5B,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAC7B,OAAOC,qBAAqB,+BAA+B;AAI3D,MAAMC,WAAW,OAAOC,YAAY,cAAcL,OAAOM,aAAa,CAAC,YAAYC,GAAG,IAAIF;AAE1F,eAAe,SAASG,aAAaC,SAAiB,EAAEC,IAAY,EAAEC,QAAwB,EAAEC,QAAyB;IACvH,MAAMC,cAAcZ,KAAKa,IAAI,CAACL,WAAW,OAAO,WAAW;IAC3D,MAAMM,cAAcd,KAAKa,IAAI,CAACJ,MAAM;IAEpCX,GAAGiB,IAAI,CAACD,aAAa,CAACE;QACpB,IAAI,CAACA,KAAK,OAAOL,YAAY,iBAAiB;QAE9C,MAAMM,QAAQ,IAAIhB,MAAM;QACxBgB,MAAMC,KAAK,CAAC,CAACC;YACXrB,GAAGiB,IAAI,CAACH,aAAa,CAACI;gBACpB,IAAI,CAACA,KAAK;oBACRL;oBACA;gBACF;gBACA,iFAAiF;gBACjF,MAAMS,cAAcjB,SAAS;gBAC7B,MAAMkB,QAAQD,YAAYE,OAAO,IAAIF;gBACrCC,MAAM,aAAa,EAAE,EAAE;oBAAEE,OAAO;oBAAWC,KAAKhB;gBAAU,GAAG,CAACiB,WAA2BN,GAAGM;YAC9F;QACF;QACAR,MAAMC,KAAK,CAAC,CAACC,KAAOjB,gBAAgBU,aAAaE,aAAa,OAAO,CAACE,MAAQG,GAAGH;QACjFC,MAAMS,KAAK,CAACf;IACd;AACF"}