@pipelab/plugin-poki 1.0.0-beta.27 → 1.0.0-beta.31
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 +42 -21
- package/dist/index.mjs +42 -21
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -5
package/dist/index.cjs
CHANGED
|
@@ -89525,7 +89525,7 @@ const runWithLiveLogs = async (command, args, execaOptions, log, hooks, abortSig
|
|
|
89525
89525
|
TERM: "xterm-256color",
|
|
89526
89526
|
FORCE_STDERR_LOGGING: "1"
|
|
89527
89527
|
},
|
|
89528
|
-
cancelSignal: abortSignal
|
|
89528
|
+
cancelSignal: abortSignal ?? execaOptions.cancelSignal
|
|
89529
89529
|
});
|
|
89530
89530
|
hooks?.onCreated?.(subprocess);
|
|
89531
89531
|
subprocess.stdout?.on("data", (data) => {
|
|
@@ -151231,6 +151231,17 @@ async function isOnline() {
|
|
|
151231
151231
|
lastCheckTime = now;
|
|
151232
151232
|
return isOnlineCached;
|
|
151233
151233
|
}
|
|
151234
|
+
function allowPrereleaseInRange(rangeStr) {
|
|
151235
|
+
try {
|
|
151236
|
+
return new import_semver.default.Range(rangeStr).set.map((conj) => conj.map((c) => {
|
|
151237
|
+
const v = c.semver;
|
|
151238
|
+
if (v.prerelease && v.prerelease.length) return c.operator + v.format();
|
|
151239
|
+
return c.operator + v.major + "." + v.minor + "." + v.patch + "-0";
|
|
151240
|
+
}).join(" ")).join(" || ");
|
|
151241
|
+
} catch {
|
|
151242
|
+
return rangeStr;
|
|
151243
|
+
}
|
|
151244
|
+
}
|
|
151234
151245
|
/**
|
|
151235
151246
|
* Robust utility to fetch, cache, and resolve an NPM package.
|
|
151236
151247
|
* Centralized in core-node to avoid circular dependencies.
|
|
@@ -151253,6 +151264,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
151253
151264
|
const ctx = options.context;
|
|
151254
151265
|
const baseDir = ctx.getPackagesPath(packageName);
|
|
151255
151266
|
let resolvedVersion;
|
|
151267
|
+
const includePrerelease = !!(ctx.releaseTag && ctx.releaseTag !== "latest");
|
|
151256
151268
|
let resolvedVersionOrRange = versionOrRange;
|
|
151257
151269
|
if (resolvedVersionOrRange === "local") resolvedVersionOrRange = "latest";
|
|
151258
151270
|
console.log(`[Fetcher] Resolving ${packageName}@${resolvedVersionOrRange || "latest"}...`);
|
|
@@ -151260,7 +151272,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
151260
151272
|
if (!await isOnline()) {
|
|
151261
151273
|
console.warn(`[Fetcher] ${packageName}: offline mode detected (${Date.now() - resolveStart}ms), trying local fallback...`);
|
|
151262
151274
|
const fallbackStart = Date.now();
|
|
151263
|
-
const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, /* @__PURE__ */ new Error("Offline"), baseDir, packageName);
|
|
151275
|
+
const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, /* @__PURE__ */ new Error("Offline"), baseDir, packageName, includePrerelease);
|
|
151264
151276
|
if (fallbackVersion) {
|
|
151265
151277
|
resolvedVersion = fallbackVersion;
|
|
151266
151278
|
console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
|
|
@@ -151275,7 +151287,27 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
151275
151287
|
const packument = await packumentPromise;
|
|
151276
151288
|
const versions = Object.keys(packument.versions);
|
|
151277
151289
|
const range = resolvedVersionOrRange || "latest";
|
|
151278
|
-
let foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
|
|
151290
|
+
let foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range, { includePrerelease });
|
|
151291
|
+
if (!foundVersion && ctx.releaseTag && ctx.releaseTag !== "latest") {
|
|
151292
|
+
const releaseTagVersion = packument["dist-tags"]?.[ctx.releaseTag];
|
|
151293
|
+
if (releaseTagVersion && import_semver.default.valid(releaseTagVersion)) {
|
|
151294
|
+
const rewrittenRangeForCheck = allowPrereleaseInRange(range);
|
|
151295
|
+
if (import_semver.default.satisfies(releaseTagVersion, rewrittenRangeForCheck, { includePrerelease: true })) {
|
|
151296
|
+
console.log(`[Fetcher] Using release tag "${ctx.releaseTag}" (${releaseTagVersion}) for ${packageName}@${range} because it satisfies the range`);
|
|
151297
|
+
foundVersion = releaseTagVersion;
|
|
151298
|
+
}
|
|
151299
|
+
}
|
|
151300
|
+
}
|
|
151301
|
+
if (!foundVersion && includePrerelease) {
|
|
151302
|
+
const rewrittenRange = allowPrereleaseInRange(range);
|
|
151303
|
+
if (rewrittenRange !== range) {
|
|
151304
|
+
const matched = import_semver.default.maxSatisfying(versions, rewrittenRange, { includePrerelease });
|
|
151305
|
+
if (matched) {
|
|
151306
|
+
console.log(`[Fetcher] Resolved ${packageName}@${range} to ${matched} via rewritten range ${rewrittenRange}`);
|
|
151307
|
+
foundVersion = matched;
|
|
151308
|
+
}
|
|
151309
|
+
}
|
|
151310
|
+
}
|
|
151279
151311
|
if (range === "latest" && ctx.releaseTag && ctx.releaseTag !== "latest") {
|
|
151280
151312
|
const releaseTagVersion = packument["dist-tags"]?.[ctx.releaseTag];
|
|
151281
151313
|
if (releaseTagVersion && import_semver.default.valid(releaseTagVersion)) {
|
|
@@ -151291,7 +151323,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
151291
151323
|
} catch (error) {
|
|
151292
151324
|
console.warn(`[Fetcher] ${packageName}: remote resolution failed (${Date.now() - resolveStart}ms), trying local fallback...`);
|
|
151293
151325
|
const fallbackStart = Date.now();
|
|
151294
|
-
const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, error, baseDir, packageName);
|
|
151326
|
+
const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, error, baseDir, packageName, includePrerelease);
|
|
151295
151327
|
if (fallbackVersion) {
|
|
151296
151328
|
resolvedVersion = fallbackVersion;
|
|
151297
151329
|
console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
|
|
@@ -151473,35 +151505,24 @@ async function installDependencies(packageDir, packageName, options) {
|
|
|
151473
151505
|
console.log(`[Fetcher] ${packageName}: Dependencies already installed, skipping.`);
|
|
151474
151506
|
return;
|
|
151475
151507
|
}
|
|
151476
|
-
const tempDir = `${packageDir}.tmp-deps-${Math.random().toString(36).slice(2)}`;
|
|
151477
|
-
await (0, node_fs_promises.mkdir)(tempDir, { recursive: true });
|
|
151478
151508
|
try {
|
|
151479
|
-
await (0, node_fs_promises.cp)((0, node_path.join)(packageDir, "package.json"), (0, node_path.join)(tempDir, "package.json"));
|
|
151480
151509
|
console.log(`[Fetcher] ${packageName}: Ensuring dependencies are installed...`);
|
|
151481
151510
|
const pnpmStart = Date.now();
|
|
151482
|
-
const { all } = await runPnpm(
|
|
151511
|
+
const { all } = await runPnpm(packageDir, {
|
|
151483
151512
|
signal: options.signal,
|
|
151484
151513
|
context: options.context
|
|
151485
151514
|
});
|
|
151486
151515
|
console.log(`[Fetcher] ${packageName}: pnpm install command took ${Date.now() - pnpmStart}ms`);
|
|
151487
151516
|
if (all) console.log(`[Fetcher] ${packageName}: Installation trace:\n${all}`);
|
|
151488
|
-
|
|
151489
|
-
if ((0, node_fs.existsSync)(nodeModulesPath)) await (0, node_fs_promises.rm)(nodeModulesPath, {
|
|
151490
|
-
recursive: true,
|
|
151491
|
-
force: true
|
|
151492
|
-
}).catch(() => {});
|
|
151493
|
-
const renameStart = Date.now();
|
|
151494
|
-
await (0, node_fs_promises.rename)(tempNodeModules, nodeModulesPath);
|
|
151495
|
-
console.log(`[Fetcher] ${packageName}: Dependencies installed successfully (rename took ${Date.now() - renameStart}ms, total installDependencies took ${Date.now() - start}ms).`);
|
|
151517
|
+
console.log(`[Fetcher] ${packageName}: Dependencies installed successfully (total installDependencies took ${Date.now() - start}ms).`);
|
|
151496
151518
|
} catch (err) {
|
|
151497
151519
|
console.error(`[Fetcher] ${packageName}: CRITICAL ERROR during dependency installation: ${err.message}`);
|
|
151498
151520
|
if (err.all) console.error(`[Fetcher] ${packageName}: Error details:\n${err.all}`);
|
|
151499
|
-
|
|
151500
|
-
} finally {
|
|
151501
|
-
await (0, node_fs_promises.rm)(tempDir, {
|
|
151521
|
+
await (0, node_fs_promises.rm)(nodeModulesPath, {
|
|
151502
151522
|
recursive: true,
|
|
151503
151523
|
force: true
|
|
151504
151524
|
}).catch(() => {});
|
|
151525
|
+
throw new Error(`Failed to install dependencies for ${packageName}. See logs for details.`);
|
|
151505
151526
|
}
|
|
151506
151527
|
}
|
|
151507
151528
|
/**
|
|
@@ -151557,7 +151578,7 @@ async function crawlMonorepoPackages() {
|
|
|
151557
151578
|
}
|
|
151558
151579
|
return cache;
|
|
151559
151580
|
}
|
|
151560
|
-
async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix) {
|
|
151581
|
+
async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix, includePrerelease = false) {
|
|
151561
151582
|
if (!(0, node_fs.existsSync)(baseDir)) return null;
|
|
151562
151583
|
try {
|
|
151563
151584
|
const localVersions = (await (0, node_fs_promises.readdir)(baseDir, { withFileTypes: true })).filter((e) => e.isDirectory() || e.isSymbolicLink()).map((e) => e.name).filter((name) => !!import_semver.default.valid(name));
|
|
@@ -151570,7 +151591,7 @@ async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix) {
|
|
|
151570
151591
|
return latestLocal;
|
|
151571
151592
|
}
|
|
151572
151593
|
} else {
|
|
151573
|
-
const matched = import_semver.default.maxSatisfying(localVersions, range);
|
|
151594
|
+
const matched = import_semver.default.maxSatisfying(localVersions, range, { includePrerelease });
|
|
151574
151595
|
if (matched) {
|
|
151575
151596
|
console.info(`[Fetcher] ${logPrefix}: Using locally cached matching version: ${matched} for range ${range}`);
|
|
151576
151597
|
return matched;
|
package/dist/index.mjs
CHANGED
|
@@ -89518,7 +89518,7 @@ const runWithLiveLogs = async (command, args, execaOptions, log, hooks, abortSig
|
|
|
89518
89518
|
TERM: "xterm-256color",
|
|
89519
89519
|
FORCE_STDERR_LOGGING: "1"
|
|
89520
89520
|
},
|
|
89521
|
-
cancelSignal: abortSignal
|
|
89521
|
+
cancelSignal: abortSignal ?? execaOptions.cancelSignal
|
|
89522
89522
|
});
|
|
89523
89523
|
hooks?.onCreated?.(subprocess);
|
|
89524
89524
|
subprocess.stdout?.on("data", (data) => {
|
|
@@ -151225,6 +151225,17 @@ async function isOnline() {
|
|
|
151225
151225
|
lastCheckTime = now;
|
|
151226
151226
|
return isOnlineCached;
|
|
151227
151227
|
}
|
|
151228
|
+
function allowPrereleaseInRange(rangeStr) {
|
|
151229
|
+
try {
|
|
151230
|
+
return new import_semver.default.Range(rangeStr).set.map((conj) => conj.map((c) => {
|
|
151231
|
+
const v = c.semver;
|
|
151232
|
+
if (v.prerelease && v.prerelease.length) return c.operator + v.format();
|
|
151233
|
+
return c.operator + v.major + "." + v.minor + "." + v.patch + "-0";
|
|
151234
|
+
}).join(" ")).join(" || ");
|
|
151235
|
+
} catch {
|
|
151236
|
+
return rangeStr;
|
|
151237
|
+
}
|
|
151238
|
+
}
|
|
151228
151239
|
/**
|
|
151229
151240
|
* Robust utility to fetch, cache, and resolve an NPM package.
|
|
151230
151241
|
* Centralized in core-node to avoid circular dependencies.
|
|
@@ -151247,6 +151258,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
151247
151258
|
const ctx = options.context;
|
|
151248
151259
|
const baseDir = ctx.getPackagesPath(packageName);
|
|
151249
151260
|
let resolvedVersion;
|
|
151261
|
+
const includePrerelease = !!(ctx.releaseTag && ctx.releaseTag !== "latest");
|
|
151250
151262
|
let resolvedVersionOrRange = versionOrRange;
|
|
151251
151263
|
if (resolvedVersionOrRange === "local") resolvedVersionOrRange = "latest";
|
|
151252
151264
|
console.log(`[Fetcher] Resolving ${packageName}@${resolvedVersionOrRange || "latest"}...`);
|
|
@@ -151254,7 +151266,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
151254
151266
|
if (!await isOnline()) {
|
|
151255
151267
|
console.warn(`[Fetcher] ${packageName}: offline mode detected (${Date.now() - resolveStart}ms), trying local fallback...`);
|
|
151256
151268
|
const fallbackStart = Date.now();
|
|
151257
|
-
const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, /* @__PURE__ */ new Error("Offline"), baseDir, packageName);
|
|
151269
|
+
const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, /* @__PURE__ */ new Error("Offline"), baseDir, packageName, includePrerelease);
|
|
151258
151270
|
if (fallbackVersion) {
|
|
151259
151271
|
resolvedVersion = fallbackVersion;
|
|
151260
151272
|
console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
|
|
@@ -151269,7 +151281,27 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
151269
151281
|
const packument = await packumentPromise;
|
|
151270
151282
|
const versions = Object.keys(packument.versions);
|
|
151271
151283
|
const range = resolvedVersionOrRange || "latest";
|
|
151272
|
-
let foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
|
|
151284
|
+
let foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range, { includePrerelease });
|
|
151285
|
+
if (!foundVersion && ctx.releaseTag && ctx.releaseTag !== "latest") {
|
|
151286
|
+
const releaseTagVersion = packument["dist-tags"]?.[ctx.releaseTag];
|
|
151287
|
+
if (releaseTagVersion && import_semver.default.valid(releaseTagVersion)) {
|
|
151288
|
+
const rewrittenRangeForCheck = allowPrereleaseInRange(range);
|
|
151289
|
+
if (import_semver.default.satisfies(releaseTagVersion, rewrittenRangeForCheck, { includePrerelease: true })) {
|
|
151290
|
+
console.log(`[Fetcher] Using release tag "${ctx.releaseTag}" (${releaseTagVersion}) for ${packageName}@${range} because it satisfies the range`);
|
|
151291
|
+
foundVersion = releaseTagVersion;
|
|
151292
|
+
}
|
|
151293
|
+
}
|
|
151294
|
+
}
|
|
151295
|
+
if (!foundVersion && includePrerelease) {
|
|
151296
|
+
const rewrittenRange = allowPrereleaseInRange(range);
|
|
151297
|
+
if (rewrittenRange !== range) {
|
|
151298
|
+
const matched = import_semver.default.maxSatisfying(versions, rewrittenRange, { includePrerelease });
|
|
151299
|
+
if (matched) {
|
|
151300
|
+
console.log(`[Fetcher] Resolved ${packageName}@${range} to ${matched} via rewritten range ${rewrittenRange}`);
|
|
151301
|
+
foundVersion = matched;
|
|
151302
|
+
}
|
|
151303
|
+
}
|
|
151304
|
+
}
|
|
151273
151305
|
if (range === "latest" && ctx.releaseTag && ctx.releaseTag !== "latest") {
|
|
151274
151306
|
const releaseTagVersion = packument["dist-tags"]?.[ctx.releaseTag];
|
|
151275
151307
|
if (releaseTagVersion && import_semver.default.valid(releaseTagVersion)) {
|
|
@@ -151285,7 +151317,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
151285
151317
|
} catch (error) {
|
|
151286
151318
|
console.warn(`[Fetcher] ${packageName}: remote resolution failed (${Date.now() - resolveStart}ms), trying local fallback...`);
|
|
151287
151319
|
const fallbackStart = Date.now();
|
|
151288
|
-
const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, error, baseDir, packageName);
|
|
151320
|
+
const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, error, baseDir, packageName, includePrerelease);
|
|
151289
151321
|
if (fallbackVersion) {
|
|
151290
151322
|
resolvedVersion = fallbackVersion;
|
|
151291
151323
|
console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
|
|
@@ -151467,35 +151499,24 @@ async function installDependencies(packageDir, packageName, options) {
|
|
|
151467
151499
|
console.log(`[Fetcher] ${packageName}: Dependencies already installed, skipping.`);
|
|
151468
151500
|
return;
|
|
151469
151501
|
}
|
|
151470
|
-
const tempDir = `${packageDir}.tmp-deps-${Math.random().toString(36).slice(2)}`;
|
|
151471
|
-
await mkdir(tempDir, { recursive: true });
|
|
151472
151502
|
try {
|
|
151473
|
-
await cp(join(packageDir, "package.json"), join(tempDir, "package.json"));
|
|
151474
151503
|
console.log(`[Fetcher] ${packageName}: Ensuring dependencies are installed...`);
|
|
151475
151504
|
const pnpmStart = Date.now();
|
|
151476
|
-
const { all } = await runPnpm(
|
|
151505
|
+
const { all } = await runPnpm(packageDir, {
|
|
151477
151506
|
signal: options.signal,
|
|
151478
151507
|
context: options.context
|
|
151479
151508
|
});
|
|
151480
151509
|
console.log(`[Fetcher] ${packageName}: pnpm install command took ${Date.now() - pnpmStart}ms`);
|
|
151481
151510
|
if (all) console.log(`[Fetcher] ${packageName}: Installation trace:\n${all}`);
|
|
151482
|
-
|
|
151483
|
-
if (existsSync(nodeModulesPath)) await rm(nodeModulesPath, {
|
|
151484
|
-
recursive: true,
|
|
151485
|
-
force: true
|
|
151486
|
-
}).catch(() => {});
|
|
151487
|
-
const renameStart = Date.now();
|
|
151488
|
-
await rename(tempNodeModules, nodeModulesPath);
|
|
151489
|
-
console.log(`[Fetcher] ${packageName}: Dependencies installed successfully (rename took ${Date.now() - renameStart}ms, total installDependencies took ${Date.now() - start}ms).`);
|
|
151511
|
+
console.log(`[Fetcher] ${packageName}: Dependencies installed successfully (total installDependencies took ${Date.now() - start}ms).`);
|
|
151490
151512
|
} catch (err) {
|
|
151491
151513
|
console.error(`[Fetcher] ${packageName}: CRITICAL ERROR during dependency installation: ${err.message}`);
|
|
151492
151514
|
if (err.all) console.error(`[Fetcher] ${packageName}: Error details:\n${err.all}`);
|
|
151493
|
-
|
|
151494
|
-
} finally {
|
|
151495
|
-
await rm(tempDir, {
|
|
151515
|
+
await rm(nodeModulesPath, {
|
|
151496
151516
|
recursive: true,
|
|
151497
151517
|
force: true
|
|
151498
151518
|
}).catch(() => {});
|
|
151519
|
+
throw new Error(`Failed to install dependencies for ${packageName}. See logs for details.`);
|
|
151499
151520
|
}
|
|
151500
151521
|
}
|
|
151501
151522
|
/**
|
|
@@ -151551,7 +151572,7 @@ async function crawlMonorepoPackages() {
|
|
|
151551
151572
|
}
|
|
151552
151573
|
return cache;
|
|
151553
151574
|
}
|
|
151554
|
-
async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix) {
|
|
151575
|
+
async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix, includePrerelease = false) {
|
|
151555
151576
|
if (!existsSync(baseDir)) return null;
|
|
151556
151577
|
try {
|
|
151557
151578
|
const localVersions = (await readdir(baseDir, { withFileTypes: true })).filter((e) => e.isDirectory() || e.isSymbolicLink()).map((e) => e.name).filter((name) => !!import_semver.default.valid(name));
|
|
@@ -151564,7 +151585,7 @@ async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix) {
|
|
|
151564
151585
|
return latestLocal;
|
|
151565
151586
|
}
|
|
151566
151587
|
} else {
|
|
151567
|
-
const matched = import_semver.default.maxSatisfying(localVersions, range);
|
|
151588
|
+
const matched = import_semver.default.maxSatisfying(localVersions, range, { includePrerelease });
|
|
151568
151589
|
if (matched) {
|
|
151569
151590
|
console.info(`[Fetcher] ${logPrefix}: Using locally cached matching version: ${matched} for range ${range}`);
|
|
151570
151591
|
return matched;
|