node-install-release 1.6.2 → 1.7.0
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/bin/cli.cjs +3 -0
- package/dist/cjs/{cli.js → cli.cjs} +8 -46
- package/dist/cjs/cli.cjs.map +1 -0
- package/dist/cjs/constants.cjs +21 -0
- package/dist/cjs/constants.cjs.map +1 -0
- package/dist/cjs/{index.js → index.cjs} +8 -8
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/installNPM/index.cjs +24 -0
- package/dist/cjs/installNPM/index.cjs.map +1 -0
- package/dist/cjs/installNPM/installBin.cjs +64 -0
- package/dist/cjs/installNPM/installBin.cjs.map +1 -0
- package/dist/cjs/installNPM/installLib.cjs +49 -0
- package/dist/cjs/installNPM/installLib.cjs.map +1 -0
- package/dist/cjs/installNode/{findDistPaths.js → findDistPaths.cjs} +20 -6
- package/dist/cjs/installNode/findDistPaths.cjs.map +1 -0
- package/dist/cjs/installNode/index.cjs +40 -0
- package/dist/cjs/installNode/index.cjs.map +1 -0
- package/dist/cjs/installNode/{installCompressed.js → installCompressed.cjs} +30 -16
- package/dist/cjs/installNode/installCompressed.cjs.map +1 -0
- package/dist/cjs/installNode/installExe.cjs +32 -0
- package/dist/cjs/installNode/installExe.cjs.map +1 -0
- package/dist/cjs/installNode/installSource/buildPosix.cjs +44 -0
- package/dist/cjs/installNode/installSource/buildPosix.cjs.map +1 -0
- package/dist/cjs/installNode/installSource/buildWin32.cjs +40 -0
- package/dist/cjs/installNode/installSource/buildWin32.cjs.map +1 -0
- package/dist/cjs/installNode/installSource/index.cjs +36 -0
- package/dist/cjs/installNode/installSource/index.cjs.map +1 -0
- package/dist/cjs/installNode/{filenames.js → prebuilts.cjs} +22 -9
- package/dist/cjs/installNode/prebuilts.cjs.map +1 -0
- package/dist/cjs/lib/arch.cjs.map +1 -0
- package/dist/cjs/{checkMissing.js → lib/checkMissing.cjs} +22 -8
- package/dist/cjs/lib/checkMissing.cjs.map +1 -0
- package/dist/cjs/{conditionalCache.js → lib/conditionalCache.cjs} +27 -13
- package/dist/cjs/lib/conditionalCache.cjs.map +1 -0
- package/dist/cjs/lib/conditionalCopy.cjs +36 -0
- package/dist/cjs/lib/conditionalCopy.cjs.map +1 -0
- package/dist/cjs/{conditionalExtract.js → lib/conditionalExtract.cjs} +25 -11
- package/dist/cjs/lib/conditionalExtract.cjs.map +1 -0
- package/dist/cjs/lib/copyFile.cjs +41 -0
- package/dist/cjs/lib/copyFile.cjs.map +1 -0
- package/dist/cjs/lib/endsWithFn.cjs +29 -0
- package/dist/cjs/lib/endsWithFn.cjs.map +1 -0
- package/dist/cjs/lib/ensureDestinationParent.cjs +23 -0
- package/dist/cjs/lib/ensureDestinationParent.cjs.map +1 -0
- package/dist/cjs/lib/progress.cjs +22 -0
- package/dist/cjs/lib/progress.cjs.map +1 -0
- package/dist/cjs/polyfills/execCallback.cjs.map +1 -0
- package/dist/cjs/{polyfills.js → polyfills.cjs} +5 -4
- package/dist/cjs/polyfills.cjs.map +1 -0
- package/dist/cjs/{progress.js → types.cjs} +3 -6
- package/dist/cjs/types.cjs.map +1 -0
- package/dist/cjs/workers/install.cjs +120 -0
- package/dist/cjs/workers/install.cjs.map +1 -0
- package/dist/esm/cli.mjs +38 -0
- package/dist/esm/cli.mjs.map +1 -0
- package/dist/esm/constants.mjs +2 -0
- package/dist/esm/constants.mjs.map +1 -0
- package/dist/esm/index.mjs +11 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/installNPM/index.mjs +8 -0
- package/dist/esm/installNPM/index.mjs.map +1 -0
- package/dist/{cjs/installNPM/installBin.js → esm/installNPM/installBin.mjs} +13 -15
- package/dist/esm/installNPM/installBin.mjs.map +1 -0
- package/dist/esm/installNPM/installLib.mjs +31 -0
- package/dist/esm/installNPM/installLib.mjs.map +1 -0
- package/dist/esm/installNode/findDistPaths.mjs +18 -0
- package/dist/esm/installNode/findDistPaths.mjs.map +1 -0
- package/dist/esm/installNode/index.mjs +24 -0
- package/dist/esm/installNode/index.mjs.map +1 -0
- package/dist/esm/installNode/installCompressed.mjs +34 -0
- package/dist/esm/installNode/installCompressed.mjs.map +1 -0
- package/dist/esm/installNode/installExe.mjs +16 -0
- package/dist/esm/installNode/installExe.mjs.map +1 -0
- package/dist/esm/installNode/installSource/buildPosix.mjs +28 -0
- package/dist/esm/installNode/installSource/buildPosix.mjs.map +1 -0
- package/dist/esm/installNode/installSource/buildWin32.mjs +24 -0
- package/dist/esm/installNode/installSource/buildWin32.mjs.map +1 -0
- package/dist/esm/installNode/installSource/index.mjs +20 -0
- package/dist/esm/installNode/installSource/index.mjs.map +1 -0
- package/dist/esm/installNode/prebuilts.mjs +37 -0
- package/dist/esm/installNode/prebuilts.mjs.map +1 -0
- package/dist/esm/lib/arch.cjs +69 -0
- package/dist/esm/lib/arch.cjs.map +1 -0
- package/dist/esm/lib/checkMissing.mjs +41 -0
- package/dist/esm/lib/checkMissing.mjs.map +1 -0
- package/dist/esm/lib/conditionalCache.mjs +27 -0
- package/dist/esm/lib/conditionalCache.mjs.map +1 -0
- package/dist/esm/lib/conditionalCopy.mjs +20 -0
- package/dist/esm/lib/conditionalCopy.mjs.map +1 -0
- package/dist/esm/lib/conditionalExtract.mjs +26 -0
- package/dist/esm/lib/conditionalExtract.mjs.map +1 -0
- package/dist/esm/lib/copyFile.mjs +25 -0
- package/dist/esm/lib/copyFile.mjs.map +1 -0
- package/dist/esm/lib/endsWithFn.mjs +13 -0
- package/dist/esm/lib/endsWithFn.mjs.map +1 -0
- package/dist/esm/lib/ensureDestinationParent.mjs +7 -0
- package/dist/esm/lib/ensureDestinationParent.mjs.map +1 -0
- package/dist/esm/lib/progress.mjs +6 -0
- package/dist/esm/lib/progress.mjs.map +1 -0
- package/dist/esm/polyfills/execCallback.cjs +4 -0
- package/dist/esm/polyfills/execCallback.cjs.map +1 -0
- package/dist/esm/polyfills.cjs +12 -0
- package/dist/esm/polyfills.cjs.map +1 -0
- package/dist/esm/types.mjs +1 -0
- package/dist/esm/types.mjs.map +1 -0
- package/dist/esm/workers/install.mjs +52 -0
- package/dist/esm/workers/install.mjs.map +1 -0
- package/dist/types/cli.d.ts +1 -1
- package/dist/types/constants.d.ts +2 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/installNPM/index.d.ts +1 -2
- package/dist/types/installNPM/installBin.d.ts +1 -2
- package/dist/types/installNPM/installLib.d.ts +1 -2
- package/dist/types/installNode/findDistPaths.d.ts +1 -2
- package/dist/types/installNode/index.d.ts +1 -2
- package/dist/types/installNode/installCompressed.d.ts +1 -2
- package/dist/types/installNode/installExe.d.ts +1 -2
- package/dist/types/installNode/installSource/buildPosix.d.ts +1 -2
- package/dist/types/installNode/installSource/buildWin32.d.ts +1 -2
- package/dist/types/installNode/installSource/index.d.ts +1 -2
- package/dist/types/installNode/prebuilts.d.ts +1 -0
- package/dist/types/lib/checkMissing.d.ts +1 -0
- package/dist/types/lib/conditionalCache.d.ts +1 -0
- package/dist/types/lib/conditionalCopy.d.ts +1 -0
- package/dist/types/lib/conditionalExtract.d.ts +1 -0
- package/dist/types/lib/copyFile.d.ts +1 -0
- package/dist/types/lib/endsWithFn.d.ts +1 -0
- package/dist/types/lib/ensureDestinationParent.d.ts +1 -0
- package/dist/types/lib/progress.d.ts +1 -0
- package/dist/types/types.d.ts +14 -0
- package/dist/types/workers/install.d.ts +1 -0
- package/package.json +18 -11
- package/bin/cli.js +0 -3
- package/dist/cjs/arch.js.map +0 -1
- package/dist/cjs/checkMissing.js.map +0 -1
- package/dist/cjs/cli.js.map +0 -1
- package/dist/cjs/conditionalCache.js.map +0 -1
- package/dist/cjs/conditionalCopy.js +0 -22
- package/dist/cjs/conditionalCopy.js.map +0 -1
- package/dist/cjs/conditionalExtract.js.map +0 -1
- package/dist/cjs/copyFile.js +0 -27
- package/dist/cjs/copyFile.js.map +0 -1
- package/dist/cjs/endsWithFn.js +0 -15
- package/dist/cjs/endsWithFn.js.map +0 -1
- package/dist/cjs/ensureDestinationParent.js +0 -11
- package/dist/cjs/ensureDestinationParent.js.map +0 -1
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/install.js +0 -100
- package/dist/cjs/install.js.map +0 -1
- package/dist/cjs/installNPM/index.js +0 -10
- package/dist/cjs/installNPM/index.js.map +0 -1
- package/dist/cjs/installNPM/installBin.js.map +0 -1
- package/dist/cjs/installNPM/installLib.js +0 -35
- package/dist/cjs/installNPM/installLib.js.map +0 -1
- package/dist/cjs/installNode/filenames.js.map +0 -1
- package/dist/cjs/installNode/findDistPaths.js.map +0 -1
- package/dist/cjs/installNode/index.js +0 -26
- package/dist/cjs/installNode/index.js.map +0 -1
- package/dist/cjs/installNode/installCompressed.js.map +0 -1
- package/dist/cjs/installNode/installExe.js +0 -18
- package/dist/cjs/installNode/installExe.js.map +0 -1
- package/dist/cjs/installNode/installSource/buildPosix.js +0 -30
- package/dist/cjs/installNode/installSource/buildPosix.js.map +0 -1
- package/dist/cjs/installNode/installSource/buildWin32.js +0 -26
- package/dist/cjs/installNode/installSource/buildWin32.js.map +0 -1
- package/dist/cjs/installNode/installSource/index.js +0 -22
- package/dist/cjs/installNode/installSource/index.js.map +0 -1
- package/dist/cjs/installVersion.js +0 -22
- package/dist/cjs/installVersion.js.map +0 -1
- package/dist/cjs/package.json +0 -1
- package/dist/cjs/polyfills.js.map +0 -1
- package/dist/cjs/progress.js.map +0 -1
- package/dist/cjs/workers/execCallback.js.map +0 -1
- package/dist/types/checkMissing.d.ts +0 -2
- package/dist/types/conditionalCache.d.ts +0 -2
- package/dist/types/conditionalCopy.d.ts +0 -2
- package/dist/types/conditionalExtract.d.ts +0 -2
- package/dist/types/copyFile.d.ts +0 -2
- package/dist/types/endsWithFn.d.ts +0 -2
- package/dist/types/ensureDestinationParent.d.ts +0 -2
- package/dist/types/index.d.mts +0 -1
- package/dist/types/install.d.ts +0 -2
- package/dist/types/installNode/filenames.d.ts +0 -2
- package/dist/types/installVersion.d.ts +0 -2
- package/dist/types/progress.d.ts +0 -2
- /package/dist/cjs/{arch.js → lib/arch.cjs} +0 -0
- /package/dist/cjs/{workers/execCallback.js → polyfills/execCallback.cjs} +0 -0
- /package/dist/types/{arch.d.ts → lib/arch.d.cts} +0 -0
- /package/dist/types/{workers/execCallback.d.ts → polyfills/execCallback.d.cts} +0 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// <<<<****************************>>>>
|
|
2
|
+
// Inline until merged: https://github.com/jakejarvis/arch/blob/detect-arm/index.js
|
|
3
|
+
// <<<<****************************>>>>
|
|
4
|
+
/*! arch. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */ const cp = require('child_process');
|
|
5
|
+
const fs = require('fs');
|
|
6
|
+
const path = require('path');
|
|
7
|
+
// <<<<****************************>>>>
|
|
8
|
+
const isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);
|
|
9
|
+
// <<<<****************************>>>>
|
|
10
|
+
/**
|
|
11
|
+
* Returns the operating system's CPU architecture. This is different than
|
|
12
|
+
* `process.arch` or `os.arch()` which returns the architecture the Node.js (or
|
|
13
|
+
* Electron) binary was compiled for.
|
|
14
|
+
*/ module.exports = function arch() {
|
|
15
|
+
/**
|
|
16
|
+
* On macOS, we need to detect if x64 Node is running because the CPU is truly
|
|
17
|
+
* an Intel chip, or if it's running on Apple Silicon via Rosetta 2:
|
|
18
|
+
* https://developer.apple.com/documentation/apple-silicon/about-the-rosetta-translation-environment
|
|
19
|
+
*/ if (process.platform === 'darwin') {
|
|
20
|
+
const nativeArm = process.arch === 'arm64';
|
|
21
|
+
const rosettaArm = cp.execSync('sysctl -in sysctl.proc_translated', {
|
|
22
|
+
encoding: 'utf8'
|
|
23
|
+
}) === '1\n';
|
|
24
|
+
return nativeArm || rosettaArm ? 'arm64' : 'x64';
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* On Windows, the most reliable way to detect a 64-bit OS from within a 32-bit
|
|
28
|
+
* app is based on the presence of a WOW64 file: %SystemRoot%\SysNative.
|
|
29
|
+
* See: https://twitter.com/feross/status/776949077208510464
|
|
30
|
+
*/ // <<<<****************************>>>>
|
|
31
|
+
if (isWindows) {
|
|
32
|
+
// <<<<****************************>>>>
|
|
33
|
+
let useEnv = false;
|
|
34
|
+
try {
|
|
35
|
+
useEnv = !!(process.env.SYSTEMROOT && fs.statSync(process.env.SYSTEMROOT));
|
|
36
|
+
} catch (_err) {}
|
|
37
|
+
const sysRoot = useEnv ? process.env.SYSTEMROOT : 'C:\\Windows';
|
|
38
|
+
// If %SystemRoot%\SysNative exists, we are in a WOW64 FS Redirected application.
|
|
39
|
+
let isWOW64 = false;
|
|
40
|
+
try {
|
|
41
|
+
isWOW64 = !!fs.statSync(path.join(sysRoot, 'sysnative'));
|
|
42
|
+
} catch (_err) {}
|
|
43
|
+
return isWOW64 ? 'x64' : 'x86';
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* On Linux, use the `getconf` command to get the architecture.
|
|
47
|
+
*/ if (process.platform === 'linux') {
|
|
48
|
+
try {
|
|
49
|
+
const output1 = cp.execSync('uname -a', {
|
|
50
|
+
encoding: 'utf8'
|
|
51
|
+
});
|
|
52
|
+
if (~output1.indexOf('raspberrypi')) return 'arm-pi';
|
|
53
|
+
} catch (_err) {}
|
|
54
|
+
const output = cp.execSync('getconf LONG_BIT', {
|
|
55
|
+
encoding: 'utf8'
|
|
56
|
+
});
|
|
57
|
+
return output === '64\n' ? 'x64' : 'x86';
|
|
58
|
+
}
|
|
59
|
+
// <<<<****************************>>>>
|
|
60
|
+
/**
|
|
61
|
+
* The running binary is 64-bit, so the OS is clearly 64-bit.
|
|
62
|
+
*/ if (process.arch === 'x64') {
|
|
63
|
+
return 'x64';
|
|
64
|
+
}
|
|
65
|
+
// <<<<****************************>>>>
|
|
66
|
+
/**
|
|
67
|
+
* If none of the above, assume the architecture is 32-bit.
|
|
68
|
+
*/ return 'x86';
|
|
69
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/arch.cjs"],"sourcesContent":["// <<<<****************************>>>>\n// Inline until merged: https://github.com/jakejarvis/arch/blob/detect-arm/index.js\n// <<<<****************************>>>>\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":["cp","require","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;AAEvC,2EAA2E,GAC3E,MAAMA,KAAKC,QAAQ;AACnB,MAAMC,KAAKD,QAAQ;AACnB,MAAME,OAAOF,QAAQ;AAErB,uCAAuC;AACvC,MAAMG,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,aAAad,GAAGe,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,UAAUxB,GAAGe,QAAQ,CAAC,YAAY;gBAAEC,UAAU;YAAO;YAC3D,IAAI,CAACQ,QAAQC,OAAO,CAAC,gBAAgB,OAAO;QAC9C,EAAE,OAAOL,MAAM,CAAC;QAEhB,MAAMM,SAAS1B,GAAGe,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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import keys from 'lodash.keys';
|
|
4
|
+
const PLATFORM_FILES = {
|
|
5
|
+
win32: {
|
|
6
|
+
node: [
|
|
7
|
+
'node.exe'
|
|
8
|
+
],
|
|
9
|
+
npm: [
|
|
10
|
+
'npm',
|
|
11
|
+
'npm.cmd'
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
posix: {
|
|
15
|
+
node: [
|
|
16
|
+
'node'
|
|
17
|
+
],
|
|
18
|
+
npm: [
|
|
19
|
+
'npm'
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
export default function checkMissing(dest, options, callback) {
|
|
24
|
+
const platform = options.platform || process.platform;
|
|
25
|
+
const files = PLATFORM_FILES[platform] || PLATFORM_FILES.posix;
|
|
26
|
+
const binPath = platform === 'win32' ? dest : path.join(dest, 'bin');
|
|
27
|
+
fs.readdir(binPath, (err, names)=>{
|
|
28
|
+
if (err || !names.length) return callback(null, keys(files));
|
|
29
|
+
const missing = [];
|
|
30
|
+
for(const key in files){
|
|
31
|
+
const needed = files[key];
|
|
32
|
+
for(let index = 0; index < needed.length; index++){
|
|
33
|
+
if (!~names.indexOf(needed[index])) {
|
|
34
|
+
missing.push(key);
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return callback(null, missing);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/checkMissing.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport keys from 'lodash.keys';\n\nconst PLATFORM_FILES = {\n win32: {\n node: ['node.exe'],\n npm: ['npm', 'npm.cmd'],\n },\n posix: {\n node: ['node'],\n npm: ['npm'],\n },\n};\n\nexport default function checkMissing(dest, options, callback) {\n const platform = options.platform || process.platform;\n const files = PLATFORM_FILES[platform] || PLATFORM_FILES.posix;\n const binPath = platform === 'win32' ? dest : path.join(dest, 'bin');\n\n fs.readdir(binPath, (err, names) => {\n if (err || !names.length) return callback(null, keys(files));\n\n const missing = [];\n for (const key in files) {\n const needed = files[key];\n for (let index = 0; index < needed.length; index++) {\n if (!~names.indexOf(needed[index])) {\n missing.push(key);\n break;\n }\n }\n }\n return callback(null, missing);\n });\n}\n"],"names":["fs","path","keys","PLATFORM_FILES","win32","node","npm","posix","checkMissing","dest","options","callback","platform","process","files","binPath","join","readdir","err","names","length","missing","key","needed","index","indexOf","push"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,OAAOC,UAAU,cAAc;AAE/B,MAAMC,iBAAiB;IACrBC,OAAO;QACLC,MAAM;YAAC;SAAW;QAClBC,KAAK;YAAC;YAAO;SAAU;IACzB;IACAC,OAAO;QACLF,MAAM;YAAC;SAAO;QACdC,KAAK;YAAC;SAAM;IACd;AACF;AAEA,eAAe,SAASE,aAAaC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IAC1D,MAAMC,WAAWF,QAAQE,QAAQ,IAAIC,QAAQD,QAAQ;IACrD,MAAME,QAAQX,cAAc,CAACS,SAAS,IAAIT,eAAeI,KAAK;IAC9D,MAAMQ,UAAUH,aAAa,UAAUH,OAAOR,KAAKe,IAAI,CAACP,MAAM;IAE9DT,GAAGiB,OAAO,CAACF,SAAS,CAACG,KAAKC;QACxB,IAAID,OAAO,CAACC,MAAMC,MAAM,EAAE,OAAOT,SAAS,MAAMT,KAAKY;QAErD,MAAMO,UAAU,EAAE;QAClB,IAAK,MAAMC,OAAOR,MAAO;YACvB,MAAMS,SAAST,KAAK,CAACQ,IAAI;YACzB,IAAK,IAAIE,QAAQ,GAAGA,QAAQD,OAAOH,MAAM,EAAEI,QAAS;gBAClD,IAAI,CAAC,CAACL,MAAMM,OAAO,CAACF,MAAM,CAACC,MAAM,GAAG;oBAClCH,QAAQK,IAAI,CAACJ;oBACb;gBACF;YACF;QACF;QACA,OAAOX,SAAS,MAAMU;IACxB;AACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import access from 'fs-access-compat';
|
|
3
|
+
import get from 'get-remote';
|
|
4
|
+
import ensureDestinationParent from './ensureDestinationParent.mjs';
|
|
5
|
+
import progress from './progress.mjs';
|
|
6
|
+
export default function conditionalCache(endpoint, dest, options, callback) {
|
|
7
|
+
if (typeof options === 'function') {
|
|
8
|
+
callback = options;
|
|
9
|
+
options = null;
|
|
10
|
+
}
|
|
11
|
+
options = options || {};
|
|
12
|
+
access(dest, (err)=>{
|
|
13
|
+
if (!err) return callback(); // already exists
|
|
14
|
+
ensureDestinationParent(dest, (err)=>{
|
|
15
|
+
if (err) return callback(err);
|
|
16
|
+
get(endpoint, {
|
|
17
|
+
filename: path.basename(dest),
|
|
18
|
+
progress: progress,
|
|
19
|
+
time: 1000,
|
|
20
|
+
...options
|
|
21
|
+
}).file(path.dirname(dest), (err)=>{
|
|
22
|
+
console.log('');
|
|
23
|
+
callback(err);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/conditionalCache.ts"],"sourcesContent":["import path from 'path';\nimport access from 'fs-access-compat';\nimport get from 'get-remote';\n\nimport ensureDestinationParent from './ensureDestinationParent';\nimport progress from './progress';\n\nexport default function conditionalCache(endpoint, dest, options, callback?) {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n options = options || {};\n\n access(dest, (err) => {\n if (!err) return callback(); // already exists\n\n ensureDestinationParent(dest, (err) => {\n if (err) return callback(err);\n\n get(endpoint, { filename: path.basename(dest), progress: progress, time: 1000, ...options }).file(path.dirname(dest), (err) => {\n console.log('');\n callback(err);\n });\n });\n });\n}\n"],"names":["path","access","get","ensureDestinationParent","progress","conditionalCache","endpoint","dest","options","callback","err","filename","basename","time","file","dirname","console","log"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,YAAY,mBAAmB;AACtC,OAAOC,SAAS,aAAa;AAE7B,OAAOC,6BAA6B,4BAA4B;AAChE,OAAOC,cAAc,aAAa;AAElC,eAAe,SAASC,iBAAiBC,QAAQ,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAS;IACzE,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU;IACZ;IACAA,UAAUA,WAAW,CAAC;IAEtBP,OAAOM,MAAM,CAACG;QACZ,IAAI,CAACA,KAAK,OAAOD,YAAY,iBAAiB;QAE9CN,wBAAwBI,MAAM,CAACG;YAC7B,IAAIA,KAAK,OAAOD,SAASC;YAEzBR,IAAII,UAAU;gBAAEK,UAAUX,KAAKY,QAAQ,CAACL;gBAAOH,UAAUA;gBAAUS,MAAM;gBAAM,GAAGL,OAAO;YAAC,GAAGM,IAAI,CAACd,KAAKe,OAAO,CAACR,OAAO,CAACG;gBACrHM,QAAQC,GAAG,CAAC;gBACZR,SAASC;YACX;QACF;IACF;AACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import access from 'fs-access-compat';
|
|
2
|
+
import copyFile from './copyFile.mjs';
|
|
3
|
+
import ensureDestinationParent from './ensureDestinationParent.mjs';
|
|
4
|
+
export default function conditionalCopy(src, dest, optional, callback) {
|
|
5
|
+
if (typeof optional === 'function') {
|
|
6
|
+
callback = optional;
|
|
7
|
+
optional = false;
|
|
8
|
+
}
|
|
9
|
+
access(dest, (err)=>{
|
|
10
|
+
if (!err) return callback(); // already exists
|
|
11
|
+
ensureDestinationParent(dest, (err)=>{
|
|
12
|
+
if (err) return callback(err);
|
|
13
|
+
if (!optional) return copyFile(src, dest, callback);
|
|
14
|
+
access(src, (err)=>{
|
|
15
|
+
if (err) return callback(); // optional file missing
|
|
16
|
+
copyFile(src, dest, callback);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/conditionalCopy.ts"],"sourcesContent":["import access from 'fs-access-compat';\n\nimport copyFile from './copyFile';\nimport ensureDestinationParent from './ensureDestinationParent';\n\nexport default function conditionalCopy(src, dest, optional, callback) {\n if (typeof optional === 'function') {\n callback = optional;\n optional = false;\n }\n\n access(dest, (err) => {\n if (!err) return callback(); // already exists\n\n ensureDestinationParent(dest, (err) => {\n if (err) return callback(err);\n if (!optional) return copyFile(src, dest, callback);\n\n access(src, (err) => {\n if (err) return callback(); // optional file missing\n copyFile(src, dest, callback);\n });\n });\n });\n}\n"],"names":["access","copyFile","ensureDestinationParent","conditionalCopy","src","dest","optional","callback","err"],"mappings":"AAAA,OAAOA,YAAY,mBAAmB;AAEtC,OAAOC,cAAc,aAAa;AAClC,OAAOC,6BAA6B,4BAA4B;AAEhE,eAAe,SAASC,gBAAgBC,GAAG,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,QAAQ;IACnE,IAAI,OAAOD,aAAa,YAAY;QAClCC,WAAWD;QACXA,WAAW;IACb;IAEAN,OAAOK,MAAM,CAACG;QACZ,IAAI,CAACA,KAAK,OAAOD,YAAY,iBAAiB;QAE9CL,wBAAwBG,MAAM,CAACG;YAC7B,IAAIA,KAAK,OAAOD,SAASC;YACzB,IAAI,CAACF,UAAU,OAAOL,SAASG,KAAKC,MAAME;YAE1CP,OAAOI,KAAK,CAACI;gBACX,IAAIA,KAAK,OAAOD,YAAY,wBAAwB;gBACpDN,SAASG,KAAKC,MAAME;YACtB;QACF;IACF;AACF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import extract from 'fast-extract';
|
|
3
|
+
import access from 'fs-access-compat';
|
|
4
|
+
import mkdirp from 'mkdirp-classic';
|
|
5
|
+
import progress from './progress.mjs';
|
|
6
|
+
export default function conditionalExtract(src, dest, options, callback) {
|
|
7
|
+
if (typeof options === 'function') {
|
|
8
|
+
callback = options;
|
|
9
|
+
options = null;
|
|
10
|
+
}
|
|
11
|
+
options = options || {};
|
|
12
|
+
access(dest, (err)=>{
|
|
13
|
+
if (!err) return callback(); // already exists
|
|
14
|
+
mkdirp(path.dirname(dest), ()=>{
|
|
15
|
+
extract(src, dest, {
|
|
16
|
+
strip: 1,
|
|
17
|
+
progress: progress,
|
|
18
|
+
time: 1000,
|
|
19
|
+
...options
|
|
20
|
+
}, (err)=>{
|
|
21
|
+
console.log('');
|
|
22
|
+
callback(err);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/conditionalExtract.ts"],"sourcesContent":["import path from 'path';\nimport extract from 'fast-extract';\nimport access from 'fs-access-compat';\nimport mkdirp from 'mkdirp-classic';\n\nimport progress from './progress.js';\n\nexport default function conditionalExtract(src, dest, options, callback?) {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n options = options || {};\n\n access(dest, (err) => {\n if (!err) return callback(); // already exists\n\n mkdirp(path.dirname(dest), () => {\n extract(src, dest, { strip: 1, progress: progress, time: 1000, ...options }, (err) => {\n console.log('');\n callback(err);\n });\n });\n });\n}\n"],"names":["path","extract","access","mkdirp","progress","conditionalExtract","src","dest","options","callback","err","dirname","strip","time","console","log"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,aAAa,eAAe;AACnC,OAAOC,YAAY,mBAAmB;AACtC,OAAOC,YAAY,iBAAiB;AAEpC,OAAOC,cAAc,gBAAgB;AAErC,eAAe,SAASC,mBAAmBC,GAAG,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAS;IACtE,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU;IACZ;IACAA,UAAUA,WAAW,CAAC;IAEtBN,OAAOK,MAAM,CAACG;QACZ,IAAI,CAACA,KAAK,OAAOD,YAAY,iBAAiB;QAE9CN,OAAOH,KAAKW,OAAO,CAACJ,OAAO;YACzBN,QAAQK,KAAKC,MAAM;gBAAEK,OAAO;gBAAGR,UAAUA;gBAAUS,MAAM;gBAAM,GAAGL,OAAO;YAAC,GAAG,CAACE;gBAC5EI,QAAQC,GAAG,CAAC;gBACZN,SAASC;YACX;QACF;IACF;AACF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import pump from 'pump';
|
|
3
|
+
import Queue from 'queue-cb';
|
|
4
|
+
import rimraf2 from 'rimraf2';
|
|
5
|
+
import ensureDestinationParent from './ensureDestinationParent.mjs';
|
|
6
|
+
function streamCopyFile(src, dest, callback) {
|
|
7
|
+
fs.stat(src, (err)=>{
|
|
8
|
+
if (err) return callback(err);
|
|
9
|
+
pump(fs.createReadStream(src), fs.createWriteStream(dest), callback);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
const copyFile = fs.copyFile || streamCopyFile;
|
|
13
|
+
export default function safeCopyFile(src, dest, callback) {
|
|
14
|
+
const queue = new Queue(1);
|
|
15
|
+
queue.defer(ensureDestinationParent.bind(null, dest));
|
|
16
|
+
queue.defer((callback)=>{
|
|
17
|
+
rimraf2(dest, {
|
|
18
|
+
disableGlob: true
|
|
19
|
+
}, (err)=>{
|
|
20
|
+
err && err.code !== 'EEXIST' ? callback(err) : callback();
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
queue.defer(copyFile.bind(null, src, dest));
|
|
24
|
+
queue.await(callback);
|
|
25
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/copyFile.ts"],"sourcesContent":["import fs from 'fs';\nimport pump from 'pump';\nimport Queue from 'queue-cb';\nimport rimraf2 from 'rimraf2';\n\nimport ensureDestinationParent from './ensureDestinationParent';\n\nfunction streamCopyFile(src, dest, callback) {\n fs.stat(src, (err) => {\n if (err) return callback(err);\n pump(fs.createReadStream(src), fs.createWriteStream(dest), callback);\n });\n}\n\nconst copyFile = fs.copyFile || streamCopyFile;\n\nexport default function safeCopyFile(src, dest, callback) {\n const queue = new Queue(1);\n\n queue.defer(ensureDestinationParent.bind(null, dest));\n queue.defer((callback) => {\n rimraf2(dest, { disableGlob: true }, (err) => {\n err && err.code !== 'EEXIST' ? callback(err) : callback();\n });\n });\n queue.defer(copyFile.bind(null, src, dest));\n queue.await(callback);\n}\n"],"names":["fs","pump","Queue","rimraf2","ensureDestinationParent","streamCopyFile","src","dest","callback","stat","err","createReadStream","createWriteStream","copyFile","safeCopyFile","queue","defer","bind","disableGlob","code","await"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAC7B,OAAOC,aAAa,UAAU;AAE9B,OAAOC,6BAA6B,4BAA4B;AAEhE,SAASC,eAAeC,GAAG,EAAEC,IAAI,EAAEC,QAAQ;IACzCR,GAAGS,IAAI,CAACH,KAAK,CAACI;QACZ,IAAIA,KAAK,OAAOF,SAASE;QACzBT,KAAKD,GAAGW,gBAAgB,CAACL,MAAMN,GAAGY,iBAAiB,CAACL,OAAOC;IAC7D;AACF;AAEA,MAAMK,WAAWb,GAAGa,QAAQ,IAAIR;AAEhC,eAAe,SAASS,aAAaR,GAAG,EAAEC,IAAI,EAAEC,QAAQ;IACtD,MAAMO,QAAQ,IAAIb,MAAM;IAExBa,MAAMC,KAAK,CAACZ,wBAAwBa,IAAI,CAAC,MAAMV;IAC/CQ,MAAMC,KAAK,CAAC,CAACR;QACXL,QAAQI,MAAM;YAAEW,aAAa;QAAK,GAAG,CAACR;YACpCA,OAAOA,IAAIS,IAAI,KAAK,WAAWX,SAASE,OAAOF;QACjD;IACF;IACAO,MAAMC,KAAK,CAACH,SAASI,IAAI,CAAC,MAAMX,KAAKC;IACrCQ,MAAMK,KAAK,CAACZ;AACd"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import endsWith from 'end-with';
|
|
2
|
+
import isArray from 'isarray';
|
|
3
|
+
export default function endsWithFn(endings) {
|
|
4
|
+
if (!isArray(endings)) endings = [
|
|
5
|
+
endings
|
|
6
|
+
];
|
|
7
|
+
return (string)=>{
|
|
8
|
+
for(let index = 0; index < endings.length; index++){
|
|
9
|
+
if (endsWith(string, endings[index])) return true;
|
|
10
|
+
}
|
|
11
|
+
return false;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/endsWithFn.ts"],"sourcesContent":["import endsWith from 'end-with';\nimport isArray from 'isarray';\n\nexport default function endsWithFn(endings) {\n if (!isArray(endings)) endings = [endings];\n return (string) => {\n for (let index = 0; index < endings.length; index++) {\n if (endsWith(string, endings[index])) return true;\n }\n return false;\n };\n}\n"],"names":["endsWith","isArray","endsWithFn","endings","string","index","length"],"mappings":"AAAA,OAAOA,cAAc,WAAW;AAChC,OAAOC,aAAa,UAAU;AAE9B,eAAe,SAASC,WAAWC,OAAO;IACxC,IAAI,CAACF,QAAQE,UAAUA,UAAU;QAACA;KAAQ;IAC1C,OAAO,CAACC;QACN,IAAK,IAAIC,QAAQ,GAAGA,QAAQF,QAAQG,MAAM,EAAED,QAAS;YACnD,IAAIL,SAASI,QAAQD,OAAO,CAACE,MAAM,GAAG,OAAO;QAC/C;QACA,OAAO;IACT;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/ensureDestinationParent.ts"],"sourcesContent":["import path from 'path';\nimport mkdirp from 'mkdirp-classic';\n\nexport default function ensureDestinationParent(dest, callback) {\n const parent = path.dirname(dest);\n if (parent === '.' || parent === '/') return callback();\n mkdirp(parent, callback);\n}\n"],"names":["path","mkdirp","ensureDestinationParent","dest","callback","parent","dirname"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,YAAY,iBAAiB;AAEpC,eAAe,SAASC,wBAAwBC,IAAI,EAAEC,QAAQ;IAC5D,MAAMC,SAASL,KAAKM,OAAO,CAACH;IAC5B,IAAIE,WAAW,OAAOA,WAAW,KAAK,OAAOD;IAC7CH,OAAOI,QAAQD;AACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/progress.ts"],"sourcesContent":["import sll from 'single-line-log2';\n\nexport default function progress(entry) {\n let message = `${entry.progress} ${entry.basename}`;\n if (entry.percentage) message += ` - ${entry.percentage.toFixed(0)}%`;\n sll.stdout(message);\n}\n"],"names":["sll","progress","entry","message","basename","percentage","toFixed","stdout"],"mappings":"AAAA,OAAOA,SAAS,mBAAmB;AAEnC,eAAe,SAASC,SAASC,KAAK;IACpC,IAAIC,UAAU,GAAGD,MAAMD,QAAQ,CAAC,CAAC,EAAEC,MAAME,QAAQ,EAAE;IACnD,IAAIF,MAAMG,UAAU,EAAEF,WAAW,CAAC,GAAG,EAAED,MAAMG,UAAU,CAACC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrEN,IAAIO,MAAM,CAACJ;AACb"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/polyfills/execCallback.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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const cp = require('child_process');
|
|
2
|
+
if (!cp.execSync) {
|
|
3
|
+
const path = require('path');
|
|
4
|
+
const execCallback = path.join(__dirname, 'polyfills', 'execCallback.cjs');
|
|
5
|
+
let functionExec = null; // break dependencies
|
|
6
|
+
cp.execSync = function execSyncPolyfill(cmd, options = {}) {
|
|
7
|
+
if (!functionExec) functionExec = require('function-exec-sync');
|
|
8
|
+
return functionExec({
|
|
9
|
+
callbacks: true
|
|
10
|
+
}, execCallback, cmd, options);
|
|
11
|
+
};
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/polyfills.cjs"],"sourcesContent":["const cp = require('child_process');\nif (!cp.execSync) {\n const path = require('path');\n const execCallback = path.join(__dirname, 'polyfills', 'execCallback.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,aAAa;IAEvD,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
|
+
export { };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/types.ts"],"sourcesContent":["export type InstallPaths = {\n cachePath: string;\n buildPath: string;\n installPath: string;\n};\n\nexport type InstallResult = {\n version: string;\n installPath: string;\n execPath: string;\n};\n\nexport interface InstallOptions {\n addVersion?: boolean;\n}\n\nexport type InstallCallback = (err?: Error, result?: InstallResult) => void;\n"],"names":[],"mappings":"AAgBA,WAA4E"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import homedir from 'homedir-polyfill';
|
|
3
|
+
import mkdirp from 'mkdirp-classic';
|
|
4
|
+
import Queue from 'queue-cb';
|
|
5
|
+
import { NODE, isWindows } from '../constants.mjs';
|
|
6
|
+
import resolveVersions from 'node-resolve-versions';
|
|
7
|
+
import installNPM from '../installNPM/index.mjs';
|
|
8
|
+
import installNode from '../installNode/index.mjs';
|
|
9
|
+
import checkMissing from '../lib/checkMissing.mjs';
|
|
10
|
+
import ensureDestinationParent from '../lib/ensureDestinationParent.mjs';
|
|
11
|
+
const DEFAULT_INSTALL_PATH = path.join(homedir(), '.nir');
|
|
12
|
+
const DEFAULT_OPTIONS = {
|
|
13
|
+
cachePath: path.join(DEFAULT_INSTALL_PATH, 'cache'),
|
|
14
|
+
buildPath: path.join(DEFAULT_INSTALL_PATH, 'build'),
|
|
15
|
+
downloadURL: function downloadURL(relativePath) {
|
|
16
|
+
return `https://nodejs.org/dist/${relativePath}`;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
export default function install(versionExpression, dest, options, callback) {
|
|
20
|
+
options = {
|
|
21
|
+
...DEFAULT_OPTIONS,
|
|
22
|
+
...options,
|
|
23
|
+
path: 'raw'
|
|
24
|
+
};
|
|
25
|
+
resolveVersions(versionExpression, options, (err, versions)=>{
|
|
26
|
+
if (err) return callback(err);
|
|
27
|
+
if (!versions.length) return callback(new Error(`Could not resolve versions for: ${versionExpression}`));
|
|
28
|
+
if (versions.length !== 1) return callback(new Error(`Version ${versionExpression} resolved to multiple versions: ${versions.map((x)=>x.version)}. Expecting one.`));
|
|
29
|
+
mkdirp(options.cachePath, (err)=>{
|
|
30
|
+
if (err) return callback(err);
|
|
31
|
+
const version = versions[0];
|
|
32
|
+
const installPath = dest && versions.length > 1 ? path.join(dest, version.version) : dest;
|
|
33
|
+
const binRoot = isWindows ? installPath : path.join(installPath, 'bin');
|
|
34
|
+
const execPath = path.join(binRoot, NODE);
|
|
35
|
+
if (options.addVersion) dest = path.join(dest, version.version);
|
|
36
|
+
checkMissing(dest, options, (err, missing)=>{
|
|
37
|
+
if (err || !missing.length) return callback(err, dest);
|
|
38
|
+
const queue = new Queue(1);
|
|
39
|
+
queue.defer(ensureDestinationParent.bind(null, dest));
|
|
40
|
+
!~missing.indexOf('node') || queue.defer(installNode.bind(null, version, dest, options));
|
|
41
|
+
!~missing.indexOf('npm') || queue.defer(installNPM.bind(null, version, dest, options));
|
|
42
|
+
queue.await((err)=>{
|
|
43
|
+
err ? callback(err) : callback(null, {
|
|
44
|
+
version: version.version,
|
|
45
|
+
installPath,
|
|
46
|
+
execPath
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/workers/install.ts"],"sourcesContent":["import path from 'path';\nimport homedir from 'homedir-polyfill';\nimport mkdirp from 'mkdirp-classic';\nimport Queue from 'queue-cb';\nimport { NODE, isWindows } from '../constants';\n\nimport resolveVersions from 'node-resolve-versions';\n\nimport installNPM from '../installNPM/index';\nimport installNode from '../installNode/index';\nimport checkMissing from '../lib/checkMissing';\nimport ensureDestinationParent from '../lib/ensureDestinationParent';\n\nconst DEFAULT_INSTALL_PATH = path.join(homedir(), '.nir');\nconst DEFAULT_OPTIONS = {\n cachePath: path.join(DEFAULT_INSTALL_PATH, 'cache'),\n buildPath: path.join(DEFAULT_INSTALL_PATH, 'build'),\n downloadURL: function downloadURL(relativePath) {\n return `https://nodejs.org/dist/${relativePath}`;\n },\n};\n\nexport default function install(versionExpression, dest, options, callback) {\n options = { ...DEFAULT_OPTIONS, ...options, path: 'raw' };\n resolveVersions(versionExpression, options, (err, versions) => {\n if (err) return callback(err);\n if (!versions.length) return callback(new Error(`Could not resolve versions for: ${versionExpression}`));\n if (versions.length !== 1) return callback(new Error(`Version ${versionExpression} resolved to multiple versions: ${versions.map((x) => x.version)}. Expecting one.`));\n\n mkdirp(options.cachePath, (err) => {\n if (err) return callback(err);\n const version = versions[0];\n\n const installPath = dest && versions.length > 1 ? path.join(dest, version.version) : dest;\n const binRoot = isWindows ? installPath : path.join(installPath, 'bin');\n const execPath = path.join(binRoot, NODE);\n\n if (options.addVersion) dest = path.join(dest, version.version);\n\n checkMissing(dest, options, (err, missing) => {\n if (err || !missing.length) return callback(err, dest);\n\n const queue = new Queue(1);\n queue.defer(ensureDestinationParent.bind(null, dest));\n !~missing.indexOf('node') || queue.defer(installNode.bind(null, version, dest, options));\n !~missing.indexOf('npm') || queue.defer(installNPM.bind(null, version, dest, options));\n queue.await((err) => {\n err ? callback(err) : callback(null, { version: version.version, installPath, execPath });\n });\n });\n });\n });\n}\n"],"names":["path","homedir","mkdirp","Queue","NODE","isWindows","resolveVersions","installNPM","installNode","checkMissing","ensureDestinationParent","DEFAULT_INSTALL_PATH","join","DEFAULT_OPTIONS","cachePath","buildPath","downloadURL","relativePath","install","versionExpression","dest","options","callback","err","versions","length","Error","map","x","version","installPath","binRoot","execPath","addVersion","missing","queue","defer","bind","indexOf","await"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,aAAa,mBAAmB;AACvC,OAAOC,YAAY,iBAAiB;AACpC,OAAOC,WAAW,WAAW;AAC7B,SAASC,IAAI,EAAEC,SAAS,QAAQ,eAAe;AAE/C,OAAOC,qBAAqB,wBAAwB;AAEpD,OAAOC,gBAAgB,sBAAsB;AAC7C,OAAOC,iBAAiB,uBAAuB;AAC/C,OAAOC,kBAAkB,sBAAsB;AAC/C,OAAOC,6BAA6B,iCAAiC;AAErE,MAAMC,uBAAuBX,KAAKY,IAAI,CAACX,WAAW;AAClD,MAAMY,kBAAkB;IACtBC,WAAWd,KAAKY,IAAI,CAACD,sBAAsB;IAC3CI,WAAWf,KAAKY,IAAI,CAACD,sBAAsB;IAC3CK,aAAa,SAASA,YAAYC,YAAY;QAC5C,OAAO,CAAC,wBAAwB,EAAEA,cAAc;IAClD;AACF;AAEA,eAAe,SAASC,QAAQC,iBAAiB,EAAEC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IACxED,UAAU;QAAE,GAAGR,eAAe;QAAE,GAAGQ,OAAO;QAAErB,MAAM;IAAM;IACxDM,gBAAgBa,mBAAmBE,SAAS,CAACE,KAAKC;QAChD,IAAID,KAAK,OAAOD,SAASC;QACzB,IAAI,CAACC,SAASC,MAAM,EAAE,OAAOH,SAAS,IAAII,MAAM,CAAC,gCAAgC,EAAEP,mBAAmB;QACtG,IAAIK,SAASC,MAAM,KAAK,GAAG,OAAOH,SAAS,IAAII,MAAM,CAAC,QAAQ,EAAEP,kBAAkB,gCAAgC,EAAEK,SAASG,GAAG,CAAC,CAACC,IAAMA,EAAEC,OAAO,EAAE,gBAAgB,CAAC;QAEpK3B,OAAOmB,QAAQP,SAAS,EAAE,CAACS;YACzB,IAAIA,KAAK,OAAOD,SAASC;YACzB,MAAMM,UAAUL,QAAQ,CAAC,EAAE;YAE3B,MAAMM,cAAcV,QAAQI,SAASC,MAAM,GAAG,IAAIzB,KAAKY,IAAI,CAACQ,MAAMS,QAAQA,OAAO,IAAIT;YACrF,MAAMW,UAAU1B,YAAYyB,cAAc9B,KAAKY,IAAI,CAACkB,aAAa;YACjE,MAAME,WAAWhC,KAAKY,IAAI,CAACmB,SAAS3B;YAEpC,IAAIiB,QAAQY,UAAU,EAAEb,OAAOpB,KAAKY,IAAI,CAACQ,MAAMS,QAAQA,OAAO;YAE9DpB,aAAaW,MAAMC,SAAS,CAACE,KAAKW;gBAChC,IAAIX,OAAO,CAACW,QAAQT,MAAM,EAAE,OAAOH,SAASC,KAAKH;gBAEjD,MAAMe,QAAQ,IAAIhC,MAAM;gBACxBgC,MAAMC,KAAK,CAAC1B,wBAAwB2B,IAAI,CAAC,MAAMjB;gBAC/C,CAAC,CAACc,QAAQI,OAAO,CAAC,WAAWH,MAAMC,KAAK,CAAC5B,YAAY6B,IAAI,CAAC,MAAMR,SAAST,MAAMC;gBAC/E,CAAC,CAACa,QAAQI,OAAO,CAAC,UAAUH,MAAMC,KAAK,CAAC7B,WAAW8B,IAAI,CAAC,MAAMR,SAAST,MAAMC;gBAC7Ec,MAAMI,KAAK,CAAC,CAAChB;oBACXA,MAAMD,SAASC,OAAOD,SAAS,MAAM;wBAAEO,SAASA,QAAQA,OAAO;wBAAEC;wBAAaE;oBAAS;gBACzF;YACF;QACF;IACF;AACF"}
|
package/dist/types/cli.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare
|
|
1
|
+
declare const _default: (argv: any) => any;
|
|
2
2
|
export default _default;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import './polyfills.cjs';
|
|
2
|
+
import type { InstallCallback, InstallOptions, InstallResult } from './types';
|
|
3
|
+
export type * from './types';
|
|
4
|
+
export default function install(versionExpression: string, dest: string, options?: InstallOptions | InstallCallback, callback?: InstallCallback): undefined | Promise<InstallResult>;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export = _exports;
|
|
1
|
+
export default function install(version: any, dest: any, options: any, callback: any): void;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export = _exports;
|
|
1
|
+
export default function installBin(_version: any, dest: any, options: any, callback: any): void;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export = _exports;
|
|
1
|
+
export default function installLib(version: any, dest: any, options: any, callback: any): void;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export = _exports;
|
|
1
|
+
export default function install(version: any, dest: any, options: any, callback: any): void;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export = _exports;
|
|
1
|
+
export default function installCompressed(relativePath: any, dest: any, _record: any, options: any, callback: any): void;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export = _exports;
|
|
1
|
+
export default function installExe(relativePath: any, dest: any, record: any, options: any, callback: any): void;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export = _exports;
|
|
1
|
+
export default function installDefault(buildPath: any, dest: any, _options: any, callback: any): void;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export = _exports;
|
|
1
|
+
export default function installWin32(buildPath: any, dest: any, _options: any, callback: any): void;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export = _exports;
|
|
1
|
+
export default function InstallSource(relativePath: any, dest: any, _record: any, options: any, callback: any): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function prebuilts(options: any): any[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function checkMissing(dest: any, options: any, callback: any): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function conditionalCache(endpoint: any, dest: any, options: any, callback?: any): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function conditionalCopy(src: any, dest: any, optional: any, callback: any): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function conditionalExtract(src: any, dest: any, options: any, callback?: any): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function safeCopyFile(src: any, dest: any, callback: any): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function endsWithFn(endings: any): (string: any) => boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function ensureDestinationParent(dest: any, callback: any): any;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function progress(entry: any): void;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type InstallPaths = {
|
|
2
|
+
cachePath: string;
|
|
3
|
+
buildPath: string;
|
|
4
|
+
installPath: string;
|
|
5
|
+
};
|
|
6
|
+
export type InstallResult = {
|
|
7
|
+
version: string;
|
|
8
|
+
installPath: string;
|
|
9
|
+
execPath: string;
|
|
10
|
+
};
|
|
11
|
+
export interface InstallOptions {
|
|
12
|
+
addVersion?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export type InstallCallback = (err?: Error, result?: InstallResult) => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function install(versionExpression: any, dest: any, options: any, callback: any): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-install-release",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Cross-platform solution for installing releases of Node.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"node",
|
|
@@ -16,10 +16,20 @@
|
|
|
16
16
|
"url": "git@github.com:kmalakoff/node-install-release.git"
|
|
17
17
|
},
|
|
18
18
|
"license": "MIT",
|
|
19
|
-
"
|
|
19
|
+
"type": "module",
|
|
20
|
+
"exports": {
|
|
21
|
+
".": {
|
|
22
|
+
"import": "./dist/esm/index.mjs",
|
|
23
|
+
"require": "./dist/cjs/index.cjs",
|
|
24
|
+
"types": "./dist/types/index.d.ts"
|
|
25
|
+
},
|
|
26
|
+
"./*": "./*"
|
|
27
|
+
},
|
|
28
|
+
"main": "dist/cjs/index.cjs",
|
|
29
|
+
"module": "dist/dist/esm/index.mjs",
|
|
20
30
|
"types": "dist/types/index.d.ts",
|
|
21
31
|
"bin": {
|
|
22
|
-
"nir": "./bin/cli.
|
|
32
|
+
"nir": "./bin/cli.cjs"
|
|
23
33
|
},
|
|
24
34
|
"files": [
|
|
25
35
|
"dist"
|
|
@@ -33,12 +43,12 @@
|
|
|
33
43
|
"version": "tsds version"
|
|
34
44
|
},
|
|
35
45
|
"dependencies": {
|
|
36
|
-
"cross-spawn-cb": "^
|
|
46
|
+
"cross-spawn-cb": "^2.0.0",
|
|
37
47
|
"end-with": "^1.0.2",
|
|
38
48
|
"exit": "^0.1.2",
|
|
39
49
|
"fast-extract": "^1.3.1",
|
|
40
50
|
"fs-access-compat": "^1.0.3",
|
|
41
|
-
"function-exec-sync": "^1.1.
|
|
51
|
+
"function-exec-sync": "^1.1.5",
|
|
42
52
|
"get-remote": "^1.3.2",
|
|
43
53
|
"getopts-compat": "^2.2.5",
|
|
44
54
|
"homedir-polyfill": "^1.0.3",
|
|
@@ -56,21 +66,18 @@
|
|
|
56
66
|
"devDependencies": {
|
|
57
67
|
"@biomejs/biome": "^1.9.4",
|
|
58
68
|
"@types/mocha": "^10.0.10",
|
|
59
|
-
"@types/node": "^22.10.
|
|
69
|
+
"@types/node": "^22.10.3",
|
|
60
70
|
"cr": "^0.1.0",
|
|
61
71
|
"depcheck": "^1.4.7",
|
|
62
72
|
"fs-exists-sync": "^0.1.0",
|
|
63
73
|
"is-version": "^0.2.1",
|
|
64
|
-
"node-version-utils": "^1.1
|
|
74
|
+
"node-version-utils": "^1.2.1",
|
|
65
75
|
"pinkie-promise": "^2.0.1"
|
|
66
76
|
},
|
|
67
77
|
"engines": {
|
|
68
78
|
"node": ">=0.8"
|
|
69
79
|
},
|
|
70
80
|
"tsds": {
|
|
71
|
-
"source": "src/index.
|
|
72
|
-
"targets": [
|
|
73
|
-
"cjs"
|
|
74
|
-
]
|
|
81
|
+
"source": "src/index.ts"
|
|
75
82
|
}
|
|
76
83
|
}
|
package/bin/cli.js
DELETED