@voltro/cli 0.37.0 → 0.39.0
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 +316 -0
- package/THIRD-PARTY-NOTICES.md +80 -45
- package/dist/{addCommand-BNeoeSxe.js → addCommand-C05L9tZh.js} +2 -2
- package/dist/addCommand-C3MdJG-a.js +2 -0
- package/dist/{agentsMd-mhQMF1bx.js → agentsMd-7zI2h5l9.js} +3 -3
- package/dist/agentsMd-BFCXh2gl.js +2 -0
- package/dist/apiBuild-2GvK8CUB.js +2 -0
- package/dist/{apiBuild-DGsShRuF.js → apiBuild-DGalUk9v.js} +3 -3
- package/dist/baselineCommand-CXv680Dc.js +2 -0
- package/dist/{baselineCommand-C6NMt-oa.js → baselineCommand-Ck2Xm8M7.js} +18 -18
- package/dist/bin.js +1 -1
- package/dist/bootRefusal-pgvDxlrU.js +7 -0
- package/dist/{build-CiFA-E19.js → build-CfF6t0UM.js} +88 -81
- package/dist/{capabilitiesCommand-nq_pz5xd.js → capabilitiesCommand-D5gucwYa.js} +8 -8
- package/dist/{checkCommand-CIPYyNyc.js → checkCommand-BV56Pcc1.js} +1 -1
- package/dist/{checkCommand-CLPTzYqM.js → checkCommand-CBtynBKW.js} +34 -34
- package/dist/{cloudCmd-NQSwe_Qk.js → cloudCmd-C42gaO8s.js} +16 -16
- package/dist/{clusterCmd-D5wsCmA_.js → clusterCmd-DrVFCzSj.js} +8 -4
- package/dist/{codegen-GYYcdpCg.js → codegen-CbpGCWLG.js} +1 -1
- package/dist/codegen-i8QGcHsi.js +2 -0
- package/dist/codegenCommand-W7SDdiAQ.js +129 -0
- package/dist/{codemodRunner-cyqu5oxr.js → codemodRunner-D-jTyvWo.js} +679 -495
- package/dist/{commands-BwG9A9Vv.js → commands-BD9eBRY3.js} +48 -48
- package/dist/{connectionConfig-UFlIEiys.js → connectionConfig-Bk9IC7D0.js} +1 -1
- package/dist/{dashboardCommand-C7U146xQ.js → dashboardCommand-7qGylm0F.js} +3 -3
- package/dist/{dataCommand-BOwd8_aJ.js → dataCommand-C_F2DYxe.js} +14 -11
- package/dist/{dbCommand-C4UW8cVN.js → dbCommand-DSwGv9wS.js} +50 -49
- package/dist/dbCommand-DcqEyxju.js +2 -0
- package/dist/dev-alhkKoEX.js +3 -0
- package/dist/{dev-bwDgSObH.js → dev-gqpnzVhI.js} +2357 -2280
- package/dist/{dialectDriver-CgXnDfec.js → dialectDriver-czCHYpeH.js} +2 -1
- package/dist/{doctorCommand-BXyrtN2l.js → doctorCommand-Bvs-BQrM.js} +242 -238
- package/dist/doctorCommand-CVXfRrng.js +2 -0
- package/dist/{dormancyCommand-BDdRRLsa.js → dormancyCommand-B-PPHc9Q.js} +1 -1
- package/dist/{e2eCmd-BRabZww-.js → e2eCmd-uFHig1hV.js} +8 -2
- package/dist/{embeddingsCommand-CjWGcAE6.js → embeddingsCommand-OKY6XjUf.js} +6 -6
- package/dist/{envCommand-B_TeG297.js → envCommand-B1-Zm85H.js} +2 -2
- package/dist/{evolveCommand-D6N-WfA4.js → evolveCommand-C4-NlFbd.js} +6 -8
- package/dist/{generateCommand-DbgcUpGw.js → generateCommand-CcyvH2ve.js} +1 -1
- package/dist/index.js +1 -1
- package/dist/{infoCommand-BHKTprrx.js → infoCommand-CTo8Jnhq.js} +7 -7
- package/dist/inspect-B7U7Cl_Z.js +1192 -0
- package/dist/inspect-DUze25t0.js +2 -0
- package/dist/{inspectCmd-EHFZ9yYu.js → inspectCmd-niF97fAq.js} +5 -5
- package/dist/inspectGateHint-BjnFubmH.js +7 -0
- package/dist/{logFileSink-C_D2wRN1.js → logFileSink-B4uP8pvf.js} +1 -1
- package/dist/{logsCmd-D36xK7Zu.js → logsCmd-B6oNsfaZ.js} +10 -7
- package/dist/{manifestBuild-hpPLaGxV.js → manifestBuild-BK42hu0k.js} +1 -1
- package/dist/manifestBuild-j0n109tt.js +2 -0
- package/dist/{metaCommands-CIoQNlaQ.js → metaCommands-DUYR--Ts.js} +1 -1
- package/dist/{migrate-RwgUWXfc.js → migrate-BnPw2zC8.js} +7 -4
- package/dist/{packageCommand-Cug_3Ogl.js → packageCommand-9SVyvsSo.js} +3 -2
- package/dist/{probeCommand-BPEpwT32.js → probeCommand-C9gazU0H.js} +35 -24
- package/dist/{projectScaffold-CxgtJvlb.js → projectScaffold-BEhhHjPr.js} +1 -1
- package/dist/{projectScaffold-DDgWbNLe.js → projectScaffold-BvhLOrLq.js} +17 -15
- package/dist/{runtimeTrace-WYV7qYvz.js → runtimeTrace-DzZOCd94.js} +1 -1
- package/dist/{scheduleManifestCmd-D2x0CTTY.js → scheduleManifestCmd-kmWzrO_w.js} +6 -9
- package/dist/{sdkgen-TM5sSdf7.js → sdkgen-C4roLErM.js} +4 -4
- package/dist/{seedRunner-ZmLSqNe2.js → seedRunner-IdHEprqf.js} +1 -4
- package/dist/serveCommand-B6TATyCj.js +1770 -0
- package/dist/serveCommand-CNR0gI9V.js +2 -0
- package/dist/serveEntry.js +2 -2
- package/dist/{serverlessCommand-CfJZy6dS.js → serverlessCommand-DbJ7Plg9.js} +3 -3
- package/dist/{start-BgN62boB.js → start-BNuTWdRd.js} +1 -1
- package/dist/{start-T4VesWiM.js → start-ft_KzFTd.js} +240 -237
- package/dist/startEntry.js +1 -1
- package/dist/startup.d.ts +40 -1
- package/dist/startup.js +2 -2
- package/dist/startupRunner-CEqQq7ax.js +108 -0
- package/dist/{test-DIQ0jlkQ.js → test-CLYXrZ2F.js} +1 -1
- package/dist/{tracesCmd-DStmCJPi.js → tracesCmd-DgtgOUdi.js} +7 -4
- package/dist/{typecheckCommand-BlsWiCNq.js → typecheckCommand-BuCtT92o.js} +7 -7
- package/dist/updateCommand-6FMU2klq.js +2 -0
- package/dist/{updateCommand-9GHHsmDf.js → updateCommand-CHBmCB17.js} +5 -3
- package/dist/{webDev-Dybxew86.js → webDev-CTpSY-e_.js} +892 -856
- package/dist/webDev-id3I5PvG.js +2 -0
- package/dist/{webhookDiscovery-D7VaeMlz.js → webhookDiscovery-CphsQe59.js} +4 -6
- package/dist/{webhookDiscovery-CrGAfhIG.js → webhookDiscovery-il9ti-HE.js} +1 -1
- package/dist/{webhooksCommand-CHWSPk5z.js → webhooksCommand-BVvOtZ1B.js} +1 -1
- package/package.json +39 -21
- package/templates/AGENTS.md +2 -2
- package/templates/agent-docs/_index.md +2 -2
- package/templates/agent-docs/_manifest.json +2 -2
- package/templates/agent-docs/authentication.md +30 -0
- package/templates/agent-docs/cli.md +17 -13
- package/templates/agent-docs/data.md +44 -1
- package/templates/agent-docs/database/migrations.md +2 -2
- package/templates/agent-docs/database/seedsdialects.md +2 -2
- package/templates/agent-docs/deployment.md +21 -7
- package/templates/agent-docs/internationalization.md +10 -3
- package/templates/agent-docs/local-first-mobile.md +141 -20
- package/templates/agent-docs/plugins/audit.md +4 -0
- package/templates/agent-docs/plugins/auth.md +4 -6
- package/templates/agent-docs/plugins/mail.md +1 -1
- package/templates/agent-docs/plugins/ratelimit.md +1 -1
- package/templates/agent-docs/plugins.md +3 -1
- package/templates/agent-docs/reference.md +3 -2
- package/templates/agent-docs/releases.md +130 -1
- package/templates/agent-docs/routing.md +34 -2
- package/templates/agent-docs/templates/apibackends.md +1 -1
- package/templates/agent-docs/templates/mobile.md +1 -1
- package/templates/agent-docs/whats-new.md +178 -44
- 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-cms/tests/content.write.test.ts +16 -2
- package/templates/apps/api-collab/mutations/documents.setBody.mutation.server.ts +11 -5
- package/templates/apps/api-collab/package.json +8 -8
- package/templates/apps/api-collab/tests/documents.setBody.test.ts +8 -2
- 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/authz.ts +16 -1
- 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/mutations/documents.update.mutation.server.ts +7 -5
- 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 +9 -9
- 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 +10 -10
- 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/README.md +41 -17
- package/templates/apps/mobile-app/app.config.ts +1 -1
- package/templates/apps/mobile-app/package.json +15 -11
- package/templates/apps/mobile-app/src/app/_layout.tsx +44 -13
- package/templates/apps/mobile-app/src/app/index.tsx +1 -1
- package/templates/apps/mobile-app/src/app/settings.tsx +4 -1
- package/templates/apps/mobile-app/src/client.ts +74 -57
- package/templates/apps/mobile-app/src/lib/api.ts +4 -4
- package/templates/apps/mobile-app/src/lib/deeplinks.ts +6 -6
- package/templates/apps/mobile-app/src/persistence.ts +24 -3
- package/templates/apps/mobile-app/tsconfig.json +17 -3
- package/templates/patches/@effect__cluster@0.60.0.patch +51 -3
- package/dist/addCommand-aXSQveak.js +0 -2
- package/dist/agentsMd-BTchIZku.js +0 -2
- package/dist/apiBuild-D0f6hYbH.js +0 -2
- package/dist/baselineCommand-Cfw2Afwm.js +0 -2
- package/dist/codegen-uYrrDzQv.js +0 -2
- package/dist/codegenCommand-BxS3sCeJ.js +0 -30
- package/dist/dbCommand-CC-qNzpz.js +0 -2
- package/dist/dev-BV6XNYKf.js +0 -3
- package/dist/doctorCommand-C4L61G_L.js +0 -2
- package/dist/inspect-CjTYzAs_.js +0 -1190
- package/dist/inspect-P4pxoMaV.js +0 -2
- package/dist/inspectGateHint-BF6608UT.js +0 -4
- package/dist/manifestBuild-COkJoyAr.js +0 -2
- package/dist/serveCommand-CyZsXL1l.js +0 -1766
- package/dist/serveCommand-qumm7jdF.js +0 -2
- package/dist/startupRunner-DPGFchOa.js +0 -71
- package/dist/updateCommand-BN0tkl9-.js +0 -2
- package/dist/webDev-BcykISYQ2.js +0 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { D as t, G as n, K as r, O as i, S as a, W as o, Y as s, a as c, b as l, d as u, f as d, k as f, s as p, st as m, ut as h, v as g, x as _, y as v } from "./webDev-
|
|
1
|
+
import { hn as e } from "./dev-gqpnzVhI.js";
|
|
2
|
+
import { D as t, G as n, K as r, O as i, S as a, W as o, Y as s, a as c, b as l, d as u, f as d, k as f, s as p, st as m, ut as h, v as g, x as _, y as v } from "./webDev-CTpSY-e_.js";
|
|
3
3
|
import { t as y } from "./cliRuntime-Dh7UDinH.js";
|
|
4
4
|
import { a as b } from "./renderModeScan-D7J1B7Kw.js";
|
|
5
|
-
import { i as x, o as S, s as C } from "./apiBuild-
|
|
5
|
+
import { i as x, o as S, s as C } from "./apiBuild-DGalUk9v.js";
|
|
6
6
|
import { n as w } from "./renderProfile-1OWWAAtx.js";
|
|
7
7
|
import { dirname as T, join as E, resolve as D } from "node:path";
|
|
8
8
|
import { existsSync as O, promises as k } from "node:fs";
|
|
@@ -91,7 +91,11 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
91
91
|
r.push(a);
|
|
92
92
|
} else r.push(i);
|
|
93
93
|
return r.length === 0 ? "/" : "/" + r.join("/");
|
|
94
|
-
}, z = (e, t) =>
|
|
94
|
+
}, z = (e, t) => {
|
|
95
|
+
if (t === "/" || t === "") return E(e, "index.html");
|
|
96
|
+
let n = t.replace(/^\//, "").split("/");
|
|
97
|
+
return E(e, ...n, "index.html");
|
|
98
|
+
}, B = (e) => e.replace(/<script\b(?=[^>]*\btype="module")(?:(?!<\/script>).)*<\/script>/gi, "").replace(/<script\b(?=[^>]*\bsrc=)(?:(?!<\/script>).)*<\/script>/gi, "").replace(/<link\b[^>]*\brel="modulepreload"[^>]*>/gi, ""), V = (e, t) => {
|
|
95
99
|
let n = e.replace("<div id=\"root\"></div>", `<div id="root">${t.body}</div>`), r = [
|
|
96
100
|
t.metaHtml,
|
|
97
101
|
`<meta name="voltro-interactive" content="${t.interactive}" />`,
|
|
@@ -194,30 +198,31 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
194
198
|
},
|
|
195
199
|
appType: "custom",
|
|
196
200
|
logLevel: "warn"
|
|
197
|
-
}), g = await h.ssrLoadModule("@voltro/web/ssr"), { renderPageToHtml: v, renderMetaToHtml: y, renderRouterStateScript: x, isDeferredLoaderResult: S, assertDeferralSupported: C, beginStoreSeeds: w, seedPreloadedSubscription: D } = g,
|
|
201
|
+
}), g = await h.ssrLoadModule("@voltro/web/ssr"), { renderPageToHtml: v, renderMetaToHtml: y, renderRouterStateScript: x, isDeferredLoaderResult: S, assertDeferralSupported: C, beginStoreSeeds: w, seedPreloadedSubscription: D, seedPreloadedSubscriptionFailure: A } = g, j = /* @__PURE__ */ new Map();
|
|
198
202
|
if (e.locales && e.locales.length > 0 && e.defaultLocale) try {
|
|
199
203
|
let n = (await h.ssrLoadModule("@voltro/i18n")).makeSsgWrap;
|
|
200
204
|
if (typeof n != "function") throw Error("@voltro/i18n is installed but missing the `makeSsgWrap` export — upgrade @voltro/i18n to a version that ships SSG support.");
|
|
201
205
|
for (let r of e.locales) try {
|
|
202
206
|
let i = await h.ssrLoadModule(E(t, "src", "locales", `${r}.ts`)), a = i.default ?? i;
|
|
203
|
-
|
|
207
|
+
j.set(r, n(r, a, e.defaultLocale));
|
|
204
208
|
} catch (e) {
|
|
205
209
|
F.warn(`i18n catalog missing for locale '${r}' — pages rendered at /${r}/* will crash. Add src/locales/${r}.ts.`, {}, e);
|
|
206
210
|
}
|
|
207
211
|
} catch (e) {
|
|
208
212
|
F.warn("i18n wrapper unavailable for SSG — pages that call useT() will fail. Check that @voltro/i18n is installed.", {}, e);
|
|
209
213
|
}
|
|
210
|
-
let
|
|
214
|
+
let M = [], N = {}, P = (e) => e.dir === "" ? E(t, "src", "pages") : E(t, "src", "pages", e.dir), I = async (e) => await h.ssrLoadModule(E(P(e), "layout.tsx")), B = async (e) => await h.ssrLoadModule(E(P(e), "error.tsx")), U = async (e) => await h.ssrLoadModule(E(P(e), "loading.tsx")), W = (e, t) => ({
|
|
211
215
|
params: e.params,
|
|
212
216
|
pathname: e.pathname,
|
|
213
217
|
search: "",
|
|
214
218
|
signal: t,
|
|
215
219
|
headers: {},
|
|
216
|
-
query: void 0
|
|
220
|
+
query: void 0,
|
|
221
|
+
isServer: !0
|
|
217
222
|
});
|
|
218
223
|
for (let a of r) {
|
|
219
224
|
let r = `${E(t, "src", "pages", a.file)}`, o = await h.ssrLoadModule(r), s = b(o, E("src", "pages", a.file));
|
|
220
|
-
|
|
225
|
+
N[a.pattern] = s;
|
|
221
226
|
let u = s.renderMode, d = p(i, a.dirChain);
|
|
222
227
|
if (u === "spa") {
|
|
223
228
|
let t = await H({
|
|
@@ -227,17 +232,17 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
227
232
|
shellTemplate: l,
|
|
228
233
|
distDir: n,
|
|
229
234
|
helpers: g,
|
|
230
|
-
loadLayout:
|
|
231
|
-
loadError:
|
|
232
|
-
loadPending:
|
|
233
|
-
ctx:
|
|
235
|
+
loadLayout: I,
|
|
236
|
+
loadError: B,
|
|
237
|
+
loadPending: U,
|
|
238
|
+
ctx: W({
|
|
234
239
|
params: {},
|
|
235
240
|
pathname: a.pattern
|
|
236
241
|
}, new AbortController().signal),
|
|
237
|
-
outerWrap:
|
|
242
|
+
outerWrap: j.get(e.defaultLocale ?? ""),
|
|
238
243
|
locale: e.defaultLocale
|
|
239
244
|
});
|
|
240
|
-
t &&
|
|
245
|
+
t && M.push(t);
|
|
241
246
|
continue;
|
|
242
247
|
}
|
|
243
248
|
if (u !== "static") {
|
|
@@ -288,10 +293,10 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
288
293
|
try {
|
|
289
294
|
({chain: r, segmentLoaderData: i} = await c({
|
|
290
295
|
entries: d,
|
|
291
|
-
loadLayout:
|
|
292
|
-
loadError:
|
|
293
|
-
loadPending:
|
|
294
|
-
ctx:
|
|
296
|
+
loadLayout: I,
|
|
297
|
+
loadError: B,
|
|
298
|
+
loadPending: U,
|
|
299
|
+
ctx: W(t, s.signal)
|
|
295
300
|
}));
|
|
296
301
|
} catch (e) {
|
|
297
302
|
let n = e?._voltroControl;
|
|
@@ -302,10 +307,10 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
302
307
|
}
|
|
303
308
|
F.warn("layout loader threw, falling back to no layout data", { pathname: t.pathname }, e), {chain: r, segmentLoaderData: i} = await c({
|
|
304
309
|
entries: d,
|
|
305
|
-
loadLayout: async (e) => ({ default: (await
|
|
306
|
-
loadError:
|
|
307
|
-
loadPending:
|
|
308
|
-
ctx:
|
|
310
|
+
loadLayout: async (e) => ({ default: (await I(e)).default }),
|
|
311
|
+
loadError: B,
|
|
312
|
+
loadPending: U,
|
|
313
|
+
ctx: W(t, s.signal)
|
|
309
314
|
});
|
|
310
315
|
}
|
|
311
316
|
let f = {
|
|
@@ -324,7 +329,8 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
324
329
|
p = await o.loader({
|
|
325
330
|
params: t.params,
|
|
326
331
|
pathname: t.pathname,
|
|
327
|
-
signal: e.signal
|
|
332
|
+
signal: e.signal,
|
|
333
|
+
isServer: !0
|
|
328
334
|
});
|
|
329
335
|
} catch (e) {
|
|
330
336
|
if (e instanceof Error && e._voltroControl === "redirect") throw Error(`Static page "${t.pathname}" threw RedirectError at build time. Static pages can't redirect per-request — switch it to renderMode 'ssr'.`);
|
|
@@ -350,9 +356,10 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
350
356
|
params: t.params,
|
|
351
357
|
query: void 0,
|
|
352
358
|
apiName: void 0,
|
|
353
|
-
seed: D
|
|
359
|
+
seed: D,
|
|
360
|
+
seedFailure: A
|
|
354
361
|
});
|
|
355
|
-
let h = t.params.locale ?? e.defaultLocale ?? "en", g =
|
|
362
|
+
let h = t.params.locale ?? e.defaultLocale ?? "en", g = j.get(h) ?? j.get(e.defaultLocale ?? ""), { html: b, meta: E } = v({
|
|
356
363
|
descriptor: f,
|
|
357
364
|
params: t.params,
|
|
358
365
|
pathname: t.pathname,
|
|
@@ -370,17 +377,17 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
370
377
|
pageLoaderRan: typeof o.loader == "function"
|
|
371
378
|
}),
|
|
372
379
|
interactive: m
|
|
373
|
-
}),
|
|
374
|
-
await k.mkdir(T(
|
|
380
|
+
}), N = z(n, t.pathname);
|
|
381
|
+
await k.mkdir(T(N), { recursive: !0 }), await k.writeFile(N, O, "utf8"), M.push({
|
|
375
382
|
pattern: t.pathname,
|
|
376
|
-
outPath:
|
|
383
|
+
outPath: N,
|
|
377
384
|
...E?.noIndex ? { noIndex: !0 } : {}
|
|
378
385
|
});
|
|
379
386
|
}
|
|
380
387
|
}
|
|
381
388
|
return await h.close(), {
|
|
382
|
-
rendered:
|
|
383
|
-
pageMeta:
|
|
389
|
+
rendered: M,
|
|
390
|
+
pageMeta: N
|
|
384
391
|
};
|
|
385
392
|
}, W = async (e, t, n, r, i, a) => {
|
|
386
393
|
let o = E(e, ".framework"), s = [];
|
|
@@ -461,13 +468,13 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
461
468
|
].join("\n"), b = E(o, "ssrEntry.ts");
|
|
462
469
|
return await k.writeFile(b, y, "utf8"), b;
|
|
463
470
|
}, G = async (e) => {
|
|
464
|
-
let { checkRpcGroupFreshness: t } = await import("./codegen-
|
|
471
|
+
let { checkRpcGroupFreshness: t } = await import("./codegen-i8QGcHsi.js"), n = await t(e);
|
|
465
472
|
if (n.kind === "fresh") return;
|
|
466
473
|
n.kind === "stale" && F.info("rpcGroup.generated.ts is stale — regenerating", {
|
|
467
474
|
file: n.file,
|
|
468
475
|
reason: n.reason
|
|
469
476
|
});
|
|
470
|
-
let { regenerateRpcGroup: r } = await import("./codegenCommand-
|
|
477
|
+
let { regenerateRpcGroup: r } = await import("./codegenCommand-W7SDdiAQ.js"), i = await r(e);
|
|
471
478
|
if (i.kind === "refused") {
|
|
472
479
|
F.warn("could not regenerate the rpc group — building against what is on disk", { reason: i.reason });
|
|
473
480
|
return;
|
|
@@ -479,10 +486,10 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
479
486
|
}, K = async (e) => {
|
|
480
487
|
let t = await u(e);
|
|
481
488
|
if (!t) {
|
|
482
|
-
let { loadApiConfig: t } = await import("./dev-
|
|
489
|
+
let { loadApiConfig: t } = await import("./dev-alhkKoEX.js"), n = await t(e);
|
|
483
490
|
if (n) {
|
|
484
491
|
F.info("building api app", { app: n.name ?? "(unnamed)" }), await G(e);
|
|
485
|
-
let { runApiBuild: t, runServeBundleBuild: r } = await import("./apiBuild-
|
|
492
|
+
let { runApiBuild: t, runServeBundleBuild: r } = await import("./apiBuild-2GvK8CUB.js");
|
|
486
493
|
await t(e);
|
|
487
494
|
try {
|
|
488
495
|
await r(e);
|
|
@@ -509,40 +516,40 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
509
516
|
root: e,
|
|
510
517
|
log: F,
|
|
511
518
|
generateTypes: !0
|
|
512
|
-
});
|
|
513
|
-
await l(e, t,
|
|
514
|
-
let { pages:
|
|
519
|
+
}), a = await d(e, t);
|
|
520
|
+
await l(e, t, a, i.publicValues);
|
|
521
|
+
let { pages: c } = await v(E(e, "src", "pages"));
|
|
515
522
|
await r({
|
|
516
523
|
appRoot: e,
|
|
517
|
-
pages:
|
|
524
|
+
pages: c,
|
|
518
525
|
mode: "prod"
|
|
519
526
|
});
|
|
520
|
-
let
|
|
527
|
+
let f = E(e, ".framework"), p = E(f, "dist"), _ = E(e, "node_modules", "@voltro", "ui-shadcn"), y = O(E(_, "package.json")) ? _ : null, b = [...y ? [
|
|
521
528
|
{
|
|
522
529
|
find: "@voltro/ui-shadcn/tokens.css",
|
|
523
|
-
replacement: E(
|
|
530
|
+
replacement: E(y, "src/tokens.css")
|
|
524
531
|
},
|
|
525
532
|
{
|
|
526
533
|
find: "@voltro/ui-shadcn/cn",
|
|
527
|
-
replacement: E(
|
|
534
|
+
replacement: E(y, "src/cn.ts")
|
|
528
535
|
},
|
|
529
536
|
{
|
|
530
537
|
find: "@voltro/ui-shadcn/brand",
|
|
531
|
-
replacement: E(
|
|
538
|
+
replacement: E(y, "src/brand/voltroLogo.tsx")
|
|
532
539
|
},
|
|
533
540
|
{
|
|
534
541
|
find: "@voltro/ui-shadcn",
|
|
535
|
-
replacement: E(
|
|
542
|
+
replacement: E(y, "src/index.ts")
|
|
536
543
|
}
|
|
537
544
|
] : [], ...s(e)];
|
|
538
545
|
F.info("running vite build");
|
|
539
|
-
let
|
|
540
|
-
await
|
|
541
|
-
root:
|
|
546
|
+
let x = await h("vite", () => import("vite")), C = (await import("@vitejs/plugin-react")).default, T = (await import("@tailwindcss/vite")).default;
|
|
547
|
+
await x.build({
|
|
548
|
+
root: f,
|
|
542
549
|
envPrefix: "__VOLTRO_VITE_ENV_DISABLED__",
|
|
543
|
-
plugins: [
|
|
550
|
+
plugins: [C(), T()],
|
|
544
551
|
resolve: {
|
|
545
|
-
alias:
|
|
552
|
+
alias: b,
|
|
546
553
|
dedupe: [
|
|
547
554
|
"react",
|
|
548
555
|
"react-dom",
|
|
@@ -558,36 +565,36 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
558
565
|
},
|
|
559
566
|
logLevel: "warn"
|
|
560
567
|
});
|
|
561
|
-
let
|
|
562
|
-
if (
|
|
563
|
-
pagesDir:
|
|
564
|
-
distDir:
|
|
568
|
+
let D = E(e, "src", "pages"), { pages: A, dirs: j } = await v(D);
|
|
569
|
+
if (A.length === 0) return F.info("no pages found — client-only bundle written", {
|
|
570
|
+
pagesDir: D,
|
|
571
|
+
distDir: p
|
|
565
572
|
}), {
|
|
566
573
|
ran: !0,
|
|
567
574
|
exitCode: 0
|
|
568
575
|
};
|
|
569
|
-
let { rendered:
|
|
576
|
+
let { rendered: M, pageMeta: N } = await U({
|
|
570
577
|
root: e,
|
|
571
|
-
distDir:
|
|
572
|
-
pages:
|
|
573
|
-
dirs:
|
|
574
|
-
vite:
|
|
578
|
+
distDir: p,
|
|
579
|
+
pages: A,
|
|
580
|
+
dirs: j,
|
|
581
|
+
vite: x,
|
|
575
582
|
...t.locales ? { locales: t.locales } : {},
|
|
576
583
|
...t.defaultLocale ? { defaultLocale: t.defaultLocale } : {}
|
|
577
584
|
});
|
|
578
|
-
F.info("generating .framework/ssrEntry.ts"), await W(e,
|
|
579
|
-
let
|
|
585
|
+
F.info("generating .framework/ssrEntry.ts"), await W(e, A, j, t.locales, t.defaultLocale, N), F.info("vite build --ssr → dist/server/");
|
|
586
|
+
let L = /* @__PURE__ */ new Set();
|
|
580
587
|
try {
|
|
581
|
-
await
|
|
582
|
-
root:
|
|
588
|
+
await x.build({
|
|
589
|
+
root: f,
|
|
583
590
|
envPrefix: "__VOLTRO_VITE_ENV_DISABLED__",
|
|
584
591
|
plugins: [
|
|
585
|
-
x(),
|
|
586
592
|
C(),
|
|
587
|
-
|
|
593
|
+
T(),
|
|
594
|
+
I(e, L)
|
|
588
595
|
],
|
|
589
596
|
resolve: {
|
|
590
|
-
alias:
|
|
597
|
+
alias: b,
|
|
591
598
|
dedupe: [
|
|
592
599
|
"react",
|
|
593
600
|
"react-dom",
|
|
@@ -605,7 +612,7 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
605
612
|
logLevel: "warn"
|
|
606
613
|
}), F.info("SSR bundle ready", {
|
|
607
614
|
path: "dist/server/ssrEntry.js",
|
|
608
|
-
...
|
|
615
|
+
...L.size > 0 ? { externalizedOptionalPeers: [...L].join(", ") } : {}
|
|
609
616
|
});
|
|
610
617
|
} catch (e) {
|
|
611
618
|
return F.fatal("SSR bundle build FAILED — refusing to ship a bundle-less image. Fix the error above (production renders from the SSR bundle, never by compiling on demand).", {}, e), {
|
|
@@ -613,13 +620,13 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
613
620
|
exitCode: 1
|
|
614
621
|
};
|
|
615
622
|
}
|
|
616
|
-
let
|
|
617
|
-
if (O(
|
|
623
|
+
let R = E(e, "app.config.ts");
|
|
624
|
+
if (O(R)) {
|
|
618
625
|
F.info("precompiling app.config.ts → dist/server/appConfig.js");
|
|
619
626
|
try {
|
|
620
627
|
await (await h("esbuild", () => import("esbuild"))).build({
|
|
621
|
-
entryPoints: [
|
|
622
|
-
outfile: E(
|
|
628
|
+
entryPoints: [R],
|
|
629
|
+
outfile: E(p, "server", "appConfig.js"),
|
|
623
630
|
bundle: !0,
|
|
624
631
|
format: "esm",
|
|
625
632
|
platform: "node",
|
|
@@ -644,14 +651,14 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
644
651
|
} catch (e) {
|
|
645
652
|
F.warn("start bundle build failed — `voltro start` will use the slower per-module boot", {}, e);
|
|
646
653
|
}
|
|
647
|
-
F.info(`pre-rendered ${
|
|
648
|
-
count:
|
|
649
|
-
routes:
|
|
654
|
+
F.info(`pre-rendered ${M.length} static route(s)`, {
|
|
655
|
+
count: M.length,
|
|
656
|
+
routes: M.map((e) => e.pattern)
|
|
650
657
|
});
|
|
651
658
|
try {
|
|
652
659
|
let e = process.env.VOLTRO_SEO_NOINDEX !== "1", r = t.seo?.siteUrl, i = t.locales ?? [], a = t.defaultLocale ?? i[0];
|
|
653
|
-
if (r && !O(E(
|
|
654
|
-
let t = new Set(i.filter((e) => e !== a)), o =
|
|
660
|
+
if (r && !O(E(p, "sitemap.xml"))) {
|
|
661
|
+
let t = new Set(i.filter((e) => e !== a)), o = M.filter((e) => !e.noIndex).map((e) => e.pattern).filter((e) => {
|
|
655
662
|
let n = e.split("/").filter(Boolean)[0];
|
|
656
663
|
return n === void 0 || !t.has(n);
|
|
657
664
|
}).filter((e) => !e.includes("[")).map((e) => ({ path: e })), s = n({
|
|
@@ -660,25 +667,25 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
660
667
|
...i.length > 1 ? { locales: i } : {},
|
|
661
668
|
...a ? { defaultLocale: a } : {}
|
|
662
669
|
});
|
|
663
|
-
await k.writeFile(E(
|
|
670
|
+
await k.writeFile(E(p, "sitemap.xml"), s, "utf8"), F.info("wrote dist/sitemap.xml", {
|
|
664
671
|
urls: o.length,
|
|
665
672
|
indexable: e
|
|
666
673
|
});
|
|
667
674
|
}
|
|
668
|
-
if (!O(E(
|
|
675
|
+
if (!O(E(p, "robots.txt"))) {
|
|
669
676
|
let n = o({
|
|
670
677
|
indexable: e,
|
|
671
678
|
...e && r ? { sitemapUrl: `${r.replace(/\/$/, "")}/sitemap.xml` } : {},
|
|
672
679
|
...t.seo?.disallow ? { disallow: t.seo.disallow } : {}
|
|
673
680
|
});
|
|
674
|
-
await k.writeFile(E(
|
|
681
|
+
await k.writeFile(E(p, "robots.txt"), n, "utf8"), F.info("wrote dist/robots.txt", { indexable: e });
|
|
675
682
|
}
|
|
676
683
|
} catch (e) {
|
|
677
684
|
F.warn("SEO artefact generation failed (non-fatal)", {}, e);
|
|
678
685
|
}
|
|
679
686
|
try {
|
|
680
687
|
let t = await w(e);
|
|
681
|
-
await k.writeFile(E(
|
|
688
|
+
await k.writeFile(E(p, ".voltro-build.json"), JSON.stringify({
|
|
682
689
|
version: 1,
|
|
683
690
|
profile: t
|
|
684
691
|
}, null, 2), "utf8"), F.info("wrote deploy profile manifest", {
|
|
@@ -689,7 +696,7 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
689
696
|
} catch (e) {
|
|
690
697
|
F.warn("could not write .voltro-build.json deploy manifest", {}, e);
|
|
691
698
|
}
|
|
692
|
-
return F.info("build complete", { distDir:
|
|
699
|
+
return F.info("build complete", { distDir: p }), {
|
|
693
700
|
ran: !0,
|
|
694
701
|
exitCode: 0
|
|
695
702
|
};
|
|
@@ -701,7 +708,7 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
701
708
|
return t.ran ? t.exitCode : (yield* j.logError("no web app found at this path", { hint: "looked for app.config.ts with `type: 'web'`" }), 1);
|
|
702
709
|
}), J = async (t) => {
|
|
703
710
|
if (t.includes("--target")) {
|
|
704
|
-
let { runSdkBuildCommand: e } = await import("./sdkgen-
|
|
711
|
+
let { runSdkBuildCommand: e } = await import("./sdkgen-C4roLErM.js");
|
|
705
712
|
return e(t);
|
|
706
713
|
}
|
|
707
714
|
let n = t.find((e) => !e.startsWith("-")) ?? process.cwd(), r = await y(q(n), { scope: "voltro:build" }), i = e(n);
|
|
@@ -102,19 +102,19 @@ var l = (e, t) => t ? "type" : e.startsWith("define") ? "primitive" : /^use[A-Z]
|
|
|
102
102
|
], h = async (r) => {
|
|
103
103
|
let a = t(r);
|
|
104
104
|
a && n();
|
|
105
|
-
let o =
|
|
106
|
-
if (a) return e(
|
|
107
|
-
if (
|
|
108
|
-
console.log(`voltro capabilities — ${
|
|
109
|
-
for (let e of
|
|
105
|
+
let o = r.find((e) => !e.startsWith("-")), s = i(o ?? process.cwd()), c = p(s);
|
|
106
|
+
if (a) return e(c), 0;
|
|
107
|
+
if (c.voltroPackages === 0) return console.log(`voltro capabilities — no @voltro packages found under ${s}/node_modules.`), console.log(" Run this from an app root with dependencies installed."), 0;
|
|
108
|
+
console.log(`voltro capabilities — ${c.totalSymbols} exported symbols across ${c.voltroPackages} packages`);
|
|
109
|
+
for (let e of c.packages) {
|
|
110
110
|
let t = m.map((t) => [t, e.symbols.filter((e) => e.kind === t).length]).filter(([, e]) => e > 0).map(([e, t]) => `${t} ${e}${t === 1 ? "" : "s"}`).join(", ");
|
|
111
111
|
console.log(` ${e.name}@${e.version} — ${t}`);
|
|
112
112
|
let n = e.symbols.filter((e) => e.kind === "primitive" || e.kind === "hook");
|
|
113
113
|
n.length > 0 && console.log(` ${n.map((e) => e.name + (e.documented ? "" : " *")).join(", ")}`);
|
|
114
114
|
}
|
|
115
|
-
if (
|
|
116
|
-
console.log(""), console.log(` * ${
|
|
117
|
-
for (let e of
|
|
115
|
+
if (c.undocumented.length > 0) {
|
|
116
|
+
console.log(""), console.log(` * ${c.undocumented.length} primitive(s)/hook(s) appear nowhere in this project's agent guide:`);
|
|
117
|
+
for (let e of c.undocumented) console.log(` ${e}`);
|
|
118
118
|
console.log(" Run `voltro agents-md --force` to refresh it, or read that package README.");
|
|
119
119
|
}
|
|
120
120
|
return console.log(""), console.log(" --json emits the full machine-readable surface (every symbol, kind, and documented flag)."), 0;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, r as t, t as n } from "./checkCommand-
|
|
1
|
+
import { n as e, r as t, t as n } from "./checkCommand-CBtynBKW.js";
|
|
2
2
|
export { n as offlineManifest, e as runCheckCommand, t as toInput };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { t as e } from "./cliArgs-D4p8n7EE.js";
|
|
2
|
-
import { c as t, i as n } from "./codegen-
|
|
2
|
+
import { c as t, i as n } from "./codegen-CbpGCWLG.js";
|
|
3
3
|
import { r } from "./appGraph-KGDPTuTy.js";
|
|
4
4
|
import { n as i } from "./cliOutput-D1tSBoRM.js";
|
|
5
5
|
import { n as a, o, r as s, t as c } from "./inspectFetch-EMuhTG_9.js";
|
|
6
6
|
import { r as l } from "./fileTaxonomy-CJfgOllU.js";
|
|
7
|
-
import { x as u } from "./doctorCommand-
|
|
7
|
+
import { x as u } from "./doctorCommand-Bvs-BQrM.js";
|
|
8
8
|
import { resolve as d } from "node:path";
|
|
9
9
|
import { readdirSync as f, statSync as p } from "node:fs";
|
|
10
10
|
//#region src/observedDiff.ts
|
|
@@ -141,7 +141,7 @@ var m = (e) => e === void 0 ? [] : typeof e == "string" ? [e] : e, h = /* @__PUR
|
|
|
141
141
|
let t = e.severity === "error" ? "✗ error" : "⚠ warn", n = e.file ? ` (${e.file})` : "";
|
|
142
142
|
return `${t} ${e.rule} ${e.node}${n}\n ${e.breaks.join("; ")}\n fix: ${e.fix}`;
|
|
143
143
|
}).join("\n"), C = async (e) => {
|
|
144
|
-
let { walk: t, loadDiscovered: n, loadApiConfig: r } = await import("./dev-
|
|
144
|
+
let { walk: t, loadDiscovered: n, loadApiConfig: r } = await import("./dev-alhkKoEX.js"), { buildRpcEntry: i } = await import("./manifestBuild-j0n109tt.js"), { buildCapabilityManifest: a } = await import("./inspect-DUze25t0.js"), { relative: o } = await import("node:path"), s = await n(await t(e)), c = (t, n, r) => i(t, n, o(e, r)), l = [
|
|
145
145
|
...s.queries.map((e) => c(e.descriptor, "query", e.file)),
|
|
146
146
|
...s.mutations.map((e) => c(e.descriptor, "mutation", e.file)),
|
|
147
147
|
...s.actions.map((e) => c(e.descriptor, "action", e.file)),
|
|
@@ -158,75 +158,75 @@ var m = (e) => e === void 0 ? [] : typeof e == "string" ? [e] : e, h = /* @__PUR
|
|
|
158
158
|
tables: { tables: p }
|
|
159
159
|
};
|
|
160
160
|
}, w = async (n) => {
|
|
161
|
-
let f =
|
|
162
|
-
if ("error" in
|
|
163
|
-
let { process:
|
|
164
|
-
for (let e = 0; e <
|
|
165
|
-
let [t, n] = (
|
|
166
|
-
if (t === "removeTable" && n)
|
|
161
|
+
let f = n.flatMap((e) => e === "--json" ? ["--format", "json"] : [e]), p = a(f);
|
|
162
|
+
if ("error" in p) return console.error(`voltro check: ${p.error}`), 1;
|
|
163
|
+
let { process: m, target: h, rest: v } = s(p.rest), w;
|
|
164
|
+
for (let e = 0; e < v.length; e++) if (v[e] === "--diff") {
|
|
165
|
+
let [t, n] = (v[++e] ?? "").split(":");
|
|
166
|
+
if (t === "removeTable" && n) w = {
|
|
167
167
|
kind: "removeTable",
|
|
168
168
|
name: n
|
|
169
169
|
};
|
|
170
|
-
else if (t === "removeProcedure" && n)
|
|
170
|
+
else if (t === "removeProcedure" && n) w = {
|
|
171
171
|
kind: "removeProcedure",
|
|
172
172
|
tag: n
|
|
173
173
|
};
|
|
174
|
-
else if (t === "removeScope" && n)
|
|
174
|
+
else if (t === "removeScope" && n) w = {
|
|
175
175
|
kind: "removeScope",
|
|
176
176
|
name: n
|
|
177
177
|
};
|
|
178
178
|
else return console.error("voltro check --diff: expected removeTable:<name> | removeProcedure:<tag> | removeScope:<name>"), 1;
|
|
179
179
|
}
|
|
180
|
-
let
|
|
181
|
-
if (
|
|
182
|
-
if (!
|
|
180
|
+
let T = e(v, ["--diff"]) ?? process.cwd(), E = v.includes("--offline"), D = E ? [] : await o(m, h), O, k;
|
|
181
|
+
if (D.length === 0) {
|
|
182
|
+
if (!E && h !== void 0) return console.error("voltro check: --url given but no api reachable there."), 1;
|
|
183
183
|
try {
|
|
184
|
-
let e = await C(d(
|
|
185
|
-
|
|
184
|
+
let e = await C(d(T));
|
|
185
|
+
O = e.manifest, k = e.tables;
|
|
186
186
|
} catch (e) {
|
|
187
187
|
return console.error(`voltro check: could not assemble the graph from source: ${e.message}`), console.error(" Start `voltro dev` to check against a running api instead."), 1;
|
|
188
188
|
}
|
|
189
189
|
} else {
|
|
190
|
-
let e =
|
|
190
|
+
let e = D[0], [t, n] = await Promise.all([c(e, "/_voltro/inspect/manifest"), c(e, "/_voltro/inspect/data/tables")]);
|
|
191
191
|
if (t.kind === "err") return console.error(`voltro check: manifest fetch failed: ${t.error}`), 1;
|
|
192
|
-
|
|
192
|
+
O = t.data, k = n.kind === "ok" ? n.data : { tables: [] };
|
|
193
193
|
}
|
|
194
|
-
let
|
|
194
|
+
let A = x(O, k), j = r(A, w), M = [...l(T).findings.map((e) => ({
|
|
195
195
|
rule: e.rule,
|
|
196
196
|
node: e.file,
|
|
197
197
|
file: e.file,
|
|
198
198
|
breaks: [e.detail],
|
|
199
199
|
fix: e.fix,
|
|
200
200
|
severity: e.severity
|
|
201
|
-
})), ...u(
|
|
201
|
+
})), ...u(T).map((e) => ({
|
|
202
202
|
rule: `page/${e.kind}`,
|
|
203
203
|
node: e.file,
|
|
204
204
|
file: e.file,
|
|
205
205
|
breaks: [e.kind === "suffixed-outside-pages" ? "a page.tsx outside src/pages/ never routes" : "no test beside it"],
|
|
206
206
|
fix: e.kind === "suffixed-outside-pages" ? "move it under src/pages/ into the directory whose route it serves, or rename it — page.tsx is reserved" : "write the test with the file — the name is derivable",
|
|
207
207
|
severity: e.kind === "suffixed-outside-pages" ? "error" : "warn"
|
|
208
|
-
}))],
|
|
208
|
+
}))], N = (await t(T, _(T))).map((e) => ({
|
|
209
209
|
rule: "client/not-browser-safe",
|
|
210
210
|
node: e.file,
|
|
211
211
|
file: e.file,
|
|
212
212
|
breaks: [`reaches the server-only '${e.violation.specifier}' — chain: ${e.violation.chain.join(" → ")}`],
|
|
213
213
|
fix: "move the server-only code behind a *.server.ts, or drop the .client suffix — an unmarked file makes no claim",
|
|
214
214
|
severity: "error"
|
|
215
|
-
})),
|
|
216
|
-
...
|
|
215
|
+
})), P = [
|
|
216
|
+
...j.diagnostics,
|
|
217
|
+
...M,
|
|
218
|
+
...N
|
|
219
|
+
], F = j.ok && !M.some((e) => e.severity === "error") && N.length === 0, I = await y(d(T)), L = I === null ? null : g(A.procedures, I);
|
|
220
|
+
return p.format === "json" ? i(L === null ? {
|
|
217
221
|
...j,
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
return f.format === "json" ? i(I === null ? {
|
|
221
|
-
...A,
|
|
222
|
-
ok: P,
|
|
223
|
-
diagnostics: N
|
|
222
|
+
ok: F,
|
|
223
|
+
diagnostics: P
|
|
224
224
|
} : {
|
|
225
|
-
...
|
|
226
|
-
ok:
|
|
227
|
-
diagnostics:
|
|
228
|
-
observed:
|
|
229
|
-
}) : (console.log(S(
|
|
225
|
+
...j,
|
|
226
|
+
ok: F,
|
|
227
|
+
diagnostics: P,
|
|
228
|
+
observed: L
|
|
229
|
+
}) : (console.log(S(P)), L !== null && console.log(b(L)), console.log(F ? "\nvoltro check: OK" : "\nvoltro check: FAILED (errors above)")), +!F;
|
|
230
230
|
};
|
|
231
231
|
//#endregion
|
|
232
232
|
export { w as n, x as r, C as t };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as e, t } from "./cliArgs-D4p8n7EE.js";
|
|
2
2
|
import { a as n, i as r, n as i, r as a, t as o } from "./cloudClient-DWL-Hw_T.js";
|
|
3
3
|
import { n as s } from "./cliOutput-D1tSBoRM.js";
|
|
4
|
-
import { d as c, f as l, o as u } from "./projectScaffold-
|
|
4
|
+
import { d as c, f as l, o as u } from "./projectScaffold-BvhLOrLq.js";
|
|
5
5
|
import { basename as d, join as f, resolve as p } from "node:path";
|
|
6
6
|
import { promises as m } from "node:fs";
|
|
7
7
|
import { ansi as h } from "@voltro/logger";
|
|
@@ -115,7 +115,7 @@ var b = y(_), x = async (e) => {
|
|
|
115
115
|
let s = setTimeout(() => a({
|
|
116
116
|
ok: !1,
|
|
117
117
|
error: "timed out waiting for the browser login (5 min)"
|
|
118
|
-
}),
|
|
118
|
+
}), 3e5);
|
|
119
119
|
typeof s.unref == "function" && s.unref();
|
|
120
120
|
});
|
|
121
121
|
return r.close(), r.closeAllConnections?.(), i.ok ? (await n({
|
|
@@ -269,7 +269,7 @@ replicas = 1
|
|
|
269
269
|
let f = d.data.deploymentId;
|
|
270
270
|
if (typeof f != "string") return console.error("voltro cloud deploy: unexpected response from the control plane"), 1;
|
|
271
271
|
console.log(`${h.green("queued")} ${f} · ${r} @ ${u.slice(0, 8)}`);
|
|
272
|
-
let p = Date.now() +
|
|
272
|
+
let p = Date.now() + 9e5, m = "";
|
|
273
273
|
for (; Date.now() < p;) {
|
|
274
274
|
await S(3e3);
|
|
275
275
|
let e = await i(`/deployments/${encodeURIComponent(f)}`, { token: l });
|
|
@@ -285,23 +285,23 @@ replicas = 1
|
|
|
285
285
|
}, q = async (e) => {
|
|
286
286
|
let { json: t, rest: n } = D(e), { value: r, rest: a } = T(n, "--dir"), { project: o } = z(a), s = await w();
|
|
287
287
|
if (s === null) return 1;
|
|
288
|
-
let c = p(r ?? process.cwd()), u = await
|
|
289
|
-
if (
|
|
290
|
-
let
|
|
291
|
-
if (/\bimport\s|\bexport\s|=>|function\s/.test(
|
|
292
|
-
let
|
|
288
|
+
let c = p(r ?? process.cwd()), u = await H(), d = await l(c, u);
|
|
289
|
+
if (d.apps.length === 0) return console.error(`voltro cloud scan: no apps (no app.config.ts found under ${c})`), 1;
|
|
290
|
+
let f = JSON.stringify(d);
|
|
291
|
+
if (/\bimport\s|\bexport\s|=>|function\s/.test(f)) return console.error("voltro cloud scan: refusing to send — payload looks like it contains source, not metadata"), 1;
|
|
292
|
+
let m = await i(`/projects/${encodeURIComponent(o)}/inventory`, {
|
|
293
293
|
method: "POST",
|
|
294
294
|
token: s,
|
|
295
|
-
body:
|
|
295
|
+
body: d
|
|
296
296
|
});
|
|
297
|
-
if (
|
|
298
|
-
if (t) return O(!0,
|
|
299
|
-
let
|
|
300
|
-
for (let e of
|
|
301
|
-
let t =
|
|
297
|
+
if (m.kind === "err") return console.error(`voltro cloud scan: ${m.error}`), 1;
|
|
298
|
+
if (t) return O(!0, m.data), 0;
|
|
299
|
+
let g = m.data;
|
|
300
|
+
for (let e of d.apps) {
|
|
301
|
+
let t = g.apps?.find((t) => t.slug === e.slug), n = t?.created ? h.green("registered") : h.green("updated");
|
|
302
302
|
console.log(` ${n} ${e.slug} (${e.kind}) · ${t?.primitiveCount ?? 0} primitives · voltro ${e.voltroVersion ?? "unknown"}`);
|
|
303
303
|
}
|
|
304
|
-
return console.log(`${h.green("ok")} scanned ${
|
|
304
|
+
return console.log(`${h.green("ok")} scanned ${d.apps.length} app(s) into ${o}`), 0;
|
|
305
305
|
}, J = async (e) => {
|
|
306
306
|
if (!G()) return console.error(W), 1;
|
|
307
307
|
let { json: t, rest: n } = D(e), { project: r, rest: a } = z(n), { value: o } = T(a, "--app");
|
|
@@ -317,7 +317,7 @@ replicas = 1
|
|
|
317
317
|
let l = c.data.deploymentId, u = c.data.rolledBackTo;
|
|
318
318
|
if (typeof l != "string") return console.error("voltro cloud rollback: unexpected response from the control plane"), 1;
|
|
319
319
|
console.log(`${h.green("queued")} ${l} · rollback ${o} → ${String(u).slice(0, 12)}`);
|
|
320
|
-
let d = Date.now() +
|
|
320
|
+
let d = Date.now() + 9e5, f = "";
|
|
321
321
|
for (; Date.now() < d;) {
|
|
322
322
|
await S(3e3);
|
|
323
323
|
let e = await i(`/deployments/${encodeURIComponent(l)}`, { token: s });
|
|
@@ -15,10 +15,14 @@ var o = () => {
|
|
|
15
15
|
name: e.name,
|
|
16
16
|
error: e.error
|
|
17
17
|
});
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
if (r === "json") {
|
|
19
|
+
let t = u.length > 0 ? {
|
|
20
|
+
instances: l,
|
|
21
|
+
fetchErrors: u
|
|
22
|
+
} : { instances: l };
|
|
23
|
+
return e(t, { pretty: !1 }), +!!s.every((e) => e.kind === "err");
|
|
24
|
+
}
|
|
25
|
+
return c(l, u, s);
|
|
22
26
|
}, c = (e, t, n) => {
|
|
23
27
|
if (e.length > 0) {
|
|
24
28
|
console.log(a.bold("cluster instances")), console.log("");
|