node-install-release 1.18.4 → 1.18.6
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/cli.d.cts +0 -0
- package/dist/cjs/cli.d.ts +0 -0
- package/dist/cjs/cli.js +1 -1
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/compat.d.cts +1 -0
- package/dist/cjs/compat.d.ts +1 -0
- package/dist/cjs/compat.js +14 -3
- package/dist/cjs/compat.js.map +1 -1
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/createResult.js.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/installNPM/index.js.map +1 -1
- package/dist/cjs/installNPM/installBin.js +6 -1
- package/dist/cjs/installNPM/installBin.js.map +1 -1
- package/dist/cjs/installNPM/installLib.d.cts +1 -1
- package/dist/cjs/installNPM/installLib.d.ts +1 -1
- package/dist/cjs/installNPM/installLib.js +16 -6
- package/dist/cjs/installNPM/installLib.js.map +1 -1
- package/dist/cjs/installNode/index.js +9 -8
- package/dist/cjs/installNode/index.js.map +1 -1
- package/dist/cjs/installNode/installCompressed.js +5 -1
- package/dist/cjs/installNode/installCompressed.js.map +1 -1
- package/dist/cjs/installNode/installExe.js +15 -3
- package/dist/cjs/installNode/installExe.js.map +1 -1
- package/dist/cjs/installNode/installSource/buildPosix.js +20 -12
- package/dist/cjs/installNode/installSource/buildPosix.js.map +1 -1
- package/dist/cjs/installNode/installSource/buildWin32.js +18 -6
- package/dist/cjs/installNode/installSource/buildWin32.js.map +1 -1
- package/dist/cjs/installNode/installSource/index.js +20 -4
- package/dist/cjs/installNode/installSource/index.js.map +1 -1
- package/dist/cjs/installNode/validateDownload.js +4 -3
- package/dist/cjs/installNode/validateDownload.js.map +1 -1
- package/dist/cjs/lib/checkMissing.d.cts +1 -1
- package/dist/cjs/lib/checkMissing.d.ts +1 -1
- package/dist/cjs/lib/checkMissing.js +1 -1
- package/dist/cjs/lib/checkMissing.js.map +1 -1
- package/dist/cjs/lib/conditionalCache.js +4 -2
- package/dist/cjs/lib/conditionalCache.js.map +1 -1
- package/dist/cjs/lib/conditionalCopy.js +3 -1
- package/dist/cjs/lib/conditionalCopy.js.map +1 -1
- package/dist/cjs/lib/copyFile.d.cts +1 -1
- package/dist/cjs/lib/copyFile.d.ts +1 -1
- package/dist/cjs/lib/copyFile.js +9 -3
- package/dist/cjs/lib/copyFile.js.map +1 -1
- package/dist/cjs/lib/ensureDestinationParent.js +3 -1
- package/dist/cjs/lib/ensureDestinationParent.js.map +1 -1
- package/dist/cjs/lib/extract.js +5 -1
- package/dist/cjs/lib/extract.js.map +1 -1
- package/dist/cjs/lib/getTarget.js.map +1 -1
- package/dist/cjs/types.d.cts +3 -3
- package/dist/cjs/types.d.ts +3 -3
- package/dist/cjs/workers/install.js +19 -18
- package/dist/cjs/workers/install.js.map +1 -1
- package/dist/esm/cli.d.ts +0 -0
- package/dist/esm/cli.js +1 -1
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/compat.d.ts +1 -0
- package/dist/esm/compat.js +3 -0
- package/dist/esm/compat.js.map +1 -1
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/createResult.js.map +1 -1
- package/dist/esm/index.js +5 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/installNPM/index.js.map +1 -1
- package/dist/esm/installNPM/installBin.js +4 -1
- package/dist/esm/installNPM/installBin.js.map +1 -1
- package/dist/esm/installNPM/installLib.d.ts +1 -1
- package/dist/esm/installNPM/installLib.js +8 -6
- package/dist/esm/installNPM/installLib.js.map +1 -1
- package/dist/esm/installNode/index.js +6 -5
- package/dist/esm/installNode/index.js.map +1 -1
- package/dist/esm/installNode/installCompressed.js +1 -1
- package/dist/esm/installNode/installCompressed.js.map +1 -1
- package/dist/esm/installNode/installExe.js +3 -3
- package/dist/esm/installNode/installExe.js.map +1 -1
- package/dist/esm/installNode/installSource/buildPosix.js +12 -12
- package/dist/esm/installNode/installSource/buildPosix.js.map +1 -1
- package/dist/esm/installNode/installSource/buildWin32.js +13 -5
- package/dist/esm/installNode/installSource/buildWin32.js.map +1 -1
- package/dist/esm/installNode/installSource/index.js +4 -4
- package/dist/esm/installNode/installSource/index.js.map +1 -1
- package/dist/esm/installNode/validateDownload.js +4 -3
- package/dist/esm/installNode/validateDownload.js.map +1 -1
- package/dist/esm/lib/checkMissing.d.ts +1 -1
- package/dist/esm/lib/checkMissing.js +1 -1
- package/dist/esm/lib/checkMissing.js.map +1 -1
- package/dist/esm/lib/conditionalCache.js +2 -2
- package/dist/esm/lib/conditionalCache.js.map +1 -1
- package/dist/esm/lib/conditionalCopy.js +1 -1
- package/dist/esm/lib/conditionalCopy.js.map +1 -1
- package/dist/esm/lib/copyFile.d.ts +1 -1
- package/dist/esm/lib/copyFile.js +2 -4
- package/dist/esm/lib/copyFile.js.map +1 -1
- package/dist/esm/lib/ensureDestinationParent.js +1 -1
- package/dist/esm/lib/ensureDestinationParent.js.map +1 -1
- package/dist/esm/lib/extract.js +1 -1
- package/dist/esm/lib/extract.js.map +1 -1
- package/dist/esm/lib/getTarget.js.map +1 -1
- package/dist/esm/types.d.ts +3 -3
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/workers/install.js +11 -16
- package/dist/esm/workers/install.js.map +1 -1
- package/package.json +4 -1
|
@@ -17,9 +17,10 @@ import ensureDestinationParent from '../lib/ensureDestinationParent.js';
|
|
|
17
17
|
import getTarget from '../lib/getTarget.js';
|
|
18
18
|
function getVersions(versionExpression, options, callback) {
|
|
19
19
|
// short circuit
|
|
20
|
-
isVersion(versionExpression)
|
|
20
|
+
if (isVersion(versionExpression)) callback(undefined, [
|
|
21
21
|
versionExpression
|
|
22
|
-
])
|
|
22
|
+
]);
|
|
23
|
+
else resolveVersions(versionExpression, options, (err, result)=>callback(err, result));
|
|
23
24
|
}
|
|
24
25
|
export default function install(versionExpression, options, callback) {
|
|
25
26
|
const storagePaths = options.storagePath ? createStoragePaths(options.storagePath) : DEFAULT_STORAGE_PATHS;
|
|
@@ -30,7 +31,7 @@ export default function install(versionExpression, options, callback) {
|
|
|
30
31
|
};
|
|
31
32
|
getVersions(versionExpression, options, (err, versions)=>{
|
|
32
33
|
if (err) return callback(err);
|
|
33
|
-
if (!versions.length) {
|
|
34
|
+
if (!versions || !versions.length) {
|
|
34
35
|
callback(new Error(`Could not resolve versions for: ${versionExpression}`));
|
|
35
36
|
return;
|
|
36
37
|
}
|
|
@@ -42,11 +43,11 @@ export default function install(versionExpression, options, callback) {
|
|
|
42
43
|
const result = createResult(options, version);
|
|
43
44
|
// Fast path: with atomic installs, folder exists = complete installation
|
|
44
45
|
fs.stat(result.installPath, (err)=>{
|
|
45
|
-
if (!err) return callback(
|
|
46
|
+
if (!err) return callback(undefined, result);
|
|
46
47
|
// Folder doesn't exist - do atomic install with temp folder
|
|
47
48
|
const tempPath = tempSuffix(result.installPath);
|
|
48
49
|
const queue = new Queue(1);
|
|
49
|
-
queue.defer(mkdirp
|
|
50
|
+
queue.defer((cb)=>mkdirp(options.cachePath, (err)=>cb(err)));
|
|
50
51
|
queue.defer(ensureDestinationParent.bind(null, tempPath));
|
|
51
52
|
// Install node to temp folder
|
|
52
53
|
queue.defer(installNode.bind(null, version, tempPath, options));
|
|
@@ -54,11 +55,8 @@ export default function install(versionExpression, options, callback) {
|
|
|
54
55
|
// Skip npm download only if bundled npm is modern (>= 3)
|
|
55
56
|
queue.defer((cb)=>{
|
|
56
57
|
checkMissing(tempPath, options, (err, npmMissing)=>{
|
|
57
|
-
if (err)
|
|
58
|
-
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
if (!~npmMissing.indexOf('npm')) {
|
|
58
|
+
if (err) return cb(err);
|
|
59
|
+
if (!~(npmMissing || []).indexOf('npm')) {
|
|
62
60
|
// npm is present (bundled with node) - check if it's modern enough to keep
|
|
63
61
|
const dist = getDist(version);
|
|
64
62
|
const bundledNpmMajor = dist && dist.npm ? +dist.npm.split('.')[0] : 0;
|
|
@@ -90,12 +88,9 @@ export default function install(versionExpression, options, callback) {
|
|
|
90
88
|
});
|
|
91
89
|
});
|
|
92
90
|
queue.await((err)=>{
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
callback(null, result);
|
|
91
|
+
// Clean up temp folder on error
|
|
92
|
+
if (err) return safeRm(tempPath, ()=>callback(err));
|
|
93
|
+
callback(undefined, result);
|
|
99
94
|
});
|
|
100
95
|
});
|
|
101
96
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/workers/install.ts"],"sourcesContent":["import fs from 'fs';\nimport { safeRm } from 'fs-remove-compat';\nimport isVersion from 'is-version';\nimport mkdirp from 'mkdirp-classic';\nimport { getDist } from 'node-filename-to-dist-paths';\nimport resolveVersions from 'node-resolve-versions';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport tempSuffix from 'temp-suffix';\n\nimport { DEFAULT_STORAGE_PATHS } from '../constants.ts';\n\nimport createResult from '../createResult.ts';\nimport createStoragePaths from '../createStoragePaths.ts';\nimport installNode from '../installNode/index.ts';\n\nimport installNPM from '../installNPM/index.ts';\nimport checkMissing from '../lib/checkMissing.ts';\nimport ensureDestinationParent from '../lib/ensureDestinationParent.ts';\nimport getTarget from '../lib/getTarget.ts';\n\nimport type { InstallCallback, InstallOptions } from '../types.ts';\n\ntype GetVersionsCallback = (error?: Error, results?: string[]) => void;\nfunction getVersions(versionExpression: string, options: InstallOptions, callback: GetVersionsCallback) {\n // short circuit\n isVersion(versionExpression)
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/workers/install.ts"],"sourcesContent":["import fs from 'fs';\nimport { safeRm } from 'fs-remove-compat';\nimport isVersion from 'is-version';\nimport mkdirp from 'mkdirp-classic';\nimport { getDist } from 'node-filename-to-dist-paths';\nimport resolveVersions from 'node-resolve-versions';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport tempSuffix from 'temp-suffix';\n\nimport { DEFAULT_STORAGE_PATHS } from '../constants.ts';\n\nimport createResult from '../createResult.ts';\nimport createStoragePaths from '../createStoragePaths.ts';\nimport installNode from '../installNode/index.ts';\n\nimport installNPM from '../installNPM/index.ts';\nimport checkMissing from '../lib/checkMissing.ts';\nimport ensureDestinationParent from '../lib/ensureDestinationParent.ts';\nimport getTarget from '../lib/getTarget.ts';\n\nimport type { InstallCallback, InstallOptions } from '../types.ts';\n\ntype GetVersionsCallback = (error?: Error | null, results?: string[]) => void;\nfunction getVersions(versionExpression: string, options: InstallOptions, callback: GetVersionsCallback) {\n // short circuit\n if (isVersion(versionExpression)) callback(undefined, [versionExpression]);\n else resolveVersions(versionExpression, options, (err?: Error | null, result?: string[] | unknown[]) => callback(err, result as string[] | undefined));\n}\n\nexport default function install(versionExpression: string, options: InstallOptions, callback: InstallCallback): void {\n const storagePaths = options.storagePath ? createStoragePaths(options.storagePath) : DEFAULT_STORAGE_PATHS;\n options = { ...storagePaths, ...options, ...getTarget(options) };\n getVersions(versionExpression, options, (err?: Error | null, versions?: string[]): void => {\n if (err) return callback(err);\n if (!versions || !versions.length) {\n callback(new Error(`Could not resolve versions for: ${versionExpression}`));\n return;\n }\n if (versions.length !== 1) {\n callback(new Error(`Version ${versionExpression} resolved to multiple versions: ${versions.map((x) => x)}. Expecting one.`));\n return;\n }\n\n const version = versions[0];\n const result = createResult(options, version);\n\n // Fast path: with atomic installs, folder exists = complete installation\n fs.stat(result.installPath, (err) => {\n if (!err) return callback(undefined, result);\n\n // Folder doesn't exist - do atomic install with temp folder\n const tempPath = tempSuffix(result.installPath);\n\n const queue = new Queue(1);\n queue.defer((cb) => mkdirp(options.cachePath!, (err) => cb(err)));\n queue.defer(ensureDestinationParent.bind(null, tempPath));\n\n // Install node to temp folder\n queue.defer(installNode.bind(null, version, tempPath, options));\n\n // Check and install npm to temp folder\n // Skip npm download only if bundled npm is modern (>= 3)\n queue.defer((cb) => {\n checkMissing(tempPath, options, (err, npmMissing): void => {\n if (err) return cb(err);\n if (!~(npmMissing || []).indexOf('npm')) {\n // npm is present (bundled with node) - check if it's modern enough to keep\n const dist = getDist(version);\n const bundledNpmMajor = dist && dist.npm ? +dist.npm.split('.')[0] : 0;\n if (bundledNpmMajor >= 3) {\n cb(); // npm >= 3 bundled, skip download\n return;\n }\n // old npm (<3) is buggy - delete it so installNPM can override\n const platform = options.platform;\n const libPath = platform === 'win32' ? tempPath : path.join(tempPath, 'lib');\n const npmPath = path.join(libPath, 'node_modules', 'npm');\n safeRm(npmPath, () => installNPM(version, tempPath, options, cb));\n return;\n }\n installNPM(version, tempPath, options, cb);\n });\n });\n\n // Atomic rename: move temp folder to final destination\n queue.defer((cb) => {\n fs.rename(tempPath, result.installPath, (err) => {\n if (!err) return cb();\n // Race condition: another process may have already created dest\n if (err.code === 'EEXIST' || err.code === 'ENOTEMPTY' || err.code === 'EPERM') {\n // Another process won the race - clean up temp and succeed\n safeRm(tempPath, () => cb());\n return;\n }\n cb(err);\n });\n });\n\n queue.await((err) => {\n // Clean up temp folder on error\n if (err) return safeRm(tempPath, () => callback(err));\n\n callback(undefined, result);\n });\n });\n });\n}\n"],"names":["fs","safeRm","isVersion","mkdirp","getDist","resolveVersions","path","Queue","tempSuffix","DEFAULT_STORAGE_PATHS","createResult","createStoragePaths","installNode","installNPM","checkMissing","ensureDestinationParent","getTarget","getVersions","versionExpression","options","callback","undefined","err","result","install","storagePaths","storagePath","versions","length","Error","map","x","version","stat","installPath","tempPath","queue","defer","cb","cachePath","bind","npmMissing","indexOf","dist","bundledNpmMajor","npm","split","platform","libPath","join","npmPath","rename","code","await"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-install-release",
|
|
3
|
-
"version": "1.18.
|
|
3
|
+
"version": "1.18.6",
|
|
4
4
|
"description": "Cross-platform solution for installing releases of Node.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"node",
|
|
@@ -58,10 +58,13 @@
|
|
|
58
58
|
"node-filename-to-dist-paths": "^1.3.15",
|
|
59
59
|
"node-resolve-versions": "^1.3.13",
|
|
60
60
|
"on-one": "^1.0.0",
|
|
61
|
+
"os-shim": "^0.1.3",
|
|
61
62
|
"queue-cb": "^1.0.0",
|
|
62
63
|
"temp-suffix": "^1.0.10"
|
|
63
64
|
},
|
|
64
65
|
"devDependencies": {
|
|
66
|
+
"@types/lodash.keys": "^4.2.9",
|
|
67
|
+
"@types/lodash.values": "^4.3.9",
|
|
65
68
|
"@types/mocha": "*",
|
|
66
69
|
"@types/node": "*",
|
|
67
70
|
"cr": "^0.1.0",
|