@riverbankcms/sdk 0.90.1 → 0.91.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 (70) hide show
  1. package/dist/{PreviewEditorSidebar-FNFRVSIM.mjs → PreviewEditorSidebar-3TT47WCF.mjs} +3 -3
  2. package/dist/{PreviewEditorUI-3WXJFQXG.mjs → PreviewEditorUI-ORCLLUNZ.mjs} +3 -3
  3. package/dist/SdkPreviewModeRuntime-GMCDQPZZ.mjs +8 -0
  4. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +17 -0
  5. package/dist/_dts/core/src/string.d.ts +12 -0
  6. package/dist/_dts/sdk/src/cli/sync/validation.d.ts +2 -2
  7. package/dist/_dts/sdk/src/version.d.ts +1 -1
  8. package/dist/{chunk-SYYJZPKU.mjs → chunk-AFPMCLS7.mjs} +2 -2
  9. package/dist/{chunk-H6TT5ZXI.mjs → chunk-GDT2QGIL.mjs} +1 -1
  10. package/dist/{chunk-CR2VX432.mjs → chunk-RQUZYSES.mjs} +48 -36
  11. package/dist/{chunk-FA6LVZ7C.mjs → chunk-S3YHJWEU.mjs} +7 -7
  12. package/dist/{chunk-UG7I7S7W.mjs → chunk-U5YM4AWE.mjs} +1 -1
  13. package/dist/{chunk-BOQXMCSP.mjs → chunk-ZA2S7H34.mjs} +3 -3
  14. package/dist/cli/index.mjs +204 -335
  15. package/dist/cli/init-docs/content/workflow-add-block.md +48 -0
  16. package/dist/cli/init-docs/content/workflow-custom-block.md +10 -0
  17. package/dist/client/{accordion-4K7VGZ3I.mjs → accordion-AFX37652.mjs} +2 -2
  18. package/dist/client/{bookingForm-3QXA3CIS.mjs → bookingForm-32V5QCOW.mjs} +6 -6
  19. package/dist/client/bookings.mjs +16 -15
  20. package/dist/client/{carousel-BEJKNGQ7.mjs → carousel-TJGQJ7ER.mjs} +3 -3
  21. package/dist/client/{cart-44BBM6XG.mjs → cart-JUU2JEW4.mjs} +6 -6
  22. package/dist/client/{checkout-THMHEYKF.mjs → checkout-RD6BTFX4.mjs} +6 -6
  23. package/dist/client/{chunk-JV7ZNAOU.mjs → chunk-6QZIBNGV.mjs} +8 -8
  24. package/dist/client/{chunk-DQIRKNZE.mjs → chunk-6RN62XBV.mjs} +1 -1
  25. package/dist/client/{chunk-ZIAF2DA4.mjs → chunk-C4LP6BPG.mjs} +1 -1
  26. package/dist/client/{chunk-SLY6UDAS.mjs → chunk-CKXEUWWA.mjs} +2 -2
  27. package/dist/client/{chunk-5AJIMWKS.mjs → chunk-E6VIWZUG.mjs} +3 -3
  28. package/dist/client/{chunk-PEDNDLPB.mjs → chunk-FMZZHAIR.mjs} +2 -2
  29. package/dist/client/{chunk-KNTLBQ3N.mjs → chunk-ISAUXU5R.mjs} +1 -1
  30. package/dist/client/{chunk-HIHOQGIP.mjs → chunk-LJCX6V7Q.mjs} +9 -9
  31. package/dist/client/{chunk-B4H6QMPY.mjs → chunk-MLBNVN4H.mjs} +7 -5
  32. package/dist/client/{chunk-EJBHK74Y.mjs → chunk-PMNAV6LO.mjs} +1 -1
  33. package/dist/client/{chunk-4COPESPO.mjs → chunk-RMOFBBNA.mjs} +5 -5
  34. package/dist/client/{chunk-3H5CLFKT.mjs → chunk-RWYFG625.mjs} +9 -8
  35. package/dist/client/client.mjs +34 -31
  36. package/dist/client/{courseRegistration-URX7RCCK.mjs → courseRegistration-X63QAIVV.mjs} +6 -6
  37. package/dist/client/{eventCalendar-GTENOQCE.mjs → eventCalendar-5T24GCZL.mjs} +9 -9
  38. package/dist/client/{eventCombined-EZVB72MF.mjs → eventCombined-AZVTF22X.mjs} +9 -9
  39. package/dist/client/{eventDetails-CH4BJR5Z.mjs → eventDetails-7GPFNLGF.mjs} +9 -9
  40. package/dist/client/{eventListing-4BVOI5HS.mjs → eventListing-QEUMTMUM.mjs} +9 -9
  41. package/dist/client/{eventRegistration-37LPIKIE.mjs → eventRegistration-P2EDKCQZ.mjs} +9 -9
  42. package/dist/client/{form-FX3Y54YK.mjs → form-NUJ7H4IN.mjs} +3 -3
  43. package/dist/client/{headerSection-UOZZGVYL.mjs → headerSection-JB7LECPL.mjs} +3 -3
  44. package/dist/client/hooks.mjs +7 -7
  45. package/dist/client/{locationMap-VSIPKV35.mjs → locationMap-UEYWUCSW.mjs} +3 -3
  46. package/dist/client/{newsletterForm-6FRJKNAF.mjs → newsletterForm-S2YZQ2X7.mjs} +3 -3
  47. package/dist/client/{productDetail-6AHMLXCO.mjs → productDetail-H5MADGG7.mjs} +6 -6
  48. package/dist/client/{productList-M2CYIZVH.mjs → productList-DK7YON7H.mjs} +6 -6
  49. package/dist/client/rendering/client.mjs +31 -28
  50. package/dist/client/rendering/islands.mjs +19 -19
  51. package/dist/client/rendering.mjs +33 -30
  52. package/dist/client/{shop-AUOT6GEX.mjs → shop-6PA7RDRJ.mjs} +6 -6
  53. package/dist/client/spam-protection.mjs +10 -10
  54. package/dist/preview-next/client/runtime.mjs +5 -5
  55. package/dist/{sdk-runtime-6GPJNLU6.mjs → sdk-runtime-JP5347OB.mjs} +6 -6
  56. package/dist/server/components.mjs +13 -11
  57. package/dist/server/config-validation.mjs +7 -7
  58. package/dist/server/config.mjs +7 -7
  59. package/dist/server/data.mjs +7 -7
  60. package/dist/server/index.mjs +1 -1
  61. package/dist/server/navigation.mjs +2 -2
  62. package/dist/server/next.mjs +14 -12
  63. package/dist/server/page-converter.mjs +5 -5
  64. package/dist/server/prebuild.mjs +1 -1
  65. package/dist/server/rendering/server.mjs +13 -11
  66. package/dist/server/rendering.mjs +13 -11
  67. package/dist/server/routing.mjs +14 -14
  68. package/dist/server/server.mjs +8 -8
  69. package/package.json +1 -1
  70. package/dist/SdkPreviewModeRuntime-2UCIMKUB.mjs +0 -8
