@riverbankcms/sdk 0.96.0 → 0.99.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.
Files changed (208) hide show
  1. package/README.md +20 -1
  2. package/dist/{PreviewEditorSidebar-46VT4QVU.mjs → PreviewEditorSidebar-TPOKCCKY.mjs} +3 -3
  3. package/dist/{PreviewEditorUI-JD75GE5F.mjs → PreviewEditorUI-Y347GLC2.mjs} +3 -3
  4. package/dist/SdkPreviewModeRuntime-OGTXRQ4M.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +36 -36
  6. package/dist/_dts/api/src/billing.d.ts +2 -0
  7. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +35 -1
  8. package/dist/_dts/api/src/bookingOperations.d.ts +246 -0
  9. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +5 -1
  10. package/dist/_dts/api/src/contentRuntime.d.ts +109 -40
  11. package/dist/_dts/api/src/endpoints.d.ts +88 -0
  12. package/dist/_dts/api/src/index.d.ts +3 -2
  13. package/dist/_dts/api/src/public/endpoints.d.ts +1 -1
  14. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +10 -0
  15. package/dist/_dts/api/src/sdkContracts.d.ts +2 -0
  16. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +2 -1
  17. package/dist/_dts/api/src/siteOperations.d.ts +65 -1
  18. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +7 -1
  19. package/dist/_dts/billing/src/site-arrangements.d.ts +151 -0
  20. package/dist/_dts/billing/src/subscriptions/store.d.ts +2 -0
  21. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/resolveThumbnail.d.ts +2 -1
  22. package/dist/_dts/blocks/src/PageRenderer.d.ts +8 -1
  23. package/dist/_dts/blocks/src/bindings/types.d.ts +0 -4
  24. package/dist/_dts/blocks/src/client/site-chrome.d.ts +7 -0
  25. package/dist/_dts/blocks/src/contracts/index.d.ts +1 -0
  26. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +12 -12
  27. package/dist/_dts/blocks/src/primitives/content/primitives.d.ts +4 -0
  28. package/dist/_dts/blocks/src/system/blocks/events/shared/index.d.ts +1 -0
  29. package/dist/_dts/blocks/src/system/blocks/events/shared/layout.d.ts +2 -0
  30. package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -0
  31. package/dist/_dts/blocks/src/system/blocks/weekly-slot-availability.d.ts +34 -0
  32. package/dist/_dts/blocks/src/system/componentFactory.d.ts +1 -0
  33. package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
  34. package/dist/_dts/blocks/src/system/customize/facets.d.ts +2 -2
  35. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  36. package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +4 -1
  37. package/dist/_dts/blocks/src/system/node/builder.d.ts +2 -0
  38. package/dist/_dts/blocks/src/system/node/schema.d.ts +13 -0
  39. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  40. package/dist/_dts/blocks/src/system/registry.d.ts +1 -0
  41. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -1
  42. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
  43. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +24 -0
  44. package/dist/_dts/blocks/src/system/runtime/components/booking/DatePicker.d.ts +6 -2
  45. package/dist/_dts/blocks/src/system/runtime/components/booking/SuccessMessage.d.ts +3 -1
  46. package/dist/_dts/blocks/src/system/runtime/components/booking/TimeSlotSelector.d.ts +10 -4
  47. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +6 -0
  48. package/dist/_dts/blocks/src/system/runtime/hooks/useAppointmentCheckoutVerification.d.ts +7 -0
  49. package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableSlots.d.ts +2 -2
  50. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +2 -2
  51. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +4 -0
  52. package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +5 -0
  53. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +11 -0
  54. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/StepIndicator.d.ts +3 -1
  55. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +14 -0
  56. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +8 -2
  57. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +133 -2
  58. package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.client.controller.d.ts +3 -0
  59. package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.client.d.ts +9 -0
  60. package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.client.state.d.ts +14 -0
  61. package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.server.d.ts +10 -0
  62. package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.view.d.ts +11 -0
  63. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +31 -1
  64. package/dist/_dts/blocks/src/system/runtime/shared/components/FeedbackMessage.d.ts +2 -1
  65. package/dist/_dts/blocks/src/system/runtime/{nodes/event-registration → shared/components}/SelectableOptionCard.d.ts +11 -2
  66. package/dist/_dts/blocks/src/system/runtime/shared/components/StepIndicator.d.ts +16 -5
  67. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -0
  68. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  69. package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.d.ts +5 -0
  70. package/dist/_dts/blocks/src/utils/date-formatting.d.ts +18 -2
  71. package/dist/_dts/content-editor/src/primitives/PreviewInlineTextEditor.d.ts +1 -1
  72. package/dist/_dts/content-editor/src/primitives/PreviewRichTextEditor.d.ts +1 -1
  73. package/dist/_dts/content-model/src/templates/defaults.d.ts +5 -5
  74. package/dist/_dts/content-model/src/templates/types.d.ts +2 -6
  75. package/dist/_dts/core/src/branded.d.ts +8 -0
  76. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +767 -20
  77. package/dist/_dts/field-primitives/src/bindings/index.d.ts +8 -0
  78. package/dist/_dts/sdk/src/__mocks__/next-cache.d.ts +1 -1
  79. package/dist/_dts/sdk/src/cli/commands/push/publishGuidance.d.ts +15 -0
  80. package/dist/_dts/sdk/src/cli/commands/push/scopes/commandBackedDatedOfferingScope.d.ts +2 -1
  81. package/dist/_dts/sdk/src/cli/commands/push/scopes/types.d.ts +3 -1
  82. package/dist/_dts/sdk/src/cli/commands/push/stale-resolution.d.ts +9 -3
  83. package/dist/_dts/sdk/src/cli/commands/push/workflowPlan.d.ts +34 -0
  84. package/dist/_dts/sdk/src/cli/commands/push.d.ts +13 -0
  85. package/dist/_dts/sdk/src/cli/commands/setup.d.ts +2 -0
  86. package/dist/_dts/sdk/src/cli/config-loader.d.ts +2 -0
  87. package/dist/_dts/sdk/src/cli/content/metadataStore.d.ts +29 -0
  88. package/dist/_dts/sdk/src/cli/content/reader.d.ts +16 -14
  89. package/dist/_dts/sdk/src/cli/content/writer.d.ts +6 -4
  90. package/dist/_dts/sdk/src/cli/env-scope.d.ts +2 -0
  91. package/dist/_dts/sdk/src/cli/helpers.d.ts +6 -7
  92. package/dist/_dts/sdk/src/cli/merge-remote/entryMergePush.d.ts +2 -0
  93. package/dist/_dts/sdk/src/cli/merge-remote/entryMergeReport.d.ts +6 -18
  94. package/dist/_dts/sdk/src/cli/merge-remote/entrySnapshots.d.ts +2 -4
  95. package/dist/_dts/sdk/src/cli/merge-remote/pageMergePush.d.ts +2 -0
  96. package/dist/_dts/sdk/src/cli/merge-remote/pageMergeReport.d.ts +6 -18
  97. package/dist/_dts/sdk/src/cli/merge-remote/pageSnapshots.d.ts +2 -4
  98. package/dist/_dts/sdk/src/cli/merge-remote/sharedBaseSnapshots.d.ts +32 -0
  99. package/dist/_dts/sdk/src/cli/merge-remote/sharedMergePlan.d.ts +27 -0
  100. package/dist/_dts/sdk/src/cli/merge-remote/sharedMergeReport.d.ts +63 -0
  101. package/dist/_dts/sdk/src/cli/push-config.d.ts +13 -2
  102. package/dist/_dts/sdk/src/cli/setup/setupPlan.d.ts +51 -0
  103. package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +21 -0
  104. package/dist/_dts/sdk/src/client/index.d.ts +6 -0
  105. package/dist/_dts/sdk/src/client/runtimeCachePolicy.d.ts +1 -1
  106. package/dist/_dts/sdk/src/client/types.d.ts +18 -2
  107. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  108. package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
  109. package/dist/_dts/sdk/src/contracts/bindings.d.ts +3 -7
  110. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +13 -0
  111. package/dist/_dts/sdk/src/data/prefetchBlockData.d.ts +6 -1
  112. package/dist/_dts/sdk/src/next/route-outcome-proxy.d.ts +3 -3
  113. package/dist/_dts/sdk/src/next/types.d.ts +19 -0
  114. package/dist/_dts/sdk/src/prebuild/loader.d.ts +8 -1
  115. package/dist/_dts/sdk/src/public-api/contracts.d.ts +174 -78
  116. package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
  117. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -0
  118. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +4 -0
  119. package/dist/_dts/sdk/src/rendering/helpers/bindings.d.ts +4 -4
  120. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +58 -1
  121. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +8 -0
  122. package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +2 -2
  123. package/dist/_dts/sdk/src/rendering/index.d.ts +7 -7
  124. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +18 -66
  125. package/dist/_dts/sdk/src/rendering/overrides.d.ts +2 -0
  126. package/dist/_dts/sdk/src/routing/resolveRoute.d.ts +18 -0
  127. package/dist/_dts/sdk/src/test/apiClient.d.ts +17 -0
  128. package/dist/_dts/sdk/src/test/bunDom.setup.d.ts +1 -0
  129. package/dist/_dts/sdk/src/test/env.d.ts +4 -0
  130. package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
  131. package/dist/_dts/sdk/src/version.d.ts +1 -1
  132. package/dist/_dts/site-commands/src/commands.d.ts +3 -3
  133. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  134. package/dist/_dts/theme-core/src/interactive/generateBaseCSS.d.ts +6 -0
  135. package/dist/_dts/theme-core/src/status/contextualColors.d.ts +6 -0
  136. package/dist/_dts/theme-core/src/status/index.d.ts +1 -0
  137. package/dist/{chunk-VHIMXQ7Z.mjs → chunk-4HXF2QLH.mjs} +2 -2
  138. package/dist/{chunk-VTPPVAOL.mjs → chunk-EMJIT3ZJ.mjs} +1 -1
  139. package/dist/{chunk-4TLTV7OB.mjs → chunk-PM7HGDHM.mjs} +2 -2
  140. package/dist/{chunk-XMATDBXO.mjs → chunk-XO34WBBP.mjs} +2139 -1348
  141. package/dist/{chunk-EL55VV6Q.mjs → chunk-YGTTEVUM.mjs} +31 -10
  142. package/dist/{chunk-7ED5UNHL.mjs → chunk-YWTCCOSF.mjs} +117 -0
  143. package/dist/cli/index.mjs +2690 -1503
  144. package/dist/cli/init-docs/content/cli-reference.md +29 -1
  145. package/dist/cli/init-docs/content/getting-started.md +8 -0
  146. package/dist/cli/init-docs/content/workflow-agent-safe-sync.md +3 -1
  147. package/dist/cli/init-docs/content/workflow-preview-mode.md +6 -0
  148. package/dist/cli/init-docs/content/workflow-remote-setup.md +51 -0
  149. package/dist/client/{accordion-GUNXIIZR.mjs → accordion-QSUEYL4L.mjs} +2 -2
  150. package/dist/client/{bookingForm-AOU4VHP5.mjs → bookingForm-QYGAHPDP.mjs} +376 -302
  151. package/dist/client/bookings.mjs +795 -429
  152. package/dist/client/{carousel-4QSX2JPC.mjs → carousel-SM2LEWAU.mjs} +3 -3
  153. package/dist/client/{cart-JKN6C4ZB.mjs → cart-3N3SFKNQ.mjs} +7 -7
  154. package/dist/client/{checkout-YY6YMITW.mjs → checkout-YFAYPKPZ.mjs} +7 -7
  155. package/dist/client/{chunk-SY543WZ3.mjs → chunk-5DLGREUB.mjs} +1 -1
  156. package/dist/client/{chunk-A3YN7M3G.mjs → chunk-CLZ7NBSP.mjs} +147 -75
  157. package/dist/client/{chunk-GWCRCJLB.mjs → chunk-CYJ3MUFP.mjs} +18 -6
  158. package/dist/client/{chunk-JNE6UI6U.mjs → chunk-H3H3ODO7.mjs} +1 -1
  159. package/dist/client/{chunk-CPKMJVBD.mjs → chunk-HPEQ4YWW.mjs} +83 -109
  160. package/dist/client/{chunk-PCHACQEB.mjs → chunk-IIUIKJ4K.mjs} +15 -7
  161. package/dist/client/{chunk-TNGL2WJF.mjs → chunk-IOAHWAQG.mjs} +18 -0
  162. package/dist/client/{chunk-6H27K6AA.mjs → chunk-JTKBF3W2.mjs} +10 -4
  163. package/dist/client/{chunk-OLAOAZEO.mjs → chunk-K7KTSACR.mjs} +1 -1
  164. package/dist/client/{chunk-BFCJZODD.mjs → chunk-R32M5HFS.mjs} +6 -6
  165. package/dist/client/{chunk-VJROUYOQ.mjs → chunk-WEVT46PX.mjs} +3 -3
  166. package/dist/client/{chunk-H7A6PUGM.mjs → chunk-ZU65LTI3.mjs} +1 -1
  167. package/dist/client/client.mjs +5052 -4083
  168. package/dist/client/{courseRegistration-UU2KMPSQ.mjs → courseRegistration-LYBE7VVK.mjs} +7 -7
  169. package/dist/client/{eventCalendar-WIVNS2TM.mjs → eventCalendar-FMTB75X6.mjs} +9 -9
  170. package/dist/client/{eventCombined-P3G5MW4J.mjs → eventCombined-E4LUCJXT.mjs} +9 -9
  171. package/dist/client/{eventDetails-2VHJ2RDG.mjs → eventDetails-GELSRR4Z.mjs} +9 -9
  172. package/dist/client/{eventListing-TGO6JI3R.mjs → eventListing-TB623B6R.mjs} +9 -9
  173. package/dist/client/{eventRegistration-B46HEJES.mjs → eventRegistration-NRIKHXTI.mjs} +9 -9
  174. package/dist/client/{form-VKRTFUNQ.mjs → form-Y4U4IAXE.mjs} +3 -3
  175. package/dist/client/{headerSection-XUX4ZJLO.mjs → headerSection-QSOVV5P7.mjs} +3 -3
  176. package/dist/client/hooks.mjs +1776 -1355
  177. package/dist/client/{locationMap-NQFI5MJO.mjs → locationMap-QYCAHH7H.mjs} +3 -3
  178. package/dist/client/{newsletterForm-P2GETCQK.mjs → newsletterForm-NWHY5TBY.mjs} +3 -3
  179. package/dist/client/{productDetail-7NQ7O5IF.mjs → productDetail-FYDMU2CE.mjs} +7 -7
  180. package/dist/client/{productList-RX6ZJ7BL.mjs → productList-D76CGACQ.mjs} +7 -7
  181. package/dist/client/rendering/client.mjs +2990 -2470
  182. package/dist/client/rendering/islands.mjs +19 -19
  183. package/dist/client/rendering.mjs +3236 -2236
  184. package/dist/client/{shop-BHN5AKY6.mjs → shop-SOUACT5N.mjs} +7 -7
  185. package/dist/preview-next/before-render.mjs +117 -0
  186. package/dist/preview-next/client/runtime.mjs +5 -5
  187. package/dist/preview-next/middleware.mjs +117 -0
  188. package/dist/{sdk-runtime-X2LXQ5IC.mjs → sdk-runtime-XPVE3LBA.mjs} +6 -6
  189. package/dist/server/components.mjs +3115 -2484
  190. package/dist/server/config-template-validation.mjs +6 -2
  191. package/dist/server/config-validation.mjs +1961 -1580
  192. package/dist/server/config.mjs +1961 -1580
  193. package/dist/server/data.mjs +1762 -1352
  194. package/dist/server/index.mjs +266 -33
  195. package/dist/server/next/middleware.mjs +2 -2
  196. package/dist/server/next.mjs +3399 -2504
  197. package/dist/server/page-converter.mjs +1553 -1295
  198. package/dist/server/prebuild-loader.mjs +42 -23
  199. package/dist/server/prebuild.mjs +1 -1
  200. package/dist/server/rendering/server.mjs +3151 -2489
  201. package/dist/server/rendering.mjs +3363 -2555
  202. package/dist/server/routing.mjs +1877 -1388
  203. package/dist/server/server.mjs +2057 -1402
  204. package/dist/server/theme-bridge.mjs +597 -505
  205. package/dist/server/theme.mjs +5 -4
  206. package/dist/styles/index.css +499 -490
  207. package/package.json +6 -4
  208. package/dist/SdkPreviewModeRuntime-MJUSYUFB.mjs +0 -8
