@demiurgejs/core 0.1.1 → 0.2.0-beta.2
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 +5 -0
- package/bin/demiurge.mjs +51 -0
- package/dist/adapter/testing.d.ts +33 -0
- package/dist/adapter/testing.d.ts.map +1 -0
- package/dist/adapter/testing.js +251 -0
- package/dist/adapter/testing.js.map +1 -0
- package/dist/browser/file-router.d.ts.map +1 -1
- package/dist/chunks/document-shell-D1xo6cEA.js +35 -0
- package/dist/chunks/document-shell-D1xo6cEA.js.map +1 -0
- package/dist/chunks/image-codec-BGTx_t5K.js +141 -0
- package/dist/chunks/image-codec-BGTx_t5K.js.map +1 -0
- package/dist/chunks/images-B9MqcjSA.js +339 -0
- package/dist/chunks/images-B9MqcjSA.js.map +1 -0
- package/dist/chunks/request-metadata-D5NrT8ks.js +642 -0
- package/dist/chunks/request-metadata-D5NrT8ks.js.map +1 -0
- package/dist/chunks/streaming-BQ1bykDo.js +469 -0
- package/dist/chunks/streaming-BQ1bykDo.js.map +1 -0
- package/dist/chunks/{testing-DR3eQAvY.js → testing-B_iMFYz_.js} +2376 -1927
- package/dist/chunks/testing-B_iMFYz_.js.map +1 -0
- package/dist/cli.d.ts +42 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +173 -0
- package/dist/cli.js.map +1 -0
- package/dist/document/deferred-scripts.d.ts +11 -0
- package/dist/document/deferred-scripts.d.ts.map +1 -0
- package/dist/document/index.d.ts +4 -2
- package/dist/document/index.d.ts.map +1 -1
- package/dist/document/render.d.ts +1 -1
- package/dist/document/render.d.ts.map +1 -1
- package/dist/document/scripts.d.ts +34 -1
- package/dist/document/scripts.d.ts.map +1 -1
- package/dist/edge/assets.d.ts +14 -0
- package/dist/edge/assets.d.ts.map +1 -0
- package/dist/edge/index.d.ts +19 -0
- package/dist/edge/index.d.ts.map +1 -0
- package/dist/edge/index.js +286 -0
- package/dist/edge/index.js.map +1 -0
- package/dist/edge/stores.d.ts +8 -0
- package/dist/edge/stores.d.ts.map +1 -0
- package/dist/edge/streaming.d.ts +7 -0
- package/dist/edge/streaming.d.ts.map +1 -0
- package/dist/index.d.ts +9 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +894 -1043
- package/dist/index.js.map +1 -1
- package/dist/internal/testing.js +12 -11
- package/dist/internal/testing.js.map +1 -1
- package/dist/kv/index.d.ts +3 -0
- package/dist/kv/index.d.ts.map +1 -0
- package/dist/kv/index.js +103 -0
- package/dist/kv/index.js.map +1 -0
- package/dist/kv/store.d.ts +28 -0
- package/dist/kv/store.d.ts.map +1 -0
- package/dist/node/font.d.ts +5 -0
- package/dist/node/font.d.ts.map +1 -0
- package/dist/node/image.d.ts +15 -0
- package/dist/node/image.d.ts.map +1 -0
- package/dist/node/index.d.ts +4 -0
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +25 -23
- package/dist/node/index.js.map +1 -1
- package/dist/node/streaming.d.ts +2 -0
- package/dist/node/streaming.d.ts.map +1 -1
- package/dist/platform/analytics.d.ts +58 -5
- package/dist/platform/analytics.d.ts.map +1 -1
- package/dist/platform/font-assets.d.ts +19 -0
- package/dist/platform/font-assets.d.ts.map +1 -0
- package/dist/platform/fonts.d.ts +14 -4
- package/dist/platform/fonts.d.ts.map +1 -1
- package/dist/platform/image-codec.d.ts +15 -0
- package/dist/platform/image-codec.d.ts.map +1 -0
- package/dist/platform/image-url.d.ts +17 -0
- package/dist/platform/image-url.d.ts.map +1 -0
- package/dist/platform/image.d.ts +8 -0
- package/dist/platform/image.d.ts.map +1 -0
- package/dist/platform/images.d.ts +15 -0
- package/dist/platform/images.d.ts.map +1 -1
- package/dist/platform/index.d.ts +8 -5
- package/dist/platform/index.d.ts.map +1 -1
- package/dist/redis/index.d.ts +3 -0
- package/dist/redis/index.d.ts.map +1 -0
- package/dist/redis/index.js +171 -0
- package/dist/redis/index.js.map +1 -0
- package/dist/redis/store.d.ts +8 -0
- package/dist/redis/store.d.ts.map +1 -0
- package/dist/route/action.d.ts +11 -11
- package/dist/route/action.d.ts.map +1 -1
- package/dist/route/index.d.ts +2 -1
- package/dist/route/index.d.ts.map +1 -1
- package/dist/route/middleware.d.ts +7 -0
- package/dist/route/middleware.d.ts.map +1 -0
- package/dist/route/page.d.ts +2 -2
- package/dist/route/page.d.ts.map +1 -1
- package/dist/route/response.d.ts +19 -19
- package/dist/route/response.d.ts.map +1 -1
- package/dist/route/types.d.ts +55 -31
- package/dist/route/types.d.ts.map +1 -1
- package/dist/route/webhook.d.ts +1 -1
- package/dist/router/manifest.d.ts +1 -0
- package/dist/router/manifest.d.ts.map +1 -1
- package/dist/routing/generate.d.ts +2 -0
- package/dist/routing/generate.d.ts.map +1 -1
- package/dist/routing/index.d.ts +1 -1
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/routing/types.d.ts +2 -0
- package/dist/routing/types.d.ts.map +1 -1
- package/dist/security/cors.d.ts.map +1 -1
- package/dist/security/index.d.ts +4 -2
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/policy.d.ts +5 -1
- package/dist/security/policy.d.ts.map +1 -1
- package/dist/security/types.d.ts +34 -13
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/verification.d.ts +8 -0
- package/dist/security/verification.d.ts.map +1 -0
- package/dist/server/document-shell.d.ts +12 -0
- package/dist/server/document-shell.d.ts.map +1 -0
- package/dist/server/errors.d.ts.map +1 -1
- package/dist/server/not-found.d.ts.map +1 -1
- package/dist/server/render-tree.d.ts +6 -1
- package/dist/server/render-tree.d.ts.map +1 -1
- package/dist/server/request-handler.d.ts +4 -1
- package/dist/server/request-handler.d.ts.map +1 -1
- package/dist/server/ssr.d.ts +1 -0
- package/dist/server/ssr.d.ts.map +1 -1
- package/dist/static/images.d.ts +13 -0
- package/dist/static/images.d.ts.map +1 -0
- package/dist/static/index.d.ts +18 -0
- package/dist/static/index.d.ts.map +1 -1
- package/dist/static/index.js +677 -129
- package/dist/static/index.js.map +1 -1
- package/dist/static/preview.d.ts +8 -0
- package/dist/static/preview.d.ts.map +1 -0
- package/dist/static/vercel.d.ts +34 -0
- package/dist/static/vercel.d.ts.map +1 -0
- package/dist/vite/index.d.ts +3 -2
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +782 -329
- package/dist/vite/index.js.map +1 -1
- package/dist/vite/plugin.d.ts +20 -0
- package/dist/vite/plugin.d.ts.map +1 -1
- package/dist/vite/policy-verification.d.ts +10 -0
- package/dist/vite/policy-verification.d.ts.map +1 -0
- package/package.json +38 -2
- package/dist/chunks/index-BnX9Qxbm.js +0 -44
- package/dist/chunks/index-BnX9Qxbm.js.map +0 -1
- package/dist/chunks/ssr-BJejKlkZ.js +0 -275
- package/dist/chunks/ssr-BJejKlkZ.js.map +0 -1
- package/dist/chunks/streaming-DN1DnbRE.js +0 -343
- package/dist/chunks/streaming-DN1DnbRE.js.map +0 -1
- package/dist/chunks/testing-DR3eQAvY.js.map +0 -1
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
const n = {
|
|
2
|
-
backgroundLifetime: !1,
|
|
3
|
-
crossOriginIsolationHeaders: !1,
|
|
4
|
-
nonceInjection: !1,
|
|
5
|
-
sharedCache: !1,
|
|
6
|
-
staticOutput: !1,
|
|
7
|
-
streaming: !1,
|
|
8
|
-
webSocket: !1,
|
|
9
|
-
webTransport: !1
|
|
10
|
-
};
|
|
11
|
-
function c(e) {
|
|
12
|
-
return {
|
|
13
|
-
capabilities: {
|
|
14
|
-
...n,
|
|
15
|
-
...e.capabilities
|
|
16
|
-
},
|
|
17
|
-
name: e.name
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
function r(e, i) {
|
|
21
|
-
const a = [...new Set(i)], s = a.filter(
|
|
22
|
-
(t) => !e.capabilities[t]
|
|
23
|
-
);
|
|
24
|
-
return {
|
|
25
|
-
adapter: e.name,
|
|
26
|
-
missing: s,
|
|
27
|
-
ok: s.length === 0,
|
|
28
|
-
required: a
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
function o(e, i) {
|
|
32
|
-
const a = r(e, i);
|
|
33
|
-
if (!a.ok)
|
|
34
|
-
throw new Error(
|
|
35
|
-
`Adapter "${e.name}" does not support required capabilities: ${a.missing.join(", ")}.`
|
|
36
|
-
);
|
|
37
|
-
return a;
|
|
38
|
-
}
|
|
39
|
-
export {
|
|
40
|
-
o as a,
|
|
41
|
-
r as c,
|
|
42
|
-
c as d
|
|
43
|
-
};
|
|
44
|
-
//# sourceMappingURL=index-BnX9Qxbm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-BnX9Qxbm.js","sources":["../../src/adapter/index.ts"],"sourcesContent":["export type AdapterCapability =\n | \"backgroundLifetime\"\n | \"crossOriginIsolationHeaders\"\n | \"nonceInjection\"\n | \"sharedCache\"\n | \"staticOutput\"\n | \"streaming\"\n | \"webSocket\"\n | \"webTransport\";\n\nexport type AdapterCapabilityMap = Record<AdapterCapability, boolean>;\n\nexport type Adapter = {\n capabilities: AdapterCapabilityMap;\n name: string;\n};\n\nexport type AdapterDefinition = {\n capabilities?: Partial<AdapterCapabilityMap>;\n name: string;\n};\n\nexport type AdapterCapabilityCheck = {\n adapter: string;\n missing: AdapterCapability[];\n ok: boolean;\n required: AdapterCapability[];\n};\n\nconst defaultCapabilities = {\n backgroundLifetime: false,\n crossOriginIsolationHeaders: false,\n nonceInjection: false,\n sharedCache: false,\n staticOutput: false,\n streaming: false,\n webSocket: false,\n webTransport: false,\n} satisfies AdapterCapabilityMap;\n\nexport function defineAdapter(definition: AdapterDefinition): Adapter {\n return {\n capabilities: {\n ...defaultCapabilities,\n ...definition.capabilities,\n },\n name: definition.name,\n };\n}\n\nexport function checkAdapterCapabilities(\n adapter: Adapter,\n required: readonly AdapterCapability[],\n): AdapterCapabilityCheck {\n const uniqueRequired = [...new Set(required)];\n const missing = uniqueRequired.filter(\n (capability) => !adapter.capabilities[capability],\n );\n\n return {\n adapter: adapter.name,\n missing,\n ok: missing.length === 0,\n required: uniqueRequired,\n };\n}\n\nexport function assertAdapterCapabilities(\n adapter: Adapter,\n required: readonly AdapterCapability[],\n) {\n const check = checkAdapterCapabilities(adapter, required);\n\n if (!check.ok) {\n throw new Error(\n `Adapter \"${adapter.name}\" does not support required capabilities: ${check.missing.join(\", \")}.`,\n );\n }\n\n return check;\n}\n"],"names":["defaultCapabilities","defineAdapter","definition","checkAdapterCapabilities","adapter","required","uniqueRequired","missing","capability","assertAdapterCapabilities","check"],"mappings":"AA6BA,MAAMA,IAAsB;AAAA,EAC1B,oBAAoB;AAAA,EACpB,6BAA6B;AAAA,EAC7B,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,cAAc;AAAA,EACd,WAAW;AAAA,EACX,WAAW;AAAA,EACX,cAAc;AAChB;AAEO,SAASC,EAAcC,GAAwC;AACpE,SAAO;AAAA,IACL,cAAc;AAAA,MACZ,GAAGF;AAAA,MACH,GAAGE,EAAW;AAAA,IAAA;AAAA,IAEhB,MAAMA,EAAW;AAAA,EAAA;AAErB;AAEO,SAASC,EACdC,GACAC,GACwB;AACxB,QAAMC,IAAiB,CAAC,GAAG,IAAI,IAAID,CAAQ,CAAC,GACtCE,IAAUD,EAAe;AAAA,IAC7B,CAACE,MAAe,CAACJ,EAAQ,aAAaI,CAAU;AAAA,EAAA;AAGlD,SAAO;AAAA,IACL,SAASJ,EAAQ;AAAA,IACjB,SAAAG;AAAA,IACA,IAAIA,EAAQ,WAAW;AAAA,IACvB,UAAUD;AAAA,EAAA;AAEd;AAEO,SAASG,EACdL,GACAC,GACA;AACA,QAAMK,IAAQP,EAAyBC,GAASC,CAAQ;AAExD,MAAI,CAACK,EAAM;AACT,UAAM,IAAI;AAAA,MACR,YAAYN,EAAQ,IAAI,6CAA6CM,EAAM,QAAQ,KAAK,IAAI,CAAC;AAAA,IAAA;AAIjG,SAAOA;AACT;"}
|
|
@@ -1,275 +0,0 @@
|
|
|
1
|
-
import { renderToString as b } from "react-dom/server";
|
|
2
|
-
import { createElement as h } from "react";
|
|
3
|
-
const g = "__demiurge_data", E = "data-demiurge-hydrate", v = "data-demiurge-fallback";
|
|
4
|
-
function w(e, n = {}) {
|
|
5
|
-
return S(
|
|
6
|
-
JSON.stringify({ data: e, hasData: !0, ...n })
|
|
7
|
-
);
|
|
8
|
-
}
|
|
9
|
-
function F(e) {
|
|
10
|
-
const n = e.getElementById(g), t = n?.tagName === "TEMPLATE" ? n.content.textContent : n?.textContent;
|
|
11
|
-
if (t)
|
|
12
|
-
try {
|
|
13
|
-
return JSON.parse(t);
|
|
14
|
-
} catch (o) {
|
|
15
|
-
throw new Error(
|
|
16
|
-
"Demiurge could not parse the initial route data payload.",
|
|
17
|
-
{ cause: o }
|
|
18
|
-
);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
function S(e) {
|
|
22
|
-
return e.replace(/&/g, "\\u0026").replace(/</g, "\\u003c").replace(/>/g, "\\u003e").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
|
|
23
|
-
}
|
|
24
|
-
const k = "data-demiurge-structured-data";
|
|
25
|
-
function _(e) {
|
|
26
|
-
if (e.body) {
|
|
27
|
-
const { html: n, ...t } = e.body, { prefix: o, suffix: a } = x({ ...e, body: t });
|
|
28
|
-
return `${o}${n}${a}`;
|
|
29
|
-
}
|
|
30
|
-
return B(e);
|
|
31
|
-
}
|
|
32
|
-
function x({
|
|
33
|
-
body: e,
|
|
34
|
-
entrySrc: n,
|
|
35
|
-
lang: t = "en",
|
|
36
|
-
links: o = [],
|
|
37
|
-
metadata: a,
|
|
38
|
-
nonce: c,
|
|
39
|
-
scripts: s = [],
|
|
40
|
-
styles: p = [],
|
|
41
|
-
title: d = "Demiurge App"
|
|
42
|
-
}) {
|
|
43
|
-
const f = a?.title ?? d, $ = [
|
|
44
|
-
...s.map((R) => ` ${D(R, c)}`),
|
|
45
|
-
C(e.data, e.navigation),
|
|
46
|
-
...n ? [A(n, c)] : []
|
|
47
|
-
].join(`
|
|
48
|
-
`);
|
|
49
|
-
return {
|
|
50
|
-
prefix: `<!doctype html>
|
|
51
|
-
<html lang="${i(t)}">
|
|
52
|
-
<head>
|
|
53
|
-
${T({ links: o, metadata: a, nonce: c, styles: p, title: f })}
|
|
54
|
-
</head>
|
|
55
|
-
<body>
|
|
56
|
-
${O(e)}`,
|
|
57
|
-
suffix: `</div>
|
|
58
|
-
${$}
|
|
59
|
-
</body>
|
|
60
|
-
</html>
|
|
61
|
-
`
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
function B({
|
|
65
|
-
entrySrc: e,
|
|
66
|
-
lang: n = "en",
|
|
67
|
-
links: t = [],
|
|
68
|
-
metadata: o,
|
|
69
|
-
nonce: a,
|
|
70
|
-
scripts: c = [],
|
|
71
|
-
styles: s = [],
|
|
72
|
-
title: p = "Demiurge App"
|
|
73
|
-
}) {
|
|
74
|
-
const d = o?.title ?? p, f = [
|
|
75
|
-
I(),
|
|
76
|
-
...c.map(($) => ` ${D($, a)}`),
|
|
77
|
-
...e ? [A(e, a)] : []
|
|
78
|
-
].join(`
|
|
79
|
-
`);
|
|
80
|
-
return `<!doctype html>
|
|
81
|
-
<html lang="${i(n)}">
|
|
82
|
-
<head>
|
|
83
|
-
${T({ links: t, metadata: o, nonce: a, styles: s, title: d })}
|
|
84
|
-
</head>
|
|
85
|
-
<body>
|
|
86
|
-
${f}
|
|
87
|
-
</body>
|
|
88
|
-
</html>
|
|
89
|
-
`;
|
|
90
|
-
}
|
|
91
|
-
function I(e) {
|
|
92
|
-
return ' <div id="root"></div>';
|
|
93
|
-
}
|
|
94
|
-
function O(e) {
|
|
95
|
-
const n = e.fallback ? ` ${v}="${i(e.fallback)}"` : "";
|
|
96
|
-
return ` <div id="root" ${E}=""${n}>`;
|
|
97
|
-
}
|
|
98
|
-
function C(e, n) {
|
|
99
|
-
return ` <template id="${g}">${w(e, { navigation: n })}</template>`;
|
|
100
|
-
}
|
|
101
|
-
function A(e, n) {
|
|
102
|
-
return ` <script type="module" src="${i(e)}"${r("nonce", n)}><\/script>`;
|
|
103
|
-
}
|
|
104
|
-
function T({
|
|
105
|
-
links: e,
|
|
106
|
-
metadata: n,
|
|
107
|
-
nonce: t,
|
|
108
|
-
styles: o,
|
|
109
|
-
title: a
|
|
110
|
-
}) {
|
|
111
|
-
return [
|
|
112
|
-
l({
|
|
113
|
-
content: n?.charset ?? "UTF-8",
|
|
114
|
-
name: "charset"
|
|
115
|
-
}),
|
|
116
|
-
l({
|
|
117
|
-
content: n?.viewport ?? "width=device-width, initial-scale=1.0",
|
|
118
|
-
name: "viewport"
|
|
119
|
-
}),
|
|
120
|
-
` <title>${i(a)}</title>`,
|
|
121
|
-
...n?.description ? [
|
|
122
|
-
l({
|
|
123
|
-
content: n.description,
|
|
124
|
-
name: "description"
|
|
125
|
-
})
|
|
126
|
-
] : [],
|
|
127
|
-
...n?.canonical ? [
|
|
128
|
-
y({
|
|
129
|
-
href: n.canonical,
|
|
130
|
-
rel: "canonical"
|
|
131
|
-
})
|
|
132
|
-
] : [],
|
|
133
|
-
...M(n),
|
|
134
|
-
...G(n),
|
|
135
|
-
...(n?.custom ?? []).map(N),
|
|
136
|
-
...(n?.structuredData ?? []).map(
|
|
137
|
-
(c) => H(c, t)
|
|
138
|
-
),
|
|
139
|
-
...o.map(
|
|
140
|
-
(c) => ` <link rel="stylesheet" href="${i(c)}" />`
|
|
141
|
-
),
|
|
142
|
-
...e.map(y)
|
|
143
|
-
].join(`
|
|
144
|
-
`);
|
|
145
|
-
}
|
|
146
|
-
function M(e) {
|
|
147
|
-
if (!e?.robots)
|
|
148
|
-
return [];
|
|
149
|
-
const n = [
|
|
150
|
-
e.robots.index === !1 ? "noindex" : "index",
|
|
151
|
-
e.robots.follow === !1 ? "nofollow" : "follow"
|
|
152
|
-
];
|
|
153
|
-
return [
|
|
154
|
-
l({
|
|
155
|
-
content: n.join(", "),
|
|
156
|
-
name: "robots"
|
|
157
|
-
})
|
|
158
|
-
];
|
|
159
|
-
}
|
|
160
|
-
function G(e) {
|
|
161
|
-
return e?.openGraph ? [
|
|
162
|
-
e.openGraph.title ? l({
|
|
163
|
-
content: e.openGraph.title,
|
|
164
|
-
property: "og:title"
|
|
165
|
-
}) : null,
|
|
166
|
-
e.openGraph.description ? l({
|
|
167
|
-
content: e.openGraph.description,
|
|
168
|
-
property: "og:description"
|
|
169
|
-
}) : null,
|
|
170
|
-
e.openGraph.image ? l({
|
|
171
|
-
content: e.openGraph.image,
|
|
172
|
-
property: "og:image"
|
|
173
|
-
}) : null
|
|
174
|
-
].filter((n) => !!n) : [];
|
|
175
|
-
}
|
|
176
|
-
function N(e) {
|
|
177
|
-
return e.kind === "link" ? y(e) : l(e);
|
|
178
|
-
}
|
|
179
|
-
function H(e, n) {
|
|
180
|
-
return ` <script type="application/ld+json"${n ? "" : ` ${k}`}${r("nonce", n)}>${U(JSON.stringify(e.value))}<\/script>`;
|
|
181
|
-
}
|
|
182
|
-
function l(e) {
|
|
183
|
-
if (e.name === "charset")
|
|
184
|
-
return ` <meta charset="${i(e.content)}" />`;
|
|
185
|
-
const n = e.name ? ` name="${i(e.name)}"` : "", t = e.property ? ` property="${i(e.property)}"` : "";
|
|
186
|
-
return ` <meta${n}${t} content="${i(e.content)}" />`;
|
|
187
|
-
}
|
|
188
|
-
function y(e) {
|
|
189
|
-
return ` <link${r("rel", e.rel)}${r("href", e.href)}${r("as", e.as)}${r("type", e.type)}${r("crossorigin", e.crossOrigin)}${r("hreflang", e.hrefLang)} />`;
|
|
190
|
-
}
|
|
191
|
-
function D(e, n) {
|
|
192
|
-
return `<script${r("id", e.id)}${r("src", e.src)}${r("type", e.type ?? L(e.strategy))}${r("nonce", e.nonce ?? n)}${r("integrity", e.integrity)}${r("referrerpolicy", e.referrerPolicy)}${r("data-api", e.dataApi)}${r("data-domain", e.dataDomain)}${m("async", e.async)}${m("defer", e.defer)}><\/script>`;
|
|
193
|
-
}
|
|
194
|
-
function L(e) {
|
|
195
|
-
return e === "module" ? "module" : void 0;
|
|
196
|
-
}
|
|
197
|
-
function r(e, n) {
|
|
198
|
-
return n ? ` ${e}="${i(n)}"` : "";
|
|
199
|
-
}
|
|
200
|
-
function m(e, n) {
|
|
201
|
-
return n ? ` ${e}` : "";
|
|
202
|
-
}
|
|
203
|
-
function i(e) {
|
|
204
|
-
return e.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll('"', """);
|
|
205
|
-
}
|
|
206
|
-
function U(e) {
|
|
207
|
-
return e.replaceAll("<", "\\u003c").replaceAll(">", "\\u003e").replaceAll("\u2028", "\\u2028").replaceAll("\u2029", "\\u2029");
|
|
208
|
-
}
|
|
209
|
-
const u = /* @__PURE__ */ new WeakMap();
|
|
210
|
-
function Y(e) {
|
|
211
|
-
return u.get(e);
|
|
212
|
-
}
|
|
213
|
-
function z(e, n) {
|
|
214
|
-
u.set(e, n);
|
|
215
|
-
}
|
|
216
|
-
function W(e, n) {
|
|
217
|
-
const t = u.get(e);
|
|
218
|
-
t && u.set(n, t);
|
|
219
|
-
}
|
|
220
|
-
function j(e) {
|
|
221
|
-
const n = h(e.page, {
|
|
222
|
-
data: e.data,
|
|
223
|
-
path: e.path,
|
|
224
|
-
pathname: e.pathname
|
|
225
|
-
});
|
|
226
|
-
return e.layouts.reduceRight(
|
|
227
|
-
(t, o) => h(o, {
|
|
228
|
-
children: t,
|
|
229
|
-
path: e.path,
|
|
230
|
-
pathname: e.pathname
|
|
231
|
-
}),
|
|
232
|
-
n
|
|
233
|
-
);
|
|
234
|
-
}
|
|
235
|
-
function J(e, n = {}) {
|
|
236
|
-
const t = b(j(e));
|
|
237
|
-
return _({
|
|
238
|
-
body: {
|
|
239
|
-
data: e.data,
|
|
240
|
-
html: t,
|
|
241
|
-
navigation: e.render.mode === "static" ? "document" : n.navigation
|
|
242
|
-
},
|
|
243
|
-
entrySrc: n.clientEntry,
|
|
244
|
-
lang: n.lang,
|
|
245
|
-
links: e.links,
|
|
246
|
-
metadata: e.metadata,
|
|
247
|
-
nonce: n.nonce,
|
|
248
|
-
scripts: e.scripts,
|
|
249
|
-
styles: n.styles,
|
|
250
|
-
title: n.title
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
function K(e, n = {}) {
|
|
254
|
-
const t = J(e, n);
|
|
255
|
-
return new Response(t, {
|
|
256
|
-
headers: {
|
|
257
|
-
"content-type": "text/html; charset=utf-8"
|
|
258
|
-
}
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
export {
|
|
262
|
-
E as H,
|
|
263
|
-
k as S,
|
|
264
|
-
x as a,
|
|
265
|
-
_ as b,
|
|
266
|
-
j as c,
|
|
267
|
-
J as d,
|
|
268
|
-
F as e,
|
|
269
|
-
v as f,
|
|
270
|
-
Y as g,
|
|
271
|
-
W as h,
|
|
272
|
-
K as r,
|
|
273
|
-
z as s
|
|
274
|
-
};
|
|
275
|
-
//# sourceMappingURL=ssr-BJejKlkZ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ssr-BJejKlkZ.js","sources":["../../src/document/hydration.ts","../../src/document/render.ts","../../src/server/request-metadata.ts","../../src/server/render-tree.ts","../../src/server/ssr.ts"],"sourcesContent":["export type InitialRouteData = {\n data?: unknown;\n hasData: boolean;\n navigation?: \"document\";\n};\n\nexport const HYDRATION_DATA_ELEMENT_ID = \"__demiurge_data\";\nexport const HYDRATION_ROOT_ATTRIBUTE = \"data-demiurge-hydrate\";\n// Marks a server document as a fallback, not a page. The client hydrates markup\n// that it can reproduce. It replaces other markup. This attribute distinguishes\n// a server 404 from a page that does not match the client manifest.\nexport const HYDRATION_FALLBACK_ATTRIBUTE = \"data-demiurge-fallback\";\n\nexport function serializeInitialRouteData(\n data: unknown,\n options: { navigation?: \"document\" } = {},\n) {\n return escapeJsonScript(\n JSON.stringify({ data, hasData: true, ...options }),\n );\n}\n\nexport function readInitialRouteData(source: Document) {\n const element = source.getElementById(HYDRATION_DATA_ELEMENT_ID);\n const serialized = element?.tagName === \"TEMPLATE\"\n ? (element as HTMLTemplateElement).content.textContent\n : element?.textContent;\n\n if (!serialized) {\n return undefined;\n }\n\n try {\n return JSON.parse(serialized) as InitialRouteData;\n } catch (error) {\n throw new Error(\n \"Demiurge could not parse the initial route data payload.\",\n { cause: error },\n );\n }\n}\n\nfunction escapeJsonScript(value: string) {\n return value\n .replace(/&/g, \"\\\\u0026\")\n .replace(/</g, \"\\\\u003c\")\n .replace(/>/g, \"\\\\u003e\")\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\");\n}\n","import {\n HYDRATION_DATA_ELEMENT_ID,\n HYDRATION_FALLBACK_ATTRIBUTE,\n HYDRATION_ROOT_ATTRIBUTE,\n serializeInitialRouteData,\n} from \"./hydration\";\nimport type {\n DocumentMetadataTag,\n LinkTag,\n ResolvedMetadata,\n StructuredDataTag,\n} from \"./metadata\";\nimport type { ScriptTag } from \"./scripts\";\n\nexport const STRUCTURED_DATA_ATTRIBUTE = \"data-demiurge-structured-data\";\n\nexport type DocumentBody = {\n data: unknown;\n fallback?: \"not-found\";\n html: string;\n navigation?: \"document\";\n};\n\nexport type RenderDocumentOptions = {\n body?: DocumentBody;\n entrySrc?: string;\n lang?: string;\n links?: LinkTag[];\n metadata?: ResolvedMetadata;\n nonce?: string;\n scripts?: ScriptTag[];\n styles?: string[];\n title?: string;\n};\n\nexport type RenderDocumentShellOptions = Omit<RenderDocumentOptions, \"body\"> & {\n body: Omit<DocumentBody, \"html\">;\n};\n\nexport function renderDocument(options: RenderDocumentOptions) {\n if (options.body) {\n const { html, ...body } = options.body;\n const { prefix, suffix } = renderDocumentShell({ ...options, body });\n\n return `${prefix}${html}${suffix}`;\n }\n\n return renderDocumentWithoutBody(options);\n}\n\nexport function renderDocumentShell({\n body,\n entrySrc,\n lang = \"en\",\n links = [],\n metadata,\n nonce,\n scripts = [],\n styles = [],\n title = \"Demiurge App\",\n}: RenderDocumentShellOptions) {\n const documentTitle = metadata?.title ?? title;\n const trailingBodyContent = [\n ...scripts.map((scriptTag) => ` ${renderScriptTag(scriptTag, nonce)}`),\n renderBootstrapData(body.data, body.navigation),\n ...(entrySrc ? [renderEntryScript(entrySrc, nonce)] : []),\n ].join(\"\\n\");\n\n return {\n prefix: `<!doctype html>\n<html lang=\"${escapeHtml(lang)}\">\n <head>\n${renderHeadTags({ links, metadata, nonce, styles, title: documentTitle })}\n </head>\n <body>\n${renderRootStart(body)}`,\n suffix: `</div>\n${trailingBodyContent}\n </body>\n</html>\n`,\n };\n}\n\nfunction renderDocumentWithoutBody({\n entrySrc,\n lang = \"en\",\n links = [],\n metadata,\n nonce,\n scripts = [],\n styles = [],\n title = \"Demiurge App\",\n}: RenderDocumentOptions) {\n const documentTitle = metadata?.title ?? title;\n const bodyContent = [\n renderRootElement(),\n ...scripts.map((scriptTag) => ` ${renderScriptTag(scriptTag, nonce)}`),\n ...(entrySrc ? [renderEntryScript(entrySrc, nonce)] : []),\n ].join(\"\\n\");\n\n return `<!doctype html>\n<html lang=\"${escapeHtml(lang)}\">\n <head>\n${renderHeadTags({ links, metadata, nonce, styles, title: documentTitle })}\n </head>\n <body>\n${bodyContent}\n </body>\n</html>\n`;\n}\n\nfunction renderRootElement(body?: DocumentBody) {\n if (!body) {\n return ` <div id=\"root\"></div>`;\n }\n\n return `${renderRootStart(body)}${body.html}</div>`;\n}\n\nfunction renderRootStart(body: Omit<DocumentBody, \"html\">) {\n const fallback = body.fallback\n ? ` ${HYDRATION_FALLBACK_ATTRIBUTE}=\"${escapeHtml(body.fallback)}\"`\n : \"\";\n\n return ` <div id=\"root\" ${HYDRATION_ROOT_ATTRIBUTE}=\"\"${fallback}>`;\n}\n\nfunction renderBootstrapData(data: unknown, navigation?: \"document\") {\n return ` <template id=\"${HYDRATION_DATA_ELEMENT_ID}\">${serializeInitialRouteData(data, { navigation })}</template>`;\n}\n\nfunction renderEntryScript(entrySrc: string, nonce: string | undefined) {\n return ` <script type=\"module\" src=\"${escapeHtml(entrySrc)}\"${renderAttribute(\"nonce\", nonce)}></script>`;\n}\n\nfunction renderHeadTags({\n links,\n metadata,\n nonce,\n styles,\n title,\n}: {\n links: LinkTag[];\n metadata: ResolvedMetadata | undefined;\n nonce: string | undefined;\n styles: string[];\n title: string;\n}) {\n return [\n renderMetaTag({\n content: metadata?.charset ?? \"UTF-8\",\n kind: \"meta\",\n name: \"charset\",\n }),\n renderMetaTag({\n content: metadata?.viewport ?? \"width=device-width, initial-scale=1.0\",\n kind: \"meta\",\n name: \"viewport\",\n }),\n ` <title>${escapeHtml(title)}</title>`,\n ...(metadata?.description\n ? [\n renderMetaTag({\n content: metadata.description,\n kind: \"meta\",\n name: \"description\",\n }),\n ]\n : []),\n ...(metadata?.canonical\n ? [\n renderLinkTag({\n href: metadata.canonical,\n kind: \"link\",\n rel: \"canonical\",\n }),\n ]\n : []),\n ...renderRobotsTags(metadata),\n ...renderOpenGraphTags(metadata),\n ...(metadata?.custom ?? []).map(renderDocumentMetadataTag),\n ...(metadata?.structuredData ?? []).map((tag) =>\n renderStructuredDataTag(tag, nonce),\n ),\n ...styles.map(\n (href) => ` <link rel=\"stylesheet\" href=\"${escapeHtml(href)}\" />`,\n ),\n ...links.map(renderLinkTag),\n ].join(\"\\n\");\n}\n\nfunction renderRobotsTags(metadata: ResolvedMetadata | undefined) {\n if (!metadata?.robots) {\n return [];\n }\n\n const directives = [\n metadata.robots.index === false ? \"noindex\" : \"index\",\n metadata.robots.follow === false ? \"nofollow\" : \"follow\",\n ];\n\n return [\n renderMetaTag({\n content: directives.join(\", \"),\n kind: \"meta\",\n name: \"robots\",\n }),\n ];\n}\n\nfunction renderOpenGraphTags(metadata: ResolvedMetadata | undefined) {\n if (!metadata?.openGraph) {\n return [];\n }\n\n return [\n metadata.openGraph.title\n ? renderMetaTag({\n content: metadata.openGraph.title,\n kind: \"meta\",\n property: \"og:title\",\n })\n : null,\n metadata.openGraph.description\n ? renderMetaTag({\n content: metadata.openGraph.description,\n kind: \"meta\",\n property: \"og:description\",\n })\n : null,\n metadata.openGraph.image\n ? renderMetaTag({\n content: metadata.openGraph.image,\n kind: \"meta\",\n property: \"og:image\",\n })\n : null,\n ].filter((tag): tag is string => Boolean(tag));\n}\n\nfunction renderDocumentMetadataTag(tag: DocumentMetadataTag) {\n if (tag.kind === \"link\") {\n return renderLinkTag(tag);\n }\n\n return renderMetaTag(tag);\n}\n\nfunction renderStructuredDataTag(\n tag: StructuredDataTag,\n nonce: string | undefined,\n) {\n const ownership = nonce ? \"\" : ` ${STRUCTURED_DATA_ATTRIBUTE}`;\n\n return ` <script type=\"application/ld+json\"${ownership}${renderAttribute(\"nonce\", nonce)}>${escapeJsonScript(JSON.stringify(tag.value))}</script>`;\n}\n\nfunction renderMetaTag(tag: DocumentMetadataTag & { kind: \"meta\" }) {\n if (tag.name === \"charset\") {\n return ` <meta charset=\"${escapeHtml(tag.content)}\" />`;\n }\n\n const name = tag.name ? ` name=\"${escapeHtml(tag.name)}\"` : \"\";\n const property = tag.property ? ` property=\"${escapeHtml(tag.property)}\"` : \"\";\n\n return ` <meta${name}${property} content=\"${escapeHtml(tag.content)}\" />`;\n}\n\nfunction renderLinkTag(tag: LinkTag) {\n return ` <link${renderAttribute(\"rel\", tag.rel)}${renderAttribute(\"href\", tag.href)}${renderAttribute(\"as\", tag.as)}${renderAttribute(\"type\", tag.type)}${renderAttribute(\"crossorigin\", tag.crossOrigin)}${renderAttribute(\"hreflang\", tag.hrefLang)} />`;\n}\n\nfunction renderScriptTag(scriptTag: ScriptTag, nonce: string | undefined) {\n return `<script${renderAttribute(\"id\", scriptTag.id)}${renderAttribute(\"src\", scriptTag.src)}${renderAttribute(\"type\", scriptTag.type ?? scriptTypeForStrategy(scriptTag.strategy))}${renderAttribute(\"nonce\", scriptTag.nonce ?? nonce)}${renderAttribute(\"integrity\", scriptTag.integrity)}${renderAttribute(\"referrerpolicy\", scriptTag.referrerPolicy)}${renderAttribute(\"data-api\", scriptTag.dataApi)}${renderAttribute(\"data-domain\", scriptTag.dataDomain)}${renderBooleanAttribute(\"async\", scriptTag.async)}${renderBooleanAttribute(\"defer\", scriptTag.defer)}></script>`;\n}\n\nfunction scriptTypeForStrategy(strategy: ScriptTag[\"strategy\"]) {\n return strategy === \"module\" ? \"module\" : undefined;\n}\n\nfunction renderAttribute(name: string, value: string | undefined) {\n return value ? ` ${name}=\"${escapeHtml(value)}\"` : \"\";\n}\n\nfunction renderBooleanAttribute(name: string, value: boolean | undefined) {\n return value ? ` ${name}` : \"\";\n}\n\nfunction escapeHtml(value: string) {\n return value\n .replaceAll(\"&\", \"&\")\n .replaceAll(\"<\", \"<\")\n .replaceAll(\">\", \">\")\n .replaceAll('\"', \""\");\n}\n\nfunction escapeJsonScript(value: string) {\n return value\n .replaceAll(\"<\", \"\\\\u003c\")\n .replaceAll(\">\", \"\\\\u003e\")\n .replaceAll(\"
\", \"\\\\u2028\")\n .replaceAll(\"
\", \"\\\\u2029\");\n}\n","export type RequestConnectionMetadata = {\n clientIp: string;\n};\n\nconst connectionMetadata = new WeakMap<Request, RequestConnectionMetadata>();\n\nexport function getRequestConnectionMetadata(request: Request) {\n return connectionMetadata.get(request);\n}\n\nexport function setRequestConnectionMetadata(\n request: Request,\n metadata: RequestConnectionMetadata,\n) {\n connectionMetadata.set(request, metadata);\n}\n\nexport function copyRequestConnectionMetadata(from: Request, to: Request) {\n const metadata = connectionMetadata.get(from);\n\n if (metadata) {\n connectionMetadata.set(to, metadata);\n }\n}\n","import { createElement, type ReactNode } from \"react\";\nimport type { LoadedRouteMatch } from \"../router\";\n\nexport function createPageRenderTree(match: LoadedRouteMatch) {\n const page = createElement(match.page, {\n data: match.data,\n path: match.path,\n pathname: match.pathname,\n });\n\n return match.layouts.reduceRight<ReactNode>(\n (children, Layout) =>\n createElement(Layout, {\n children,\n path: match.path,\n pathname: match.pathname,\n }),\n page,\n );\n}\n","import { renderToString } from \"react-dom/server\";\nimport { renderDocument } from \"../document\";\nimport type { LoadedRouteMatch } from \"../router\";\nimport { createPageRenderTree } from \"./render-tree\";\n\nexport type SsrOptions = {\n clientEntry?: string;\n lang?: string;\n navigation?: \"document\";\n styles?: string[];\n title?: string;\n};\n\nexport type SsrRenderOptions = SsrOptions & {\n nonce?: string;\n onStreamError?: (error: unknown) => void;\n signal?: AbortSignal;\n transformDocument?: (html: string) => string | Promise<string>;\n};\n\nexport function renderPageDocument(\n match: LoadedRouteMatch,\n options: SsrRenderOptions = {},\n) {\n const html = renderToString(createPageRenderTree(match));\n\n return renderDocument({\n body: {\n data: match.data,\n html,\n navigation: match.render.mode === \"static\"\n ? \"document\"\n : options.navigation,\n },\n entrySrc: options.clientEntry,\n lang: options.lang,\n links: match.links,\n metadata: match.metadata,\n nonce: options.nonce,\n scripts: match.scripts,\n styles: options.styles,\n title: options.title,\n });\n}\n\nexport function renderPageResponse(\n match: LoadedRouteMatch,\n options: SsrRenderOptions = {},\n) {\n const html = renderPageDocument(match, options);\n\n return new Response(html, {\n headers: {\n \"content-type\": \"text/html; charset=utf-8\",\n },\n });\n}\n"],"names":["HYDRATION_DATA_ELEMENT_ID","HYDRATION_ROOT_ATTRIBUTE","HYDRATION_FALLBACK_ATTRIBUTE","serializeInitialRouteData","data","options","escapeJsonScript","readInitialRouteData","source","element","serialized","error","value","STRUCTURED_DATA_ATTRIBUTE","renderDocument","html","body","prefix","suffix","renderDocumentShell","renderDocumentWithoutBody","entrySrc","lang","links","metadata","nonce","scripts","styles","title","documentTitle","trailingBodyContent","scriptTag","renderScriptTag","renderBootstrapData","renderEntryScript","escapeHtml","renderHeadTags","renderRootStart","bodyContent","renderRootElement","fallback","navigation","renderAttribute","renderMetaTag","renderLinkTag","renderRobotsTags","renderOpenGraphTags","renderDocumentMetadataTag","tag","renderStructuredDataTag","href","directives","name","property","scriptTypeForStrategy","renderBooleanAttribute","strategy","connectionMetadata","getRequestConnectionMetadata","request","setRequestConnectionMetadata","copyRequestConnectionMetadata","from","to","createPageRenderTree","match","page","createElement","children","Layout","renderPageDocument","renderToString","renderPageResponse"],"mappings":"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"}
|