@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
|
@@ -68,6 +68,11 @@ export type CliCommandOutcome<TSubject> = Readonly<{
|
|
|
68
68
|
identifier: string;
|
|
69
69
|
message: string;
|
|
70
70
|
subject?: TSubject;
|
|
71
|
+
}> | Readonly<{
|
|
72
|
+
status: 'preflight_failed';
|
|
73
|
+
identifier: string;
|
|
74
|
+
message: string;
|
|
75
|
+
subject?: TSubject;
|
|
71
76
|
}>;
|
|
72
77
|
export type CliCommandExecutionReport<TSubject> = Readonly<{
|
|
73
78
|
outcomes: readonly CliCommandOutcome<TSubject>[];
|
|
@@ -19,9 +19,13 @@ export type CommandSurfaceDispatchInput = Readonly<{
|
|
|
19
19
|
}>;
|
|
20
20
|
export type CommandSurfaceDispatchDependencies = Readonly<{
|
|
21
21
|
compileCommandSurface?: (surface: CommandSurface, input: CommandSurfaceDispatchInput) => CommandSurfaceCompileResult;
|
|
22
|
+
preflightCommandSurfaceAsReport?: (surface: CommandSurfaceCompileSuccess, input: CommandSurfaceDispatchInput) => CommandSurfaceExecutionReport;
|
|
22
23
|
executeCommandSurfaceAsReport?: (surface: CommandSurfaceCompileSuccess, input: CommandSurfaceDispatchInput) => Promise<CommandSurfaceExecutionReport>;
|
|
23
24
|
}>;
|
|
24
25
|
export declare function compileContentPushExecutionPlan(plan: ContentPushExecutionPlan, input: CommandSurfaceDispatchInput, dependencies?: CommandSurfaceDispatchDependencies): Result<CompiledContentPushExecutionPlan, ContentPushExecutionReport>;
|
|
26
|
+
export declare function preflightContentPushExecutionPlan(steps: readonly CompiledContentPushExecutionStep[], input: CommandSurfaceDispatchInput, dependencies?: CommandSurfaceDispatchDependencies): ContentPushExecutionReport;
|
|
27
|
+
export declare function contentPushExecutionReportHasFailures(report: ContentPushExecutionReport): boolean;
|
|
25
28
|
export declare function executeCommandSurfaceAsReport(surface: CommandSurfaceCompileSuccess, input: CommandSurfaceDispatchInput): Promise<CommandSurfaceExecutionReport>;
|
|
29
|
+
export declare function preflightCommandSurfaceAsReport(surface: CommandSurfaceCompileSuccess, input: CommandSurfaceDispatchInput): CommandSurfaceExecutionReport;
|
|
26
30
|
export declare function skippedRemainingCommandReports(steps: readonly CompiledContentPushExecutionStep[]): CommandSurfaceExecutionReport[];
|
|
27
31
|
export declare function commandSurfaceReportToSyncResult(report: CommandSurfaceExecutionReport): SyncResult;
|
|
@@ -12,6 +12,10 @@ export type CliNavigationCommandCompileError = Readonly<{
|
|
|
12
12
|
code: 'missing_local_navigation_menu';
|
|
13
13
|
name: CliNavigationMenuName;
|
|
14
14
|
message: string;
|
|
15
|
+
}> | Readonly<{
|
|
16
|
+
code: 'duplicate_navigation_identity';
|
|
17
|
+
identity: string;
|
|
18
|
+
message: string;
|
|
15
19
|
}> | CliCommandValidationCompileError;
|
|
16
20
|
export type CliNavigationCommandCompileInput = Readonly<{
|
|
17
21
|
source: CliNavigationCommandBatchSource;
|
|
@@ -53,7 +53,7 @@ export type PageCommandReportSubject = Readonly<{
|
|
|
53
53
|
counter: BlockCommandSyncCounter;
|
|
54
54
|
}>;
|
|
55
55
|
export type PageCommandExecutionReport = CliCommandExecutionReport<PageCommandReportSubject>;
|
|
56
|
-
type PageCommandCompiledPlan = Pick<CliPageCommandCompileSuccess, 'plan' | 'reportedCommands' | 'warnings'>;
|
|
56
|
+
export type PageCommandCompiledPlan = Pick<CliPageCommandCompileSuccess, 'plan' | 'reportedCommands' | 'warnings'>;
|
|
57
57
|
export declare function compilePagePushCommands(input: CliPageCommandCompileInput): Result<CliPageCommandCompileSuccess, CliPageCommandCompileError>;
|
|
58
58
|
export type PageCommandRoutingDecision = Readonly<{
|
|
59
59
|
kind: 'no_page_changes';
|
|
@@ -75,5 +75,8 @@ export declare function pageCommandExecutionToReport(input: Readonly<{
|
|
|
75
75
|
execution: CliPageCommandExecutionResult;
|
|
76
76
|
compiledPlan: PageCommandCompiledPlan;
|
|
77
77
|
}>): PageCommandExecutionReport;
|
|
78
|
+
export declare function preflightPageCommandPlanAsReport(input: Readonly<{
|
|
79
|
+
compiledPlan: PageCommandCompiledPlan;
|
|
80
|
+
blockFieldExtensions?: BlockFieldExtensionsMap;
|
|
81
|
+
}>): PageCommandExecutionReport;
|
|
78
82
|
export declare function pageCommandReportToSyncResult(report: PageCommandExecutionReport): SyncResult;
|
|
79
|
-
export {};
|
|
@@ -6,7 +6,7 @@ import type { OutputContext } from '../output';
|
|
|
6
6
|
import { type ContentDiff, type SyncResult } from '../sync';
|
|
7
7
|
import { type CommandSurfaceDispatchDependencies } from './commandSurfaceDispatch';
|
|
8
8
|
import { planContentPushExecution } from './pushExecutionPlan';
|
|
9
|
-
import type { CommandSurface, CommandSurfaceCompileResult, CommandSurfaceCompileSuccess, CommandSurfaceExecutionReport, ContentPushScope, ContentPushExecutionPlan, ContentPushExecutionReport, ContentPushExecutionStep } from './pushExecutionTypes';
|
|
9
|
+
import type { CommandSurface, CommandSurfaceCompileResult, CommandSurfaceCompileSuccess, CommandSurfaceExecutionReport, CompiledContentPushExecutionPlan, ContentPushScope, ContentPushExecutionPlan, ContentPushExecutionReport, ContentPushExecutionStep } from './pushExecutionTypes';
|
|
10
10
|
import type { compilePagePushCommands } from './pageCommands';
|
|
11
11
|
export { planContentPushExecution };
|
|
12
12
|
export type { CommandSurface, CommandSurfaceCompileResult, CommandSurfaceCompileSuccess, CommandSurfaceExecutionReport, ContentPushScope, ContentPushExecutionPlan, ContentPushExecutionReport, ContentPushExecutionStep, };
|
|
@@ -26,4 +26,13 @@ export type ContentPushExecutionInput = Readonly<{
|
|
|
26
26
|
}>;
|
|
27
27
|
export declare function executeContentPushPlan(input: ContentPushExecutionInput): Promise<SyncResult>;
|
|
28
28
|
export declare function executeContentPushPlanAsCommandReport(input: ContentPushExecutionInput, dependencies?: CommandSurfaceDispatchDependencies): Promise<ContentPushExecutionReport>;
|
|
29
|
+
export type ContentPushPreflightOutcome = Readonly<{
|
|
30
|
+
ok: true;
|
|
31
|
+
compiled: CompiledContentPushExecutionPlan;
|
|
32
|
+
report: ContentPushExecutionReport;
|
|
33
|
+
}> | Readonly<{
|
|
34
|
+
ok: false;
|
|
35
|
+
report: ContentPushExecutionReport;
|
|
36
|
+
}>;
|
|
37
|
+
export declare function preflightContentPushPlanAsCommandReport(input: ContentPushExecutionInput, dependencies?: CommandSurfaceDispatchDependencies): ContentPushPreflightOutcome;
|
|
29
38
|
export declare function contentPushExecutionReportToSyncResult(report: ContentPushExecutionReport): SyncResult;
|
|
@@ -7,7 +7,7 @@ import type { compileNavigationPushCommands, NavigationCommandExecutionReport }
|
|
|
7
7
|
import type { compilePagePushCommands, PageCommandExecutionReport } from './pageCommands';
|
|
8
8
|
export type CommandSurface = 'entry' | 'page' | 'form' | 'navigation';
|
|
9
9
|
export type CommandSurfaceFailurePolicy = 'continue' | 'stop';
|
|
10
|
-
export type ContentPushScope = Extract<PushScope, 'entries' | 'pages' | 'navigation' | 'forms' | 'all'>;
|
|
10
|
+
export type ContentPushScope = Extract<PushScope, 'entries' | 'pages' | 'navigation' | 'forms' | 'settings' | 'all'>;
|
|
11
11
|
export type ResidualSettingsPushPlan = Readonly<{
|
|
12
12
|
diff: ResidualSettingsDiff;
|
|
13
13
|
local: ResidualSettingsLocalContent;
|
|
@@ -35,6 +35,7 @@ export interface BlockDiff {
|
|
|
35
35
|
}
|
|
36
36
|
export interface NavigationDiff {
|
|
37
37
|
type: DiffType;
|
|
38
|
+
identifier?: string | null;
|
|
38
39
|
name: string;
|
|
39
40
|
/** List of changed field paths (for updates) */
|
|
40
41
|
changes?: string[];
|
|
@@ -135,6 +136,13 @@ export interface JsonDiffChange {
|
|
|
135
136
|
/** Status change: publish or unpublish */
|
|
136
137
|
statusChange?: 'publish' | 'unpublish';
|
|
137
138
|
}
|
|
139
|
+
export interface JsonDiffWarning {
|
|
140
|
+
type: 'duplicate_navigation_identity';
|
|
141
|
+
source: 'local' | 'remote';
|
|
142
|
+
identity: string;
|
|
143
|
+
menuNames: readonly string[];
|
|
144
|
+
message: string;
|
|
145
|
+
}
|
|
138
146
|
export interface JsonDiff {
|
|
139
147
|
summary: {
|
|
140
148
|
creates: number;
|
|
@@ -144,6 +152,7 @@ export interface JsonDiff {
|
|
|
144
152
|
unpublishes: number;
|
|
145
153
|
};
|
|
146
154
|
changes: JsonDiffChange[];
|
|
155
|
+
warnings?: readonly JsonDiffWarning[];
|
|
147
156
|
}
|
|
148
157
|
/** JSON diff output for pull --dry-run --json-diff */
|
|
149
158
|
export interface PullJsonDiff {
|
|
@@ -39,12 +39,14 @@ export interface ManagementEntry {
|
|
|
39
39
|
createdAt: string;
|
|
40
40
|
updatedAt: string;
|
|
41
41
|
publishedAt: string | null;
|
|
42
|
+
manualOrder: number;
|
|
42
43
|
}
|
|
43
44
|
export interface EntryUpsertInput {
|
|
44
45
|
identifier: string;
|
|
45
46
|
contentType: string;
|
|
46
47
|
data: Record<string, unknown>;
|
|
47
48
|
slug?: string;
|
|
49
|
+
manualOrder?: number;
|
|
48
50
|
}
|
|
49
51
|
export interface ManagementPage {
|
|
50
52
|
id: string;
|
|
@@ -129,6 +131,7 @@ export interface PulledNavigationMenu {
|
|
|
129
131
|
updatedAt: string;
|
|
130
132
|
}
|
|
131
133
|
export interface NavigationMenuUpsertInput {
|
|
134
|
+
identifier?: string;
|
|
132
135
|
name: string;
|
|
133
136
|
isPrimary?: boolean;
|
|
134
137
|
isFooter?: boolean;
|
|
@@ -534,9 +537,11 @@ export interface PulledEntries {
|
|
|
534
537
|
* Canonical entry title (route title for routable content types).
|
|
535
538
|
*/
|
|
536
539
|
title: string;
|
|
540
|
+
manualOrder?: number;
|
|
537
541
|
}>;
|
|
538
542
|
meta: {
|
|
539
543
|
pulledAt: string;
|
|
544
|
+
manualOrder?: string[];
|
|
540
545
|
entries: Record<string, {
|
|
541
546
|
createdAt: string;
|
|
542
547
|
updatedAt: string;
|
|
@@ -586,6 +591,7 @@ export interface PulledSettings {
|
|
|
586
591
|
warnings?: string[];
|
|
587
592
|
meta: {
|
|
588
593
|
pulledAt: string;
|
|
594
|
+
updatedAt: string | null;
|
|
589
595
|
};
|
|
590
596
|
}
|
|
591
597
|
export interface PulledForms {
|
|
@@ -734,6 +740,7 @@ export interface PulledContent {
|
|
|
734
740
|
courses?: PulledCourses['courses'];
|
|
735
741
|
meta: {
|
|
736
742
|
pulledAt: string;
|
|
743
|
+
settingsUpdatedAt?: string | null;
|
|
737
744
|
/** Whether the response was truncated due to size limits */
|
|
738
745
|
truncated?: boolean;
|
|
739
746
|
/** Message explaining what was truncated */
|
|
@@ -802,6 +809,7 @@ export interface NavigationOperations {
|
|
|
802
809
|
list(): Promise<ManagementNavigationMenu[]>;
|
|
803
810
|
get(name: string): Promise<ManagementNavigationMenu | null>;
|
|
804
811
|
upsert(input: NavigationMenuUpsertInput): Promise<ManagementNavigationMenu>;
|
|
812
|
+
delete(menuId: string): Promise<void>;
|
|
805
813
|
}
|
|
806
814
|
export interface SettingsOperations {
|
|
807
815
|
get(): Promise<ManagementSettings>;
|
|
@@ -60,8 +60,8 @@ export interface GetEntriesBaseParams extends SdkMethodOptions {
|
|
|
60
60
|
limit?: number;
|
|
61
61
|
/** Number of entries to skip for pagination */
|
|
62
62
|
offset?: number;
|
|
63
|
-
/** Sort order for entries. '
|
|
64
|
-
order?: 'newest' | 'oldest' | 'title' | '
|
|
63
|
+
/** Sort order for entries. Use 'manual' for content types that opt into manual ordering. */
|
|
64
|
+
order?: 'newest' | 'oldest' | 'title' | 'manual';
|
|
65
65
|
/** If true, includes draft entries (requires API key with site access) */
|
|
66
66
|
preview?: boolean;
|
|
67
67
|
/** Selection mode: 'query' for automatic, 'manual' for specific entry IDs */
|
|
@@ -150,6 +150,13 @@ export interface ContentTypeConfig {
|
|
|
150
150
|
fields: FieldDefinition[];
|
|
151
151
|
/** Field ID to use as the entry title source */
|
|
152
152
|
titleField?: string;
|
|
153
|
+
/**
|
|
154
|
+
* Entry ordering behavior. Set `mode: 'manual'` to allow editors and SDK
|
|
155
|
+
* content metadata to curate entry order for this content type.
|
|
156
|
+
*/
|
|
157
|
+
ordering?: {
|
|
158
|
+
mode?: 'default' | 'manual';
|
|
159
|
+
};
|
|
153
160
|
/**
|
|
154
161
|
* When true, only one entry can exist for this content type.
|
|
155
162
|
* The entry is auto-created when the content type is created.
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
import type { LinkValue, Media, TipTapNode } from '../contracts';
|
|
10
10
|
export type VisibilityLevel = 'admin' | 'designer' | 'author';
|
|
11
11
|
export type ReferenceValueFrom = 'id' | 'identifier' | 'slug';
|
|
12
|
+
export declare const SDK_ICON_PICKER_PRESETS: readonly ["cta", "feature"];
|
|
13
|
+
export type SdkIconPickerPreset = (typeof SDK_ICON_PICKER_PRESETS)[number];
|
|
12
14
|
export type MediaDeliveryOptions = {
|
|
13
15
|
sizes?: string;
|
|
14
16
|
widthCandidates?: number[];
|
|
@@ -35,6 +37,8 @@ export type FieldUi = Partial<{
|
|
|
35
37
|
mediaPickerAutoOpen: boolean;
|
|
36
38
|
showMediaPreview: boolean;
|
|
37
39
|
showMediaOverlayActions: boolean;
|
|
40
|
+
mediaPreviewMaxWidth: 'xs' | 'sm' | 'md' | 'none';
|
|
41
|
+
preventMediaPreviewUpscale: boolean;
|
|
38
42
|
mediaDelivery: MediaDeliveryOptions;
|
|
39
43
|
mediaDeliveryByVariant: Record<string, MediaDeliveryOptions>;
|
|
40
44
|
inputType: 'text' | 'email' | 'tel' | 'number';
|
|
@@ -78,7 +82,7 @@ export type FieldUi = Partial<{
|
|
|
78
82
|
thumbnailAltField: string;
|
|
79
83
|
thumbnailLabelField: string;
|
|
80
84
|
thumbnailCardDensity: 'compact' | 'comfortable';
|
|
81
|
-
iconPickerPreset:
|
|
85
|
+
iconPickerPreset: SdkIconPickerPreset;
|
|
82
86
|
contentTypeField: string;
|
|
83
87
|
fixedContentType: string;
|
|
84
88
|
valueFrom: 'id' | 'identifier' | 'slug';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { TipTapNode, TipTapMark, Media, LinkValue, InternalRouteOnlyLinkValue, InternalResolvedLinkValue, InternalLinkValue, ExternalLinkValue, CustomLinkValue, PageLinkValue, EntryLinkValue, RichTextPrimitiveProps, RichTextVariant, } from './content';
|
|
2
|
-
export type { AppointmentBookingContent, BlogListingContent, BlogPostContent, BodyTextAlignment, BodyTextContent, ButtonVariant, CalendarTabViews, CartContent, CardStylesContent, CheckoutContent, CollectionContent, ColumnsContent, ColumnOption, ContainerStylesContent, CourseDetailsContent, CourseRegistrationContent, CtaFullContent, DisplayMode, EmbedContent, EventCalendarContent, EventDetailsContent, EventLayout, EventListingContent, EventRegistrationContent, EventSpotlightContent, FaqContent, FaqItem, FilterAutoShow, FormBlockContent, GiftingContent, HeroContent, HeroCta, HeroCtaInput, HeroMedia, ImageColSize, ImageGalleryContent, LocationMapContent, LayoutAlign, LayoutWidth, MediaTextAlignment, MediaTextAspectRatio, MediaTextContent, MediaTextImagePosition, NewsletterSignupContent, NewsletterSignupPreset, ProductDetailContent, ProductListContent, SectionStylesContent, SemanticSpacing, ShopContent, SingleButtonContent, SiteFooterContent, SiteHeaderContent, StackContentAlignment, StackImagePosition, SystemBlockContentByFullKind, SystemBlockContentByKind, SystemBlockContentFor, SystemBlockShortKind, TeamMembersContent, TestimonialEntryContent, TestimonialsBlockContent, ThumbnailPadding, ThumbnailShape, VideoGridContent, WeekStart, } from './system-block-content';
|
|
2
|
+
export type { AppointmentBookingContent, BlogListingContent, BlogPostContent, BodyTextAlignment, BodyTextContent, ButtonVariant, CalendarTabViews, CartContent, CardStylesContent, CheckoutContent, CollectionContent, ColumnsContent, ColumnOption, ContainerStylesContent, CourseDetailsContent, CourseRegistrationContent, CtaFullContent, DisplayMode, EmbedContent, EventCalendarContent, EventDetailsContent, EventLayout, EventListingContent, EventRegistrationContent, EventSpotlightContent, FaqContent, FaqItem, FilterAutoShow, FormBlockContent, GiftingContent, HeroContent, HeroCta, HeroCtaInput, HeroMedia, ImageColSize, ImageGalleryContent, LocationMapContent, LayoutAlign, LayoutWidth, MediaTextAlignment, MediaTextAspectRatio, MediaTextContent, MediaTextImagePosition, NewsletterSignupContent, NewsletterSignupPreset, ProductDetailContent, ProductListContent, SectionStylesContent, SemanticIconId, SemanticSpacing, ShopContent, SingleButtonContent, SiteFooterContent, SiteHeaderContent, StackContentAlignment, StackImagePosition, SystemBlockContentByFullKind, SystemBlockContentByKind, SystemBlockContentFor, SystemBlockShortKind, TeamMembersContent, TestimonialEntryContent, TestimonialsBlockContent, ThumbnailPadding, ThumbnailShape, VideoGridContent, WeekStart, BlockIconValue, FeatureCardIconTreatment, } from './system-block-content';
|
|
3
3
|
export type { PageOutline, BlockOutline, RouteMap, RouteMapEntry, OccurrenceContextData, EntrySubrouteContextData, } from './page';
|
|
4
4
|
export type { Theme, ThemeTokens } from './theme';
|
|
5
5
|
export type { CustomCssDeclarationsInput, CustomCssRuleInput, CustomCssNestedRuleInput, CustomCssAtRuleInput, KeyframesAtRuleInput, FontFaceAtRuleInput, MediaAtRuleInput, SupportsAtRuleInput, RawAtRuleInput, } from './custom-css';
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* require importing internal blocks package types.
|
|
6
6
|
*/
|
|
7
7
|
import type { LinkValue, Media, TipTapNode } from './content';
|
|
8
|
-
import type { EventCategoryId, VenueId } from '../../../core/src/index';
|
|
8
|
+
import type { Brand, EventCategoryId, VenueId } from '../../../core/src/index';
|
|
9
9
|
type UnknownRecord = Record<string, unknown>;
|
|
10
10
|
type ImageMedia = Omit<Media, 'type'> & {
|
|
11
11
|
type: 'image';
|
|
@@ -53,6 +53,20 @@ export type ContainerStylesContent = {
|
|
|
53
53
|
fullWidth?: boolean | null;
|
|
54
54
|
} | null;
|
|
55
55
|
export type CtaIconName = 'ArrowRight' | 'ArrowLeft' | 'ChevronRight' | 'ChevronLeft' | 'ChevronUp' | 'ChevronDown' | 'ExternalLink' | 'Download' | 'Upload' | 'Mail' | 'Phone' | 'Play' | 'ShoppingCart' | 'Calendar' | 'MapPin' | 'Info' | 'Plus' | 'Minus' | 'Check' | 'X';
|
|
56
|
+
export type SemanticIconId = 'protection-trust' | 'confidentiality' | 'care-support' | 'partnership' | 'warmth' | 'community' | 'personal-guidance' | 'conversation' | 'friendly-welcome' | 'insight-learning' | 'natural-wellbeing' | 'growth' | 'gentle-care' | 'special-touch' | 'ideas' | 'direction' | 'focus' | 'quality' | 'highlight' | 'verified-quality' | 'learning' | 'training' | 'programmes-dates' | 'place' | 'products' | 'packages' | 'time' | 'practical-service' | 'at-home' | 'worldwide' | 'professional-service';
|
|
57
|
+
export type BlockIconValue = {
|
|
58
|
+
kind: 'none';
|
|
59
|
+
} | {
|
|
60
|
+
kind: 'semantic';
|
|
61
|
+
iconId: SemanticIconId;
|
|
62
|
+
} | {
|
|
63
|
+
kind: 'generated';
|
|
64
|
+
setId: Brand<string, 'GeneratedIconSetId'>;
|
|
65
|
+
assetId: Brand<string, 'GeneratedIconAssetId'>;
|
|
66
|
+
semanticFallbackIconId: SemanticIconId;
|
|
67
|
+
styleGuideVersionId: Brand<string, 'SiteIconStyleGuideVersionId'>;
|
|
68
|
+
};
|
|
69
|
+
export type FeatureCardIconTreatment = 'plain' | 'soft-badge' | 'utility-badge';
|
|
56
70
|
export type RichTextDoc = {
|
|
57
71
|
type: 'doc';
|
|
58
72
|
content?: Array<{
|
|
@@ -306,6 +320,7 @@ export type FaqItem = {
|
|
|
306
320
|
answer: unknown;
|
|
307
321
|
};
|
|
308
322
|
export type FaqContent = {
|
|
323
|
+
variant?: 'default' | 'two-column' | 'question-columns' | 'split-heading-columns' | null;
|
|
309
324
|
eyebrow?: string | null;
|
|
310
325
|
title?: string | null;
|
|
311
326
|
description?: unknown;
|
|
@@ -315,6 +330,7 @@ export type FaqContent = {
|
|
|
315
330
|
export type FeatureCard = {
|
|
316
331
|
media?: Media | null;
|
|
317
332
|
aspectRatio?: StandardAspectRatio | null;
|
|
333
|
+
icon?: BlockIconValue | SemanticIconId | null;
|
|
318
334
|
title: string;
|
|
319
335
|
body?: TipTapNode | null;
|
|
320
336
|
ctas?: BlockCtaContent[] | null;
|
|
@@ -324,6 +340,7 @@ export type FeatureCardsContent = {
|
|
|
324
340
|
title?: string | null;
|
|
325
341
|
description?: TipTapNode | null;
|
|
326
342
|
columns?: '2' | '3' | '4' | null;
|
|
343
|
+
_iconTreatment?: FeatureCardIconTreatment | null;
|
|
327
344
|
cards?: FeatureCard[] | null;
|
|
328
345
|
};
|
|
329
346
|
export type HeroCta = {
|
|
@@ -502,7 +519,7 @@ export type TeamMembersContent = (TeamMembersCommonContent & {
|
|
|
502
519
|
members?: ManualTeamMemberItem[];
|
|
503
520
|
});
|
|
504
521
|
export type TestimonialsBlockContent = {
|
|
505
|
-
variant?: 'carousel' | 'grid' | null;
|
|
522
|
+
variant?: 'carousel' | 'grid' | 'split-grid' | null;
|
|
506
523
|
heading?: string | null;
|
|
507
524
|
subheading?: string | null;
|
|
508
525
|
avatarLayout?: 'above-centered' | 'inline-left' | 'hidden' | null;
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
export { createCatchAllPage } from './catch-all';
|
|
41
41
|
export { RiverbankContentLoadError, SdkContentLoadError, classifyContentLoadError, isSdkContentLoadError, toContentLoadFailureLogFields, type CatchAllContentLoadFailureContext, type CatchAllRequestContext, type ClassifiedContentLoadError, type SdkContentLoadFailure, type SdkContentLoadFailureKind, type SdkContentLoadNotFound, } from './content-load-failure';
|
|
42
42
|
export type { CreateCatchAllPageOptions, CreateCatchAllPageResult, CatchAllPageProps, CatchAllContext, ThemeSwitchConfigV1, ThemeResolverContext, } from './types';
|
|
43
|
-
export { generateAllStaticParams, validateStaticParamsEnv, pathToSlugArray, type StaticParamsEnvResult, } from './static-params';
|
|
43
|
+
export { createGenerateStaticParams, generateAllStaticParams, normalizeStaticRoutePath, validateStaticParamsEnv, pathToSlugArray, routesToStaticParams, type CreateGenerateStaticParamsOptions, type GenerateAllStaticParamsOptions, type StaticParam, type StaticParamsClient, type StaticParamsEnvResult, type StaticParamsFailureContext, type StaticParamsFailureMode, type StaticParamsRoute, } from './static-params';
|
|
44
44
|
export { createSitemap, type CreateSitemapOptions, type SitemapGenerator, } from './sitemap';
|
|
45
45
|
export { createRobots, type CreateRobotsOptions } from './robots';
|
|
46
46
|
/**
|
|
@@ -17,13 +17,34 @@
|
|
|
17
17
|
* import { createRevalidateHandler } from '@riverbankcms/sdk/next/revalidate';
|
|
18
18
|
*
|
|
19
19
|
* export const POST = createRevalidateHandler({
|
|
20
|
-
* onRevalidate: (payload, items) => {
|
|
21
|
-
* console.log(`Revalidated ${items.length} items for ${payload.event}
|
|
20
|
+
* onRevalidate: (payload, items, metadata) => {
|
|
21
|
+
* console.log(`Revalidated ${items.length} items for ${payload.event}`, metadata);
|
|
22
22
|
* },
|
|
23
23
|
* });
|
|
24
24
|
* ```
|
|
25
25
|
*/
|
|
26
26
|
import { type WebhookPayload } from '../webhooks/verify';
|
|
27
|
+
export type NormalizedRevalidationPaths = Readonly<{
|
|
28
|
+
paths: string[];
|
|
29
|
+
invalidPaths: string[];
|
|
30
|
+
}>;
|
|
31
|
+
export type RevalidationRequestMetadata = Readonly<{
|
|
32
|
+
event: WebhookPayload['event'];
|
|
33
|
+
siteId: string;
|
|
34
|
+
dispatchId?: string;
|
|
35
|
+
pathCount: number;
|
|
36
|
+
tagCount: number;
|
|
37
|
+
itemCount: number;
|
|
38
|
+
requestId?: string;
|
|
39
|
+
correlationId?: string;
|
|
40
|
+
monitorRunId?: string;
|
|
41
|
+
}>;
|
|
42
|
+
/**
|
|
43
|
+
* Normalize a public URL path for Next revalidation.
|
|
44
|
+
*/
|
|
45
|
+
export declare function normalizeRevalidationPath(path: string): string | null;
|
|
46
|
+
export declare function normalizeRevalidationPaths(paths?: readonly string[]): NormalizedRevalidationPaths;
|
|
47
|
+
export declare function normalizeRevalidationTags(tags?: readonly string[]): string[];
|
|
27
48
|
/**
|
|
28
49
|
* Options for the revalidation handler.
|
|
29
50
|
*/
|
|
@@ -36,15 +57,15 @@ export interface RevalidateHandlerOptions {
|
|
|
36
57
|
* Callback called after successful revalidation.
|
|
37
58
|
* Useful for logging or analytics.
|
|
38
59
|
*/
|
|
39
|
-
onRevalidate?: (payload: WebhookPayload, revalidatedItems: string[]) => void;
|
|
60
|
+
onRevalidate?: (payload: WebhookPayload, revalidatedItems: string[], metadata: RevalidationRequestMetadata) => void;
|
|
40
61
|
}
|
|
41
62
|
/**
|
|
42
63
|
* Create a Next.js API route handler for webhook revalidation.
|
|
43
64
|
*
|
|
44
65
|
* The handler:
|
|
45
66
|
* 1. Verifies the webhook signature using HMAC-SHA256
|
|
46
|
-
* 2. Calls `revalidateTag()` for each tag in the payload
|
|
47
|
-
* 3. Calls `revalidatePath()`
|
|
67
|
+
* 2. Calls `revalidateTag()` for each normalized tag in the payload
|
|
68
|
+
* 3. Calls `revalidatePath()` for each normalized path in the payload
|
|
48
69
|
* 4. Returns a JSON response with the revalidation results
|
|
49
70
|
*
|
|
50
71
|
* @param options - Configuration options
|
|
@@ -11,6 +11,29 @@
|
|
|
11
11
|
* export { generateAllStaticParams as generateStaticParams };
|
|
12
12
|
* ```
|
|
13
13
|
*/
|
|
14
|
+
import type { RiverbankClient } from '../client/types';
|
|
15
|
+
import type { RoutableContentResponse } from '../public-api/contracts';
|
|
16
|
+
export type StaticParam = Readonly<{
|
|
17
|
+
slug: string[];
|
|
18
|
+
}>;
|
|
19
|
+
export type StaticParamsRoute = Pick<RoutableContentResponse['items'][number], 'path'>;
|
|
20
|
+
export type StaticParamsClient = Pick<RiverbankClient, 'getAllPublishedRoutes'>;
|
|
21
|
+
export type StaticParamsFailureMode = 'throw' | 'fallback';
|
|
22
|
+
export type StaticParamsFailureContext = Readonly<{
|
|
23
|
+
siteId: string;
|
|
24
|
+
error: unknown;
|
|
25
|
+
reason: 'route_discovery_failed' | 'invalid_route_path';
|
|
26
|
+
path?: string;
|
|
27
|
+
}>;
|
|
28
|
+
export type CreateGenerateStaticParamsOptions = Readonly<{
|
|
29
|
+
getClient: () => StaticParamsClient | Promise<StaticParamsClient>;
|
|
30
|
+
siteId: string;
|
|
31
|
+
failureMode?: StaticParamsFailureMode;
|
|
32
|
+
fallbackPaths?: readonly string[];
|
|
33
|
+
onFailure?: (context: StaticParamsFailureContext) => void;
|
|
34
|
+
signal?: AbortSignal;
|
|
35
|
+
}>;
|
|
36
|
+
export type GenerateAllStaticParamsOptions = Pick<CreateGenerateStaticParamsOptions, 'failureMode' | 'fallbackPaths' | 'onFailure' | 'signal'>;
|
|
14
37
|
/**
|
|
15
38
|
* Environment variable validation result
|
|
16
39
|
*/
|
|
@@ -25,6 +48,7 @@ export type StaticParamsEnvResult = {
|
|
|
25
48
|
valid: false;
|
|
26
49
|
missingVars: string[];
|
|
27
50
|
};
|
|
51
|
+
export declare function dashboardUrlToApiBaseUrl(input: string): string;
|
|
28
52
|
/**
|
|
29
53
|
* Validate that all required environment variables are set.
|
|
30
54
|
*
|
|
@@ -36,6 +60,7 @@ export type StaticParamsEnvResult = {
|
|
|
36
60
|
* @returns Validation result with config or missing vars
|
|
37
61
|
*/
|
|
38
62
|
export declare function validateStaticParamsEnv(): StaticParamsEnvResult;
|
|
63
|
+
export declare function normalizeStaticRoutePath(path: string): string;
|
|
39
64
|
/**
|
|
40
65
|
* Convert a route path to a Next.js slug array.
|
|
41
66
|
*
|
|
@@ -50,6 +75,8 @@ export declare function validateStaticParamsEnv(): StaticParamsEnvResult;
|
|
|
50
75
|
* ```
|
|
51
76
|
*/
|
|
52
77
|
export declare function pathToSlugArray(path: string): string[];
|
|
78
|
+
export declare function routesToStaticParams(routes: readonly StaticParamsRoute[]): StaticParam[];
|
|
79
|
+
export declare function createGenerateStaticParams(options: CreateGenerateStaticParamsOptions): () => Promise<StaticParam[]>;
|
|
53
80
|
/**
|
|
54
81
|
* Generate static params for all published routes.
|
|
55
82
|
*
|
|
@@ -79,6 +106,4 @@ export declare function pathToSlugArray(path: string): string[];
|
|
|
79
106
|
* }
|
|
80
107
|
* ```
|
|
81
108
|
*/
|
|
82
|
-
export declare function generateAllStaticParams(): Promise<
|
|
83
|
-
slug: string[];
|
|
84
|
-
}[]>;
|
|
109
|
+
export declare function generateAllStaticParams(options?: GenerateAllStaticParamsOptions): Promise<StaticParam[]>;
|
|
@@ -810,7 +810,7 @@ export type SitemapRoutesResponse = {
|
|
|
810
810
|
pageSize: number;
|
|
811
811
|
allowIndexingInProduction: boolean;
|
|
812
812
|
};
|
|
813
|
-
export type PublicEndpointName = "getSite" | "getContentByPath" | "listPublishedEntries" | "getPublishedEntryPreview" | "getPublicFormById" | "listPublicForms" | "getPublicBookingServices" | "getPublicChallenge" | "listPublicEvents" | "batchBlockLoaders" | "listPublicCourses" | "listPublicTeamMembers" | "listPublicProducts" | "listPublicPasses" | "listPublicMemberships" | "resolveEntrySubroute" | "resolveEventOccurrence" | "checkRedirect" | "getRoutableContent" | "getPublicSitemapRoutes";
|
|
813
|
+
export type PublicEndpointName = "getSite" | "getContentByPath" | "listPublishedEntries" | "getPublishedEntryPreview" | "getPublicFormById" | "listPublicForms" | "getPublicBookingServices" | "getPublicChallenge" | "listPublicEvents" | "batchBlockLoaders" | "listPublicCourses" | "listPublicTeamMembers" | "listPublicProducts" | "listPublicPasses" | "listPublicMemberships" | "resolveEntrySubroute" | "resolveEventOccurrence" | "checkRedirect" | "getRoutableContent" | "getPublicRoutableContent" | "getPublicSitemapRoutes";
|
|
814
814
|
export type PublicAPIEndpoints = {
|
|
815
815
|
getSite: APIEndpointBase<never, {
|
|
816
816
|
id?: string;
|
|
@@ -949,6 +949,10 @@ export type PublicAPIEndpoints = {
|
|
|
949
949
|
siteId: string;
|
|
950
950
|
publishedOnly?: string;
|
|
951
951
|
}, RoutableContentResponse>;
|
|
952
|
+
getPublicRoutableContent: APIEndpointBase<never, {
|
|
953
|
+
siteId: string;
|
|
954
|
+
publishedOnly?: string;
|
|
955
|
+
}, RoutableContentResponse>;
|
|
952
956
|
getPublicSitemapRoutes: APIEndpointBase<never, {
|
|
953
957
|
siteId: string;
|
|
954
958
|
page?: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ApiResult, HTTPMethod, PublicAPIEndpoints, PublicEndpointName } from './contracts';
|
|
2
|
-
export declare const PUBLIC_ENDPOINT_NAMES: readonly ["getSite", "getContentByPath", "listPublishedEntries", "getPublishedEntryPreview", "getPublicFormById", "listPublicForms", "getPublicBookingServices", "getPublicChallenge", "listPublicEvents", "batchBlockLoaders", "listPublicCourses", "listPublicTeamMembers", "listPublicProducts", "listPublicPasses", "listPublicMemberships", "resolveEntrySubroute", "resolveEventOccurrence", "checkRedirect", "getRoutableContent", "getPublicSitemapRoutes"];
|
|
2
|
+
export declare const PUBLIC_ENDPOINT_NAMES: readonly ["getSite", "getContentByPath", "listPublishedEntries", "getPublishedEntryPreview", "getPublicFormById", "listPublicForms", "getPublicBookingServices", "getPublicChallenge", "listPublicEvents", "batchBlockLoaders", "listPublicCourses", "listPublicTeamMembers", "listPublicProducts", "listPublicPasses", "listPublicMemberships", "resolveEntrySubroute", "resolveEventOccurrence", "checkRedirect", "getRoutableContent", "getPublicRoutableContent", "getPublicSitemapRoutes"];
|
|
3
3
|
export type ApiClient = <E extends PublicEndpointName>(params: {
|
|
4
4
|
endpoint: E;
|
|
5
5
|
params?: PublicAPIEndpoints[E]['query'];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Webhook utilities for Riverbank SDK
|
|
3
3
|
*/
|
|
4
|
-
export { verifyWebhookSignature, parseWebhookPayload, WebhookPayloadSchema, type WebhookPayload, type ParseWebhookResult, } from './verify';
|
|
4
|
+
export { SUPPORTED_WEBHOOK_EVENTS, verifyWebhookSignature, parseWebhookPayload, RIVERBANK_SIGNATURE_PREFIX, WebhookPayloadSchema, WebhookEventSchema, normalizeRevalidationPath, parseRevalidationPath, unwrapRevalidationPath, type RevalidationPath, type RevalidationPathParseError, type RevalidationPathParseResult, type WebhookEvent, type WebhookPayload, type ParseWebhookResult, } from './verify';
|
|
@@ -3,116 +3,20 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Provides framework-agnostic webhook signature verification and payload parsing.
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
* Keep in sync with apps/dashboard/src/lib/db/helpers/webhooks.ts
|
|
10
|
-
*/
|
|
11
|
-
export declare const WebhookEventSchema: z.ZodEnum<{
|
|
12
|
-
"page.published": "page.published";
|
|
13
|
-
"entry.published": "entry.published";
|
|
14
|
-
"navigation.updated": "navigation.updated";
|
|
15
|
-
"theme.updated": "theme.updated";
|
|
16
|
-
"site.settings_updated": "site.settings_updated";
|
|
17
|
-
}>;
|
|
18
|
-
export type WebhookEvent = z.infer<typeof WebhookEventSchema>;
|
|
19
|
-
/** Data for page.published events */
|
|
20
|
-
export declare const PagePublishedDataSchema: z.ZodObject<{
|
|
21
|
-
pageId: z.ZodString;
|
|
22
|
-
path: z.ZodString;
|
|
23
|
-
slug: z.ZodOptional<z.ZodString>;
|
|
24
|
-
}, z.core.$strip>;
|
|
25
|
-
/** Data for entry.published events */
|
|
26
|
-
export declare const EntryPublishedDataSchema: z.ZodObject<{
|
|
27
|
-
entryId: z.ZodString;
|
|
28
|
-
path: z.ZodString;
|
|
29
|
-
contentType: z.ZodString;
|
|
30
|
-
}, z.core.$strip>;
|
|
31
|
-
/** Data for navigation.updated events */
|
|
32
|
-
export declare const NavigationUpdatedDataSchema: z.ZodObject<{
|
|
33
|
-
menuId: z.ZodOptional<z.ZodString>;
|
|
34
|
-
}, z.core.$strip>;
|
|
35
|
-
/** Data for theme.updated and site.settings_updated events (empty) */
|
|
36
|
-
export declare const EmptyDataSchema: z.ZodObject<{}, z.core.$strip>;
|
|
37
|
-
/**
|
|
38
|
-
* Combined data schema that accepts any valid event data.
|
|
39
|
-
* The actual shape depends on the event type.
|
|
40
|
-
*/
|
|
41
|
-
export declare const WebhookDataSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
42
|
-
pageId: z.ZodString;
|
|
43
|
-
path: z.ZodString;
|
|
44
|
-
slug: z.ZodOptional<z.ZodString>;
|
|
45
|
-
}, z.core.$strip>, z.ZodObject<{
|
|
46
|
-
entryId: z.ZodString;
|
|
47
|
-
path: z.ZodString;
|
|
48
|
-
contentType: z.ZodString;
|
|
49
|
-
}, z.core.$strip>, z.ZodObject<{
|
|
50
|
-
menuId: z.ZodOptional<z.ZodString>;
|
|
51
|
-
}, z.core.$strip>, z.ZodObject<{}, z.core.$strip>]>;
|
|
52
|
-
export type PagePublishedData = z.infer<typeof PagePublishedDataSchema>;
|
|
53
|
-
export type EntryPublishedData = z.infer<typeof EntryPublishedDataSchema>;
|
|
54
|
-
export type NavigationUpdatedData = z.infer<typeof NavigationUpdatedDataSchema>;
|
|
55
|
-
/**
|
|
56
|
-
* Zod schema for webhook payload validation.
|
|
57
|
-
*/
|
|
58
|
-
export declare const WebhookPayloadSchema: z.ZodObject<{
|
|
59
|
-
event: z.ZodEnum<{
|
|
60
|
-
"page.published": "page.published";
|
|
61
|
-
"entry.published": "entry.published";
|
|
62
|
-
"navigation.updated": "navigation.updated";
|
|
63
|
-
"theme.updated": "theme.updated";
|
|
64
|
-
"site.settings_updated": "site.settings_updated";
|
|
65
|
-
}>;
|
|
66
|
-
timestamp: z.ZodString;
|
|
67
|
-
siteId: z.ZodString;
|
|
68
|
-
data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
69
|
-
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
70
|
-
}, z.core.$strip>;
|
|
71
|
-
/**
|
|
72
|
-
* Webhook payload structure sent by the CMS.
|
|
73
|
-
*/
|
|
74
|
-
export type WebhookPayload = z.infer<typeof WebhookPayloadSchema>;
|
|
6
|
+
import { type EmptyWebhookData, type EntryPathChangedData, type EntryPublishedData, type EntryRemovedData, type NavigationUpdatedData, type PagePathChangedData, type PagePublishedData, type PageRemovedData, type RevalidationPath, type RevalidationPathParseError, type RevalidationPathParseResult, type WebhookEvent, type WebhookPayload } from '../../../api/src/webhooks';
|
|
7
|
+
export { EmptyWebhookDataSchema as EmptyDataSchema, EntryPathChangedDataSchema, EntryPublishedDataSchema, EntryRemovedDataSchema, NavigationUpdatedDataSchema, PagePathChangedDataSchema, PagePublishedDataSchema, PageRemovedDataSchema, RIVERBANK_SIGNATURE_PREFIX, SUPPORTED_WEBHOOK_EVENTS, WebhookEventSchema, WebhookPayloadSchema, normalizeRevalidationPath, parseRevalidationPath, unwrapRevalidationPath, } from '../../../api/src/webhooks';
|
|
8
|
+
export type { EmptyWebhookData as EmptyData, RevalidationPath, RevalidationPathParseError, RevalidationPathParseResult, EntryPathChangedData, EntryPublishedData, EntryRemovedData, NavigationUpdatedData, PagePathChangedData, PagePublishedData, PageRemovedData, WebhookEvent, WebhookPayload, };
|
|
75
9
|
/**
|
|
76
10
|
* Type-safe webhook payload with discriminated data based on event type.
|
|
77
11
|
*/
|
|
78
|
-
export type TypedWebhookPayload =
|
|
79
|
-
event: 'page.published';
|
|
80
|
-
data: PagePublishedData;
|
|
81
|
-
siteId: string;
|
|
82
|
-
timestamp: string;
|
|
83
|
-
tags?: string[];
|
|
84
|
-
} | {
|
|
85
|
-
event: 'entry.published';
|
|
86
|
-
data: EntryPublishedData;
|
|
87
|
-
siteId: string;
|
|
88
|
-
timestamp: string;
|
|
89
|
-
tags?: string[];
|
|
90
|
-
} | {
|
|
91
|
-
event: 'navigation.updated';
|
|
92
|
-
data: NavigationUpdatedData;
|
|
93
|
-
siteId: string;
|
|
94
|
-
timestamp: string;
|
|
95
|
-
tags?: string[];
|
|
96
|
-
} | {
|
|
97
|
-
event: 'theme.updated';
|
|
98
|
-
data: Record<string, never>;
|
|
99
|
-
siteId: string;
|
|
100
|
-
timestamp: string;
|
|
101
|
-
tags?: string[];
|
|
102
|
-
} | {
|
|
103
|
-
event: 'site.settings_updated';
|
|
104
|
-
data: Record<string, never>;
|
|
105
|
-
siteId: string;
|
|
106
|
-
timestamp: string;
|
|
107
|
-
tags?: string[];
|
|
108
|
-
};
|
|
12
|
+
export type TypedWebhookPayload = WebhookPayload;
|
|
109
13
|
/**
|
|
110
|
-
* Verify a webhook signature using HMAC-SHA256.
|
|
14
|
+
* Verify a `sha256=<digest>` webhook signature using HMAC-SHA256.
|
|
111
15
|
*
|
|
112
16
|
* Uses timing-safe comparison to prevent timing attacks.
|
|
113
17
|
*
|
|
114
18
|
* @param payload - The raw request body as a string
|
|
115
|
-
* @param signature - The X-Riverbank-Signature header value
|
|
19
|
+
* @param signature - The X-Riverbank-Signature header value (`sha256=<hex digest>`)
|
|
116
20
|
* @param secret - The webhook signing secret (RIVERBANK_WEBHOOK_SECRET)
|
|
117
21
|
* @returns true if signature is valid, false otherwise
|
|
118
22
|
*
|