@@ -7,6 +7,7 @@
7
7
  import type { MediaAssetIndexItem, RouteMap, Theme } from '../../contracts';
8
8
  import type { RiverbankClient, PageResponse, SiteResponse } from '../../client/types';
9
9
  import type { PageProps } from '../components/Page';
10
+ import { prefetchBlockData } from '../../data/prefetchBlockData';
10
11
  import type { ResolvedBlockData } from '../../data/prefetchBlockData';
11
12
  import type { SdkCustomBlock } from '../../config/types';
12
13
  import { type RuntimeSdkConfig } from './pageRuntimeSupport';
@@ -18,6 +19,7 @@ export type LoadContentParams = {
18
19
  client: RiverbankClient;
19
20
  siteId: string;
20
21
  path: string;
22
+ contentContract?: 'compat' | 'native';
21
23
  /**
22
24
  * When true, forces a fresh site config fetch (bypasses caches).
23
25
  * Useful right after `riverbankcms push-config` in development.
@@ -168,10 +170,62 @@ export type EntryContentResult = {
168
170
  /** Canonical media assets for resolving identifier-only media values in preview/edit UIs. */
169
171
  mediaAssets?: readonly MediaAssetIndexItem[];
170
172
  };
173
+ export type PageSurfaceContentData = {
174
+ id: string;
175
+ routeId: string;
176
+ readinessState: 'shippable';
177
+ subject: {
178
+ kind: 'eventSeries';
179
+ eventSeriesId: string;
180
+ };
181
+ title: string;
182
+ slug: string | null;
183
+ path: string | null;
184
+ status: string;
185
+ publishAt: string | null;
186
+ content: Record<string, unknown>;
187
+ metaTitle: string | null;
188
+ metaDescription: string | null;
189
+ createdAt: string;
190
+ updatedAt: string;
191
+ contentSource: {
192
+ kind: 'pageSurface';
193
+ contentTypeId: string;
194
+ contentTypeKey: string;
195
+ templateKey: string | null;
196
+ };
197
+ };
198
+ /**
199
+ * Result when path resolves to a native page surface.
200
+ */
201
+ export type PageSurfaceContentResult = {
202
+ type: 'pageSurface';
203
+ pageSurface: PageSurfaceContentData;
204
+ templatePage: PageProps['page'] | null;
205
+ resolvedData: ResolvedBlockData;
206
+ bookingOfferingPresets?: PageProps['bookingOfferingPresets'];
207
+ dataContext: {
208
+ pageSurface: Record<string, unknown>;
209
+ subject: PageSurfaceContentData['subject'];
210
+ };
211
+ theme: Theme;
212
+ siteId: string;
213
+ customBlocks?: SdkCustomBlock[];
214
+ site: SiteData;
215
+ sdkConfig: RuntimeSdkConfig | null;
216
+ supabaseUrl?: string;
217
+ routeMap?: RouteMap;
218
+ pagesByIdentifier?: Record<string, string>;
219
+ entriesByIdentifier?: Record<string, Record<string, string>>;
220
+ mediaAssets?: readonly MediaAssetIndexItem[];
221
+ };
171
222
  /**
172
223
  * Discriminated union result from loadContent
173
224
  */
