@pipelab/plugin-electron 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 +6 -6
package/dist/index.cjs
CHANGED
|
@@ -148294,11 +148294,13 @@ async function withLock(key, fn) {
|
|
|
148294
148294
|
* Centralized in core-node to avoid circular dependencies.
|
|
148295
148295
|
*/
|
|
148296
148296
|
async function fetchPackage(packageName, versionOrRange, options) {
|
|
148297
|
+
const start = Date.now();
|
|
148297
148298
|
if (isDev && projectRoot && process.env.PIPELAB_FORCE_NPM !== "true") {
|
|
148298
148299
|
if (packageName.startsWith("@pipelab/")) {
|
|
148300
|
+
const localStart = Date.now();
|
|
148299
148301
|
const local = await tryResolveMonorepoPackage(packageName);
|
|
148300
148302
|
if (local) {
|
|
148301
|
-
console.log(`[Fetcher] ${packageName}: Resolved to local source at ${local.packageDir}`);
|
|
148303
|
+
console.log(`[Fetcher] ${packageName}: Resolved to local source at ${local.packageDir} (${Date.now() - localStart}ms)`);
|
|
148302
148304
|
return {
|
|
148303
148305
|
...local,
|
|
148304
148306
|
resolvedVersion: "workspace"
|
|
@@ -148310,6 +148312,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148310
148312
|
const baseDir = ctx.getPackagesPath(packageName);
|
|
148311
148313
|
let resolvedVersion;
|
|
148312
148314
|
console.log(`[Fetcher] Resolving ${packageName}@${versionOrRange || "latest"}...`);
|
|
148315
|
+
const resolveStart = Date.now();
|
|
148313
148316
|
try {
|
|
148314
148317
|
const cachePath = (0, node_path.join)(ctx.userDataPath, "cache", "pacote");
|
|
148315
148318
|
let packumentPromise = packumentRequests.get(packageName);
|
|
@@ -148323,22 +148326,32 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148323
148326
|
const foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
|
|
148324
148327
|
if (!foundVersion) throw new Error(`Package ${packageName}@${range} not found on npm (available tags: ${Object.keys(packument["dist-tags"] || {}).join(", ")})`);
|
|
148325
148328
|
resolvedVersion = foundVersion;
|
|
148326
|
-
console.log(`[Fetcher] ${packageName}: Resolved to v${resolvedVersion} via npm`);
|
|
148329
|
+
console.log(`[Fetcher] ${packageName}: Resolved to v${resolvedVersion} via npm (${Date.now() - resolveStart}ms)`);
|
|
148327
148330
|
} catch (error) {
|
|
148328
|
-
console.warn(`[Fetcher] ${packageName}: remote resolution failed, trying local fallback...`);
|
|
148331
|
+
console.warn(`[Fetcher] ${packageName}: remote resolution failed (${Date.now() - resolveStart}ms), trying local fallback...`);
|
|
148332
|
+
const fallbackStart = Date.now();
|
|
148329
148333
|
const fallbackVersion = await tryLocalFallback(versionOrRange, error, baseDir, packageName);
|
|
148330
|
-
if (fallbackVersion)
|
|
148331
|
-
|
|
148334
|
+
if (fallbackVersion) {
|
|
148335
|
+
resolvedVersion = fallbackVersion;
|
|
148336
|
+
console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
|
|
148337
|
+
} else throw error;
|
|
148332
148338
|
}
|
|
148333
148339
|
const cachePath = (0, node_path.join)(ctx.userDataPath, "cache", "pacote");
|
|
148334
148340
|
const packageDir = (0, node_path.join)(baseDir, resolvedVersion);
|
|
148335
|
-
|
|
148336
|
-
|
|
148337
|
-
|
|
148338
|
-
|
|
148341
|
+
const checkStart = Date.now();
|
|
148342
|
+
const isInstalled = options?.installDeps ? isPackageComplete(packageDir) && isDependenciesInstalledSync(packageDir) : isPackageComplete(packageDir);
|
|
148343
|
+
const checkDuration = Date.now() - checkStart;
|
|
148344
|
+
if (isInstalled) {
|
|
148345
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Already installed (check took ${checkDuration}ms, fetchPackage took ${Date.now() - start}ms)`);
|
|
148346
|
+
return {
|
|
148347
|
+
packageDir,
|
|
148348
|
+
resolvedVersion
|
|
148349
|
+
};
|
|
148350
|
+
}
|
|
148339
148351
|
return withLock(`package:${packageName}:${resolvedVersion}`, async () => {
|
|
148340
148352
|
if (!isPackageComplete(packageDir)) {
|
|
148341
148353
|
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Downloading to ${packageDir}...`);
|
|
148354
|
+
const downloadStart = Date.now();
|
|
148342
148355
|
const tempDir = (0, node_path.join)(baseDir, `.tmp-${resolvedVersion}-${Math.random().toString(36).slice(2)}`);
|
|
148343
148356
|
await (0, node_fs_promises.mkdir)(tempDir, { recursive: true });
|
|
148344
148357
|
try {
|
|
@@ -148354,6 +148367,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148354
148367
|
if (isPackageComplete(packageDir)) console.log(`[Fetcher] Destination ${packageDir} already exists and is valid.`);
|
|
148355
148368
|
else throw err;
|
|
148356
148369
|
}
|
|
148370
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Downloaded and extracted in ${Date.now() - downloadStart}ms`);
|
|
148357
148371
|
} catch (err) {
|
|
148358
148372
|
await (0, node_fs_promises.rm)(tempDir, {
|
|
148359
148373
|
recursive: true,
|
|
@@ -148362,8 +148376,15 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148362
148376
|
throw err;
|
|
148363
148377
|
}
|
|
148364
148378
|
}
|
|
148379
|
+
const entryStart = Date.now();
|
|
148365
148380
|
const entryPoint = await resolveEntryPoint(packageDir, packageName);
|
|
148366
|
-
|
|
148381
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Resolved entry point in ${Date.now() - entryStart}ms`);
|
|
148382
|
+
if (options?.installDeps) {
|
|
148383
|
+
const depsStart = Date.now();
|
|
148384
|
+
await installDependencies(packageDir, packageName, options);
|
|
148385
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Installed dependencies in ${Date.now() - depsStart}ms`);
|
|
148386
|
+
}
|
|
148387
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: FetchPackage complete in ${Date.now() - start}ms`);
|
|
148367
148388
|
return {
|
|
148368
148389
|
packageDir,
|
|
148369
148390
|
resolvedVersion,
|
|
@@ -148402,10 +148423,14 @@ async function runPnpm(cwd, options) {
|
|
|
148402
148423
|
* Installs a specific version of Node.js if not already present.
|
|
148403
148424
|
*/
|
|
148404
148425
|
async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
148426
|
+
const checkStart = Date.now();
|
|
148405
148427
|
const isWindows = process.platform === "win32";
|
|
148406
148428
|
const nodeDir = context.getThirdPartyPath("node", version);
|
|
148407
148429
|
const finalNodePath = (0, node_path.join)(nodeDir, isWindows ? "node.exe" : "bin/node");
|
|
148408
|
-
if (isNodeJSComplete(finalNodePath))
|
|
148430
|
+
if (isNodeJSComplete(finalNodePath)) {
|
|
148431
|
+
console.log(`[Environment] Node.js check took ${Date.now() - checkStart}ms (found at ${finalNodePath})`);
|
|
148432
|
+
return finalNodePath;
|
|
148433
|
+
}
|
|
148409
148434
|
return withLock(`node:${version}`, async () => {
|
|
148410
148435
|
if (isNodeJSComplete(finalNodePath)) return finalNodePath;
|
|
148411
148436
|
const arch = process.arch === "x64" ? "x64" : process.arch === "arm64" ? "arm64" : "x86";
|
|
@@ -148417,9 +148442,12 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148417
148442
|
const archivePath = (0, node_path.join)(tempDir, fileName);
|
|
148418
148443
|
sendStartupProgress(`Downloading Node.js v${version}...`);
|
|
148419
148444
|
console.log(`Downloading Node.js from ${downloadUrl}...`);
|
|
148445
|
+
const dlStart = Date.now();
|
|
148420
148446
|
await downloadFile(downloadUrl, archivePath);
|
|
148447
|
+
console.log(`[Environment] Node.js download took ${Date.now() - dlStart}ms`);
|
|
148421
148448
|
sendStartupProgress(`Extracting Node.js v${version}...`);
|
|
148422
148449
|
console.log(`Extracting Node.js to ${tempDir}...`);
|
|
148450
|
+
const extStart = Date.now();
|
|
148423
148451
|
const extractTempDir = (0, node_path.join)(tempDir, "extracted");
|
|
148424
148452
|
await (0, node_fs_promises.mkdir)(extractTempDir, { recursive: true });
|
|
148425
148453
|
if (extension === "zip") await extractZip(archivePath, extractTempDir);
|
|
@@ -148444,6 +148472,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148444
148472
|
if (isNodeJSComplete(finalNodePath)) console.log(`[Fetcher] Node.js directory already exists and is valid.`);
|
|
148445
148473
|
else throw err;
|
|
148446
148474
|
}
|
|
148475
|
+
console.log(`[Environment] Node.js extraction took ${Date.now() - extStart}ms`);
|
|
148447
148476
|
} finally {
|
|
148448
148477
|
await (0, node_fs_promises.rm)(tempNodeDir, {
|
|
148449
148478
|
recursive: true,
|
|
@@ -148454,6 +148483,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148454
148483
|
force: true
|
|
148455
148484
|
}).catch(() => {});
|
|
148456
148485
|
}
|
|
148486
|
+
console.log(`[Environment] Node.js set up complete in ${Date.now() - checkStart}ms`);
|
|
148457
148487
|
return finalNodePath;
|
|
148458
148488
|
});
|
|
148459
148489
|
}
|
|
@@ -148461,16 +148491,22 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148461
148491
|
* Installs the PNPM package from npm if not already present.
|
|
148462
148492
|
*/
|
|
148463
148493
|
async function ensurePNPM(context, version = DEFAULT_PNPM_VERSION) {
|
|
148494
|
+
const checkStart = Date.now();
|
|
148464
148495
|
const pnpmPath = (0, node_path.join)(context.getPackagesPath("pnpm", version), "bin", "pnpm.cjs");
|
|
148465
|
-
if ((0, node_fs.existsSync)(pnpmPath))
|
|
148496
|
+
if ((0, node_fs.existsSync)(pnpmPath)) {
|
|
148497
|
+
console.log(`[Environment] PNPM check took ${Date.now() - checkStart}ms (found at ${pnpmPath})`);
|
|
148498
|
+
return pnpmPath;
|
|
148499
|
+
}
|
|
148466
148500
|
return withLock(`pnpm:${version}`, async () => {
|
|
148467
148501
|
if ((0, node_fs.existsSync)(pnpmPath)) return pnpmPath;
|
|
148468
148502
|
sendStartupProgress(`Checking PNPM v${version}...`);
|
|
148469
148503
|
const { packageDir } = await fetchPackage("pnpm", version, { context });
|
|
148504
|
+
console.log(`[Environment] PNPM set up complete in ${Date.now() - checkStart}ms`);
|
|
148470
148505
|
return (0, node_path.join)(packageDir, "bin", "pnpm.cjs");
|
|
148471
148506
|
});
|
|
148472
148507
|
}
|
|
148473
148508
|
async function installDependencies(packageDir, packageName, options) {
|
|
148509
|
+
const start = Date.now();
|
|
148474
148510
|
const nodeModulesPath = (0, node_path.join)(packageDir, "node_modules");
|
|
148475
148511
|
if (isDependenciesInstalledSync(packageDir)) {
|
|
148476
148512
|
console.log(`[Fetcher] ${packageName}: Dependencies already installed, skipping.`);
|
|
@@ -148481,18 +148517,21 @@ async function installDependencies(packageDir, packageName, options) {
|
|
|
148481
148517
|
try {
|
|
148482
148518
|
await (0, node_fs_promises.cp)((0, node_path.join)(packageDir, "package.json"), (0, node_path.join)(tempDir, "package.json"));
|
|
148483
148519
|
console.log(`[Fetcher] ${packageName}: Ensuring dependencies are installed...`);
|
|
148520
|
+
const pnpmStart = Date.now();
|
|
148484
148521
|
const { all } = await runPnpm(tempDir, {
|
|
148485
148522
|
signal: options.signal,
|
|
148486
148523
|
context: options.context
|
|
148487
148524
|
});
|
|
148525
|
+
console.log(`[Fetcher] ${packageName}: pnpm install command took ${Date.now() - pnpmStart}ms`);
|
|
148488
148526
|
if (all) console.log(`[Fetcher] ${packageName}: Installation trace:\n${all}`);
|
|
148489
148527
|
const tempNodeModules = (0, node_path.join)(tempDir, "node_modules");
|
|
148490
148528
|
if ((0, node_fs.existsSync)(nodeModulesPath)) await (0, node_fs_promises.rm)(nodeModulesPath, {
|
|
148491
148529
|
recursive: true,
|
|
148492
148530
|
force: true
|
|
148493
148531
|
}).catch(() => {});
|
|
148532
|
+
const renameStart = Date.now();
|
|
148494
148533
|
await (0, node_fs_promises.rename)(tempNodeModules, nodeModulesPath);
|
|
148495
|
-
console.log(`[Fetcher] ${packageName}: Dependencies installed successfully.`);
|
|
148534
|
+
console.log(`[Fetcher] ${packageName}: Dependencies installed successfully (rename took ${Date.now() - renameStart}ms, total installDependencies took ${Date.now() - start}ms).`);
|
|
148496
148535
|
} catch (err) {
|
|
148497
148536
|
console.error(`[Fetcher] ${packageName}: CRITICAL ERROR during dependency installation: ${err.message}`);
|
|
148498
148537
|
if (err.all) console.error(`[Fetcher] ${packageName}: Error details:\n${err.all}`);
|
package/dist/index.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
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 { hostname } from "os";
|
|
3
3
|
import { normalize } from "path";
|
|
4
4
|
import { formatWithOptions, types } from "util";
|
|
5
5
|
import path, { basename, delimiter, dirname, join } from "node:path";
|
|
6
|
-
import { arch, constants, platform, tmpdir } from "node:os";
|
|
7
6
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
7
|
+
import { arch, constants, platform, tmpdir } from "node:os";
|
|
8
8
|
import { appendFileSync, createReadStream, createWriteStream, existsSync, readFileSync, readdirSync, statSync, writeFileSync } from "node:fs";
|
|
9
9
|
import http from "node:http";
|
|
10
10
|
import { webcrypto } from "node:crypto";
|
|
@@ -45213,7 +45213,16 @@ object({
|
|
|
45213
45213
|
pipelines: optional(array(SaveLocationValidator), [])
|
|
45214
45214
|
});
|
|
45215
45215
|
//#endregion
|
|
45216
|
+
//#region ../../node_modules/tsdown/esm-shims.js
|
|
45217
|
+
var getFilename, getDirname, __dirname;
|
|
45218
|
+
var init_esm_shims = __esmMin((() => {
|
|
45219
|
+
getFilename = () => fileURLToPath(import.meta.url);
|
|
45220
|
+
getDirname = () => path.dirname(getFilename());
|
|
45221
|
+
__dirname = /* @__PURE__ */ getDirname();
|
|
45222
|
+
}));
|
|
45223
|
+
//#endregion
|
|
45216
45224
|
//#region ../../packages/core-node/src/context.ts
|
|
45225
|
+
init_esm_shims();
|
|
45217
45226
|
const _dirname = typeof __dirname !== "undefined" ? __dirname : typeof import.meta !== "undefined" && import.meta.url ? dirname(fileURLToPath(import.meta.url)) : process.cwd();
|
|
45218
45227
|
const isDev = process.env.NODE_ENV === "development";
|
|
45219
45228
|
/**
|
|
@@ -111114,6 +111123,7 @@ var require_lib$9 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
111114
111123
|
//#endregion
|
|
111115
111124
|
//#region ../../node_modules/@npmcli/run-script/lib/set-path.js
|
|
111116
111125
|
var require_set_path = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
111126
|
+
init_esm_shims();
|
|
111117
111127
|
const { log } = require_lib$29();
|
|
111118
111128
|
const { resolve: resolve$4, dirname: dirname$2, delimiter: delimiter$1 } = __require("path");
|
|
111119
111129
|
const nodeGypPath = resolve$4(__dirname, "../lib/node-gyp-bin");
|
|
@@ -148285,11 +148295,13 @@ async function withLock(key, fn) {
|
|
|
148285
148295
|
* Centralized in core-node to avoid circular dependencies.
|
|
148286
148296
|
*/
|
|
148287
148297
|
async function fetchPackage(packageName, versionOrRange, options) {
|
|
148298
|
+
const start = Date.now();
|
|
148288
148299
|
if (isDev && projectRoot && process.env.PIPELAB_FORCE_NPM !== "true") {
|
|
148289
148300
|
if (packageName.startsWith("@pipelab/")) {
|
|
148301
|
+
const localStart = Date.now();
|
|
148290
148302
|
const local = await tryResolveMonorepoPackage(packageName);
|
|
148291
148303
|
if (local) {
|
|
148292
|
-
console.log(`[Fetcher] ${packageName}: Resolved to local source at ${local.packageDir}`);
|
|
148304
|
+
console.log(`[Fetcher] ${packageName}: Resolved to local source at ${local.packageDir} (${Date.now() - localStart}ms)`);
|
|
148293
148305
|
return {
|
|
148294
148306
|
...local,
|
|
148295
148307
|
resolvedVersion: "workspace"
|
|
@@ -148301,6 +148313,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148301
148313
|
const baseDir = ctx.getPackagesPath(packageName);
|
|
148302
148314
|
let resolvedVersion;
|
|
148303
148315
|
console.log(`[Fetcher] Resolving ${packageName}@${versionOrRange || "latest"}...`);
|
|
148316
|
+
const resolveStart = Date.now();
|
|
148304
148317
|
try {
|
|
148305
148318
|
const cachePath = join(ctx.userDataPath, "cache", "pacote");
|
|
148306
148319
|
let packumentPromise = packumentRequests.get(packageName);
|
|
@@ -148314,22 +148327,32 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148314
148327
|
const foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
|
|
148315
148328
|
if (!foundVersion) throw new Error(`Package ${packageName}@${range} not found on npm (available tags: ${Object.keys(packument["dist-tags"] || {}).join(", ")})`);
|
|
148316
148329
|
resolvedVersion = foundVersion;
|
|
148317
|
-
console.log(`[Fetcher] ${packageName}: Resolved to v${resolvedVersion} via npm`);
|
|
148330
|
+
console.log(`[Fetcher] ${packageName}: Resolved to v${resolvedVersion} via npm (${Date.now() - resolveStart}ms)`);
|
|
148318
148331
|
} catch (error) {
|
|
148319
|
-
console.warn(`[Fetcher] ${packageName}: remote resolution failed, trying local fallback...`);
|
|
148332
|
+
console.warn(`[Fetcher] ${packageName}: remote resolution failed (${Date.now() - resolveStart}ms), trying local fallback...`);
|
|
148333
|
+
const fallbackStart = Date.now();
|
|
148320
148334
|
const fallbackVersion = await tryLocalFallback(versionOrRange, error, baseDir, packageName);
|
|
148321
|
-
if (fallbackVersion)
|
|
148322
|
-
|
|
148335
|
+
if (fallbackVersion) {
|
|
148336
|
+
resolvedVersion = fallbackVersion;
|
|
148337
|
+
console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
|
|
148338
|
+
} else throw error;
|
|
148323
148339
|
}
|
|
148324
148340
|
const cachePath = join(ctx.userDataPath, "cache", "pacote");
|
|
148325
148341
|
const packageDir = join(baseDir, resolvedVersion);
|
|
148326
|
-
|
|
148327
|
-
|
|
148328
|
-
|
|
148329
|
-
|
|
148342
|
+
const checkStart = Date.now();
|
|
148343
|
+
const isInstalled = options?.installDeps ? isPackageComplete(packageDir) && isDependenciesInstalledSync(packageDir) : isPackageComplete(packageDir);
|
|
148344
|
+
const checkDuration = Date.now() - checkStart;
|
|
148345
|
+
if (isInstalled) {
|
|
148346
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Already installed (check took ${checkDuration}ms, fetchPackage took ${Date.now() - start}ms)`);
|
|
148347
|
+
return {
|
|
148348
|
+
packageDir,
|
|
148349
|
+
resolvedVersion
|
|
148350
|
+
};
|
|
148351
|
+
}
|
|
148330
148352
|
return withLock(`package:${packageName}:${resolvedVersion}`, async () => {
|
|
148331
148353
|
if (!isPackageComplete(packageDir)) {
|
|
148332
148354
|
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Downloading to ${packageDir}...`);
|
|
148355
|
+
const downloadStart = Date.now();
|
|
148333
148356
|
const tempDir = join(baseDir, `.tmp-${resolvedVersion}-${Math.random().toString(36).slice(2)}`);
|
|
148334
148357
|
await mkdir(tempDir, { recursive: true });
|
|
148335
148358
|
try {
|
|
@@ -148345,6 +148368,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148345
148368
|
if (isPackageComplete(packageDir)) console.log(`[Fetcher] Destination ${packageDir} already exists and is valid.`);
|
|
148346
148369
|
else throw err;
|
|
148347
148370
|
}
|
|
148371
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Downloaded and extracted in ${Date.now() - downloadStart}ms`);
|
|
148348
148372
|
} catch (err) {
|
|
148349
148373
|
await rm(tempDir, {
|
|
148350
148374
|
recursive: true,
|
|
@@ -148353,8 +148377,15 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148353
148377
|
throw err;
|
|
148354
148378
|
}
|
|
148355
148379
|
}
|
|
148380
|
+
const entryStart = Date.now();
|
|
148356
148381
|
const entryPoint = await resolveEntryPoint(packageDir, packageName);
|
|
148357
|
-
|
|
148382
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Resolved entry point in ${Date.now() - entryStart}ms`);
|
|
148383
|
+
if (options?.installDeps) {
|
|
148384
|
+
const depsStart = Date.now();
|
|
148385
|
+
await installDependencies(packageDir, packageName, options);
|
|
148386
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Installed dependencies in ${Date.now() - depsStart}ms`);
|
|
148387
|
+
}
|
|
148388
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: FetchPackage complete in ${Date.now() - start}ms`);
|
|
148358
148389
|
return {
|
|
148359
148390
|
packageDir,
|
|
148360
148391
|
resolvedVersion,
|
|
@@ -148393,10 +148424,14 @@ async function runPnpm(cwd, options) {
|
|
|
148393
148424
|
* Installs a specific version of Node.js if not already present.
|
|
148394
148425
|
*/
|
|
148395
148426
|
async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
148427
|
+
const checkStart = Date.now();
|
|
148396
148428
|
const isWindows = process.platform === "win32";
|
|
148397
148429
|
const nodeDir = context.getThirdPartyPath("node", version);
|
|
148398
148430
|
const finalNodePath = join(nodeDir, isWindows ? "node.exe" : "bin/node");
|
|
148399
|
-
if (isNodeJSComplete(finalNodePath))
|
|
148431
|
+
if (isNodeJSComplete(finalNodePath)) {
|
|
148432
|
+
console.log(`[Environment] Node.js check took ${Date.now() - checkStart}ms (found at ${finalNodePath})`);
|
|
148433
|
+
return finalNodePath;
|
|
148434
|
+
}
|
|
148400
148435
|
return withLock(`node:${version}`, async () => {
|
|
148401
148436
|
if (isNodeJSComplete(finalNodePath)) return finalNodePath;
|
|
148402
148437
|
const arch = process.arch === "x64" ? "x64" : process.arch === "arm64" ? "arm64" : "x86";
|
|
@@ -148408,9 +148443,12 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148408
148443
|
const archivePath = join(tempDir, fileName);
|
|
148409
148444
|
sendStartupProgress(`Downloading Node.js v${version}...`);
|
|
148410
148445
|
console.log(`Downloading Node.js from ${downloadUrl}...`);
|
|
148446
|
+
const dlStart = Date.now();
|
|
148411
148447
|
await downloadFile(downloadUrl, archivePath);
|
|
148448
|
+
console.log(`[Environment] Node.js download took ${Date.now() - dlStart}ms`);
|
|
148412
148449
|
sendStartupProgress(`Extracting Node.js v${version}...`);
|
|
148413
148450
|
console.log(`Extracting Node.js to ${tempDir}...`);
|
|
148451
|
+
const extStart = Date.now();
|
|
148414
148452
|
const extractTempDir = join(tempDir, "extracted");
|
|
148415
148453
|
await mkdir(extractTempDir, { recursive: true });
|
|
148416
148454
|
if (extension === "zip") await extractZip(archivePath, extractTempDir);
|
|
@@ -148435,6 +148473,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148435
148473
|
if (isNodeJSComplete(finalNodePath)) console.log(`[Fetcher] Node.js directory already exists and is valid.`);
|
|
148436
148474
|
else throw err;
|
|
148437
148475
|
}
|
|
148476
|
+
console.log(`[Environment] Node.js extraction took ${Date.now() - extStart}ms`);
|
|
148438
148477
|
} finally {
|
|
148439
148478
|
await rm(tempNodeDir, {
|
|
148440
148479
|
recursive: true,
|
|
@@ -148445,6 +148484,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148445
148484
|
force: true
|
|
148446
148485
|
}).catch(() => {});
|
|
148447
148486
|
}
|
|
148487
|
+
console.log(`[Environment] Node.js set up complete in ${Date.now() - checkStart}ms`);
|
|
148448
148488
|
return finalNodePath;
|
|
148449
148489
|
});
|
|
148450
148490
|
}
|
|
@@ -148452,16 +148492,22 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148452
148492
|
* Installs the PNPM package from npm if not already present.
|
|
148453
148493
|
*/
|
|
148454
148494
|
async function ensurePNPM(context, version = DEFAULT_PNPM_VERSION) {
|
|
148495
|
+
const checkStart = Date.now();
|
|
148455
148496
|
const pnpmPath = join(context.getPackagesPath("pnpm", version), "bin", "pnpm.cjs");
|
|
148456
|
-
if (existsSync(pnpmPath))
|
|
148497
|
+
if (existsSync(pnpmPath)) {
|
|
148498
|
+
console.log(`[Environment] PNPM check took ${Date.now() - checkStart}ms (found at ${pnpmPath})`);
|
|
148499
|
+
return pnpmPath;
|
|
148500
|
+
}
|
|
148457
148501
|
return withLock(`pnpm:${version}`, async () => {
|
|
148458
148502
|
if (existsSync(pnpmPath)) return pnpmPath;
|
|
148459
148503
|
sendStartupProgress(`Checking PNPM v${version}...`);
|
|
148460
148504
|
const { packageDir } = await fetchPackage("pnpm", version, { context });
|
|
148505
|
+
console.log(`[Environment] PNPM set up complete in ${Date.now() - checkStart}ms`);
|
|
148461
148506
|
return join(packageDir, "bin", "pnpm.cjs");
|
|
148462
148507
|
});
|
|
148463
148508
|
}
|
|
148464
148509
|
async function installDependencies(packageDir, packageName, options) {
|
|
148510
|
+
const start = Date.now();
|
|
148465
148511
|
const nodeModulesPath = join(packageDir, "node_modules");
|
|
148466
148512
|
if (isDependenciesInstalledSync(packageDir)) {
|
|
148467
148513
|
console.log(`[Fetcher] ${packageName}: Dependencies already installed, skipping.`);
|
|
@@ -148472,18 +148518,21 @@ async function installDependencies(packageDir, packageName, options) {
|
|
|
148472
148518
|
try {
|
|
148473
148519
|
await cp(join(packageDir, "package.json"), join(tempDir, "package.json"));
|
|
148474
148520
|
console.log(`[Fetcher] ${packageName}: Ensuring dependencies are installed...`);
|
|
148521
|
+
const pnpmStart = Date.now();
|
|
148475
148522
|
const { all } = await runPnpm(tempDir, {
|
|
148476
148523
|
signal: options.signal,
|
|
148477
148524
|
context: options.context
|
|
148478
148525
|
});
|
|
148526
|
+
console.log(`[Fetcher] ${packageName}: pnpm install command took ${Date.now() - pnpmStart}ms`);
|
|
148479
148527
|
if (all) console.log(`[Fetcher] ${packageName}: Installation trace:\n${all}`);
|
|
148480
148528
|
const tempNodeModules = join(tempDir, "node_modules");
|
|
148481
148529
|
if (existsSync(nodeModulesPath)) await rm(nodeModulesPath, {
|
|
148482
148530
|
recursive: true,
|
|
148483
148531
|
force: true
|
|
148484
148532
|
}).catch(() => {});
|
|
148533
|
+
const renameStart = Date.now();
|
|
148485
148534
|
await rename(tempNodeModules, nodeModulesPath);
|
|
148486
|
-
console.log(`[Fetcher] ${packageName}: Dependencies installed successfully.`);
|
|
148535
|
+
console.log(`[Fetcher] ${packageName}: Dependencies installed successfully (rename took ${Date.now() - renameStart}ms, total installDependencies took ${Date.now() - start}ms).`);
|
|
148487
148536
|
} catch (err) {
|
|
148488
148537
|
console.error(`[Fetcher] ${packageName}: CRITICAL ERROR during dependency installation: ${err.message}`);
|
|
148489
148538
|
if (err.all) console.error(`[Fetcher] ${packageName}: Error details:\n${err.all}`);
|