@voltro/cli 0.53.0 → 0.54.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 +195 -0
- package/dist/{agentsMd-0l980yhL.js → agentsMd-BaLC10Na.js} +110 -82
- package/dist/agentsMd-DCY1RSs8.js +2 -0
- package/dist/apiBuild-CeUN55uk.js +2 -0
- package/dist/{apiBuild-CaPfoWku.js → apiBuild-DTWp0S_q.js} +2 -2
- package/dist/bin.js +1 -1
- package/dist/{build-D-OnvNMf.js → build-D4ygSbnV.js} +114 -114
- package/dist/{checkCommand-C5elt0tW.js → checkCommand-Dg1G7Gwd.js} +6 -6
- package/dist/{checkCommand-D2ZduVlh.js → checkCommand-L7DTlpIF.js} +1 -1
- package/dist/{cloudCmd-QUXh-b5w.js → cloudCmd-DzKcSYuy.js} +1 -1
- package/dist/{codegen-FEk8AZHb.js → codegen-DSLM8Su9.js} +2 -2
- package/dist/codegen-DjgxEOnD.js +2 -0
- package/dist/codegenCommand-CG_Vx4lc.js +41 -0
- package/dist/{codemodRunner-BjtB2lq6.js → codemodRunner-Cd4xkC6u.js} +9 -9
- package/dist/{commands-DyxAmhP0.js → commands-6Kzi92Np.js} +96 -73
- package/dist/{dashboardCommand-BdKTyT13.js → dashboardCommand-Cq1PWvI1.js} +3 -3
- package/dist/{dataCommand-Bab9X7s8.js → dataCommand-DYzW8vkv.js} +3 -3
- package/dist/{dbCommand-06O2finM.js → dbCommand-B4NWZtGL.js} +3 -3
- package/dist/dbCommand-CSFWs9ev.js +2 -0
- package/dist/{dev-C6LGF4iY.js → dev-CmuvUKRq.js} +2236 -2219
- package/dist/{dev-GjJWAYo2.js → dev-cKUiZZsB.js} +1 -1
- package/dist/{doctorCommand-etMkflRc.js → doctorCommand-DCiFVMtZ.js} +21 -21
- package/dist/doctorCommand-J3qu4E0Y.js +2 -0
- package/dist/{dormancyCommand-UwZ1AZzB.js → dormancyCommand-w1TrmgYP.js} +1 -1
- package/dist/{embeddingsCommand-C70zWHwo.js → embeddingsCommand-CMgPyRTr.js} +1 -1
- package/dist/{envCommand-dSyKvRkM.js → envCommand-Cyynmcfa.js} +15 -15
- package/dist/{evolveCommand-CG0_ebO5.js → evolveCommand-BwvQ8dVH.js} +2 -2
- package/dist/fileConventions-l-RIXbx8.js +36 -0
- package/dist/{fileTaxonomy-B7uxipWS.js → fileTaxonomy-CbyMQYx_.js} +37 -37
- package/dist/{frameworkTableAssembly-DKx3ba3S.js → frameworkTableAssembly-D7LJuALW.js} +5 -5
- package/dist/frameworkTableAssembly-IPD1pUnZ.js +2 -0
- package/dist/index.js +2 -2
- package/dist/{infoCommand-_53iOc_j.js → infoCommand-DlYlUPqs.js} +1 -1
- package/dist/{metaCommands-Cn2oboG4.js → metaCommands-x7RCi2AF.js} +2 -2
- package/dist/{migrate-Cko9rswM.js → migrate-BK_Bbx-_.js} +2 -2
- package/dist/mobileCommand-D9O6iq3D.js +428 -0
- package/dist/mobileCommand-DAum7tsG.js +2 -0
- package/dist/{pageConvention-C938S8oC.js → pageConvention-CMpfDN6r.js} +1 -1
- package/dist/{privacyCommand-DWTQMC6R.js → privacyCommand-BCa2OoZG.js} +2 -2
- package/dist/{probeCommand-DkGGLknv.js → probeCommand-_C0YU207.js} +1 -1
- package/dist/{projectScaffold-EzlErR4E.js → projectScaffold-CJfP-xbT.js} +1 -1
- package/dist/{projectScaffold-B4dmTlwT.js → projectScaffold-CSN0OzBV.js} +2 -2
- package/dist/renderModeScan-43yQ2opo.js +147 -0
- package/dist/{renderProfile-CskIgAfn.js → renderProfile-DvrhVJHa.js} +2 -2
- package/dist/{runtimeTrace-c0APJz7E.js → runtimeTrace-CGWx1Q6l.js} +1 -1
- package/dist/{sdkgen-BiQCgIEr.js → sdkgen-CDGHQUFj.js} +1 -1
- package/dist/serveCommand-BiPe8BJm.js +2 -0
- package/dist/{serveCommand-CueKQgzl.js → serveCommand-Bje09q1v.js} +708 -708
- package/dist/serveEntry.js +1 -1
- package/dist/start-B0bnJgxI.js +3 -0
- package/dist/{start-ekPan8BT.js → start-Clz-1BHB.js} +511 -504
- package/dist/startEntry.js +1 -1
- package/dist/{staticCommand-xlSL-IWk.js → staticCommand-ey0kYmOT.js} +1 -1
- package/dist/{subcommandNames-DpYs3DXr.js → subcommandNames-CDzfEtKV.js} +3 -3
- package/dist/{templates-BR-fb4SP.js → templates-BTWZkJJT.js} +41 -9
- package/dist/{test-BWPQcRoB.js → test-D_kW4KMj.js} +1 -1
- package/dist/updateCommand-CIoVDKnj.js +2 -0
- package/dist/{updateCommand-C_8I8Rzo.js → updateCommand-CRJlAOaM.js} +1 -1
- package/dist/{webDev-oczpugbx.js → webDev-DSI9SOhs.js} +1127 -1090
- package/dist/{webDev-C7jWJ5dX.js → webDev-DlvZO30c.js} +1 -1
- package/dist/{webhooksCommand-4SVPDjKg.js → webhooksCommand-BvzXNHji.js} +1 -1
- package/dist/workspaceDeps-RKEkX92S.js +45 -0
- package/package.json +19 -19
- package/templates/AGENTS.core.md +2 -0
- package/templates/AGENTS.md +4 -2
- package/templates/agent-docs/_index.md +2 -2
- package/templates/agent-docs/_manifest.json +1 -1
- package/templates/agent-docs/ai.md +4 -4
- package/templates/agent-docs/authentication.md +72 -0
- package/templates/agent-docs/cli.md +4 -1
- package/templates/agent-docs/data.md +61 -12
- package/templates/agent-docs/database/advancedqueries.md +1 -1
- package/templates/agent-docs/database/migrations.md +1 -1
- package/templates/agent-docs/database/seedsdialects.md +64 -2
- package/templates/agent-docs/internationalization.md +2 -0
- package/templates/agent-docs/introduction.md +25 -0
- package/templates/agent-docs/local-first-mobile.md +139 -41
- package/templates/agent-docs/observability.md +4 -2
- package/templates/agent-docs/plugins/atlassian.md +2 -2
- package/templates/agent-docs/plugins/audit.md +2 -2
- package/templates/agent-docs/plugins/billing.md +1 -1
- package/templates/agent-docs/plugins/cdc-out.md +8 -3
- package/templates/agent-docs/plugins/comments.md +22 -0
- package/templates/agent-docs/plugins/presence.md +32 -3
- package/templates/agent-docs/plugins/prometheus.md +2 -0
- package/templates/agent-docs/plugins/queue.md +47 -4
- package/templates/agent-docs/plugins.md +6 -6
- package/templates/agent-docs/reference.md +20 -1
- package/templates/agent-docs/routing.md +63 -9
- package/templates/agent-docs/scheduling.md +1 -1
- package/templates/agent-docs/schema-driven-ui.md +12 -1
- package/templates/agent-docs/templates/appshells.md +36 -4
- package/templates/agent-docs/whats-new.md +109 -135
- package/templates/apps/api-ai/package.json +6 -6
- 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 +9 -9
- package/templates/apps/api-collab/README.md +3 -3
- package/templates/apps/api-collab/app.config.ts +1 -1
- package/templates/apps/api-collab/database/schema.ts +12 -8
- package/templates/apps/api-collab/mutations/documents.create.mutation.server.ts +1 -1
- package/templates/apps/api-collab/mutations/documents.setBody.mutation.server.ts +1 -1
- package/templates/apps/api-collab/mutations/documents.setBody.mutation.ts +1 -1
- package/templates/apps/api-collab/package.json +8 -8
- package/templates/apps/api-collab/template.json +1 -1
- package/templates/apps/api-collab/tests/documents.setBody.test.ts +10 -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/package.json +8 -8
- package/templates/apps/api-rest/package.json +7 -7
- package/templates/apps/api-row-history/package.json +8 -8
- package/templates/apps/api-saas/package.json +11 -10
- 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-webhooks/package.json +9 -9
- package/templates/apps/changelog/package.json +7 -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/README.md +43 -24
- package/templates/apps/frontend-collab/app.config.ts +3 -3
- package/templates/apps/frontend-collab/package.json +14 -10
- package/templates/apps/frontend-collab/src/locales/de.ts +1 -2
- package/templates/apps/frontend-collab/src/locales/en.ts +1 -2
- package/templates/apps/frontend-collab/src/pages/page.test.tsx +72 -76
- package/templates/apps/frontend-collab/src/pages/page.tsx +45 -22
- package/templates/apps/frontend-collab/template.json +2 -2
- 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 +8 -7
- package/templates/apps/frontend-i18n/package.json +6 -6
- package/templates/apps/frontend-landing/README.md +48 -0
- package/templates/apps/frontend-landing/app.config.ts +28 -0
- package/templates/apps/frontend-landing/package.json +7 -6
- package/templates/apps/frontend-landing/src/assets/hero.jpg +0 -0
- package/templates/apps/frontend-landing/src/fonts/Geist-Variable.woff2 +0 -0
- package/templates/apps/frontend-landing/src/fonts/LICENSE-Geist.txt +92 -0
- package/templates/apps/frontend-landing/src/globals.css +15 -0
- package/templates/apps/frontend-landing/src/globals.d.ts +17 -0
- package/templates/apps/frontend-landing/src/locales/de.ts +3 -2
- package/templates/apps/frontend-landing/src/locales/en.ts +5 -2
- package/templates/apps/frontend-landing/src/pages/page.test.tsx +79 -0
- package/templates/apps/frontend-landing/src/pages/page.tsx +26 -3
- package/templates/apps/frontend-landing/template.json +2 -2
- 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 +8 -7
- package/templates/apps/frontend-status/package.json +8 -8
- package/templates/apps/mobile-app/package.json +12 -11
- package/templates/apps/mobile-app/src/lib/deeplinks.ts +29 -17
- package/templates/apps/mobile-app/tests/deeplinks.test.ts +16 -0
- package/dist/agentsMd-SDDSkyl4.js +0 -2
- package/dist/apiBuild-DHtLXYx9.js +0 -2
- package/dist/codegen-BWpt3VgF.js +0 -2
- package/dist/codegenCommand-BOiWQ5hz.js +0 -137
- package/dist/dbCommand-B1EXBC6f.js +0 -2
- package/dist/doctorCommand-B0hX0tdz.js +0 -2
- package/dist/fileConventions-DASGEmj-.js +0 -35
- package/dist/frameworkTableAssembly-C_7Z-rMs.js +0 -2
- package/dist/renderModeScan-CUbOeOAg.js +0 -122
- package/dist/serveCommand-DsnrVN3U.js +0 -2
- package/dist/start-BJzZLbt8.js +0 -3
- package/dist/updateCommand-Bqql_rsQ.js +0 -2
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { B as t, C as n, Ct as r, Dt as i, Et as a,
|
|
1
|
+
import { bn as e } from "./dev-CmuvUKRq.js";
|
|
2
|
+
import { B as t, C as n, Ct as r, Dt as i, Et as a, J as o, Kt as s, Nt as c, St as l, Ut as u, V as d, Y as f, _t as p, a as m, b as h, bt as g, dt as _, ft as v, gt as y, l as b, m as x, p as S, q as C, s as w, ut as T, vt as E, wt as D, x as O, xt as k, yt as A, z as j } from "./webDev-DSI9SOhs.js";
|
|
3
3
|
import { t as M } from "./cliRuntime-Dh7UDinH.js";
|
|
4
|
-
import { a as N } from "./renderModeScan-
|
|
4
|
+
import { a as N } from "./renderModeScan-43yQ2opo.js";
|
|
5
5
|
import { o as P } from "./imagePipeline-CBZmjT4i.js";
|
|
6
6
|
import { a as F } from "./fontPipeline-Tsh8kZfA.js";
|
|
7
|
-
import { i as I, o as L, s as R } from "./apiBuild-
|
|
8
|
-
import { n as z } from "./renderProfile-
|
|
7
|
+
import { i as I, o as L, s as R } from "./apiBuild-DTWp0S_q.js";
|
|
8
|
+
import { n as z } from "./renderProfile-DvrhVJHa.js";
|
|
9
9
|
import { dirname as B, join as V, resolve as H } from "node:path";
|
|
10
10
|
import { existsSync as U, promises as W } from "node:fs";
|
|
11
11
|
import "node:url";
|
|
@@ -14,10 +14,10 @@ import { Effect as K } from "effect";
|
|
|
14
14
|
import { createRequire as q } from "node:module";
|
|
15
15
|
//#region src/webStartBundle.ts
|
|
16
16
|
var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
17
|
-
let t = await
|
|
17
|
+
let t = await s("esbuild", () => import("esbuild")), n = V(e, ".framework"), r = V(n, "dist-web", "startBundle");
|
|
18
18
|
await W.mkdir(n, { recursive: !0 });
|
|
19
|
-
let i = Date.now(), a = V(e, "tsconfig.json"), o = /* @__PURE__ */ new Set(),
|
|
20
|
-
await W.writeFile(
|
|
19
|
+
let i = Date.now(), a = V(e, "tsconfig.json"), o = /* @__PURE__ */ new Set(), c = V(n, "startEntry.ts");
|
|
20
|
+
await W.writeFile(c, [
|
|
21
21
|
"// GENERATED BY `voltro build` — do not edit; overwritten on next build.",
|
|
22
22
|
"import { runStartCommand as __run, loadDotEnv } from '@voltro/cli/startEntry'",
|
|
23
23
|
"import { pathToFileURL, fileURLToPath } from 'node:url'",
|
|
@@ -41,7 +41,7 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
41
41
|
"}",
|
|
42
42
|
""
|
|
43
43
|
].join("\n"), "utf8"), await t.build({
|
|
44
|
-
entryPoints: [
|
|
44
|
+
entryPoints: [c],
|
|
45
45
|
bundle: !0,
|
|
46
46
|
format: "esm",
|
|
47
47
|
platform: "node",
|
|
@@ -58,11 +58,11 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
58
58
|
alias: I("startEntry"),
|
|
59
59
|
...U(a) ? { tsconfig: a } : {}
|
|
60
60
|
});
|
|
61
|
-
let
|
|
61
|
+
let l = await R(r, i);
|
|
62
62
|
return J.info("web build: start bundle written", {
|
|
63
63
|
out: V(".framework", "dist-web", "startBundle", "startEntry.js"),
|
|
64
64
|
...o.size > 0 ? { externalizedOptionalPeers: [...o].join(", ") } : {},
|
|
65
|
-
...
|
|
65
|
+
...l > 0 ? { prunedStaleChunks: l } : {}
|
|
66
66
|
}), V(r, "startEntry.js");
|
|
67
67
|
}, Y = G({ scope: "voltro:build" }), X = () => ({
|
|
68
68
|
name: "voltro:stub-engine-devtools",
|
|
@@ -107,7 +107,7 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
107
107
|
`<meta name="voltro-interactive" content="${n.interactive}" />`,
|
|
108
108
|
n.stateScript
|
|
109
109
|
].filter((e) => e.length > 0).join("\n ");
|
|
110
|
-
return r = t(
|
|
110
|
+
return r = t(d(r, i), n.documentAttrs), n.interactive === "none" && (r = ne(r)), r;
|
|
111
111
|
}, ie = async (e) => {
|
|
112
112
|
let { page: t, chainEntries: n, pageMod: r, helpers: i } = e, a = n.filter((e) => e.hasLayout);
|
|
113
113
|
if (a.length === 0) return Y.debug("skip page", {
|
|
@@ -118,10 +118,10 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
118
118
|
pattern: t.pattern,
|
|
119
119
|
reason: "renderMode=spa with a dynamic pattern"
|
|
120
120
|
}), null;
|
|
121
|
-
let
|
|
122
|
-
if (
|
|
121
|
+
let s = await Promise.all(a.map(e.loadLayout)), c = a.filter((e, t) => typeof s[t]?.loader == "function").map((e) => e.dir || "/");
|
|
122
|
+
if (c.length > 0) return Y.info(`spa shell for ${t.pattern} left to on-demand rendering — its layout chain has a loader (${c.join(", ")}), whose output may be per-request`, {
|
|
123
123
|
pattern: t.pattern,
|
|
124
|
-
layouts:
|
|
124
|
+
layouts: c
|
|
125
125
|
}), null;
|
|
126
126
|
let { chain: l, segmentLoaderData: u } = await w({
|
|
127
127
|
entries: n,
|
|
@@ -129,7 +129,7 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
129
129
|
loadError: e.loadError,
|
|
130
130
|
loadPending: e.loadPending,
|
|
131
131
|
ctx: e.ctx
|
|
132
|
-
}),
|
|
132
|
+
}), p = {
|
|
133
133
|
pattern: t.pattern,
|
|
134
134
|
Component: r.default,
|
|
135
135
|
meta: r.meta,
|
|
@@ -137,41 +137,41 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
137
137
|
Pending: r.Pending,
|
|
138
138
|
renderMode: "spa",
|
|
139
139
|
chain: l
|
|
140
|
-
},
|
|
140
|
+
}, m = r.interactive ?? "full", h = C({
|
|
141
141
|
helpers: i,
|
|
142
142
|
page: t.pattern,
|
|
143
|
-
interactive:
|
|
143
|
+
interactive: m,
|
|
144
144
|
delivery: "artefact",
|
|
145
145
|
renderInput: {
|
|
146
|
-
descriptor:
|
|
146
|
+
descriptor: p,
|
|
147
147
|
params: {},
|
|
148
148
|
pathname: t.pattern,
|
|
149
149
|
segmentLoaderData: u,
|
|
150
150
|
...e.outerWrap ? { outerWrap: e.outerWrap } : {},
|
|
151
151
|
...e.locale ? { locale: e.locale } : {}
|
|
152
152
|
}
|
|
153
|
-
}),
|
|
153
|
+
}), g = o({
|
|
154
154
|
helpers: i,
|
|
155
|
-
prepared:
|
|
156
|
-
}),
|
|
155
|
+
prepared: h
|
|
156
|
+
}), _ = f({
|
|
157
157
|
helpers: i,
|
|
158
|
-
prepared:
|
|
159
|
-
meta:
|
|
160
|
-
interactive:
|
|
161
|
-
}),
|
|
162
|
-
return await W.mkdir(B(
|
|
158
|
+
prepared: h,
|
|
159
|
+
meta: g.meta,
|
|
160
|
+
interactive: m
|
|
161
|
+
}), v = d(e.shellTemplate.replace("<div id=\"root\"></div>", `<div id="root">${g.body}</div>`), _), y = $(e.distDir, t.pattern);
|
|
162
|
+
return await W.mkdir(B(y), { recursive: !0 }), await W.writeFile(y, v, "utf8"), Y.debug("prerendered spa layout shell", { pattern: t.pattern }), {
|
|
163
163
|
pattern: t.pattern,
|
|
164
|
-
outPath:
|
|
164
|
+
outPath: y
|
|
165
165
|
};
|
|
166
166
|
}, ae = async (e) => {
|
|
167
|
-
let { root: t, distDir: n, pages: r, dirs: a, vite:
|
|
168
|
-
await W.mkdir(B(
|
|
169
|
-
let
|
|
167
|
+
let { root: t, distDir: n, pages: r, dirs: a, vite: o } = e, s = V(n, "index.html"), u = await W.readFile(s, "utf8"), d = V(n, "_voltro", "shell.html");
|
|
168
|
+
await W.mkdir(B(d), { recursive: !0 }), await W.writeFile(d, u, "utf8");
|
|
169
|
+
let f = /* @__PURE__ */ new Map();
|
|
170
170
|
for (let t of e.islandsPlans ?? []) {
|
|
171
171
|
let e = V(n, "island-shells", `${t.name}.html`);
|
|
172
172
|
try {
|
|
173
|
-
let n = i(await W.readFile(e, "utf8"),
|
|
174
|
-
await W.writeFile(e, n, "utf8"),
|
|
173
|
+
let n = i(await W.readFile(e, "utf8"), u);
|
|
174
|
+
await W.writeFile(e, n, "utf8"), f.set(t.pattern, n);
|
|
175
175
|
} catch {
|
|
176
176
|
Y.warn("islands shell missing — page ships the full entry", {
|
|
177
177
|
pattern: t.pattern,
|
|
@@ -179,7 +179,7 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
179
179
|
});
|
|
180
180
|
}
|
|
181
181
|
}
|
|
182
|
-
let m = V(t, "node_modules", "@voltro", "ui-shadcn"), h = U(V(m, "package.json")) ? m : null,
|
|
182
|
+
let m = V(t, "node_modules", "@voltro", "ui-shadcn"), h = U(V(m, "package.json")) ? m : null, g = [...h ? [
|
|
183
183
|
{
|
|
184
184
|
find: "@voltro/ui-shadcn/tokens.css",
|
|
185
185
|
replacement: V(h, "src/tokens.css")
|
|
@@ -196,13 +196,13 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
196
196
|
find: "@voltro/ui-shadcn",
|
|
197
197
|
replacement: V(h, "src/index.ts")
|
|
198
198
|
}
|
|
199
|
-
] : [], ...
|
|
199
|
+
] : [], ...c(t)], _ = await o.createServer({
|
|
200
200
|
root: V(t, ".framework"),
|
|
201
201
|
envPrefix: "__VOLTRO_VITE_ENV_DISABLED__",
|
|
202
202
|
plugins: [
|
|
203
203
|
(await import("@vitejs/plugin-react")).default(),
|
|
204
204
|
(await import("@tailwindcss/vite")).default(),
|
|
205
|
-
|
|
205
|
+
l({
|
|
206
206
|
root: t,
|
|
207
207
|
config: P(e.images),
|
|
208
208
|
urlMode: "build-urls"
|
|
@@ -210,7 +210,7 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
210
210
|
X()
|
|
211
211
|
],
|
|
212
212
|
resolve: {
|
|
213
|
-
alias:
|
|
213
|
+
alias: g,
|
|
214
214
|
dedupe: [
|
|
215
215
|
"react",
|
|
216
216
|
"react-dom",
|
|
@@ -226,11 +226,11 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
226
226
|
},
|
|
227
227
|
appType: "custom",
|
|
228
228
|
logLevel: "warn"
|
|
229
|
-
}),
|
|
229
|
+
}), v = await _.ssrLoadModule("@voltro/web/ssr"), { renderPageToHtml: x, renderMetaToHtml: S, renderRouterStateScript: C, isDeferredLoaderResult: T, assertDeferralSupported: E, beginStoreSeeds: D, seedPreloadedSubscription: O, seedPreloadedSubscriptionFailure: k } = v, A, M = /* @__PURE__ */ new Map();
|
|
230
230
|
if (e.locales && e.locales.length > 0 && e.defaultLocale) try {
|
|
231
|
-
let n = await
|
|
231
|
+
let n = await _.ssrLoadModule("@voltro/i18n");
|
|
232
232
|
try {
|
|
233
|
-
A = (await
|
|
233
|
+
A = (await _.ssrLoadModule("@voltro/i18n/server")).resolveTimeZone?.({
|
|
234
234
|
configured: e.timeZone ?? null,
|
|
235
235
|
defaultTimeZone: e.defaultTimeZone ?? null
|
|
236
236
|
});
|
|
@@ -238,7 +238,7 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
238
238
|
let r = n.makeSsgWrap;
|
|
239
239
|
if (typeof r != "function") throw Error("@voltro/i18n is installed but missing the `makeSsgWrap` export — upgrade @voltro/i18n to a version that ships SSG support.");
|
|
240
240
|
for (let n of e.locales) try {
|
|
241
|
-
let i = await
|
|
241
|
+
let i = await _.ssrLoadModule(V(t, "src", "locales", `${n}.ts`)), a = i.default ?? i;
|
|
242
242
|
M.set(n, r(n, a, e.defaultLocale));
|
|
243
243
|
} catch (e) {
|
|
244
244
|
Y.warn(`i18n catalog missing for locale '${n}' — pages rendered at /${n}/* will crash. Add src/locales/${n}.ts.`, {}, e);
|
|
@@ -246,7 +246,7 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
246
246
|
} catch (e) {
|
|
247
247
|
Y.warn("i18n wrapper unavailable for SSG — pages that call useT() will fail. Check that @voltro/i18n is installed.", {}, e);
|
|
248
248
|
}
|
|
249
|
-
let I = [], L = {}, R = (e) => e.dir === "" ? V(t, "src", "pages") : V(t, "src", "pages", e.dir), z = async (e) => await
|
|
249
|
+
let I = [], L = {}, R = (e) => e.dir === "" ? V(t, "src", "pages") : V(t, "src", "pages", e.dir), z = async (e) => await _.ssrLoadModule(V(R(e), "layout.tsx")), H = async (e) => await _.ssrLoadModule(V(R(e), "error.tsx")), G = async (e) => await _.ssrLoadModule(V(R(e), "loading.tsx")), K = (e, t) => ({
|
|
250
250
|
params: e.params,
|
|
251
251
|
pathname: e.pathname,
|
|
252
252
|
search: "",
|
|
@@ -256,17 +256,17 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
256
256
|
isServer: !0
|
|
257
257
|
});
|
|
258
258
|
for (let i of r) {
|
|
259
|
-
let r = `${V(t, "src", "pages", i.file)}`, o = await
|
|
259
|
+
let r = `${V(t, "src", "pages", i.file)}`, o = await _.ssrLoadModule(r), s = N(o, V("src", "pages", i.file));
|
|
260
260
|
L[i.pattern] = s;
|
|
261
|
-
let c = s.renderMode, l =
|
|
261
|
+
let c = s.renderMode, l = b(a, i.dirChain);
|
|
262
262
|
if (c === "spa") {
|
|
263
263
|
let t = await ie({
|
|
264
264
|
page: i,
|
|
265
265
|
chainEntries: l,
|
|
266
266
|
pageMod: o,
|
|
267
|
-
shellTemplate:
|
|
267
|
+
shellTemplate: u,
|
|
268
268
|
distDir: n,
|
|
269
|
-
helpers:
|
|
269
|
+
helpers: v,
|
|
270
270
|
loadLayout: z,
|
|
271
271
|
loadError: H,
|
|
272
272
|
loadPending: G,
|
|
@@ -287,7 +287,7 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
287
287
|
});
|
|
288
288
|
continue;
|
|
289
289
|
}
|
|
290
|
-
let
|
|
290
|
+
let d;
|
|
291
291
|
if (Z(i.pattern)) {
|
|
292
292
|
if (typeof o.getStaticPaths != "function") {
|
|
293
293
|
Y.debug("skip page", {
|
|
@@ -302,7 +302,7 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
302
302
|
Y.warn("skip page — getStaticPaths did not return an array", { pattern: i.pattern });
|
|
303
303
|
continue;
|
|
304
304
|
}
|
|
305
|
-
|
|
305
|
+
d = e.map((e) => ({
|
|
306
306
|
params: e.params,
|
|
307
307
|
pathname: Q(i.pattern, e.params)
|
|
308
308
|
}));
|
|
@@ -310,28 +310,28 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
310
310
|
Y.warn("skip page — getStaticPaths threw", { pattern: i.pattern }, e);
|
|
311
311
|
continue;
|
|
312
312
|
}
|
|
313
|
-
if (
|
|
313
|
+
if (d.length === 0) {
|
|
314
314
|
Y.debug("skip page", {
|
|
315
315
|
pattern: i.pattern,
|
|
316
316
|
reason: "getStaticPaths returned []"
|
|
317
317
|
});
|
|
318
318
|
continue;
|
|
319
319
|
}
|
|
320
|
-
} else
|
|
320
|
+
} else d = [{
|
|
321
321
|
params: {},
|
|
322
322
|
pathname: i.pattern
|
|
323
323
|
}];
|
|
324
324
|
let m = o.interactive ?? "full";
|
|
325
|
-
for (let r of
|
|
325
|
+
for (let r of d) {
|
|
326
326
|
D();
|
|
327
|
-
let a, s,
|
|
327
|
+
let a, s, d = new AbortController();
|
|
328
328
|
try {
|
|
329
329
|
({chain: a, segmentLoaderData: s} = await w({
|
|
330
330
|
entries: l,
|
|
331
331
|
loadLayout: z,
|
|
332
332
|
loadError: H,
|
|
333
333
|
loadPending: G,
|
|
334
|
-
ctx: K(r,
|
|
334
|
+
ctx: K(r, d.signal)
|
|
335
335
|
}));
|
|
336
336
|
} catch (e) {
|
|
337
337
|
let t = e?._voltroControl;
|
|
@@ -351,11 +351,11 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
351
351
|
Pending: o.Pending,
|
|
352
352
|
renderMode: c,
|
|
353
353
|
chain: a
|
|
354
|
-
},
|
|
354
|
+
}, g = null;
|
|
355
355
|
if (typeof o.loader == "function") {
|
|
356
356
|
let e = new AbortController();
|
|
357
357
|
try {
|
|
358
|
-
|
|
358
|
+
g = await o.loader({
|
|
359
359
|
params: r.params,
|
|
360
360
|
pathname: r.pathname,
|
|
361
361
|
search: "",
|
|
@@ -373,7 +373,7 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
373
373
|
throw Error(`Static page "${r.pathname}": its loader threw at build time — the page would prerender EMPTY. Fix the loader (cause below) or throw NotFoundError to skip this path.\ncause: ${e instanceof Error ? e.stack ?? e.message : String(e)}`);
|
|
374
374
|
}
|
|
375
375
|
}
|
|
376
|
-
T(
|
|
376
|
+
T(g) && E({
|
|
377
377
|
page: r.pathname,
|
|
378
378
|
renderMode: c,
|
|
379
379
|
interactive: m
|
|
@@ -391,24 +391,24 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
391
391
|
seed: O,
|
|
392
392
|
seedFailure: k
|
|
393
393
|
});
|
|
394
|
-
let
|
|
394
|
+
let _ = r.params.locale ?? e.defaultLocale ?? "en", v = M.get(_) ?? M.get(e.defaultLocale ?? ""), b = Date.now(), N = v ? (e) => v(e, {
|
|
395
395
|
timeZone: A,
|
|
396
396
|
renderedAt: b
|
|
397
397
|
}) : void 0, { html: P, meta: L } = x({
|
|
398
398
|
descriptor: h,
|
|
399
399
|
params: r.params,
|
|
400
400
|
pathname: r.pathname,
|
|
401
|
-
loaderData:
|
|
401
|
+
loaderData: g,
|
|
402
402
|
segmentLoaderData: s,
|
|
403
403
|
...N ? { outerWrap: N } : {},
|
|
404
|
-
locale:
|
|
404
|
+
locale: _
|
|
405
405
|
}), R = "";
|
|
406
406
|
if (typeof o.ogImage == "function") {
|
|
407
407
|
let i = await o.ogImage({
|
|
408
408
|
params: r.params,
|
|
409
|
-
loaderData:
|
|
410
|
-
locale:
|
|
411
|
-
}), a = await
|
|
409
|
+
loaderData: g,
|
|
410
|
+
locale: _
|
|
411
|
+
}), a = await y(t, e.fonts), { png: s } = await p({
|
|
412
412
|
element: i,
|
|
413
413
|
fonts: a
|
|
414
414
|
}), c = `assets/og/${F(s)}.png`;
|
|
@@ -416,20 +416,20 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
416
416
|
let l = e.siteUrl === void 0 ? `/${c}` : `${e.siteUrl.replace(/\/$/, "")}/${c}`;
|
|
417
417
|
R = S(L).includes("og:image") ? "" : `<meta property="og:image" content="${l}" /><meta name="twitter:image" content="${l}" /><meta name="twitter:card" content="summary_large_image" />`;
|
|
418
418
|
}
|
|
419
|
-
let U = m === "islands" ?
|
|
419
|
+
let U = m === "islands" ? f.get(i.pattern) : void 0;
|
|
420
420
|
m === "islands" && U === void 0 && Y.warn("islands page has no per-page entry (non-literal `interactive`?) — shipping the full app entry", { pattern: i.pattern });
|
|
421
|
-
let q = re(U ??
|
|
421
|
+
let q = re(U ?? u, {
|
|
422
422
|
body: P,
|
|
423
423
|
metaHtml: S(L) + R,
|
|
424
424
|
stateScript: C({
|
|
425
425
|
path: r.pathname,
|
|
426
|
-
loaderData:
|
|
426
|
+
loaderData: g,
|
|
427
427
|
segmentLoaderData: s,
|
|
428
428
|
pageLoaderRan: typeof o.loader == "function"
|
|
429
429
|
}),
|
|
430
430
|
interactive: m,
|
|
431
431
|
documentAttrs: {
|
|
432
|
-
lang:
|
|
432
|
+
lang: _,
|
|
433
433
|
...A === void 0 ? {} : { timeZone: A },
|
|
434
434
|
renderedAt: b
|
|
435
435
|
}
|
|
@@ -441,7 +441,7 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
441
441
|
});
|
|
442
442
|
}
|
|
443
443
|
}
|
|
444
|
-
return await
|
|
444
|
+
return await _.close(), {
|
|
445
445
|
rendered: I,
|
|
446
446
|
pageMeta: L
|
|
447
447
|
};
|
|
@@ -503,7 +503,7 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
503
503
|
" }),",
|
|
504
504
|
" outerWrap: (children: unknown) => children,",
|
|
505
505
|
"})"
|
|
506
|
-
] : [], y = (s ?? []).map((e) => `${JSON.stringify(e.name)}: () => import('${e.pkg}/rpcGroup').then((m) => m.appDescriptors)`).join(", "), b = y === "" ? "" : `, apiDescriptors: { ${y} }`, x = "renderPageToHtml, renderPageToStream, renderMetaToHtml, renderRouterStateScript, renderDeferredRegistryScript, prepareDeferredLoaderData, deferredSettleScript, deferredId, assertDeferralSupported, parseCookieHeader, withStoreSeeds, beginStoreSeeds", S = h || g ? `export const helpers = { ${x}, i18n: { resolve: __resolveI18n }${b} }` : `export const helpers = { ${x}${b} }`, C = [
|
|
506
|
+
] : [], y = (s ?? []).map((e) => `${JSON.stringify(e.name)}: () => import('${e.pkg}/rpcGroup').then((m) => m.appDescriptors)`).join(", "), b = y === "" ? "" : `, apiDescriptors: { ${y} }`, x = "renderPageToHtml, renderPageToStream, renderMetaToHtml, renderRouterStateScript, renderDeferredRegistryScript, prepareDeferredLoaderData, deferredSettleScript, deferredId, assertDeferralSupported, parseCookieHeader, withStoreSeeds, beginStoreSeeds", S = h || g ? `export const helpers = { ${x}, i18n: { resolve: __resolveI18n, locales: __I18N_SUPPORTED }${b} }` : `export const helpers = { ${x}${b} }`, C = [
|
|
507
507
|
"// GENERATED BY `voltro build` — do not edit; will be overwritten on next build.",
|
|
508
508
|
"// Entry for the pre-built SSR bundle. Imported by `voltro start`'s",
|
|
509
509
|
"// production runtime; bypasses Vite middleware-mode SSR loading.",
|
|
@@ -535,13 +535,13 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
535
535
|
].join("\n"), w = V(c, "ssrEntry.ts");
|
|
536
536
|
return await W.writeFile(w, C, "utf8"), w;
|
|
537
537
|
}, se = async (e) => {
|
|
538
|
-
let { checkRpcGroupFreshness: t } = await import("./codegen-
|
|
538
|
+
let { checkRpcGroupFreshness: t } = await import("./codegen-DjgxEOnD.js"), n = await t(e);
|
|
539
539
|
if (n.kind === "fresh") return;
|
|
540
540
|
n.kind === "stale" && Y.info("rpcGroup.generated.ts is stale — regenerating", {
|
|
541
541
|
file: n.file,
|
|
542
542
|
reason: n.reason
|
|
543
543
|
});
|
|
544
|
-
let { regenerateRpcGroup: r } = await import("./codegenCommand-
|
|
544
|
+
let { regenerateRpcGroup: r } = await import("./codegenCommand-CG_Vx4lc.js"), i = await r(e);
|
|
545
545
|
if (i.kind === "refused") {
|
|
546
546
|
Y.warn("could not regenerate the rpc group — building against what is on disk", { reason: i.reason });
|
|
547
547
|
return;
|
|
@@ -551,12 +551,12 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
551
551
|
routes: i.routes
|
|
552
552
|
});
|
|
553
553
|
}, ce = async (e) => {
|
|
554
|
-
let t = await
|
|
554
|
+
let t = await S(e, { preferSource: !0 });
|
|
555
555
|
if (!t) {
|
|
556
|
-
let { loadApiConfig: t } = await import("./dev-
|
|
556
|
+
let { loadApiConfig: t } = await import("./dev-cKUiZZsB.js"), n = await t(e);
|
|
557
557
|
if (n) {
|
|
558
558
|
Y.info("building api app", { app: n.name ?? "(unnamed)" }), await se(e);
|
|
559
|
-
let { runApiBuild: t, runServeBundleBuild: r } = await import("./apiBuild-
|
|
559
|
+
let { runApiBuild: t, runServeBundleBuild: r } = await import("./apiBuild-CeUN55uk.js");
|
|
560
560
|
await t(e);
|
|
561
561
|
try {
|
|
562
562
|
await r(e);
|
|
@@ -577,37 +577,37 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
577
577
|
};
|
|
578
578
|
}
|
|
579
579
|
Y.info("building web app", { app: t.name ?? "(unnamed)" });
|
|
580
|
-
let { resolved: i } = await
|
|
580
|
+
let { resolved: i } = await u({
|
|
581
581
|
rawEnv: t.env,
|
|
582
582
|
appType: "web",
|
|
583
583
|
root: e,
|
|
584
584
|
log: Y,
|
|
585
585
|
generateTypes: !0
|
|
586
|
-
}),
|
|
587
|
-
await n(e, t,
|
|
588
|
-
let { pages:
|
|
589
|
-
for (let t of
|
|
586
|
+
}), o = await x(e, t);
|
|
587
|
+
await n(e, t, o, i.publicValues);
|
|
588
|
+
let { pages: d } = await O(V(e, "src", "pages")), f = [];
|
|
589
|
+
for (let t of d) {
|
|
590
590
|
let n = await W.readFile(V(e, "src", "pages", t.file), "utf8").catch(() => ""), r = a(n);
|
|
591
|
-
n.includes("<Script") && (r === "none" || r === "islands") && Y.warn(r === "none" ? `page '${t.pattern}' uses <Script> but declares interactive: 'none' — zero-JS strips every script, so it will NEVER load. Remove the <Script>, or raise the page to islands/full.` : `page '${t.pattern}' uses <Script> in its STATIC part (the page file) while interactive: 'islands' — outside an island nothing mounts, so it will NEVER load. Move the <Script> into an *.island.tsx component (it fires when that island hydrates).`), r === "islands" &&
|
|
591
|
+
n.includes("<Script") && (r === "none" || r === "islands") && Y.warn(r === "none" ? `page '${t.pattern}' uses <Script> but declares interactive: 'none' — zero-JS strips every script, so it will NEVER load. Remove the <Script>, or raise the page to islands/full.` : `page '${t.pattern}' uses <Script> in its STATIC part (the page file) while interactive: 'islands' — outside an island nothing mounts, so it will NEVER load. Move the <Script> into an *.island.tsx component (it fires when that island hydrates).`), r === "islands" && f.push({
|
|
592
592
|
pattern: t.pattern,
|
|
593
593
|
file: t.file
|
|
594
594
|
});
|
|
595
595
|
}
|
|
596
|
-
let
|
|
596
|
+
let p = m(o, "../../app.config"), y = await r({
|
|
597
597
|
webRoot: e,
|
|
598
|
-
pages:
|
|
598
|
+
pages: f,
|
|
599
599
|
headSnippets: D(await W.readFile(V(e, ".framework", "index.html"), "utf8").catch(() => "")),
|
|
600
|
-
apiImports:
|
|
601
|
-
apiEntriesLiteral: `[\n${
|
|
600
|
+
apiImports: p.imports,
|
|
601
|
+
apiEntriesLiteral: `[\n${p.providerEntryLines.join("\n")}\n ]`
|
|
602
602
|
});
|
|
603
|
-
|
|
604
|
-
let { pages:
|
|
605
|
-
await
|
|
603
|
+
y.length > 0 && Y.info("per-page islands entries", { pages: y.map((e) => `${e.pattern}${e.usesClient ? " (client boot)" : ""}`) });
|
|
604
|
+
let { pages: b } = await O(V(e, "src", "pages"));
|
|
605
|
+
await v({
|
|
606
606
|
appRoot: e,
|
|
607
|
-
pages:
|
|
607
|
+
pages: b,
|
|
608
608
|
mode: "prod"
|
|
609
609
|
});
|
|
610
|
-
let
|
|
610
|
+
let C = V(e, ".framework"), w = V(C, "dist"), j = V(e, "node_modules", "@voltro", "ui-shadcn"), M = U(V(j, "package.json")) ? j : null, N = [...M ? [
|
|
611
611
|
{
|
|
612
612
|
find: "@voltro/ui-shadcn/tokens.css",
|
|
613
613
|
replacement: V(M, "src/tokens.css")
|
|
@@ -624,16 +624,16 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
624
624
|
find: "@voltro/ui-shadcn",
|
|
625
625
|
replacement: V(M, "src/index.ts")
|
|
626
626
|
}
|
|
627
|
-
] : [], ...
|
|
627
|
+
] : [], ...c(e)];
|
|
628
628
|
Y.info("running vite build");
|
|
629
|
-
let F = await
|
|
629
|
+
let F = await s("vite", () => import("vite")), I = (await import("@vitejs/plugin-react")).default, R = (await import("@tailwindcss/vite")).default;
|
|
630
630
|
await F.build({
|
|
631
|
-
root:
|
|
631
|
+
root: C,
|
|
632
632
|
envPrefix: "__VOLTRO_VITE_ENV_DISABLED__",
|
|
633
633
|
plugins: [
|
|
634
634
|
I(),
|
|
635
635
|
R(),
|
|
636
|
-
|
|
636
|
+
l({
|
|
637
637
|
root: e,
|
|
638
638
|
config: P(t.images)
|
|
639
639
|
}),
|
|
@@ -654,10 +654,10 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
654
654
|
emptyOutDir: !0,
|
|
655
655
|
rollupOptions: {
|
|
656
656
|
input: {
|
|
657
|
-
index: V(
|
|
658
|
-
...Object.fromEntries(
|
|
657
|
+
index: V(C, "index.html"),
|
|
658
|
+
...Object.fromEntries(y.map((e) => [`island_${e.name}`, V(C, e.htmlFile)]))
|
|
659
659
|
},
|
|
660
|
-
output: { manualChunks:
|
|
660
|
+
output: { manualChunks: h }
|
|
661
661
|
}
|
|
662
662
|
},
|
|
663
663
|
logLevel: "warn"
|
|
@@ -665,7 +665,7 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
665
665
|
let H = V(e, "src", "pages"), { pages: G, dirs: K } = await O(H);
|
|
666
666
|
if (G.length === 0) return Y.info("no pages found — client-only bundle written", {
|
|
667
667
|
pagesDir: H,
|
|
668
|
-
distDir:
|
|
668
|
+
distDir: w
|
|
669
669
|
}), {
|
|
670
670
|
ran: !0,
|
|
671
671
|
exitCode: 0
|
|
@@ -674,20 +674,20 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
674
674
|
let n = await k(e, t.fonts);
|
|
675
675
|
if (n !== null) {
|
|
676
676
|
for (let e of n.files) {
|
|
677
|
-
let t = V(
|
|
677
|
+
let t = V(w, e.fileName);
|
|
678
678
|
await W.mkdir(B(t), { recursive: !0 }), await W.writeFile(t, Buffer.from(e.bytes));
|
|
679
679
|
}
|
|
680
680
|
Y.info(`fonts: ${n.files.length} hashed file(s) into dist/assets/fonts`);
|
|
681
681
|
}
|
|
682
682
|
}
|
|
683
|
-
|
|
683
|
+
g(e);
|
|
684
684
|
let { rendered: q, pageMeta: J } = await ae({
|
|
685
685
|
root: e,
|
|
686
|
-
distDir:
|
|
686
|
+
distDir: w,
|
|
687
687
|
pages: G,
|
|
688
688
|
dirs: K,
|
|
689
689
|
vite: F,
|
|
690
|
-
islandsPlans:
|
|
690
|
+
islandsPlans: y,
|
|
691
691
|
...t.locales ? { locales: t.locales } : {},
|
|
692
692
|
...t.defaultLocale ? { defaultLocale: t.defaultLocale } : {},
|
|
693
693
|
...t.timeZone ? { timeZone: t.timeZone } : {},
|
|
@@ -696,22 +696,22 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
696
696
|
...t.fonts === void 0 ? {} : { fonts: t.fonts },
|
|
697
697
|
...t.seo?.siteUrl === void 0 ? {} : { siteUrl: t.seo.siteUrl }
|
|
698
698
|
});
|
|
699
|
-
await E(
|
|
699
|
+
await E(w), await A(w, t.feeds ?? [], t.seo?.siteUrl), Y.info("generating .framework/ssrEntry.ts"), await oe(e, G, K, t.locales, t.defaultLocale, J, {
|
|
700
700
|
...t.timeZone ? { timeZone: t.timeZone } : {},
|
|
701
701
|
...t.defaultTimeZone ? { defaultTimeZone: t.defaultTimeZone } : {}
|
|
702
|
-
},
|
|
702
|
+
}, o.map((e) => ({
|
|
703
703
|
name: e.name,
|
|
704
704
|
pkg: e.pkg
|
|
705
705
|
}))), Y.info("vite build --ssr → dist/server/");
|
|
706
706
|
let Z = /* @__PURE__ */ new Set();
|
|
707
707
|
try {
|
|
708
708
|
await F.build({
|
|
709
|
-
root:
|
|
709
|
+
root: C,
|
|
710
710
|
envPrefix: "__VOLTRO_VITE_ENV_DISABLED__",
|
|
711
711
|
plugins: [
|
|
712
712
|
I(),
|
|
713
713
|
R(),
|
|
714
|
-
|
|
714
|
+
l({
|
|
715
715
|
root: e,
|
|
716
716
|
config: P(t.images)
|
|
717
717
|
}),
|
|
@@ -749,9 +749,9 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
749
749
|
if (U(Q)) {
|
|
750
750
|
Y.info("precompiling app.config.ts → dist/server/appConfig.js");
|
|
751
751
|
try {
|
|
752
|
-
await (await
|
|
752
|
+
await (await s("esbuild", () => import("esbuild"))).build({
|
|
753
753
|
entryPoints: [Q],
|
|
754
|
-
outfile: V(
|
|
754
|
+
outfile: V(w, "server", "appConfig.js"),
|
|
755
755
|
bundle: !0,
|
|
756
756
|
format: "esm",
|
|
757
757
|
platform: "node",
|
|
@@ -782,7 +782,7 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
782
782
|
});
|
|
783
783
|
try {
|
|
784
784
|
let e = process.env.VOLTRO_SEO_NOINDEX !== "1", n = t.seo?.siteUrl, r = t.locales ?? [], i = t.defaultLocale ?? r[0];
|
|
785
|
-
if (n && !U(V(
|
|
785
|
+
if (n && !U(V(w, "sitemap.xml"))) {
|
|
786
786
|
let t = new Set(r.filter((e) => e !== i)), a = q.filter((e) => !e.noIndex).map((e) => e.pattern).filter((e) => {
|
|
787
787
|
let n = e.split("/").filter(Boolean)[0];
|
|
788
788
|
return n === void 0 || !t.has(n);
|
|
@@ -792,25 +792,25 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
792
792
|
...r.length > 1 ? { locales: r } : {},
|
|
793
793
|
...i ? { defaultLocale: i } : {}
|
|
794
794
|
});
|
|
795
|
-
await W.writeFile(V(
|
|
795
|
+
await W.writeFile(V(w, "sitemap.xml"), o, "utf8"), Y.info("wrote dist/sitemap.xml", {
|
|
796
796
|
urls: a.length,
|
|
797
797
|
indexable: e
|
|
798
798
|
});
|
|
799
799
|
}
|
|
800
|
-
if (!U(V(
|
|
801
|
-
let r =
|
|
800
|
+
if (!U(V(w, "robots.txt"))) {
|
|
801
|
+
let r = T({
|
|
802
802
|
indexable: e,
|
|
803
803
|
...e && n ? { sitemapUrl: `${n.replace(/\/$/, "")}/sitemap.xml` } : {},
|
|
804
804
|
...t.seo?.disallow ? { disallow: t.seo.disallow } : {}
|
|
805
805
|
});
|
|
806
|
-
await W.writeFile(V(
|
|
806
|
+
await W.writeFile(V(w, "robots.txt"), r, "utf8"), Y.info("wrote dist/robots.txt", { indexable: e });
|
|
807
807
|
}
|
|
808
808
|
} catch (e) {
|
|
809
809
|
Y.warn("SEO artefact generation failed (non-fatal)", {}, e);
|
|
810
810
|
}
|
|
811
811
|
try {
|
|
812
812
|
let t = await z(e);
|
|
813
|
-
await W.writeFile(V(
|
|
813
|
+
await W.writeFile(V(w, ".voltro-build.json"), JSON.stringify({
|
|
814
814
|
version: 1,
|
|
815
815
|
profile: t
|
|
816
816
|
}, null, 2), "utf8"), Y.info("wrote deploy profile manifest", {
|
|
@@ -821,7 +821,7 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
821
821
|
} catch (e) {
|
|
822
822
|
Y.warn("could not write .voltro-build.json deploy manifest", {}, e);
|
|
823
823
|
}
|
|
824
|
-
return Y.info("build complete", { distDir:
|
|
824
|
+
return Y.info("build complete", { distDir: w }), {
|
|
825
825
|
ran: !0,
|
|
826
826
|
exitCode: 0
|
|
827
827
|
};
|
|
@@ -833,7 +833,7 @@ var J = G({ scope: "voltro:build" }), ee = async (e) => {
|
|
|
833
833
|
return t.ran ? t.exitCode : (yield* K.logError("no web app found at this path", { hint: "looked for app.config.ts with `type: 'web'`" }), 1);
|
|
834
834
|
}), ue = async (t) => {
|
|
835
835
|
if (t.includes("--target")) {
|
|
836
|
-
let { runSdkBuildCommand: e } = await import("./sdkgen-
|
|
836
|
+
let { runSdkBuildCommand: e } = await import("./sdkgen-CDGHQUFj.js");
|
|
837
837
|
return e(t);
|
|
838
838
|
}
|
|
839
839
|
let n = t.find((e) => !e.startsWith("-")) ?? process.cwd(), r = await M(le(n), { scope: "voltro:build" }), i = e(n);
|