174
- export type LoadContentResult = PageContentResult | EntryContentResult;
225
+ export type LoadContentResult = PageContentResult | EntryContentResult | PageSurfaceContentResult;
226
+ export type LoadContentDeps = Readonly<{
227
+ prefetchBlockData: typeof prefetchBlockData;
228
+ }>;
175
229
  /**
176
230
  * Type guard to check if result is a page
177
231
  */
@@ -180,6 +234,7 @@ export declare function isPageContent(result: LoadContentResult): result is Page
180
234
  * Type guard to check if result is an entry
181
235
  */
182
236
  export declare function isEntryContent(result: LoadContentResult): result is EntryContentResult;
237
+ export declare function isPageSurfaceContent(result: LoadContentResult): result is PageSurfaceContentResult;
183
238
  /**
184
239
  * Server-side helper to fetch content by path.
185
240
  *
@@ -240,4 +295,6 @@ export declare function isEntryContent(result: LoadContentResult): result is Ent
240
295
  * ```
241
296
  */
242
297
  export declare function loadContent(params: LoadContentParams): Promise<LoadContentResult>;
298
+ export declare function loadContentWithDeps(deps: LoadContentDeps, params: LoadContentParams): Promise<LoadContentResult>;
243
299
  export declare function loadContentFromContentResponse(params: LoadContentFromContentResponseParams): Promise<LoadContentResult>;
