@riverbankcms/sdk 0.138.0 → 0.139.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 +11 -15
  2. package/dist/{PreviewEditorSidebar-BVPur_CU.mjs → PreviewEditorSidebar-BDeenhi3.mjs} +4 -4
  3. package/dist/{PreviewEditorUI-DLhWX8oh.mjs → PreviewEditorUI-DSRhgjF5.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BguJY1SW.mjs → PreviewQueryProvider-D2K8GLUG.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-Tda6qw4z.mjs → SdkPreviewModeRuntime-CL7wSnYu.mjs} +47 -27
  6. package/dist/{SiteChromeCustomizeContext-BHFgMjde.mjs → SiteChromeCustomizeContext-BhDn-5ir.mjs} +7771 -5863
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +99 -330
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +9 -30
  9. package/dist/_dts/api/src/billing.d.ts +10 -3
  10. package/dist/_dts/api/src/contentRuntime.d.ts +8 -1
  11. package/dist/_dts/api/src/endpoints.d.ts +182 -103
  12. package/dist/_dts/api/src/footerSettings.d.ts +2 -5
  13. package/dist/_dts/api/src/index.d.ts +11 -9
  14. package/dist/_dts/api/src/mailchimpIntegration.d.ts +2 -59
  15. package/dist/_dts/api/src/mailingListIntegration.d.ts +117 -0
  16. package/dist/_dts/api/src/navigation/locations.d.ts +1 -0
  17. package/dist/_dts/api/src/navigation.d.ts +1 -26
  18. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +109 -2
  19. package/dist/_dts/api/src/onboarding/surfaceData.d.ts +185 -0
  20. package/dist/_dts/api/src/privacyPolicy.d.ts +74 -2
  21. package/dist/_dts/api/src/publicBookingAvailabilityEndpointDefinitions.d.ts +6 -6
  22. package/dist/_dts/api/src/publicEventEndpointDefinitions.d.ts +1 -1
  23. package/dist/_dts/api/src/publicExperience/newsletterEndpoints.d.ts +2 -4
  24. package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +10 -24
  25. package/dist/_dts/api/src/publicReadEndpointDefinitions.d.ts +73 -0
  26. package/dist/_dts/api/src/schemas/site-api-keys.d.ts +1 -1
  27. package/dist/_dts/api/src/sdkContracts.d.ts +2 -10
  28. package/dist/_dts/api/src/sdkThemeWire.d.ts +2 -2
  29. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +0 -29
  30. package/dist/_dts/api/src/siteOnboarding.d.ts +91 -228
  31. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -9
  32. package/dist/_dts/api/src/siteSettings.d.ts +20 -1
  33. package/dist/_dts/api/src/types.d.ts +5 -4
  34. package/dist/_dts/billing/src/membership/index.d.ts +14 -7
  35. package/dist/_dts/billing/src/plans/display.d.ts +15 -0
  36. package/dist/_dts/billing/src/plans/registry.d.ts +2 -0
  37. package/dist/_dts/billing/src/plans/standing.d.ts +19 -0
  38. package/dist/_dts/billing/src/plans/types.d.ts +1 -7
  39. package/dist/_dts/billing/src/subscriptions/evidence.d.ts +12 -0
  40. package/dist/_dts/billing/src/subscriptions/standingEvidence.d.ts +31 -0
  41. package/dist/_dts/billing/src/subscriptions/store.d.ts +23 -5
  42. package/dist/_dts/blocks/src/PageRenderer.d.ts +6 -15
  43. package/dist/_dts/blocks/src/client.d.ts +1 -1
  44. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +32 -16
  45. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +4 -0
  46. package/dist/_dts/blocks/src/pageRenderingMode.d.ts +12 -6
  47. package/dist/_dts/blocks/src/system/blocks/appointment-services.d.ts +11 -0
  48. package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +39 -66
  49. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +39 -114
  50. package/dist/_dts/blocks/src/system/blocks/offerings-preview/catalogue.d.ts +18 -0
  51. package/dist/_dts/blocks/src/system/blocks/offerings-preview/fields.d.ts +2 -0
  52. package/dist/_dts/blocks/src/system/blocks/offerings-preview/index.d.ts +4 -0
  53. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +7 -13
  54. package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
  55. package/dist/_dts/blocks/src/system/data/index.d.ts +2 -2
  56. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  57. package/dist/_dts/blocks/src/system/data/publicLoaderCachePolicy.d.ts +2 -74
  58. package/dist/_dts/blocks/src/system/fragments/library/newsletterForm.d.ts +33 -100
  59. package/dist/_dts/blocks/src/system/runtime/api/types/newsletter.d.ts +5 -15
  60. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +48 -24
  61. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -12
  62. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +3 -0
  63. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +1 -1
  64. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarToday.d.ts +22 -0
  65. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +51 -0
  66. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +2 -0
  67. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +0 -1
  68. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +28 -0
  69. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/bookability.d.ts +9 -0
  70. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +14 -0
  71. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/duration.d.ts +2 -0
  72. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/index.d.ts +4 -0
  73. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/location.d.ts +2 -0
  74. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/quickDates.d.ts +16 -0
  75. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/AgendaEventCard.d.ts +9 -1
  76. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarDayCell.d.ts +2 -0
  77. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarDayHeaders.d.ts +4 -0
  78. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/DayEventsModal.d.ts +2 -1
  79. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +5 -0
  80. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModals.d.ts +2 -1
  81. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventQuickDates.d.ts +15 -0
  82. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekAgendaView.d.ts +7 -3
  83. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekTimetableView.d.ts +1 -0
  84. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/index.d.ts +2 -0
  85. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/timetableModel.d.ts +1 -0
  86. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/useHydrationReady.d.ts +6 -0
  87. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.state.d.ts +3 -0
  88. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +56 -33
  89. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +3 -3
  90. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +13 -31
  91. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview-catalogue.d.ts +14 -0
  92. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview-content.d.ts +23 -0
  93. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview.d.ts +4 -2
  94. package/dist/_dts/blocks/src/system/transforms/registry/formatting.d.ts +5 -0
  95. package/dist/_dts/commerce/src/purchase/index.d.ts +1 -0
  96. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +5 -12
  97. package/dist/_dts/commerce/src/purchase/stripeCommissionMetadata.d.ts +34 -0
  98. package/dist/_dts/content-editor/src/footerEngagementDraft.d.ts +6 -24
  99. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +1 -2
  100. package/dist/_dts/core/src/footer-engagement.d.ts +2 -6
  101. package/dist/_dts/core/src/index.d.ts +9 -1
  102. package/dist/_dts/core/src/mailing-list-identifiers.d.ts +21 -0
  103. package/dist/_dts/core/src/mailing-list-runtime.d.ts +42 -0
  104. package/dist/_dts/core/src/mailing-list-setup-parser.d.ts +14 -0
  105. package/dist/_dts/core/src/mailing-list-setup.d.ts +129 -0
  106. package/dist/_dts/core/src/mailing-list-submission.d.ts +244 -0
  107. package/dist/_dts/core/src/mailing-list-targeting-parser.d.ts +12 -0
  108. package/dist/_dts/core/src/mailing-list-targeting.d.ts +93 -0
  109. package/dist/_dts/core/src/navigation-locations.d.ts +28 -0
  110. package/dist/_dts/core/src/public-profile.d.ts +9 -1
  111. package/dist/_dts/core/src/public-read-cache-contract.d.ts +45 -0
  112. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +529 -373
  113. package/dist/_dts/editor-blocks/src/widgets/index.d.ts +1 -0
  114. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListTargetingField.d.ts +11 -0
  115. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/context.d.ts +13 -0
  116. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/index.d.ts +3 -0
  117. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +6 -0
  118. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +1 -0
  119. package/dist/_dts/sdk/src/client/publicAppointmentReadOperations.d.ts +12 -0
  120. package/dist/_dts/sdk/src/client/publicEventReadOperations.d.ts +2 -1
  121. package/dist/_dts/sdk/src/client/publicLoaderCacheAccess.d.ts +11 -4
  122. package/dist/_dts/sdk/src/config/content-types.d.ts +3 -13
  123. package/dist/_dts/sdk/src/config/content-validation.d.ts +5 -8
  124. package/dist/_dts/sdk/src/constants.d.ts +3 -3
  125. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  126. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +12 -31
  127. package/dist/_dts/sdk/src/navigation/index.d.ts +11 -29
  128. package/dist/_dts/sdk/src/next/index.d.ts +4 -4
  129. package/dist/_dts/sdk/src/prebuild/types.d.ts +1 -5
  130. package/dist/_dts/sdk/src/public-api/contracts.d.ts +33 -16
  131. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +3 -0
  132. package/dist/_dts/sdk/src/rendering/client.d.ts +3 -20
  133. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +3 -0
  134. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +4 -0
  135. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +1 -0
  136. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -1
  137. package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
  138. package/dist/_dts/sdk/src/version.d.ts +1 -1
  139. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  140. package/dist/_dts/theme-core/src/hosted-booking-appearance.d.ts +41 -0
  141. package/dist/_dts/theme-core/src/index.d.ts +1 -0
  142. package/dist/_dts/theme-core/src/runtime/buildThemeRuntime.d.ts +0 -1
  143. package/dist/_dts/theme-core/src/tokens/tokens.d.ts +7 -0
  144. package/dist/_dts/ui/src/badge.d.ts +1 -1
  145. package/dist/_dts/ui/src/callout.d.ts +1 -1
  146. package/dist/client/{BookingConsentAgreement-DQUik1Mx.mjs → BookingConsentAgreement-CZvTDtsK.mjs} +2 -2
  147. package/dist/client/{DiscountCodeDisclosure-CU67Q4vH.mjs → DiscountCodeDisclosure-D-DsLCMU.mjs} +1 -1
  148. package/dist/client/{EventCombined.client-a02TXUgg.mjs → EventCombined.client-dWqgd5ZO.mjs} +443 -199
  149. package/dist/client/{EventListing.client-99qx7jFl.mjs → EventListing.client-BMRa9IYp.mjs} +2 -2
  150. package/dist/client/{LeafletStaticMap-CWzcq73L.mjs → LeafletStaticMap-D21W9kBZ.mjs} +1 -1
  151. package/dist/client/{accordion-D1nb3-Oj.mjs → accordion-FxF_ta47.mjs} +1 -1
  152. package/dist/client/{bookingForm-BGrmLhaO.mjs → bookingForm-YnwW4TGw.mjs} +5 -5
  153. package/dist/client/bookings.mjs +43 -2
  154. package/dist/client/{carousel-DSmOx3ad.mjs → carousel-vng7fFT5.mjs} +1 -1
  155. package/dist/client/{cart-COWeOIUk.mjs → cart-DEPDsjNk.mjs} +3 -3
  156. package/dist/client/{checkout-CeysaIJK.mjs → checkout-CZRWu9rW.mjs} +3 -3
  157. package/dist/client/client.mjs +3331 -1407
  158. package/dist/client/{context-DBzX85Xc.mjs → context-DvU_WUmd.mjs} +4 -3
  159. package/dist/client/{dates-DCYhZBlW.mjs → dates-wnPMiRl5.mjs} +21 -3
  160. package/dist/client/{eventCalendar-BgsN73Ul.mjs → eventCalendar-BA3Q5L15.mjs} +80 -78
  161. package/dist/client/{eventCombined-DcZQAMQP.mjs → eventCombined-51wgR-1R.mjs} +3 -3
  162. package/dist/client/{eventDetails-BWwGJ54l.mjs → eventDetails-modaetpm.mjs} +4 -4
  163. package/dist/client/{eventListing-DqYqV8vp.mjs → eventListing-D8t2J3Kv.mjs} +3 -3
  164. package/dist/client/{eventRegistration-DQGDgu_e.mjs → eventRegistration-CYqtkCE_.mjs} +49 -9
  165. package/dist/client/{form-ClfpasVT.mjs → form-CBKXN5In.mjs} +2 -2
  166. package/dist/client/{headerSection-BuOMe98N.mjs → headerSection-DylDqNrs.mjs} +2 -2
  167. package/dist/client/hooks.mjs +1259 -555
  168. package/dist/client/{locationMap-CEqu_sfa.mjs → locationMap-CvWrG0vZ.mjs} +2 -2
  169. package/dist/client/{newsletterForm-IbrHjMxy.mjs → newsletterForm-Btwk70zw.mjs} +117 -38
  170. package/dist/client/{pricing-xj7MPZlK.mjs → pricing-Uzw-GQ6Y.mjs} +1 -1
  171. package/dist/client/{productDetail-vxqTt5Xj.mjs → productDetail-JLcUYKnd.mjs} +3 -3
  172. package/dist/client/{productList-OTdZu8sb.mjs → productList-FM0cbUzj.mjs} +3 -3
  173. package/dist/client/{propsDecoder-CY9gGEF7.mjs → propsDecoder-DYzafZb2.mjs} +592 -152
  174. package/dist/client/rendering/client.mjs +2259 -835
  175. package/dist/client/rendering/islands.mjs +17 -17
  176. package/dist/client/rendering.mjs +3308 -1236
  177. package/dist/client/{scrollToBlock--BFV6kl-.mjs → scrollToBlock-CvXszexS.mjs} +1 -1
  178. package/dist/client/{shop-CP4YbDL9.mjs → shop-BIcjvy5a.mjs} +6 -6
  179. package/dist/client/{shop-commerce-APs4XBXE.mjs → shop-commerce-BZQsy7xw.mjs} +5 -5
  180. package/dist/client/{shop-commerce-store-CAVLxLFr.mjs → shop-commerce-store-D5V7XAb5.mjs} +1 -1
  181. package/dist/client/{shopShared-BnSRrwXI.mjs → shopShared-DowkXevB.mjs} +3 -3
  182. package/dist/client/{useEventFilters-1a1by4c8.mjs → useEventFilters-oMoTw_JE.mjs} +56 -9
  183. package/dist/preview-next/before-render.mjs +238 -111
  184. package/dist/preview-next/client/runtime.mjs +4 -4
  185. package/dist/preview-next/keepAlive.mjs +238 -111
  186. package/dist/preview-next/middleware.mjs +238 -111
  187. package/dist/{previewAuthStore-BkEgnYPP.mjs → previewAuthStore-COUyAKaX.mjs} +238 -111
  188. package/dist/{sdk-runtime-DwGfsT0S.mjs → sdk-runtime-D4k2LSGF.mjs} +2 -2
  189. package/dist/{separator-BeqDLneQ.mjs → separator-UGtpag4Z.mjs} +1 -1
  190. package/dist/server/components.mjs +2697 -1023
  191. package/dist/server/config-validation.mjs +2424 -1720
  192. package/dist/server/config.mjs +2429 -1724
  193. package/dist/server/data.mjs +1164 -454
  194. package/dist/server/index.mjs +364 -280
  195. package/dist/server/navigation.mjs +16 -47
  196. package/dist/server/next.mjs +2915 -1380
  197. package/dist/server/page-converter.mjs +969 -522
  198. package/dist/server/prebuild.mjs +2 -3
  199. package/dist/server/rendering/server.mjs +2704 -1030
  200. package/dist/server/rendering.mjs +2742 -1063
  201. package/dist/server/routing.mjs +1386 -595
  202. package/dist/server/server.mjs +2878 -2324
  203. package/dist/server/theme-bridge.mjs +292 -24
  204. package/dist/styles/index.css +289 -25
  205. package/package.json +1 -1
  206. package/dist/_dts/api/src/navigation/identity.d.ts +0 -59
  207. package/dist/_dts/blocks/src/system/blocks/newsletter-signup-destination.d.ts +0 -291
  208. package/dist/_dts/core/src/newsletter-signup-destination.d.ts +0 -38
