@pipelab/plugin-poki 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
|
@@ -148237,11 +148237,13 @@ async function withLock(key, fn) {
|
|
|
148237
148237
|
* Centralized in core-node to avoid circular dependencies.
|
|
148238
148238
|
*/
|
|
148239
148239
|
async function fetchPackage(packageName, versionOrRange, options) {
|
|
148240
|
+
const start = Date.now();
|
|
148240
148241
|
if (isDev && projectRoot && process.env.PIPELAB_FORCE_NPM !== "true") {
|
|
148241
148242
|
if (packageName.startsWith("@pipelab/")) {
|
|
148243
|
+
const localStart = Date.now();
|
|
148242
148244
|
const local = await tryResolveMonorepoPackage(packageName);
|
|
148243
148245
|
if (local) {
|
|
148244
|
-
console.log(`[Fetcher] ${packageName}: Resolved to local source at ${local.packageDir}`);
|
|
148246
|
+
console.log(`[Fetcher] ${packageName}: Resolved to local source at ${local.packageDir} (${Date.now() - localStart}ms)`);
|
|
148245
148247
|
return {
|
|
148246
148248
|
...local,
|
|
148247
148249
|
resolvedVersion: "workspace"
|
|
@@ -148253,6 +148255,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148253
148255
|
const baseDir = ctx.getPackagesPath(packageName);
|
|
148254
148256
|
let resolvedVersion;
|
|
148255
148257
|
console.log(`[Fetcher] Resolving ${packageName}@${versionOrRange || "latest"}...`);
|
|
148258
|
+
const resolveStart = Date.now();
|
|
148256
148259
|
try {
|
|
148257
148260
|
const cachePath = (0, node_path.join)(ctx.userDataPath, "cache", "pacote");
|
|
148258
148261
|
let packumentPromise = packumentRequests.get(packageName);
|
|
@@ -148266,22 +148269,32 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148266
148269
|
const foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
|
|
148267
148270
|
if (!foundVersion) throw new Error(`Package ${packageName}@${range} not found on npm (available tags: ${Object.keys(packument["dist-tags"] || {}).join(", ")})`);
|
|
148268
148271
|
resolvedVersion = foundVersion;
|
|
148269
|
-
console.log(`[Fetcher] ${packageName}: Resolved to v${resolvedVersion} via npm`);
|
|
148272
|
+
console.log(`[Fetcher] ${packageName}: Resolved to v${resolvedVersion} via npm (${Date.now() - resolveStart}ms)`);
|
|
148270
148273
|
} catch (error) {
|
|
148271
|
-
console.warn(`[Fetcher] ${packageName}: remote resolution failed, trying local fallback...`);
|
|
148274
|
+
console.warn(`[Fetcher] ${packageName}: remote resolution failed (${Date.now() - resolveStart}ms), trying local fallback...`);
|
|
148275
|
+
const fallbackStart = Date.now();
|
|
148272
148276
|
const fallbackVersion = await tryLocalFallback(versionOrRange, error, baseDir, packageName);
|
|
148273
|
-
if (fallbackVersion)
|
|
148274
|
-
|
|
148277
|
+
if (fallbackVersion) {
|
|
148278
|
+
resolvedVersion = fallbackVersion;
|
|
148279
|
+
console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
|
|
148280
|
+
} else throw error;
|
|
148275
148281
|
}
|
|
148276
148282
|
const cachePath = (0, node_path.join)(ctx.userDataPath, "cache", "pacote");
|
|
148277
148283
|
const packageDir = (0, node_path.join)(baseDir, resolvedVersion);
|
|
148278
|
-
|
|
148279
|
-
|
|
148280
|
-
|
|
148281
|
-
|
|
148284
|
+
const checkStart = Date.now();
|
|
148285
|
+
const isInstalled = options?.installDeps ? isPackageComplete(packageDir) && isDependenciesInstalledSync(packageDir) : isPackageComplete(packageDir);
|
|
148286
|
+
const checkDuration = Date.now() - checkStart;
|
|
148287
|
+
if (isInstalled) {
|
|
148288
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Already installed (check took ${checkDuration}ms, fetchPackage took ${Date.now() - start}ms)`);
|
|
148289
|
+
return {
|
|
148290
|
+
packageDir,
|
|
148291
|
+
resolvedVersion
|
|
148292
|
+
};
|
|
148293
|
+
}
|
|
148282
148294
|
return withLock(`package:${packageName}:${resolvedVersion}`, async () => {
|
|
148283
148295
|
if (!isPackageComplete(packageDir)) {
|
|
148284
148296
|
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Downloading to ${packageDir}...`);
|
|
148297
|
+
const downloadStart = Date.now();
|
|
148285
148298
|
const tempDir = (0, node_path.join)(baseDir, `.tmp-${resolvedVersion}-${Math.random().toString(36).slice(2)}`);
|
|
148286
148299
|
await (0, node_fs_promises.mkdir)(tempDir, { recursive: true });
|
|
148287
148300
|
try {
|
|
@@ -148297,6 +148310,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148297
148310
|
if (isPackageComplete(packageDir)) console.log(`[Fetcher] Destination ${packageDir} already exists and is valid.`);
|
|
148298
148311
|
else throw err;
|
|
148299
148312
|
}
|
|
148313
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Downloaded and extracted in ${Date.now() - downloadStart}ms`);
|
|
148300
148314
|
} catch (err) {
|
|
148301
148315
|
await (0, node_fs_promises.rm)(tempDir, {
|
|
148302
148316
|
recursive: true,
|
|
@@ -148305,8 +148319,15 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148305
148319
|
throw err;
|
|
148306
148320
|
}
|
|
148307
148321
|
}
|
|
148322
|
+
const entryStart = Date.now();
|
|
148308
148323
|
const entryPoint = await resolveEntryPoint(packageDir, packageName);
|
|
148309
|
-
|
|
148324
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Resolved entry point in ${Date.now() - entryStart}ms`);
|
|
148325
|
+
if (options?.installDeps) {
|
|
148326
|
+
const depsStart = Date.now();
|
|
148327
|
+
await installDependencies(packageDir, packageName, options);
|
|
148328
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Installed dependencies in ${Date.now() - depsStart}ms`);
|
|
148329
|
+
}
|
|
148330
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: FetchPackage complete in ${Date.now() - start}ms`);
|
|
148310
148331
|
return {
|
|
148311
148332
|
packageDir,
|
|
148312
148333
|
resolvedVersion,
|
|
@@ -148345,10 +148366,14 @@ async function runPnpm(cwd, options) {
|
|
|
148345
148366
|
* Installs a specific version of Node.js if not already present.
|
|
148346
148367
|
*/
|
|
148347
148368
|
async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
148369
|
+
const checkStart = Date.now();
|
|
148348
148370
|
const isWindows = process.platform === "win32";
|
|
148349
148371
|
const nodeDir = context.getThirdPartyPath("node", version);
|
|
148350
148372
|
const finalNodePath = (0, node_path.join)(nodeDir, isWindows ? "node.exe" : "bin/node");
|
|
148351
|
-
if (isNodeJSComplete(finalNodePath))
|
|
148373
|
+
if (isNodeJSComplete(finalNodePath)) {
|
|
148374
|
+
console.log(`[Environment] Node.js check took ${Date.now() - checkStart}ms (found at ${finalNodePath})`);
|
|
148375
|
+
return finalNodePath;
|
|
148376
|
+
}
|
|
148352
148377
|
return withLock(`node:${version}`, async () => {
|
|
148353
148378
|
if (isNodeJSComplete(finalNodePath)) return finalNodePath;
|
|
148354
148379
|
const arch = process.arch === "x64" ? "x64" : process.arch === "arm64" ? "arm64" : "x86";
|
|
@@ -148360,9 +148385,12 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148360
148385
|
const archivePath = (0, node_path.join)(tempDir, fileName);
|
|
148361
148386
|
sendStartupProgress(`Downloading Node.js v${version}...`);
|
|
148362
148387
|
console.log(`Downloading Node.js from ${downloadUrl}...`);
|
|
148388
|
+
const dlStart = Date.now();
|
|
148363
148389
|
await downloadFile(downloadUrl, archivePath);
|
|
148390
|
+
console.log(`[Environment] Node.js download took ${Date.now() - dlStart}ms`);
|
|
148364
148391
|
sendStartupProgress(`Extracting Node.js v${version}...`);
|
|
148365
148392
|
console.log(`Extracting Node.js to ${tempDir}...`);
|
|
148393
|
+
const extStart = Date.now();
|
|
148366
148394
|
const extractTempDir = (0, node_path.join)(tempDir, "extracted");
|
|
148367
148395
|
await (0, node_fs_promises.mkdir)(extractTempDir, { recursive: true });
|
|
148368
148396
|
if (extension === "zip") await extractZip(archivePath, extractTempDir);
|
|
@@ -148387,6 +148415,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148387
148415
|
if (isNodeJSComplete(finalNodePath)) console.log(`[Fetcher] Node.js directory already exists and is valid.`);
|
|
148388
148416
|
else throw err;
|
|
148389
148417
|
}
|
|
148418
|
+
console.log(`[Environment] Node.js extraction took ${Date.now() - extStart}ms`);
|
|
148390
148419
|
} finally {
|
|
148391
148420
|
await (0, node_fs_promises.rm)(tempNodeDir, {
|
|
148392
148421
|
recursive: true,
|
|
@@ -148397,6 +148426,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148397
148426
|
force: true
|
|
148398
148427
|
}).catch(() => {});
|
|
148399
148428
|
}
|
|
148429
|
+
console.log(`[Environment] Node.js set up complete in ${Date.now() - checkStart}ms`);
|
|
148400
148430
|
return finalNodePath;
|
|
148401
148431
|
});
|
|
148402
148432
|
}
|
|
@@ -148404,16 +148434,22 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148404
148434
|
* Installs the PNPM package from npm if not already present.
|
|
148405
148435
|
*/
|
|
148406
148436
|
async function ensurePNPM(context, version = DEFAULT_PNPM_VERSION) {
|
|
148437
|
+
const checkStart = Date.now();
|
|
148407
148438
|
const pnpmPath = (0, node_path.join)(context.getPackagesPath("pnpm", version), "bin", "pnpm.cjs");
|
|
148408
|
-
if ((0, node_fs.existsSync)(pnpmPath))
|
|
148439
|
+
if ((0, node_fs.existsSync)(pnpmPath)) {
|
|
148440
|
+
console.log(`[Environment] PNPM check took ${Date.now() - checkStart}ms (found at ${pnpmPath})`);
|
|
148441
|
+
return pnpmPath;
|
|
148442
|
+
}
|
|
148409
148443
|
return withLock(`pnpm:${version}`, async () => {
|
|
148410
148444
|
if ((0, node_fs.existsSync)(pnpmPath)) return pnpmPath;
|
|
148411
148445
|
sendStartupProgress(`Checking PNPM v${version}...`);
|
|
148412
148446
|
const { packageDir } = await fetchPackage("pnpm", version, { context });
|
|
148447
|
+
console.log(`[Environment] PNPM set up complete in ${Date.now() - checkStart}ms`);
|
|
148413
148448
|
return (0, node_path.join)(packageDir, "bin", "pnpm.cjs");
|
|
148414
148449
|
});
|
|
148415
148450
|
}
|
|
148416
148451
|
async function installDependencies(packageDir, packageName, options) {
|
|
148452
|
+
const start = Date.now();
|
|
148417
148453
|
const nodeModulesPath = (0, node_path.join)(packageDir, "node_modules");
|
|
148418
148454
|
if (isDependenciesInstalledSync(packageDir)) {
|
|
148419
148455
|
console.log(`[Fetcher] ${packageName}: Dependencies already installed, skipping.`);
|
|
@@ -148424,18 +148460,21 @@ async function installDependencies(packageDir, packageName, options) {
|
|
|
148424
148460
|
try {
|
|
148425
148461
|
await (0, node_fs_promises.cp)((0, node_path.join)(packageDir, "package.json"), (0, node_path.join)(tempDir, "package.json"));
|
|
148426
148462
|
console.log(`[Fetcher] ${packageName}: Ensuring dependencies are installed...`);
|
|
148463
|
+
const pnpmStart = Date.now();
|
|
148427
148464
|
const { all } = await runPnpm(tempDir, {
|
|
148428
148465
|
signal: options.signal,
|
|
148429
148466
|
context: options.context
|
|
148430
148467
|
});
|
|
148468
|
+
console.log(`[Fetcher] ${packageName}: pnpm install command took ${Date.now() - pnpmStart}ms`);
|
|
148431
148469
|
if (all) console.log(`[Fetcher] ${packageName}: Installation trace:\n${all}`);
|
|
148432
148470
|
const tempNodeModules = (0, node_path.join)(tempDir, "node_modules");
|
|
148433
148471
|
if ((0, node_fs.existsSync)(nodeModulesPath)) await (0, node_fs_promises.rm)(nodeModulesPath, {
|
|
148434
148472
|
recursive: true,
|
|
148435
148473
|
force: true
|
|
148436
148474
|
}).catch(() => {});
|
|
148475
|
+
const renameStart = Date.now();
|
|
148437
148476
|
await (0, node_fs_promises.rename)(tempNodeModules, nodeModulesPath);
|
|
148438
|
-
console.log(`[Fetcher] ${packageName}: Dependencies installed successfully.`);
|
|
148477
|
+
console.log(`[Fetcher] ${packageName}: Dependencies installed successfully (rename took ${Date.now() - renameStart}ms, total installDependencies took ${Date.now() - start}ms).`);
|
|
148439
148478
|
} catch (err) {
|
|
148440
148479
|
console.error(`[Fetcher] ${packageName}: CRITICAL ERROR during dependency installation: ${err.message}`);
|
|
148441
148480
|
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, { delimiter, dirname, join } from "node:path";
|
|
6
|
-
import { constants, tmpdir } from "node:os";
|
|
7
6
|
import { fileURLToPath } from "node:url";
|
|
7
|
+
import { constants, 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";
|
|
@@ -45183,7 +45183,16 @@ object({
|
|
|
45183
45183
|
pipelines: optional(array(SaveLocationValidator), [])
|
|
45184
45184
|
});
|
|
45185
45185
|
//#endregion
|
|
45186
|
+
//#region ../../node_modules/tsdown/esm-shims.js
|
|
45187
|
+
var getFilename, getDirname, __dirname;
|
|
45188
|
+
var init_esm_shims = __esmMin((() => {
|
|
45189
|
+
getFilename = () => fileURLToPath(import.meta.url);
|
|
45190
|
+
getDirname = () => path.dirname(getFilename());
|
|
45191
|
+
__dirname = /* @__PURE__ */ getDirname();
|
|
45192
|
+
}));
|
|
45193
|
+
//#endregion
|
|
45186
45194
|
//#region ../../packages/core-node/src/context.ts
|
|
45195
|
+
init_esm_shims();
|
|
45187
45196
|
const _dirname = typeof __dirname !== "undefined" ? __dirname : typeof import.meta !== "undefined" && import.meta.url ? dirname(fileURLToPath(import.meta.url)) : process.cwd();
|
|
45188
45197
|
const isDev = process.env.NODE_ENV === "development";
|
|
45189
45198
|
/**
|
|
@@ -111057,6 +111066,7 @@ var require_lib$9 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
111057
111066
|
//#endregion
|
|
111058
111067
|
//#region ../../node_modules/@npmcli/run-script/lib/set-path.js
|
|
111059
111068
|
var require_set_path = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
111069
|
+
init_esm_shims();
|
|
111060
111070
|
const { log } = require_lib$29();
|
|
111061
111071
|
const { resolve: resolve$4, dirname: dirname$2, delimiter: delimiter$1 } = __require("path");
|
|
111062
111072
|
const nodeGypPath = resolve$4(__dirname, "../lib/node-gyp-bin");
|
|
@@ -148228,11 +148238,13 @@ async function withLock(key, fn) {
|
|
|
148228
148238
|
* Centralized in core-node to avoid circular dependencies.
|
|
148229
148239
|
*/
|
|
148230
148240
|
async function fetchPackage(packageName, versionOrRange, options) {
|
|
148241
|
+
const start = Date.now();
|
|
148231
148242
|
if (isDev && projectRoot && process.env.PIPELAB_FORCE_NPM !== "true") {
|
|
148232
148243
|
if (packageName.startsWith("@pipelab/")) {
|
|
148244
|
+
const localStart = Date.now();
|
|
148233
148245
|
const local = await tryResolveMonorepoPackage(packageName);
|
|
148234
148246
|
if (local) {
|
|
148235
|
-
console.log(`[Fetcher] ${packageName}: Resolved to local source at ${local.packageDir}`);
|
|
148247
|
+
console.log(`[Fetcher] ${packageName}: Resolved to local source at ${local.packageDir} (${Date.now() - localStart}ms)`);
|
|
148236
148248
|
return {
|
|
148237
148249
|
...local,
|
|
148238
148250
|
resolvedVersion: "workspace"
|
|
@@ -148244,6 +148256,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148244
148256
|
const baseDir = ctx.getPackagesPath(packageName);
|
|
148245
148257
|
let resolvedVersion;
|
|
148246
148258
|
console.log(`[Fetcher] Resolving ${packageName}@${versionOrRange || "latest"}...`);
|
|
148259
|
+
const resolveStart = Date.now();
|
|
148247
148260
|
try {
|
|
148248
148261
|
const cachePath = join(ctx.userDataPath, "cache", "pacote");
|
|
148249
148262
|
let packumentPromise = packumentRequests.get(packageName);
|
|
@@ -148257,22 +148270,32 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148257
148270
|
const foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
|
|
148258
148271
|
if (!foundVersion) throw new Error(`Package ${packageName}@${range} not found on npm (available tags: ${Object.keys(packument["dist-tags"] || {}).join(", ")})`);
|
|
148259
148272
|
resolvedVersion = foundVersion;
|
|
148260
|
-
console.log(`[Fetcher] ${packageName}: Resolved to v${resolvedVersion} via npm`);
|
|
148273
|
+
console.log(`[Fetcher] ${packageName}: Resolved to v${resolvedVersion} via npm (${Date.now() - resolveStart}ms)`);
|
|
148261
148274
|
} catch (error) {
|
|
148262
|
-
console.warn(`[Fetcher] ${packageName}: remote resolution failed, trying local fallback...`);
|
|
148275
|
+
console.warn(`[Fetcher] ${packageName}: remote resolution failed (${Date.now() - resolveStart}ms), trying local fallback...`);
|
|
148276
|
+
const fallbackStart = Date.now();
|
|
148263
148277
|
const fallbackVersion = await tryLocalFallback(versionOrRange, error, baseDir, packageName);
|
|
148264
|
-
if (fallbackVersion)
|
|
148265
|
-
|
|
148278
|
+
if (fallbackVersion) {
|
|
148279
|
+
resolvedVersion = fallbackVersion;
|
|
148280
|
+
console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
|
|
148281
|
+
} else throw error;
|
|
148266
148282
|
}
|
|
148267
148283
|
const cachePath = join(ctx.userDataPath, "cache", "pacote");
|
|
148268
148284
|
const packageDir = join(baseDir, resolvedVersion);
|
|
148269
|
-
|
|
148270
|
-
|
|
148271
|
-
|
|
148272
|
-
|
|
148285
|
+
const checkStart = Date.now();
|
|
148286
|
+
const isInstalled = options?.installDeps ? isPackageComplete(packageDir) && isDependenciesInstalledSync(packageDir) : isPackageComplete(packageDir);
|
|
148287
|
+
const checkDuration = Date.now() - checkStart;
|
|
148288
|
+
if (isInstalled) {
|
|
148289
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Already installed (check took ${checkDuration}ms, fetchPackage took ${Date.now() - start}ms)`);
|
|
148290
|
+
return {
|
|
148291
|
+
packageDir,
|
|
148292
|
+
resolvedVersion
|
|
148293
|
+
};
|
|
148294
|
+
}
|
|
148273
148295
|
return withLock(`package:${packageName}:${resolvedVersion}`, async () => {
|
|
148274
148296
|
if (!isPackageComplete(packageDir)) {
|
|
148275
148297
|
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Downloading to ${packageDir}...`);
|
|
148298
|
+
const downloadStart = Date.now();
|
|
148276
148299
|
const tempDir = join(baseDir, `.tmp-${resolvedVersion}-${Math.random().toString(36).slice(2)}`);
|
|
148277
148300
|
await mkdir(tempDir, { recursive: true });
|
|
148278
148301
|
try {
|
|
@@ -148288,6 +148311,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148288
148311
|
if (isPackageComplete(packageDir)) console.log(`[Fetcher] Destination ${packageDir} already exists and is valid.`);
|
|
148289
148312
|
else throw err;
|
|
148290
148313
|
}
|
|
148314
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Downloaded and extracted in ${Date.now() - downloadStart}ms`);
|
|
148291
148315
|
} catch (err) {
|
|
148292
148316
|
await rm(tempDir, {
|
|
148293
148317
|
recursive: true,
|
|
@@ -148296,8 +148320,15 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148296
148320
|
throw err;
|
|
148297
148321
|
}
|
|
148298
148322
|
}
|
|
148323
|
+
const entryStart = Date.now();
|
|
148299
148324
|
const entryPoint = await resolveEntryPoint(packageDir, packageName);
|
|
148300
|
-
|
|
148325
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Resolved entry point in ${Date.now() - entryStart}ms`);
|
|
148326
|
+
if (options?.installDeps) {
|
|
148327
|
+
const depsStart = Date.now();
|
|
148328
|
+
await installDependencies(packageDir, packageName, options);
|
|
148329
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Installed dependencies in ${Date.now() - depsStart}ms`);
|
|
148330
|
+
}
|
|
148331
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: FetchPackage complete in ${Date.now() - start}ms`);
|
|
148301
148332
|
return {
|
|
148302
148333
|
packageDir,
|
|
148303
148334
|
resolvedVersion,
|
|
@@ -148336,10 +148367,14 @@ async function runPnpm(cwd, options) {
|
|
|
148336
148367
|
* Installs a specific version of Node.js if not already present.
|
|
148337
148368
|
*/
|
|
148338
148369
|
async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
148370
|
+
const checkStart = Date.now();
|
|
148339
148371
|
const isWindows = process.platform === "win32";
|
|
148340
148372
|
const nodeDir = context.getThirdPartyPath("node", version);
|
|
148341
148373
|
const finalNodePath = join(nodeDir, isWindows ? "node.exe" : "bin/node");
|
|
148342
|
-
if (isNodeJSComplete(finalNodePath))
|
|
148374
|
+
if (isNodeJSComplete(finalNodePath)) {
|
|
148375
|
+
console.log(`[Environment] Node.js check took ${Date.now() - checkStart}ms (found at ${finalNodePath})`);
|
|
148376
|
+
return finalNodePath;
|
|
148377
|
+
}
|
|
148343
148378
|
return withLock(`node:${version}`, async () => {
|
|
148344
148379
|
if (isNodeJSComplete(finalNodePath)) return finalNodePath;
|
|
148345
148380
|
const arch = process.arch === "x64" ? "x64" : process.arch === "arm64" ? "arm64" : "x86";
|
|
@@ -148351,9 +148386,12 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148351
148386
|
const archivePath = join(tempDir, fileName);
|
|
148352
148387
|
sendStartupProgress(`Downloading Node.js v${version}...`);
|
|
148353
148388
|
console.log(`Downloading Node.js from ${downloadUrl}...`);
|
|
148389
|
+
const dlStart = Date.now();
|
|
148354
148390
|
await downloadFile(downloadUrl, archivePath);
|
|
148391
|
+
console.log(`[Environment] Node.js download took ${Date.now() - dlStart}ms`);
|
|
148355
148392
|
sendStartupProgress(`Extracting Node.js v${version}...`);
|
|
148356
148393
|
console.log(`Extracting Node.js to ${tempDir}...`);
|
|
148394
|
+
const extStart = Date.now();
|
|
148357
148395
|
const extractTempDir = join(tempDir, "extracted");
|
|
148358
148396
|
await mkdir(extractTempDir, { recursive: true });
|
|
148359
148397
|
if (extension === "zip") await extractZip(archivePath, extractTempDir);
|
|
@@ -148378,6 +148416,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148378
148416
|
if (isNodeJSComplete(finalNodePath)) console.log(`[Fetcher] Node.js directory already exists and is valid.`);
|
|
148379
148417
|
else throw err;
|
|
148380
148418
|
}
|
|
148419
|
+
console.log(`[Environment] Node.js extraction took ${Date.now() - extStart}ms`);
|
|
148381
148420
|
} finally {
|
|
148382
148421
|
await rm(tempNodeDir, {
|
|
148383
148422
|
recursive: true,
|
|
@@ -148388,6 +148427,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148388
148427
|
force: true
|
|
148389
148428
|
}).catch(() => {});
|
|
148390
148429
|
}
|
|
148430
|
+
console.log(`[Environment] Node.js set up complete in ${Date.now() - checkStart}ms`);
|
|
148391
148431
|
return finalNodePath;
|
|
148392
148432
|
});
|
|
148393
148433
|
}
|
|
@@ -148395,16 +148435,22 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148395
148435
|
* Installs the PNPM package from npm if not already present.
|
|
148396
148436
|
*/
|
|
148397
148437
|
async function ensurePNPM(context, version = DEFAULT_PNPM_VERSION) {
|
|
148438
|
+
const checkStart = Date.now();
|
|
148398
148439
|
const pnpmPath = join(context.getPackagesPath("pnpm", version), "bin", "pnpm.cjs");
|
|
148399
|
-
if (existsSync(pnpmPath))
|
|
148440
|
+
if (existsSync(pnpmPath)) {
|
|
148441
|
+
console.log(`[Environment] PNPM check took ${Date.now() - checkStart}ms (found at ${pnpmPath})`);
|
|
148442
|
+
return pnpmPath;
|
|
148443
|
+
}
|
|
148400
148444
|
return withLock(`pnpm:${version}`, async () => {
|
|
148401
148445
|
if (existsSync(pnpmPath)) return pnpmPath;
|
|
148402
148446
|
sendStartupProgress(`Checking PNPM v${version}...`);
|
|
148403
148447
|
const { packageDir } = await fetchPackage("pnpm", version, { context });
|
|
148448
|
+
console.log(`[Environment] PNPM set up complete in ${Date.now() - checkStart}ms`);
|
|
148404
148449
|
return join(packageDir, "bin", "pnpm.cjs");
|
|
148405
148450
|
});
|
|
148406
148451
|
}
|
|
148407
148452
|
async function installDependencies(packageDir, packageName, options) {
|
|
148453
|
+
const start = Date.now();
|
|
148408
148454
|
const nodeModulesPath = join(packageDir, "node_modules");
|
|
148409
148455
|
if (isDependenciesInstalledSync(packageDir)) {
|
|
148410
148456
|
console.log(`[Fetcher] ${packageName}: Dependencies already installed, skipping.`);
|
|
@@ -148415,18 +148461,21 @@ async function installDependencies(packageDir, packageName, options) {
|
|
|
148415
148461
|
try {
|
|
148416
148462
|
await cp(join(packageDir, "package.json"), join(tempDir, "package.json"));
|
|
148417
148463
|
console.log(`[Fetcher] ${packageName}: Ensuring dependencies are installed...`);
|
|
148464
|
+
const pnpmStart = Date.now();
|
|
148418
148465
|
const { all } = await runPnpm(tempDir, {
|
|
148419
148466
|
signal: options.signal,
|
|
148420
148467
|
context: options.context
|
|
148421
148468
|
});
|
|
148469
|
+
console.log(`[Fetcher] ${packageName}: pnpm install command took ${Date.now() - pnpmStart}ms`);
|
|
148422
148470
|
if (all) console.log(`[Fetcher] ${packageName}: Installation trace:\n${all}`);
|
|
148423
148471
|
const tempNodeModules = join(tempDir, "node_modules");
|
|
148424
148472
|
if (existsSync(nodeModulesPath)) await rm(nodeModulesPath, {
|
|
148425
148473
|
recursive: true,
|
|
148426
148474
|
force: true
|
|
148427
148475
|
}).catch(() => {});
|
|
148476
|
+
const renameStart = Date.now();
|
|
148428
148477
|
await rename(tempNodeModules, nodeModulesPath);
|
|
148429
|
-
console.log(`[Fetcher] ${packageName}: Dependencies installed successfully.`);
|
|
148478
|
+
console.log(`[Fetcher] ${packageName}: Dependencies installed successfully (rename took ${Date.now() - renameStart}ms, total installDependencies took ${Date.now() - start}ms).`);
|
|
148430
148479
|
} catch (err) {
|
|
148431
148480
|
console.error(`[Fetcher] ${packageName}: CRITICAL ERROR during dependency installation: ${err.message}`);
|
|
148432
148481
|
if (err.all) console.error(`[Fetcher] ${packageName}: Error details:\n${err.all}`);
|