@voltro/cli 0.30.0 → 0.30.2

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.
Files changed (79) hide show
  1. package/CHANGELOG.md +119 -0
  2. package/dist/{apiBuild-BceikpQf.js → apiBuild-BUS1RfPi.js} +2 -2
  3. package/dist/apiBuild-DMlxvL8h.js +2 -0
  4. package/dist/bin.js +3 -3
  5. package/dist/checkCommand-CARZ36Tr.js +2 -0
  6. package/dist/{checkCommand-BMr-X48w.js → checkCommand-D_wdOFhw.js} +498 -321
  7. package/dist/{commands-D4Y1-Nlu.js → commands-BgGAUcku.js} +2392 -2390
  8. package/dist/{dbCommand-C7hbl5pk.js → dbCommand-CbPRCD1x.js} +56 -19
  9. package/dist/dbCommand-Ht47LrV-.js +2 -0
  10. package/dist/{dev-DmnkH-wr.js → dev-GAOIot9G.js} +2202 -2170
  11. package/dist/{dev-Cr-teYsz.js → dev-tPcOmjPJ.js} +1 -1
  12. package/dist/{frameworkTableAssembly-BzAajuUv.js → frameworkTableAssembly-BwIrO5nv.js} +162 -145
  13. package/dist/frameworkTableAssembly-D-EebUQX.js +2 -0
  14. package/dist/index.js +1 -1
  15. package/dist/{inspectMetrics-BeJdP_3b.js → inspectMetrics-BM1vrsga.js} +316 -314
  16. package/dist/{sdkgen-CqpOq_fy.js → sdkgen-BV4fFucu.js} +1 -1
  17. package/dist/{serveCommand-Ciq_wIY8.js → serveCommand-ClqXCX1y.js} +22 -21
  18. package/dist/serveEntry.js +2 -2
  19. package/dist/{start-ocqB1seX.js → start-CTnNvKlk.js} +370 -368
  20. package/dist/startEntry.js +2 -2
  21. package/package.json +17 -17
  22. package/templates/AGENTS.md +1 -1
  23. package/templates/agent-docs/_index.md +1 -1
  24. package/templates/agent-docs/cli.md +29 -0
  25. package/templates/agent-docs/internationalization.md +25 -3
  26. package/templates/agent-docs/routing.md +14 -0
  27. package/templates/agent-docs/whats-new.md +23 -352
  28. package/templates/agent-docs/workflows.md +2 -0
  29. package/templates/apps/api-ai/package.json +7 -7
  30. package/templates/apps/api-auth/package.json +8 -8
  31. package/templates/apps/api-backend/package.json +7 -7
  32. package/templates/apps/api-backend-deactivation/package.json +7 -7
  33. package/templates/apps/api-backend-mail/package.json +8 -8
  34. package/templates/apps/api-backend-mariadb/package.json +9 -9
  35. package/templates/apps/api-backend-sqlite/package.json +8 -8
  36. package/templates/apps/api-backend-storage/package.json +8 -8
  37. package/templates/apps/api-cms/package.json +10 -10
  38. package/templates/apps/api-collab/package.json +8 -8
  39. package/templates/apps/api-data-advanced/package.json +8 -8
  40. package/templates/apps/api-durable/package.json +8 -8
  41. package/templates/apps/api-feature-flags/package.json +9 -9
  42. package/templates/apps/api-governance/package.json +8 -8
  43. package/templates/apps/api-kv/package.json +8 -8
  44. package/templates/apps/api-moderation/package.json +8 -8
  45. package/templates/apps/api-observability/package.json +8 -8
  46. package/templates/apps/api-ratelimit/package.json +8 -8
  47. package/templates/apps/api-rbac/package.json +8 -8
  48. package/templates/apps/api-rest/package.json +7 -7
  49. package/templates/apps/api-saas/package.json +11 -11
  50. package/templates/apps/api-saas-starter/package.json +10 -10
  51. package/templates/apps/api-search/package.json +8 -8
  52. package/templates/apps/api-status/package.json +8 -8
  53. package/templates/apps/api-versioning/package.json +8 -8
  54. package/templates/apps/api-webhooks/package.json +9 -9
  55. package/templates/apps/changelog/package.json +6 -6
  56. package/templates/apps/edge-functions/package.json +2 -2
  57. package/templates/apps/frontend-admin/package.json +8 -8
  58. package/templates/apps/frontend-app/package.json +8 -8
  59. package/templates/apps/frontend-auth/package.json +8 -8
  60. package/templates/apps/frontend-blank/package.json +7 -7
  61. package/templates/apps/frontend-cms/package.json +9 -9
  62. package/templates/apps/frontend-collab/package.json +9 -9
  63. package/templates/apps/frontend-contact/package.json +7 -7
  64. package/templates/apps/frontend-dashboard/package.json +7 -7
  65. package/templates/apps/frontend-docs/package.json +7 -7
  66. package/templates/apps/frontend-i18n/package.json +6 -6
  67. package/templates/apps/frontend-landing/package.json +7 -7
  68. package/templates/apps/frontend-portal/package.json +8 -8
  69. package/templates/apps/frontend-saas/package.json +8 -8
  70. package/templates/apps/frontend-spa/package.json +7 -7
  71. package/templates/apps/frontend-ssr/package.json +7 -7
  72. package/templates/apps/frontend-ssr-api/package.json +8 -8
  73. package/templates/apps/frontend-static-blog/package.json +6 -6
  74. package/templates/apps/frontend-status/package.json +8 -8
  75. package/templates/apps/mobile-app/package.json +2 -2
  76. package/dist/apiBuild-CxvR1Dwt.js +0 -2
  77. package/dist/checkCommand-BOk9y264.js +0 -2
  78. package/dist/dbCommand-D8nhyppR.js +0 -2
  79. package/dist/frameworkTableAssembly-DU0aOxjL.js +0 -2