@@ -969,14 +969,117 @@ const NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
969
969
  responseKind: "json",
970
970
  errors: ["auth:forbidden", "server:internal_error"]
971
971
  },
972
- getMailchimpSignupSyncHealth: {
973
- path: "/sites/{siteId}/integrations/mailchimp/signup-sync-health",
972
+ getMailingListSetup: {
973
+ path: "/sites/{siteId}/mailing-list/setup",
974
+ method: "GET",
975
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
976
+ auth: "user",
977
+ responseKind: "json",
978
+ errors: ["auth:forbidden", "server:internal_error"]
979
+ },
980
+ getMailingListAuthoringContext: {
981
+ path: "/sites/{siteId}/mailing-list/authoring-context",
982
+ method: "GET",
983
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
984
+ auth: "user",
985
+ responseKind: "json",
986
+ errors: ["auth:forbidden", "server:internal_error"]
987
+ },
988
+ previewMailingListSetupChange: {
989
+ path: "/sites/{siteId}/mailing-list/setup/preview",
990
+ method: "POST",
991
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
992
+ auth: "user",
993
+ responseKind: "json",
994
+ demoMutation: DEMO_MUTATION_ALLOWED,
995
+ errors: [
996
+ "auth:forbidden",
997
+ "validation:invalid_input",
998
+ "server:internal_error"
999
+ ]
1000
+ },
1001
+ applyMailingListSetupChange: {
1002
+ path: "/sites/{siteId}/mailing-list/setup",
1003
+ method: "PUT",
1004
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
1005
+ auth: "user",
1006
+ responseKind: "json",
1007
+ demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
1008
+ errors: [
1009
+ "auth:forbidden",
1010
+ "validation:invalid_input",
1011
+ "resource:conflict",
1012
+ "server:internal_error"
1013
+ ]
1014
+ },
1015
+ getMailingListProviderCatalog: {
1016
+ path: "/sites/{siteId}/mailing-list/providers/{provider}/catalog",
1017
+ method: "GET",
1018
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
1019
+ auth: "user",
1020
+ responseKind: "json",
1021
+ errors: [
1022
+ "auth:forbidden",
1023
+ "validation:invalid_input",
1024
+ "server:internal_error"
1025
+ ]
1026
+ },
1027
+ refreshMailingListProviderCatalog: {
1028
+ path: "/sites/{siteId}/mailing-list/providers/{provider}/catalog/refresh",
1029
+ method: "POST",
1030
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
1031
+ auth: "user",
1032
+ responseKind: "json",
1033
+ demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
1034
+ errors: [
1035
+ "auth:forbidden",
1036
+ "validation:invalid_input",
1037
+ "server:internal_error"
1038
+ ]
1039
+ },
1040
+ getMailingListProviderHealth: {
1041
+ path: "/sites/{siteId}/mailing-list/health",
1042
+ method: "GET",
1043
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
1044
+ auth: "user",
1045
+ responseKind: "json",
1046
+ errors: ["auth:forbidden", "server:internal_error"]
1047
+ },
1048
+ getBrevoConnection: {
1049
+ path: "/sites/{siteId}/integrations/brevo/connection",
974
1050
  method: "GET",
975
1051
  tags: [TAG_TEMPLATES.site],
976
1052
  auth: "user",
977
1053
  responseKind: "json",
978
1054
  errors: ["auth:forbidden", "server:internal_error"]
979
1055
  },
1056
+ connectBrevo: {
1057
+ path: "/sites/{siteId}/integrations/brevo/connection",
1058
+ method: "PUT",
1059
+ tags: [TAG_TEMPLATES.site],
1060
+ auth: "user",
1061
+ responseKind: "json",
1062
+ demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
1063
+ errors: [
1064
+ "auth:forbidden",
1065
+ "validation:invalid_input",
1066
+ "resource:conflict",
1067
+ "server:internal_error"
1068
+ ]
1069
+ },
1070
+ disconnectBrevo: {
1071
+ path: "/sites/{siteId}/integrations/brevo/disconnect",
1072
+ method: "POST",
1073
+ tags: [TAG_TEMPLATES.site],
1074
+ auth: "user",
1075
+ responseKind: "json",
1076
+ demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
1077
+ errors: [
1078
+ "auth:forbidden",
1079
+ "resource:conflict",
1080
+ "server:internal_error"
1081
+ ]
1082
+ },
980
1083
  getMailchimpConnection: {
981
1084
  path: "/sites/{siteId}/integrations/mailchimp/connection",
982
1085
  method: "GET",
@@ -1199,6 +1302,59 @@ const NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1199
1302
  responseKind: "json"
1200
1303
  }
1201
1304
  });