300
+ export declare function loadContentFromContentResponseWithDeps(deps: LoadContentDeps, params: LoadContentFromContentResponseParams): Promise<LoadContentResult>;
@@ -5,6 +5,8 @@
5
5
  */
6
6
  import type { RiverbankClient } from '../../client/types';
7
7
  import type { PageProps } from '../components/Page';
8
+ import { prefetchBlockData } from '../../data/prefetchBlockData';
9
+ import { executeCodeLoaders, mergeLoaderResults } from '../../data/executeCodeLoaders';
8
10
  import type { DataLoaderOverrides } from '../../data/types';
9
11
  import { type RuntimeSdkConfig } from './pageRuntimeSupport';
10
12
  /**
@@ -84,6 +86,11 @@ export type LoadPageResult = Omit<PageProps, 'registry' | 'wrapBlock' | 'usePlac
84
86
  */
85
87
  sdkConfig: RuntimeSdkConfig | null;
86
88
  };
89
+ export type LoadPageDeps = Readonly<{
90
+ prefetchBlockData: typeof prefetchBlockData;
91
+ executeCodeLoaders: typeof executeCodeLoaders;
92
+ mergeLoaderResults: typeof mergeLoaderResults;
93
+ }>;
87
94
  /**
88
95
  * Server-side helper to fetch all data needed for <Page> component.
89
96
  *
@@ -142,3 +149,4 @@ export type LoadPageResult = Omit<PageProps, 'registry' | 'wrapBlock' | 'usePlac
142
149
  * ```
143
150
  */
144
151
  export declare function loadPage(params: LoadPageParams): Promise<LoadPageResult>;