@@ -1,6 +1,6 @@
1
1
  import { i as e, n as t, r as n, s as r, t as i } from "./seedRunner-Bqxgp7HZ.js";
2
2
  import { n as a } from "./appModuleLoader-C9r9mxZt.js";
3
- import { t as o } from "./frameworkTableAssembly-BzAajuUv.js";
3
+ import { n as o } from "./frameworkTableAssembly-BwIrO5nv.js";
4
4
  import { b as s } from "./fileConventions-Cof68_BL.js";
5
5
  import { a as c, n as l, t as u } from "./cliArgs-qdZSElM3.js";
6
6
  import { basename as d, join as f, relative as p, resolve as m } from "node:path";
@@ -146,7 +146,32 @@ var k = class extends Error {
146
146
  "credential",
147
147
  "privatekey",
148
148
  "private_key"
149
- ], Oe = ["_voltro_audit_log", "_voltro_row_history"], ke = (e, t) => {
149
+ ], Oe = [
150
+ {
151
+ table: "_voltro_audit_log",
152
+ column: "subjectId"
153
+ },
154
+ {
155
+ table: "_voltro_audit_log",
156
+ column: "actor"
157
+ },
158
+ {
159
+ table: "_voltro_audit_log",
160
+ column: "scope"
161
+ },
162
+ {
163
+ table: "_voltro_row_history",
164
+ column: "subjectId"
165
+ },
166
+ {
167
+ table: "_voltro_row_history",
168
+ column: "actor"
169
+ },
170
+ {
171
+ table: "_voltro_row_history",
172
+ column: "scope"
173
+ }
174
+ ], ke = (e, t) => {
150
175
  switch (t) {
151
176
  case "postgres": return `LOWER(CAST(${e} AS text))`;
152
177
  case "mysql":
@@ -169,24 +194,39 @@ var k = class extends Error {
169
194
  table: a.table,
170
195
  column: a.column,
171
196
  scanned: void 0,
172
- hits: void 0
197
+ hits: void 0,
198
+ unavailable: "table"
173
199
  });
174
200
  continue;
175
201
  }
176
- let s = await je(e, `SELECT COUNT(*) AS n FROM ${n}\n WHERE ${Ae(r(a.column), t)}`);
177
- i.push({
178
- table: a.table,
179
- column: a.column,
180
- scanned: o,
181
- hits: s
182
- });
202
+ try {
203
+ let s = await je(e, `SELECT COUNT(*) AS n FROM ${n}\n WHERE ${Ae(r(a.column), t)}`);
204
+ i.push({
205
+ table: a.table,
206
+ column: a.column,
207
+ scanned: o,
208
+ hits: s
209
+ });
210
+ } catch {
211
+ i.push({
212
+ table: a.table,
213
+ column: a.column,
214
+ scanned: o,
215
+ hits: void 0,
216
+ unavailable: "column"
217
+ });
218
+ }
183
219
  }
