vela 0.10.7 → 0.10.9

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/bin.js CHANGED
@@ -7,7 +7,7 @@ import { fileURLToPath as fileURLToPath2 } from "node:url";
7
7
  // package.json
8
8
  var package_default = {
9
9
  name: "vela",
10
- version: "0.10.7",
10
+ version: "0.10.9",
11
11
  type: "module",
12
12
  description: "A CLI for creating and updating SvelteKit projects",
13
13
  license: "MIT",
@@ -41,7 +41,7 @@ var package_default = {
41
41
  dependencies: {
42
42
  "@clack/prompts": "^1.7.0",
43
43
  "@faker-js/faker": "^10.6.0",
44
- "@velastack/patterns": "^0.1.2",
44
+ "@velastack/patterns": "^0.1.4",
45
45
  "@velastack/pocketbase-codegen": "^0.1.0",
46
46
  "annotate-json-schema": "^0.1.0",
47
47
  commander: "^13.1.0",
@@ -1210,13 +1210,20 @@ function reportResult(report4) {
1210
1210
  body.push(`${label3}:`);
1211
1211
  for (const item of items) body.push(`- ${item}`);
1212
1212
  }
1213
+ const failures = report4.failures ?? [];
1213
1214
  if (body.length > 0) {
1214
1215
  p3.log.success(`${report4.summary}
1215
1216
 
1216
1217
  ${body.join("\n")}`);
1217
- } else {
1218
+ } else if (failures.length === 0) {
1218
1219
  p3.log.success(report4.summary);
1219
1220
  }
1221
+ for (const failure of failures) {
1222
+ const headline = failure.status === "not-found" ? `Could not find ${failure.path}` : `Could not update ${failure.path}`;
1223
+ p3.log.warn(failure.message ? `${headline}
1224
+
1225
+ ${failure.message}` : headline);
1226
+ }
1220
1227
  if (report4.nextSteps && report4.nextSteps.length > 0) {
1221
1228
  p3.note(report4.nextSteps.map((s) => `- ${s}`).join("\n"), "Next steps", {
1222
1229
  format: (line) => line
@@ -1749,6 +1756,7 @@ import { bySlug } from "@velastack/patterns";
1749
1756
  function toRelative(root, filePath) {
1750
1757
  return path13.isAbsolute(filePath) ? path13.relative(root, filePath) : filePath;
1751
1758
  }
1759
+ var isSuccess = (f) => (f.status ?? "success") === "success";
1752
1760
  async function runPattern(slug2, argv2, input, report4) {
1753
1761
  const pattern = bySlug[slug2];
1754
1762
  if (!pattern) {
@@ -1783,20 +1791,32 @@ async function runPattern(slug2, argv2, input, report4) {
1783
1791
  throw e;
1784
1792
  }
1785
1793
  const rel = (f) => toRelative(workspaceRootDir, f);
1786
- const totalChanges = result.creates.length + result.modifies.length + result.deletes.length + result.components.length + result.packages.length + result.collections.length;
1787
- if (totalChanges === 0) {
1794
+ const files = [...result.creates, ...result.modifies, ...result.deletes];
1795
+ const failures = files.filter((f) => !isSuccess(f)).map((f) => ({
1796
+ path: rel(f.path),
1797
+ status: f.status === "not-found" ? "not-found" : "failed",
1798
+ message: f.message
1799
+ }));
1800
+ const created = result.creates.filter(isSuccess);
1801
+ const modified = result.modifies.filter(isSuccess);
1802
+ const deleted = result.deletes.filter(isSuccess);
1803
+ const totalChanges = created.length + modified.length + deleted.length + result.components.length + result.packages.length + result.collections.length;
1804
+ if (totalChanges === 0 && failures.length === 0) {
1788
1805
  p6.log.info(`${pattern.title ?? slug2} produced no changes.`);
1789
1806
  return;
1790
1807
  }
1791
1808
  reportResult({
1792
1809
  summary: report4.summary ?? `Applied ${pattern.title ?? slug2}.`,
1793
- filesCreated: result.creates.map((f) => rel(f.path)),
1794
- filesModified: result.modifies.map((f) => rel(f.path)),
1795
- filesDeleted: result.deletes.map((f) => rel(f.path)),
1810
+ filesCreated: created.map((f) => rel(f.path)),
1811
+ filesModified: modified.map((f) => rel(f.path)),
1812
+ filesDeleted: deleted.map((f) => rel(f.path)),
1796
1813
  componentsAdded: result.components,
1797
1814
  packagesInstalled: result.packages,
1798
1815
  collectionsAdded: result.collections.map((c) => c.name),
1799
- nextSteps: report4.nextSteps
1816
+ failures,
1817
+ // Next steps assume the pattern applied; when part of it didn't, the
1818
+ // remediation snippets above are the actual next step.
1819
+ nextSteps: failures.length > 0 ? void 0 : report4.nextSteps
1800
1820
  });
1801
1821
  }
1802
1822
 
@@ -7055,6 +7075,12 @@ import { x as x3 } from "tinyexec";
7055
7075
  import { detect as detect5 } from "package-manager-detector";
7056
7076
  import { resolveCommand as resolveCommand5 } from "package-manager-detector/commands";
7057
7077
 
7078
+ // src/lib/build-env.ts
7079
+ function applyBuildEnv(cwd, env2 = process.env) {
7080
+ env2.VITE_BUILD = "true";
7081
+ env2.VELA_DATA_DIR ??= localDataDir(cwd);
7082
+ }
7083
+
7058
7084
  // src/lib/origin.ts
7059
7085
  import process22 from "node:process";
7060
7086
  function resolveOrigin(workspaceRootDir, envTag, config = {}) {
@@ -7078,7 +7104,7 @@ function normalizeOrigin(value) {
7078
7104
  var PRERENDERED_DIR = path35.join(".svelte-kit", "output", "prerendered");
7079
7105
  var build = new Command67("build").description("build the app").configureHelp(helpConfig).option("-t, --target <target>", "which copy of the app to build for", PRODUCTION_TARGET).action(async (options) => {
7080
7106
  const cwd = process23.cwd();
7081
- process23.env.VELA_DATA_DIR ??= localDataDir(cwd);
7107
+ applyBuildEnv(cwd);
7082
7108
  const origin = await originForBuild(cwd, options.target);
7083
7109
  if (origin) process23.env.VELA_ORIGIN = origin;
7084
7110
  let pbProc;
@@ -7583,6 +7609,22 @@ Set them with \`vela env set POCKETBASE_SUPERUSER_EMAIL\` and \`vela env set POC
7583
7609
  }
7584
7610
  const localPort = await findFreePort("127.0.0.1");
7585
7611
  await session.forwardLocalPort(localPort, "127.0.0.1", pbPort);
7612
+ if (!await superuserAuthenticates(localPort, email3, password11)) {
7613
+ await session.cancelForward(localPort, "127.0.0.1", pbPort);
7614
+ throw new Error(
7615
+ `${instance} does not accept the superuser credentials in its own environment.
7616
+
7617
+ They are what \`--remote-db\` renders the build as. The usual cause is a password
7618
+ changed in the PocketBase admin panel, which leaves the database and
7619
+ ${pc15.cyan(`/etc/vela/apps/${instance}/env`)} disagreeing.
7620
+
7621
+ Point the environment at the password the database has:
7622
+ ${pc15.cyan("vela env set POCKETBASE_SUPERUSER_PASSWORD")}
7623
+
7624
+ or build against a throwaway local database instead:
7625
+ ${pc15.cyan("vela deploy --no-remote-db")}`
7626
+ );
7627
+ }
7586
7628
  return {
7587
7629
  pbPort,
7588
7630
  env: {
@@ -7593,6 +7635,21 @@ Set them with \`vela env set POCKETBASE_SUPERUSER_EMAIL\` and \`vela env set POC
7593
7635
  close: () => session.cancelForward(localPort, "127.0.0.1", pbPort)
7594
7636
  };
7595
7637
  }
7638
+ async function superuserAuthenticates(port, identity, password11) {
7639
+ try {
7640
+ const response = await fetch(
7641
+ `http://127.0.0.1:${port}/api/collections/_superusers/auth-with-password`,
7642
+ {
7643
+ method: "POST",
7644
+ headers: { "content-type": "application/json" },
7645
+ body: JSON.stringify({ identity, password: password11 })
7646
+ }
7647
+ );
7648
+ return response.ok;
7649
+ } catch {
7650
+ return true;
7651
+ }
7652
+ }
7596
7653
  async function uploadRelease(session, instance, release, entries) {
7597
7654
  const dir = remotePaths.release(instance, release);
7598
7655
  await session.script(`mkdir -p "$1"`, { args: [dir] });