152
+ export declare function loadPageWithDeps(deps: LoadPageDeps, params: LoadPageParams): Promise<LoadPageResult>;
@@ -36,11 +36,11 @@ export type UsePageResult = {
36
36
  siteId: string;
37
37
  resolvedData: null;
38
38
  sdkConfig: null;
39
- } | {
39
+ } | ({
40
40
  loading: false;
41
41
  error: null;
42
42
  sdkConfig: RuntimeSdkConfig | null;
43
- } & Omit<PageProps, 'registry' | 'wrapBlock' | 'usePlaceholders' | 'sdkConfig'>;
43
+ } & Omit<PageProps, 'registry' | 'wrapBlock' | 'usePlaceholders' | 'sdkConfig'>);
44
44
  /**
45
45
  * Client-side React hook to fetch all data needed for <Page> component.
46
46
  *
@@ -8,22 +8,22 @@ export { Page } from './components/Page';
8
8
  export type { PageProps } from './components/Page';
9
9
  export { Layout } from './components/Layout';
10
10
  export type { LayoutProps, HeaderData, FooterData } from './components/Layout';
11
- export type { SdkThemeResponsiveMode, SdkThemeRuntime, } from './themeRuntime';
11
+ export type { SdkThemeResponsiveMode, SdkThemeRuntime } from './themeRuntime';
12
12
  export { Block } from './components/Block';
13
13
  export type { BlockProps } from './components/Block';
14
14
  export { loadPage } from './helpers/loadPage';
15
15
  export type { LoadPageParams, LoadPageResult } from './helpers/loadPage';
16
- export { loadContent, isPageContent, isEntryContent } from './helpers/loadContent';
17
- export type { LoadContentParams, LoadContentResult, ContentEntryData, PagePreviewMetadata, SiteData } from './helpers/loadContent';
16
+ export { loadContent, isPageContent, isEntryContent, isPageSurfaceContent, } from './helpers/loadContent';
17
+ export type { LoadContentParams, LoadContentResult, ContentEntryData, PagePreviewMetadata, SiteData, } from './helpers/loadContent';
18
18
  export type { AppointmentBookingContent, BlogListingContent, BlogPostContent, BodyTextAlignment, BodyTextContent, ButtonVariant, CalendarTabViews, CardStylesContent, CollectionContent, ColumnsContent, ColumnOption, ContainerStylesContent, CourseDetailsContent, CourseRegistrationContent, CtaFullContent, DisplayMode, EmbedContent, EventCalendarContent, EventDetailsContent, EventLayout, EventListingContent, EventRegistrationContent, EventSpotlightContent, FaqContent, FaqItem, FilterAutoShow, FormBlockContent, GiftingContent, HeroContent, HeroCta, HeroCtaInput, HeroMedia, ImageColSize, ImageGalleryContent, LayoutAlign, LayoutWidth, Media, MediaTextAlignment, MediaTextAspectRatio, MediaTextContent, MediaTextImagePosition, NewsletterSignupContent, NewsletterSignupPreset, TipTapNode, TipTapMark, LinkValue, InternalLinkValue, ExternalLinkValue, CustomLinkValue, PageLinkValue, EntryLinkValue, RichTextPrimitiveProps, RichTextVariant, PageOutline, BlockOutline, RouteMap, RouteMapEntry, OccurrenceContextData, EntrySubrouteContextData, Theme, ThemeTokens, SectionStylesContent, SemanticSpacing, ShopContent, SingleButtonContent, SiteFooterContent, SiteHeaderContent, StackContentAlignment, StackImagePosition, SystemBlockContentByFullKind, SystemBlockContentByKind, SystemBlockContentFor, SystemBlockShortKind, TeamMembersContent, TestimonialEntryContent, TestimonialsBlockContent, ThumbnailPadding, ThumbnailShape, VideoGridContent, WeekStart, MediaAssetIndexItem, ImageOptions, ResolveImageUrlContext, ResolveImageUrlContextInput, ResolveImageSourceSetOptions, ResolvedImageSourceSet, } from '../contracts';
19
19
  export { ImagePresets } from '../contracts';
20
20
  export { RichText } from './primitives/RichText';
21
21
  export { resolveImageUrl, resolveImageUrlWithContext, resolveImageSourceSetWithContext, } from './image';
22
- export { PageRenderer, } from './blocks-page-renderer';
23
- export { ThemeScope, } from './blocks-theme-scope';
24
- export { buildThemeRuntime, } from './blocks-theme-runtime';
22
+ export { PageRenderer } from './blocks-page-renderer';
23
+ export { ThemeScope } from './blocks-theme-scope';
24
+ export { buildThemeRuntime } from './blocks-theme-runtime';
25
25
  export type { ComponentRegistry, PageRendererDataContext, PageRendererProps, SdkConfigForRenderer, } from './blocks-page-renderer';
26
- export type { ThemeScopeProps, } from './blocks-theme-scope';
26
+ export type { ThemeScopeProps } from './blocks-theme-scope';
27
27
  export type { BlockOverrideProps, BlockOverrideComponent, BlockOverrideRegistration, BlockOverrideRegistrations, BlockOverrides, CustomBlockOverrideKey, KnownSystemBlockOverrides, KnownBlockOverrideKey, LazyBlockOverrideFactory, LazyBlockOverrideRegistration, StrictBlockOverrideRegistrations, StrictBlockOverrides, SystemBlockOverrideKey, } from './overrides';
28
28
  export { defineBlockOverrideRegistrations, defineBlockOverrides, defineLazyBlockOverride, } from './overrides';
29
29
  /**
@@ -1,8 +1,7 @@
1
- import type { Media } from '../../contracts';
2
- import type { EventScheduleScope, EventSurfacePreset } from '../../contracts/system-block-content';
1
+ import type { EventScheduleScope as SystemEventScheduleScope, EventSurfacePreset as SystemEventSurfacePreset } from '../../contracts/system-block-content';
3
2
  import type { PublicTeamMemberSummary } from '../../../../api/src/index';
4
3
  import type { BookingFlexibleBalanceConfig, BookingInstalmentPlanConfig, LocationCoordinates, PublicCoursePriceDisplay, PublicEventPriceDisplay, PublicEventPricing, PublicEventPricingType } from '../../../../core/src/index';
5
- import type { AccordionIslandProps as BlocksAccordionIslandProps, BookingFormConfig as BlocksBookingFormConfig, BookingFormInteractiveIslandProps as BlocksBookingFormIslandProps, BookingFormService as BlocksBookingFormService, CarouselIslandProps as BlocksCarouselIslandProps, CourseRegistrationInteractiveIslandProps as BlocksCourseRegistrationIslandProps, CartDisplay as BlocksCartDisplay, CartInteractiveIslandProps as BlocksCartIslandProps, CartLineDisplay as BlocksCartLineDisplay, CheckoutDisplay as BlocksCheckoutDisplay, CheckoutInteractiveIslandProps as BlocksCheckoutIslandProps, EventCalendarInteractiveIslandProps as BlocksEventCalendarIslandProps, EventCombinedInteractiveIslandProps as BlocksEventCombinedIslandProps, EventDetailsContentEntry as BlocksEventDetailsContentEntry, EventDetailsIslandProps as BlocksEventDetailsIslandProps, EventDetailsOccurrenceContext as BlocksEventDetailsOccurrenceContext, LocationMapIslandProps as BlocksLocationMapIslandProps, EventRegistrationInteractiveIslandProps as BlocksEventRegistrationIslandProps, EventListingDisplay as BlocksEventListingDisplay, EventListingHydration as BlocksEventListingHydration, EventListingInteractiveIslandProps as BlocksEventListingIslandProps, FormInteractiveIslandProps as BlocksFormIslandProps, HeaderSectionIslandProps as BlocksHeaderSectionIslandProps, MembershipCardDisplay as BlocksMembershipCardDisplay, NewsletterFormInteractiveIslandProps as BlocksNewsletterFormIslandProps, PassCardDisplay as BlocksPassCardDisplay, PassesMembershipsDisplay as BlocksPassesMembershipsDisplay, ProductCardDisplay as BlocksProductCardDisplay, ProductDetailDisplay as BlocksProductDetailDisplay, ProductDetailInteractiveIslandProps as BlocksProductDetailIslandProps, ProductListDisplay as BlocksProductListDisplay, ProductListInteractiveIslandProps as BlocksProductListIslandProps, ProductVariantOptionDisplay as BlocksProductVariantOptionDisplay, ShopInteractiveIslandProps as BlocksShopIslandProps } from '../../../../blocks/src/contracts/index';
4
+ import type { AccordionIslandProps as BlocksAccordionIslandProps, BookingFormConfig as BlocksBookingFormConfig, BookingFormInteractiveIslandProps as BlocksBookingFormIslandProps, BookingFormService as BlocksBookingFormService, CarouselIslandProps as BlocksCarouselIslandProps, CourseRegistrationInteractiveIslandProps as BlocksCourseRegistrationIslandProps, CartDisplay as BlocksCartDisplay, CartInteractiveIslandProps as BlocksCartIslandProps, CartLineDisplay as BlocksCartLineDisplay, CheckoutDisplay as BlocksCheckoutDisplay, CheckoutInteractiveIslandProps as BlocksCheckoutIslandProps, EventCalendarInteractiveIslandProps as BlocksEventCalendarIslandProps, EventCombinedInteractiveIslandProps as BlocksEventCombinedIslandProps, EventDetailsContentEntry as BlocksEventDetailsContentEntry, EventDetailsIslandProps as BlocksEventDetailsIslandProps, EventDetailsOccurrenceContext as BlocksEventDetailsOccurrenceContext, LocationMapIslandProps as BlocksLocationMapIslandProps, EventRegistrationInteractiveIslandProps as BlocksEventRegistrationIslandProps, EventListingDisplay as BlocksEventListingDisplay, EventListingHydration as BlocksEventListingHydration, EventListingInteractiveIslandProps as BlocksEventListingIslandProps, PublicEvent as BlocksPublicEvent, FormInteractiveIslandProps as BlocksFormIslandProps, HeaderSectionIslandProps as BlocksHeaderSectionIslandProps, MembershipCardDisplay as BlocksMembershipCardDisplay, NewsletterFormInteractiveIslandProps as BlocksNewsletterFormIslandProps, PassCardDisplay as BlocksPassCardDisplay, PassesMembershipsDisplay as BlocksPassesMembershipsDisplay, ProductCardDisplay as BlocksProductCardDisplay, ProductDetailDisplay as BlocksProductDetailDisplay, ProductDetailInteractiveIslandProps as BlocksProductDetailIslandProps, ProductListDisplay as BlocksProductListDisplay, ProductListInteractiveIslandProps as BlocksProductListIslandProps, ProductVariantOptionDisplay as BlocksProductVariantOptionDisplay, ShopInteractiveIslandProps as BlocksShopIslandProps } from '../../../../blocks/src/contracts/index';
6
5
  export type ResponsiveSlidesToShow = {
7
6
  mobile?: number | string;
8
7
  tablet?: number | string;
@@ -50,6 +49,20 @@ export type EventCategory = {
50
49
  };
51
50
  export type PricingType = PublicEventPricingType;
52
51
  export type { PublicCoursePriceDisplay, PublicEventPriceDisplay, PublicEventPricing, };
52
+ export type RichTextDoc = {
53
+ type: 'doc';
54
+ content?: Array<{
55
+ type: string;
56
+ content?: Array<{
57
+ type: string;
58
+ text?: string;
59
+ [key: string]: unknown;
60
+ }>;
61
+ [key: string]: unknown;
62
+ }>;
63
+ };
64
+ export type EventSurfacePreset = SystemEventSurfacePreset;
65
+ export type EventScheduleScope = Exclude<SystemEventScheduleScope, 'any'>;
53
66
  export type AccessRestriction = 'none' | 'category';
54
67
  export type PublicEventDestination = Readonly<{
55
68
  kind: 'native';
@@ -79,7 +92,7 @@ export type PublicEventTicketType = {
79
92
  sortOrder: number;
80
93
  capacityMode: 'limited' | 'unlimited';
81
94
  capacityLimit: number | null;
82
- attendanceScope?: 'in_person' | 'online' | 'both';
95
+ attendanceScope?: 'in_person' | 'online' | 'both' | null;
83
96
  saleStartsAt: string | null;
84
97
  saleEndsAt: string | null;
85
98
  availability: PublicEventTicketTypeAvailability;
@@ -132,68 +145,7 @@ export type BookingPricing = {
132
145
  paymentTerms: BookingPaymentTerms;
133
146
  options: readonly BookingPricingOption[];
134
147
  };
135
- type PublicEventRichTextDoc = {
136
- type: 'doc';
137
- content: Array<{
138
- type: string;
139
- content?: Array<{
140
- type: string;
141
- text?: string;
142
- [key: string]: unknown;
143
- }>;
144
- [key: string]: unknown;
145
- }>;
146
- };
147
- export type PublicEvent = {
148
- kind?: 'event' | 'course_session';
149
- eventPreset?: 'event' | EventSurfacePreset;
150
- eventDestinationMode?: 'cms-managed' | 'system-managed';
151
- destination: PublicEventDestination;
152
- scheduleScope?: Exclude<EventScheduleScope, 'any'>;
153
- id: string;
154
- occurrenceId: string;
155
- seriesId: string;
156
- title: string;
157
- description: string | null;
158
- content?: {
159
- body?: PublicEventRichTextDoc | null;
160
- };
161
- presentation?: {
162
- cardTitleOverride?: string | null;
163
- summary?: string | null;
164
- image?: Media | null;
165
- };
166
- slug: string;
167
- path: string | null;
168
- requiresRegistration: boolean;
169
- deliveryMode: 'in_person' | 'online' | 'hybrid';
170
- attendanceModes: PublicEventAttendanceModeAvailability[];
171
- startsAt: string;
172
- endsAt: string;
173
- capacity: number | null;
174
- registeredCount: number;
175
- availableSpots: number | null;
176
- waitlistEnabled: boolean;
177
- venue: EventVenue | null;
178
- eventCategory: EventCategory | null;
179
- teamMembers?: PublicTeamMemberSummary[];
180
- status?: 'active' | 'draft' | 'archived';
181
- timeZone: string;
182
- pricing: PublicEventPricing<PublicEventTicketType>;
183
- paymentTerms: BookingPaymentTerms;
184
- accessRestriction: AccessRestriction;
185
- allowedCategoryIds: string[];
186
- requireGuestDetails?: boolean;
187
- acceptsPasses?: boolean;
188
- acceptsMemberships?: boolean;
189
- course?: {
190
- id: string;
191
- pricing?: BookingPricing;
192
- priceCents: number | null;
193
- currency: string;
194
- enrollmentOpen: boolean;
195
- } | null;
196
- };
148
+ export type PublicEvent = BlocksPublicEvent;
197
149
  export type CourseStatus = 'active' | 'draft' | 'cancelled';
198
150
  export type CourseVenue = {
199
151
  id: string;
@@ -20,6 +20,8 @@ export type BlockOverrideProps<TContent = Record<string, unknown>, TData = Recor
20
20
  occurrenceContext?: OccurrenceContextData | null;
21
21
  entrySubrouteContext?: EntrySubrouteContextData | null;
22
22
  contentEntry?: Record<string, unknown> | null;
23
+ pageSurface?: Record<string, unknown> | null;
24
+ subject?: unknown;
23
25
  supabaseUrl?: string;
24
26
  imageResolveContext?: ResolveImageUrlContext;
25
27
  blockId: string | null;
@@ -34,6 +34,14 @@ export type ResolveRouteParams = {
34
34
  */
