@riverbankcms/sdk 0.78.0 → 0.78.2

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 (152) hide show
  1. package/README.md +45 -43
  2. package/dist/{PreviewEditorSidebar-RIKFQ72L.mjs → PreviewEditorSidebar-4DXLYX2V.mjs} +29 -21
  3. package/dist/{PreviewEditorUI-XO7TUWKK.mjs → PreviewEditorUI-CS5P4N3P.mjs} +4 -4
  4. package/dist/SdkPreviewModeRuntime-IJDHTW4W.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +36 -0
  6. package/dist/_dts/api/src/contentRuntime.d.ts +1 -0
  7. package/dist/_dts/api/src/endpoints.d.ts +9 -0
  8. package/dist/_dts/api/src/index.d.ts +3 -3
  9. package/dist/_dts/api/src/public/types.d.ts +1 -1
  10. package/dist/_dts/api/src/request.d.ts +3 -11
  11. package/dist/_dts/api/src/sdkConfig/contracts.d.ts +1 -0
  12. package/dist/_dts/api/src/sdkContracts.d.ts +7 -1
  13. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +10 -0
  14. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -0
  15. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +15 -19
  16. package/dist/_dts/api/src/types.d.ts +11 -26
  17. package/dist/_dts/block-form/src/fields/types.d.ts +6 -0
  18. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterList.d.ts +3 -2
  19. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRow.d.ts +6 -3
  20. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRowActions.d.ts +8 -3
  21. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/index.d.ts +1 -1
  22. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useLinearRepeaterDnd.d.ts +1 -0
  23. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useRepeaterPointerDragCapability.d.ts +1 -0
  24. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useResolvedItemLabel.d.ts +7 -0
  25. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/buildSummary.d.ts +1 -0
  26. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/index.d.ts +3 -1
  27. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterDndDomain.d.ts +1 -1
  28. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterLabelSource.d.ts +15 -0
  29. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterRowActionsDomain.d.ts +50 -0
  30. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +591 -0
  31. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +591 -0
  32. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +591 -0
  33. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +591 -0
  34. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +591 -0
  35. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +591 -0
  36. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +591 -0
  37. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -0
  38. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -0
  39. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +591 -0
  40. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +591 -0
  41. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +591 -0
  42. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +3 -0
  43. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +164 -0
  44. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +1 -1
  45. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +1 -1
  46. package/dist/_dts/content-editor/src/index.d.ts +1 -1
  47. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +2 -2
  48. package/dist/_dts/content-model/src/content-types/schema.d.ts +14 -0
  49. package/dist/_dts/content-model/src/templates/bindingTypeCompatibility.d.ts +3 -1
  50. package/dist/_dts/content-model/src/templates/bindingValidation.d.ts +10 -4
  51. package/dist/_dts/content-model/src/templates/fieldPaths.d.ts +20 -0
  52. package/dist/_dts/content-model/src/templates/manifestAdapter.d.ts +5 -2
  53. package/dist/_dts/core/src/branded.d.ts +108 -85
  54. package/dist/_dts/core/src/csv-types.d.ts +2 -2
  55. package/dist/_dts/core/src/editor-state.d.ts +7 -7
  56. package/dist/_dts/core/src/participants.d.ts +2 -2
  57. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +11 -0
  58. package/dist/_dts/editor-blocks/src/blockPayload.d.ts +1 -1
  59. package/dist/_dts/media-editor/src/MediaEditor.d.ts +3 -1
  60. package/dist/_dts/media-editor/src/MediaPreview.d.ts +3 -1
  61. package/dist/_dts/media-editor/src/fieldUi.d.ts +5 -0
  62. package/dist/_dts/media-editor/src/index.d.ts +1 -1
  63. package/dist/_dts/sdk/src/cli/commands/push/consts.d.ts +1 -1
  64. package/dist/_dts/sdk/src/cli/commands/push/metadata.d.ts +2 -0
  65. package/dist/_dts/sdk/src/cli/commands/push/stale.d.ts +3 -3
  66. package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +7 -0
  67. package/dist/_dts/sdk/src/cli/commands/push.d.ts +2 -0
  68. package/dist/_dts/sdk/src/cli/content/reader.d.ts +13 -0
  69. package/dist/_dts/sdk/src/cli/content/writer.d.ts +2 -1
  70. package/dist/_dts/sdk/src/cli/helpers.d.ts +2 -0
  71. package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +6 -6
  72. package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +5 -0
  73. package/dist/_dts/sdk/src/cli/site-commands/commandSurfaceDispatch.d.ts +4 -0
  74. package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +5 -2
  75. package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +10 -1
  76. package/dist/_dts/sdk/src/cli/site-commands/pushExecutionTypes.d.ts +1 -1
  77. package/dist/_dts/sdk/src/client/management/types.d.ts +6 -0
  78. package/dist/_dts/sdk/src/client/types.d.ts +2 -2
  79. package/dist/_dts/sdk/src/config/content-types.d.ts +7 -0
  80. package/dist/_dts/sdk/src/config/field-definitions.d.ts +2 -0
  81. package/dist/_dts/sdk/src/version.d.ts +1 -1
  82. package/dist/_dts/site-commands/src/commands.d.ts +3 -0
  83. package/dist/{altcha-B5XGSXP5.mjs → altcha-EKUEQ4RP.mjs} +1 -1
  84. package/dist/{chunk-NIDXI46P.mjs → chunk-4QEGTLK6.mjs} +1 -1
  85. package/dist/{chunk-TXDES5P2.mjs → chunk-6HYXHRAI.mjs} +5 -5
  86. package/dist/{chunk-SVMMM2NA.mjs → chunk-CR5HKAGU.mjs} +24 -5
  87. package/dist/{chunk-OECWLDHN.mjs → chunk-MCRQMPET.mjs} +1030 -588
  88. package/dist/{chunk-SXOLGNMX.mjs → chunk-OKMBEAXY.mjs} +1 -1
  89. package/dist/{chunk-XGB3TDIC.mjs → chunk-R7POPVJR.mjs} +2 -8
  90. package/dist/{chunk-F7RTCZYN.mjs → chunk-RGTOD4AJ.mjs} +20 -14
  91. package/dist/cli/index.mjs +681 -225
  92. package/dist/cli/init-docs/content/cli-reference.md +3 -2
  93. package/dist/cli/init-docs/content/content-management.md +2 -2
  94. package/dist/cli/init-docs/content/workflow-preview-mode.md +68 -2
  95. package/dist/client/{accordion-EVDEOUPR.mjs → accordion-PLYNJIIM.mjs} +2 -2
  96. package/dist/client/analytics.mjs +1 -1
  97. package/dist/client/{bookingForm-DIHBLC64.mjs → bookingForm-BXAP6AO7.mjs} +55 -48
  98. package/dist/client/bookings.mjs +62 -55
  99. package/dist/client/{carousel-FEBQHIWI.mjs → carousel-TRBXDHGF.mjs} +3 -3
  100. package/dist/client/{cart-7CKSXAE4.mjs → cart-Z7H3HJRS.mjs} +7 -7
  101. package/dist/client/{checkout-WKYCANLV.mjs → checkout-WAFCUBIX.mjs} +7 -7
  102. package/dist/client/{chunk-OFMSCGNY.mjs → chunk-75OUS5MT.mjs} +2 -2
  103. package/dist/client/{chunk-IVNCUVAV.mjs → chunk-AUJ5DBZJ.mjs} +18 -18
  104. package/dist/client/{chunk-36WJCERQ.mjs → chunk-CE7IBGVW.mjs} +3 -1
  105. package/dist/client/{chunk-RZDWX7QW.mjs → chunk-CWGTG37I.mjs} +1 -1
  106. package/dist/client/{chunk-YDSEG6GZ.mjs → chunk-DNRGY432.mjs} +2 -2
  107. package/dist/client/{chunk-RV6FX7UH.mjs → chunk-FUXW6VW2.mjs} +9 -9
  108. package/dist/client/{chunk-65F47D7Y.mjs → chunk-JGXPTEI2.mjs} +43 -36
  109. package/dist/client/{chunk-GUK2FPXQ.mjs → chunk-JRDUHZCT.mjs} +37 -15
  110. package/dist/client/{chunk-VPPMNXCF.mjs → chunk-UVQEJJTN.mjs} +2 -2
  111. package/dist/client/{chunk-F7LHOKEH.mjs → chunk-XSV6KW4D.mjs} +1 -1
  112. package/dist/client/{chunk-PD6NBCEY.mjs → chunk-ZFHRN6W2.mjs} +1 -1
  113. package/dist/client/{chunk-2SAVKN2M.mjs → chunk-ZI3LLBPZ.mjs} +2 -2
  114. package/dist/client/client.mjs +249 -160
  115. package/dist/client/{courseRegistration-5QF2PHKM.mjs → courseRegistration-AHFQHWIJ.mjs} +10 -10
  116. package/dist/client/{eventCalendar-4ZOSETDU.mjs → eventCalendar-LDXTV5R7.mjs} +9 -9
  117. package/dist/client/{eventCombined-WQGU7JUX.mjs → eventCombined-A4JGTNJO.mjs} +9 -9
  118. package/dist/client/{eventDetails-AYWVUJ5Y.mjs → eventDetails-4YXTZ7EG.mjs} +9 -9
  119. package/dist/client/{eventListing-NT7C6UT5.mjs → eventListing-P72TPFFM.mjs} +9 -9
  120. package/dist/client/{eventRegistration-OH24F4ZJ.mjs → eventRegistration-LSYJHGMT.mjs} +9 -9
  121. package/dist/client/{form-7L42SRBB.mjs → form-AOPYOKOW.mjs} +6 -3
  122. package/dist/client/{headerSection-OZRZNZ52.mjs → headerSection-5TFYDFVQ.mjs} +3 -3
  123. package/dist/client/hooks.mjs +78 -48
  124. package/dist/client/{locationMap-ZBXRPQ7C.mjs → locationMap-QSZ3ZVAZ.mjs} +3 -3
  125. package/dist/client/{newsletterForm-SNAGFF2I.mjs → newsletterForm-KTRHZY52.mjs} +2 -2
  126. package/dist/client/{productDetail-I46BOFGV.mjs → productDetail-N4E775RG.mjs} +7 -7
  127. package/dist/client/{productList-BOYHTYI6.mjs → productList-UGUQ2S45.mjs} +7 -7
  128. package/dist/client/rendering/client.mjs +173 -131
  129. package/dist/client/rendering/islands.mjs +19 -19
  130. package/dist/client/rendering.mjs +230 -150
  131. package/dist/client/{shop-XTXPZTKR.mjs → shop-VHSZEEQ2.mjs} +7 -7
  132. package/dist/preview-next/before-render.mjs +10 -1
  133. package/dist/preview-next/client/runtime.mjs +6 -6
  134. package/dist/preview-next/middleware.mjs +10 -1
  135. package/dist/preview-next/tailwind-sources.css +1 -0
  136. package/dist/sdk-runtime-WHPJEF5G.mjs +8 -0
  137. package/dist/server/components.mjs +101 -54
  138. package/dist/server/config-template-validation.mjs +221 -15
  139. package/dist/server/config-validation.mjs +76 -42
  140. package/dist/server/config.mjs +76 -42
  141. package/dist/server/data.mjs +77 -47
  142. package/dist/server/index.mjs +31 -10
  143. package/dist/server/next.mjs +133 -71
  144. package/dist/server/page-converter.mjs +60 -40
  145. package/dist/server/prebuild.mjs +1 -1
  146. package/dist/server/rendering/server.mjs +107 -60
  147. package/dist/server/rendering.mjs +111 -61
  148. package/dist/server/routing.mjs +93 -63
  149. package/dist/server/server.mjs +102 -57
  150. package/package.json +1 -1
  151. package/dist/SdkPreviewModeRuntime-LAGYMPNF.mjs +0 -8
  152. package/dist/sdk-runtime-ZJLKC6DR.mjs +0 -8
