@riverbankcms/sdk 0.152.0 → 0.153.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/{EventEmbeddedCheckoutStep-DVQXWFm6.mjs → EventEmbeddedCheckoutStep-veN-QiAE.mjs} +1 -1
  3. package/dist/{PreviewEditorSidebar-Dr4NJi3Q.mjs → PreviewEditorSidebar-jI_4DTZY.mjs} +4 -4
  4. package/dist/{PreviewEditorUI-DSZXQbyh.mjs → PreviewEditorUI-ORkVZhfu.mjs} +3 -3
  5. package/dist/{SdkPreviewModeRuntime-Dl4GyMc3.mjs → SdkPreviewModeRuntime-DaNqevI1.mjs} +221 -115
  6. package/dist/{SiteChromeCustomizeContext-DgBe-FlM.mjs → SiteChromeCustomizeContext-CgNuBHC0.mjs} +1798 -2024
  7. package/dist/{ThemedButton-B8ViBnLK.mjs → ThemedButton-X2UxhW6F.mjs} +213 -38
  8. package/dist/_dts/ai/src/contracts/proposals.d.ts +52 -52
  9. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +2357 -7859
  10. package/dist/_dts/api/src/communications.d.ts +19 -5
  11. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  12. package/dist/_dts/api/src/sdkThemeWire.d.ts +186 -1434
  13. package/dist/_dts/api/src/shared-contracts.d.ts +10 -0
  14. package/dist/_dts/api/src/siteInfrastructure.d.ts +2 -1
  15. package/dist/_dts/api/src/teamMembers.d.ts +2 -27
  16. package/dist/_dts/block-form/src/widgets/RepeaterField/components/layoutGridDomain.d.ts +3 -13
  17. package/dist/_dts/blocks/src/contracts/index.d.ts +1 -0
  18. package/dist/_dts/blocks/src/index.d.ts +1 -0
  19. package/dist/_dts/blocks/src/lib/media.d.ts +1 -0
  20. package/dist/_dts/blocks/src/lib/picsum.d.ts +2 -2
  21. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -1
  22. package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +1 -1
  23. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +196 -804
  24. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +2 -2
  25. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -1
  26. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +45 -45
  27. package/dist/_dts/blocks/src/system/blocks/shared/teamMembers.d.ts +4 -7
  28. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +2 -2
  29. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +6 -6
  30. package/dist/_dts/blocks/src/system/fields/backgroundContent.d.ts +377 -1
  31. package/dist/_dts/blocks/src/system/helpers/backgroundMedia.d.ts +6 -2
  32. package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +3 -3
  33. package/dist/_dts/blocks/src/system/layout/repeaterGrid.d.ts +12 -5
  34. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +3 -3
  35. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +24 -24
  36. package/dist/_dts/blocks/src/system/manifest/validation.d.ts +2 -0
  37. package/dist/_dts/blocks/src/system/node/fragments/lookSlot.d.ts +1 -1
  38. package/dist/_dts/blocks/src/system/runtime/hooks/useBookingFlowController.d.ts +1 -1
  39. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +2 -0
  40. package/dist/_dts/blocks/src/system/runtime/lookSurfaces.d.ts +2 -2
  41. package/dist/_dts/blocks/src/system/runtime/nodes/ImageResolveContext.d.ts +1 -1
  42. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +50 -202
  43. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +28 -1
  44. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/lookPresentation.d.ts +2 -2
  45. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/presentation.d.ts +1 -1
  46. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CardListItem.d.ts +1 -1
  47. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +276 -884
  48. package/dist/_dts/blocks/src/system/runtime/nodes/file-download.d.ts +3 -2
  49. package/dist/_dts/blocks/src/system/runtime/nodes/media.d.ts +22 -90
  50. package/dist/_dts/blocks/src/system/runtime/nodes/mediaContext.d.ts +69 -0
  51. package/dist/_dts/blocks/src/system/transforms/registry/index.d.ts +1 -0
  52. package/dist/_dts/blocks/src/system/transforms/registry/links.d.ts +3 -3
  53. package/dist/_dts/content-model/src/content-types/schema.d.ts +3 -3
  54. package/dist/_dts/core/src/mailing-list-runtime.d.ts +2 -2
  55. package/dist/_dts/core/src/mailing-list-setup-parser.d.ts +9 -1
  56. package/dist/_dts/core/src/mailing-list-setup.d.ts +9 -1
  57. package/dist/_dts/core/src/mailing-list-submission.d.ts +1 -1
  58. package/dist/_dts/core/src/mailing-list-targeting.d.ts +9 -1
  59. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +55 -4
  60. package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
  61. package/dist/_dts/editor-blocks/src/media/MediaField.d.ts +2 -2
  62. package/dist/_dts/editor-blocks/src/media/admitEditorMediaField.d.ts +4 -0
  63. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/targetingState.d.ts +2 -2
  64. package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +6 -0
  65. package/dist/_dts/media-core/src/contentMediaAudit.d.ts +3 -2
  66. package/dist/_dts/media-core/src/index.d.ts +4 -0
  67. package/dist/_dts/media-core/src/media.d.ts +406 -0
  68. package/dist/_dts/media-core/src/mediaIdentifierSchema.d.ts +3 -0
  69. package/dist/_dts/media-core/src/mediaKinds.d.ts +2 -0
  70. package/dist/_dts/media-core/src/mediaUsageProjection.d.ts +13 -1
  71. package/dist/_dts/media-core/src/mediaWriteNormalizer.d.ts +2 -6
  72. package/dist/_dts/media-core/src/portableMediaReferences.d.ts +8 -21
  73. package/dist/_dts/media-core/src/renderableMediaAsset.d.ts +28 -14
  74. package/dist/_dts/media-core/src/renderableMediaAssetAdmission.d.ts +15 -0
  75. package/dist/_dts/media-editor/src/CropDialog.d.ts +6 -3
  76. package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -1
  77. package/dist/_dts/media-editor/src/MediaPreview.d.ts +3 -3
  78. package/dist/_dts/media-editor/src/cropEditorSource.d.ts +5 -7
  79. package/dist/_dts/media-editor/src/editorMediaState.d.ts +29 -0
  80. package/dist/_dts/media-editor/src/mediaSelection.d.ts +1 -2
  81. package/dist/_dts/media-editor/src/runtimeMediaAssetState.d.ts +4 -5
  82. package/dist/_dts/media-editor/src/types.d.ts +1 -1
  83. package/dist/_dts/media-editor/src/utils.d.ts +0 -1
  84. package/dist/_dts/media-react/src/components/cropChangePolicy.d.ts +4 -1
  85. package/dist/_dts/media-react/src/components/cropGeometry.d.ts +1 -0
  86. package/dist/_dts/media-react/src/components/useImageCropperController.d.ts +1 -0
  87. package/dist/_dts/preview-next/src/client/blocks/BlockBackgroundChooser.d.ts +2 -1
  88. package/dist/_dts/preview-next/src/client/blocks/previewCustomizeSelectedMedia.d.ts +11 -12
  89. package/dist/_dts/sdk/src/contracts/content.d.ts +2 -45
  90. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  91. package/dist/_dts/sdk/src/contracts/rendering.d.ts +3 -3
  92. package/dist/_dts/sdk/src/index.d.ts +1 -0
  93. package/dist/_dts/sdk/src/rendering/image.d.ts +5 -5
  94. package/dist/_dts/sdk/src/rendering/index.d.ts +2 -1
  95. package/dist/_dts/sdk/src/rendering/link.d.ts +3 -7
  96. package/dist/_dts/sdk/src/rendering/mediaAssets.d.ts +2 -4
  97. package/dist/_dts/sdk/src/version.d.ts +1 -1
  98. package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -1
  99. package/dist/_dts/theme-core/src/boxBackgroundSchema.d.ts +397 -26
  100. package/dist/_dts/theme-core/src/buttons/types.d.ts +21 -21
  101. package/dist/_dts/theme-core/src/cards/types.d.ts +34 -34
  102. package/dist/_dts/theme-core/src/inputs/types.d.ts +3 -3
  103. package/dist/_dts/theme-core/src/lib/media.d.ts +2 -616
  104. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +261 -2619
  105. package/dist/_dts/theme-core/src/palette/curated/types.d.ts +1 -1
  106. package/dist/_dts/theme-core/src/schema.d.ts +548 -3187
  107. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  108. package/dist/_dts/theme-core/src/site-styles/runtimeBackgroundResolution.d.ts +9 -9
  109. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
  110. package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +1 -1
  111. package/dist/_dts/theme-core/src/styles/skinTokens.d.ts +2 -2
  112. package/dist/_dts/theme-core/src/typography/schema.d.ts +2 -2
  113. package/dist/client/{BookingMailingListNote-CBuMKN0w.mjs → BookingMailingListNote-DrchYW1m.mjs} +2 -2
  114. package/dist/client/{CardListItem-Dc9XTXhB.mjs → CardListItem-CC_GVmF6.mjs} +5 -4
  115. package/dist/client/{CheckboxChoice-CIqx_o0E.mjs → CheckboxChoice-Dq30m3DO.mjs} +1 -1
  116. package/dist/client/{DemoBookingPortalAccess-D3VQ_kLj.mjs → DemoBookingPortalAccess-ojwbVUmx.mjs} +2 -2
  117. package/dist/client/{EventCombined.client-BHGEKise.mjs → EventCombined.client-DyN0v0Xk.mjs} +5 -6
  118. package/dist/client/{EventEmbeddedCheckoutStep-Bo1Cm23R.mjs → EventEmbeddedCheckoutStep-CgfpKc3n.mjs} +2 -2
  119. package/dist/client/{EventListing.client-D5OQgVPr.mjs → EventListing.client-CuOuvYMz.mjs} +2 -2
  120. package/dist/client/{LeafletStaticMap-CLL5cWrr.mjs → LeafletStaticMap-B0WhRr3j.mjs} +1 -1
  121. package/dist/client/{RichText-BoDmnopf.mjs → RichText-C1fIXBzA.mjs} +45 -32
  122. package/dist/client/{ThemedButton-Ciltp0IK.mjs → ThemedButton-B7HFqFBg.mjs} +1 -2
  123. package/dist/client/{accordion-DOkRS64-.mjs → accordion-DCDVWSye.mjs} +1 -1
  124. package/dist/client/{bookingForm-wlMVwo9h.mjs → bookingForm-BJ3C4GlM.mjs} +42 -15
  125. package/dist/client/bookings.mjs +116989 -22191
  126. package/dist/client/{carousel-CGWk-Z0u.mjs → carousel-BSCBhfHY.mjs} +2 -2
  127. package/dist/client/{carousel.client-kX5mN1Eg.mjs → carousel.client-GEtOGsxo.mjs} +1 -1
  128. package/dist/client/{cart-OBBPlaH4.mjs → cart-Yv-aAtck.mjs} +3 -3
  129. package/dist/client/{checkout-Bmw2WjQX.mjs → checkout-B9xDkl30.mjs} +3 -3
  130. package/dist/client/client.mjs +17577 -17361
  131. package/dist/client/{context-BI77UFAn.mjs → context-BOGe3rIA.mjs} +1 -1
  132. package/dist/client/{eventCalendar-qkej2Edn.mjs → eventCalendar-D6M0T9hs.mjs} +8 -9
  133. package/dist/client/{eventCombined-DApKHvat.mjs → eventCombined-NM4UFBq8.mjs} +4 -4
  134. package/dist/client/{eventDetails-BQyUDPH0.mjs → eventDetails-f_FhV4O8.mjs} +3 -3
  135. package/dist/client/{eventListing-CeAnshlZ.mjs → eventListing-WLkfAROh.mjs} +4 -4
  136. package/dist/client/{eventRegistration-C3A3NyBO.mjs → eventRegistration-D3ejfLvW.mjs} +10 -10
  137. package/dist/client/{form-DW8rU7jO.mjs → form-D5Or2Jyu.mjs} +4 -5
  138. package/dist/client/{headerSection-CkIhsoNm.mjs → headerSection-hWgnv27V.mjs} +3 -3
  139. package/dist/client/hooks.mjs +16014 -15751
  140. package/dist/client/{locationMap-D4O8wbli.mjs → locationMap-Di1K0O2S.mjs} +3 -4
  141. package/dist/client/{media-C5K_0xPd.mjs → media-D29-F1u_.mjs} +183 -362
  142. package/dist/client/mediaContext-CwbbimYB.mjs +135 -0
  143. package/dist/client/{newsletterForm-B7IxSPuz.mjs → newsletterForm-CwxcwTNO.mjs} +4 -4
  144. package/dist/client/{productDetail-Bqxpwy5N.mjs → productDetail-BLSnhPdA.mjs} +3 -3
  145. package/dist/client/{productList-u9Lz8V15.mjs → productList-oGytONOX.mjs} +3 -3
  146. package/dist/client/{propsDecoder-Bf1jucUp.mjs → propsDecoder-lf_dTeZS.mjs} +1467 -125
  147. package/dist/client/renderableMediaAssetAdmission-CHkXYDC_.mjs +143 -0
  148. package/dist/client/rendering/client.mjs +10855 -10689
  149. package/dist/client/rendering/islands.mjs +20 -23
  150. package/dist/client/rendering.mjs +18411 -18181
  151. package/dist/client/{routeIslandApiConfig-BgP-aPMl.mjs → routeIslandApiConfig-Bc_WVPS8.mjs} +1 -1
  152. package/dist/client/{shop-B_eykR-_.mjs → shop-BQ3bR7fA.mjs} +7 -7
  153. package/dist/client/{shop-commerce-CT0APkFV.mjs → shop-commerce-DDPll6ZC.mjs} +8 -8
  154. package/dist/client/{shop-commerce-store-DcvZxdEK.mjs → shop-commerce-store-DO-e1pTe.mjs} +1 -1
  155. package/dist/client/{shopShared-BVJOiUiJ.mjs → shopShared-BylM9jh1.mjs} +5 -5
  156. package/dist/client/{useDiscountCodeUi-DPmYDunz.mjs → useDiscountCodeUi-B1Puub2v.mjs} +1 -1
  157. package/dist/client/{useEventPagination-8-U55vH5.mjs → useEventPagination-BBhkmQaT.mjs} +6 -7
  158. package/dist/preview-next/before-render.mjs +89 -4
  159. package/dist/preview-next/client/runtime.mjs +3 -3
  160. package/dist/{sdk-runtime-C5jPdSrk.mjs → sdk-runtime-DWCvhJGu.mjs} +1 -1
  161. package/dist/server/components.mjs +18663 -18510
  162. package/dist/server/config-validation.mjs +450 -215
  163. package/dist/server/config.mjs +450 -215
  164. package/dist/server/data.mjs +15940 -15705
  165. package/dist/server/index.mjs +227 -2
  166. package/dist/server/next.mjs +18643 -18490
  167. package/dist/server/page-converter.mjs +12588 -12477
  168. package/dist/server/prebuild.mjs +1 -1
  169. package/dist/server/rendering/server.mjs +18007 -17855
  170. package/dist/server/rendering.mjs +18677 -18516
  171. package/dist/server/routing.mjs +17747 -17469
  172. package/dist/server/server.mjs +539 -276
  173. package/dist/server/theme-bridge.mjs +154 -37
  174. package/dist/server/theme.mjs +154 -37
  175. package/dist/{spinner-B-ab2rJp.mjs → spinner-BYM-Y81w.mjs} +1 -1
  176. package/package.json +1 -1
  177. package/dist/client/aspectTransforms-D-TnDdq4.mjs +0 -93
  178. package/dist/client/colorStyles-ECDNPE_P.mjs +0 -1253
