@riverbankcms/sdk 0.77.1 → 0.78.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/README.md +114 -43
  2. package/dist/{PreviewEditorSidebar-DVUG7GK4.mjs → PreviewEditorSidebar-4DXLYX2V.mjs} +4962 -4885
  3. package/dist/{PreviewEditorUI-P7RN4CDS.mjs → PreviewEditorUI-CS5P4N3P.mjs} +4 -4
  4. package/dist/SdkPreviewModeRuntime-IJDHTW4W.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +190 -154
  6. package/dist/_dts/api/src/accessAdmin.d.ts +5 -0
  7. package/dist/_dts/api/src/billing.d.ts +3 -26
  8. package/dist/_dts/api/src/bookingVerticals.d.ts +4 -0
  9. package/dist/_dts/api/src/content-editor.d.ts +1 -0
  10. package/dist/_dts/api/src/contentRuntime.d.ts +1 -0
  11. package/dist/_dts/api/src/demoDashboardMutationSurfaces.d.ts +46 -0
  12. package/dist/_dts/api/src/endpoints.d.ts +17 -0
  13. package/dist/_dts/api/src/index.d.ts +16 -4
  14. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +87 -0
  15. package/dist/_dts/api/src/navigation/dashboardDemoNav.d.ts +5 -0
  16. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +45 -0
  17. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +42 -0
  18. package/dist/_dts/api/src/navigation/dashboardTeamMemberNav.d.ts +24 -0
  19. package/dist/_dts/api/src/navigation/linkUrlType.d.ts +3 -0
  20. package/dist/_dts/api/src/navigation.d.ts +12 -0
  21. package/dist/_dts/api/src/public/types.d.ts +1 -1
  22. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +55 -26
  23. package/dist/_dts/api/src/request.d.ts +3 -11
  24. package/dist/_dts/api/src/sdkConfig/contracts.d.ts +1 -0
  25. package/dist/_dts/api/src/sdkContracts.d.ts +7 -1
  26. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +10 -0
  27. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -0
  28. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +15 -19
  29. package/dist/_dts/api/src/staffAccess.d.ts +79 -0
  30. package/dist/_dts/api/src/types.d.ts +14 -27
  31. package/dist/_dts/api/src/workflows/automaticWorkflowTriggers.d.ts +21 -0
  32. package/dist/_dts/block-form/src/fields/types.d.ts +6 -0
  33. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterList.d.ts +3 -2
  34. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRow.d.ts +6 -3
  35. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRowActions.d.ts +8 -3
  36. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/index.d.ts +1 -1
  37. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useLinearRepeaterDnd.d.ts +1 -0
  38. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useRepeaterPointerDragCapability.d.ts +1 -0
  39. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useResolvedItemLabel.d.ts +7 -0
  40. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/buildSummary.d.ts +1 -0
  41. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/index.d.ts +3 -1
  42. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterDndDomain.d.ts +1 -1
  43. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterLabelSource.d.ts +15 -0
  44. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterRowActionsDomain.d.ts +50 -0
  45. package/dist/_dts/blocks/src/client/site-chrome.d.ts +4 -1
  46. package/dist/_dts/blocks/src/index.d.ts +1 -0
  47. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +879 -288
  48. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +879 -288
  49. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +879 -288
  50. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +879 -288
  51. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +879 -288
  52. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +2 -2
  53. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +885 -289
  54. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +879 -288
  55. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -1
  56. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +68 -21
  57. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +879 -288
  58. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +879 -288
  59. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +879 -288
  60. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +3 -0
  61. package/dist/_dts/blocks/src/system/data/index.d.ts +5 -3
  62. package/dist/_dts/blocks/src/system/data/previewResolvedDataState.d.ts +45 -0
  63. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +2 -1
  64. package/dist/_dts/blocks/src/system/fragments/library/faqAccordion.d.ts +5 -0
  65. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +193 -29
  66. package/dist/_dts/blocks/src/system/node/fragments/headingDecoration.d.ts +10 -0
  67. package/dist/_dts/blocks/src/system/node/fragments/index.d.ts +1 -0
  68. package/dist/_dts/blocks/src/system/node/fragments/styledSection.d.ts +9 -0
  69. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +3 -2
  70. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
  71. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  72. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +43 -8
  73. package/dist/_dts/blocks/src/system/runtime/header/shared.d.ts +8 -7
  74. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +1 -1
  75. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +1 -1
  76. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCompactRow.d.ts +1 -4
  77. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +7 -0
  78. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +2 -8
  79. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.server.d.ts +2 -9
  80. package/dist/_dts/blocks/src/system/runtime/nodes/shop-cart-discount-ui.d.ts +5 -0
  81. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout-form.d.ts +76 -0
  82. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout.state.d.ts +1 -4
  83. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce-store.d.ts +2 -0
  84. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce.shared.d.ts +1 -0
  85. package/dist/_dts/blocks/src/system/runtime/nodes/shop-discount-apply.state.d.ts +52 -0
  86. package/dist/_dts/blocks/src/system/runtime/nodes/shop.state.d.ts +2 -4
  87. package/dist/_dts/blocks/src/system/runtime/nodes/useDiscountApply.d.ts +21 -0
  88. package/dist/_dts/blocks/src/system/runtime/shared/components/DiscountCodeDisclosure.d.ts +54 -0
  89. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -0
  90. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  91. package/dist/_dts/blocks/src/system/transforms/registry/ui.d.ts +1 -1
  92. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -1
  93. package/dist/_dts/content-editor/src/contentTypeEditorContentState.d.ts +26 -0
  94. package/dist/_dts/content-editor/src/definitions/factory.d.ts +75 -0
  95. package/dist/_dts/content-editor/src/entryWorkflows.d.ts +2 -0
  96. package/dist/_dts/content-editor/src/footerBlocksEditorState.d.ts +76 -0
  97. package/dist/_dts/content-editor/src/index.d.ts +6 -1
  98. package/dist/_dts/content-editor/src/pageWorkflowContent.d.ts +29 -0
  99. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +2 -2
  100. package/dist/_dts/content-model/src/content-types/schema.d.ts +17 -3
  101. package/dist/_dts/content-model/src/index.d.ts +1 -0
  102. package/dist/_dts/content-model/src/routeTemplate.d.ts +4 -0
  103. package/dist/_dts/content-model/src/templates/bindingTypeCompatibility.d.ts +3 -1
  104. package/dist/_dts/content-model/src/templates/bindingValidation.d.ts +10 -4
  105. package/dist/_dts/content-model/src/templates/editorState.d.ts +25 -0
  106. package/dist/_dts/content-model/src/templates/fieldPaths.d.ts +20 -0
  107. package/dist/_dts/content-model/src/templates/manifestAdapter.d.ts +5 -2
  108. package/dist/_dts/core/src/branded.d.ts +108 -85
  109. package/dist/_dts/core/src/csv-cells.d.ts +10 -0
  110. package/dist/_dts/core/src/csv-date-filter.d.ts +27 -0
  111. package/dist/_dts/core/src/csv-escape.d.ts +1 -0
  112. package/dist/_dts/core/src/csv-filename.d.ts +18 -0
  113. package/dist/_dts/core/src/csv-render.d.ts +4 -0
  114. package/dist/_dts/core/src/csv-types.d.ts +116 -0
  115. package/dist/_dts/core/src/currency-format.d.ts +4 -0
  116. package/dist/_dts/core/src/demo-capability-policy.d.ts +29 -0
  117. package/dist/_dts/core/src/demo-claim-access.d.ts +14 -0
  118. package/dist/_dts/core/src/demo-lifecycle-status.d.ts +11 -0
  119. package/dist/_dts/core/src/demo-runtime.d.ts +47 -0
  120. package/dist/_dts/core/src/duration.d.ts +14 -0
  121. package/dist/_dts/core/src/editor-state.d.ts +7 -7
  122. package/dist/_dts/core/src/email-format.d.ts +10 -0
  123. package/dist/_dts/core/src/field-errors.d.ts +1 -0
  124. package/dist/_dts/core/src/form-submission-preview.d.ts +24 -0
  125. package/dist/_dts/core/src/index.d.ts +20 -0
  126. package/dist/_dts/core/src/number-input.d.ts +22 -0
  127. package/dist/_dts/core/src/participants.d.ts +2 -2
  128. package/dist/_dts/core/src/public-url-validation.d.ts +12 -0
  129. package/dist/_dts/core/src/slug.d.ts +39 -0
  130. package/dist/_dts/core/src/string.d.ts +19 -0
  131. package/dist/_dts/core/src/uuid.d.ts +6 -0
  132. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +11 -0
  133. package/dist/_dts/db/src/schemas/forms.d.ts +50 -50
  134. package/dist/_dts/editor-blocks/src/blockPayload.d.ts +1 -1
  135. package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +34 -0
  136. package/dist/_dts/media-core/src/bulkDeletePlanning.d.ts +24 -0
  137. package/dist/_dts/media-core/src/canonicalCropReview.d.ts +66 -0
  138. package/dist/_dts/media-core/src/classifyAllPlanning.d.ts +48 -0
  139. package/dist/_dts/media-core/src/filename.d.ts +1 -0
  140. package/dist/_dts/media-core/src/index.d.ts +10 -0
  141. package/dist/_dts/media-core/src/mediaAssetUsageStatus.d.ts +47 -0
  142. package/dist/_dts/media-core/src/mediaSettingsState.d.ts +3 -0
  143. package/dist/_dts/media-core/src/portableMediaReferences.d.ts +38 -0
  144. package/dist/_dts/media-core/src/uploadVerificationContract.d.ts +28 -0
  145. package/dist/_dts/media-core/src/videoAssetRepair.d.ts +38 -0
  146. package/dist/_dts/media-editor/src/MediaEditor.d.ts +3 -1
  147. package/dist/_dts/media-editor/src/MediaPreview.d.ts +3 -1
  148. package/dist/_dts/media-editor/src/fieldUi.d.ts +5 -0
  149. package/dist/_dts/media-editor/src/index.d.ts +1 -1
  150. package/dist/_dts/media-editor/src/mediaEditorDebug.d.ts +1 -0
  151. package/dist/_dts/path-utils/src/index.d.ts +8 -0
  152. package/dist/_dts/path-utils/src/redirectPaths.d.ts +26 -0
  153. package/dist/_dts/path-utils/src/safeAppPath.d.ts +26 -0
  154. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeButton.d.ts +2 -1
  155. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -0
  156. package/dist/_dts/preview-next/src/client/preview/previewDocumentFrame.d.ts +31 -0
  157. package/dist/_dts/sdk/src/cli/commands/push/consts.d.ts +1 -1
  158. package/dist/_dts/sdk/src/cli/commands/push/metadata.d.ts +2 -0
  159. package/dist/_dts/sdk/src/cli/commands/push/stale.d.ts +3 -3
  160. package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +7 -0
  161. package/dist/_dts/sdk/src/cli/commands/push.d.ts +2 -0
  162. package/dist/_dts/sdk/src/cli/content/reader.d.ts +13 -0
  163. package/dist/_dts/sdk/src/cli/content/writer.d.ts +2 -1
  164. package/dist/_dts/sdk/src/cli/helpers.d.ts +2 -0
  165. package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +6 -6
  166. package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +5 -0
  167. package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +4 -0
  168. package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +5 -2
  169. package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +10 -1
  170. package/dist/_dts/sdk/src/cli/site-commands/pushExecutionTypes.d.ts +1 -1
  171. package/dist/_dts/sdk/src/client/error.d.ts +3 -0
  172. package/dist/_dts/sdk/src/client/index.d.ts +2 -2
  173. package/dist/_dts/sdk/src/client/management/types.d.ts +6 -0
  174. package/dist/_dts/sdk/src/client/types.d.ts +39 -21
  175. package/dist/_dts/sdk/src/config/content-types.d.ts +7 -0
  176. package/dist/_dts/sdk/src/config/field-definitions.d.ts +2 -0
  177. package/dist/_dts/sdk/src/index.d.ts +2 -2
  178. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +16 -16
  179. package/dist/_dts/sdk/src/next/content-load-failure.d.ts +51 -0
  180. package/dist/_dts/sdk/src/next/index.d.ts +2 -1
  181. package/dist/_dts/sdk/src/next/types.d.ts +19 -0
  182. package/dist/_dts/sdk/src/portal/redirects.d.ts +1 -1
  183. package/dist/_dts/sdk/src/routing/index.d.ts +3 -2
  184. package/dist/_dts/sdk/src/routing/resolvePageContent.d.ts +71 -6
  185. package/dist/_dts/sdk/src/version.d.ts +1 -1
  186. package/dist/_dts/site-commands/src/commands.d.ts +15 -12
  187. package/dist/_dts/site-commands/src/index.d.ts +1 -0
  188. package/dist/_dts/site-commands/src/pagePaths.d.ts +6 -0
  189. package/dist/_dts/theme-core/src/accordions/siteStyleDefaults.d.ts +26 -0
  190. package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -0
  191. package/dist/_dts/theme-core/src/blocks/vars/index.d.ts +1 -0
  192. package/dist/_dts/theme-core/src/fonts/index.d.ts +1 -0
  193. package/dist/_dts/theme-core/src/fonts/uploadFormat.d.ts +44 -0
  194. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  195. package/dist/_dts/theme-core/src/index.d.ts +3 -1
  196. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +36 -24
  197. package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +6 -1
  198. package/dist/_dts/theme-core/src/navigation/types.d.ts +12 -0
  199. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +3 -3
  200. package/dist/_dts/theme-core/src/runtime/themeCssVarNames.d.ts +7 -0
  201. package/dist/_dts/theme-core/src/schema.d.ts +64 -18
  202. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +214 -34
  203. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +5 -2
  204. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +214 -34
  205. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +24 -0
  206. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +31 -3
  207. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -4
  208. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +33 -1
  209. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +4 -2
  210. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +9 -1
  211. package/dist/_dts/theme-core/src/site-styles/types.d.ts +27 -2
  212. package/dist/_dts/theme-core/src/siteChrome.d.ts +17 -34
  213. package/dist/_dts/theme-core/src/siteChromeOverlayClearance.d.ts +22 -0
  214. package/dist/_dts/theme-core/src/siteChromePlacement.d.ts +22 -0
  215. package/dist/_dts/theme-core/src/siteChromePlanning.d.ts +32 -0
  216. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -2
  217. package/dist/{altcha-B5XGSXP5.mjs → altcha-EKUEQ4RP.mjs} +1 -1
  218. package/dist/{chunk-IENWFSLO.mjs → chunk-4QEGTLK6.mjs} +1 -1
  219. package/dist/{chunk-ZYEJLCTN.mjs → chunk-6HYXHRAI.mjs} +5 -5
  220. package/dist/{chunk-VX7B5VAC.mjs → chunk-CR5HKAGU.mjs} +32 -5
  221. package/dist/{chunk-KWJPDZH2.mjs → chunk-MCRQMPET.mjs} +3793 -1201
  222. package/dist/{chunk-6SMUFTXD.mjs → chunk-OKMBEAXY.mjs} +1 -1
  223. package/dist/{chunk-XGB3TDIC.mjs → chunk-R7POPVJR.mjs} +2 -8
  224. package/dist/{chunk-2SPENC5M.mjs → chunk-RGTOD4AJ.mjs} +242 -57
  225. package/dist/cli/index.mjs +2361 -668
  226. package/dist/cli/init-docs/content/cli-reference.md +3 -2
  227. package/dist/cli/init-docs/content/content-management.md +2 -2
  228. package/dist/cli/init-docs/content/workflow-preview-mode.md +68 -2
  229. package/dist/client/{accordion-RZMQSYLR.mjs → accordion-PLYNJIIM.mjs} +2 -2
  230. package/dist/client/analytics.mjs +1 -1
  231. package/dist/client/{bookingForm-NF4ASVNV.mjs → bookingForm-BXAP6AO7.mjs} +76 -72
  232. package/dist/client/bookings.mjs +3765 -310
  233. package/dist/client/{carousel-LDX47ZIK.mjs → carousel-TRBXDHGF.mjs} +3 -4
  234. package/dist/client/{cart-RGXDS5F4.mjs → cart-Z7H3HJRS.mjs} +8 -8
  235. package/dist/client/{checkout-P7WWSNNY.mjs → checkout-WAFCUBIX.mjs} +8 -8
  236. package/dist/client/{chunk-II7O4XN3.mjs → chunk-75OUS5MT.mjs} +2 -2
  237. package/dist/client/{chunk-PMAIXMAB.mjs → chunk-AUJ5DBZJ.mjs} +42 -37
  238. package/dist/client/{chunk-TQ5MSPDX.mjs → chunk-CE7IBGVW.mjs} +3 -1
  239. package/dist/client/{chunk-E2TDNXCL.mjs → chunk-CWGTG37I.mjs} +2 -1
  240. package/dist/client/{chunk-UFSWADAO.mjs → chunk-DNRGY432.mjs} +6 -67
  241. package/dist/client/{chunk-GMVTOKYG.mjs → chunk-FUXW6VW2.mjs} +512 -66
  242. package/dist/client/{chunk-R56FQ3RR.mjs → chunk-JGXPTEI2.mjs} +322 -106
  243. package/dist/client/{chunk-L3DNHIJX.mjs → chunk-JRDUHZCT.mjs} +53 -53
  244. package/dist/client/{chunk-M3L3KYYR.mjs → chunk-UDNSI5PY.mjs} +12 -0
  245. package/dist/client/{chunk-JEZECJ3W.mjs → chunk-UVQEJJTN.mjs} +129 -3
  246. package/dist/client/{chunk-F7LHOKEH.mjs → chunk-XSV6KW4D.mjs} +1 -1
  247. package/dist/client/chunk-ZFHRN6W2.mjs +66 -0
  248. package/dist/client/{chunk-JNC7CGHX.mjs → chunk-ZI3LLBPZ.mjs} +3 -3
  249. package/dist/client/client.mjs +7577 -4979
  250. package/dist/client/{courseRegistration-7F65K5ZR.mjs → courseRegistration-AHFQHWIJ.mjs} +19 -16
  251. package/dist/client/{eventCalendar-GLSC5KTL.mjs → eventCalendar-LDXTV5R7.mjs} +10 -10
  252. package/dist/client/{eventCombined-ZHK4WKUR.mjs → eventCombined-A4JGTNJO.mjs} +10 -10
  253. package/dist/client/{eventDetails-E3PJYBIN.mjs → eventDetails-4YXTZ7EG.mjs} +10 -10
  254. package/dist/client/{eventListing-EMS3WC3E.mjs → eventListing-P72TPFFM.mjs} +10 -10
  255. package/dist/client/{eventRegistration-NZOTVNPI.mjs → eventRegistration-LSYJHGMT.mjs} +10 -10
  256. package/dist/client/{form-ETFZFATW.mjs → form-AOPYOKOW.mjs} +10 -7
  257. package/dist/client/{headerSection-4LBP7ULT.mjs → headerSection-5TFYDFVQ.mjs} +3 -3
  258. package/dist/client/hooks.mjs +1119 -327
  259. package/dist/client/{locationMap-5M655YSJ.mjs → locationMap-QSZ3ZVAZ.mjs} +3 -3
  260. package/dist/client/{newsletterForm-QOUYW44O.mjs → newsletterForm-KTRHZY52.mjs} +3 -3
  261. package/dist/client/{productDetail-O4DOCWQG.mjs → productDetail-N4E775RG.mjs} +8 -8
  262. package/dist/client/{productList-A5RO5WIS.mjs → productList-UGUQ2S45.mjs} +8 -8
  263. package/dist/client/rendering/client.mjs +7262 -2775
  264. package/dist/client/rendering/islands.mjs +19 -19
  265. package/dist/client/rendering.mjs +6964 -4587
  266. package/dist/client/{shop-L4MZH4I2.mjs → shop-VHSZEEQ2.mjs} +8 -8
  267. package/dist/preview-next/before-render.mjs +18 -1
  268. package/dist/preview-next/client/runtime.mjs +6 -6
  269. package/dist/preview-next/editor-chrome.css +10 -0
  270. package/dist/preview-next/middleware.mjs +18 -1
  271. package/dist/preview-next/tailwind-sources.css +1 -0
  272. package/dist/sdk-runtime-WHPJEF5G.mjs +8 -0
  273. package/dist/server/components.mjs +2736 -1316
  274. package/dist/server/config-template-validation.mjs +221 -15
  275. package/dist/server/config-validation.mjs +1346 -550
  276. package/dist/server/config.mjs +1346 -550
  277. package/dist/server/data.mjs +1118 -326
  278. package/dist/server/index.mjs +514 -251
  279. package/dist/server/next.mjs +4446 -2444
  280. package/dist/server/page-converter.mjs +631 -155
  281. package/dist/server/prebuild.mjs +1 -1
  282. package/dist/server/rendering/server.mjs +2743 -1323
  283. package/dist/server/rendering.mjs +2764 -1328
  284. package/dist/server/routing.mjs +1860 -590
  285. package/dist/server/server.mjs +1622 -575
  286. package/dist/server/theme-bridge.mjs +3151 -131
  287. package/dist/server/theme.mjs +10 -1
  288. package/dist/styles/index.css +488 -48
  289. package/package.json +2 -1
  290. package/dist/SdkPreviewModeRuntime-KLPX47SE.mjs +0 -8
  291. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/DiscountCodeSection.d.ts +0 -7
  292. package/dist/_dts/preview-next/src/client/widgets/PreviewMediaField.d.ts +0 -4
  293. package/dist/client/chunk-OJPZEZU2.mjs +0 -31
  294. package/dist/client/chunk-RTZ3JKKX.mjs +0 -178
  295. package/dist/sdk-runtime-6UT2S7KZ.mjs +0 -8
