@demiurgejs/core 0.2.0-beta.4 → 0.2.0-beta.5
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/README.md +23 -0
- package/bin/demiurge.mjs +17 -1
- package/dist/adapter/index.d.ts +1 -1
- package/dist/adapter/index.d.ts.map +1 -1
- package/dist/browser/file-router.d.ts +1 -1
- package/dist/chunks/{document-shell-CpJnFtSC.js → document-shell-9GPwtcTt.js} +2 -2
- package/dist/chunks/{document-shell-CpJnFtSC.js.map → document-shell-9GPwtcTt.js.map} +1 -1
- package/dist/chunks/{image-codec-BmzWnH6W.js → image-codec-Dh1POFhE.js} +2 -2
- package/dist/chunks/{image-codec-BmzWnH6W.js.map → image-codec-Dh1POFhE.js.map} +1 -1
- package/dist/chunks/{images-BQ80950B.js → images-CG7ZzayG.js} +2 -2
- package/dist/chunks/{images-BQ80950B.js.map → images-CG7ZzayG.js.map} +1 -1
- package/dist/chunks/{index-BVk9zWbe.js → index-0MNiR_wo.js} +4 -3
- package/dist/chunks/{index-BVk9zWbe.js.map → index-0MNiR_wo.js.map} +1 -1
- package/dist/chunks/plugin-BZauDxRY.js +2310 -0
- package/dist/chunks/plugin-BZauDxRY.js.map +1 -0
- package/dist/chunks/streaming-GYIsVTQH.js +560 -0
- package/dist/chunks/streaming-GYIsVTQH.js.map +1 -0
- package/dist/chunks/testing-CUwGj2ie.js +4751 -0
- package/dist/chunks/testing-CUwGj2ie.js.map +1 -0
- package/dist/chunks/{vite-DO70kZA6.js → vite-QoqrGl6f.js} +43 -43
- package/dist/chunks/vite-QoqrGl6f.js.map +1 -0
- package/dist/cli.d.ts +4 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +224 -98
- package/dist/cli.js.map +1 -1
- package/dist/config/index.js +2 -2
- package/dist/config/types.d.ts +11 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/edge/index.js +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +161 -139
- package/dist/index.js.map +1 -1
- package/dist/inspect/command.d.ts +28 -0
- package/dist/inspect/command.d.ts.map +1 -0
- package/dist/inspect/index.d.ts +9 -0
- package/dist/inspect/index.d.ts.map +1 -0
- package/dist/inspect/redact.d.ts +35 -0
- package/dist/inspect/redact.d.ts.map +1 -0
- package/dist/inspect/report.d.ts +24 -0
- package/dist/inspect/report.d.ts.map +1 -0
- package/dist/inspect/types.d.ts +102 -0
- package/dist/inspect/types.d.ts.map +1 -0
- package/dist/internal/testing.js +12 -12
- package/dist/node/http.d.ts +5 -0
- package/dist/node/http.d.ts.map +1 -1
- package/dist/node/index.d.ts +1 -1
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +26 -24
- package/dist/node/index.js.map +1 -1
- package/dist/route/index.d.ts +1 -0
- package/dist/route/index.d.ts.map +1 -1
- package/dist/route/mutation.d.ts.map +1 -1
- package/dist/route/serialization.d.ts +24 -0
- package/dist/route/serialization.d.ts.map +1 -0
- package/dist/route/webhook.d.ts +6 -1
- package/dist/route/webhook.d.ts.map +1 -1
- package/dist/router/manifest.d.ts.map +1 -1
- package/dist/security/audit.d.ts +2 -1
- package/dist/security/audit.d.ts.map +1 -1
- package/dist/security/authorization.d.ts +36 -0
- package/dist/security/authorization.d.ts.map +1 -0
- package/dist/security/csrf.d.ts.map +1 -1
- package/dist/security/env-startup.d.ts +0 -2
- package/dist/security/env-startup.d.ts.map +1 -1
- package/dist/security/env.d.ts +27 -8
- package/dist/security/env.d.ts.map +1 -1
- package/dist/security/exceptions.d.ts +29 -0
- package/dist/security/exceptions.d.ts.map +1 -0
- package/dist/security/finding-codes.d.ts +56 -0
- package/dist/security/finding-codes.d.ts.map +1 -0
- package/dist/security/index.d.ts +5 -2
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/policy.d.ts +2 -5
- package/dist/security/policy.d.ts.map +1 -1
- package/dist/security/report.d.ts +2 -1
- package/dist/security/report.d.ts.map +1 -1
- package/dist/security/request.d.ts +1 -0
- package/dist/security/request.d.ts.map +1 -1
- package/dist/security/types.d.ts +138 -5
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/upload.d.ts +3 -3
- package/dist/security/upload.d.ts.map +1 -1
- package/dist/security/verification.d.ts.map +1 -1
- package/dist/server/request-handler.d.ts +3 -2
- package/dist/server/request-handler.d.ts.map +1 -1
- package/dist/server-only/browser.d.ts +2 -0
- package/dist/server-only/browser.d.ts.map +1 -0
- package/dist/server-only/browser.js +4 -0
- package/dist/server-only/browser.js.map +1 -0
- package/dist/server-only/index.d.ts +2 -0
- package/dist/server-only/index.d.ts.map +1 -0
- package/dist/server-only/index.js +2 -0
- package/dist/server-only/index.js.map +1 -0
- package/dist/static/index.js +4 -4
- package/dist/vite/index.d.ts +9 -4
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +28 -21
- package/dist/vite/plugin.d.ts +18 -2
- package/dist/vite/plugin.d.ts.map +1 -1
- package/dist/vite/policy-verification.d.ts +33 -2
- package/dist/vite/policy-verification.d.ts.map +1 -1
- package/dist/vite/route-audit.d.ts +14 -2
- package/dist/vite/route-audit.d.ts.map +1 -1
- package/dist/vite/server-only-boundary.d.ts +8 -0
- package/dist/vite/server-only-boundary.d.ts.map +1 -0
- package/package.json +6 -1
- package/dist/chunks/env-startup-DOBYWlZD.js +0 -257
- package/dist/chunks/env-startup-DOBYWlZD.js.map +0 -1
- package/dist/chunks/plugin-BQgMiHxa.js +0 -1827
- package/dist/chunks/plugin-BQgMiHxa.js.map +0 -1
- package/dist/chunks/streaming-BEbPN7Uk.js +0 -469
- package/dist/chunks/streaming-BEbPN7Uk.js.map +0 -1
- package/dist/chunks/testing-DueXbMo4.js +0 -4167
- package/dist/chunks/testing-DueXbMo4.js.map +0 -1
- package/dist/chunks/vite-DO70kZA6.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { k as h } from "./plugin-BZauDxRY.js";
|
|
2
2
|
class v extends Error {
|
|
3
3
|
constructor(i, t) {
|
|
4
4
|
super(i, t), this.name = "DemiurgeConfigError";
|
|
@@ -12,7 +12,7 @@ const w = [
|
|
|
12
12
|
"rendering",
|
|
13
13
|
"routing",
|
|
14
14
|
"security",
|
|
15
|
-
"
|
|
15
|
+
"unsafe_unstable_viteConfig",
|
|
16
16
|
"vite"
|
|
17
17
|
], D = {
|
|
18
18
|
assets: ["fonts", "images"],
|
|
@@ -26,20 +26,20 @@ const w = [
|
|
|
26
26
|
vite: ["define", "optimizeDeps", "plugins", "resolve"],
|
|
27
27
|
"vite.resolve": ["alias"]
|
|
28
28
|
};
|
|
29
|
-
function
|
|
29
|
+
function k(e, i) {
|
|
30
30
|
const t = { configFile: i };
|
|
31
31
|
y(t, "", e, "a configuration object");
|
|
32
32
|
const n = e;
|
|
33
33
|
b(t, "", n, w);
|
|
34
|
-
const o =
|
|
34
|
+
const o = u(t, n, "routing");
|
|
35
35
|
o && (f(t, "routing.routesDir", o.routesDir), p(t, "routing.locales", o.locales), j(t, o.typedRoutes));
|
|
36
|
-
const r =
|
|
36
|
+
const r = u(t, n, "rendering");
|
|
37
37
|
if (r) {
|
|
38
|
-
const s =
|
|
38
|
+
const s = u(t, r, "document", "rendering.");
|
|
39
39
|
if (s && (f(t, "rendering.document.lang", s.lang), f(t, "rendering.document.title", s.title)), r.styles !== void 0 && r.styles !== !1 && typeof r.styles != "string")
|
|
40
40
|
throw a(t, "rendering.styles", "false or a string", r.styles);
|
|
41
41
|
}
|
|
42
|
-
const d =
|
|
42
|
+
const d = u(t, n, "security");
|
|
43
43
|
if (d && d.staticFileHeaders !== void 0 && !Array.isArray(d.staticFileHeaders))
|
|
44
44
|
throw a(
|
|
45
45
|
t,
|
|
@@ -47,21 +47,21 @@ function E(e, i) {
|
|
|
47
47
|
"an array of header rules",
|
|
48
48
|
d.staticFileHeaders
|
|
49
49
|
);
|
|
50
|
-
const
|
|
51
|
-
if (
|
|
52
|
-
if (
|
|
50
|
+
const l = u(t, n, "assets");
|
|
51
|
+
if (l) {
|
|
52
|
+
if (l.fonts !== void 0 && !Array.isArray(l.fonts))
|
|
53
53
|
throw a(
|
|
54
54
|
t,
|
|
55
55
|
"assets.fonts",
|
|
56
56
|
"an array of font declarations from defineFonts()",
|
|
57
|
-
|
|
57
|
+
l.fonts
|
|
58
58
|
);
|
|
59
|
-
p(t, "assets.images",
|
|
59
|
+
p(t, "assets.images", l.images);
|
|
60
60
|
}
|
|
61
|
-
const g =
|
|
61
|
+
const g = u(t, n, "deployment");
|
|
62
62
|
if (g) {
|
|
63
63
|
f(t, "deployment.outDir", g.outDir);
|
|
64
|
-
const s =
|
|
64
|
+
const s = u(t, g, "server", "deployment.");
|
|
65
65
|
if (s) {
|
|
66
66
|
if (typeof s.entry != "string" || !s.entry)
|
|
67
67
|
throw a(
|
|
@@ -72,7 +72,7 @@ function E(e, i) {
|
|
|
72
72
|
);
|
|
73
73
|
f(t, "deployment.server.outDir", s.outDir);
|
|
74
74
|
}
|
|
75
|
-
const m =
|
|
75
|
+
const m = u(
|
|
76
76
|
t,
|
|
77
77
|
g,
|
|
78
78
|
"static",
|
|
@@ -91,12 +91,12 @@ function E(e, i) {
|
|
|
91
91
|
if (n.devtools !== void 0 && typeof n.devtools != "boolean")
|
|
92
92
|
throw a(t, "devtools", "a boolean", n.devtools);
|
|
93
93
|
F(t, n.env);
|
|
94
|
-
const c =
|
|
94
|
+
const c = u(t, n, "vite");
|
|
95
95
|
if (c) {
|
|
96
96
|
if (c.plugins !== void 0 && !Array.isArray(c.plugins))
|
|
97
97
|
throw a(t, "vite.plugins", "an array of Vite plugins", c.plugins);
|
|
98
98
|
p(t, "vite.define", c.define), p(t, "vite.optimizeDeps", c.optimizeDeps);
|
|
99
|
-
const s =
|
|
99
|
+
const s = u(t, c, "resolve", "vite.");
|
|
100
100
|
if (s?.alias !== void 0 && !Array.isArray(s.alias) && (typeof s.alias != "object" || s.alias === null))
|
|
101
101
|
throw a(
|
|
102
102
|
t,
|
|
@@ -105,22 +105,22 @@ function E(e, i) {
|
|
|
105
105
|
s.alias
|
|
106
106
|
);
|
|
107
107
|
}
|
|
108
|
-
if (n.
|
|
108
|
+
if (n.unsafe_unstable_viteConfig !== void 0 && typeof n.unsafe_unstable_viteConfig != "function")
|
|
109
109
|
throw a(
|
|
110
110
|
t,
|
|
111
|
-
"
|
|
111
|
+
"unsafe_unstable_viteConfig",
|
|
112
112
|
"a function",
|
|
113
|
-
n.
|
|
113
|
+
n.unsafe_unstable_viteConfig
|
|
114
114
|
);
|
|
115
115
|
return n;
|
|
116
116
|
}
|
|
117
|
-
function
|
|
117
|
+
function u(e, i, t, n = "") {
|
|
118
118
|
const o = i[t];
|
|
119
119
|
if (o === void 0) return;
|
|
120
120
|
const r = `${n}${t}`;
|
|
121
121
|
y(e, r, o, "an object");
|
|
122
|
-
const d = o,
|
|
123
|
-
return
|
|
122
|
+
const d = o, l = D[r];
|
|
123
|
+
return l && b(e, r, d, l), d;
|
|
124
124
|
}
|
|
125
125
|
function b(e, i, t, n) {
|
|
126
126
|
for (const o of Object.keys(t))
|
|
@@ -173,22 +173,22 @@ function a(e, i, t, n) {
|
|
|
173
173
|
` file: ${e.configFile}`,
|
|
174
174
|
` field: ${i || "(the default export)"}`,
|
|
175
175
|
i ? ` problem: this option must be ${t}` : ` problem: the default export must be ${t}`,
|
|
176
|
-
` received: ${
|
|
176
|
+
` received: ${_(n)}`
|
|
177
177
|
].join(`
|
|
178
178
|
`)
|
|
179
179
|
);
|
|
180
180
|
}
|
|
181
|
-
function
|
|
182
|
-
return e === void 0 ? "undefined" : e === null ? "null" : typeof e == "function" ? "a function" : typeof e == "string" ? JSON.stringify(
|
|
181
|
+
function _(e) {
|
|
182
|
+
return e === void 0 ? "undefined" : e === null ? "null" : typeof e == "function" ? "a function" : typeof e == "string" ? JSON.stringify($(e)) : typeof e == "object" ? Array.isArray(e) ? `an array with ${e.length} items` : `an object with these keys: ${Object.keys(e).join(", ") || "(none)"}` : String(e);
|
|
183
183
|
}
|
|
184
|
-
function
|
|
184
|
+
function $(e) {
|
|
185
185
|
return e.length > 60 ? `${e.slice(0, 57)}...` : e;
|
|
186
186
|
}
|
|
187
|
-
async function
|
|
188
|
-
const { config: i } = e, t = await
|
|
187
|
+
async function E(e) {
|
|
188
|
+
const { config: i } = e, t = await R(e.loadReactPlugin), n = {
|
|
189
189
|
configFile: !1,
|
|
190
190
|
plugins: [
|
|
191
|
-
h(
|
|
191
|
+
h(C(i)),
|
|
192
192
|
t(),
|
|
193
193
|
...i.vite?.plugins ?? []
|
|
194
194
|
],
|
|
@@ -196,20 +196,20 @@ async function S(e) {
|
|
|
196
196
|
...i.vite?.define ? { define: { ...i.vite.define } } : {},
|
|
197
197
|
...i.vite?.optimizeDeps ? { optimizeDeps: i.vite.optimizeDeps } : {},
|
|
198
198
|
...i.vite?.resolve?.alias ? { resolve: { alias: i.vite.resolve.alias } } : {}
|
|
199
|
-
}, o = e.overrides ? await
|
|
200
|
-
if (!i.
|
|
201
|
-
const r = await i.
|
|
199
|
+
}, o = e.overrides ? await A(n, e.overrides) : n;
|
|
200
|
+
if (!i.unsafe_unstable_viteConfig) return o;
|
|
201
|
+
const r = await i.unsafe_unstable_viteConfig(o);
|
|
202
202
|
if (!r || typeof r != "object" || Array.isArray(r))
|
|
203
203
|
throw new v(
|
|
204
204
|
[
|
|
205
|
-
"The
|
|
205
|
+
"The unsafe_unstable_viteConfig callback must return a Vite configuration object.",
|
|
206
206
|
` file: ${i.configFile}`
|
|
207
207
|
].join(`
|
|
208
208
|
`)
|
|
209
209
|
);
|
|
210
210
|
return r;
|
|
211
211
|
}
|
|
212
|
-
function
|
|
212
|
+
function C(e) {
|
|
213
213
|
return {
|
|
214
214
|
...e.devtools === void 0 ? {} : { devtools: e.devtools },
|
|
215
215
|
...e.rendering?.document ? { document: e.rendering.document } : {},
|
|
@@ -228,13 +228,13 @@ function A(e) {
|
|
|
228
228
|
...e.routing?.typedRoutes === void 0 ? {} : { typedRoutes: e.routing.typedRoutes }
|
|
229
229
|
};
|
|
230
230
|
}
|
|
231
|
-
async function
|
|
231
|
+
async function A(e, i) {
|
|
232
232
|
const { mergeConfig: t } = await import("vite");
|
|
233
233
|
return t(e, i);
|
|
234
234
|
}
|
|
235
|
-
async function
|
|
235
|
+
async function R(e) {
|
|
236
236
|
try {
|
|
237
|
-
return await (e ??
|
|
237
|
+
return await (e ?? O)();
|
|
238
238
|
} catch (i) {
|
|
239
239
|
throw new v(
|
|
240
240
|
[
|
|
@@ -247,13 +247,13 @@ async function O(e) {
|
|
|
247
247
|
);
|
|
248
248
|
}
|
|
249
249
|
}
|
|
250
|
-
async function
|
|
250
|
+
async function O() {
|
|
251
251
|
return (await import("@vitejs/plugin-react")).default;
|
|
252
252
|
}
|
|
253
253
|
export {
|
|
254
254
|
v as D,
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
255
|
+
E as c,
|
|
256
|
+
C as t,
|
|
257
|
+
k as v
|
|
258
258
|
};
|
|
259
|
-
//# sourceMappingURL=vite-
|
|
259
|
+
//# sourceMappingURL=vite-QoqrGl6f.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-QoqrGl6f.js","sources":["../../src/config/validate.ts","../../src/config/vite.ts"],"sourcesContent":["import type { DemiurgeConfig } from \"./types\";\n\nexport class DemiurgeConfigError extends Error {\n constructor(message: string, options?: { cause?: unknown }) {\n super(message, options);\n this.name = \"DemiurgeConfigError\";\n }\n}\n\nconst CONFIG_KEYS = [\n \"assets\",\n \"deployment\",\n \"devtools\",\n \"env\",\n \"rendering\",\n \"routing\",\n \"security\",\n \"unsafe_unstable_viteConfig\",\n \"vite\",\n] as const;\n\nconst SECTION_KEYS: Record<string, readonly string[]> = {\n assets: [\"fonts\", \"images\"],\n deployment: [\"outDir\", \"server\", \"static\"],\n \"deployment.server\": [\"entry\", \"outDir\"],\n \"deployment.static\": [\"origin\", \"provider\"],\n rendering: [\"document\", \"styles\"],\n \"rendering.document\": [\"lang\", \"title\"],\n routing: [\"locales\", \"routesDir\", \"typedRoutes\"],\n security: [\"staticFileHeaders\"],\n vite: [\"define\", \"optimizeDeps\", \"plugins\", \"resolve\"],\n \"vite.resolve\": [\"alias\"],\n};\n\nexport function validateDemiurgeConfig(\n value: unknown,\n configFile: string,\n): DemiurgeConfig {\n const context = { configFile };\n assertPlainObject(context, \"\", value, \"a configuration object\");\n // TYPE-EVIDENCE: assertPlainObject threw unless the value is a non-array object. The cast reads its keys.\n const config = value as Record<string, unknown>;\n assertKnownKeys(context, \"\", config, CONFIG_KEYS);\n\n const routing = section(context, config, \"routing\");\n if (routing) {\n assertOptionalString(context, \"routing.routesDir\", routing.routesDir);\n assertOptionalObject(context, \"routing.locales\", routing.locales);\n assertTypedRoutes(context, routing.typedRoutes);\n }\n\n const rendering = section(context, config, \"rendering\");\n if (rendering) {\n const document = section(context, rendering, \"document\", \"rendering.\");\n if (document) {\n assertOptionalString(context, \"rendering.document.lang\", document.lang);\n assertOptionalString(context, \"rendering.document.title\", document.title);\n }\n if (\n rendering.styles !== undefined &&\n rendering.styles !== false &&\n typeof rendering.styles !== \"string\"\n ) {\n throw invalid(context, \"rendering.styles\", \"false or a string\", rendering.styles);\n }\n }\n\n const security = section(context, config, \"security\");\n if (security && security.staticFileHeaders !== undefined) {\n if (!Array.isArray(security.staticFileHeaders)) {\n throw invalid(\n context,\n \"security.staticFileHeaders\",\n \"an array of header rules\",\n security.staticFileHeaders,\n );\n }\n }\n\n const assets = section(context, config, \"assets\");\n if (assets) {\n if (assets.fonts !== undefined && !Array.isArray(assets.fonts)) {\n throw invalid(\n context,\n \"assets.fonts\",\n \"an array of font declarations from defineFonts()\",\n assets.fonts,\n );\n }\n assertOptionalObject(context, \"assets.images\", assets.images);\n }\n\n const deployment = section(context, config, \"deployment\");\n if (deployment) {\n assertOptionalString(context, \"deployment.outDir\", deployment.outDir);\n const server = section(context, deployment, \"server\", \"deployment.\");\n if (server) {\n if (typeof server.entry !== \"string\" || !server.entry) {\n throw invalid(\n context,\n \"deployment.server.entry\",\n \"a path to the application server entry\",\n server.entry,\n );\n }\n assertOptionalString(context, \"deployment.server.outDir\", server.outDir);\n }\n const staticDeployment = section(\n context,\n deployment,\n \"static\",\n \"deployment.\",\n );\n if (staticDeployment) {\n assertOptionalString(\n context,\n \"deployment.static.origin\",\n staticDeployment.origin,\n );\n assertOptionalObject(\n context,\n \"deployment.static.provider\",\n staticDeployment.provider,\n );\n }\n }\n\n if (config.devtools !== undefined && typeof config.devtools !== \"boolean\") {\n throw invalid(context, \"devtools\", \"a boolean\", config.devtools);\n }\n\n assertEnvSchema(context, config.env);\n\n const vite = section(context, config, \"vite\");\n if (vite) {\n if (vite.plugins !== undefined && !Array.isArray(vite.plugins)) {\n throw invalid(context, \"vite.plugins\", \"an array of Vite plugins\", vite.plugins);\n }\n assertOptionalObject(context, \"vite.define\", vite.define);\n assertOptionalObject(context, \"vite.optimizeDeps\", vite.optimizeDeps);\n const resolve = section(context, vite, \"resolve\", \"vite.\");\n if (\n resolve?.alias !== undefined &&\n !Array.isArray(resolve.alias) &&\n (typeof resolve.alias !== \"object\" || resolve.alias === null)\n ) {\n throw invalid(\n context,\n \"vite.resolve.alias\",\n \"an object of aliases or an array of alias entries\",\n resolve.alias,\n );\n }\n }\n\n if (\n config.unsafe_unstable_viteConfig !== undefined &&\n typeof config.unsafe_unstable_viteConfig !== \"function\"\n ) {\n throw invalid(\n context,\n \"unsafe_unstable_viteConfig\",\n \"a function\",\n config.unsafe_unstable_viteConfig,\n );\n }\n\n // TYPE-EVIDENCE: each field above matches the declared type or throws. The cast records that result.\n return config as DemiurgeConfig;\n}\n\ntype ValidationContext = {\n configFile: string;\n};\n\nfunction section(\n context: ValidationContext,\n parent: Record<string, unknown>,\n key: string,\n prefix = \"\",\n) {\n const value = parent[key];\n if (value === undefined) return undefined;\n const field = `${prefix}${key}`;\n assertPlainObject(context, field, value, \"an object\");\n // TYPE-EVIDENCE: assertPlainObject threw unless the value is a non-array object. The cast reads its keys.\n const record = value as Record<string, unknown>;\n const known = SECTION_KEYS[field];\n if (known) assertKnownKeys(context, field, record, known);\n return record;\n}\n\nfunction assertKnownKeys(\n context: ValidationContext,\n field: string,\n value: Record<string, unknown>,\n known: readonly string[],\n) {\n for (const key of Object.keys(value)) {\n if (known.includes(key)) continue;\n throw new DemiurgeConfigError(\n [\n \"Demiurge configuration is invalid.\",\n ` file: ${context.configFile}`,\n ` field: ${field ? `${field}.${key}` : key}`,\n \" problem: this option does not exist\",\n ` known options: ${known.join(\", \")}`,\n ].join(\"\\n\"),\n );\n }\n}\n\nfunction assertPlainObject(\n context: ValidationContext,\n field: string,\n value: unknown,\n expected: string,\n) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw invalid(context, field, expected, value);\n }\n}\n\nfunction assertOptionalString(\n context: ValidationContext,\n field: string,\n value: unknown,\n) {\n if (value !== undefined && typeof value !== \"string\") {\n throw invalid(context, field, \"a string\", value);\n }\n}\n\nfunction assertOptionalObject(\n context: ValidationContext,\n field: string,\n value: unknown,\n) {\n if (value === undefined) return;\n assertPlainObject(context, field, value, \"an object\");\n}\n\nfunction assertTypedRoutes(context: ValidationContext, value: unknown) {\n if (value === undefined || typeof value === \"boolean\") return;\n assertPlainObject(context, \"routing.typedRoutes\", value, \"a boolean or an object\");\n // TYPE-EVIDENCE: assertPlainObject threw unless the value is a non-array object. The cast reads its keys.\n const record = value as Record<string, unknown>;\n assertKnownKeys(context, \"routing.typedRoutes\", record, [\"outputFile\"]);\n assertOptionalString(context, \"routing.typedRoutes.outputFile\", record.outputFile);\n}\n\nfunction assertEnvSchema(context: ValidationContext, value: unknown) {\n if (value === undefined) return;\n assertPlainObject(context, \"env\", value, \"an environment schema\");\n // TYPE-EVIDENCE: assertPlainObject threw unless the value is a non-array object. The cast reads its entries.\n const schema = value as Record<string, unknown>;\n for (const [key, variable] of Object.entries(schema)) {\n if (\n variable &&\n typeof variable === \"object\" &&\n \"parse\" in variable &&\n typeof variable.parse === \"function\"\n ) {\n continue;\n }\n throw invalid(\n context,\n `env.${key}`,\n \"a variable from the env builders, such as env.string()\",\n variable,\n );\n }\n}\n\nfunction invalid(\n context: ValidationContext,\n field: string,\n expected: string,\n value: unknown,\n) {\n return new DemiurgeConfigError(\n [\n \"Demiurge configuration is invalid.\",\n ` file: ${context.configFile}`,\n ` field: ${field || \"(the default export)\"}`,\n field\n ? ` problem: this option must be ${expected}`\n : ` problem: the default export must be ${expected}`,\n ` received: ${describeValue(value)}`,\n ].join(\"\\n\"),\n );\n}\n\nexport function describeValue(value: unknown) {\n if (value === undefined) return \"undefined\";\n if (value === null) return \"null\";\n if (typeof value === \"function\") return \"a function\";\n if (typeof value === \"string\") return JSON.stringify(truncate(value));\n if (typeof value === \"object\") {\n return Array.isArray(value)\n ? `an array with ${value.length} items`\n : `an object with these keys: ${Object.keys(value).join(\", \") || \"(none)\"}`;\n }\n return String(value);\n}\n\nfunction truncate(value: string) {\n return value.length > 60 ? `${value.slice(0, 57)}...` : value;\n}\n","import type { InlineConfig, PluginOption, UserConfig } from \"vite\";\nimport { demiurge, type DemiurgeVitePluginOptions } from \"../vite/plugin\";\nimport type { DemiurgeConfig, ResolvedDemiurgeConfig } from \"./types\";\nimport { DemiurgeConfigError } from \"./validate\";\n\nexport type ReactPluginLoader = () => Promise<(...args: never[]) => PluginOption>;\n\nexport type CreateDemiurgeViteConfigOptions = {\n config: ResolvedDemiurgeConfig;\n loadReactPlugin?: ReactPluginLoader;\n overrides?: InlineConfig;\n};\n\n// The framework generates the Vite configuration from the application\n// configuration. Applications do not author a Vite configuration file.\nexport async function createDemiurgeViteConfig(\n options: CreateDemiurgeViteConfigOptions,\n): Promise<InlineConfig> {\n const { config } = options;\n const react = await loadReactPluginOrFail(options.loadReactPlugin);\n\n const generated: InlineConfig = {\n configFile: false,\n plugins: [\n demiurge(toPluginOptions(config)),\n react(),\n ...(config.vite?.plugins ?? []),\n ],\n root: config.root,\n ...(config.vite?.define ? { define: { ...config.vite.define } } : {}),\n ...(config.vite?.optimizeDeps\n ? { optimizeDeps: config.vite.optimizeDeps }\n : {}),\n ...(config.vite?.resolve?.alias\n ? { resolve: { alias: config.vite.resolve.alias } }\n : {}),\n };\n\n const merged = options.overrides\n ? await mergeViteConfig(generated, options.overrides)\n : generated;\n\n if (!config.unsafe_unstable_viteConfig) return merged;\n\n // TYPE-EVIDENCE: InlineConfig extends UserConfig with command options only. The callback reads the same fields.\n const extended = await config.unsafe_unstable_viteConfig(merged as UserConfig);\n if (!extended || typeof extended !== \"object\" || Array.isArray(extended)) {\n throw new DemiurgeConfigError(\n [\n \"The unsafe_unstable_viteConfig callback must return a Vite configuration object.\",\n ` file: ${config.configFile}`,\n ].join(\"\\n\"),\n );\n }\n\n // TYPE-EVIDENCE: the check above rejected every value that is not a configuration object. The cast records that result.\n return extended as InlineConfig;\n}\n\n// The plugin keeps the flat option shape. The configuration boundaries map\n// onto it here, so the boundaries stay the application-facing contract.\nexport function toPluginOptions(\n config: DemiurgeConfig,\n): DemiurgeVitePluginOptions {\n return {\n ...(config.devtools === undefined ? {} : { devtools: config.devtools }),\n ...(config.rendering?.document\n ? { document: config.rendering.document }\n : {}),\n ...(config.env ? { env: config.env } : {}),\n ...(config.assets?.fonts ? { fonts: config.assets.fonts } : {}),\n ...(config.assets?.images ? { images: config.assets.images } : {}),\n ...(config.routing?.locales ? { locales: config.routing.locales } : {}),\n ...(config.routing?.routesDir\n ? { routesDir: config.routing.routesDir }\n : {}),\n ...(config.deployment?.static?.provider || config.security?.staticFileHeaders\n ? {\n static: {\n ...(config.deployment?.static?.provider\n ? { deployment: config.deployment.static.provider }\n : {}),\n ...(config.security?.staticFileHeaders\n ? { headers: config.security.staticFileHeaders }\n : {}),\n },\n }\n : {}),\n ...(config.rendering?.styles === undefined\n ? {}\n : { styles: config.rendering.styles }),\n ...(config.routing?.typedRoutes === undefined\n ? {}\n : { typedRoutes: config.routing.typedRoutes }),\n };\n}\n\nasync function mergeViteConfig(base: InlineConfig, overrides: InlineConfig) {\n const { mergeConfig } = await import(\"vite\");\n // TYPE-EVIDENCE: mergeConfig returns the merge of two InlineConfig values. The cast restores that type from its Record signature.\n return mergeConfig(base, overrides) as InlineConfig;\n}\n\nasync function loadReactPluginOrFail(loader?: ReactPluginLoader) {\n try {\n return await (loader ?? loadReactPlugin)();\n } catch (error) {\n throw new DemiurgeConfigError(\n [\n \"Demiurge did not find @vitejs/plugin-react.\",\n \" Demiurge generates the Vite configuration and needs the React plugin.\",\n \" Add @vitejs/plugin-react to the development dependencies of the application.\",\n ].join(\"\\n\"),\n { cause: error },\n );\n }\n}\n\nasync function loadReactPlugin(): Promise<(...args: never[]) => PluginOption> {\n const module: { default: (...args: never[]) => PluginOption } = await import(\n \"@vitejs/plugin-react\"\n );\n return module.default;\n}\n"],"names":["DemiurgeConfigError","message","options","CONFIG_KEYS","SECTION_KEYS","validateDemiurgeConfig","value","configFile","context","assertPlainObject","config","assertKnownKeys","routing","section","assertOptionalString","assertOptionalObject","assertTypedRoutes","rendering","document","invalid","security","assets","deployment","server","staticDeployment","assertEnvSchema","vite","resolve","parent","key","prefix","field","record","known","expected","schema","variable","describeValue","truncate","createDemiurgeViteConfig","react","loadReactPluginOrFail","generated","demiurge","toPluginOptions","merged","mergeViteConfig","extended","base","overrides","mergeConfig","loader","loadReactPlugin","error"],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -3,9 +3,11 @@ import type { ResolvedDemiurgeConfig } from "./config/types";
|
|
|
3
3
|
import { type GenerateStaticOutputOptions, type StaticOutputManifest } from "./static";
|
|
4
4
|
export { parseClientManifest } from "./manifest";
|
|
5
5
|
export type { ClientBuildManifest } from "./manifest";
|
|
6
|
+
export { INSPECT_EXIT_FINDINGS, INSPECT_EXIT_INVALID, INSPECT_EXIT_OK, runInspectCommand, } from "./inspect";
|
|
7
|
+
export type { InspectCommandResult } from "./inspect";
|
|
6
8
|
type CliEnvironment = Record<string, string | undefined>;
|
|
7
9
|
export type CliOptions = {
|
|
8
|
-
command: "build" | "dev" | "help" | "preview";
|
|
10
|
+
command: "build" | "dev" | "help" | "inspect" | "preview";
|
|
9
11
|
host: string;
|
|
10
12
|
origin?: string;
|
|
11
13
|
outDir?: string;
|
|
@@ -26,7 +28,7 @@ export type BuildResult = {
|
|
|
26
28
|
serverOutDir?: string;
|
|
27
29
|
};
|
|
28
30
|
export declare function parseCliArguments(arguments_: string[], environment?: CliEnvironment): CliOptions;
|
|
29
|
-
export declare const helpText = "Usage: demiurge <command> [options]\n\nCommands:\n dev Start the development server\n build Build production output\n preview Serve static output with its declared headers\n\nOptions:\n --host <host> Set the server host (default: localhost)\n --origin <origin> Set the build origin (default: SITE_ORIGIN)\n --out-dir <directory> Set the client output directory (default: dist)\n --port <port> Set the server port (dev: 5173, preview: 4173)\n -h, --help Show this help\n\nDemiurge reads demiurge.config.ts from the project root.";
|
|
31
|
+
export declare const helpText = "Usage: demiurge <command> [options]\n\nCommands:\n dev Start the development server\n build Build production output\n inspect Write the static inspection report as JSON\n preview Serve static output with its declared headers\n\nOptions:\n --host <host> Set the server host (default: localhost)\n --origin <origin> Set the build origin (default: SITE_ORIGIN)\n --out-dir <directory> Set the client output directory (default: dist)\n --port <port> Set the server port (dev: 5173, preview: 4173)\n -h, --help Show this help\n\nThe inspect command writes JSON to standard output and a summary to standard\nerror. It exits with 0 for no error finding, 1 for at least one error finding,\nand 2 for an invalid argument or an unreadable configuration.\n\nDemiurge reads demiurge.config.ts from the project root.";
|
|
30
32
|
export declare function runDev(options: CliOptions, config: ResolvedDemiurgeConfig): Promise<import("vite").ViteDevServer>;
|
|
31
33
|
export declare function runBuild(options: CliOptions, config: ResolvedDemiurgeConfig, runtime?: BuildRuntime): Promise<BuildResult>;
|
|
32
34
|
export declare function resolvePreviewOutputDirectory(root: string, outDir: string | undefined, configuredOutDir?: string): string;
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEzC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAG7D,OAAO,EAGL,KAAK,2BAA2B,EAChC,KAAK,oBAAoB,EAC1B,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAUzD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEzC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAG7D,OAAO,EAGL,KAAK,2BAA2B,EAChC,KAAK,oBAAoB,EAC1B,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEtD,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAUzD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,gBAAgB,EAAE,CAAC,SAAS,EAAE,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACrE,QAAQ,EAAE,CACR,OAAO,EAAE,2BAA2B,KACjC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnC,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtE,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAAE,EACpB,WAAW,GAAE,cAAmB,GAC/B,UAAU,CAkDZ;AAED,eAAO,MAAM,QAAQ,84BAmBoC,CAAC;AAE1D,wBAAsB,MAAM,CAC1B,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,sBAAsB,yCAc/B;AAED,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,sBAAsB,EAC9B,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC,CAkEtB;AA6ED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,gBAAgB,CAAC,EAAE,MAAM,UAG1B;AAED,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,KAAK,GAAG,MAAM,EACzB,YAAY,EAAE,MAAM,iBAqCrB"}
|