@pipelab/plugin-construct 1.0.0-beta.11 → 1.0.0-beta.12
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/index.cjs +52 -13
- package/dist/index.mjs +52 -13
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
package/dist/index.cjs
CHANGED
|
@@ -148261,11 +148261,13 @@ async function withLock(key, fn) {
|
|
|
148261
148261
|
* Centralized in core-node to avoid circular dependencies.
|
|
148262
148262
|
*/
|
|
148263
148263
|
async function fetchPackage(packageName, versionOrRange, options) {
|
|
148264
|
+
const start = Date.now();
|
|
148264
148265
|
if (isDev && projectRoot && process.env.PIPELAB_FORCE_NPM !== "true") {
|
|
148265
148266
|
if (packageName.startsWith("@pipelab/")) {
|
|
148267
|
+
const localStart = Date.now();
|
|
148266
148268
|
const local = await tryResolveMonorepoPackage(packageName);
|
|
148267
148269
|
if (local) {
|
|
148268
|
-
console.log(`[Fetcher] ${packageName}: Resolved to local source at ${local.packageDir}`);
|
|
148270
|
+
console.log(`[Fetcher] ${packageName}: Resolved to local source at ${local.packageDir} (${Date.now() - localStart}ms)`);
|
|
148269
148271
|
return {
|
|
148270
148272
|
...local,
|
|
148271
148273
|
resolvedVersion: "workspace"
|
|
@@ -148277,6 +148279,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148277
148279
|
const baseDir = ctx.getPackagesPath(packageName);
|
|
148278
148280
|
let resolvedVersion;
|
|
148279
148281
|
console.log(`[Fetcher] Resolving ${packageName}@${versionOrRange || "latest"}...`);
|
|
148282
|
+
const resolveStart = Date.now();
|
|
148280
148283
|
try {
|
|
148281
148284
|
const cachePath = (0, node_path.join)(ctx.userDataPath, "cache", "pacote");
|
|
148282
148285
|
let packumentPromise = packumentRequests.get(packageName);
|
|
@@ -148290,22 +148293,32 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148290
148293
|
const foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
|
|
148291
148294
|
if (!foundVersion) throw new Error(`Package ${packageName}@${range} not found on npm (available tags: ${Object.keys(packument["dist-tags"] || {}).join(", ")})`);
|
|
148292
148295
|
resolvedVersion = foundVersion;
|
|
148293
|
-
console.log(`[Fetcher] ${packageName}: Resolved to v${resolvedVersion} via npm`);
|
|
148296
|
+
console.log(`[Fetcher] ${packageName}: Resolved to v${resolvedVersion} via npm (${Date.now() - resolveStart}ms)`);
|
|
148294
148297
|
} catch (error) {
|
|
148295
|
-
console.warn(`[Fetcher] ${packageName}: remote resolution failed, trying local fallback...`);
|
|
148298
|
+
console.warn(`[Fetcher] ${packageName}: remote resolution failed (${Date.now() - resolveStart}ms), trying local fallback...`);
|
|
148299
|
+
const fallbackStart = Date.now();
|
|
148296
148300
|
const fallbackVersion = await tryLocalFallback(versionOrRange, error, baseDir, packageName);
|
|
148297
|
-
if (fallbackVersion)
|
|
148298
|
-
|
|
148301
|
+
if (fallbackVersion) {
|
|
148302
|
+
resolvedVersion = fallbackVersion;
|
|
148303
|
+
console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
|
|
148304
|
+
} else throw error;
|
|
148299
148305
|
}
|
|
148300
148306
|
const cachePath = (0, node_path.join)(ctx.userDataPath, "cache", "pacote");
|
|
148301
148307
|
const packageDir = (0, node_path.join)(baseDir, resolvedVersion);
|
|
148302
|
-
|
|
148303
|
-
|
|
148304
|
-
|
|
148305
|
-
|
|
148308
|
+
const checkStart = Date.now();
|
|
148309
|
+
const isInstalled = options?.installDeps ? isPackageComplete(packageDir) && isDependenciesInstalledSync(packageDir) : isPackageComplete(packageDir);
|
|
148310
|
+
const checkDuration = Date.now() - checkStart;
|
|
148311
|
+
if (isInstalled) {
|
|
148312
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Already installed (check took ${checkDuration}ms, fetchPackage took ${Date.now() - start}ms)`);
|
|
148313
|
+
return {
|
|
148314
|
+
packageDir,
|
|
148315
|
+
resolvedVersion
|
|
148316
|
+
};
|
|
148317
|
+
}
|
|
148306
148318
|
return withLock(`package:${packageName}:${resolvedVersion}`, async () => {
|
|
148307
148319
|
if (!isPackageComplete(packageDir)) {
|
|
148308
148320
|
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Downloading to ${packageDir}...`);
|
|
148321
|
+
const downloadStart = Date.now();
|
|
148309
148322
|
const tempDir = (0, node_path.join)(baseDir, `.tmp-${resolvedVersion}-${Math.random().toString(36).slice(2)}`);
|
|
148310
148323
|
await (0, node_fs_promises.mkdir)(tempDir, { recursive: true });
|
|
148311
148324
|
try {
|
|
@@ -148321,6 +148334,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148321
148334
|
if (isPackageComplete(packageDir)) console.log(`[Fetcher] Destination ${packageDir} already exists and is valid.`);
|
|
148322
148335
|
else throw err;
|
|
148323
148336
|
}
|
|
148337
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Downloaded and extracted in ${Date.now() - downloadStart}ms`);
|
|
148324
148338
|
} catch (err) {
|
|
148325
148339
|
await (0, node_fs_promises.rm)(tempDir, {
|
|
148326
148340
|
recursive: true,
|
|
@@ -148329,8 +148343,15 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148329
148343
|
throw err;
|
|
148330
148344
|
}
|
|
148331
148345
|
}
|
|
148346
|
+
const entryStart = Date.now();
|
|
148332
148347
|
const entryPoint = await resolveEntryPoint(packageDir, packageName);
|
|
148333
|
-
|
|
148348
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Resolved entry point in ${Date.now() - entryStart}ms`);
|
|
148349
|
+
if (options?.installDeps) {
|
|
148350
|
+
const depsStart = Date.now();
|
|
148351
|
+
await installDependencies(packageDir, packageName, options);
|
|
148352
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Installed dependencies in ${Date.now() - depsStart}ms`);
|
|
148353
|
+
}
|
|
148354
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: FetchPackage complete in ${Date.now() - start}ms`);
|
|
148334
148355
|
return {
|
|
148335
148356
|
packageDir,
|
|
148336
148357
|
resolvedVersion,
|
|
@@ -148369,10 +148390,14 @@ async function runPnpm(cwd, options) {
|
|
|
148369
148390
|
* Installs a specific version of Node.js if not already present.
|
|
148370
148391
|
*/
|
|
148371
148392
|
async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
148393
|
+
const checkStart = Date.now();
|
|
148372
148394
|
const isWindows = process.platform === "win32";
|
|
148373
148395
|
const nodeDir = context.getThirdPartyPath("node", version);
|
|
148374
148396
|
const finalNodePath = (0, node_path.join)(nodeDir, isWindows ? "node.exe" : "bin/node");
|
|
148375
|
-
if (isNodeJSComplete(finalNodePath))
|
|
148397
|
+
if (isNodeJSComplete(finalNodePath)) {
|
|
148398
|
+
console.log(`[Environment] Node.js check took ${Date.now() - checkStart}ms (found at ${finalNodePath})`);
|
|
148399
|
+
return finalNodePath;
|
|
148400
|
+
}
|
|
148376
148401
|
return withLock(`node:${version}`, async () => {
|
|
148377
148402
|
if (isNodeJSComplete(finalNodePath)) return finalNodePath;
|
|
148378
148403
|
const arch = process.arch === "x64" ? "x64" : process.arch === "arm64" ? "arm64" : "x86";
|
|
@@ -148384,9 +148409,12 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148384
148409
|
const archivePath = (0, node_path.join)(tempDir, fileName);
|
|
148385
148410
|
sendStartupProgress(`Downloading Node.js v${version}...`);
|
|
148386
148411
|
console.log(`Downloading Node.js from ${downloadUrl}...`);
|
|
148412
|
+
const dlStart = Date.now();
|
|
148387
148413
|
await downloadFile(downloadUrl, archivePath);
|
|
148414
|
+
console.log(`[Environment] Node.js download took ${Date.now() - dlStart}ms`);
|
|
148388
148415
|
sendStartupProgress(`Extracting Node.js v${version}...`);
|
|
148389
148416
|
console.log(`Extracting Node.js to ${tempDir}...`);
|
|
148417
|
+
const extStart = Date.now();
|
|
148390
148418
|
const extractTempDir = (0, node_path.join)(tempDir, "extracted");
|
|
148391
148419
|
await (0, node_fs_promises.mkdir)(extractTempDir, { recursive: true });
|
|
148392
148420
|
if (extension === "zip") await extractZip(archivePath, extractTempDir);
|
|
@@ -148411,6 +148439,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148411
148439
|
if (isNodeJSComplete(finalNodePath)) console.log(`[Fetcher] Node.js directory already exists and is valid.`);
|
|
148412
148440
|
else throw err;
|
|
148413
148441
|
}
|
|
148442
|
+
console.log(`[Environment] Node.js extraction took ${Date.now() - extStart}ms`);
|
|
148414
148443
|
} finally {
|
|
148415
148444
|
await (0, node_fs_promises.rm)(tempNodeDir, {
|
|
148416
148445
|
recursive: true,
|
|
@@ -148421,6 +148450,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148421
148450
|
force: true
|
|
148422
148451
|
}).catch(() => {});
|
|
148423
148452
|
}
|
|
148453
|
+
console.log(`[Environment] Node.js set up complete in ${Date.now() - checkStart}ms`);
|
|
148424
148454
|
return finalNodePath;
|
|
148425
148455
|
});
|
|
148426
148456
|
}
|
|
@@ -148428,16 +148458,22 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148428
148458
|
* Installs the PNPM package from npm if not already present.
|
|
148429
148459
|
*/
|
|
148430
148460
|
async function ensurePNPM(context, version = DEFAULT_PNPM_VERSION) {
|
|
148461
|
+
const checkStart = Date.now();
|
|
148431
148462
|
const pnpmPath = (0, node_path.join)(context.getPackagesPath("pnpm", version), "bin", "pnpm.cjs");
|
|
148432
|
-
if ((0, node_fs.existsSync)(pnpmPath))
|
|
148463
|
+
if ((0, node_fs.existsSync)(pnpmPath)) {
|
|
148464
|
+
console.log(`[Environment] PNPM check took ${Date.now() - checkStart}ms (found at ${pnpmPath})`);
|
|
148465
|
+
return pnpmPath;
|
|
148466
|
+
}
|
|
148433
148467
|
return withLock(`pnpm:${version}`, async () => {
|
|
148434
148468
|
if ((0, node_fs.existsSync)(pnpmPath)) return pnpmPath;
|
|
148435
148469
|
sendStartupProgress(`Checking PNPM v${version}...`);
|
|
148436
148470
|
const { packageDir } = await fetchPackage("pnpm", version, { context });
|
|
148471
|
+
console.log(`[Environment] PNPM set up complete in ${Date.now() - checkStart}ms`);
|
|
148437
148472
|
return (0, node_path.join)(packageDir, "bin", "pnpm.cjs");
|
|
148438
148473
|
});
|
|
148439
148474
|
}
|
|
148440
148475
|
async function installDependencies(packageDir, packageName, options) {
|
|
148476
|
+
const start = Date.now();
|
|
148441
148477
|
const nodeModulesPath = (0, node_path.join)(packageDir, "node_modules");
|
|
148442
148478
|
if (isDependenciesInstalledSync(packageDir)) {
|
|
148443
148479
|
console.log(`[Fetcher] ${packageName}: Dependencies already installed, skipping.`);
|
|
@@ -148448,18 +148484,21 @@ async function installDependencies(packageDir, packageName, options) {
|
|
|
148448
148484
|
try {
|
|
148449
148485
|
await (0, node_fs_promises.cp)((0, node_path.join)(packageDir, "package.json"), (0, node_path.join)(tempDir, "package.json"));
|
|
148450
148486
|
console.log(`[Fetcher] ${packageName}: Ensuring dependencies are installed...`);
|
|
148487
|
+
const pnpmStart = Date.now();
|
|
148451
148488
|
const { all } = await runPnpm(tempDir, {
|
|
148452
148489
|
signal: options.signal,
|
|
148453
148490
|
context: options.context
|
|
148454
148491
|
});
|
|
148492
|
+
console.log(`[Fetcher] ${packageName}: pnpm install command took ${Date.now() - pnpmStart}ms`);
|
|
148455
148493
|
if (all) console.log(`[Fetcher] ${packageName}: Installation trace:\n${all}`);
|
|
148456
148494
|
const tempNodeModules = (0, node_path.join)(tempDir, "node_modules");
|
|
148457
148495
|
if ((0, node_fs.existsSync)(nodeModulesPath)) await (0, node_fs_promises.rm)(nodeModulesPath, {
|
|
148458
148496
|
recursive: true,
|
|
148459
148497
|
force: true
|
|
148460
148498
|
}).catch(() => {});
|
|
148499
|
+
const renameStart = Date.now();
|
|
148461
148500
|
await (0, node_fs_promises.rename)(tempNodeModules, nodeModulesPath);
|
|
148462
|
-
console.log(`[Fetcher] ${packageName}: Dependencies installed successfully.`);
|
|
148501
|
+
console.log(`[Fetcher] ${packageName}: Dependencies installed successfully (rename took ${Date.now() - renameStart}ms, total installDependencies took ${Date.now() - start}ms).`);
|
|
148463
148502
|
} catch (err) {
|
|
148464
148503
|
console.error(`[Fetcher] ${packageName}: CRITICAL ERROR during dependency installation: ${err.message}`);
|
|
148465
148504
|
if (err.all) console.error(`[Fetcher] ${packageName}: Error details:\n${err.all}`);
|
package/dist/index.mjs
CHANGED
|
@@ -148262,11 +148262,13 @@ async function withLock(key, fn) {
|
|
|
148262
148262
|
* Centralized in core-node to avoid circular dependencies.
|
|
148263
148263
|
*/
|
|
148264
148264
|
async function fetchPackage(packageName, versionOrRange, options) {
|
|
148265
|
+
const start = Date.now();
|
|
148265
148266
|
if (isDev && projectRoot && process.env.PIPELAB_FORCE_NPM !== "true") {
|
|
148266
148267
|
if (packageName.startsWith("@pipelab/")) {
|
|
148268
|
+
const localStart = Date.now();
|
|
148267
148269
|
const local = await tryResolveMonorepoPackage(packageName);
|
|
148268
148270
|
if (local) {
|
|
148269
|
-
console.log(`[Fetcher] ${packageName}: Resolved to local source at ${local.packageDir}`);
|
|
148271
|
+
console.log(`[Fetcher] ${packageName}: Resolved to local source at ${local.packageDir} (${Date.now() - localStart}ms)`);
|
|
148270
148272
|
return {
|
|
148271
148273
|
...local,
|
|
148272
148274
|
resolvedVersion: "workspace"
|
|
@@ -148278,6 +148280,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148278
148280
|
const baseDir = ctx.getPackagesPath(packageName);
|
|
148279
148281
|
let resolvedVersion;
|
|
148280
148282
|
console.log(`[Fetcher] Resolving ${packageName}@${versionOrRange || "latest"}...`);
|
|
148283
|
+
const resolveStart = Date.now();
|
|
148281
148284
|
try {
|
|
148282
148285
|
const cachePath = join(ctx.userDataPath, "cache", "pacote");
|
|
148283
148286
|
let packumentPromise = packumentRequests.get(packageName);
|
|
@@ -148291,22 +148294,32 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148291
148294
|
const foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
|
|
148292
148295
|
if (!foundVersion) throw new Error(`Package ${packageName}@${range} not found on npm (available tags: ${Object.keys(packument["dist-tags"] || {}).join(", ")})`);
|
|
148293
148296
|
resolvedVersion = foundVersion;
|
|
148294
|
-
console.log(`[Fetcher] ${packageName}: Resolved to v${resolvedVersion} via npm`);
|
|
148297
|
+
console.log(`[Fetcher] ${packageName}: Resolved to v${resolvedVersion} via npm (${Date.now() - resolveStart}ms)`);
|
|
148295
148298
|
} catch (error) {
|
|
148296
|
-
console.warn(`[Fetcher] ${packageName}: remote resolution failed, trying local fallback...`);
|
|
148299
|
+
console.warn(`[Fetcher] ${packageName}: remote resolution failed (${Date.now() - resolveStart}ms), trying local fallback...`);
|
|
148300
|
+
const fallbackStart = Date.now();
|
|
148297
148301
|
const fallbackVersion = await tryLocalFallback(versionOrRange, error, baseDir, packageName);
|
|
148298
|
-
if (fallbackVersion)
|
|
148299
|
-
|
|
148302
|
+
if (fallbackVersion) {
|
|
148303
|
+
resolvedVersion = fallbackVersion;
|
|
148304
|
+
console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
|
|
148305
|
+
} else throw error;
|
|
148300
148306
|
}
|
|
148301
148307
|
const cachePath = join(ctx.userDataPath, "cache", "pacote");
|
|
148302
148308
|
const packageDir = join(baseDir, resolvedVersion);
|
|
148303
|
-
|
|
148304
|
-
|
|
148305
|
-
|
|
148306
|
-
|
|
148309
|
+
const checkStart = Date.now();
|
|
148310
|
+
const isInstalled = options?.installDeps ? isPackageComplete(packageDir) && isDependenciesInstalledSync(packageDir) : isPackageComplete(packageDir);
|
|
148311
|
+
const checkDuration = Date.now() - checkStart;
|
|
148312
|
+
if (isInstalled) {
|
|
148313
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Already installed (check took ${checkDuration}ms, fetchPackage took ${Date.now() - start}ms)`);
|
|
148314
|
+
return {
|
|
148315
|
+
packageDir,
|
|
148316
|
+
resolvedVersion
|
|
148317
|
+
};
|
|
148318
|
+
}
|
|
148307
148319
|
return withLock(`package:${packageName}:${resolvedVersion}`, async () => {
|
|
148308
148320
|
if (!isPackageComplete(packageDir)) {
|
|
148309
148321
|
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Downloading to ${packageDir}...`);
|
|
148322
|
+
const downloadStart = Date.now();
|
|
148310
148323
|
const tempDir = join(baseDir, `.tmp-${resolvedVersion}-${Math.random().toString(36).slice(2)}`);
|
|
148311
148324
|
await mkdir(tempDir, { recursive: true });
|
|
148312
148325
|
try {
|
|
@@ -148322,6 +148335,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148322
148335
|
if (isPackageComplete(packageDir)) console.log(`[Fetcher] Destination ${packageDir} already exists and is valid.`);
|
|
148323
148336
|
else throw err;
|
|
148324
148337
|
}
|
|
148338
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Downloaded and extracted in ${Date.now() - downloadStart}ms`);
|
|
148325
148339
|
} catch (err) {
|
|
148326
148340
|
await rm(tempDir, {
|
|
148327
148341
|
recursive: true,
|
|
@@ -148330,8 +148344,15 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148330
148344
|
throw err;
|
|
148331
148345
|
}
|
|
148332
148346
|
}
|
|
148347
|
+
const entryStart = Date.now();
|
|
148333
148348
|
const entryPoint = await resolveEntryPoint(packageDir, packageName);
|
|
148334
|
-
|
|
148349
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Resolved entry point in ${Date.now() - entryStart}ms`);
|
|
148350
|
+
if (options?.installDeps) {
|
|
148351
|
+
const depsStart = Date.now();
|
|
148352
|
+
await installDependencies(packageDir, packageName, options);
|
|
148353
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Installed dependencies in ${Date.now() - depsStart}ms`);
|
|
148354
|
+
}
|
|
148355
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: FetchPackage complete in ${Date.now() - start}ms`);
|
|
148335
148356
|
return {
|
|
148336
148357
|
packageDir,
|
|
148337
148358
|
resolvedVersion,
|
|
@@ -148370,10 +148391,14 @@ async function runPnpm(cwd, options) {
|
|
|
148370
148391
|
* Installs a specific version of Node.js if not already present.
|
|
148371
148392
|
*/
|
|
148372
148393
|
async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
148394
|
+
const checkStart = Date.now();
|
|
148373
148395
|
const isWindows = process.platform === "win32";
|
|
148374
148396
|
const nodeDir = context.getThirdPartyPath("node", version);
|
|
148375
148397
|
const finalNodePath = join(nodeDir, isWindows ? "node.exe" : "bin/node");
|
|
148376
|
-
if (isNodeJSComplete(finalNodePath))
|
|
148398
|
+
if (isNodeJSComplete(finalNodePath)) {
|
|
148399
|
+
console.log(`[Environment] Node.js check took ${Date.now() - checkStart}ms (found at ${finalNodePath})`);
|
|
148400
|
+
return finalNodePath;
|
|
148401
|
+
}
|
|
148377
148402
|
return withLock(`node:${version}`, async () => {
|
|
148378
148403
|
if (isNodeJSComplete(finalNodePath)) return finalNodePath;
|
|
148379
148404
|
const arch = process.arch === "x64" ? "x64" : process.arch === "arm64" ? "arm64" : "x86";
|
|
@@ -148385,9 +148410,12 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148385
148410
|
const archivePath = join(tempDir, fileName);
|
|
148386
148411
|
sendStartupProgress(`Downloading Node.js v${version}...`);
|
|
148387
148412
|
console.log(`Downloading Node.js from ${downloadUrl}...`);
|
|
148413
|
+
const dlStart = Date.now();
|
|
148388
148414
|
await downloadFile(downloadUrl, archivePath);
|
|
148415
|
+
console.log(`[Environment] Node.js download took ${Date.now() - dlStart}ms`);
|
|
148389
148416
|
sendStartupProgress(`Extracting Node.js v${version}...`);
|
|
148390
148417
|
console.log(`Extracting Node.js to ${tempDir}...`);
|
|
148418
|
+
const extStart = Date.now();
|
|
148391
148419
|
const extractTempDir = join(tempDir, "extracted");
|
|
148392
148420
|
await mkdir(extractTempDir, { recursive: true });
|
|
148393
148421
|
if (extension === "zip") await extractZip(archivePath, extractTempDir);
|
|
@@ -148412,6 +148440,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148412
148440
|
if (isNodeJSComplete(finalNodePath)) console.log(`[Fetcher] Node.js directory already exists and is valid.`);
|
|
148413
148441
|
else throw err;
|
|
148414
148442
|
}
|
|
148443
|
+
console.log(`[Environment] Node.js extraction took ${Date.now() - extStart}ms`);
|
|
148415
148444
|
} finally {
|
|
148416
148445
|
await rm(tempNodeDir, {
|
|
148417
148446
|
recursive: true,
|
|
@@ -148422,6 +148451,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148422
148451
|
force: true
|
|
148423
148452
|
}).catch(() => {});
|
|
148424
148453
|
}
|
|
148454
|
+
console.log(`[Environment] Node.js set up complete in ${Date.now() - checkStart}ms`);
|
|
148425
148455
|
return finalNodePath;
|
|
148426
148456
|
});
|
|
148427
148457
|
}
|
|
@@ -148429,16 +148459,22 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148429
148459
|
* Installs the PNPM package from npm if not already present.
|
|
148430
148460
|
*/
|
|
148431
148461
|
async function ensurePNPM(context, version = DEFAULT_PNPM_VERSION) {
|
|
148462
|
+
const checkStart = Date.now();
|
|
148432
148463
|
const pnpmPath = join(context.getPackagesPath("pnpm", version), "bin", "pnpm.cjs");
|
|
148433
|
-
if (existsSync(pnpmPath))
|
|
148464
|
+
if (existsSync(pnpmPath)) {
|
|
148465
|
+
console.log(`[Environment] PNPM check took ${Date.now() - checkStart}ms (found at ${pnpmPath})`);
|
|
148466
|
+
return pnpmPath;
|
|
148467
|
+
}
|
|
148434
148468
|
return withLock(`pnpm:${version}`, async () => {
|
|
148435
148469
|
if (existsSync(pnpmPath)) return pnpmPath;
|
|
148436
148470
|
sendStartupProgress(`Checking PNPM v${version}...`);
|
|
148437
148471
|
const { packageDir } = await fetchPackage("pnpm", version, { context });
|
|
148472
|
+
console.log(`[Environment] PNPM set up complete in ${Date.now() - checkStart}ms`);
|
|
148438
148473
|
return join(packageDir, "bin", "pnpm.cjs");
|
|
148439
148474
|
});
|
|
148440
148475
|
}
|
|
148441
148476
|
async function installDependencies(packageDir, packageName, options) {
|
|
148477
|
+
const start = Date.now();
|
|
148442
148478
|
const nodeModulesPath = join(packageDir, "node_modules");
|
|
148443
148479
|
if (isDependenciesInstalledSync(packageDir)) {
|
|
148444
148480
|
console.log(`[Fetcher] ${packageName}: Dependencies already installed, skipping.`);
|
|
@@ -148449,18 +148485,21 @@ async function installDependencies(packageDir, packageName, options) {
|
|
|
148449
148485
|
try {
|
|
148450
148486
|
await cp(join(packageDir, "package.json"), join(tempDir, "package.json"));
|
|
148451
148487
|
console.log(`[Fetcher] ${packageName}: Ensuring dependencies are installed...`);
|
|
148488
|
+
const pnpmStart = Date.now();
|
|
148452
148489
|
const { all } = await runPnpm(tempDir, {
|
|
148453
148490
|
signal: options.signal,
|
|
148454
148491
|
context: options.context
|
|
148455
148492
|
});
|
|
148493
|
+
console.log(`[Fetcher] ${packageName}: pnpm install command took ${Date.now() - pnpmStart}ms`);
|
|
148456
148494
|
if (all) console.log(`[Fetcher] ${packageName}: Installation trace:\n${all}`);
|
|
148457
148495
|
const tempNodeModules = join(tempDir, "node_modules");
|
|
148458
148496
|
if (existsSync(nodeModulesPath)) await rm(nodeModulesPath, {
|
|
148459
148497
|
recursive: true,
|
|
148460
148498
|
force: true
|
|
148461
148499
|
}).catch(() => {});
|
|
148500
|
+
const renameStart = Date.now();
|
|
148462
148501
|
await rename(tempNodeModules, nodeModulesPath);
|
|
148463
|
-
console.log(`[Fetcher] ${packageName}: Dependencies installed successfully.`);
|
|
148502
|
+
console.log(`[Fetcher] ${packageName}: Dependencies installed successfully (rename took ${Date.now() - renameStart}ms, total installDependencies took ${Date.now() - start}ms).`);
|
|
148464
148503
|
} catch (err) {
|
|
148465
148504
|
console.error(`[Fetcher] ${packageName}: CRITICAL ERROR during dependency installation: ${err.message}`);
|
|
148466
148505
|
if (err.all) console.error(`[Fetcher] ${packageName}: Error details:\n${err.all}`);
|