@@ -1713,6 +1713,32 @@ const SDK_PAGE_DESIGN_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1713
1713
  ]
1714
1714
  }
1715
1715
  });
1716
+ //#endregion
1717
+ //#region ../core/src/result.ts
1718
+ function ok(value) {
1719
+ return {
1720
+ ok: true,
1721
+ value
1722
+ };
1723
+ }
1724
+ function err(error) {
1725
+ return {
1726
+ ok: false,
1727
+ error
1728
+ };
1729
+ }
1730
+ //#endregion
1731
+ //#region ../core/src/branded.ts
1732
+ const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
1733
+ function parseUuidBrand(value, unsafeConstructor) {
1734
+ if (typeof value !== "string") return err({ kind: "not_string" });
1735
+ const normalized = value.trim().toLowerCase();
1736
+ if (normalized.length === 0) return err({ kind: "empty_string" });
1737
+ if (!UUID_PATTERN.test(normalized)) return err({ kind: "invalid_uuid" });
1738
+ return ok(unsafeConstructor(normalized));
1739
+ }
1740
+ const unsafeAsMediaAssetId = (id) => id;
1741
+ const parseMediaAssetId = (value) => parseUuidBrand(value, unsafeAsMediaAssetId);
1716
1742
  const PUBLIC_CONTENT_FRESHNESS_SECONDS = 3600;