@@ -6528,11 +6528,11 @@ function isValidTimeZone(timeZone) {
6528
6528
  }
6529
6529
  function getSafeTimeZone(timeZone) {
6530
6530
  const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
6531
- return normalized && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
6531
+ return normalized.length > 0 && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
6532
6532
  }
6533
6533
  function parseStrictBookingTimeZone(timeZone) {
6534
6534
  const normalized = timeZone.trim();
6535
- if (!normalized || !isValidTimeZone(normalized)) {
6535
+ if (normalized.length === 0 || !isValidTimeZone(normalized)) {
6536
6536
  return null;
6537
6537
  }
6538
6538
  return normalized;
@@ -6606,7 +6606,7 @@ function parseScheduledBookingDateTime(input) {
6606
6606
  try {
6607
6607
  const startsAt = toUtcIsoDateTimeString(input.startsAt);
6608
6608
  const timeZone = parseStrictBookingTimeZone(input.timeZone);
6609
- if (!timeZone) {
6609
+ if (timeZone === null) {
6610
6610
  return {
6611
6611
  ok: false,
6612
6612
  field: "timeZone",
@@ -6652,10 +6652,10 @@ function normalizeLocationAddressText(value) {
6652
6652
  return null;
6653
6653
  }
6654
6654
  const trimmed = value.trim();
6655
- return trimmed ? trimmed : null;
6655
+ return trimmed.length > 0 ? trimmed : null;
6656
6656
  }
6657
6657
  function hasLocationCoordinates(value) {
6658
- return typeof value?.lat === "number" && typeof value?.lng === "number";
6658
+ return value != null && typeof value.lat === "number" && typeof value.lng === "number";
6659
6659
  }
6660
6660
  function toLocationCoordinates(value) {
6661
6661
  if (!hasLocationCoordinates(value)) {
@@ -37058,11 +37058,11 @@ function extractRouteUpdatedAt(candidate) {
37058
37058
  }
37059
37059
  function resolveRouteTargetForStage(routeIdValue, routes, stageInput) {
37060
37060
  const routeId = typeof routeIdValue === "string" ? routeIdValue : null;
37061
- if (!routeId || !routes) return null;
37061
+ if (routeId === null || routeId.length === 0 || routes === void 0) return null;
37062
37062
  const routeEntry = routes[routeId];
37063
37063
  if (!isRouteVisibleInStage(routeEntry, stageInput)) return null;
37064
37064
  const href = extractRouteHref(routeEntry, stageInput);
37065
- if (!href) return null;
37065
+ if (href === null) return null;
37066
37066
  return {
37067
37067
  routeId,
37068
37068
  href,
@@ -6573,11 +6573,11 @@ function isValidTimeZone(timeZone) {
6573
6573
  }
6574
6574
  function getSafeTimeZone(timeZone) {
6575
6575
  const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
6576
- return normalized && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
6576
+ return normalized.length > 0 && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
6577
6577
  }
6578
6578
  function parseStrictBookingTimeZone(timeZone) {
6579
6579
  const normalized = timeZone.trim();
6580
- if (!normalized || !isValidTimeZone(normalized)) {
6580
+ if (normalized.length === 0 || !isValidTimeZone(normalized)) {
6581
6581
  return null;
6582
6582
  }
6583
6583
  return normalized;
@@ -6651,7 +6651,7 @@ function parseScheduledBookingDateTime(input) {
6651
6651
  try {
6652
6652
  const startsAt = toUtcIsoDateTimeString(input.startsAt);
6653
6653
  const timeZone = parseStrictBookingTimeZone(input.timeZone);
6654
- if (!timeZone) {
6654
+ if (timeZone === null) {
6655
6655
  return {
6656
6656
  ok: false,
6657
6657
  field: "timeZone",
@@ -6697,10 +6697,10 @@ function normalizeLocationAddressText(value) {
6697
6697
  return null;
6698
6698
  }
6699
6699
  const trimmed = value.trim();
6700
- return trimmed ? trimmed : null;
6700
+ return trimmed.length > 0 ? trimmed : null;
6701
6701
  }
6702
6702
  function hasLocationCoordinates(value) {
6703
- return typeof value?.lat === "number" && typeof value?.lng === "number";
6703
+ return value != null && typeof value.lat === "number" && typeof value.lng === "number";
6704
6704
  }
6705
6705
  function toLocationCoordinates(value) {
6706
6706
  if (!hasLocationCoordinates(value)) {
@@ -37103,11 +37103,11 @@ function extractRouteUpdatedAt(candidate) {
37103
37103
  }
37104
37104
  function resolveRouteTargetForStage(routeIdValue, routes, stageInput) {
37105
37105
  const routeId = typeof routeIdValue === "string" ? routeIdValue : null;
37106
- if (!routeId || !routes) return null;
37106
+ if (routeId === null || routeId.length === 0 || routes === void 0) return null;
37107
37107
  const routeEntry = routes[routeId];
37108
37108
  if (!isRouteVisibleInStage(routeEntry, stageInput)) return null;
37109
37109
  const href = extractRouteHref(routeEntry, stageInput);
37110
- if (!href) return null;
37110
+ if (href === null) return null;
37111
37111
  return {
37112
37112
  routeId,
37113
37113
  href,
@@ -6530,11 +6530,11 @@ function isValidTimeZone(timeZone) {
6530
6530
  }
6531
6531
  function getSafeTimeZone(timeZone) {
6532
6532
  const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
6533
- return normalized && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
6533
+ return normalized.length > 0 && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
6534
6534
  }
6535
6535
  function parseStrictBookingTimeZone(timeZone) {
6536
6536
  const normalized = timeZone.trim();
6537
- if (!normalized || !isValidTimeZone(normalized)) {
6537
+ if (normalized.length === 0 || !isValidTimeZone(normalized)) {
6538
6538
  return null;
6539
6539
  }
6540
6540
  return normalized;
@@ -6608,7 +6608,7 @@ function parseScheduledBookingDateTime(input) {
6608
6608
  try {
6609
6609
  const startsAt = toUtcIsoDateTimeString(input.startsAt);
6610
6610
  const timeZone = parseStrictBookingTimeZone(input.timeZone);
6611
- if (!timeZone) {
6611
+ if (timeZone === null) {
6612
6612
  return {
6613
6613
  ok: false,
6614
6614
  field: "timeZone",
@@ -6654,10 +6654,10 @@ function normalizeLocationAddressText(value) {
6654
6654
  return null;
6655
6655
  }
6656
6656
  const trimmed = value.trim();
6657
- return trimmed ? trimmed : null;
6657
+ return trimmed.length > 0 ? trimmed : null;
6658
6658
  }
6659
6659
  function hasLocationCoordinates(value) {
6660
- return typeof value?.lat === "number" && typeof value?.lng === "number";
6660
+ return value != null && typeof value.lat === "number" && typeof value.lng === "number";
6661
6661
  }
6662
6662
  function toLocationCoordinates(value) {
6663
6663
  if (!hasLocationCoordinates(value)) {
@@ -37042,11 +37042,11 @@ function extractRouteUpdatedAt(candidate) {
37042
37042
  }
37043
37043
  function resolveRouteTargetForStage(routeIdValue, routes, stageInput) {
37044
37044
  const routeId = typeof routeIdValue === "string" ? routeIdValue : null;
37045
- if (!routeId || !routes) return null;
37045
+ if (routeId === null || routeId.length === 0 || routes === void 0) return null;
37046
37046
  const routeEntry = routes[routeId];
37047
37047
  if (!isRouteVisibleInStage(routeEntry, stageInput)) return null;
37048
37048
  const href = extractRouteHref(routeEntry, stageInput);
37049
- if (!href) return null;
37049
+ if (href === null) return null;
37050
37050
  return {
37051
37051
  routeId,
37052
37052
  href,
@@ -7062,7 +7062,7 @@ var SimpleCache = class {
7062
7062
  };
7063
7063
 
7064
7064
  // src/version.ts
7065
- var SDK_VERSION = "0.90.1";
7065
+ var SDK_VERSION = "0.91.0";
7066
7066
 
7067
7067
  // src/client/error.ts
7068
7068
  var RiverbankApiError = class _RiverbankApiError extends Error {
@@ -49,11 +49,11 @@ function extractRouteUpdatedAt(candidate) {
49
49
  }
50
50
  function resolveRouteTargetForStage(routeIdValue, routes, stageInput) {
51
51
  const routeId = typeof routeIdValue === "string" ? routeIdValue : null;
52
- if (!routeId || !routes) return null;
52
+ if (routeId === null || routeId.length === 0 || routes === void 0) return null;
53
53
  const routeEntry = routes[routeId];
54
54
  if (!isRouteVisibleInStage(routeEntry, stageInput)) return null;
55
55
  const href = extractRouteHref(routeEntry, stageInput);
56
- if (!href) return null;
56
+ if (href === null) return null;
57
57
  return {
58
58
  routeId,
59
59
  href,
@@ -6621,11 +6621,11 @@ function isValidTimeZone(timeZone) {
6621
6621
  }
6622
6622
  function getSafeTimeZone(timeZone) {
6623
6623
  const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
6624
- return normalized && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
6624
+ return normalized.length > 0 && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
6625
6625
  }
6626
6626
  function parseStrictBookingTimeZone(timeZone) {
6627
6627
  const normalized = timeZone.trim();
6628
- if (!normalized || !isValidTimeZone(normalized)) {
6628
+ if (normalized.length === 0 || !isValidTimeZone(normalized)) {
6629
6629
  return null;
6630
6630
  }
6631
6631
  return normalized;
@@ -6702,7 +6702,7 @@ function parseScheduledBookingDateTime(input) {
6702
6702
  try {
6703
6703
  const startsAt = toUtcIsoDateTimeString(input.startsAt);
6704
6704
  const timeZone = parseStrictBookingTimeZone(input.timeZone);
6705
- if (!timeZone) {
6705
+ if (timeZone === null) {
6706
6706
  return {
6707
6707
  ok: false,
6708
6708
  field: "timeZone",
@@ -6837,10 +6837,10 @@ function normalizeLocationAddressText(value) {
6837
6837
  return null;
6838
6838
  }
6839
6839
  const trimmed = value.trim();
6840
- return trimmed ? trimmed : null;
6840
+ return trimmed.length > 0 ? trimmed : null;
6841
6841
  }
6842
6842
  function hasLocationCoordinates(value) {
6843
- return typeof value?.lat === "number" && typeof value?.lng === "number";
6843
+ return value != null && typeof value.lat === "number" && typeof value.lng === "number";
6844
6844
  }
6845
6845
  function toLocationCoordinates(value) {
6846
6846
  if (!hasLocationCoordinates(value)) {
@@ -35083,7 +35083,7 @@ function formatCalendarTitle(viewDate, view, days, monthNames = MONTH_NAMES) {
35083
35083
  if (view === "week") {
35084
35084
  const weekStart = days[0];
35085
35085
  const weekEnd = days[6];
35086
- if (!weekStart || !weekEnd) {
35086
+ if (weekStart === void 0 || weekEnd === void 0) {
35087
35087
  return `${monthNames[viewDate.getMonth()] ?? ""} ${viewDate.getFullYear()}`;
35088
35088
  }
35089
35089
  const startMonth = monthNames[weekStart.getMonth()] ?? "";
@@ -35189,7 +35189,9 @@ function getLocalDateKey(isoTimestamp, timeZone) {
35189
35189
  const year = parts.find((part) => part.type === "year")?.value;
35190
35190
  const month = parts.find((part) => part.type === "month")?.value;
35191
35191
  const day = parts.find((part) => part.type === "day")?.value;
35192
- if (!year || !month || !day) return null;
35192
+ if (year === void 0 || year.length === 0) return null;
35193
+ if (month === void 0 || month.length === 0) return null;
35194
+ if (day === void 0 || day.length === 0) return null;
35193
35195
  return `${year}-${month}-${day}`;
35194
35196
  }
35195
35197
  var validTimeZoneCache = /* @__PURE__ */ new Map();
@@ -35446,7 +35448,7 @@ function enumerateDateKeys(startDateKey, endDateKey) {
35446
35448
  }
35447
35449
  function parseDateKey(dateKey) {
35448
35450
  const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(dateKey);
35449
- if (!match) {
35451
+ if (match === null) {
35450
35452
  throw new Error(`Invalid timetable date key: ${dateKey}`);
35451
35453
  }
35452
35454
  const [, year, month, day] = match;
@@ -35466,7 +35468,7 @@ function groupItemsByDate(items, accessors) {
35466
35468
  const dateKey = getLocalDateKey(startsAt, timeZone);
35467
35469
  if (dateKey == null) continue;
35468
35470
  const existing = grouped.get(dateKey);
35469
- if (existing) {
35471
+ if (existing !== void 0) {
35470
35472
  existing.push(item);
35471
35473
  } else {
35472
35474
  grouped.set(dateKey, [item]);
@@ -44562,11 +44564,11 @@ function extractRouteUpdatedAt(candidate) {
44562
44564
  }
44563
44565
  function resolveRouteTargetForStage(routeIdValue, routes, stageInput) {
44564
44566
  const routeId = typeof routeIdValue === "string" ? routeIdValue : null;
44565
- if (!routeId || !routes) return null;
44567
+ if (routeId === null || routeId.length === 0 || routes === void 0) return null;
44566
44568
  const routeEntry = routes[routeId];
44567
44569
  if (!isRouteVisibleInStage(routeEntry, stageInput)) return null;
44568
44570
  const href = extractRouteHref(routeEntry, stageInput);
44569
- if (!href) return null;
44571
+ if (href === null) return null;
44570
44572
  return {
44571
44573
  routeId,
44572
44574
  href,
@@ -70877,7 +70879,7 @@ var CircuitOpenError = class extends Error {
70877
70879
  };
70878
70880
 
70879
70881
  // src/version.ts
70880
- var SDK_VERSION = "0.90.1";
70882
+ var SDK_VERSION = "0.91.0";
70881
70883
 
70882
70884
  // src/next/content-load-failure.ts
70883
70885
  var SdkContentLoadError = RiverbankContentLoadError;
@@ -136,11 +136,11 @@ function isValidTimeZone(timeZone) {
136
136
  }
137
137
  function getSafeTimeZone(timeZone) {
138
138
  const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
139
- return normalized && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
139
+ return normalized.length > 0 && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
140
140
  }
141
141
  function parseStrictBookingTimeZone(timeZone) {
142
142
  const normalized = timeZone.trim();
143
- if (!normalized || !isValidTimeZone(normalized)) {
143
+ if (normalized.length === 0 || !isValidTimeZone(normalized)) {
144
144
  return null;
145
145
  }
146
146
  return normalized;
@@ -214,7 +214,7 @@ function parseScheduledBookingDateTime(input) {
214
214
  try {
215
215
  const startsAt = toUtcIsoDateTimeString(input.startsAt);
216
216
  const timeZone = parseStrictBookingTimeZone(input.timeZone);
217
- if (!timeZone) {
217
+ if (timeZone === null) {
218
218
  return {
219
219
  ok: false,
220
220
  field: "timeZone",
@@ -260,10 +260,10 @@ function normalizeLocationAddressText(value) {
260
260
  return null;
261
261
  }
262
262
  const trimmed = value.trim();
263
- return trimmed ? trimmed : null;
263
+ return trimmed.length > 0 ? trimmed : null;
264
264
  }
265
265
  function hasLocationCoordinates(value) {
266
- return typeof value?.lat === "number" && typeof value?.lng === "number";
266
+ return value != null && typeof value.lat === "number" && typeof value.lng === "number";
267
267
  }
268
268
  function toLocationCoordinates(value) {
269
269
  if (!hasLocationCoordinates(value)) {
@@ -4,7 +4,7 @@ import * as path from "path";
4
4
  import * as crypto from "crypto";
5
5
 
6
6
  // src/version.ts
7
- var SDK_VERSION = "0.90.1";
7
+ var SDK_VERSION = "0.91.0";
8
8
 
9
9
  // src/constants.ts
10
10
  var PREBUILD_PAGE_SIZE = 50;
@@ -263,11 +263,11 @@ function isValidTimeZone(timeZone) {
263
263
  }
264
264
  function getSafeTimeZone(timeZone) {
265
265
  const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
266
- return normalized && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
266
+ return normalized.length > 0 && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
267
267
  }
268
268
  function parseStrictBookingTimeZone(timeZone) {
269
269
  const normalized = timeZone.trim();
270
- if (!normalized || !isValidTimeZone(normalized)) {
270
+ if (normalized.length === 0 || !isValidTimeZone(normalized)) {
271
271
  return null;
272
272
  }
273
273
  return normalized;
@@ -344,7 +344,7 @@ function parseScheduledBookingDateTime(input) {
344
344
  try {
345
345
  const startsAt = toUtcIsoDateTimeString(input.startsAt);
346
346
  const timeZone = parseStrictBookingTimeZone(input.timeZone);
347
- if (!timeZone) {
347
+ if (timeZone === null) {
348
348
  return {
349
349
  ok: false,
350
350
  field: "timeZone",
@@ -479,10 +479,10 @@ function normalizeLocationAddressText(value) {
479
479
  return null;
480
480
  }
481
481
  const trimmed = value.trim();
482
- return trimmed ? trimmed : null;
482
+ return trimmed.length > 0 ? trimmed : null;
483
483
  }
484
484
  function hasLocationCoordinates(value) {
485
- return typeof value?.lat === "number" && typeof value?.lng === "number";
485
+ return value != null && typeof value.lat === "number" && typeof value.lng === "number";
486
486
  }
487
487
  function toLocationCoordinates(value) {
488
488
  if (!hasLocationCoordinates(value)) {
@@ -28507,7 +28507,7 @@ function formatCalendarTitle(viewDate, view, days, monthNames = MONTH_NAMES) {
28507
28507
  if (view === "week") {
28508
28508
  const weekStart = days[0];
28509
28509
  const weekEnd = days[6];
28510
- if (!weekStart || !weekEnd) {
28510
+ if (weekStart === void 0 || weekEnd === void 0) {
28511
28511
  return `${monthNames[viewDate.getMonth()] ?? ""} ${viewDate.getFullYear()}`;
28512
28512
  }
28513
28513
  const startMonth = monthNames[weekStart.getMonth()] ?? "";
@@ -28613,7 +28613,9 @@ function getLocalDateKey(isoTimestamp, timeZone) {
28613
28613
  const year = parts.find((part) => part.type === "year")?.value;
28614
28614
  const month = parts.find((part) => part.type === "month")?.value;
28615
28615
  const day = parts.find((part) => part.type === "day")?.value;
28616
- if (!year || !month || !day) return null;
28616
+ if (year === void 0 || year.length === 0) return null;
28617
+ if (month === void 0 || month.length === 0) return null;
28618
+ if (day === void 0 || day.length === 0) return null;
28617
28619
  return `${year}-${month}-${day}`;
28618
28620
  }
28619
28621
  var validTimeZoneCache = /* @__PURE__ */ new Map();
@@ -28870,7 +28872,7 @@ function enumerateDateKeys(startDateKey, endDateKey) {
28870
28872
  }
28871
28873
  function parseDateKey(dateKey) {
28872
28874
  const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(dateKey);
28873
- if (!match) {
28875
+ if (match === null) {
28874
28876
  throw new Error(`Invalid timetable date key: ${dateKey}`);
28875
28877
  }
28876
28878
  const [, year, month, day] = match;
@@ -28890,7 +28892,7 @@ function groupItemsByDate(items, accessors) {
28890
28892
  const dateKey = getLocalDateKey(startsAt, timeZone);
28891
28893
  if (dateKey == null) continue;
28892
28894
  const existing = grouped.get(dateKey);
28893
- if (existing) {
28895
+ if (existing !== void 0) {
28894
28896
  existing.push(item);
28895
28897
  } else {
28896
28898
  grouped.set(dateKey, [item]);
@@ -37958,11 +37960,11 @@ function extractRouteUpdatedAt(candidate) {
37958
37960
  }
37959
37961
  function resolveRouteTargetForStage(routeIdValue, routes, stageInput) {
37960
37962
  const routeId = typeof routeIdValue === "string" ? routeIdValue : null;
37961
- if (!routeId || !routes) return null;
37963
+ if (routeId === null || routeId.length === 0 || routes === void 0) return null;
37962
37964
  const routeEntry = routes[routeId];
37963
37965
  if (!isRouteVisibleInStage(routeEntry, stageInput)) return null;
37964
37966
  const href = extractRouteHref(routeEntry, stageInput);
37965
- if (!href) return null;
37967
+ if (href === null) return null;
37966
37968
  return {
37967
37969
  routeId,
37968
37970
  href,
@@ -266,11 +266,11 @@ function isValidTimeZone(timeZone) {
266
266
  }
267
267
  function getSafeTimeZone(timeZone) {
268
268
  const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
269
- return normalized && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
269
+ return normalized.length > 0 && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
270
270
  }
271
271
  function parseStrictBookingTimeZone(timeZone) {
272
272
  const normalized = timeZone.trim();
273
- if (!normalized || !isValidTimeZone(normalized)) {
273
+ if (normalized.length === 0 || !isValidTimeZone(normalized)) {
274
274
  return null;
275
275
  }
276
276
  return normalized;
@@ -347,7 +347,7 @@ function parseScheduledBookingDateTime(input) {
347
347
  try {
348
348
  const startsAt = toUtcIsoDateTimeString(input.startsAt);
349
349
  const timeZone = parseStrictBookingTimeZone(input.timeZone);
350
- if (!timeZone) {
350
+ if (timeZone === null) {
351
351
  return {
352
352
  ok: false,
353
353
  field: "timeZone",
@@ -482,10 +482,10 @@ function normalizeLocationAddressText(value) {
482
482
  return null;
483
483
  }
484
484
  const trimmed = value.trim();
485
- return trimmed ? trimmed : null;
485
+ return trimmed.length > 0 ? trimmed : null;
486
486
  }
487
487
  function hasLocationCoordinates(value) {
488
- return typeof value?.lat === "number" && typeof value?.lng === "number";
488
+ return value != null && typeof value.lat === "number" && typeof value.lng === "number";
489
489
  }
490
490
  function toLocationCoordinates(value) {
491
491
  if (!hasLocationCoordinates(value)) {
@@ -28510,7 +28510,7 @@ function formatCalendarTitle(viewDate, view, days, monthNames = MONTH_NAMES) {
28510
28510
  if (view === "week") {
28511
28511
  const weekStart = days[0];
28512
28512
  const weekEnd = days[6];
28513
- if (!weekStart || !weekEnd) {
28513
+ if (weekStart === void 0 || weekEnd === void 0) {
28514
28514
  return `${monthNames[viewDate.getMonth()] ?? ""} ${viewDate.getFullYear()}`;
28515
28515
  }
28516
28516
  const startMonth = monthNames[weekStart.getMonth()] ?? "";
@@ -28616,7 +28616,9 @@ function getLocalDateKey(isoTimestamp, timeZone) {
28616
28616
  const year = parts.find((part) => part.type === "year")?.value;
28617
28617
  const month = parts.find((part) => part.type === "month")?.value;
28618
28618
  const day = parts.find((part) => part.type === "day")?.value;
28619
- if (!year || !month || !day) return null;
28619
+ if (year === void 0 || year.length === 0) return null;
28620
+ if (month === void 0 || month.length === 0) return null;
28621
+ if (day === void 0 || day.length === 0) return null;
28620
28622
  return `${year}-${month}-${day}`;
28621
28623
  }
28622
28624
  var validTimeZoneCache = /* @__PURE__ */ new Map();
@@ -28873,7 +28875,7 @@ function enumerateDateKeys(startDateKey, endDateKey) {
28873
28875
  }
28874
28876
  function parseDateKey(dateKey) {
28875
28877
  const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(dateKey);
28876
- if (!match) {
28878
+ if (match === null) {
28877
28879
  throw new Error(`Invalid timetable date key: ${dateKey}`);
28878
28880
  }
28879
28881
  const [, year, month, day] = match;
@@ -28893,7 +28895,7 @@ function groupItemsByDate(items, accessors) {
28893
28895
  const dateKey = getLocalDateKey(startsAt, timeZone);
28894
28896
  if (dateKey == null) continue;
28895
28897
  const existing = grouped.get(dateKey);
28896
- if (existing) {
28898
+ if (existing !== void 0) {
28897
28899
  existing.push(item);
28898
28900
  } else {
28899
28901
  grouped.set(dateKey, [item]);
@@ -37992,11 +37994,11 @@ function extractRouteUpdatedAt(candidate) {
37992
37994
  }
37993
37995
  function resolveRouteTargetForStage(routeIdValue, routes, stageInput) {
37994
37996
  const routeId = typeof routeIdValue === "string" ? routeIdValue : null;
37995
- if (!routeId || !routes) return null;
37997
+ if (routeId === null || routeId.length === 0 || routes === void 0) return null;
37996
37998
  const routeEntry = routes[routeId];
37997
37999
  if (!isRouteVisibleInStage(routeEntry, stageInput)) return null;
37998
38000
  const href = extractRouteHref(routeEntry, stageInput);
37999
- if (!href) return null;
38001
+ if (href === null) return null;
38000
38002
  return {
38001
38003
  routeId,
38002
38004
  href,
@@ -6673,11 +6673,11 @@ function isValidTimeZone(timeZone) {
6673
6673
  }
6674
6674
  function getSafeTimeZone(timeZone) {
6675
6675
  const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
6676
- return normalized && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
6676
+ return normalized.length > 0 && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
6677
6677
  }
6678
6678
  function parseStrictBookingTimeZone(timeZone) {
6679
6679
  const normalized = timeZone.trim();
6680
- if (!normalized || !isValidTimeZone(normalized)) {
6680
+ if (normalized.length === 0 || !isValidTimeZone(normalized)) {
6681
6681
  return null;
6682
6682
  }
6683
6683
  return normalized;
@@ -6751,7 +6751,7 @@ function parseScheduledBookingDateTime(input) {
6751
6751
  try {
6752
6752
  const startsAt = toUtcIsoDateTimeString(input.startsAt);
6753
6753
  const timeZone = parseStrictBookingTimeZone(input.timeZone);
6754
- if (!timeZone) {
6754
+ if (timeZone === null) {
6755
6755
  return {
6756
6756
  ok: false,
6757
6757
  field: "timeZone",
@@ -6820,10 +6820,10 @@ function normalizeLocationAddressText(value) {
6820
6820
  return null;
6821
6821
  }
6822
6822
  const trimmed = value.trim();
6823
- return trimmed ? trimmed : null;
6823
+ return trimmed.length > 0 ? trimmed : null;
6824
6824
  }
6825
6825
  function hasLocationCoordinates(value) {
6826
- return typeof value?.lat === "number" && typeof value?.lng === "number";
6826
+ return value != null && typeof value.lat === "number" && typeof value.lng === "number";
6827
6827
  }
6828
6828
  function toLocationCoordinates(value) {
6829
6829
  if (!hasLocationCoordinates(value)) {
@@ -6840,6 +6840,13 @@ var init_location = __esm({
6840
6840
  }
6841
6841
  });
6842
6842
 
6843
+ // ../core/src/string.ts
6844
+ var init_string = __esm({
6845
+ "../core/src/string.ts"() {
6846
+ "use strict";
6847
+ }
6848
+ });
6849
+
6843
6850
  // ../core/src/business-address.ts
6844
6851
  var init_business_address = __esm({
6845
6852
  "../core/src/business-address.ts"() {
@@ -6980,13 +6987,6 @@ var init_slug = __esm({
6980
6987
  }
6981
6988
  });
6982
6989
 
6983
- // ../core/src/string.ts
6984
- var init_string = __esm({
6985
- "../core/src/string.ts"() {
6986
- "use strict";
6987
- }
6988
- });
6989
-
6990
6990
  // ../core/src/uuid.ts
6991
6991
  var init_uuid = __esm({
6992
6992
  "../core/src/uuid.ts"() {
@@ -42214,11 +42214,11 @@ function extractRouteUpdatedAt(candidate) {
42214
42214
  }
42215
42215
  function resolveRouteTargetForStage(routeIdValue, routes, stageInput) {
42216
42216
  const routeId = typeof routeIdValue === "string" ? routeIdValue : null;
42217
- if (!routeId || !routes) return null;
42217
+ if (routeId === null || routeId.length === 0 || routes === void 0) return null;
42218
42218
  const routeEntry = routes[routeId];
42219
42219
  if (!isRouteVisibleInStage(routeEntry, stageInput)) return null;
42220
42220
  const href = extractRouteHref(routeEntry, stageInput);
42221
- if (!href) return null;
42221
+ if (href === null) return null;
42222
42222
  return {
42223
42223
  routeId,
42224
42224
  href,
@@ -7095,7 +7095,7 @@ var SimpleCache = class {
7095
7095
  };
7096
7096
 
7097
7097
  // src/version.ts
7098
- var SDK_VERSION = "0.90.1";
7098
+ var SDK_VERSION = "0.91.0";
7099
7099
 
7100
7100
  // src/client/error.ts
7101
7101
  var RiverbankApiError = class _RiverbankApiError extends Error {
@@ -9307,11 +9307,11 @@ function isValidTimeZone(timeZone) {
9307
9307
  }
9308
9308
  function getSafeTimeZone(timeZone) {
9309
9309
  const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
9310
- return normalized && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
9310
+ return normalized.length > 0 && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
9311
9311
  }
9312
9312
  function parseStrictBookingTimeZone(timeZone) {
9313
9313
  const normalized = timeZone.trim();
9314
- if (!normalized || !isValidTimeZone(normalized)) {
9314
+ if (normalized.length === 0 || !isValidTimeZone(normalized)) {
9315
9315
  return null;
9316
9316
  }
9317
9317
  return normalized;
@@ -9385,7 +9385,7 @@ function parseScheduledBookingDateTime(input) {
9385
9385
  try {
9386
9386
  const startsAt = toUtcIsoDateTimeString(input.startsAt);
9387
9387
  const timeZone = parseStrictBookingTimeZone(input.timeZone);
9388
- if (!timeZone) {
9388
+ if (timeZone === null) {
9389
9389
  return {
9390
9390
  ok: false,
9391
9391
  field: "timeZone",
@@ -9431,10 +9431,10 @@ function normalizeLocationAddressText(value) {
9431
9431
  return null;
9432
9432
  }
9433
9433
  const trimmed = value.trim();
9434
- return trimmed ? trimmed : null;
9434
+ return trimmed.length > 0 ? trimmed : null;
9435
9435
  }
9436
9436
  function hasLocationCoordinates(value) {
9437
- return typeof value?.lat === "number" && typeof value?.lng === "number";
9437
+ return value != null && typeof value.lat === "number" && typeof value.lng === "number";
9438
9438
  }
9439
9439
  function toLocationCoordinates(value) {
9440
9440
  if (!hasLocationCoordinates(value)) {
@@ -39854,11 +39854,11 @@ function extractRouteUpdatedAt(candidate) {
39854
39854
  }
39855
39855
  function resolveRouteTargetForStage(routeIdValue, routes, stageInput) {
39856
39856
  const routeId = typeof routeIdValue === "string" ? routeIdValue : null;
39857
- if (!routeId || !routes) return null;
39857
+ if (routeId === null || routeId.length === 0 || routes === void 0) return null;
39858
39858
  const routeEntry = routes[routeId];
39859
39859
  if (!isRouteVisibleInStage(routeEntry, stageInput)) return null;
39860
39860
  const href = extractRouteHref(routeEntry, stageInput);
39861
- if (!href) return null;
39861
+ if (href === null) return null;
39862
39862
  return {
39863
39863
  routeId,
39864
39864
  href,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riverbankcms/sdk",
3
- "version": "0.90.1",
3
+ "version": "0.91.0",
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-FA6LVZ7C.mjs';
3
- import './chunk-UG7I7S7W.mjs';
4
- import './chunk-H6TT5ZXI.mjs';
5
- import './chunk-SYYJZPKU.mjs';
6
- import './chunk-CR2VX432.mjs';
7
- import './chunk-BOQXMCSP.mjs';
8
- import './chunk-R7POPVJR.mjs';