@pipelab/plugin-netlify 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
@@ -151215,6 +151215,17 @@ async function isOnline() {
151215
151215
  lastCheckTime = now;
151216
151216
  return isOnlineCached;
151217
151217
  }
151218
+ function allowPrereleaseInRange(rangeStr) {
151219
+ try {
151220
+ return new import_semver.default.Range(rangeStr).set.map((conj) => conj.map((c) => {
151221
+ const v = c.semver;
151222
+ if (v.prerelease && v.prerelease.length) return c.operator + v.format();
151223
+ return c.operator + v.major + "." + v.minor + "." + v.patch + "-0";
151224
+ }).join(" ")).join(" || ");
151225
+ } catch {
151226
+ return rangeStr;
151227
+ }
151228
+ }
151218
151229
  /**
151219
151230
  * Robust utility to fetch, cache, and resolve an NPM package.
151220
151231
  * Centralized in core-node to avoid circular dependencies.
@@ -151237,6 +151248,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
151237
151248
  const ctx = options.context;
151238
151249
  const baseDir = ctx.getPackagesPath(packageName);
151239
151250
  let resolvedVersion;
151251
+ const includePrerelease = !!(ctx.releaseTag && ctx.releaseTag !== "latest");
151240
151252
  let resolvedVersionOrRange = versionOrRange;
151241
151253
  if (resolvedVersionOrRange === "local") resolvedVersionOrRange = "latest";
151242
151254
  console.log(`[Fetcher] Resolving ${packageName}@${resolvedVersionOrRange || "latest"}...`);
@@ -151244,7 +151256,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
151244
151256
  if (!await isOnline()) {
151245
151257
  console.warn(`[Fetcher] ${packageName}: offline mode detected (${Date.now() - resolveStart}ms), trying local fallback...`);
151246
151258
  const fallbackStart = Date.now();
151247
- const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, /* @__PURE__ */ new Error("Offline"), baseDir, packageName);
151259
+ const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, /* @__PURE__ */ new Error("Offline"), baseDir, packageName, includePrerelease);
151248
151260
  if (fallbackVersion) {
151249
151261
  resolvedVersion = fallbackVersion;
151250
151262
  console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
@@ -151259,7 +151271,27 @@ async function fetchPackage(packageName, versionOrRange, options) {
151259
151271
  const packument = await packumentPromise;
151260
151272
  const versions = Object.keys(packument.versions);
151261
151273
  const range = resolvedVersionOrRange || "latest";
151262
- let foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
151274
+ let foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range, { includePrerelease });
151275
+ if (!foundVersion && ctx.releaseTag && ctx.releaseTag !== "latest") {
151276
+ const releaseTagVersion = packument["dist-tags"]?.[ctx.releaseTag];
151277
+ if (releaseTagVersion && import_semver.default.valid(releaseTagVersion)) {
151278
+ const rewrittenRangeForCheck = allowPrereleaseInRange(range);
151279
+ if (import_semver.default.satisfies(releaseTagVersion, rewrittenRangeForCheck, { includePrerelease: true })) {
151280
+ console.log(`[Fetcher] Using release tag "${ctx.releaseTag}" (${releaseTagVersion}) for ${packageName}@${range} because it satisfies the range`);
151281
+ foundVersion = releaseTagVersion;
151282
+ }
151283
+ }
151284
+ }
151285
+ if (!foundVersion && includePrerelease) {
151286
+ const rewrittenRange = allowPrereleaseInRange(range);
151287
+ if (rewrittenRange !== range) {
151288
+ const matched = import_semver.default.maxSatisfying(versions, rewrittenRange, { includePrerelease });
151289
+ if (matched) {
151290
+ console.log(`[Fetcher] Resolved ${packageName}@${range} to ${matched} via rewritten range ${rewrittenRange}`);
151291
+ foundVersion = matched;
151292
+ }
151293
+ }
151294
+ }
151263
151295
  if (range === "latest" && ctx.releaseTag && ctx.releaseTag !== "latest") {
151264
151296
  const releaseTagVersion = packument["dist-tags"]?.[ctx.releaseTag];
151265
151297
  if (releaseTagVersion && import_semver.default.valid(releaseTagVersion)) {
@@ -151275,7 +151307,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
151275
151307
  } catch (error) {
151276
151308
  console.warn(`[Fetcher] ${packageName}: remote resolution failed (${Date.now() - resolveStart}ms), trying local fallback...`);
151277
151309
  const fallbackStart = Date.now();
151278
- const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, error, baseDir, packageName);
151310
+ const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, error, baseDir, packageName, includePrerelease);
151279
151311
  if (fallbackVersion) {
151280
151312
  resolvedVersion = fallbackVersion;
151281
151313
  console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
@@ -151457,35 +151489,24 @@ async function installDependencies(packageDir, packageName, options) {
151457
151489
  console.log(`[Fetcher] ${packageName}: Dependencies already installed, skipping.`);
151458
151490
  return;
151459
151491
  }
151460
- const tempDir = `${packageDir}.tmp-deps-${Math.random().toString(36).slice(2)}`;
151461
- await (0, node_fs_promises.mkdir)(tempDir, { recursive: true });
151462
151492
  try {
151463
- await (0, node_fs_promises.cp)((0, node_path.join)(packageDir, "package.json"), (0, node_path.join)(tempDir, "package.json"));
151464
151493
  console.log(`[Fetcher] ${packageName}: Ensuring dependencies are installed...`);
151465
151494
  const pnpmStart = Date.now();
151466
- const { all } = await runPnpm(tempDir, {
151495
+ const { all } = await runPnpm(packageDir, {
151467
151496
  signal: options.signal,
151468
151497
  context: options.context
151469
151498
  });
151470
151499
  console.log(`[Fetcher] ${packageName}: pnpm install command took ${Date.now() - pnpmStart}ms`);
151471
151500
  if (all) console.log(`[Fetcher] ${packageName}: Installation trace:\n${all}`);
151472
- const tempNodeModules = (0, node_path.join)(tempDir, "node_modules");
151473
- if ((0, node_fs.existsSync)(nodeModulesPath)) await (0, node_fs_promises.rm)(nodeModulesPath, {
151474
- recursive: true,
151475
- force: true
151476
- }).catch(() => {});
151477
- const renameStart = Date.now();
151478
- await (0, node_fs_promises.rename)(tempNodeModules, nodeModulesPath);
151479
- console.log(`[Fetcher] ${packageName}: Dependencies installed successfully (rename took ${Date.now() - renameStart}ms, total installDependencies took ${Date.now() - start}ms).`);
151501
+ console.log(`[Fetcher] ${packageName}: Dependencies installed successfully (total installDependencies took ${Date.now() - start}ms).`);
151480
151502
  } catch (err) {
151481
151503
  console.error(`[Fetcher] ${packageName}: CRITICAL ERROR during dependency installation: ${err.message}`);
151482
151504
  if (err.all) console.error(`[Fetcher] ${packageName}: Error details:\n${err.all}`);
151483
- throw new Error(`Failed to install dependencies for ${packageName}. See logs for details.`);
151484
- } finally {
151485
- await (0, node_fs_promises.rm)(tempDir, {
151505
+ await (0, node_fs_promises.rm)(nodeModulesPath, {
151486
151506
  recursive: true,
151487
151507
  force: true
151488
151508
  }).catch(() => {});
151509
+ throw new Error(`Failed to install dependencies for ${packageName}. See logs for details.`);
151489
151510
  }
151490
151511
  }
151491
151512
  async function fetchPipelabAsset(packageName, versionOrRange, options) {
@@ -151549,7 +151570,7 @@ async function crawlMonorepoPackages() {
151549
151570
  }
151550
151571
  return cache;
151551
151572
  }
151552
- async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix) {
151573
+ async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix, includePrerelease = false) {
151553
151574
  if (!(0, node_fs.existsSync)(baseDir)) return null;
151554
151575
  try {
151555
151576
  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));
@@ -151562,7 +151583,7 @@ async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix) {
151562
151583
  return latestLocal;
151563
151584
  }
151564
151585
  } else {
151565
- const matched = import_semver.default.maxSatisfying(localVersions, range);
151586
+ const matched = import_semver.default.maxSatisfying(localVersions, range, { includePrerelease });
151566
151587
  if (matched) {
151567
151588
  console.info(`[Fetcher] ${logPrefix}: Using locally cached matching version: ${matched} for range ${range}`);
151568
151589
  return matched;
@@ -151726,11 +151747,15 @@ var src_default = createNodeDefinition({
151726
151747
  token: createStringParam("", {
151727
151748
  required: true,
151728
151749
  label: "Personal Access Token"
151750
+ }),
151751
+ site: createNetlifySiteParam("", "token", {
151752
+ required: true,
151753
+ label: "Netlify Site"
151729
151754
  })
151730
151755
  },
151731
151756
  outputs: {}
151732
151757
  }),
151733
- runner: createActionRunner(async ({ log, inputs, cwd, abortSignal, paths }) => {
151758
+ runner: createActionRunner(async ({ log, inputs, cwd, abortSignal, paths, context }) => {
151734
151759
  log("Building netlify site");
151735
151760
  const { node } = paths;
151736
151761
  const buildDir = (0, node_path.join)(cwd, "build");
@@ -151750,7 +151775,8 @@ var src_default = createNodeDefinition({
151750
151775
  "build"
151751
151776
  ],
151752
151777
  extraEnv: { NETLIFY_AUTH_TOKEN: inputs.token },
151753
- signal: abortSignal
151778
+ signal: abortSignal,
151779
+ context
151754
151780
  });
151755
151781
  if (buildOut) log(buildOut);
151756
151782
  const { all: deployOut } = await runPnpm(buildDir, {
@@ -151763,7 +151789,8 @@ var src_default = createNodeDefinition({
151763
151789
  "--prod"
151764
151790
  ],
151765
151791
  extraEnv: { NETLIFY_AUTH_TOKEN: inputs.token },
151766
- signal: abortSignal
151792
+ signal: abortSignal,
151793
+ context
151767
151794
  });
151768
151795
  if (deployOut) log(deployOut);
151769
151796
  log("Uploaded to netlify");
package/dist/index.mjs CHANGED
@@ -151209,6 +151209,17 @@ async function isOnline() {
151209
151209
  lastCheckTime = now;
151210
151210
  return isOnlineCached;
151211
151211
  }
151212
+ function allowPrereleaseInRange(rangeStr) {
151213
+ try {
151214
+ return new import_semver.default.Range(rangeStr).set.map((conj) => conj.map((c) => {
151215
+ const v = c.semver;
151216
+ if (v.prerelease && v.prerelease.length) return c.operator + v.format();
151217
+ return c.operator + v.major + "." + v.minor + "." + v.patch + "-0";
151218
+ }).join(" ")).join(" || ");
151219
+ } catch {
151220
+ return rangeStr;
151221
+ }
151222
+ }
151212
151223
  /**
151213
151224
  * Robust utility to fetch, cache, and resolve an NPM package.
151214
151225
  * Centralized in core-node to avoid circular dependencies.
@@ -151231,6 +151242,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
151231
151242
  const ctx = options.context;
151232
151243
  const baseDir = ctx.getPackagesPath(packageName);
151233
151244
  let resolvedVersion;
151245
+ const includePrerelease = !!(ctx.releaseTag && ctx.releaseTag !== "latest");
151234
151246
  let resolvedVersionOrRange = versionOrRange;
151235
151247
  if (resolvedVersionOrRange === "local") resolvedVersionOrRange = "latest";
151236
151248
  console.log(`[Fetcher] Resolving ${packageName}@${resolvedVersionOrRange || "latest"}...`);
@@ -151238,7 +151250,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
151238
151250
  if (!await isOnline()) {
151239
151251
  console.warn(`[Fetcher] ${packageName}: offline mode detected (${Date.now() - resolveStart}ms), trying local fallback...`);
151240
151252
  const fallbackStart = Date.now();
151241
- const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, /* @__PURE__ */ new Error("Offline"), baseDir, packageName);
151253
+ const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, /* @__PURE__ */ new Error("Offline"), baseDir, packageName, includePrerelease);
151242
151254
  if (fallbackVersion) {
151243
151255
  resolvedVersion = fallbackVersion;
151244
151256
  console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
@@ -151253,7 +151265,27 @@ async function fetchPackage(packageName, versionOrRange, options) {
151253
151265
  const packument = await packumentPromise;
151254
151266
  const versions = Object.keys(packument.versions);
151255
151267
  const range = resolvedVersionOrRange || "latest";
151256
- let foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
151268
+ let foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range, { includePrerelease });
151269
+ if (!foundVersion && ctx.releaseTag && ctx.releaseTag !== "latest") {
151270
+ const releaseTagVersion = packument["dist-tags"]?.[ctx.releaseTag];
151271
+ if (releaseTagVersion && import_semver.default.valid(releaseTagVersion)) {
151272
+ const rewrittenRangeForCheck = allowPrereleaseInRange(range);
151273
+ if (import_semver.default.satisfies(releaseTagVersion, rewrittenRangeForCheck, { includePrerelease: true })) {
151274
+ console.log(`[Fetcher] Using release tag "${ctx.releaseTag}" (${releaseTagVersion}) for ${packageName}@${range} because it satisfies the range`);
151275
+ foundVersion = releaseTagVersion;
151276
+ }
151277
+ }
151278
+ }
151279
+ if (!foundVersion && includePrerelease) {
151280
+ const rewrittenRange = allowPrereleaseInRange(range);
151281
+ if (rewrittenRange !== range) {
151282
+ const matched = import_semver.default.maxSatisfying(versions, rewrittenRange, { includePrerelease });
151283
+ if (matched) {
151284
+ console.log(`[Fetcher] Resolved ${packageName}@${range} to ${matched} via rewritten range ${rewrittenRange}`);
151285
+ foundVersion = matched;
151286
+ }
151287
+ }
151288
+ }
151257
151289
  if (range === "latest" && ctx.releaseTag && ctx.releaseTag !== "latest") {
151258
151290
  const releaseTagVersion = packument["dist-tags"]?.[ctx.releaseTag];
151259
151291
  if (releaseTagVersion && import_semver.default.valid(releaseTagVersion)) {
@@ -151269,7 +151301,7 @@ async function fetchPackage(packageName, versionOrRange, options) {
151269
151301
  } catch (error) {
151270
151302
  console.warn(`[Fetcher] ${packageName}: remote resolution failed (${Date.now() - resolveStart}ms), trying local fallback...`);
151271
151303
  const fallbackStart = Date.now();
151272
- const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, error, baseDir, packageName);
151304
+ const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, error, baseDir, packageName, includePrerelease);
151273
151305
  if (fallbackVersion) {
151274
151306
  resolvedVersion = fallbackVersion;
151275
151307
  console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
@@ -151451,35 +151483,24 @@ async function installDependencies(packageDir, packageName, options) {
151451
151483
  console.log(`[Fetcher] ${packageName}: Dependencies already installed, skipping.`);
151452
151484
  return;
151453
151485
  }
151454
- const tempDir = `${packageDir}.tmp-deps-${Math.random().toString(36).slice(2)}`;
151455
- await mkdir(tempDir, { recursive: true });
151456
151486
  try {
151457
- await cp(join(packageDir, "package.json"), join(tempDir, "package.json"));
151458
151487
  console.log(`[Fetcher] ${packageName}: Ensuring dependencies are installed...`);
151459
151488
  const pnpmStart = Date.now();
151460
- const { all } = await runPnpm(tempDir, {
151489
+ const { all } = await runPnpm(packageDir, {
151461
151490
  signal: options.signal,
151462
151491
  context: options.context
151463
151492
  });
151464
151493
  console.log(`[Fetcher] ${packageName}: pnpm install command took ${Date.now() - pnpmStart}ms`);
151465
151494
  if (all) console.log(`[Fetcher] ${packageName}: Installation trace:\n${all}`);
151466
- const tempNodeModules = join(tempDir, "node_modules");
151467
- if (existsSync(nodeModulesPath)) await rm(nodeModulesPath, {
151468
- recursive: true,
151469
- force: true
151470
- }).catch(() => {});
151471
- const renameStart = Date.now();
151472
- await rename(tempNodeModules, nodeModulesPath);
151473
- console.log(`[Fetcher] ${packageName}: Dependencies installed successfully (rename took ${Date.now() - renameStart}ms, total installDependencies took ${Date.now() - start}ms).`);
151495
+ console.log(`[Fetcher] ${packageName}: Dependencies installed successfully (total installDependencies took ${Date.now() - start}ms).`);
151474
151496
  } catch (err) {
151475
151497
  console.error(`[Fetcher] ${packageName}: CRITICAL ERROR during dependency installation: ${err.message}`);
151476
151498
  if (err.all) console.error(`[Fetcher] ${packageName}: Error details:\n${err.all}`);
151477
- throw new Error(`Failed to install dependencies for ${packageName}. See logs for details.`);
151478
- } finally {
151479
- await rm(tempDir, {
151499
+ await rm(nodeModulesPath, {
151480
151500
  recursive: true,
151481
151501
  force: true
151482
151502
  }).catch(() => {});
151503
+ throw new Error(`Failed to install dependencies for ${packageName}. See logs for details.`);
151483
151504
  }
151484
151505
  }
151485
151506
  async function fetchPipelabAsset(packageName, versionOrRange, options) {
@@ -151543,7 +151564,7 @@ async function crawlMonorepoPackages() {
151543
151564
  }
151544
151565
  return cache;
151545
151566
  }
151546
- async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix) {
151567
+ async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix, includePrerelease = false) {
151547
151568
  if (!existsSync(baseDir)) return null;
151548
151569
  try {
151549
151570
  const localVersions = (await readdir(baseDir, { withFileTypes: true })).filter((e) => e.isDirectory() || e.isSymbolicLink()).map((e) => e.name).filter((name) => !!import_semver.default.valid(name));
@@ -151556,7 +151577,7 @@ async function tryLocalFallback(versionOrRange, _error, baseDir, logPrefix) {
151556
151577
  return latestLocal;
151557
151578
  }
151558
151579
  } else {
151559
- const matched = import_semver.default.maxSatisfying(localVersions, range);
151580
+ const matched = import_semver.default.maxSatisfying(localVersions, range, { includePrerelease });
151560
151581
  if (matched) {
151561
151582
  console.info(`[Fetcher] ${logPrefix}: Using locally cached matching version: ${matched} for range ${range}`);
151562
151583
  return matched;
@@ -151720,11 +151741,15 @@ var src_default = createNodeDefinition({
151720
151741
  token: createStringParam("", {
151721
151742
  required: true,
151722
151743
  label: "Personal Access Token"
151744
+ }),
151745
+ site: createNetlifySiteParam("", "token", {
151746
+ required: true,
151747
+ label: "Netlify Site"
151723
151748
  })
151724
151749
  },
151725
151750
  outputs: {}
151726
151751
  }),
151727
- runner: createActionRunner(async ({ log, inputs, cwd, abortSignal, paths }) => {
151752
+ runner: createActionRunner(async ({ log, inputs, cwd, abortSignal, paths, context }) => {
151728
151753
  log("Building netlify site");
151729
151754
  const { node } = paths;
151730
151755
  const buildDir = join(cwd, "build");
@@ -151744,7 +151769,8 @@ var src_default = createNodeDefinition({
151744
151769
  "build"
151745
151770
  ],
151746
151771
  extraEnv: { NETLIFY_AUTH_TOKEN: inputs.token },
151747
- signal: abortSignal
151772
+ signal: abortSignal,
151773
+ context
151748
151774
  });
151749
151775
  if (buildOut) log(buildOut);
151750
151776
  const { all: deployOut } = await runPnpm(buildDir, {
@@ -151757,7 +151783,8 @@ var src_default = createNodeDefinition({
151757
151783
  "--prod"
151758
151784
  ],
151759
151785
  extraEnv: { NETLIFY_AUTH_TOKEN: inputs.token },
151760
- signal: abortSignal
151786
+ signal: abortSignal,
151787
+ context
151761
151788
  });
151762
151789
  if (deployOut) log(deployOut);
151763
151790
  log("Uploaded to netlify");