node-install-release 1.7.6 → 1.7.9
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.
- package/dist/cjs/constants.cjs +65 -0
- package/dist/cjs/constants.cjs.map +1 -1
- package/dist/cjs/index.cjs +0 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/installNPM/installBin.cjs +2 -34
- package/dist/cjs/installNPM/installBin.cjs.map +1 -1
- package/dist/cjs/installNPM/installLib.cjs +12 -20
- package/dist/cjs/installNPM/installLib.cjs.map +1 -1
- package/dist/cjs/installNode/index.cjs +36 -21
- package/dist/cjs/installNode/index.cjs.map +1 -1
- package/dist/cjs/installNode/installCompressed.cjs +24 -22
- package/dist/cjs/installNode/installCompressed.cjs.map +1 -1
- package/dist/cjs/installNode/installExe.cjs +13 -8
- package/dist/cjs/installNode/installExe.cjs.map +1 -1
- package/dist/cjs/installNode/installFilename.cjs +31 -0
- package/dist/cjs/installNode/installFilename.cjs.map +1 -0
- package/dist/cjs/installNode/installSource/buildPosix.cjs +14 -18
- package/dist/cjs/installNode/installSource/buildPosix.cjs.map +1 -1
- package/dist/cjs/installNode/installSource/buildWin32.cjs +5 -8
- package/dist/cjs/installNode/installSource/buildWin32.cjs.map +1 -1
- package/dist/cjs/installNode/installSource/index.cjs +6 -3
- package/dist/cjs/installNode/installSource/index.cjs.map +1 -1
- package/dist/cjs/installNode/validateDownload.cjs +42 -0
- package/dist/cjs/installNode/validateDownload.cjs.map +1 -0
- package/dist/cjs/lib/checkMissing.cjs +11 -3
- package/dist/cjs/lib/checkMissing.cjs.map +1 -1
- package/dist/cjs/{lib → machine}/arch.cjs +3 -2
- package/dist/cjs/machine/arch.cjs.map +1 -0
- package/dist/cjs/{polyfills.cjs → machine/execSync/polyfill.cjs} +1 -1
- package/dist/cjs/machine/execSync/polyfill.cjs.map +1 -0
- package/dist/cjs/machine/execSync/worker.cjs.map +1 -0
- package/dist/cjs/workers/install.cjs +2 -33
- package/dist/cjs/workers/install.cjs.map +1 -1
- package/dist/esm/constants.mjs +44 -0
- package/dist/esm/constants.mjs.map +1 -1
- package/dist/esm/index.mjs +0 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/installNPM/installBin.mjs +2 -34
- package/dist/esm/installNPM/installBin.mjs.map +1 -1
- package/dist/esm/installNPM/installLib.mjs +12 -18
- package/dist/esm/installNPM/installLib.mjs.map +1 -1
- package/dist/esm/installNode/index.mjs +33 -22
- package/dist/esm/installNode/index.mjs.map +1 -1
- package/dist/esm/installNode/installCompressed.mjs +24 -24
- package/dist/esm/installNode/installCompressed.mjs.map +1 -1
- package/dist/esm/installNode/installExe.mjs +13 -8
- package/dist/esm/installNode/installExe.mjs.map +1 -1
- package/dist/esm/installNode/installFilename.mjs +15 -0
- package/dist/esm/installNode/installFilename.mjs.map +1 -0
- package/dist/esm/installNode/installSource/buildPosix.mjs +13 -17
- package/dist/esm/installNode/installSource/buildPosix.mjs.map +1 -1
- package/dist/esm/installNode/installSource/buildWin32.mjs +4 -9
- package/dist/esm/installNode/installSource/buildWin32.mjs.map +1 -1
- package/dist/esm/installNode/installSource/index.mjs +6 -3
- package/dist/esm/installNode/installSource/index.mjs.map +1 -1
- package/dist/esm/installNode/validateDownload.mjs +24 -0
- package/dist/esm/installNode/validateDownload.mjs.map +1 -0
- package/dist/esm/lib/checkMissing.mjs +1 -1
- package/dist/esm/lib/checkMissing.mjs.map +1 -1
- package/dist/esm/{lib → machine}/arch.cjs +1 -0
- package/dist/esm/machine/arch.cjs.map +1 -0
- package/dist/esm/{polyfills.cjs → machine/execSync/polyfill.cjs} +1 -1
- package/dist/esm/machine/execSync/polyfill.cjs.map +1 -0
- package/dist/esm/machine/execSync/worker.cjs.map +1 -0
- package/dist/esm/workers/install.mjs +2 -9
- package/dist/esm/workers/install.mjs.map +1 -1
- package/dist/types/constants.d.ts +26 -0
- package/dist/types/index.d.ts +0 -1
- package/dist/types/installNode/installCompressed.d.ts +1 -1
- package/dist/types/installNode/installExe.d.ts +1 -1
- package/dist/types/installNode/installFilename.d.ts +1 -0
- package/dist/types/installNode/installSource/buildPosix.d.ts +1 -1
- package/dist/types/installNode/installSource/index.d.ts +1 -1
- package/dist/types/installNode/validateDownload.d.ts +1 -0
- package/dist/types/lib/checkMissing.d.ts +10 -0
- package/package.json +6 -9
- package/dist/cjs/installNode/findDistPaths.cjs +0 -34
- package/dist/cjs/installNode/findDistPaths.cjs.map +0 -1
- package/dist/cjs/installNode/prebuilts.cjs +0 -53
- package/dist/cjs/installNode/prebuilts.cjs.map +0 -1
- package/dist/cjs/lib/arch.cjs.map +0 -1
- package/dist/cjs/lib/endsWithFn.cjs +0 -29
- package/dist/cjs/lib/endsWithFn.cjs.map +0 -1
- package/dist/cjs/polyfills/execCallback.cjs.map +0 -1
- package/dist/cjs/polyfills.cjs.map +0 -1
- package/dist/esm/installNode/findDistPaths.mjs +0 -18
- package/dist/esm/installNode/findDistPaths.mjs.map +0 -1
- package/dist/esm/installNode/prebuilts.mjs +0 -37
- package/dist/esm/installNode/prebuilts.mjs.map +0 -1
- package/dist/esm/lib/arch.cjs.map +0 -1
- package/dist/esm/lib/endsWithFn.mjs +0 -13
- package/dist/esm/lib/endsWithFn.mjs.map +0 -1
- package/dist/esm/polyfills/execCallback.cjs.map +0 -1
- package/dist/esm/polyfills.cjs.map +0 -1
- package/dist/types/installNode/findDistPaths.d.ts +0 -5
- package/dist/types/installNode/prebuilts.d.ts +0 -1
- package/dist/types/lib/endsWithFn.d.ts +0 -1
- /package/dist/cjs/{polyfills/execCallback.cjs → machine/execSync/worker.cjs} +0 -0
- /package/dist/esm/{polyfills/execCallback.cjs → machine/execSync/worker.cjs} +0 -0
- /package/dist/types/{lib → machine}/arch.d.cts +0 -0
- /package/dist/types/{polyfills.d.cts → machine/execSync/polyfill.d.cts} +0 -0
- /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
|
-
|
|
8
|
-
|
|
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
|
-
|
|
11
|
-
if (err) return callback(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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(
|
|
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,21 @@
|
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
const
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
console.log(1);
|
|
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(copyFile.bind(null, cachePath, destPath));
|
|
19
|
+
queue.await(callback);
|
|
15
20
|
});
|
|
16
21
|
}
|
|
@@ -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(
|
|
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 console.log(1);\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(null, 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","console","log","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;QAE9CO,QAAQC,GAAG,CAAC;QACZ,MAAMC,QAAQ,IAAIlB,MAAM;QACxBkB,MAAMC,KAAK,CAACjB,iBAAiBkB,IAAI,CAAC,MAAMV,cAAcC;QACtDO,MAAMC,KAAK,CAACf,iBAAiBgB,IAAI,CAAC,MAAMd,UAAUK;QAClDO,MAAMC,KAAK,CAAChB,SAASiB,IAAI,CAAC,MAAMT,WAAWE;QAC3CK,MAAMG,KAAK,CAACZ;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
|
|
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((
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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((
|
|
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(
|
|
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 =
|
|
11
|
-
const buildPath = path.join(options.buildPath, path.basename(
|
|
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(
|
|
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 +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\
|
|
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, '
|
|
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
|
-
...
|
|
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
|
|
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\
|
|
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
|
+
};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -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(
|
|
1
|
+
export default function installCompressed(distPath: any, dest: any, options: any, callback: any): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function installExe(
|
|
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
|
|
1
|
+
export default function installPosix(buildPath: any, dest: any, _options: any, callback: any): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function InstallSource(
|
|
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;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-install-release",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.9",
|
|
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.
|
|
47
|
-
"end-
|
|
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.
|
|
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": "^
|
|
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.
|
|
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; }
|