@riverbankcms/sdk 0.78.2 → 0.80.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 (230) hide show
  1. package/README.md +80 -0
  2. package/dist/PreviewEditorSidebar-QZG37QIF.mjs +2655 -0
  3. package/dist/{PreviewEditorUI-CS5P4N3P.mjs → PreviewEditorUI-AXIKSMZA.mjs} +27 -4
  4. package/dist/SdkPreviewModeRuntime-XE5M4UKM.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +56 -0
  6. package/dist/_dts/api/src/endpoints.d.ts +79 -0
  7. package/dist/_dts/api/src/index.d.ts +6 -4
  8. package/dist/_dts/api/src/media.d.ts +8 -1
  9. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +1 -1
  10. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +8 -8
  11. package/dist/_dts/api/src/navigation/identity.d.ts +59 -0
  12. package/dist/_dts/api/src/navigation.d.ts +2 -0
  13. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +4 -0
  14. package/dist/_dts/api/src/sdkContracts.d.ts +1 -0
  15. package/dist/_dts/api/src/siteIcons.d.ts +128 -0
  16. package/dist/_dts/api/src/siteInfrastructure.d.ts +124 -0
  17. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +16 -0
  18. package/dist/_dts/api/src/siteOnboarding.d.ts +13 -0
  19. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +17 -1
  20. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +6 -1
  21. package/dist/_dts/api/src/types.d.ts +1 -1
  22. package/dist/_dts/api/src/webhooks.d.ts +239 -0
  23. package/dist/_dts/block-form/src/client/index.d.ts +2 -0
  24. package/dist/_dts/block-form/src/index.d.ts +2 -0
  25. package/dist/_dts/block-form/src/utils/evaluateVisibility.d.ts +2 -1
  26. package/dist/_dts/blocks/src/client/header.d.ts +1 -1
  27. package/dist/_dts/blocks/src/client.d.ts +12 -12
  28. package/dist/_dts/blocks/src/index.d.ts +5 -1
  29. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +288 -288
  30. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +288 -288
  31. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +288 -288
  32. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +288 -288
  33. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +288 -288
  34. package/dist/_dts/blocks/src/system/blocks/events/event-listing.d.ts +2 -2
  35. package/dist/_dts/blocks/src/system/blocks/events/event-spotlight.d.ts +2 -1
  36. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -1
  37. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +294 -289
  38. package/dist/_dts/blocks/src/system/blocks/feature-card-icons.d.ts +57 -0
  39. package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +4 -0
  40. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +288 -288
  41. package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -0
  42. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -1
  43. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +22 -22
  44. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +288 -288
  45. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +288 -288
  46. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +288 -288
  47. package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +13 -1
  48. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +179 -0
  49. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +4 -2
  50. package/dist/_dts/blocks/src/system/fragments/library/faqHeading.d.ts +1 -0
  51. package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +10 -0
  52. package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +3 -1
  53. package/dist/_dts/blocks/src/system/icons/ids.d.ts +13 -0
  54. package/dist/_dts/blocks/src/system/icons/index.d.ts +6 -0
  55. package/dist/_dts/blocks/src/system/icons/presets.d.ts +4 -0
  56. package/dist/_dts/blocks/src/system/icons/registry.d.ts +18 -0
  57. package/dist/_dts/blocks/src/system/icons/semantic.d.ts +239 -0
  58. package/dist/_dts/blocks/src/system/icons/value.d.ts +94 -0
  59. package/dist/_dts/blocks/src/system/index.d.ts +1 -0
  60. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +4 -1
  61. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +23 -0
  62. package/dist/_dts/blocks/src/system/node/fragments/headingDecoration.d.ts +1 -4
  63. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  64. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +7 -7
  65. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -3
  66. package/dist/_dts/blocks/src/system/runtime/header/enhanceHeaderSection.d.ts +10 -2
  67. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +5 -5
  68. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.server.d.ts +2 -2
  69. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventSpotlight.d.ts +2 -2
  70. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +2 -2
  71. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventDetailModal.d.ts +2 -2
  72. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModals.d.ts +2 -2
  73. package/dist/_dts/blocks/src/system/runtime/nodes/feature-card-icon.d.ts +13 -0
  74. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +2 -2
  75. package/dist/_dts/blocks/src/system/transforms/registry/boxStyles.d.ts +3 -0
  76. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +9 -0
  77. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +14 -1
  78. package/dist/_dts/content-model/src/contentManifest.d.ts +3 -1
  79. package/dist/_dts/core/src/branded.d.ts +6 -0
  80. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +200 -3
  81. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +8 -1
  82. package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +8 -1
  83. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +8 -2
  84. package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +17 -0
  85. package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +42 -0
  86. package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +7 -1
  87. package/dist/_dts/editor-blocks/src/block-editor/featureCardIconActions.d.ts +82 -0
  88. package/dist/_dts/editor-blocks/src/index.d.ts +2 -0
  89. package/dist/_dts/editor-blocks/src/widgets/icon-picker/IconPickerField.d.ts +1 -1
  90. package/dist/_dts/media-core/src/fileDomain.d.ts +8 -1
  91. package/dist/_dts/media-editor/src/MediaEditor.d.ts +3 -2
  92. package/dist/_dts/media-react/src/components/MediaLibrary.d.ts +2 -1
  93. package/dist/_dts/media-react/src/components/MediaPickerMini.d.ts +2 -1
  94. package/dist/_dts/preview-next/src/client/blocks/BlockToolbar.d.ts +5 -1
  95. package/dist/_dts/preview-next/src/client/blocks/previewCustomizeActions.d.ts +17 -0
  96. package/dist/_dts/preview-next/src/client/blocks/previewCustomizeControlPlan.d.ts +24 -0
  97. package/dist/_dts/preview-next/src/client/blocks/useBlockCustomizeControls.d.ts +34 -0
  98. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -5
  99. package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +8 -1
  100. package/dist/_dts/preview-next/src/client/preview/PreviewBlockCustomizeSelectionContext.d.ts +20 -0
  101. package/dist/_dts/preview-next/src/client/preview/PreviewOpenEditorButton.d.ts +2 -0
  102. package/dist/_dts/preview-next/src/client/preview/SelectedBlockCustomizePanel.d.ts +13 -0
  103. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +3 -2
  104. package/dist/_dts/preview-next/src/client/preview/previewCustomizeEditorDraftPatch.d.ts +13 -0
  105. package/dist/_dts/preview-next/src/client/preview/previewCustomizeHistory.d.ts +6 -0
  106. package/dist/_dts/preview-next/src/client/preview/previewCustomizeRuntimePatch.d.ts +2 -0
  107. package/dist/_dts/preview-next/src/client/preview/storeTypes.d.ts +4 -0
  108. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +3 -1
  109. package/dist/_dts/sdk/src/cli/commands/webhooks.d.ts +44 -0
  110. package/dist/_dts/sdk/src/cli/navigationIdentity.d.ts +11 -0
  111. package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +4 -0
  112. package/dist/_dts/sdk/src/cli/site-commands/oneOffCommands.d.ts +1 -0
  113. package/dist/_dts/sdk/src/cli/sync/diff.d.ts +9 -0
  114. package/dist/_dts/sdk/src/client/management/index.d.ts +1 -1
  115. package/dist/_dts/sdk/src/client/management/types.d.ts +58 -0
  116. package/dist/_dts/sdk/src/client/management/webhooks.d.ts +3 -0
  117. package/dist/_dts/sdk/src/config/field-definitions.d.ts +3 -1
  118. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  119. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +24 -4
  120. package/dist/_dts/sdk/src/next/index.d.ts +1 -1
  121. package/dist/_dts/sdk/src/next/revalidate.d.ts +26 -5
  122. package/dist/_dts/sdk/src/next/static-params.d.ts +28 -3
  123. package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -1
  124. package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
  125. package/dist/_dts/sdk/src/version.d.ts +1 -1
  126. package/dist/_dts/sdk/src/webhooks/index.d.ts +1 -1
  127. package/dist/_dts/sdk/src/webhooks/verify.d.ts +6 -102
  128. package/dist/_dts/site-commands/src/commands.d.ts +3 -0
  129. package/dist/_dts/theme-core/src/accordions/siteStyleDefaults.d.ts +220 -0
  130. package/dist/_dts/theme-core/src/accordions/types.d.ts +45 -2
  131. package/dist/_dts/theme-core/src/blockOverrides.d.ts +8 -0
  132. package/dist/_dts/theme-core/src/blocks/types.d.ts +1 -1
  133. package/dist/_dts/theme-core/src/blocks/vars/testimonials.d.ts +4 -1
  134. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +1 -1
  135. package/dist/_dts/theme-core/src/cards/core.d.ts +20 -0
  136. package/dist/_dts/theme-core/src/cards/generateDefaultCardSystem.d.ts +6 -3
  137. package/dist/_dts/theme-core/src/cards/siteStyleDefaults.d.ts +105 -0
  138. package/dist/_dts/theme-core/src/cards/types.d.ts +177 -0
  139. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  140. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +159 -21
  141. package/dist/_dts/theme-core/src/palette/variants/index.d.ts +15 -0
  142. package/dist/_dts/theme-core/src/palette/variants/soft-natural.d.ts +16 -0
  143. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +1 -1
  144. package/dist/_dts/theme-core/src/schema.d.ts +451 -57
  145. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +86 -17
  146. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +2 -3
  147. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +86 -17
  148. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +135 -3
  149. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +5 -5
  150. package/dist/_dts/theme-core/src/site-styles/footerLooks.d.ts +20 -1
  151. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +8 -2
  152. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +286 -6
  153. package/dist/_dts/theme-core/src/site-styles/index.d.ts +2 -0
  154. package/dist/_dts/theme-core/src/site-styles/logoBranding.d.ts +193 -0
  155. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +6 -12
  156. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +2 -0
  157. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +10 -7
  158. package/dist/_dts/theme-core/src/site-styles/siteStyleThemeCompiler.d.ts +11 -0
  159. package/dist/_dts/theme-core/src/site-styles/sourceCatalogs.d.ts +2 -2
  160. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
  161. package/dist/_dts/theme-core/src/site-styles/testimonialQuotePresets.d.ts +15 -0
  162. package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +1 -1
  163. package/dist/_dts/theme-core/src/site-styles/types.d.ts +7 -29
  164. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -0
  165. package/dist/_dts/ui/src/combobox.d.ts +1 -0
  166. package/dist/{PreviewEditorSidebar-4DXLYX2V.mjs → chunk-5NZGBSJF.mjs} +2215 -2566
  167. package/dist/{chunk-RGTOD4AJ.mjs → chunk-7PCYG6YV.mjs} +621 -108
  168. package/dist/{chunk-CR5HKAGU.mjs → chunk-BBLZSQEY.mjs} +79 -0
  169. package/dist/{chunk-MCRQMPET.mjs → chunk-GYXKAUFV.mjs} +4500 -912
  170. package/dist/{chunk-6HYXHRAI.mjs → chunk-HTB4BMKD.mjs} +267 -49
  171. package/dist/{chunk-OKMBEAXY.mjs → chunk-MPBNEVPB.mjs} +1 -1
  172. package/dist/cli/index.mjs +3255 -702
  173. package/dist/cli/init-docs/content/workflow-editor-workflows.md +2 -0
  174. package/dist/cli/init-docs/content/workflow-isr-revalidation.md +150 -0
  175. package/dist/client/{accordion-PLYNJIIM.mjs → accordion-QFZMNB7O.mjs} +1 -1
  176. package/dist/client/{bookingForm-BXAP6AO7.mjs → bookingForm-NCIXFWIG.mjs} +3 -3
  177. package/dist/client/bookings.mjs +1246 -323
  178. package/dist/client/{carousel-TRBXDHGF.mjs → carousel-EO4BJMWD.mjs} +2 -2
  179. package/dist/client/{cart-Z7H3HJRS.mjs → cart-FTYCLYUW.mjs} +5 -5
  180. package/dist/client/{checkout-WAFCUBIX.mjs → checkout-NFGLVCOX.mjs} +5 -5
  181. package/dist/client/{chunk-CWGTG37I.mjs → chunk-4W66ALYT.mjs} +1 -1
  182. package/dist/client/{chunk-JRDUHZCT.mjs → chunk-6GVVWSPU.mjs} +4 -4
  183. package/dist/client/{chunk-75OUS5MT.mjs → chunk-IWFZSQNZ.mjs} +1 -1
  184. package/dist/client/{chunk-JGXPTEI2.mjs → chunk-PUOELU4O.mjs} +95 -8
  185. package/dist/client/{chunk-FUXW6VW2.mjs → chunk-PYRBIURC.mjs} +4 -4
  186. package/dist/client/{chunk-ZI3LLBPZ.mjs → chunk-T6UIP6UZ.mjs} +1 -1
  187. package/dist/client/{chunk-DNRGY432.mjs → chunk-VDS5YFLX.mjs} +1 -1
  188. package/dist/client/{chunk-UVQEJJTN.mjs → chunk-Y37KDO7P.mjs} +1 -1
  189. package/dist/client/client.mjs +24277 -20796
  190. package/dist/client/{courseRegistration-AHFQHWIJ.mjs → courseRegistration-2EORROPS.mjs} +3 -3
  191. package/dist/client/{eventCalendar-LDXTV5R7.mjs → eventCalendar-WZI4VL6N.mjs} +5 -5
  192. package/dist/client/{eventCombined-A4JGTNJO.mjs → eventCombined-QCB2TCNL.mjs} +5 -5
  193. package/dist/client/{eventDetails-4YXTZ7EG.mjs → eventDetails-TFTATAPH.mjs} +5 -5
  194. package/dist/client/{eventListing-P72TPFFM.mjs → eventListing-A2CQEHEQ.mjs} +5 -5
  195. package/dist/client/{eventRegistration-LSYJHGMT.mjs → eventRegistration-OELPVLUY.mjs} +5 -5
  196. package/dist/client/{form-AOPYOKOW.mjs → form-NTIFD6WQ.mjs} +1 -1
  197. package/dist/client/{headerSection-5TFYDFVQ.mjs → headerSection-7TBNKCLA.mjs} +65 -24
  198. package/dist/client/hooks.mjs +3687 -2024
  199. package/dist/client/{locationMap-QSZ3ZVAZ.mjs → locationMap-LRLB5A3H.mjs} +1 -1
  200. package/dist/client/{newsletterForm-KTRHZY52.mjs → newsletterForm-XI52RZSN.mjs} +1 -1
  201. package/dist/client/{productDetail-N4E775RG.mjs → productDetail-GSNKBFLY.mjs} +5 -5
  202. package/dist/client/{productList-UGUQ2S45.mjs → productList-BGCGT4KZ.mjs} +5 -5
  203. package/dist/client/rendering/client.mjs +5274 -3030
  204. package/dist/client/rendering/islands.mjs +18 -18
  205. package/dist/client/rendering.mjs +6271 -2790
  206. package/dist/client/{shop-VHSZEEQ2.mjs → shop-RQHUCLNY.mjs} +5 -5
  207. package/dist/preview-next/before-render.mjs +79 -0
  208. package/dist/preview-next/client/runtime.mjs +5 -5
  209. package/dist/preview-next/middleware.mjs +79 -0
  210. package/dist/{sdk-runtime-WHPJEF5G.mjs → sdk-runtime-A4LHT2RS.mjs} +6 -6
  211. package/dist/server/components.mjs +6215 -3057
  212. package/dist/server/config-validation.mjs +3858 -2194
  213. package/dist/server/config.mjs +3858 -2194
  214. package/dist/server/data.mjs +3687 -2024
  215. package/dist/server/index.mjs +88 -1
  216. package/dist/server/next/revalidate.mjs +229 -34
  217. package/dist/server/next.mjs +6295 -3036
  218. package/dist/server/page-converter.mjs +3055 -1883
  219. package/dist/server/prebuild.mjs +1 -1
  220. package/dist/server/rendering/server.mjs +6220 -3062
  221. package/dist/server/rendering.mjs +6233 -3075
  222. package/dist/server/routing.mjs +4251 -2137
  223. package/dist/server/server.mjs +3705 -2042
  224. package/dist/server/theme-bridge.mjs +1617 -329
  225. package/dist/server/theme.mjs +411 -221
  226. package/dist/server/webhooks.mjs +129 -25
  227. package/dist/styles/index.css +355 -33
  228. package/package.json +2 -1
  229. package/dist/SdkPreviewModeRuntime-IJDHTW4W.mjs +0 -8
  230. package/dist/chunk-4QEGTLK6.mjs +0 -1175
