@voltro/cli 0.39.1 → 0.41.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 +232 -0
- package/dist/agentsMd-Bu_XQgVf.js +2 -0
- package/dist/{agentsMd-7zI2h5l9.js → agentsMd-D6yD7IQv.js} +31 -14
- package/dist/{apiBuild-D9FB13_2.js → apiBuild-B_iH24qf.js} +2 -2
- package/dist/apiBuild-RM5W5YXk.js +2 -0
- package/dist/bin.js +1 -1
- package/dist/{build-DORV5mLM.js → build-DUdi6F_Q.js} +100 -97
- package/dist/{checkCommand-D9qK_gtA.js → checkCommand-B2RWrpWi.js} +1 -1
- package/dist/{checkCommand-Bf6oMao4.js → checkCommand-DWL2_PPR.js} +2 -2
- package/dist/{cloudCmd-C42gaO8s.js → cloudCmd-F4YJeqM3.js} +1 -1
- package/dist/{codegenCommand-CxOyKmc1.js → codegenCommand-DkjoJ30Q.js} +2 -2
- package/dist/{codemodRunner-D-jTyvWo.js → codemodRunner-sFuWDETH.js} +520 -357
- package/dist/{commands-D6aW_6AR.js → commands-D0VR1yBB.js} +32 -32
- package/dist/{dashboardCommand-CwTZh-XZ.js → dashboardCommand-Bro7Jwts.js} +3 -3
- package/dist/{dataCommand-Cc9RiLQZ.js → dataCommand-OKC5FscP.js} +183 -172
- package/dist/{dbCommand-DSwGv9wS.js → dbCommand-BHRamDsy.js} +441 -414
- package/dist/dbCommand-C9iE1pd9.js +2 -0
- package/dist/{dev-3mgc8c-H.js → dev-D4l_YOzI.js} +1570 -1570
- package/dist/{dev-CjJAasDs.js → dev-DuqBJC7g.js} +1 -1
- package/dist/doctorCommand-Bw3V4L1j.js +2 -0
- package/dist/{doctorCommand-oLuzc-aC.js → doctorCommand-TmZTAepc.js} +386 -280
- package/dist/{dormancyCommand-Bxe4WtHU.js → dormancyCommand-CUKhRmGG.js} +1 -1
- package/dist/{embeddingsCommand-CyNQkFIc.js → embeddingsCommand-Db-iQM3l.js} +1 -1
- package/dist/{envCommand-CAkSgBbh.js → envCommand-DQ_URZq9.js} +14 -14
- package/dist/{evolveCommand-CWhBoe_P.js → evolveCommand-CghRPrGO.js} +2 -2
- package/dist/index.js +1 -1
- package/dist/{infoCommand-CTo8Jnhq.js → infoCommand-BCs_ZFnl.js} +1 -1
- package/dist/{metaCommands-DUYR--Ts.js → metaCommands-CfRLra0s.js} +1 -1
- package/dist/{migrate-BnPw2zC8.js → migrate-DLtPv2_D.js} +1 -1
- package/dist/{projectScaffold-BEhhHjPr.js → projectScaffold-BIl97_E6.js} +1 -1
- package/dist/{projectScaffold-BvhLOrLq.js → projectScaffold-mIX_DpSe.js} +1 -1
- package/dist/{runtimeTrace-gNXeLf6H.js → runtimeTrace-jFKvOPBz.js} +1 -1
- package/dist/{sdkgen-C8zz10-X.js → sdkgen-COQqHB9V.js} +1 -1
- package/dist/{serveCommand-BpK8-m1N.js → serveCommand-Cba_M2Su.js} +656 -656
- package/dist/serveCommand-DRbYK646.js +2 -0
- package/dist/serveEntry.js +1 -1
- package/dist/{start-ft_KzFTd.js → start-BjcuFME_.js} +421 -361
- package/dist/{start-BNuTWdRd.js → start-fifc0xpW.js} +1 -1
- package/dist/startEntry.js +1 -1
- package/dist/updateCommand-B2alql9k.js +2 -0
- package/dist/{updateCommand-CHBmCB17.js → updateCommand-HZQVBU3T.js} +1 -1
- package/dist/webDev-D6QeXw3P.js +2 -0
- package/dist/{webDev-CTpSY-e_.js → webDev-Dk8lFUzf.js} +672 -501
- package/dist/{webhooksCommand-EccPZQZ4.js → webhooksCommand-D7ZpH7w0.js} +1 -1
- package/package.json +35 -17
- package/templates/AGENTS.md +1 -1
- package/templates/agent-docs/_index.md +1 -1
- package/templates/agent-docs/_manifest.json +1 -1
- package/templates/agent-docs/cli.md +6 -0
- package/templates/agent-docs/data.md +43 -0
- package/templates/agent-docs/plugins/governance.md +8 -0
- package/templates/agent-docs/routing.md +153 -0
- package/templates/agent-docs/security.md +24 -0
- package/templates/agent-docs/whats-new.md +49 -27
- 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-durable/tests/orders.place.test.ts +17 -4
- 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/changelog/src/pages/[slug]/page.test.tsx +8 -1
- 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/package.json +4 -4
- package/dist/agentsMd-BFCXh2gl.js +0 -2
- package/dist/apiBuild-BmR_bIxN.js +0 -2
- package/dist/dbCommand-DcqEyxju.js +0 -2
- package/dist/doctorCommand-Cghssndo.js +0 -2
- package/dist/serveCommand-CW-goXvh.js +0 -2
- package/dist/updateCommand-6FMU2klq.js +0 -2
- package/dist/webDev-id3I5PvG.js +0 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { hn as e } from "./dev-
|
|
2
|
-
import {
|
|
1
|
+
import { hn as e } from "./dev-D4l_YOzI.js";
|
|
2
|
+
import { $ as t, A as n, F as r, I as i, L as a, Q as o, a as s, b as c, d as l, et as u, f as d, ht as f, k as p, rt as m, s as h, v as g, vt as _, y as v } from "./webDev-Dk8lFUzf.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-B_iH24qf.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";
|
|
@@ -12,7 +12,7 @@ import { Effect as j } from "effect";
|
|
|
12
12
|
import { createRequire as M } from "node:module";
|
|
13
13
|
//#region src/webStartBundle.ts
|
|
14
14
|
var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
15
|
-
let t = await
|
|
15
|
+
let t = await _("esbuild", () => import("esbuild")), n = E(e, ".framework"), r = E(n, "dist-web", "startBundle");
|
|
16
16
|
await k.mkdir(n, { recursive: !0 });
|
|
17
17
|
let i = Date.now(), a = E(e, "tsconfig.json"), o = /* @__PURE__ */ new Set(), s = E(n, "startEntry.ts");
|
|
18
18
|
await k.writeFile(s, [
|
|
@@ -96,93 +96,93 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
96
96
|
let n = t.replace(/^\//, "").split("/");
|
|
97
97
|
return E(e, ...n, "index.html");
|
|
98
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) => {
|
|
99
|
-
let
|
|
99
|
+
let r = e.replace("<div id=\"root\"></div>", `<div id="root">${t.body}</div>`), i = [
|
|
100
100
|
t.metaHtml,
|
|
101
101
|
`<meta name="voltro-interactive" content="${t.interactive}" />`,
|
|
102
102
|
t.stateScript
|
|
103
103
|
].filter((e) => e.length > 0).join("\n ");
|
|
104
|
-
return
|
|
104
|
+
return r = n(r, i), t.interactive === "none" && (r = B(r)), r;
|
|
105
105
|
}, H = async (e) => {
|
|
106
|
-
let { page:
|
|
107
|
-
if (
|
|
108
|
-
pattern:
|
|
106
|
+
let { page: t, chainEntries: o, pageMod: c, helpers: l } = e, u = o.filter((e) => e.hasLayout);
|
|
107
|
+
if (u.length === 0) return F.debug("skip page", {
|
|
108
|
+
pattern: t.pattern,
|
|
109
109
|
reason: "renderMode=spa with no layout — nothing to shell"
|
|
110
110
|
}), null;
|
|
111
|
-
if (L(
|
|
112
|
-
pattern:
|
|
111
|
+
if (L(t.pattern)) return F.debug("skip page", {
|
|
112
|
+
pattern: t.pattern,
|
|
113
113
|
reason: "renderMode=spa with a dynamic pattern"
|
|
114
114
|
}), null;
|
|
115
|
-
let
|
|
116
|
-
if (
|
|
117
|
-
pattern:
|
|
118
|
-
layouts:
|
|
115
|
+
let d = await Promise.all(u.map(e.loadLayout)), f = u.filter((e, t) => typeof d[t]?.loader == "function").map((e) => e.dir || "/");
|
|
116
|
+
if (f.length > 0) return F.info(`spa shell for ${t.pattern} left to on-demand rendering — its layout chain has a loader (${f.join(", ")}), whose output may be per-request`, {
|
|
117
|
+
pattern: t.pattern,
|
|
118
|
+
layouts: f
|
|
119
119
|
}), null;
|
|
120
|
-
let { chain: p, segmentLoaderData: m } = await
|
|
121
|
-
entries:
|
|
120
|
+
let { chain: p, segmentLoaderData: m } = await s({
|
|
121
|
+
entries: o,
|
|
122
122
|
loadLayout: e.loadLayout,
|
|
123
123
|
loadError: e.loadError,
|
|
124
124
|
loadPending: e.loadPending,
|
|
125
125
|
ctx: e.ctx
|
|
126
126
|
}), h = {
|
|
127
|
-
pattern:
|
|
128
|
-
Component:
|
|
129
|
-
meta:
|
|
130
|
-
ErrorBoundary:
|
|
131
|
-
Pending:
|
|
127
|
+
pattern: t.pattern,
|
|
128
|
+
Component: c.default,
|
|
129
|
+
meta: c.meta,
|
|
130
|
+
ErrorBoundary: c.ErrorBoundary,
|
|
131
|
+
Pending: c.Pending,
|
|
132
132
|
renderMode: "spa",
|
|
133
133
|
chain: p
|
|
134
|
-
}, g =
|
|
135
|
-
helpers:
|
|
136
|
-
page:
|
|
134
|
+
}, g = c.interactive ?? "full", _ = r({
|
|
135
|
+
helpers: l,
|
|
136
|
+
page: t.pattern,
|
|
137
137
|
interactive: g,
|
|
138
138
|
delivery: "artefact",
|
|
139
139
|
renderInput: {
|
|
140
140
|
descriptor: h,
|
|
141
141
|
params: {},
|
|
142
|
-
pathname:
|
|
142
|
+
pathname: t.pattern,
|
|
143
143
|
segmentLoaderData: m,
|
|
144
144
|
...e.outerWrap ? { outerWrap: e.outerWrap } : {},
|
|
145
145
|
...e.locale ? { locale: e.locale } : {}
|
|
146
146
|
}
|
|
147
147
|
}), v = i({
|
|
148
|
-
helpers:
|
|
148
|
+
helpers: l,
|
|
149
149
|
prepared: _
|
|
150
|
-
}), y =
|
|
151
|
-
helpers:
|
|
150
|
+
}), y = a({
|
|
151
|
+
helpers: l,
|
|
152
152
|
prepared: _,
|
|
153
153
|
meta: v.meta,
|
|
154
154
|
interactive: g
|
|
155
|
-
}), b =
|
|
156
|
-
return await k.mkdir(T(x), { recursive: !0 }), await k.writeFile(x, b, "utf8"), F.debug("prerendered spa layout shell", { pattern:
|
|
157
|
-
pattern:
|
|
155
|
+
}), b = n(e.shellTemplate.replace("<div id=\"root\"></div>", `<div id="root">${v.body}</div>`), y), x = z(e.distDir, t.pattern);
|
|
156
|
+
return await k.mkdir(T(x), { recursive: !0 }), await k.writeFile(x, b, "utf8"), F.debug("prerendered spa layout shell", { pattern: t.pattern }), {
|
|
157
|
+
pattern: t.pattern,
|
|
158
158
|
outPath: x
|
|
159
159
|
};
|
|
160
160
|
}, U = async (e) => {
|
|
161
|
-
let { root: t, distDir: n, pages: r, dirs: i, vite: a } = e, o = E(n, "index.html"),
|
|
162
|
-
await k.mkdir(T(
|
|
163
|
-
let
|
|
161
|
+
let { root: t, distDir: n, pages: r, dirs: i, vite: a } = e, o = E(n, "index.html"), c = await k.readFile(o, "utf8"), l = E(n, "_voltro", "shell.html");
|
|
162
|
+
await k.mkdir(T(l), { recursive: !0 }), await k.writeFile(l, c, "utf8");
|
|
163
|
+
let u = E(t, "node_modules", "@voltro", "ui-shadcn"), d = O(E(u, "package.json")) ? u : null, f = [...d ? [
|
|
164
164
|
{
|
|
165
165
|
find: "@voltro/ui-shadcn/tokens.css",
|
|
166
|
-
replacement: E(
|
|
166
|
+
replacement: E(d, "src/tokens.css")
|
|
167
167
|
},
|
|
168
168
|
{
|
|
169
169
|
find: "@voltro/ui-shadcn/cn",
|
|
170
|
-
replacement: E(
|
|
170
|
+
replacement: E(d, "src/cn.ts")
|
|
171
171
|
},
|
|
172
172
|
{
|
|
173
173
|
find: "@voltro/ui-shadcn/brand",
|
|
174
|
-
replacement: E(
|
|
174
|
+
replacement: E(d, "src/brand/voltroLogo.tsx")
|
|
175
175
|
},
|
|
176
176
|
{
|
|
177
177
|
find: "@voltro/ui-shadcn",
|
|
178
|
-
replacement: E(
|
|
178
|
+
replacement: E(d, "src/index.ts")
|
|
179
179
|
}
|
|
180
|
-
] : [], ...
|
|
180
|
+
] : [], ...m(t)], g = await a.createServer({
|
|
181
181
|
root: E(t, ".framework"),
|
|
182
182
|
envPrefix: "__VOLTRO_VITE_ENV_DISABLED__",
|
|
183
183
|
plugins: [(await import("@vitejs/plugin-react")).default(), (await import("@tailwindcss/vite")).default()],
|
|
184
184
|
resolve: {
|
|
185
|
-
alias:
|
|
185
|
+
alias: f,
|
|
186
186
|
dedupe: [
|
|
187
187
|
"react",
|
|
188
188
|
"react-dom",
|
|
@@ -198,12 +198,12 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
198
198
|
},
|
|
199
199
|
appType: "custom",
|
|
200
200
|
logLevel: "warn"
|
|
201
|
-
}),
|
|
201
|
+
}), _ = await g.ssrLoadModule("@voltro/web/ssr"), { renderPageToHtml: v, renderMetaToHtml: y, renderRouterStateScript: x, isDeferredLoaderResult: S, assertDeferralSupported: C, beginStoreSeeds: w, seedPreloadedSubscription: D, seedPreloadedSubscriptionFailure: A } = _, j = /* @__PURE__ */ new Map();
|
|
202
202
|
if (e.locales && e.locales.length > 0 && e.defaultLocale) try {
|
|
203
|
-
let n = (await
|
|
203
|
+
let n = (await g.ssrLoadModule("@voltro/i18n")).makeSsgWrap;
|
|
204
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.");
|
|
205
205
|
for (let r of e.locales) try {
|
|
206
|
-
let i = await
|
|
206
|
+
let i = await g.ssrLoadModule(E(t, "src", "locales", `${r}.ts`)), a = i.default ?? i;
|
|
207
207
|
j.set(r, n(r, a, e.defaultLocale));
|
|
208
208
|
} catch (e) {
|
|
209
209
|
F.warn(`i18n catalog missing for locale '${r}' — pages rendered at /${r}/* will crash. Add src/locales/${r}.ts.`, {}, e);
|
|
@@ -211,7 +211,7 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
211
211
|
} catch (e) {
|
|
212
212
|
F.warn("i18n wrapper unavailable for SSG — pages that call useT() will fail. Check that @voltro/i18n is installed.", {}, e);
|
|
213
213
|
}
|
|
214
|
-
let M = [], N = {}, P = (e) => e.dir === "" ? E(t, "src", "pages") : E(t, "src", "pages", e.dir), I = async (e) => await
|
|
214
|
+
let M = [], N = {}, P = (e) => e.dir === "" ? E(t, "src", "pages") : E(t, "src", "pages", e.dir), I = async (e) => await g.ssrLoadModule(E(P(e), "layout.tsx")), B = async (e) => await g.ssrLoadModule(E(P(e), "error.tsx")), U = async (e) => await g.ssrLoadModule(E(P(e), "loading.tsx")), W = (e, t) => ({
|
|
215
215
|
params: e.params,
|
|
216
216
|
pathname: e.pathname,
|
|
217
217
|
search: "",
|
|
@@ -221,17 +221,17 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
221
221
|
isServer: !0
|
|
222
222
|
});
|
|
223
223
|
for (let a of r) {
|
|
224
|
-
let r = `${E(t, "src", "pages", a.file)}`, o = await
|
|
225
|
-
N[a.pattern] =
|
|
226
|
-
let u =
|
|
224
|
+
let r = `${E(t, "src", "pages", a.file)}`, o = await g.ssrLoadModule(r), l = b(o, E("src", "pages", a.file));
|
|
225
|
+
N[a.pattern] = l;
|
|
226
|
+
let u = l.renderMode, d = h(i, a.dirChain);
|
|
227
227
|
if (u === "spa") {
|
|
228
228
|
let t = await H({
|
|
229
229
|
page: a,
|
|
230
230
|
chainEntries: d,
|
|
231
231
|
pageMod: o,
|
|
232
|
-
shellTemplate:
|
|
232
|
+
shellTemplate: c,
|
|
233
233
|
distDir: n,
|
|
234
|
-
helpers:
|
|
234
|
+
helpers: _,
|
|
235
235
|
loadLayout: I,
|
|
236
236
|
loadError: B,
|
|
237
237
|
loadPending: U,
|
|
@@ -289,14 +289,14 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
289
289
|
let m = o.interactive ?? "full";
|
|
290
290
|
for (let t of f) {
|
|
291
291
|
w();
|
|
292
|
-
let r, i,
|
|
292
|
+
let r, i, l = new AbortController();
|
|
293
293
|
try {
|
|
294
|
-
({chain: r, segmentLoaderData: i} = await
|
|
294
|
+
({chain: r, segmentLoaderData: i} = await s({
|
|
295
295
|
entries: d,
|
|
296
296
|
loadLayout: I,
|
|
297
297
|
loadError: B,
|
|
298
298
|
loadPending: U,
|
|
299
|
-
ctx: W(t,
|
|
299
|
+
ctx: W(t, l.signal)
|
|
300
300
|
}));
|
|
301
301
|
} catch (e) {
|
|
302
302
|
let n = e?._voltroControl;
|
|
@@ -305,12 +305,12 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
305
305
|
F.warn("layout loader threw NotFoundError at build time — skipping artifact", { pathname: t.pathname });
|
|
306
306
|
continue;
|
|
307
307
|
}
|
|
308
|
-
F.warn("layout loader threw, falling back to no layout data", { pathname: t.pathname }, e), {chain: r, segmentLoaderData: i} = await
|
|
308
|
+
F.warn("layout loader threw, falling back to no layout data", { pathname: t.pathname }, e), {chain: r, segmentLoaderData: i} = await s({
|
|
309
309
|
entries: d,
|
|
310
310
|
loadLayout: async (e) => ({ default: (await I(e)).default }),
|
|
311
311
|
loadError: B,
|
|
312
312
|
loadPending: U,
|
|
313
|
-
ctx: W(t,
|
|
313
|
+
ctx: W(t, l.signal)
|
|
314
314
|
});
|
|
315
315
|
}
|
|
316
316
|
let f = {
|
|
@@ -322,13 +322,16 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
322
322
|
Pending: o.Pending,
|
|
323
323
|
renderMode: u,
|
|
324
324
|
chain: r
|
|
325
|
-
},
|
|
325
|
+
}, h = null;
|
|
326
326
|
if (typeof o.loader == "function") {
|
|
327
327
|
let e = new AbortController();
|
|
328
328
|
try {
|
|
329
|
-
|
|
329
|
+
h = await o.loader({
|
|
330
330
|
params: t.params,
|
|
331
331
|
pathname: t.pathname,
|
|
332
|
+
search: "",
|
|
333
|
+
headers: {},
|
|
334
|
+
query: void 0,
|
|
332
335
|
signal: e.signal,
|
|
333
336
|
isServer: !0
|
|
334
337
|
});
|
|
@@ -341,7 +344,7 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
341
344
|
F.warn("loader threw, falling back to null", { pathname: t.pathname }, e);
|
|
342
345
|
}
|
|
343
346
|
}
|
|
344
|
-
S(
|
|
347
|
+
S(h) && C({
|
|
345
348
|
page: t.pathname,
|
|
346
349
|
renderMode: u,
|
|
347
350
|
interactive: m
|
|
@@ -351,7 +354,7 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
351
354
|
renderMode: u,
|
|
352
355
|
interactive: m
|
|
353
356
|
});
|
|
354
|
-
await
|
|
357
|
+
await p({
|
|
355
358
|
pageMod: o,
|
|
356
359
|
params: t.params,
|
|
357
360
|
query: void 0,
|
|
@@ -359,20 +362,20 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
359
362
|
seed: D,
|
|
360
363
|
seedFailure: A
|
|
361
364
|
});
|
|
362
|
-
let
|
|
365
|
+
let g = t.params.locale ?? e.defaultLocale ?? "en", _ = j.get(g) ?? j.get(e.defaultLocale ?? ""), { html: b, meta: E } = v({
|
|
363
366
|
descriptor: f,
|
|
364
367
|
params: t.params,
|
|
365
368
|
pathname: t.pathname,
|
|
366
|
-
loaderData:
|
|
369
|
+
loaderData: h,
|
|
367
370
|
segmentLoaderData: i,
|
|
368
|
-
...
|
|
369
|
-
locale:
|
|
370
|
-
}), O = V(
|
|
371
|
+
..._ ? { outerWrap: _ } : {},
|
|
372
|
+
locale: g
|
|
373
|
+
}), O = V(c, {
|
|
371
374
|
body: b,
|
|
372
375
|
metaHtml: y(E),
|
|
373
376
|
stateScript: x({
|
|
374
377
|
path: t.pathname,
|
|
375
|
-
loaderData:
|
|
378
|
+
loaderData: h,
|
|
376
379
|
segmentLoaderData: i,
|
|
377
380
|
pageLoaderRan: typeof o.loader == "function"
|
|
378
381
|
}),
|
|
@@ -385,7 +388,7 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
385
388
|
});
|
|
386
389
|
}
|
|
387
390
|
}
|
|
388
|
-
return await
|
|
391
|
+
return await g.close(), {
|
|
389
392
|
rendered: M,
|
|
390
393
|
pageMeta: N
|
|
391
394
|
};
|
|
@@ -474,7 +477,7 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
474
477
|
file: n.file,
|
|
475
478
|
reason: n.reason
|
|
476
479
|
});
|
|
477
|
-
let { regenerateRpcGroup: r } = await import("./codegenCommand-
|
|
480
|
+
let { regenerateRpcGroup: r } = await import("./codegenCommand-DkjoJ30Q.js"), i = await r(e);
|
|
478
481
|
if (i.kind === "refused") {
|
|
479
482
|
F.warn("could not regenerate the rpc group — building against what is on disk", { reason: i.reason });
|
|
480
483
|
return;
|
|
@@ -484,12 +487,12 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
484
487
|
routes: i.routes
|
|
485
488
|
});
|
|
486
489
|
}, K = async (e) => {
|
|
487
|
-
let
|
|
488
|
-
if (!
|
|
489
|
-
let { loadApiConfig: t } = await import("./dev-
|
|
490
|
+
let n = await l(e);
|
|
491
|
+
if (!n) {
|
|
492
|
+
let { loadApiConfig: t } = await import("./dev-DuqBJC7g.js"), n = await t(e);
|
|
490
493
|
if (n) {
|
|
491
494
|
F.info("building api app", { app: n.name ?? "(unnamed)" }), await G(e);
|
|
492
|
-
let { runApiBuild: t, runServeBundleBuild: r } = await import("./apiBuild-
|
|
495
|
+
let { runApiBuild: t, runServeBundleBuild: r } = await import("./apiBuild-RM5W5YXk.js");
|
|
493
496
|
await t(e);
|
|
494
497
|
try {
|
|
495
498
|
await r(e);
|
|
@@ -509,22 +512,22 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
509
512
|
exitCode: 0
|
|
510
513
|
};
|
|
511
514
|
}
|
|
512
|
-
F.info("building web app", { app:
|
|
513
|
-
let { resolved:
|
|
514
|
-
rawEnv:
|
|
515
|
+
F.info("building web app", { app: n.name ?? "(unnamed)" });
|
|
516
|
+
let { resolved: r } = await f({
|
|
517
|
+
rawEnv: n.env,
|
|
515
518
|
appType: "web",
|
|
516
519
|
root: e,
|
|
517
520
|
log: F,
|
|
518
521
|
generateTypes: !0
|
|
519
|
-
}),
|
|
520
|
-
await
|
|
521
|
-
let { pages:
|
|
522
|
-
await
|
|
522
|
+
}), i = await d(e, n);
|
|
523
|
+
await c(e, n, i, r.publicValues);
|
|
524
|
+
let { pages: a } = await v(E(e, "src", "pages"));
|
|
525
|
+
await u({
|
|
523
526
|
appRoot: e,
|
|
524
|
-
pages:
|
|
527
|
+
pages: a,
|
|
525
528
|
mode: "prod"
|
|
526
529
|
});
|
|
527
|
-
let
|
|
530
|
+
let s = E(e, ".framework"), p = E(s, "dist"), h = E(e, "node_modules", "@voltro", "ui-shadcn"), y = O(E(h, "package.json")) ? h : null, b = [...y ? [
|
|
528
531
|
{
|
|
529
532
|
find: "@voltro/ui-shadcn/tokens.css",
|
|
530
533
|
replacement: E(y, "src/tokens.css")
|
|
@@ -541,11 +544,11 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
541
544
|
find: "@voltro/ui-shadcn",
|
|
542
545
|
replacement: E(y, "src/index.ts")
|
|
543
546
|
}
|
|
544
|
-
] : [], ...
|
|
547
|
+
] : [], ...m(e)];
|
|
545
548
|
F.info("running vite build");
|
|
546
|
-
let x = await
|
|
549
|
+
let x = await _("vite", () => import("vite")), C = (await import("@vitejs/plugin-react")).default, T = (await import("@tailwindcss/vite")).default;
|
|
547
550
|
await x.build({
|
|
548
|
-
root:
|
|
551
|
+
root: s,
|
|
549
552
|
envPrefix: "__VOLTRO_VITE_ENV_DISABLED__",
|
|
550
553
|
plugins: [C(), T()],
|
|
551
554
|
resolve: {
|
|
@@ -579,14 +582,14 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
579
582
|
pages: A,
|
|
580
583
|
dirs: j,
|
|
581
584
|
vite: x,
|
|
582
|
-
...
|
|
583
|
-
...
|
|
585
|
+
...n.locales ? { locales: n.locales } : {},
|
|
586
|
+
...n.defaultLocale ? { defaultLocale: n.defaultLocale } : {}
|
|
584
587
|
});
|
|
585
|
-
F.info("generating .framework/ssrEntry.ts"), await W(e, A, j,
|
|
588
|
+
F.info("generating .framework/ssrEntry.ts"), await W(e, A, j, n.locales, n.defaultLocale, N), F.info("vite build --ssr → dist/server/");
|
|
586
589
|
let L = /* @__PURE__ */ new Set();
|
|
587
590
|
try {
|
|
588
591
|
await x.build({
|
|
589
|
-
root:
|
|
592
|
+
root: s,
|
|
590
593
|
envPrefix: "__VOLTRO_VITE_ENV_DISABLED__",
|
|
591
594
|
plugins: [
|
|
592
595
|
C(),
|
|
@@ -624,7 +627,7 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
624
627
|
if (O(R)) {
|
|
625
628
|
F.info("precompiling app.config.ts → dist/server/appConfig.js");
|
|
626
629
|
try {
|
|
627
|
-
await (await
|
|
630
|
+
await (await _("esbuild", () => import("esbuild"))).build({
|
|
628
631
|
entryPoints: [R],
|
|
629
632
|
outfile: E(p, "server", "appConfig.js"),
|
|
630
633
|
bundle: !0,
|
|
@@ -656,12 +659,12 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
656
659
|
routes: M.map((e) => e.pattern)
|
|
657
660
|
});
|
|
658
661
|
try {
|
|
659
|
-
let e = process.env.VOLTRO_SEO_NOINDEX !== "1", r =
|
|
662
|
+
let e = process.env.VOLTRO_SEO_NOINDEX !== "1", r = n.seo?.siteUrl, i = n.locales ?? [], a = n.defaultLocale ?? i[0];
|
|
660
663
|
if (r && !O(E(p, "sitemap.xml"))) {
|
|
661
|
-
let
|
|
662
|
-
let
|
|
663
|
-
return
|
|
664
|
-
}).filter((e) => !e.includes("[")).map((e) => ({ path: e })), s =
|
|
664
|
+
let n = new Set(i.filter((e) => e !== a)), o = M.filter((e) => !e.noIndex).map((e) => e.pattern).filter((e) => {
|
|
665
|
+
let t = e.split("/").filter(Boolean)[0];
|
|
666
|
+
return t === void 0 || !n.has(t);
|
|
667
|
+
}).filter((e) => !e.includes("[")).map((e) => ({ path: e })), s = t({
|
|
665
668
|
siteUrl: r,
|
|
666
669
|
entries: o,
|
|
667
670
|
...i.length > 1 ? { locales: i } : {},
|
|
@@ -673,12 +676,12 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
673
676
|
});
|
|
674
677
|
}
|
|
675
678
|
if (!O(E(p, "robots.txt"))) {
|
|
676
|
-
let
|
|
679
|
+
let t = o({
|
|
677
680
|
indexable: e,
|
|
678
681
|
...e && r ? { sitemapUrl: `${r.replace(/\/$/, "")}/sitemap.xml` } : {},
|
|
679
|
-
...
|
|
682
|
+
...n.seo?.disallow ? { disallow: n.seo.disallow } : {}
|
|
680
683
|
});
|
|
681
|
-
await k.writeFile(E(p, "robots.txt"),
|
|
684
|
+
await k.writeFile(E(p, "robots.txt"), t, "utf8"), F.info("wrote dist/robots.txt", { indexable: e });
|
|
682
685
|
}
|
|
683
686
|
} catch (e) {
|
|
684
687
|
F.warn("SEO artefact generation failed (non-fatal)", {}, e);
|
|
@@ -708,7 +711,7 @@ var N = A({ scope: "voltro:build" }), P = async (e) => {
|
|
|
708
711
|
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);
|
|
709
712
|
}), J = async (t) => {
|
|
710
713
|
if (t.includes("--target")) {
|
|
711
|
-
let { runSdkBuildCommand: e } = await import("./sdkgen-
|
|
714
|
+
let { runSdkBuildCommand: e } = await import("./sdkgen-COQqHB9V.js");
|
|
712
715
|
return e(t);
|
|
713
716
|
}
|
|
714
717
|
let n = t.find((e) => !e.startsWith("-")) ?? process.cwd(), r = await y(q(n), { scope: "voltro:build" }), i = e(n);
|
|
@@ -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-DWL2_PPR.js";
|
|
2
2
|
export { n as offlineManifest, e as runCheckCommand, t as toInput };
|
|
@@ -4,7 +4,7 @@ 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-TmZTAepc.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-DuqBJC7g.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)),
|
|
@@ -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-mIX_DpSe.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";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { l as e, z as t } from "./dev-
|
|
2
|
-
import {
|
|
1
|
+
import { l as e, z as t } from "./dev-D4l_YOzI.js";
|
|
2
|
+
import { dt as n } from "./webDev-Dk8lFUzf.js";
|
|
3
3
|
import { r } from "./codegen-CbpGCWLG.js";
|
|
4
4
|
import { basename as i, join as a, relative as o, resolve as s } from "node:path";
|
|
5
5
|
import { promises as c } from "node:fs";
|