@riverbankcms/sdk 0.91.0 → 0.93.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/dist/{PreviewEditorSidebar-3TT47WCF.mjs → PreviewEditorSidebar-D3PAF7NW.mjs} +3 -3
- package/dist/{PreviewEditorUI-ORCLLUNZ.mjs → PreviewEditorUI-G5JVJEIJ.mjs} +3 -3
- package/dist/SdkPreviewModeRuntime-NHTLRNQD.mjs +8 -0
- package/dist/_dts/api/src/bookingConfig.d.ts +13 -1
- package/dist/_dts/api/src/bookingOperations.d.ts +1 -0
- package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +6 -6
- package/dist/_dts/api/src/common/envelope.d.ts +10 -0
- package/dist/_dts/api/src/customerMembershipOutcomes.d.ts +4 -4
- package/dist/_dts/api/src/index.d.ts +2 -2
- package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +6 -0
- package/dist/_dts/api/src/request.d.ts +1 -1
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +32 -0
- package/dist/_dts/blocks/src/system/blocks/courses/shared/pricing.d.ts +12 -1
- package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +12 -0
- package/dist/_dts/blocks/src/system/blocks/courses/shared/types.d.ts +4 -1
- package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +44 -0
- package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +8 -1
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +8 -1
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +40 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.reserved-fields.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +29 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/components.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/useCourseRegistrationWizard.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/TicketSelectionStep.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +9 -0
- package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +14 -14
- package/dist/_dts/content-editor/src/controller/useEntrySyncHelpers.d.ts +1 -1
- package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +5 -15
- package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +46 -0
- package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +43 -36
- package/dist/_dts/content-model/src/entry-slots/types.d.ts +110 -2
- package/dist/_dts/core/src/branded.d.ts +3 -0
- package/dist/_dts/core/src/event-pricing.d.ts +18 -1
- package/dist/_dts/core/src/money-input.d.ts +34 -4
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +70 -0
- package/dist/_dts/media-core/src/fileAssetCompatibility.d.ts +1 -1
- package/dist/_dts/media-core/src/filePersistence.d.ts +5 -1
- package/dist/_dts/media-core/src/fileStorage.d.ts +1 -0
- package/dist/_dts/media-core/src/fileUploadFinalization.d.ts +29 -1
- package/dist/_dts/media-core/src/index.d.ts +1 -0
- package/dist/_dts/media-core/src/legacyMediaValue.d.ts +11 -0
- package/dist/_dts/media-core/src/videoPrep.d.ts +15 -6
- package/dist/_dts/media-core/src/videoSlotPolicy.d.ts +5 -5
- package/dist/_dts/media-react/src/hooks/useApiMediaUploader.d.ts +2 -1
- package/dist/_dts/sdk/src/cli/commands/push/execute/diff.d.ts +2 -0
- package/dist/_dts/sdk/src/cli/commands/push/execute/localMediaReporting.d.ts +23 -0
- package/dist/_dts/sdk/src/cli/commands/push/scopes/commandBackedDatedOfferingScope.d.ts +54 -0
- package/dist/_dts/sdk/src/cli/commands/push/scopes/mediaPrep.d.ts +7 -2
- package/dist/_dts/sdk/src/cli/commands/push/scopes/types.d.ts +6 -0
- package/dist/_dts/sdk/src/cli/media/local-sync.d.ts +35 -0
- package/dist/_dts/sdk/src/rendering/islands/types.d.ts +23 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/{chunk-GDT2QGIL.mjs → chunk-A63UXN3P.mjs} +21 -19
- package/dist/{chunk-U5YM4AWE.mjs → chunk-AJZGT6YG.mjs} +1 -1
- package/dist/{chunk-AFPMCLS7.mjs → chunk-AQ6RT6LZ.mjs} +2 -2
- package/dist/{chunk-ZA2S7H34.mjs → chunk-NT76QGIJ.mjs} +98 -1
- package/dist/{chunk-RQUZYSES.mjs → chunk-PCNCETBI.mjs} +1196 -426
- package/dist/{chunk-S3YHJWEU.mjs → chunk-XIK2HYI3.mjs} +7 -7
- package/dist/cli/index.mjs +749 -166
- package/dist/client/{accordion-AFX37652.mjs → accordion-RNQIPG55.mjs} +2 -2
- package/dist/client/{bookingForm-32V5QCOW.mjs → bookingForm-HYEEVRLP.mjs} +89 -14
- package/dist/client/bookings.mjs +243 -17
- package/dist/client/{carousel-TJGQJ7ER.mjs → carousel-W7DQ3YPU.mjs} +3 -3
- package/dist/client/{cart-JUU2JEW4.mjs → cart-PXJ3SXXO.mjs} +7 -7
- package/dist/client/{checkout-RD6BTFX4.mjs → checkout-X3JYSOXI.mjs} +7 -7
- package/dist/client/{chunk-MLBNVN4H.mjs → chunk-6SYGVVWA.mjs} +67 -4
- package/dist/client/{chunk-E6VIWZUG.mjs → chunk-DUOHLWLF.mjs} +3 -3
- package/dist/client/{chunk-6QZIBNGV.mjs → chunk-IXDSXF2D.mjs} +154 -16
- package/dist/client/{chunk-CKXEUWWA.mjs → chunk-J6TMMMXW.mjs} +3 -3
- package/dist/client/{chunk-PMNAV6LO.mjs → chunk-JNE6UI6U.mjs} +7 -6
- package/dist/client/{chunk-ISAUXU5R.mjs → chunk-OLAOAZEO.mjs} +1 -1
- package/dist/client/{chunk-RWYFG625.mjs → chunk-PCHACQEB.mjs} +30 -2
- package/dist/client/{chunk-FMZZHAIR.mjs → chunk-PICR3NTQ.mjs} +52 -5
- package/dist/client/{chunk-6RN62XBV.mjs → chunk-Q47XGAGS.mjs} +1 -1
- package/dist/client/{chunk-WHZQDPBZ.mjs → chunk-TNGL2WJF.mjs} +1 -0
- package/dist/client/{chunk-C4LP6BPG.mjs → chunk-WERRJXNJ.mjs} +1 -1
- package/dist/client/{chunk-RMOFBBNA.mjs → chunk-YYVGSYBO.mjs} +6 -6
- package/dist/client/client.mjs +641 -54
- package/dist/client/{courseRegistration-X63QAIVV.mjs → courseRegistration-QZ67PVHO.mjs} +111 -11
- package/dist/client/{eventCalendar-5T24GCZL.mjs → eventCalendar-V3BDHQNT.mjs} +9 -9
- package/dist/client/{eventCombined-AZVTF22X.mjs → eventCombined-XYFRN2RG.mjs} +9 -9
- package/dist/client/{eventDetails-7GPFNLGF.mjs → eventDetails-TFE5TWKV.mjs} +9 -9
- package/dist/client/{eventListing-QEUMTMUM.mjs → eventListing-IQ6AGWZ6.mjs} +9 -9
- package/dist/client/{eventRegistration-P2EDKCQZ.mjs → eventRegistration-WGJVFKQJ.mjs} +9 -9
- package/dist/client/{form-NUJ7H4IN.mjs → form-6UZY6RUA.mjs} +3 -3
- package/dist/client/{headerSection-JB7LECPL.mjs → headerSection-RSFXY6V3.mjs} +3 -3
- package/dist/client/hooks.mjs +57 -5
- package/dist/client/{locationMap-UEYWUCSW.mjs → locationMap-24FH67I4.mjs} +3 -3
- package/dist/client/{newsletterForm-S2YZQ2X7.mjs → newsletterForm-QVL3MLTN.mjs} +3 -3
- package/dist/client/{productDetail-H5MADGG7.mjs → productDetail-ZDYN3G4T.mjs} +7 -7
- package/dist/client/{productList-DK7YON7H.mjs → productList-4BMJLQHZ.mjs} +7 -7
- package/dist/client/rendering/client.mjs +503 -36
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +583 -39
- package/dist/client/{shop-6PA7RDRJ.mjs → shop-U5C634FF.mjs} +7 -7
- package/dist/preview-next/client/runtime.mjs +5 -5
- package/dist/{sdk-runtime-JP5347OB.mjs → sdk-runtime-VGV46WVB.mjs} +6 -6
- package/dist/server/components.mjs +287 -68
- package/dist/server/config-validation.mjs +58 -5
- package/dist/server/config.mjs +58 -5
- package/dist/server/data.mjs +57 -5
- package/dist/server/index.mjs +104 -29
- package/dist/server/next.mjs +347 -85
- package/dist/server/page-converter.mjs +22 -5
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +287 -68
- package/dist/server/rendering.mjs +287 -68
- package/dist/server/routing.mjs +131 -67
- package/dist/server/server.mjs +189 -94
- package/package.json +1 -1
- package/dist/SdkPreviewModeRuntime-GMCDQPZZ.mjs +0 -8
package/dist/server/next.mjs
CHANGED
|
@@ -6481,6 +6481,8 @@ function err(error) {
|
|
|
6481
6481
|
|
|
6482
6482
|
// ../core/src/branded.ts
|
|
6483
6483
|
var unsafeAsMediaAssetId = (id) => id;
|
|
6484
|
+
var unsafeAsStorageBucketName = (value) => value;
|
|
6485
|
+
var unsafeAsStoragePath = (value) => value;
|
|
6484
6486
|
|
|
6485
6487
|
// ../core/src/assert-never.ts
|
|
6486
6488
|
function assertNever(value, message = "Unexpected variant") {
|
|
@@ -6535,6 +6537,7 @@ function publicEventPricingType(pricing) {
|
|
|
6535
6537
|
return "free";
|
|
6536
6538
|
case "single_paid":
|
|
6537
6539
|
case "ticket_types":
|
|
6540
|
+
case "sliding_scale":
|
|
6538
6541
|
case "course":
|
|
6539
6542
|
return isFreePublicEventPriceDisplay(pricing.display) ? "free" : "paid";
|
|
6540
6543
|
case "external":
|
|
@@ -6547,6 +6550,7 @@ function publicEventPricingCurrency(pricing) {
|
|
|
6547
6550
|
case "free_registration":
|
|
6548
6551
|
case "single_paid":
|
|
6549
6552
|
case "ticket_types":
|
|
6553
|
+
case "sliding_scale":
|
|
6550
6554
|
return pricing.currency;
|
|
6551
6555
|
case "course":
|
|
6552
6556
|
return pricing.display.display.currency;
|
|
@@ -6578,6 +6582,8 @@ function formatCoursePriceDisplayLabel(display, options) {
|
|
|
6578
6582
|
return `Course (${formatCurrencyAmount(display.amount, display.currency, options)})`;
|
|
6579
6583
|
case "from":
|
|
6580
6584
|
return `Course (From ${formatCurrencyAmount(display.amount, display.currency, options)})`;
|
|
6585
|
+
case "range":
|
|
6586
|
+
return `Course (${formatCurrencyAmount(display.minAmount, display.currency, options)} - ${formatCurrencyAmount(display.maxAmount, display.currency, options)})`;
|
|
6581
6587
|
default:
|
|
6582
6588
|
return assertNever(display);
|
|
6583
6589
|
}
|
|
@@ -7028,64 +7034,76 @@ function formatKeyAsLabel(key) {
|
|
|
7028
7034
|
// ../blocks/src/system/manifest/fieldValidation/index.ts
|
|
7029
7035
|
import { z as z6 } from "zod";
|
|
7030
7036
|
|
|
7031
|
-
// ../
|
|
7032
|
-
|
|
7033
|
-
|
|
7034
|
-
|
|
7035
|
-
|
|
7036
|
-
|
|
7037
|
-
|
|
7038
|
-
}
|
|
7039
|
-
|
|
7040
|
-
|
|
7041
|
-
|
|
7042
|
-
code: "custom",
|
|
7043
|
-
message: "Internal links with resolved metadata must include entityId, entityType, href, title, and typeLabel"
|
|
7044
|
-
});
|
|
7045
|
-
});
|
|
7046
|
-
var internalResolvedLinkSchema = z3.object({
|
|
7047
|
-
kind: z3.literal("internal"),
|
|
7048
|
-
routeId: z3.string().min(1),
|
|
7049
|
-
entityId: z3.string().min(1),
|
|
7050
|
-
entityType: z3.enum(["page", "content"]),
|
|
7051
|
-
href: z3.string().min(1),
|
|
7052
|
-
title: z3.string().min(1),
|
|
7053
|
-
typeLabel: z3.string().min(1),
|
|
7054
|
-
contentTypeKey: nullableString.optional(),
|
|
7055
|
-
contentTypeName: nullableString.optional(),
|
|
7056
|
-
updatedAt: nullableString.optional()
|
|
7057
|
-
}).passthrough();
|
|
7058
|
-
var internalLinkSchema = z3.union([
|
|
7059
|
-
internalResolvedLinkSchema,
|
|
7060
|
-
internalRouteOnlyLinkSchema
|
|
7061
|
-
]);
|
|
7062
|
-
var externalLinkSchema2 = z3.object({
|
|
7063
|
-
kind: z3.literal("external"),
|
|
7064
|
-
href: z3.string().min(1)
|
|
7065
|
-
}).passthrough();
|
|
7066
|
-
var customLinkSchema2 = z3.object({
|
|
7067
|
-
kind: z3.literal("url"),
|
|
7068
|
-
href: z3.string().min(1)
|
|
7069
|
-
}).passthrough();
|
|
7070
|
-
var pageLinkSchema2 = z3.object({
|
|
7071
|
-
kind: z3.literal("page"),
|
|
7072
|
-
identifier: z3.string().min(1)
|
|
7073
|
-
}).passthrough();
|
|
7074
|
-
var entryLinkSchema2 = z3.object({
|
|
7075
|
-
kind: z3.literal("entry"),
|
|
7076
|
-
contentType: z3.string().min(1),
|
|
7077
|
-
identifier: z3.string().min(1)
|
|
7078
|
-
}).passthrough();
|
|
7079
|
-
var linkSchema = z3.union([
|
|
7080
|
-
internalLinkSchema,
|
|
7081
|
-
externalLinkSchema2,
|
|
7082
|
-
customLinkSchema2,
|
|
7083
|
-
pageLinkSchema2,
|
|
7084
|
-
entryLinkSchema2
|
|
7085
|
-
]);
|
|
7037
|
+
// ../media-core/src/fileSafety.ts
|
|
7038
|
+
var CONTROL_CHARACTER_PATTERN = /[\u0000-\u001f\u007f]/u;
|
|
7039
|
+
function containsUnsafePathSegmentCharacter(value) {
|
|
7040
|
+
return value.includes("/") || value.includes("\\") || CONTROL_CHARACTER_PATTERN.test(value);
|
|
7041
|
+
}
|
|
7042
|
+
function isReservedPathSegment(value) {
|
|
7043
|
+
return value === "." || value === "..";
|
|
7044
|
+
}
|
|
7045
|
+
function isUnsafePathSegment(segment) {
|
|
7046
|
+
return segment.trim().length === 0 || segment !== segment.trim() || isReservedPathSegment(segment) || containsUnsafePathSegmentCharacter(segment);
|
|
7047
|
+
}
|
|
7086
7048
|
|
|
7087
|
-
// ../
|
|
7088
|
-
|
|
7049
|
+
// ../media-core/src/fileStorage.ts
|
|
7050
|
+
var FILE_STORAGE_BUCKETS = {
|
|
7051
|
+
publicSite: unsafeAsStorageBucketName("media"),
|
|
7052
|
+
privateSite: unsafeAsStorageBucketName("site-files-private"),
|
|
7053
|
+
temporary: unsafeAsStorageBucketName("temp-uploads")
|
|
7054
|
+
};
|
|
7055
|
+
var PUBLIC_SITE_FILE_STORAGE_BUCKETS = [
|
|
7056
|
+
FILE_STORAGE_BUCKETS.publicSite,
|
|
7057
|
+
// Existing site logo and font uploads predate the unified file buckets.
|
|
7058
|
+
unsafeAsStorageBucketName("site-assets"),
|
|
7059
|
+
unsafeAsStorageBucketName("site-fonts")
|
|
7060
|
+
];
|
|
7061
|
+
var PRIVATE_SITE_FILE_BUCKET_MIME_TYPES = [
|
|
7062
|
+
"application/pdf",
|
|
7063
|
+
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
7064
|
+
"text/plain",
|
|
7065
|
+
"application/rtf",
|
|
7066
|
+
"text/rtf",
|
|
7067
|
+
"image/jpeg",
|
|
7068
|
+
"image/png",
|
|
7069
|
+
"image/webp",
|
|
7070
|
+
"image/gif",
|
|
7071
|
+
"image/avif",
|
|
7072
|
+
"image/heic",
|
|
7073
|
+
"image/heif",
|
|
7074
|
+
"image/svg+xml",
|
|
7075
|
+
"text/csv",
|
|
7076
|
+
"application/csv",
|
|
7077
|
+
"application/vnd.ms-excel",
|
|
7078
|
+
"application/zip",
|
|
7079
|
+
"application/x-zip-compressed",
|
|
7080
|
+
"audio/mpeg",
|
|
7081
|
+
"audio/mp4",
|
|
7082
|
+
"audio/wav",
|
|
7083
|
+
"audio/x-wav",
|
|
7084
|
+
"audio/ogg",
|
|
7085
|
+
"audio/webm",
|
|
7086
|
+
"audio/flac",
|
|
7087
|
+
"video/mp4",
|
|
7088
|
+
"video/webm",
|
|
7089
|
+
"video/quicktime"
|
|
7090
|
+
];
|
|
7091
|
+
var TEMP_UPLOAD_BUCKET_MIME_TYPES = [
|
|
7092
|
+
...PRIVATE_SITE_FILE_BUCKET_MIME_TYPES,
|
|
7093
|
+
"font/woff2",
|
|
7094
|
+
"application/font-woff2",
|
|
7095
|
+
"application/x-font-woff2",
|
|
7096
|
+
"application/octet-stream"
|
|
7097
|
+
];
|
|
7098
|
+
function parseStoragePath(value) {
|
|
7099
|
+
return joinStoragePathSegments(value.split("/"));
|
|
7100
|
+
}
|
|
7101
|
+
function joinStoragePathSegments(segments) {
|
|
7102
|
+
if (segments.some(isUnsafePathSegment)) {
|
|
7103
|
+
return err("unsafe-path-segment");
|
|
7104
|
+
}
|
|
7105
|
+
return ok(unsafeAsStoragePath(segments.join("/")));
|
|
7106
|
+
}
|
|
7089
7107
|
|
|
7090
7108
|
// ../media-core/src/typeGuards.ts
|
|
7091
7109
|
function isRecord(value) {
|
|
@@ -7103,10 +7121,10 @@ var RELATIVE_STORAGE_PATH_PREFIXES = [
|
|
|
7103
7121
|
"imports/"
|
|
7104
7122
|
];
|
|
7105
7123
|
function isRelativeDirectImageStoragePath(storagePath) {
|
|
7106
|
-
return RELATIVE_STORAGE_PATH_PREFIXES.some((prefix) => storagePath.startsWith(prefix));
|
|
7124
|
+
return RELATIVE_STORAGE_PATH_PREFIXES.some((prefix) => storagePath.startsWith(prefix)) && parseStoragePath(storagePath).ok;
|
|
7107
7125
|
}
|
|
7108
7126
|
function isSiteScopedDirectImageStoragePath(storagePath) {
|
|
7109
|
-
return storagePath.startsWith("sites/");
|
|
7127
|
+
return storagePath.startsWith("sites/") && parseStoragePath(storagePath).ok;
|
|
7110
7128
|
}
|
|
7111
7129
|
function encodeStoragePath(storagePath) {
|
|
7112
7130
|
return storagePath.split("/").map((segment) => encodeURIComponent(segment)).join("/");
|
|
@@ -7362,6 +7380,82 @@ function mediaIdentifierOrFallback(current, fallback2) {
|
|
|
7362
7380
|
return fallback2 ?? (typeof current === "string" ? current : void 0);
|
|
7363
7381
|
}
|
|
7364
7382
|
|
|
7383
|
+
// ../media-core/src/legacyMediaValue.ts
|
|
7384
|
+
function legacyStringMediaTypeForField(field) {
|
|
7385
|
+
if (field.type === "file") {
|
|
7386
|
+
return field.fileKinds?.[0] ?? "document";
|
|
7387
|
+
}
|
|
7388
|
+
return field.mediaKinds?.[0] ?? "image";
|
|
7389
|
+
}
|
|
7390
|
+
function normalizeLegacyStringMediaValueForField(value, field) {
|
|
7391
|
+
if (typeof value !== "string") return value;
|
|
7392
|
+
const src = value.trim();
|
|
7393
|
+
if (!src) return value;
|
|
7394
|
+
return {
|
|
7395
|
+
type: legacyStringMediaTypeForField(field),
|
|
7396
|
+
src
|
|
7397
|
+
};
|
|
7398
|
+
}
|
|
7399
|
+
|
|
7400
|
+
// ../blocks/src/system/types/link.ts
|
|
7401
|
+
import { z as z3 } from "zod";
|
|
7402
|
+
var nullableString = z3.union([z3.string().min(1), z3.null()]);
|
|
7403
|
+
var resolvedInternalLinkKeys = ["entityId", "entityType", "href", "title", "typeLabel"];
|
|
7404
|
+
var internalRouteOnlyLinkSchema = z3.object({
|
|
7405
|
+
kind: z3.literal("internal"),
|
|
7406
|
+
routeId: z3.string().min(1)
|
|
7407
|
+
}).passthrough().superRefine((value, ctx) => {
|
|
7408
|
+
const hasResolvedMetadata = resolvedInternalLinkKeys.some((key) => value[key] != null);
|
|
7409
|
+
if (!hasResolvedMetadata) return;
|
|
7410
|
+
ctx.addIssue({
|
|
7411
|
+
code: "custom",
|
|
7412
|
+
message: "Internal links with resolved metadata must include entityId, entityType, href, title, and typeLabel"
|
|
7413
|
+
});
|
|
7414
|
+
});
|
|
7415
|
+
var internalResolvedLinkSchema = z3.object({
|
|
7416
|
+
kind: z3.literal("internal"),
|
|
7417
|
+
routeId: z3.string().min(1),
|
|
7418
|
+
entityId: z3.string().min(1),
|
|
7419
|
+
entityType: z3.enum(["page", "content"]),
|
|
7420
|
+
href: z3.string().min(1),
|
|
7421
|
+
title: z3.string().min(1),
|
|
7422
|
+
typeLabel: z3.string().min(1),
|
|
7423
|
+
contentTypeKey: nullableString.optional(),
|
|
7424
|
+
contentTypeName: nullableString.optional(),
|
|
7425
|
+
updatedAt: nullableString.optional()
|
|
7426
|
+
}).passthrough();
|
|
7427
|
+
var internalLinkSchema = z3.union([
|
|
7428
|
+
internalResolvedLinkSchema,
|
|
7429
|
+
internalRouteOnlyLinkSchema
|
|
7430
|
+
]);
|
|
7431
|
+
var externalLinkSchema2 = z3.object({
|
|
7432
|
+
kind: z3.literal("external"),
|
|
7433
|
+
href: z3.string().min(1)
|
|
7434
|
+
}).passthrough();
|
|
7435
|
+
var customLinkSchema2 = z3.object({
|
|
7436
|
+
kind: z3.literal("url"),
|
|
7437
|
+
href: z3.string().min(1)
|
|
7438
|
+
}).passthrough();
|
|
7439
|
+
var pageLinkSchema2 = z3.object({
|
|
7440
|
+
kind: z3.literal("page"),
|
|
7441
|
+
identifier: z3.string().min(1)
|
|
7442
|
+
}).passthrough();
|
|
7443
|
+
var entryLinkSchema2 = z3.object({
|
|
7444
|
+
kind: z3.literal("entry"),
|
|
7445
|
+
contentType: z3.string().min(1),
|
|
7446
|
+
identifier: z3.string().min(1)
|
|
7447
|
+
}).passthrough();
|
|
7448
|
+
var linkSchema = z3.union([
|
|
7449
|
+
internalLinkSchema,
|
|
7450
|
+
externalLinkSchema2,
|
|
7451
|
+
customLinkSchema2,
|
|
7452
|
+
pageLinkSchema2,
|
|
7453
|
+
entryLinkSchema2
|
|
7454
|
+
]);
|
|
7455
|
+
|
|
7456
|
+
// ../blocks/src/system/manifest/schema.ts
|
|
7457
|
+
import { z as z5 } from "zod";
|
|
7458
|
+
|
|
7365
7459
|
// ../blocks/src/system/node/schema.ts
|
|
7366
7460
|
import { z as z4 } from "zod";
|
|
7367
7461
|
var transformStepSchema = z4.object({
|
|
@@ -9122,7 +9216,10 @@ function deriveFieldValidationPlan(field, path = [field.id]) {
|
|
|
9122
9216
|
return makePlan("richText", "object", field, path, required, commonConstraints(required, { kind: "richTextDoc" }));
|
|
9123
9217
|
case "media":
|
|
9124
9218
|
case "file":
|
|
9125
|
-
return
|
|
9219
|
+
return {
|
|
9220
|
+
...makePlan("media", "object", field, path, required, commonConstraints(required, { kind: "mediaObject" })),
|
|
9221
|
+
legacyStringType: legacyStringMediaTypeForField(field)
|
|
9222
|
+
};
|
|
9126
9223
|
case "link":
|
|
9127
9224
|
return makePlan("link", "object", field, path, required, commonConstraints(required, { kind: "linkObject" }));
|
|
9128
9225
|
case "boolean":
|
|
@@ -9307,15 +9404,23 @@ function normalizeFieldValue(plan, value, ctx) {
|
|
|
9307
9404
|
return normalizeRepeaterItems(plan, value, ctx);
|
|
9308
9405
|
case "boolean":
|
|
9309
9406
|
case "richText":
|
|
9310
|
-
case "media":
|
|
9311
9407
|
case "link":
|
|
9312
9408
|
case "select":
|
|
9313
9409
|
case "passthrough":
|
|
9314
9410
|
return value;
|
|
9411
|
+
case "media":
|
|
9412
|
+
return normalizeMediaInput(plan, value);
|
|
9315
9413
|
default:
|
|
9316
9414
|
return assertNever2(plan);
|
|
9317
9415
|
}
|
|
9318
9416
|
}
|
|
9417
|
+
function normalizeMediaInput(plan, value) {
|
|
9418
|
+
return normalizeLegacyStringMediaValueForField(value, {
|
|
9419
|
+
type: plan.fieldType,
|
|
9420
|
+
mediaKinds: plan.fieldType === "media" ? [plan.legacyStringType] : void 0,
|
|
9421
|
+
fileKinds: plan.fieldType === "file" ? [plan.legacyStringType] : void 0
|
|
9422
|
+
});
|
|
9423
|
+
}
|
|
9319
9424
|
function normalizeObjectChildren(children, value, ctx) {
|
|
9320
9425
|
if (!value || typeof value !== "object" || Array.isArray(value)) return value;
|
|
9321
9426
|
const normalized = {
|
|
@@ -9579,6 +9684,21 @@ function fieldPlanToZod(plan, options = {}) {
|
|
|
9579
9684
|
}
|
|
9580
9685
|
});
|
|
9581
9686
|
}
|
|
9687
|
+
function fieldPresenceForPlan(plan) {
|
|
9688
|
+
return plan.required ? { kind: "required" } : { kind: "optional" };
|
|
9689
|
+
}
|
|
9690
|
+
function fieldPlanToObjectPropertyZod(plan, options = {}) {
|
|
9691
|
+
const schema = fieldPlanToZod(plan, options);
|
|
9692
|
+
const presence = fieldPresenceForPlan(plan);
|
|
9693
|
+
switch (presence.kind) {
|
|
9694
|
+
case "required":
|
|
9695
|
+
return schema;
|
|
9696
|
+
case "optional":
|
|
9697
|
+
return schema.optional();
|
|
9698
|
+
default:
|
|
9699
|
+
return assertNever2(presence);
|
|
9700
|
+
}
|
|
9701
|
+
}
|
|
9582
9702
|
function addFieldIssueToZodContext(zodCtx, validationIssue, rootPath) {
|
|
9583
9703
|
const message = fieldIssueToMessage(validationIssue);
|
|
9584
9704
|
const path = relativeZodIssuePath(validationIssue.path, rootPath);
|
|
@@ -9791,7 +9911,7 @@ function createManifestValidator(manifestOrFields, options = {}) {
|
|
|
9791
9911
|
function deriveContentZodFromPlans(plans, options) {
|
|
9792
9912
|
const shape = {};
|
|
9793
9913
|
for (const plan of plans) {
|
|
9794
|
-
shape[plan.fieldId] =
|
|
9914
|
+
shape[plan.fieldId] = fieldPlanToObjectPropertyZod(plan, options);
|
|
9795
9915
|
}
|
|
9796
9916
|
return z7.object(shape).catchall(z7.unknown()).passthrough();
|
|
9797
9917
|
}
|
|
@@ -32900,9 +33020,12 @@ var coursePricingOptionSchema = z45.object({
|
|
|
32900
33020
|
});
|
|
32901
33021
|
var coursePricingSchema = z45.object({
|
|
32902
33022
|
bookingRequirement: z45.enum(["none", "required"]),
|
|
32903
|
-
pricingStrategy: z45.enum(["free", "single", "tiered"]),
|
|
33023
|
+
pricingStrategy: z45.enum(["free", "single", "tiered", "sliding_scale"]),
|
|
32904
33024
|
currency: z45.string(),
|
|
32905
33025
|
singlePriceAmount: z45.number().nullable(),
|
|
33026
|
+
slidingMinAmount: z45.number().nullable().optional(),
|
|
33027
|
+
slidingMaxAmount: z45.number().nullable().optional(),
|
|
33028
|
+
slidingSuggestedAmount: z45.number().nullable().optional(),
|
|
32906
33029
|
paymentTerms: blockBookingPaymentTermsSchema,
|
|
32907
33030
|
options: z45.array(coursePricingOptionSchema)
|
|
32908
33031
|
});
|
|
@@ -33056,6 +33179,19 @@ var publicEventPricingSchema = z46.discriminatedUnion("kind", [
|
|
|
33056
33179
|
ticketTypes: z46.array(publicEventTicketTypeSchema),
|
|
33057
33180
|
display: publicEventTicketTypePriceDisplaySchema
|
|
33058
33181
|
}),
|
|
33182
|
+
z46.object({
|
|
33183
|
+
kind: z46.literal("sliding_scale"),
|
|
33184
|
+
minAmount: z46.number(),
|
|
33185
|
+
maxAmount: z46.number(),
|
|
33186
|
+
suggestedAmount: z46.number().nullable(),
|
|
33187
|
+
currency: z46.string(),
|
|
33188
|
+
display: z46.object({
|
|
33189
|
+
kind: z46.literal("range"),
|
|
33190
|
+
minAmount: z46.number(),
|
|
33191
|
+
maxAmount: z46.number(),
|
|
33192
|
+
currency: z46.string()
|
|
33193
|
+
})
|
|
33194
|
+
}),
|
|
33059
33195
|
z46.object({
|
|
33060
33196
|
kind: z46.literal("course"),
|
|
33061
33197
|
display: z46.object({ kind: z46.literal("course"), display: publicCoursePriceDisplaySchema })
|
|
@@ -33472,7 +33608,7 @@ function isRecord6(value) {
|
|
|
33472
33608
|
}
|
|
33473
33609
|
function isPublicEventPricing(value) {
|
|
33474
33610
|
if (!isRecord6(value) || typeof value.kind !== "string") return false;
|
|
33475
|
-
return value.kind === "drop_in" || value.kind === "free_registration" || value.kind === "single_paid" || value.kind === "ticket_types" || value.kind === "course" || value.kind === "external";
|
|
33611
|
+
return value.kind === "drop_in" || value.kind === "free_registration" || value.kind === "single_paid" || value.kind === "sliding_scale" || value.kind === "ticket_types" || value.kind === "course" || value.kind === "external";
|
|
33476
33612
|
}
|
|
33477
33613
|
function isPublicEventTicketType(value) {
|
|
33478
33614
|
return isRecord6(value) && typeof value.id === "string";
|
|
@@ -34089,7 +34225,9 @@ function getSelectableCoursePricingOptionsForNow(course, now) {
|
|
|
34089
34225
|
return left.name.localeCompare(right.name);
|
|
34090
34226
|
});
|
|
34091
34227
|
}
|
|
34092
|
-
function resolveCoursePricingState(course, selectedPricingOptionId, nowInput = {}) {
|
|
34228
|
+
function resolveCoursePricingState(course, selectedPricingOptionId, selectedSlidingAmountOrNowInput, nowInput = {}) {
|
|
34229
|
+
const selectedSlidingAmount = typeof selectedSlidingAmountOrNowInput === "number" || selectedSlidingAmountOrNowInput === null ? selectedSlidingAmountOrNowInput : null;
|
|
34230
|
+
const effectiveNowInput = typeof selectedSlidingAmountOrNowInput === "object" && selectedSlidingAmountOrNowInput !== null ? selectedSlidingAmountOrNowInput : nowInput;
|
|
34093
34231
|
const currency = course.pricing?.currency ?? course.currency;
|
|
34094
34232
|
if (!course.pricing) {
|
|
34095
34233
|
const legacyAmount = course.priceCents ?? 0;
|
|
@@ -34099,6 +34237,8 @@ function resolveCoursePricingState(course, selectedPricingOptionId, nowInput = {
|
|
|
34099
34237
|
selectableOptions: [],
|
|
34100
34238
|
requiresSelection: false,
|
|
34101
34239
|
selectedOption: null,
|
|
34240
|
+
slidingScale: null,
|
|
34241
|
+
selectedSlidingAmount: null,
|
|
34102
34242
|
selectedPriceAmount: legacyAmount,
|
|
34103
34243
|
selectedRequiresPayment: legacyAmount > 0,
|
|
34104
34244
|
hasPaidSelection: legacyAmount > 0,
|
|
@@ -34113,6 +34253,8 @@ function resolveCoursePricingState(course, selectedPricingOptionId, nowInput = {
|
|
|
34113
34253
|
selectableOptions: [],
|
|
34114
34254
|
requiresSelection: false,
|
|
34115
34255
|
selectedOption: null,
|
|
34256
|
+
slidingScale: null,
|
|
34257
|
+
selectedSlidingAmount: null,
|
|
34116
34258
|
selectedPriceAmount: 0,
|
|
34117
34259
|
selectedRequiresPayment: false,
|
|
34118
34260
|
hasPaidSelection: false,
|
|
@@ -34126,6 +34268,8 @@ function resolveCoursePricingState(course, selectedPricingOptionId, nowInput = {
|
|
|
34126
34268
|
selectableOptions: [],
|
|
34127
34269
|
requiresSelection: false,
|
|
34128
34270
|
selectedOption: null,
|
|
34271
|
+
slidingScale: null,
|
|
34272
|
+
selectedSlidingAmount: null,
|
|
34129
34273
|
selectedPriceAmount: amount,
|
|
34130
34274
|
selectedRequiresPayment: amount > 0,
|
|
34131
34275
|
hasPaidSelection: amount > 0,
|
|
@@ -34135,7 +34279,7 @@ function resolveCoursePricingState(course, selectedPricingOptionId, nowInput = {
|
|
|
34135
34279
|
case "tiered": {
|
|
34136
34280
|
const selectableOptions = getSelectableCoursePricingOptionsForNow(
|
|
34137
34281
|
course,
|
|
34138
|
-
resolvePlanningDateInput(
|
|
34282
|
+
resolvePlanningDateInput(effectiveNowInput)
|
|
34139
34283
|
);
|
|
34140
34284
|
const selectedOption = (selectedPricingOptionId ? selectableOptions.find((option) => option.id === selectedPricingOptionId) : null) ?? (selectableOptions.length === 1 ? selectableOptions[0] ?? null : null);
|
|
34141
34285
|
const lowestAmount = selectableOptions.reduce((lowest, option) => {
|
|
@@ -34151,12 +34295,51 @@ function resolveCoursePricingState(course, selectedPricingOptionId, nowInput = {
|
|
|
34151
34295
|
selectableOptions,
|
|
34152
34296
|
requiresSelection: selectableOptions.length > 1,
|
|
34153
34297
|
selectedOption,
|
|
34298
|
+
slidingScale: null,
|
|
34299
|
+
selectedSlidingAmount: null,
|
|
34154
34300
|
selectedPriceAmount: selectedOption?.priceAmount ?? null,
|
|
34155
34301
|
selectedRequiresPayment: (selectedOption?.priceAmount ?? 0) > 0,
|
|
34156
34302
|
hasPaidSelection: selectableOptions.some((option) => option.priceAmount > 0),
|
|
34157
34303
|
hasFreeSelection: selectableOptions.some((option) => option.priceAmount === 0)
|
|
34158
34304
|
};
|
|
34159
34305
|
}
|
|
34306
|
+
case "sliding_scale": {
|
|
34307
|
+
const minAmount = course.pricing.slidingMinAmount ?? null;
|
|
34308
|
+
const maxAmount = course.pricing.slidingMaxAmount ?? null;
|
|
34309
|
+
if (minAmount === null || maxAmount === null || minAmount < 0 || maxAmount < minAmount) {
|
|
34310
|
+
return {
|
|
34311
|
+
currency,
|
|
34312
|
+
display: { kind: "unavailable", currency },
|
|
34313
|
+
selectableOptions: [],
|
|
34314
|
+
requiresSelection: true,
|
|
34315
|
+
selectedOption: null,
|
|
34316
|
+
slidingScale: null,
|
|
34317
|
+
selectedSlidingAmount: null,
|
|
34318
|
+
selectedPriceAmount: null,
|
|
34319
|
+
selectedRequiresPayment: false,
|
|
34320
|
+
hasPaidSelection: false,
|
|
34321
|
+
hasFreeSelection: false
|
|
34322
|
+
};
|
|
34323
|
+
}
|
|
34324
|
+
const normalizedSelectedAmount = typeof selectedSlidingAmount === "number" && Number.isFinite(selectedSlidingAmount) ? selectedSlidingAmount : null;
|
|
34325
|
+
return {
|
|
34326
|
+
currency,
|
|
34327
|
+
display: { kind: "range", minAmount, maxAmount, currency },
|
|
34328
|
+
selectableOptions: [],
|
|
34329
|
+
requiresSelection: normalizedSelectedAmount === null,
|
|
34330
|
+
selectedOption: null,
|
|
34331
|
+
slidingScale: {
|
|
34332
|
+
minAmount,
|
|
34333
|
+
maxAmount,
|
|
34334
|
+
suggestedAmount: course.pricing.slidingSuggestedAmount ?? null
|
|
34335
|
+
},
|
|
34336
|
+
selectedSlidingAmount: normalizedSelectedAmount,
|
|
34337
|
+
selectedPriceAmount: normalizedSelectedAmount,
|
|
34338
|
+
selectedRequiresPayment: (normalizedSelectedAmount ?? 0) > 0,
|
|
34339
|
+
hasPaidSelection: maxAmount > 0,
|
|
34340
|
+
hasFreeSelection: minAmount === 0
|
|
34341
|
+
};
|
|
34342
|
+
}
|
|
34160
34343
|
}
|
|
34161
34344
|
}
|
|
34162
34345
|
function formatCoursePriceDisplay(display, locale) {
|
|
@@ -46636,6 +46819,7 @@ var bookingServiceSchema = z66.object({
|
|
|
46636
46819
|
title: z66.string(),
|
|
46637
46820
|
description: z66.string().nullable().optional().transform((value) => value ?? void 0),
|
|
46638
46821
|
durationMinutes: z66.number().optional(),
|
|
46822
|
+
pricing: z66.custom().optional(),
|
|
46639
46823
|
priceAmount: z66.number().nullable().optional(),
|
|
46640
46824
|
priceCurrency: z66.string().nullable().optional(),
|
|
46641
46825
|
paymentTerms: blockBookingPaymentTermsSchema.optional(),
|
|
@@ -67366,12 +67550,85 @@ function resolveApiBaseUrl() {
|
|
|
67366
67550
|
}
|
|
67367
67551
|
|
|
67368
67552
|
// ../api/src/common/envelope.ts
|
|
67553
|
+
var API_ERROR_CODES = [
|
|
67554
|
+
"auth:unauthenticated",
|
|
67555
|
+
"auth:token_expired",
|
|
67556
|
+
"auth:token_invalid",
|
|
67557
|
+
"auth:forbidden",
|
|
67558
|
+
"auth:mfa_required",
|
|
67559
|
+
"auth:sudo_required",
|
|
67560
|
+
"auth:insufficient_permissions",
|
|
67561
|
+
"auth:impersonation_restricted",
|
|
67562
|
+
"validation:invalid_input",
|
|
67563
|
+
"validation:missing_field",
|
|
67564
|
+
"validation:invalid_format",
|
|
67565
|
+
"validation:payload_too_large",
|
|
67566
|
+
"resource:not_found",
|
|
67567
|
+
"resource:already_exists",
|
|
67568
|
+
"resource:conflict",
|
|
67569
|
+
"resource:gone",
|
|
67570
|
+
"rate_limit:exceeded",
|
|
67571
|
+
"billing:payment_required",
|
|
67572
|
+
"billing:plan_limit_exceeded",
|
|
67573
|
+
"billing:pass_redemption_failed",
|
|
67574
|
+
"server:internal_error",
|
|
67575
|
+
"server:unavailable",
|
|
67576
|
+
"external:service_error",
|
|
67577
|
+
"external:registrar_orphaned_contact_profile",
|
|
67578
|
+
"network:connection_error",
|
|
67579
|
+
"network:timeout",
|
|
67580
|
+
"network:dns_error"
|
|
67581
|
+
];
|
|
67582
|
+
var API_ERROR_CODE_SET = new Set(API_ERROR_CODES);
|
|
67583
|
+
function isApiErrorCode(value) {
|
|
67584
|
+
return typeof value === "string" && API_ERROR_CODE_SET.has(value);
|
|
67585
|
+
}
|
|
67369
67586
|
function isApiError(result) {
|
|
67370
67587
|
return result.success === false;
|
|
67371
67588
|
}
|
|
67372
67589
|
function isApiSuccess(result) {
|
|
67373
67590
|
return result.success === true;
|
|
67374
67591
|
}
|
|
67592
|
+
function isRecord14(value) {
|
|
67593
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
67594
|
+
}
|
|
67595
|
+
function isFieldError(value) {
|
|
67596
|
+
return isRecord14(value) && typeof value.field === "string" && typeof value.code === "string" && typeof value.message === "string";
|
|
67597
|
+
}
|
|
67598
|
+
function fieldErrorsFromUnknown(value) {
|
|
67599
|
+
if (!Array.isArray(value)) return null;
|
|
67600
|
+
return value.every(isFieldError) ? value : null;
|
|
67601
|
+
}
|
|
67602
|
+
function extractEnvelopeErrorObject(body) {
|
|
67603
|
+
if (!isRecord14(body)) return null;
|
|
67604
|
+
const error = body.error;
|
|
67605
|
+
if (!isRecord14(error)) return null;
|
|
67606
|
+
if ("success" in body && body.success !== false) {
|
|
67607
|
+
return null;
|
|
67608
|
+
}
|
|
67609
|
+
return error;
|
|
67610
|
+
}
|
|
67611
|
+
function extractApiEnvelopeErrorDetails(body) {
|
|
67612
|
+
const error = extractEnvelopeErrorObject(body);
|
|
67613
|
+
if (!error) {
|
|
67614
|
+
return {
|
|
67615
|
+
rawCode: null,
|
|
67616
|
+
code: null,
|
|
67617
|
+
message: null,
|
|
67618
|
+
status: null,
|
|
67619
|
+
fieldErrors: null
|
|
67620
|
+
};
|
|
67621
|
+
}
|
|
67622
|
+
const rawCode = typeof error.code === "string" ? error.code : null;
|
|
67623
|
+
const message = typeof error.message === "string" && error.message.trim().length > 0 ? error.message : null;
|
|
67624
|
+
return {
|
|
67625
|
+
rawCode,
|
|
67626
|
+
code: isApiErrorCode(rawCode) ? rawCode : null,
|
|
67627
|
+
message,
|
|
67628
|
+
status: typeof error.status === "number" && Number.isFinite(error.status) ? error.status : null,
|
|
67629
|
+
fieldErrors: fieldErrorsFromUnknown(error.fieldErrors)
|
|
67630
|
+
};
|
|
67631
|
+
}
|
|
67375
67632
|
var ApiEnvelopeError = class extends Error {
|
|
67376
67633
|
constructor(error) {
|
|
67377
67634
|
super(error.message);
|
|
@@ -67768,6 +68025,7 @@ function createParsedClient(rawClient) {
|
|
|
67768
68025
|
const auth = config.auth ?? "user";
|
|
67769
68026
|
if (!response.ok) {
|
|
67770
68027
|
const body = await parseErrorBody(response);
|
|
68028
|
+
const envelopeError = extractApiEnvelopeErrorDetails(body);
|
|
67771
68029
|
const requestId = response.headers.get("x-request-id") ?? void 0;
|
|
67772
68030
|
const retryAfterMs = parseRetryAfterHeader(response.headers.get("retry-after"));
|
|
67773
68031
|
throw new ApiRequestError(
|
|
@@ -67779,6 +68037,7 @@ function createParsedClient(rawClient) {
|
|
|
67779
68037
|
auth,
|
|
67780
68038
|
requestId,
|
|
67781
68039
|
body,
|
|
68040
|
+
errorCode: envelopeError.code ?? void 0,
|
|
67782
68041
|
retryAfterMs
|
|
67783
68042
|
}
|
|
67784
68043
|
);
|
|
@@ -67808,6 +68067,7 @@ var CANONICAL_REFUND_CONFLICT_CODES = [
|
|
|
67808
68067
|
];
|
|
67809
68068
|
var CANONICAL_REFUND_PLANNER_ERROR_CODES = [
|
|
67810
68069
|
...CANONICAL_REFUND_CONFLICT_CODES,
|
|
68070
|
+
"invalid_amount",
|
|
67811
68071
|
"amount_exceeds_remaining",
|
|
67812
68072
|
"pass_revoke_requires_full_refund",
|
|
67813
68073
|
"refund_failed"
|
|
@@ -67834,6 +68094,7 @@ var CUSTOMER_MEMBERSHIP_PAYMENT_REFUND_FAILED_CODES = [
|
|
|
67834
68094
|
// ../api/src/bookingRefundOutcomes.ts
|
|
67835
68095
|
var STANDARD_LINE_ITEM_REFUND_INVALID_CODES = [
|
|
67836
68096
|
"missing_amount",
|
|
68097
|
+
"invalid_amount",
|
|
67837
68098
|
"amount_exceeds_remaining",
|
|
67838
68099
|
"credit_refunds_disabled",
|
|
67839
68100
|
"missing_credit_customer",
|
|
@@ -67848,6 +68109,7 @@ var EVENT_ATTENDEE_REFUND_INVALID_CODES = [
|
|
|
67848
68109
|
var MANAGED_PRODUCT_REFUND_INVALID_CODES = [
|
|
67849
68110
|
"credit_refunds_disabled",
|
|
67850
68111
|
"not_refundable",
|
|
68112
|
+
"invalid_amount",
|
|
67851
68113
|
"amount_exceeds_remaining"
|
|
67852
68114
|
];
|
|
67853
68115
|
var CUSTOMER_PASS_REFUND_INVALID_CODES = [
|
|
@@ -68092,7 +68354,7 @@ function preset(id, verticalId, canonicalBehaviour, label, pluralLabel, descript
|
|
|
68092
68354
|
}
|
|
68093
68355
|
|
|
68094
68356
|
// ../api/src/utils/isRecord.ts
|
|
68095
|
-
function
|
|
68357
|
+
function isRecord15(value) {
|
|
68096
68358
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
68097
68359
|
}
|
|
68098
68360
|
|
|
@@ -68399,7 +68661,7 @@ function sanitizeMarks(marks) {
|
|
|
68399
68661
|
if (mark.type === "bold" || mark.type === "strong" || mark.type === "italic" || mark.type === "em") {
|
|
68400
68662
|
return [{ type: mark.type }];
|
|
68401
68663
|
}
|
|
68402
|
-
if (mark.type === "link" &&
|
|
68664
|
+
if (mark.type === "link" && isRecord15(mark.attrs) && typeof mark.attrs.href === "string") {
|
|
68403
68665
|
const attrs = { href: mark.attrs.href };
|
|
68404
68666
|
if (typeof mark.attrs.target === "string" && mark.attrs.target.trim().length > 0) {
|
|
68405
68667
|
attrs.target = mark.attrs.target;
|
|
@@ -68414,10 +68676,10 @@ function sanitizeMarks(marks) {
|
|
|
68414
68676
|
return sanitized.length > 0 ? sanitized : void 0;
|
|
68415
68677
|
}
|
|
68416
68678
|
function unwrapRichTextValue(value) {
|
|
68417
|
-
if (
|
|
68679
|
+
if (isRecord15(value) && isRecord15(value.doc)) {
|
|
68418
68680
|
return unwrapRichTextValue(value.doc);
|
|
68419
68681
|
}
|
|
68420
|
-
if (
|
|
68682
|
+
if (isRecord15(value) && value.type === "doc") {
|
|
68421
68683
|
return {
|
|
68422
68684
|
type: "doc",
|
|
68423
68685
|
content: Array.isArray(value.content) ? value.content.filter(isTipTapNodeLike).map(coerceTipTapNode) : []
|
|
@@ -68426,7 +68688,7 @@ function unwrapRichTextValue(value) {
|
|
|
68426
68688
|
return EMPTY_SITE_BANNER_BODY;
|
|
68427
68689
|
}
|
|
68428
68690
|
function isTipTapNodeLike(value) {
|
|
68429
|
-
return
|
|
68691
|
+
return isRecord15(value) && typeof value.type === "string";
|
|
68430
68692
|
}
|
|
68431
68693
|
function coerceTipTapNode(value) {
|
|
68432
68694
|
return {
|
|
@@ -68434,9 +68696,9 @@ function coerceTipTapNode(value) {
|
|
|
68434
68696
|
...Array.isArray(value.content) ? { content: value.content.filter(isTipTapNodeLike).map(coerceTipTapNode) } : {},
|
|
68435
68697
|
...typeof value.text === "string" ? { text: value.text } : {},
|
|
68436
68698
|
...Array.isArray(value.marks) ? {
|
|
68437
|
-
marks: value.marks.filter((mark) =>
|
|
68699
|
+
marks: value.marks.filter((mark) => isRecord15(mark) && typeof mark.type === "string").map((mark) => ({
|
|
68438
68700
|
type: mark.type,
|
|
68439
|
-
...
|
|
68701
|
+
...isRecord15(mark.attrs) ? { attrs: mark.attrs } : {}
|
|
68440
68702
|
}))
|
|
68441
68703
|
} : {}
|
|
68442
68704
|
};
|
|
@@ -68626,7 +68888,7 @@ var ENTRY_REF_KEYS = [
|
|
|
68626
68888
|
"entryId",
|
|
68627
68889
|
"slug"
|
|
68628
68890
|
];
|
|
68629
|
-
function
|
|
68891
|
+
function isRecord16(value) {
|
|
68630
68892
|
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
68631
68893
|
}
|
|
68632
68894
|
function extractManualEntryRef(item) {
|
|
@@ -68634,7 +68896,7 @@ function extractManualEntryRef(item) {
|
|
|
68634
68896
|
const trimmed = item.trim();
|
|
68635
68897
|
return trimmed.length > 0 ? trimmed : null;
|
|
68636
68898
|
}
|
|
68637
|
-
if (!
|
|
68899
|
+
if (!isRecord16(item)) return null;
|
|
68638
68900
|
for (const key of ENTRY_REF_KEYS) {
|
|
68639
68901
|
const raw = item[key];
|
|
68640
68902
|
if (typeof raw === "string" && raw.trim().length > 0) {
|
|
@@ -69159,7 +69421,7 @@ function collectMediaAssetSidecar(mediaAssets) {
|
|
|
69159
69421
|
return Array.isArray(mediaAssets) && mediaAssets.length > 0 ? mediaAssets : void 0;
|
|
69160
69422
|
}
|
|
69161
69423
|
function convertPageResponseBlock(block) {
|
|
69162
|
-
if (!
|
|
69424
|
+
if (!isRecord17(block)) {
|
|
69163
69425
|
throw new Error("Invalid block format in page API response");
|
|
69164
69426
|
}
|
|
69165
69427
|
if (typeof block.id !== "string" && block.id !== null) {
|
|
@@ -69190,20 +69452,20 @@ function buildPageOutline(input) {
|
|
|
69190
69452
|
blocks: input.blocks.map(convertPageResponseBlock)
|
|
69191
69453
|
};
|
|
69192
69454
|
}
|
|
69193
|
-
function
|
|
69455
|
+
function isRecord17(value) {
|
|
69194
69456
|
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
69195
69457
|
}
|
|
69196
69458
|
function readContentRecord(value) {
|
|
69197
|
-
return
|
|
69459
|
+
return isRecord17(value) ? value : void 0;
|
|
69198
69460
|
}
|
|
69199
69461
|
function readNestedContentRecord(value) {
|
|
69200
|
-
if (!
|
|
69462
|
+
if (!isRecord17(value)) return null;
|
|
69201
69463
|
return readContentRecord(value.data) ?? null;
|
|
69202
69464
|
}
|
|
69203
69465
|
function sanitizeSdkRuntimeBlockContent(blockKind, content) {
|
|
69204
69466
|
if (blockKind !== "block.newsletter-signup") return content;
|
|
69205
69467
|
const sanitized = sanitizeNewsletterSignupPublicContent(content);
|
|
69206
|
-
return
|
|
69468
|
+
return isRecord17(sanitized) ? sanitized : {};
|
|
69207
69469
|
}
|
|
69208
69470
|
function sanitizeNullableSdkRuntimeBlockContent(blockKind, content) {
|
|
69209
69471
|
return content ? sanitizeSdkRuntimeBlockContent(blockKind, content) : null;
|
|
@@ -69820,15 +70082,15 @@ function Page(props2) {
|
|
|
69820
70082
|
var lazyBlockOverrideSymbol = /* @__PURE__ */ Symbol.for("riverbankcms.sdk.lazyBlockOverride");
|
|
69821
70083
|
|
|
69822
70084
|
// src/rendering/overrideResolution.ts
|
|
69823
|
-
function
|
|
70085
|
+
function isRecord18(value) {
|
|
69824
70086
|
return typeof value === "object" && value !== null;
|
|
69825
70087
|
}
|
|
69826
70088
|
function isBlockOutlineLike(value) {
|
|
69827
70089
|
const id = value.id;
|
|
69828
|
-
return typeof value.kind === "string" && (typeof id === "string" || id === null) && (typeof value.purpose === "string" ||
|
|
70090
|
+
return typeof value.kind === "string" && (typeof id === "string" || id === null) && (typeof value.purpose === "string" || isRecord18(value.content) || isRecord18(value.draftContent) || isRecord18(value.bindings));
|
|
69829
70091
|
}
|
|
69830
70092
|
function collectBlockKindsFromValue(value, usedKinds, seen) {
|
|
69831
|
-
if (!
|
|
70093
|
+
if (!isRecord18(value)) return;
|
|
69832
70094
|
if (seen.has(value)) return;
|
|
69833
70095
|
seen.add(value);
|
|
69834
70096
|
if (isBlockOutlineLike(value)) {
|
|
@@ -69877,7 +70139,7 @@ function selectOverrideKeysForUsedKinds(usedKinds, entries) {
|
|
|
69877
70139
|
return selectedKeys;
|
|
69878
70140
|
}
|
|
69879
70141
|
function isLazyRegistration(registration) {
|
|
69880
|
-
return
|
|
70142
|
+
return isRecord18(registration) && registration[lazyBlockOverrideSymbol] === true;
|
|
69881
70143
|
}
|
|
69882
70144
|
async function resolveOverrideComponent(registration) {
|
|
69883
70145
|
if (isLazyRegistration(registration)) {
|
|
@@ -70879,7 +71141,7 @@ var CircuitOpenError = class extends Error {
|
|
|
70879
71141
|
};
|
|
70880
71142
|
|
|
70881
71143
|
// src/version.ts
|
|
70882
|
-
var SDK_VERSION = "0.
|
|
71144
|
+
var SDK_VERSION = "0.93.0";
|
|
70883
71145
|
|
|
70884
71146
|
// src/next/content-load-failure.ts
|
|
70885
71147
|
var SdkContentLoadError = RiverbankContentLoadError;
|