35
35
  preview?: boolean;
36
36
  };
37
+ export type ResolveRouteDeps = Readonly<{
38
+ loadPage: (params: {
39
+ client: RiverbankClient;
40
+ siteId: string;
41
+ path: string;
42
+ preview: boolean;
43
+ }) => Promise<LoadPageResult>;
44
+ }>;
37
45
  /**
38
46
  * Resolve a URL path to page data, redirect, or 404
39
47
  *
@@ -72,6 +80,7 @@ export type ResolveRouteParams = {
72
80
  * ```
73
81
  */
74
82
  export declare function resolveRoute(params: ResolveRouteParams): Promise<RouteResolution>;
83
+ export declare function resolveRouteWithDeps(deps: ResolveRouteDeps, params: ResolveRouteParams): Promise<RouteResolution>;
75
84
  /**
76
85
  * Batch resolve multiple routes in parallel
77
86
  *
@@ -105,3 +114,12 @@ export declare function resolveRoutes(params: {
105
114
  path: string;
106
115
  resolution: RouteResolution;
107
116
  }>>;
117
+ export declare function resolveRoutesWithDeps(paramsDeps: ResolveRouteDeps, params: {
118
+ client: RiverbankClient;
119
+ siteId: string;
120
+ paths: string[];
121
+ preview?: boolean;
122
+ }): Promise<Array<{
123
+ path: string;
124
+ resolution: RouteResolution;
125
+ }>>;
@@ -0,0 +1,17 @@
1
+ import { ApiRequestError, type ApiClient, type ApiResult } from '../../../api/src/public/index';
2
+ import { vi } from 'bun:test';
3
+ import type { RiverbankClientDeps } from '../client/index';
4
+ export type ApiClientMock = ReturnType<typeof vi.fn<ApiClient>>;
5
+ export type RiverbankClientTestDeps = Readonly<{
6
+ apiClient: ApiClientMock;
7
+ createBearerAPIClient: ReturnType<typeof vi.fn<RiverbankClientDeps['createBearerAPIClient']>>;
8
+ createInternalAPIClient: ReturnType<typeof vi.fn<RiverbankClientDeps['createInternalAPIClient']>>;
9
+ deps: RiverbankClientDeps;
10
+ }>;
11
+ export declare function createApiClientMock(): ApiClientMock;
12
+ export declare function createRiverbankClientTestDeps(apiClient?: ApiClientMock): RiverbankClientTestDeps;
13
+ export declare function apiSuccess<T>(data: T): ApiResult<T>;
14
+ export declare function apiError(status: number, code: string, message: string): ApiResult<never>;
15
+ type ApiRequestErrorOptions = ConstructorParameters<typeof ApiRequestError>[1];
16
+ export declare function apiRequestError(message: string, options?: Partial<ApiRequestErrorOptions>): ApiRequestError;
17
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ export type EnvSnapshot<T extends readonly string[]> = Record<T[number], string | undefined>;
2
+ export declare function snapshotEnv<T extends readonly string[]>(keys: T): EnvSnapshot<T>;
3
+ export declare function restoreEnv<T extends readonly string[]>(keys: T, snapshot: EnvSnapshot<T>): void;
4
+ export declare function clearEnv(keys: readonly string[]): void;
@@ -7,7 +7,7 @@
7
7
  * `@riverbankcms/blocks` (which is not a public dependency). This list is a
8
8
  * stable public contract; keep it in sync with the internal blocks runtime.
9
9
  */
