@pipelab/plugin-discord 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
@@ -151202,6 +151202,17 @@ async function isOnline() {
151202
151202
  lastCheckTime = now;
151203
151203
  return isOnlineCached;
151204
151204
  }
151205
+ function allowPrereleaseInRange(rangeStr) {
151206
+ try {
151207
+ return new import_semver.default.Range(rangeStr).set.map((conj) => conj.map((c) => {
151208
+ const v = c.semver;
151209
+ if (v.prerelease && v.prerelease.length) return c.operator + v.format();
151210
+ return c.operator + v.major + "." + v.minor + "." + v.patch + "-0";
151211
+ }).join(" ")).join(" || ");
151212
+ } catch {
151213
+ return rangeStr;
151214
+ }
151215
+ }
151205
151216
  /**
151206
151217
  * Robust utility to fetch, cache, and resolve an NPM package.
151207
151218
  * Centralized in core-node to avoid circular dependencies.
@@ -151224,6 +151235,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
151224
151235
  const ctx = options.context;
151225
151236
  const baseDir = ctx.getPackagesPath(packageName);
151226
151237
  let resolvedVersion;
151238
+ const includePrerelease = !!(ctx.releaseTag && ctx.releaseTag !== "latest");
151227
151239
  let resolvedVersionOrRange = versionOrRange;
151228
151240
  if (resolvedVersionOrRange === "local") resolvedVersionOrRange = "latest";
151229
151241
  console.log(`[Fetcher] Resolving ${packageName}@${resolvedVersionOrRange || "latest"}...`);
@@ -151231,7 +151243,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
151231
151243
  if (!await isOnline()) {
151232
151244
  console.warn(`[Fetcher] ${packageName}: offline mode detected (${Date.now() - resolveStart}ms), trying local fallback...`);
151233
151245
  const fallbackStart = Date.now();
151234
- const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, /* @__PURE__ */ new Error("Offline"), baseDir, packageName);
151246
+ const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, /* @__PURE__ */ new Error("Offline"), baseDir, packageName, includePrerelease);
151235
151247
  if (fallbackVersion) {
151236
151248
  resolvedVersion = fallbackVersion;
151237
151249
  console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
@@ -151246,7 +151258,27 @@ async function fetchPackage(packageName, versionOrRange, options) {
151246
151258
  const packument = await packumentPromise;
151247
151259
  const versions = Object.keys(packument.versions);
151248
151260
  const range = resolvedVersionOrRange || "latest";
151249
- let foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
151261
+ let foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range, { includePrerelease });
151262
+ if (!foundVersion && ctx.releaseTag && ctx.releaseTag !== "latest") {
151263
+ const releaseTagVersion = packument["dist-tags"]?.[ctx.releaseTag];
151264
+ if (releaseTagVersion && import_semver.default.valid(releaseTagVersion)) {
151265
+ const rewrittenRangeForCheck = allowPrereleaseInRange(range);
151266
+ if (import_semver.default.satisfies(releaseTagVersion, rewrittenRangeForCheck, { includePrerelease: true })) {
151267
+ console.log(`[Fetcher] Using release tag "${ctx.releaseTag}" (${releaseTagVersion}) for ${packageName}@${range} because it satisfies the range`);
151268
+ foundVersion = releaseTagVersion;
151269
+ }
151270
+ }
151271
+ }
151272
+ if (!foundVersion && includePrerelease) {
151273
+ const rewrittenRange = allowPrereleaseInRange(range);
151274
+ if (rewrittenRange !== range) {
151275
+ const matched = import_semver.default.maxSatisfying(versions, rewrittenRange, { includePrerelease });
151276
+ if (matched) {
151277
+ console.log(`[Fetcher] Resolved ${packageName}@${range} to ${matched} via rewritten range ${rewrittenRange}`);
151278
+ foundVersion = matched;
151279
+ }
151280
+ }
151281
+ }
151250
151282
  if (range === "latest" && ctx.releaseTag && ctx.releaseTag !== "latest") {
151251
151283
  const releaseTagVersion = packument["dist-tags"]?.[ctx.releaseTag];
151252
151284
  if (releaseTagVersion && import_semver.default.valid(releaseTagVersion)) {
@@ -151262,7 +151294,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
151262
151294
  } catch (error) {
151263
151295
  console.warn(`[Fetcher] ${packageName}: remote resolution failed (${Date.now() - resolveStart}ms), trying local fallback...`);
151264
151296
  const fallbackStart = Date.now();
151265
- const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, error, baseDir, packageName);
151297
+ const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, error, baseDir, packageName, includePrerelease);
151266
151298
  if (fallbackVersion) {
151267
151299
  resolvedVersion = fallbackVersion;
151268
151300
  console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
@@ -151444,35 +151476,24 @@ async function installDependencies(packageDir, packageName, options) {
151444
151476
  console.log(`[Fetcher] ${packageName}: Dependencies already installed, skipping.`);
151445
151477
  return;
151446
151478
  }
151447
- const tempDir = `${packageDir}.tmp-deps-${Math.random().toString(36).slice(2)}`;
151448
- await (0, node_fs_promises.mkdir)(tempDir, { recursive: true });
151449
151479
  try {
151450
- await (0, node_fs_promises.cp)((0, node_path.join)(packageDir, "package.json"), (0, node_path.join)(tempDir, "package.json"));
151451
151480
  console.log(`[Fetcher] ${packageName}: Ensuring dependencies are installed...`);
151452
151481
  const pnpmStart = Date.now();
151453
- const { all } = await runPnpm(tempDir, {
151482
+ const { all } = await runPnpm(packageDir, {
151454
151483
  signal: options.signal,
151455
151484
  context: options.context
151456
151485
  });
151457
151486
  console.log(`[Fetcher] ${packageName}: pnpm install command took ${Date.now() - pnpmStart}ms`);
151458
151487
  if (all) console.log(`[Fetcher] ${packageName}: Installation trace:\n${all}`);
151459
- const tempNodeModules = (0, node_path.join)(tempDir, "node_modules");
151460
- if ((0, node_fs.existsSync)(nodeModulesPath)) await (0, node_fs_promises.rm)(nodeModulesPath, {
151461
- recursive: true,
151462
- force: true
151463
- }).catch(() => {});
151464
- const renameStart = Date.now();
151465
- await (0, node_fs_promises.rename)(tempNodeModules, nodeModulesPath);
151466
- console.log(`[Fetcher] ${packageName}: Dependencies installed successfully (rename took ${Date.now() - renameStart}ms, total installDependencies took ${Date.now() - start}ms).`);
151488
+ console.log(`[Fetcher] ${packageName}: Dependencies installed successfully (total installDependencies took ${Date.now() - start}ms).`);
151467
151489
  } catch (err) {
151468
151490
  console.error(`[Fetcher] ${packageName}: CRITICAL ERROR during dependency installation: ${err.message}`);
151469
151491
  if (err.all) console.error(`[Fetcher] ${packageName}: Error details:\n${err.all}`);
151470
- throw new Error(`Failed to install dependencies for ${packageName}. See logs for details.`);
151471
- } finally {
151472
- await (0, node_fs_promises.rm)(tempDir, {
151492
+ await (0, node_fs_promises.rm)(nodeModulesPath, {
151473
151493
  recursive: true,
151474
151494
  force: true
151475
151495
  }).catch(() => {});
151496
+ throw new Error(`Failed to install dependencies for ${packageName}. See logs for details.`);
151476
151497
  }
151477
151498
  }
151478
151499
  async function fetchPipelabAsset(packageName, versionOrRange, options) {
@@ -151536,7 +151557,7 @@ async function crawlMonorepoPackages() {
151536
151557
  }
151537
151558
  return cache;
151538
151559
  }
151539
- async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix) {
151560
+ async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix, includePrerelease = false) {
151540
151561
  if (!(0, node_fs.existsSync)(baseDir)) return null;
151541
151562
  try {
151542
151563
  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));
@@ -151549,7 +151570,7 @@ async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix) {
151549
151570
  return latestLocal;
151550
151571
  }
151551
151572
  } else {
151552
- const matched = import_semver.default.maxSatisfying(localVersions, range);
151573
+ const matched = import_semver.default.maxSatisfying(localVersions, range, { includePrerelease });
151553
151574
  if (matched) {
151554
151575
  console.info(`[Fetcher] ${logPrefix}: Using locally cached matching version: ${matched} for range ${range}`);
151555
151576
  return matched;
@@ -152797,6 +152818,7 @@ DISCORD_CLIENT_SECRET=yJ4vRnzDtKAqg2Le3_Sap2CqHybkTp2U`, "utf8");
152797
152818
  acceptCloudflareNotice: true
152798
152819
  });
152799
152820
  console.log("tunnel", tunnel);
152821
+ if (!tunnel) throw new Error("Failed to start tunnel");
152800
152822
  const url = await tunnel.getURL();
152801
152823
  console.log("Public URL:", url);
152802
152824
  })()]);
package/dist/index.mjs CHANGED
@@ -151197,6 +151197,17 @@ async function isOnline() {
151197
151197
  lastCheckTime = now;
151198
151198
  return isOnlineCached;
151199
151199
  }
151200
+ function allowPrereleaseInRange(rangeStr) {
151201
+ try {
151202
+ return new import_semver.default.Range(rangeStr).set.map((conj) => conj.map((c) => {
151203
+ const v = c.semver;
151204
+ if (v.prerelease && v.prerelease.length) return c.operator + v.format();
151205
+ return c.operator + v.major + "." + v.minor + "." + v.patch + "-0";
151206
+ }).join(" ")).join(" || ");
151207
+ } catch {
151208
+ return rangeStr;
151209
+ }
151210
+ }
151200
151211
  /**
151201
151212
  * Robust utility to fetch, cache, and resolve an NPM package.
151202
151213
  * Centralized in core-node to avoid circular dependencies.
@@ -151219,6 +151230,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
151219
151230
  const ctx = options.context;
151220
151231
  const baseDir = ctx.getPackagesPath(packageName);
151221
151232
  let resolvedVersion;
151233
+ const includePrerelease = !!(ctx.releaseTag && ctx.releaseTag !== "latest");
151222
151234
  let resolvedVersionOrRange = versionOrRange;
151223
151235
  if (resolvedVersionOrRange === "local") resolvedVersionOrRange = "latest";
151224
151236
  console.log(`[Fetcher] Resolving ${packageName}@${resolvedVersionOrRange || "latest"}...`);
@@ -151226,7 +151238,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
151226
151238
  if (!await isOnline()) {
151227
151239
  console.warn(`[Fetcher] ${packageName}: offline mode detected (${Date.now() - resolveStart}ms), trying local fallback...`);
151228
151240
  const fallbackStart = Date.now();
151229
- const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, /* @__PURE__ */ new Error("Offline"), baseDir, packageName);
151241
+ const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, /* @__PURE__ */ new Error("Offline"), baseDir, packageName, includePrerelease);
151230
151242
  if (fallbackVersion) {
151231
151243
  resolvedVersion = fallbackVersion;
151232
151244
  console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
@@ -151241,7 +151253,27 @@ async function fetchPackage(packageName, versionOrRange, options) {
151241
151253
  const packument = await packumentPromise;
151242
151254
  const versions = Object.keys(packument.versions);
151243
151255
  const range = resolvedVersionOrRange || "latest";
151244
- let foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
151256
+ let foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range, { includePrerelease });
151257
+ if (!foundVersion && ctx.releaseTag && ctx.releaseTag !== "latest") {
151258
+ const releaseTagVersion = packument["dist-tags"]?.[ctx.releaseTag];
151259
+ if (releaseTagVersion && import_semver.default.valid(releaseTagVersion)) {
151260
+ const rewrittenRangeForCheck = allowPrereleaseInRange(range);
151261
+ if (import_semver.default.satisfies(releaseTagVersion, rewrittenRangeForCheck, { includePrerelease: true })) {
151262
+ console.log(`[Fetcher] Using release tag "${ctx.releaseTag}" (${releaseTagVersion}) for ${packageName}@${range} because it satisfies the range`);
151263
+ foundVersion = releaseTagVersion;
151264
+ }
151265
+ }
151266
+ }
151267
+ if (!foundVersion && includePrerelease) {
151268
+ const rewrittenRange = allowPrereleaseInRange(range);
151269
+ if (rewrittenRange !== range) {
151270
+ const matched = import_semver.default.maxSatisfying(versions, rewrittenRange, { includePrerelease });
151271
+ if (matched) {
151272
+ console.log(`[Fetcher] Resolved ${packageName}@${range} to ${matched} via rewritten range ${rewrittenRange}`);
151273
+ foundVersion = matched;
151274
+ }
151275
+ }
151276
+ }
151245
151277
  if (range === "latest" && ctx.releaseTag && ctx.releaseTag !== "latest") {
151246
151278
  const releaseTagVersion = packument["dist-tags"]?.[ctx.releaseTag];
151247
151279
  if (releaseTagVersion && import_semver.default.valid(releaseTagVersion)) {
@@ -151257,7 +151289,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
151257
151289
  } catch (error) {
151258
151290
  console.warn(`[Fetcher] ${packageName}: remote resolution failed (${Date.now() - resolveStart}ms), trying local fallback...`);
151259
151291
  const fallbackStart = Date.now();
151260
- const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, error, baseDir, packageName);
151292
+ const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, error, baseDir, packageName, includePrerelease);
151261
151293
  if (fallbackVersion) {
151262
151294
  resolvedVersion = fallbackVersion;
151263
151295
  console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
@@ -151439,35 +151471,24 @@ async function installDependencies(packageDir, packageName, options) {
151439
151471
  console.log(`[Fetcher] ${packageName}: Dependencies already installed, skipping.`);
151440
151472
  return;
151441
151473
  }
151442
- const tempDir = `${packageDir}.tmp-deps-${Math.random().toString(36).slice(2)}`;
151443
- await mkdir(tempDir, { recursive: true });
151444
151474
  try {
151445
- await cp(join$1(packageDir, "package.json"), join$1(tempDir, "package.json"));
151446
151475
  console.log(`[Fetcher] ${packageName}: Ensuring dependencies are installed...`);
151447
151476
  const pnpmStart = Date.now();
151448
- const { all } = await runPnpm(tempDir, {
151477
+ const { all } = await runPnpm(packageDir, {
151449
151478
  signal: options.signal,
151450
151479
  context: options.context
151451
151480
  });
151452
151481
  console.log(`[Fetcher] ${packageName}: pnpm install command took ${Date.now() - pnpmStart}ms`);
151453
151482
  if (all) console.log(`[Fetcher] ${packageName}: Installation trace:\n${all}`);
151454
- const tempNodeModules = join$1(tempDir, "node_modules");
151455
- if (existsSync(nodeModulesPath)) await rm(nodeModulesPath, {
151456
- recursive: true,
151457
- force: true
151458
- }).catch(() => {});
151459
- const renameStart = Date.now();
151460
- await rename(tempNodeModules, nodeModulesPath);
151461
- console.log(`[Fetcher] ${packageName}: Dependencies installed successfully (rename took ${Date.now() - renameStart}ms, total installDependencies took ${Date.now() - start}ms).`);
151483
+ console.log(`[Fetcher] ${packageName}: Dependencies installed successfully (total installDependencies took ${Date.now() - start}ms).`);
151462
151484
  } catch (err) {
151463
151485
  console.error(`[Fetcher] ${packageName}: CRITICAL ERROR during dependency installation: ${err.message}`);
151464
151486
  if (err.all) console.error(`[Fetcher] ${packageName}: Error details:\n${err.all}`);
151465
- throw new Error(`Failed to install dependencies for ${packageName}. See logs for details.`);
151466
- } finally {
151467
- await rm(tempDir, {
151487
+ await rm(nodeModulesPath, {
151468
151488
  recursive: true,
151469
151489
  force: true
151470
151490
  }).catch(() => {});
151491
+ throw new Error(`Failed to install dependencies for ${packageName}. See logs for details.`);
151471
151492
  }
151472
151493
  }
151473
151494
  async function fetchPipelabAsset(packageName, versionOrRange, options) {
@@ -151531,7 +151552,7 @@ async function crawlMonorepoPackages() {
151531
151552
  }
151532
151553
  return cache;
151533
151554
  }
151534
- async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix) {
151555
+ async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix, includePrerelease = false) {
151535
151556
  if (!existsSync(baseDir)) return null;
151536
151557
  try {
151537
151558
  const localVersions = (await readdir(baseDir, { withFileTypes: true })).filter((e) => e.isDirectory() || e.isSymbolicLink()).map((e) => e.name).filter((name) => !!import_semver.default.valid(name));
@@ -151544,7 +151565,7 @@ async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix) {
151544
151565
  return latestLocal;
151545
151566
  }
151546
151567
  } else {
151547
- const matched = import_semver.default.maxSatisfying(localVersions, range);
151568
+ const matched = import_semver.default.maxSatisfying(localVersions, range, { includePrerelease });
151548
151569
  if (matched) {
151549
151570
  console.info(`[Fetcher] ${logPrefix}: Using locally cached matching version: ${matched} for range ${range}`);
151550
151571
  return matched;
@@ -152792,6 +152813,7 @@ DISCORD_CLIENT_SECRET=yJ4vRnzDtKAqg2Le3_Sap2CqHybkTp2U`, "utf8");
152792
152813
  acceptCloudflareNotice: true
152793
152814
  });
152794
152815
  console.log("tunnel", tunnel);
152816
+ if (!tunnel) throw new Error("Failed to start tunnel");
152795
152817
  const url = await tunnel.getURL();
152796
152818
  console.log("Public URL:", url);
152797
152819
  })()]);