@@ -392,6 +392,23 @@ var ENDPOINT_DEFINITIONS = {
392
392
  auth: "user",
393
393
  responseKind: "json"
394
394
  },
395
+ getSdkDeploymentHealth: {
396
+ path: "/sites/{siteId}/sdk-deployment/health",
397
+ method: "GET",
398
+ tags: ["site-{siteId}", "webhooks"],
399
+ auth: "user",
400
+ errors: [],
401
+ responseKind: "json"
402
+ },
403
+ setupSdkDeploymentRevalidationWebhook: {
404
+ path: "/sites/{siteId}/sdk-deployment/revalidation-webhook",
405
+ method: "POST",
406
+ tags: ["site-{siteId}", "webhooks"],
407
+ auth: "user",
408
+ errors: ["validation:invalid_input", "resource:conflict"],
409
+ responseKind: "json",
410
+ demoMutation: DEMO_MUTATION_BLOCKED_DISABLED
411
+ },
395
412
  // API Keys (Site-scoped)
396
413
  listSiteApiKeys: {
397
414
  path: "/sites/{siteId}/api-keys",
@@ -2171,6 +2188,46 @@ var ENDPOINT_DEFINITIONS = {
2171
2188
  auth: "user",
2172
2189
  responseKind: "json"
2173
2190
  },
2191
+ getSiteIconStyleGuide: {
2192
+ path: "/sites/{siteId}/settings/icon-style-guide",
2193
+ method: "GET",
2194
+ revalidate: 120,
2195
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2196
+ auth: "user",
2197
+ responseKind: "json",
2198
+ errors: []
2199
+ },
2200
+ updateSiteIconStyleGuide: {
2201
+ path: "/sites/{siteId}/settings/icon-style-guide",
2202
+ method: "POST",
2203
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2204
+ auth: "user",
2205
+ responseKind: "json",
2206
+ errors: []
2207
+ },
2208
+ regenerateSiteIconStyleGuide: {
2209
+ path: "/sites/{siteId}/settings/icon-style-guide/regenerate",
2210
+ method: "POST",
2211
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2212
+ auth: "user",
2213
+ responseKind: "json",
2214
+ errors: []
2215
+ },
2216
+ generateGeneratedIconSet: {
2217
+ path: "/sites/{siteId}/ai/generated-icons/generate",
2218
+ method: "POST",
2219
+ auth: "user",
2220
+ responseKind: "json",
2221
+ errors: []
2222
+ },
2223
+ applyGeneratedIconSet: {
2224
+ path: "/sites/{siteId}/ai/generated-icons/apply",
2225
+ method: "POST",
2226
+ tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
2227
+ auth: "user",
2228
+ responseKind: "json",
2229
+ errors: []
2230
+ },
2174
2231
  getSiteAiProfile: {
2175
2232
  path: "/sites/{siteId}/settings/ai-site-profile",
2176
2233
  method: "GET",
@@ -3946,6 +4003,14 @@ var ENDPOINT_DEFINITIONS = {
3946
4003
  auth: "public",
3947
4004
  responseKind: "json"
3948
4005
  },
4006
+ getGeneratedIconRenderAssets: {
4007
+ path: "/public/sites/{siteId}/generated-icon-assets",
4008
+ method: "POST",
4009
+ tags: [TAG_TEMPLATES.siteRoutableContent],
4010
+ auth: "public",
4011
+ responseKind: "json",
4012
+ errors: []
4013
+ },
3949
4014
  // Resolve entry subroute by kind and URL segment
3950
4015
  resolveEntrySubroute: {
3951
4016
  path: "/public/sites/{siteId}/routing/subroutes/resolve",
@@ -5650,6 +5715,13 @@ var ENDPOINT_DEFINITIONS = {
5650
5715
  auth: "service",
5651
5716
  responseKind: "json"
5652
5717
  },
5718
+ sdkDeleteNavigationMenu: {
5719
+ path: "/sdk/{siteId}/navigation/{menuId}",
5720
+ method: "DELETE",
5721
+ auth: "service",
5722
+ responseKind: "json",
5723
+ errors: ["resource:not_found", "server:internal_error"]
5724
+ },
5653
5725
  sdkUpsertTheme: {
5654
5726
  path: "/sdk/{siteId}/theme",
5655
5727
  method: "POST",
@@ -5831,6 +5903,13 @@ var ENDPOINT_DEFINITIONS = {
5831
5903
  auth: "service",
5832
5904
  responseKind: "json"
5833
5905
  },
5906
+ sdkSetupRevalidationWebhook: {
5907
+ path: "/sdk/{siteId}/webhooks/revalidation/setup",
5908
+ method: "POST",
5909
+ auth: "service",
5910
+ responseKind: "json",
5911
+ errors: ["validation:invalid_input", "server:internal_error"]
5912
+ },
5834
5913
  // Customer portal
5835
5914
  portalGetProfile: {
5836
5915
  path: "/portal/me",
@@ -6836,7 +6915,7 @@ var SimpleCache = class {
6836
6915
  };
6837
6916
 
6838
6917
  // src/version.ts
6839
- var SDK_VERSION = "0.78.2";
6918
+ var SDK_VERSION = "0.80.0";
6840
6919
 
6841
6920
  // src/client/error.ts
6842
6921
  var RiverbankApiError = class _RiverbankApiError extends Error {
@@ -9023,6 +9102,14 @@ var API_ENDPOINTS2 = Object.freeze({
9023
9102
  auth: "user",
9024
9103
  responseKind: "json"
9025
9104
  },
9105
+ getPublicRoutableContent: {
9106
+ path: "/public/sites/{siteId}/routable-content",
9107
+ method: "GET",
9108
+ revalidate: 60,
9109
+ tags: ["riverbank:site:{siteId}:routable-content"],
9110
+ auth: "public",
9111
+ responseKind: "json"
9112
+ },
9026
9113
  getPublicSitemapRoutes: {
9027
9114
  path: "/public/sites/{siteId}/sitemap",
9028
9115
  method: "GET",
@@ -1,56 +1,156 @@
1
1
  // src/next/revalidate.ts
2
2
  import { revalidateTag, revalidatePath } from "next/cache";
3
3
 
4
- // src/webhooks/verify.ts
5
- import crypto from "crypto";
4
+ // ../api/src/webhooks.ts
6
5
  import { z } from "zod";
7
- var WebhookEventSchema = z.enum([
6
+ var RIVERBANK_SIGNATURE_PREFIX = "sha256=";
7
+ var SUPPORTED_WEBHOOK_EVENTS = [
8
8
  "page.published",
9
+ "page.unpublished",
10
+ "page.deleted",
11
+ "page.path_changed",
9
12
  "entry.published",
13
+ "entry.unpublished",
14
+ "entry.deleted",
15
+ "entry.path_changed",
10
16
  "navigation.updated",
11
17
  "theme.updated",
12
18
  "site.settings_updated"
13
- ]);
19
+ ];
20
+ var WebhookEventSchema = z.enum(SUPPORTED_WEBHOOK_EVENTS);
21
+ function asRevalidationPath(path) {
22
+ return path;
23
+ }
24
+ function parseRevalidationPath(input) {
25
+ const trimmed = input.trim();
26
+ if (!trimmed) {
27
+ return { success: false, error: { tag: "EMPTY_PATH", input } };
28
+ }
29
+ if (/^[a-z][a-z\d+.-]*:/i.test(trimmed) || trimmed.startsWith("//") || !trimmed.startsWith("/")) {
30
+ return { success: false, error: { tag: "ABSOLUTE_OR_PROTOCOL_PATH", input } };
31
+ }
32
+ if (/[\u0000-\u001F\u007F]/.test(trimmed) || trimmed.includes("\\") || trimmed.includes("?") || trimmed.includes("#")) {
33
+ return { success: false, error: { tag: "MALFORMED_PATH", input } };
34
+ }
35
+ const collapsed = trimmed.replace(/\/{2,}/g, "/");
36
+ const normalized = collapsed === "/" ? "/" : collapsed.replace(/\/+$/g, "");
37
+ return { success: true, path: asRevalidationPath(normalized) };
38
+ }
39
+ function normalizeRevalidationPath(input) {
40
+ const result = parseRevalidationPath(input);
41
+ return result.success ? result.path : null;
42
+ }
14
43
  var PagePublishedDataSchema = z.object({
15
44
  pageId: z.string(),
16
45
  path: z.string(),
17
46
  slug: z.string().optional()
18
- });
47
+ }).strict();
48
+ var PageRemovedDataSchema = z.object({
49
+ pageId: z.string(),
50
+ path: z.string(),
51
+ slug: z.string().optional()
52
+ }).strict();
53
+ var PagePathChangedDataSchema = z.object({
54
+ pageId: z.string(),
55
+ previousPath: z.string(),
56
+ path: z.string(),
57
+ slug: z.string().optional()
58
+ }).strict();
19
59
  var EntryPublishedDataSchema = z.object({
20
60
  entryId: z.string(),
21
61
  path: z.string(),
22
62
  contentType: z.string()
23
- });
63
+ }).strict();
64
+ var EntryRemovedDataSchema = z.object({
65
+ entryId: z.string(),
66
+ path: z.string(),
67
+ contentType: z.string()
68
+ }).strict();
69
+ var EntryPathChangedDataSchema = z.object({
70
+ entryId: z.string(),
71
+ previousPath: z.string(),
72
+ path: z.string(),
73
+ contentType: z.string()
74
+ }).strict();
24
75
  var NavigationUpdatedDataSchema = z.object({
25
76
  menuId: z.string().optional()
26
- });
27
- var EmptyDataSchema = z.object({});
28
- var WebhookDataSchema = z.union([
29
- PagePublishedDataSchema,
30
- EntryPublishedDataSchema,
31
- NavigationUpdatedDataSchema,
32
- EmptyDataSchema
33
- ]);
34
- var WebhookPayloadSchema = z.object({
35
- /** Event type */
36
- event: WebhookEventSchema,
37
- /** ISO timestamp of when the event occurred */
77
+ }).strict();
78
+ var EmptyWebhookDataSchema = z.object({}).strict();
79
+ var WebhookPayloadBaseSchema = z.object({
38
80
  timestamp: z.string(),
39
- /** Site ID that triggered the event */
81
+ dispatchId: z.string().optional(),
40
82
  siteId: z.string(),
41
- /** Event-specific data (shape depends on event type) */
42
- data: z.record(z.string(), z.unknown()),
43
- /** Cache invalidation tags (for tag-based revalidation) */
44
- tags: z.array(z.string()).optional()
83
+ tags: z.array(z.string()).optional(),
84
+ paths: z.array(z.string()).optional()
45
85
  });
86
+ var WebhookPayloadSchema = z.discriminatedUnion("event", [
87
+ WebhookPayloadBaseSchema.extend({
88
+ event: z.literal("page.published"),
89
+ data: PagePublishedDataSchema
90
+ }),
91
+ WebhookPayloadBaseSchema.extend({
92
+ event: z.literal("page.unpublished"),
93
+ data: PageRemovedDataSchema
94
+ }),
95
+ WebhookPayloadBaseSchema.extend({
96
+ event: z.literal("page.deleted"),
97
+ data: PageRemovedDataSchema
98
+ }),
99
+ WebhookPayloadBaseSchema.extend({
100
+ event: z.literal("page.path_changed"),
101
+ data: PagePathChangedDataSchema
102
+ }),
103
+ WebhookPayloadBaseSchema.extend({
104
+ event: z.literal("entry.published"),
105
+ data: EntryPublishedDataSchema
106
+ }),
107
+ WebhookPayloadBaseSchema.extend({
108
+ event: z.literal("entry.unpublished"),
109
+ data: EntryRemovedDataSchema
110
+ }),
111
+ WebhookPayloadBaseSchema.extend({
112
+ event: z.literal("entry.deleted"),
113
+ data: EntryRemovedDataSchema
114
+ }),
115
+ WebhookPayloadBaseSchema.extend({
116
+ event: z.literal("entry.path_changed"),
117
+ data: EntryPathChangedDataSchema
118
+ }),
119
+ WebhookPayloadBaseSchema.extend({
120
+ event: z.literal("navigation.updated"),
121
+ data: NavigationUpdatedDataSchema
122
+ }),
123
+ WebhookPayloadBaseSchema.extend({
124
+ event: z.literal("theme.updated"),
125
+ data: EmptyWebhookDataSchema
126
+ }),
127
+ WebhookPayloadBaseSchema.extend({
128
+ event: z.literal("site.settings_updated"),
129
+ data: EmptyWebhookDataSchema
130
+ })
131
+ ]);
132
+
133
+ // src/client/types.ts
134
+ var SDK_CORRELATION_HEADER_NAMES = [
135
+ "x-request-id",
136
+ "x-correlation-id",
137
+ "x-riverbank-monitor-run-id"
138
+ ];
139
+
140
+ // src/webhooks/verify.ts
141
+ import crypto from "crypto";
46
142
  function verifyWebhookSignature(payload, signature, secret) {
47
- const expectedSignature = crypto.createHmac("sha256", secret).update(payload).digest("hex");
48
- if (signature.length !== expectedSignature.length) {
143
+ if (!signature.startsWith(RIVERBANK_SIGNATURE_PREFIX)) {
144
+ return false;
145
+ }
146
+ const signatureDigest = signature.slice(RIVERBANK_SIGNATURE_PREFIX.length);
147
+ if (!/^[a-f0-9]{64}$/.test(signatureDigest)) {
49
148
  return false;
50
149
  }
150
+ const expectedSignature = crypto.createHmac("sha256", secret).update(payload).digest("hex");
51
151
  return crypto.timingSafeEqual(
52
- Buffer.from(signature),
53
- Buffer.from(expectedSignature)
152
+ Buffer.from(signatureDigest, "hex"),
153
+ Buffer.from(expectedSignature, "hex")
54
154
  );
55
155
  }
56
156
  function parseWebhookPayload(body) {
@@ -68,6 +168,65 @@ function parseWebhookPayload(body) {
68
168
  }
69
169
 
70
170
  // src/next/revalidate.ts
171
+ var [
172
+ SDK_REQUEST_ID_HEADER,
173
+ SDK_CORRELATION_ID_HEADER,
174
+ SDK_MONITOR_RUN_ID_HEADER
175
+ ] = SDK_CORRELATION_HEADER_NAMES;
176
+ var RIVERBANK_DISPATCH_ID_HEADER = "x-riverbank-dispatch-id";
177
+ var RIVERBANK_CORRELATION_ID_HEADER = "x-riverbank-correlation-id";
178
+ function normalizeRevalidationPath2(path) {
179
+ return normalizeRevalidationPath(path);
180
+ }
181
+ function normalizeRevalidationPaths(paths = []) {
182
+ const normalized = [];
183
+ const invalidPaths = [];
184
+ const seen = /* @__PURE__ */ new Set();
185
+ for (const path of paths) {
186
+ const normalizedPath = normalizeRevalidationPath2(path);
187
+ if (!normalizedPath) {
188
+ invalidPaths.push(path);
189
+ continue;
190
+ }
191
+ if (!seen.has(normalizedPath)) {
192
+ seen.add(normalizedPath);
193
+ normalized.push(normalizedPath);
194
+ }
195
+ }
196
+ return { paths: normalized, invalidPaths };
197
+ }
198
+ function normalizeRevalidationTags(tags = []) {
199
+ const normalized = [];
200
+ const seen = /* @__PURE__ */ new Set();
201
+ for (const tag of tags) {
202
+ const trimmed = tag.trim();
203
+ if (!trimmed || seen.has(trimmed)) continue;
204
+ seen.add(trimmed);
205
+ normalized.push(trimmed);
206
+ }
207
+ return normalized;
208
+ }
209
+ function getOptionalHeader(headers, name) {
210
+ const value = headers.get(name)?.trim();
211
+ return value ? value : void 0;
212
+ }
213
+ function getRevalidationRequestMetadata(request, payload, counts) {
214
+ const dispatchId = payload.dispatchId ?? getOptionalHeader(request.headers, RIVERBANK_DISPATCH_ID_HEADER);
215
+ const requestId = getOptionalHeader(request.headers, "x-vercel-id") ?? getOptionalHeader(request.headers, SDK_REQUEST_ID_HEADER);
216
+ const correlationId = getOptionalHeader(request.headers, RIVERBANK_CORRELATION_ID_HEADER) ?? getOptionalHeader(request.headers, SDK_CORRELATION_ID_HEADER);
217
+ const monitorRunId = getOptionalHeader(request.headers, SDK_MONITOR_RUN_ID_HEADER);
218
+ return {
219
+ event: payload.event,
220
+ siteId: payload.siteId,
221
+ ...dispatchId ? { dispatchId } : {},
222
+ pathCount: counts.pathCount,
223
+ tagCount: counts.tagCount,
224
+ itemCount: counts.itemCount,
225
+ ...requestId ? { requestId } : {},
226
+ ...correlationId ? { correlationId } : {},
227
+ ...monitorRunId ? { monitorRunId } : {}
228
+ };
229
+ }
71
230
  function createRevalidateHandler(options = {}) {
72
231
  return async function handleRevalidateRequest(request) {
73
232
  const secret = options.secret ?? process.env.RIVERBANK_WEBHOOK_SECRET;
@@ -81,41 +240,77 @@ function createRevalidateHandler(options = {}) {
81
240
  const body = await request.text();
82
241
  const signature = request.headers.get("x-riverbank-signature");
83
242
  if (!signature || !verifyWebhookSignature(body, signature, secret)) {
243
+ console.warn("[Riverbank] Rejected webhook with invalid signature");
84
244
  return Response.json({ error: "Invalid signature" }, { status: 401 });
85
245
  }
86
246
  const parseResult = parseWebhookPayload(body);
87
247
  if (!parseResult.success) {
248
+ console.warn("[Riverbank] Rejected webhook with invalid payload", {
249
+ reason: parseResult.error
250
+ });
88
251
  return Response.json({ error: parseResult.error }, { status: 400 });
89
252
  }
90
253
  const payload = parseResult.payload;
91
254
  const revalidated = [];
92
- if (payload.tags?.length) {
93
- for (const tag of payload.tags) {
255
+ const normalizedPaths = normalizeRevalidationPaths(payload.paths);
256
+ if (normalizedPaths.invalidPaths.length > 0) {
257
+ console.warn(
258
+ "[Riverbank] Ignored invalid revalidation paths",
259
+ {
260
+ event: payload.event,
261
+ siteId: payload.siteId,
262
+ invalidPathCount: normalizedPaths.invalidPaths.length
263
+ }
264
+ );
265
+ }
266
+ const normalizedTags = normalizeRevalidationTags(payload.tags);
267
+ if (normalizedTags.length) {
268
+ for (const tag of normalizedTags) {
94
269
  revalidateTag(tag, "max");
95
270
  revalidated.push(`tag:${tag}`);
96
271
  }
97
272
  }
98
- const path = typeof payload.data?.path === "string" ? payload.data.path : void 0;
99
- if (path) {
273
+ for (const path of normalizedPaths.paths) {
100
274
  revalidatePath(path);
101
275
  revalidated.push(`path:${path}`);
102
276
  }
277
+ const metadata = getRevalidationRequestMetadata(
278
+ request,
279
+ payload,
280
+ {
281
+ pathCount: normalizedPaths.paths.length,
282
+ tagCount: normalizedTags.length,
283
+ itemCount: revalidated.length
284
+ }
285
+ );
103
286
  if (revalidated.length > 0) {
104
287
  console.log(
105
- `[Riverbank] Revalidated: ${revalidated.join(", ")} (event: ${payload.event})`
288
+ [
289
+ `[Riverbank] Revalidated ${normalizedPaths.paths.length} path(s)`,
290
+ `and ${normalizedTags.length} tag(s)`,
291
+ `(event: ${payload.event}, site: ${payload.siteId})`
292
+ ].join(" "),
293
+ metadata
106
294
  );
107
295
  }
108
296
  if (options.onRevalidate) {
109
- options.onRevalidate(payload, revalidated);
297
+ options.onRevalidate(payload, revalidated, metadata);
110
298
  }
111
299
  return Response.json({
112
300
  revalidated: true,
113
301
  items: revalidated,
114
302
  event: payload.event,
303
+ dispatchId: metadata.dispatchId,
304
+ pathCount: normalizedPaths.paths.length,
305
+ tagCount: normalizedTags.length,
306
+ invalidPathCount: normalizedPaths.invalidPaths.length,
115
307
  timestamp: Date.now()
116
308
  });
117
309
  };
118
310
  }
119
311
  export {
120
- createRevalidateHandler
312
+ createRevalidateHandler,
313
+ normalizeRevalidationPath2 as normalizeRevalidationPath,
314
+ normalizeRevalidationPaths,
315
+ normalizeRevalidationTags
121
316
  };