@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.
- package/CHANGELOG.md +119 -0
- package/dist/{apiBuild-BceikpQf.js → apiBuild-BUS1RfPi.js} +2 -2
- package/dist/apiBuild-DMlxvL8h.js +2 -0
- package/dist/bin.js +3 -3
- package/dist/checkCommand-CARZ36Tr.js +2 -0
- package/dist/{checkCommand-BMr-X48w.js → checkCommand-D_wdOFhw.js} +498 -321
- package/dist/{commands-D4Y1-Nlu.js → commands-BgGAUcku.js} +2392 -2390
- package/dist/{dbCommand-C7hbl5pk.js → dbCommand-CbPRCD1x.js} +56 -19
- package/dist/dbCommand-Ht47LrV-.js +2 -0
- package/dist/{dev-DmnkH-wr.js → dev-GAOIot9G.js} +2202 -2170
- package/dist/{dev-Cr-teYsz.js → dev-tPcOmjPJ.js} +1 -1
- package/dist/{frameworkTableAssembly-BzAajuUv.js → frameworkTableAssembly-BwIrO5nv.js} +162 -145
- package/dist/frameworkTableAssembly-D-EebUQX.js +2 -0
- package/dist/index.js +1 -1
- package/dist/{inspectMetrics-BeJdP_3b.js → inspectMetrics-BM1vrsga.js} +316 -314
- package/dist/{sdkgen-CqpOq_fy.js → sdkgen-BV4fFucu.js} +1 -1
- package/dist/{serveCommand-Ciq_wIY8.js → serveCommand-ClqXCX1y.js} +22 -21
- package/dist/serveEntry.js +2 -2
- package/dist/{start-ocqB1seX.js → start-CTnNvKlk.js} +370 -368
- package/dist/startEntry.js +2 -2
- package/package.json +17 -17
- package/templates/AGENTS.md +1 -1
- package/templates/agent-docs/_index.md +1 -1
- package/templates/agent-docs/cli.md +29 -0
- package/templates/agent-docs/internationalization.md +25 -3
- package/templates/agent-docs/routing.md +14 -0
- package/templates/agent-docs/whats-new.md +23 -352
- package/templates/agent-docs/workflows.md +2 -0
- package/templates/apps/api-ai/package.json +7 -7
- package/templates/apps/api-auth/package.json +8 -8
- package/templates/apps/api-backend/package.json +7 -7
- package/templates/apps/api-backend-deactivation/package.json +7 -7
- package/templates/apps/api-backend-mail/package.json +8 -8
- package/templates/apps/api-backend-mariadb/package.json +9 -9
- package/templates/apps/api-backend-sqlite/package.json +8 -8
- package/templates/apps/api-backend-storage/package.json +8 -8
- package/templates/apps/api-cms/package.json +10 -10
- package/templates/apps/api-collab/package.json +8 -8
- package/templates/apps/api-data-advanced/package.json +8 -8
- package/templates/apps/api-durable/package.json +8 -8
- package/templates/apps/api-feature-flags/package.json +9 -9
- package/templates/apps/api-governance/package.json +8 -8
- package/templates/apps/api-kv/package.json +8 -8
- package/templates/apps/api-moderation/package.json +8 -8
- package/templates/apps/api-observability/package.json +8 -8
- package/templates/apps/api-ratelimit/package.json +8 -8
- package/templates/apps/api-rbac/package.json +8 -8
- package/templates/apps/api-rest/package.json +7 -7
- package/templates/apps/api-saas/package.json +11 -11
- package/templates/apps/api-saas-starter/package.json +10 -10
- package/templates/apps/api-search/package.json +8 -8
- package/templates/apps/api-status/package.json +8 -8
- package/templates/apps/api-versioning/package.json +8 -8
- package/templates/apps/api-webhooks/package.json +9 -9
- package/templates/apps/changelog/package.json +6 -6
- package/templates/apps/edge-functions/package.json +2 -2
- package/templates/apps/frontend-admin/package.json +8 -8
- package/templates/apps/frontend-app/package.json +8 -8
- package/templates/apps/frontend-auth/package.json +8 -8
- package/templates/apps/frontend-blank/package.json +7 -7
- package/templates/apps/frontend-cms/package.json +9 -9
- package/templates/apps/frontend-collab/package.json +9 -9
- package/templates/apps/frontend-contact/package.json +7 -7
- package/templates/apps/frontend-dashboard/package.json +7 -7
- package/templates/apps/frontend-docs/package.json +7 -7
- package/templates/apps/frontend-i18n/package.json +6 -6
- package/templates/apps/frontend-landing/package.json +7 -7
- package/templates/apps/frontend-portal/package.json +8 -8
- package/templates/apps/frontend-saas/package.json +8 -8
- package/templates/apps/frontend-spa/package.json +7 -7
- package/templates/apps/frontend-ssr/package.json +7 -7
- package/templates/apps/frontend-ssr-api/package.json +8 -8
- package/templates/apps/frontend-static-blog/package.json +6 -6
- package/templates/apps/frontend-status/package.json +8 -8
- package/templates/apps/mobile-app/package.json +2 -2
- package/dist/apiBuild-CxvR1Dwt.js +0 -2
- package/dist/checkCommand-BOk9y264.js +0 -2
- package/dist/dbCommand-D8nhyppR.js +0 -2
- 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 {
|
|
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 = [
|
|
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
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
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
|
|
200
|
-
return n.push(""),
|
|
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.
|
|
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) => {
|