@riverbankcms/sdk 0.108.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-BBT-kZAM.mjs → PreviewEditorSidebar-DWqwfy3_.mjs} +7 -22
- package/dist/{PreviewEditorUI-D69xNKT2.mjs → PreviewEditorUI-B7OL4sfR.mjs} +3 -3
- package/dist/{PreviewQueryProvider-RRu7wyQ5.mjs → PreviewQueryProvider-D0y2l8JN.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-CuDjXH6o.mjs → SdkPreviewModeRuntime-D8Gt9Gbe.mjs} +212 -153
- package/dist/{SiteChromeCustomizeContext-BQUY2dEk.mjs → SiteChromeCustomizeContext-DUpalEdL.mjs} +1919 -1032
- package/dist/_dts/ai/src/contracts/proposals.d.ts +11244 -10741
- 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 +2 -17
- package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +6 -6
- package/dist/_dts/api/src/common/envelope.d.ts +7 -0
- 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 +35 -0
- package/dist/_dts/api/src/index.d.ts +2 -2
- package/dist/_dts/api/src/participantMessaging.d.ts +18 -12
- package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +1 -0
- package/dist/_dts/api/src/sdkContracts.d.ts +247 -1
- package/dist/_dts/api/src/siteInfrastructure.d.ts +13 -0
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +1 -5
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +29 -1
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +33 -27
- 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/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-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/manifest/schema.d.ts +31 -0
- 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 +1 -1
- 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/sentinels.d.ts +36 -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/db/src/generated/supabase/database.types.d.ts +3071 -3157
- 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/preview-next/src/client/blocks/BlockToolbar.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +1 -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/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/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 +1 -1
- package/dist/_dts/sdk/src/client/management/types.d.ts +43 -19
- package/dist/_dts/sdk/src/date-time/index.d.ts +68 -0
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +2 -0
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/site-commands/src/commands.d.ts +893 -823
- package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -1
- 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/types.d.ts +44 -32
- 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 +101 -83
- package/dist/_dts/theme-core/src/cards/types.d.ts +16 -16
- 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/mock-themes/all.d.ts +87 -126
- package/dist/_dts/theme-core/src/mock-themes/modern-minimal.d.ts +1 -1
- package/dist/_dts/theme-core/src/navigation/types.d.ts +2 -2
- 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 +112 -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/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/styleTags.d.ts +2 -2
- package/dist/cli/index.mjs +67956 -66745
- 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-D6TOf6Hi.mjs → DiscountCodeDisclosure-DU1ygxU2.mjs} +1 -1
- package/dist/client/{EventCombined.client-Dao3zxRk.mjs → EventCombined.client-DB5zagCo.mjs} +3 -3
- package/dist/client/{EventListing.client-B2NNt4y1.mjs → EventListing.client-CTX9JHBL.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-BhwFo16w.mjs → LeafletStaticMap-BYImhgiB.mjs} +1 -1
- package/dist/client/{MagicLinkForm-BWnB7cMR.mjs → MagicLinkForm-CRkw_M3l.mjs} +2 -2
- package/dist/client/{StepIndicator-TzRiQ0BY.mjs → StepIndicator-BnmVBJJh.mjs} +2 -2
- package/dist/client/{accordion-BPy-AJ4_.mjs → accordion-CeGreumd.mjs} +1 -1
- package/dist/client/{bookingForm-BL4PGZds.mjs → bookingForm-CSzFNrpN.mjs} +6 -6
- package/dist/client/bookings.mjs +512 -252
- package/dist/client/{buttons-EBjyslaX.mjs → buttons-DoFV7KDL.mjs} +493 -230
- package/dist/client/{carousel-C2b7Cn9-.mjs → carousel-B2jDtogf.mjs} +1 -1
- package/dist/client/{cart-BQcbXIVD.mjs → cart-D-jZ-vaY.mjs} +3 -3
- package/dist/client/{checkout-DEmpGRJu.mjs → checkout-Dza-LA7N.mjs} +3 -3
- package/dist/client/client.mjs +1673 -785
- package/dist/client/{colorStyles-jZS6KfkP.mjs → colorStyles-CrgzoXsm.mjs} +1 -30
- package/dist/client/{courseRegistration-BqRZPmsq.mjs → courseRegistration-TYkNychb.mjs} +7 -7
- package/dist/client/{eventCalendar-B8N_tSl5.mjs → eventCalendar-BI_90SsT.mjs} +5 -5
- package/dist/client/{eventCombined-Gjn6gtq7.mjs → eventCombined-mNrpryE9.mjs} +2 -2
- package/dist/client/{eventDetails-M-VCxA-r.mjs → eventDetails-D4GVlCIY.mjs} +3 -3
- package/dist/client/{eventListing-DR19hqYi.mjs → eventListing-YhKN018y.mjs} +2 -2
- package/dist/client/{eventRegistration-BR02a0k3.mjs → eventRegistration-CdHGtilr.mjs} +7 -7
- package/dist/client/foregroundContract-xICPq59x.mjs +31 -0
- package/dist/client/{form-LY2xIbwg.mjs → form-AcAL45rA.mjs} +2 -2
- package/dist/client/{headerSection-CYwwXJfh.mjs → headerSection-uEC52ueD.mjs} +3 -3
- package/dist/client/hooks.mjs +890 -497
- package/dist/client/{locationMap-DWnBXrFq.mjs → locationMap-_wJDSUYe.mjs} +3 -3
- package/dist/client/{media-DHtSxS5V.mjs → media-BK0O3b-U.mjs} +3 -2
- package/dist/client/{newsletterForm-D9s-fQ2P.mjs → newsletterForm-DrArsb2B.mjs} +2 -2
- package/dist/client/{pricing-DDq80oYc.mjs → pricing-BSYVghwo.mjs} +1 -1
- package/dist/client/{productDetail-B0SbWd45.mjs → productDetail-Dyk90sMs.mjs} +3 -3
- package/dist/client/{productList-PwYlZn0y.mjs → productList-BCKThwAI.mjs} +3 -3
- package/dist/client/{propsDecoder-BRWBiH7i.mjs → propsDecoder-CkXxkdSR.mjs} +63 -24
- package/dist/client/rendering/client.mjs +1034 -486
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +1832 -760
- package/dist/client/{shop-CMwZPYME.mjs → shop-DeltVH10.mjs} +6 -6
- package/dist/client/{shop-commerce-BuxsFate.mjs → shop-commerce-BD9Jsm2Z.mjs} +6 -6
- package/dist/client/{shop-commerce-store-boYlEJ91.mjs → shop-commerce-store-CmXD6FDS.mjs} +1 -1
- package/dist/client/{shopShared-D2naaOes.mjs → shopShared-B8v-lH_F.mjs} +2 -2
- package/dist/client/{useDiscountCodeUi-D9RHpVoj.mjs → useDiscountCodeUi-DbWJN8ld.mjs} +1 -1
- package/dist/client/{useEventFilters-igGiK1re.mjs → useEventFilters-EJIMUnqT.mjs} +46 -69
- package/dist/client/{usePolling-CI7MbsFB.mjs → usePolling-Cmh14fc7.mjs} +2 -2
- package/dist/preview-next/before-render.mjs +35 -0
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/middleware.mjs +35 -0
- package/dist/{previewAuthStore-a_cBD28m.mjs → previewAuthStore-CTO7CRPk.mjs} +35 -0
- package/dist/{sdk-runtime-MBzD-GmP.mjs → sdk-runtime-Dou0GAav.mjs} +2 -2
- package/dist/{separator-5ahRBC85.mjs → separator-CI5wZNXT.mjs} +1 -1
- package/dist/server/components.mjs +1832 -784
- package/dist/server/config-validation.mjs +890 -497
- package/dist/server/config.mjs +890 -497
- package/dist/server/data.mjs +890 -497
- package/dist/server/date-time.mjs +386 -0
- package/dist/server/index.mjs +36 -1
- package/dist/server/next.mjs +1868 -785
- package/dist/server/page-converter.mjs +849 -285
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +1553 -718
- package/dist/server/rendering.mjs +1832 -784
- package/dist/server/routing.mjs +933 -522
- package/dist/server/server.mjs +929 -501
- package/dist/server/theme-bridge.mjs +1408 -392
- package/dist/server/theme.mjs +471 -228
- package/dist/styles/index.css +5 -0
- 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
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { t as defineIslandPropsDecoder } from "./propsDecoder-
|
|
2
|
-
import { a as textColorStyle, n as borderColorStyle, r as mergeStyles, t as backgroundColorStyle } from "./colorStyles-
|
|
1
|
+
import { t as defineIslandPropsDecoder } from "./propsDecoder-CkXxkdSR.mjs";
|
|
2
|
+
import { a as textColorStyle, n as borderColorStyle, r as mergeStyles, t as backgroundColorStyle } from "./colorStyles-CrgzoXsm.mjs";
|
|
3
3
|
import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
|
|
4
|
-
import { t as LeafletStaticMap } from "./LeafletStaticMap-
|
|
4
|
+
import { t as LeafletStaticMap } from "./LeafletStaticMap-BYImhgiB.mjs";
|
|
5
5
|
import "react";
|
|
6
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
7
|
//#region ../core/src/location.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as clsx } from "./clsx-DgIEfj3H.mjs";
|
|
2
2
|
import { d as unsafeAsMediaAssetId, g as ok$1, h as err, i as resolveMediaTransformForAspect, m as unsafeAsStoragePath, n as isExplicitRectCrop, p as unsafeAsStorageBucketName, r as parseAspectRatioValue } from "./colorTokenParts-CMugwvX_.mjs";
|
|
3
|
-
import { a as textColorStyle, r as mergeStyles, t as backgroundColorStyle } from "./colorStyles-
|
|
3
|
+
import { a as textColorStyle, r as mergeStyles, t as backgroundColorStyle } from "./colorStyles-CrgzoXsm.mjs";
|
|
4
4
|
import "react";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region ../media-core/src/fileSafety.ts
|
|
@@ -54,7 +54,8 @@ function validateRelativeStoragePath(value) {
|
|
|
54
54
|
if (value.startsWith("sites/")) return fail({ tag: "SITE_SCOPED_PATH" });
|
|
55
55
|
if (value.startsWith("/")) return fail({ tag: "LEADING_SLASH" });
|
|
56
56
|
if (value.includes("//")) return fail({ tag: "DOUBLE_SLASH" });
|
|
57
|
-
if (value.
|
|
57
|
+
if (value.includes("%")) return fail({ tag: "PERCENT_ENCODING" });
|
|
58
|
+
if (value.split("/").some((segment) => segment === "." || segment === "..")) return fail({ tag: "TRAVERSAL" });
|
|
58
59
|
return ok(value);
|
|
59
60
|
}
|
|
60
61
|
function brandRelativeStoragePath(value) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as clsx } from "./clsx-DgIEfj3H.mjs";
|
|
3
|
-
import { _t as assertNever, t as defineIslandPropsDecoder } from "./propsDecoder-
|
|
3
|
+
import { _t as assertNever, t as defineIslandPropsDecoder } from "./propsDecoder-CkXxkdSR.mjs";
|
|
4
4
|
import { n as useBlockApi, t as BlockApiProvider } from "./context-BGZNlGXB.mjs";
|
|
5
5
|
import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
|
|
6
|
-
import {
|
|
6
|
+
import { r as themeButtonClassName } from "./buttons-DoFV7KDL.mjs";
|
|
7
7
|
import { t as FeedbackMessage } from "./FeedbackMessage-ByMrs3cr.mjs";
|
|
8
8
|
import { n as getFieldValidationControlProps, t as FieldValidationMessage } from "./FieldValidationMessage-AYanWFb-.mjs";
|
|
9
9
|
import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { It as formatBookingPriceDisplay } from "./propsDecoder-
|
|
1
|
+
import { It as formatBookingPriceDisplay } from "./propsDecoder-CkXxkdSR.mjs";
|
|
2
2
|
//#region ../core/src/planner.ts
|
|
3
3
|
/** Default clock for production callers that do not inject time explicitly. */
|
|
4
4
|
const systemPlanningClock = { now: () => Date.now() };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as defineIslandPropsDecoder } from "./propsDecoder-
|
|
2
|
-
import { r as ProductDetailController } from "./shop-commerce-
|
|
3
|
-
import { t as mountShopBlockIsland } from "./shopShared-
|
|
1
|
+
import { t as defineIslandPropsDecoder } from "./propsDecoder-CkXxkdSR.mjs";
|
|
2
|
+
import { r as ProductDetailController } from "./shop-commerce-BD9Jsm2Z.mjs";
|
|
3
|
+
import { t as mountShopBlockIsland } from "./shopShared-B8v-lH_F.mjs";
|
|
4
4
|
import "react";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region ../blocks/src/system/runtime/nodes/product-detail.client.tsx
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as defineIslandPropsDecoder } from "./propsDecoder-
|
|
2
|
-
import { i as ProductListController } from "./shop-commerce-
|
|
3
|
-
import { t as mountShopBlockIsland } from "./shopShared-
|
|
1
|
+
import { t as defineIslandPropsDecoder } from "./propsDecoder-CkXxkdSR.mjs";
|
|
2
|
+
import { i as ProductListController } from "./shop-commerce-BD9Jsm2Z.mjs";
|
|
3
|
+
import { t as mountShopBlockIsland } from "./shopShared-B8v-lH_F.mjs";
|
|
4
4
|
import "react";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region ../blocks/src/system/runtime/nodes/product-list.client.tsx
|
|
@@ -201,19 +201,29 @@ const DEFAULT_BOOKING_DATE_TIME_FORMAT = {
|
|
|
201
201
|
minute: "2-digit"
|
|
202
202
|
};
|
|
203
203
|
const LOCAL_DATE_PATTERN = /^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})$/u;
|
|
204
|
+
const DATE_TIME_FORMATTER_CACHE_LIMIT = 100;
|
|
205
|
+
const dateTimeFormatterCache = /* @__PURE__ */ new Map();
|
|
206
|
+
const timeZoneValidityCache = /* @__PURE__ */ new Map();
|
|
204
207
|
function isValidTimeZone$1(timeZone) {
|
|
208
|
+
const cached = timeZoneValidityCache.get(timeZone);
|
|
209
|
+
if (cached !== void 0) return cached;
|
|
210
|
+
let isValid;
|
|
205
211
|
try {
|
|
206
212
|
new Intl.DateTimeFormat(DEFAULT_LOCALE, { timeZone }).format(/* @__PURE__ */ new Date());
|
|
207
|
-
|
|
213
|
+
isValid = true;
|
|
208
214
|
} catch {
|
|
209
|
-
|
|
215
|
+
isValid = false;
|
|
210
216
|
}
|
|
217
|
+
if (timeZoneValidityCache.size >= DATE_TIME_FORMATTER_CACHE_LIMIT) timeZoneValidityCache.clear();
|
|
218
|
+
timeZoneValidityCache.set(timeZone, isValid);
|
|
219
|
+
return isValid;
|
|
211
220
|
}
|
|
212
221
|
function getSafeTimeZone(timeZone) {
|
|
213
222
|
const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
|
|
214
223
|
return normalized.length > 0 && isValidTimeZone$1(normalized) ? normalized : FALLBACK_TIMEZONE;
|
|
215
224
|
}
|
|
216
225
|
function parseStrictBookingTimeZone(timeZone) {
|
|
226
|
+
if (typeof timeZone !== "string") return null;
|
|
217
227
|
const normalized = timeZone.trim();
|
|
218
228
|
if (normalized.length === 0 || !isValidTimeZone$1(normalized)) return null;
|
|
219
229
|
return normalized;
|
|
@@ -226,10 +236,19 @@ function formatParseError(error) {
|
|
|
226
236
|
}
|
|
227
237
|
}
|
|
228
238
|
function formatToPartsLookup(date, locale, timeZone, format) {
|
|
229
|
-
return new Map(
|
|
239
|
+
return new Map(getCachedDateTimeFormatter(locale, timeZone, format).formatToParts(date).map((part) => [part.type, part.value]));
|
|
240
|
+
}
|
|
241
|
+
function getCachedDateTimeFormatter(locale, timeZone, format) {
|
|
242
|
+
const key = `${locale}\u0000${timeZone}\u0000${JSON.stringify(Object.entries(format).sort(([left], [right]) => left.localeCompare(right)))}`;
|
|
243
|
+
const cached = dateTimeFormatterCache.get(key);
|
|
244
|
+
if (cached !== void 0) return cached;
|
|
245
|
+
const formatter = new Intl.DateTimeFormat(locale, {
|
|
230
246
|
...format,
|
|
231
247
|
timeZone
|
|
232
|
-
})
|
|
248
|
+
});
|
|
249
|
+
if (dateTimeFormatterCache.size >= DATE_TIME_FORMATTER_CACHE_LIMIT) dateTimeFormatterCache.clear();
|
|
250
|
+
dateTimeFormatterCache.set(key, formatter);
|
|
251
|
+
return formatter;
|
|
233
252
|
}
|
|
234
253
|
function getZonedDateTimeParts(date, timeZone) {
|
|
235
254
|
const parts = formatToPartsLookup(date, "en-GB", timeZone, {
|
|
@@ -282,23 +301,9 @@ function toUtcIsoDateTimeString(value) {
|
|
|
282
301
|
return parsed.value;
|
|
283
302
|
}
|
|
284
303
|
function parseScheduledBookingDateTime(input) {
|
|
304
|
+
let startsAt;
|
|
285
305
|
try {
|
|
286
|
-
|
|
287
|
-
const timeZone = parseStrictBookingTimeZone(input.timeZone);
|
|
288
|
-
if (timeZone === null) return {
|
|
289
|
-
ok: false,
|
|
290
|
-
field: "timeZone",
|
|
291
|
-
reason: "invalid_time_zone",
|
|
292
|
-
value: input.timeZone
|
|
293
|
-
};
|
|
294
|
-
return {
|
|
295
|
-
ok: true,
|
|
296
|
-
value: {
|
|
297
|
-
startsAt,
|
|
298
|
-
timeZone,
|
|
299
|
-
locale: input.locale
|
|
300
|
-
}
|
|
301
|
-
};
|
|
306
|
+
startsAt = toUtcIsoDateTimeString(input.startsAt);
|
|
302
307
|
} catch {
|
|
303
308
|
return {
|
|
304
309
|
ok: false,
|
|
@@ -307,6 +312,21 @@ function parseScheduledBookingDateTime(input) {
|
|
|
307
312
|
value: input.startsAt
|
|
308
313
|
};
|
|
309
314
|
}
|
|
315
|
+
const timeZone = parseStrictBookingTimeZone(input.timeZone);
|
|
316
|
+
if (timeZone === null) return {
|
|
317
|
+
ok: false,
|
|
318
|
+
field: "timeZone",
|
|
319
|
+
reason: "invalid_time_zone",
|
|
320
|
+
value: typeof input.timeZone === "string" ? input.timeZone : ""
|
|
321
|
+
};
|
|
322
|
+
return {
|
|
323
|
+
ok: true,
|
|
324
|
+
value: {
|
|
325
|
+
startsAt,
|
|
326
|
+
timeZone,
|
|
327
|
+
locale: input.locale
|
|
328
|
+
}
|
|
329
|
+
};
|
|
310
330
|
}
|
|
311
331
|
function parseScheduledBookingDateRange(input) {
|
|
312
332
|
const start = parseScheduledBookingDateTime(input);
|
|
@@ -345,10 +365,7 @@ function toScheduledBookingDateRange(input) {
|
|
|
345
365
|
function formatBookingInstant(isoString, options) {
|
|
346
366
|
const date = new Date(isoString);
|
|
347
367
|
if (Number.isNaN(date.getTime())) return isoString;
|
|
348
|
-
return
|
|
349
|
-
...options.format,
|
|
350
|
-
timeZone: getSafeTimeZone(options.timeZone)
|
|
351
|
-
}).format(date);
|
|
368
|
+
return getCachedDateTimeFormatter(options.locale ?? DEFAULT_LOCALE, getSafeTimeZone(options.timeZone), options.format).format(date);
|
|
352
369
|
}
|
|
353
370
|
function formatBookingDate(input, format = {
|
|
354
371
|
weekday: "long",
|
|
@@ -4450,6 +4467,20 @@ const blockCategoryEnum = z$1.enum([
|
|
|
4450
4467
|
"layout",
|
|
4451
4468
|
"interactive"
|
|
4452
4469
|
]);
|
|
4470
|
+
const blockContentSourceSchema = z$1.object({
|
|
4471
|
+
kind: z$1.enum([
|
|
4472
|
+
"inline",
|
|
4473
|
+
"entries",
|
|
4474
|
+
"mixed"
|
|
4475
|
+
]),
|
|
4476
|
+
contentType: z$1.string().min(1).optional()
|
|
4477
|
+
}).superRefine((value, ctx) => {
|
|
4478
|
+
if (value.kind === "inline" && value.contentType) ctx.addIssue({
|
|
4479
|
+
code: z$1.ZodIssueCode.custom,
|
|
4480
|
+
path: ["contentType"],
|
|
4481
|
+
message: "contentType is not allowed when contentSource.kind is \"inline\""
|
|
4482
|
+
});
|
|
4483
|
+
});
|
|
4453
4484
|
z$1.object({
|
|
4454
4485
|
name: z$1.string().min(1),
|
|
4455
4486
|
version: z$1.string().min(1),
|
|
@@ -4480,6 +4511,12 @@ z$1.object({
|
|
|
4480
4511
|
}).optional()).optional(),
|
|
4481
4512
|
category: blockCategoryEnum.optional(),
|
|
4482
4513
|
contentTypes: z$1.array(z$1.string()).optional(),
|
|
4514
|
+
/**
|
|
4515
|
+
* Explicit content-source classification (inline / entries / mixed). Optional at the
|
|
4516
|
+
* schema level for backward compatibility with SDK-defined custom blocks, but every
|
|
4517
|
+
* registered SYSTEM block must declare it (enforced by a registry-wide test).
|
|
4518
|
+
*/
|
|
4519
|
+
contentSource: blockContentSourceSchema.optional(),
|
|
4483
4520
|
tags: z$1.array(z$1.string()).optional(),
|
|
4484
4521
|
icon: z$1.string().optional()
|
|
4485
4522
|
});
|
|
@@ -5515,6 +5552,7 @@ function createBlockManifest(config) {
|
|
|
5515
5552
|
previewCustomize: config.previewCustomize,
|
|
5516
5553
|
category: config.category,
|
|
5517
5554
|
contentTypes: config.contentTypes ? [...config.contentTypes] : void 0,
|
|
5555
|
+
contentSource: config.contentSource,
|
|
5518
5556
|
tags: config.tags ? [...config.tags] : [],
|
|
5519
5557
|
icon: config.icon ?? "Box",
|
|
5520
5558
|
layout,
|
|
@@ -5551,6 +5589,7 @@ createBlockManifest({
|
|
|
5551
5589
|
titleSource: "heading",
|
|
5552
5590
|
description: "Date/time, venue, map, and other dates for an event",
|
|
5553
5591
|
category: "content",
|
|
5592
|
+
contentSource: { kind: "entries" },
|
|
5554
5593
|
tags: [
|
|
5555
5594
|
"events",
|
|
5556
5595
|
"venue",
|