10
- export declare const SYSTEM_BLOCK_KINDS: readonly ["block.hero", "block.intro", "block.columns", "block.collection", "block.feature-cards", "block.media-text", "block.cta-full", "block.single-button", "block.body-text", "block.location-map", "block.faq", "block.testimonials", "block.team-members", "block.embed", "block.blog-post", "block.blog-listing", "block.site-header", "block.site-footer", "block.form", "block.contact-newsletter", "block.appointment-booking", "block.event-registration", "block.event-details", "block.course-registration", "block.course-details", "block.event-spotlight", "block.event-listing", "block.event-calendar", "block.offerings-preview", "block.shop", "block.product-list", "block.product-detail", "block.cart", "block.checkout", "block.gifting", "block.newsletter-signup", "block.image-gallery", "block.video-grid", "block.audio-player", "block.file-download"];
10
+ export declare const SYSTEM_BLOCK_KINDS: readonly ["block.hero", "block.intro", "block.columns", "block.collection", "block.feature-cards", "block.media-text", "block.cta-full", "block.single-button", "block.body-text", "block.location-map", "block.faq", "block.testimonials", "block.team-members", "block.embed", "block.blog-post", "block.blog-listing", "block.site-header", "block.site-footer", "block.form", "block.contact-newsletter", "block.appointment-booking", "block.weekly-slot-availability", "block.event-registration", "block.event-details", "block.course-registration", "block.course-details", "block.event-spotlight", "block.event-listing", "block.event-calendar", "block.offerings-preview", "block.shop", "block.product-list", "block.product-detail", "block.cart", "block.checkout", "block.gifting", "block.newsletter-signup", "block.image-gallery", "block.video-grid", "block.audio-player", "block.file-download"];
11
11
  export type SystemBlockKind = (typeof SYSTEM_BLOCK_KINDS)[number];
