@riverbankcms/sdk 0.22.0 → 0.25.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/README.md +15 -0
- package/dist/_dts/blocks/src/system/defineBlock.d.ts +2 -2
- package/dist/_dts/blocks/src/system/fragments/utils/toRepeaterSchema.d.ts +1 -0
- package/dist/_dts/blocks/src/system/manifest/fieldPath.d.ts +1 -1
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +3 -3
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +20 -6
- package/dist/_dts/sdk/src/components.d.ts +1 -1
- package/dist/_dts/sdk/src/manifest/prompt/examples/types.d.ts +1 -1
- package/dist/_dts/sdk/src/manifest/validation/output-schema.d.ts +1 -1
- package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +13 -2
- package/dist/_dts/sdk/src/rendering/server.d.ts +1 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/sdk/src/zod/titleSourceSchema.d.ts +3 -0
- package/dist/cli/index.js +38 -16
- package/dist/cli/index.js.map +1 -1
- package/dist/client/client.js +16 -4
- package/dist/client/client.js.map +1 -1
- package/dist/client/client.mjs +16 -4
- package/dist/client/client.mjs.map +1 -1
- package/dist/client/hooks.js +15 -3
- package/dist/client/hooks.js.map +1 -1
- package/dist/client/hooks.mjs +15 -3
- package/dist/client/hooks.mjs.map +1 -1
- package/dist/server/{chunk-QE4VT6ZZ.js → chunk-2VZTRLVN.js} +2 -2
- package/dist/server/{chunk-QE4VT6ZZ.js.map → chunk-2VZTRLVN.js.map} +1 -1
- package/dist/server/{chunk-2M7734OW.mjs → chunk-2Y65RENO.mjs} +2 -2
- package/dist/server/{chunk-ZUEYJXML.js → chunk-36KFN6AU.js} +6 -6
- package/dist/server/{chunk-ZUEYJXML.js.map → chunk-36KFN6AU.js.map} +1 -1
- package/dist/server/{chunk-53NRFMMN.js → chunk-377J7BKC.js} +16 -4
- package/dist/server/chunk-377J7BKC.js.map +1 -0
- package/dist/server/chunk-3OR6EF3W.js +11 -0
- package/dist/server/chunk-3OR6EF3W.js.map +1 -0
- package/dist/server/chunk-3YMYSDUU.mjs +7 -0
- package/dist/server/{chunk-VHVKDZCV.mjs.map → chunk-3YMYSDUU.mjs.map} +1 -1
- package/dist/server/{chunk-WUAHP5L2.mjs → chunk-7NJZJL2D.mjs} +4 -4
- package/dist/server/{chunk-PY2A4FGZ.js → chunk-ACLGZTVX.js} +3 -3
- package/dist/server/{chunk-PY2A4FGZ.js.map → chunk-ACLGZTVX.js.map} +1 -1
- package/dist/server/{chunk-D5NOG6VZ.mjs → chunk-DHFU2AQ7.mjs} +2 -2
- package/dist/server/{chunk-7XBBV6UY.mjs → chunk-DWMPTB3G.mjs} +2 -2
- package/dist/server/{chunk-J2ZBKZVF.mjs → chunk-E5G5COYU.mjs} +21 -15
- package/dist/server/chunk-E5G5COYU.mjs.map +1 -0
- package/dist/server/{chunk-H3SRB5G4.js → chunk-EFQNS3HS.js} +6 -6
- package/dist/server/{chunk-H3SRB5G4.js.map → chunk-EFQNS3HS.js.map} +1 -1
- package/dist/server/{chunk-PTHRXZUJ.js → chunk-END3H7C6.js} +32 -26
- package/dist/server/chunk-END3H7C6.js.map +1 -0
- package/dist/server/{chunk-TOBOHAEX.js → chunk-FKMJDBEA.js} +5 -5
- package/dist/server/{chunk-TOBOHAEX.js.map → chunk-FKMJDBEA.js.map} +1 -1
- package/dist/server/{chunk-TU3WAJPX.js → chunk-GTE6ZI5W.js} +13 -10
- package/dist/server/chunk-GTE6ZI5W.js.map +1 -0
- package/dist/server/{chunk-ZIY3QZJ3.mjs → chunk-HQZKJ5MH.mjs} +2 -2
- package/dist/server/{chunk-UK7SLIIG.js → chunk-IH2NRKKI.js} +3 -3
- package/dist/server/{chunk-UK7SLIIG.js.map → chunk-IH2NRKKI.js.map} +1 -1
- package/dist/server/{chunk-OPW33AGO.mjs → chunk-JMKX5FTE.mjs} +16 -4
- package/dist/server/chunk-JMKX5FTE.mjs.map +1 -0
- package/dist/server/{chunk-RVLBSKSU.mjs → chunk-KNF42IKQ.mjs} +2 -2
- package/dist/server/{chunk-7ORXXMTP.js → chunk-QIBPYE44.js} +9 -9
- package/dist/server/{chunk-7ORXXMTP.js.map → chunk-QIBPYE44.js.map} +1 -1
- package/dist/server/{chunk-3Z25JQ6H.mjs → chunk-QOBADLB4.mjs} +2 -2
- package/dist/server/{chunk-OOIGZH5B.mjs → chunk-RFQZDDUM.mjs} +2 -2
- package/dist/server/{chunk-33KZRQJY.mjs → chunk-T3ZGODHW.mjs} +2 -2
- package/dist/server/{chunk-CCAD7BUN.mjs → chunk-TCRV6VRW.mjs} +8 -5
- package/dist/server/chunk-TCRV6VRW.mjs.map +1 -0
- package/dist/server/{chunk-Z4AMGXH2.js → chunk-UZMAP5RH.js} +3 -3
- package/dist/server/{chunk-Z4AMGXH2.js.map → chunk-UZMAP5RH.js.map} +1 -1
- package/dist/server/chunk-VRDQJRYS.mjs +11 -0
- package/dist/server/chunk-VRDQJRYS.mjs.map +1 -0
- package/dist/server/{chunk-V5EQHRVR.js → chunk-WEEEYI47.js} +4 -4
- package/dist/server/{chunk-V5EQHRVR.js.map → chunk-WEEEYI47.js.map} +1 -1
- package/dist/server/{chunk-KAVH2CX7.js → chunk-X5XHOSOM.js} +49 -49
- package/dist/server/{chunk-KAVH2CX7.js.map → chunk-X5XHOSOM.js.map} +1 -1
- package/dist/server/components.js +5 -5
- package/dist/server/components.mjs +4 -4
- package/dist/server/config-validation.js +6 -5
- package/dist/server/config-validation.js.map +1 -1
- package/dist/server/config-validation.mjs +5 -4
- package/dist/server/config.js +6 -5
- package/dist/server/config.js.map +1 -1
- package/dist/server/config.mjs +5 -4
- package/dist/server/config.mjs.map +1 -1
- package/dist/server/data.js +3 -3
- package/dist/server/data.mjs +2 -2
- package/dist/server/index.js +4 -4
- package/dist/server/index.mjs +3 -3
- package/dist/server/{loadPage-3F57VAE2.mjs → loadPage-EZXWZ7SJ.mjs} +4 -4
- package/dist/server/{loadPage-JRS5JUAY.js → loadPage-G74D6VXZ.js} +5 -5
- package/dist/server/{loadPage-JRS5JUAY.js.map → loadPage-G74D6VXZ.js.map} +1 -1
- package/dist/server/next.js +17 -17
- package/dist/server/next.mjs +7 -7
- package/dist/server/page-converter.js +16 -10
- package/dist/server/page-converter.js.map +1 -1
- package/dist/server/page-converter.mjs +9 -3
- package/dist/server/page-converter.mjs.map +1 -1
- package/dist/server/prebuild.js +3 -3
- package/dist/server/prebuild.mjs +2 -2
- package/dist/server/rendering/server.js +7 -7
- package/dist/server/rendering/server.mjs +6 -6
- package/dist/server/rendering.js +9 -9
- package/dist/server/rendering.mjs +8 -8
- package/dist/server/routing.js +1 -1
- package/dist/server/routing.mjs +1 -1
- package/dist/server/server.js +7 -7
- package/dist/server/server.mjs +6 -6
- package/dist/server/theme-bridge.js +10 -10
- package/dist/server/theme-bridge.mjs +2 -2
- package/dist/server/theme.js +4 -4
- package/dist/server/theme.mjs +2 -2
- package/package.json +1 -1
- package/dist/server/chunk-53NRFMMN.js.map +0 -1
- package/dist/server/chunk-CCAD7BUN.mjs.map +0 -1
- package/dist/server/chunk-J2ZBKZVF.mjs.map +0 -1
- package/dist/server/chunk-OPW33AGO.mjs.map +0 -1
- package/dist/server/chunk-PTHRXZUJ.js.map +0 -1
- package/dist/server/chunk-TU3WAJPX.js.map +0 -1
- package/dist/server/chunk-VHVKDZCV.mjs +0 -7
- /package/dist/server/{chunk-2M7734OW.mjs.map → chunk-2Y65RENO.mjs.map} +0 -0
- /package/dist/server/{chunk-WUAHP5L2.mjs.map → chunk-7NJZJL2D.mjs.map} +0 -0
- /package/dist/server/{chunk-D5NOG6VZ.mjs.map → chunk-DHFU2AQ7.mjs.map} +0 -0
- /package/dist/server/{chunk-7XBBV6UY.mjs.map → chunk-DWMPTB3G.mjs.map} +0 -0
- /package/dist/server/{chunk-ZIY3QZJ3.mjs.map → chunk-HQZKJ5MH.mjs.map} +0 -0
- /package/dist/server/{chunk-RVLBSKSU.mjs.map → chunk-KNF42IKQ.mjs.map} +0 -0
- /package/dist/server/{chunk-3Z25JQ6H.mjs.map → chunk-QOBADLB4.mjs.map} +0 -0
- /package/dist/server/{chunk-OOIGZH5B.mjs.map → chunk-RFQZDDUM.mjs.map} +0 -0
- /package/dist/server/{chunk-33KZRQJY.mjs.map → chunk-T3ZGODHW.mjs.map} +0 -0
- /package/dist/server/{loadPage-3F57VAE2.mjs.map → loadPage-EZXWZ7SJ.mjs.map} +0 -0
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
PageRenderer,
|
|
6
6
|
ThemeScope,
|
|
7
7
|
buildThemeRuntime
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-QOBADLB4.mjs";
|
|
9
9
|
|
|
10
10
|
// src/rendering/components/Page.tsx
|
|
11
11
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -74,4 +74,4 @@ function Page({
|
|
|
74
74
|
export {
|
|
75
75
|
Page
|
|
76
76
|
};
|
|
77
|
-
//# sourceMappingURL=chunk-
|
|
77
|
+
//# sourceMappingURL=chunk-KNF42IKQ.mjs.map
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunkX5XHOSOMjs = require('./chunk-X5XHOSOM.js');
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _chunkEFQNS3HSjs = require('./chunk-EFQNS3HS.js');
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
var
|
|
11
|
+
var _chunk377J7BKCjs = require('./chunk-377J7BKC.js');
|
|
12
12
|
|
|
13
13
|
// src/rendering/components/Block.tsx
|
|
14
14
|
var _jsxruntime = require('react/jsx-runtime');
|
|
@@ -24,14 +24,14 @@ async function Block({
|
|
|
24
24
|
usePlaceholders: _usePlaceholders = false,
|
|
25
25
|
override: OverrideComponent
|
|
26
26
|
}) {
|
|
27
|
-
const definition =
|
|
27
|
+
const definition = _chunk377J7BKCjs.getBlockDefinition.call(void 0, blockKind);
|
|
28
28
|
if (!definition && !OverrideComponent) {
|
|
29
29
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4 border border-red-300 bg-red-50 rounded", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "text-red-800 font-semibold", children: [
|
|
30
30
|
"Unknown block type: ",
|
|
31
31
|
blockKind
|
|
32
32
|
] }) });
|
|
33
33
|
}
|
|
34
|
-
const themeRuntime =
|
|
34
|
+
const themeRuntime = _chunkX5XHOSOMjs.buildThemeRuntime.call(void 0, theme);
|
|
35
35
|
let resolvedData;
|
|
36
36
|
if (client && blockId && definition) {
|
|
37
37
|
const pageOutline = {
|
|
@@ -44,7 +44,7 @@ async function Block({
|
|
|
44
44
|
purpose: "preview"
|
|
45
45
|
}]
|
|
46
46
|
};
|
|
47
|
-
const allResolvedData = await
|
|
47
|
+
const allResolvedData = await _chunkEFQNS3HSjs.prefetchBlockData.call(void 0,
|
|
48
48
|
pageOutline,
|
|
49
49
|
{ siteId, pageId, previewStage },
|
|
50
50
|
client
|
|
@@ -70,8 +70,8 @@ async function Block({
|
|
|
70
70
|
blockKind
|
|
71
71
|
] }) });
|
|
72
72
|
}
|
|
73
|
-
const BlockComponent =
|
|
74
|
-
const registry =
|
|
73
|
+
const BlockComponent = _chunkX5XHOSOMjs.makeDefaultBlockComponent.call(void 0, { manifest: definition.manifest });
|
|
74
|
+
const registry = _chunkX5XHOSOMjs.getDefaultComponentRegistry.call(void 0, );
|
|
75
75
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
76
76
|
BlockComponent,
|
|
77
77
|
{
|
|
@@ -89,4 +89,4 @@ async function Block({
|
|
|
89
89
|
|
|
90
90
|
|
|
91
91
|
exports.Block = Block;
|
|
92
|
-
//# sourceMappingURL=chunk-
|
|
92
|
+
//# sourceMappingURL=chunk-QIBPYE44.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/will/Projects/Business/cms/main-branch/packages/sdk/dist/server/chunk-
|
|
1
|
+
{"version":3,"sources":["/Users/will/Projects/Business/cms/main-branch/packages/sdk/dist/server/chunk-QIBPYE44.js","../../src/rendering/components/Block.tsx"],"names":[],"mappings":"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","file":"/Users/will/Projects/Business/cms/main-branch/packages/sdk/dist/server/chunk-QIBPYE44.js","sourcesContent":[null,"/**\n * Block component for rendering individual CMS blocks\n *\n * Renders a single block with its content and data.\n */\n\nimport * as React from 'react';\nimport { getBlockDefinition, makeDefaultBlockComponent, buildThemeRuntime, getDefaultComponentRegistry } from '@riverbankcms/blocks';\nimport type { Theme } from '@riverbankcms/blocks';\nimport type { RiverbankClient } from '../../client/types';\nimport type { BlockKind } from '../../types';\nimport { prefetchBlockData } from '../../data/prefetchBlockData';\n\n/**\n * Override component for custom block rendering.\n * Receives the same props as default block components.\n */\nexport type BlockOverrideComponent = React.ComponentType<{\n content: Record<string, unknown>;\n theme?: Record<string, unknown>;\n themeConfig?: Theme;\n data?: Record<string, unknown>;\n blockId?: string | null;\n blockKind?: BlockKind;\n}>;\n\nexport type BlockProps = {\n // Block identification\n blockKind: BlockKind;\n blockId?: string | null;\n\n // Block content\n content: Record<string, unknown>;\n\n // Required styling\n theme: Theme;\n siteId: string;\n\n // Optional data context for loaders\n pageId?: string;\n previewStage?: 'published' | 'preview';\n client?: RiverbankClient;\n\n // Optional customization\n usePlaceholders?: boolean;\n\n /**\n * Custom component to override default block rendering.\n * When provided, renders this component instead of the manifest-based default.\n * This is SSR-safe - no context or hooks required.\n *\n * @example\n * ```tsx\n * <Block\n * blockKind=\"block.hero\"\n * content={heroContent}\n * theme={theme}\n * siteId={siteId}\n * override={MyCustomHero}\n * />\n * ```\n */\n override?: BlockOverrideComponent;\n};\n\n/**\n * Renders a single CMS block with optional data loading.\n *\n * Use this component when you want to render individual blocks outside of a full page context,\n * or when mixing CMS blocks with custom JSX.\n *\n * @example Basic usage\n * ```tsx\n * <Block\n * blockKind=\"block.hero\"\n * content={{ headline: 'Welcome', subheadline: 'To our site' }}\n * theme={theme}\n * siteId=\"site-123\"\n * />\n * ```\n *\n * @example With data loading\n * ```tsx\n * <Block\n * blockKind=\"block.blog-listing\"\n * blockId=\"block-456\"\n * content={blockContent}\n * theme={theme}\n * siteId=\"site-123\"\n * pageId=\"page-789\"\n * client={client}\n * />\n * ```\n */\nexport async function Block({\n blockKind,\n blockId,\n content,\n theme,\n siteId,\n pageId,\n previewStage,\n client,\n usePlaceholders: _usePlaceholders = false,\n override: OverrideComponent,\n}: BlockProps) {\n // Get block definition (needed for data loaders even if using override)\n const definition = getBlockDefinition(blockKind);\n if (!definition && !OverrideComponent) {\n return (\n <div className=\"p-4 border border-red-300 bg-red-50 rounded\">\n <p className=\"text-red-800 font-semibold\">Unknown block type: {blockKind}</p>\n </div>\n );\n }\n\n // Build theme tokens\n const themeRuntime = buildThemeRuntime(theme);\n\n // Prefetch block data if client is provided and block has an ID\n let resolvedData: Record<string, unknown> | undefined;\n if (client && blockId && definition) {\n const pageOutline = {\n name: 'Single Block',\n path: '/block',\n purpose: 'Block preview',\n blocks: [{\n id: blockId,\n kind: blockKind,\n purpose: 'preview',\n }],\n };\n\n const allResolvedData = await prefetchBlockData(\n pageOutline,\n { siteId, pageId, previewStage },\n client\n );\n\n resolvedData = allResolvedData[blockId];\n }\n\n // If override component provided, use it instead of manifest-based rendering\n if (OverrideComponent) {\n return (\n <OverrideComponent\n content={content}\n theme={themeRuntime.tokens}\n themeConfig={theme}\n data={resolvedData}\n blockId={blockId ?? null}\n blockKind={blockKind}\n />\n );\n }\n\n // Fallback to manifest-based rendering\n if (!definition) {\n return (\n <div className=\"p-4 border border-red-300 bg-red-50 rounded\">\n <p className=\"text-red-800 font-semibold\">Unknown block type: {blockKind}</p>\n </div>\n );\n }\n\n // Create block component from manifest\n const BlockComponent = makeDefaultBlockComponent({ manifest: definition.manifest });\n\n // Get default component registry\n const registry = getDefaultComponentRegistry();\n\n return (\n <BlockComponent\n blockId={blockId ?? undefined}\n blockKind={blockKind}\n theme={themeRuntime.tokens}\n themeConfig={theme}\n content={content}\n data={resolvedData}\n registry={registry}\n />\n );\n}\n"]}
|
|
@@ -83,7 +83,7 @@ import {
|
|
|
83
83
|
runTransforms,
|
|
84
84
|
testimonialsCarouselFragment,
|
|
85
85
|
testimonialsHeadingFragment
|
|
86
|
-
} from "./chunk-
|
|
86
|
+
} from "./chunk-JMKX5FTE.mjs";
|
|
87
87
|
import {
|
|
88
88
|
ImagePresets,
|
|
89
89
|
backgroundColorStyle,
|
|
@@ -19936,4 +19936,4 @@ export {
|
|
|
19936
19936
|
resolveBackground,
|
|
19937
19937
|
SectionBackground
|
|
19938
19938
|
};
|
|
19939
|
-
//# sourceMappingURL=chunk-
|
|
19939
|
+
//# sourceMappingURL=chunk-QOBADLB4.mjs.map
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
ThemeScope,
|
|
7
7
|
buildThemeRuntime,
|
|
8
8
|
getDefaultComponentRegistry
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-QOBADLB4.mjs";
|
|
10
10
|
|
|
11
11
|
// src/rendering/components/Page.server.tsx
|
|
12
12
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -76,4 +76,4 @@ function Page({
|
|
|
76
76
|
export {
|
|
77
77
|
Page
|
|
78
78
|
};
|
|
79
|
-
//# sourceMappingURL=chunk-
|
|
79
|
+
//# sourceMappingURL=chunk-RFQZDDUM.mjs.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
defaultTransforms,
|
|
5
5
|
getBlockDefinition,
|
|
6
6
|
runTransforms
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-JMKX5FTE.mjs";
|
|
8
8
|
import {
|
|
9
9
|
isObjectRecord
|
|
10
10
|
} from "./chunk-ADKFU25P.mjs";
|
|
@@ -485,4 +485,4 @@ export {
|
|
|
485
485
|
SUPPORTED_LOADER_ENDPOINTS,
|
|
486
486
|
prefetchBlockData2 as prefetchBlockData
|
|
487
487
|
};
|
|
488
|
-
//# sourceMappingURL=chunk-
|
|
488
|
+
//# sourceMappingURL=chunk-T3ZGODHW.mjs.map
|
|
@@ -12,11 +12,11 @@ import {
|
|
|
12
12
|
buildThemeRuntime,
|
|
13
13
|
renderBlock,
|
|
14
14
|
resolveFooterRenderPlan
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-QOBADLB4.mjs";
|
|
16
16
|
import {
|
|
17
17
|
siteFooterManifest,
|
|
18
18
|
siteHeaderManifest
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-JMKX5FTE.mjs";
|
|
20
20
|
|
|
21
21
|
// src/rendering/components/Layout.tsx
|
|
22
22
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -31,7 +31,8 @@ async function Layout({
|
|
|
31
31
|
footer = true,
|
|
32
32
|
headerVariant,
|
|
33
33
|
hasPortalSession = false,
|
|
34
|
-
previewStage = "published"
|
|
34
|
+
previewStage = "published",
|
|
35
|
+
useThemeScope = true
|
|
35
36
|
}) {
|
|
36
37
|
let siteData = providedSiteData;
|
|
37
38
|
if (!siteData) {
|
|
@@ -63,6 +64,7 @@ async function Layout({
|
|
|
63
64
|
};
|
|
64
65
|
const footerData = {
|
|
65
66
|
menu: menuViewModel,
|
|
67
|
+
footerMenu: footerMenuViewModel,
|
|
66
68
|
logo: logoViewModel,
|
|
67
69
|
site,
|
|
68
70
|
theme,
|
|
@@ -149,14 +151,15 @@ async function Layout({
|
|
|
149
151
|
} else if (typeof footer === "function") {
|
|
150
152
|
footerElement = footer(footerData);
|
|
151
153
|
}
|
|
152
|
-
|
|
154
|
+
const content = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
153
155
|
headerElement,
|
|
154
156
|
children,
|
|
155
157
|
footerElement
|
|
156
158
|
] });
|
|
159
|
+
return useThemeScope ? /* @__PURE__ */ jsx(ThemeScope, { theme, children: content }) : content;
|
|
157
160
|
}
|
|
158
161
|
|
|
159
162
|
export {
|
|
160
163
|
Layout
|
|
161
164
|
};
|
|
162
|
-
//# sourceMappingURL=chunk-
|
|
165
|
+
//# sourceMappingURL=chunk-TCRV6VRW.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/rendering/components/Layout.tsx"],"sourcesContent":["/**\n * Layout component with header and footer\n *\n * Renders site header and footer around content. Fetches site data if not provided.\n */\n\nimport { PageRenderer, renderBlock, resolveFooterRenderPlan, siteFooterManifest, siteHeaderManifest, buildThemeRuntime, ThemeScope } from '@riverbankcms/blocks';\nimport { getRiverbankEnv } from '../../env';\nimport { buildMenu, buildFooterMenu, buildLogo } from '../../navigation';\nimport type { RiverbankClient, SiteResponse } from '../../client/types';\n\nexport type HeaderData = {\n menu: ReturnType<typeof buildMenu>;\n logo: ReturnType<typeof buildLogo>;\n site: SiteResponse['site'];\n theme: SiteResponse['theme'];\n routes: SiteResponse['routes'];\n};\n\nexport type FooterData = {\n menu: ReturnType<typeof buildMenu>;\n footerMenu: ReturnType<typeof buildFooterMenu>;\n logo: ReturnType<typeof buildLogo>;\n site: SiteResponse['site'];\n theme: SiteResponse['theme'];\n routes: SiteResponse['routes'];\n};\n\nexport type LayoutProps = {\n // Option 1: Pass pre-fetched site data\n siteData?: SiteResponse;\n\n // Option 2: Fetch site data (provide client + identifier)\n client?: RiverbankClient;\n siteId?: string;\n slug?: string;\n domain?: string;\n\n // Content\n children: React.ReactNode;\n\n // Control rendering\n header?: boolean | ((data: HeaderData) => React.ReactNode);\n footer?: boolean | ((data: FooterData) => React.ReactNode);\n\n // Header variant override (if using default header)\n headerVariant?: 'classic' | 'centered' | 'transparent' | 'floating' | 'editorial';\n /**\n * Whether the current request has an active portal session.\n * Used to resolve portal navigation labels (e.g. \"Login\" vs \"My account\").\n *\n * @default false\n */\n hasPortalSession?: boolean;\n /** Render stage for internal links and block transforms. */\n previewStage?: 'published' | 'preview';\n\n /**\n * Wrap layout content in ThemeScope to inject theme CSS variables and styles.\n * Enable this to use built-in theme styling from the CMS.\n * Disable if you're bringing your own styles and want to avoid SDK-injected theme variables.\n *\n * Note: Disabling this while using the default header/footer (blocks) may result in unstyled output.\n *\n * @default true\n */\n useThemeScope?: boolean;\n};\n\n/**\n * Layout component that wraps content with site header and footer.\n *\n * @example With pre-fetched site data (recommended)\n * ```tsx\n * const site = await client.getSite({ slug: 'my-site' });\n *\n * <Layout siteData={site}>\n * <Page {...pageData} />\n * </Layout>\n * ```\n *\n * @example With automatic fetching\n * ```tsx\n * <Layout client={client} slug=\"my-site\">\n * <Page {...pageData} />\n * </Layout>\n * ```\n */\nexport async function Layout({\n siteData: providedSiteData,\n client,\n siteId,\n slug,\n domain,\n children,\n header = true,\n footer = true,\n headerVariant,\n hasPortalSession = false,\n previewStage = 'published',\n useThemeScope = true,\n}: LayoutProps) {\n // Fetch site data if not provided\n let siteData = providedSiteData;\n if (!siteData) {\n if (!client) {\n throw new Error('Layout: must provide either siteData or client');\n }\n if (!siteId && !slug && !domain) {\n throw new Error('Layout: must provide siteId, slug, or domain when using client');\n }\n\n siteData = await client.getSite({ id: siteId, slug, domain });\n }\n\n const { site, theme, navigation, layout, routes } = siteData;\n const footerBlocks = siteData.footerBlocks ?? [];\n const themeRuntime = buildThemeRuntime(theme);\n const navigationOptions = {\n hasPortalSession,\n previewStage,\n portalEnabled: siteData.portalEnabled ?? false,\n };\n\n // Build view models for header/footer\n const menuViewModel = buildMenu(navigation, routes, navigationOptions);\n const footerMenuViewModel = buildFooterMenu(navigation, routes, navigationOptions);\n const logoViewModel = buildLogo(layout.logo ?? null, site.title);\n\n // Prepare header data for custom headers\n const headerData: HeaderData = {\n menu: menuViewModel,\n logo: logoViewModel,\n site,\n theme,\n routes,\n };\n\n const footerData: FooterData = {\n menu: menuViewModel,\n footerMenu: footerMenuViewModel,\n logo: logoViewModel,\n site,\n theme,\n routes,\n };\n\n // Override header variant if specified\n const headerContent = headerVariant\n ? { ...layout.header, variant: headerVariant }\n : layout.header;\n\n // Override theme header variant if specified\n const themeWithVariant = headerVariant\n ? {\n ...theme,\n header: { ...theme.header, variant: headerVariant },\n }\n : theme;\n\n // Get API base URL for client-side components\n // This is resolved on the server where env vars are available\n let apiBaseUrl: string | undefined;\n try {\n const env = getRiverbankEnv();\n apiBaseUrl = env.baseUrl;\n } catch {\n // Silently fail if env vars not configured - client components will fall back to their own resolution\n }\n\n const viewModelOverrides = {\n $root: {\n siteId: site.id,\n apiBaseUrl,\n previewStage,\n routes,\n theme: themeWithVariant,\n },\n site,\n menu: menuViewModel,\n footerMenu: footerMenuViewModel,\n content: {\n logo: logoViewModel,\n },\n };\n\n // Render header based on type\n let headerElement: React.ReactNode = null;\n if (header === true) {\n // Default header rendering\n headerElement = renderBlock(siteHeaderManifest, headerContent, {\n theme: themeRuntime.tokens,\n themeConfig: themeWithVariant,\n viewModelOverrides,\n });\n } else if (typeof header === 'function') {\n // Custom header rendering\n headerElement = header(headerData);\n }\n\n // Render footer based on type\n let footerElement: React.ReactNode = null;\n if (footer === true) {\n const isSdkSite = Boolean(site.is_sdk_site);\n const footerPlan = resolveFooterRenderPlan({\n isSdkSite,\n mode: theme.footer?.mode,\n });\n\n const footerBlocksElement =\n footerPlan.renderFooterBlocks && footerBlocks.length > 0\n ? (\n <PageRenderer\n theme={theme}\n page={{\n name: 'Footer blocks',\n path: '/__footer',\n purpose: 'footer',\n blocks: footerBlocks,\n }}\n routeMap={routes}\n dataContext={{\n previewStage,\n siteId: site.id,\n apiBaseUrl,\n routes,\n }}\n sdkConfig={siteData.sdkConfig ?? null}\n />\n )\n : null;\n\n if (footerPlan.renderFooterBlocks && !footerBlocksElement && process.env.NODE_ENV !== 'production') {\n console.debug('[sdk] Footer mode renders blocks, but footerBlocks is empty/missing', {\n siteId: site.id,\n mode: footerPlan.mode,\n });\n }\n\n const defaultFooterElement = footerPlan.renderDefaultFooter\n ? renderBlock(siteFooterManifest, layout.footer, {\n theme: themeRuntime.tokens,\n themeConfig: theme,\n viewModelOverrides,\n })\n : null;\n\n footerElement =\n footerPlan.mode === 'default+blocks'\n ? (\n <>\n {footerBlocksElement}\n {defaultFooterElement}\n </>\n )\n : footerPlan.mode === 'blocks'\n ? footerBlocksElement\n : footerPlan.mode === 'none'\n ? null\n : defaultFooterElement;\n } else if (typeof footer === 'function') {\n // Custom footer rendering\n footerElement = footer(footerData);\n }\n\n const content = (\n <>\n {headerElement}\n {children}\n {footerElement}\n </>\n );\n\n return useThemeScope ? <ThemeScope theme={theme}>{content}</ThemeScope> : content;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
var _chunkGPJB33BKjs = require('./chunk-GPJB33BK.js');
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunk2VZTRLVNjs = require('./chunk-2VZTRLVN.js');
|
|
8
8
|
|
|
9
9
|
// src/prebuild/index.ts
|
|
10
10
|
var _fs = require('fs'); var fs = _interopRequireWildcard(_fs);
|
|
@@ -312,7 +312,7 @@ async function prebuildCache(options) {
|
|
|
312
312
|
version: MANIFEST_VERSION,
|
|
313
313
|
generatedAt,
|
|
314
314
|
siteId,
|
|
315
|
-
sdkVersion:
|
|
315
|
+
sdkVersion: _chunk2VZTRLVNjs.SDK_VERSION,
|
|
316
316
|
keyToFile,
|
|
317
317
|
includedTypes: include,
|
|
318
318
|
fileCount: files.length,
|
|
@@ -336,4 +336,4 @@ async function prebuildCache(options) {
|
|
|
336
336
|
|
|
337
337
|
|
|
338
338
|
exports.prebuildCache = prebuildCache;
|
|
339
|
-
//# sourceMappingURL=chunk-
|
|
339
|
+
//# sourceMappingURL=chunk-UZMAP5RH.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/will/Projects/Business/cms/main-branch/packages/sdk/dist/server/chunk-Z4AMGXH2.js","../../src/prebuild/index.ts"],"names":[],"mappings":"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","file":"/Users/will/Projects/Business/cms/main-branch/packages/sdk/dist/server/chunk-Z4AMGXH2.js","sourcesContent":[null,"/**\n * Prebuild cache generation\n *\n * Exports static content at build time for use as a last-resort fallback\n * when the CMS is unavailable.\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as crypto from 'crypto';\nimport type {\n PrebuildOptions,\n PrebuildResult,\n PrebuildProgress,\n PrebuildManifest,\n SiteCacheFile,\n PageCacheFile,\n PageIndexFile,\n EntriesCacheFile,\n NavigationCacheFile,\n FormsCacheFile,\n} from './types';\nimport type { RiverbankClient, SiteResponse, EntriesResponse } from '../client/types';\nimport { SDK_VERSION } from '../version';\nimport { PREBUILD_PAGE_SIZE, DEFAULT_PREBUILD_DIR } from '../constants';\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst MANIFEST_VERSION = '1.0.0';\nconst MANIFEST_FILENAME = 'manifest.json';\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\n/**\n * Convert a URL path to a safe filename.\n * Sanitizes special characters that are invalid on some filesystems.\n * e.g., '/about/team' -> 'about-team.json'\n * e.g., '/api/users?id=1' -> 'api-users_id_1.json'\n * Note: '/' becomes '_home.json' to avoid collision with '_index.json' (page listing)\n */\nfunction pathToFilename(routePath: string): string {\n if (routePath === '/') return '_home.json';\n return (\n routePath\n .slice(1)\n // Replace special characters with underscores (?, *, :, etc.)\n .replace(/[^a-zA-Z0-9\\-\\/]/g, '_')\n // Replace slashes with dashes\n .replace(/\\//g, '-') + '.json'\n );\n}\n\n/**\n * Ensure a directory exists, creating it recursively if needed.\n */\nfunction ensureDir(dirPath: string): void {\n if (!fs.existsSync(dirPath)) {\n fs.mkdirSync(dirPath, { recursive: true });\n }\n}\n\n/**\n * Write JSON data to a file.\n */\nfunction writeJsonFile(filePath: string, data: unknown): number {\n const content = JSON.stringify(data, null, 2);\n fs.writeFileSync(filePath, content, 'utf-8');\n return Buffer.byteLength(content, 'utf-8');\n}\n\n/**\n * Calculate SHA256 checksum of object (excluding checksum field).\n */\nfunction calculateChecksum(data: Record<string, unknown>): string {\n const { checksum: _, ...rest } = data;\n const content = JSON.stringify(rest);\n return crypto.createHash('sha256').update(content).digest('hex');\n}\n\n// ============================================================================\n// Entry Fetching\n// ============================================================================\n\n/**\n * Fetch all entries for a content type using pagination.\n * Loops until all entries are retrieved.\n */\nasync function fetchAllEntries(\n client: RiverbankClient,\n siteId: string,\n contentType: string,\n onProgress?: (item: string) => void\n): Promise<EntriesResponse['entries']> {\n const allEntries: EntriesResponse['entries'] = [];\n let offset = 0;\n let hasMore = true;\n\n while (hasMore) {\n onProgress?.(`${contentType} (batch ${Math.floor(offset / PREBUILD_PAGE_SIZE) + 1})`);\n\n const response = await client.getEntries({\n siteId,\n contentType,\n limit: PREBUILD_PAGE_SIZE,\n offset,\n preview: false, // Published content only\n });\n\n allEntries.push(...response.entries);\n offset += PREBUILD_PAGE_SIZE;\n hasMore = response.entries.length === PREBUILD_PAGE_SIZE;\n }\n\n return allEntries;\n}\n\n// ============================================================================\n// Content Type Prebuild Functions\n// ============================================================================\n\nasync function prebuildSite(\n client: RiverbankClient,\n siteId: string,\n outputDir: string\n): Promise<{ files: string[]; size: number; siteData: SiteResponse }> {\n const site = await client.getSite({ id: siteId });\n const filename = 'site.json';\n const filePath = path.join(outputDir, filename);\n\n const cacheFile: SiteCacheFile = {\n data: site,\n generatedAt: new Date().toISOString(),\n };\n\n const size = writeJsonFile(filePath, cacheFile);\n return { files: [filename], size, siteData: site };\n}\n\nasync function prebuildPages(\n client: RiverbankClient,\n siteId: string,\n routes: Record<string, { path: string; status: string | null }>,\n outputDir: string,\n onProgress?: (progress: PrebuildProgress) => void\n): Promise<{ files: string[]; size: number; pathMappings: Record<string, string> }> {\n const pagesDir = path.join(outputDir, 'pages');\n ensureDir(pagesDir);\n\n const files: string[] = [];\n const pathMappings: Record<string, string> = {}; // path -> filename\n let totalSize = 0;\n\n // Filter to published routes only\n const publishedPaths = Object.entries(routes)\n .filter(([_, route]) => route.status === 'published')\n .map(([_, route]) => route.path);\n\n // Create page index\n const pageIndex: PageIndexFile['pages'] = [];\n\n const total = publishedPaths.length;\n let current = 0;\n\n for (const pagePath of publishedPaths) {\n current++;\n onProgress?.({\n current,\n total,\n item: `Page: ${pagePath}`,\n contentType: 'pages',\n });\n\n try {\n const pageData = await client.getPage({ siteId, path: pagePath, preview: false });\n const filename = pathToFilename(pagePath);\n const filePath = path.join(pagesDir, filename);\n\n const cacheFile: PageCacheFile = {\n data: pageData,\n path: pagePath,\n generatedAt: new Date().toISOString(),\n };\n\n totalSize += writeJsonFile(filePath, cacheFile);\n files.push(`pages/${filename}`);\n pathMappings[pagePath] = `pages/${filename}`;\n\n // Add to index (only for page type responses)\n if ('page' in pageData) {\n pageIndex.push({\n path: pagePath,\n pageId: pageData.page.routeId || '',\n title: pageData.page.name || 'Untitled',\n });\n }\n } catch (error) {\n // Log but continue - partial prebuild is okay\n console.warn(`[Prebuild] Failed to fetch page ${pagePath}:`, (error as Error).message);\n }\n }\n\n // Write page index (uses _index.json to avoid collision with home page)\n const indexFile: PageIndexFile = {\n pages: pageIndex,\n totalCount: pageIndex.length,\n generatedAt: new Date().toISOString(),\n };\n const indexPath = path.join(pagesDir, '_index.json');\n totalSize += writeJsonFile(indexPath, indexFile);\n files.push('pages/_index.json');\n\n return { files, size: totalSize, pathMappings };\n}\n\nasync function prebuildEntries(\n client: RiverbankClient,\n siteId: string,\n contentTypes: string[],\n outputDir: string,\n onProgress?: (progress: PrebuildProgress) => void\n): Promise<{ files: string[]; size: number }> {\n const entriesDir = path.join(outputDir, 'entries');\n ensureDir(entriesDir);\n\n const files: string[] = [];\n let totalSize = 0;\n\n const total = contentTypes.length;\n let current = 0;\n\n for (const contentType of contentTypes) {\n current++;\n\n const entries = await fetchAllEntries(\n client,\n siteId,\n contentType,\n (item) => {\n onProgress?.({\n current,\n total,\n item: `Entries: ${item}`,\n contentType: 'entries',\n });\n }\n );\n\n // Create content type directory\n const typeDir = path.join(entriesDir, contentType);\n ensureDir(typeDir);\n\n const cacheFile: EntriesCacheFile = {\n entries,\n contentType,\n totalCount: entries.length,\n generatedAt: new Date().toISOString(),\n };\n\n const filename = `entries/${contentType}/all.json`;\n const filePath = path.join(entriesDir, contentType, 'all.json');\n totalSize += writeJsonFile(filePath, cacheFile);\n files.push(filename);\n }\n\n return { files, size: totalSize };\n}\n\nasync function prebuildNavigation(\n siteData: SiteResponse,\n outputDir: string,\n onProgress?: (progress: PrebuildProgress) => void\n): Promise<{ files: string[]; size: number }> {\n const navDir = path.join(outputDir, 'navigation');\n ensureDir(navDir);\n\n const files: string[] = [];\n let totalSize = 0;\n\n // Navigation data comes from site response\n const menus = siteData.navigation || [];\n\n onProgress?.({\n current: 1,\n total: 1,\n item: 'Navigation menus',\n contentType: 'navigation',\n });\n\n const cacheFile: NavigationCacheFile = {\n menus: menus.map((menu) => ({\n identifier: menu.identifier,\n id: menu.id,\n name: menu.name,\n items: menu.items,\n })),\n generatedAt: new Date().toISOString(),\n };\n\n const filename = 'navigation/menus.json';\n const filePath = path.join(navDir, 'menus.json');\n totalSize += writeJsonFile(filePath, cacheFile);\n files.push(filename);\n\n return { files, size: totalSize };\n}\n\nasync function prebuildForms(\n client: RiverbankClient,\n siteId: string,\n outputDir: string,\n onProgress?: (progress: PrebuildProgress) => void\n): Promise<{ files: string[]; size: number }> {\n const formsDir = path.join(outputDir, 'forms');\n ensureDir(formsDir);\n\n const files: string[] = [];\n let totalSize = 0;\n\n onProgress?.({\n current: 1,\n total: 1,\n item: 'Forms',\n contentType: 'forms',\n });\n\n try {\n // Fetch forms via the public API endpoint\n const response = await client.getForms({ siteId });\n const forms = response.forms || [];\n\n const cacheFile: FormsCacheFile = {\n forms: forms.map((form) => ({\n id: form.id,\n slug: form.slug,\n name: form.name,\n schema: form.schema,\n settings: form.settings,\n })),\n totalCount: forms.length,\n generatedAt: new Date().toISOString(),\n };\n\n const filename = 'forms/forms.json';\n const filePath = path.join(formsDir, 'forms.json');\n totalSize += writeJsonFile(filePath, cacheFile);\n files.push(filename);\n } catch (error) {\n console.warn('[Prebuild] Failed to fetch forms:', (error as Error).message);\n }\n\n return { files, size: totalSize };\n}\n\n// ============================================================================\n// Main Prebuild Function\n// ============================================================================\n\n/**\n * Generate a prebuild cache for the specified site.\n *\n * The prebuild cache contains static JSON files that can serve as a\n * last-resort fallback when the CMS is unavailable.\n *\n * @param options - Prebuild configuration\n * @returns Result with generated files and metadata\n *\n * @example\n * ```typescript\n * import { createRiverbankClient, prebuildCache } from '@riverbankcms/sdk';\n *\n * const client = createRiverbankClient({ apiKey, baseUrl });\n *\n * const result = await prebuildCache({\n * client,\n * siteId: 'your-site-id',\n * outputDir: '.riverbank-cache',\n * onProgress: (p) => console.log(`${p.current}/${p.total}: ${p.item}`),\n * });\n *\n * console.log(`Generated ${result.files.length} files (${result.totalSize} bytes)`);\n * ```\n */\nexport async function prebuildCache(options: PrebuildOptions): Promise<PrebuildResult> {\n const {\n client,\n siteId,\n outputDir = DEFAULT_PREBUILD_DIR,\n include = ['site', 'pages', 'entries', 'navigation', 'forms'],\n contentTypes,\n onProgress,\n } = options;\n\n const generatedAt = new Date().toISOString();\n const files: string[] = [];\n let totalSize = 0;\n const errors: string[] = [];\n let siteData: SiteResponse | null = null;\n let pagePathMappings: Record<string, string> = {}; // path -> filename\n\n // Ensure output directory exists\n ensureDir(outputDir);\n\n // -------------------------------------------------------------------------\n // 1. Prebuild site data (always needed for routes and navigation)\n // -------------------------------------------------------------------------\n if (include.includes('site') || include.includes('pages') || include.includes('navigation')) {\n try {\n const result = await prebuildSite(client, siteId, outputDir);\n siteData = result.siteData;\n if (include.includes('site')) {\n files.push(...result.files);\n totalSize += result.size;\n }\n onProgress?.({ current: 1, total: 4, item: 'Site data', contentType: 'site' });\n } catch (error) {\n errors.push(`Site prebuild failed: ${(error as Error).message}`);\n }\n }\n\n // -------------------------------------------------------------------------\n // 2. Prebuild pages\n // -------------------------------------------------------------------------\n if (include.includes('pages') && siteData) {\n try {\n const result = await prebuildPages(\n client,\n siteId,\n siteData.routes,\n outputDir,\n onProgress\n );\n files.push(...result.files);\n totalSize += result.size;\n pagePathMappings = result.pathMappings;\n } catch (error) {\n errors.push(`Pages prebuild failed: ${(error as Error).message}`);\n }\n }\n\n // -------------------------------------------------------------------------\n // 3. Prebuild entries\n // -------------------------------------------------------------------------\n if (include.includes('entries')) {\n try {\n // Content types must be explicitly provided via options.contentTypes\n // (The API's sdkConfig doesn't include content type definitions)\n const typesToPrebuild = contentTypes || [];\n\n if (typesToPrebuild.length > 0) {\n const result = await prebuildEntries(\n client,\n siteId,\n typesToPrebuild,\n outputDir,\n onProgress\n );\n files.push(...result.files);\n totalSize += result.size;\n } else {\n console.warn('[Prebuild] No contentTypes provided - skipping entries prebuild');\n }\n } catch (error) {\n errors.push(`Entries prebuild failed: ${(error as Error).message}`);\n }\n }\n\n // -------------------------------------------------------------------------\n // 4. Prebuild navigation\n // -------------------------------------------------------------------------\n if (include.includes('navigation') && siteData) {\n try {\n const result = await prebuildNavigation(siteData, outputDir, onProgress);\n files.push(...result.files);\n totalSize += result.size;\n } catch (error) {\n errors.push(`Navigation prebuild failed: ${(error as Error).message}`);\n }\n }\n\n // -------------------------------------------------------------------------\n // 5. Prebuild forms\n // -------------------------------------------------------------------------\n if (include.includes('forms')) {\n try {\n const result = await prebuildForms(client, siteId, outputDir, onProgress);\n files.push(...result.files);\n totalSize += result.size;\n } catch (error) {\n errors.push(`Forms prebuild failed: ${(error as Error).message}`);\n }\n }\n\n // -------------------------------------------------------------------------\n // 6. Generate manifest\n // -------------------------------------------------------------------------\n const keyToFile: Record<string, string> = {};\n\n // Map cache keys to files\n if (files.includes('site.json')) {\n keyToFile[`site:${siteId}`] = 'site.json';\n }\n\n // Use path mappings for pages (avoids lossy filename-to-path conversion)\n for (const [pagePath, file] of Object.entries(pagePathMappings)) {\n keyToFile[`page:${siteId}:${pagePath}:false`] = file;\n }\n\n // Add entries keys (entries/{contentType}/all.json)\n for (const file of files.filter((f) => f.startsWith('entries/') && f.endsWith('/all.json'))) {\n const contentType = file.split('/')[1];\n keyToFile[`entries-all:${siteId}:${contentType}`] = file;\n }\n\n // Add forms key\n if (files.includes('forms/forms.json')) {\n keyToFile[`forms:${siteId}`] = 'forms/forms.json';\n }\n\n const manifest: Omit<PrebuildManifest, 'checksum'> & { checksum?: string } = {\n version: MANIFEST_VERSION,\n generatedAt,\n siteId,\n sdkVersion: SDK_VERSION,\n keyToFile,\n includedTypes: include,\n fileCount: files.length,\n totalSize,\n };\n\n // Calculate checksum\n const checksum = calculateChecksum(manifest as Record<string, unknown>);\n (manifest as PrebuildManifest).checksum = checksum;\n\n const manifestPath = path.join(outputDir, MANIFEST_FILENAME);\n writeJsonFile(manifestPath, manifest);\n\n return {\n success: errors.length === 0,\n outputDir,\n files,\n totalSize,\n generatedAt,\n checksum,\n errors: errors.length > 0 ? errors : undefined,\n };\n}\n\n// Re-export types\nexport type {\n PrebuildOptions,\n PrebuildResult,\n PrebuildProgress,\n PrebuildManifest,\n PrebuildContentType,\n} from './types';\n"]}
|
|
1
|
+
{"version":3,"sources":["/Users/will/Projects/Business/cms/main-branch/packages/sdk/dist/server/chunk-UZMAP5RH.js","../../src/prebuild/index.ts"],"names":[],"mappings":"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","file":"/Users/will/Projects/Business/cms/main-branch/packages/sdk/dist/server/chunk-UZMAP5RH.js","sourcesContent":[null,"/**\n * Prebuild cache generation\n *\n * Exports static content at build time for use as a last-resort fallback\n * when the CMS is unavailable.\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as crypto from 'crypto';\nimport type {\n PrebuildOptions,\n PrebuildResult,\n PrebuildProgress,\n PrebuildManifest,\n SiteCacheFile,\n PageCacheFile,\n PageIndexFile,\n EntriesCacheFile,\n NavigationCacheFile,\n FormsCacheFile,\n} from './types';\nimport type { RiverbankClient, SiteResponse, EntriesResponse } from '../client/types';\nimport { SDK_VERSION } from '../version';\nimport { PREBUILD_PAGE_SIZE, DEFAULT_PREBUILD_DIR } from '../constants';\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst MANIFEST_VERSION = '1.0.0';\nconst MANIFEST_FILENAME = 'manifest.json';\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\n/**\n * Convert a URL path to a safe filename.\n * Sanitizes special characters that are invalid on some filesystems.\n * e.g., '/about/team' -> 'about-team.json'\n * e.g., '/api/users?id=1' -> 'api-users_id_1.json'\n * Note: '/' becomes '_home.json' to avoid collision with '_index.json' (page listing)\n */\nfunction pathToFilename(routePath: string): string {\n if (routePath === '/') return '_home.json';\n return (\n routePath\n .slice(1)\n // Replace special characters with underscores (?, *, :, etc.)\n .replace(/[^a-zA-Z0-9\\-\\/]/g, '_')\n // Replace slashes with dashes\n .replace(/\\//g, '-') + '.json'\n );\n}\n\n/**\n * Ensure a directory exists, creating it recursively if needed.\n */\nfunction ensureDir(dirPath: string): void {\n if (!fs.existsSync(dirPath)) {\n fs.mkdirSync(dirPath, { recursive: true });\n }\n}\n\n/**\n * Write JSON data to a file.\n */\nfunction writeJsonFile(filePath: string, data: unknown): number {\n const content = JSON.stringify(data, null, 2);\n fs.writeFileSync(filePath, content, 'utf-8');\n return Buffer.byteLength(content, 'utf-8');\n}\n\n/**\n * Calculate SHA256 checksum of object (excluding checksum field).\n */\nfunction calculateChecksum(data: Record<string, unknown>): string {\n const { checksum: _, ...rest } = data;\n const content = JSON.stringify(rest);\n return crypto.createHash('sha256').update(content).digest('hex');\n}\n\n// ============================================================================\n// Entry Fetching\n// ============================================================================\n\n/**\n * Fetch all entries for a content type using pagination.\n * Loops until all entries are retrieved.\n */\nasync function fetchAllEntries(\n client: RiverbankClient,\n siteId: string,\n contentType: string,\n onProgress?: (item: string) => void\n): Promise<EntriesResponse['entries']> {\n const allEntries: EntriesResponse['entries'] = [];\n let offset = 0;\n let hasMore = true;\n\n while (hasMore) {\n onProgress?.(`${contentType} (batch ${Math.floor(offset / PREBUILD_PAGE_SIZE) + 1})`);\n\n const response = await client.getEntries({\n siteId,\n contentType,\n limit: PREBUILD_PAGE_SIZE,\n offset,\n preview: false, // Published content only\n });\n\n allEntries.push(...response.entries);\n offset += PREBUILD_PAGE_SIZE;\n hasMore = response.entries.length === PREBUILD_PAGE_SIZE;\n }\n\n return allEntries;\n}\n\n// ============================================================================\n// Content Type Prebuild Functions\n// ============================================================================\n\nasync function prebuildSite(\n client: RiverbankClient,\n siteId: string,\n outputDir: string\n): Promise<{ files: string[]; size: number; siteData: SiteResponse }> {\n const site = await client.getSite({ id: siteId });\n const filename = 'site.json';\n const filePath = path.join(outputDir, filename);\n\n const cacheFile: SiteCacheFile = {\n data: site,\n generatedAt: new Date().toISOString(),\n };\n\n const size = writeJsonFile(filePath, cacheFile);\n return { files: [filename], size, siteData: site };\n}\n\nasync function prebuildPages(\n client: RiverbankClient,\n siteId: string,\n routes: Record<string, { path: string; status: string | null }>,\n outputDir: string,\n onProgress?: (progress: PrebuildProgress) => void\n): Promise<{ files: string[]; size: number; pathMappings: Record<string, string> }> {\n const pagesDir = path.join(outputDir, 'pages');\n ensureDir(pagesDir);\n\n const files: string[] = [];\n const pathMappings: Record<string, string> = {}; // path -> filename\n let totalSize = 0;\n\n // Filter to published routes only\n const publishedPaths = Object.entries(routes)\n .filter(([_, route]) => route.status === 'published')\n .map(([_, route]) => route.path);\n\n // Create page index\n const pageIndex: PageIndexFile['pages'] = [];\n\n const total = publishedPaths.length;\n let current = 0;\n\n for (const pagePath of publishedPaths) {\n current++;\n onProgress?.({\n current,\n total,\n item: `Page: ${pagePath}`,\n contentType: 'pages',\n });\n\n try {\n const pageData = await client.getPage({ siteId, path: pagePath, preview: false });\n const filename = pathToFilename(pagePath);\n const filePath = path.join(pagesDir, filename);\n\n const cacheFile: PageCacheFile = {\n data: pageData,\n path: pagePath,\n generatedAt: new Date().toISOString(),\n };\n\n totalSize += writeJsonFile(filePath, cacheFile);\n files.push(`pages/${filename}`);\n pathMappings[pagePath] = `pages/${filename}`;\n\n // Add to index (only for page type responses)\n if ('page' in pageData) {\n pageIndex.push({\n path: pagePath,\n pageId: pageData.page.routeId || '',\n title: pageData.page.name || 'Untitled',\n });\n }\n } catch (error) {\n // Log but continue - partial prebuild is okay\n console.warn(`[Prebuild] Failed to fetch page ${pagePath}:`, (error as Error).message);\n }\n }\n\n // Write page index (uses _index.json to avoid collision with home page)\n const indexFile: PageIndexFile = {\n pages: pageIndex,\n totalCount: pageIndex.length,\n generatedAt: new Date().toISOString(),\n };\n const indexPath = path.join(pagesDir, '_index.json');\n totalSize += writeJsonFile(indexPath, indexFile);\n files.push('pages/_index.json');\n\n return { files, size: totalSize, pathMappings };\n}\n\nasync function prebuildEntries(\n client: RiverbankClient,\n siteId: string,\n contentTypes: string[],\n outputDir: string,\n onProgress?: (progress: PrebuildProgress) => void\n): Promise<{ files: string[]; size: number }> {\n const entriesDir = path.join(outputDir, 'entries');\n ensureDir(entriesDir);\n\n const files: string[] = [];\n let totalSize = 0;\n\n const total = contentTypes.length;\n let current = 0;\n\n for (const contentType of contentTypes) {\n current++;\n\n const entries = await fetchAllEntries(\n client,\n siteId,\n contentType,\n (item) => {\n onProgress?.({\n current,\n total,\n item: `Entries: ${item}`,\n contentType: 'entries',\n });\n }\n );\n\n // Create content type directory\n const typeDir = path.join(entriesDir, contentType);\n ensureDir(typeDir);\n\n const cacheFile: EntriesCacheFile = {\n entries,\n contentType,\n totalCount: entries.length,\n generatedAt: new Date().toISOString(),\n };\n\n const filename = `entries/${contentType}/all.json`;\n const filePath = path.join(entriesDir, contentType, 'all.json');\n totalSize += writeJsonFile(filePath, cacheFile);\n files.push(filename);\n }\n\n return { files, size: totalSize };\n}\n\nasync function prebuildNavigation(\n siteData: SiteResponse,\n outputDir: string,\n onProgress?: (progress: PrebuildProgress) => void\n): Promise<{ files: string[]; size: number }> {\n const navDir = path.join(outputDir, 'navigation');\n ensureDir(navDir);\n\n const files: string[] = [];\n let totalSize = 0;\n\n // Navigation data comes from site response\n const menus = siteData.navigation || [];\n\n onProgress?.({\n current: 1,\n total: 1,\n item: 'Navigation menus',\n contentType: 'navigation',\n });\n\n const cacheFile: NavigationCacheFile = {\n menus: menus.map((menu) => ({\n identifier: menu.identifier,\n id: menu.id,\n name: menu.name,\n items: menu.items,\n })),\n generatedAt: new Date().toISOString(),\n };\n\n const filename = 'navigation/menus.json';\n const filePath = path.join(navDir, 'menus.json');\n totalSize += writeJsonFile(filePath, cacheFile);\n files.push(filename);\n\n return { files, size: totalSize };\n}\n\nasync function prebuildForms(\n client: RiverbankClient,\n siteId: string,\n outputDir: string,\n onProgress?: (progress: PrebuildProgress) => void\n): Promise<{ files: string[]; size: number }> {\n const formsDir = path.join(outputDir, 'forms');\n ensureDir(formsDir);\n\n const files: string[] = [];\n let totalSize = 0;\n\n onProgress?.({\n current: 1,\n total: 1,\n item: 'Forms',\n contentType: 'forms',\n });\n\n try {\n // Fetch forms via the public API endpoint\n const response = await client.getForms({ siteId });\n const forms = response.forms || [];\n\n const cacheFile: FormsCacheFile = {\n forms: forms.map((form) => ({\n id: form.id,\n slug: form.slug,\n name: form.name,\n schema: form.schema,\n settings: form.settings,\n })),\n totalCount: forms.length,\n generatedAt: new Date().toISOString(),\n };\n\n const filename = 'forms/forms.json';\n const filePath = path.join(formsDir, 'forms.json');\n totalSize += writeJsonFile(filePath, cacheFile);\n files.push(filename);\n } catch (error) {\n console.warn('[Prebuild] Failed to fetch forms:', (error as Error).message);\n }\n\n return { files, size: totalSize };\n}\n\n// ============================================================================\n// Main Prebuild Function\n// ============================================================================\n\n/**\n * Generate a prebuild cache for the specified site.\n *\n * The prebuild cache contains static JSON files that can serve as a\n * last-resort fallback when the CMS is unavailable.\n *\n * @param options - Prebuild configuration\n * @returns Result with generated files and metadata\n *\n * @example\n * ```typescript\n * import { createRiverbankClient, prebuildCache } from '@riverbankcms/sdk';\n *\n * const client = createRiverbankClient({ apiKey, baseUrl });\n *\n * const result = await prebuildCache({\n * client,\n * siteId: 'your-site-id',\n * outputDir: '.riverbank-cache',\n * onProgress: (p) => console.log(`${p.current}/${p.total}: ${p.item}`),\n * });\n *\n * console.log(`Generated ${result.files.length} files (${result.totalSize} bytes)`);\n * ```\n */\nexport async function prebuildCache(options: PrebuildOptions): Promise<PrebuildResult> {\n const {\n client,\n siteId,\n outputDir = DEFAULT_PREBUILD_DIR,\n include = ['site', 'pages', 'entries', 'navigation', 'forms'],\n contentTypes,\n onProgress,\n } = options;\n\n const generatedAt = new Date().toISOString();\n const files: string[] = [];\n let totalSize = 0;\n const errors: string[] = [];\n let siteData: SiteResponse | null = null;\n let pagePathMappings: Record<string, string> = {}; // path -> filename\n\n // Ensure output directory exists\n ensureDir(outputDir);\n\n // -------------------------------------------------------------------------\n // 1. Prebuild site data (always needed for routes and navigation)\n // -------------------------------------------------------------------------\n if (include.includes('site') || include.includes('pages') || include.includes('navigation')) {\n try {\n const result = await prebuildSite(client, siteId, outputDir);\n siteData = result.siteData;\n if (include.includes('site')) {\n files.push(...result.files);\n totalSize += result.size;\n }\n onProgress?.({ current: 1, total: 4, item: 'Site data', contentType: 'site' });\n } catch (error) {\n errors.push(`Site prebuild failed: ${(error as Error).message}`);\n }\n }\n\n // -------------------------------------------------------------------------\n // 2. Prebuild pages\n // -------------------------------------------------------------------------\n if (include.includes('pages') && siteData) {\n try {\n const result = await prebuildPages(\n client,\n siteId,\n siteData.routes,\n outputDir,\n onProgress\n );\n files.push(...result.files);\n totalSize += result.size;\n pagePathMappings = result.pathMappings;\n } catch (error) {\n errors.push(`Pages prebuild failed: ${(error as Error).message}`);\n }\n }\n\n // -------------------------------------------------------------------------\n // 3. Prebuild entries\n // -------------------------------------------------------------------------\n if (include.includes('entries')) {\n try {\n // Content types must be explicitly provided via options.contentTypes\n // (The API's sdkConfig doesn't include content type definitions)\n const typesToPrebuild = contentTypes || [];\n\n if (typesToPrebuild.length > 0) {\n const result = await prebuildEntries(\n client,\n siteId,\n typesToPrebuild,\n outputDir,\n onProgress\n );\n files.push(...result.files);\n totalSize += result.size;\n } else {\n console.warn('[Prebuild] No contentTypes provided - skipping entries prebuild');\n }\n } catch (error) {\n errors.push(`Entries prebuild failed: ${(error as Error).message}`);\n }\n }\n\n // -------------------------------------------------------------------------\n // 4. Prebuild navigation\n // -------------------------------------------------------------------------\n if (include.includes('navigation') && siteData) {\n try {\n const result = await prebuildNavigation(siteData, outputDir, onProgress);\n files.push(...result.files);\n totalSize += result.size;\n } catch (error) {\n errors.push(`Navigation prebuild failed: ${(error as Error).message}`);\n }\n }\n\n // -------------------------------------------------------------------------\n // 5. Prebuild forms\n // -------------------------------------------------------------------------\n if (include.includes('forms')) {\n try {\n const result = await prebuildForms(client, siteId, outputDir, onProgress);\n files.push(...result.files);\n totalSize += result.size;\n } catch (error) {\n errors.push(`Forms prebuild failed: ${(error as Error).message}`);\n }\n }\n\n // -------------------------------------------------------------------------\n // 6. Generate manifest\n // -------------------------------------------------------------------------\n const keyToFile: Record<string, string> = {};\n\n // Map cache keys to files\n if (files.includes('site.json')) {\n keyToFile[`site:${siteId}`] = 'site.json';\n }\n\n // Use path mappings for pages (avoids lossy filename-to-path conversion)\n for (const [pagePath, file] of Object.entries(pagePathMappings)) {\n keyToFile[`page:${siteId}:${pagePath}:false`] = file;\n }\n\n // Add entries keys (entries/{contentType}/all.json)\n for (const file of files.filter((f) => f.startsWith('entries/') && f.endsWith('/all.json'))) {\n const contentType = file.split('/')[1];\n keyToFile[`entries-all:${siteId}:${contentType}`] = file;\n }\n\n // Add forms key\n if (files.includes('forms/forms.json')) {\n keyToFile[`forms:${siteId}`] = 'forms/forms.json';\n }\n\n const manifest: Omit<PrebuildManifest, 'checksum'> & { checksum?: string } = {\n version: MANIFEST_VERSION,\n generatedAt,\n siteId,\n sdkVersion: SDK_VERSION,\n keyToFile,\n includedTypes: include,\n fileCount: files.length,\n totalSize,\n };\n\n // Calculate checksum\n const checksum = calculateChecksum(manifest as Record<string, unknown>);\n (manifest as PrebuildManifest).checksum = checksum;\n\n const manifestPath = path.join(outputDir, MANIFEST_FILENAME);\n writeJsonFile(manifestPath, manifest);\n\n return {\n success: errors.length === 0,\n outputDir,\n files,\n totalSize,\n generatedAt,\n checksum,\n errors: errors.length > 0 ? errors : undefined,\n };\n}\n\n// Re-export types\nexport type {\n PrebuildOptions,\n PrebuildResult,\n PrebuildProgress,\n PrebuildManifest,\n PrebuildContentType,\n} from './types';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/zod/titleSourceSchema.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const titleSourceValueSchema = z.union([\n z.string().min(1),\n z.array(z.string().min(1)).min(1),\n]);\n\nexport type TitleSourceValue = z.infer<typeof titleSourceValueSchema>;\n\n"],"mappings":";AAAA,SAAS,SAAS;AAEX,IAAM,yBAAyB,EAAE,MAAM;AAAA,EAC5C,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAChB,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,CAAC;","names":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var _chunk4TP7FU44js = require('./chunk-4TP7FU44.js');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkEFQNS3HSjs = require('./chunk-EFQNS3HS.js');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
var _chunkNICYAKAPjs = require('./chunk-NICYAKAP.js');
|
|
@@ -276,7 +276,7 @@ async function loadContent(params) {
|
|
|
276
276
|
purpose: pageData.purpose,
|
|
277
277
|
blocks
|
|
278
278
|
};
|
|
279
|
-
const resolvedData = await
|
|
279
|
+
const resolvedData = await _chunkEFQNS3HSjs.prefetchBlockData.call(void 0,
|
|
280
280
|
pageOutline,
|
|
281
281
|
{
|
|
282
282
|
siteId,
|
|
@@ -363,7 +363,7 @@ async function processEntryTemplate(templates, entry, context, client, options)
|
|
|
363
363
|
purpose: "entry-template",
|
|
364
364
|
blocks
|
|
365
365
|
};
|
|
366
|
-
const resolvedData = await
|
|
366
|
+
const resolvedData = await _chunkEFQNS3HSjs.prefetchBlockData.call(void 0,
|
|
367
367
|
templatePage,
|
|
368
368
|
{
|
|
369
369
|
siteId: context.siteId,
|
|
@@ -402,4 +402,4 @@ function resolveTemplateBlock(block, bindingContext) {
|
|
|
402
402
|
|
|
403
403
|
|
|
404
404
|
exports.isPageContent = isPageContent; exports.isEntryContent = isEntryContent; exports.loadContent = loadContent;
|
|
405
|
-
//# sourceMappingURL=chunk-
|
|
405
|
+
//# sourceMappingURL=chunk-WEEEYI47.js.map
|