@pipelab/plugin-construct 1.0.0-beta.10 → 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 +64 -15
- 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
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { a as __require, i as __reExport, o as __toESM, r as __exportAll, t as __commonJSMin } from "./chunk-kImr3pkf.mjs";
|
|
1
|
+
import { a as __require, i as __reExport, n as __esmMin, o as __toESM, r as __exportAll, t as __commonJSMin } from "./chunk-kImr3pkf.mjs";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import { hostname } from "os";
|
|
4
4
|
import { normalize } from "path";
|
|
5
5
|
import { formatWithOptions, types } from "util";
|
|
6
6
|
import path, { delimiter, dirname, join } from "node:path";
|
|
7
|
-
import { constants, homedir, tmpdir } from "node:os";
|
|
8
7
|
import { fileURLToPath } from "node:url";
|
|
8
|
+
import { constants, homedir, tmpdir } from "node:os";
|
|
9
9
|
import { appendFileSync, createReadStream, createWriteStream, existsSync, readFileSync, readdirSync, statSync, writeFileSync } from "node:fs";
|
|
10
10
|
import http from "node:http";
|
|
11
11
|
import { webcrypto } from "node:crypto";
|
|
@@ -45207,7 +45207,16 @@ object({
|
|
|
45207
45207
|
pipelines: optional(array(SaveLocationValidator), [])
|
|
45208
45208
|
});
|
|
45209
45209
|
//#endregion
|
|
45210
|
+
//#region ../../node_modules/tsdown/esm-shims.js
|
|
45211
|
+
var getFilename, getDirname, __dirname;
|
|
45212
|
+
var init_esm_shims = __esmMin((() => {
|
|
45213
|
+
getFilename = () => fileURLToPath(import.meta.url);
|
|
45214
|
+
getDirname = () => path.dirname(getFilename());
|
|
45215
|
+
__dirname = /* @__PURE__ */ getDirname();
|
|
45216
|
+
}));
|
|
45217
|
+
//#endregion
|
|
45210
45218
|
//#region ../../packages/core-node/src/context.ts
|
|
45219
|
+
init_esm_shims();
|
|
45211
45220
|
const _dirname = typeof __dirname !== "undefined" ? __dirname : typeof import.meta !== "undefined" && import.meta.url ? dirname(fileURLToPath(import.meta.url)) : process.cwd();
|
|
45212
45221
|
const isDev = process.env.NODE_ENV === "development";
|
|
45213
45222
|
/**
|
|
@@ -111081,6 +111090,7 @@ var require_lib$9 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
111081
111090
|
//#endregion
|
|
111082
111091
|
//#region ../../node_modules/@npmcli/run-script/lib/set-path.js
|
|
111083
111092
|
var require_set_path = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
111093
|
+
init_esm_shims();
|
|
111084
111094
|
const { log } = require_lib$29();
|
|
111085
111095
|
const { resolve: resolve$4, dirname: dirname$2, delimiter: delimiter$1 } = __require("path");
|
|
111086
111096
|
const nodeGypPath = resolve$4(__dirname, "../lib/node-gyp-bin");
|
|
@@ -148252,11 +148262,13 @@ async function withLock(key, fn) {
|
|
|
148252
148262
|
* Centralized in core-node to avoid circular dependencies.
|
|
148253
148263
|
*/
|
|
148254
148264
|
async function fetchPackage(packageName, versionOrRange, options) {
|
|
148265
|
+
const start = Date.now();
|
|
148255
148266
|
if (isDev && projectRoot && process.env.PIPELAB_FORCE_NPM !== "true") {
|
|
148256
148267
|
if (packageName.startsWith("@pipelab/")) {
|
|
148268
|
+
const localStart = Date.now();
|
|
148257
148269
|
const local = await tryResolveMonorepoPackage(packageName);
|
|
148258
148270
|
if (local) {
|
|
148259
|
-
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)`);
|
|
148260
148272
|
return {
|
|
148261
148273
|
...local,
|
|
148262
148274
|
resolvedVersion: "workspace"
|
|
@@ -148268,6 +148280,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148268
148280
|
const baseDir = ctx.getPackagesPath(packageName);
|
|
148269
148281
|
let resolvedVersion;
|
|
148270
148282
|
console.log(`[Fetcher] Resolving ${packageName}@${versionOrRange || "latest"}...`);
|
|
148283
|
+
const resolveStart = Date.now();
|
|
148271
148284
|
try {
|
|
148272
148285
|
const cachePath = join(ctx.userDataPath, "cache", "pacote");
|
|
148273
148286
|
let packumentPromise = packumentRequests.get(packageName);
|
|
@@ -148281,22 +148294,32 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148281
148294
|
const foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
|
|
148282
148295
|
if (!foundVersion) throw new Error(`Package ${packageName}@${range} not found on npm (available tags: ${Object.keys(packument["dist-tags"] || {}).join(", ")})`);
|
|
148283
148296
|
resolvedVersion = foundVersion;
|
|
148284
|
-
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)`);
|
|
148285
148298
|
} catch (error) {
|
|
148286
|
-
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();
|
|
148287
148301
|
const fallbackVersion = await tryLocalFallback(versionOrRange, error, baseDir, packageName);
|
|
148288
|
-
if (fallbackVersion)
|
|
148289
|
-
|
|
148302
|
+
if (fallbackVersion) {
|
|
148303
|
+
resolvedVersion = fallbackVersion;
|
|
148304
|
+
console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
|
|
148305
|
+
} else throw error;
|
|
148290
148306
|
}
|
|
148291
148307
|
const cachePath = join(ctx.userDataPath, "cache", "pacote");
|
|
148292
148308
|
const packageDir = join(baseDir, resolvedVersion);
|
|
148293
|
-
|
|
148294
|
-
|
|
148295
|
-
|
|
148296
|
-
|
|
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
|
+
}
|
|
148297
148319
|
return withLock(`package:${packageName}:${resolvedVersion}`, async () => {
|
|
148298
148320
|
if (!isPackageComplete(packageDir)) {
|
|
148299
148321
|
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Downloading to ${packageDir}...`);
|
|
148322
|
+
const downloadStart = Date.now();
|
|
148300
148323
|
const tempDir = join(baseDir, `.tmp-${resolvedVersion}-${Math.random().toString(36).slice(2)}`);
|
|
148301
148324
|
await mkdir(tempDir, { recursive: true });
|
|
148302
148325
|
try {
|
|
@@ -148312,6 +148335,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148312
148335
|
if (isPackageComplete(packageDir)) console.log(`[Fetcher] Destination ${packageDir} already exists and is valid.`);
|
|
148313
148336
|
else throw err;
|
|
148314
148337
|
}
|
|
148338
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Downloaded and extracted in ${Date.now() - downloadStart}ms`);
|
|
148315
148339
|
} catch (err) {
|
|
148316
148340
|
await rm(tempDir, {
|
|
148317
148341
|
recursive: true,
|
|
@@ -148320,8 +148344,15 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148320
148344
|
throw err;
|
|
148321
148345
|
}
|
|
148322
148346
|
}
|
|
148347
|
+
const entryStart = Date.now();
|
|
148323
148348
|
const entryPoint = await resolveEntryPoint(packageDir, packageName);
|
|
148324
|
-
|
|
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`);
|
|
148325
148356
|
return {
|
|
148326
148357
|
packageDir,
|
|
148327
148358
|
resolvedVersion,
|
|
@@ -148360,10 +148391,14 @@ async function runPnpm(cwd, options) {
|
|
|
148360
148391
|
* Installs a specific version of Node.js if not already present.
|
|
148361
148392
|
*/
|
|
148362
148393
|
async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
148394
|
+
const checkStart = Date.now();
|
|
148363
148395
|
const isWindows = process.platform === "win32";
|
|
148364
148396
|
const nodeDir = context.getThirdPartyPath("node", version);
|
|
148365
148397
|
const finalNodePath = join(nodeDir, isWindows ? "node.exe" : "bin/node");
|
|
148366
|
-
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
|
+
}
|
|
148367
148402
|
return withLock(`node:${version}`, async () => {
|
|
148368
148403
|
if (isNodeJSComplete(finalNodePath)) return finalNodePath;
|
|
148369
148404
|
const arch = process.arch === "x64" ? "x64" : process.arch === "arm64" ? "arm64" : "x86";
|
|
@@ -148375,9 +148410,12 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148375
148410
|
const archivePath = join(tempDir, fileName);
|
|
148376
148411
|
sendStartupProgress(`Downloading Node.js v${version}...`);
|
|
148377
148412
|
console.log(`Downloading Node.js from ${downloadUrl}...`);
|
|
148413
|
+
const dlStart = Date.now();
|
|
148378
148414
|
await downloadFile(downloadUrl, archivePath);
|
|
148415
|
+
console.log(`[Environment] Node.js download took ${Date.now() - dlStart}ms`);
|
|
148379
148416
|
sendStartupProgress(`Extracting Node.js v${version}...`);
|
|
148380
148417
|
console.log(`Extracting Node.js to ${tempDir}...`);
|
|
148418
|
+
const extStart = Date.now();
|
|
148381
148419
|
const extractTempDir = join(tempDir, "extracted");
|
|
148382
148420
|
await mkdir(extractTempDir, { recursive: true });
|
|
148383
148421
|
if (extension === "zip") await extractZip(archivePath, extractTempDir);
|
|
@@ -148402,6 +148440,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148402
148440
|
if (isNodeJSComplete(finalNodePath)) console.log(`[Fetcher] Node.js directory already exists and is valid.`);
|
|
148403
148441
|
else throw err;
|
|
148404
148442
|
}
|
|
148443
|
+
console.log(`[Environment] Node.js extraction took ${Date.now() - extStart}ms`);
|
|
148405
148444
|
} finally {
|
|
148406
148445
|
await rm(tempNodeDir, {
|
|
148407
148446
|
recursive: true,
|
|
@@ -148412,6 +148451,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148412
148451
|
force: true
|
|
148413
148452
|
}).catch(() => {});
|
|
148414
148453
|
}
|
|
148454
|
+
console.log(`[Environment] Node.js set up complete in ${Date.now() - checkStart}ms`);
|
|
148415
148455
|
return finalNodePath;
|
|
148416
148456
|
});
|
|
148417
148457
|
}
|
|
@@ -148419,16 +148459,22 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148419
148459
|
* Installs the PNPM package from npm if not already present.
|
|
148420
148460
|
*/
|
|
148421
148461
|
async function ensurePNPM(context, version = DEFAULT_PNPM_VERSION) {
|
|
148462
|
+
const checkStart = Date.now();
|
|
148422
148463
|
const pnpmPath = join(context.getPackagesPath("pnpm", version), "bin", "pnpm.cjs");
|
|
148423
|
-
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
|
+
}
|
|
148424
148468
|
return withLock(`pnpm:${version}`, async () => {
|
|
148425
148469
|
if (existsSync(pnpmPath)) return pnpmPath;
|
|
148426
148470
|
sendStartupProgress(`Checking PNPM v${version}...`);
|
|
148427
148471
|
const { packageDir } = await fetchPackage("pnpm", version, { context });
|
|
148472
|
+
console.log(`[Environment] PNPM set up complete in ${Date.now() - checkStart}ms`);
|
|
148428
148473
|
return join(packageDir, "bin", "pnpm.cjs");
|
|
148429
148474
|
});
|
|
148430
148475
|
}
|
|
148431
148476
|
async function installDependencies(packageDir, packageName, options) {
|
|
148477
|
+
const start = Date.now();
|
|
148432
148478
|
const nodeModulesPath = join(packageDir, "node_modules");
|
|
148433
148479
|
if (isDependenciesInstalledSync(packageDir)) {
|
|
148434
148480
|
console.log(`[Fetcher] ${packageName}: Dependencies already installed, skipping.`);
|
|
@@ -148439,18 +148485,21 @@ async function installDependencies(packageDir, packageName, options) {
|
|
|
148439
148485
|
try {
|
|
148440
148486
|
await cp(join(packageDir, "package.json"), join(tempDir, "package.json"));
|
|
148441
148487
|
console.log(`[Fetcher] ${packageName}: Ensuring dependencies are installed...`);
|
|
148488
|
+
const pnpmStart = Date.now();
|
|
148442
148489
|
const { all } = await runPnpm(tempDir, {
|
|
148443
148490
|
signal: options.signal,
|
|
148444
148491
|
context: options.context
|
|
148445
148492
|
});
|
|
148493
|
+
console.log(`[Fetcher] ${packageName}: pnpm install command took ${Date.now() - pnpmStart}ms`);
|
|
148446
148494
|
if (all) console.log(`[Fetcher] ${packageName}: Installation trace:\n${all}`);
|
|
148447
148495
|
const tempNodeModules = join(tempDir, "node_modules");
|
|
148448
148496
|
if (existsSync(nodeModulesPath)) await rm(nodeModulesPath, {
|
|
148449
148497
|
recursive: true,
|
|
148450
148498
|
force: true
|
|
148451
148499
|
}).catch(() => {});
|
|
148500
|
+
const renameStart = Date.now();
|
|
148452
148501
|
await rename(tempNodeModules, nodeModulesPath);
|
|
148453
|
-
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).`);
|
|
148454
148503
|
} catch (err) {
|
|
148455
148504
|
console.error(`[Fetcher] ${packageName}: CRITICAL ERROR during dependency installation: ${err.message}`);
|
|
148456
148505
|
if (err.all) console.error(`[Fetcher] ${packageName}: Error details:\n${err.all}`);
|