@pipelab/plugin-netlify 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 CHANGED
@@ -148221,11 +148221,13 @@ async function withLock(key, fn) {
148221
148221
  * Centralized in core-node to avoid circular dependencies.
148222
148222
  */
148223
148223
  async function fetchPackage(packageName, versionOrRange, options) {
148224
+ const start = Date.now();
148224
148225
  if (isDev && projectRoot && process.env.PIPELAB_FORCE_NPM !== "true") {
148225
148226
  if (packageName.startsWith("@pipelab/")) {
148227
+ const localStart = Date.now();
148226
148228
  const local = await tryResolveMonorepoPackage(packageName);
148227
148229
  if (local) {
148228
- console.log(`[Fetcher] ${packageName}: Resolved to local source at ${local.packageDir}`);
148230
+ console.log(`[Fetcher] ${packageName}: Resolved to local source at ${local.packageDir} (${Date.now() - localStart}ms)`);
148229
148231
  return {
148230
148232
  ...local,
148231
148233
  resolvedVersion: "workspace"
@@ -148237,6 +148239,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
148237
148239
  const baseDir = ctx.getPackagesPath(packageName);
148238
148240
  let resolvedVersion;
148239
148241
  console.log(`[Fetcher] Resolving ${packageName}@${versionOrRange || "latest"}...`);
148242
+ const resolveStart = Date.now();
148240
148243
  try {
148241
148244
  const cachePath = (0, node_path.join)(ctx.userDataPath, "cache", "pacote");
148242
148245
  let packumentPromise = packumentRequests.get(packageName);
@@ -148250,22 +148253,32 @@ async function fetchPackage(packageName, versionOrRange, options) {
148250
148253
  const foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
148251
148254
  if (!foundVersion) throw new Error(`Package ${packageName}@${range} not found on npm (available tags: ${Object.keys(packument["dist-tags"] || {}).join(", ")})`);
148252
148255
  resolvedVersion = foundVersion;
148253
- console.log(`[Fetcher] ${packageName}: Resolved to v${resolvedVersion} via npm`);
148256
+ console.log(`[Fetcher] ${packageName}: Resolved to v${resolvedVersion} via npm (${Date.now() - resolveStart}ms)`);
148254
148257
  } catch (error) {
148255
- console.warn(`[Fetcher] ${packageName}: remote resolution failed, trying local fallback...`);
148258
+ console.warn(`[Fetcher] ${packageName}: remote resolution failed (${Date.now() - resolveStart}ms), trying local fallback...`);
148259
+ const fallbackStart = Date.now();
148256
148260
  const fallbackVersion = await tryLocalFallback(versionOrRange, error, baseDir, packageName);
148257
- if (fallbackVersion) resolvedVersion = fallbackVersion;
148258
- else throw error;
148261
+ if (fallbackVersion) {
148262
+ resolvedVersion = fallbackVersion;
148263
+ console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
148264
+ } else throw error;
148259
148265
  }
148260
148266
  const cachePath = (0, node_path.join)(ctx.userDataPath, "cache", "pacote");
148261
148267
  const packageDir = (0, node_path.join)(baseDir, resolvedVersion);
148262
- if (options?.installDeps ? isPackageComplete(packageDir) && isDependenciesInstalledSync(packageDir) : isPackageComplete(packageDir)) return {
148263
- packageDir,
148264
- resolvedVersion
148265
- };
148268
+ const checkStart = Date.now();
148269
+ const isInstalled = options?.installDeps ? isPackageComplete(packageDir) && isDependenciesInstalledSync(packageDir) : isPackageComplete(packageDir);
148270
+ const checkDuration = Date.now() - checkStart;
148271
+ if (isInstalled) {
148272
+ console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Already installed (check took ${checkDuration}ms, fetchPackage took ${Date.now() - start}ms)`);
148273
+ return {
148274
+ packageDir,
148275
+ resolvedVersion
148276
+ };
148277
+ }
148266
148278
  return withLock(`package:${packageName}:${resolvedVersion}`, async () => {
148267
148279
  if (!isPackageComplete(packageDir)) {
148268
148280
  console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Downloading to ${packageDir}...`);
148281
+ const downloadStart = Date.now();
148269
148282
  const tempDir = (0, node_path.join)(baseDir, `.tmp-${resolvedVersion}-${Math.random().toString(36).slice(2)}`);
148270
148283
  await (0, node_fs_promises.mkdir)(tempDir, { recursive: true });
148271
148284
  try {
@@ -148281,6 +148294,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
148281
148294
  if (isPackageComplete(packageDir)) console.log(`[Fetcher] Destination ${packageDir} already exists and is valid.`);
148282
148295
  else throw err;
148283
148296
  }
148297
+ console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Downloaded and extracted in ${Date.now() - downloadStart}ms`);
148284
148298
  } catch (err) {
148285
148299
  await (0, node_fs_promises.rm)(tempDir, {
148286
148300
  recursive: true,
@@ -148289,8 +148303,15 @@ async function fetchPackage(packageName, versionOrRange, options) {
148289
148303
  throw err;
148290
148304
  }
148291
148305
  }
148306
+ const entryStart = Date.now();
148292
148307
  const entryPoint = await resolveEntryPoint(packageDir, packageName);
148293
- if (options?.installDeps) await installDependencies(packageDir, packageName, options);
148308
+ console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Resolved entry point in ${Date.now() - entryStart}ms`);
148309
+ if (options?.installDeps) {
148310
+ const depsStart = Date.now();
148311
+ await installDependencies(packageDir, packageName, options);
148312
+ console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Installed dependencies in ${Date.now() - depsStart}ms`);
148313
+ }
148314
+ console.log(`[Fetcher] ${packageName}@${resolvedVersion}: FetchPackage complete in ${Date.now() - start}ms`);
148294
148315
  return {
148295
148316
  packageDir,
148296
148317
  resolvedVersion,
@@ -148329,10 +148350,14 @@ async function runPnpm(cwd, options) {
148329
148350
  * Installs a specific version of Node.js if not already present.
148330
148351
  */
148331
148352
  async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
148353
+ const checkStart = Date.now();
148332
148354
  const isWindows = process.platform === "win32";
148333
148355
  const nodeDir = context.getThirdPartyPath("node", version);
148334
148356
  const finalNodePath = (0, node_path.join)(nodeDir, isWindows ? "node.exe" : "bin/node");
148335
- if (isNodeJSComplete(finalNodePath)) return finalNodePath;
148357
+ if (isNodeJSComplete(finalNodePath)) {
148358
+ console.log(`[Environment] Node.js check took ${Date.now() - checkStart}ms (found at ${finalNodePath})`);
148359
+ return finalNodePath;
148360
+ }
148336
148361
  return withLock(`node:${version}`, async () => {
148337
148362
  if (isNodeJSComplete(finalNodePath)) return finalNodePath;
148338
148363
  const arch = process.arch === "x64" ? "x64" : process.arch === "arm64" ? "arm64" : "x86";
@@ -148344,9 +148369,12 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
148344
148369
  const archivePath = (0, node_path.join)(tempDir, fileName);
148345
148370
  sendStartupProgress(`Downloading Node.js v${version}...`);
148346
148371
  console.log(`Downloading Node.js from ${downloadUrl}...`);
148372
+ const dlStart = Date.now();
148347
148373
  await downloadFile(downloadUrl, archivePath);
148374
+ console.log(`[Environment] Node.js download took ${Date.now() - dlStart}ms`);
148348
148375
  sendStartupProgress(`Extracting Node.js v${version}...`);
148349
148376
  console.log(`Extracting Node.js to ${tempDir}...`);
148377
+ const extStart = Date.now();
148350
148378
  const extractTempDir = (0, node_path.join)(tempDir, "extracted");
148351
148379
  await (0, node_fs_promises.mkdir)(extractTempDir, { recursive: true });
148352
148380
  if (extension === "zip") await extractZip(archivePath, extractTempDir);
@@ -148371,6 +148399,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
148371
148399
  if (isNodeJSComplete(finalNodePath)) console.log(`[Fetcher] Node.js directory already exists and is valid.`);
148372
148400
  else throw err;
148373
148401
  }
148402
+ console.log(`[Environment] Node.js extraction took ${Date.now() - extStart}ms`);
148374
148403
  } finally {
148375
148404
  await (0, node_fs_promises.rm)(tempNodeDir, {
148376
148405
  recursive: true,
@@ -148381,6 +148410,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
148381
148410
  force: true
148382
148411
  }).catch(() => {});
148383
148412
  }
148413
+ console.log(`[Environment] Node.js set up complete in ${Date.now() - checkStart}ms`);
148384
148414
  return finalNodePath;
148385
148415
  });
148386
148416
  }
@@ -148388,16 +148418,22 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
148388
148418
  * Installs the PNPM package from npm if not already present.
148389
148419
  */
148390
148420
  async function ensurePNPM(context, version = DEFAULT_PNPM_VERSION) {
148421
+ const checkStart = Date.now();
148391
148422
  const pnpmPath = (0, node_path.join)(context.getPackagesPath("pnpm", version), "bin", "pnpm.cjs");
148392
- if ((0, node_fs.existsSync)(pnpmPath)) return pnpmPath;
148423
+ if ((0, node_fs.existsSync)(pnpmPath)) {
148424
+ console.log(`[Environment] PNPM check took ${Date.now() - checkStart}ms (found at ${pnpmPath})`);
148425
+ return pnpmPath;
148426
+ }
148393
148427
  return withLock(`pnpm:${version}`, async () => {
148394
148428
  if ((0, node_fs.existsSync)(pnpmPath)) return pnpmPath;
148395
148429
  sendStartupProgress(`Checking PNPM v${version}...`);
148396
148430
  const { packageDir } = await fetchPackage("pnpm", version, { context });
148431
+ console.log(`[Environment] PNPM set up complete in ${Date.now() - checkStart}ms`);
148397
148432
  return (0, node_path.join)(packageDir, "bin", "pnpm.cjs");
148398
148433
  });
148399
148434
  }
148400
148435
  async function installDependencies(packageDir, packageName, options) {
148436
+ const start = Date.now();
148401
148437
  const nodeModulesPath = (0, node_path.join)(packageDir, "node_modules");
148402
148438
  if (isDependenciesInstalledSync(packageDir)) {
148403
148439
  console.log(`[Fetcher] ${packageName}: Dependencies already installed, skipping.`);
@@ -148408,18 +148444,21 @@ async function installDependencies(packageDir, packageName, options) {
148408
148444
  try {
148409
148445
  await (0, node_fs_promises.cp)((0, node_path.join)(packageDir, "package.json"), (0, node_path.join)(tempDir, "package.json"));
148410
148446
  console.log(`[Fetcher] ${packageName}: Ensuring dependencies are installed...`);
148447
+ const pnpmStart = Date.now();
148411
148448
  const { all } = await runPnpm(tempDir, {
148412
148449
  signal: options.signal,
148413
148450
  context: options.context
148414
148451
  });
148452
+ console.log(`[Fetcher] ${packageName}: pnpm install command took ${Date.now() - pnpmStart}ms`);
148415
148453
  if (all) console.log(`[Fetcher] ${packageName}: Installation trace:\n${all}`);
148416
148454
  const tempNodeModules = (0, node_path.join)(tempDir, "node_modules");
148417
148455
  if ((0, node_fs.existsSync)(nodeModulesPath)) await (0, node_fs_promises.rm)(nodeModulesPath, {
148418
148456
  recursive: true,
148419
148457
  force: true
148420
148458
  }).catch(() => {});
148459
+ const renameStart = Date.now();
148421
148460
  await (0, node_fs_promises.rename)(tempNodeModules, nodeModulesPath);
148422
- console.log(`[Fetcher] ${packageName}: Dependencies installed successfully.`);
148461
+ console.log(`[Fetcher] ${packageName}: Dependencies installed successfully (rename took ${Date.now() - renameStart}ms, total installDependencies took ${Date.now() - start}ms).`);
148423
148462
  } catch (err) {
148424
148463
  console.error(`[Fetcher] ${packageName}: CRITICAL ERROR during dependency installation: ${err.message}`);
148425
148464
  if (err.all) console.error(`[Fetcher] ${packageName}: Error details:\n${err.all}`);
package/dist/index.mjs CHANGED
@@ -148222,11 +148222,13 @@ async function withLock(key, fn) {
148222
148222
  * Centralized in core-node to avoid circular dependencies.
148223
148223
  */
148224
148224
  async function fetchPackage(packageName, versionOrRange, options) {
148225
+ const start = Date.now();
148225
148226
  if (isDev && projectRoot && process.env.PIPELAB_FORCE_NPM !== "true") {
148226
148227
  if (packageName.startsWith("@pipelab/")) {
148228
+ const localStart = Date.now();
148227
148229
  const local = await tryResolveMonorepoPackage(packageName);
148228
148230
  if (local) {
148229
- console.log(`[Fetcher] ${packageName}: Resolved to local source at ${local.packageDir}`);
148231
+ console.log(`[Fetcher] ${packageName}: Resolved to local source at ${local.packageDir} (${Date.now() - localStart}ms)`);
148230
148232
  return {
148231
148233
  ...local,
148232
148234
  resolvedVersion: "workspace"
@@ -148238,6 +148240,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
148238
148240
  const baseDir = ctx.getPackagesPath(packageName);
148239
148241
  let resolvedVersion;
148240
148242
  console.log(`[Fetcher] Resolving ${packageName}@${versionOrRange || "latest"}...`);
148243
+ const resolveStart = Date.now();
148241
148244
  try {
148242
148245
  const cachePath = join(ctx.userDataPath, "cache", "pacote");
148243
148246
  let packumentPromise = packumentRequests.get(packageName);
@@ -148251,22 +148254,32 @@ async function fetchPackage(packageName, versionOrRange, options) {
148251
148254
  const foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
148252
148255
  if (!foundVersion) throw new Error(`Package ${packageName}@${range} not found on npm (available tags: ${Object.keys(packument["dist-tags"] || {}).join(", ")})`);
148253
148256
  resolvedVersion = foundVersion;
148254
- console.log(`[Fetcher] ${packageName}: Resolved to v${resolvedVersion} via npm`);
148257
+ console.log(`[Fetcher] ${packageName}: Resolved to v${resolvedVersion} via npm (${Date.now() - resolveStart}ms)`);
148255
148258
  } catch (error) {
148256
- console.warn(`[Fetcher] ${packageName}: remote resolution failed, trying local fallback...`);
148259
+ console.warn(`[Fetcher] ${packageName}: remote resolution failed (${Date.now() - resolveStart}ms), trying local fallback...`);
148260
+ const fallbackStart = Date.now();
148257
148261
  const fallbackVersion = await tryLocalFallback(versionOrRange, error, baseDir, packageName);
148258
- if (fallbackVersion) resolvedVersion = fallbackVersion;
148259
- else throw error;
148262
+ if (fallbackVersion) {
148263
+ resolvedVersion = fallbackVersion;
148264
+ console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
148265
+ } else throw error;
148260
148266
  }
148261
148267
  const cachePath = join(ctx.userDataPath, "cache", "pacote");
148262
148268
  const packageDir = join(baseDir, resolvedVersion);
148263
- if (options?.installDeps ? isPackageComplete(packageDir) && isDependenciesInstalledSync(packageDir) : isPackageComplete(packageDir)) return {
148264
- packageDir,
148265
- resolvedVersion
148266
- };
148269
+ const checkStart = Date.now();
148270
+ const isInstalled = options?.installDeps ? isPackageComplete(packageDir) && isDependenciesInstalledSync(packageDir) : isPackageComplete(packageDir);
148271
+ const checkDuration = Date.now() - checkStart;
148272
+ if (isInstalled) {
148273
+ console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Already installed (check took ${checkDuration}ms, fetchPackage took ${Date.now() - start}ms)`);
148274
+ return {
148275
+ packageDir,
148276
+ resolvedVersion
148277
+ };
148278
+ }
148267
148279
  return withLock(`package:${packageName}:${resolvedVersion}`, async () => {
148268
148280
  if (!isPackageComplete(packageDir)) {
148269
148281
  console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Downloading to ${packageDir}...`);
148282
+ const downloadStart = Date.now();
148270
148283
  const tempDir = join(baseDir, `.tmp-${resolvedVersion}-${Math.random().toString(36).slice(2)}`);
148271
148284
  await mkdir(tempDir, { recursive: true });
148272
148285
  try {
@@ -148282,6 +148295,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
148282
148295
  if (isPackageComplete(packageDir)) console.log(`[Fetcher] Destination ${packageDir} already exists and is valid.`);
148283
148296
  else throw err;
148284
148297
  }
148298
+ console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Downloaded and extracted in ${Date.now() - downloadStart}ms`);
148285
148299
  } catch (err) {
148286
148300
  await rm(tempDir, {
148287
148301
  recursive: true,
@@ -148290,8 +148304,15 @@ async function fetchPackage(packageName, versionOrRange, options) {
148290
148304
  throw err;
148291
148305
  }
148292
148306
  }
148307
+ const entryStart = Date.now();
148293
148308
  const entryPoint = await resolveEntryPoint(packageDir, packageName);
148294
- if (options?.installDeps) await installDependencies(packageDir, packageName, options);
148309
+ console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Resolved entry point in ${Date.now() - entryStart}ms`);
148310
+ if (options?.installDeps) {
148311
+ const depsStart = Date.now();
148312
+ await installDependencies(packageDir, packageName, options);
148313
+ console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Installed dependencies in ${Date.now() - depsStart}ms`);
148314
+ }
148315
+ console.log(`[Fetcher] ${packageName}@${resolvedVersion}: FetchPackage complete in ${Date.now() - start}ms`);
148295
148316
  return {
148296
148317
  packageDir,
148297
148318
  resolvedVersion,
@@ -148330,10 +148351,14 @@ async function runPnpm(cwd, options) {
148330
148351
  * Installs a specific version of Node.js if not already present.
148331
148352
  */
148332
148353
  async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
148354
+ const checkStart = Date.now();
148333
148355
  const isWindows = process.platform === "win32";
148334
148356
  const nodeDir = context.getThirdPartyPath("node", version);
148335
148357
  const finalNodePath = join(nodeDir, isWindows ? "node.exe" : "bin/node");
148336
- if (isNodeJSComplete(finalNodePath)) return finalNodePath;
148358
+ if (isNodeJSComplete(finalNodePath)) {
148359
+ console.log(`[Environment] Node.js check took ${Date.now() - checkStart}ms (found at ${finalNodePath})`);
148360
+ return finalNodePath;
148361
+ }
148337
148362
  return withLock(`node:${version}`, async () => {
148338
148363
  if (isNodeJSComplete(finalNodePath)) return finalNodePath;
148339
148364
  const arch = process.arch === "x64" ? "x64" : process.arch === "arm64" ? "arm64" : "x86";
@@ -148345,9 +148370,12 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
148345
148370
  const archivePath = join(tempDir, fileName);
148346
148371
  sendStartupProgress(`Downloading Node.js v${version}...`);
148347
148372
  console.log(`Downloading Node.js from ${downloadUrl}...`);
148373
+ const dlStart = Date.now();
148348
148374
  await downloadFile(downloadUrl, archivePath);
148375
+ console.log(`[Environment] Node.js download took ${Date.now() - dlStart}ms`);
148349
148376
  sendStartupProgress(`Extracting Node.js v${version}...`);
148350
148377
  console.log(`Extracting Node.js to ${tempDir}...`);
148378
+ const extStart = Date.now();
148351
148379
  const extractTempDir = join(tempDir, "extracted");
148352
148380
  await mkdir(extractTempDir, { recursive: true });
148353
148381
  if (extension === "zip") await extractZip(archivePath, extractTempDir);
@@ -148372,6 +148400,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
148372
148400
  if (isNodeJSComplete(finalNodePath)) console.log(`[Fetcher] Node.js directory already exists and is valid.`);
148373
148401
  else throw err;
148374
148402
  }
148403
+ console.log(`[Environment] Node.js extraction took ${Date.now() - extStart}ms`);
148375
148404
  } finally {
148376
148405
  await rm(tempNodeDir, {
148377
148406
  recursive: true,
@@ -148382,6 +148411,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
148382
148411
  force: true
148383
148412
  }).catch(() => {});
148384
148413
  }
148414
+ console.log(`[Environment] Node.js set up complete in ${Date.now() - checkStart}ms`);
148385
148415
  return finalNodePath;
148386
148416
  });
148387
148417
  }
@@ -148389,16 +148419,22 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
148389
148419
  * Installs the PNPM package from npm if not already present.
148390
148420
  */
148391
148421
  async function ensurePNPM(context, version = DEFAULT_PNPM_VERSION) {
148422
+ const checkStart = Date.now();
148392
148423
  const pnpmPath = join(context.getPackagesPath("pnpm", version), "bin", "pnpm.cjs");
148393
- if (existsSync(pnpmPath)) return pnpmPath;
148424
+ if (existsSync(pnpmPath)) {
148425
+ console.log(`[Environment] PNPM check took ${Date.now() - checkStart}ms (found at ${pnpmPath})`);
148426
+ return pnpmPath;
148427
+ }
148394
148428
  return withLock(`pnpm:${version}`, async () => {
148395
148429
  if (existsSync(pnpmPath)) return pnpmPath;
148396
148430
  sendStartupProgress(`Checking PNPM v${version}...`);
148397
148431
  const { packageDir } = await fetchPackage("pnpm", version, { context });
148432
+ console.log(`[Environment] PNPM set up complete in ${Date.now() - checkStart}ms`);
148398
148433
  return join(packageDir, "bin", "pnpm.cjs");
148399
148434
  });
148400
148435
  }
148401
148436
  async function installDependencies(packageDir, packageName, options) {
148437
+ const start = Date.now();
148402
148438
  const nodeModulesPath = join(packageDir, "node_modules");
148403
148439
  if (isDependenciesInstalledSync(packageDir)) {
148404
148440
  console.log(`[Fetcher] ${packageName}: Dependencies already installed, skipping.`);
@@ -148409,18 +148445,21 @@ async function installDependencies(packageDir, packageName, options) {
148409
148445
  try {
148410
148446
  await cp(join(packageDir, "package.json"), join(tempDir, "package.json"));
148411
148447
  console.log(`[Fetcher] ${packageName}: Ensuring dependencies are installed...`);
148448
+ const pnpmStart = Date.now();
148412
148449
  const { all } = await runPnpm(tempDir, {
148413
148450
  signal: options.signal,
148414
148451
  context: options.context
148415
148452
  });
148453
+ console.log(`[Fetcher] ${packageName}: pnpm install command took ${Date.now() - pnpmStart}ms`);
148416
148454
  if (all) console.log(`[Fetcher] ${packageName}: Installation trace:\n${all}`);
148417
148455
  const tempNodeModules = join(tempDir, "node_modules");
148418
148456
  if (existsSync(nodeModulesPath)) await rm(nodeModulesPath, {
148419
148457
  recursive: true,
148420
148458
  force: true
148421
148459
  }).catch(() => {});
148460
+ const renameStart = Date.now();
148422
148461
  await rename(tempNodeModules, nodeModulesPath);
148423
- console.log(`[Fetcher] ${packageName}: Dependencies installed successfully.`);
148462
+ console.log(`[Fetcher] ${packageName}: Dependencies installed successfully (rename took ${Date.now() - renameStart}ms, total installDependencies took ${Date.now() - start}ms).`);
148424
148463
  } catch (err) {
148425
148464
  console.error(`[Fetcher] ${packageName}: CRITICAL ERROR during dependency installation: ${err.message}`);
148426
148465
  if (err.all) console.error(`[Fetcher] ${packageName}: Error details:\n${err.all}`);