12
12
  export type CustomBlockKind = `custom.${string}`;
13
13
  export type BlockKind = SystemBlockKind | CustomBlockKind;
@@ -8,4 +8,4 @@
8
8
  * 1. This constant
9
9
  * 2. The "version" field in package.json
10
10
  */
11
- export declare const SDK_VERSION = "0.96.0";
11
+ export declare const SDK_VERSION = "0.99.0";
@@ -787,9 +787,9 @@ export declare const grantCustomerMembershipCommandSchema: z.ZodObject<{
787
787
  membershipRef: z.ZodPipe<z.ZodString, z.ZodTransform<MembershipProductRef, string>>;
788
788
  status: z.ZodDefault<z.ZodEnum<{
789
789
  active: "active";
790
+ canceled: "canceled";
790
791
  trialing: "trialing";
791
792
  past_due: "past_due";
792
- canceled: "canceled";
793
793
  paused: "paused";
794
794
  }>>;
795
795
  currentPeriodStart: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -1682,9 +1682,9 @@ export declare const siteCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
1682
1682
  membershipRef: z.ZodPipe<z.ZodString, z.ZodTransform<MembershipProductRef, string>>;
1683
1683
  status: z.ZodDefault<z.ZodEnum<{
1684
1684
  active: "active";
1685
+ canceled: "canceled";
1685
1686
  trialing: "trialing";
1686
1687
  past_due: "past_due";
1687
- canceled: "canceled";
1688
1688
  paused: "paused";
1689
1689
  }>>;
1690
1690
  currentPeriodStart: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -2563,9 +2563,9 @@ export declare const siteCommandBatchSchema: z.ZodObject<{
2563
2563
  membershipRef: z.ZodPipe<z.ZodString, z.ZodTransform<MembershipProductRef, string>>;
2564
2564
  status: z.ZodDefault<z.ZodEnum<{
2565
2565
  active: "active";
2566
+ canceled: "canceled";
2566
2567
  trialing: "trialing";
2567
2568
  past_due: "past_due";
2568
- canceled: "canceled";
2569
2569
  paused: "paused";
2570
2570
  }>>;
2571
2571
  currentPeriodStart: z.ZodOptional<z.ZodNullable<z.ZodString>>;