@@ -1770,7 +1770,16 @@ var ENDPOINT_DEFINITIONS = {
1770
1770
  revalidate: 60,
1771
1771
  tags: ["site-{siteId}", "content-{siteId}-{type}"],
1772
1772
  auth: "user",
1773
- responseKind: "json"
1773
+ responseKind: "json",
1774
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
1775
+ },
1776
+ reorderContentEntries: {
1777
+ path: "/sites/{siteId}/content/{type}/order",
1778
+ method: "POST",
1779
+ tags: ["site-{siteId}", "content-{siteId}-{type}"],
1780
+ auth: "user",
1781
+ responseKind: "json",
1782
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
1774
1783
  },
1775
1784
  getContentTemplate: {
1776
1785
  path: "/sites/{siteId}/content/types/{type}/template",
@@ -3922,6 +3931,14 @@ var ENDPOINT_DEFINITIONS = {
3922
3931
  responseKind: "json",
3923
3932
  errors: []
3924
3933
  },
3934
+ applyDiscountCode: {
3935
+ path: "/public/sites/{siteId}/bookings/discounts/apply",
3936
+ method: "POST",
3937
+ tags: ["site-{siteId}", "booking-discounts"],
3938
+ auth: "public",
3939
+ responseKind: "json",
3940
+ errors: ["validation:invalid_input", "rate_limit:exceeded"]
3941
+ },
3925
3942
  // Batch endpoint for block loader requests (reduces SSR fan-out)
3926
3943
  batchBlockLoaders: {
3927
3944
  path: "/public/sites/{siteId}/block-loaders/batch",
@@ -6375,18 +6392,21 @@ function buildEndpointURL(baseURL, endpoint) {
6375
6392
  function isFormDataBody(value) {
6376
6393
  return typeof FormData !== "undefined" && value instanceof FormData;
6377
6394
  }
6395
+ function isUnknownArray(value) {
6396
+ return Array.isArray(value);
6397
+ }
6378
6398
  function appendQueryParam(queryParams, key, value) {
6379
6399
  if (value === void 0 || value === null) {
6380
6400
  return;
6381
6401
  }
6382
- if (Array.isArray(value)) {
6402
+ if (isUnknownArray(value)) {
6383
6403
  const stack = [...value].reverse();
6384
6404
  while (stack.length > 0) {
6385
6405
  const item = stack.pop();
6386
6406
  if (item === void 0 || item === null) {
6387
6407
  continue;
6388
6408
  }
6389
- if (Array.isArray(item)) {
6409
+ if (isUnknownArray(item)) {
6390
6410
  stack.push(...[...item].reverse());
6391
6411
  continue;
6392
6412
  }
@@ -6396,6 +6416,12 @@ function appendQueryParam(queryParams, key, value) {
6396
6416
  }
6397
6417
  queryParams.append(key, String(value));
6398
6418
  }
6419
+ function serializePathParam(endpoint, key, value) {
6420
+ if (typeof value === "string") {
6421
+ return value;
6422
+ }
6423
+ throw new Error(`Invalid path param for endpoint ${String(endpoint)}: ${key} must be a string`);
6424
+ }
6399
6425
  function invalidateCacheTags(tags, params) {
6400
6426
  const resolved = getRevalidateTag();
6401
6427
  if (typeof window !== "undefined" || !resolved || !tags) return;
@@ -6534,8 +6560,9 @@ function createRawCMSClient(headers = {}, baseUrl) {
6534
6560
  const bracePlaceholder = `{${key}}`;
6535
6561
  const colonPlaceholder = `:${key}`;
6536
6562
  if (originalPath.includes(bracePlaceholder) || originalPath.includes(colonPlaceholder)) {
6537
- url = url.replace(bracePlaceholder, value);
6538
- url = url.replace(colonPlaceholder, value);
6563
+ const stringValue = serializePathParam(endpoint, key, value);
6564
+ url = url.replace(bracePlaceholder, stringValue);
6565
+ url = url.replace(colonPlaceholder, stringValue);
6539
6566
  } else {
6540
6567
  unusedParams[key] = value;
6541
6568
  }
@@ -6809,7 +6836,7 @@ var SimpleCache = class {
6809
6836
  };
6810
6837
 
6811
6838
  // src/version.ts
6812
- var SDK_VERSION = "0.77.1";
6839
+ var SDK_VERSION = "0.78.2";
6813
6840
 
6814
6841
  // src/client/error.ts
6815
6842
  var RiverbankApiError = class _RiverbankApiError extends Error {
@@ -6954,6 +6981,22 @@ var RiverbankApiError = class _RiverbankApiError extends Error {
6954
6981
  return lines.join("\n");
6955
6982
  }
6956
6983
  };
6984
+ var resilienceStatusSymbol = /* @__PURE__ */ Symbol.for("riverbankcms.sdk.resilienceStatus");
6985
+ function attachResilienceStatusToError(error, resilienceStatus) {
6986
+ const target = error !== null && (typeof error === "object" || typeof error === "function") ? error : new Error(error === void 0 ? "Unknown error" : String(error));
6987
+ Object.defineProperty(target, resilienceStatusSymbol, {
6988
+ configurable: true,
6989
+ enumerable: false,
6990
+ value: resilienceStatus
6991
+ });
6992
+ return target;
6993
+ }
6994
+ function getResilienceStatusFromError(error) {
6995
+ if (error === null || typeof error !== "object" && typeof error !== "function") {
6996
+ return void 0;
6997
+ }
6998
+ return error[resilienceStatusSymbol];
6999
+ }
6957
7000
 
6958
7001
  // src/client/resilience.ts
6959
7002
  var DEFAULT_RETRY_CONFIG = {
@@ -7212,7 +7255,10 @@ var CircuitOpenError = class extends Error {
7212
7255
  var prebuildModule = null;
7213
7256
  function tryRequire(modulePath) {
7214
7257
  try {
7215
- const req = Function('return typeof require === "function" ? require : null')();
7258
+ const getRequire = new Function(
7259
+ 'return typeof require === "function" ? require : null'
7260
+ );
7261
+ const req = getRequire();
7216
7262
  return req ? req(modulePath) : null;
7217
7263
  } catch {
7218
7264
  return null;
@@ -7231,7 +7277,9 @@ function getPrebuildModule() {
7231
7277
  return null;
7232
7278
  }
7233
7279
  try {
7234
- prebuildModule = tryRequire("../prebuild/loader");
7280
+ prebuildModule = tryRequire(
7281
+ "../prebuild/loader"
7282
+ );
7235
7283
  return prebuildModule;
7236
7284
  } catch {
7237
7285
  return null;
@@ -7291,7 +7339,9 @@ function normalizePublicFormResult(result) {
7291
7339
  }
7292
7340
  function normalizePublicFormsResponse(response) {
7293
7341
  return {
7294
- forms: response.forms.map((form) => normalizePublicFormResponse({ form }).form)
7342
+ forms: response.forms.map(
7343
+ (form) => normalizePublicFormResponse({ form }).form
7344
+ )
7295
7345
  };
7296
7346
  }
7297
7347
  function normalizePublicFormsResult(result) {
@@ -7490,7 +7540,10 @@ function createRiverbankClient(config) {
7490
7540
  isDegraded = nowDegraded;
7491
7541
  config.resilience?.onDegradedMode?.(nowDegraded, status);
7492
7542
  }
7493
- return data;
7543
+ return {
7544
+ data,
7545
+ resilience: status
7546
+ };
7494
7547
  }
7495
7548
  async function resilientFetch(cacheKey, fetcher, options) {
7496
7549
  const requestId = generateRequestId2();
@@ -7514,25 +7567,43 @@ function createRiverbankClient(config) {
7514
7567
  if (allowFallbacks && !isPreview && staleIfError) {
7515
7568
  const stale = cache.getStale(cacheKey);
7516
7569
  if (stale) {
7517
- return emitStatus("stale", stale.value, statusDetails({
7518
- staleAgeSec: stale.staleAgeSec,
7519
- error: { code: "circuit_open", message: "Circuit breaker is open" }
7520
- }));
7570
+ return emitStatus(
7571
+ "stale",
7572
+ stale.value,
7573
+ statusDetails({
7574
+ staleAgeSec: stale.staleAgeSec,
7575
+ error: {
7576
+ code: "circuit_open",
7577
+ message: "Circuit breaker is open"
7578
+ }
7579
+ })
7580
+ );
7521
7581
  }
7522
7582
  }
7523
7583
  if (allowFallbacks && !isPreview && options.prebuildFallback) {
7524
7584
  const prebuildResult = options.prebuildFallback();
7525
7585
  if (prebuildResult) {
7526
- return emitStatus("prebuild", prebuildResult.data, statusDetails({
7527
- prebuildAgeSec: prebuildResult.prebuildAgeSec,
7528
- error: { code: "circuit_open", message: "Circuit breaker is open" }
7529
- }));
7586
+ return emitStatus(
7587
+ "prebuild",
7588
+ prebuildResult.data,
7589
+ statusDetails({
7590
+ prebuildAgeSec: prebuildResult.prebuildAgeSec,
7591
+ error: {
7592
+ code: "circuit_open",
7593
+ message: "Circuit breaker is open"
7594
+ }
7595
+ })
7596
+ );
7530
7597
  }
7531
7598
  }
7532
7599
  const circuitState = circuitBreaker.getState();
7533
- emitStatus("error", null, statusDetails({
7534
- error: { code: "circuit_open", message: "Circuit breaker is open" }
7535
- }));
7600
+ emitStatus(
7601
+ "error",
7602
+ null,
7603
+ statusDetails({
7604
+ error: { code: "circuit_open", message: "Circuit breaker is open" }
7605
+ })
7606
+ );
7536
7607
  throw new CircuitOpenError(circuitState);
7537
7608
  }
7538
7609
  try {
@@ -7559,7 +7630,9 @@ function createRiverbankClient(config) {
7559
7630
  circuitBreaker.recordSuccess();
7560
7631
  } else {
7561
7632
  try {
7562
- const response = await fetcher(options.signal ?? new AbortController().signal);
7633
+ const response = await fetcher(
7634
+ options.signal ?? new AbortController().signal
7635
+ );
7563
7636
  data = unwrapResponse(response);
7564
7637
  } catch (error) {
7565
7638
  convertToTypedError(error);
@@ -7576,28 +7649,51 @@ function createRiverbankClient(config) {
7576
7649
  if (allowFallbacks && !isPreview && staleIfError && cacheEnabled) {
7577
7650
  const stale = cache.getStale(cacheKey);
7578
7651
  if (stale) {
7579
- const errorInfo2 = error instanceof RiverbankApiError ? { code: error.code, message: error.message } : { message: error.message };
7580
- return emitStatus("stale", stale.value, statusDetails({
7581
- staleAgeSec: stale.staleAgeSec,
7582
- error: errorInfo2
7583
- }));
7652
+ const errorInfo2 = error instanceof RiverbankApiError ? {
7653
+ code: error.code,
7654
+ message: error.message,
7655
+ status: error.status
7656
+ } : { message: error.message };
7657
+ return emitStatus(
7658
+ "stale",
7659
+ stale.value,
7660
+ statusDetails({
7661
+ staleAgeSec: stale.staleAgeSec,
7662
+ error: errorInfo2
7663
+ })
7664
+ );
7584
7665
  }
7585
7666
  }
7586
7667
  if (allowFallbacks && !isPreview && options.prebuildFallback) {
7587
7668
  const prebuildResult = options.prebuildFallback();
7588
7669
  if (prebuildResult) {
7589
- const errorInfo2 = error instanceof RiverbankApiError ? { code: error.code, message: error.message } : { message: error.message };
7590
- return emitStatus("prebuild", prebuildResult.data, statusDetails({
7591
- prebuildAgeSec: prebuildResult.prebuildAgeSec,
7592
- error: errorInfo2
7593
- }));
7670
+ const errorInfo2 = error instanceof RiverbankApiError ? {
7671
+ code: error.code,
7672
+ message: error.message,
7673
+ status: error.status
7674
+ } : { message: error.message };
7675
+ return emitStatus(
7676
+ "prebuild",
7677
+ prebuildResult.data,
7678
+ statusDetails({
7679
+ prebuildAgeSec: prebuildResult.prebuildAgeSec,
7680
+ error: errorInfo2
7681
+ })
7682
+ );
7594
7683
  }
7595
7684
  }
7596
- const errorInfo = error instanceof RiverbankApiError ? { code: error.code, message: error.message } : { message: error.message };
7597
- emitStatus("error", null, statusDetails({ error: errorInfo }));
7598
- throw error;
7685
+ const errorInfo = error instanceof RiverbankApiError ? { code: error.code, message: error.message, status: error.status } : { message: error.message };
7686
+ const failure = emitStatus(
7687
+ "error",
7688
+ null,
7689
+ statusDetails({ error: errorInfo })
7690
+ );
7691
+ throw attachResilienceStatusToError(error, failure.resilience);
7599
7692
  }
7600
7693
  }
7694
+ async function resilientFetchData(cacheKey, fetcher, options) {
7695
+ return (await resilientFetch(cacheKey, fetcher, options)).data;
7696
+ }
7601
7697
  function combineAbortSignals(...signals) {
7602
7698
  const controller = new AbortController();
7603
7699
  for (const signal of signals) {
@@ -7605,32 +7701,45 @@ function createRiverbankClient(config) {
7605
7701
  controller.abort(signal.reason);
7606
7702
  break;
7607
7703
  }
7608
- signal.addEventListener("abort", () => controller.abort(signal.reason), { once: true });
7704
+ signal.addEventListener("abort", () => controller.abort(signal.reason), {
7705
+ once: true
7706
+ });
7609
7707
  }
7610
7708
  return controller.signal;
7611
7709
  }
7612
7710
  async function resolveEntrySubrouteInternal(args) {
7613
7711
  const { siteId, entryId, kind, segment, stage, signal } = args;
7614
7712
  const cacheKey = `entry-subroute:${siteId}:${entryId}:${kind}:${segment}:${stage ?? "published"}`;
7615
- return resilientFetch(cacheKey, async (sig) => {
7616
- return await apiClient({
7617
- endpoint: "resolveEntrySubroute",
7618
- params: { siteId, entryId, kind, segment, ...stage ? { stage } : {} },
7619
- options: { signal: sig }
7620
- });
7621
- }, { signal });
7713
+ return resilientFetchData(
7714
+ cacheKey,
7715
+ async (sig) => {
7716
+ return await apiClient({
7717
+ endpoint: "resolveEntrySubroute",
7718
+ params: {
7719
+ siteId,
7720
+ entryId,
7721
+ kind,
7722
+ segment,
7723
+ ...stage ? { stage } : {}
7724
+ },
7725
+ options: { signal: sig }
7726
+ });
7727
+ },
7728
+ { signal }
7729
+ );
7622
7730
  }
7623
- return {
7624
- async getSite(params) {
7625
- const { slug, domain, id, signal, force, currentPath } = params;
7626
- if (!slug && !domain && !id) {
7627
- throw new Error(
7628
- `getSite() requires at least one identifier: slug, domain, or id. Received: ${JSON.stringify(params)}`
7629
- );
7630
- }
7631
- const cacheKey = `site:${slug || domain || id}:${currentPath ?? ""}`;
7632
- const siteId = id || slug || domain;
7633
- return resilientFetch(cacheKey, async (sig) => {
7731
+ async function getSiteWithResilienceInternal(params) {
7732
+ const { slug, domain, id, signal, force, currentPath } = params;
7733
+ if (!slug && !domain && !id) {
7734
+ throw new Error(
7735
+ `getSite() requires at least one identifier: slug, domain, or id. Received: ${JSON.stringify(params)}`
7736
+ );
7737
+ }
7738
+ const cacheKey = `site:${slug || domain || id}:${currentPath ?? ""}`;
7739
+ const siteId = id || slug || domain;
7740
+ return resilientFetch(
7741
+ cacheKey,
7742
+ async (sig) => {
7634
7743
  const apiParams = {};
7635
7744
  if (params.slug) apiParams.slug = params.slug;
7636
7745
  if (params.domain) apiParams.domain = params.domain;
@@ -7641,66 +7750,121 @@ function createRiverbankClient(config) {
7641
7750
  endpoint: "getSite",
7642
7751
  params: apiParams,
7643
7752
  // When force=true, bypass Next.js fetch caching (revalidate) as well.
7644
- options: { signal: sig, ...force ? { cache: "no-store" } : {} }
7753
+ options: {
7754
+ signal: sig,
7755
+ ...force ? { cache: "no-store" } : {}
7756
+ }
7645
7757
  });
7646
- }, {
7758
+ },
7759
+ {
7647
7760
  signal,
7648
7761
  force,
7649
7762
  prebuildFallback: prebuildLoader && siteId ? () => prebuildLoader.loadSite(siteId) : void 0
7650
- });
7651
- },
7652
- async getPage(params) {
7653
- const { siteId, path: path3, preview = false, signal } = params;
7654
- const cacheKey = `page:${siteId}:${path3}:${preview}`;
7655
- return resilientFetch(cacheKey, async (sig) => {
7656
- return await apiClient({ endpoint: "getContentByPath", params: { siteId }, body: { path: path3, preview }, options: { signal: sig } });
7657
- }, {
7763
+ }
7764
+ );
7765
+ }
7766
+ async function getPageWithResilienceInternal(params) {
7767
+ const { siteId, path: path3, preview = false, signal } = params;
7768
+ const cacheKey = `page:${siteId}:${path3}:${preview}`;
7769
+ return resilientFetch(
7770
+ cacheKey,
7771
+ async (sig) => {
7772
+ return await apiClient({
7773
+ endpoint: "getContentByPath",
7774
+ params: { siteId, path: path3, preview: String(preview) },
7775
+ options: { signal: sig }
7776
+ });
7777
+ },
7778
+ {
7658
7779
  preview,
7659
7780
  signal,
7660
7781
  // Prebuild fallback only for published pages (not preview)
7661
7782
  prebuildFallback: prebuildLoader && !preview ? () => prebuildLoader.loadPage(siteId, path3) : void 0
7662
- });
7783
+ }
7784
+ );
7785
+ }
7786
+ return {
7787
+ async getSite(params) {
7788
+ return (await getSiteWithResilienceInternal(params)).data;
7789
+ },
7790
+ async getSiteWithResilience(params) {
7791
+ return getSiteWithResilienceInternal(params);
7792
+ },
7793
+ async getPage(params) {
7794
+ return (await getPageWithResilienceInternal(params)).data;
7795
+ },
7796
+ async getPageWithResilience(params) {
7797
+ return getPageWithResilienceInternal(params);
7663
7798
  },
7664
7799
  async getEntries(params) {
7665
- const { siteId, contentType, limit, offset, order, preview = false, mode, entryIds, includeMeta, signal } = params;
7800
+ const {
7801
+ siteId,
7802
+ contentType,
7803
+ limit,
7804
+ offset,
7805
+ order,
7806
+ preview = false,
7807
+ mode,
7808
+ entryIds,
7809
+ includeMeta,
7810
+ signal
7811
+ } = params;
7666
7812
  const entryIdsCacheKey = mode === "manual" && entryIds?.length ? entryIds.join(",") : "";
7667
7813
  const cacheKey = `entries:${siteId}:${contentType}:${limit ?? ""}:${offset ?? ""}:${order ?? ""}:${preview}:${mode ?? ""}:${entryIdsCacheKey}:${includeMeta ?? ""}`;
7668
- return resilientFetch(cacheKey, async (sig) => {
7669
- let orderParam;
7670
- if (order === "newest") {
7671
- orderParam = "published_at.desc";
7672
- } else if (order === "oldest") {
7673
- orderParam = "published_at.asc";
7674
- } else if (order === "title") {
7675
- orderParam = "title.asc";
7676
- }
7677
- const apiParams = {
7678
- siteId,
7679
- type: contentType,
7680
- ...typeof limit === "number" && { limit: String(limit) },
7681
- ...typeof offset === "number" && { offset: String(offset) },
7682
- ...includeMeta && { meta: "true" },
7683
- ...orderParam && { order: orderParam },
7684
- ...preview && { stage: "preview" },
7685
- ...mode === "manual" && entryIds?.length && {
7686
- mode: "manual",
7687
- entryIds: JSON.stringify(entryIds)
7814
+ return resilientFetchData(
7815
+ cacheKey,
7816
+ async (sig) => {
7817
+ let orderParam;
7818
+ if (order === "newest") {
7819
+ orderParam = "published_at.desc";
7820
+ } else if (order === "oldest") {
7821
+ orderParam = "published_at.asc";
7822
+ } else if (order === "title") {
7823
+ orderParam = "title.asc";
7824
+ } else if (order === "manual") {
7825
+ orderParam = "manual.asc";
7688
7826
  }
7689
- };
7690
- return await apiClient({ endpoint: "listPublishedEntries", params: apiParams, options: { signal: sig } });
7691
- }, {
7692
- preview,
7693
- signal,
7694
- // Prebuild fallback only for published entries (not preview, not manual mode)
7695
- prebuildFallback: prebuildLoader && !preview ? () => prebuildLoader.loadEntries(siteId, params) : void 0
7696
- });
7827
+ const apiParams = {
7828
+ siteId,
7829
+ type: contentType,
7830
+ ...typeof limit === "number" && { limit: String(limit) },
7831
+ ...typeof offset === "number" && { offset: String(offset) },
7832
+ ...includeMeta && { meta: "true" },
7833
+ ...orderParam && { order: orderParam },
7834
+ ...preview && { stage: "preview" },
7835
+ ...mode === "manual" && entryIds?.length && {
7836
+ mode: "manual",
7837
+ entryIds: JSON.stringify(entryIds)
7838
+ }
7839
+ };
7840
+ return await apiClient({
7841
+ endpoint: "listPublishedEntries",
7842
+ params: apiParams,
7843
+ options: { signal: sig }
7844
+ });
7845
+ },
7846
+ {
7847
+ preview,
7848
+ signal,
7849
+ // Prebuild fallback only for published entries (not preview, not manual mode)
7850
+ prebuildFallback: prebuildLoader && !preview ? () => prebuildLoader.loadEntries(siteId, params) : void 0
7851
+ }
7852
+ );
7697
7853
  },
7698
7854
  async getEntry(params) {
7699
7855
  const { siteId, contentType, slug, signal } = params;
7700
7856
  const cacheKey = `entry:${siteId}:${contentType}:${slug}`;
7701
- return resilientFetch(cacheKey, async (sig) => {
7702
- return await apiClient({ endpoint: "getPublishedEntryPreview", params: { siteId, type: contentType, slug }, options: { signal: sig } });
7703
- }, { signal });
7857
+ return resilientFetchData(
7858
+ cacheKey,
7859
+ async (sig) => {
7860
+ return await apiClient({
7861
+ endpoint: "getPublishedEntryPreview",
7862
+ params: { siteId, type: contentType, slug },
7863
+ options: { signal: sig }
7864
+ });
7865
+ },
7866
+ { signal }
7867
+ );
7704
7868
  },
7705
7869
  async getPublicFormById(params) {
7706
7870
  const { formId, siteId, signal } = params;
@@ -7708,10 +7872,18 @@ function createRiverbankClient(config) {
7708
7872
  throw new Error("getPublicFormById() requires formId and siteId");
7709
7873
  }
7710
7874
  const cacheKey = `public-form:${siteId}:${formId}`;
7711
- return resilientFetch(cacheKey, async (sig) => {
7712
- const response = await apiClient({ endpoint: "getPublicFormById", params: { formId, siteId }, options: { signal: sig } });
7713
- return normalizePublicFormResult(response);
7714
- }, { signal });
7875
+ return resilientFetchData(
7876
+ cacheKey,
7877
+ async (sig) => {
7878
+ const response = await apiClient({
7879
+ endpoint: "getPublicFormById",
7880
+ params: { formId, siteId },
7881
+ options: { signal: sig }
7882
+ });
7883
+ return normalizePublicFormResult(response);
7884
+ },
7885
+ { signal }
7886
+ );
7715
7887
  },
7716
7888
  async getForms(params) {
7717
7889
  const { siteId, signal } = params;
@@ -7719,34 +7891,42 @@ function createRiverbankClient(config) {
7719
7891
  throw new Error("getForms() requires siteId");
7720
7892
  }
7721
7893
  const cacheKey = `forms:${siteId}`;
7722
- return resilientFetch(cacheKey, async (sig) => {
7723
- const response = await apiClient({ endpoint: "listPublicForms", params: { siteId }, options: { signal: sig } });
7724
- return normalizePublicFormsResult(response);
7725
- }, {
7726
- signal,
7727
- prebuildFallback: prebuildLoader ? () => {
7728
- const result = prebuildLoader.loadForms();
7729
- if (result) {
7730
- return {
7731
- data: {
7732
- forms: result.data.map((form) => ({
7733
- id: form.id,
7734
- slug: form.slug,
7735
- name: form.name,
7736
- schema: form.schema,
7737
- settings: form.settings,
7738
- schemaJson: form.schema,
7739
- settingsJson: form.settings,
7740
- createdAt: null,
7741
- updatedAt: null
7742
- }))
7743
- },
7744
- prebuildAgeSec: result.prebuildAgeSec
7745
- };
7746
- }
7747
- return null;
7748
- } : void 0
7749
- });
7894
+ return resilientFetchData(
7895
+ cacheKey,
7896
+ async (sig) => {
7897
+ const response = await apiClient({
7898
+ endpoint: "listPublicForms",
7899
+ params: { siteId },
7900
+ options: { signal: sig }
7901
+ });
7902
+ return normalizePublicFormsResult(response);
7903
+ },
7904
+ {
7905
+ signal,
7906
+ prebuildFallback: prebuildLoader ? () => {
7907
+ const result = prebuildLoader.loadForms();
7908
+ if (result) {
7909
+ return {
7910
+ data: {
7911
+ forms: result.data.map((form) => ({
7912
+ id: form.id,
7913
+ slug: form.slug,
7914
+ name: form.name,
7915
+ schema: form.schema,
7916
+ settings: form.settings,
7917
+ schemaJson: form.schema,
7918
+ settingsJson: form.settings,
7919
+ createdAt: null,
7920
+ updatedAt: null
7921
+ }))
7922
+ },
7923
+ prebuildAgeSec: result.prebuildAgeSec
7924
+ };
7925
+ }
7926
+ return null;
7927
+ } : void 0
7928
+ }
7929
+ );
7750
7930
  },
7751
7931
  async getPublicBookingServices(params) {
7752
7932
  const { siteId, ids, signal } = params;
@@ -7754,13 +7934,21 @@ function createRiverbankClient(config) {
7754
7934
  throw new Error("getPublicBookingServices() requires siteId");
7755
7935
  }
7756
7936
  const cacheKey = `public-booking-services:${siteId}:${ids ?? ""}`;
7757
- return resilientFetch(cacheKey, async (sig) => {
7758
- const apiParams = {
7759
- siteId,
7760
- ...ids && { ids }
7761
- };
7762
- return await apiClient({ endpoint: "getPublicBookingServices", params: apiParams, options: { signal: sig } });
7763
- }, { signal });
7937
+ return resilientFetchData(
7938
+ cacheKey,
7939
+ async (sig) => {
7940
+ const apiParams = {
7941
+ siteId,
7942
+ ...ids && { ids }
7943
+ };
7944
+ return await apiClient({
7945
+ endpoint: "getPublicBookingServices",
7946
+ params: apiParams,
7947
+ options: { signal: sig }
7948
+ });
7949
+ },
7950
+ { signal }
7951
+ );
7764
7952
  },
7765
7953
  async listPublicEvents(params) {
7766
7954
  const {
@@ -7781,22 +7969,30 @@ function createRiverbankClient(config) {
7781
7969
  throw new Error("listPublicEvents() requires siteId");
7782
7970
  }
7783
7971
  const cacheKey = `public-events:${siteId}:${limit ?? ""}:${from ?? ""}:${to ?? ""}:${stage ?? ""}:${categoryIds ?? ""}:${venueId ?? ""}:${kind ?? ""}:${entryId ?? ""}:${seriesId ?? ""}:${includeOccurrenceId ?? ""}`;
7784
- return resilientFetch(cacheKey, async (sig) => {
7785
- const apiParams = {
7786
- siteId,
7787
- ...typeof limit === "number" && { limit: String(limit) },
7788
- ...from && { from },
7789
- ...to && { to },
7790
- ...stage && { stage },
7791
- ...categoryIds && { categoryIds },
7792
- ...venueId && { venueId },
7793
- ...kind && { kind },
7794
- ...entryId && { entryId },
7795
- ...seriesId && { seriesId },
7796
- ...includeOccurrenceId && { includeOccurrenceId }
7797
- };
7798
- return await apiClient({ endpoint: "listPublicEvents", params: apiParams, options: { signal: sig } });
7799
- }, { signal });
7972
+ return resilientFetchData(
7973
+ cacheKey,
7974
+ async (sig) => {
7975
+ const apiParams = {
7976
+ siteId,
7977
+ ...typeof limit === "number" && { limit: String(limit) },
7978
+ ...from && { from },
7979
+ ...to && { to },
7980
+ ...stage && { stage },
7981
+ ...categoryIds && { categoryIds },
7982
+ ...venueId && { venueId },
7983
+ ...kind && { kind },
7984
+ ...entryId && { entryId },
7985
+ ...seriesId && { seriesId },
7986
+ ...includeOccurrenceId && { includeOccurrenceId }
7987
+ };
7988
+ return await apiClient({
7989
+ endpoint: "listPublicEvents",
7990
+ params: apiParams,
7991
+ options: { signal: sig }
7992
+ });
7993
+ },
7994
+ { signal }
7995
+ );
7800
7996
  },
7801
7997
  async getPublicEventDetails(params) {
7802
7998
  const {
@@ -7820,37 +8016,44 @@ function createRiverbankClient(config) {
7820
8016
  throw new Error("getPublicEventDetails() requires siteId");
7821
8017
  }
7822
8018
  const cacheKey = `public-event-details:${siteId}:${limit ?? ""}:${from ?? ""}:${to ?? ""}:${afterStartsAt ?? ""}:${afterId ?? ""}:${stage ?? ""}:${categoryIds ?? ""}:${venueId ?? ""}:${staffMemberId ?? ""}:${kind ?? ""}:${entryId ?? ""}:${seriesId ?? ""}:${includeOccurrenceId ?? ""}`;
7823
- return resilientFetch(cacheKey, async (sig) => {
7824
- const requestId = "eventDetails";
7825
- const response = await apiClient({
7826
- endpoint: "batchBlockLoaders",
7827
- params: { siteId, ...stage && { stage } },
7828
- body: {
7829
- requests: [
7830
- {
7831
- id: requestId,
7832
- endpoint: "getPublicEventDetails",
7833
- params: {
7834
- ...typeof limit === "number" && { limit: String(limit) },
7835
- ...from && { from },
7836
- ...to && { to },
7837
- ...afterStartsAt && { afterStartsAt },
7838
- ...afterId && { afterId },
7839
- ...categoryIds && { categoryIds },
7840
- ...venueId && { venueId },
7841
- ...staffMemberId && { staffMemberId },
7842
- ...kind && { kind },
7843
- ...entryId && { entryId },
7844
- ...seriesId && { seriesId },
7845
- ...includeOccurrenceId && { includeOccurrenceId }
8019
+ return resilientFetchData(
8020
+ cacheKey,
8021
+ async (sig) => {
8022
+ const requestId = "eventDetails";
8023
+ const response = await apiClient({
8024
+ endpoint: "batchBlockLoaders",
8025
+ params: { siteId, ...stage && { stage } },
8026
+ body: {
8027
+ requests: [
8028
+ {
8029
+ id: requestId,
8030
+ endpoint: "getPublicEventDetails",
8031
+ params: {
8032
+ ...typeof limit === "number" && { limit: String(limit) },
8033
+ ...from && { from },
8034
+ ...to && { to },
8035
+ ...afterStartsAt && { afterStartsAt },
8036
+ ...afterId && { afterId },
8037
+ ...categoryIds && { categoryIds },
8038
+ ...venueId && { venueId },
8039
+ ...staffMemberId && { staffMemberId },
8040
+ ...kind && { kind },
8041
+ ...entryId && { entryId },
8042
+ ...seriesId && { seriesId },
8043
+ ...includeOccurrenceId && { includeOccurrenceId }
8044
+ }
7846
8045
  }
7847
- }
7848
- ]
7849
- },
7850
- options: { signal: sig }
7851
- });
7852
- return normalizeBatchBlockLoaderResult(response, requestId);
7853
- }, { signal });
8046
+ ]
8047
+ },
8048
+ options: { signal: sig }
8049
+ });
8050
+ return normalizeBatchBlockLoaderResult(
8051
+ response,
8052
+ requestId
8053
+ );
8054
+ },
8055
+ { signal }
8056
+ );
7854
8057
  },
7855
8058
  async listPublicCourses(params) {
7856
8059
  const { siteId, limit, stage, signal } = params;
@@ -7858,14 +8061,22 @@ function createRiverbankClient(config) {
7858
8061
  throw new Error("listPublicCourses() requires siteId");
7859
8062
  }
7860
8063
  const cacheKey = `public-courses:${siteId}:${limit ?? ""}:${stage ?? ""}`;
7861
- return resilientFetch(cacheKey, async (sig) => {
7862
- const apiParams = {
7863
- siteId,
7864
- ...typeof limit === "number" && { limit: String(limit) },
7865
- ...stage && { stage }
7866
- };
7867
- return await apiClient({ endpoint: "listPublicCourses", params: apiParams, options: { signal: sig } });
7868
- }, { signal });
8064
+ return resilientFetchData(
8065
+ cacheKey,
8066
+ async (sig) => {
8067
+ const apiParams = {
8068
+ siteId,
8069
+ ...typeof limit === "number" && { limit: String(limit) },
8070
+ ...stage && { stage }
8071
+ };
8072
+ return await apiClient({
8073
+ endpoint: "listPublicCourses",
8074
+ params: apiParams,
8075
+ options: { signal: sig }
8076
+ });
8077
+ },
8078
+ { signal }
8079
+ );
7869
8080
  },
7870
8081
  async listPublicTeamMembers(params) {
7871
8082
  const { siteId, stage, signal } = params;
@@ -7873,17 +8084,21 @@ function createRiverbankClient(config) {
7873
8084
  throw new Error("listPublicTeamMembers() requires siteId");
7874
8085
  }
7875
8086
  const cacheKey = `public-team-members:${siteId}:${stage ?? ""}`;
7876
- return resilientFetch(cacheKey, async (sig) => {
7877
- const apiParams = {
7878
- siteId,
7879
- ...stage && { stage }
7880
- };
7881
- return await apiClient({
7882
- endpoint: "listPublicTeamMembers",
7883
- params: apiParams,
7884
- options: { signal: sig }
7885
- });
7886
- }, { signal });
8087
+ return resilientFetchData(
8088
+ cacheKey,
8089
+ async (sig) => {
8090
+ const apiParams = {
8091
+ siteId,
8092
+ ...stage && { stage }
8093
+ };
8094
+ return await apiClient({
8095
+ endpoint: "listPublicTeamMembers",
8096
+ params: apiParams,
8097
+ options: { signal: sig }
8098
+ });
8099
+ },
8100
+ { signal }
8101
+ );
7887
8102
  },
7888
8103
  async listPublicProducts(params) {
7889
8104
  const { siteId, stage, categorySelector, signal } = params;
@@ -7892,14 +8107,22 @@ function createRiverbankClient(config) {
7892
8107
  }
7893
8108
  const selectorKey = categorySelector ? categorySelector.kind === "category" ? `category:${categorySelector.productCategoryId}` : `current-category-page:${categorySelector.productCategoryEntryId}` : "";
7894
8109
  const cacheKey = `public-products:${siteId}:${stage ?? ""}:${selectorKey}`;
7895
- return resilientFetch(cacheKey, async (sig) => {
7896
- const apiParams = {
7897
- siteId,
7898
- ...stage && { stage },
7899
- ...encodePublicProductCategorySelector(categorySelector)
7900
- };
7901
- return await apiClient({ endpoint: "listPublicProducts", params: apiParams, options: { signal: sig } });
7902
- }, { signal });
8110
+ return resilientFetchData(
8111
+ cacheKey,
8112
+ async (sig) => {
8113
+ const apiParams = {
8114
+ siteId,
8115
+ ...stage && { stage },
8116
+ ...encodePublicProductCategorySelector(categorySelector)
8117
+ };
8118
+ return await apiClient({
8119
+ endpoint: "listPublicProducts",
8120
+ params: apiParams,
8121
+ options: { signal: sig }
8122
+ });
8123
+ },
8124
+ { signal }
8125
+ );
7903
8126
  },
7904
8127
  async listPublicPasses(params) {
7905
8128
  const { siteId, categories, signal } = params;
@@ -7907,13 +8130,21 @@ function createRiverbankClient(config) {
7907
8130
  throw new Error("listPublicPasses() requires siteId");
7908
8131
  }
7909
8132
  const cacheKey = `public-passes:${siteId}:${categories ?? ""}`;
7910
- return resilientFetch(cacheKey, async (sig) => {
7911
- const apiParams = {
7912
- siteId,
7913
- ...categories && { categories }
7914
- };
7915
- return await apiClient({ endpoint: "listPublicPasses", params: apiParams, options: { signal: sig } });
7916
- }, { signal });
8133
+ return resilientFetchData(
8134
+ cacheKey,
8135
+ async (sig) => {
8136
+ const apiParams = {
8137
+ siteId,
8138
+ ...categories && { categories }
8139
+ };
8140
+ return await apiClient({
8141
+ endpoint: "listPublicPasses",
8142
+ params: apiParams,
8143
+ options: { signal: sig }
8144
+ });
8145
+ },
8146
+ { signal }
8147
+ );
7917
8148
  },
7918
8149
  async listPublicMemberships(params) {
7919
8150
  const { siteId, categories, signal } = params;
@@ -7921,25 +8152,44 @@ function createRiverbankClient(config) {
7921
8152
  throw new Error("listPublicMemberships() requires siteId");
7922
8153
  }
7923
8154
  const cacheKey = `public-memberships:${siteId}:${categories ?? ""}`;
7924
- return resilientFetch(cacheKey, async (sig) => {
7925
- const apiParams = {
7926
- siteId,
7927
- ...categories && { categories }
7928
- };
7929
- return await apiClient({ endpoint: "listPublicMemberships", params: apiParams, options: { signal: sig } });
7930
- }, { signal });
8155
+ return resilientFetchData(
8156
+ cacheKey,
8157
+ async (sig) => {
8158
+ const apiParams = {
8159
+ siteId,
8160
+ ...categories && { categories }
8161
+ };
8162
+ return await apiClient({
8163
+ endpoint: "listPublicMemberships",
8164
+ params: apiParams,
8165
+ options: { signal: sig }
8166
+ });
8167
+ },
8168
+ { signal }
8169
+ );
7931
8170
  },
7932
8171
  async resolveEntrySubroute(params) {
7933
8172
  const { siteId, entryId, kind, segment, stage, signal } = params;
7934
8173
  if (!siteId || !entryId || !kind || !segment) {
7935
- throw new Error("resolveEntrySubroute() requires siteId, entryId, kind, and segment");
8174
+ throw new Error(
8175
+ "resolveEntrySubroute() requires siteId, entryId, kind, and segment"
8176
+ );
7936
8177
  }
7937
- return resolveEntrySubrouteInternal({ siteId, entryId, kind, segment, stage, signal });
8178
+ return resolveEntrySubrouteInternal({
8179
+ siteId,
8180
+ entryId,
8181
+ kind,
8182
+ segment,
8183
+ stage,
8184
+ signal
8185
+ });
7938
8186
  },
7939
8187
  async resolveEventOccurrence(params) {
7940
8188
  const { siteId, entryId, segment, signal } = params;
7941
8189
  if (!siteId || !entryId || !segment) {
7942
- throw new Error("resolveEventOccurrence() requires siteId, entryId, and segment");
8190
+ throw new Error(
8191
+ "resolveEventOccurrence() requires siteId, entryId, and segment"
8192
+ );
7943
8193
  }
7944
8194
  const result = await resolveEntrySubrouteInternal({
7945
8195
  siteId,
@@ -7958,13 +8208,17 @@ function createRiverbankClient(config) {
7958
8208
  throw new Error("checkRedirect() requires siteId and path");
7959
8209
  }
7960
8210
  const cacheKey = `redirect:${siteId}:${path3}`;
7961
- return resilientFetch(cacheKey, async (sig) => {
7962
- return await apiClient({
7963
- endpoint: "checkRedirect",
7964
- params: { site: siteId, path: path3 },
7965
- options: { signal: sig }
7966
- });
7967
- }, { signal });
8211
+ return resilientFetchData(
8212
+ cacheKey,
8213
+ async (sig) => {
8214
+ return await apiClient({
8215
+ endpoint: "checkRedirect",
8216
+ params: { site: siteId, path: path3 },
8217
+ options: { signal: sig }
8218
+ });
8219
+ },
8220
+ { signal }
8221
+ );
7968
8222
  },
7969
8223
  async getAllPublishedRoutes(params) {
7970
8224
  const { siteId, signal } = params;
@@ -7972,13 +8226,17 @@ function createRiverbankClient(config) {
7972
8226
  throw new Error("getAllPublishedRoutes() requires siteId");
7973
8227
  }
7974
8228
  const cacheKey = `routable-content:${siteId}:published`;
7975
- return resilientFetch(cacheKey, async (sig) => {
7976
- return await apiClient({
7977
- endpoint: "getPublicRoutableContent",
7978
- params: { siteId, publishedOnly: "true" },
7979
- options: { signal: sig }
7980
- });
7981
- }, { signal });
8229
+ return resilientFetchData(
8230
+ cacheKey,
8231
+ async (sig) => {
8232
+ return await apiClient({
8233
+ endpoint: "getPublicRoutableContent",
8234
+ params: { siteId, publishedOnly: "true" },
8235
+ options: { signal: sig }
8236
+ });
8237
+ },
8238
+ { signal }
8239
+ );
7982
8240
  },
7983
8241
  async getSitemapRoutes(params) {
7984
8242
  const { siteId, page, pageSize, signal } = params;
@@ -7986,17 +8244,21 @@ function createRiverbankClient(config) {
7986
8244
  throw new Error("getSitemapRoutes() requires siteId");
7987
8245
  }
7988
8246
  const cacheKey = `sitemap:${siteId}:${page ?? 1}:${pageSize ?? "default"}`;
7989
- return resilientFetch(cacheKey, async (sig) => {
7990
- return await apiClient({
7991
- endpoint: "getPublicSitemapRoutes",
7992
- params: {
7993
- siteId,
7994
- ...page ? { page: String(page) } : {},
7995
- ...pageSize ? { pageSize: String(pageSize) } : {}
7996
- },
7997
- options: { signal: sig }
7998
- });
7999
- }, { signal });
8247
+ return resilientFetchData(
8248
+ cacheKey,
8249
+ async (sig) => {
8250
+ return await apiClient({
8251
+ endpoint: "getPublicSitemapRoutes",
8252
+ params: {
8253
+ siteId,
8254
+ ...page ? { page: String(page) } : {},
8255
+ ...pageSize ? { pageSize: String(pageSize) } : {}
8256
+ },
8257
+ options: { signal: sig }
8258
+ });
8259
+ },
8260
+ { signal }
8261
+ );
8000
8262
  },
8001
8263
  clearCache() {
8002
8264
  cache.clear();
@@ -8833,5 +9095,6 @@ export {
8833
9095
  canUsePrebuild,
8834
9096
  createPrebuildLoader,
8835
9097
  createRiverbankClient,
9098
+ getResilienceStatusFromError,
8836
9099
  prebuildCache
8837
9100
  };