184
220
  return i;
185
221
  }, Ne = (e, t) => {
186
- let n = [`credential scan · dialect ${t}`, ""];
222
+ let n = [`credential scan · dialect ${t}`, ""], r = /* @__PURE__ */ new Set();
187
223
  for (let t of e) {
224
+ if (t.unavailable === "column") {
225
+ n.push(` · ${t.table}.${t.column} — column is not present on this deployment (${t.scanned} row(s) exist but this column was not scanned)`);
226
+ continue;
227
+ }
188
228
  if (t.scanned === void 0) {
189
- n.push(` · ${t.table} — table not present (nothing scanned)`);
229
+ r.has(t.table) || (r.add(t.table), n.push(` · ${t.table} — table not present (nothing scanned)`));
190
230
  continue;
191
231
  }
192
232
  if (t.scanned === 0) {
@@ -196,9 +236,9 @@ var k = class extends Error {
196
236
  let e = (t.hits ?? 0) > 0 ? "✗" : "✓";
197
237
  n.push(` ${e} ${t.table}.${t.column} — ${t.hits} of ${t.scanned} row(s) match a credential-shaped key`);
198
238
  }
199
- let r = e.reduce((e, t) => e + (t.hits ?? 0), 0);
200
- return n.push(""), r > 0 ? n.push(` ${r} row(s) carry something credential-shaped.`, " Purge them AND rotate the credentials — assume anything written to a log", " table has been read. Then stop putting the credential on the Subject:", " `connectionCredentials(...)` keeps it in the framework vault.") : e.every((e) => e.scanned === void 0 || e.scanned === 0) ? n.push(" NOTHING WAS SCANNED. This run proves nothing about your data.") : n.push(" No credential-shaped keys found in the rows that exist."), n.push("", " Run this on EVERY environment. A dev database is not a sample of production."), n.join("\n");
201
- }, Pe = (e) => e.some((e) => (e.hits ?? 0) > 0) ? 1 : e.every((e) => e.scanned === void 0 || e.scanned === 0) ? 2 : 0, j = /\.migration\.ts$/, M = async (e, t) => {
239
+ let i = e.reduce((e, t) => e + (t.hits ?? 0), 0);
240
+ return n.push(""), i > 0 ? n.push(` ${i} row(s) carry something credential-shaped.`, " Purge them AND rotate the credentials — assume anything written to a log", " table has been read. Then stop putting the credential on the Subject:", " `connectionCredentials(...)` keeps it in the framework vault.") : e.every((e) => e.scanned === void 0 || e.scanned === 0 || e.unavailable !== void 0) ? n.push(" NOTHING WAS SCANNED. This run proves nothing about your data.") : n.push(" No credential-shaped keys found in the rows that exist."), n.push("", " Run this on EVERY environment. A dev database is not a sample of production."), n.join("\n");
241
+ }, Pe = (e) => e.some((e) => (e.hits ?? 0) > 0) ? 1 : e.every((e) => e.unavailable !== void 0 || e.scanned === void 0 || e.scanned === 0) ? 2 : 0, j = /\.migration\.ts$/, M = async (e, t) => {
202
242
  let n = [];
203
243
  for (let r of e) {
204
244
  let e;
@@ -1216,10 +1256,7 @@ export default defineMigration({
1216
1256
  column: a
1217
1257
  });
1218
1258
  }
1219
- let r = [...Oe.map((e) => ({
1220
- table: e,
1221
- column: "subject"
1222
- })), ...n], i = await J(await q(), b.SqlClient.pipe(g.flatMap((e) => g.promise(() => Me(e, t, r, G)))));
1259
+ let r = [...Oe, ...n], i = await J(await q(), b.SqlClient.pipe(g.flatMap((e) => g.promise(() => Me(e, t, r, G)))));
1223
1260
  return console.log(Ne(i, t)), Pe(i);
1224
1261
  }
1225
1262
  }, vt = async (e) => {
@@ -0,0 +1,2 @@
1
+ import { s as e } from "./dbCommand-CbPRCD1x.js";
2
+ export { e as runDbCommand };