@riverbankcms/sdk 0.1.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 +1892 -0
- package/dist/cli/index.js +327 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/client/analytics.d.mts +103 -0
- package/dist/client/analytics.d.ts +103 -0
- package/dist/client/analytics.js +197 -0
- package/dist/client/analytics.js.map +1 -0
- package/dist/client/analytics.mjs +169 -0
- package/dist/client/analytics.mjs.map +1 -0
- package/dist/client/bookings.d.mts +89 -0
- package/dist/client/bookings.d.ts +89 -0
- package/dist/client/bookings.js +34 -0
- package/dist/client/bookings.js.map +1 -0
- package/dist/client/bookings.mjs +11 -0
- package/dist/client/bookings.mjs.map +1 -0
- package/dist/client/client.d.mts +195 -0
- package/dist/client/client.d.ts +195 -0
- package/dist/client/client.js +606 -0
- package/dist/client/client.js.map +1 -0
- package/dist/client/client.mjs +572 -0
- package/dist/client/client.mjs.map +1 -0
- package/dist/client/hooks.d.mts +71 -0
- package/dist/client/hooks.d.ts +71 -0
- package/dist/client/hooks.js +264 -0
- package/dist/client/hooks.js.map +1 -0
- package/dist/client/hooks.mjs +235 -0
- package/dist/client/hooks.mjs.map +1 -0
- package/dist/client/rendering/client.d.mts +1 -0
- package/dist/client/rendering/client.d.ts +1 -0
- package/dist/client/rendering/client.js +33 -0
- package/dist/client/rendering/client.js.map +1 -0
- package/dist/client/rendering/client.mjs +8 -0
- package/dist/client/rendering/client.mjs.map +1 -0
- package/dist/client/usePage-BvKAa3Zw.d.mts +366 -0
- package/dist/client/usePage-BvKAa3Zw.d.ts +366 -0
- package/dist/server/chunk-2RW5HAQQ.mjs +86 -0
- package/dist/server/chunk-2RW5HAQQ.mjs.map +1 -0
- package/dist/server/chunk-3KKZVGH4.mjs +179 -0
- package/dist/server/chunk-3KKZVGH4.mjs.map +1 -0
- package/dist/server/chunk-4Z3GPTCS.js +179 -0
- package/dist/server/chunk-4Z3GPTCS.js.map +1 -0
- package/dist/server/chunk-4Z5FBFRL.mjs +211 -0
- package/dist/server/chunk-4Z5FBFRL.mjs.map +1 -0
- package/dist/server/chunk-ADREPXFU.js +86 -0
- package/dist/server/chunk-ADREPXFU.js.map +1 -0
- package/dist/server/chunk-F472SMKX.js +140 -0
- package/dist/server/chunk-F472SMKX.js.map +1 -0
- package/dist/server/chunk-GWBMJPLH.mjs +57 -0
- package/dist/server/chunk-GWBMJPLH.mjs.map +1 -0
- package/dist/server/chunk-JB4LIEFS.js +85 -0
- package/dist/server/chunk-JB4LIEFS.js.map +1 -0
- package/dist/server/chunk-PEAXKTDU.mjs +140 -0
- package/dist/server/chunk-PEAXKTDU.mjs.map +1 -0
- package/dist/server/chunk-QQ6U4QX6.js +120 -0
- package/dist/server/chunk-QQ6U4QX6.js.map +1 -0
- package/dist/server/chunk-R5YGLRUG.mjs +122 -0
- package/dist/server/chunk-R5YGLRUG.mjs.map +1 -0
- package/dist/server/chunk-SW7LE4M3.js +211 -0
- package/dist/server/chunk-SW7LE4M3.js.map +1 -0
- package/dist/server/chunk-W3K7LVPS.mjs +120 -0
- package/dist/server/chunk-W3K7LVPS.mjs.map +1 -0
- package/dist/server/chunk-WKG57P2H.mjs +85 -0
- package/dist/server/chunk-WKG57P2H.mjs.map +1 -0
- package/dist/server/chunk-YHEZMVTS.js +122 -0
- package/dist/server/chunk-YHEZMVTS.js.map +1 -0
- package/dist/server/chunk-YXDDFG3N.js +57 -0
- package/dist/server/chunk-YXDDFG3N.js.map +1 -0
- package/dist/server/components.d.mts +49 -0
- package/dist/server/components.d.ts +49 -0
- package/dist/server/components.js +22 -0
- package/dist/server/components.js.map +1 -0
- package/dist/server/components.mjs +22 -0
- package/dist/server/components.mjs.map +1 -0
- package/dist/server/config-validation.d.mts +300 -0
- package/dist/server/config-validation.d.ts +300 -0
- package/dist/server/config-validation.js +50 -0
- package/dist/server/config-validation.js.map +1 -0
- package/dist/server/config-validation.mjs +50 -0
- package/dist/server/config-validation.mjs.map +1 -0
- package/dist/server/config.d.mts +38 -0
- package/dist/server/config.d.ts +38 -0
- package/dist/server/config.js +44 -0
- package/dist/server/config.js.map +1 -0
- package/dist/server/config.mjs +44 -0
- package/dist/server/config.mjs.map +1 -0
- package/dist/server/data.d.mts +108 -0
- package/dist/server/data.d.ts +108 -0
- package/dist/server/data.js +15 -0
- package/dist/server/data.js.map +1 -0
- package/dist/server/data.mjs +15 -0
- package/dist/server/data.mjs.map +1 -0
- package/dist/server/index-B0yI_V6Z.d.mts +18 -0
- package/dist/server/index-C6M0Wfjq.d.ts +18 -0
- package/dist/server/index.d.mts +5 -0
- package/dist/server/index.d.ts +5 -0
- package/dist/server/index.js +12 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/index.mjs +12 -0
- package/dist/server/index.mjs.map +1 -0
- package/dist/server/loadContent-CJcbYF3J.d.ts +152 -0
- package/dist/server/loadContent-zhlL4YSE.d.mts +152 -0
- package/dist/server/loadPage-BYmVMk0V.d.ts +216 -0
- package/dist/server/loadPage-CCf15nt8.d.mts +216 -0
- package/dist/server/loadPage-DVH3DW6E.js +9 -0
- package/dist/server/loadPage-DVH3DW6E.js.map +1 -0
- package/dist/server/loadPage-PHQZ6XQZ.mjs +9 -0
- package/dist/server/loadPage-PHQZ6XQZ.mjs.map +1 -0
- package/dist/server/metadata.d.mts +135 -0
- package/dist/server/metadata.d.ts +135 -0
- package/dist/server/metadata.js +68 -0
- package/dist/server/metadata.js.map +1 -0
- package/dist/server/metadata.mjs +68 -0
- package/dist/server/metadata.mjs.map +1 -0
- package/dist/server/rendering/server.d.mts +83 -0
- package/dist/server/rendering/server.d.ts +83 -0
- package/dist/server/rendering/server.js +14 -0
- package/dist/server/rendering/server.js.map +1 -0
- package/dist/server/rendering/server.mjs +14 -0
- package/dist/server/rendering/server.mjs.map +1 -0
- package/dist/server/rendering.d.mts +12 -0
- package/dist/server/rendering.d.ts +12 -0
- package/dist/server/rendering.js +40 -0
- package/dist/server/rendering.js.map +1 -0
- package/dist/server/rendering.mjs +40 -0
- package/dist/server/rendering.mjs.map +1 -0
- package/dist/server/routing.d.mts +115 -0
- package/dist/server/routing.d.ts +115 -0
- package/dist/server/routing.js +57 -0
- package/dist/server/routing.js.map +1 -0
- package/dist/server/routing.mjs +57 -0
- package/dist/server/routing.mjs.map +1 -0
- package/dist/server/server.d.mts +9 -0
- package/dist/server/server.d.ts +9 -0
- package/dist/server/server.js +21 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/server.mjs +21 -0
- package/dist/server/server.mjs.map +1 -0
- package/dist/server/theme-bridge.d.mts +232 -0
- package/dist/server/theme-bridge.d.ts +232 -0
- package/dist/server/theme-bridge.js +231 -0
- package/dist/server/theme-bridge.js.map +1 -0
- package/dist/server/theme-bridge.mjs +231 -0
- package/dist/server/theme-bridge.mjs.map +1 -0
- package/dist/server/theme.d.mts +40 -0
- package/dist/server/theme.d.ts +40 -0
- package/dist/server/theme.js +17 -0
- package/dist/server/theme.js.map +1 -0
- package/dist/server/theme.mjs +17 -0
- package/dist/server/theme.mjs.map +1 -0
- package/dist/server/types-BCeqWtI2.d.mts +333 -0
- package/dist/server/types-BCeqWtI2.d.ts +333 -0
- package/dist/server/types-Bbo01M7P.d.mts +76 -0
- package/dist/server/types-Bbo01M7P.d.ts +76 -0
- package/dist/server/types-C6gmRHLe.d.mts +150 -0
- package/dist/server/types-C6gmRHLe.d.ts +150 -0
- package/package.json +147 -0
- package/src/styles/index.css +10 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
export { P as Page, b as PageProps } from '../loadPage-CCf15nt8.mjs';
|
|
2
|
+
export { HeaderData, Layout, LayoutProps } from '../components.mjs';
|
|
3
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { Theme } from '@riverbankcms/blocks';
|
|
6
|
+
import { R as RiverbankClient } from '../types-C6gmRHLe.mjs';
|
|
7
|
+
import '@riverbankcms/blocks/system/data';
|
|
8
|
+
import '../types-Bbo01M7P.mjs';
|
|
9
|
+
import '@riverbankcms/site-renderer';
|
|
10
|
+
import '@riverbankcms/api';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Override component for custom block rendering.
|
|
14
|
+
* Receives the same props as default block components.
|
|
15
|
+
*/
|
|
16
|
+
type BlockOverrideComponent = React.ComponentType<{
|
|
17
|
+
content: Record<string, unknown>;
|
|
18
|
+
theme?: Record<string, unknown>;
|
|
19
|
+
themeConfig?: Theme;
|
|
20
|
+
data?: Record<string, unknown>;
|
|
21
|
+
blockId?: string | null;
|
|
22
|
+
blockKind?: string;
|
|
23
|
+
}>;
|
|
24
|
+
type BlockProps = {
|
|
25
|
+
blockKind: string;
|
|
26
|
+
blockId?: string | null;
|
|
27
|
+
content: Record<string, unknown>;
|
|
28
|
+
theme: Theme;
|
|
29
|
+
siteId: string;
|
|
30
|
+
pageId?: string;
|
|
31
|
+
previewStage?: 'published' | 'preview';
|
|
32
|
+
client?: RiverbankClient;
|
|
33
|
+
usePlaceholders?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Custom component to override default block rendering.
|
|
36
|
+
* When provided, renders this component instead of the manifest-based default.
|
|
37
|
+
* This is SSR-safe - no context or hooks required.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```tsx
|
|
41
|
+
* <Block
|
|
42
|
+
* blockKind="block.hero"
|
|
43
|
+
* content={heroContent}
|
|
44
|
+
* theme={theme}
|
|
45
|
+
* siteId={siteId}
|
|
46
|
+
* override={MyCustomHero}
|
|
47
|
+
* />
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
override?: BlockOverrideComponent;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Renders a single CMS block with optional data loading.
|
|
54
|
+
*
|
|
55
|
+
* Use this component when you want to render individual blocks outside of a full page context,
|
|
56
|
+
* or when mixing CMS blocks with custom JSX.
|
|
57
|
+
*
|
|
58
|
+
* @example Basic usage
|
|
59
|
+
* ```tsx
|
|
60
|
+
* <Block
|
|
61
|
+
* blockKind="block.hero"
|
|
62
|
+
* content={{ headline: 'Welcome', subheadline: 'To our site' }}
|
|
63
|
+
* theme={theme}
|
|
64
|
+
* siteId="site-123"
|
|
65
|
+
* />
|
|
66
|
+
* ```
|
|
67
|
+
*
|
|
68
|
+
* @example With data loading
|
|
69
|
+
* ```tsx
|
|
70
|
+
* <Block
|
|
71
|
+
* blockKind="block.blog-listing"
|
|
72
|
+
* blockId="block-456"
|
|
73
|
+
* content={blockContent}
|
|
74
|
+
* theme={theme}
|
|
75
|
+
* siteId="site-123"
|
|
76
|
+
* pageId="page-789"
|
|
77
|
+
* client={client}
|
|
78
|
+
* />
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
declare function Block({ blockKind, blockId, content, theme, siteId, pageId, previewStage, client, usePlaceholders: _usePlaceholders, override: OverrideComponent, }: BlockProps): Promise<react_jsx_runtime.JSX.Element>;
|
|
82
|
+
|
|
83
|
+
export { Block, type BlockProps };
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
export { P as Page, b as PageProps } from '../loadPage-BYmVMk0V.js';
|
|
2
|
+
export { HeaderData, Layout, LayoutProps } from '../components.js';
|
|
3
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { Theme } from '@riverbankcms/blocks';
|
|
6
|
+
import { R as RiverbankClient } from '../types-C6gmRHLe.js';
|
|
7
|
+
import '@riverbankcms/blocks/system/data';
|
|
8
|
+
import '../types-Bbo01M7P.js';
|
|
9
|
+
import '@riverbankcms/site-renderer';
|
|
10
|
+
import '@riverbankcms/api';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Override component for custom block rendering.
|
|
14
|
+
* Receives the same props as default block components.
|
|
15
|
+
*/
|
|
16
|
+
type BlockOverrideComponent = React.ComponentType<{
|
|
17
|
+
content: Record<string, unknown>;
|
|
18
|
+
theme?: Record<string, unknown>;
|
|
19
|
+
themeConfig?: Theme;
|
|
20
|
+
data?: Record<string, unknown>;
|
|
21
|
+
blockId?: string | null;
|
|
22
|
+
blockKind?: string;
|
|
23
|
+
}>;
|
|
24
|
+
type BlockProps = {
|
|
25
|
+
blockKind: string;
|
|
26
|
+
blockId?: string | null;
|
|
27
|
+
content: Record<string, unknown>;
|
|
28
|
+
theme: Theme;
|
|
29
|
+
siteId: string;
|
|
30
|
+
pageId?: string;
|
|
31
|
+
previewStage?: 'published' | 'preview';
|
|
32
|
+
client?: RiverbankClient;
|
|
33
|
+
usePlaceholders?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Custom component to override default block rendering.
|
|
36
|
+
* When provided, renders this component instead of the manifest-based default.
|
|
37
|
+
* This is SSR-safe - no context or hooks required.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```tsx
|
|
41
|
+
* <Block
|
|
42
|
+
* blockKind="block.hero"
|
|
43
|
+
* content={heroContent}
|
|
44
|
+
* theme={theme}
|
|
45
|
+
* siteId={siteId}
|
|
46
|
+
* override={MyCustomHero}
|
|
47
|
+
* />
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
override?: BlockOverrideComponent;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Renders a single CMS block with optional data loading.
|
|
54
|
+
*
|
|
55
|
+
* Use this component when you want to render individual blocks outside of a full page context,
|
|
56
|
+
* or when mixing CMS blocks with custom JSX.
|
|
57
|
+
*
|
|
58
|
+
* @example Basic usage
|
|
59
|
+
* ```tsx
|
|
60
|
+
* <Block
|
|
61
|
+
* blockKind="block.hero"
|
|
62
|
+
* content={{ headline: 'Welcome', subheadline: 'To our site' }}
|
|
63
|
+
* theme={theme}
|
|
64
|
+
* siteId="site-123"
|
|
65
|
+
* />
|
|
66
|
+
* ```
|
|
67
|
+
*
|
|
68
|
+
* @example With data loading
|
|
69
|
+
* ```tsx
|
|
70
|
+
* <Block
|
|
71
|
+
* blockKind="block.blog-listing"
|
|
72
|
+
* blockId="block-456"
|
|
73
|
+
* content={blockContent}
|
|
74
|
+
* theme={theme}
|
|
75
|
+
* siteId="site-123"
|
|
76
|
+
* pageId="page-789"
|
|
77
|
+
* client={client}
|
|
78
|
+
* />
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
declare function Block({ blockKind, blockId, content, theme, siteId, pageId, previewStage, client, usePlaceholders: _usePlaceholders, override: OverrideComponent, }: BlockProps): Promise<react_jsx_runtime.JSX.Element>;
|
|
82
|
+
|
|
83
|
+
export { Block, type BlockProps };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkJB4LIEFSjs = require('../chunk-JB4LIEFS.js');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkYHEZMVTSjs = require('../chunk-YHEZMVTS.js');
|
|
8
|
+
require('../chunk-QQ6U4QX6.js');
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
exports.Block = _chunkJB4LIEFSjs.Block; exports.Layout = _chunkYHEZMVTSjs.Layout; exports.Page = _chunkYHEZMVTSjs.Page;
|
|
14
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/rendering/server.js"],"names":[],"mappings":"AAAA;AACE;AACF,uDAA6B;AAC7B;AACE;AACA;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACF,uHAAC","file":"/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/rendering/server.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { L as LoadPageParams, a as LoadPageResult, P as Page, b as PageProps, l as loadPage } from './loadPage-CCf15nt8.mjs';
|
|
2
|
+
export { HeaderData, Layout, LayoutProps } from './components.mjs';
|
|
3
|
+
export { Block, BlockProps } from './rendering/server.mjs';
|
|
4
|
+
export { C as ContentEntryData, L as LoadContentParams, b as LoadContentResult, a as isEntryContent, i as isPageContent, l as loadContent } from './loadContent-zhlL4YSE.mjs';
|
|
5
|
+
export { AppointmentBookingContent, BackgroundInput, BlockOverrideComponent, BlockOverrides, BlogListingContent, BlogPlaceholderContent, BlogPostContent, BodyTextContent, ColumnsContent, CtaFullContent, CustomLinkValue, EventCalendarContent, EventRegistrationContent, ExternalLinkValue, FaqContent, FormBlockContent, HeroContent, HeroMedia, InternalLinkValue, LinkValue, Media, PageOutline, PageRenderer, ResolvedBackground, RichText, RichTextPrimitiveProps, RouteMap, SectionBackground, SectionBackgroundProps, SiteFooterContent, SiteHeaderContent, SystemBlockComponentProps, TestimonialEntryContent, TestimonialsBlockContent, Theme, ThemeTokens, TipTapNode, buildThemeRuntime, resolveBackground, resolveImageUrl } from '@riverbankcms/blocks';
|
|
6
|
+
import './types-C6gmRHLe.mjs';
|
|
7
|
+
import '@riverbankcms/api';
|
|
8
|
+
import 'react/jsx-runtime';
|
|
9
|
+
import '@riverbankcms/blocks/system/data';
|
|
10
|
+
import './types-Bbo01M7P.mjs';
|
|
11
|
+
import '@riverbankcms/site-renderer';
|
|
12
|
+
import 'react';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { L as LoadPageParams, a as LoadPageResult, P as Page, b as PageProps, l as loadPage } from './loadPage-BYmVMk0V.js';
|
|
2
|
+
export { HeaderData, Layout, LayoutProps } from './components.js';
|
|
3
|
+
export { Block, BlockProps } from './rendering/server.js';
|
|
4
|
+
export { C as ContentEntryData, L as LoadContentParams, b as LoadContentResult, a as isEntryContent, i as isPageContent, l as loadContent } from './loadContent-CJcbYF3J.js';
|
|
5
|
+
export { AppointmentBookingContent, BackgroundInput, BlockOverrideComponent, BlockOverrides, BlogListingContent, BlogPlaceholderContent, BlogPostContent, BodyTextContent, ColumnsContent, CtaFullContent, CustomLinkValue, EventCalendarContent, EventRegistrationContent, ExternalLinkValue, FaqContent, FormBlockContent, HeroContent, HeroMedia, InternalLinkValue, LinkValue, Media, PageOutline, PageRenderer, ResolvedBackground, RichText, RichTextPrimitiveProps, RouteMap, SectionBackground, SectionBackgroundProps, SiteFooterContent, SiteHeaderContent, SystemBlockComponentProps, TestimonialEntryContent, TestimonialsBlockContent, Theme, ThemeTokens, TipTapNode, buildThemeRuntime, resolveBackground, resolveImageUrl } from '@riverbankcms/blocks';
|
|
6
|
+
import './types-C6gmRHLe.js';
|
|
7
|
+
import '@riverbankcms/api';
|
|
8
|
+
import 'react/jsx-runtime';
|
|
9
|
+
import '@riverbankcms/blocks/system/data';
|
|
10
|
+
import './types-Bbo01M7P.js';
|
|
11
|
+
import '@riverbankcms/site-renderer';
|
|
12
|
+
import 'react';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
var _chunkF472SMKXjs = require('./chunk-F472SMKX.js');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
var _chunkADREPXFUjs = require('./chunk-ADREPXFU.js');
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
var _chunkJB4LIEFSjs = require('./chunk-JB4LIEFS.js');
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
var _chunkYHEZMVTSjs = require('./chunk-YHEZMVTS.js');
|
|
16
|
+
require('./chunk-YXDDFG3N.js');
|
|
17
|
+
require('./chunk-QQ6U4QX6.js');
|
|
18
|
+
|
|
19
|
+
// src/rendering/index.ts
|
|
20
|
+
var _blocks = require('@riverbankcms/blocks');
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
exports.Block = _chunkJB4LIEFSjs.Block; exports.Layout = _chunkYHEZMVTSjs.Layout; exports.Page = _chunkYHEZMVTSjs.Page; exports.PageRenderer = _blocks.PageRenderer; exports.RichText = _blocks.RichText; exports.SectionBackground = _blocks.SectionBackground; exports.buildThemeRuntime = _blocks.buildThemeRuntime; exports.isEntryContent = _chunkF472SMKXjs.isEntryContent; exports.isPageContent = _chunkF472SMKXjs.isPageContent; exports.loadContent = _chunkF472SMKXjs.loadContent; exports.loadPage = _chunkADREPXFUjs.loadPage; exports.resolveBackground = _blocks.resolveBackground; exports.resolveImageUrl = _blocks.resolveImageUrl;
|
|
40
|
+
//# sourceMappingURL=rendering.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/rendering.js","../../src/rendering/index.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACA;ACMA,8CAA2E;AAyC3E;AACE;AACA;AAAA;AD3CF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,qnBAAC","file":"/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/rendering.js","sourcesContent":[null,"/**\n * Rendering components and utilities for Riverbank CMS\n *\n * These components allow you to render Builder pages and blocks\n * in your own application with ergonomic data fetching helpers.\n */\n\n// High-level components (recommended)\nexport { Page } from './components/Page';\nexport type { PageProps } from './components/Page';\n\nexport { Layout } from './components/Layout';\nexport type { LayoutProps, HeaderData } from './components/Layout';\n\nexport { Block } from './components/Block';\nexport type { BlockProps } from './components/Block';\n\n// Server-side helpers (also available via @riverbankcms/sdk/server)\nexport { loadPage } from './helpers/loadPage';\nexport type { LoadPageParams, LoadPageResult } from './helpers/loadPage';\nexport { loadContent, isPageContent, isEntryContent } from './helpers/loadContent';\nexport type { LoadContentParams, LoadContentResult, ContentEntryData } from './helpers/loadContent';\n\n// Low-level re-exports from @riverbankcms/blocks (for advanced usage)\nexport { PageRenderer, buildThemeRuntime, RichText, resolveImageUrl } from '@riverbankcms/blocks';\nexport type {\n PageOutline,\n RouteMap,\n Theme,\n ThemeTokens,\n BlockOverrides,\n BlockOverrideComponent,\n // For creating typed custom block components\n SystemBlockComponentProps,\n // Block content types - all system blocks\n HeroContent,\n HeroMedia,\n BodyTextContent,\n ColumnsContent,\n CtaFullContent,\n FaqContent,\n FormBlockContent,\n TestimonialsBlockContent,\n TestimonialEntryContent,\n BlogPostContent,\n BlogListingContent,\n BlogPlaceholderContent,\n SiteHeaderContent,\n SiteFooterContent,\n AppointmentBookingContent,\n EventCalendarContent,\n EventRegistrationContent,\n // Link types for block props\n LinkValue,\n InternalLinkValue,\n ExternalLinkValue,\n CustomLinkValue,\n // Media type\n Media,\n // Rich text types\n RichTextPrimitiveProps,\n TipTapNode,\n} from '@riverbankcms/blocks';\n\n// Helpers for custom block components\nexport {\n resolveBackground,\n SectionBackground,\n type BackgroundInput,\n type ResolvedBackground,\n type SectionBackgroundProps,\n} from '@riverbankcms/blocks';\n\n/**\n * @example Server-side rendering (Next.js App Router)\n * ```tsx\n * import { createRiverbankClient } from '@riverbankcms/sdk';\n * import { loadPage, Page } from '@riverbankcms/sdk/rendering';\n *\n * // Note: baseUrl must include the /api path\n * const client = createRiverbankClient({\n * apiKey: process.env.RIVERBANK_API_KEY,\n * baseUrl: process.env.NEXT_PUBLIC_DASHBOARD_URL + '/api',\n * });\n *\n * export default async function PageRoute({ params }) {\n * const pageData = await loadPage({\n * client,\n * siteId: 'site-id',\n * path: `/${params.slug || ''}`,\n * });\n *\n * return <Page {...pageData} />;\n * }\n * ```\n *\n * @example Client-side rendering\n * ```tsx\n * 'use client';\n * import { createRiverbankClient } from '@riverbankcms/sdk';\n * import { usePage } from '@riverbankcms/sdk/hooks';\n * import { Page } from '@riverbankcms/sdk/rendering';\n *\n * const client = createRiverbankClient({\n * apiKey: process.env.NEXT_PUBLIC_RIVERBANK_API_KEY,\n * baseUrl: process.env.NEXT_PUBLIC_DASHBOARD_URL + '/api',\n * });\n *\n * function MyPage({ path }) {\n * const pageData = usePage({ client, siteId: 'site-id', path });\n *\n * if (pageData.loading) return <div>Loading...</div>;\n * if (pageData.error) return <div>Error: {pageData.error.message}</div>;\n *\n * return <Page {...pageData} />;\n * }\n * ```\n */\n"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isEntryContent,
|
|
3
|
+
isPageContent,
|
|
4
|
+
loadContent
|
|
5
|
+
} from "./chunk-PEAXKTDU.mjs";
|
|
6
|
+
import {
|
|
7
|
+
loadPage
|
|
8
|
+
} from "./chunk-2RW5HAQQ.mjs";
|
|
9
|
+
import {
|
|
10
|
+
Block
|
|
11
|
+
} from "./chunk-WKG57P2H.mjs";
|
|
12
|
+
import {
|
|
13
|
+
Layout,
|
|
14
|
+
Page
|
|
15
|
+
} from "./chunk-R5YGLRUG.mjs";
|
|
16
|
+
import "./chunk-GWBMJPLH.mjs";
|
|
17
|
+
import "./chunk-W3K7LVPS.mjs";
|
|
18
|
+
|
|
19
|
+
// src/rendering/index.ts
|
|
20
|
+
import { PageRenderer, buildThemeRuntime, RichText, resolveImageUrl } from "@riverbankcms/blocks";
|
|
21
|
+
import {
|
|
22
|
+
resolveBackground,
|
|
23
|
+
SectionBackground
|
|
24
|
+
} from "@riverbankcms/blocks";
|
|
25
|
+
export {
|
|
26
|
+
Block,
|
|
27
|
+
Layout,
|
|
28
|
+
Page,
|
|
29
|
+
PageRenderer,
|
|
30
|
+
RichText,
|
|
31
|
+
SectionBackground,
|
|
32
|
+
buildThemeRuntime,
|
|
33
|
+
isEntryContent,
|
|
34
|
+
isPageContent,
|
|
35
|
+
loadContent,
|
|
36
|
+
loadPage,
|
|
37
|
+
resolveBackground,
|
|
38
|
+
resolveImageUrl
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=rendering.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/rendering/index.ts"],"sourcesContent":["/**\n * Rendering components and utilities for Riverbank CMS\n *\n * These components allow you to render Builder pages and blocks\n * in your own application with ergonomic data fetching helpers.\n */\n\n// High-level components (recommended)\nexport { Page } from './components/Page';\nexport type { PageProps } from './components/Page';\n\nexport { Layout } from './components/Layout';\nexport type { LayoutProps, HeaderData } from './components/Layout';\n\nexport { Block } from './components/Block';\nexport type { BlockProps } from './components/Block';\n\n// Server-side helpers (also available via @riverbankcms/sdk/server)\nexport { loadPage } from './helpers/loadPage';\nexport type { LoadPageParams, LoadPageResult } from './helpers/loadPage';\nexport { loadContent, isPageContent, isEntryContent } from './helpers/loadContent';\nexport type { LoadContentParams, LoadContentResult, ContentEntryData } from './helpers/loadContent';\n\n// Low-level re-exports from @riverbankcms/blocks (for advanced usage)\nexport { PageRenderer, buildThemeRuntime, RichText, resolveImageUrl } from '@riverbankcms/blocks';\nexport type {\n PageOutline,\n RouteMap,\n Theme,\n ThemeTokens,\n BlockOverrides,\n BlockOverrideComponent,\n // For creating typed custom block components\n SystemBlockComponentProps,\n // Block content types - all system blocks\n HeroContent,\n HeroMedia,\n BodyTextContent,\n ColumnsContent,\n CtaFullContent,\n FaqContent,\n FormBlockContent,\n TestimonialsBlockContent,\n TestimonialEntryContent,\n BlogPostContent,\n BlogListingContent,\n BlogPlaceholderContent,\n SiteHeaderContent,\n SiteFooterContent,\n AppointmentBookingContent,\n EventCalendarContent,\n EventRegistrationContent,\n // Link types for block props\n LinkValue,\n InternalLinkValue,\n ExternalLinkValue,\n CustomLinkValue,\n // Media type\n Media,\n // Rich text types\n RichTextPrimitiveProps,\n TipTapNode,\n} from '@riverbankcms/blocks';\n\n// Helpers for custom block components\nexport {\n resolveBackground,\n SectionBackground,\n type BackgroundInput,\n type ResolvedBackground,\n type SectionBackgroundProps,\n} from '@riverbankcms/blocks';\n\n/**\n * @example Server-side rendering (Next.js App Router)\n * ```tsx\n * import { createRiverbankClient } from '@riverbankcms/sdk';\n * import { loadPage, Page } from '@riverbankcms/sdk/rendering';\n *\n * // Note: baseUrl must include the /api path\n * const client = createRiverbankClient({\n * apiKey: process.env.RIVERBANK_API_KEY,\n * baseUrl: process.env.NEXT_PUBLIC_DASHBOARD_URL + '/api',\n * });\n *\n * export default async function PageRoute({ params }) {\n * const pageData = await loadPage({\n * client,\n * siteId: 'site-id',\n * path: `/${params.slug || ''}`,\n * });\n *\n * return <Page {...pageData} />;\n * }\n * ```\n *\n * @example Client-side rendering\n * ```tsx\n * 'use client';\n * import { createRiverbankClient } from '@riverbankcms/sdk';\n * import { usePage } from '@riverbankcms/sdk/hooks';\n * import { Page } from '@riverbankcms/sdk/rendering';\n *\n * const client = createRiverbankClient({\n * apiKey: process.env.NEXT_PUBLIC_RIVERBANK_API_KEY,\n * baseUrl: process.env.NEXT_PUBLIC_DASHBOARD_URL + '/api',\n * });\n *\n * function MyPage({ path }) {\n * const pageData = usePage({ client, siteId: 'site-id', path });\n *\n * if (pageData.loading) return <div>Loading...</div>;\n * if (pageData.error) return <div>Error: {pageData.error.message}</div>;\n *\n * return <Page {...pageData} />;\n * }\n * ```\n */\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAwBA,SAAS,cAAc,mBAAmB,UAAU,uBAAuB;AAyC3E;AAAA,EACE;AAAA,EACA;AAAA,OAIK;","names":[]}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { R as RiverbankClient } from './types-C6gmRHLe.mjs';
|
|
2
|
+
import { a as LoadPageResult } from './loadPage-CCf15nt8.mjs';
|
|
3
|
+
import '@riverbankcms/api';
|
|
4
|
+
import 'react/jsx-runtime';
|
|
5
|
+
import '@riverbankcms/blocks';
|
|
6
|
+
import '@riverbankcms/blocks/system/data';
|
|
7
|
+
import './types-Bbo01M7P.mjs';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Route resolution helper for dynamic page routing
|
|
11
|
+
*
|
|
12
|
+
* Resolves URL paths to pages, entries, redirects, or 404s.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
type RouteResolution = {
|
|
16
|
+
type: 'page';
|
|
17
|
+
pageData: LoadPageResult;
|
|
18
|
+
} | {
|
|
19
|
+
type: 'redirect';
|
|
20
|
+
destination: string;
|
|
21
|
+
permanent: boolean;
|
|
22
|
+
} | {
|
|
23
|
+
type: 'not-found';
|
|
24
|
+
};
|
|
25
|
+
type ResolveRouteParams = {
|
|
26
|
+
/**
|
|
27
|
+
* Builder client instance
|
|
28
|
+
*/
|
|
29
|
+
client: RiverbankClient;
|
|
30
|
+
/**
|
|
31
|
+
* Site ID
|
|
32
|
+
*/
|
|
33
|
+
siteId: string;
|
|
34
|
+
/**
|
|
35
|
+
* URL path to resolve (e.g., '/about', '/blog/post-1')
|
|
36
|
+
*/
|
|
37
|
+
path: string;
|
|
38
|
+
/**
|
|
39
|
+
* If true, fetches draft/unpublished content instead of published content.
|
|
40
|
+
* @default false
|
|
41
|
+
*/
|
|
42
|
+
preview?: boolean;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Resolve a URL path to page data, redirect, or 404
|
|
46
|
+
*
|
|
47
|
+
* This helper attempts to fetch the page at the given path and returns
|
|
48
|
+
* a discriminated union indicating whether the page was found or not.
|
|
49
|
+
*
|
|
50
|
+
* **Note:** Redirect support is not yet implemented. The `redirect` type
|
|
51
|
+
* exists in the return type for future compatibility, but this function
|
|
52
|
+
* currently only returns `page` or `not-found` types.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```tsx
|
|
56
|
+
* import { resolveRoute } from '@riverbankcms/sdk/routing';
|
|
57
|
+
* import { notFound, redirect } from 'next/navigation';
|
|
58
|
+
*
|
|
59
|
+
* export default async function DynamicPage({ params }) {
|
|
60
|
+
* const path = `/${params.slug?.join('/') || ''}`;
|
|
61
|
+
* const resolution = await resolveRoute({
|
|
62
|
+
* client,
|
|
63
|
+
* siteId: 'your-site-id',
|
|
64
|
+
* path,
|
|
65
|
+
* });
|
|
66
|
+
*
|
|
67
|
+
* if (resolution.type === 'redirect') {
|
|
68
|
+
* redirect(resolution.destination);
|
|
69
|
+
* }
|
|
70
|
+
*
|
|
71
|
+
* if (resolution.type === 'not-found') {
|
|
72
|
+
* notFound();
|
|
73
|
+
* }
|
|
74
|
+
*
|
|
75
|
+
* // resolution.type === 'page'
|
|
76
|
+
* return <Page {...resolution.pageData} />;
|
|
77
|
+
* }
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
declare function resolveRoute(params: ResolveRouteParams): Promise<RouteResolution>;
|
|
81
|
+
/**
|
|
82
|
+
* Batch resolve multiple routes in parallel
|
|
83
|
+
*
|
|
84
|
+
* Useful for pre-fetching multiple routes or validating a sitemap.
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```tsx
|
|
88
|
+
* const resolutions = await resolveRoutes({
|
|
89
|
+
* client,
|
|
90
|
+
* siteId: 'your-site-id',
|
|
91
|
+
* paths: ['/', '/about', '/blog', '/contact'],
|
|
92
|
+
* });
|
|
93
|
+
*
|
|
94
|
+
* resolutions.forEach(({ path, resolution }) => {
|
|
95
|
+
* if (resolution.type === 'page') {
|
|
96
|
+
* console.log(`${path} → Page: ${resolution.pageData.page.name}`);
|
|
97
|
+
* } else if (resolution.type === 'redirect') {
|
|
98
|
+
* console.log(`${path} → Redirect to ${resolution.destination}`);
|
|
99
|
+
* } else {
|
|
100
|
+
* console.log(`${path} → Not found`);
|
|
101
|
+
* }
|
|
102
|
+
* });
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
declare function resolveRoutes(params: {
|
|
106
|
+
client: RiverbankClient;
|
|
107
|
+
siteId: string;
|
|
108
|
+
paths: string[];
|
|
109
|
+
preview?: boolean;
|
|
110
|
+
}): Promise<Array<{
|
|
111
|
+
path: string;
|
|
112
|
+
resolution: RouteResolution;
|
|
113
|
+
}>>;
|
|
114
|
+
|
|
115
|
+
export { type ResolveRouteParams, type RouteResolution, resolveRoute, resolveRoutes };
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { R as RiverbankClient } from './types-C6gmRHLe.js';
|
|
2
|
+
import { a as LoadPageResult } from './loadPage-BYmVMk0V.js';
|
|
3
|
+
import '@riverbankcms/api';
|
|
4
|
+
import 'react/jsx-runtime';
|
|
5
|
+
import '@riverbankcms/blocks';
|
|
6
|
+
import '@riverbankcms/blocks/system/data';
|
|
7
|
+
import './types-Bbo01M7P.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Route resolution helper for dynamic page routing
|
|
11
|
+
*
|
|
12
|
+
* Resolves URL paths to pages, entries, redirects, or 404s.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
type RouteResolution = {
|
|
16
|
+
type: 'page';
|
|
17
|
+
pageData: LoadPageResult;
|
|
18
|
+
} | {
|
|
19
|
+
type: 'redirect';
|
|
20
|
+
destination: string;
|
|
21
|
+
permanent: boolean;
|
|
22
|
+
} | {
|
|
23
|
+
type: 'not-found';
|
|
24
|
+
};
|
|
25
|
+
type ResolveRouteParams = {
|
|
26
|
+
/**
|
|
27
|
+
* Builder client instance
|
|
28
|
+
*/
|
|
29
|
+
client: RiverbankClient;
|
|
30
|
+
/**
|
|
31
|
+
* Site ID
|
|
32
|
+
*/
|
|
33
|
+
siteId: string;
|
|
34
|
+
/**
|
|
35
|
+
* URL path to resolve (e.g., '/about', '/blog/post-1')
|
|
36
|
+
*/
|
|
37
|
+
path: string;
|
|
38
|
+
/**
|
|
39
|
+
* If true, fetches draft/unpublished content instead of published content.
|
|
40
|
+
* @default false
|
|
41
|
+
*/
|
|
42
|
+
preview?: boolean;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Resolve a URL path to page data, redirect, or 404
|
|
46
|
+
*
|
|
47
|
+
* This helper attempts to fetch the page at the given path and returns
|
|
48
|
+
* a discriminated union indicating whether the page was found or not.
|
|
49
|
+
*
|
|
50
|
+
* **Note:** Redirect support is not yet implemented. The `redirect` type
|
|
51
|
+
* exists in the return type for future compatibility, but this function
|
|
52
|
+
* currently only returns `page` or `not-found` types.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```tsx
|
|
56
|
+
* import { resolveRoute } from '@riverbankcms/sdk/routing';
|
|
57
|
+
* import { notFound, redirect } from 'next/navigation';
|
|
58
|
+
*
|
|
59
|
+
* export default async function DynamicPage({ params }) {
|
|
60
|
+
* const path = `/${params.slug?.join('/') || ''}`;
|
|
61
|
+
* const resolution = await resolveRoute({
|
|
62
|
+
* client,
|
|
63
|
+
* siteId: 'your-site-id',
|
|
64
|
+
* path,
|
|
65
|
+
* });
|
|
66
|
+
*
|
|
67
|
+
* if (resolution.type === 'redirect') {
|
|
68
|
+
* redirect(resolution.destination);
|
|
69
|
+
* }
|
|
70
|
+
*
|
|
71
|
+
* if (resolution.type === 'not-found') {
|
|
72
|
+
* notFound();
|
|
73
|
+
* }
|
|
74
|
+
*
|
|
75
|
+
* // resolution.type === 'page'
|
|
76
|
+
* return <Page {...resolution.pageData} />;
|
|
77
|
+
* }
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
declare function resolveRoute(params: ResolveRouteParams): Promise<RouteResolution>;
|
|
81
|
+
/**
|
|
82
|
+
* Batch resolve multiple routes in parallel
|
|
83
|
+
*
|
|
84
|
+
* Useful for pre-fetching multiple routes or validating a sitemap.
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```tsx
|
|
88
|
+
* const resolutions = await resolveRoutes({
|
|
89
|
+
* client,
|
|
90
|
+
* siteId: 'your-site-id',
|
|
91
|
+
* paths: ['/', '/about', '/blog', '/contact'],
|
|
92
|
+
* });
|
|
93
|
+
*
|
|
94
|
+
* resolutions.forEach(({ path, resolution }) => {
|
|
95
|
+
* if (resolution.type === 'page') {
|
|
96
|
+
* console.log(`${path} → Page: ${resolution.pageData.page.name}`);
|
|
97
|
+
* } else if (resolution.type === 'redirect') {
|
|
98
|
+
* console.log(`${path} → Redirect to ${resolution.destination}`);
|
|
99
|
+
* } else {
|
|
100
|
+
* console.log(`${path} → Not found`);
|
|
101
|
+
* }
|
|
102
|
+
* });
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
declare function resolveRoutes(params: {
|
|
106
|
+
client: RiverbankClient;
|
|
107
|
+
siteId: string;
|
|
108
|
+
paths: string[];
|
|
109
|
+
preview?: boolean;
|
|
110
|
+
}): Promise<Array<{
|
|
111
|
+
path: string;
|
|
112
|
+
resolution: RouteResolution;
|
|
113
|
+
}>>;
|
|
114
|
+
|
|
115
|
+
export { type ResolveRouteParams, type RouteResolution, resolveRoute, resolveRoutes };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }// src/routing/resolveRoute.ts
|
|
2
|
+
async function resolveRoute(params) {
|
|
3
|
+
const { client, siteId, path, preview = false } = params;
|
|
4
|
+
try {
|
|
5
|
+
const pageResponse = await client.getPage({
|
|
6
|
+
siteId,
|
|
7
|
+
path,
|
|
8
|
+
preview
|
|
9
|
+
});
|
|
10
|
+
if (pageResponse) {
|
|
11
|
+
const { loadPage } = await Promise.resolve().then(() => _interopRequireWildcard(require("./loadPage-DVH3DW6E.js")));
|
|
12
|
+
const pageData = await loadPage({
|
|
13
|
+
client,
|
|
14
|
+
siteId,
|
|
15
|
+
path,
|
|
16
|
+
preview
|
|
17
|
+
});
|
|
18
|
+
return {
|
|
19
|
+
type: "page",
|
|
20
|
+
pageData
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
} catch (error) {
|
|
24
|
+
const is404 = error instanceof Error && (error.message.includes("404") || error.message.includes("Not Found") || error.message.includes("not found"));
|
|
25
|
+
if (is404) {
|
|
26
|
+
console.debug("[resolveRoute] Page not found", { path });
|
|
27
|
+
} else {
|
|
28
|
+
console.warn("[resolveRoute] Failed to fetch page", {
|
|
29
|
+
path,
|
|
30
|
+
error: error instanceof Error ? error.message : String(error)
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
type: "not-found"
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
async function resolveRoutes(params) {
|
|
39
|
+
const { client, siteId, paths, preview } = params;
|
|
40
|
+
const resolutions = await Promise.all(
|
|
41
|
+
paths.map(async (path) => {
|
|
42
|
+
const resolution = await resolveRoute({
|
|
43
|
+
client,
|
|
44
|
+
siteId,
|
|
45
|
+
path,
|
|
46
|
+
preview
|
|
47
|
+
});
|
|
48
|
+
return { path, resolution };
|
|
49
|
+
})
|
|
50
|
+
);
|
|
51
|
+
return resolutions;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
exports.resolveRoute = resolveRoute; exports.resolveRoutes = resolveRoutes;
|
|
57
|
+
//# sourceMappingURL=routing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/routing.js","../../src/routing/resolveRoute.ts"],"names":[],"mappings":"AAAA;ACkFA,MAAA,SAAsB,YAAA,CACpB,MAAA,EAC0B;AAC1B,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,QAAA,EAAU,MAAM,EAAA,EAAI,MAAA;AAElD,EAAA,IAAI;AAEF,IAAA,MAAM,aAAA,EAAe,MAAM,MAAA,CAAO,OAAA,CAAQ;AAAA,MACxC,MAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,IACF,CAAC,CAAA;AAED,IAAA,GAAA,CAAI,YAAA,EAAc;AAEhB,MAAA,MAAM,EAAE,SAAS,EAAA,EAAI,MAAM,4DAAA,CAAO,wBAA+B,GAAA;AACjE,MAAA,MAAM,SAAA,EAAW,MAAM,QAAA,CAAS;AAAA,QAC9B,MAAA;AAAA,QACA,MAAA;AAAA,QACA,IAAA;AAAA,QACA;AAAA,MACF,CAAC,CAAA;AAED,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,MAAA;AAAA,QACN;AAAA,MACF,CAAA;AAAA,IACF;AAAA,EACF,EAAA,MAAA,CAAS,KAAA,EAAO;AAEd,IAAA,MAAM,MAAA,EAAQ,MAAA,WAAiB,MAAA,GAAA,CAC5B,KAAA,CAAM,OAAA,CAAQ,QAAA,CAAS,KAAK,EAAA,GAC5B,KAAA,CAAM,OAAA,CAAQ,QAAA,CAAS,WAAW,EAAA,GAClC,KAAA,CAAM,OAAA,CAAQ,QAAA,CAAS,WAAW,CAAA,CAAA;AAErC,IAAA,GAAA,CAAI,KAAA,EAAO;AACT,MAAA,OAAA,CAAQ,KAAA,CAAM,+BAAA,EAAiC,EAAE,KAAK,CAAC,CAAA;AAAA,IACzD,EAAA,KAAO;AAEL,MAAA,OAAA,CAAQ,IAAA,CAAK,qCAAA,EAAuC;AAAA,QAClD,IAAA;AAAA,QACA,KAAA,EAAO,MAAA,WAAiB,MAAA,EAAQ,KAAA,CAAM,QAAA,EAAU,MAAA,CAAO,KAAK;AAAA,MAC9D,CAAC,CAAA;AAAA,IACH;AAAA,EACF;AAIA,EAAA,OAAO;AAAA,IACL,IAAA,EAAM;AAAA,EACR,CAAA;AACF;AA0BA,MAAA,SAAsB,aAAA,CAAc,MAAA,EAK8B;AAChE,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,QAAQ,EAAA,EAAI,MAAA;AAE3C,EAAA,MAAM,YAAA,EAAc,MAAM,OAAA,CAAQ,GAAA;AAAA,IAChC,KAAA,CAAM,GAAA,CAAI,MAAA,CAAO,IAAA,EAAA,GAAS;AACxB,MAAA,MAAM,WAAA,EAAa,MAAM,YAAA,CAAa;AAAA,QACpC,MAAA;AAAA,QACA,MAAA;AAAA,QACA,IAAA;AAAA,QACA;AAAA,MACF,CAAC,CAAA;AAED,MAAA,OAAO,EAAE,IAAA,EAAM,WAAW,CAAA;AAAA,IAC5B,CAAC;AAAA,EACH,CAAA;AAEA,EAAA,OAAO,WAAA;AACT;ADjIA;AACE;AACA;AACF,2EAAC","file":"/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/routing.js","sourcesContent":[null,"/**\n * Route resolution helper for dynamic page routing\n *\n * Resolves URL paths to pages, entries, redirects, or 404s.\n */\n\nimport type { RiverbankClient } from '../client/types';\nimport type { LoadPageResult } from '../rendering/helpers/loadPage';\n\nexport type RouteResolution =\n | {\n type: 'page';\n pageData: LoadPageResult;\n }\n | {\n type: 'redirect';\n destination: string;\n permanent: boolean;\n }\n | {\n type: 'not-found';\n };\n\nexport type ResolveRouteParams = {\n /**\n * Builder client instance\n */\n client: RiverbankClient;\n\n /**\n * Site ID\n */\n siteId: string;\n\n /**\n * URL path to resolve (e.g., '/about', '/blog/post-1')\n */\n path: string;\n\n /**\n * If true, fetches draft/unpublished content instead of published content.\n * @default false\n */\n preview?: boolean;\n};\n\n/**\n * Resolve a URL path to page data, redirect, or 404\n *\n * This helper attempts to fetch the page at the given path and returns\n * a discriminated union indicating whether the page was found or not.\n *\n * **Note:** Redirect support is not yet implemented. The `redirect` type\n * exists in the return type for future compatibility, but this function\n * currently only returns `page` or `not-found` types.\n *\n * @example\n * ```tsx\n * import { resolveRoute } from '@riverbankcms/sdk/routing';\n * import { notFound, redirect } from 'next/navigation';\n *\n * export default async function DynamicPage({ params }) {\n * const path = `/${params.slug?.join('/') || ''}`;\n * const resolution = await resolveRoute({\n * client,\n * siteId: 'your-site-id',\n * path,\n * });\n *\n * if (resolution.type === 'redirect') {\n * redirect(resolution.destination);\n * }\n *\n * if (resolution.type === 'not-found') {\n * notFound();\n * }\n *\n * // resolution.type === 'page'\n * return <Page {...resolution.pageData} />;\n * }\n * ```\n */\nexport async function resolveRoute(\n params: ResolveRouteParams\n): Promise<RouteResolution> {\n const { client, siteId, path, preview = false } = params;\n\n try {\n // Attempt to fetch page data\n const pageResponse = await client.getPage({\n siteId,\n path,\n preview,\n });\n\n if (pageResponse) {\n // Successfully found page - load full page data\n const { loadPage } = await import('../rendering/helpers/loadPage');\n const pageData = await loadPage({\n client,\n siteId,\n path,\n preview,\n });\n\n return {\n type: 'page',\n pageData,\n };\n }\n } catch (error) {\n // Distinguish between expected 404s and unexpected errors\n const is404 = error instanceof Error &&\n (error.message.includes('404') ||\n error.message.includes('Not Found') ||\n error.message.includes('not found'));\n\n if (is404) {\n console.debug('[resolveRoute] Page not found', { path });\n } else {\n // Unexpected error - log as warning for visibility\n console.warn('[resolveRoute] Failed to fetch page', {\n path,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n\n // No page found - return not-found\n // Note: Redirect support will be added when client.getRedirect() API is available\n return {\n type: 'not-found',\n };\n}\n\n/**\n * Batch resolve multiple routes in parallel\n *\n * Useful for pre-fetching multiple routes or validating a sitemap.\n *\n * @example\n * ```tsx\n * const resolutions = await resolveRoutes({\n * client,\n * siteId: 'your-site-id',\n * paths: ['/', '/about', '/blog', '/contact'],\n * });\n *\n * resolutions.forEach(({ path, resolution }) => {\n * if (resolution.type === 'page') {\n * console.log(`${path} → Page: ${resolution.pageData.page.name}`);\n * } else if (resolution.type === 'redirect') {\n * console.log(`${path} → Redirect to ${resolution.destination}`);\n * } else {\n * console.log(`${path} → Not found`);\n * }\n * });\n * ```\n */\nexport async function resolveRoutes(params: {\n client: RiverbankClient;\n siteId: string;\n paths: string[];\n preview?: boolean;\n}): Promise<Array<{ path: string; resolution: RouteResolution }>> {\n const { client, siteId, paths, preview } = params;\n\n const resolutions = await Promise.all(\n paths.map(async (path) => {\n const resolution = await resolveRoute({\n client,\n siteId,\n path,\n preview,\n });\n\n return { path, resolution };\n })\n );\n\n return resolutions;\n}\n"]}
|