@riverbankcms/sdk 0.107.0 → 0.109.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 +21 -1
- package/dist/{PreviewEditorSidebar-DpAbAl08.mjs → PreviewEditorSidebar-DWqwfy3_.mjs} +48 -28
- package/dist/{PreviewEditorUI-O7cn6Xxv.mjs → PreviewEditorUI-B7OL4sfR.mjs} +10 -9
- package/dist/{PreviewQueryProvider-D0tnKl0t.mjs → PreviewQueryProvider-D0y2l8JN.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-CVB7urtl.mjs → SdkPreviewModeRuntime-D8Gt9Gbe.mjs} +633 -220
- package/dist/{SiteChromeCustomizeContext-C_sizso-.mjs → SiteChromeCustomizeContext-DUpalEdL.mjs} +5764 -1556
- package/dist/_dts/ai/src/contracts/proposals.d.ts +15383 -11388
- package/dist/_dts/api/src/blocks.d.ts +41 -7
- package/dist/_dts/api/src/bookingAdjustments.d.ts +5 -0
- package/dist/_dts/api/src/bookingOperations.d.ts +4 -0
- package/dist/_dts/api/src/bookingRecords.d.ts +177 -127
- package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +6 -6
- package/dist/_dts/api/src/cache-tags.d.ts +3 -0
- package/dist/_dts/api/src/common/envelope.d.ts +7 -0
- package/dist/_dts/api/src/contentRuntime.d.ts +19 -1
- package/dist/_dts/api/src/courses.d.ts +1 -0
- package/dist/_dts/api/src/customerMembershipOutcomes.d.ts +5 -5
- package/dist/_dts/api/src/endpoints.d.ts +134 -0
- package/dist/_dts/api/src/footer-settings.d.ts +1 -0
- package/dist/_dts/api/src/footerSettings.d.ts +8 -0
- package/dist/_dts/api/src/index.d.ts +7 -4
- package/dist/_dts/api/src/navigation/contracts.d.ts +3 -3
- package/dist/_dts/api/src/participantMessaging.d.ts +18 -12
- package/dist/_dts/api/src/previewContentContract.d.ts +4 -0
- package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +1 -0
- package/dist/_dts/api/src/sdkContracts.d.ts +309 -1
- package/dist/_dts/api/src/siteBanner.d.ts +2 -2
- package/dist/_dts/api/src/siteInfrastructure.d.ts +13 -0
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +144 -60
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +35 -1
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +74 -28
- package/dist/_dts/block-form/src/widgets/BackgroundGradientWidget/BackgroundGradientField.d.ts +9 -0
- package/dist/_dts/block-form/src/widgets/BackgroundGradientWidget/BackgroundGradientWidget.d.ts +3 -4
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -4
- package/dist/_dts/blocks/src/index.d.ts +1 -1
- package/dist/_dts/blocks/src/primitives/layout/Section.d.ts +0 -1
- package/dist/_dts/blocks/src/rendering/server.d.ts +1 -0
- package/dist/_dts/blocks/src/system/blocks/audio-player.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/body-text.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/course-registration.d.ts +1 -22
- package/dist/_dts/blocks/src/system/blocks/cta-full.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +1 -22
- package/dist/_dts/blocks/src/system/blocks/file-download.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/form.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/image-gallery.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +50 -0
- package/dist/_dts/blocks/src/system/blocks/site-footer.d.ts +9 -48
- package/dist/_dts/blocks/src/system/blocks/site-header.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/video-grid.d.ts +3 -0
- package/dist/_dts/blocks/src/system/constants/background.d.ts +1 -1
- package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +16 -6
- package/dist/_dts/blocks/src/system/defineBlock.d.ts +9 -1
- package/dist/_dts/blocks/src/system/fields/ctas.d.ts +8 -0
- package/dist/_dts/blocks/src/system/icons/registry.d.ts +2 -1
- package/dist/_dts/blocks/src/system/icons/social.d.ts +5 -0
- package/dist/_dts/blocks/src/system/icons/svg.d.ts +1 -0
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +33 -2
- package/dist/_dts/blocks/src/system/node/fragments/backgroundLayer.d.ts +13 -0
- package/dist/_dts/blocks/src/system/node/fragments/footerNav.d.ts +2 -0
- package/dist/_dts/blocks/src/system/node/fragments/styledContainer.d.ts +4 -4
- package/dist/_dts/blocks/src/system/node/fragments/styledSection.d.ts +3 -12
- package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +6 -6
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +2 -2
- package/dist/_dts/blocks/src/system/types/link.d.ts +3 -3
- package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +14 -0
- package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +27 -8
- package/dist/_dts/content-editor/src/footerComposer.d.ts +56 -0
- package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +1 -1
- package/dist/_dts/content-editor/src/hooks/useEntryMutations.d.ts +5 -5
- package/dist/_dts/content-editor/src/index.d.ts +2 -0
- package/dist/_dts/content-editor/src/primitives/PreviewRichTextEditor.d.ts +3 -1
- package/dist/_dts/content-editor/src/services/contentEntryServices.d.ts +20 -36
- package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +5 -1
- package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +11 -0
- package/dist/_dts/content-model/src/content-types/entryValidation.d.ts +31 -0
- package/dist/_dts/content-model/src/content-types/scaffold.d.ts +58 -0
- package/dist/_dts/content-model/src/content-types/schema.d.ts +1 -1
- package/dist/_dts/content-model/src/content-types/sentinels.d.ts +36 -0
- package/dist/_dts/content-model/src/definitions/shared.d.ts +3 -0
- package/dist/_dts/content-model/src/index.d.ts +3 -0
- package/dist/_dts/core/src/booking-date-time.d.ts +8 -0
- package/dist/_dts/core/src/branded.d.ts +3 -0
- package/dist/_dts/core/src/editor-state.d.ts +4 -0
- package/dist/_dts/core/src/footer-composition.d.ts +143 -0
- package/dist/_dts/core/src/index.d.ts +2 -0
- package/dist/_dts/core/src/public-profile.d.ts +73 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +221 -205
- package/dist/_dts/db/src/schemas/forms.d.ts +10 -10
- package/dist/_dts/editor/src/primitives/rich-text/RichTextEditorSurface.d.ts +5 -0
- package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +1 -0
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockCreation.d.ts +2 -1
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +2 -1
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockReorder.d.ts +2 -1
- package/dist/_dts/editor-blocks/src/block-editor/owner.d.ts +10 -0
- package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +1 -0
- package/dist/_dts/media-core/src/fileMimeDetection.d.ts +16 -0
- package/dist/_dts/media-core/src/fileStorage.d.ts +8 -0
- package/dist/_dts/media-core/src/storagePathDomain.d.ts +2 -0
- package/dist/_dts/media-core/src/uploadVerificationContract.d.ts +3 -0
- package/dist/_dts/path-utils/src/index.d.ts +5 -0
- package/dist/_dts/preview-next/src/client/blocks/BlockToolbar.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewChromeLayer.d.ts +5 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/preview/previewErrorMessages.d.ts +4 -0
- package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +1 -1
- package/dist/_dts/sdk/src/cli/commands/audit.d.ts +1 -1
- package/dist/_dts/sdk/src/cli/commands/compare.d.ts +1 -1
- package/dist/_dts/sdk/src/cli/commands/deploy.d.ts +1 -1
- package/dist/_dts/sdk/src/cli/commands/drafts.d.ts +18 -0
- package/dist/_dts/sdk/src/cli/commands/entry.d.ts +15 -0
- package/dist/_dts/sdk/src/cli/commands/init-docs.d.ts +2 -2
- package/dist/_dts/sdk/src/cli/commands/publish-all.d.ts +1 -1
- package/dist/_dts/sdk/src/cli/commands/pull.d.ts +1 -0
- package/dist/_dts/sdk/src/cli/commands/push/execute/diff.d.ts +1 -1
- package/dist/_dts/sdk/src/cli/commands/push/options.d.ts +3 -0
- package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +12 -1
- package/dist/_dts/sdk/src/cli/commands/setup.d.ts +1 -0
- package/dist/_dts/sdk/src/cli/commands/verify.d.ts +1 -0
- package/dist/_dts/sdk/src/cli/content/reader.d.ts +1 -0
- package/dist/_dts/sdk/src/cli/helpers.d.ts +22 -1
- package/dist/_dts/sdk/src/cli/index.d.ts +4 -0
- package/dist/_dts/sdk/src/cli/output.d.ts +88 -0
- package/dist/_dts/sdk/src/cli/program.d.ts +29 -0
- package/dist/_dts/sdk/src/cli/push-config.d.ts +1 -1
- package/dist/_dts/sdk/src/client/management/blocks.d.ts +14 -1
- package/dist/_dts/sdk/src/client/management/catalog.d.ts +10 -0
- package/dist/_dts/sdk/src/client/management/http.d.ts +7 -1
- package/dist/_dts/sdk/src/client/management/index.d.ts +2 -1
- package/dist/_dts/sdk/src/client/management/types.d.ts +58 -20
- package/dist/_dts/sdk/src/config/content-types.d.ts +2 -0
- package/dist/_dts/sdk/src/config/content-validation.d.ts +4 -0
- package/dist/_dts/sdk/src/date-time/index.d.ts +68 -0
- package/dist/_dts/sdk/src/navigation/index.d.ts +2 -0
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -2
- package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +2 -1
- package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +1 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/site-commands/src/commands.d.ts +900 -827
- package/dist/_dts/theme-core/src/accordions/types.d.ts +2 -2
- package/dist/_dts/theme-core/src/buttons/core.d.ts +15 -46
- package/dist/_dts/theme-core/src/buttons/effectClassification.d.ts +147 -0
- package/dist/_dts/theme-core/src/buttons/effects/types.d.ts +2 -3
- package/dist/_dts/theme-core/src/buttons/generateDefaultButtonSystem.d.ts +1 -1
- package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
- package/dist/_dts/theme-core/src/buttons/personalities/two-tone-pill.d.ts +17 -0
- package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +45 -33
- package/dist/_dts/theme-core/src/buttons/presets.d.ts +4 -25
- package/dist/_dts/theme-core/src/buttons/resolveButtonColourStates.d.ts +100 -0
- package/dist/_dts/theme-core/src/buttons/resolvedButtonCss.d.ts +16 -0
- package/dist/_dts/theme-core/src/buttons/types.d.ts +104 -86
- package/dist/_dts/theme-core/src/cards/types.d.ts +16 -16
- package/dist/_dts/theme-core/src/footer/mode.d.ts +15 -0
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/gradients/presets.d.ts +200 -8
- package/dist/_dts/theme-core/src/gradients/utils.d.ts +6 -2
- package/dist/_dts/theme-core/src/interactive/baseSchema.d.ts +1 -1
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +117 -150
- package/dist/_dts/theme-core/src/mock-themes/modern-minimal.d.ts +1 -1
- package/dist/_dts/theme-core/src/navigation/types.d.ts +3 -3
- package/dist/_dts/theme-core/src/palette/curated/index.d.ts +2 -2
- package/dist/_dts/theme-core/src/palette/curated/types.d.ts +5 -8
- package/dist/_dts/theme-core/src/palette/index.d.ts +0 -1
- package/dist/_dts/theme-core/src/schema.d.ts +1264 -138
- package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +10 -10
- package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +12 -1
- package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +3 -2
- package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +13 -6
- package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +29 -8
- package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +15 -0
- package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +2 -2
- package/dist/cli/index.mjs +68552 -66955
- package/dist/cli/init-docs/content/cli-reference.md +50 -7
- package/dist/cli/init-docs/content/content-management.md +7 -4
- package/dist/cli/init-docs/content/workflow-publish.md +5 -1
- package/dist/client/{DiscountCodeDisclosure-BwGkvmVH.mjs → DiscountCodeDisclosure-DU1ygxU2.mjs} +1 -1
- package/dist/client/{EventCombined.client-JnWE6Hzc.mjs → EventCombined.client-DB5zagCo.mjs} +3 -3
- package/dist/client/{EventListing.client-DQewc_kg.mjs → EventListing.client-CTX9JHBL.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-DPAU3SFt.mjs → LeafletStaticMap-BYImhgiB.mjs} +1 -1
- package/dist/client/{MagicLinkForm-D4kpWCbW.mjs → MagicLinkForm-CRkw_M3l.mjs} +2 -2
- package/dist/client/{StepIndicator-CBlkb4rA.mjs → StepIndicator-BnmVBJJh.mjs} +2 -2
- package/dist/client/{accordion-DAIBVpTS.mjs → accordion-CeGreumd.mjs} +1 -1
- package/dist/client/{bookingForm-DZ-4l5_1.mjs → bookingForm-CSzFNrpN.mjs} +6 -6
- package/dist/client/bookings.mjs +637 -328
- package/dist/client/{buttons-DJgynGHQ.mjs → buttons-DoFV7KDL.mjs} +618 -306
- package/dist/client/{carousel-D-SLfX8r.mjs → carousel-B2jDtogf.mjs} +1 -1
- package/dist/client/{cart-CEgbgJhX.mjs → cart-D-jZ-vaY.mjs} +3 -3
- package/dist/client/{checkout-CXWrCRAA.mjs → checkout-Dza-LA7N.mjs} +3 -3
- package/dist/client/client.mjs +2497 -1216
- package/dist/client/{colorStyles-jZS6KfkP.mjs → colorStyles-CrgzoXsm.mjs} +1 -30
- package/dist/client/{courseRegistration-DVmLrRVz.mjs → courseRegistration-TYkNychb.mjs} +7 -7
- package/dist/client/{eventCalendar-DCuyPY_c.mjs → eventCalendar-BI_90SsT.mjs} +5 -5
- package/dist/client/{eventCombined-kP2CA2D4.mjs → eventCombined-mNrpryE9.mjs} +2 -2
- package/dist/client/{eventDetails-DU0LeF5e.mjs → eventDetails-D4GVlCIY.mjs} +3 -3
- package/dist/client/{eventListing-CcHF87BI.mjs → eventListing-YhKN018y.mjs} +2 -2
- package/dist/client/{eventRegistration-DJnR0yFH.mjs → eventRegistration-CdHGtilr.mjs} +7 -7
- package/dist/client/foregroundContract-xICPq59x.mjs +31 -0
- package/dist/client/{form-CH1lCusH.mjs → form-AcAL45rA.mjs} +2 -2
- package/dist/client/{headerSection-CBPFZoku.mjs → headerSection-uEC52ueD.mjs} +3 -3
- package/dist/client/hooks.mjs +1249 -841
- package/dist/client/{locationMap-Cx1hBg5n.mjs → locationMap-_wJDSUYe.mjs} +3 -3
- package/dist/client/{media-DHtSxS5V.mjs → media-BK0O3b-U.mjs} +3 -2
- package/dist/client/{newsletterForm-1ZL_ti9u.mjs → newsletterForm-DrArsb2B.mjs} +2 -2
- package/dist/client/{pricing-BIbzmV0G.mjs → pricing-BSYVghwo.mjs} +1 -1
- package/dist/client/{productDetail-BTh5gHBV.mjs → productDetail-Dyk90sMs.mjs} +3 -3
- package/dist/client/{productList-Cc7OMrqN.mjs → productList-BCKThwAI.mjs} +3 -3
- package/dist/client/{propsDecoder-oR-M-ISN.mjs → propsDecoder-CkXxkdSR.mjs} +96 -33
- package/dist/client/rendering/client.mjs +1278 -523
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +2308 -1028
- package/dist/client/{shop-CQ_YbCnn.mjs → shop-DeltVH10.mjs} +6 -6
- package/dist/client/{shop-commerce-BM-AoD3M.mjs → shop-commerce-BD9Jsm2Z.mjs} +6 -6
- package/dist/client/{shop-commerce-store-DFMQhU5p.mjs → shop-commerce-store-CmXD6FDS.mjs} +1 -1
- package/dist/client/{shopShared-D0SKO2Cu.mjs → shopShared-B8v-lH_F.mjs} +2 -2
- package/dist/client/{useDiscountCodeUi-CrG4_ARt.mjs → useDiscountCodeUi-DbWJN8ld.mjs} +1 -1
- package/dist/client/{useEventFilters-CxK8Fekl.mjs → useEventFilters-EJIMUnqT.mjs} +46 -69
- package/dist/client/{usePolling-jcVryNgZ.mjs → usePolling-Cmh14fc7.mjs} +2 -2
- package/dist/preview-next/before-render.mjs +213 -0
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/middleware.mjs +213 -0
- package/dist/{previewAuthStore-BPcJPzdz.mjs → previewAuthStore-CTO7CRPk.mjs} +213 -0
- package/dist/{sdk-runtime-C39Rsk-x.mjs → sdk-runtime-Dou0GAav.mjs} +2 -2
- package/dist/{separator-BoMSQnsP.mjs → separator-CI5wZNXT.mjs} +1 -1
- package/dist/server/components.mjs +2370 -1132
- package/dist/server/config-validation.mjs +1256 -842
- package/dist/server/config.mjs +1256 -843
- package/dist/server/data.mjs +1249 -841
- package/dist/server/date-time.mjs +386 -0
- package/dist/server/index.mjs +214 -1
- package/dist/server/navigation.mjs +9 -3
- package/dist/server/next.mjs +3421 -1949
- package/dist/server/page-converter.mjs +1236 -659
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +2074 -1060
- package/dist/server/rendering.mjs +2370 -1132
- package/dist/server/routing.mjs +1543 -1062
- package/dist/server/server.mjs +1464 -843
- package/dist/server/theme-bridge.mjs +1581 -474
- package/dist/server/theme.mjs +614 -305
- package/dist/styles/index.css +12 -1
- package/package.json +7 -1
- package/dist/_dts/theme-core/src/buttons/presets/types.d.ts +0 -88
- package/dist/_dts/theme-core/src/buttons/utils/contrast.d.ts +0 -38
- package/dist/_dts/theme-core/src/palette/themePaletteCompatibility.d.ts +0 -57
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
//#region ../core/src/result.ts
|
|
2
|
+
function ok(value) {
|
|
3
|
+
return {
|
|
4
|
+
ok: true,
|
|
5
|
+
value
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
function err(error) {
|
|
9
|
+
return {
|
|
10
|
+
ok: false,
|
|
11
|
+
error
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
15
|
+
//#region ../core/src/booking-date-time.ts
|
|
16
|
+
const DEFAULT_LOCALE$1 = "en-US";
|
|
17
|
+
const DATE_TIME_FORMATTER_CACHE_LIMIT = 100;
|
|
18
|
+
const dateTimeFormatterCache$1 = /* @__PURE__ */ new Map();
|
|
19
|
+
const timeZoneValidityCache = /* @__PURE__ */ new Map();
|
|
20
|
+
function isValidTimeZone(timeZone) {
|
|
21
|
+
const cached = timeZoneValidityCache.get(timeZone);
|
|
22
|
+
if (cached !== void 0) return cached;
|
|
23
|
+
let isValid;
|
|
24
|
+
try {
|
|
25
|
+
new Intl.DateTimeFormat(DEFAULT_LOCALE$1, { timeZone }).format(/* @__PURE__ */ new Date());
|
|
26
|
+
isValid = true;
|
|
27
|
+
} catch {
|
|
28
|
+
isValid = false;
|
|
29
|
+
}
|
|
30
|
+
if (timeZoneValidityCache.size >= DATE_TIME_FORMATTER_CACHE_LIMIT) timeZoneValidityCache.clear();
|
|
31
|
+
timeZoneValidityCache.set(timeZone, isValid);
|
|
32
|
+
return isValid;
|
|
33
|
+
}
|
|
34
|
+
function parseStrictBookingTimeZone(timeZone) {
|
|
35
|
+
if (typeof timeZone !== "string") return null;
|
|
36
|
+
const normalized = timeZone.trim();
|
|
37
|
+
if (normalized.length === 0 || !isValidTimeZone(normalized)) return null;
|
|
38
|
+
return normalized;
|
|
39
|
+
}
|
|
40
|
+
function formatToPartsLookup(date, locale, timeZone, format) {
|
|
41
|
+
return new Map(getCachedDateTimeFormatter(locale, timeZone, format).formatToParts(date).map((part) => [part.type, part.value]));
|
|
42
|
+
}
|
|
43
|
+
function getCachedDateTimeFormatter(locale, timeZone, format) {
|
|
44
|
+
const key = `${locale}\u0000${timeZone}\u0000${JSON.stringify(Object.entries(format).sort(([left], [right]) => left.localeCompare(right)))}`;
|
|
45
|
+
const cached = dateTimeFormatterCache$1.get(key);
|
|
46
|
+
if (cached !== void 0) return cached;
|
|
47
|
+
const formatter = new Intl.DateTimeFormat(locale, {
|
|
48
|
+
...format,
|
|
49
|
+
timeZone
|
|
50
|
+
});
|
|
51
|
+
if (dateTimeFormatterCache$1.size >= DATE_TIME_FORMATTER_CACHE_LIMIT) dateTimeFormatterCache$1.clear();
|
|
52
|
+
dateTimeFormatterCache$1.set(key, formatter);
|
|
53
|
+
return formatter;
|
|
54
|
+
}
|
|
55
|
+
function parseUtcIsoDateTimeString(value) {
|
|
56
|
+
const normalized = value.trim();
|
|
57
|
+
const hasUtcSuffix = normalized.endsWith("Z");
|
|
58
|
+
const hasExplicitOffset = /[+-]\d{2}:\d{2}$/u.test(normalized);
|
|
59
|
+
if (!hasUtcSuffix && !hasExplicitOffset) return err("missing-timezone-offset");
|
|
60
|
+
const date = new Date(normalized);
|
|
61
|
+
if (Number.isNaN(date.getTime())) return err("invalid-date-time");
|
|
62
|
+
return ok(date.toISOString());
|
|
63
|
+
}
|
|
64
|
+
function toUtcIsoDateTimeString(value) {
|
|
65
|
+
const parsed = parseUtcIsoDateTimeString(value);
|
|
66
|
+
if (!parsed.ok) {
|
|
67
|
+
const message = parsed.error === "missing-timezone-offset" ? `Expected an offset-aware ISO datetime, received "${value}"` : `Expected a valid ISO datetime, received "${value}"`;
|
|
68
|
+
throw new Error(message);
|
|
69
|
+
}
|
|
70
|
+
return parsed.value;
|
|
71
|
+
}
|
|
72
|
+
function parseScheduledBookingDateTime(input) {
|
|
73
|
+
let startsAt;
|
|
74
|
+
try {
|
|
75
|
+
startsAt = toUtcIsoDateTimeString(input.startsAt);
|
|
76
|
+
} catch {
|
|
77
|
+
return {
|
|
78
|
+
ok: false,
|
|
79
|
+
field: "startsAt",
|
|
80
|
+
reason: "invalid_starts_at",
|
|
81
|
+
value: input.startsAt
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
const timeZone = parseStrictBookingTimeZone(input.timeZone);
|
|
85
|
+
if (timeZone === null) return {
|
|
86
|
+
ok: false,
|
|
87
|
+
field: "timeZone",
|
|
88
|
+
reason: "invalid_time_zone",
|
|
89
|
+
value: typeof input.timeZone === "string" ? input.timeZone : ""
|
|
90
|
+
};
|
|
91
|
+
return {
|
|
92
|
+
ok: true,
|
|
93
|
+
value: {
|
|
94
|
+
startsAt,
|
|
95
|
+
timeZone,
|
|
96
|
+
locale: input.locale
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
function parseScheduledBookingDateRange(input) {
|
|
101
|
+
const start = parseScheduledBookingDateTime(input);
|
|
102
|
+
if (!start.ok) return start;
|
|
103
|
+
if (input.endsAt == null) return {
|
|
104
|
+
ok: true,
|
|
105
|
+
value: start.value
|
|
106
|
+
};
|
|
107
|
+
try {
|
|
108
|
+
return {
|
|
109
|
+
ok: true,
|
|
110
|
+
value: {
|
|
111
|
+
...start.value,
|
|
112
|
+
endsAt: toUtcIsoDateTimeString(input.endsAt)
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
} catch {
|
|
116
|
+
return {
|
|
117
|
+
ok: false,
|
|
118
|
+
field: "endsAt",
|
|
119
|
+
reason: "invalid_ends_at",
|
|
120
|
+
value: input.endsAt
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Formats the compact English event-time presentation used by public surfaces.
|
|
126
|
+
*
|
|
127
|
+
* This intentionally owns the lowercase day-period token and zero-minute
|
|
128
|
+
* omission instead of depending on locale-specific spacing or punctuation.
|
|
129
|
+
* Callers must only use it for an English presentation contract.
|
|
130
|
+
*/
|
|
131
|
+
function formatBookingCompactEnglishTime(input) {
|
|
132
|
+
const date = new Date(input.startsAt);
|
|
133
|
+
if (Number.isNaN(date.getTime())) return input.startsAt;
|
|
134
|
+
const parts = formatToPartsLookup(date, input.locale ?? "en-GB", input.timeZone, {
|
|
135
|
+
hour: "numeric",
|
|
136
|
+
minute: "2-digit",
|
|
137
|
+
hour12: true
|
|
138
|
+
});
|
|
139
|
+
const hour = parts.get("hour");
|
|
140
|
+
const minute = parts.get("minute");
|
|
141
|
+
const dayPeriod = parts.get("dayPeriod");
|
|
142
|
+
if (hour === void 0 || minute === void 0 || dayPeriod === void 0) return input.startsAt;
|
|
143
|
+
return `${minute === "00" ? hour : `${hour}:${minute}`}${dayPeriod.toLowerCase()}`;
|
|
144
|
+
}
|
|
145
|
+
//#endregion
|
|
146
|
+
//#region src/date-time/index.ts
|
|
147
|
+
const DEFAULT_LOCALE = "en-GB";
|
|
148
|
+
const COMPACT_ENGLISH_RANGE_SEPARATOR = "–";
|
|
149
|
+
const FORMATTER_CACHE_LIMIT = 100;
|
|
150
|
+
const DEFAULT_DATE_FORMAT = {
|
|
151
|
+
weekday: "long",
|
|
152
|
+
year: "numeric",
|
|
153
|
+
month: "long",
|
|
154
|
+
day: "numeric"
|
|
155
|
+
};
|
|
156
|
+
const DEFAULT_RANGE_DATE_FORMAT = {
|
|
157
|
+
weekday: "short",
|
|
158
|
+
year: "numeric",
|
|
159
|
+
month: "short",
|
|
160
|
+
day: "numeric"
|
|
161
|
+
};
|
|
162
|
+
const DEFAULT_STANDARD_TIME_FORMAT = {
|
|
163
|
+
hour: "numeric",
|
|
164
|
+
minute: "2-digit"
|
|
165
|
+
};
|
|
166
|
+
const dateTimeFormatterCache = /* @__PURE__ */ new Map();
|
|
167
|
+
const parsedLocaleCache = /* @__PURE__ */ new Map();
|
|
168
|
+
var RiverbankDateTimeFormatError = class extends Error {
|
|
169
|
+
constructor(details) {
|
|
170
|
+
super(formatErrorMessage(details));
|
|
171
|
+
this.name = "RiverbankDateTimeFormatError";
|
|
172
|
+
this.code = details.code;
|
|
173
|
+
this.field = details.field;
|
|
174
|
+
this.value = details.value;
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
function formatScheduledDate(input, options = {}) {
|
|
178
|
+
return formatInstant(parseDateTime(input), options.format ?? DEFAULT_DATE_FORMAT);
|
|
179
|
+
}
|
|
180
|
+
function formatScheduledTime(input, options = {}) {
|
|
181
|
+
return formatTime(parseDateTime(input), options);
|
|
182
|
+
}
|
|
183
|
+
function formatScheduledDateTime(input, options = {}) {
|
|
184
|
+
return formatDateTime(parseDateTime(input), options, DEFAULT_DATE_FORMAT);
|
|
185
|
+
}
|
|
186
|
+
function formatScheduledDateRange(input, options = {}) {
|
|
187
|
+
const range = parseDateRange(input);
|
|
188
|
+
return formatRange(rangeStart(range), rangeEnd(range), options.format ?? DEFAULT_RANGE_DATE_FORMAT);
|
|
189
|
+
}
|
|
190
|
+
function formatScheduledTimeRange(input, options = {}) {
|
|
191
|
+
const range = parseDateRange(input);
|
|
192
|
+
const start = rangeStart(range);
|
|
193
|
+
const end = rangeEnd(range);
|
|
194
|
+
if (!usesCompactEnglishTime(start, options)) return formatRange(start, end, resolveStandardTimeFormat(options));
|
|
195
|
+
const startTime = formatTime(start, options);
|
|
196
|
+
const endTime = formatTime(end, options);
|
|
197
|
+
return startTime === endTime ? startTime : `${startTime}${COMPACT_ENGLISH_RANGE_SEPARATOR}${endTime}`;
|
|
198
|
+
}
|
|
199
|
+
function formatScheduledDateTimeRange(input, options = {}) {
|
|
200
|
+
const range = parseDateRange(input);
|
|
201
|
+
const start = rangeStart(range);
|
|
202
|
+
const end = rangeEnd(range);
|
|
203
|
+
if (!usesCompactEnglishTime(start, options.time ?? {})) return formatRange(start, end, resolveCombinedFormat(options, DEFAULT_RANGE_DATE_FORMAT));
|
|
204
|
+
const startDate = formatInstant(start, options.dateFormat ?? DEFAULT_RANGE_DATE_FORMAT);
|
|
205
|
+
const startTime = formatTime(start, options.time ?? {});
|
|
206
|
+
const endTime = formatTime(end, options.time ?? {});
|
|
207
|
+
const startDateTime = `${startDate}, ${startTime}`;
|
|
208
|
+
if (sameLocalDate(start, end)) return startTime === endTime ? startDateTime : `${startDate}, ${startTime}${COMPACT_ENGLISH_RANGE_SEPARATOR}${endTime}`;
|
|
209
|
+
const endDateTime = `${formatInstant(end, options.dateFormat ?? DEFAULT_RANGE_DATE_FORMAT)}, ${endTime}`;
|
|
210
|
+
return startDateTime === endDateTime ? startDateTime : `${startDateTime}${COMPACT_ENGLISH_RANGE_SEPARATOR}${endDateTime}`;
|
|
211
|
+
}
|
|
212
|
+
function parseDateTime(input) {
|
|
213
|
+
const locale = parseLocale(input.locale);
|
|
214
|
+
assertStringTimeZone(input.timeZone);
|
|
215
|
+
const result = parseScheduledBookingDateTime({
|
|
216
|
+
...input,
|
|
217
|
+
locale: locale.locale
|
|
218
|
+
});
|
|
219
|
+
if (result.ok) return {
|
|
220
|
+
...result.value,
|
|
221
|
+
locale: locale.locale
|
|
222
|
+
};
|
|
223
|
+
throw fromCoreParseError(result);
|
|
224
|
+
}
|
|
225
|
+
function parseDateRange(input) {
|
|
226
|
+
const locale = parseLocale(input.locale);
|
|
227
|
+
assertStringTimeZone(input.timeZone);
|
|
228
|
+
if (input.endsAt === null || input.endsAt === void 0) throw new RiverbankDateTimeFormatError({
|
|
229
|
+
code: "missing_ends_at",
|
|
230
|
+
field: "endsAt",
|
|
231
|
+
value: ""
|
|
232
|
+
});
|
|
233
|
+
const result = parseScheduledBookingDateRange({
|
|
234
|
+
...input,
|
|
235
|
+
locale: locale.locale
|
|
236
|
+
});
|
|
237
|
+
if (!result.ok) throw fromCoreParseError(result);
|
|
238
|
+
if (result.value.endsAt === null || result.value.endsAt === void 0) throw new RiverbankDateTimeFormatError({
|
|
239
|
+
code: "missing_ends_at",
|
|
240
|
+
field: "endsAt",
|
|
241
|
+
value: ""
|
|
242
|
+
});
|
|
243
|
+
if (new Date(result.value.endsAt).getTime() < new Date(result.value.startsAt).getTime()) throw new RiverbankDateTimeFormatError({
|
|
244
|
+
code: "end_before_start",
|
|
245
|
+
field: "endsAt",
|
|
246
|
+
value: input.endsAt
|
|
247
|
+
});
|
|
248
|
+
return {
|
|
249
|
+
...result.value,
|
|
250
|
+
endsAt: result.value.endsAt,
|
|
251
|
+
locale: locale.locale
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
function parseLocale(value) {
|
|
255
|
+
const locale = value === void 0 ? DEFAULT_LOCALE : value;
|
|
256
|
+
if (typeof locale !== "string") throw new RiverbankDateTimeFormatError({
|
|
257
|
+
code: "invalid_locale",
|
|
258
|
+
field: "locale",
|
|
259
|
+
value: ""
|
|
260
|
+
});
|
|
261
|
+
const cached = parsedLocaleCache.get(locale);
|
|
262
|
+
if (cached !== void 0) return cached;
|
|
263
|
+
try {
|
|
264
|
+
const parsed = new Intl.Locale(locale);
|
|
265
|
+
const canonical = parsed.toString();
|
|
266
|
+
if (Intl.DateTimeFormat.supportedLocalesOf([canonical]).length === 0) throw new RangeError("Unsupported locale");
|
|
267
|
+
const result = {
|
|
268
|
+
locale: canonical,
|
|
269
|
+
language: parsed.language
|
|
270
|
+
};
|
|
271
|
+
if (parsedLocaleCache.size >= FORMATTER_CACHE_LIMIT) parsedLocaleCache.clear();
|
|
272
|
+
parsedLocaleCache.set(locale, result);
|
|
273
|
+
return result;
|
|
274
|
+
} catch {
|
|
275
|
+
throw new RiverbankDateTimeFormatError({
|
|
276
|
+
code: "invalid_locale",
|
|
277
|
+
field: "locale",
|
|
278
|
+
value: typeof value === "string" ? value : ""
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
function assertStringTimeZone(value) {
|
|
283
|
+
if (typeof value !== "string") throw new RiverbankDateTimeFormatError({
|
|
284
|
+
code: "invalid_time_zone",
|
|
285
|
+
field: "timeZone",
|
|
286
|
+
value: ""
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
function fromCoreParseError(error) {
|
|
290
|
+
switch (error.reason) {
|
|
291
|
+
case "invalid_starts_at": return new RiverbankDateTimeFormatError({
|
|
292
|
+
code: error.reason,
|
|
293
|
+
field: error.field,
|
|
294
|
+
value: typeof error.value === "string" ? error.value : ""
|
|
295
|
+
});
|
|
296
|
+
case "invalid_ends_at": return new RiverbankDateTimeFormatError({
|
|
297
|
+
code: error.reason,
|
|
298
|
+
field: error.field,
|
|
299
|
+
value: typeof error.value === "string" ? error.value : ""
|
|
300
|
+
});
|
|
301
|
+
case "invalid_time_zone": return new RiverbankDateTimeFormatError({
|
|
302
|
+
code: error.reason,
|
|
303
|
+
field: error.field,
|
|
304
|
+
value: error.value
|
|
305
|
+
});
|
|
306
|
+
default: return assertNever(error);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
function formatErrorMessage(details) {
|
|
310
|
+
switch (details.code) {
|
|
311
|
+
case "invalid_starts_at": return `Expected startsAt to be a valid offset-aware ISO datetime, received "${details.value}"`;
|
|
312
|
+
case "invalid_ends_at": return `Expected endsAt to be a valid offset-aware ISO datetime, received "${details.value}"`;
|
|
313
|
+
case "missing_ends_at": return "Expected endsAt to be provided for a scheduled range";
|
|
314
|
+
case "invalid_time_zone": return `Expected timeZone to be a valid IANA timezone, received "${details.value}"`;
|
|
315
|
+
case "invalid_locale": return `Expected locale to be a supported BCP 47 locale, received "${details.value}"`;
|
|
316
|
+
case "end_before_start": return `Expected endsAt to be on or after startsAt, received "${details.value}"`;
|
|
317
|
+
default: return assertNever(details);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
function formatDateTime(input, options, defaultDateFormat) {
|
|
321
|
+
if (!usesCompactEnglishTime(input, options.time ?? {})) return formatInstant(input, resolveCombinedFormat(options, defaultDateFormat));
|
|
322
|
+
return `${formatInstant(input, options.dateFormat ?? defaultDateFormat)}, ${formatTime(input, options.time ?? {})}`;
|
|
323
|
+
}
|
|
324
|
+
function formatTime(input, options) {
|
|
325
|
+
if (usesCompactEnglishTime(input, options)) return formatBookingCompactEnglishTime(input);
|
|
326
|
+
return formatInstant(input, resolveStandardTimeFormat(options));
|
|
327
|
+
}
|
|
328
|
+
function usesCompactEnglishTime(input, options) {
|
|
329
|
+
return options.timePresentation !== "standard" && parseLocale(input.locale).language === "en";
|
|
330
|
+
}
|
|
331
|
+
function resolveStandardTimeFormat(options) {
|
|
332
|
+
return options.timePresentation === "standard" ? options.format ?? DEFAULT_STANDARD_TIME_FORMAT : DEFAULT_STANDARD_TIME_FORMAT;
|
|
333
|
+
}
|
|
334
|
+
function resolveCombinedFormat(options, defaultDateFormat) {
|
|
335
|
+
return {
|
|
336
|
+
...options.dateFormat ?? defaultDateFormat,
|
|
337
|
+
...resolveStandardTimeFormat(options.time ?? {})
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
function formatInstant(input, format) {
|
|
341
|
+
return getFormatter(input, format).format(new Date(input.startsAt));
|
|
342
|
+
}
|
|
343
|
+
function formatRange(start, end, format) {
|
|
344
|
+
const formatter = getFormatter(start, format);
|
|
345
|
+
const nativeFormatRange = Reflect.get(formatter, "formatRange");
|
|
346
|
+
if (typeof nativeFormatRange !== "function") throw new Error("Intl.DateTimeFormat.formatRange is required");
|
|
347
|
+
const output = Reflect.apply(nativeFormatRange, formatter, [new Date(start.startsAt), new Date(end.startsAt)]);
|
|
348
|
+
if (typeof output !== "string") throw new Error("Intl.DateTimeFormat.formatRange returned a non-string value");
|
|
349
|
+
return output;
|
|
350
|
+
}
|
|
351
|
+
function getFormatter(input, format) {
|
|
352
|
+
const formatKey = JSON.stringify(Object.entries(format).sort(([left], [right]) => left.localeCompare(right)));
|
|
353
|
+
const key = `${input.locale}\u0000${input.timeZone}\u0000${formatKey}`;
|
|
354
|
+
const cached = dateTimeFormatterCache.get(key);
|
|
355
|
+
if (cached !== void 0) return cached;
|
|
356
|
+
const formatter = new Intl.DateTimeFormat(input.locale, {
|
|
357
|
+
...format,
|
|
358
|
+
timeZone: input.timeZone
|
|
359
|
+
});
|
|
360
|
+
if (dateTimeFormatterCache.size >= FORMATTER_CACHE_LIMIT) dateTimeFormatterCache.clear();
|
|
361
|
+
dateTimeFormatterCache.set(key, formatter);
|
|
362
|
+
return formatter;
|
|
363
|
+
}
|
|
364
|
+
function rangeStart(range) {
|
|
365
|
+
return range;
|
|
366
|
+
}
|
|
367
|
+
function rangeEnd(range) {
|
|
368
|
+
return {
|
|
369
|
+
startsAt: range.endsAt,
|
|
370
|
+
timeZone: range.timeZone,
|
|
371
|
+
locale: range.locale
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
function sameLocalDate(start, end) {
|
|
375
|
+
const format = {
|
|
376
|
+
year: "numeric",
|
|
377
|
+
month: "2-digit",
|
|
378
|
+
day: "2-digit"
|
|
379
|
+
};
|
|
380
|
+
return formatInstant(start, format) === formatInstant(end, format);
|
|
381
|
+
}
|
|
382
|
+
function assertNever(value) {
|
|
383
|
+
throw new Error(`Unhandled date-time variant: ${String(value)}`);
|
|
384
|
+
}
|
|
385
|
+
//#endregion
|
|
386
|
+
export { RiverbankDateTimeFormatError, formatScheduledDate, formatScheduledDateRange, formatScheduledDateTime, formatScheduledDateTimeRange, formatScheduledTime, formatScheduledTimeRange };
|
package/dist/server/index.mjs
CHANGED
|
@@ -19,6 +19,12 @@ function encodePublicProductCategorySelector(selector) {
|
|
|
19
19
|
}
|
|
20
20
|
//#endregion
|
|
21
21
|
//#region ../api/src/apiEndpointTypes.ts
|
|
22
|
+
function allowedDemoMutationPolicy() {
|
|
23
|
+
return {
|
|
24
|
+
classification: "allowed",
|
|
25
|
+
publicMessage: ""
|
|
26
|
+
};
|
|
27
|
+
}
|
|
22
28
|
function blockedDemoMutationPolicy(classification, publicMessage) {
|
|
23
29
|
if (publicMessage.trim() === "") throw new Error(`Demo mutation policy ${classification} requires publicMessage.`);
|
|
24
30
|
return {
|
|
@@ -46,6 +52,7 @@ const TAG_TEMPLATES = {
|
|
|
46
52
|
siteRouteOutcomes: "riverbank:site:{siteId}:route-outcomes",
|
|
47
53
|
routeById: "riverbank:route:{routeId}",
|
|
48
54
|
pageById: "riverbank:page:{pageId}",
|
|
55
|
+
pageSurfaceById: "riverbank:page-surface:{pageSurfaceId}",
|
|
49
56
|
workflowRunById: "riverbank:workflow-run:{runId}",
|
|
50
57
|
siteForms: "riverbank:site:{siteId}:forms",
|
|
51
58
|
formById: "riverbank:form:{formId}",
|
|
@@ -71,6 +78,7 @@ const TAG_TEMPLATES = {
|
|
|
71
78
|
const DEMO_MUTATION_BLOCKED_HIDDEN = blockedDemoMutationPolicy("blocked-hidden", "This action is not available in demo sites.");
|
|
72
79
|
const DEMO_MUTATION_BLOCKED_DISABLED = blockedDemoMutationPolicy("blocked-disabled", "This setting is disabled in demo sites.");
|
|
73
80
|
const DEMO_MUTATION_INTERNAL_ONLY = blockedDemoMutationPolicy("internal-only", "This internal operation is not available in demo sites.");
|
|
81
|
+
const DEMO_MUTATION_ALLOWED = allowedDemoMutationPolicy();
|
|
74
82
|
const API_ENDPOINTS$1 = {
|
|
75
83
|
aiContentUpdateChat: {
|
|
76
84
|
path: "/ai/content-update-chat",
|
|
@@ -2209,6 +2217,49 @@ const API_ENDPOINTS$1 = {
|
|
|
2209
2217
|
auth: "user",
|
|
2210
2218
|
responseKind: "json"
|
|
2211
2219
|
},
|
|
2220
|
+
updatePageSurfaceDraftContent: {
|
|
2221
|
+
path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content",
|
|
2222
|
+
method: "PUT",
|
|
2223
|
+
errors: [
|
|
2224
|
+
"validation:invalid_input",
|
|
2225
|
+
"resource:not_found",
|
|
2226
|
+
"resource:conflict",
|
|
2227
|
+
"server:internal_error"
|
|
2228
|
+
],
|
|
2229
|
+
tags: [TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById],
|
|
2230
|
+
auth: "user",
|
|
2231
|
+
responseKind: "json"
|
|
2232
|
+
},
|
|
2233
|
+
discardPageSurfaceDraftContent: {
|
|
2234
|
+
path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/content/draft",
|
|
2235
|
+
method: "DELETE",
|
|
2236
|
+
errors: [
|
|
2237
|
+
"validation:invalid_input",
|
|
2238
|
+
"resource:not_found",
|
|
2239
|
+
"resource:conflict",
|
|
2240
|
+
"server:internal_error"
|
|
2241
|
+
],
|
|
2242
|
+
tags: [TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById],
|
|
2243
|
+
auth: "user",
|
|
2244
|
+
responseKind: "json"
|
|
2245
|
+
},
|
|
2246
|
+
updatePageSurfaceRouteMetadata: {
|
|
2247
|
+
path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/metadata",
|
|
2248
|
+
method: "PATCH",
|
|
2249
|
+
errors: [
|
|
2250
|
+
"validation:invalid_input",
|
|
2251
|
+
"resource:not_found",
|
|
2252
|
+
"resource:conflict",
|
|
2253
|
+
"server:internal_error"
|
|
2254
|
+
],
|
|
2255
|
+
tags: [
|
|
2256
|
+
TAG_TEMPLATES.siteCollection,
|
|
2257
|
+
TAG_TEMPLATES.siteRoutableContent,
|
|
2258
|
+
TAG_TEMPLATES.pageSurfaceById
|
|
2259
|
+
],
|
|
2260
|
+
auth: "user",
|
|
2261
|
+
responseKind: "json"
|
|
2262
|
+
},
|
|
2212
2263
|
runSdkWorkflow: {
|
|
2213
2264
|
path: "/sites/{siteId}/content/{type}/{entryId}/workflows/{workflowId}/run",
|
|
2214
2265
|
method: "POST",
|
|
@@ -2589,6 +2640,50 @@ const API_ENDPOINTS$1 = {
|
|
|
2589
2640
|
errors: [],
|
|
2590
2641
|
responseKind: "json"
|
|
2591
2642
|
},
|
|
2643
|
+
getFooterComposition: {
|
|
2644
|
+
path: "/sites/{siteId}/settings/footer-composition",
|
|
2645
|
+
method: "GET",
|
|
2646
|
+
revalidate: 120,
|
|
2647
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
|
|
2648
|
+
auth: "user",
|
|
2649
|
+
errors: ["resource:not_found", "server:internal_error"],
|
|
2650
|
+
responseKind: "json"
|
|
2651
|
+
},
|
|
2652
|
+
updateFooterComposition: {
|
|
2653
|
+
path: "/sites/{siteId}/settings/footer-composition",
|
|
2654
|
+
method: "POST",
|
|
2655
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
|
|
2656
|
+
auth: "user",
|
|
2657
|
+
demoMutation: DEMO_MUTATION_ALLOWED,
|
|
2658
|
+
errors: [
|
|
2659
|
+
"validation:invalid_input",
|
|
2660
|
+
"resource:not_found",
|
|
2661
|
+
"server:internal_error"
|
|
2662
|
+
],
|
|
2663
|
+
responseKind: "json"
|
|
2664
|
+
},
|
|
2665
|
+
getPublicProfile: {
|
|
2666
|
+
path: "/sites/{siteId}/settings/public-profile",
|
|
2667
|
+
method: "GET",
|
|
2668
|
+
revalidate: 120,
|
|
2669
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
|
|
2670
|
+
auth: "user",
|
|
2671
|
+
errors: ["resource:not_found", "server:internal_error"],
|
|
2672
|
+
responseKind: "json"
|
|
2673
|
+
},
|
|
2674
|
+
updatePublicProfile: {
|
|
2675
|
+
path: "/sites/{siteId}/settings/public-profile",
|
|
2676
|
+
method: "POST",
|
|
2677
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
|
|
2678
|
+
auth: "user",
|
|
2679
|
+
demoMutation: DEMO_MUTATION_ALLOWED,
|
|
2680
|
+
errors: [
|
|
2681
|
+
"validation:invalid_input",
|
|
2682
|
+
"resource:not_found",
|
|
2683
|
+
"server:internal_error"
|
|
2684
|
+
],
|
|
2685
|
+
responseKind: "json"
|
|
2686
|
+
},
|
|
2592
2687
|
updateSiteLayoutSettings: {
|
|
2593
2688
|
path: "/sites/{siteId}/settings/layout",
|
|
2594
2689
|
method: "POST",
|
|
@@ -3661,6 +3756,76 @@ const API_ENDPOINTS$1 = {
|
|
|
3661
3756
|
responseKind: "json",
|
|
3662
3757
|
errors: ["resource:not_found"]
|
|
3663
3758
|
},
|
|
3759
|
+
listPageSurfaceContentSlots: {
|
|
3760
|
+
path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots",
|
|
3761
|
+
method: "GET",
|
|
3762
|
+
tags: [
|
|
3763
|
+
TAG_TEMPLATES.siteCollection,
|
|
3764
|
+
TAG_TEMPLATES.pageSurfaceById,
|
|
3765
|
+
"surface-slots",
|
|
3766
|
+
"blocks"
|
|
3767
|
+
],
|
|
3768
|
+
auth: "user",
|
|
3769
|
+
responseKind: "json",
|
|
3770
|
+
errors: [
|
|
3771
|
+
"resource:not_found",
|
|
3772
|
+
"resource:conflict",
|
|
3773
|
+
"server:internal_error"
|
|
3774
|
+
]
|
|
3775
|
+
},
|
|
3776
|
+
createPageSurfaceSlotBlock: {
|
|
3777
|
+
path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots/{slotKey}/blocks",
|
|
3778
|
+
method: "POST",
|
|
3779
|
+
tags: [
|
|
3780
|
+
TAG_TEMPLATES.siteCollection,
|
|
3781
|
+
TAG_TEMPLATES.pageSurfaceById,
|
|
3782
|
+
"surface-slot-{slotKey}",
|
|
3783
|
+
"blocks"
|
|
3784
|
+
],
|
|
3785
|
+
auth: "user",
|
|
3786
|
+
responseKind: "json",
|
|
3787
|
+
errors: [
|
|
3788
|
+
"validation:invalid_input",
|
|
3789
|
+
"resource:not_found",
|
|
3790
|
+
"resource:conflict",
|
|
3791
|
+
"server:internal_error"
|
|
3792
|
+
]
|
|
3793
|
+
},
|
|
3794
|
+
reorderPageSurfaceSlotBlocks: {
|
|
3795
|
+
path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots/{slotKey}/blocks/reorder",
|
|
3796
|
+
method: "POST",
|
|
3797
|
+
tags: [
|
|
3798
|
+
TAG_TEMPLATES.siteCollection,
|
|
3799
|
+
TAG_TEMPLATES.pageSurfaceById,
|
|
3800
|
+
"surface-slot-{slotKey}",
|
|
3801
|
+
"blocks"
|
|
3802
|
+
],
|
|
3803
|
+
auth: "user",
|
|
3804
|
+
responseKind: "json",
|
|
3805
|
+
errors: [
|
|
3806
|
+
"validation:invalid_input",
|
|
3807
|
+
"resource:not_found",
|
|
3808
|
+
"resource:conflict",
|
|
3809
|
+
"server:internal_error"
|
|
3810
|
+
]
|
|
3811
|
+
},
|
|
3812
|
+
deletePageSurfaceSlotBlock: {
|
|
3813
|
+
path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/slots/{slotKey}/blocks/{blockId}",
|
|
3814
|
+
method: "DELETE",
|
|
3815
|
+
tags: [
|
|
3816
|
+
TAG_TEMPLATES.siteCollection,
|
|
3817
|
+
TAG_TEMPLATES.pageSurfaceById,
|
|
3818
|
+
"surface-slot-{slotKey}",
|
|
3819
|
+
"blocks"
|
|
3820
|
+
],
|
|
3821
|
+
auth: "user",
|
|
3822
|
+
responseKind: "json",
|
|
3823
|
+
errors: [
|
|
3824
|
+
"resource:not_found",
|
|
3825
|
+
"resource:conflict",
|
|
3826
|
+
"server:internal_error"
|
|
3827
|
+
]
|
|
3828
|
+
},
|
|
3664
3829
|
createBlock: {
|
|
3665
3830
|
path: "/sites/{siteId}/pages/{pageId}/blocks",
|
|
3666
3831
|
method: "POST",
|
|
@@ -6144,6 +6309,41 @@ const API_ENDPOINTS$1 = {
|
|
|
6144
6309
|
auth: "service",
|
|
6145
6310
|
responseKind: "json"
|
|
6146
6311
|
},
|
|
6312
|
+
sdkCatalogTheme: {
|
|
6313
|
+
path: "/sdk/{siteId}/catalog/theme",
|
|
6314
|
+
method: "GET",
|
|
6315
|
+
errors: ["server:internal_error"],
|
|
6316
|
+
auth: "service",
|
|
6317
|
+
responseKind: "json"
|
|
6318
|
+
},
|
|
6319
|
+
sdkCatalogBlocks: {
|
|
6320
|
+
path: "/sdk/{siteId}/catalog/blocks",
|
|
6321
|
+
method: "GET",
|
|
6322
|
+
errors: ["server:internal_error"],
|
|
6323
|
+
auth: "service",
|
|
6324
|
+
responseKind: "json"
|
|
6325
|
+
},
|
|
6326
|
+
sdkCatalogContentTypes: {
|
|
6327
|
+
path: "/sdk/{siteId}/catalog/content-types",
|
|
6328
|
+
method: "GET",
|
|
6329
|
+
errors: ["server:internal_error"],
|
|
6330
|
+
auth: "service",
|
|
6331
|
+
responseKind: "json"
|
|
6332
|
+
},
|
|
6333
|
+
sdkCapabilities: {
|
|
6334
|
+
path: "/sdk/{siteId}/capabilities",
|
|
6335
|
+
method: "GET",
|
|
6336
|
+
errors: ["server:internal_error"],
|
|
6337
|
+
auth: "service",
|
|
6338
|
+
responseKind: "json"
|
|
6339
|
+
},
|
|
6340
|
+
sdkListDemoContent: {
|
|
6341
|
+
path: "/sdk/{siteId}/demo-content",
|
|
6342
|
+
method: "GET",
|
|
6343
|
+
errors: ["server:internal_error"],
|
|
6344
|
+
auth: "service",
|
|
6345
|
+
responseKind: "json"
|
|
6346
|
+
},
|
|
6147
6347
|
sdkPullPages: {
|
|
6148
6348
|
path: "/sdk/{siteId}/pull/pages",
|
|
6149
6349
|
method: "GET",
|
|
@@ -6273,6 +6473,19 @@ const API_ENDPOINTS$1 = {
|
|
|
6273
6473
|
auth: "service",
|
|
6274
6474
|
responseKind: "json"
|
|
6275
6475
|
},
|
|
6476
|
+
sdkPatchPageBlock: {
|
|
6477
|
+
path: "/sdk/{siteId}/pages/{identifier}/blocks/{blockIdentifier}",
|
|
6478
|
+
method: "PATCH",
|
|
6479
|
+
errors: [
|
|
6480
|
+
"validation:invalid_input",
|
|
6481
|
+
"resource:not_found",
|
|
6482
|
+
"resource:conflict",
|
|
6483
|
+
"billing:plan_limit_exceeded",
|
|
6484
|
+
"server:internal_error"
|
|
6485
|
+
],
|
|
6486
|
+
auth: "service",
|
|
6487
|
+
responseKind: "json"
|
|
6488
|
+
},
|
|
6276
6489
|
sdkReorderPageBlocks: {
|
|
6277
6490
|
path: "/sdk/{siteId}/pages/{identifier}/blocks/reorder",
|
|
6278
6491
|
method: "POST",
|
|
@@ -7548,7 +7761,7 @@ var SimpleCache = class {
|
|
|
7548
7761
|
* 1. This constant
|
|
7549
7762
|
* 2. The "version" field in package.json
|
|
7550
7763
|
*/
|
|
7551
|
-
const SDK_VERSION = "0.
|
|
7764
|
+
const SDK_VERSION = "0.109.0";
|
|
7552
7765
|
//#endregion
|
|
7553
7766
|
//#region src/client/error.ts
|
|
7554
7767
|
let _Symbol$for;
|
|
@@ -111,8 +111,11 @@ function getPrimaryNavigation(navigation) {
|
|
|
111
111
|
* ```
|
|
112
112
|
*/
|
|
113
113
|
function getFooterNavigation(navigation) {
|
|
114
|
+
return getFooterNavigationByRole(navigation, "main");
|
|
115
|
+
}
|
|
116
|
+
function getFooterNavigationByRole(navigation, role) {
|
|
114
117
|
if (!navigation || navigation.length === 0) return null;
|
|
115
|
-
const footerMenus = navigation.filter((menu) => menu.isFooter);
|
|
118
|
+
const footerMenus = navigation.filter((menu) => menu.footerRole === role || role === "main" && menu.footerRole == null && menu.isFooter);
|
|
116
119
|
if (footerMenus.length > 1) console.warn(`[riverbank/sdk] Multiple footer navigation menus detected (${footerMenus.length}); using first flagged menu by input order.`);
|
|
117
120
|
return footerMenus[0] ?? null;
|
|
118
121
|
}
|
|
@@ -552,7 +555,10 @@ function buildMenu(navigation, routes, options) {
|
|
|
552
555
|
* ```
|
|
553
556
|
*/
|
|
554
557
|
function buildFooterMenu(navigation, routes, options) {
|
|
555
|
-
|
|
558
|
+
return buildFooterMenuForRole(navigation, routes, "main", options);
|
|
559
|
+
}
|
|
560
|
+
function buildFooterMenuForRole(navigation, routes, role, options) {
|
|
561
|
+
const menu = getFooterNavigationByRole(navigation, role);
|
|
556
562
|
if (!menu) return {
|
|
557
563
|
items: [],
|
|
558
564
|
ctaItem: null,
|
|
@@ -656,4 +662,4 @@ function buildLogo(logo, fallbackAlt) {
|
|
|
656
662
|
return result;
|
|
657
663
|
}
|
|
658
664
|
//#endregion
|
|
659
|
-
export { buildFooterMenu, buildLogo, buildLogoViewModel, buildMenu, buildMenuViewModel, getFooterNavigation, getNavItemsBySlug, getNavigationBySlug, getPrimaryNavItems, getPrimaryNavigation, isNavDropdown, isNavLink, resolveNavigationLinkHref, transformToNavItems };
|
|
665
|
+
export { buildFooterMenu, buildFooterMenuForRole, buildLogo, buildLogoViewModel, buildMenu, buildMenuViewModel, getFooterNavigation, getFooterNavigationByRole, getNavItemsBySlug, getNavigationBySlug, getPrimaryNavItems, getPrimaryNavigation, isNavDropdown, isNavLink, resolveNavigationLinkHref, transformToNavItems };
|