1717
1743
  function availability(transport) {
1718
1744
  return {
@@ -8929,7 +8955,7 @@ var SimpleCache = class {
8929
8955
  * 1. This constant
8930
8956
  * 2. The "version" field in package.json
8931
8957
  */
8932
- const SDK_VERSION = "0.152.0";
8958
+ const SDK_VERSION = "0.153.0";
8933
8959
  //#endregion
8934
8960
  //#region src/client/error.ts
8935
8961
  let _Symbol$for;
@@ -11758,4 +11784,203 @@ const SYSTEM_BLOCK_KINDS = [
11758
11784
  "block.file-download"
11759
11785
  ];
11760
11786
  //#endregion
11761
- export { API_ENDPOINTS, DEFAULT_PUBLISHED_RUNTIME_CACHE_PAYLOAD_SCHEMA_VERSION, PrebuildLoader, RiverbankApiError, SDK_CORRELATION_HEADER_NAMES, SYSTEM_BLOCK_KINDS, buildEndpointURL, canUsePrebuild, classifyPublishedRuntimeCacheFreshness, createPrebuildLoader, createRiverbankClient, derivePublishedRuntimeCacheKey, getResilienceStatusFromError, isPublishedRuntimeCacheKeyEndpoint, normalizeRuntimePublicPath, parsePublishedRuntimeCacheKey, parsePublishedRuntimeCacheKeyDetails, parsePublishedRuntimeCachePayloadSchemaVersion, prebuildCache, resolveRuntimeCachePolicy };
11787
+ //#region ../media-core/src/identifiers.ts
11788
+ function slugifyMediaIdentifier(value) {
11789
+ return value.toLowerCase().trim().replace(/[^a-z0-9\s-]/g, "").replace(/\s+/g, "-").replace(/-+/g, "-");
11790
+ }
11791
+ function parseMediaIdentifier(value) {
11792
+ if (typeof value !== "string") return err({ kind: "not_string" });
11793
+ const trimmed = value.trim();
11794
+ if (trimmed.length === 0) return err({ kind: "empty_identifier" });
11795
+ const normalized = slugifyMediaIdentifier(trimmed);
11796
+ if (normalized.length === 0) return err({
11797
+ kind: "empty_after_normalization",
11798
+ value
11799
+ });
11800
+ return ok(normalized);
11801
+ }
11802
+ /**
11803
+ * Admits identifiers read from trusted persistence without repairing dirty data in memory.
11804
+ * User input should use parseMediaIdentifier, which intentionally canonicalizes it.
11805
+ */
11806
+ function parseCanonicalMediaIdentifier(value) {
11807
+ if (typeof value !== "string") return err({ kind: "not_string" });
11808
+ const parsed = parseMediaIdentifier(value);
11809
+ if (!parsed.ok) return parsed;
11810
+ if (value !== parsed.value) return err({
11811
+ kind: "non_canonical_identifier",
11812
+ value,
11813
+ canonical: parsed.value
11814
+ });
11815
+ return parsed;
11816
+ }
11817
+ //#endregion
11818
+ //#region ../media-core/src/mediaIdentifierSchema.ts
11819
+ /** Strict stored-reference admission delegates the canonical identifier decision. */
11820
+ const mediaIdentifierSchema = z.string().transform((value, context) => {
11821
+ const parsed = parseCanonicalMediaIdentifier(value);
11822
+ if (parsed.ok) return parsed.value;
11823
+ context.addIssue({
11824
+ code: "custom",
11825
+ message: "Expected a canonical media identifier"
11826
+ });
11827
+ return z.NEVER;
11828
+ });
11829
+ //#endregion
11830
+ //#region ../media-core/src/mediaKinds.ts
11831
+ const mediaTypeDiscriminants = [
11832
+ "image",
11833
+ "video",
11834
+ "audio",
11835
+ "document",
11836
+ "spreadsheet",
11837
+ "archive"
11838
+ ];
11839
+ //#endregion
11840
+ //#region ../media-core/src/renderableMediaAsset.ts
11841
+ /** Shared identifier indexing for admitted site-scoped projections. */
11842
+ function buildMediaIdentifierIndex(assets) {
11843
+ const index = new Map(assets.map((asset) => [asset.identifier, asset]));
11844
+ if (index.size !== assets.length) throw new Error("Duplicate media identifier in a site asset list");
11845
+ return index;
11846
+ }
11847
+ /** Index already admitted projections, including runtime registration updates. */
11848
+ function indexRenderableMediaAssets(assets) {
11849
+ if (!assets.length) return void 0;
11850
+ const byId = new Map(assets.map((asset) => [asset.id, asset]));
11851
+ const byIdentifier = buildMediaIdentifierIndex(assets);
11852
+ if (byId.size !== assets.length) throw new Error("Duplicate media asset identity in a site asset list");
11853
+ return {
11854
+ assets,
11855
+ byId,
11856
+ byIdentifier
11857
+ };
11858
+ }
11859
+ /** A portable reference never uses an incidental UUID, URL or storage snapshot for identity. */
11860
+ function resolveManagedMediaReference(reference, index) {
11861
+ const asset = index?.byIdentifier.get(reference.identifier);
11862
+ return asset ? {
11863
+ kind: "resolved",
11864
+ reference,
11865
+ asset
11866
+ } : {
11867
+ kind: "missing",
11868
+ reference
11869
+ };
11870
+ }
11871
+ //#endregion
11872
+ //#region ../media-core/src/renderableMediaAssetAdmission.ts
11873
+ const mediaAssetIdSchema = z.string().transform((value, context) => {
11874
+ const parsed = parseMediaAssetId(value);
11875
+ if (parsed.ok) return parsed.value;
11876
+ context.addIssue({
11877
+ code: "custom",
11878
+ message: "Expected a media asset ID"
11879
+ });
11880
+ return z.NEVER;
11881
+ });
11882
+ const nonemptyStorageValue = z.string().refine((value) => value.trim().length > 0);
11883
+ const renderableMediaAssetSchema = z.object({
11884
+ id: mediaAssetIdSchema,
11885
+ identifier: mediaIdentifierSchema,
11886
+ storageBucket: nonemptyStorageValue,
11887
+ storagePath: nonemptyStorageValue,
11888
+ mimeType: nonemptyStorageValue,
11889
+ filename: z.string().optional(),
11890
+ width: z.number().positive().nullable(),
11891
+ height: z.number().positive().nullable()
11892
+ });
11893
+ /** Admission precedes the identifier-only runtime resolution decision. */
11894
+ function buildRenderableMediaAssetIndex(assets) {
11895
+ if (!assets?.length) return void 0;
11896
+ return indexRenderableMediaAssets(assets.map((asset) => renderableMediaAssetSchema.parse(asset)));
11897
+ }
11898
+ //#endregion
11899
+ //#region ../media-core/src/media.ts
11900
+ const hotspotSchema = z.object({
11901
+ x: z.number().min(0).max(1),
11902
+ y: z.number().min(0).max(1),
11903
+ radius: z.number().optional()
11904
+ });
11905
+ const rotationSchema = z.union([
11906
+ z.literal(0),
11907
+ z.literal(90),
11908
+ z.literal(180),
11909
+ z.literal(270)
11910
+ ]);
11911
+ const rectSchema = z.tuple([
11912
+ z.number(),
11913
+ z.number(),
11914
+ z.number(),
11915
+ z.number()
11916
+ ]);
11917
+ const aspectCropSchema = z.object({
11918
+ aspect: z.preprocess((value) => value == null ? void 0 : value, z.string().optional()),
11919
+ rect: z.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
11920
+ hotspot: z.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
11921
+ rotation: z.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
11922
+ });
11923
+ const transformSchema = z.object({
11924
+ aspectCrops: z.preprocess((value) => {
11925
+ if (!value || typeof value !== "object" || Array.isArray(value)) return;
11926
+ return value;
11927
+ }, z.record(z.string(), aspectCropSchema.catch({}))).optional(),
11928
+ rect: rectSchema.optional(),
11929
+ hotspot: hotspotSchema.optional(),
11930
+ rotation: rotationSchema.optional()
11931
+ });
11932
+ const mediaPosterSchema = z.discriminatedUnion("tag", [z.object({
11933
+ tag: z.literal("media"),
11934
+ identifier: mediaIdentifierSchema
11935
+ }).strict(), z.object({
11936
+ tag: z.literal("external-src"),
11937
+ src: z.string().url()
11938
+ }).strict()]);
11939
+ const mediaUsageShape = {
11940
+ purpose: z.string().optional(),
11941
+ placeholder: z.boolean().default(true).optional(),
11942
+ alt: z.string().optional(),
11943
+ filename: z.string().optional(),
11944
+ width: z.number().optional(),
11945
+ height: z.number().optional(),
11946
+ poster: mediaPosterSchema.optional(),
11947
+ transform: transformSchema.optional()
11948
+ };
11949
+ const environmentExclusions = {
11950
+ assetId: z.never().optional(),
11951
+ id: z.never().optional(),
11952
+ src: z.never().optional(),
11953
+ storageBucket: z.never().optional(),
11954
+ storagePath: z.never().optional(),
11955
+ mimeType: z.never().optional()
11956
+ };
11957
+ const mediaBaseSchema = z.object({
11958
+ ...mediaUsageShape,
11959
+ ...environmentExclusions,
11960
+ identifier: mediaIdentifierSchema
11961
+ }).strict();
11962
+ mediaBaseSchema.extend({ type: z.literal("image") });
11963
+ mediaBaseSchema.extend({ type: z.literal("video") });
11964
+ const mediaSchema = mediaBaseSchema.extend({ type: z.enum(mediaTypeDiscriminants) });
11965
+ const persistableMediaSchema = mediaSchema;
11966
+ const externalMediaSchema = z.object({
11967
+ ...mediaUsageShape,
11968
+ ...environmentExclusions,
11969
+ type: z.enum(mediaTypeDiscriminants),
11970
+ src: z.string().min(1),
11971
+ identifier: z.never().optional()
11972
+ }).strict();
11973
+ const assetMediaSchema = z.object({
11974
+ ...mediaUsageShape,
11975
+ ...environmentExclusions,
11976
+ type: z.enum(mediaTypeDiscriminants),
11977
+ asset: renderableMediaAssetSchema,
11978
+ identifier: z.never().optional()
11979
+ }).strict();
11980
+ const runtimeMediaSchema = z.union([
11981
+ mediaSchema,
11982
+ externalMediaSchema,
11983
+ assetMediaSchema
11984
+ ]);
11985
+ //#endregion
11986
+ export { API_ENDPOINTS, DEFAULT_PUBLISHED_RUNTIME_CACHE_PAYLOAD_SCHEMA_VERSION, PrebuildLoader, RiverbankApiError, SDK_CORRELATION_HEADER_NAMES, SYSTEM_BLOCK_KINDS, buildEndpointURL, buildRenderableMediaAssetIndex, canUsePrebuild, classifyPublishedRuntimeCacheFreshness, createPrebuildLoader, createRiverbankClient, derivePublishedRuntimeCacheKey, getResilienceStatusFromError, isPublishedRuntimeCacheKeyEndpoint, mediaIdentifierSchema, mediaSchema, normalizeRuntimePublicPath, parseCanonicalMediaIdentifier, parseMediaIdentifier, parsePublishedRuntimeCacheKey, parsePublishedRuntimeCacheKeyDetails, parsePublishedRuntimeCachePayloadSchemaVersion, persistableMediaSchema, prebuildCache, renderableMediaAssetSchema, resolveManagedMediaReference, resolveRuntimeCachePolicy, runtimeMediaSchema };