@pipelab/cli 2.0.0-beta.27 → 2.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/index.mjs +71 -9
- package/package.json +1 -1
package/index.mjs
CHANGED
|
@@ -67003,6 +67003,17 @@ async function isOnline() {
|
|
|
67003
67003
|
lastCheckTime = now;
|
|
67004
67004
|
return isOnlineCached;
|
|
67005
67005
|
}
|
|
67006
|
+
function allowPrereleaseInRange(rangeStr) {
|
|
67007
|
+
try {
|
|
67008
|
+
return new import_semver.default.Range(rangeStr).set.map((conj) => conj.map((c) => {
|
|
67009
|
+
const v = c.semver;
|
|
67010
|
+
if (v.prerelease && v.prerelease.length) return c.operator + v.format();
|
|
67011
|
+
return c.operator + v.major + "." + v.minor + "." + v.patch + "-0";
|
|
67012
|
+
}).join(" ")).join(" || ");
|
|
67013
|
+
} catch {
|
|
67014
|
+
return rangeStr;
|
|
67015
|
+
}
|
|
67016
|
+
}
|
|
67006
67017
|
/**
|
|
67007
67018
|
* Robust utility to fetch, cache, and resolve an NPM package.
|
|
67008
67019
|
* Centralized in core-node to avoid circular dependencies.
|
|
@@ -67012,6 +67023,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
67012
67023
|
const ctx = options.context;
|
|
67013
67024
|
const baseDir = ctx.getPackagesPath(packageName);
|
|
67014
67025
|
let resolvedVersion;
|
|
67026
|
+
const includePrerelease = !!(ctx.releaseTag && ctx.releaseTag !== "latest");
|
|
67015
67027
|
let resolvedVersionOrRange = versionOrRange;
|
|
67016
67028
|
if (resolvedVersionOrRange === "local") resolvedVersionOrRange = "latest";
|
|
67017
67029
|
console.log(`[Fetcher] Resolving ${packageName}@${resolvedVersionOrRange || "latest"}...`);
|
|
@@ -67019,7 +67031,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
67019
67031
|
if (!await isOnline()) {
|
|
67020
67032
|
console.warn(`[Fetcher] ${packageName}: offline mode detected (${Date.now() - resolveStart}ms), trying local fallback...`);
|
|
67021
67033
|
const fallbackStart = Date.now();
|
|
67022
|
-
const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, /* @__PURE__ */ new Error("Offline"), baseDir, packageName);
|
|
67034
|
+
const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, /* @__PURE__ */ new Error("Offline"), baseDir, packageName, includePrerelease);
|
|
67023
67035
|
if (fallbackVersion) {
|
|
67024
67036
|
resolvedVersion = fallbackVersion;
|
|
67025
67037
|
console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
|
|
@@ -67034,7 +67046,27 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
67034
67046
|
const packument = await packumentPromise;
|
|
67035
67047
|
const versions = Object.keys(packument.versions);
|
|
67036
67048
|
const range = resolvedVersionOrRange || "latest";
|
|
67037
|
-
let foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
|
|
67049
|
+
let foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range, { includePrerelease });
|
|
67050
|
+
if (!foundVersion && ctx.releaseTag && ctx.releaseTag !== "latest") {
|
|
67051
|
+
const releaseTagVersion = packument["dist-tags"]?.[ctx.releaseTag];
|
|
67052
|
+
if (releaseTagVersion && import_semver.default.valid(releaseTagVersion)) {
|
|
67053
|
+
const rewrittenRangeForCheck = allowPrereleaseInRange(range);
|
|
67054
|
+
if (import_semver.default.satisfies(releaseTagVersion, rewrittenRangeForCheck, { includePrerelease: true })) {
|
|
67055
|
+
console.log(`[Fetcher] Using release tag "${ctx.releaseTag}" (${releaseTagVersion}) for ${packageName}@${range} because it satisfies the range`);
|
|
67056
|
+
foundVersion = releaseTagVersion;
|
|
67057
|
+
}
|
|
67058
|
+
}
|
|
67059
|
+
}
|
|
67060
|
+
if (!foundVersion && includePrerelease) {
|
|
67061
|
+
const rewrittenRange = allowPrereleaseInRange(range);
|
|
67062
|
+
if (rewrittenRange !== range) {
|
|
67063
|
+
const matched = import_semver.default.maxSatisfying(versions, rewrittenRange, { includePrerelease });
|
|
67064
|
+
if (matched) {
|
|
67065
|
+
console.log(`[Fetcher] Resolved ${packageName}@${range} to ${matched} via rewritten range ${rewrittenRange}`);
|
|
67066
|
+
foundVersion = matched;
|
|
67067
|
+
}
|
|
67068
|
+
}
|
|
67069
|
+
}
|
|
67038
67070
|
if (range === "latest" && ctx.releaseTag && ctx.releaseTag !== "latest") {
|
|
67039
67071
|
const releaseTagVersion = packument["dist-tags"]?.[ctx.releaseTag];
|
|
67040
67072
|
if (releaseTagVersion && import_semver.default.valid(releaseTagVersion)) {
|
|
@@ -67050,7 +67082,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
|
|
|
67050
67082
|
} catch (error) {
|
|
67051
67083
|
console.warn(`[Fetcher] ${packageName}: remote resolution failed (${Date.now() - resolveStart}ms), trying local fallback...`);
|
|
67052
67084
|
const fallbackStart = Date.now();
|
|
67053
|
-
const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, error, baseDir, packageName);
|
|
67085
|
+
const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, error, baseDir, packageName, includePrerelease);
|
|
67054
67086
|
if (fallbackVersion) {
|
|
67055
67087
|
resolvedVersion = fallbackVersion;
|
|
67056
67088
|
console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
|
|
@@ -67272,7 +67304,7 @@ async function fetchPipelabPlugin(pluginName, versionOrRange, options) {
|
|
|
67272
67304
|
isLocal: !!isLocal
|
|
67273
67305
|
};
|
|
67274
67306
|
}
|
|
67275
|
-
async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix) {
|
|
67307
|
+
async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix, includePrerelease = false) {
|
|
67276
67308
|
if (!existsSync(baseDir)) return null;
|
|
67277
67309
|
try {
|
|
67278
67310
|
const localVersions = (await readdir(baseDir, { withFileTypes: true })).filter((e) => e.isDirectory() || e.isSymbolicLink()).map((e) => e.name).filter((name) => !!import_semver.default.valid(name));
|
|
@@ -67285,7 +67317,7 @@ async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix) {
|
|
|
67285
67317
|
return latestLocal;
|
|
67286
67318
|
}
|
|
67287
67319
|
} else {
|
|
67288
|
-
const matched = import_semver.default.maxSatisfying(localVersions, range);
|
|
67320
|
+
const matched = import_semver.default.maxSatisfying(localVersions, range, { includePrerelease });
|
|
67289
67321
|
if (matched) {
|
|
67290
67322
|
console.info(`[Fetcher] ${logPrefix}: Using locally cached matching version: ${matched} for range ${range}`);
|
|
67291
67323
|
return matched;
|
|
@@ -68503,6 +68535,32 @@ const registerSystemHandlers = (options) => {
|
|
|
68503
68535
|
}
|
|
68504
68536
|
});
|
|
68505
68537
|
});
|
|
68538
|
+
handle("system:packages:cleanup", async (_, { send }) => {
|
|
68539
|
+
try {
|
|
68540
|
+
const packagesDir = options.context.getPackagesPath();
|
|
68541
|
+
const { existsSync } = await import("fs");
|
|
68542
|
+
const { rm } = await import("fs/promises");
|
|
68543
|
+
if (existsSync(packagesDir)) await rm(packagesDir, {
|
|
68544
|
+
recursive: true,
|
|
68545
|
+
force: true
|
|
68546
|
+
});
|
|
68547
|
+
send({
|
|
68548
|
+
type: "end",
|
|
68549
|
+
data: {
|
|
68550
|
+
type: "success",
|
|
68551
|
+
result: true
|
|
68552
|
+
}
|
|
68553
|
+
});
|
|
68554
|
+
} catch (e) {
|
|
68555
|
+
send({
|
|
68556
|
+
type: "end",
|
|
68557
|
+
data: {
|
|
68558
|
+
type: "error",
|
|
68559
|
+
ipcError: e.message
|
|
68560
|
+
}
|
|
68561
|
+
});
|
|
68562
|
+
}
|
|
68563
|
+
});
|
|
68506
68564
|
};
|
|
68507
68565
|
/**
|
|
68508
68566
|
* Resolves a requested plugin version.
|
|
@@ -69233,7 +69291,11 @@ async function runPipelineCommand(file, options, version) {
|
|
|
69233
69291
|
const effectivePipelineId = pipelineId || "cli-run";
|
|
69234
69292
|
console.log(`Executing pipeline: ${effectiveProjectName} (${effectivePipelineId})`);
|
|
69235
69293
|
if (!options.userData) throw new Error("userDataPath is required for runPipelineCommand");
|
|
69236
|
-
const
|
|
69294
|
+
const releaseTag = version.includes("beta") ? "beta" : "latest";
|
|
69295
|
+
const context = new PipelabContext({
|
|
69296
|
+
userDataPath: options.userData,
|
|
69297
|
+
releaseTag
|
|
69298
|
+
});
|
|
69237
69299
|
await registerAllHandlers({
|
|
69238
69300
|
version,
|
|
69239
69301
|
context
|
|
@@ -69305,7 +69367,7 @@ async function runPipelineCommand(file, options, version) {
|
|
|
69305
69367
|
}
|
|
69306
69368
|
//#endregion
|
|
69307
69369
|
//#region package.json
|
|
69308
|
-
var version$2 = "2.0.0-beta.
|
|
69370
|
+
var version$2 = "2.0.0-beta.31";
|
|
69309
69371
|
//#endregion
|
|
69310
69372
|
//#region src/paths.ts
|
|
69311
69373
|
const getDefaultUserDataPath = () => {
|
|
@@ -77257,8 +77319,8 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
|
77257
77319
|
const isProduction = process.env.TEST !== "true";
|
|
77258
77320
|
let posthog;
|
|
77259
77321
|
if (isProduction && "phc_oXBjgJkl3ORfM2b6FZlbwaWHkGxJp9jFrj0l5aLjJql") posthog = new PostHog("phc_oXBjgJkl3ORfM2b6FZlbwaWHkGxJp9jFrj0l5aLjJql", { host: "https://eu.i.posthog.com" });
|
|
77260
|
-
let version = "0.0.
|
|
77261
|
-
try {
|
|
77322
|
+
let version = "2.0.0-beta.31";
|
|
77323
|
+
if (version === "0.0.0") try {
|
|
77262
77324
|
const packageJsonPath = existsSync(join(__dirname, "package.json")) ? join(__dirname, "package.json") : join(__dirname, "..", "package.json");
|
|
77263
77325
|
if (existsSync(packageJsonPath)) version = JSON.parse(readFileSync(packageJsonPath, "utf-8")).version;
|
|
77264
77326
|
} catch (e) {
|