@riverbankcms/sdk 0.78.0 → 0.79.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +125 -43
- package/dist/{PreviewEditorSidebar-RIKFQ72L.mjs → PreviewEditorSidebar-56NMJMIK.mjs} +750 -65
- package/dist/{PreviewEditorUI-XO7TUWKK.mjs → PreviewEditorUI-27KJVEET.mjs} +4 -4
- package/dist/SdkPreviewModeRuntime-H4BSP6E7.mjs +8 -0
- package/dist/_dts/ai/src/contracts/proposals.d.ts +72 -0
- package/dist/_dts/api/src/contentRuntime.d.ts +1 -0
- package/dist/_dts/api/src/endpoints.d.ts +64 -0
- package/dist/_dts/api/src/index.d.ts +8 -6
- package/dist/_dts/api/src/media.d.ts +8 -1
- package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +1 -1
- package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +8 -8
- package/dist/_dts/api/src/navigation/identity.d.ts +59 -0
- package/dist/_dts/api/src/navigation.d.ts +2 -0
- package/dist/_dts/api/src/public/types.d.ts +1 -1
- package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +4 -0
- package/dist/_dts/api/src/request.d.ts +3 -11
- package/dist/_dts/api/src/sdkConfig/contracts.d.ts +1 -0
- package/dist/_dts/api/src/sdkContracts.d.ts +8 -1
- package/dist/_dts/api/src/siteIcons.d.ts +128 -0
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +26 -0
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +8 -0
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +21 -20
- package/dist/_dts/api/src/types.d.ts +12 -27
- package/dist/_dts/api/src/webhooks.d.ts +239 -0
- package/dist/_dts/block-form/src/fields/types.d.ts +6 -0
- package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterList.d.ts +3 -2
- package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRow.d.ts +6 -3
- package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRowActions.d.ts +8 -3
- package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/index.d.ts +1 -1
- package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useLinearRepeaterDnd.d.ts +1 -0
- package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useRepeaterPointerDragCapability.d.ts +1 -0
- package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useResolvedItemLabel.d.ts +7 -0
- package/dist/_dts/block-form/src/widgets/RepeaterField/utils/buildSummary.d.ts +1 -0
- package/dist/_dts/block-form/src/widgets/RepeaterField/utils/index.d.ts +3 -1
- package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterDndDomain.d.ts +1 -1
- package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterLabelSource.d.ts +15 -0
- package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterRowActionsDomain.d.ts +50 -0
- package/dist/_dts/blocks/src/index.d.ts +4 -0
- package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +879 -288
- package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +879 -288
- package/dist/_dts/blocks/src/system/blocks/cart.d.ts +879 -288
- package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +879 -288
- package/dist/_dts/blocks/src/system/blocks/collection.d.ts +879 -288
- package/dist/_dts/blocks/src/system/blocks/faq.d.ts +885 -289
- package/dist/_dts/blocks/src/system/blocks/feature-card-icons.d.ts +57 -0
- package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +4 -0
- package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +879 -288
- package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -1
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +69 -22
- package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +879 -288
- package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +879 -288
- package/dist/_dts/blocks/src/system/blocks/shop.d.ts +879 -288
- package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +7 -1
- package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +170 -0
- package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +5 -0
- package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +3 -1
- package/dist/_dts/blocks/src/system/icons/ids.d.ts +13 -0
- package/dist/_dts/blocks/src/system/icons/index.d.ts +6 -0
- package/dist/_dts/blocks/src/system/icons/presets.d.ts +4 -0
- package/dist/_dts/blocks/src/system/icons/registry.d.ts +18 -0
- package/dist/_dts/blocks/src/system/icons/semantic.d.ts +239 -0
- package/dist/_dts/blocks/src/system/icons/value.d.ts +94 -0
- package/dist/_dts/blocks/src/system/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +4 -1
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +187 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/feature-card-icon.d.ts +13 -0
- package/dist/_dts/content-editor/src/index.d.ts +1 -1
- package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +2 -2
- package/dist/_dts/content-model/src/content-types/schema.d.ts +14 -0
- package/dist/_dts/content-model/src/contentManifest.d.ts +3 -1
- package/dist/_dts/content-model/src/templates/bindingTypeCompatibility.d.ts +3 -1
- package/dist/_dts/content-model/src/templates/bindingValidation.d.ts +10 -4
- package/dist/_dts/content-model/src/templates/fieldPaths.d.ts +20 -0
- package/dist/_dts/content-model/src/templates/manifestAdapter.d.ts +5 -2
- package/dist/_dts/core/src/branded.d.ts +114 -85
- package/dist/_dts/core/src/csv-types.d.ts +2 -2
- package/dist/_dts/core/src/editor-state.d.ts +7 -7
- package/dist/_dts/core/src/participants.d.ts +2 -2
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +202 -0
- package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +12 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +12 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +12 -2
- package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +21 -0
- package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +40 -0
- package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +11 -1
- package/dist/_dts/editor-blocks/src/block-editor/featureCardIconActions.d.ts +82 -0
- package/dist/_dts/editor-blocks/src/blockPayload.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/widgets/icon-picker/IconPickerField.d.ts +1 -1
- package/dist/_dts/media-core/src/fileDomain.d.ts +8 -1
- package/dist/_dts/media-editor/src/MediaEditor.d.ts +5 -2
- package/dist/_dts/media-editor/src/MediaPreview.d.ts +3 -1
- package/dist/_dts/media-editor/src/fieldUi.d.ts +5 -0
- package/dist/_dts/media-editor/src/index.d.ts +1 -1
- package/dist/_dts/media-react/src/components/MediaLibrary.d.ts +2 -1
- package/dist/_dts/media-react/src/components/MediaPickerMini.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/blocks/previewCustomizeActions.d.ts +17 -0
- package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +4 -0
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +3 -2
- package/dist/_dts/preview-next/src/client/preview/previewCustomizeHistory.d.ts +6 -0
- package/dist/_dts/sdk/src/cli/commands/push/consts.d.ts +1 -1
- package/dist/_dts/sdk/src/cli/commands/push/metadata.d.ts +2 -0
- package/dist/_dts/sdk/src/cli/commands/push/stale.d.ts +3 -3
- package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +7 -0
- package/dist/_dts/sdk/src/cli/commands/push.d.ts +2 -0
- package/dist/_dts/sdk/src/cli/content/reader.d.ts +13 -0
- package/dist/_dts/sdk/src/cli/content/writer.d.ts +2 -1
- package/dist/_dts/sdk/src/cli/helpers.d.ts +2 -0
- package/dist/_dts/sdk/src/cli/navigationIdentity.d.ts +11 -0
- package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +6 -6
- package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +5 -0
- package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +4 -0
- package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +4 -0
- package/dist/_dts/sdk/src/cli/site-commands/oneOffCommands.d.ts +1 -0
- package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +5 -2
- package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +10 -1
- package/dist/_dts/sdk/src/cli/site-commands/pushExecutionTypes.d.ts +1 -1
- package/dist/_dts/sdk/src/cli/sync/diff.d.ts +9 -0
- package/dist/_dts/sdk/src/client/management/types.d.ts +8 -0
- package/dist/_dts/sdk/src/client/types.d.ts +2 -2
- package/dist/_dts/sdk/src/config/content-types.d.ts +7 -0
- package/dist/_dts/sdk/src/config/field-definitions.d.ts +5 -1
- package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +19 -2
- package/dist/_dts/sdk/src/next/index.d.ts +1 -1
- package/dist/_dts/sdk/src/next/revalidate.d.ts +26 -5
- package/dist/_dts/sdk/src/next/static-params.d.ts +28 -3
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -1
- package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/sdk/src/webhooks/index.d.ts +1 -1
- package/dist/_dts/sdk/src/webhooks/verify.d.ts +6 -102
- package/dist/_dts/site-commands/src/commands.d.ts +6 -0
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +3 -3
- package/dist/_dts/theme-core/src/schema.d.ts +5 -5
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +25 -2
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +5 -5
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +4 -4
- package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -0
- package/dist/_dts/ui/src/combobox.d.ts +1 -0
- package/dist/{altcha-B5XGSXP5.mjs → altcha-EKUEQ4RP.mjs} +1 -1
- package/dist/{chunk-F7RTCZYN.mjs → chunk-4HCW7FHJ.mjs} +504 -63
- package/dist/{chunk-SXOLGNMX.mjs → chunk-A3HHFKVT.mjs} +1 -1
- package/dist/{chunk-TXDES5P2.mjs → chunk-GP555I66.mjs} +180 -10
- package/dist/{chunk-SVMMM2NA.mjs → chunk-K2IIF34C.mjs} +79 -5
- package/dist/{chunk-NIDXI46P.mjs → chunk-LCY32PXF.mjs} +1 -1
- package/dist/{chunk-XGB3TDIC.mjs → chunk-R7POPVJR.mjs} +2 -8
- package/dist/{chunk-OECWLDHN.mjs → chunk-V47ZU33I.mjs} +2762 -732
- package/dist/cli/index.mjs +1799 -345
- package/dist/cli/init-docs/content/cli-reference.md +3 -2
- package/dist/cli/init-docs/content/content-management.md +2 -2
- package/dist/cli/init-docs/content/workflow-editor-workflows.md +2 -0
- package/dist/cli/init-docs/content/workflow-isr-revalidation.md +138 -0
- package/dist/cli/init-docs/content/workflow-preview-mode.md +68 -2
- package/dist/client/{accordion-EVDEOUPR.mjs → accordion-QLA7KBYO.mjs} +2 -2
- package/dist/client/analytics.mjs +1 -1
- package/dist/client/{bookingForm-DIHBLC64.mjs → bookingForm-PYZIPA5G.mjs} +55 -48
- package/dist/client/bookings.mjs +172 -57
- package/dist/client/{carousel-FEBQHIWI.mjs → carousel-5EIULWBI.mjs} +3 -3
- package/dist/client/{cart-7CKSXAE4.mjs → cart-DOP3FNI4.mjs} +7 -7
- package/dist/client/{checkout-WKYCANLV.mjs → checkout-BVMF6FBV.mjs} +7 -7
- package/dist/client/{chunk-GUK2FPXQ.mjs → chunk-44K2U3QI.mjs} +37 -15
- package/dist/client/{chunk-IVNCUVAV.mjs → chunk-AUJ5DBZJ.mjs} +18 -18
- package/dist/client/{chunk-VPPMNXCF.mjs → chunk-CCNTDRCF.mjs} +2 -2
- package/dist/client/{chunk-36WJCERQ.mjs → chunk-CE7IBGVW.mjs} +3 -1
- package/dist/client/{chunk-2SAVKN2M.mjs → chunk-GG4M2NP6.mjs} +2 -2
- package/dist/client/{chunk-65F47D7Y.mjs → chunk-R5ESWNKX.mjs} +49 -39
- package/dist/client/{chunk-RZDWX7QW.mjs → chunk-TYONZMST.mjs} +1 -1
- package/dist/client/{chunk-OFMSCGNY.mjs → chunk-UDS3NTWA.mjs} +2 -2
- package/dist/client/{chunk-YDSEG6GZ.mjs → chunk-V6M5FCR5.mjs} +2 -2
- package/dist/client/{chunk-F7LHOKEH.mjs → chunk-XSV6KW4D.mjs} +1 -1
- package/dist/client/{chunk-RV6FX7UH.mjs → chunk-YLDYVRZL.mjs} +9 -9
- package/dist/client/{chunk-PD6NBCEY.mjs → chunk-ZFHRN6W2.mjs} +1 -1
- package/dist/client/client.mjs +21501 -19812
- package/dist/client/{courseRegistration-5QF2PHKM.mjs → courseRegistration-E6EAA6NL.mjs} +10 -10
- package/dist/client/{eventCalendar-4ZOSETDU.mjs → eventCalendar-HBG3HAK6.mjs} +9 -9
- package/dist/client/{eventCombined-WQGU7JUX.mjs → eventCombined-6K5ZZWAK.mjs} +9 -9
- package/dist/client/{eventDetails-AYWVUJ5Y.mjs → eventDetails-Q75ICXLT.mjs} +9 -9
- package/dist/client/{eventListing-NT7C6UT5.mjs → eventListing-27P5F7DZ.mjs} +9 -9
- package/dist/client/{eventRegistration-OH24F4ZJ.mjs → eventRegistration-IQ7AMASR.mjs} +9 -9
- package/dist/client/{form-7L42SRBB.mjs → form-JRTD65FN.mjs} +6 -3
- package/dist/client/{headerSection-OZRZNZ52.mjs → headerSection-7FPSSZHS.mjs} +3 -3
- package/dist/client/hooks.mjs +428 -83
- package/dist/client/{locationMap-ZBXRPQ7C.mjs → locationMap-7NGFNYBH.mjs} +3 -3
- package/dist/client/{newsletterForm-SNAGFF2I.mjs → newsletterForm-F3BADCI2.mjs} +2 -2
- package/dist/client/{productDetail-I46BOFGV.mjs → productDetail-V3HP7ITJ.mjs} +7 -7
- package/dist/client/{productList-BOYHTYI6.mjs → productList-L3EGJUF2.mjs} +7 -7
- package/dist/client/rendering/client.mjs +2886 -1513
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +2244 -564
- package/dist/client/{shop-XTXPZTKR.mjs → shop-DQUB5E2C.mjs} +7 -7
- package/dist/preview-next/before-render.mjs +65 -1
- package/dist/preview-next/client/runtime.mjs +6 -6
- package/dist/preview-next/middleware.mjs +65 -1
- package/dist/preview-next/tailwind-sources.css +1 -0
- package/dist/sdk-runtime-AF6KXJU4.mjs +8 -0
- package/dist/server/components.mjs +2270 -835
- package/dist/server/config-template-validation.mjs +221 -15
- package/dist/server/config-validation.mjs +426 -77
- package/dist/server/config.mjs +426 -77
- package/dist/server/data.mjs +427 -82
- package/dist/server/index.mjs +94 -10
- package/dist/server/next/revalidate.mjs +229 -34
- package/dist/server/next.mjs +2439 -888
- package/dist/server/page-converter.mjs +335 -74
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +2281 -846
- package/dist/server/rendering.mjs +2298 -860
- package/dist/server/routing.mjs +860 -113
- package/dist/server/server.mjs +452 -92
- package/dist/server/theme-bridge.mjs +164 -2
- package/dist/server/theme.mjs +2 -2
- package/dist/server/webhooks.mjs +129 -25
- package/dist/styles/index.css +55 -0
- package/package.json +2 -1
- package/dist/SdkPreviewModeRuntime-LAGYMPNF.mjs +0 -8
- package/dist/sdk-runtime-ZJLKC6DR.mjs +0 -8
package/dist/server/index.mjs
CHANGED
|
@@ -1770,7 +1770,16 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
1770
1770
|
revalidate: 60,
|
|
1771
1771
|
tags: ["site-{siteId}", "content-{siteId}-{type}"],
|
|
1772
1772
|
auth: "user",
|
|
1773
|
-
responseKind: "json"
|
|
1773
|
+
responseKind: "json",
|
|
1774
|
+
errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
|
|
1775
|
+
},
|
|
1776
|
+
reorderContentEntries: {
|
|
1777
|
+
path: "/sites/{siteId}/content/{type}/order",
|
|
1778
|
+
method: "POST",
|
|
1779
|
+
tags: ["site-{siteId}", "content-{siteId}-{type}"],
|
|
1780
|
+
auth: "user",
|
|
1781
|
+
responseKind: "json",
|
|
1782
|
+
errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
|
|
1774
1783
|
},
|
|
1775
1784
|
getContentTemplate: {
|
|
1776
1785
|
path: "/sites/{siteId}/content/types/{type}/template",
|
|
@@ -2162,6 +2171,46 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
2162
2171
|
auth: "user",
|
|
2163
2172
|
responseKind: "json"
|
|
2164
2173
|
},
|
|
2174
|
+
getSiteIconStyleGuide: {
|
|
2175
|
+
path: "/sites/{siteId}/settings/icon-style-guide",
|
|
2176
|
+
method: "GET",
|
|
2177
|
+
revalidate: 120,
|
|
2178
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
|
|
2179
|
+
auth: "user",
|
|
2180
|
+
responseKind: "json",
|
|
2181
|
+
errors: []
|
|
2182
|
+
},
|
|
2183
|
+
updateSiteIconStyleGuide: {
|
|
2184
|
+
path: "/sites/{siteId}/settings/icon-style-guide",
|
|
2185
|
+
method: "POST",
|
|
2186
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
|
|
2187
|
+
auth: "user",
|
|
2188
|
+
responseKind: "json",
|
|
2189
|
+
errors: []
|
|
2190
|
+
},
|
|
2191
|
+
regenerateSiteIconStyleGuide: {
|
|
2192
|
+
path: "/sites/{siteId}/settings/icon-style-guide/regenerate",
|
|
2193
|
+
method: "POST",
|
|
2194
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
|
|
2195
|
+
auth: "user",
|
|
2196
|
+
responseKind: "json",
|
|
2197
|
+
errors: []
|
|
2198
|
+
},
|
|
2199
|
+
generateGeneratedIconSet: {
|
|
2200
|
+
path: "/sites/{siteId}/ai/generated-icons/generate",
|
|
2201
|
+
method: "POST",
|
|
2202
|
+
auth: "user",
|
|
2203
|
+
responseKind: "json",
|
|
2204
|
+
errors: []
|
|
2205
|
+
},
|
|
2206
|
+
applyGeneratedIconSet: {
|
|
2207
|
+
path: "/sites/{siteId}/ai/generated-icons/apply",
|
|
2208
|
+
method: "POST",
|
|
2209
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
|
|
2210
|
+
auth: "user",
|
|
2211
|
+
responseKind: "json",
|
|
2212
|
+
errors: []
|
|
2213
|
+
},
|
|
2165
2214
|
getSiteAiProfile: {
|
|
2166
2215
|
path: "/sites/{siteId}/settings/ai-site-profile",
|
|
2167
2216
|
method: "GET",
|
|
@@ -3937,6 +3986,14 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
3937
3986
|
auth: "public",
|
|
3938
3987
|
responseKind: "json"
|
|
3939
3988
|
},
|
|
3989
|
+
getGeneratedIconRenderAssets: {
|
|
3990
|
+
path: "/public/sites/{siteId}/generated-icon-assets",
|
|
3991
|
+
method: "POST",
|
|
3992
|
+
tags: [TAG_TEMPLATES.siteRoutableContent],
|
|
3993
|
+
auth: "public",
|
|
3994
|
+
responseKind: "json",
|
|
3995
|
+
errors: []
|
|
3996
|
+
},
|
|
3940
3997
|
// Resolve entry subroute by kind and URL segment
|
|
3941
3998
|
resolveEntrySubroute: {
|
|
3942
3999
|
path: "/public/sites/{siteId}/routing/subroutes/resolve",
|
|
@@ -5641,6 +5698,13 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
5641
5698
|
auth: "service",
|
|
5642
5699
|
responseKind: "json"
|
|
5643
5700
|
},
|
|
5701
|
+
sdkDeleteNavigationMenu: {
|
|
5702
|
+
path: "/sdk/{siteId}/navigation/{menuId}",
|
|
5703
|
+
method: "DELETE",
|
|
5704
|
+
auth: "service",
|
|
5705
|
+
responseKind: "json",
|
|
5706
|
+
errors: ["resource:not_found", "server:internal_error"]
|
|
5707
|
+
},
|
|
5644
5708
|
sdkUpsertTheme: {
|
|
5645
5709
|
path: "/sdk/{siteId}/theme",
|
|
5646
5710
|
method: "POST",
|
|
@@ -6383,18 +6447,21 @@ function buildEndpointURL(baseURL, endpoint) {
|
|
|
6383
6447
|
function isFormDataBody(value) {
|
|
6384
6448
|
return typeof FormData !== "undefined" && value instanceof FormData;
|
|
6385
6449
|
}
|
|
6450
|
+
function isUnknownArray(value) {
|
|
6451
|
+
return Array.isArray(value);
|
|
6452
|
+
}
|
|
6386
6453
|
function appendQueryParam(queryParams, key, value) {
|
|
6387
6454
|
if (value === void 0 || value === null) {
|
|
6388
6455
|
return;
|
|
6389
6456
|
}
|
|
6390
|
-
if (
|
|
6457
|
+
if (isUnknownArray(value)) {
|
|
6391
6458
|
const stack = [...value].reverse();
|
|
6392
6459
|
while (stack.length > 0) {
|
|
6393
6460
|
const item = stack.pop();
|
|
6394
6461
|
if (item === void 0 || item === null) {
|
|
6395
6462
|
continue;
|
|
6396
6463
|
}
|
|
6397
|
-
if (
|
|
6464
|
+
if (isUnknownArray(item)) {
|
|
6398
6465
|
stack.push(...[...item].reverse());
|
|
6399
6466
|
continue;
|
|
6400
6467
|
}
|
|
@@ -6404,6 +6471,12 @@ function appendQueryParam(queryParams, key, value) {
|
|
|
6404
6471
|
}
|
|
6405
6472
|
queryParams.append(key, String(value));
|
|
6406
6473
|
}
|
|
6474
|
+
function serializePathParam(endpoint, key, value) {
|
|
6475
|
+
if (typeof value === "string") {
|
|
6476
|
+
return value;
|
|
6477
|
+
}
|
|
6478
|
+
throw new Error(`Invalid path param for endpoint ${String(endpoint)}: ${key} must be a string`);
|
|
6479
|
+
}
|
|
6407
6480
|
function invalidateCacheTags(tags, params) {
|
|
6408
6481
|
const resolved = getRevalidateTag();
|
|
6409
6482
|
if (typeof window !== "undefined" || !resolved || !tags) return;
|
|
@@ -6542,8 +6615,9 @@ function createRawCMSClient(headers = {}, baseUrl) {
|
|
|
6542
6615
|
const bracePlaceholder = `{${key}}`;
|
|
6543
6616
|
const colonPlaceholder = `:${key}`;
|
|
6544
6617
|
if (originalPath.includes(bracePlaceholder) || originalPath.includes(colonPlaceholder)) {
|
|
6545
|
-
|
|
6546
|
-
url = url.replace(
|
|
6618
|
+
const stringValue = serializePathParam(endpoint, key, value);
|
|
6619
|
+
url = url.replace(bracePlaceholder, stringValue);
|
|
6620
|
+
url = url.replace(colonPlaceholder, stringValue);
|
|
6547
6621
|
} else {
|
|
6548
6622
|
unusedParams[key] = value;
|
|
6549
6623
|
}
|
|
@@ -6817,7 +6891,7 @@ var SimpleCache = class {
|
|
|
6817
6891
|
};
|
|
6818
6892
|
|
|
6819
6893
|
// src/version.ts
|
|
6820
|
-
var SDK_VERSION = "0.
|
|
6894
|
+
var SDK_VERSION = "0.79.0";
|
|
6821
6895
|
|
|
6822
6896
|
// src/client/error.ts
|
|
6823
6897
|
var RiverbankApiError = class _RiverbankApiError extends Error {
|
|
@@ -7236,9 +7310,10 @@ var CircuitOpenError = class extends Error {
|
|
|
7236
7310
|
var prebuildModule = null;
|
|
7237
7311
|
function tryRequire(modulePath) {
|
|
7238
7312
|
try {
|
|
7239
|
-
const
|
|
7313
|
+
const getRequire = new Function(
|
|
7240
7314
|
'return typeof require === "function" ? require : null'
|
|
7241
|
-
)
|
|
7315
|
+
);
|
|
7316
|
+
const req = getRequire();
|
|
7242
7317
|
return req ? req(modulePath) : null;
|
|
7243
7318
|
} catch {
|
|
7244
7319
|
return null;
|
|
@@ -7751,8 +7826,7 @@ function createRiverbankClient(config) {
|
|
|
7751
7826
|
async (sig) => {
|
|
7752
7827
|
return await apiClient({
|
|
7753
7828
|
endpoint: "getContentByPath",
|
|
7754
|
-
params: { siteId },
|
|
7755
|
-
body: { path: path3, preview },
|
|
7829
|
+
params: { siteId, path: path3, preview: String(preview) },
|
|
7756
7830
|
options: { signal: sig }
|
|
7757
7831
|
});
|
|
7758
7832
|
},
|
|
@@ -7802,6 +7876,8 @@ function createRiverbankClient(config) {
|
|
|
7802
7876
|
orderParam = "published_at.asc";
|
|
7803
7877
|
} else if (order === "title") {
|
|
7804
7878
|
orderParam = "title.asc";
|
|
7879
|
+
} else if (order === "manual") {
|
|
7880
|
+
orderParam = "manual.asc";
|
|
7805
7881
|
}
|
|
7806
7882
|
const apiParams = {
|
|
7807
7883
|
siteId,
|
|
@@ -9002,6 +9078,14 @@ var API_ENDPOINTS2 = Object.freeze({
|
|
|
9002
9078
|
auth: "user",
|
|
9003
9079
|
responseKind: "json"
|
|
9004
9080
|
},
|
|
9081
|
+
getPublicRoutableContent: {
|
|
9082
|
+
path: "/public/sites/{siteId}/routable-content",
|
|
9083
|
+
method: "GET",
|
|
9084
|
+
revalidate: 60,
|
|
9085
|
+
tags: ["riverbank:site:{siteId}:routable-content"],
|
|
9086
|
+
auth: "public",
|
|
9087
|
+
responseKind: "json"
|
|
9088
|
+
},
|
|
9005
9089
|
getPublicSitemapRoutes: {
|
|
9006
9090
|
path: "/public/sites/{siteId}/sitemap",
|
|
9007
9091
|
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
|
|
5
|
-
import crypto from "crypto";
|
|
4
|
+
// ../api/src/webhooks.ts
|
|
6
5
|
import { z } from "zod";
|
|
7
|
-
var
|
|
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
|
|
28
|
-
var
|
|
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
|
-
|
|
81
|
+
dispatchId: z.string().optional(),
|
|
40
82
|
siteId: z.string(),
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
48
|
-
|
|
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(
|
|
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
|
-
|
|
93
|
-
|
|
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
|
|
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
|
-
|
|
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
|
};
|