1305
+ const PUBLIC_CONTENT_FRESHNESS_SECONDS = 3600;
1306
+ function availability(transport) {
1307
+ return {
1308
+ kind: "live",
1309
+ reason: "booking_correctness",
1310
+ freshness: "availability",
1311
+ transport
1312
+ };
1313
+ }
1314
+ function content(tags, transport = "direct") {
1315
+ return {
1316
+ kind: "tagged",
1317
+ tags,
1318
+ freshness: "content",
1319
+ transport
1320
+ };
1321
+ }
1322
+ /** The single classification authority for cacheable public reads. */
1323
+ const PUBLIC_READ_CACHE_POLICIES = {
1324
+ listPublishedEntries: content(["published_content"]),
1325
+ getPublishedEntryPreview: content(["published_content"]),
1326
+ listPublicEvents: availability("direct"),
1327
+ listPublicEventCalendarWindow: availability("direct"),
1328
+ listPublicRecurringSchedule: availability("batch_only"),
1329
+ getPublicEventDetails: availability("batch_only"),
1330
+ resolveEventSubroute: availability("direct"),
1331
+ listPublicRouteCandidates: content(["published_content"], "batch_only"),
1332
+ listPublicTeamMembers: content(["public_team_members"]),
1333
+ listPublicProducts: availability("direct"),
1334
+ listPublicPasses: availability("direct"),
1335
+ listPublicMemberships: availability("direct"),
1336
+ getPublicFormById: content(["site_forms"]),
1337
+ getPublicBookingServices: availability("direct"),
1338
+ getPublicBookingService: availability("direct"),
1339
+ getPublicBookingResourcesReference: availability("direct"),
1340
+ getPublicBookingAvailableDates: availability("direct"),
1341
+ getPublicBookingAvailableSlots: availability("direct"),
1342
+ getPublicWeeklySlotAvailability: availability("direct"),
1343
+ listPublicForms: content(["site_forms"]),
1344
+ checkRedirect: content([]),
1345
+ getPublicRoutableContent: content(["published_content"]),
1346
+ getPublicSitemapRoutes: content(["published_content"])
1347
+ };
1348
+ const PUBLIC_READ_ENDPOINT_SET = new Set(Object.keys(PUBLIC_READ_CACHE_POLICIES));
1349
+ function isPublicReadEndpoint(endpoint) {
1350
+ return PUBLIC_READ_ENDPOINT_SET.has(endpoint);
1351
+ }
1352
+ function getPublicReadCachePolicy(endpoint) {
1353
+ return PUBLIC_READ_CACHE_POLICIES[endpoint];
1354
+ }
1355
+ function publicReadFreshnessSeconds(endpoint) {
1356
+ return getPublicReadCachePolicy(endpoint).freshness === "availability" ? 60 : PUBLIC_CONTENT_FRESHNESS_SECONDS;
1357
+ }
1202
1358
  //#endregion
1203
1359
  //#region ../api/src/publicEventEndpointDefinitions.ts
1204
1360
  const PUBLIC_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
