@voltro/cli 0.39.0 → 0.40.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 +210 -0
- package/dist/agentsMd-Bu_XQgVf.js +2 -0
- package/dist/{agentsMd-7zI2h5l9.js → agentsMd-D6yD7IQv.js} +31 -14
- package/dist/apiBuild-BIyGkym8.js +2 -0
- package/dist/{apiBuild-DGalUk9v.js → apiBuild-C8xBEYbL.js} +2 -2
- package/dist/bin.js +1 -1
- package/dist/{build-CfF6t0UM.js → build-CkhFGnKA.js} +168 -165
- package/dist/{checkCommand-CBtynBKW.js → checkCommand-BcXJa2IS.js} +3 -3
- package/dist/{checkCommand-BV56Pcc1.js → checkCommand-QbHshOac.js} +1 -1
- package/dist/{cloudCmd-C42gaO8s.js → cloudCmd-F4YJeqM3.js} +1 -1
- package/dist/{codegenCommand-W7SDdiAQ.js → codegenCommand-DF2OJh3O.js} +2 -2
- package/dist/{codemodRunner-D-jTyvWo.js → codemodRunner-BcOvi4A2.js} +103 -0
- package/dist/{commands-BD9eBRY3.js → commands-7Z7-HOE3.js} +30 -30
- package/dist/{dashboardCommand-7qGylm0F.js → dashboardCommand-CUycH6dR.js} +5 -5
- package/dist/{dataCommand-C_F2DYxe.js → dataCommand-By78lscK.js} +1 -1
- package/dist/{dev-alhkKoEX.js → dev-D8JSKlBM.js} +1 -1
- package/dist/{dev-gqpnzVhI.js → dev-Dh1NuYx1.js} +1569 -1569
- package/dist/{doctorCommand-Bvs-BQrM.js → doctorCommand-C-8-Z9D6.js} +55 -42
- package/dist/doctorCommand-FhQ7EVYL.js +2 -0
- package/dist/{dormancyCommand-B-PPHc9Q.js → dormancyCommand-A79Odglm.js} +1 -1
- package/dist/{embeddingsCommand-OKY6XjUf.js → embeddingsCommand-CoiyHfkY.js} +1 -1
- package/dist/{envCommand-B1-Zm85H.js → envCommand-B6d0s-jZ.js} +8 -8
- package/dist/{evolveCommand-C4-NlFbd.js → evolveCommand-BC5a9lxX.js} +2 -2
- package/dist/frameworkTableAssembly-DgylYh9_.js +2 -0
- package/dist/index.js +1 -1
- package/dist/{infoCommand-CTo8Jnhq.js → infoCommand-ZqSVzJZ4.js} +1 -1
- package/dist/{metaCommands-DUYR--Ts.js → metaCommands-CfRLra0s.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-DzZOCd94.js → runtimeTrace-BslKJjDY.js} +1 -1
- package/dist/{sdkgen-C4roLErM.js → sdkgen-DQ8uEmmn.js} +1 -1
- package/dist/serveCommand-BmvEQCMS.js +2 -0
- package/dist/{serveCommand-B6TATyCj.js → serveCommand-Dqb9Ku1-.js} +657 -657
- package/dist/serveEntry.js +1 -1
- package/dist/{start-BNuTWdRd.js → start-BA7txHhY.js} +1 -1
- package/dist/{start-ft_KzFTd.js → start-dkNYKtgQ.js} +342 -318
- package/dist/startEntry.js +1 -1
- package/dist/updateCommand-BauSVxPp.js +2 -0
- package/dist/{updateCommand-CHBmCB17.js → updateCommand-eoGpZr3E.js} +1 -1
- package/dist/webDev-CBbKs4dZ.js +2 -0
- package/dist/{webDev-CTpSY-e_.js → webDev-bybjZA0o.js} +240 -186
- package/dist/{webhooksCommand-BVvOtZ1B.js → webhooksCommand-DubZWNOx.js} +1 -1
- package/package.json +29 -17
- package/templates/AGENTS.md +1 -1
- package/templates/agent-docs/_index.md +1 -1
- package/templates/agent-docs/authentication.md +13 -4
- package/templates/agent-docs/data.md +43 -0
- package/templates/agent-docs/routing.md +40 -0
- package/templates/agent-docs/whats-new.md +91 -157
- 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/startup/warm.startup.tsx +16 -2
- 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-2GvK8CUB.js +0 -2
- package/dist/doctorCommand-CVXfRrng.js +0 -2
- package/dist/frameworkTableAssembly-YyVe32Cb.js +0 -2
- package/dist/serveCommand-CNR0gI9V.js +0 -2
- package/dist/updateCommand-6FMU2klq.js +0 -2
- package/dist/webDev-id3I5PvG.js +0 -2
|
@@ -4,19 +4,19 @@ import { t as n } from "./bootRefusal-pgvDxlrU.js";
|
|
|
4
4
|
import { r } from "./appPort-B_HpJ_ck.js";
|
|
5
5
|
import { A as i, _ as a, g as o, h as s, m as c, o as l } from "./fileConventions-Cof68_BL.js";
|
|
6
6
|
import { A as u, D as d, a as f, h as p, j as m, k as h } from "./inspect-B7U7Cl_Z.js";
|
|
7
|
-
import { n as g } from "./agentsMd-
|
|
7
|
+
import { n as g } from "./agentsMd-D6yD7IQv.js";
|
|
8
8
|
import { c as _, p as v, t as y } from "./renderModeScan-D7J1B7Kw.js";
|
|
9
9
|
import { t as b } from "./pageConvention-cEiRxdab.js";
|
|
10
10
|
import { i as x, n as S, r as C, t as w } from "./runtimeRegistry-DMeKfTHP.js";
|
|
11
11
|
import { n as T } from "./logFileSink-B4uP8pvf.js";
|
|
12
12
|
import { basename as E, dirname as D, join as O, relative as k, resolve as A } from "node:path";
|
|
13
|
-
import { existsSync as j, promises as M, readFileSync as N, readdirSync as P, statSync as F, unwatchFile as
|
|
14
|
-
import { fileURLToPath as
|
|
15
|
-
import { addSink as
|
|
16
|
-
import { createRequire as
|
|
17
|
-
import { homedir as
|
|
18
|
-
import { currentTraceContext as
|
|
19
|
-
import { FRAMEWORK_ENV_CATALOG as
|
|
13
|
+
import { existsSync as j, promises as M, readFileSync as N, readdirSync as P, statSync as F, unwatchFile as ee, watchFile as I } from "node:fs";
|
|
14
|
+
import { fileURLToPath as L, pathToFileURL as R } from "node:url";
|
|
15
|
+
import { addSink as te, createLogger as z, printReadyBlock as B } from "@voltro/logger";
|
|
16
|
+
import { createRequire as V } from "node:module";
|
|
17
|
+
import { homedir as ne } from "node:os";
|
|
18
|
+
import { currentTraceContext as H, resolveSecret as U } from "@voltro/runtime";
|
|
19
|
+
import { FRAMEWORK_ENV_CATALOG as W, appEnvEntries as re, checkEnvNaming as G, formatEnvErrors as ie, installEnvSnapshot as K, isEnvContract as ae, pluginEnvEntries as oe, renderDotEnvExample as se, resolveEnv as ce } from "@voltro/env";
|
|
20
20
|
import { __installPublicEnv as le } from "@voltro/env/public";
|
|
21
21
|
import { mkdir as ue, writeFile as de } from "node:fs/promises";
|
|
22
22
|
import { createHash as q } from "node:crypto";
|
|
@@ -68,8 +68,8 @@ __installPublicEnv(publicEnvValues)
|
|
|
68
68
|
}, Se = async (e) => {
|
|
69
69
|
let t = ae(e.rawEnv) ? e.rawEnv : void 0, n = await ce({
|
|
70
70
|
contract: t,
|
|
71
|
-
resolveSecret:
|
|
72
|
-
}), r = [...n.errors, ...
|
|
71
|
+
resolveSecret: U
|
|
72
|
+
}), r = [...n.errors, ...G(t, e.appType)];
|
|
73
73
|
if (r.length > 0) throw Error(ie(r));
|
|
74
74
|
K(n.values), e.appType === "web" && le(n.publicValues);
|
|
75
75
|
let i = t ? Object.keys(t.vars).length : 0;
|
|
@@ -88,7 +88,7 @@ __installPublicEnv(publicEnvValues)
|
|
|
88
88
|
contract: t
|
|
89
89
|
};
|
|
90
90
|
}, Ce = (e) => {
|
|
91
|
-
let t =
|
|
91
|
+
let t = re(e.contract), n = (e.plugins ?? []).flatMap((e) => oe(e.name, e.declaredEnv)), r = e.includeFramework === !1 ? [] : W, i = /* @__PURE__ */ new Set(), a = [];
|
|
92
92
|
for (let e of [
|
|
93
93
|
...t,
|
|
94
94
|
...n,
|
|
@@ -179,14 +179,14 @@ __installPublicEnv(publicEnvValues)
|
|
|
179
179
|
});
|
|
180
180
|
}));
|
|
181
181
|
};
|
|
182
|
-
for (let t of e)
|
|
182
|
+
for (let t of e) I(t, { interval: Oe }, (e, n) => {
|
|
183
183
|
e.mtimeMs !== n.mtimeMs && a(t);
|
|
184
184
|
});
|
|
185
185
|
return t.info("watching .env files for changes", {
|
|
186
186
|
files: e.map(r),
|
|
187
187
|
intervalMs: Oe
|
|
188
188
|
}), () => {
|
|
189
|
-
for (let t of e)
|
|
189
|
+
for (let t of e) ee(t);
|
|
190
190
|
};
|
|
191
191
|
}, Ae = [{
|
|
192
192
|
host: "127.0.0.1",
|
|
@@ -417,7 +417,7 @@ __installPublicEnv(publicEnvValues)
|
|
|
417
417
|
behind: n.behind.map((e) => `${e.pkg}@${e.version}`),
|
|
418
418
|
fix: "the framework ships in lockstep; bump the listed packages and reinstall"
|
|
419
419
|
});
|
|
420
|
-
}, Ke =
|
|
420
|
+
}, Ke = z({ scope: "vite" }), qe = /\x1b\[[0-9;]*m/g, Je = /^\s*\[?vite\]?\s*(\([a-z-]+\)\s*)?/, Ye = (e) => e.replace(qe, "").replace(Je, "").trim(), Xe = /proxy error/i, Ze = [
|
|
421
421
|
"ECONNREFUSED",
|
|
422
422
|
"ECONNRESET",
|
|
423
423
|
"ECONNABORTED",
|
|
@@ -780,7 +780,7 @@ __installPublicEnv(publicEnvValues)
|
|
|
780
780
|
if (Bt(t[i], a), !r) {
|
|
781
781
|
r = !0;
|
|
782
782
|
try {
|
|
783
|
-
let t = a.length > 0 ? Lt(a[0]) : "", r = t.length > 500 ? t.slice(0, 500) + "…" : t, o =
|
|
783
|
+
let t = a.length > 0 ? Lt(a[0]) : "", r = t.length > 500 ? t.slice(0, 500) + "…" : t, o = H();
|
|
784
784
|
e.emit("log", {
|
|
785
785
|
level: i,
|
|
786
786
|
message: r,
|
|
@@ -807,7 +807,7 @@ __installPublicEnv(publicEnvValues)
|
|
|
807
807
|
}
|
|
808
808
|
};
|
|
809
809
|
console.log = i("log"), console.info = i("info"), console.warn = i("warn"), console.error = i("error"), console.debug = i("debug");
|
|
810
|
-
let a =
|
|
810
|
+
let a = te((t) => {
|
|
811
811
|
if (!r) {
|
|
812
812
|
r = !0;
|
|
813
813
|
try {
|
|
@@ -818,7 +818,7 @@ __installPublicEnv(publicEnvValues)
|
|
|
818
818
|
argsCount: 1,
|
|
819
819
|
...t.scope === void 0 ? {} : { scope: t.scope }
|
|
820
820
|
});
|
|
821
|
-
let a =
|
|
821
|
+
let a = H(), o = a !== void 0 && t.fields.traceId === void 0 ? {
|
|
822
822
|
...t.fields,
|
|
823
823
|
traceId: a.traceId
|
|
824
824
|
} : t.fields;
|
|
@@ -845,7 +845,7 @@ __installPublicEnv(publicEnvValues)
|
|
|
845
845
|
case "debug": return "debug";
|
|
846
846
|
default: return "info";
|
|
847
847
|
}
|
|
848
|
-
}, qt =
|
|
848
|
+
}, qt = z({ scope: "client" }), Jt = (e, t) => {
|
|
849
849
|
let n;
|
|
850
850
|
try {
|
|
851
851
|
n = JSON.parse(e);
|
|
@@ -1016,7 +1016,7 @@ __installPublicEnv(publicEnvValues)
|
|
|
1016
1016
|
let e = {
|
|
1017
1017
|
warn: console.warn.bind(console),
|
|
1018
1018
|
error: console.error.bind(console)
|
|
1019
|
-
}, t =
|
|
1019
|
+
}, t = z({ scope: "babel" }), n = !1, r = (r) => (...i) => {
|
|
1020
1020
|
if (!n) {
|
|
1021
1021
|
for (let e of cn) if (e.match(i[0])) {
|
|
1022
1022
|
n = !0;
|
|
@@ -1166,7 +1166,7 @@ import {
|
|
|
1166
1166
|
map: null
|
|
1167
1167
|
};
|
|
1168
1168
|
}
|
|
1169
|
-
}), xn =
|
|
1169
|
+
}), xn = z({ scope: "voltro:dashboard" }), Sn = V(import.meta.url), Cn = 5179, wn = (e) => {
|
|
1170
1170
|
let t = process.env.VOLTRO_DASHBOARD_PATH;
|
|
1171
1171
|
if (t && j(O(A(t), "app.config.ts"))) return A(t);
|
|
1172
1172
|
try {
|
|
@@ -1190,7 +1190,7 @@ import {
|
|
|
1190
1190
|
a || (a = !0, i.destroy(), r(e));
|
|
1191
1191
|
};
|
|
1192
1192
|
i.once("connect", () => o(!0)), i.once("error", () => o(!1)), setTimeout(() => o(!1), n);
|
|
1193
|
-
}), Dn = () => !!(process.env.VOLTRO_DASHBOARD === "off" || process.argv.includes("--disable-dashboard")), On = () => process.env[Tn] === "1", kn = () => process.stdout.isTTY === !0, An = O(
|
|
1193
|
+
}), Dn = () => !!(process.env.VOLTRO_DASHBOARD === "off" || process.argv.includes("--disable-dashboard")), On = () => process.env[Tn] === "1", kn = () => process.stdout.isTTY === !0, An = O(ne(), ".voltro", "dashboard-launch.lock"), jn = 1e4, Mn = async () => {
|
|
1194
1194
|
try {
|
|
1195
1195
|
await M.mkdir(D(An), { recursive: !0 });
|
|
1196
1196
|
let e = await M.open(An, "wx");
|
|
@@ -1535,23 +1535,66 @@ import {
|
|
|
1535
1535
|
let t = [];
|
|
1536
1536
|
for (let n of [...e].sort()) t.push(await fr(n));
|
|
1537
1537
|
return q("sha1").update(t.join("\0")).digest("hex");
|
|
1538
|
-
},
|
|
1538
|
+
}, mr = (e) => {
|
|
1539
|
+
let t = {};
|
|
1540
|
+
if (!e) return t;
|
|
1541
|
+
for (let n of e.split(";")) {
|
|
1542
|
+
let e = n.indexOf("=");
|
|
1543
|
+
if (e <= 0) continue;
|
|
1544
|
+
let r = n.slice(0, e).trim();
|
|
1545
|
+
if (r !== "") try {
|
|
1546
|
+
t[r] = decodeURIComponent(n.slice(e + 1).trim());
|
|
1547
|
+
} catch {
|
|
1548
|
+
t[r] = n.slice(e + 1).trim();
|
|
1549
|
+
}
|
|
1550
|
+
}
|
|
1551
|
+
return t;
|
|
1552
|
+
}, hr = (e) => {
|
|
1553
|
+
let t = [`${e.name}=${encodeURIComponent(e.value)}`];
|
|
1554
|
+
return t.push(`Path=${e.path ?? "/"}`), e.maxAge !== void 0 && t.push(`Max-Age=${Math.trunc(e.maxAge)}`), e.httpOnly !== !1 && t.push("HttpOnly"), e.secure === !0 && t.push("Secure"), t.push(`SameSite=${e.sameSite ?? "lax"}`), t.join("; ");
|
|
1555
|
+
}, gr = async (e, t = (e) => import(R(e).href)) => {
|
|
1556
|
+
for (let n of ["middleware.ts", "middleware.tsx"]) try {
|
|
1557
|
+
let r = (await t(O(e, n)))?.default;
|
|
1558
|
+
if (typeof r == "function") return r;
|
|
1559
|
+
if (r !== void 0) throw Error(`${n} must default-export a function; got ${typeof r}. It receives the request and returns \`{ headers?, setCookies? }\`.`);
|
|
1560
|
+
} catch (e) {
|
|
1561
|
+
let t = e?.code;
|
|
1562
|
+
if (t === "ERR_MODULE_NOT_FOUND" || t === "MODULE_NOT_FOUND") continue;
|
|
1563
|
+
throw e;
|
|
1564
|
+
}
|
|
1565
|
+
}, _r = async (e, t) => {
|
|
1566
|
+
if (e === void 0) return {
|
|
1567
|
+
headers: t.headers,
|
|
1568
|
+
setCookies: []
|
|
1569
|
+
};
|
|
1570
|
+
let n = await e(t);
|
|
1571
|
+
return n ? {
|
|
1572
|
+
headers: n.headers ? {
|
|
1573
|
+
...t.headers,
|
|
1574
|
+
...n.headers
|
|
1575
|
+
} : t.headers,
|
|
1576
|
+
setCookies: n.setCookies ?? []
|
|
1577
|
+
} : {
|
|
1578
|
+
headers: t.headers,
|
|
1579
|
+
setCookies: []
|
|
1580
|
+
};
|
|
1581
|
+
}, Z = z({ scope: "voltro:dev:web" }), vr = z({ scope: "vite" }), yr = await (async () => {
|
|
1539
1582
|
try {
|
|
1540
|
-
let e = O(D(
|
|
1583
|
+
let e = O(D(L(import.meta.url)), "..", "package.json"), t = await M.readFile(e, "utf8");
|
|
1541
1584
|
return JSON.parse(t).version ?? "0.0.0";
|
|
1542
1585
|
} catch {
|
|
1543
1586
|
return "0.0.0";
|
|
1544
1587
|
}
|
|
1545
|
-
})(),
|
|
1588
|
+
})(), br = async () => {
|
|
1546
1589
|
try {
|
|
1547
|
-
let e = D(
|
|
1590
|
+
let e = D(L(import.meta.url)), t = A(e, "..", "..", "devtools");
|
|
1548
1591
|
if (j(O(t, "package.json"))) return t;
|
|
1549
1592
|
let n = A(e, "..", "..", "..", "devtools");
|
|
1550
1593
|
return j(O(n, "package.json")) ? n : null;
|
|
1551
1594
|
} catch {
|
|
1552
1595
|
return null;
|
|
1553
1596
|
}
|
|
1554
|
-
},
|
|
1597
|
+
}, xr = (e, t) => e.disableDevtools || !t ? [] : [
|
|
1555
1598
|
"",
|
|
1556
1599
|
"// Dev-only in-page devtools overlay. The `import.meta.env.DEV` guard is a",
|
|
1557
1600
|
"// compile-time constant, so prod builds strip this whole `if` block — the",
|
|
@@ -1561,12 +1604,12 @@ import {
|
|
|
1561
1604
|
" await import('@voltro/devtools/styles.css')",
|
|
1562
1605
|
" Devtools = (await import('@voltro/devtools')).VoltroDevtools",
|
|
1563
1606
|
"}"
|
|
1564
|
-
],
|
|
1607
|
+
], Sr = (e, t) => e.disableDevtools || !t ? [] : [" ...(Devtools ? { Devtools } : {}),"], Cr = (e) => e.sentry ? ["import { initSentryBrowser } from '@voltro/plugin-sentry/web'"] : [], wr = (e) => e.sentry ? [
|
|
1565
1608
|
"",
|
|
1566
1609
|
"// Browser-side Sentry (frontend half of the deep integration). Errors +",
|
|
1567
1610
|
"// browser rpc spans flow to Sentry, sharing the server transactions' trace.",
|
|
1568
1611
|
`await initSentryBrowser(${JSON.stringify(e.sentry)})`
|
|
1569
|
-
] : [],
|
|
1612
|
+
] : [], Tr = (e) => e.env ? ["import './env.public'"] : [], Er = (e) => {
|
|
1570
1613
|
let t = [], n = A(e);
|
|
1571
1614
|
for (;;) {
|
|
1572
1615
|
j(O(n, "pnpm-workspace.yaml")) && t.push(n);
|
|
@@ -1575,14 +1618,14 @@ import {
|
|
|
1575
1618
|
n = e;
|
|
1576
1619
|
}
|
|
1577
1620
|
return t;
|
|
1578
|
-
},
|
|
1621
|
+
}, Dr = b, Or = (e) => {
|
|
1579
1622
|
if (/\/node_modules\/(?:\.pnpm\/[^/]+\/node_modules\/)?(?:react|react-dom|scheduler)\//.test(e)) return "react";
|
|
1580
1623
|
let t = /\/([^/]+)\.island\.tsx?$/.exec(e);
|
|
1581
1624
|
if (t) return `island-${t[1]}`;
|
|
1582
|
-
},
|
|
1583
|
-
let t = e.replace(c, "").split("/").filter(Boolean).filter((e) => !
|
|
1625
|
+
}, kr = /export\s+(?:async\s+)?(?:const|function|let|var)\s+loader\b/, Ar = (e) => e.startsWith("(") && e.endsWith(")"), jr = (e) => e.filter((e) => !Ar(e)), Mr = (e) => {
|
|
1626
|
+
let t = e.replace(c, "").split("/").filter(Boolean).filter((e) => !Ar(e));
|
|
1584
1627
|
return t.length === 0 ? "/" : "/" + t.join("/");
|
|
1585
|
-
},
|
|
1628
|
+
}, Nr = (e) => `${e.replace(c, "").split("/").filter(Boolean).map((e) => e.replace(/[()]/g, "").replace(/\[\.\.\./g, "_rest_").replace(/[[\]]/g, "_")).map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join("").replace(/[^A-Za-z0-9_]/g, "_") || "Index"}Page`, Q = (e, t) => e === "" ? `Root${t}` : `${e.split("/").filter(Boolean).map((e) => e.replace(/[()]/g, "").replace(/\[\.\.\./g, "_rest_").replace(/[[\]]/g, "_")).map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join("").replace(/[^A-Za-z0-9_]/g, "_") || "Root"}${t}`, $ = async (e) => {
|
|
1586
1629
|
let t = [], n = [], r = async (e, i) => {
|
|
1587
1630
|
let a = [];
|
|
1588
1631
|
try {
|
|
@@ -1590,17 +1633,17 @@ import {
|
|
|
1590
1633
|
} catch {
|
|
1591
1634
|
return;
|
|
1592
1635
|
}
|
|
1593
|
-
let o = a.filter((e) => e.isDirectory()).map((e) => e.name).sort(), l = a.filter((e) => e.isFile() && e.name.endsWith(".tsx") && !
|
|
1636
|
+
let o = a.filter((e) => e.isDirectory()).map((e) => e.name).sort(), l = a.filter((e) => e.isFile() && e.name.endsWith(".tsx") && !Dr(e.name)).map((e) => e.name).sort(), u = new Set(l), d = i.join("/");
|
|
1594
1637
|
if (l.some((e) => s.has(e))) {
|
|
1595
1638
|
let t = u.has("layout.tsx"), r = !1;
|
|
1596
1639
|
if (t) try {
|
|
1597
1640
|
let t = await M.readFile(O(e, "layout.tsx"), "utf8");
|
|
1598
|
-
r =
|
|
1641
|
+
r = kr.test(t);
|
|
1599
1642
|
} catch {}
|
|
1600
1643
|
n.push({
|
|
1601
1644
|
dir: d,
|
|
1602
1645
|
chain: i,
|
|
1603
|
-
contributesToUrl: i.length === 0 || !
|
|
1646
|
+
contributesToUrl: i.length === 0 || !Ar(i[i.length - 1]),
|
|
1604
1647
|
hasLayout: t,
|
|
1605
1648
|
hasLayoutLoader: r,
|
|
1606
1649
|
hasError: u.has("error.tsx"),
|
|
@@ -1614,8 +1657,8 @@ import {
|
|
|
1614
1657
|
let n = d ? `${d}/${e}` : e;
|
|
1615
1658
|
t.push({
|
|
1616
1659
|
file: n,
|
|
1617
|
-
pattern:
|
|
1618
|
-
ident:
|
|
1660
|
+
pattern: Mr(n),
|
|
1661
|
+
ident: Nr(n),
|
|
1619
1662
|
dirChain: i
|
|
1620
1663
|
});
|
|
1621
1664
|
}
|
|
@@ -1634,14 +1677,14 @@ import {
|
|
|
1634
1677
|
dirs: a,
|
|
1635
1678
|
orphanedSpecials: o
|
|
1636
1679
|
};
|
|
1637
|
-
},
|
|
1680
|
+
}, Pr = (e, t) => {
|
|
1638
1681
|
let n = [];
|
|
1639
1682
|
for (let r = 0; r <= t.length; r++) {
|
|
1640
1683
|
let i = t.slice(0, r).join("/"), a = e.find((e) => e.dir === i);
|
|
1641
1684
|
a && n.push(a);
|
|
1642
1685
|
}
|
|
1643
1686
|
return n;
|
|
1644
|
-
},
|
|
1687
|
+
}, Fr = async (e) => {
|
|
1645
1688
|
let { entries: t, loadLayout: n, loadError: r, loadPending: i, ctx: a } = e, o = {};
|
|
1646
1689
|
return {
|
|
1647
1690
|
chain: await Promise.all(t.map(async (e, t) => {
|
|
@@ -1665,10 +1708,10 @@ import {
|
|
|
1665
1708
|
})),
|
|
1666
1709
|
segmentLoaderData: o
|
|
1667
1710
|
};
|
|
1668
|
-
},
|
|
1669
|
-
let t =
|
|
1711
|
+
}, Ir = (e) => {
|
|
1712
|
+
let t = jr(e);
|
|
1670
1713
|
return t.length === 0 ? "" : "/" + t.join("/");
|
|
1671
|
-
},
|
|
1714
|
+
}, Lr = [
|
|
1672
1715
|
"// Hot-reload bridge: keep SSR-injected <link rel=\"stylesheet\"> tags",
|
|
1673
1716
|
"// in sync with Vite's CSS HMR. Without this, edits to .css files",
|
|
1674
1717
|
"// only update the JS-injected <style> overlay; the underlying <link>",
|
|
@@ -1761,7 +1804,7 @@ import {
|
|
|
1761
1804
|
" _vdtErrorStart('Build error')",
|
|
1762
1805
|
" })",
|
|
1763
1806
|
"}"
|
|
1764
|
-
].join("\n"),
|
|
1807
|
+
].join("\n"), Rr = (e) => {
|
|
1765
1808
|
let t = [], n = 0, r = e.split("/").filter(Boolean), i = [];
|
|
1766
1809
|
for (let e of r) e.startsWith("[[...") && e.endsWith("]]") ? (i.push("(.*)"), t.push(e.slice(5, -2)), n += 2) : e.startsWith("[...") && e.endsWith("]") ? (i.push("(.+)"), t.push(e.slice(4, -1)), n += 3) : e.startsWith("[") && e.endsWith("]") ? (i.push("([^/]+)"), t.push(e.slice(1, -1)), n += 1) : i.push(e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
|
|
1767
1810
|
let a = i.join("/");
|
|
@@ -1770,8 +1813,8 @@ import {
|
|
|
1770
1813
|
paramNames: t,
|
|
1771
1814
|
priority: n
|
|
1772
1815
|
};
|
|
1773
|
-
},
|
|
1774
|
-
let { regex: t, paramNames: n, priority: r } =
|
|
1816
|
+
}, zr = (e) => e.map((e) => {
|
|
1817
|
+
let { regex: t, paramNames: n, priority: r } = Rr(e.pattern);
|
|
1775
1818
|
return {
|
|
1776
1819
|
pattern: e.pattern,
|
|
1777
1820
|
file: e.file,
|
|
@@ -1780,7 +1823,7 @@ import {
|
|
|
1780
1823
|
paramNames: n,
|
|
1781
1824
|
priority: r
|
|
1782
1825
|
};
|
|
1783
|
-
}).slice().sort((e, t) => e.priority - t.priority),
|
|
1826
|
+
}).slice().sort((e, t) => e.priority - t.priority), Br = (e, t) => {
|
|
1784
1827
|
for (let n of t) {
|
|
1785
1828
|
let t = n.regex.exec(e);
|
|
1786
1829
|
if (!t) continue;
|
|
@@ -1792,9 +1835,9 @@ import {
|
|
|
1792
1835
|
};
|
|
1793
1836
|
}
|
|
1794
1837
|
return null;
|
|
1795
|
-
},
|
|
1838
|
+
}, Vr = Ee, Hr = async (e) => {
|
|
1796
1839
|
try {
|
|
1797
|
-
let t = await import(
|
|
1840
|
+
let t = await import(R(O(e, "app.config.ts")).href), n = t.default?.port, i = r({
|
|
1798
1841
|
kind: "api",
|
|
1799
1842
|
configPort: typeof n == "number" ? n : void 0,
|
|
1800
1843
|
env: {}
|
|
@@ -1808,7 +1851,7 @@ import {
|
|
|
1808
1851
|
kind: "api",
|
|
1809
1852
|
env: {}
|
|
1810
1853
|
}).port };
|
|
1811
|
-
},
|
|
1854
|
+
}, Ur = (e, t) => ({
|
|
1812
1855
|
name: e,
|
|
1813
1856
|
pkg: t.package,
|
|
1814
1857
|
browserWsUrl: t.url,
|
|
@@ -1816,7 +1859,7 @@ import {
|
|
|
1816
1859
|
...t.serverUrl ? { serverOrigin: t.serverUrl } : {},
|
|
1817
1860
|
...t.headers ? { headers: t.headers } : {},
|
|
1818
1861
|
...t.authHeaders ? { hasAuthHeaders: !0 } : {}
|
|
1819
|
-
}),
|
|
1862
|
+
}), Wr = (e, t, n) => {
|
|
1820
1863
|
let r = t.transport?.wsPath ?? n.wsPath;
|
|
1821
1864
|
return {
|
|
1822
1865
|
name: e,
|
|
@@ -1828,7 +1871,7 @@ import {
|
|
|
1828
1871
|
...t.headers ? { headers: t.headers } : {},
|
|
1829
1872
|
...t.authHeaders ? { hasAuthHeaders: !0 } : {}
|
|
1830
1873
|
};
|
|
1831
|
-
},
|
|
1874
|
+
}, Gr = (e) => {
|
|
1832
1875
|
let t = /* @__PURE__ */ new Map();
|
|
1833
1876
|
for (let n of e) {
|
|
1834
1877
|
if (n.proxyTarget === void 0) continue;
|
|
@@ -1836,43 +1879,43 @@ import {
|
|
|
1836
1879
|
if (e) throw Error(`[voltro] api ${JSON.stringify(n.name)} and ${JSON.stringify(e)} both resolve the same-origin WS path ${JSON.stringify(n.browserWsUrl)}. A custom transport.wsPath must be unique per origin (one api per origin may use a fixed path). Give each a distinct wsPath, or drop the override to use the default /ws/<name>.`);
|
|
1837
1880
|
t.set(n.browserWsUrl, n.name);
|
|
1838
1881
|
}
|
|
1839
|
-
},
|
|
1882
|
+
}, Kr = async (e, t) => {
|
|
1840
1883
|
let n = Object.entries(t.apis ?? {}), r = [];
|
|
1841
1884
|
for (let [t, i] of n) {
|
|
1842
1885
|
if (i.url) {
|
|
1843
|
-
r.push(
|
|
1886
|
+
r.push(Ur(t, i));
|
|
1844
1887
|
continue;
|
|
1845
1888
|
}
|
|
1846
|
-
let n = await
|
|
1889
|
+
let n = await Vr(e, i.package);
|
|
1847
1890
|
if (!n) throw Error(`[voltro dev] api ${JSON.stringify(t)} (package ${JSON.stringify(i.package)}) is not a workspace dep and has no \`url\` set in app.config.ts. External apis need an explicit \`url\` because the framework can't discover their dev port.`);
|
|
1848
|
-
r.push(
|
|
1891
|
+
r.push(Wr(t, i, await Hr(n)));
|
|
1849
1892
|
}
|
|
1850
|
-
return
|
|
1851
|
-
},
|
|
1893
|
+
return Gr(r), r;
|
|
1894
|
+
}, qr = (e) => {
|
|
1852
1895
|
if (!(!/^wss?:\/\//.test(e) && !/^https?:\/\//.test(e))) try {
|
|
1853
1896
|
let t = new URL(e);
|
|
1854
1897
|
return t.protocol = t.protocol === "wss:" || t.protocol === "https:" ? "https:" : "http:", `${t.protocol}//${t.host}`;
|
|
1855
1898
|
} catch {
|
|
1856
1899
|
return;
|
|
1857
1900
|
}
|
|
1858
|
-
},
|
|
1901
|
+
}, Jr = (e) => `VOLTRO_API_ORIGIN_${e.toUpperCase().replace(/[^A-Z0-9]/g, "_")}`, Yr = (e) => process.env[Jr(e)] ?? process.env.VOLTRO_API_ORIGIN, Xr = (e, t) => {
|
|
1859
1902
|
if (!e) return;
|
|
1860
|
-
let n =
|
|
1903
|
+
let n = Yr(e.name) ?? e.serverOrigin;
|
|
1861
1904
|
if (n) {
|
|
1862
|
-
let e =
|
|
1905
|
+
let e = qr(n);
|
|
1863
1906
|
if (e) return e;
|
|
1864
1907
|
}
|
|
1865
1908
|
if (t?.allowDevProxy && e.proxyTarget) {
|
|
1866
|
-
let t =
|
|
1909
|
+
let t = qr(e.proxyTarget);
|
|
1867
1910
|
if (t) return t;
|
|
1868
1911
|
}
|
|
1869
|
-
if (!e.proxyTarget && /^wss?:\/\//.test(e.browserWsUrl)) return
|
|
1870
|
-
},
|
|
1912
|
+
if (!e.proxyTarget && /^wss?:\/\//.test(e.browserWsUrl)) return qr(e.browserWsUrl);
|
|
1913
|
+
}, Zr = (e, t, n) => {
|
|
1871
1914
|
if (!e) {
|
|
1872
1915
|
if (n?.apiName === void 0) return;
|
|
1873
1916
|
let e = n.apiName;
|
|
1874
1917
|
return async () => {
|
|
1875
|
-
throw Error(`[loader.query] api '${e}' has no server-side origin for SSR. In a split web/api deployment the web pod reaches the api by internal DNS, not the browser's relative wsPath — set ${
|
|
1918
|
+
throw Error(`[loader.query] api '${e}' has no server-side origin for SSR. In a split web/api deployment the web pod reaches the api by internal DNS, not the browser's relative wsPath — set ${Jr(e)} (or VOLTRO_API_ORIGIN, or apis.${e}.serverUrl in app.config.ts) to the api's internal origin, e.g. http://api.<namespace>.svc.cluster.local. The browser transport is unaffected.`);
|
|
1876
1919
|
};
|
|
1877
1920
|
}
|
|
1878
1921
|
return async (r, i) => {
|
|
@@ -1888,13 +1931,14 @@ import {
|
|
|
1888
1931
|
method: "POST",
|
|
1889
1932
|
headers: {
|
|
1890
1933
|
"content-type": "application/json",
|
|
1891
|
-
...t ? { cookie: t } : {}
|
|
1934
|
+
...t ? { cookie: t } : {},
|
|
1935
|
+
...Object.fromEntries(Object.entries(n?.headers ?? {}).filter(([e]) => e === "authorization" || e.startsWith("x-voltro-") || e === "x-tenant"))
|
|
1892
1936
|
},
|
|
1893
1937
|
body: JSON.stringify(a)
|
|
1894
1938
|
});
|
|
1895
1939
|
} catch (t) {
|
|
1896
1940
|
let i = t?.cause?.code ?? String(t?.message ?? t);
|
|
1897
|
-
throw Error(`[loader.query] ${r}: could not reach the api at ${e}/rpc (${i}). ${n?.apiName ? `Set ${
|
|
1941
|
+
throw Error(`[loader.query] ${r}: could not reach the api at ${e}/rpc (${i}). ${n?.apiName ? `Set ${Jr(n.apiName)} / VOLTRO_API_ORIGIN` : "Set the api server origin"} to the api's SSR-reachable origin (internal cluster DNS in a split deployment).`, { cause: t });
|
|
1898
1942
|
}
|
|
1899
1943
|
if (!o.ok) throw Error(`[loader.query] ${r}: HTTP ${o.status} ${await o.text()}`);
|
|
1900
1944
|
let s = await o.json();
|
|
@@ -1924,8 +1968,8 @@ import {
|
|
|
1924
1968
|
}
|
|
1925
1969
|
if (u) return l;
|
|
1926
1970
|
};
|
|
1927
|
-
},
|
|
1928
|
-
let i = t.title ?? t.name ?? "app", a = t.theme === "dark" ? " class=\"dark\"" : t.theme === "light" ? " class=\"light\"" : "", o = j(O(e, "node_modules", "@voltro", "devtools", "package.json")) || await
|
|
1971
|
+
}, Qr = async (e, t, n, r = {}) => {
|
|
1972
|
+
let i = t.title ?? t.name ?? "app", a = t.theme === "dark" ? " class=\"dark\"" : t.theme === "light" ? " class=\"light\"" : "", o = j(O(e, "node_modules", "@voltro", "devtools", "package.json")) || await br() !== null, s = t.theme === "system" ? [
|
|
1929
1973
|
" <script>",
|
|
1930
1974
|
" (function () {",
|
|
1931
1975
|
" var root = document.documentElement",
|
|
@@ -1979,13 +2023,13 @@ import {
|
|
|
1979
2023
|
e.hasLayout && e.hasLayoutLoader ? r.push(`import * as ${Q(e.dir, "Layout")}Mod from '${t}/layout.tsx'`) : e.hasLayout && r.push(`import ${Q(e.dir, "Layout")} from '${t}/layout.tsx'`), e.hasError && r.push(`import ${Q(e.dir, "Error")} from '${t}/error.tsx'`), e.hasPending && r.push(`import ${Q(e.dir, "Pending")} from '${t}/loading.tsx'`), e.hasNotFound && r.push(`import ${Q(e.dir, "NotFound")} from '${t}/not-found.tsx'`);
|
|
1980
2024
|
}
|
|
1981
2025
|
let i = u.map((e) => {
|
|
1982
|
-
let t =
|
|
2026
|
+
let t = Pr(d, e.dirChain).map((e) => {
|
|
1983
2027
|
let t = [`id: ${JSON.stringify(e.dir || "/")}`], n = JSON.stringify(e.dir);
|
|
1984
2028
|
return e.hasLayout && t.push(`Layout: refs.layouts[${n}]`), e.hasLayoutLoader && t.push(`loader: refs.layoutLoaders[${n}]`), e.hasError && t.push(`Error: refs.errors[${n}]`), e.hasPending && t.push(`Pending: refs.pendings[${n}]`), ` { ${t.join(", ")} }`;
|
|
1985
2029
|
}).join(",\n");
|
|
1986
2030
|
return ` makePageRoute(${JSON.stringify(e.pattern)}, ${t.length > 0 ? `[\n${t},\n ]` : "undefined"}),`;
|
|
1987
2031
|
}), a = d.filter((e) => e.hasNotFound).map((e) => {
|
|
1988
|
-
let t =
|
|
2032
|
+
let t = Ir(e.chain), n = Pr(d, e.chain).map((e) => {
|
|
1989
2033
|
let t = [`id: ${JSON.stringify(e.dir || "/")}`], n = JSON.stringify(e.dir);
|
|
1990
2034
|
return e.hasLayout && t.push(`Layout: refs.layouts[${n}]`), e.hasError && t.push(`Error: refs.errors[${n}]`), ` { ${t.join(", ")} }`;
|
|
1991
2035
|
}).join(",\n"), r = n.length > 0 ? `\n chain: [\n${n},\n ],` : "";
|
|
@@ -2241,14 +2285,14 @@ import {
|
|
|
2241
2285
|
"// resolved apis map. Side-effect only — no local component definitions —",
|
|
2242
2286
|
"// so downstream invalidations (user page edits) terminate at app.tsx.",
|
|
2243
2287
|
"",
|
|
2244
|
-
...
|
|
2288
|
+
...Tr(t),
|
|
2245
2289
|
"import { mount } from '@voltro/web'",
|
|
2246
2290
|
...h,
|
|
2247
2291
|
"import { App } from './app'",
|
|
2248
2292
|
"import { preloadCurrentRoute } from './routeTable'",
|
|
2249
|
-
...
|
|
2250
|
-
...
|
|
2251
|
-
...
|
|
2293
|
+
...Cr(t),
|
|
2294
|
+
...xr(t, o),
|
|
2295
|
+
...wr(t),
|
|
2252
2296
|
"",
|
|
2253
2297
|
"// Preload the current route's page chunk BEFORE hydration so the first",
|
|
2254
2298
|
"// client render matches the SSG/SSR-prerendered HTML. Without it, a lazy",
|
|
@@ -2265,10 +2309,10 @@ import {
|
|
|
2265
2309
|
" apis: {",
|
|
2266
2310
|
...g,
|
|
2267
2311
|
" },",
|
|
2268
|
-
...
|
|
2312
|
+
...Sr(t, o),
|
|
2269
2313
|
"})",
|
|
2270
2314
|
"",
|
|
2271
|
-
|
|
2315
|
+
Lr
|
|
2272
2316
|
].join("\n");
|
|
2273
2317
|
} else _ = "", v = "", b = [
|
|
2274
2318
|
"// GENERATED BY `voltro dev` — do not edit; will be overwritten on next boot.",
|
|
@@ -2276,22 +2320,22 @@ import {
|
|
|
2276
2320
|
"// and calls mount(). Side-effect only, no component definitions, so the",
|
|
2277
2321
|
"// user's component file remains the Fast Refresh boundary.",
|
|
2278
2322
|
"",
|
|
2279
|
-
...
|
|
2323
|
+
...Tr(t),
|
|
2280
2324
|
"import { mount } from '@voltro/web'",
|
|
2281
2325
|
...h,
|
|
2282
2326
|
"import App from '../src/App'",
|
|
2283
|
-
...
|
|
2284
|
-
...
|
|
2285
|
-
...
|
|
2327
|
+
...Cr(t),
|
|
2328
|
+
...xr(t, o),
|
|
2329
|
+
...wr(t),
|
|
2286
2330
|
"",
|
|
2287
2331
|
"mount(App, {",
|
|
2288
2332
|
" apis: {",
|
|
2289
2333
|
...g,
|
|
2290
2334
|
" },",
|
|
2291
|
-
...
|
|
2335
|
+
...Sr(t, o),
|
|
2292
2336
|
"})",
|
|
2293
2337
|
"",
|
|
2294
|
-
|
|
2338
|
+
Lr
|
|
2295
2339
|
].join("\n");
|
|
2296
2340
|
let x = O(e, ".framework");
|
|
2297
2341
|
await M.mkdir(x, { recursive: !0 }), t.env ? await xe(x, r) : await M.rm(O(x, "env.public.ts"), { force: !0 }), await M.writeFile(O(x, "index.html"), c, "utf8"), await M.writeFile(O(x, "main.tsx"), b, "utf8"), _ ? (await M.writeFile(O(x, "app.tsx"), _, "utf8"), await M.writeFile(O(x, "routeTable.ts"), v, "utf8")) : (await M.rm(O(x, "app.tsx"), { force: !0 }), await M.rm(O(x, "routeTable.ts"), { force: !0 }));
|
|
@@ -2308,7 +2352,7 @@ import {
|
|
|
2308
2352
|
Z.warn(`could not add ${E.join(", ")} to ${S} — add it by hand so the generated directory stays out of git. The build is unaffected.`, { reason: e?.message ?? String(e) });
|
|
2309
2353
|
}
|
|
2310
2354
|
}
|
|
2311
|
-
},
|
|
2355
|
+
}, $r = async (e, t) => {
|
|
2312
2356
|
try {
|
|
2313
2357
|
let n = D(e), r = O(n, "project.json");
|
|
2314
2358
|
if (!j(r)) return;
|
|
@@ -2321,16 +2365,16 @@ import {
|
|
|
2321
2365
|
projectJson: r
|
|
2322
2366
|
});
|
|
2323
2367
|
} catch {}
|
|
2324
|
-
},
|
|
2325
|
-
let n =
|
|
2368
|
+
}, ei = (e) => O(e, ".framework", "dist", "server", "appConfig.js"), ti = async (e, t = {}) => {
|
|
2369
|
+
let n = ei(e), r = t.preferSource !== !0 && j(n) ? n : O(e, "app.config.ts");
|
|
2326
2370
|
try {
|
|
2327
|
-
let e = (await import(
|
|
2371
|
+
let e = (await import(R(r).href)).default;
|
|
2328
2372
|
return typeof e == "object" && e && "type" in e && e.type === "web" ? e : null;
|
|
2329
2373
|
} catch {
|
|
2330
2374
|
return null;
|
|
2331
2375
|
}
|
|
2332
|
-
},
|
|
2333
|
-
let n = await
|
|
2376
|
+
}, ni = async (e) => {
|
|
2377
|
+
let n = await ti(e, { preferSource: !0 });
|
|
2334
2378
|
if (!n) return {
|
|
2335
2379
|
ran: !1,
|
|
2336
2380
|
exitCode: 0
|
|
@@ -2338,7 +2382,7 @@ import {
|
|
|
2338
2382
|
ln();
|
|
2339
2383
|
let i = Ct();
|
|
2340
2384
|
Vt(i), Z.info("booting voltro dev (web)", { app: n.name ?? "(unnamed)" }), Ge(e, Z);
|
|
2341
|
-
let a = await
|
|
2385
|
+
let a = await Kr(e, n);
|
|
2342
2386
|
for (let e of a) Z.info("api wired", {
|
|
2343
2387
|
name: e.name,
|
|
2344
2388
|
pkg: e.pkg,
|
|
@@ -2357,7 +2401,7 @@ import {
|
|
|
2357
2401
|
log: Z,
|
|
2358
2402
|
generateTypes: !0
|
|
2359
2403
|
}), s = o.publicValues;
|
|
2360
|
-
await
|
|
2404
|
+
await Qr(e, n, a, s), Z.debug("generated framework entry files", { files: [
|
|
2361
2405
|
"index.html",
|
|
2362
2406
|
".framework/main.tsx",
|
|
2363
2407
|
...n.env ? [".framework/env.public.ts"] : []
|
|
@@ -2378,22 +2422,22 @@ import {
|
|
|
2378
2422
|
pid: process.pid,
|
|
2379
2423
|
status: "booting",
|
|
2380
2424
|
logFile: D.path
|
|
2381
|
-
}).catch(() => {}), await
|
|
2425
|
+
}).catch(() => {}), await $r(e, l);
|
|
2382
2426
|
let { pages: N, dirs: P } = await $(O(e, "src", "pages")), F = {
|
|
2383
2427
|
dirs: P,
|
|
2384
|
-
ssrRoutes:
|
|
2385
|
-
},
|
|
2428
|
+
ssrRoutes: zr(N)
|
|
2429
|
+
}, ee = P.map((e) => ({
|
|
2386
2430
|
dir: e.dir,
|
|
2387
2431
|
hasLayout: e.hasLayout,
|
|
2388
2432
|
hasError: e.hasError,
|
|
2389
2433
|
hasPending: e.hasPending,
|
|
2390
2434
|
hasNotFound: e.hasNotFound
|
|
2391
|
-
})),
|
|
2435
|
+
})), I = await ht({
|
|
2392
2436
|
appRoot: e,
|
|
2393
2437
|
pages: N
|
|
2394
2438
|
});
|
|
2395
|
-
|
|
2396
|
-
let
|
|
2439
|
+
I.wrote && Z.debug("routes codegen wrote", { path: k(e, I.path) });
|
|
2440
|
+
let L = await he("vite", () => import("vite")), R = (await import("@vitejs/plugin-react")).default, te = (await import("@tailwindcss/vite")).default, z = O(e, ".framework"), V = O(e, "src"), ne = /* @__PURE__ */ new Set([
|
|
2397
2441
|
".framework",
|
|
2398
2442
|
"node_modules",
|
|
2399
2443
|
"dist",
|
|
@@ -2401,27 +2445,27 @@ import {
|
|
|
2401
2445
|
".vite",
|
|
2402
2446
|
".turbo",
|
|
2403
2447
|
".cache"
|
|
2404
|
-
]),
|
|
2448
|
+
]), H = {
|
|
2405
2449
|
name: "framework:watch-app-sources",
|
|
2406
2450
|
async configureServer(t) {
|
|
2407
2451
|
try {
|
|
2408
|
-
let n = (await M.readdir(e, { withFileTypes: !0 })).filter((e) => e.isDirectory() && !
|
|
2452
|
+
let n = (await M.readdir(e, { withFileTypes: !0 })).filter((e) => e.isDirectory() && !ne.has(e.name));
|
|
2409
2453
|
for (let r of n) t.watcher.add(O(e, r.name));
|
|
2410
|
-
n.length === 0 && t.watcher.add(
|
|
2454
|
+
n.length === 0 && t.watcher.add(V);
|
|
2411
2455
|
} catch {
|
|
2412
|
-
t.watcher.add(
|
|
2456
|
+
t.watcher.add(V);
|
|
2413
2457
|
}
|
|
2414
2458
|
for (let n of await De(e)) t.watcher.add(n.dir);
|
|
2415
2459
|
}
|
|
2416
|
-
},
|
|
2460
|
+
}, U = O(e, "src", "pages"), W = (e) => e.endsWith(".tsx") && (e === U || e.startsWith(U + "/")), re = (e) => e === U || e.startsWith(U + "/"), G = async (t) => {
|
|
2417
2461
|
try {
|
|
2418
2462
|
let r = Date.now();
|
|
2419
|
-
await
|
|
2420
|
-
let { pages: i, dirs: o } = await $(
|
|
2463
|
+
await Qr(e, n, a, s);
|
|
2464
|
+
let { pages: i, dirs: o } = await $(U);
|
|
2421
2465
|
await ht({
|
|
2422
2466
|
appRoot: e,
|
|
2423
2467
|
pages: i
|
|
2424
|
-
}), F.dirs = o, F.ssrRoutes =
|
|
2468
|
+
}), F.dirs = o, F.ssrRoutes = zr(i), Z.info("page tree regenerated", {
|
|
2425
2469
|
reason: t,
|
|
2426
2470
|
ms: Date.now() - r,
|
|
2427
2471
|
routes: F.ssrRoutes.length
|
|
@@ -2436,17 +2480,17 @@ import {
|
|
|
2436
2480
|
r.push(e), n && clearTimeout(n), n = setTimeout(() => {
|
|
2437
2481
|
n = null;
|
|
2438
2482
|
let e = r.length === 1 ? r[0] : `${r.length} events (${r[0]}, …)`;
|
|
2439
|
-
r.length = 0,
|
|
2483
|
+
r.length = 0, G(e);
|
|
2440
2484
|
}, 50);
|
|
2441
2485
|
};
|
|
2442
2486
|
t.watcher.on("add", (t) => {
|
|
2443
|
-
|
|
2487
|
+
W(t) && i(`add ${k(e, t)}`);
|
|
2444
2488
|
}), t.watcher.on("unlink", (t) => {
|
|
2445
|
-
|
|
2489
|
+
W(t) && i(`unlink ${k(e, t)}`);
|
|
2446
2490
|
}), t.watcher.on("addDir", (t) => {
|
|
2447
|
-
|
|
2491
|
+
re(t) && i(`addDir ${k(e, t)}`);
|
|
2448
2492
|
}), t.watcher.on("unlinkDir", (t) => {
|
|
2449
|
-
|
|
2493
|
+
re(t) && i(`unlinkDir ${k(e, t)}`);
|
|
2450
2494
|
});
|
|
2451
2495
|
}
|
|
2452
2496
|
}, K = O(e, "app.config.ts"), oe = (e) => {
|
|
@@ -2511,7 +2555,7 @@ import {
|
|
|
2511
2555
|
}
|
|
2512
2556
|
try {
|
|
2513
2557
|
let r = Date.now();
|
|
2514
|
-
await
|
|
2558
|
+
await Qr(e, t, await Kr(e, t)), ce = t, n.ws && n.ws.send({
|
|
2515
2559
|
type: "full-reload",
|
|
2516
2560
|
path: "*"
|
|
2517
2561
|
}), Z.info("app.config.ts soft-regen", {
|
|
@@ -2550,7 +2594,7 @@ import {
|
|
|
2550
2594
|
async configureServer(t) {
|
|
2551
2595
|
let n = [];
|
|
2552
2596
|
for (let r of a) {
|
|
2553
|
-
let i = await
|
|
2597
|
+
let i = await Vr(e, r.pkg);
|
|
2554
2598
|
if (i) {
|
|
2555
2599
|
n.push(i);
|
|
2556
2600
|
try {
|
|
@@ -2568,7 +2612,7 @@ import {
|
|
|
2568
2612
|
if (e !== void 0 && e !== r) {
|
|
2569
2613
|
r = e, o = !0, Z.info("the api surface changed — re-bundling the api client + reloading (descriptor edits propagate automatically; no manual restart needed)");
|
|
2570
2614
|
try {
|
|
2571
|
-
await M.rm(O(
|
|
2615
|
+
await M.rm(O(z, ".vite", "deps"), {
|
|
2572
2616
|
recursive: !0,
|
|
2573
2617
|
force: !0
|
|
2574
2618
|
}), await t.restart(!0);
|
|
@@ -2830,7 +2874,7 @@ import {
|
|
|
2830
2874
|
kind: "web",
|
|
2831
2875
|
meta: {
|
|
2832
2876
|
name: n.name ?? "(unnamed)",
|
|
2833
|
-
voltroVersion:
|
|
2877
|
+
voltroVersion: yr,
|
|
2834
2878
|
port: l,
|
|
2835
2879
|
mode: "dev",
|
|
2836
2880
|
apis: Object.entries(n.apis ?? {}).map(([e, t]) => {
|
|
@@ -2842,7 +2886,7 @@ import {
|
|
|
2842
2886
|
})
|
|
2843
2887
|
},
|
|
2844
2888
|
routes: await a(),
|
|
2845
|
-
dirs:
|
|
2889
|
+
dirs: ee,
|
|
2846
2890
|
cache: () => ({
|
|
2847
2891
|
backend: "memory",
|
|
2848
2892
|
size: 0,
|
|
@@ -2938,7 +2982,7 @@ import {
|
|
|
2938
2982
|
u.indexOf("?");
|
|
2939
2983
|
let { pathname: d, search: f } = Hn(u);
|
|
2940
2984
|
if (d.startsWith("/@") || d.startsWith("/node_modules/") || d.startsWith("/.framework/") || d.startsWith("/_voltro/") || d === "/main.tsx" || d === "/index.html" || d === "/sw.js" || d === "/favicon.ico" || d === "/robots.txt" || /\.[a-z0-9]+$/i.test(d)) return l();
|
|
2941
|
-
let p =
|
|
2985
|
+
let p = Br(d, F.ssrRoutes);
|
|
2942
2986
|
if (!p) return l();
|
|
2943
2987
|
let m = !ye.has(p.route.pattern), h = Date.now();
|
|
2944
2988
|
m && Z.info(`ssr compiling ${p.route.pattern}`, {
|
|
@@ -2960,15 +3004,25 @@ import {
|
|
|
2960
3004
|
}
|
|
2961
3005
|
}, b = !1;
|
|
2962
3006
|
try {
|
|
2963
|
-
let x = await v("loadPage", async () => await r(O(e, "src", "pages", p.route.file))), S = _(x, O("src", "pages", p.route.file)), C =
|
|
3007
|
+
let x = await v("loadPage", async () => await r(O(e, "src", "pages", p.route.file))), S = _(x, O("src", "pages", p.route.file)), C = Pr(F.dirs, p.route.dirChain), w = S === "spa" && C.some((e) => e.hasLayout);
|
|
2964
3008
|
if (S !== "ssr" && S !== "isr" && !w) return l();
|
|
2965
3009
|
let T = {};
|
|
2966
3010
|
for (let [e, t] of Object.entries(i.headers ?? {})) typeof t == "string" ? T[e] = t : Array.isArray(t) && (T[e] = t.join(", "));
|
|
2967
|
-
let E =
|
|
2968
|
-
|
|
2969
|
-
|
|
3011
|
+
let E = await _r(Le, {
|
|
3012
|
+
pathname: d,
|
|
3013
|
+
search: f,
|
|
3014
|
+
headers: T,
|
|
3015
|
+
cookies: mr(T.cookie)
|
|
3016
|
+
});
|
|
3017
|
+
for (let e of E.setCookies) c.appendHeader?.("set-cookie", hr(e));
|
|
3018
|
+
let D = Zr(Xr(a[0], { allowDevProxy: !0 }), E.headers.cookie, {
|
|
3019
|
+
apiName: a[0]?.name,
|
|
3020
|
+
headers: E.headers
|
|
3021
|
+
}), k = new AbortController(), A = () => k.abort();
|
|
3022
|
+
c.once("close", A);
|
|
3023
|
+
let j = null, M = [], N = {};
|
|
2970
3024
|
try {
|
|
2971
|
-
(await r("@voltro/web/ssr")).beginStoreSeeds(), {chain:
|
|
3025
|
+
(await r("@voltro/web/ssr")).beginStoreSeeds(), {chain: M, segmentLoaderData: N} = await v("loadChain", () => Fr({
|
|
2972
3026
|
entries: C,
|
|
2973
3027
|
loadLayout: (t) => r(O(e, "src", "pages", t.dir, "layout.tsx")),
|
|
2974
3028
|
loadError: (t) => r(O(e, "src", "pages", t.dir, "error.tsx")),
|
|
@@ -2977,40 +3031,40 @@ import {
|
|
|
2977
3031
|
params: p.params,
|
|
2978
3032
|
pathname: d,
|
|
2979
3033
|
search: f,
|
|
2980
|
-
signal:
|
|
3034
|
+
signal: k.signal,
|
|
2981
3035
|
headers: T,
|
|
2982
|
-
query:
|
|
3036
|
+
query: D,
|
|
2983
3037
|
isServer: !0
|
|
2984
3038
|
}
|
|
2985
3039
|
}));
|
|
2986
3040
|
let t = x.loader;
|
|
2987
|
-
typeof t == "function" && !w && (
|
|
3041
|
+
typeof t == "function" && !w && (j = await v("loader", () => t({
|
|
2988
3042
|
params: p.params,
|
|
2989
3043
|
pathname: d,
|
|
2990
3044
|
search: f,
|
|
2991
|
-
signal:
|
|
3045
|
+
signal: k.signal,
|
|
2992
3046
|
headers: T,
|
|
2993
|
-
query:
|
|
3047
|
+
query: D,
|
|
2994
3048
|
isServer: !0
|
|
2995
3049
|
})));
|
|
2996
3050
|
} finally {
|
|
2997
|
-
c.off("close",
|
|
3051
|
+
c.off("close", A);
|
|
2998
3052
|
}
|
|
2999
|
-
let
|
|
3053
|
+
let P = await v("loadSsrHelpers", async () => await r("@voltro/web/ssr"));
|
|
3000
3054
|
w || await cr({
|
|
3001
3055
|
pageMod: x,
|
|
3002
3056
|
params: p.params,
|
|
3003
|
-
query:
|
|
3057
|
+
query: D,
|
|
3004
3058
|
apiName: a[0]?.name,
|
|
3005
|
-
seed:
|
|
3006
|
-
seedFailure:
|
|
3059
|
+
seed: P.seedPreloadedSubscription,
|
|
3060
|
+
seedFailure: P.seedPreloadedSubscriptionFailure,
|
|
3007
3061
|
onError: ({ tag: e, apiName: t }, n) => Z.warn("preload seed failed", {
|
|
3008
3062
|
tag: e,
|
|
3009
3063
|
apiName: t,
|
|
3010
3064
|
pathname: d
|
|
3011
3065
|
}, n)
|
|
3012
3066
|
});
|
|
3013
|
-
let
|
|
3067
|
+
let ee = {
|
|
3014
3068
|
pattern: p.route.pattern,
|
|
3015
3069
|
Component: x.default,
|
|
3016
3070
|
meta: x.meta,
|
|
@@ -3018,40 +3072,40 @@ import {
|
|
|
3018
3072
|
ErrorBoundary: x.ErrorBoundary,
|
|
3019
3073
|
Pending: x.Pending,
|
|
3020
3074
|
renderMode: S,
|
|
3021
|
-
chain:
|
|
3075
|
+
chain: M
|
|
3022
3076
|
}, I = {
|
|
3023
|
-
cookies:
|
|
3077
|
+
cookies: P.parseCookieHeader(T.cookie),
|
|
3024
3078
|
headers: T,
|
|
3025
3079
|
url: u
|
|
3026
3080
|
}, L = x.interactive ?? "full", R = (await s())(T.cookie, T["accept-language"]);
|
|
3027
3081
|
b = R !== void 0 && o;
|
|
3028
|
-
let
|
|
3082
|
+
let te = R ? {
|
|
3029
3083
|
outerWrap: R.outerWrap,
|
|
3030
3084
|
locale: R.locale
|
|
3031
|
-
} : {},
|
|
3032
|
-
helpers:
|
|
3085
|
+
} : {}, z = w ? zn({
|
|
3086
|
+
helpers: P,
|
|
3033
3087
|
page: `src/pages/${p.route.file}`,
|
|
3034
3088
|
interactive: L,
|
|
3035
3089
|
delivery: "stream",
|
|
3036
3090
|
renderInput: {
|
|
3037
|
-
descriptor:
|
|
3091
|
+
descriptor: ee,
|
|
3038
3092
|
params: p.params,
|
|
3039
3093
|
pathname: d,
|
|
3040
3094
|
search: f,
|
|
3041
|
-
segmentLoaderData:
|
|
3095
|
+
segmentLoaderData: N,
|
|
3042
3096
|
requestContext: I,
|
|
3043
|
-
...
|
|
3097
|
+
...te
|
|
3044
3098
|
}
|
|
3045
|
-
}) : null,
|
|
3046
|
-
helpers:
|
|
3099
|
+
}) : null, B = w ? null : Rn({
|
|
3100
|
+
helpers: P,
|
|
3047
3101
|
page: `src/pages/${p.route.file}`,
|
|
3048
3102
|
pathname: d,
|
|
3049
3103
|
renderMode: S,
|
|
3050
3104
|
interactive: L,
|
|
3051
|
-
loaderData:
|
|
3052
|
-
segmentLoaderData:
|
|
3105
|
+
loaderData: j,
|
|
3106
|
+
segmentLoaderData: N,
|
|
3053
3107
|
pageLoaderRan: typeof x.loader == "function"
|
|
3054
|
-
}),
|
|
3108
|
+
}), V = [];
|
|
3055
3109
|
await v("collectCss", async () => {
|
|
3056
3110
|
let t = /* @__PURE__ */ new Set(), n = [
|
|
3057
3111
|
O(e, "src", "pages", p.route.file),
|
|
@@ -3062,18 +3116,18 @@ import {
|
|
|
3062
3116
|
]),
|
|
3063
3117
|
O(e, ".framework", "main.tsx")
|
|
3064
3118
|
];
|
|
3065
|
-
for (let e of n) await y(e, t,
|
|
3119
|
+
for (let e of n) await y(e, t, V);
|
|
3066
3120
|
});
|
|
3067
|
-
let
|
|
3068
|
-
if (
|
|
3121
|
+
let ne = await v("readShell", Ee), H = await v("transformShell", () => t.transformIndexHtml(u, ne)), U = V.map((e) => `<link rel="stylesheet" href="${e}?direct" />`).join("\n "), W = R?.locale ?? I.cookies["voltro:locale"] ?? n.defaultLocale ?? (n.locales ?? [])[0] ?? "en", re = Date.now();
|
|
3122
|
+
if (z) {
|
|
3069
3123
|
let e = (e) => Vn({
|
|
3070
|
-
helpers:
|
|
3071
|
-
prepared:
|
|
3124
|
+
helpers: P,
|
|
3125
|
+
prepared: z,
|
|
3072
3126
|
meta: e,
|
|
3073
3127
|
interactive: L,
|
|
3074
3128
|
extra: [U]
|
|
3075
3129
|
});
|
|
3076
|
-
if (
|
|
3130
|
+
if (z.hasDeferred) ar({
|
|
3077
3131
|
res: c,
|
|
3078
3132
|
shell: nr({
|
|
3079
3133
|
shell: H,
|
|
@@ -3085,8 +3139,8 @@ import {
|
|
|
3085
3139
|
"x-voltro-rendered-by": "spa-shell-dev"
|
|
3086
3140
|
},
|
|
3087
3141
|
headInjection: e,
|
|
3088
|
-
render: (e) =>
|
|
3089
|
-
...
|
|
3142
|
+
render: (e) => P.renderPageToStream({
|
|
3143
|
+
...z.renderInput,
|
|
3090
3144
|
...e
|
|
3091
3145
|
}),
|
|
3092
3146
|
onShellError: (e) => {
|
|
@@ -3095,27 +3149,27 @@ import {
|
|
|
3095
3149
|
});
|
|
3096
3150
|
else {
|
|
3097
3151
|
let t = Bn({
|
|
3098
|
-
helpers:
|
|
3099
|
-
prepared:
|
|
3152
|
+
helpers: P,
|
|
3153
|
+
prepared: z
|
|
3100
3154
|
}), n = H.replace("<div id=\"root\"></div>", `<div id="root">${t.body}</div>`).replace("</head>", ` ${e(t.meta)}\n </head>`).replace(/<html(\s+lang="[^"]*")?/i, `<html lang="${W}"`);
|
|
3101
3155
|
c.statusCode = 200, c.setHeader("content-type", "text/html; charset=utf-8"), c.setHeader("x-voltro-rendered-by", "spa-shell-dev"), c.end(n);
|
|
3102
3156
|
}
|
|
3103
|
-
} else if (
|
|
3157
|
+
} else if (B) {
|
|
3104
3158
|
let e = (e) => [
|
|
3105
3159
|
U,
|
|
3106
|
-
|
|
3160
|
+
P.renderMetaToHtml(e),
|
|
3107
3161
|
`<meta name="voltro-interactive" content="${L}" />`,
|
|
3108
|
-
...
|
|
3109
|
-
|
|
3162
|
+
...B.hasDeferred ? [P.renderDeferredRegistryScript()] : [],
|
|
3163
|
+
P.renderRouterStateScript(B.stateInput)
|
|
3110
3164
|
].filter((e) => e.length > 0).join("\n "), t = {
|
|
3111
|
-
descriptor:
|
|
3165
|
+
descriptor: ee,
|
|
3112
3166
|
params: p.params,
|
|
3113
3167
|
pathname: d,
|
|
3114
3168
|
search: f,
|
|
3115
|
-
loaderData:
|
|
3116
|
-
segmentLoaderData:
|
|
3169
|
+
loaderData: B.loaderData,
|
|
3170
|
+
segmentLoaderData: B.segmentLoaderData,
|
|
3117
3171
|
requestContext: I,
|
|
3118
|
-
...
|
|
3172
|
+
...te
|
|
3119
3173
|
};
|
|
3120
3174
|
if (S === "ssr" && L === "full") ar({
|
|
3121
3175
|
res: c,
|
|
@@ -3129,7 +3183,7 @@ import {
|
|
|
3129
3183
|
"x-voltro-rendered-by": "ssr-dev"
|
|
3130
3184
|
},
|
|
3131
3185
|
headInjection: e,
|
|
3132
|
-
render: (e) =>
|
|
3186
|
+
render: (e) => P.renderPageToStream({
|
|
3133
3187
|
...t,
|
|
3134
3188
|
...e
|
|
3135
3189
|
}),
|
|
@@ -3138,11 +3192,11 @@ import {
|
|
|
3138
3192
|
}
|
|
3139
3193
|
});
|
|
3140
3194
|
else {
|
|
3141
|
-
let { html: n, meta: r } =
|
|
3195
|
+
let { html: n, meta: r } = P.renderPageToHtml(t), i = H.replace("<div id=\"root\"></div>", `<div id="root">${n}</div>`).replace("</head>", ` ${e(r)}\n </head>`).replace(/<html(\s+lang="[^"]*")?/i, `<html lang="${W}"`);
|
|
3142
3196
|
c.statusCode = 200, c.setHeader("content-type", "text/html; charset=utf-8"), c.setHeader("x-voltro-rendered-by", "ssr-dev"), c.end(i);
|
|
3143
3197
|
}
|
|
3144
3198
|
}
|
|
3145
|
-
g.render = Date.now() -
|
|
3199
|
+
g.render = Date.now() - re;
|
|
3146
3200
|
let G = Date.now() - h;
|
|
3147
3201
|
m ? (ye.add(p.route.pattern), Z.info(`ssr compiled ${p.route.pattern} in ${G}ms`, {
|
|
3148
3202
|
pattern: p.route.pattern,
|
|
@@ -3176,15 +3230,15 @@ import {
|
|
|
3176
3230
|
}
|
|
3177
3231
|
});
|
|
3178
3232
|
}
|
|
3179
|
-
}, Ae = Date.now(), je =
|
|
3233
|
+
}, Ae = Date.now(), je = L.version ?? "?", Me = await br(), Ne = O(e, "node_modules", "@voltro", "ui-shadcn"), Y = j(O(Ne, "package.json")) ? Ne : null, Fe = [], Ie = await (async () => {
|
|
3180
3234
|
let t = [];
|
|
3181
3235
|
for (let n of a) {
|
|
3182
|
-
let r = await
|
|
3236
|
+
let r = await Vr(e, n.pkg);
|
|
3183
3237
|
r && t.push(r);
|
|
3184
3238
|
}
|
|
3185
3239
|
let n = await pr(t);
|
|
3186
3240
|
if (n === void 0) return !1;
|
|
3187
|
-
let r = O(
|
|
3241
|
+
let r = O(z, ".voltro-rpcgroup-optimize"), i = "";
|
|
3188
3242
|
try {
|
|
3189
3243
|
i = (await M.readFile(r, "utf8")).trim();
|
|
3190
3244
|
} catch {}
|
|
@@ -3193,15 +3247,15 @@ import {
|
|
|
3193
3247
|
await M.writeFile(r, n);
|
|
3194
3248
|
} catch {}
|
|
3195
3249
|
return !0;
|
|
3196
|
-
})();
|
|
3197
|
-
Ie && Z.info("rpcGroup changed since last boot — forcing a dep re-optimize so the browser loads the current api client");
|
|
3250
|
+
})(), Le = await gr(e);
|
|
3251
|
+
Le !== void 0 && Z.info("middleware.ts loaded — renews credentials before each SSR render"), Ie && Z.info("rpcGroup changed since last boot — forcing a dep re-optimize so the browser loads the current api client");
|
|
3198
3252
|
try {
|
|
3199
3253
|
await Pe(l, "voltro dev (web)");
|
|
3200
3254
|
} catch (e) {
|
|
3201
3255
|
Z.error(String(e.message ?? e)), process.exit(1);
|
|
3202
3256
|
}
|
|
3203
|
-
await (await
|
|
3204
|
-
root:
|
|
3257
|
+
await (await L.createServer({
|
|
3258
|
+
root: z,
|
|
3205
3259
|
envPrefix: "__VOLTRO_VITE_ENV_DISABLED__",
|
|
3206
3260
|
ssr: { noExternal: ["react-intl", "@voltro/i18n"] },
|
|
3207
3261
|
resolve: {
|
|
@@ -3247,9 +3301,9 @@ import {
|
|
|
3247
3301
|
customLogger: et(),
|
|
3248
3302
|
plugins: [
|
|
3249
3303
|
bn(O(e, "src", "pages")),
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
3304
|
+
R(),
|
|
3305
|
+
te(),
|
|
3306
|
+
H,
|
|
3253
3307
|
ie,
|
|
3254
3308
|
ue,
|
|
3255
3309
|
pe,
|
|
@@ -3264,12 +3318,12 @@ import {
|
|
|
3264
3318
|
host: !0,
|
|
3265
3319
|
allowedHosts: n.allowedHosts === !0 || [...n.allowedHosts ?? []],
|
|
3266
3320
|
proxy: J,
|
|
3267
|
-
fs: { allow: [e, ...
|
|
3321
|
+
fs: { allow: [e, ...Er(e)] }
|
|
3268
3322
|
},
|
|
3269
3323
|
appType: "spa",
|
|
3270
|
-
cacheDir: O(
|
|
3324
|
+
cacheDir: O(z, ".vite"),
|
|
3271
3325
|
publicDir: O(e, "public")
|
|
3272
|
-
})).listen(),
|
|
3326
|
+
})).listen(), vr.info(`v${je} ready in ${Date.now() - Ae}ms`, {
|
|
3273
3327
|
version: je,
|
|
3274
3328
|
bootMs: Date.now() - Ae
|
|
3275
3329
|
}), Z.info(`listening on http://localhost:${l}`, {
|
|
@@ -3313,27 +3367,27 @@ import {
|
|
|
3313
3367
|
} catch (e) {
|
|
3314
3368
|
Z.warn("runtime-registry write failed", {}, e);
|
|
3315
3369
|
}
|
|
3316
|
-
return
|
|
3370
|
+
return B({
|
|
3317
3371
|
app: n.name ?? "unnamed",
|
|
3318
3372
|
kind: "web",
|
|
3319
3373
|
url: `http://localhost:${l}`,
|
|
3320
3374
|
bootMs: Date.now() - Ae
|
|
3321
3375
|
}), new Promise(() => {});
|
|
3322
|
-
},
|
|
3376
|
+
}, ri = async (t) => {
|
|
3323
3377
|
e("serve");
|
|
3324
|
-
let n = await
|
|
3378
|
+
let n = await ti(t);
|
|
3325
3379
|
if (!n) return {
|
|
3326
3380
|
ran: !1,
|
|
3327
3381
|
exitCode: 0
|
|
3328
3382
|
};
|
|
3329
3383
|
let i = Date.now(), a = Z.child("serve");
|
|
3330
3384
|
a.info("booting voltro serve (preview)", { app: n.name ?? "(unnamed)" });
|
|
3331
|
-
let o = await
|
|
3385
|
+
let o = await Kr(t, n);
|
|
3332
3386
|
for (let e of o) a.info("api wired", {
|
|
3333
3387
|
name: e.name,
|
|
3334
3388
|
pkg: e.pkg
|
|
3335
3389
|
});
|
|
3336
|
-
await
|
|
3390
|
+
await Qr(t, n, o);
|
|
3337
3391
|
{
|
|
3338
3392
|
let { pages: e } = await $(O(t, "src", "pages"));
|
|
3339
3393
|
await ht({
|
|
@@ -3359,7 +3413,7 @@ import {
|
|
|
3359
3413
|
] },
|
|
3360
3414
|
build: {
|
|
3361
3415
|
outDir: "dist",
|
|
3362
|
-
rollupOptions: { output: { manualChunks:
|
|
3416
|
+
rollupOptions: { output: { manualChunks: Or } }
|
|
3363
3417
|
},
|
|
3364
3418
|
publicDir: O(t, "public")
|
|
3365
3419
|
});
|
|
@@ -3372,7 +3426,7 @@ import {
|
|
|
3372
3426
|
label: "Local",
|
|
3373
3427
|
url: e
|
|
3374
3428
|
})) ?? [];
|
|
3375
|
-
return
|
|
3429
|
+
return B({
|
|
3376
3430
|
app: n.name ?? "unnamed",
|
|
3377
3431
|
kind: "preview",
|
|
3378
3432
|
url: f,
|
|
@@ -3381,4 +3435,4 @@ import {
|
|
|
3381
3435
|
}), new Promise(() => {});
|
|
3382
3436
|
};
|
|
3383
3437
|
//#endregion
|
|
3384
|
-
export {
|
|
3438
|
+
export { nt as $, Rn as A, en as B, _r as C, nr as D, rr as E, Tn as F, wt as G, Jt as H, Cn as I, xt as J, Ct as K, Pn as L, Bn as M, Vn as N, ar as O, Hn as P, rt as Q, wn as R, mr as S, cr as T, Vt as U, Xt as V, It as W, ht as X, bt as Y, at as Z, ri as _, Fr as a, Pe as at, Qr as b, Mr as c, De as ct, ti as d, Se as dt, Ve as et, Kr as f, be as ft, ni as g, Jr as h, Zr as i, Ge as it, zn as j, In as k, Q as l, we as lt, Wr as m, he as mt, Xr as n, He as nt, ei as o, ke as ot, Ur as p, ye as pt, Tt as q, Gr as r, We as rt, Pr as s, Ee as st, kr as t, Ue as tt, Nr as u, Te as ut, Or as v, hr as w, gr as x, $ as y, on as z };
|