@pipelab/plugin-netlify 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 +3 -3
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)
|
|
148258
|
-
|
|
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
|
-
|
|
148263
|
-
|
|
148264
|
-
|
|
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
|
-
|
|
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))
|
|
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))
|
|
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
|
@@ -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 { 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";
|
|
@@ -45197,7 +45197,16 @@ object({
|
|
|
45197
45197
|
pipelines: optional(array(SaveLocationValidator), [])
|
|
45198
45198
|
});
|
|
45199
45199
|
//#endregion
|
|
45200
|
+
//#region ../../node_modules/tsdown/esm-shims.js
|
|
45201
|
+
var getFilename, getDirname, __dirname;
|
|
45202
|
+
var init_esm_shims = __esmMin((() => {
|
|
45203
|
+
getFilename = () => fileURLToPath(import.meta.url);
|
|
45204
|
+
getDirname = () => path.dirname(getFilename());
|
|
45205
|
+
__dirname = /* @__PURE__ */ getDirname();
|
|
45206
|
+
}));
|
|
45207
|
+
//#endregion
|
|
45200
45208
|
//#region ../../packages/core-node/src/context.ts
|
|
45209
|
+
init_esm_shims();
|
|
45201
45210
|
const _dirname = typeof __dirname !== "undefined" ? __dirname : typeof import.meta !== "undefined" && import.meta.url ? dirname(fileURLToPath(import.meta.url)) : process.cwd();
|
|
45202
45211
|
const isDev = process.env.NODE_ENV === "development";
|
|
45203
45212
|
/**
|
|
@@ -111041,6 +111050,7 @@ var require_lib$9 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
111041
111050
|
//#endregion
|
|
111042
111051
|
//#region ../../node_modules/@npmcli/run-script/lib/set-path.js
|
|
111043
111052
|
var require_set_path = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
111053
|
+
init_esm_shims();
|
|
111044
111054
|
const { log } = require_lib$29();
|
|
111045
111055
|
const { resolve: resolve$4, dirname: dirname$2, delimiter: delimiter$1 } = __require("path");
|
|
111046
111056
|
const nodeGypPath = resolve$4(__dirname, "../lib/node-gyp-bin");
|
|
@@ -148212,11 +148222,13 @@ async function withLock(key, fn) {
|
|
|
148212
148222
|
* Centralized in core-node to avoid circular dependencies.
|
|
148213
148223
|
*/
|
|
148214
148224
|
async function fetchPackage(packageName, versionOrRange, options) {
|
|
148225
|
+
const start = Date.now();
|
|
148215
148226
|
if (isDev && projectRoot && process.env.PIPELAB_FORCE_NPM !== "true") {
|
|
148216
148227
|
if (packageName.startsWith("@pipelab/")) {
|
|
148228
|
+
const localStart = Date.now();
|
|
148217
148229
|
const local = await tryResolveMonorepoPackage(packageName);
|
|
148218
148230
|
if (local) {
|
|
148219
|
-
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)`);
|
|
148220
148232
|
return {
|
|
148221
148233
|
...local,
|
|
148222
148234
|
resolvedVersion: "workspace"
|
|
@@ -148228,6 +148240,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148228
148240
|
const baseDir = ctx.getPackagesPath(packageName);
|
|
148229
148241
|
let resolvedVersion;
|
|
148230
148242
|
console.log(`[Fetcher] Resolving ${packageName}@${versionOrRange || "latest"}...`);
|
|
148243
|
+
const resolveStart = Date.now();
|
|
148231
148244
|
try {
|
|
148232
148245
|
const cachePath = join(ctx.userDataPath, "cache", "pacote");
|
|
148233
148246
|
let packumentPromise = packumentRequests.get(packageName);
|
|
@@ -148241,22 +148254,32 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148241
148254
|
const foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
|
|
148242
148255
|
if (!foundVersion) throw new Error(`Package ${packageName}@${range} not found on npm (available tags: ${Object.keys(packument["dist-tags"] || {}).join(", ")})`);
|
|
148243
148256
|
resolvedVersion = foundVersion;
|
|
148244
|
-
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)`);
|
|
148245
148258
|
} catch (error) {
|
|
148246
|
-
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();
|
|
148247
148261
|
const fallbackVersion = await tryLocalFallback(versionOrRange, error, baseDir, packageName);
|
|
148248
|
-
if (fallbackVersion)
|
|
148249
|
-
|
|
148262
|
+
if (fallbackVersion) {
|
|
148263
|
+
resolvedVersion = fallbackVersion;
|
|
148264
|
+
console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
|
|
148265
|
+
} else throw error;
|
|
148250
148266
|
}
|
|
148251
148267
|
const cachePath = join(ctx.userDataPath, "cache", "pacote");
|
|
148252
148268
|
const packageDir = join(baseDir, resolvedVersion);
|
|
148253
|
-
|
|
148254
|
-
|
|
148255
|
-
|
|
148256
|
-
|
|
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
|
+
}
|
|
148257
148279
|
return withLock(`package:${packageName}:${resolvedVersion}`, async () => {
|
|
148258
148280
|
if (!isPackageComplete(packageDir)) {
|
|
148259
148281
|
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Downloading to ${packageDir}...`);
|
|
148282
|
+
const downloadStart = Date.now();
|
|
148260
148283
|
const tempDir = join(baseDir, `.tmp-${resolvedVersion}-${Math.random().toString(36).slice(2)}`);
|
|
148261
148284
|
await mkdir(tempDir, { recursive: true });
|
|
148262
148285
|
try {
|
|
@@ -148272,6 +148295,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148272
148295
|
if (isPackageComplete(packageDir)) console.log(`[Fetcher] Destination ${packageDir} already exists and is valid.`);
|
|
148273
148296
|
else throw err;
|
|
148274
148297
|
}
|
|
148298
|
+
console.log(`[Fetcher] ${packageName}@${resolvedVersion}: Downloaded and extracted in ${Date.now() - downloadStart}ms`);
|
|
148275
148299
|
} catch (err) {
|
|
148276
148300
|
await rm(tempDir, {
|
|
148277
148301
|
recursive: true,
|
|
@@ -148280,8 +148304,15 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
148280
148304
|
throw err;
|
|
148281
148305
|
}
|
|
148282
148306
|
}
|
|
148307
|
+
const entryStart = Date.now();
|
|
148283
148308
|
const entryPoint = await resolveEntryPoint(packageDir, packageName);
|
|
148284
|
-
|
|
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`);
|
|
148285
148316
|
return {
|
|
148286
148317
|
packageDir,
|
|
148287
148318
|
resolvedVersion,
|
|
@@ -148320,10 +148351,14 @@ async function runPnpm(cwd, options) {
|
|
|
148320
148351
|
* Installs a specific version of Node.js if not already present.
|
|
148321
148352
|
*/
|
|
148322
148353
|
async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
148354
|
+
const checkStart = Date.now();
|
|
148323
148355
|
const isWindows = process.platform === "win32";
|
|
148324
148356
|
const nodeDir = context.getThirdPartyPath("node", version);
|
|
148325
148357
|
const finalNodePath = join(nodeDir, isWindows ? "node.exe" : "bin/node");
|
|
148326
|
-
if (isNodeJSComplete(finalNodePath))
|
|
148358
|
+
if (isNodeJSComplete(finalNodePath)) {
|
|
148359
|
+
console.log(`[Environment] Node.js check took ${Date.now() - checkStart}ms (found at ${finalNodePath})`);
|
|
148360
|
+
return finalNodePath;
|
|
148361
|
+
}
|
|
148327
148362
|
return withLock(`node:${version}`, async () => {
|
|
148328
148363
|
if (isNodeJSComplete(finalNodePath)) return finalNodePath;
|
|
148329
148364
|
const arch = process.arch === "x64" ? "x64" : process.arch === "arm64" ? "arm64" : "x86";
|
|
@@ -148335,9 +148370,12 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148335
148370
|
const archivePath = join(tempDir, fileName);
|
|
148336
148371
|
sendStartupProgress(`Downloading Node.js v${version}...`);
|
|
148337
148372
|
console.log(`Downloading Node.js from ${downloadUrl}...`);
|
|
148373
|
+
const dlStart = Date.now();
|
|
148338
148374
|
await downloadFile(downloadUrl, archivePath);
|
|
148375
|
+
console.log(`[Environment] Node.js download took ${Date.now() - dlStart}ms`);
|
|
148339
148376
|
sendStartupProgress(`Extracting Node.js v${version}...`);
|
|
148340
148377
|
console.log(`Extracting Node.js to ${tempDir}...`);
|
|
148378
|
+
const extStart = Date.now();
|
|
148341
148379
|
const extractTempDir = join(tempDir, "extracted");
|
|
148342
148380
|
await mkdir(extractTempDir, { recursive: true });
|
|
148343
148381
|
if (extension === "zip") await extractZip(archivePath, extractTempDir);
|
|
@@ -148362,6 +148400,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148362
148400
|
if (isNodeJSComplete(finalNodePath)) console.log(`[Fetcher] Node.js directory already exists and is valid.`);
|
|
148363
148401
|
else throw err;
|
|
148364
148402
|
}
|
|
148403
|
+
console.log(`[Environment] Node.js extraction took ${Date.now() - extStart}ms`);
|
|
148365
148404
|
} finally {
|
|
148366
148405
|
await rm(tempNodeDir, {
|
|
148367
148406
|
recursive: true,
|
|
@@ -148372,6 +148411,7 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148372
148411
|
force: true
|
|
148373
148412
|
}).catch(() => {});
|
|
148374
148413
|
}
|
|
148414
|
+
console.log(`[Environment] Node.js set up complete in ${Date.now() - checkStart}ms`);
|
|
148375
148415
|
return finalNodePath;
|
|
148376
148416
|
});
|
|
148377
148417
|
}
|
|
@@ -148379,16 +148419,22 @@ async function ensureNodeJS(context, version = DEFAULT_NODE_VERSION) {
|
|
|
148379
148419
|
* Installs the PNPM package from npm if not already present.
|
|
148380
148420
|
*/
|
|
148381
148421
|
async function ensurePNPM(context, version = DEFAULT_PNPM_VERSION) {
|
|
148422
|
+
const checkStart = Date.now();
|
|
148382
148423
|
const pnpmPath = join(context.getPackagesPath("pnpm", version), "bin", "pnpm.cjs");
|
|
148383
|
-
if (existsSync(pnpmPath))
|
|
148424
|
+
if (existsSync(pnpmPath)) {
|
|
148425
|
+
console.log(`[Environment] PNPM check took ${Date.now() - checkStart}ms (found at ${pnpmPath})`);
|
|
148426
|
+
return pnpmPath;
|
|
148427
|
+
}
|
|
148384
148428
|
return withLock(`pnpm:${version}`, async () => {
|
|
148385
148429
|
if (existsSync(pnpmPath)) return pnpmPath;
|
|
148386
148430
|
sendStartupProgress(`Checking PNPM v${version}...`);
|
|
148387
148431
|
const { packageDir } = await fetchPackage("pnpm", version, { context });
|
|
148432
|
+
console.log(`[Environment] PNPM set up complete in ${Date.now() - checkStart}ms`);
|
|
148388
148433
|
return join(packageDir, "bin", "pnpm.cjs");
|
|
148389
148434
|
});
|
|
148390
148435
|
}
|
|
148391
148436
|
async function installDependencies(packageDir, packageName, options) {
|
|
148437
|
+
const start = Date.now();
|
|
148392
148438
|
const nodeModulesPath = join(packageDir, "node_modules");
|
|
148393
148439
|
if (isDependenciesInstalledSync(packageDir)) {
|
|
148394
148440
|
console.log(`[Fetcher] ${packageName}: Dependencies already installed, skipping.`);
|
|
@@ -148399,18 +148445,21 @@ async function installDependencies(packageDir, packageName, options) {
|
|
|
148399
148445
|
try {
|
|
148400
148446
|
await cp(join(packageDir, "package.json"), join(tempDir, "package.json"));
|
|
148401
148447
|
console.log(`[Fetcher] ${packageName}: Ensuring dependencies are installed...`);
|
|
148448
|
+
const pnpmStart = Date.now();
|
|
148402
148449
|
const { all } = await runPnpm(tempDir, {
|
|
148403
148450
|
signal: options.signal,
|
|
148404
148451
|
context: options.context
|
|
148405
148452
|
});
|
|
148453
|
+
console.log(`[Fetcher] ${packageName}: pnpm install command took ${Date.now() - pnpmStart}ms`);
|
|
148406
148454
|
if (all) console.log(`[Fetcher] ${packageName}: Installation trace:\n${all}`);
|
|
148407
148455
|
const tempNodeModules = join(tempDir, "node_modules");
|
|
148408
148456
|
if (existsSync(nodeModulesPath)) await rm(nodeModulesPath, {
|
|
148409
148457
|
recursive: true,
|
|
148410
148458
|
force: true
|
|
148411
148459
|
}).catch(() => {});
|
|
148460
|
+
const renameStart = Date.now();
|
|
148412
148461
|
await rename(tempNodeModules, nodeModulesPath);
|
|
148413
|
-
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).`);
|
|
148414
148463
|
} catch (err) {
|
|
148415
148464
|
console.error(`[Fetcher] ${packageName}: CRITICAL ERROR during dependency installation: ${err.message}`);
|
|
148416
148465
|
if (err.all) console.error(`[Fetcher] ${packageName}: Error details:\n${err.all}`);
|