@@ -1803,7 +1803,16 @@ var ENDPOINT_DEFINITIONS = {
1803
1803
  revalidate: 60,
1804
1804
  tags: ["site-{siteId}", "content-{siteId}-{type}"],
1805
1805
  auth: "user",
1806
- responseKind: "json"
1806
+ responseKind: "json",
1807
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
1808
+ },
1809
+ reorderContentEntries: {
1810
+ path: "/sites/{siteId}/content/{type}/order",
1811
+ method: "POST",
1812
+ tags: ["site-{siteId}", "content-{siteId}-{type}"],
1813
+ auth: "user",
1814
+ responseKind: "json",
1815
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
1807
1816
  },
1808
1817
  getContentTemplate: {
1809
1818
  path: "/sites/{siteId}/content/types/{type}/template",
@@ -6416,18 +6425,21 @@ function buildEndpointURL(baseURL, endpoint) {
6416
6425
  function isFormDataBody(value) {
6417
6426
  return typeof FormData !== "undefined" && value instanceof FormData;
6418
6427
  }
6428
+ function isUnknownArray(value) {
6429
+ return Array.isArray(value);
6430
+ }
6419
6431
  function appendQueryParam(queryParams, key, value) {
6420
6432
  if (value === void 0 || value === null) {
6421
6433
  return;
6422
6434
  }
6423
- if (Array.isArray(value)) {
6435
+ if (isUnknownArray(value)) {
6424
6436
  const stack2 = [...value].reverse();
6425
6437
  while (stack2.length > 0) {
6426
6438
  const item = stack2.pop();
6427
6439
  if (item === void 0 || item === null) {
6428
6440
  continue;
6429
6441
  }
6430
- if (Array.isArray(item)) {
6442
+ if (isUnknownArray(item)) {
6431
6443
  stack2.push(...[...item].reverse());
6432
6444
  continue;
6433
6445
  }
@@ -6437,6 +6449,12 @@ function appendQueryParam(queryParams, key, value) {
6437
6449
  }
6438
6450
  queryParams.append(key, String(value));
6439
6451
  }
6452
+ function serializePathParam(endpoint, key, value) {
6453
+ if (typeof value === "string") {
6454
+ return value;
6455
+ }
6456
+ throw new Error(`Invalid path param for endpoint ${String(endpoint)}: ${key} must be a string`);
6457
+ }
6440
6458
  function invalidateCacheTags(tags2, params) {
6441
6459
  const resolved = getRevalidateTag();
6442
6460
  if (typeof window !== "undefined" || !resolved || !tags2) return;
@@ -6575,8 +6593,9 @@ function createRawCMSClient(headers = {}, baseUrl) {
6575
6593
  const bracePlaceholder = `{${key}}`;
6576
6594
  const colonPlaceholder = `:${key}`;
6577
6595
  if (originalPath.includes(bracePlaceholder) || originalPath.includes(colonPlaceholder)) {
6578
- url = url.replace(bracePlaceholder, value);
6579
- url = url.replace(colonPlaceholder, value);
6596
+ const stringValue = serializePathParam(endpoint, key, value);
6597
+ url = url.replace(bracePlaceholder, stringValue);
6598
+ url = url.replace(colonPlaceholder, stringValue);
6580
6599
  } else {
6581
6600
  unusedParams[key] = value;
6582
6601
  }
@@ -6850,7 +6869,7 @@ var SimpleCache = class {
6850
6869
  };
6851
6870
 
6852
6871
  // src/version.ts
6853
- var SDK_VERSION = "0.78.0";
6872
+ var SDK_VERSION = "0.78.2";
6854
6873
 
6855
6874
  // src/client/error.ts
6856
6875
  var RiverbankApiError = class _RiverbankApiError extends Error {
@@ -7263,9 +7282,10 @@ var CircuitOpenError = class extends Error {
7263
7282
  var prebuildModule = null;
7264
7283
  function tryRequire(modulePath) {
7265
7284
  try {
7266
- const req = Function(
7285
+ const getRequire = new Function(
7267
7286
  'return typeof require === "function" ? require : null'
7268
- )();
7287
+ );
7288
+ const req = getRequire();
7269
7289
  return req ? req(modulePath) : null;
7270
7290
  } catch {
7271
7291
  return null;
@@ -7778,8 +7798,7 @@ function createRiverbankClient(config) {
7778
7798
  async (sig) => {
7779
7799
  return await apiClient({
7780
7800
  endpoint: "getContentByPath",
7781
- params: { siteId },
7782
- body: { path, preview },
7801
+ params: { siteId, path, preview: String(preview) },
7783
7802
  options: { signal: sig }
7784
7803
  });
7785
7804
  },
@@ -7829,6 +7848,8 @@ function createRiverbankClient(config) {
7829
7848
  orderParam = "published_at.asc";
7830
7849
  } else if (order === "title") {
7831
7850
  orderParam = "title.asc";
7851
+ } else if (order === "manual") {
7852
+ orderParam = "manual.asc";
7832
7853
  }
7833
7854
  const apiParams = {
7834
7855
  siteId,
@@ -8529,14 +8550,14 @@ function rotateNormalizedPoint(point, rotation) {
8529
8550
  const x = point.x;
8530
8551
  const y = point.y;
8531
8552
  switch (rotation) {
8553
+ case 0:
8554
+ return { x, y };
8532
8555
  case 90:
8533
8556
  return { x: 1 - y, y: x };
8534
8557
  case 180:
8535
8558
  return { x: 1 - x, y: 1 - y };
8536
8559
  case 270:
8537
8560
  return { x: y, y: 1 - x };
8538
- default:
8539
- return { x, y };
8540
8561
  }
8541
8562
  }
8542
8563
 
@@ -8729,6 +8750,8 @@ var uiSchema = z4.object({
8729
8750
  mediaPickerAutoOpen: z4.boolean().optional(),
8730
8751
  showMediaPreview: z4.boolean().optional(),
8731
8752
  showMediaOverlayActions: z4.boolean().optional(),
8753
+ mediaPreviewMaxWidth: z4.enum(["xs", "sm", "md", "none"]).optional(),
8754
+ preventMediaPreviewUpscale: z4.boolean().optional(),
8732
8755
  mediaDelivery: mediaDeliverySchema.optional(),
8733
8756
  mediaDeliveryByVariant: z4.record(z4.string(), mediaDeliverySchema).optional(),
8734
8757
  // Optional input hints for validators/widgets
@@ -8978,6 +9001,9 @@ var repeaterFieldSchema = baseFieldSchema.extend({
8978
9001
  type: z4.literal("repeater"),
8979
9002
  itemLabel: z4.string().default("Item"),
8980
9003
  itemLabelSource: z4.string().optional(),
9004
+ showSummary: z4.boolean().optional(),
9005
+ summaryFields: z4.string().array().optional(),
9006
+ summaryMaxChars: z4.number().int().positive().optional(),
8981
9007
  minItems: z4.number().int().min(0).default(0),
8982
9008
  maxItems: z4.number().int().positive().optional(),
8983
9009
  // Monomorphic mode
@@ -18033,47 +18059,48 @@ function validateFieldDefinitions(fields3, fragmentId) {
18033
18059
  function prefixFieldId(field, scope) {
18034
18060
  const cloned = cloneFieldDefinition2(field);
18035
18061
  cloned.id = `${scope}.${field.id}`;
18036
- cloned.defaultValue = cloneUnknown(cloned.defaultValue);
18062
+ const defaultValue = cloned.defaultValue;
18063
+ cloned.defaultValue = cloneUnknown(defaultValue);
18037
18064
  cloned.visibleRoles = cloned.visibleRoles ? [...cloned.visibleRoles] : void 0;
18038
18065
  cloned.ui = cloneUnknown(cloned.ui);
18039
18066
  return cloned;
18040
18067
  }
18041
18068
  function cloneFieldDefinition2(field) {
18042
- switch (field.type) {
18043
- case "repeater":
18044
- if (field.polymorphic && field.itemTypes) {
18045
- return {
18046
- ...field,
18047
- polymorphic: true,
18048
- itemTypes: Object.fromEntries(
18049
- Object.entries(field.itemTypes).map(([key, itemType]) => [
18050
- key,
18051
- {
18052
- ...itemType,
18053
- fields: itemType.fields.map(cloneFieldDefinition2)
18054
- }
18055
- ])
18056
- )
18057
- };
18058
- } else if (field.schema) {
18059
- return {
18060
- ...field,
18061
- schema: {
18062
- fields: field.schema.fields.map(cloneFieldDefinition2)
18063
- }
18064
- };
18065
- }
18066
- return { ...field };
18067
- case "group":
18069
+ if (field.type === "repeater") {
18070
+ if (field.polymorphic && field.itemTypes) {
18071
+ return {
18072
+ ...field,
18073
+ polymorphic: true,
18074
+ itemTypes: Object.fromEntries(
18075
+ Object.entries(field.itemTypes).map(([key, itemType]) => [
18076
+ key,
18077
+ {
18078
+ ...itemType,
18079
+ fields: itemType.fields.map(cloneFieldDefinition2)
18080
+ }
18081
+ ])
18082
+ )
18083
+ };
18084
+ }
18085
+ if (field.schema) {
18068
18086
  return {
18069
18087
  ...field,
18070
18088
  schema: {
18071
18089
  fields: field.schema.fields.map(cloneFieldDefinition2)
18072
18090
  }
18073
18091
  };
18074
- default:
18075
- return { ...field };
18092
+ }
18093
+ return { ...field };
18094
+ }
18095
+ if (field.type === "group") {
18096
+ return {
18097
+ ...field,
18098
+ schema: {
18099
+ fields: field.schema.fields.map(cloneFieldDefinition2)
18100
+ }
18101
+ };
18076
18102
  }
18103
+ return { ...field };
18077
18104
  }
18078
18105
  function cloneUnknown(value) {
18079
18106
  if (value == null || typeof value !== "object") {
@@ -20416,7 +20443,8 @@ function createBlockManifestWithContentShape(config, _contentShape) {
20416
20443
  return createBlockManifest(config);
20417
20444
  }
20418
20445
  function normalizeBlockLayout(layout) {
20419
- return Array.isArray(layout) ? [...layout] : layout;
20446
+ const rawLayout = layout;
20447
+ return Array.isArray(rawLayout) ? rawLayout : rawLayout;
20420
20448
  }
20421
20449
  function deriveComponentName(id) {
20422
20450
  const base = id.replace(/^block\./, "");
@@ -21962,16 +21990,20 @@ var marqueeLoopTransform = {
21962
21990
  summary: "Repeat an array to a minimum length, then duplicate it for seamless marquee looping",
21963
21991
  schema: marqueeLoopOptionsSchema,
21964
21992
  run: (value, options) => {
21965
- if (!Array.isArray(value) || value.length === 0) return [];
21993
+ const items = toUnknownArray(value);
21994
+ if (items.length === 0) return [];
21966
21995
  const minItems = options?.minItems ?? 10;
21967
21996
  const base = [];
21968
21997
  while (base.length < minItems) {
21969
- base.push(...value);
21998
+ base.push(...items);
21970
21999
  if (base.length > 1e3) break;
21971
22000
  }
21972
22001
  return [...base, ...base];
21973
22002
  }
21974
22003
  };
22004
+ function toUnknownArray(value) {
22005
+ return Array.isArray(value) ? value : [];
22006
+ }
21975
22007
  var formattingTransforms = [
21976
22008
  uppercaseTransform,
21977
22009
  fallbackTransform,
@@ -25641,8 +25673,8 @@ var eventSurfaceScopeValues = [
25641
25673
  "custom"
25642
25674
  ];
25643
25675
  var eventScheduleScopeValues = ["any", "recurring", "oneOff"];
25644
- var asEventCategoryId = (value) => value;
25645
- var asVenueId = (value) => value;
25676
+ var unsafeAsEventCategoryId = (value) => value;
25677
+ var unsafeAsVenueId = (value) => value;
25646
25678
  function normalizeEventBlockKind(value) {
25647
25679
  return value === "courses" || value === "events" ? value : "all";
25648
25680
  }
@@ -25668,10 +25700,10 @@ function normalizeEventCategoryIds(value) {
25668
25700
  if (Array.isArray(value)) {
25669
25701
  return normalizeIdList(
25670
25702
  value.filter((entry) => typeof entry === "string")
25671
- ).map(asEventCategoryId);
25703
+ ).map(unsafeAsEventCategoryId);
25672
25704
  }
25673
25705
  if (typeof value === "string") {
25674
- return normalizeIdList(value.split(",")).map(asEventCategoryId);
25706
+ return normalizeIdList(value.split(",")).map(unsafeAsEventCategoryId);
25675
25707
  }
25676
25708
  return [];
25677
25709
  }
@@ -25684,7 +25716,7 @@ function normalizeEventVenueId(value) {
25684
25716
  return null;
25685
25717
  }
25686
25718
  const trimmed = value.trim();
25687
- return trimmed ? asVenueId(trimmed) : null;
25719
+ return trimmed ? unsafeAsVenueId(trimmed) : null;
25688
25720
  }
25689
25721
  function normalizeEventStaffMemberId(value) {
25690
25722
  if (typeof value !== "string") {
@@ -35343,11 +35375,11 @@ function normalizeContent(block) {
35343
35375
  }
35344
35376
  function normalizeParams(input) {
35345
35377
  if (!input || typeof input !== "object") return {};
35346
- const entries = Object.entries(input).map(([key, value]) => [
35347
- key,
35348
- coerceToString(value)
35349
- ]);
35350
- return Object.fromEntries(entries);
35378
+ const output = {};
35379
+ for (const [key, value] of Object.entries(input)) {
35380
+ output[key] = coerceToString(value);
35381
+ }
35382
+ return output;
35351
35383
  }
35352
35384
  function isNonArrayObject(value) {
35353
35385
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -35563,10 +35595,16 @@ var dashboardConfigSchema = z62.object({
35563
35595
  var fieldDefinitionInputSchema = unsafeRetypeZodSchema(fieldSchema);
35564
35596
  var nodeDefinitionSchema = unsafeRetypeZodSchema(NodeSchema);
35565
35597
  var sdkLoaderEndpointSchema = z62.enum(SUPPORTED_LOADER_ENDPOINTS);
35598
+ var loaderFallbackScalarSchema = z62.union([
35599
+ z62.string(),
35600
+ z62.number(),
35601
+ z62.boolean(),
35602
+ z62.null()
35603
+ ]);
35566
35604
  var loaderParamBindingSchema = z62.object({
35567
35605
  $bind: z62.object({
35568
35606
  from: z62.string().min(1, "Binding path is required"),
35569
- fallback: z62.string().optional()
35607
+ fallback: loaderFallbackScalarSchema.optional()
35570
35608
  })
35571
35609
  });
35572
35610
  var loaderParamValueSchema = z62.union([
@@ -35712,9 +35750,13 @@ var sdkBlockFieldOptionsMapSchema = z62.record(
35712
35750
  var sdkContentTypeTemplateConfigSchema = z62.object({
35713
35751
  blocks: z62.array(z62.unknown())
35714
35752
  }).passthrough();
35753
+ var sdkContentTypeOrderingConfigSchema = z62.object({
35754
+ mode: z62.enum(["default", "manual"]).optional()
35755
+ }).optional();
35715
35756
  var sdkContentTypeConfigSchema = z62.object({
35716
35757
  key: z62.string().min(1),
35717
35758
  fields: z62.array(z62.unknown()),
35759
+ ordering: sdkContentTypeOrderingConfigSchema,
35718
35760
  template: sdkContentTypeTemplateConfigSchema.nullable().optional()
35719
35761
  }).passthrough();
35720
35762
  var sdkContentConfigSchema = z62.object({
@@ -36672,7 +36714,7 @@ async function prefetchBlockData2(page, context, client, options) {
36672
36714
  throw new Error("listPublishedEntries requires siteId and type params");
36673
36715
  }
36674
36716
  const parsedLimit = typeof limit === "string" ? Number.parseInt(limit, 10) : typeof limit === "number" ? limit : void 0;
36675
- const order = orderBy === "newest" || orderBy === "oldest" || orderBy === "title" || orderBy === "order" ? orderBy : void 0;
36717
+ const order = orderBy === "order" ? "manual" : orderBy === "newest" || orderBy === "oldest" || orderBy === "title" ? orderBy : void 0;
36676
36718
  const parsedEntryIds = mode === "manual" ? parseManualEntryIds(entryIds) : void 0;
36677
36719
  if (mode === "manual" && (!parsedEntryIds || parsedEntryIds.length === 0)) {
36678
36720
  return { entries: [] };
@@ -37234,6 +37276,9 @@ function isContentLoadNotFoundError(error) {
37234
37276
  }
37235
37277
  return Reflect.get(error, "status") === 404;
37236
37278
  }
37279
+ function getRejectedReason(result) {
37280
+ return result.reason;
37281
+ }
37237
37282
  async function loadContent(params) {
37238
37283
  const { client, siteId, path, preview = false, forceSite } = params;
37239
37284
  const [siteResult, contentResult] = await Promise.allSettled([
@@ -37241,7 +37286,7 @@ async function loadContent(params) {
37241
37286
  client.getPage({ siteId, path, preview })
37242
37287
  ]);
37243
37288
  if (siteResult.status === "rejected" || contentResult.status === "rejected") {
37244
- const failures = [siteResult, contentResult].filter((result) => result.status === "rejected").map((result) => result.reason);
37289
+ const failures = [siteResult, contentResult].filter((result) => result.status === "rejected").map(getRejectedReason);
37245
37290
  const upstreamFailure = failures.find((error) => !isContentLoadNotFoundError(error));
37246
37291
  throw upstreamFailure ?? failures[0];
37247
37292
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riverbankcms/sdk",
3
- "version": "0.78.0",
3
+ "version": "0.78.2",
4
4
  "description": "Riverbank CMS SDK for headless content consumption",
5
5
  "main": "./dist/server/index.mjs",
6
6
  "module": "./dist/server/index.mjs",
@@ -1,8 +0,0 @@
1
- "use client";
2
- export { SdkPreviewModeRuntime } from './chunk-F7RTCZYN.mjs';
3
- import './chunk-SXOLGNMX.mjs';
4
- import './chunk-NIDXI46P.mjs';
5
- import './chunk-TXDES5P2.mjs';
6
- import './chunk-OECWLDHN.mjs';
7
- import './chunk-SVMMM2NA.mjs';
8
- import './chunk-XGB3TDIC.mjs';
@@ -1,8 +0,0 @@
1
- "use client";
2
- export { PreviewShell, PreviewShellLayout, SdkPreviewModeRuntime as SdkPreviewMode } from './chunk-F7RTCZYN.mjs';
3
- export { PreviewLayoutProvider, PreviewQueryProvider, createPreviewQueryClient, useOptionalPreviewLayout, usePreviewLayout } from './chunk-SXOLGNMX.mjs';
4
- import './chunk-NIDXI46P.mjs';
5
- import './chunk-TXDES5P2.mjs';
6
- import './chunk-OECWLDHN.mjs';
7
- import './chunk-SVMMM2NA.mjs';
8
- import './chunk-XGB3TDIC.mjs';