@trebired/frontend 6.4.0 → 6.6.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 +12 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/server/assets.d.ts +28 -0
- package/dist/server/assets.d.ts.map +1 -0
- package/dist/server/assets.js +157 -0
- package/dist/server/assets.js.map +1 -0
- package/dist/server/index.d.ts +6 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +6 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/locale.d.ts +22 -0
- package/dist/server/locale.d.ts.map +1 -0
- package/dist/server/locale.js +74 -0
- package/dist/server/locale.js.map +1 -0
- package/dist/server/page-task.d.ts +36 -0
- package/dist/server/page-task.d.ts.map +1 -0
- package/dist/server/page-task.js +91 -0
- package/dist/server/page-task.js.map +1 -0
- package/dist/server/react/document.d.ts +29 -0
- package/dist/server/react/document.d.ts.map +1 -0
- package/dist/server/react/document.js +123 -0
- package/dist/server/react/document.js.map +1 -0
- package/dist/server/react/render.d.ts +14 -0
- package/dist/server/react/render.d.ts.map +1 -0
- package/dist/server/react/render.js +60 -0
- package/dist/server/react/render.js.map +1 -0
- package/dist/server/react/shell.d.ts +7 -0
- package/dist/server/react/shell.d.ts.map +1 -0
- package/dist/server/react/shell.js +49 -0
- package/dist/server/react/shell.js.map +1 -0
- package/dist/server/react/types.d.ts +71 -0
- package/dist/server/react/types.d.ts.map +1 -0
- package/dist/server/react/types.js +2 -0
- package/dist/server/react/types.js.map +1 -0
- package/dist/server/render-mode.d.ts +82 -0
- package/dist/server/render-mode.d.ts.map +1 -0
- package/dist/server/render-mode.js +215 -0
- package/dist/server/render-mode.js.map +1 -0
- package/dist/server/security.d.ts +17 -0
- package/dist/server/security.d.ts.map +1 -0
- package/dist/server/security.js +38 -0
- package/dist/server/security.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/server/assets.d.ts +28 -0
- package/dist/src/server/assets.d.ts.map +1 -0
- package/dist/src/server/assets.js +157 -0
- package/dist/src/server/assets.js.map +1 -0
- package/dist/src/server/index.d.ts +6 -0
- package/dist/src/server/index.d.ts.map +1 -1
- package/dist/src/server/index.js +6 -0
- package/dist/src/server/index.js.map +1 -1
- package/dist/src/server/locale.d.ts +22 -0
- package/dist/src/server/locale.d.ts.map +1 -0
- package/dist/src/server/locale.js +74 -0
- package/dist/src/server/locale.js.map +1 -0
- package/dist/src/server/page-task.d.ts +36 -0
- package/dist/src/server/page-task.d.ts.map +1 -0
- package/dist/src/server/page-task.js +91 -0
- package/dist/src/server/page-task.js.map +1 -0
- package/dist/src/server/react/document.d.ts +29 -0
- package/dist/src/server/react/document.d.ts.map +1 -0
- package/dist/src/server/react/document.js +123 -0
- package/dist/src/server/react/document.js.map +1 -0
- package/dist/src/server/react/render.d.ts +14 -0
- package/dist/src/server/react/render.d.ts.map +1 -0
- package/dist/src/server/react/render.js +60 -0
- package/dist/src/server/react/render.js.map +1 -0
- package/dist/src/server/react/shell.d.ts +7 -0
- package/dist/src/server/react/shell.d.ts.map +1 -0
- package/dist/src/server/react/shell.js +49 -0
- package/dist/src/server/react/shell.js.map +1 -0
- package/dist/src/server/react/types.d.ts +71 -0
- package/dist/src/server/react/types.d.ts.map +1 -0
- package/dist/src/server/react/types.js +2 -0
- package/dist/src/server/react/types.js.map +1 -0
- package/dist/src/server/render-mode.d.ts +82 -0
- package/dist/src/server/render-mode.d.ts.map +1 -0
- package/dist/src/server/render-mode.js +215 -0
- package/dist/src/server/render-mode.js.map +1 -0
- package/dist/src/server/security.d.ts +17 -0
- package/dist/src/server/security.d.ts.map +1 -0
- package/dist/src/server/security.js +38 -0
- package/dist/src/server/security.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { escapeHtml, toText } from "../../components/index.js";
|
|
2
|
+
import { serverObject, } from "../http.js";
|
|
3
|
+
import { buildReactRenderShell } from "./shell.js";
|
|
4
|
+
function defaultNormalizePageId(pageId) {
|
|
5
|
+
const normalized = toText(pageId)
|
|
6
|
+
.replace(/\\/g, "/")
|
|
7
|
+
.replace(/^\/+|\/+$/g, "");
|
|
8
|
+
if (!normalized)
|
|
9
|
+
return "";
|
|
10
|
+
const parts = normalized.split("/").filter(Boolean);
|
|
11
|
+
for (const part of parts) {
|
|
12
|
+
if (!part || part === "." || part === "..") {
|
|
13
|
+
throw new Error(`Invalid React page id: ${toText(pageId)}`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return parts.join("/");
|
|
17
|
+
}
|
|
18
|
+
function applyScriptNonce(html, nonce) {
|
|
19
|
+
const nextNonce = toText(nonce);
|
|
20
|
+
if (!nextNonce)
|
|
21
|
+
return String(html || "");
|
|
22
|
+
const escaped = escapeHtml(nextNonce);
|
|
23
|
+
return String(html || "").replace(/<script\b(?![^>]*\bnonce\s*=)([^>]*)>/gi, (_match, attrs) => `<script nonce="${escaped}"${String(attrs || "")}>`);
|
|
24
|
+
}
|
|
25
|
+
function countHtmlTags(html, tagName) {
|
|
26
|
+
const normalizedTag = toText(tagName).toLowerCase();
|
|
27
|
+
if (!normalizedTag)
|
|
28
|
+
return 0;
|
|
29
|
+
return String(html || "").match(new RegExp(`<${normalizedTag}\\b`, "gi"))?.length || 0;
|
|
30
|
+
}
|
|
31
|
+
function readResponseRequestRoute(res) {
|
|
32
|
+
const request = res?.req || null;
|
|
33
|
+
return toText(request?.originalUrl || request?.url || request?.path, "/");
|
|
34
|
+
}
|
|
35
|
+
function documentEntries(pageId, componentId, normalizePageId) {
|
|
36
|
+
const normalizedPageId = normalizePageId(pageId);
|
|
37
|
+
const normalizedComponentId = normalizePageId(componentId);
|
|
38
|
+
return {
|
|
39
|
+
componentId: normalizedComponentId,
|
|
40
|
+
entryIds: normalizedComponentId !== normalizedPageId
|
|
41
|
+
? [normalizedPageId, normalizedComponentId]
|
|
42
|
+
: [normalizedPageId],
|
|
43
|
+
pageId: normalizedPageId,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function fallbackPageTitle(pageId) {
|
|
47
|
+
return (pageId
|
|
48
|
+
.split("/")
|
|
49
|
+
.filter(Boolean)
|
|
50
|
+
.pop()
|
|
51
|
+
?.replace(/[-_]+/g, " ") || "Page");
|
|
52
|
+
}
|
|
53
|
+
function pageTitleForContext(context, options) {
|
|
54
|
+
return (toText(context.seo.title) ||
|
|
55
|
+
toText(options.resolvePageTitle?.(context)) ||
|
|
56
|
+
fallbackPageTitle(context.pageId));
|
|
57
|
+
}
|
|
58
|
+
function buildDocumentContext(res, pageId, componentId, props, options, shellInput) {
|
|
59
|
+
const normalize = options.normalizePageId || defaultNormalizePageId;
|
|
60
|
+
const entries = documentEntries(pageId, componentId, normalize);
|
|
61
|
+
const shell = buildReactRenderShell(res, props, options, shellInput);
|
|
62
|
+
const links = options.buildAssetLinks(entries.entryIds);
|
|
63
|
+
const context = {
|
|
64
|
+
...entries,
|
|
65
|
+
currentUrl: readResponseRequestRoute(res),
|
|
66
|
+
cssLinks: toText(links.cssLinks),
|
|
67
|
+
fontPreloadLinks: toText(links.fontPreloadLinks),
|
|
68
|
+
jsLinks: toText(links.jsLinks),
|
|
69
|
+
locale: serverObject(shell.locale),
|
|
70
|
+
pageTitle: "",
|
|
71
|
+
security: serverObject(shell.security),
|
|
72
|
+
seo: serverObject(shell.seo),
|
|
73
|
+
shell,
|
|
74
|
+
ui: serverObject(shell.ui),
|
|
75
|
+
};
|
|
76
|
+
context.pageTitle = pageTitleForContext(context, options);
|
|
77
|
+
return context;
|
|
78
|
+
}
|
|
79
|
+
function documentTitleForContext(context, options) {
|
|
80
|
+
return toText(options.resolveTitle?.(context), context.pageTitle);
|
|
81
|
+
}
|
|
82
|
+
function faviconHrefForContext(context, options) {
|
|
83
|
+
return typeof options.faviconHref === "function"
|
|
84
|
+
? options.faviconHref(context)
|
|
85
|
+
: toText(options.faviconHref, "/favicon.svg");
|
|
86
|
+
}
|
|
87
|
+
function rootDocumentProps(body, context, options) {
|
|
88
|
+
return {
|
|
89
|
+
body,
|
|
90
|
+
cssLinks: context.cssLinks,
|
|
91
|
+
csrfToken: toText(context.security.csrfToken),
|
|
92
|
+
currentUrl: context.currentUrl,
|
|
93
|
+
faviconHref: faviconHrefForContext(context, options),
|
|
94
|
+
fontPreloadLinks: context.fontPreloadLinks,
|
|
95
|
+
jsLinks: context.jsLinks,
|
|
96
|
+
lang: toText(context.shell.lang || context.locale.effective, options.defaultLang || "en"),
|
|
97
|
+
nonce: toText(context.shell.nonce),
|
|
98
|
+
pageId: context.pageId,
|
|
99
|
+
pageTitle: context.pageTitle,
|
|
100
|
+
seo: context.seo,
|
|
101
|
+
shell: context.shell,
|
|
102
|
+
theme: toText(context.shell.theme),
|
|
103
|
+
themeKey: toText(context.shell.theme || context.ui.theme, options.defaultTheme || "dark"),
|
|
104
|
+
title: documentTitleForContext(context, options),
|
|
105
|
+
viewerId: toText(context.shell.viewer?.id),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
function logDocumentStart(context, res, options) {
|
|
109
|
+
options.log?.info?.("rendering react document", {
|
|
110
|
+
component_id: context.componentId,
|
|
111
|
+
css_link_count: countHtmlTags(context.cssLinks, "link"),
|
|
112
|
+
js_link_count: countHtmlTags(context.jsLinks, "script"),
|
|
113
|
+
locale: toText(context.locale.effective),
|
|
114
|
+
method: toText(res?.req?.method),
|
|
115
|
+
page_id: context.pageId,
|
|
116
|
+
route: context.currentUrl,
|
|
117
|
+
status: Number(res?.statusCode) || 200,
|
|
118
|
+
theme: toText(context.shell.theme || context.ui.theme),
|
|
119
|
+
viewer_id: toText(context.shell.viewer?.id),
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
export { applyScriptNonce, buildDocumentContext, countHtmlTags, defaultNormalizePageId, logDocumentStart, readResponseRequestRoute, rootDocumentProps, };
|
|
123
|
+
//# sourceMappingURL=document.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../../../src/server/react/document.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { defaultNormalizePageId } from "./document.d.ts";
|
|
2
|
+
import { buildReactRenderShell } from "./shell.d.ts";
|
|
3
|
+
import type { FrontendReactRendererOptions, FrontendRenderShell, RenderReactPageOptions } from "./types.d.ts";
|
|
4
|
+
import type { ServerResponseLike } from "../http.d.ts";
|
|
5
|
+
declare function sendDocument(res: ServerResponseLike, pageId: string, body: unknown, componentId: string, props: Record<string, unknown>, options: FrontendReactRendererOptions, shellInput?: FrontendRenderShell): unknown;
|
|
6
|
+
declare function renderPage(res: ServerResponseLike, pageId: string, propsInput: Record<string, unknown>, options: FrontendReactRendererOptions, renderOptions?: RenderReactPageOptions): unknown;
|
|
7
|
+
declare function createFrontendReactRenderer(options: FrontendReactRendererOptions): {
|
|
8
|
+
buildShell: typeof buildReactRenderShell;
|
|
9
|
+
renderFragment: (component: any, props: Record<string, unknown>) => string;
|
|
10
|
+
renderPage: (res: ServerResponseLike, pageId: string, props: Record<string, unknown>, renderOptions?: RenderReactPageOptions) => unknown;
|
|
11
|
+
sendDocument: (res: ServerResponseLike, pageId: string, body: unknown, componentId: string, props: Record<string, unknown>, shellInput?: FrontendRenderShell) => unknown;
|
|
12
|
+
};
|
|
13
|
+
export { buildReactRenderShell, createFrontendReactRenderer, defaultNormalizePageId, renderPage as renderFrontendReactPage, sendDocument as sendFrontendReactDocument, };
|
|
14
|
+
//# sourceMappingURL=render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../../src/server/react/render.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,sBAAsB,EAGvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,qBAAqB,EACtB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,4BAA4B,EAC5B,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAsDxD,iBAAS,YAAY,CACnB,GAAG,EAAE,kBAAkB,EACvB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE,4BAA4B,EACrC,UAAU,CAAC,EAAE,mBAAmB,WAgBjC;AAED,iBAAS,UAAU,CACjB,GAAG,EAAE,kBAAkB,EACvB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,OAAO,EAAE,4BAA4B,EACrC,aAAa,GAAE,sBAA2B,WAiB3C;AAED,iBAAS,2BAA2B,CAAC,OAAO,EAAE,4BAA4B;;gCAG1C,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;sBAGxD,kBAAkB,UACf,MAAM,SACP,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,kBACf,sBAAsB;wBAGhC,kBAAkB,UACf,MAAM,QACR,OAAO,eACA,MAAM,SACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,eACjB,mBAAmB;EAGrC;AAED,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,sBAAsB,EACtB,UAAU,IAAI,uBAAuB,EACrC,YAAY,IAAI,yBAAyB,GAC1C,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { withIconServerRenderer } from "../../icons/server-context.js";
|
|
2
|
+
import { applyScriptNonce, buildDocumentContext, defaultNormalizePageId, logDocumentStart, rootDocumentProps, } from "./document.js";
|
|
3
|
+
import { buildReactRenderShell, } from "./shell.js";
|
|
4
|
+
function renderWithIcons(render, iconRenderer) {
|
|
5
|
+
return withIconServerRenderer(iconRenderer, render);
|
|
6
|
+
}
|
|
7
|
+
function timedRender(render, options) {
|
|
8
|
+
const startedAt = performance.now();
|
|
9
|
+
try {
|
|
10
|
+
return render();
|
|
11
|
+
}
|
|
12
|
+
finally {
|
|
13
|
+
options.recordRender?.(Math.max(0, performance.now() - startedAt));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function renderBody(componentId, props, options) {
|
|
17
|
+
return options.createElement(options.resolvePageComponent(componentId), props);
|
|
18
|
+
}
|
|
19
|
+
function renderFragment(component, props, options) {
|
|
20
|
+
if (!options.renderToStaticMarkup) {
|
|
21
|
+
throw new Error("React static markup renderer is not configured.");
|
|
22
|
+
}
|
|
23
|
+
return timedRender(() => renderWithIcons(() => options.renderToStaticMarkup(options.createElement(component, props)), options.createIconRenderer?.()), options);
|
|
24
|
+
}
|
|
25
|
+
function withAutoPageLang(res, propsInput) {
|
|
26
|
+
const props = propsInput && typeof propsInput === "object" ? propsInput : {};
|
|
27
|
+
if ("lang" in props)
|
|
28
|
+
return props;
|
|
29
|
+
const lang = res?.locals && typeof res.locals === "object" ? res.locals.lang : undefined;
|
|
30
|
+
return lang ? { ...props, lang } : props;
|
|
31
|
+
}
|
|
32
|
+
function sendDocument(res, pageId, body, componentId, props, options, shellInput) {
|
|
33
|
+
const context = buildDocumentContext(res, pageId, componentId, props, options, shellInput);
|
|
34
|
+
const root = options.resolveRootDocument();
|
|
35
|
+
logDocumentStart(context, res, options);
|
|
36
|
+
const html = timedRender(() => renderWithIcons(() => options.renderToString(options.createElement(root, rootDocumentProps(body, context, options))), options.createIconRenderer?.()), options);
|
|
37
|
+
if (typeof res.type === "function")
|
|
38
|
+
res.type("html");
|
|
39
|
+
return res.send?.(`<!DOCTYPE html>${applyScriptNonce(html, context.shell.nonce)}`);
|
|
40
|
+
}
|
|
41
|
+
function renderPage(res, pageId, propsInput, options, renderOptions = {}) {
|
|
42
|
+
const normalizePageId = options.normalizePageId || defaultNormalizePageId;
|
|
43
|
+
const normalizedPageId = normalizePageId(pageId);
|
|
44
|
+
const componentId = normalizePageId(renderOptions.componentId || normalizedPageId);
|
|
45
|
+
const props = withAutoPageLang(res, propsInput);
|
|
46
|
+
if (!res.locals || typeof res.locals !== "object")
|
|
47
|
+
res.locals = {};
|
|
48
|
+
res.locals.reactPageProps = props;
|
|
49
|
+
return sendDocument(res, normalizedPageId, renderBody(componentId, props, options), componentId, props, options, renderOptions.shell);
|
|
50
|
+
}
|
|
51
|
+
function createFrontendReactRenderer(options) {
|
|
52
|
+
return {
|
|
53
|
+
buildShell: buildReactRenderShell,
|
|
54
|
+
renderFragment: (component, props) => renderFragment(component, props, options),
|
|
55
|
+
renderPage: (res, pageId, props, renderOptions = {}) => renderPage(res, pageId, props, options, renderOptions),
|
|
56
|
+
sendDocument: (res, pageId, body, componentId, props, shellInput) => sendDocument(res, pageId, body, componentId, props, options, shellInput),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export { buildReactRenderShell, createFrontendReactRenderer, defaultNormalizePageId, renderPage as renderFrontendReactPage, sendDocument as sendFrontendReactDocument, };
|
|
60
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../src/server/react/render.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type ServerResponseLike } from "../http.d.ts";
|
|
2
|
+
import type { FrontendReactRendererOptions, FrontendRenderShell } from "./types.d.ts";
|
|
3
|
+
declare function objectWithFallback(value: unknown, fallback: unknown): Record<string, unknown>;
|
|
4
|
+
declare function readDefaultUi(options: FrontendReactRendererOptions): Record<string, unknown>;
|
|
5
|
+
declare function buildReactRenderShell(res: ServerResponseLike, props: Record<string, unknown>, options: FrontendReactRendererOptions, shellInput?: FrontendRenderShell): FrontendRenderShell;
|
|
6
|
+
export { buildReactRenderShell, objectWithFallback, readDefaultUi };
|
|
7
|
+
//# sourceMappingURL=shell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../../src/server/react/shell.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,4BAA4B,EAC5B,mBAAmB,EACpB,MAAM,eAAe,CAAC;AAEvB,iBAAS,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,2BAG5D;AAED,iBAAS,aAAa,CAAC,OAAO,EAAE,4BAA4B,2BAI3D;AA8BD,iBAAS,qBAAqB,CAC5B,GAAG,EAAE,kBAAkB,EACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE,4BAA4B,EACrC,UAAU,CAAC,EAAE,mBAAmB,GAC/B,mBAAmB,CAqBrB;AAED,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { toText } from "../../components/index.js";
|
|
2
|
+
import { defaultNavigationState, } from "../navigation.js";
|
|
3
|
+
import { serverObject, } from "../http.js";
|
|
4
|
+
function objectWithFallback(value, fallback) {
|
|
5
|
+
const object = serverObject(value);
|
|
6
|
+
return Object.keys(object).length ? object : serverObject(fallback);
|
|
7
|
+
}
|
|
8
|
+
function readDefaultUi(options) {
|
|
9
|
+
return typeof options.defaultUi === "function"
|
|
10
|
+
? options.defaultUi()
|
|
11
|
+
: options.defaultUi || {};
|
|
12
|
+
}
|
|
13
|
+
function shellPageProps(shellInput, props) {
|
|
14
|
+
return objectWithFallback(shellInput?.pageProps, props);
|
|
15
|
+
}
|
|
16
|
+
function shellSecurity(locals, shellInput, nonce) {
|
|
17
|
+
return objectWithFallback(shellInput?.security, {
|
|
18
|
+
csrfToken: locals.csrfToken ?? null,
|
|
19
|
+
nonce,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function shellPermissionState(res, options, shellInput) {
|
|
23
|
+
return shellInput?.permissionState && typeof shellInput.permissionState === "object"
|
|
24
|
+
? shellInput.permissionState
|
|
25
|
+
: options.buildPermissionState?.({ res, shellInput }) || {};
|
|
26
|
+
}
|
|
27
|
+
function buildReactRenderShell(res, props, options, shellInput) {
|
|
28
|
+
const locals = serverObject(res?.locals);
|
|
29
|
+
const nonce = typeof shellInput?.nonce === "string" ? shellInput.nonce : toText(locals.nonce);
|
|
30
|
+
return {
|
|
31
|
+
dev: objectWithFallback(shellInput?.dev, options.dev || {}),
|
|
32
|
+
lang: typeof shellInput?.lang === "string" ? shellInput.lang : toText(locals.lang, options.defaultLang || "en"),
|
|
33
|
+
locale: objectWithFallback(shellInput?.locale, locals.locale),
|
|
34
|
+
navigation: objectWithFallback(shellInput?.navigation, locals.navigation || defaultNavigationState),
|
|
35
|
+
nonce,
|
|
36
|
+
pageProps: shellPageProps(shellInput, props),
|
|
37
|
+
permissionState: shellPermissionState(res, options, shellInput),
|
|
38
|
+
product: objectWithFallback(shellInput?.product, options.product || {}),
|
|
39
|
+
renderMode: objectWithFallback(shellInput?.renderMode, locals.renderMode),
|
|
40
|
+
requirePermission: objectWithFallback(shellInput?.requirePermission, locals.requirePermission),
|
|
41
|
+
security: shellSecurity(locals, shellInput, nonce),
|
|
42
|
+
seo: objectWithFallback(shellInput?.seo, locals.seo),
|
|
43
|
+
theme: typeof shellInput?.theme === "string" ? shellInput.theme : toText(locals.theme),
|
|
44
|
+
ui: objectWithFallback(shellInput?.ui, locals.ui || readDefaultUi(options)),
|
|
45
|
+
viewer: shellInput?.viewer || serverObject(locals.viewer) || null,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export { buildReactRenderShell, objectWithFallback, readDefaultUi };
|
|
49
|
+
//# sourceMappingURL=shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../../src/server/react/shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EACL,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,YAAY,GAEb,MAAM,eAAe,CAAC;AAMvB,SAAS,kBAAkB,CAAC,KAAc,EAAE,QAAiB;IAC3D,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,aAAa,CAAC,OAAqC;IAC1D,OAAO,OAAO,OAAO,CAAC,SAAS,KAAK,UAAU;QAC9C,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE;QACrB,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,cAAc,CACrB,UAA2C,EAC3C,KAA8B;IAE9B,OAAO,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,aAAa,CACpB,MAA+B,EAC/B,UAA2C,EAC3C,KAAa;IAEb,OAAO,kBAAkB,CAAC,UAAU,EAAE,QAAQ,EAAE;QAC5C,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;QACnC,KAAK;KACR,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAC3B,GAAuB,EACvB,OAAqC,EACrC,UAAgC;IAEhC,OAAO,UAAU,EAAE,eAAe,IAAI,OAAO,UAAU,CAAC,eAAe,KAAK,QAAQ;QACpF,CAAC,CAAC,UAAU,CAAC,eAAe;QAC5B,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,qBAAqB,CAC5B,GAAuB,EACvB,KAA8B,EAC9B,OAAqC,EACrC,UAAgC;IAEhC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,KAAK,GACX,OAAO,UAAU,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChF,OAAO;QACL,GAAG,EAAE,kBAAkB,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;QAC3D,IAAI,EAAE,OAAO,UAAU,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;QAC/G,MAAM,EAAE,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;QAC7D,UAAU,EAAE,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,sBAAsB,CAAC;QACnG,KAAK;QACL,SAAS,EAAE,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC;QAC5C,eAAe,EAAE,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC;QAC/D,OAAO,EAAE,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACvE,UAAU,EAAE,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;QACzE,iBAAiB,EAAE,kBAAkB,CAAC,UAAU,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,CAAC;QAC9F,QAAQ,EAAE,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC;QAClD,GAAG,EAAE,kBAAkB,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;QACpD,KAAK,EAAE,OAAO,UAAU,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACtF,EAAE,EAAE,kBAAkB,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;QAC3E,MAAM,EAAE,UAAU,EAAE,MAAM,IAAK,YAAY,CAAC,MAAM,CAAC,MAAM,CAAS,IAAI,IAAI;KAC3E,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { ServerResponseLike } from "../http.d.ts";
|
|
2
|
+
type FrontendRenderShell = {
|
|
3
|
+
dev?: Record<string, unknown>;
|
|
4
|
+
lang?: string;
|
|
5
|
+
locale?: Record<string, unknown>;
|
|
6
|
+
navigation?: Record<string, unknown>;
|
|
7
|
+
nonce?: string;
|
|
8
|
+
pageProps?: Record<string, unknown>;
|
|
9
|
+
permissionState?: Record<string, unknown>;
|
|
10
|
+
requirePermission?: Record<string, unknown>;
|
|
11
|
+
renderMode?: Record<string, unknown>;
|
|
12
|
+
security?: Record<string, unknown>;
|
|
13
|
+
product?: Record<string, unknown>;
|
|
14
|
+
theme?: string;
|
|
15
|
+
ui?: Record<string, unknown>;
|
|
16
|
+
viewer?: Record<string, unknown> | null;
|
|
17
|
+
seo?: Record<string, unknown>;
|
|
18
|
+
};
|
|
19
|
+
type FrontendAssetLinkSet = {
|
|
20
|
+
cssLinks?: string;
|
|
21
|
+
fontPreloadLinks?: string;
|
|
22
|
+
jsLinks?: string;
|
|
23
|
+
};
|
|
24
|
+
type FrontendDocumentContext = {
|
|
25
|
+
componentId: string;
|
|
26
|
+
currentUrl: string;
|
|
27
|
+
cssLinks: string;
|
|
28
|
+
entryIds: string[];
|
|
29
|
+
fontPreloadLinks: string;
|
|
30
|
+
jsLinks: string;
|
|
31
|
+
locale: Record<string, unknown>;
|
|
32
|
+
pageId: string;
|
|
33
|
+
pageTitle: string;
|
|
34
|
+
security: Record<string, unknown>;
|
|
35
|
+
seo: Record<string, unknown>;
|
|
36
|
+
shell: FrontendRenderShell;
|
|
37
|
+
ui: Record<string, unknown>;
|
|
38
|
+
};
|
|
39
|
+
type FrontendReactRendererOptions = {
|
|
40
|
+
buildAssetLinks: (entryIds: string[]) => FrontendAssetLinkSet;
|
|
41
|
+
buildPermissionState?: (context: {
|
|
42
|
+
res: ServerResponseLike;
|
|
43
|
+
shellInput?: FrontendRenderShell;
|
|
44
|
+
}) => Record<string, unknown>;
|
|
45
|
+
createElement: (component: any, props: Record<string, unknown>) => unknown;
|
|
46
|
+
createIconRenderer?: () => ((spec: string) => unknown) | undefined;
|
|
47
|
+
defaultLang?: string;
|
|
48
|
+
defaultTheme?: string;
|
|
49
|
+
defaultUi?: Record<string, unknown> | (() => Record<string, unknown>);
|
|
50
|
+
dev?: Record<string, unknown>;
|
|
51
|
+
faviconHref?: string | ((context: FrontendDocumentContext) => string);
|
|
52
|
+
log?: {
|
|
53
|
+
info?: (message: string, metadata?: Record<string, unknown>) => unknown;
|
|
54
|
+
};
|
|
55
|
+
normalizePageId?: (pageId: unknown) => string;
|
|
56
|
+
product?: Record<string, unknown>;
|
|
57
|
+
recordRender?: (durationMs: number) => unknown;
|
|
58
|
+
renderToStaticMarkup?: (node: unknown) => string;
|
|
59
|
+
renderToString: (node: unknown) => string;
|
|
60
|
+
resolvePageComponent: (pageId: string) => any;
|
|
61
|
+
resolvePageTitle?: (context: FrontendDocumentContext) => string;
|
|
62
|
+
resolveRootDocument: () => any;
|
|
63
|
+
resolveTitle?: (context: FrontendDocumentContext) => string;
|
|
64
|
+
};
|
|
65
|
+
type RenderReactPageOptions = {
|
|
66
|
+
componentId?: string;
|
|
67
|
+
shell?: FrontendRenderShell;
|
|
68
|
+
viewName?: string;
|
|
69
|
+
};
|
|
70
|
+
export type { FrontendAssetLinkSet, FrontendDocumentContext, FrontendReactRendererOptions, FrontendRenderShell, RenderReactPageOptions, };
|
|
71
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/react/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/server/react/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { type ServerRequestLike, type ServerResponseLike } from "./http.js";
|
|
2
|
+
type RenderModeRecord = Record<string, any>;
|
|
3
|
+
type RenderModeApi = ((name: string) => any) & {
|
|
4
|
+
config: RenderModeRecord;
|
|
5
|
+
use: (name: string) => any;
|
|
6
|
+
[key: string]: any;
|
|
7
|
+
};
|
|
8
|
+
type RenderModeSidebarContext = {
|
|
9
|
+
req: ServerRequestLike;
|
|
10
|
+
res: ServerResponseLike;
|
|
11
|
+
side: string;
|
|
12
|
+
sidebar: RenderModeRecord;
|
|
13
|
+
};
|
|
14
|
+
type RenderModeAppliedContext = {
|
|
15
|
+
cfg: RenderModeRecord;
|
|
16
|
+
modeNames: string[];
|
|
17
|
+
req: ServerRequestLike;
|
|
18
|
+
res: ServerResponseLike;
|
|
19
|
+
ui: RenderModeRecord;
|
|
20
|
+
};
|
|
21
|
+
type RenderModeOptions = {
|
|
22
|
+
afterApply?: (context: RenderModeAppliedContext) => unknown | Promise<unknown>;
|
|
23
|
+
baseUi: RenderModeRecord | (() => RenderModeRecord);
|
|
24
|
+
clone?: <T>(value: T) => T;
|
|
25
|
+
hydrateSidebar?: (context: RenderModeSidebarContext) => RenderModeRecord | Promise<RenderModeRecord>;
|
|
26
|
+
modes: RenderModeRecord;
|
|
27
|
+
};
|
|
28
|
+
declare function cloneRenderModeValue<T>(value: T): T;
|
|
29
|
+
declare function mergeFrontendUi(baseInput: unknown, overInput: unknown): {
|
|
30
|
+
theme: any;
|
|
31
|
+
resources: any;
|
|
32
|
+
PWA: any;
|
|
33
|
+
subdomain: any;
|
|
34
|
+
logo: {
|
|
35
|
+
[x: string]: unknown;
|
|
36
|
+
};
|
|
37
|
+
page: {
|
|
38
|
+
[x: string]: unknown;
|
|
39
|
+
};
|
|
40
|
+
header: {
|
|
41
|
+
[x: string]: unknown;
|
|
42
|
+
};
|
|
43
|
+
header_secondary: {
|
|
44
|
+
[x: string]: unknown;
|
|
45
|
+
};
|
|
46
|
+
footer: {
|
|
47
|
+
[x: string]: unknown;
|
|
48
|
+
};
|
|
49
|
+
sidebar: {
|
|
50
|
+
[x: string]: unknown;
|
|
51
|
+
};
|
|
52
|
+
sidebars: {
|
|
53
|
+
left: {
|
|
54
|
+
[x: string]: unknown;
|
|
55
|
+
};
|
|
56
|
+
right: {
|
|
57
|
+
[x: string]: unknown;
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
universal: {
|
|
61
|
+
[x: string]: unknown;
|
|
62
|
+
};
|
|
63
|
+
searchBar: {
|
|
64
|
+
[x: string]: unknown;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
declare function applyRenderModeConditionalFields(mergedBlock: unknown, modeBlock: unknown, res: ServerResponseLike): {
|
|
68
|
+
[x: string]: unknown;
|
|
69
|
+
};
|
|
70
|
+
declare function normalizeRenderModePath(modeName: unknown): string;
|
|
71
|
+
declare function resolveRenderModeStack(modeName: unknown, modes: RenderModeRecord): string[];
|
|
72
|
+
declare function mergeRenderModeStack(modeNames: string[], modes: RenderModeRecord): RenderModeRecord;
|
|
73
|
+
declare function setRenderModeFlags(target: RenderModeRecord, modeNames: string[], modes: RenderModeRecord): void;
|
|
74
|
+
declare function ensureRenderModeLocals(res: ServerResponseLike, options: RenderModeOptions): Record<string, unknown>;
|
|
75
|
+
declare function normalizeRenderModeSidebar(sidebarInput: unknown): RenderModeRecord;
|
|
76
|
+
declare function applyRenderModeConditionalBlocks(merged: RenderModeRecord, cfg: RenderModeRecord, res: ServerResponseLike): RenderModeRecord;
|
|
77
|
+
declare function applyRenderModeUi(req: ServerRequestLike, res: ServerResponseLike, cfg: RenderModeRecord, modeNames: string[], options: RenderModeOptions): Promise<Record<string, unknown>>;
|
|
78
|
+
declare function createRenderModeMiddleware(modeName: string, options: RenderModeOptions): (req: ServerRequestLike, res: ServerResponseLike, next: (error?: unknown) => unknown) => Promise<unknown>;
|
|
79
|
+
declare function createRenderModeApi(options: RenderModeOptions): RenderModeApi;
|
|
80
|
+
export { applyRenderModeConditionalBlocks, applyRenderModeConditionalFields, applyRenderModeUi, cloneRenderModeValue, createRenderModeApi, createRenderModeMiddleware, ensureRenderModeLocals, mergeFrontendUi, mergeFrontendUi as mergeRenderModeUi, mergeRenderModeStack, normalizeRenderModePath, normalizeRenderModeSidebar, resolveRenderModeStack, setRenderModeFlags, };
|
|
81
|
+
export type { RenderModeApi, RenderModeAppliedContext, RenderModeOptions, RenderModeRecord, RenderModeSidebarContext, };
|
|
82
|
+
//# sourceMappingURL=render-mode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-mode.d.ts","sourceRoot":"","sources":["../../../src/server/render-mode.ts"],"names":[],"mappings":"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"}
|