@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 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(tempDir, {
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
- const tempNodeModules = (0, node_path.join)(tempDir, "node_modules");
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
- throw new Error(`Failed to install dependencies for ${packageName}. See logs for details.`);
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(tempDir, {
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
- const tempNodeModules = join(tempDir, "node_modules");
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
- throw new Error(`Failed to install dependencies for ${packageName}. See logs for details.`);
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;