@@ -1232,7 +1388,7 @@ const PUBLIC_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1232
1388
  resolveEventSubroute: {
1233
1389
  path: "/public/sites/{siteId}/events/subroutes/resolve",
1234
1390
  method: "GET",
1235
- revalidate: 60,
1391
+ revalidate: publicReadFreshnessSeconds("resolveEventSubroute"),
1236
1392
  tags: [TAG_TEMPLATES.publicEvents, "event-subroute"],
1237
1393
  auth: "public",
1238
1394
  responseKind: "json",
@@ -1285,7 +1441,7 @@ const PUBLIC_BOOKING_AVAILABILITY_ENDPOINT_DEFINITIONS = defineEndpointDefinitio
1285
1441
  getPublicBookingServices: {
1286
1442
  path: "/public/bookings/services",
1287
1443
  method: "GET",
1288
- revalidate: 60,
1444
+ revalidate: publicReadFreshnessSeconds("getPublicBookingServices"),
1289
1445
  tags: [TAG_TEMPLATES.publicBookingServices],
1290
1446
  auth: "public",
1291
1447
  responseKind: "json"
@@ -1293,7 +1449,7 @@ const PUBLIC_BOOKING_AVAILABILITY_ENDPOINT_DEFINITIONS = defineEndpointDefinitio
1293
1449
  getPublicBookingService: {
1294
1450
  path: "/public/bookings/services/{serviceId}",
1295
1451
  method: "GET",
1296
- revalidate: 60,
1452
+ revalidate: publicReadFreshnessSeconds("getPublicBookingService"),
1297
1453
  tags: [TAG_TEMPLATES.publicBookingServices],
1298
1454
  auth: "public",
1299
1455
  responseKind: "json"
@@ -1301,7 +1457,7 @@ const PUBLIC_BOOKING_AVAILABILITY_ENDPOINT_DEFINITIONS = defineEndpointDefinitio
1301
1457
  getPublicBookingResourcesReference: {
1302
1458
  path: "/public/bookings/resources/reference",
1303
1459
  method: "GET",
1304
- revalidate: 60,
1460
+ revalidate: publicReadFreshnessSeconds("getPublicBookingResourcesReference"),
1305
1461
  tags: [TAG_TEMPLATES.publicBookingServices],
1306
1462
  auth: "public",
1307
1463
  responseKind: "json"
@@ -1309,7 +1465,7 @@ const PUBLIC_BOOKING_AVAILABILITY_ENDPOINT_DEFINITIONS = defineEndpointDefinitio
1309
1465
  getPublicBookingAvailableDates: {
1310
1466
  path: "/public/bookings/availability/dates",
1311
1467
  method: "GET",
1312
- revalidate: 60,
1468
+ revalidate: publicReadFreshnessSeconds("getPublicBookingAvailableDates"),
1313
1469
  tags: [TAG_TEMPLATES.publicBookingAvailability, TAG_TEMPLATES.publicBookingServices],
1314
1470
  auth: "public",
1315
1471
  responseKind: "json"
@@ -1317,7 +1473,7 @@ const PUBLIC_BOOKING_AVAILABILITY_ENDPOINT_DEFINITIONS = defineEndpointDefinitio
1317
1473
  getPublicBookingAvailableSlots: {
1318
1474
  path: "/public/bookings/availability/slots",
1319
1475
  method: "GET",
1320
- revalidate: 60,
1476
+ revalidate: publicReadFreshnessSeconds("getPublicBookingAvailableSlots"),
1321
1477
  tags: [TAG_TEMPLATES.publicBookingAvailability, TAG_TEMPLATES.publicBookingServices],
1322
1478
  auth: "public",
1323
1479
  responseKind: "json"
@@ -1325,7 +1481,7 @@ const PUBLIC_BOOKING_AVAILABILITY_ENDPOINT_DEFINITIONS = defineEndpointDefinitio
1325
1481
  getPublicWeeklySlotAvailability: {
1326
1482
  path: "/public/bookings/weekly-slot-availability",
1327
1483
  method: "GET",
1328
- revalidate: 60,
1484
+ revalidate: publicReadFreshnessSeconds("getPublicWeeklySlotAvailability"),
1329
1485
  tags: [TAG_TEMPLATES.publicBookingAvailability, TAG_TEMPLATES.publicBookingServices],
1330
1486
  auth: "public",
1331
1487
  responseKind: "json",
@@ -1775,10 +1931,86 @@ const SDK_MEDIA_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1775
1931
  responseKind: "json"
1776
1932
  }
1777
1933
  });
1934
+ //#endregion
1935
+ //#region ../api/src/publicReadEndpointDefinitions.ts
1936
+ /**
1937
+ * Direct public reads governed by the canonical public-read freshness policy.
1938
+ * Keeping these definitions together makes the endpoint identity used to
1939
+ * derive freshness reviewable beside its route and tags.
1940
+ */
1941
+ const PUBLIC_READ_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1942
+ getPublishedEntryPreview: {
1943
+ path: "/public/content/{siteId}/{type}/{slug}/preview",
1944
+ method: "GET",
1945
+ revalidate: publicReadFreshnessSeconds("getPublishedEntryPreview"),
1946
+ tags: ["content-{siteId}-{type}-{slug}"],
1947
+ auth: "public",
1948
+ responseKind: "json"
1949
+ },
1950
+ listPublishedEntries: {
1951
+ path: "/public/content/{siteId}/{type}/entries",
1952
+ method: "GET",
1953
+ revalidate: publicReadFreshnessSeconds("listPublishedEntries"),
1954
+ tags: ["content-{siteId}-{type}"],
1955
+ auth: "public",
1956
+ responseKind: "json"
1957
+ },
1958
+ getPublicFormById: {
1959
+ path: "/public/forms/{formId}",
1960
+ method: "GET",
1961
+ revalidate: publicReadFreshnessSeconds("getPublicFormById"),
1962
+ tags: [TAG_TEMPLATES.formById],
1963
+ auth: "public",
1964
+ responseKind: "json"
1965
+ },
1966
+ listPublicEvents: {
1967
+ path: "/public/sites/{siteId}/events",
1968
+ method: "GET",
1969
+ revalidate: publicReadFreshnessSeconds("listPublicEvents"),
1970
+ tags: [TAG_TEMPLATES.publicEvents],
1971
+ auth: "public",
1972
+ responseKind: "json"
1973
+ },
1974
+ listPublicTeamMembers: {
1975
+ path: "/public/sites/{siteId}/team-members",
1976
+ method: "GET",
1977
+ revalidate: publicReadFreshnessSeconds("listPublicTeamMembers"),
1978
+ tags: [TAG_TEMPLATES.publicTeamMembers],
1979
+ errors: [],
1980
+ auth: "public",
1981
+ responseKind: "json"
1982
+ },
1983
+ listPublicPasses: {
1984
+ path: "/public/sites/{siteId}/bookings/products/passes",
1985
+ method: "GET",
1986
+ revalidate: publicReadFreshnessSeconds("listPublicPasses"),
1987
+ tags: [TAG_TEMPLATES.publicPasses],
1988
+ auth: "public",
1989
+ responseKind: "json"
1990
+ },
1991
+ listPublicMemberships: {
1992
+ path: "/public/sites/{siteId}/bookings/products/memberships",
1993
+ method: "GET",
1994
+ revalidate: publicReadFreshnessSeconds("listPublicMemberships"),
1995
+ tags: [TAG_TEMPLATES.publicMemberships],
1996
+ auth: "public",
1997
+ responseKind: "json"
1998
+ },
1999
+ listPublicProducts: {
2000
+ path: "/public/sites/{siteId}/products",
2001
+ method: "GET",
2002
+ revalidate: publicReadFreshnessSeconds("listPublicProducts"),
2003
+ tags: [TAG_TEMPLATES.publicProducts],
2004
+ errors: [],
2005
+ auth: "public",
2006
+ responseKind: "json"
2007
+ }
2008
+ });
1778
2009
  const API_ENDPOINTS$1 = {
1779
2010
  ...ACCOUNT_ENDPOINT_DEFINITIONS,
1780
2011
  ...PUBLIC_EVENT_ENDPOINT_DEFINITIONS,
1781
2012
  ...GIFTING_ENDPOINT_DEFINITIONS,
2013
+ ...PUBLIC_READ_ENDPOINT_DEFINITIONS,
1782
2014
  aiContentUpdateChat: {
1783
2015
  path: "/ai/content-update-chat",
1784
2016
  method: "POST",
@@ -3781,13 +4013,6 @@ const API_ENDPOINTS$1 = {
3781
4013
  auth: "user",
3782
4014
  responseKind: "json"
3783
4015
  },
3784
- createNavigationMenu: {
3785
- path: "/sites/{siteId}/navigation/menus",
3786
- method: "POST",
3787
- tags: [TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation],
3788
- auth: "user",
3789
- responseKind: "json"
3790
- },
3791
4016
  getNavigationMenuItems: {
3792
4017
  path: "/sites/{siteId}/navigation/menus/{menuId}",
3793
4018
  method: "GET",
@@ -3799,28 +4024,6 @@ const API_ENDPOINTS$1 = {
3799
4024
  auth: "user",
3800
4025
  responseKind: "json"
3801
4026
  },
3802
- updateNavigationMenu: {
3803
- path: "/sites/{siteId}/navigation/menus/{menuId}",
3804
- method: "PATCH",
3805
- tags: [
3806
- TAG_TEMPLATES.siteCollection,
3807
- TAG_TEMPLATES.siteNavigation,
3808
- TAG_TEMPLATES.navigationMenuById
3809
- ],
3810
- auth: "user",
3811
- responseKind: "json"
3812
- },
3813
- deleteNavigationMenu: {
3814
- path: "/sites/{siteId}/navigation/menus/{menuId}",
3815
- method: "DELETE",
3816
- tags: [
3817
- TAG_TEMPLATES.siteCollection,
3818
- TAG_TEMPLATES.siteNavigation,
3819
- TAG_TEMPLATES.navigationMenuById
3820
- ],
3821
- auth: "user",
3822
- responseKind: "json"
3823
- },
3824
4027
  createNavigationItem: {
3825
4028
  path: "/sites/{siteId}/navigation/menus/{menuId}/items",
3826
4029
  method: "POST",
@@ -3891,22 +4094,6 @@ const API_ENDPOINTS$1 = {
3891
4094
  auth: "public",
3892
4095
  responseKind: "json"
3893
4096
  },
3894
- getPublishedEntryPreview: {
3895
- path: "/public/content/{siteId}/{type}/{slug}/preview",
3896
- method: "GET",
3897
- revalidate: 60,
3898
- tags: ["content-{siteId}-{type}-{slug}"],
3899
- auth: "public",
3900
- responseKind: "json"
3901
- },
3902
- listPublishedEntries: {
3903
- path: "/public/content/{siteId}/{type}/entries",
3904
- method: "GET",
3905
- revalidate: 60,
3906
- tags: ["content-{siteId}-{type}"],
3907
- auth: "public",
3908
- responseKind: "json"
3909
- },
3910
4097
  getPublishedPostPreview: {
3911
4098
  path: "/public/posts/{siteId}/{slug}/preview",
3912
4099
  method: "GET",
@@ -4630,14 +4817,6 @@ const API_ENDPOINTS$1 = {
4630
4817
  auth: "public",
4631
4818
  responseKind: "json"
4632
4819
  },
4633
- getPublicFormById: {
4634
- path: "/public/forms/{formId}",
4635
- method: "GET",
4636
- revalidate: 60,
4637
- tags: [TAG_TEMPLATES.formById],
4638
- auth: "public",
4639
- responseKind: "json"
4640
- },
4641
4820
  listPublicForms: {
4642
4821
  path: "/public/sites/{siteId}/forms",
4643
4822
  method: "GET",
@@ -4920,14 +5099,6 @@ const API_ENDPOINTS$1 = {
4920
5099
  auth: "service",
4921
5100
  responseKind: "json"
4922
5101
  },
4923
- listPublicEvents: {
4924
- path: "/public/sites/{siteId}/events",
4925
- method: "GET",
4926
- revalidate: 60,
4927
- tags: [TAG_TEMPLATES.publicEvents],
4928
- auth: "public",
4929
- responseKind: "json"
4930
- },
4931
5102
  getPublicEventFilters: {
4932
5103
  path: "/public/sites/{siteId}/events/filters",
4933
5104
  method: "GET",
@@ -4936,15 +5107,6 @@ const API_ENDPOINTS$1 = {
4936
5107
  auth: "public",
4937
5108
  responseKind: "json"
4938
5109
  },
4939
- listPublicTeamMembers: {
4940
- path: "/public/sites/{siteId}/team-members",
4941
- method: "GET",
4942
- revalidate: 60,
4943
- tags: [TAG_TEMPLATES.publicTeamMembers],
4944
- errors: [],
4945
- auth: "public",
4946
- responseKind: "json"
4947
- },
4948
5110
  resolveWaitlistClaim: {
4949
5111
  path: "/public/sites/{siteId}/waitlists/claim/resolve",
4950
5112
  method: "POST",
@@ -4958,31 +5120,6 @@ const API_ENDPOINTS$1 = {
4958
5120
  "server:internal_error"
4959
5121
  ]
4960
5122
  },
4961
- listPublicPasses: {
4962
- path: "/public/sites/{siteId}/bookings/products/passes",
4963
- method: "GET",
4964
- revalidate: 300,
4965
- tags: [TAG_TEMPLATES.publicPasses],
4966
- auth: "public",
4967
- responseKind: "json"
4968
- },
4969
- listPublicMemberships: {
4970
- path: "/public/sites/{siteId}/bookings/products/memberships",
4971
- method: "GET",
4972
- revalidate: 300,
4973
- tags: [TAG_TEMPLATES.publicMemberships],
4974
- auth: "public",
4975
- responseKind: "json"
4976
- },
4977
- listPublicProducts: {
4978
- path: "/public/sites/{siteId}/products",
4979
- method: "GET",
4980
- revalidate: 300,
4981
- tags: [TAG_TEMPLATES.publicProducts],
4982
- errors: [],
4983
- auth: "public",
4984
- responseKind: "json"
4985
- },
4986
5123
  createShopCheckout: {
4987
5124
  path: "/public/sites/{siteId}/bookings/checkout",
4988
5125
  method: "POST",
@@ -6811,13 +6948,6 @@ const API_ENDPOINTS$1 = {
6811
6948
  auth: "service",
6812
6949
  responseKind: "json"
6813
6950
  },
6814
- sdkDeleteNavigationMenu: {
6815
- path: "/sdk/{siteId}/navigation/{menuId}",
6816
- method: "DELETE",
6817
- auth: "service",
6818
- responseKind: "json",
6819
- errors: ["resource:not_found", "server:internal_error"]
6820
- },
6821
6951
  sdkUpsertTheme: {
6822
6952
  path: "/sdk/{siteId}/theme",
6823
6953
  method: "POST",
@@ -8095,7 +8225,7 @@ var SimpleCache = class {
8095
8225
  * 1. This constant
8096
8226
  * 2. The "version" field in package.json
8097
8227
  */
8098
- const SDK_VERSION = "0.138.0";
8228
+ const SDK_VERSION = "0.139.0";
8099
8229
  //#endregion
8100
8230
  //#region src/client/error.ts
8101
8231
  let _Symbol$for;
@@ -8285,6 +8415,27 @@ function getResilienceStatusFromError(error) {
8285
8415
  return error[resilienceStatusSymbol];
8286
8416
  }
8287
8417
  //#endregion
8418
+ //#region ../blocks/src/system/data/loaderEndpoints.ts
8419
+ const SUPPORTED_LOADER_ENDPOINTS = [
8420
+ "listPublishedEntries",
8421
+ "getPublishedEntryPreview",
8422
+ "listPublicEvents",
8423
+ "listPublicEventCalendarWindow",
8424
+ "listPublicRecurringSchedule",
8425
+ "getPublicEventDetails",
8426
+ "listPublicRouteCandidates",
8427
+ "listPublicTeamMembers",
8428
+ "listPublicProducts",
8429
+ "listPublicPasses",
8430
+ "listPublicMemberships",
8431
+ "getPublicFormById",
8432
+ "getPublicBookingServices",
8433
+ "getPublicWeeklySlotAvailability"
8434
+ ];
8435
+ function isSupportedLoaderEndpoint(endpoint) {
8436
+ return SUPPORTED_LOADER_ENDPOINTS.includes(endpoint);
8437
+ }
8438
+ //#endregion
8288
8439
  //#region src/public-api/runtime.ts
8289
8440
  const PUBLIC_ENDPOINT_NAMES = [
8290
8441
  "getSite",
@@ -8356,7 +8507,7 @@ const API_ENDPOINTS = Object.freeze({
8356
8507
  listPublishedEntries: {
8357
8508
  path: "/public/content/{siteId}/{type}/entries",
8358
8509
  method: "GET",
8359
- revalidate: 60,
8510
+ revalidate: publicReadFreshnessSeconds("listPublishedEntries"),
8360
8511
  tags: ["content-{siteId}-{type}"],
8361
8512
  auth: "public",
8362
8513
  responseKind: "json"
@@ -8364,7 +8515,7 @@ const API_ENDPOINTS = Object.freeze({
8364
8515
  getPublishedEntryPreview: {
8365
8516
  path: "/public/content/{siteId}/{type}/{slug}/preview",
8366
8517
  method: "GET",
8367
- revalidate: 60,
8518
+ revalidate: publicReadFreshnessSeconds("getPublishedEntryPreview"),
8368
8519
  tags: ["content-{siteId}-{type}-{slug}"],
8369
8520
  auth: "public",
8370
8521
  responseKind: "json"
@@ -8372,7 +8523,7 @@ const API_ENDPOINTS = Object.freeze({
8372
8523
  getPublicFormById: {
8373
8524
  path: "/public/forms/{formId}",
8374
8525
  method: "GET",
8375
- revalidate: 60,
8526
+ revalidate: publicReadFreshnessSeconds("getPublicFormById"),
8376
8527
  tags: ["riverbank:form:{formId}"],
8377
8528
  auth: "public",
8378
8529
  responseKind: "json"
@@ -8388,7 +8539,7 @@ const API_ENDPOINTS = Object.freeze({
8388
8539
  getPublicBookingServices: {
8389
8540
  path: "/public/bookings/services",
8390
8541
  method: "GET",
8391
- revalidate: 60,
8542
+ revalidate: publicReadFreshnessSeconds("getPublicBookingServices"),
8392
8543
  tags: ["riverbank:site:{siteId}:public-booking-services"],
8393
8544
  auth: "public",
8394
8545
  responseKind: "json"
@@ -8396,7 +8547,7 @@ const API_ENDPOINTS = Object.freeze({
8396
8547
  getPublicWeeklySlotAvailability: {
8397
8548
  path: "/public/bookings/weekly-slot-availability",
8398
8549
  method: "GET",
8399
- revalidate: 60,
8550
+ revalidate: publicReadFreshnessSeconds("getPublicWeeklySlotAvailability"),
8400
8551
  tags: ["riverbank:site:{siteId}:public-booking-availability", "riverbank:site:{siteId}:public-booking-services"],
8401
8552
  auth: "public",
8402
8553
  responseKind: "json"
@@ -8410,7 +8561,7 @@ const API_ENDPOINTS = Object.freeze({
8410
8561
  listPublicEvents: {
8411
8562
  path: "/public/sites/{siteId}/events",
8412
8563
  method: "GET",
8413
- revalidate: 60,
8564
+ revalidate: publicReadFreshnessSeconds("listPublicEvents"),
8414
8565
  tags: ["riverbank:site:{siteId}:public-events"],
8415
8566
  auth: "public",
8416
8567
  responseKind: "json"
@@ -8424,7 +8575,7 @@ const API_ENDPOINTS = Object.freeze({
8424
8575
  listPublicTeamMembers: {
8425
8576
  path: "/public/sites/{siteId}/team-members",
8426
8577
  method: "GET",
8427
- revalidate: 60,
8578
+ revalidate: publicReadFreshnessSeconds("listPublicTeamMembers"),
8428
8579
  tags: ["riverbank:site:{siteId}:public-team-members"],
8429
8580
  auth: "public",
8430
8581
  responseKind: "json"
@@ -8432,7 +8583,7 @@ const API_ENDPOINTS = Object.freeze({
8432
8583
  listPublicProducts: {
8433
8584
  path: "/public/sites/{siteId}/products",
8434
8585
  method: "GET",
8435
- revalidate: 300,
8586
+ revalidate: publicReadFreshnessSeconds("listPublicProducts"),
8436
8587
  tags: ["riverbank:site:{siteId}:public-products"],
8437
8588
  auth: "public",
8438
8589
  responseKind: "json"
@@ -8440,7 +8591,7 @@ const API_ENDPOINTS = Object.freeze({
8440
8591
  listPublicPasses: {
8441
8592
  path: "/public/sites/{siteId}/bookings/products/passes",
8442
8593
  method: "GET",
8443
- revalidate: 300,
8594
+ revalidate: publicReadFreshnessSeconds("listPublicPasses"),
8444
8595
  tags: ["riverbank:site:{siteId}:public-passes"],
8445
8596
  auth: "public",
8446
8597
  responseKind: "json"
@@ -8448,7 +8599,7 @@ const API_ENDPOINTS = Object.freeze({
8448
8599
  listPublicMemberships: {
8449
8600
  path: "/public/sites/{siteId}/bookings/products/memberships",
8450
8601
  method: "GET",
8451
- revalidate: 300,
8602
+ revalidate: publicReadFreshnessSeconds("listPublicMemberships"),
8452
8603
  tags: ["riverbank:site:{siteId}:public-memberships"],
8453
8604
  auth: "public",
8454
8605
  responseKind: "json"
@@ -8498,96 +8649,6 @@ function buildEndpointURL(baseURL, endpoint) {
8498
8649
  return baseURL + API_ENDPOINTS[endpoint].path;
8499
8650
  }
8500
8651
  //#endregion
8501
- //#region ../blocks/src/system/data/loaderEndpoints.ts
8502
- const SUPPORTED_LOADER_ENDPOINTS = [
8503
- "listPublishedEntries",
8504
- "getPublishedEntryPreview",
8505
- "listPublicEvents",
8506
- "listPublicEventCalendarWindow",
8507
- "listPublicRecurringSchedule",
8508
- "getPublicEventDetails",
8509
- "listPublicRouteCandidates",
8510
- "listPublicTeamMembers",
8511
- "listPublicProducts",
8512
- "listPublicPasses",
8513
- "listPublicMemberships",
8514
- "getPublicFormById",
8515
- "getPublicBookingServices",
8516
- "getPublicWeeklySlotAvailability"
8517
- ];
8518
- function isSupportedLoaderEndpoint(endpoint) {
8519
- return SUPPORTED_LOADER_ENDPOINTS.includes(endpoint);
8520
- }
8521
- //#endregion
8522
- //#region ../blocks/src/system/data/publicLoaderCachePolicy.ts
8523
- /**
8524
- * Canonical freshness policy for public block-loader data.
8525
- *
8526
- * Consumers may implement tagged caching differently, but a loader marked
8527
- * live here must not be placed in a process-local or durable stale cache.
8528
- */
8529
- const PUBLIC_LOADER_CACHE_POLICIES = {
8530
- listPublicEventCalendarWindow: {
8531
- kind: "live",
8532
- reason: "booking_correctness"
8533
- },
8534
- listPublishedEntries: {
8535
- kind: "tagged",
8536
- tags: ["published_content"]
8537
- },
8538
- getPublishedEntryPreview: {
8539
- kind: "tagged",
8540
- tags: ["published_content"]
8541
- },
8542
- listPublicEvents: {
8543
- kind: "live",
8544
- reason: "booking_correctness"
8545
- },
8546
- listPublicRecurringSchedule: {
8547
- kind: "live",
8548
- reason: "booking_correctness"
8549
- },
8550
- getPublicEventDetails: {
8551
- kind: "live",
8552
- reason: "booking_correctness"
8553
- },
8554
- listPublicRouteCandidates: {
8555
- kind: "tagged",
8556
- tags: ["published_content"]
8557
- },
8558
- listPublicTeamMembers: {
8559
- kind: "tagged",
8560
- tags: ["public_team_members"]
8561
- },
8562
- listPublicProducts: {
8563
- kind: "tagged",
8564
- tags: ["public_products"]
8565
- },
8566
- listPublicPasses: {
8567
- kind: "live",
8568
- reason: "booking_correctness"
8569
- },
8570
- listPublicMemberships: {
8571
- kind: "live",
8572
- reason: "booking_correctness"
8573
- },
8574
- getPublicFormById: {
8575
- kind: "tagged",
8576
- tags: ["site_forms"]
8577
- },
8578
- getPublicBookingServices: {
8579
- kind: "live",
8580
- reason: "booking_correctness"
8581
- },
8582
- getPublicWeeklySlotAvailability: {
8583
- kind: "live",
8584
- reason: "booking_correctness"
8585
- }
8586
- };
8587
- function getPublicLoaderCachePolicy(endpoint) {
8588
- return PUBLIC_LOADER_CACHE_POLICIES[endpoint];
8589
- }
8590
- //#endregion
8591
8652
  //#region src/client/runtimeCacheKeys.ts
8592
8653
  const DEFAULT_PUBLISHED_RUNTIME_CACHE_PAYLOAD_SCHEMA_VERSION = 1;
8593
8654
  function toNonEmptyString(value) {
@@ -8891,7 +8952,7 @@ function resolveKnownEndpointPolicy(endpoint, params) {
8891
8952
  endpoint,
8892
8953
  reason: "force_refresh"
8893
8954
  };
8894
- if (isSupportedLoaderEndpoint(endpoint) && getPublicLoaderCachePolicy(endpoint).kind === "live") return {
8955
+ if (isSupportedLoaderEndpoint(endpoint) && getPublicReadCachePolicy(endpoint).kind === "live") return {
8895
8956
  kind: "live-only",
8896
8957
  endpoint,
8897
8958
  reason: "safety_sensitive_booking"
@@ -9069,14 +9130,51 @@ function createContentReadOperations(input) {
9069
9130
  };
9070
9131
  }
9071
9132
  //#endregion
9072
- //#region src/client/publicLoaderCacheAccess.ts
9073
- function shouldWrite(cacheEnabled, force) {
9074
- return cacheEnabled && !force;
9075
- }
9076
- function liveLoaderOptions(endpoint, signal) {
9133
+ //#region src/client/publicAppointmentReadOperations.ts
9134
+ function createPublicAppointmentReadOperations(deps) {
9077
9135
  return {
9078
- force: getPublicLoaderCachePolicy(endpoint).kind === "live",
9079
- signal
9136
+ async getPublicBookingServices(params) {
9137
+ const { siteId, ids, signal } = params;
9138
+ if (!siteId) throw new Error("getPublicBookingServices() requires siteId");
9139
+ const cacheKey = `public-booking-services:${siteId}:${ids ?? ""}`;
9140
+ return deps.resilientFetchData("getPublicBookingServices", cacheKey, async (requestSignal) => {
9141
+ const apiParams = {
9142
+ siteId,
9143
+ ...ids && { ids }
9144
+ };
9145
+ return await deps.apiClient({
9146
+ endpoint: "getPublicBookingServices",
9147
+ params: apiParams,
9148
+ options: { signal: requestSignal }
9149
+ });
9150
+ }, { signal });
9151
+ },
9152
+ async getPublicWeeklySlotAvailability(params) {
9153
+ const { siteId, serviceId, resourceId, horizonWeeks, timezone, signal } = params;
9154
+ if (!siteId || !serviceId) throw new Error("getPublicWeeklySlotAvailability() requires siteId and serviceId");
9155
+ const cacheKey = [
9156
+ "public-weekly-slot-availability",
9157
+ siteId,
9158
+ serviceId,
9159
+ resourceId ?? "",
9160
+ horizonWeeks ?? "",
9161
+ timezone ?? ""
9162
+ ].join(":");
9163
+ return deps.resilientFetchData("getPublicWeeklySlotAvailability", cacheKey, async (requestSignal) => {
9164
+ const apiParams = {
9165
+ siteId,
9166
+ serviceId,
9167
+ ...resourceId && { resourceId },
9168
+ ...horizonWeeks !== void 0 && { horizonWeeks: String(horizonWeeks) },
9169
+ ...timezone && { timezone }
9170
+ };
9171
+ return await deps.apiClient({
9172
+ endpoint: "getPublicWeeklySlotAvailability",
9173
+ params: apiParams,
9174
+ options: { signal: requestSignal }
9175
+ });
9176
+ }, { signal });
9177
+ }
9080
9178
  };
9081
9179
  }
9082
9180
  //#endregion
@@ -9086,7 +9184,7 @@ function createPublicEventReadOperations(deps) {
9086
9184
  const { siteId, subject, segment, signal } = params;
9087
9185
  if (!siteId || !segment) throw new Error(`${kind === "event-run" ? "resolveEventRun" : "resolveEventOccurrence"}() requires siteId, subject, and segment`);
9088
9186
  const subjectId = subject.kind === "eventOffering" ? subject.eventOfferingId : subject.eventSeriesId;
9089
- return deps.resilientFetchData(`${kind}:${siteId}:${subject.kind}:${subjectId}:${segment}`, (requestSignal) => deps.apiClient({
9187
+ return deps.resilientFetchData("resolveEventSubroute", `${kind}:${siteId}:${subject.kind}:${subjectId}:${segment}`, (requestSignal) => deps.apiClient({
9090
9188
  endpoint: "resolveEventSubroute",
9091
9189
  params: {
9092
9190
  siteId,
@@ -9100,14 +9198,14 @@ function createPublicEventReadOperations(deps) {
9100
9198
  }
9101
9199
  return {
9102
9200
  async listPublicEventCalendarWindow({ signal, ...params }) {
9103
- return deps.resilientFetchData(`public-calendar-window:${JSON.stringify(params)}`, (requestSignal) => deps.apiClient({
9201
+ return deps.resilientFetchData("listPublicEventCalendarWindow", `public-calendar-window:${JSON.stringify(params)}`, (requestSignal) => deps.apiClient({
9104
9202
  endpoint: "listPublicEventCalendarWindow",
9105
9203
  params: {
9106
9204
  ...params,
9107
9205
  limit: params.limit === void 0 ? void 0 : String(params.limit)
9108
9206
  },
9109
9207
  options: { signal: requestSignal }
9110
- }), liveLoaderOptions("listPublicEventCalendarWindow", signal));
9208
+ }), { signal });
9111
9209
  },
9112
9210
  async resolveEventOccurrence(params) {
9113
9211
  const response = await resolveEventSubroute(params, "event-occurrence");
@@ -9416,6 +9514,25 @@ var CircuitOpenError = class extends Error {
9416
9514
  }
9417
9515
  };
9418
9516
  //#endregion
9517
+ //#region src/client/publicLoaderCacheAccess.ts
9518
+ function shouldWrite(cacheEnabled, force) {
9519
+ return cacheEnabled && !force;
9520
+ }
9521
+ /**
9522
+ * Applies the canonical block-loader freshness policy at the SDK fetch seam.
9523
+ *
9524
+ * Callers provide the endpoint identity, but do not opt into live behavior.
9525
+ * This makes a newly-live endpoint bypass memory and fallback caches without a
9526
+ * second method-level wiring change.
9527
+ */
9528
+ function applyPublicLoaderCachePolicy(endpoint, options) {
9529
+ if (!isPublicReadEndpoint(endpoint) || getPublicReadCachePolicy(endpoint).kind !== "live") return options;
9530
+ return {
9531
+ ...options,
9532
+ force: true
9533
+ };
9534
+ }
9535
+ //#endregion
9419
9536
  //#region src/client/index.ts
9420
9537
  let prebuildModule = null;
9421
9538
  function tryRequire(modulePath) {
@@ -9918,8 +10035,8 @@ function createRiverbankClientWithDeps(deps, config) {
9918
10035
  })).resilience);
9919
10036
  }
9920
10037
  }
9921
- async function resilientFetchData(cacheKey, fetcher, options) {
9922
- return (await resilientFetch(cacheKey, fetcher, options)).data;
10038
+ async function resilientFetchData(policyEndpoint, cacheKey, fetcher, options) {
10039
+ return (await resilientFetch(cacheKey, fetcher, applyPublicLoaderCachePolicy(policyEndpoint, options))).data;
9923
10040
  }
9924
10041
  const contentReads = createContentReadOperations({
9925
10042
  apiClient,
@@ -9930,10 +10047,14 @@ function createRiverbankClientWithDeps(deps, config) {
9930
10047
  apiClient,
9931
10048
  resilientFetchData
9932
10049
  });
10050
+ const publicAppointmentReads = createPublicAppointmentReadOperations({
10051
+ apiClient,
10052
+ resilientFetchData
10053
+ });
9933
10054
  async function getEntriesInternal(params) {
9934
10055
  const { siteId, contentType, limit, offset, order, preview = false, mode, entryIds, includeMeta, signal } = params;
9935
10056
  const entryIdsCacheKey = mode === "manual" && entryIds?.length ? entryIds.join(",") : "";
9936
- return resilientFetchData(`entries:${siteId}:${contentType}:${limit ?? ""}:${offset ?? ""}:${order ?? ""}:${preview}:${mode ?? ""}:${entryIdsCacheKey}:${includeMeta ?? ""}`, async (sig) => {
10057
+ return resilientFetchData("listPublishedEntries", `entries:${siteId}:${contentType}:${limit ?? ""}:${offset ?? ""}:${order ?? ""}:${preview}:${mode ?? ""}:${entryIdsCacheKey}:${includeMeta ?? ""}`, async (sig) => {
9937
10058
  let orderParam;
9938
10059
  if (order === "newest") orderParam = "published_at.desc";
9939
10060
  else if (order === "oldest") orderParam = "published_at.asc";
@@ -9993,7 +10114,7 @@ function createRiverbankClientWithDeps(deps, config) {
9993
10114
  },
9994
10115
  async getEntry(params) {
9995
10116
  const { siteId, contentType, slug, signal } = params;
9996
- return resilientFetchData(`entry:${siteId}:${contentType}:${slug}`, async (sig) => {
10117
+ return resilientFetchData("getPublishedEntryPreview", `entry:${siteId}:${contentType}:${slug}`, async (sig) => {
9997
10118
  return await apiClient({
9998
10119
  endpoint: "getPublishedEntryPreview",
9999
10120
  params: {
@@ -10008,7 +10129,7 @@ function createRiverbankClientWithDeps(deps, config) {
10008
10129
  async getPublicFormById(params) {
10009
10130
  const { formId, siteId, signal } = params;
10010
10131
  if (!formId || !siteId) throw new Error("getPublicFormById() requires formId and siteId");
10011
- return resilientFetchData(`public-form:${siteId}:${formId}`, async (sig) => {
10132
+ return resilientFetchData("getPublicFormById", `public-form:${siteId}:${formId}`, async (sig) => {
10012
10133
  return normalizePublicFormResult(await apiClient({
10013
10134
  endpoint: "getPublicFormById",
10014
10135
  params: {
@@ -10022,7 +10143,7 @@ function createRiverbankClientWithDeps(deps, config) {
10022
10143
  async getForms(params) {
10023
10144
  const { siteId, signal } = params;
10024
10145
  if (!siteId) throw new Error("getForms() requires siteId");
10025
- return resilientFetchData(`forms:${siteId}`, async (sig) => {
10146
+ return resilientFetchData("listPublicForms", `forms:${siteId}`, async (sig) => {
10026
10147
  return normalizePublicFormsResult(await apiClient({
10027
10148
  endpoint: "listPublicForms",
10028
10149
  params: { siteId },
@@ -10050,48 +10171,11 @@ function createRiverbankClientWithDeps(deps, config) {
10050
10171
  } : void 0
10051
10172
  });
10052
10173
  },
10053
- async getPublicBookingServices(params) {
10054
- const { siteId, ids, signal } = params;
10055
- if (!siteId) throw new Error("getPublicBookingServices() requires siteId");
10056
- return resilientFetchData(`public-booking-services:${siteId}:${ids ?? ""}`, async (sig) => {
10057
- return await apiClient({
10058
- endpoint: "getPublicBookingServices",
10059
- params: {
10060
- siteId,
10061
- ...ids && { ids }
10062
- },
10063
- options: { signal: sig }
10064
- });
10065
- }, { signal });
10066
- },
10067
- async getPublicWeeklySlotAvailability(params) {
10068
- const { siteId, serviceId, resourceId, horizonWeeks, timezone, signal } = params;
10069
- if (!siteId || !serviceId) throw new Error("getPublicWeeklySlotAvailability() requires siteId and serviceId");
10070
- return resilientFetchData([
10071
- "public-weekly-slot-availability",
10072
- siteId,
10073
- serviceId,
10074
- resourceId ?? "",
10075
- horizonWeeks ?? "",
10076
- timezone ?? ""
10077
- ].join(":"), async (sig) => {
10078
- return await apiClient({
10079
- endpoint: "getPublicWeeklySlotAvailability",
10080
- params: {
10081
- siteId,
10082
- serviceId,
10083
- ...resourceId && { resourceId },
10084
- ...horizonWeeks !== void 0 && { horizonWeeks: String(horizonWeeks) },
10085
- ...timezone && { timezone }
10086
- },
10087
- options: { signal: sig }
10088
- });
10089
- }, { signal });
10090
- },
10174
+ ...publicAppointmentReads,
10091
10175
  async listPublicEvents(params) {
10092
10176
  const { siteId, limit, from, to, afterStartsAt, afterId, stage, categoryIds, venueId, staffMemberId, kind, eventSurface, eventPresets, scheduleScope, detailLevel, readProfile, seriesId, includeOccurrenceId, signal } = params;
10093
10177
  if (!siteId) throw new Error("listPublicEvents() requires siteId");
10094
- return resilientFetchData(`public-events:${siteId}:${limit ?? ""}:${from ?? ""}:${to ?? ""}:${afterStartsAt ?? ""}:${afterId ?? ""}:${stage ?? ""}:${categoryIds ?? ""}:${venueId ?? ""}:${staffMemberId ?? ""}:${kind ?? ""}:${eventSurface ?? ""}:${eventPresets ?? ""}:${scheduleScope ?? ""}:${detailLevel ?? ""}:${readProfile ?? ""}:${seriesId ?? ""}:${includeOccurrenceId ?? ""}`, async (sig) => {
10178
+ return resilientFetchData("listPublicEvents", `public-events:${siteId}:${limit ?? ""}:${from ?? ""}:${to ?? ""}:${afterStartsAt ?? ""}:${afterId ?? ""}:${stage ?? ""}:${categoryIds ?? ""}:${venueId ?? ""}:${staffMemberId ?? ""}:${kind ?? ""}:${eventSurface ?? ""}:${eventPresets ?? ""}:${scheduleScope ?? ""}:${detailLevel ?? ""}:${readProfile ?? ""}:${seriesId ?? ""}:${includeOccurrenceId ?? ""}`, async (sig) => {
10095
10179
  return await apiClient({
10096
10180
  endpoint: "listPublicEvents",
10097
10181
  params: {
@@ -10116,12 +10200,12 @@ function createRiverbankClientWithDeps(deps, config) {
10116
10200
  },
10117
10201
  options: { signal: sig }
10118
10202
  });
10119
- }, liveLoaderOptions("listPublicEvents", signal));
10203
+ }, { signal });
10120
10204
  },
10121
10205
  async getPublicEventDetails(params) {
10122
10206
  const { siteId, limit, from, to, afterStartsAt, afterId, stage, categoryIds, venueId, staffMemberId, kind, eventSurface, eventPresets, scheduleScope, seriesId, includeOccurrenceId, signal } = params;
10123
10207
  if (!siteId) throw new Error("getPublicEventDetails() requires siteId");
10124
- return resilientFetchData(`public-event-details:${siteId}:${limit ?? ""}:${from ?? ""}:${to ?? ""}:${afterStartsAt ?? ""}:${afterId ?? ""}:${stage ?? ""}:${categoryIds ?? ""}:${venueId ?? ""}:${staffMemberId ?? ""}:${kind ?? ""}:${eventSurface ?? ""}:${eventPresets ?? ""}:${scheduleScope ?? ""}:${seriesId ?? ""}:${includeOccurrenceId ?? ""}`, async (sig) => {
10208
+ return resilientFetchData("getPublicEventDetails", `public-event-details:${siteId}:${limit ?? ""}:${from ?? ""}:${to ?? ""}:${afterStartsAt ?? ""}:${afterId ?? ""}:${stage ?? ""}:${categoryIds ?? ""}:${venueId ?? ""}:${staffMemberId ?? ""}:${kind ?? ""}:${eventSurface ?? ""}:${eventPresets ?? ""}:${scheduleScope ?? ""}:${seriesId ?? ""}:${includeOccurrenceId ?? ""}`, async (sig) => {
10125
10209
  const requestId = "eventDetails";
10126
10210
  return normalizeBatchBlockLoaderResult(await apiClient({
10127
10211
  endpoint: "batchBlockLoaders",
@@ -10151,12 +10235,12 @@ function createRiverbankClientWithDeps(deps, config) {
10151
10235
  }] },
10152
10236
  options: { signal: sig }
10153
10237
  }), requestId);
10154
- }, liveLoaderOptions("getPublicEventDetails", signal));
10238
+ }, { signal });
10155
10239
  },
10156
10240
  async listPublicTeamMembers(params) {
10157
10241
  const { siteId, stage, signal } = params;
10158
10242
  if (!siteId) throw new Error("listPublicTeamMembers() requires siteId");
10159
- return resilientFetchData(`public-team-members:${siteId}:${stage ?? ""}`, async (sig) => {
10243
+ return resilientFetchData("listPublicTeamMembers", `public-team-members:${siteId}:${stage ?? ""}`, async (sig) => {
10160
10244
  return await apiClient({
10161
10245
  endpoint: "listPublicTeamMembers",
10162
10246
  params: {
@@ -10171,7 +10255,7 @@ function createRiverbankClientWithDeps(deps, config) {
10171
10255
  const { siteId, stage, categorySelector, signal } = params;
10172
10256
  if (!siteId) throw new Error("listPublicProducts() requires siteId");
10173
10257
  const selectorKey = categorySelector ? categorySelector.kind === "category" ? `category:${categorySelector.productCategoryId}` : `current-category-page:${categorySelector.productCategoryEntryId}` : "";
10174
- return resilientFetchData(`public-products:${siteId}:${stage ?? ""}:${selectorKey}`, async (sig) => {
10258
+ return resilientFetchData("listPublicProducts", `public-products:${siteId}:${stage ?? ""}:${selectorKey}`, async (sig) => {
10175
10259
  return await apiClient({
10176
10260
  endpoint: "listPublicProducts",
10177
10261
  params: {
@@ -10186,7 +10270,7 @@ function createRiverbankClientWithDeps(deps, config) {
10186
10270
  async listPublicPasses(params) {
10187
10271
  const { siteId, categories, signal } = params;
10188
10272
  if (!siteId) throw new Error("listPublicPasses() requires siteId");
10189
- return resilientFetchData(`public-passes:${siteId}:${categories ?? ""}`, async (sig) => {
10273
+ return resilientFetchData("listPublicPasses", `public-passes:${siteId}:${categories ?? ""}`, async (sig) => {
10190
10274
  return await apiClient({
10191
10275
  endpoint: "listPublicPasses",
10192
10276
  params: {
@@ -10200,7 +10284,7 @@ function createRiverbankClientWithDeps(deps, config) {
10200
10284
  async listPublicMemberships(params) {
10201
10285
  const { siteId, categories, signal } = params;
10202
10286
  if (!siteId) throw new Error("listPublicMemberships() requires siteId");
10203
- return resilientFetchData(`public-memberships:${siteId}:${categories ?? ""}`, async (sig) => {
10287
+ return resilientFetchData("listPublicMemberships", `public-memberships:${siteId}:${categories ?? ""}`, async (sig) => {
10204
10288
  return await apiClient({
10205
10289
  endpoint: "listPublicMemberships",
10206
10290
  params: {
@@ -10215,7 +10299,7 @@ function createRiverbankClientWithDeps(deps, config) {
10215
10299
  async checkRedirect(params) {
10216
10300
  const { siteId, path, signal } = params;
10217
10301
  if (!siteId || !path) throw new Error("checkRedirect() requires siteId and path");
10218
- return resilientFetchData(`redirect:${siteId}:${path}`, async (sig) => {
10302
+ return resilientFetchData("checkRedirect", `redirect:${siteId}:${path}`, async (sig) => {
10219
10303
  return await apiClient({
10220
10304
  endpoint: "checkRedirect",
10221
10305
  params: {
@@ -10255,7 +10339,7 @@ function createRiverbankClientWithDeps(deps, config) {
10255
10339
  async getAllPublishedRoutes(params) {
10256
10340
  const { siteId, signal } = params;
10257
10341
  if (!siteId) throw new Error("getAllPublishedRoutes() requires siteId");
10258
- return resilientFetchData(`routable-content:${siteId}:published`, async (sig) => {
10342
+ return resilientFetchData("getPublicRoutableContent", `routable-content:${siteId}:published`, async (sig) => {
10259
10343
  return await apiClient({
10260
10344
  endpoint: "getPublicRoutableContent",
10261
10345
  params: {
@@ -10269,7 +10353,7 @@ function createRiverbankClientWithDeps(deps, config) {
10269
10353
  async getSitemapRoutes(params) {
10270
10354
  const { siteId, page, pageSize, signal } = params;
10271
10355
  if (!siteId) throw new Error("getSitemapRoutes() requires siteId");
10272
- return resilientFetchData(`sitemap:${siteId}:${page ?? 1}:${pageSize ?? "default"}`, async (sig) => {
10356
+ return resilientFetchData("getPublicSitemapRoutes", `sitemap:${siteId}:${page ?? 1}:${pageSize ?? "default"}`, async (sig) => {
10273
10357
  return await apiClient({
10274
10358
  endpoint: "getPublicSitemapRoutes",
10275
10359
  params: {
@@ -10493,9 +10577,8 @@ async function prebuildNavigation(siteData, outputDir, onProgress) {
10493
10577
  });
10494
10578
  const cacheFile = {
10495
10579
  menus: menus.map((menu) => ({
10496
- identifier: menu.identifier,
10497
10580
  id: menu.id,
10498
- name: menu.name,
10581
+ location: menu.location,
10499
10582
  items: menu.items
10500
10583
  })),
10501
10584
  generatedAt: (/* @__PURE__ */ new Date()).toISOString()
@@ -10932,6 +11015,7 @@ const SYSTEM_BLOCK_KINDS = [
10932
11015
  "block.form",
10933
11016
  "block.contact-newsletter",
10934
11017
  "block.appointment-booking",
11018
+ "block.appointment-services",
10935
11019
  "block.weekly-slot-availability",
10936
11020
  "block.event-registration",
10937
11021
  "block.event-details",