node-install-release 1.18.3 → 1.18.5
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.js +1 -1
- 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.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.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/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.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.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/workers/install.js +11 -16
- package/dist/esm/workers/install.js.map +1 -1
- package/package.json +4 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNPM/installLib.ts"],"sourcesContent":["import crypto from 'crypto';\nimport fs from 'fs';\nimport { getContent } from 'get-file-compat';\nimport { getDist } from 'node-filename-to-dist-paths';\nimport oo from 'on-one';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport { NPM_DIST_TAGS_URL, NPM_DIST_URL, NPM_MIN_VERSION } from '../constants.ts';\nimport conditionalCache from '../lib/conditionalCache.ts';\nimport extract from '../lib/extract.ts';\n\ninterface DistRecord {\n latest: string;\n}\n\nimport type { InstallOptions } from '../types.ts';\n\nexport type Callback = (error?: Error, npmVersion?: string, checksum?: string) => void;\n\nfunction calculateChecksum(filePath: string, callback: (err?: Error, checksum?: string) => void): void {\n const hash = crypto.createHash('sha256');\n const stream = fs.createReadStream(filePath);\n stream.on('data', (data) => hash.update(data));\n oo(stream, ['error', 'end', 'close', 'finish'], (err
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNPM/installLib.ts"],"sourcesContent":["import crypto from 'crypto';\nimport fs from 'fs';\nimport { getContent } from 'get-file-compat';\nimport { getDist } from 'node-filename-to-dist-paths';\nimport oo from 'on-one';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport { tmpdir } from '../compat.ts';\nimport { NPM_DIST_TAGS_URL, NPM_DIST_URL, NPM_MIN_VERSION } from '../constants.ts';\nimport conditionalCache from '../lib/conditionalCache.ts';\nimport extract from '../lib/extract.ts';\n\ninterface DistRecord {\n latest: string;\n}\n\nimport type { InstallOptions } from '../types.ts';\n\nexport type Callback = (error?: Error, npmVersion?: string, checksum?: string) => void;\n\nfunction calculateChecksum(filePath: string, callback: (err?: Error, checksum?: string) => void): void {\n const hash = crypto.createHash('sha256');\n const stream = fs.createReadStream(filePath);\n stream.on('data', (data) => hash.update(data));\n oo(stream, ['error', 'end', 'close', 'finish'], (err: Error | null) => {\n if (err) return callback(err);\n callback(undefined, hash.digest('hex'));\n });\n}\n\nexport default function installLib(version: string, dest: string, options: InstallOptions, callback: Callback): void {\n const platform = options.platform;\n const libPath = platform === 'win32' ? dest : path.join(dest, 'lib');\n const installPath = path.join(libPath, 'node_modules', 'npm');\n\n const dist = getDist(version);\n const npmMajorPair = dist && dist.npm ? +dist.npm.split('.')[0] : NPM_MIN_VERSION;\n const npmMajor = Math.max(npmMajorPair, NPM_MIN_VERSION);\n\n getContent(NPM_DIST_TAGS_URL, 'utf8', (err, res) => {\n if (err) return callback(err);\n try {\n const distTags = JSON.parse(res?.content ?? '{}') as Record<string, string>;\n const npmVersion = distTags[`latest-${npmMajor}`] || distTags[`next-${npmMajor}`] || distTags.latest;\n const downloadPath = `${NPM_DIST_URL}/-/npm-${npmVersion}.tgz`;\n const cachePath = path.join(options.cachePath ?? tmpdir(), path.basename(downloadPath));\n\n let checksum: string | undefined;\n const queue = new Queue(1);\n queue.defer((cb) => conditionalCache(downloadPath, cachePath, options, (err) => cb(err)));\n queue.defer((cb) => {\n calculateChecksum(cachePath, (err, hash) => {\n checksum = hash;\n cb(err);\n });\n });\n queue.defer((cb) => extract(cachePath, installPath, (err) => cb(err)));\n queue.await((err) => {\n err ? callback(err) : callback(undefined, npmVersion, checksum);\n });\n } catch (_e) {\n return callback(new Error('Failed to parse npm dist-tags'));\n }\n });\n}\n"],"names":["crypto","fs","getContent","getDist","oo","path","Queue","tmpdir","NPM_DIST_TAGS_URL","NPM_DIST_URL","NPM_MIN_VERSION","conditionalCache","extract","calculateChecksum","filePath","callback","hash","createHash","stream","createReadStream","on","data","update","err","undefined","digest","installLib","version","dest","options","platform","libPath","join","installPath","dist","npmMajorPair","npm","split","npmMajor","Math","max","res","distTags","JSON","parse","content","npmVersion","latest","downloadPath","cachePath","basename","checksum","queue","defer","cb","await","_e","Error"],"mappings":"AAAA,OAAOA,YAAY,SAAS;AAC5B,OAAOC,QAAQ,KAAK;AACpB,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,OAAO,QAAQ,8BAA8B;AACtD,OAAOC,QAAQ,SAAS;AACxB,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAC7B,SAASC,MAAM,QAAQ,eAAe;AACtC,SAASC,iBAAiB,EAAEC,YAAY,EAAEC,eAAe,QAAQ,kBAAkB;AACnF,OAAOC,sBAAsB,6BAA6B;AAC1D,OAAOC,aAAa,oBAAoB;AAUxC,SAASC,kBAAkBC,QAAgB,EAAEC,QAAkD;IAC7F,MAAMC,OAAOhB,OAAOiB,UAAU,CAAC;IAC/B,MAAMC,SAASjB,GAAGkB,gBAAgB,CAACL;IACnCI,OAAOE,EAAE,CAAC,QAAQ,CAACC,OAASL,KAAKM,MAAM,CAACD;IACxCjB,GAAGc,QAAQ;QAAC;QAAS;QAAO;QAAS;KAAS,EAAE,CAACK;QAC/C,IAAIA,KAAK,OAAOR,SAASQ;QACzBR,SAASS,WAAWR,KAAKS,MAAM,CAAC;IAClC;AACF;AAEA,eAAe,SAASC,WAAWC,OAAe,EAAEC,IAAY,EAAEC,OAAuB,EAAEd,QAAkB;IAC3G,MAAMe,WAAWD,QAAQC,QAAQ;IACjC,MAAMC,UAAUD,aAAa,UAAUF,OAAOvB,KAAK2B,IAAI,CAACJ,MAAM;IAC9D,MAAMK,cAAc5B,KAAK2B,IAAI,CAACD,SAAS,gBAAgB;IAEvD,MAAMG,OAAO/B,QAAQwB;IACrB,MAAMQ,eAAeD,QAAQA,KAAKE,GAAG,GAAG,CAACF,KAAKE,GAAG,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG3B;IAClE,MAAM4B,WAAWC,KAAKC,GAAG,CAACL,cAAczB;IAExCR,WAAWM,mBAAmB,QAAQ,CAACe,KAAKkB;QAC1C,IAAIlB,KAAK,OAAOR,SAASQ;QACzB,IAAI;sBAI0BM;YAH5B,MAAMa,WAAWC,KAAKC,KAAK,SAACH,gBAAAA,0BAAAA,IAAKI,OAAO,uCAAI;YAC5C,MAAMC,aAAaJ,QAAQ,CAAC,CAAC,OAAO,EAAEJ,UAAU,CAAC,IAAII,QAAQ,CAAC,CAAC,KAAK,EAAEJ,UAAU,CAAC,IAAII,SAASK,MAAM;YACpG,MAAMC,eAAe,GAAGvC,aAAa,OAAO,EAAEqC,WAAW,IAAI,CAAC;YAC9D,MAAMG,YAAY5C,KAAK2B,IAAI,EAACH,qBAAAA,QAAQoB,SAAS,cAAjBpB,gCAAAA,qBAAqBtB,UAAUF,KAAK6C,QAAQ,CAACF;YAEzE,IAAIG;YACJ,MAAMC,QAAQ,IAAI9C,MAAM;YACxB8C,MAAMC,KAAK,CAAC,CAACC,KAAO3C,iBAAiBqC,cAAcC,WAAWpB,SAAS,CAACN,MAAQ+B,GAAG/B;YACnF6B,MAAMC,KAAK,CAAC,CAACC;gBACXzC,kBAAkBoC,WAAW,CAAC1B,KAAKP;oBACjCmC,WAAWnC;oBACXsC,GAAG/B;gBACL;YACF;YACA6B,MAAMC,KAAK,CAAC,CAACC,KAAO1C,QAAQqC,WAAWhB,aAAa,CAACV,MAAQ+B,GAAG/B;YAChE6B,MAAMG,KAAK,CAAC,CAAChC;gBACXA,MAAMR,SAASQ,OAAOR,SAASS,WAAWsB,YAAYK;YACxD;QACF,EAAE,OAAOK,IAAI;YACX,OAAOzC,SAAS,IAAI0C,MAAM;QAC5B;IACF;AACF"}
|
|
@@ -25,17 +25,18 @@ export default function install(version, dest, options, callback) {
|
|
|
25
25
|
a
|
|
26
26
|
].concat(parts.slice(2)).join('-'));
|
|
27
27
|
(FILES[filePlatform] || []).forEach((x)=>{
|
|
28
|
-
filenames.push(x.filename);
|
|
28
|
+
filenames === null || filenames === void 0 ? void 0 : filenames.push(x.filename);
|
|
29
29
|
});
|
|
30
|
-
filenames.push('src');
|
|
31
|
-
filenames = filenames.filter((filename, i)=>filenames.indexOf(filename) === i);
|
|
30
|
+
filenames === null || filenames === void 0 ? void 0 : filenames.push('src');
|
|
31
|
+
filenames = filenames === null || filenames === void 0 ? void 0 : filenames.filter((filename, i)=>(filenames === null || filenames === void 0 ? void 0 : filenames.indexOf(filename)) === i);
|
|
32
32
|
}
|
|
33
33
|
const tryNext = (cb, lastErr)=>{
|
|
34
|
-
if (filenames.length === 0) {
|
|
34
|
+
if (filenames == null || filenames.length === 0) {
|
|
35
35
|
const msg = `Failed to find installable for ${version}${options.filename ? ` Filename: ${options.filename}` : ''}`;
|
|
36
36
|
return cb(new Error(lastErr ? `${msg}: ${lastErr.message}` : msg));
|
|
37
37
|
}
|
|
38
|
-
|
|
38
|
+
const filename = filenames.shift();
|
|
39
|
+
installFilename(filename, version, dest, options, (err, checksum)=>err ? tryNext(cb, err) : cb(undefined, checksum));
|
|
39
40
|
};
|
|
40
41
|
tryNext((err, checksum)=>{
|
|
41
42
|
let message = `node ${version.slice(1)}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/index.ts"],"sourcesContent":["import { FILE_PLATFORM_MAP, FILES } from '../constants.ts';\nimport type { ChecksumResult, InstallOptions, NoParamCallback } from '../types.ts';\nimport installFilename from './installFilename.ts';\n\nexport default function install(version: string, dest: string, options: InstallOptions, callback: NoParamCallback): void {\n let filenames = null;\n\n // a specific filename\n if (options.filename) filenames = [options.filename];\n // infer with fallbacks\n else {\n const { platform, arch } = options;\n const filePlatform = FILE_PLATFORM_MAP[platform] || platform;\n const parts = [filePlatform, arch];\n if (options.type) parts.push(options.type);\n if (options.compression) parts.push(options.compression);\n\n // generate the files in search order\n const archs = [arch, process.arch];\n filenames = archs.map((a) => [filePlatform, a].concat(parts.slice(2)).join('-'));\n (FILES[filePlatform] || []).forEach((x) => {\n filenames
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/index.ts"],"sourcesContent":["import { FILE_PLATFORM_MAP, FILES } from '../constants.ts';\nimport type { ChecksumResult, InstallOptions, NoParamCallback } from '../types.ts';\nimport installFilename from './installFilename.ts';\n\nexport default function install(version: string, dest: string, options: InstallOptions, callback: NoParamCallback): void {\n let filenames: string[] | null = null;\n\n // a specific filename\n if (options.filename) filenames = [options.filename];\n // infer with fallbacks\n else {\n const { platform, arch } = options;\n const filePlatform = (FILE_PLATFORM_MAP as Record<string, string>)[platform as string] || platform;\n const parts = [filePlatform, arch];\n if (options.type) parts.push(options.type);\n if (options.compression) parts.push(options.compression as unknown as string);\n\n // generate the files in search order\n const archs = [arch, process.arch];\n filenames = archs.map((a) => [filePlatform, a].concat(parts.slice(2)).join('-'));\n ((FILES as Record<string, { filename: string }[]>)[filePlatform as string] || []).forEach((x: { filename: string }) => {\n filenames?.push(x.filename);\n });\n filenames?.push('src');\n filenames = filenames?.filter((filename, i) => filenames?.indexOf(filename) === i);\n }\n\n const tryNext = (cb: (err?: Error, checksum?: ChecksumResult) => void, lastErr?: Error) => {\n if (filenames == null || filenames.length === 0) {\n const msg = `Failed to find installable for ${version}${options.filename ? ` Filename: ${options.filename}` : ''}`;\n return cb(new Error(lastErr ? `${msg}: ${lastErr.message}` : msg));\n }\n const filename = filenames.shift()!;\n installFilename(filename, version, dest, options, (err, checksum) => (err ? tryNext(cb, err) : cb(undefined, checksum)));\n };\n tryNext((err, checksum) => {\n let message = `node ${version.slice(1)}`;\n if (!err) {\n message += ' installed';\n if (checksum) message += ` (${checksum.actual.slice(0, 8)})`;\n } else {\n message += ' install failed';\n if (checksum) message += ` (${checksum.actual} expecting ${checksum.expected})`;\n message += `. Error: ${err.message}`;\n }\n console.log(message);\n callback(err);\n });\n}\n"],"names":["FILE_PLATFORM_MAP","FILES","installFilename","install","version","dest","options","callback","filenames","filename","platform","arch","filePlatform","parts","type","push","compression","archs","process","map","a","concat","slice","join","forEach","x","filter","i","indexOf","tryNext","cb","lastErr","length","msg","Error","message","shift","err","checksum","undefined","actual","expected","console","log"],"mappings":"AAAA,SAASA,iBAAiB,EAAEC,KAAK,QAAQ,kBAAkB;AAE3D,OAAOC,qBAAqB,uBAAuB;AAEnD,eAAe,SAASC,QAAQC,OAAe,EAAEC,IAAY,EAAEC,OAAuB,EAAEC,QAAyB;IAC/G,IAAIC,YAA6B;IAEjC,sBAAsB;IACtB,IAAIF,QAAQG,QAAQ,EAAED,YAAY;QAACF,QAAQG,QAAQ;KAAC;SAE/C;QACH,MAAM,EAAEC,QAAQ,EAAEC,IAAI,EAAE,GAAGL;QAC3B,MAAMM,eAAe,AAACZ,iBAA4C,CAACU,SAAmB,IAAIA;QAC1F,MAAMG,QAAQ;YAACD;YAAcD;SAAK;QAClC,IAAIL,QAAQQ,IAAI,EAAED,MAAME,IAAI,CAACT,QAAQQ,IAAI;QACzC,IAAIR,QAAQU,WAAW,EAAEH,MAAME,IAAI,CAACT,QAAQU,WAAW;QAEvD,qCAAqC;QACrC,MAAMC,QAAQ;YAACN;YAAMO,QAAQP,IAAI;SAAC;QAClCH,YAAYS,MAAME,GAAG,CAAC,CAACC,IAAM;gBAACR;gBAAcQ;aAAE,CAACC,MAAM,CAACR,MAAMS,KAAK,CAAC,IAAIC,IAAI,CAAC;QAC1E,CAAA,AAACtB,KAAgD,CAACW,aAAuB,IAAI,EAAE,AAAD,EAAGY,OAAO,CAAC,CAACC;YACzFjB,sBAAAA,gCAAAA,UAAWO,IAAI,CAACU,EAAEhB,QAAQ;QAC5B;QACAD,sBAAAA,gCAAAA,UAAWO,IAAI,CAAC;QAChBP,YAAYA,sBAAAA,gCAAAA,UAAWkB,MAAM,CAAC,CAACjB,UAAUkB,IAAMnB,CAAAA,sBAAAA,gCAAAA,UAAWoB,OAAO,CAACnB,eAAckB;IAClF;IAEA,MAAME,UAAU,CAACC,IAAsDC;QACrE,IAAIvB,aAAa,QAAQA,UAAUwB,MAAM,KAAK,GAAG;YAC/C,MAAMC,MAAM,CAAC,+BAA+B,EAAE7B,UAAUE,QAAQG,QAAQ,GAAG,CAAC,WAAW,EAAEH,QAAQG,QAAQ,EAAE,GAAG,IAAI;YAClH,OAAOqB,GAAG,IAAII,MAAMH,UAAU,GAAGE,IAAI,EAAE,EAAEF,QAAQI,OAAO,EAAE,GAAGF;QAC/D;QACA,MAAMxB,WAAWD,UAAU4B,KAAK;QAChClC,gBAAgBO,UAAUL,SAASC,MAAMC,SAAS,CAAC+B,KAAKC,WAAcD,MAAMR,QAAQC,IAAIO,OAAOP,GAAGS,WAAWD;IAC/G;IACAT,QAAQ,CAACQ,KAAKC;QACZ,IAAIH,UAAU,CAAC,KAAK,EAAE/B,QAAQkB,KAAK,CAAC,IAAI;QACxC,IAAI,CAACe,KAAK;YACRF,WAAW;YACX,IAAIG,UAAUH,WAAW,CAAC,EAAE,EAAEG,SAASE,MAAM,CAAClB,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;QAC9D,OAAO;YACLa,WAAW;YACX,IAAIG,UAAUH,WAAW,CAAC,EAAE,EAAEG,SAASE,MAAM,CAAC,WAAW,EAAEF,SAASG,QAAQ,CAAC,CAAC,CAAC;YAC/EN,WAAW,CAAC,SAAS,EAAEE,IAAIF,OAAO,EAAE;QACtC;QACAO,QAAQC,GAAG,CAACR;QACZ5B,SAAS8B;IACX;AACF"}
|
|
@@ -9,7 +9,7 @@ export default function installCompressed(distPath, dest, options, callback) {
|
|
|
9
9
|
const cachePath = path.join(options.cachePath, path.basename(downloadPath));
|
|
10
10
|
let checksum;
|
|
11
11
|
const queue = new Queue(1);
|
|
12
|
-
queue.defer(conditionalCache
|
|
12
|
+
queue.defer((cb)=>conditionalCache(downloadPath, cachePath, options, (err)=>cb(err)));
|
|
13
13
|
queue.defer((cb)=>{
|
|
14
14
|
validateDownload(distPath, cachePath, (err, result)=>{
|
|
15
15
|
checksum = result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installCompressed.ts"],"sourcesContent":["import path from 'path';\nimport Queue from 'queue-cb';\n\nimport { NODE_DIST_BASE_URL } from '../constants.ts';\nimport conditionalCache from '../lib/conditionalCache.ts';\nimport extract from '../lib/extract.ts';\nimport type { ChecksumCallback, ChecksumResult, InstallOptions } from '../types.ts';\nimport validateDownload from './validateDownload.ts';\n\nexport default function installCompressed(distPath: string, dest: string, options: InstallOptions, callback: ChecksumCallback): void {\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n const cachePath = path.join(options.cachePath
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installCompressed.ts"],"sourcesContent":["import path from 'path';\nimport Queue from 'queue-cb';\n\nimport { NODE_DIST_BASE_URL } from '../constants.ts';\nimport conditionalCache from '../lib/conditionalCache.ts';\nimport extract from '../lib/extract.ts';\nimport type { ChecksumCallback, ChecksumResult, InstallOptions } from '../types.ts';\nimport validateDownload from './validateDownload.ts';\n\nexport default function installCompressed(distPath: string, dest: string, options: InstallOptions, callback: ChecksumCallback): void {\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n const cachePath = path.join(options.cachePath!, path.basename(downloadPath));\n\n let checksum: ChecksumResult | undefined;\n const queue = new Queue(1);\n queue.defer((cb) => conditionalCache(downloadPath, cachePath, options, (err) => cb(err)));\n queue.defer((cb) => {\n validateDownload(distPath, cachePath, (err, result) => {\n checksum = result;\n cb(err);\n });\n });\n queue.defer(extract.bind(null, cachePath, dest, { strip: 1, time: 1000 }));\n queue.await((err) => callback(err, checksum));\n}\n"],"names":["path","Queue","NODE_DIST_BASE_URL","conditionalCache","extract","validateDownload","installCompressed","distPath","dest","options","callback","downloadPath","cachePath","join","basename","checksum","queue","defer","cb","err","result","bind","strip","time","await"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAE7B,SAASC,kBAAkB,QAAQ,kBAAkB;AACrD,OAAOC,sBAAsB,6BAA6B;AAC1D,OAAOC,aAAa,oBAAoB;AAExC,OAAOC,sBAAsB,wBAAwB;AAErD,eAAe,SAASC,kBAAkBC,QAAgB,EAAEC,IAAY,EAAEC,OAAuB,EAAEC,QAA0B;IAC3H,MAAMC,eAAe,GAAGT,mBAAmB,CAAC,EAAEK,UAAU;IACxD,MAAMK,YAAYZ,KAAKa,IAAI,CAACJ,QAAQG,SAAS,EAAGZ,KAAKc,QAAQ,CAACH;IAE9D,IAAII;IACJ,MAAMC,QAAQ,IAAIf,MAAM;IACxBe,MAAMC,KAAK,CAAC,CAACC,KAAOf,iBAAiBQ,cAAcC,WAAWH,SAAS,CAACU,MAAQD,GAAGC;IACnFH,MAAMC,KAAK,CAAC,CAACC;QACXb,iBAAiBE,UAAUK,WAAW,CAACO,KAAKC;YAC1CL,WAAWK;YACXF,GAAGC;QACL;IACF;IACAH,MAAMC,KAAK,CAACb,QAAQiB,IAAI,CAAC,MAAMT,WAAWJ,MAAM;QAAEc,OAAO;QAAGC,MAAM;IAAK;IACvEP,MAAMQ,KAAK,CAAC,CAACL,MAAQT,SAASS,KAAKJ;AACrC"}
|
|
@@ -14,9 +14,9 @@ export default function installExe(distPath, dest, options, callback) {
|
|
|
14
14
|
fs.stat(execPath, (err)=>{
|
|
15
15
|
if (!err) return callback(); // already exists
|
|
16
16
|
const queue = new Queue(1);
|
|
17
|
-
queue.defer(conditionalCache
|
|
18
|
-
queue.defer(validateDownload
|
|
19
|
-
queue.defer(copyFile
|
|
17
|
+
queue.defer((cb)=>conditionalCache(downloadPath, cachePath, options, (err)=>cb(err)));
|
|
18
|
+
queue.defer((cb)=>validateDownload(distPath, cachePath, (err)=>cb(err)));
|
|
19
|
+
queue.defer((cb)=>copyFile(cachePath, execPath, (err)=>cb(err)));
|
|
20
20
|
queue.await(callback);
|
|
21
21
|
});
|
|
22
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installExe.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport Queue from 'queue-cb';\n\nimport { NODE_DIST_BASE_URL, NODE_FILE_PATHS } from '../constants.ts';\nimport conditionalCache from '../lib/conditionalCache.ts';\nimport copyFile from '../lib/copyFile.ts';\nimport type { InstallOptions, NoParamCallback } from '../types.ts';\nimport validateDownload from './validateDownload.ts';\n\nexport default function installExe(distPath: string, dest: string, options: InstallOptions, callback: NoParamCallback): void {\n const platform = options.platform;\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n const cachePath = path.join(options.cachePath
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installExe.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport Queue from 'queue-cb';\n\nimport { NODE_DIST_BASE_URL, NODE_FILE_PATHS } from '../constants.ts';\nimport conditionalCache from '../lib/conditionalCache.ts';\nimport copyFile from '../lib/copyFile.ts';\nimport type { InstallOptions, NoParamCallback } from '../types.ts';\nimport validateDownload from './validateDownload.ts';\n\nexport default function installExe(distPath: string, dest: string, options: InstallOptions, callback: NoParamCallback): void {\n const platform = options.platform;\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n const cachePath = path.join(options.cachePath!, `node-${distPath}.exe`);\n const nodePath = (NODE_FILE_PATHS as Record<string, string>)[platform as string] || NODE_FILE_PATHS.posix;\n const execPath = path.join(dest, nodePath);\n\n fs.stat(execPath, (err) => {\n if (!err) return callback(); // already exists\n\n const queue = new Queue(1);\n queue.defer((cb) => conditionalCache(downloadPath, cachePath, options, (err) => cb(err)));\n queue.defer((cb) => validateDownload(distPath, cachePath, (err) => cb(err)));\n queue.defer((cb) => copyFile(cachePath, execPath, (err) => cb(err)));\n queue.await(callback);\n });\n}\n"],"names":["fs","path","Queue","NODE_DIST_BASE_URL","NODE_FILE_PATHS","conditionalCache","copyFile","validateDownload","installExe","distPath","dest","options","callback","platform","downloadPath","cachePath","join","nodePath","posix","execPath","stat","err","queue","defer","cb","await"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAE7B,SAASC,kBAAkB,EAAEC,eAAe,QAAQ,kBAAkB;AACtE,OAAOC,sBAAsB,6BAA6B;AAC1D,OAAOC,cAAc,qBAAqB;AAE1C,OAAOC,sBAAsB,wBAAwB;AAErD,eAAe,SAASC,WAAWC,QAAgB,EAAEC,IAAY,EAAEC,OAAuB,EAAEC,QAAyB;IACnH,MAAMC,WAAWF,QAAQE,QAAQ;IACjC,MAAMC,eAAe,GAAGX,mBAAmB,CAAC,EAAEM,UAAU;IACxD,MAAMM,YAAYd,KAAKe,IAAI,CAACL,QAAQI,SAAS,EAAG,CAAC,KAAK,EAAEN,SAAS,IAAI,CAAC;IACtE,MAAMQ,WAAW,AAACb,eAA0C,CAACS,SAAmB,IAAIT,gBAAgBc,KAAK;IACzG,MAAMC,WAAWlB,KAAKe,IAAI,CAACN,MAAMO;IAEjCjB,GAAGoB,IAAI,CAACD,UAAU,CAACE;QACjB,IAAI,CAACA,KAAK,OAAOT,YAAY,iBAAiB;QAE9C,MAAMU,QAAQ,IAAIpB,MAAM;QACxBoB,MAAMC,KAAK,CAAC,CAACC,KAAOnB,iBAAiBS,cAAcC,WAAWJ,SAAS,CAACU,MAAQG,GAAGH;QACnFC,MAAMC,KAAK,CAAC,CAACC,KAAOjB,iBAAiBE,UAAUM,WAAW,CAACM,MAAQG,GAAGH;QACtEC,MAAMC,KAAK,CAAC,CAACC,KAAOlB,SAASS,WAAWI,UAAU,CAACE,MAAQG,GAAGH;QAC9DC,MAAMG,KAAK,CAACb;IACd;AACF"}
|
|
@@ -7,18 +7,18 @@ export default function installPosix(buildPath, dest, _options, callback) {
|
|
|
7
7
|
fs.stat(buildTarget, (err)=>{
|
|
8
8
|
if (!err) return callback(); // already exists
|
|
9
9
|
const queue = new Queue(1);
|
|
10
|
-
queue.defer(spawn
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
queue.defer(spawn
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
10
|
+
queue.defer((cb)=>spawn('./configure', [
|
|
11
|
+
`--prefix=${dest}`
|
|
12
|
+
], {
|
|
13
|
+
stdio: 'inherit',
|
|
14
|
+
cwd: buildPath
|
|
15
|
+
}, (err)=>cb(err)));
|
|
16
|
+
queue.defer((cb)=>spawn('make', [
|
|
17
|
+
'install'
|
|
18
|
+
], {
|
|
19
|
+
stdio: 'inherit',
|
|
20
|
+
cwd: buildPath
|
|
21
|
+
}, (err)=>cb(err)));
|
|
22
22
|
queue.await(callback);
|
|
23
23
|
});
|
|
24
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installSource/buildPosix.ts"],"sourcesContent":["import spawn from 'cross-spawn-cb';\nimport fs from 'fs';\nimport path from 'path';\nimport Queue from 'queue-cb';\n\nimport type { InstallOptions, NoParamCallback } from '../../types.ts';\n\nexport default function installPosix(buildPath: string, dest: string, _options: InstallOptions, callback: NoParamCallback): void {\n const buildTarget = path.join(dest, 'node');\n\n fs.stat(buildTarget, (err) => {\n if (!err) return callback(); // already exists\n\n const queue = new Queue(1);\n queue.defer(spawn
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installSource/buildPosix.ts"],"sourcesContent":["import spawn from 'cross-spawn-cb';\nimport fs from 'fs';\nimport path from 'path';\nimport Queue from 'queue-cb';\n\nimport type { InstallOptions, NoParamCallback } from '../../types.ts';\n\nexport default function installPosix(buildPath: string, dest: string, _options: InstallOptions, callback: NoParamCallback): void {\n const buildTarget = path.join(dest, 'node');\n\n fs.stat(buildTarget, (err) => {\n if (!err) return callback(); // already exists\n\n const queue = new Queue(1);\n queue.defer((cb) => spawn('./configure', [`--prefix=${dest}`], { stdio: 'inherit', cwd: buildPath }, (err) => cb(err)));\n queue.defer((cb) => spawn('make', ['install'], { stdio: 'inherit', cwd: buildPath }, (err) => cb(err)));\n queue.await(callback);\n });\n}\n"],"names":["spawn","fs","path","Queue","installPosix","buildPath","dest","_options","callback","buildTarget","join","stat","err","queue","defer","cb","stdio","cwd","await"],"mappings":"AAAA,OAAOA,WAAW,iBAAiB;AACnC,OAAOC,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAI7B,eAAe,SAASC,aAAaC,SAAiB,EAAEC,IAAY,EAAEC,QAAwB,EAAEC,QAAyB;IACvH,MAAMC,cAAcP,KAAKQ,IAAI,CAACJ,MAAM;IAEpCL,GAAGU,IAAI,CAACF,aAAa,CAACG;QACpB,IAAI,CAACA,KAAK,OAAOJ,YAAY,iBAAiB;QAE9C,MAAMK,QAAQ,IAAIV,MAAM;QACxBU,MAAMC,KAAK,CAAC,CAACC,KAAOf,MAAM,eAAe;gBAAC,CAAC,SAAS,EAAEM,MAAM;aAAC,EAAE;gBAAEU,OAAO;gBAAWC,KAAKZ;YAAU,GAAG,CAACO,MAAQG,GAAGH;QACjHC,MAAMC,KAAK,CAAC,CAACC,KAAOf,MAAM,QAAQ;gBAAC;aAAU,EAAE;gBAAEgB,OAAO;gBAAWC,KAAKZ;YAAU,GAAG,CAACO,MAAQG,GAAGH;QACjGC,MAAMK,KAAK,CAACV;IACd;AACF"}
|
|
@@ -9,11 +9,19 @@ export default function installWin32(buildPath, dest, _options, callback) {
|
|
|
9
9
|
fs.stat(buildTarget, (err)=>{
|
|
10
10
|
if (!err) return callback(); // already exists
|
|
11
11
|
const queue = new Queue(1);
|
|
12
|
-
queue.defer(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
queue.defer((cb)=>{
|
|
13
|
+
fs.stat(buildSource, (err)=>{
|
|
14
|
+
if (!err) {
|
|
15
|
+
callback();
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
spawn('./vcbuild', [], {
|
|
19
|
+
stdio: 'inherit',
|
|
20
|
+
cwd: buildPath
|
|
21
|
+
}, (spawnErr)=>cb(spawnErr));
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
queue.defer((cb)=>conditionalCopy(buildSource, buildTarget, false, (err)=>cb(err)));
|
|
17
25
|
queue.await(callback);
|
|
18
26
|
});
|
|
19
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installSource/buildWin32.ts"],"sourcesContent":["import spawn from 'cross-spawn-cb';\nimport fs from 'fs';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport conditionalCopy from '../../lib/conditionalCopy.ts';\n\nimport type { InstallOptions, NoParamCallback } from '../../types.ts';\n\nexport default function installWin32(buildPath: string, dest: string, _options: InstallOptions, callback: NoParamCallback): void {\n const buildSource = path.join(buildPath, 'out', 'Release', 'node.exe');\n const buildTarget = path.join(dest, 'node.exe');\n\n fs.stat(buildTarget, (err) => {\n if (!err) return callback(); // already exists\n\n const queue = new Queue(1);\n queue.defer(fs.stat
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installSource/buildWin32.ts"],"sourcesContent":["import spawn from 'cross-spawn-cb';\nimport fs from 'fs';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport conditionalCopy from '../../lib/conditionalCopy.ts';\n\nimport type { InstallOptions, NoParamCallback } from '../../types.ts';\n\nexport default function installWin32(buildPath: string, dest: string, _options: InstallOptions, callback: NoParamCallback): void {\n const buildSource = path.join(buildPath, 'out', 'Release', 'node.exe');\n const buildTarget = path.join(dest, 'node.exe');\n\n fs.stat(buildTarget, (err) => {\n if (!err) return callback(); // already exists\n\n const queue = new Queue(1);\n queue.defer((cb) => {\n fs.stat(buildSource, (err: NodeJS.ErrnoException | null) => {\n if (!err) {\n callback();\n return;\n }\n spawn('./vcbuild', [], { stdio: 'inherit', cwd: buildPath }, (spawnErr) => cb(spawnErr));\n });\n });\n queue.defer((cb) => conditionalCopy(buildSource, buildTarget, false, (err) => cb(err)));\n queue.await(callback);\n });\n}\n"],"names":["spawn","fs","path","Queue","conditionalCopy","installWin32","buildPath","dest","_options","callback","buildSource","join","buildTarget","stat","err","queue","defer","cb","stdio","cwd","spawnErr","await"],"mappings":"AAAA,OAAOA,WAAW,iBAAiB;AACnC,OAAOC,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAC7B,OAAOC,qBAAqB,+BAA+B;AAI3D,eAAe,SAASC,aAAaC,SAAiB,EAAEC,IAAY,EAAEC,QAAwB,EAAEC,QAAyB;IACvH,MAAMC,cAAcR,KAAKS,IAAI,CAACL,WAAW,OAAO,WAAW;IAC3D,MAAMM,cAAcV,KAAKS,IAAI,CAACJ,MAAM;IAEpCN,GAAGY,IAAI,CAACD,aAAa,CAACE;QACpB,IAAI,CAACA,KAAK,OAAOL,YAAY,iBAAiB;QAE9C,MAAMM,QAAQ,IAAIZ,MAAM;QACxBY,MAAMC,KAAK,CAAC,CAACC;YACXhB,GAAGY,IAAI,CAACH,aAAa,CAACI;gBACpB,IAAI,CAACA,KAAK;oBACRL;oBACA;gBACF;gBACAT,MAAM,aAAa,EAAE,EAAE;oBAAEkB,OAAO;oBAAWC,KAAKb;gBAAU,GAAG,CAACc,WAAaH,GAAGG;YAChF;QACF;QACAL,MAAMC,KAAK,CAAC,CAACC,KAAOb,gBAAgBM,aAAaE,aAAa,OAAO,CAACE,MAAQG,GAAGH;QACjFC,MAAMM,KAAK,CAACZ;IACd;AACF"}
|
|
@@ -16,10 +16,10 @@ export default function InstallSource(distPath, dest, options, callback) {
|
|
|
16
16
|
const tempBuildPath = tempSuffix(path.join(options.buildPath, path.basename(distPath)));
|
|
17
17
|
const cachePath = path.join(options.cachePath, path.basename(downloadPath));
|
|
18
18
|
const queue = new Queue(1);
|
|
19
|
-
queue.defer(conditionalCache
|
|
20
|
-
queue.defer(validateDownload
|
|
21
|
-
queue.defer(extract
|
|
22
|
-
queue.defer(build
|
|
19
|
+
queue.defer((cb)=>conditionalCache(downloadPath, cachePath, options, (err)=>cb(err)));
|
|
20
|
+
queue.defer((cb)=>validateDownload(distPath, cachePath, (err)=>cb(err)));
|
|
21
|
+
queue.defer((cb)=>extract(cachePath, tempBuildPath, (err)=>cb(err)));
|
|
22
|
+
queue.defer((cb)=>build(tempBuildPath, dest, options, (err)=>cb(err)));
|
|
23
23
|
queue.await((err)=>{
|
|
24
24
|
// Always clean up temp build directory
|
|
25
25
|
safeRm(tempBuildPath, ()=>callback(err));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installSource/index.ts"],"sourcesContent":["import { safeRm } from 'fs-remove-compat';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport tempSuffix from 'temp-suffix';\n\nimport { NODE_DIST_BASE_URL } from '../../constants.ts';\nimport conditionalCache from '../../lib/conditionalCache.ts';\nimport extract from '../../lib/extract.ts';\nimport type { InstallOptions, NoParamCallback } from '../../types.ts';\nimport validateDownload from '../validateDownload.ts';\nimport buildPosix from './buildPosix.ts';\nimport buildWin32 from './buildWin32.ts';\n\nexport default function InstallSource(distPath: string, dest: string, options: InstallOptions, callback: NoParamCallback): void {\n const platform = options.platform;\n const build = platform === 'win32' ? buildWin32 : buildPosix;\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n // Use temp build path to avoid race conditions with parallel builds\n const tempBuildPath = tempSuffix(path.join(options.buildPath
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/installNode/installSource/index.ts"],"sourcesContent":["import { safeRm } from 'fs-remove-compat';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport tempSuffix from 'temp-suffix';\n\nimport { NODE_DIST_BASE_URL } from '../../constants.ts';\nimport conditionalCache from '../../lib/conditionalCache.ts';\nimport extract from '../../lib/extract.ts';\nimport type { InstallOptions, NoParamCallback } from '../../types.ts';\nimport validateDownload from '../validateDownload.ts';\nimport buildPosix from './buildPosix.ts';\nimport buildWin32 from './buildWin32.ts';\n\nexport default function InstallSource(distPath: string, dest: string, options: InstallOptions, callback: NoParamCallback): void {\n const platform = options.platform;\n const build = platform === 'win32' ? buildWin32 : buildPosix;\n const downloadPath = `${NODE_DIST_BASE_URL}/${distPath}`;\n // Use temp build path to avoid race conditions with parallel builds\n const tempBuildPath = tempSuffix(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((cb) => conditionalCache(downloadPath, cachePath, options, (err) => cb(err)));\n queue.defer((cb) => validateDownload(distPath, cachePath, (err) => cb(err)));\n queue.defer((cb) => extract(cachePath, tempBuildPath, (err) => cb(err)));\n queue.defer((cb) => build(tempBuildPath, dest, options, (err) => cb(err)));\n queue.await((err) => {\n // Always clean up temp build directory\n safeRm(tempBuildPath, () => callback(err));\n });\n}\n"],"names":["safeRm","path","Queue","tempSuffix","NODE_DIST_BASE_URL","conditionalCache","extract","validateDownload","buildPosix","buildWin32","InstallSource","distPath","dest","options","callback","platform","build","downloadPath","tempBuildPath","join","buildPath","basename","cachePath","queue","defer","cb","err","await"],"mappings":"AAAA,SAASA,MAAM,QAAQ,mBAAmB;AAC1C,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAC7B,OAAOC,gBAAgB,cAAc;AAErC,SAASC,kBAAkB,QAAQ,qBAAqB;AACxD,OAAOC,sBAAsB,gCAAgC;AAC7D,OAAOC,aAAa,uBAAuB;AAE3C,OAAOC,sBAAsB,yBAAyB;AACtD,OAAOC,gBAAgB,kBAAkB;AACzC,OAAOC,gBAAgB,kBAAkB;AAEzC,eAAe,SAASC,cAAcC,QAAgB,EAAEC,IAAY,EAAEC,OAAuB,EAAEC,QAAyB;IACtH,MAAMC,WAAWF,QAAQE,QAAQ;IACjC,MAAMC,QAAQD,aAAa,UAAUN,aAAaD;IAClD,MAAMS,eAAe,GAAGb,mBAAmB,CAAC,EAAEO,UAAU;IACxD,oEAAoE;IACpE,MAAMO,gBAAgBf,WAAWF,KAAKkB,IAAI,CAACN,QAAQO,SAAS,EAAGnB,KAAKoB,QAAQ,CAACV;IAC7E,MAAMW,YAAYrB,KAAKkB,IAAI,CAACN,QAAQS,SAAS,EAAGrB,KAAKoB,QAAQ,CAACJ;IAE9D,MAAMM,QAAQ,IAAIrB,MAAM;IACxBqB,MAAMC,KAAK,CAAC,CAACC,KAAOpB,iBAAiBY,cAAcK,WAAWT,SAAS,CAACa,MAAQD,GAAGC;IACnFH,MAAMC,KAAK,CAAC,CAACC,KAAOlB,iBAAiBI,UAAUW,WAAW,CAACI,MAAQD,GAAGC;IACtEH,MAAMC,KAAK,CAAC,CAACC,KAAOnB,QAAQgB,WAAWJ,eAAe,CAACQ,MAAQD,GAAGC;IAClEH,MAAMC,KAAK,CAAC,CAACC,KAAOT,MAAME,eAAeN,MAAMC,SAAS,CAACa,MAAQD,GAAGC;IACpEH,MAAMI,KAAK,CAAC,CAACD;QACX,uCAAuC;QACvC1B,OAAOkB,eAAe,IAAMJ,SAASY;IACvC;AACF"}
|
|
@@ -7,10 +7,11 @@ export default function validateDownload(distPath, installPath, callback) {
|
|
|
7
7
|
const version = distPath.split('/')[0];
|
|
8
8
|
const downloadPath = `${NODE_DIST_BASE_URL}/${version}/SHASUMS256.txt`;
|
|
9
9
|
getContent(downloadPath, 'utf8', (err, res)=>{
|
|
10
|
+
var _ref, _text_split__split_pop;
|
|
10
11
|
if (err) return callback(err);
|
|
11
|
-
const text = res.content;
|
|
12
|
+
const text = (_ref = res === null || res === void 0 ? void 0 : res.content) !== null && _ref !== void 0 ? _ref : '';
|
|
12
13
|
const filename = distPath.split('/').slice(1).join('/');
|
|
13
|
-
const expected = text.split(filename)[0].split('\n').pop().trim();
|
|
14
|
+
const expected = ((_text_split__split_pop = text.split(filename)[0].split('\n').pop()) !== null && _text_split__split_pop !== void 0 ? _text_split__split_pop : '').trim();
|
|
14
15
|
const hash = crypto.createHash('sha256');
|
|
15
16
|
const stream = fs.createReadStream(installPath);
|
|
16
17
|
stream.on('data', (data)=>hash.update(data));
|
|
@@ -28,7 +29,7 @@ export default function validateDownload(distPath, installPath, callback) {
|
|
|
28
29
|
expected,
|
|
29
30
|
match
|
|
30
31
|
};
|
|
31
|
-
match ? callback(
|
|
32
|
+
match ? callback(undefined, checksum) : callback(new Error(`${filename} checksum failed`), checksum);
|
|
32
33
|
});
|
|
33
34
|
});
|
|
34
35
|
}
|
|
@@ -1 +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 { getContent } from 'get-file-compat';\nimport oo from 'on-one';\nimport { NODE_DIST_BASE_URL } from '../constants.ts';\n\nimport type { ChecksumCallback, ChecksumResult } from '../types.ts';\n\nexport default function validateDownload(distPath: string, installPath: string, callback: ChecksumCallback): void {\n const version = distPath.split('/')[0];\n const downloadPath = `${NODE_DIST_BASE_URL}/${version}/SHASUMS256.txt`;\n getContent(downloadPath, 'utf8', (err, res) => {\n if (err) return callback(err);\n const text = res
|
|
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 { getContent } from 'get-file-compat';\nimport oo from 'on-one';\nimport { NODE_DIST_BASE_URL } from '../constants.ts';\n\nimport type { ChecksumCallback, ChecksumResult } from '../types.ts';\n\nexport default function validateDownload(distPath: string, installPath: string, callback: ChecksumCallback): void {\n const version = distPath.split('/')[0];\n const downloadPath = `${NODE_DIST_BASE_URL}/${version}/SHASUMS256.txt`;\n getContent(downloadPath, 'utf8', (err, res) => {\n if (err) return callback(err);\n const text = res?.content ?? '';\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 stream = fs.createReadStream(installPath);\n stream.on('data', (data) => hash.update(data));\n oo(stream, ['error', 'end', 'close', 'finish'], (err: Error | null) => {\n if (err) return callback(err);\n const actual = hash.digest('hex');\n const match = actual === expected;\n const checksum: ChecksumResult = { actual, expected, match };\n match ? callback(undefined, checksum) : callback(new Error(`${filename} checksum failed`), checksum);\n });\n });\n}\n"],"names":["crypto","fs","getContent","oo","NODE_DIST_BASE_URL","validateDownload","distPath","installPath","callback","version","split","downloadPath","err","res","text","content","filename","slice","join","expected","pop","trim","hash","createHash","stream","createReadStream","on","data","update","actual","digest","match","checksum","undefined","Error"],"mappings":"AAAA,OAAOA,YAAY,SAAS;AAC5B,OAAOC,QAAQ,KAAK;AACpB,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,OAAOC,QAAQ,SAAS;AACxB,SAASC,kBAAkB,QAAQ,kBAAkB;AAIrD,eAAe,SAASC,iBAAiBC,QAAgB,EAAEC,WAAmB,EAAEC,QAA0B;IACxG,MAAMC,UAAUH,SAASI,KAAK,CAAC,IAAI,CAAC,EAAE;IACtC,MAAMC,eAAe,GAAGP,mBAAmB,CAAC,EAAEK,QAAQ,eAAe,CAAC;IACtEP,WAAWS,cAAc,QAAQ,CAACC,KAAKC;kBAInBC;QAHlB,IAAIF,KAAK,OAAOJ,SAASI;QACzB,MAAME,eAAOD,gBAAAA,0BAAAA,IAAKE,OAAO,uCAAI;QAC7B,MAAMC,WAAWV,SAASI,KAAK,CAAC,KAAKO,KAAK,CAAC,GAAGC,IAAI,CAAC;QACnD,MAAMC,WAAW,EAACL,yBAAAA,KAAKJ,KAAK,CAACM,SAAS,CAAC,EAAE,CAACN,KAAK,CAAC,MAAMU,GAAG,gBAAvCN,oCAAAA,yBAA6C,IAAIO,IAAI;QACvE,MAAMC,OAAOtB,OAAOuB,UAAU,CAAC;QAC/B,MAAMC,SAASvB,GAAGwB,gBAAgB,CAAClB;QACnCiB,OAAOE,EAAE,CAAC,QAAQ,CAACC,OAASL,KAAKM,MAAM,CAACD;QACxCxB,GAAGqB,QAAQ;YAAC;YAAS;YAAO;YAAS;SAAS,EAAE,CAACZ;YAC/C,IAAIA,KAAK,OAAOJ,SAASI;YACzB,MAAMiB,SAASP,KAAKQ,MAAM,CAAC;YAC3B,MAAMC,QAAQF,WAAWV;YACzB,MAAMa,WAA2B;gBAAEH;gBAAQV;gBAAUY;YAAM;YAC3DA,QAAQvB,SAASyB,WAAWD,YAAYxB,SAAS,IAAI0B,MAAM,GAAGlB,SAAS,gBAAgB,CAAC,GAAGgB;QAC7F;IACF;AACF"}
|
|
@@ -16,5 +16,5 @@ export default function checkMissing(dest, options, callback) {
|
|
|
16
16
|
const queue = new Queue();
|
|
17
17
|
queue.defer(check.bind(null, nodePath, 'node'));
|
|
18
18
|
queue.defer(check.bind(null, npmPackagePath, 'npm'));
|
|
19
|
-
queue.await(()=>callback(
|
|
19
|
+
queue.await(()=>callback(undefined, missing));
|
|
20
20
|
}
|
|
@@ -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 Queue from 'queue-cb';\n\nimport { NODE_FILE_PATHS, NPM_PACKAGE_PATH } from '../constants.ts';\n\nimport type { InstallOptions } from '../types.ts';\n\nexport type Callback = (error?: Error, missing?: string[]) => void;\n\nexport default function checkMissing(dest: string, options: InstallOptions, callback: Callback): void {\n const platform = options.platform;\n const nodePath = NODE_FILE_PATHS[platform] || NODE_FILE_PATHS.posix;\n const npmPackagePath = NPM_PACKAGE_PATH[platform] || NPM_PACKAGE_PATH.posix;\n\n const missing: string[] = [];\n function check(filePath, key, cb) {\n fs.stat(path.join(dest, filePath), (err) => {\n if (err && missing.indexOf(key) < 0) missing.push(key);\n cb();\n });\n }\n\n const queue = new Queue();\n queue.defer(check.bind(null, nodePath, 'node'));\n queue.defer(check.bind(null, npmPackagePath, 'npm'));\n queue.await(() => callback(
|
|
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 Queue from 'queue-cb';\n\nimport { NODE_FILE_PATHS, NPM_PACKAGE_PATH } from '../constants.ts';\n\nimport type { InstallOptions } from '../types.ts';\n\nexport type Callback = (error?: Error, missing?: string[]) => void;\n\nexport default function checkMissing(dest: string, options: InstallOptions, callback: Callback): void {\n const platform = options.platform;\n const nodePath = (NODE_FILE_PATHS as Record<string, string>)[platform as string] || NODE_FILE_PATHS.posix;\n const npmPackagePath = (NPM_PACKAGE_PATH as Record<string, string>)[platform as string] || NPM_PACKAGE_PATH.posix;\n\n const missing: string[] = [];\n function check(filePath: string, key: string, cb: () => void) {\n fs.stat(path.join(dest, filePath), (err) => {\n if (err && missing.indexOf(key) < 0) missing.push(key);\n cb();\n });\n }\n\n const queue = new Queue();\n queue.defer(check.bind(null, nodePath, 'node'));\n queue.defer(check.bind(null, npmPackagePath, 'npm'));\n queue.await(() => callback(undefined, missing));\n}\n"],"names":["fs","path","Queue","NODE_FILE_PATHS","NPM_PACKAGE_PATH","checkMissing","dest","options","callback","platform","nodePath","posix","npmPackagePath","missing","check","filePath","key","cb","stat","join","err","indexOf","push","queue","defer","bind","await","undefined"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAE7B,SAASC,eAAe,EAAEC,gBAAgB,QAAQ,kBAAkB;AAMpE,eAAe,SAASC,aAAaC,IAAY,EAAEC,OAAuB,EAAEC,QAAkB;IAC5F,MAAMC,WAAWF,QAAQE,QAAQ;IACjC,MAAMC,WAAW,AAACP,eAA0C,CAACM,SAAmB,IAAIN,gBAAgBQ,KAAK;IACzG,MAAMC,iBAAiB,AAACR,gBAA2C,CAACK,SAAmB,IAAIL,iBAAiBO,KAAK;IAEjH,MAAME,UAAoB,EAAE;IAC5B,SAASC,MAAMC,QAAgB,EAAEC,GAAW,EAAEC,EAAc;QAC1DjB,GAAGkB,IAAI,CAACjB,KAAKkB,IAAI,CAACb,MAAMS,WAAW,CAACK;YAClC,IAAIA,OAAOP,QAAQQ,OAAO,CAACL,OAAO,GAAGH,QAAQS,IAAI,CAACN;YAClDC;QACF;IACF;IAEA,MAAMM,QAAQ,IAAIrB;IAClBqB,MAAMC,KAAK,CAACV,MAAMW,IAAI,CAAC,MAAMf,UAAU;IACvCa,MAAMC,KAAK,CAACV,MAAMW,IAAI,CAAC,MAAMb,gBAAgB;IAC7CW,MAAMG,KAAK,CAAC,IAAMlB,SAASmB,WAAWd;AACxC"}
|
|
@@ -5,9 +5,9 @@ export default function conditionalCache(endpoint, dest, options, callback) {
|
|
|
5
5
|
callback = typeof options === 'function' ? options : callback;
|
|
6
6
|
options = typeof options === 'function' ? {} : options || {};
|
|
7
7
|
fs.stat(dest, (err)=>{
|
|
8
|
-
if (!err) return callback(); // already exists
|
|
8
|
+
if (!err) return callback === null || callback === void 0 ? void 0 : callback(); // already exists
|
|
9
9
|
ensureDestinationParent(dest, (err)=>{
|
|
10
|
-
err ? callback(err) : getFile(endpoint, dest, callback);
|
|
10
|
+
err ? callback === null || callback === void 0 ? void 0 : callback(err) : getFile(endpoint, dest, (err)=>callback === null || callback === void 0 ? void 0 : callback(err !== null && err !== void 0 ? err : undefined));
|
|
11
11
|
});
|
|
12
12
|
});
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/conditionalCache.ts"],"sourcesContent":["import fs from 'fs';\nimport { getFile } from 'get-file-compat';\nimport type { InstallOptions, NoParamCallback } from '../types.ts';\nimport ensureDestinationParent from './ensureDestinationParent.ts';\n\nexport default function conditionalCache(endpoint: string, dest: string, options: InstallOptions, callback?: NoParamCallback): void {\n callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : ((options || {}) as InstallOptions);\n\n fs.stat(dest, (err) => {\n if (!err) return callback(); // already exists\n ensureDestinationParent(dest, (err) => {\n err ? callback(err) : getFile(endpoint, dest, callback);\n });\n });\n}\n"],"names":["fs","getFile","ensureDestinationParent","conditionalCache","endpoint","dest","options","callback","stat","err"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,SAASC,OAAO,QAAQ,kBAAkB;AAE1C,OAAOC,6BAA6B,+BAA+B;AAEnE,eAAe,SAASC,iBAAiBC,QAAgB,EAAEC,IAAY,EAAEC,OAAuB,EAAEC,QAA0B;IAC1HA,WAAW,OAAOD,YAAY,aAAaA,UAAUC;IACrDD,UAAU,OAAOA,YAAY,aAAa,CAAC,IAAMA,WAAW,CAAC;IAE7DN,GAAGQ,IAAI,CAACH,MAAM,CAACI;QACb,IAAI,CAACA,KAAK,OAAOF,
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/conditionalCache.ts"],"sourcesContent":["import fs from 'fs';\nimport { getFile } from 'get-file-compat';\nimport type { InstallOptions, NoParamCallback } from '../types.ts';\nimport ensureDestinationParent from './ensureDestinationParent.ts';\n\nexport default function conditionalCache(endpoint: string, dest: string, options: InstallOptions, callback?: NoParamCallback): void {\n callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : ((options || {}) as InstallOptions);\n\n fs.stat(dest, (err) => {\n if (!err) return callback?.(); // already exists\n ensureDestinationParent(dest, (err) => {\n err ? callback?.(err) : getFile(endpoint, dest, (err: Error | null) => callback?.(err ?? undefined));\n });\n });\n}\n"],"names":["fs","getFile","ensureDestinationParent","conditionalCache","endpoint","dest","options","callback","stat","err","undefined"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,SAASC,OAAO,QAAQ,kBAAkB;AAE1C,OAAOC,6BAA6B,+BAA+B;AAEnE,eAAe,SAASC,iBAAiBC,QAAgB,EAAEC,IAAY,EAAEC,OAAuB,EAAEC,QAA0B;IAC1HA,WAAW,OAAOD,YAAY,aAAaA,UAAUC;IACrDD,UAAU,OAAOA,YAAY,aAAa,CAAC,IAAMA,WAAW,CAAC;IAE7DN,GAAGQ,IAAI,CAACH,MAAM,CAACI;QACb,IAAI,CAACA,KAAK,OAAOF,qBAAAA,+BAAAA,YAAc,iBAAiB;QAChDL,wBAAwBG,MAAM,CAACI;YAC7BA,MAAMF,qBAAAA,+BAAAA,SAAWE,OAAOR,QAAQG,UAAUC,MAAM,CAACI,MAAsBF,qBAAAA,+BAAAA,SAAWE,gBAAAA,iBAAAA,MAAOC;QAC3F;IACF;AACF"}
|
|
@@ -5,7 +5,7 @@ export default function conditionalCopy(src, dest, optional, callback) {
|
|
|
5
5
|
fs.stat(dest, (err)=>{
|
|
6
6
|
if (!err) return callback(); // already exists
|
|
7
7
|
fs.stat(src, (err)=>{
|
|
8
|
-
err && optional ? callback() : copyFile(src, dest, callback); // optional file missing
|
|
8
|
+
err && optional ? callback() : copyFile(src, dest, (e)=>callback(e !== null && e !== void 0 ? e : undefined)); // optional file missing
|
|
9
9
|
});
|
|
10
10
|
});
|
|
11
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/conditionalCopy.ts"],"sourcesContent":["import fs from 'fs';\nimport type { NoParamCallback } from '../types.ts';\nimport copyFile from './copyFile.ts';\n\nexport default function conditionalCopy(src: string, dest: string, optional: boolean, callback: NoParamCallback): void {\n if (typeof optional === 'function') return callback(new Error('conditionalCopy missing options'));\n\n fs.stat(dest, (err) => {\n if (!err) return callback(); // already exists\n\n fs.stat(src, (err) => {\n err && optional ? callback() : copyFile(src, dest, callback); // optional file missing\n });\n });\n}\n"],"names":["fs","copyFile","conditionalCopy","src","dest","optional","callback","Error","stat","err"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AAEpB,OAAOC,cAAc,gBAAgB;AAErC,eAAe,SAASC,gBAAgBC,GAAW,EAAEC,IAAY,EAAEC,QAAiB,EAAEC,QAAyB;IAC7G,IAAI,OAAOD,aAAa,YAAY,OAAOC,SAAS,IAAIC,MAAM;IAE9DP,GAAGQ,IAAI,CAACJ,MAAM,CAACK;QACb,IAAI,CAACA,KAAK,OAAOH,YAAY,iBAAiB;QAE9CN,GAAGQ,IAAI,CAACL,KAAK,CAACM;YACZA,OAAOJ,WAAWC,aAAaL,SAASE,KAAKC,
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/conditionalCopy.ts"],"sourcesContent":["import fs from 'fs';\nimport type { NoParamCallback } from '../types.ts';\nimport copyFile from './copyFile.ts';\n\nexport default function conditionalCopy(src: string, dest: string, optional: boolean, callback: NoParamCallback): void {\n if (typeof optional === 'function') return callback(new Error('conditionalCopy missing options'));\n\n fs.stat(dest, (err) => {\n if (!err) return callback(); // already exists\n\n fs.stat(src, (err) => {\n err && optional ? callback() : copyFile(src, dest, (e) => callback(e ?? undefined)); // optional file missing\n });\n });\n}\n"],"names":["fs","copyFile","conditionalCopy","src","dest","optional","callback","Error","stat","err","e","undefined"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AAEpB,OAAOC,cAAc,gBAAgB;AAErC,eAAe,SAASC,gBAAgBC,GAAW,EAAEC,IAAY,EAAEC,QAAiB,EAAEC,QAAyB;IAC7G,IAAI,OAAOD,aAAa,YAAY,OAAOC,SAAS,IAAIC,MAAM;IAE9DP,GAAGQ,IAAI,CAACJ,MAAM,CAACK;QACb,IAAI,CAACA,KAAK,OAAOH,YAAY,iBAAiB;QAE9CN,GAAGQ,IAAI,CAACL,KAAK,CAACM;YACZA,OAAOJ,WAAWC,aAAaL,SAASE,KAAKC,MAAM,CAACM,IAAMJ,SAASI,cAAAA,eAAAA,IAAKC,aAAa,wBAAwB;QAC/G;IACF;AACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { NoParamCallback } from '
|
|
1
|
+
import type { NoParamCallback } from '../types.js';
|
|
2
2
|
export default function safeCopyFile(src: string, dest: string, callback: NoParamCallback): void;
|
package/dist/esm/lib/copyFile.js
CHANGED
|
@@ -5,9 +5,7 @@ import ensureDestinationParent from './ensureDestinationParent.js';
|
|
|
5
5
|
export default function safeCopyFile(src, dest, callback) {
|
|
6
6
|
const queue = new Queue(1);
|
|
7
7
|
queue.defer(ensureDestinationParent.bind(null, dest));
|
|
8
|
-
queue.defer((
|
|
9
|
-
|
|
10
|
-
});
|
|
11
|
-
queue.defer(copyFile.bind(null, src, dest));
|
|
8
|
+
queue.defer((cb)=>safeRm(dest, (err)=>cb(err !== null && err !== void 0 ? err : undefined)));
|
|
9
|
+
queue.defer((cb)=>copyFile(src, dest, (err)=>cb(err !== null && err !== void 0 ? err : undefined)));
|
|
12
10
|
queue.await(callback);
|
|
13
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/copyFile.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/copyFile.ts"],"sourcesContent":["import { copyFile } from 'fs-copy-compat';\nimport { safeRm } from 'fs-remove-compat';\nimport Queue from 'queue-cb';\nimport type { NoParamCallback } from '../types.ts';\n\nimport ensureDestinationParent from './ensureDestinationParent.ts';\n\nexport default function safeCopyFile(src: string, dest: string, callback: NoParamCallback) {\n const queue = new Queue(1);\n\n queue.defer(ensureDestinationParent.bind(null, dest));\n queue.defer((cb) => safeRm(dest, (err) => cb(err ?? undefined)));\n queue.defer((cb) => copyFile(src, dest, (err) => cb(err ?? undefined)));\n queue.await(callback);\n}\n"],"names":["copyFile","safeRm","Queue","ensureDestinationParent","safeCopyFile","src","dest","callback","queue","defer","bind","cb","err","undefined","await"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,iBAAiB;AAC1C,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,OAAOC,WAAW,WAAW;AAG7B,OAAOC,6BAA6B,+BAA+B;AAEnE,eAAe,SAASC,aAAaC,GAAW,EAAEC,IAAY,EAAEC,QAAyB;IACvF,MAAMC,QAAQ,IAAIN,MAAM;IAExBM,MAAMC,KAAK,CAACN,wBAAwBO,IAAI,CAAC,MAAMJ;IAC/CE,MAAMC,KAAK,CAAC,CAACE,KAAOV,OAAOK,MAAM,CAACM,MAAQD,GAAGC,gBAAAA,iBAAAA,MAAOC;IACpDL,MAAMC,KAAK,CAAC,CAACE,KAAOX,SAASK,KAAKC,MAAM,CAACM,MAAQD,GAAGC,gBAAAA,iBAAAA,MAAOC;IAC3DL,MAAMM,KAAK,CAACP;AACd"}
|
|
@@ -3,5 +3,5 @@ import path from 'path';
|
|
|
3
3
|
export default function ensureDestinationParent(dest, callback) {
|
|
4
4
|
const parent = path.dirname(dest);
|
|
5
5
|
if (parent === '.' || parent === '/') return callback();
|
|
6
|
-
mkdirp(parent, callback);
|
|
6
|
+
mkdirp(parent, (err)=>callback(err !== null && err !== void 0 ? err : undefined));
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/ensureDestinationParent.ts"],"sourcesContent":["import mkdirp from 'mkdirp-classic';\nimport path from 'path';\n\nimport type { NoParamCallback } from '../types.ts';\n\nexport default function ensureDestinationParent(dest: string, callback: NoParamCallback): void {\n const parent = path.dirname(dest);\n if (parent === '.' || parent === '/') return callback();\n mkdirp(parent, callback);\n}\n"],"names":["mkdirp","path","ensureDestinationParent","dest","callback","parent","dirname"],"mappings":"AAAA,OAAOA,YAAY,iBAAiB;AACpC,OAAOC,UAAU,OAAO;AAIxB,eAAe,SAASC,wBAAwBC,IAAY,EAAEC,QAAyB;IACrF,MAAMC,SAASJ,KAAKK,OAAO,CAACH;IAC5B,IAAIE,WAAW,OAAOA,WAAW,KAAK,OAAOD;IAC7CJ,OAAOK,
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/ensureDestinationParent.ts"],"sourcesContent":["import mkdirp from 'mkdirp-classic';\nimport path from 'path';\n\nimport type { NoParamCallback } from '../types.ts';\n\nexport default function ensureDestinationParent(dest: string, callback: NoParamCallback): void {\n const parent = path.dirname(dest);\n if (parent === '.' || parent === '/') return callback();\n mkdirp(parent, (err) => callback(err ?? undefined));\n}\n"],"names":["mkdirp","path","ensureDestinationParent","dest","callback","parent","dirname","err","undefined"],"mappings":"AAAA,OAAOA,YAAY,iBAAiB;AACpC,OAAOC,UAAU,OAAO;AAIxB,eAAe,SAASC,wBAAwBC,IAAY,EAAEC,QAAyB;IACrF,MAAMC,SAASJ,KAAKK,OAAO,CAACH;IAC5B,IAAIE,WAAW,OAAOA,WAAW,KAAK,OAAOD;IAC7CJ,OAAOK,QAAQ,CAACE,MAAQH,SAASG,gBAAAA,iBAAAA,MAAOC;AAC1C"}
|
package/dist/esm/lib/extract.js
CHANGED
|
@@ -11,7 +11,7 @@ export default function extract(src, dest, options, callback) {
|
|
|
11
11
|
...options
|
|
12
12
|
};
|
|
13
13
|
const queue = new Queue(1);
|
|
14
|
-
queue.defer(mkdirp
|
|
14
|
+
queue.defer((cb)=>mkdirp(path.dirname(dest), (err)=>cb(err !== null && err !== void 0 ? err : undefined)));
|
|
15
15
|
queue.defer(fastExtract.bind(null, src, dest, extractOptions));
|
|
16
16
|
queue.await(callback);
|
|
17
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/extract.ts"],"sourcesContent":["import fastExtract from 'fast-extract';\nimport mkdirp from 'mkdirp-classic';\nimport path from 'path';\nimport Queue from 'queue-cb';\n\nimport type { NoParamCallback } from '../types.ts';\n\ninterface ExtractOptions {\n strip?: number;\n time?: number;\n}\n\nexport default function extract(src: string, dest: string, options: ExtractOptions | NoParamCallback, callback?: NoParamCallback): void {\n callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : options;\n\n const extractOptions = { strip: 1, time: 1000, ...options };\n const queue = new Queue(1);\n queue.defer(mkdirp
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/extract.ts"],"sourcesContent":["import fastExtract from 'fast-extract';\nimport mkdirp from 'mkdirp-classic';\nimport path from 'path';\nimport Queue from 'queue-cb';\n\nimport type { NoParamCallback } from '../types.ts';\n\ninterface ExtractOptions {\n strip?: number;\n time?: number;\n}\n\nexport default function extract(src: string, dest: string, options: ExtractOptions | NoParamCallback, callback?: NoParamCallback): void {\n callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : options;\n\n const extractOptions = { strip: 1, time: 1000, ...options };\n const queue = new Queue(1);\n queue.defer((cb) => mkdirp(path.dirname(dest), (err) => cb(err ?? undefined)));\n queue.defer(fastExtract.bind(null, src, dest, extractOptions));\n queue.await(callback!);\n}\n"],"names":["fastExtract","mkdirp","path","Queue","extract","src","dest","options","callback","extractOptions","strip","time","queue","defer","cb","dirname","err","undefined","bind","await"],"mappings":"AAAA,OAAOA,iBAAiB,eAAe;AACvC,OAAOC,YAAY,iBAAiB;AACpC,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAS7B,eAAe,SAASC,QAAQC,GAAW,EAAEC,IAAY,EAAEC,OAAyC,EAAEC,QAA0B;IAC9HA,WAAW,OAAOD,YAAY,aAAaA,UAAUC;IACrDD,UAAU,OAAOA,YAAY,aAAa,CAAC,IAAIA;IAE/C,MAAME,iBAAiB;QAAEC,OAAO;QAAGC,MAAM;QAAM,GAAGJ,OAAO;IAAC;IAC1D,MAAMK,QAAQ,IAAIT,MAAM;IACxBS,MAAMC,KAAK,CAAC,CAACC,KAAOb,OAAOC,KAAKa,OAAO,CAACT,OAAO,CAACU,MAAQF,GAAGE,gBAAAA,iBAAAA,MAAOC;IAClEL,MAAMC,KAAK,CAACb,YAAYkB,IAAI,CAAC,MAAMb,KAAKC,MAAMG;IAC9CG,MAAMO,KAAK,CAACX;AACd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/getTarget.ts"],"sourcesContent":["import cpuArch from 'cpu-arch';\nimport { FILE_PLATFORM_MAP, FILE_PLATFORMS } from '../constants.ts';\n\nimport type { InstallOptions, Target } from '../types.ts';\n\nconst archCPU = cpuArch();\n\nexport default function getTarget(options: InstallOptions): Target {\n let platform = options.platform;\n let arch = options.arch;\n if (options.filename) {\n const filePlatform = options.filename.split('-')[0];\n if (FILE_PLATFORMS.indexOf(filePlatform) >= 0) platform = FILE_PLATFORM_MAP[filePlatform] || filePlatform;\n arch = options.filename.split('-')[1] as NodeJS.Architecture;\n }\n if (!platform) platform = process.platform;\n if (!arch) arch = archCPU as NodeJS.Architecture;\n return { platform, arch };\n}\n"],"names":["cpuArch","FILE_PLATFORM_MAP","FILE_PLATFORMS","archCPU","getTarget","options","platform","arch","filename","filePlatform","split","indexOf","process"],"mappings":"AAAA,OAAOA,aAAa,WAAW;AAC/B,SAASC,iBAAiB,EAAEC,cAAc,QAAQ,kBAAkB;AAIpE,MAAMC,UAAUH;AAEhB,eAAe,SAASI,UAAUC,OAAuB;IACvD,IAAIC,WAAWD,QAAQC,QAAQ;IAC/B,IAAIC,OAAOF,QAAQE,IAAI;IACvB,IAAIF,QAAQG,QAAQ,EAAE;QACpB,MAAMC,eAAeJ,QAAQG,QAAQ,CAACE,KAAK,CAAC,IAAI,CAAC,EAAE;QACnD,IAAIR,eAAeS,OAAO,CAACF,iBAAiB,GAAGH,
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-install-release/src/lib/getTarget.ts"],"sourcesContent":["import cpuArch from 'cpu-arch';\nimport { FILE_PLATFORM_MAP, FILE_PLATFORMS } from '../constants.ts';\n\nimport type { InstallOptions, Target } from '../types.ts';\n\nconst archCPU = cpuArch();\n\nexport default function getTarget(options: InstallOptions): Target {\n let platform = options.platform;\n let arch = options.arch;\n if (options.filename) {\n const filePlatform = options.filename.split('-')[0];\n if (FILE_PLATFORMS.indexOf(filePlatform) >= 0) platform = ((FILE_PLATFORM_MAP as Record<string, string>)[filePlatform] || filePlatform) as NodeJS.Platform;\n arch = options.filename.split('-')[1] as NodeJS.Architecture;\n }\n if (!platform) platform = process.platform;\n if (!arch) arch = archCPU as NodeJS.Architecture;\n return { platform, arch };\n}\n"],"names":["cpuArch","FILE_PLATFORM_MAP","FILE_PLATFORMS","archCPU","getTarget","options","platform","arch","filename","filePlatform","split","indexOf","process"],"mappings":"AAAA,OAAOA,aAAa,WAAW;AAC/B,SAASC,iBAAiB,EAAEC,cAAc,QAAQ,kBAAkB;AAIpE,MAAMC,UAAUH;AAEhB,eAAe,SAASI,UAAUC,OAAuB;IACvD,IAAIC,WAAWD,QAAQC,QAAQ;IAC/B,IAAIC,OAAOF,QAAQE,IAAI;IACvB,IAAIF,QAAQG,QAAQ,EAAE;QACpB,MAAMC,eAAeJ,QAAQG,QAAQ,CAACE,KAAK,CAAC,IAAI,CAAC,EAAE;QACnD,IAAIR,eAAeS,OAAO,CAACF,iBAAiB,GAAGH,WAAY,AAACL,iBAA4C,CAACQ,aAAa,IAAIA;QAC1HF,OAAOF,QAAQG,QAAQ,CAACE,KAAK,CAAC,IAAI,CAAC,EAAE;IACvC;IACA,IAAI,CAACJ,UAAUA,WAAWM,QAAQN,QAAQ;IAC1C,IAAI,CAACC,MAAMA,OAAOJ;IAClB,OAAO;QAAEG;QAAUC;IAAK;AAC1B"}
|
|
@@ -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 !== null && err !== void 0 ? err : undefined)));
|
|
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, 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, 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, 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 ?? undefined)));\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":"AAAA,OAAOA,QAAQ,KAAK;AACpB,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,OAAOC,eAAe,aAAa;AACnC,OAAOC,YAAY,iBAAiB;AACpC,SAASC,OAAO,QAAQ,8BAA8B;AACtD,OAAOC,qBAAqB,wBAAwB;AACpD,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAC7B,OAAOC,gBAAgB,cAAc;AAErC,SAASC,qBAAqB,QAAQ,kBAAkB;AAExD,OAAOC,kBAAkB,qBAAqB;AAC9C,OAAOC,wBAAwB,2BAA2B;AAC1D,OAAOC,iBAAiB,0BAA0B;AAElD,OAAOC,gBAAgB,yBAAyB;AAChD,OAAOC,kBAAkB,yBAAyB;AAClD,OAAOC,6BAA6B,oCAAoC;AACxE,OAAOC,eAAe,sBAAsB;AAK5C,SAASC,YAAYC,iBAAyB,EAAEC,OAAuB,EAAEC,QAA6B;IACpG,gBAAgB;IAChB,IAAIlB,UAAUgB,oBAAoBE,SAASC,WAAW;QAACH;KAAkB;SACpEb,gBAAgBa,mBAAmBC,SAAS,CAACG,KAAaC,SAAkCH,SAASE,KAAKC;AACjH;AAEA,eAAe,SAASC,QAAQN,iBAAyB,EAAEC,OAAuB,EAAEC,QAAyB;IAC3G,MAAMK,eAAeN,QAAQO,WAAW,GAAGf,mBAAmBQ,QAAQO,WAAW,IAAIjB;IACrFU,UAAU;QAAE,GAAGM,YAAY;QAAE,GAAGN,OAAO;QAAE,GAAGH,UAAUG,QAAQ;IAAC;IAC/DF,YAAYC,mBAAmBC,SAAS,CAACG,KAAaK;QACpD,IAAIL,KAAK,OAAOF,SAASE;QACzB,IAAI,CAACK,YAAY,CAACA,SAASC,MAAM,EAAE;YACjCR,SAAS,IAAIS,MAAM,CAAC,gCAAgC,EAAEX,mBAAmB;YACzE;QACF;QACA,IAAIS,SAASC,MAAM,KAAK,GAAG;YACzBR,SAAS,IAAIS,MAAM,CAAC,QAAQ,EAAEX,kBAAkB,gCAAgC,EAAES,SAASG,GAAG,CAAC,CAACC,IAAMA,GAAG,gBAAgB,CAAC;YAC1H;QACF;QAEA,MAAMC,UAAUL,QAAQ,CAAC,EAAE;QAC3B,MAAMJ,SAASb,aAAaS,SAASa;QAErC,yEAAyE;QACzEhC,GAAGiC,IAAI,CAACV,OAAOW,WAAW,EAAE,CAACZ;YAC3B,IAAI,CAACA,KAAK,OAAOF,SAASC,WAAWE;YAErC,4DAA4D;YAC5D,MAAMY,WAAW3B,WAAWe,OAAOW,WAAW;YAE9C,MAAME,QAAQ,IAAI7B,MAAM;YACxB6B,MAAMC,KAAK,CAAC,CAACC,KAAOnC,OAAOgB,QAAQoB,SAAS,EAAG,CAACjB,MAAQgB,GAAGhB,gBAAAA,iBAAAA,MAAOD;YAClEe,MAAMC,KAAK,CAACtB,wBAAwByB,IAAI,CAAC,MAAML;YAE/C,8BAA8B;YAC9BC,MAAMC,KAAK,CAACzB,YAAY4B,IAAI,CAAC,MAAMR,SAASG,UAAUhB;YAEtD,uCAAuC;YACvC,yDAAyD;YACzDiB,MAAMC,KAAK,CAAC,CAACC;gBACXxB,aAAaqB,UAAUhB,SAAS,CAACG,KAAKmB;oBACpC,IAAInB,KAAK,OAAOgB,GAAGhB;oBACnB,IAAI,CAAC,CAAC,AAACmB,CAAAA,cAAc,EAAE,AAAD,EAAGC,OAAO,CAAC,QAAQ;wBACvC,2EAA2E;wBAC3E,MAAMC,OAAOvC,QAAQ4B;wBACrB,MAAMY,kBAAkBD,QAAQA,KAAKE,GAAG,GAAG,CAACF,KAAKE,GAAG,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG;wBACrE,IAAIF,mBAAmB,GAAG;4BACxBN,MAAM,kCAAkC;4BACxC;wBACF;wBACA,+DAA+D;wBAC/D,MAAMS,WAAW5B,QAAQ4B,QAAQ;wBACjC,MAAMC,UAAUD,aAAa,UAAUZ,WAAW7B,KAAK2C,IAAI,CAACd,UAAU;wBACtE,MAAMe,UAAU5C,KAAK2C,IAAI,CAACD,SAAS,gBAAgB;wBACnD/C,OAAOiD,SAAS,IAAMrC,WAAWmB,SAASG,UAAUhB,SAASmB;wBAC7D;oBACF;oBACAzB,WAAWmB,SAASG,UAAUhB,SAASmB;gBACzC;YACF;YAEA,uDAAuD;YACvDF,MAAMC,KAAK,CAAC,CAACC;gBACXtC,GAAGmD,MAAM,CAAChB,UAAUZ,OAAOW,WAAW,EAAE,CAACZ;oBACvC,IAAI,CAACA,KAAK,OAAOgB;oBACjB,gEAAgE;oBAChE,IAAIhB,IAAI8B,IAAI,KAAK,YAAY9B,IAAI8B,IAAI,KAAK,eAAe9B,IAAI8B,IAAI,KAAK,SAAS;wBAC7E,2DAA2D;wBAC3DnD,OAAOkC,UAAU,IAAMG;wBACvB;oBACF;oBACAA,GAAGhB;gBACL;YACF;YAEAc,MAAMiB,KAAK,CAAC,CAAC/B;gBACX,gCAAgC;gBAChC,IAAIA,KAAK,OAAOrB,OAAOkC,UAAU,IAAMf,SAASE;gBAEhDF,SAASC,WAAWE;YACtB;QACF;IACF;AACF"}
|