riverbankcms 0.4.0 → 0.4.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.
- package/README.md +3 -6
- package/dist/cli/index.mjs +258 -149
- package/dist/{load-config-Co37ncZD.mjs → load-config-CCaUI4HN.mjs} +1 -1
- package/dist/load-config-CNhueqVc.mjs +5 -0
- package/dist/{sdk-peer-DZNUBvf5.mjs → sdk-peer-C6kOODEY.mjs} +2 -2
- package/dist/{style-TmApGKZX.mjs → style-qH8rqy9H.mjs} +94 -4
- package/dist/testing.mjs +2 -2
- package/package.json +1 -1
- package/dist/load-config-Dz8ygC-Z.mjs +0 -5
package/README.md
CHANGED
|
@@ -27,9 +27,6 @@ Media replacement flags have been removed. `--overwrite-media` and
|
|
|
27
27
|
or identifier already belong to another asset, keep the existing asset, choose
|
|
28
28
|
a new identifier, or delete and upload the asset again in the dashboard.
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
reports unexpected rows in a local, staging, or restored database, assign those
|
|
34
|
-
listed assets canonical, site-unique identifiers and rerun the migration; do not
|
|
35
|
-
bypass its guard.
|
|
30
|
+
Every persisted media asset now has a canonical, site-unique identifier. Backup
|
|
31
|
+
restore preserves an existing asset's identifier and rejects an archive that
|
|
32
|
+
tries to replace it.
|
package/dist/cli/index.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { $ as require_jsx_runtime, $n as NAV_LINK_LETTER_SPACING_MAP, $r as surfaceForegroundDeclarations, $t as formatIgnoredDocumentSyncSectionWarning, A as getImageUrl, An as MQ_SM_DOWN, Ar as isCssColorLiteral, At as parseJsonData, B as createDryRunReport, Bn as eyebrowTreatmentValues, Br as resolveSurfaceForeground, Bt as planEnvironmentExecution, C as rotateNormalizedPoint, Cn as BREAKPOINT_LG, Cr as RESOLVED_BUTTON_DISABLED_DECLARATIONS, Ct as currentInvocationEnvelope, D as resolveMediaTransformForAspect, Dn as MQ_LG_UP, Dr as contextualButtonSurfaceStyles, Dt as handleCommandError, E as parseAspectRatioValue, En as BREAKPOINT_XL, Er as contextualButtonSurfaceResetStyles, Et as getOutputOnlyContext, F as parseRelativeStoragePath, Fn as assertNever$4, Fr as borderColorStyle, Ft as withConfirmation, G as getSiteCommandMetadata, Gn as testimonialsCompositionTreatmentValues, Gr as TokenResolver, Gt as CliExit, H as mapEventCommandContent, Hn as headingDecorationColorTokenValues, Hr as generateEffectsCSS, Ht as requireEnvironmentWriteAuthorization, I as classifyKnownMimeType, In as defineBlockDesignCapability, Ir as cssVarValue, It as withErrorHandling, J as entryIdentifierForCommand, Jn as getComponentBorderWidthPx, Jr as parseThemeForPersistence, Jt as getEnvironmentDebugInfo, K as blockIdentifierForCommand, Kn as tileTreatmentValues, Kr as parseThemeButtonVariantId, Kt as getEnvPrefix, L as venueManagementFields, Ln as defineFrameCapability, Lr as mergeStyles, Lt as withOutputOnlyErrorHandling, M as deriveVideoSlotPolicy, Mn as MQ_TABLET_ONLY, Mr as resolveThemeColorReferenceValue, Mt as resolveCommandPath, N as resolveVideoSelectionIntentForMediaField, Nn as headerVariantValues, Nr as resolveTokenOrCssColorValue, Nt as runWithInvocation, O as getDirectImageUrlForRelativePath, On as MQ_MD_DOWN, Or as deriveButtonSurfaceContext, Ot as mapEntryForOutput, P as asRecord$1, Pn as pageDesignEditorBackgroundOverrideOwner, Pr as backgroundColorStyle, Pt as withCommandContext, Q as hasConfiguredBookingVertical, Qn as NAV_LINK_BORDER_RADIUS_MAP, Qr as DEFAULT_SURFACE_TEXT_COLOR, Qt as createManagementClient, R as sortRecord, Rn as defineNoBlockDesignCapability, Rr as rgbColorValue, Rt as executeEnvironmentPlan, S as deleteEnvSpecificKeys, Sn as renderHeaderPaintTargetRules, Sr as generateButtonCss, St as createOutputForCommand, T as isExplicitRectCrop, Tn as BREAKPOINT_SM, Tr as resolvedButtonFocusDeclarations, Tt as getOutputContext, U as evaluateSiteCommandBatchExposure, Un as introCompositionTreatmentValues, Ur as generateBaseInteractiveCSS, Ut as withRiverbankEnv, V as parseAndPlanCommandBatchForTypes, Vn as featureCardCompositionTreatmentValues, Vr as generateDefaultButtonSystem, Vt as planEnvironmentWriteAuthorization, W as evaluateSiteCommandExposure, Wn as offeringsPreviewCompositionTreatmentValues, Wr as generateInteractiveChildInheritanceCSS, Wt as formatError, X as pageIdentifierForCommand, Xn as parseBlockCustomCssRules, Xr as formatButtonColourContractError, Xt as isRemoteConfigured, Y as pageIdentifierForBlockCommand, Yn as getComponentShadowVar, Yr as compileButtonColourStates, Yt as isLocalConfigured, Z as pagePathForCommand, Zn as parseCustomCssRules, Zr as generateShadowValue, Zt as loadSdkEnvironment, _ as hasOwnSettingsField, _i as linkPayloadSchema, _n as boxBackgroundOverlaySchema, _r as cardRoleSchema, _t as confirmAction, a as syncLocalMediaForPull, ai as getTextColorForBackground, an as GRADIENT_PRESET_IDS, ar as INPUT_SPACING_MAP, at as createCommandRef, b as attachRenderableMediaAssetFields, bn as generateMobileOverlayBackdropFilterFix, br as PUBLIC_BUTTON_ROLES, bt as createGetCommand, c as sha256, ci as hexToRgb, cn as boundaryRuntimeMetricsForTransition, cr as ACCORDION_SPACING_MAP, ct as createEventSeriesRef, d as walkLocalContentMedia, di as unsafeAsOpaqueButtonColourToken, dn as parseBackgroundAppearanceColorToken, dr as ICON_CONFIG, dt as createNavigationRef, ei as surfaceForegroundStyle, en as ManagementApiError, er as NAV_LINK_PADDING_MAP, et as require_react, f as buildStorageUrl, fi as parseBlockColorToken, fn as defaultThemeTokens, fr as ICON_SIZE_PX, ft as createPageRef, g as buildSettingsUpdateInput, gi as persistableMediaSchema, gn as themeSchema, gr as generateShadowValue$1, gt as slugPart, h as SETTINGS_FILE_FIELDS, hi as mediaTypeDiscriminants, hn as sdkThemeWireSchema, hr as generateCardCss, ht as refSlug, ii as onColorTokenName, in as gradientToCss, ir as INPUT_FONT_SIZE_MAP, it as createBlocksRef, j as isSiteScopedDirectImageStoragePath, jn as MQ_SM_UP, jr as resolveOnColorForThemeToken, jt as parsePaginationOptions, k as getDirectImageUrlForSiteScopedPath, kn as MQ_MD_UP, kr as resolveContextualButtonRole, kt as parseJsonArray, l as normalizeMediaIdentifierInput, li as VARIANT_ROLES, ln as backgroundAppearanceColorTokenNames, lr as ACCORDION_TRIGGER_FONT_SCALE, lt as createFooterRef, m as extractMediaIdentifiers, mi as mediaSchema, mn as sdkSettingsUpdateSchema, mr as getDefaultCardVariants, mt as createVenueRef, n as createStyleCommand, ni as expandPalette, nn as readHeaderNavFontSizePreference, nr as NAV_LINK_TEXT_SIZE_MAP, nt as generateCssVars, o as applyLocalMediaPush, oi as ORDINARY_TEXT_MIN_CONTRAST_RATIO, on as getGradientPreset, or as LABEL_FONT_SIZE_MAP, ot as createContentEntryRef, p as downloadMedia, pi as mediaIdentifierSchema, pn as defineBlockDesignMetadata, pr as generateCardCoreCss, pt as createSiteCommandSiteRef, q as blockOrderIdentifiersForCommand, qn as visibleHeadingDecorationFamilyValues, qr as themeButtonClassName, qt as getEnvVarName, r as revalidateLocalMediaPushPlan, ri as isOnColorBackgroundCandidateToken, rn as getCuratedSiteStyle, rr as FONT_WEIGHT_MAP, rt as createBlockRef, s as prepareLocalMediaForPush, si as featuresFromHex, sn as parseGradientPresetId, sr as ACCORDION_OPEN_ACCENT_THICKNESS, st as createEventCategoryRef, ti as surfaceForegroundValue, tn as mergeHeaderNavTypographyPreference, tr as NAV_LINK_PADDING_X_MAP, tt as pickShadeTowardBackground, u as normalizeMediaValueToIdentifierOnly, ui as buttonVariantIdSchema, un as backgroundAppearanceQuickColorTokenNames, ur as ACCORDION_TRIGGER_LETTER_SPACING, ut as createFormRef, v as writeMediaManifest, vi as
|
|
2
|
+
import { $ as require_jsx_runtime, $n as NAV_LINK_LETTER_SPACING_MAP, $r as surfaceForegroundDeclarations, $t as formatIgnoredDocumentSyncSectionWarning, A as getImageUrl, Ai as __toESM, An as MQ_SM_DOWN, Ar as isCssColorLiteral, At as parseJsonData, B as createDryRunReport, Bn as eyebrowTreatmentValues, Br as resolveSurfaceForeground, Bt as planEnvironmentExecution, C as rotateNormalizedPoint, Ci as internalResolvedLinkSchema, Cn as BREAKPOINT_LG, Cr as RESOLVED_BUTTON_DISABLED_DECLARATIONS, Ct as currentInvocationEnvelope, D as resolveMediaTransformForAspect, Di as linkSchema, Dn as MQ_LG_UP, Dr as contextualButtonSurfaceStyles, Dt as handleCommandError, E as parseAspectRatioValue, Ei as isResolvedInternalLinkEntityType, En as BREAKPOINT_XL, Er as contextualButtonSurfaceResetStyles, Et as getOutputOnlyContext, F as parseRelativeStoragePath, Fn as assertNever$4, Fr as borderColorStyle, Ft as withConfirmation, G as getSiteCommandMetadata, Gn as testimonialsCompositionTreatmentValues, Gr as TokenResolver, Gt as CliExit, H as mapEventCommandContent, Hn as headingDecorationColorTokenValues, Hr as generateEffectsCSS, Ht as requireEnvironmentWriteAuthorization, I as classifyKnownMimeType, In as defineBlockDesignCapability, Ir as cssVarValue, It as withErrorHandling, J as entryIdentifierForCommand, Jn as getComponentBorderWidthPx, Jr as parseThemeForPersistence, Jt as getEnvironmentDebugInfo, K as blockIdentifierForCommand, Kn as tileTreatmentValues, Kr as parseThemeButtonVariantId, Kt as getEnvPrefix, L as venueManagementFields, Ln as defineFrameCapability, Lr as mergeStyles, Lt as withOutputOnlyErrorHandling, M as deriveVideoSlotPolicy, Mn as MQ_TABLET_ONLY, Mr as resolveThemeColorReferenceValue, Mt as resolveCommandPath, N as resolveVideoSelectionIntentForMediaField, Nn as headerVariantValues, Nr as resolveTokenOrCssColorValue, Nt as runWithInvocation, O as getDirectImageUrlForRelativePath, Oi as pageLinkSchema$1, On as MQ_MD_DOWN, Or as deriveButtonSurfaceContext, Ot as mapEntryForOutput, P as asRecord$1, Pn as pageDesignEditorBackgroundOverrideOwner, Pr as backgroundColorStyle, Pt as withCommandContext, Q as hasConfiguredBookingVertical, Qn as NAV_LINK_BORDER_RADIUS_MAP, Qr as DEFAULT_SURFACE_TEXT_COLOR, Qt as createManagementClient, R as sortRecord, Rn as defineNoBlockDesignCapability, Rr as rgbColorValue, Rt as executeEnvironmentPlan, S as deleteEnvSpecificKeys, Si as internalLinkSchema, Sn as renderHeaderPaintTargetRules, Sr as generateButtonCss, St as createOutputForCommand, T as isExplicitRectCrop, Ti as isInternalResolvedLinkValue, Tn as BREAKPOINT_SM, Tr as resolvedButtonFocusDeclarations, Tt as getOutputContext, U as evaluateSiteCommandBatchExposure, Un as introCompositionTreatmentValues, Ur as generateBaseInteractiveCSS, Ut as withRiverbankEnv, V as parseAndPlanCommandBatchForTypes, Vn as featureCardCompositionTreatmentValues, Vr as generateDefaultButtonSystem, Vt as planEnvironmentWriteAuthorization, W as evaluateSiteCommandExposure, Wn as offeringsPreviewCompositionTreatmentValues, Wr as generateInteractiveChildInheritanceCSS, Wt as formatError, X as pageIdentifierForCommand, Xn as parseBlockCustomCssRules, Xr as formatButtonColourContractError, Xt as isRemoteConfigured, Y as pageIdentifierForBlockCommand, Yn as getComponentShadowVar, Yr as compileButtonColourStates, Yt as isLocalConfigured, Z as pagePathForCommand, Zn as parseCustomCssRules, Zr as generateShadowValue, Zt as loadSdkEnvironment, _ as hasOwnSettingsField, _i as linkPayloadSchema, _n as boxBackgroundOverlaySchema, _r as cardRoleSchema, _t as confirmAction, a as syncLocalMediaForPull, ai as getTextColorForBackground, an as GRADIENT_PRESET_IDS, ar as INPUT_SPACING_MAP, at as createCommandRef, b as attachRenderableMediaAssetFields, bi as entryLinkSchema$1, bn as generateMobileOverlayBackdropFilterFix, br as PUBLIC_BUTTON_ROLES, bt as createGetCommand, c as sha256, ci as hexToRgb, cn as boundaryRuntimeMetricsForTransition, cr as ACCORDION_SPACING_MAP, ct as createEventSeriesRef, d as walkLocalContentMedia, di as unsafeAsOpaqueButtonColourToken, dn as parseBackgroundAppearanceColorToken, dr as ICON_CONFIG, dt as createNavigationRef, ei as surfaceForegroundStyle, en as ManagementApiError, er as NAV_LINK_PADDING_MAP, et as require_react, f as buildStorageUrl, fi as parseBlockColorToken, fn as defaultThemeTokens, fr as ICON_SIZE_PX, ft as createPageRef, g as buildSettingsUpdateInput, gi as persistableMediaSchema, gn as themeSchema, gr as generateShadowValue$1, gt as slugPart, h as SETTINGS_FILE_FIELDS, hi as mediaTypeDiscriminants, hn as sdkThemeWireSchema, hr as generateCardCss, ht as refSlug, ii as onColorTokenName, in as gradientToCss, ir as INPUT_FONT_SIZE_MAP, it as createBlocksRef, j as isSiteScopedDirectImageStoragePath, jn as MQ_SM_UP, jr as resolveOnColorForThemeToken, jt as parsePaginationOptions, k as getDirectImageUrlForSiteScopedPath, ki as sdkConfiguredBookingVerticalConfigSchema, kn as MQ_MD_UP, kr as resolveContextualButtonRole, kt as parseJsonArray, l as normalizeMediaIdentifierInput, li as VARIANT_ROLES, ln as backgroundAppearanceColorTokenNames, lr as ACCORDION_TRIGGER_FONT_SCALE, lt as createFooterRef, m as extractMediaIdentifiers, mi as mediaSchema, mn as sdkSettingsUpdateSchema, mr as getDefaultCardVariants, mt as createVenueRef, n as createStyleCommand, ni as expandPalette, nn as readHeaderNavFontSizePreference, nr as NAV_LINK_TEXT_SIZE_MAP, nt as generateCssVars, o as applyLocalMediaPush, oi as ORDINARY_TEXT_MIN_CONTRAST_RATIO, on as getGradientPreset, or as LABEL_FONT_SIZE_MAP, ot as createContentEntryRef, p as downloadMedia, pi as mediaIdentifierSchema, pn as defineBlockDesignMetadata, pr as generateCardCoreCss, pt as createSiteCommandSiteRef, q as blockOrderIdentifiersForCommand, qn as visibleHeadingDecorationFamilyValues, qr as themeButtonClassName, qt as getEnvVarName, r as revalidateLocalMediaPushPlan, ri as isOnColorBackgroundCandidateToken, rn as getCuratedSiteStyle, rr as FONT_WEIGHT_MAP, rt as createBlockRef, s as prepareLocalMediaForPush, si as featuresFromHex, sn as parseGradientPresetId, sr as ACCORDION_OPEN_ACCENT_THICKNESS, st as createEventCategoryRef, ti as surfaceForegroundValue, tn as mergeHeaderNavTypographyPreference, tr as NAV_LINK_PADDING_X_MAP, tt as pickShadeTowardBackground, u as normalizeMediaValueToIdentifierOnly, ui as buttonVariantIdSchema, un as backgroundAppearanceQuickColorTokenNames, ur as ACCORDION_TRIGGER_LETTER_SPACING, ut as createFormRef, v as writeMediaManifest, vi as RESOLVED_INTERNAL_LINK_ENTITY_TYPES, vn as boxBackgroundSchema, vr as cardVariantRoleValues, vt as createClientForEnv, w as normalizeWidthCandidates, wi as internalRouteOnlyLinkSchema, wn as BREAKPOINT_MD, wr as resolvedButtonColourDeclarations, wt as formatDateShort, x as buildRenderableMediaAssetIndex, xi as externalLinkSchema$1, xn as getHeaderPaintTargets, xr as AFFORDANCE_SUPPRESS_CLASS, xt as createListCommand, y as isMediaValue, yi as customLinkSchema$1, yn as generateHeaderScrollTreatmentStyles, yr as normalizeCardRole, yt as createCommandContext, z as stableStringify, zn as eventListTreatmentValues, zr as textColorStyle, zt as parseEnvironmentSelection } from "../style-qH8rqy9H.mjs";
|
|
3
3
|
import { $ as parseEventSeriesId, A as normalizeLocationAddressText, At as ok, C as parseNewsletterSignupDestinationProvider, F as formatLocalScheduleDate, G as parseEventPageSurfaceSubject, H as toScheduledBookingDateRange, I as formatLocalScheduleTime, J as publicEventPricingCurrency, K as formatBookingPriceDisplay, L as getBookingLocalDateKey, M as formatBookingDate, N as formatBookingDateParts, P as formatBookingTime, Q as parseApiKeyId, R as getLocalScheduleDate, S as parseNewsletterSignupAuthoringDestinationValue, T as assertAllowedPublicUrl, U as toScheduledBookingDateTime, V as toBookingTimeZone, X as formatCurrencyAmount, Y as publicEventPricingType, Z as assertNever, _ as parseFooterCompositionV1, b as parseMailchimpTagName, c as EVENT_PRESET_VALUES, ct as unsafeAsDemoCapability, d as resolvePlanningDateInput, et as parseMediaAssetId, f as createSecret, it as unsafeAsAppointmentResourceId, j as toLocationCoordinates, kt as err, m as parseManagementKey, mt as unsafeAsMediaAssetId, nt as parseSiteId, o as resolveSiteVerticalBookingConfig, p as exposeSecret, q as formatEventPricing, r as isEventSeriesVerticalPresetDefinition, rt as parseUserId, s as DEFAULT_EVENT_TYPE_PRESETS, t as areConfiguredBookingVerticalConfigsEqual, tt as parsePageId, u as SURFACE_EVENT_PRESET_VALUES, v as parseFooterModuleId, wt as unsafeAsStaffMemberId, x as parseNewsletterListId, y as parseMailchimpAudienceId$1, z as getLocalScheduleTime } from "../src-BRAF1Dee.mjs";
|
|
4
4
|
import { a as classifySdkEventPricing, o as classifySdkEventPaymentTerms, t as classifySdkEventTiming } from "../sdk-event-upsert-C6zsxDcf.mjs";
|
|
5
|
-
import { r as CLI_VERSION } from "../sdk-peer-
|
|
6
|
-
import { t as loadConfigFile } from "../load-config-
|
|
5
|
+
import { r as CLI_VERSION } from "../sdk-peer-C6kOODEY.mjs";
|
|
6
|
+
import { t as loadConfigFile } from "../load-config-CCaUI4HN.mjs";
|
|
7
7
|
import { a as RichTextDocSchema, c as isRecord$17, i as findUnfilledSentinels, n as buildEntryScaffold, o as isRichTextDoc, r as validateEntryInstance, s as isObjectRecord, t as eventUpsertInputSchema } from "../eventUpsertInputSchema-Dg60PKJI.mjs";
|
|
8
8
|
import { a as prepareScaffoldExecution, c as LOCAL_PACKAGE_VENDOR_DIR, d as loadGeneratedPackageRanges, i as preflightScaffoldTargets, n as createScaffoldCompletion, s as deriveScaffoldLocalManifest, t as deriveScaffoldPlan } from "../plan-CaWqAqfn.mjs";
|
|
9
9
|
import { config } from "dotenv";
|
|
@@ -9768,21 +9768,29 @@ function internalNavigationLinkToLocalLink(item) {
|
|
|
9768
9768
|
* Falls back to an internal route payload for legacy rows or incomplete data.
|
|
9769
9769
|
*/
|
|
9770
9770
|
function toRoutableLinkPayload(item) {
|
|
9771
|
-
|
|
9772
|
-
|
|
9773
|
-
|
|
9774
|
-
|
|
9775
|
-
|
|
9776
|
-
|
|
9777
|
-
|
|
9778
|
-
|
|
9779
|
-
return
|
|
9780
|
-
|
|
9781
|
-
|
|
9782
|
-
|
|
9783
|
-
|
|
9784
|
-
|
|
9771
|
+
switch (item.entityType) {
|
|
9772
|
+
case "page":
|
|
9773
|
+
if (item.identifier) {
|
|
9774
|
+
return {
|
|
9775
|
+
kind: "page",
|
|
9776
|
+
identifier: item.identifier
|
|
9777
|
+
};
|
|
9778
|
+
}
|
|
9779
|
+
return toResolvedInternalPayload(item);
|
|
9780
|
+
case "content":
|
|
9781
|
+
if (item.identifier && item.contentTypeKey) {
|
|
9782
|
+
return {
|
|
9783
|
+
kind: "entry",
|
|
9784
|
+
contentType: item.contentTypeKey,
|
|
9785
|
+
identifier: item.identifier
|
|
9786
|
+
};
|
|
9787
|
+
}
|
|
9788
|
+
return toResolvedInternalPayload(item);
|
|
9789
|
+
case "pageSurface": return toResolvedInternalPayload(item);
|
|
9790
|
+
default: return assertNever(item);
|
|
9785
9791
|
}
|
|
9792
|
+
}
|
|
9793
|
+
function toResolvedInternalPayload(item) {
|
|
9786
9794
|
return {
|
|
9787
9795
|
kind: "internal",
|
|
9788
9796
|
routeId: item.routeId,
|
|
@@ -11871,88 +11879,6 @@ function resolveBlockTitle(manifest, blockContent, blockKind) {
|
|
|
11871
11879
|
};
|
|
11872
11880
|
}
|
|
11873
11881
|
|
|
11874
|
-
//#endregion
|
|
11875
|
-
//#region ../blocks/src/system/types/link.ts
|
|
11876
|
-
const nullableString = z.union([z.string().min(1), z.null()]);
|
|
11877
|
-
const resolvedInternalLinkKeys = [
|
|
11878
|
-
"entityId",
|
|
11879
|
-
"entityType",
|
|
11880
|
-
"href",
|
|
11881
|
-
"title",
|
|
11882
|
-
"typeLabel"
|
|
11883
|
-
];
|
|
11884
|
-
const internalRouteOnlyLinkSchema = z.object({
|
|
11885
|
-
kind: z.literal("internal"),
|
|
11886
|
-
routeId: z.string().min(1)
|
|
11887
|
-
}).passthrough().superRefine((value, ctx) => {
|
|
11888
|
-
const hasResolvedMetadata = resolvedInternalLinkKeys.some((key) => value[key] != null);
|
|
11889
|
-
if (!hasResolvedMetadata) return;
|
|
11890
|
-
ctx.addIssue({
|
|
11891
|
-
code: "custom",
|
|
11892
|
-
message: "Internal links with resolved metadata must include entityId, entityType, href, title, and typeLabel"
|
|
11893
|
-
});
|
|
11894
|
-
});
|
|
11895
|
-
const internalResolvedLinkSchema = z.object({
|
|
11896
|
-
kind: z.literal("internal"),
|
|
11897
|
-
routeId: z.string().min(1),
|
|
11898
|
-
entityId: z.string().min(1),
|
|
11899
|
-
entityType: z.enum(["page", "content"]),
|
|
11900
|
-
href: z.string().min(1),
|
|
11901
|
-
title: z.string().min(1),
|
|
11902
|
-
typeLabel: z.string().min(1),
|
|
11903
|
-
contentTypeKey: nullableString.optional(),
|
|
11904
|
-
contentTypeName: nullableString.optional(),
|
|
11905
|
-
updatedAt: nullableString.optional()
|
|
11906
|
-
}).passthrough();
|
|
11907
|
-
const internalLinkSchema = z.union([internalResolvedLinkSchema, internalRouteOnlyLinkSchema]);
|
|
11908
|
-
const externalLinkSchema$1 = z.object({
|
|
11909
|
-
kind: z.literal("external"),
|
|
11910
|
-
href: z.string().min(1)
|
|
11911
|
-
}).passthrough();
|
|
11912
|
-
const customLinkSchema$1 = z.object({
|
|
11913
|
-
kind: z.literal("url"),
|
|
11914
|
-
href: z.string().min(1)
|
|
11915
|
-
}).passthrough();
|
|
11916
|
-
const pageLinkSchema$1 = z.object({
|
|
11917
|
-
kind: z.literal("page"),
|
|
11918
|
-
identifier: z.string().min(1)
|
|
11919
|
-
}).passthrough();
|
|
11920
|
-
const entryLinkSchema$1 = z.object({
|
|
11921
|
-
kind: z.literal("entry"),
|
|
11922
|
-
contentType: z.string().min(1),
|
|
11923
|
-
identifier: z.string().min(1)
|
|
11924
|
-
}).passthrough();
|
|
11925
|
-
const linkSchema = z.union([
|
|
11926
|
-
internalLinkSchema,
|
|
11927
|
-
externalLinkSchema$1,
|
|
11928
|
-
customLinkSchema$1,
|
|
11929
|
-
pageLinkSchema$1,
|
|
11930
|
-
entryLinkSchema$1
|
|
11931
|
-
]);
|
|
11932
|
-
function visitLinkValueReferences(value, visitor) {
|
|
11933
|
-
const parsed = linkSchema.safeParse(value);
|
|
11934
|
-
if (!parsed.success) {
|
|
11935
|
-
return;
|
|
11936
|
-
}
|
|
11937
|
-
const link$1 = parsed.data;
|
|
11938
|
-
switch (link$1.kind) {
|
|
11939
|
-
case "internal":
|
|
11940
|
-
visitor.routeIds.add(link$1.routeId);
|
|
11941
|
-
return;
|
|
11942
|
-
case "page":
|
|
11943
|
-
visitor.pageIdentifiers.add(link$1.identifier);
|
|
11944
|
-
return;
|
|
11945
|
-
case "entry":
|
|
11946
|
-
visitor.entryIdentifiers.add(link$1.contentType, link$1.identifier);
|
|
11947
|
-
return;
|
|
11948
|
-
case "external":
|
|
11949
|
-
case "url": return;
|
|
11950
|
-
}
|
|
11951
|
-
}
|
|
11952
|
-
function isInternalResolvedLinkValue(value) {
|
|
11953
|
-
return value?.kind === "internal" && "entityId" in value && "entityType" in value && "href" in value && "title" in value && "typeLabel" in value && typeof value.entityId === "string" && typeof value.entityType === "string" && typeof value.href === "string" && typeof value.title === "string" && typeof value.typeLabel === "string";
|
|
11954
|
-
}
|
|
11955
|
-
|
|
11956
11882
|
//#endregion
|
|
11957
11883
|
//#region ../blocks/src/system/node/schema.ts
|
|
11958
11884
|
const transformStepSchema = z.object({
|
|
@@ -28279,6 +28205,42 @@ const blockBookingPaymentCollectionOptionSchema = z.union([
|
|
|
28279
28205
|
]);
|
|
28280
28206
|
const blockBookingPaymentTermsSchema = z.object({ allowedOptions: z.array(blockBookingPaymentCollectionOptionSchema).min(1) });
|
|
28281
28207
|
|
|
28208
|
+
//#endregion
|
|
28209
|
+
//#region ../blocks/src/system/blocks/shared/bookingConsent.ts
|
|
28210
|
+
const BOOKING_REQUIREMENT_CONSENT_FIELD_PREFIX = "booking_requirement_consent_";
|
|
28211
|
+
function toBookingRequirementConsentFieldId(requirementId) {
|
|
28212
|
+
return `${BOOKING_REQUIREMENT_CONSENT_FIELD_PREFIX}${requirementId}`;
|
|
28213
|
+
}
|
|
28214
|
+
function isBookingRequirementConsentFieldId(value) {
|
|
28215
|
+
return value.startsWith(BOOKING_REQUIREMENT_CONSENT_FIELD_PREFIX);
|
|
28216
|
+
}
|
|
28217
|
+
function toBookingRequirementConsentField(consent) {
|
|
28218
|
+
return {
|
|
28219
|
+
id: toBookingRequirementConsentFieldId(consent.requirementId),
|
|
28220
|
+
label: consent.title,
|
|
28221
|
+
type: "booking_requirement_consent",
|
|
28222
|
+
required: true,
|
|
28223
|
+
agreement: consent.agreement,
|
|
28224
|
+
checkboxLabel: consent.checkboxLabel
|
|
28225
|
+
};
|
|
28226
|
+
}
|
|
28227
|
+
const blockBookingConsentSchema = z.object({
|
|
28228
|
+
requirementId: z.string(),
|
|
28229
|
+
title: z.string(),
|
|
28230
|
+
agreement: RichTextDocSchema,
|
|
28231
|
+
checkboxLabel: z.string()
|
|
28232
|
+
});
|
|
28233
|
+
const bookingRequirementConsentFieldSchema = z.object({
|
|
28234
|
+
id: z.string(),
|
|
28235
|
+
label: z.string(),
|
|
28236
|
+
type: z.literal("booking_requirement_consent"),
|
|
28237
|
+
required: z.literal(true),
|
|
28238
|
+
agreement: RichTextDocSchema,
|
|
28239
|
+
checkboxLabel: z.string().min(1)
|
|
28240
|
+
});
|
|
28241
|
+
/** The two live public carriers for consent copy: Event data and appointment fields. */
|
|
28242
|
+
const bookingConsentCarrierSchema = z.union([blockBookingConsentSchema, bookingRequirementConsentFieldSchema]);
|
|
28243
|
+
|
|
28282
28244
|
//#endregion
|
|
28283
28245
|
//#region ../blocks/src/system/blocks/events/whole-series/pricing.ts
|
|
28284
28246
|
function isSaleWindowOpen(option, now) {
|
|
@@ -28546,6 +28508,7 @@ const publicWholeSeriesOfferingSchema = z.object({
|
|
|
28546
28508
|
pricing: wholeSeriesPricingSchema,
|
|
28547
28509
|
currency: z.string(),
|
|
28548
28510
|
paymentTerms: blockBookingPaymentTermsSchema,
|
|
28511
|
+
consent: blockBookingConsentSchema.nullable(),
|
|
28549
28512
|
enrollmentCapacity: z.number().nullable(),
|
|
28550
28513
|
acceptsMemberships: z.boolean(),
|
|
28551
28514
|
status: z.enum([
|
|
@@ -28867,6 +28830,7 @@ const publicEventSchema = z.object({
|
|
|
28867
28830
|
timeZone: z.string(),
|
|
28868
28831
|
pricing: publicEventPricingSchema,
|
|
28869
28832
|
paymentTerms: blockBookingPaymentTermsSchema,
|
|
28833
|
+
consent: blockBookingConsentSchema.nullable(),
|
|
28870
28834
|
accessRestriction: accessRestrictionSchema,
|
|
28871
28835
|
allowedCategoryIds: z.array(z.string()),
|
|
28872
28836
|
requireGuestDetails: z.boolean().optional(),
|
|
@@ -29274,6 +29238,71 @@ function resolveEventRegistrationScopedEvents(events, context) {
|
|
|
29274
29238
|
return applyEventRegistrationScope(events, resolveEventRegistrationScope(context));
|
|
29275
29239
|
}
|
|
29276
29240
|
|
|
29241
|
+
//#endregion
|
|
29242
|
+
//#region ../blocks/src/system/runtime/nodes/event-registration/registrationSurface.ts
|
|
29243
|
+
function planEventRegistrationScope(input) {
|
|
29244
|
+
const subject = input.subject;
|
|
29245
|
+
const selectedRunOffering = input.wholeSeriesOffering;
|
|
29246
|
+
if (subject?.kind !== "eventOffering" || !selectedRunOffering) {
|
|
29247
|
+
return {
|
|
29248
|
+
kind: "context",
|
|
29249
|
+
events: resolveEventRegistrationScopedEvents(input.events, {
|
|
29250
|
+
occurrenceContext: input.occurrenceContext,
|
|
29251
|
+
subject
|
|
29252
|
+
})
|
|
29253
|
+
};
|
|
29254
|
+
}
|
|
29255
|
+
const belongsToSubject = selectedRunOffering.eventOfferingId === subject.eventOfferingId && subject.availableEventSeriesIds.some((seriesId) => seriesId === selectedRunOffering.eventSeriesId);
|
|
29256
|
+
if (!belongsToSubject) {
|
|
29257
|
+
return { kind: "invalidSelectedRun" };
|
|
29258
|
+
}
|
|
29259
|
+
return {
|
|
29260
|
+
kind: "selectedRun",
|
|
29261
|
+
events: input.events.filter((event) => event.seriesId === selectedRunOffering.eventSeriesId),
|
|
29262
|
+
offering: selectedRunOffering
|
|
29263
|
+
};
|
|
29264
|
+
}
|
|
29265
|
+
function planEventRegistrationSurface(input) {
|
|
29266
|
+
const scope = planEventRegistrationScope(input);
|
|
29267
|
+
if (scope.kind === "invalidSelectedRun") {
|
|
29268
|
+
return { kind: "unavailableWholeSeries" };
|
|
29269
|
+
}
|
|
29270
|
+
const scopedEvents = scope.events;
|
|
29271
|
+
const bookingScopes = new Set(scopedEvents.map((event) => event.bookingScope));
|
|
29272
|
+
if (scope.kind === "selectedRun") {
|
|
29273
|
+
if (bookingScopes.size !== 1 || !bookingScopes.has("whole_series")) {
|
|
29274
|
+
return { kind: "unavailableWholeSeries" };
|
|
29275
|
+
}
|
|
29276
|
+
return {
|
|
29277
|
+
kind: "wholeSeries",
|
|
29278
|
+
offerings: [scope.offering]
|
|
29279
|
+
};
|
|
29280
|
+
}
|
|
29281
|
+
const isUnscoped = !input.occurrenceContext && !input.subject;
|
|
29282
|
+
if (isUnscoped && bookingScopes.has("single_occurrence")) {
|
|
29283
|
+
return {
|
|
29284
|
+
kind: "occurrence",
|
|
29285
|
+
events: scopedEvents.filter((event) => event.bookingScope === "single_occurrence")
|
|
29286
|
+
};
|
|
29287
|
+
}
|
|
29288
|
+
if (bookingScopes.size === 0 || bookingScopes.has("single_occurrence")) {
|
|
29289
|
+
return bookingScopes.has("whole_series") ? { kind: "mixedBookingScopes" } : {
|
|
29290
|
+
kind: "occurrence",
|
|
29291
|
+
events: scopedEvents
|
|
29292
|
+
};
|
|
29293
|
+
}
|
|
29294
|
+
const requiredSeriesIds = new Set(scopedEvents.map((event) => event.seriesId));
|
|
29295
|
+
const wholeSeriesOffering = input.wholeSeriesOffering;
|
|
29296
|
+
const availableOfferings = wholeSeriesOffering ? [wholeSeriesOffering, ...input.wholeSeriesOfferings.filter((offering) => offering.eventSeriesId !== wholeSeriesOffering.eventSeriesId)] : input.wholeSeriesOfferings;
|
|
29297
|
+
const offerings = availableOfferings.filter((offering) => requiredSeriesIds.has(offering.eventSeriesId));
|
|
29298
|
+
const loadedSeriesIds = new Set(offerings.map((offering) => offering.eventSeriesId));
|
|
29299
|
+
const hasEveryOffering = [...requiredSeriesIds].every((seriesId) => loadedSeriesIds.has(seriesId));
|
|
29300
|
+
return hasEveryOffering && offerings.length > 0 ? {
|
|
29301
|
+
kind: "wholeSeries",
|
|
29302
|
+
offerings
|
|
29303
|
+
} : { kind: "unavailableWholeSeries" };
|
|
29304
|
+
}
|
|
29305
|
+
|
|
29277
29306
|
//#endregion
|
|
29278
29307
|
//#region ../blocks/src/system/runtime/nodes/events/shared/destination.ts
|
|
29279
29308
|
function isRecord$33(value) {
|
|
@@ -29869,10 +29898,13 @@ function buildEventRegistrationShellStepLabels(source) {
|
|
|
29869
29898
|
}
|
|
29870
29899
|
function scopeEventRegistrationEvents(source) {
|
|
29871
29900
|
const events = toRegistrationEvents(source.events ?? []);
|
|
29872
|
-
|
|
29901
|
+
const scope = planEventRegistrationScope({
|
|
29902
|
+
events,
|
|
29903
|
+
wholeSeriesOffering: source.wholeSeriesOffering,
|
|
29873
29904
|
occurrenceContext: source.occurrenceContext,
|
|
29874
29905
|
subject: source.subject
|
|
29875
29906
|
});
|
|
29907
|
+
return scope.kind === "invalidSelectedRun" ? [] : scope.events;
|
|
29876
29908
|
}
|
|
29877
29909
|
function shellLabelForRegistrationStep(step, events) {
|
|
29878
29910
|
switch (step) {
|
|
@@ -35893,7 +35925,7 @@ function isLinkValue(value) {
|
|
|
35893
35925
|
case "external": return typeof value.href === "string" && value.href.trim().length > 0;
|
|
35894
35926
|
case "page": return typeof value.identifier === "string" && value.identifier.trim().length > 0;
|
|
35895
35927
|
case "entry": return typeof value.contentType === "string" && value.contentType.trim().length > 0 && typeof value.identifier === "string" && value.identifier.trim().length > 0;
|
|
35896
|
-
case "internal": return typeof value.routeId === "string" && typeof value.entityId === "string" && (value.entityType
|
|
35928
|
+
case "internal": return typeof value.routeId === "string" && typeof value.entityId === "string" && isResolvedInternalLinkEntityType(value.entityType) && typeof value.href === "string" && typeof value.title === "string" && typeof value.typeLabel === "string";
|
|
35897
35929
|
default: return false;
|
|
35898
35930
|
}
|
|
35899
35931
|
}
|
|
@@ -36687,6 +36719,7 @@ function normalizeGroupPresentation(value) {
|
|
|
36687
36719
|
function resolveAutoCtaPath(source, routes) {
|
|
36688
36720
|
const routeByNormalizedPath = new Map();
|
|
36689
36721
|
for (const route of routes ?? []) {
|
|
36722
|
+
if (route.kind === "pageSurface") continue;
|
|
36690
36723
|
const normalized = normalizeRoutePath(route.path);
|
|
36691
36724
|
if (normalized && !routeByNormalizedPath.has(normalized)) {
|
|
36692
36725
|
routeByNormalizedPath.set(normalized, route.path);
|
|
@@ -36741,7 +36774,7 @@ const publicRouteCandidatesSchema = z.object({ routes: z.array(z.object({
|
|
|
36741
36774
|
entityId: z.string(),
|
|
36742
36775
|
path: z.string(),
|
|
36743
36776
|
title: z.string(),
|
|
36744
|
-
kind: z.enum(
|
|
36777
|
+
kind: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
|
|
36745
36778
|
contentTypeKey: z.string().nullable().optional()
|
|
36746
36779
|
})) });
|
|
36747
36780
|
const groupOverrideFields = [
|
|
@@ -44498,7 +44531,7 @@ function normalizeRel(target, rel) {
|
|
|
44498
44531
|
tokens.add("noreferrer");
|
|
44499
44532
|
return Array.from(tokens).join(" ");
|
|
44500
44533
|
}
|
|
44501
|
-
function renderMarks(text$1, marks, key) {
|
|
44534
|
+
function renderMarks(text$1, marks, key, linkTarget) {
|
|
44502
44535
|
if (!marks || marks.length === 0) return text$1;
|
|
44503
44536
|
return marks.reduce((acc, mark) => {
|
|
44504
44537
|
switch (mark.type) {
|
|
@@ -44511,7 +44544,8 @@ function renderMarks(text$1, marks, key) {
|
|
|
44511
44544
|
const attrs = mark.attrs ?? {};
|
|
44512
44545
|
const href = sanitizeHref(attrs.href);
|
|
44513
44546
|
if (!href) return acc;
|
|
44514
|
-
const
|
|
44547
|
+
const storedTarget = typeof attrs.target === "string" && attrs.target.trim().length > 0 ? attrs.target.trim() : undefined;
|
|
44548
|
+
const target = linkTarget === "new-tab" ? "_blank" : storedTarget;
|
|
44515
44549
|
const rel = typeof attrs.rel === "string" ? attrs.rel : undefined;
|
|
44516
44550
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", {
|
|
44517
44551
|
href,
|
|
@@ -44524,14 +44558,14 @@ function renderMarks(text$1, marks, key) {
|
|
|
44524
44558
|
}
|
|
44525
44559
|
}, text$1);
|
|
44526
44560
|
}
|
|
44527
|
-
function renderDoc(node, key, imageResolveContext) {
|
|
44561
|
+
function renderDoc(node, key, imageResolveContext, linkTarget) {
|
|
44528
44562
|
if (!node || !node.type) return null;
|
|
44529
|
-
const children = node.content?.map((child, index) => renderDoc(child, `${key}-${index}`, imageResolveContext));
|
|
44563
|
+
const children = node.content?.map((child, index) => renderDoc(child, `${key}-${index}`, imageResolveContext, linkTarget));
|
|
44530
44564
|
switch (node.type) {
|
|
44531
44565
|
case "doc": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children });
|
|
44532
44566
|
case "paragraph":
|
|
44533
44567
|
if (!children && !node.text) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {}, key);
|
|
44534
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: children ?? renderMarks(node.text ?? "", node.marks, key) }, key);
|
|
44568
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: children ?? renderMarks(node.text ?? "", node.marks, key, linkTarget) }, key);
|
|
44535
44569
|
case "heading": {
|
|
44536
44570
|
const level = Math.min(Math.max(node.attrs?.level ?? 2, 1), 6);
|
|
44537
44571
|
const headingTag = `h${level}`;
|
|
@@ -44574,14 +44608,14 @@ function renderDoc(node, key, imageResolveContext) {
|
|
|
44574
44608
|
decoding: "async"
|
|
44575
44609
|
}, key);
|
|
44576
44610
|
}
|
|
44577
|
-
case "text": return renderMarks(node.text ?? "", node.marks, key);
|
|
44611
|
+
case "text": return renderMarks(node.text ?? "", node.marks, key, linkTarget);
|
|
44578
44612
|
default: return null;
|
|
44579
44613
|
}
|
|
44580
44614
|
}
|
|
44581
44615
|
const DEFAULT_RICH_TEXT_CLASS = "rb-prose rb-max-w-none";
|
|
44582
|
-
function RichText$1({ as: Comp = "div", className, doc, path: path$3 }) {
|
|
44616
|
+
function RichText$1({ as: Comp = "div", className, doc, path: path$3, linkTarget = "stored" }) {
|
|
44583
44617
|
const imageResolveContext = getCurrentResolveImageUrlContext() ?? null;
|
|
44584
|
-
const content = doc ? renderDoc(doc, "doc", imageResolveContext) : null;
|
|
44618
|
+
const content = doc ? renderDoc(doc, "doc", imageResolveContext, linkTarget) : null;
|
|
44585
44619
|
const dataAttributes = path$3 ? { "data-builder-richtext": path$3 } : undefined;
|
|
44586
44620
|
const resolvedClassName = className?.trim() || DEFAULT_RICH_TEXT_CLASS;
|
|
44587
44621
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Comp, {
|
|
@@ -48088,6 +48122,31 @@ function isBookingSettings(value) {
|
|
|
48088
48122
|
return typeof value === "object" && value !== null && !Array.isArray(value) && value.type === "booking";
|
|
48089
48123
|
}
|
|
48090
48124
|
|
|
48125
|
+
//#endregion
|
|
48126
|
+
//#region ../blocks/src/system/runtime/nodes/booking-form.consent.ts
|
|
48127
|
+
function resolveSelectedAppointmentConsent(service) {
|
|
48128
|
+
return service?.consent ? {
|
|
48129
|
+
kind: "required-for-selected-service",
|
|
48130
|
+
field: toBookingRequirementConsentField(service.consent)
|
|
48131
|
+
} : { kind: "not-applicable" };
|
|
48132
|
+
}
|
|
48133
|
+
function projectSelectedAppointmentConsentIntoForm(form$1, selectedConsent) {
|
|
48134
|
+
if (!form$1) return null;
|
|
48135
|
+
const sourceFields = form$1.schema?.fields ?? [];
|
|
48136
|
+
const baseFields = sourceFields.filter((field) => field.type !== "booking_requirement_consent");
|
|
48137
|
+
const fields$2 = selectedConsent.kind === "required-for-selected-service" ? [...baseFields, selectedConsent.field] : baseFields;
|
|
48138
|
+
if (selectedConsent.kind === "not-applicable" && baseFields.length === sourceFields.length) {
|
|
48139
|
+
return form$1;
|
|
48140
|
+
}
|
|
48141
|
+
return {
|
|
48142
|
+
...form$1,
|
|
48143
|
+
schema: {
|
|
48144
|
+
...form$1.schema,
|
|
48145
|
+
fields: fields$2
|
|
48146
|
+
}
|
|
48147
|
+
};
|
|
48148
|
+
}
|
|
48149
|
+
|
|
48091
48150
|
//#endregion
|
|
48092
48151
|
//#region ../blocks/src/system/runtime/nodes/booking-form.state.ts
|
|
48093
48152
|
function toTrimmedString(value) {
|
|
@@ -48303,7 +48362,6 @@ function readBookingFieldType(value) {
|
|
|
48303
48362
|
case "select":
|
|
48304
48363
|
case "radio":
|
|
48305
48364
|
case "checkbox":
|
|
48306
|
-
case "booking_requirement_consent":
|
|
48307
48365
|
case "tel":
|
|
48308
48366
|
case "url":
|
|
48309
48367
|
case "number":
|
|
@@ -48338,7 +48396,7 @@ function normalizeBookingSettings(value) {
|
|
|
48338
48396
|
};
|
|
48339
48397
|
}
|
|
48340
48398
|
function isBookingFormService(value) {
|
|
48341
|
-
return isRecord$22(value) && typeof value.id === "string" && typeof value.siteId === "string" && typeof value.title === "string";
|
|
48399
|
+
return isRecord$22(value) && typeof value.id === "string" && typeof value.siteId === "string" && typeof value.title === "string" && (value.consent === undefined || blockBookingConsentSchema.safeParse(value.consent).success);
|
|
48342
48400
|
}
|
|
48343
48401
|
function collectBookingCustomFields(data) {
|
|
48344
48402
|
const customFields = {};
|
|
@@ -48630,7 +48688,16 @@ const bookingFieldOptionSchema = z.object({
|
|
|
48630
48688
|
value: z.string(),
|
|
48631
48689
|
label: z.string()
|
|
48632
48690
|
});
|
|
48633
|
-
const
|
|
48691
|
+
const standardBookingFieldRules = {
|
|
48692
|
+
options: z.array(bookingFieldOptionSchema).optional(),
|
|
48693
|
+
multiple: z.boolean().optional(),
|
|
48694
|
+
minLength: z.number().optional(),
|
|
48695
|
+
maxLength: z.number().optional(),
|
|
48696
|
+
pattern: z.string().optional(),
|
|
48697
|
+
min: z.number().optional(),
|
|
48698
|
+
max: z.number().optional()
|
|
48699
|
+
};
|
|
48700
|
+
const standardBookingFieldSchema = z.object({
|
|
48634
48701
|
id: z.string(),
|
|
48635
48702
|
label: z.string(),
|
|
48636
48703
|
type: z.enum([
|
|
@@ -48640,7 +48707,6 @@ const bookingFieldSchema = z.object({
|
|
|
48640
48707
|
"select",
|
|
48641
48708
|
"radio",
|
|
48642
48709
|
"checkbox",
|
|
48643
|
-
"booking_requirement_consent",
|
|
48644
48710
|
"tel",
|
|
48645
48711
|
"url",
|
|
48646
48712
|
"number",
|
|
@@ -48650,14 +48716,9 @@ const bookingFieldSchema = z.object({
|
|
|
48650
48716
|
required: z.boolean().optional(),
|
|
48651
48717
|
placeholder: z.string().optional(),
|
|
48652
48718
|
helpText: z.string().optional(),
|
|
48653
|
-
|
|
48654
|
-
multiple: z.boolean().optional(),
|
|
48655
|
-
minLength: z.number().optional(),
|
|
48656
|
-
maxLength: z.number().optional(),
|
|
48657
|
-
pattern: z.string().optional(),
|
|
48658
|
-
min: z.number().optional(),
|
|
48659
|
-
max: z.number().optional()
|
|
48719
|
+
...standardBookingFieldRules
|
|
48660
48720
|
});
|
|
48721
|
+
const bookingFieldSchema = standardBookingFieldSchema;
|
|
48661
48722
|
const bookingSettingsSchema = z.object({
|
|
48662
48723
|
type: z.literal("booking"),
|
|
48663
48724
|
serviceId: z.string().optional(),
|
|
@@ -48745,7 +48806,8 @@ function normalizeAppointmentBookingServices(input) {
|
|
|
48745
48806
|
priceAmount: service.priceAmount,
|
|
48746
48807
|
priceCurrency: service.priceCurrency,
|
|
48747
48808
|
paymentTerms: service.paymentTerms,
|
|
48748
|
-
paymentTermsAvailability: service.paymentTermsAvailability
|
|
48809
|
+
paymentTermsAvailability: service.paymentTermsAvailability,
|
|
48810
|
+
consent: service.consent
|
|
48749
48811
|
}));
|
|
48750
48812
|
}
|
|
48751
48813
|
function buildAppointmentBookingSourceProps(input) {
|
|
@@ -48828,7 +48890,8 @@ const bookingServiceSchema = z.object({
|
|
|
48828
48890
|
priceAmount: z.number().nullable().optional(),
|
|
48829
48891
|
priceCurrency: z.string().nullable().optional(),
|
|
48830
48892
|
paymentTerms: blockBookingPaymentTermsSchema.optional(),
|
|
48831
|
-
paymentTermsAvailability: blockBookingPaymentTermsAvailabilitySchema.optional()
|
|
48893
|
+
paymentTermsAvailability: blockBookingPaymentTermsAvailabilitySchema.optional(),
|
|
48894
|
+
consent: blockBookingConsentSchema.optional()
|
|
48832
48895
|
});
|
|
48833
48896
|
const bookingServicesSourceSchema = z.union([
|
|
48834
48897
|
z.array(bookingServiceSchema),
|
|
@@ -55227,13 +55290,49 @@ function hydrateManifestLinks(manifest, content, routes, pagesByIdentifier, entr
|
|
|
55227
55290
|
if (!routes || !manifest?.fields?.length) {
|
|
55228
55291
|
return content;
|
|
55229
55292
|
}
|
|
55293
|
+
return hydrateLinks(content, routes, pagesByIdentifier, entriesByIdentifier);
|
|
55294
|
+
}
|
|
55295
|
+
/** Hydrate identifier-aware links in data loaded after manifest content. */
|
|
55296
|
+
function hydrateLinks(value, routes, pagesByIdentifier, entriesByIdentifier) {
|
|
55230
55297
|
const context = {
|
|
55231
55298
|
routes,
|
|
55232
55299
|
pagesByIdentifier,
|
|
55233
55300
|
entriesByIdentifier
|
|
55234
55301
|
};
|
|
55235
|
-
|
|
55236
|
-
|
|
55302
|
+
return hydrateValue(value, context);
|
|
55303
|
+
}
|
|
55304
|
+
/**
|
|
55305
|
+
* Hydrate links only inside resolved booking-consent documents. Loader payloads are
|
|
55306
|
+
* otherwise opaque and may legitimately contain objects that resemble link values.
|
|
55307
|
+
*/
|
|
55308
|
+
function hydrateResolvedBookingConsentLinks(value, routes, pagesByIdentifier, entriesByIdentifier) {
|
|
55309
|
+
const context = {
|
|
55310
|
+
routes,
|
|
55311
|
+
pagesByIdentifier,
|
|
55312
|
+
entriesByIdentifier
|
|
55313
|
+
};
|
|
55314
|
+
return hydrateResolvedBookingConsentValue(value, context);
|
|
55315
|
+
}
|
|
55316
|
+
function hydrateResolvedBookingConsentValue(value, context) {
|
|
55317
|
+
if (Array.isArray(value)) {
|
|
55318
|
+
const hydratedItems = value.map((item) => hydrateResolvedBookingConsentValue(item, context));
|
|
55319
|
+
return hydratedItems.every((item, index) => item === value[index]) ? value : hydratedItems;
|
|
55320
|
+
}
|
|
55321
|
+
if (!isRecord$17(value)) {
|
|
55322
|
+
return value;
|
|
55323
|
+
}
|
|
55324
|
+
if (isBookingConsentCarrier(value)) {
|
|
55325
|
+
const agreement = hydrateValue(value.agreement, context);
|
|
55326
|
+
return agreement === value.agreement ? value : {
|
|
55327
|
+
...value,
|
|
55328
|
+
agreement
|
|
55329
|
+
};
|
|
55330
|
+
}
|
|
55331
|
+
const hydratedEntries = Object.entries(value).map(([key, entry]) => [key, hydrateResolvedBookingConsentValue(entry, context)]);
|
|
55332
|
+
return hydratedEntries.every(([key, entry]) => entry === value[key]) ? value : Object.fromEntries(hydratedEntries);
|
|
55333
|
+
}
|
|
55334
|
+
function isBookingConsentCarrier(value) {
|
|
55335
|
+
return bookingConsentCarrierSchema.safeParse(value).success;
|
|
55237
55336
|
}
|
|
55238
55337
|
function hydrateValue(value, context) {
|
|
55239
55338
|
try {
|
|
@@ -55335,6 +55434,16 @@ function hydrateEntryLink(link$1, context) {
|
|
|
55335
55434
|
};
|
|
55336
55435
|
}
|
|
55337
55436
|
|
|
55437
|
+
//#endregion
|
|
55438
|
+
//#region ../blocks/src/system/manifest/resolveBlockData.ts
|
|
55439
|
+
function resolveBlockData(blockId, dataLoaders$2, dataContext, routes) {
|
|
55440
|
+
const raw = blockId ? dataContext?.resolvedData?.[blockId] : undefined;
|
|
55441
|
+
if (isRecord$17(raw)) {
|
|
55442
|
+
return routes ? hydrateResolvedBookingConsentLinks(raw, routes, dataContext?.pagesByIdentifier, dataContext?.entriesByIdentifier) : raw;
|
|
55443
|
+
}
|
|
55444
|
+
return dataLoaders$2 && typeof dataLoaders$2 === "object" && Object.keys(dataLoaders$2).length > 0 ? {} : undefined;
|
|
55445
|
+
}
|
|
55446
|
+
|
|
55338
55447
|
//#endregion
|
|
55339
55448
|
//#region ../blocks/src/sdkBlockTransform.ts
|
|
55340
55449
|
/**
|
|
@@ -56010,8 +56119,8 @@ function generateInputCss({ themeId, theme, inputSystem }) {
|
|
|
56010
56119
|
const radioSelector = `${rootSelector} .form-radio`;
|
|
56011
56120
|
const checkableRules = [];
|
|
56012
56121
|
checkableRules.push("appearance: none");
|
|
56013
|
-
checkableRules.push("width:
|
|
56014
|
-
checkableRules.push("height:
|
|
56122
|
+
checkableRules.push("width: 1.125rem");
|
|
56123
|
+
checkableRules.push("height: 1.125rem");
|
|
56015
56124
|
checkableRules.push("flex-shrink: 0");
|
|
56016
56125
|
checkableRules.push(`border: ${borderPx} solid ${rgbColorValue(inputSystem.base.border.colorToken)}`);
|
|
56017
56126
|
if (inputSystem.base.background.type === "transparent") {
|
|
@@ -60283,11 +60392,7 @@ const MemoBlockSection = import_react.memo(function MemoBlockSection$1({ themeRe
|
|
|
60283
60392
|
try {
|
|
60284
60393
|
const routes = routeMap ?? dataContext?.routes;
|
|
60285
60394
|
const hydratedContent = routes ? hydrateManifestLinks(definition$1.manifest, data, routes, dataContext?.pagesByIdentifier, dataContext?.entriesByIdentifier) : data;
|
|
60286
|
-
const resolved = resolveBlockData(
|
|
60287
|
-
block,
|
|
60288
|
-
definition: definition$1,
|
|
60289
|
-
dataContext
|
|
60290
|
-
});
|
|
60395
|
+
const resolved = resolveBlockData(block.id, definition$1.dataLoaders, dataContext, routes);
|
|
60291
60396
|
const hasResolvedData = !!resolved && typeof resolved === "object" && Object.keys(resolved).length > 0;
|
|
60292
60397
|
const baseProps = {
|
|
60293
60398
|
content: hydratedContent,
|
|
@@ -60382,15 +60487,6 @@ function shouldDebugCustomBlocks() {
|
|
|
60382
60487
|
return false;
|
|
60383
60488
|
}
|
|
60384
60489
|
}
|
|
60385
|
-
function resolveBlockData({ block, definition: definition$1, dataContext }) {
|
|
60386
|
-
const blockId = block.id ?? null;
|
|
60387
|
-
const raw = blockId ? dataContext?.resolvedData?.[blockId] : undefined;
|
|
60388
|
-
if (isObjectRecord(raw)) {
|
|
60389
|
-
return { ...raw };
|
|
60390
|
-
}
|
|
60391
|
-
const hasDataLoaders = definition$1.dataLoaders && Object.keys(definition$1.dataLoaders).length > 0;
|
|
60392
|
-
return hasDataLoaders ? {} : undefined;
|
|
60393
|
-
}
|
|
60394
60490
|
/**
|
|
60395
60491
|
* Resolves block content based on stage priority.
|
|
60396
60492
|
* For draft/preview: draftContent takes priority over content.
|
|
@@ -61383,8 +61479,8 @@ ${root} .form-select:disabled {
|
|
|
61383
61479
|
}`);
|
|
61384
61480
|
cssBlocks.push(`${root} .form-checkbox {
|
|
61385
61481
|
appearance: none;
|
|
61386
|
-
width:
|
|
61387
|
-
height:
|
|
61482
|
+
width: 1.125rem;
|
|
61483
|
+
height: 1.125rem;
|
|
61388
61484
|
flex-shrink: 0;
|
|
61389
61485
|
border: ${borderWidth} solid rgb(var(--tb-${settings.borderToken}));
|
|
61390
61486
|
border-radius: 0.25rem;
|
|
@@ -61394,8 +61490,8 @@ ${root} .form-select:disabled {
|
|
|
61394
61490
|
}`);
|
|
61395
61491
|
cssBlocks.push(`${root} .form-radio {
|
|
61396
61492
|
appearance: none;
|
|
61397
|
-
width:
|
|
61398
|
-
height:
|
|
61493
|
+
width: 1.125rem;
|
|
61494
|
+
height: 1.125rem;
|
|
61399
61495
|
flex-shrink: 0;
|
|
61400
61496
|
border: ${borderWidth} solid rgb(var(--tb-${settings.borderToken}));
|
|
61401
61497
|
border-radius: 9999px;
|
|
@@ -78647,6 +78743,17 @@ function hasPositionChanged(remoteItem, localPosition) {
|
|
|
78647
78743
|
function hasCtaChanged(localItem, remoteItem) {
|
|
78648
78744
|
return Boolean(localItem.isCta) !== Boolean(remoteItem.isCta);
|
|
78649
78745
|
}
|
|
78746
|
+
function hasLabelChanged(localItem, remoteItem) {
|
|
78747
|
+
return localItem.label.trim() !== remoteItem.label.trim();
|
|
78748
|
+
}
|
|
78749
|
+
function hasLinkSpellingChanged(localItem, remoteItem) {
|
|
78750
|
+
return normalizeLocalLink(localItem).trim() !== normalizeRemoteLink(remoteItem).trim();
|
|
78751
|
+
}
|
|
78752
|
+
function findUniqueLinkMatch(localItem, remoteItems, matchedRemoteIds) {
|
|
78753
|
+
const localLinkKey = normalizeLocalLink(localItem).toLowerCase().trim();
|
|
78754
|
+
const candidates = remoteItems.filter((item) => !matchedRemoteIds.has(item.id) && normalizeRemoteLink(item).toLowerCase().trim() === localLinkKey);
|
|
78755
|
+
return candidates.length === 1 ? candidates[0] : undefined;
|
|
78756
|
+
}
|
|
78650
78757
|
/**
|
|
78651
78758
|
* Match local navigation items to remote items by label+URL composite key.
|
|
78652
78759
|
*
|
|
@@ -78672,15 +78779,17 @@ function matchNavigationItems(localItems, remoteItems) {
|
|
|
78672
78779
|
const localItem = localItems[i];
|
|
78673
78780
|
if (!localItem) continue;
|
|
78674
78781
|
const key = itemKey(localItem.label, normalizeLocalLink(localItem));
|
|
78675
|
-
const remoteItem = remoteByKey.get(key);
|
|
78782
|
+
const remoteItem = remoteByKey.get(key) ?? findUniqueLinkMatch(localItem, remoteItems, matchedRemoteIds);
|
|
78676
78783
|
if (remoteItem) {
|
|
78677
78784
|
matchedRemoteIds.add(remoteItem.id);
|
|
78678
78785
|
const positionChanged = hasPositionChanged(remoteItem, i);
|
|
78679
78786
|
const ctaChanged = hasCtaChanged(localItem, remoteItem);
|
|
78787
|
+
const labelChanged = hasLabelChanged(localItem, remoteItem);
|
|
78788
|
+
const linkSpellingChanged = hasLinkSpellingChanged(localItem, remoteItem);
|
|
78680
78789
|
matches.push({
|
|
78681
78790
|
localItem,
|
|
78682
78791
|
remoteItem,
|
|
78683
|
-
action: positionChanged || ctaChanged ? "update" : "unchanged",
|
|
78792
|
+
action: positionChanged || ctaChanged || labelChanged || linkSpellingChanged ? "update" : "unchanged",
|
|
78684
78793
|
position: i
|
|
78685
78794
|
});
|
|
78686
78795
|
} else {
|
|
@@ -89796,7 +89905,7 @@ function rejectUnauthorizedMediaSync(input) {
|
|
|
89796
89905
|
if (input.sourceTarget === "local") {
|
|
89797
89906
|
input.output.error("Media sync to remote requires --yes", { suggestion: "Use --yes, or pull from remote (the default) to sync remote → local safely." });
|
|
89798
89907
|
} else {
|
|
89799
|
-
input.output.error("--sync-media during a remote pull
|
|
89908
|
+
input.output.error("--sync-media during a remote pull uploads missing media files to the local target.", { suggestion: "Re-run with --yes to allow media uploads to the local target." });
|
|
89800
89909
|
}
|
|
89801
89910
|
return true;
|
|
89802
89911
|
}
|
|
@@ -103164,7 +103273,7 @@ async function loadConfig(configPath, output) {
|
|
|
103164
103273
|
return { errorMessage: "No config path provided." };
|
|
103165
103274
|
}
|
|
103166
103275
|
try {
|
|
103167
|
-
const { loadConfigFile: loadConfigFile$1 } = await import("../load-config-
|
|
103276
|
+
const { loadConfigFile: loadConfigFile$1 } = await import("../load-config-CNhueqVc.mjs");
|
|
103168
103277
|
const rawConfig = await loadConfigFile$1(configPath);
|
|
103169
103278
|
const parsed = riverbankSiteConfigSchema.safeParse(rawConfig);
|
|
103170
103279
|
if (!parsed.success) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { n as assertCompatibleSdkPeer } from "./sdk-peer-
|
|
2
|
+
import { n as assertCompatibleSdkPeer } from "./sdk-peer-C6kOODEY.mjs";
|
|
3
3
|
import { dirname, resolve } from "path";
|
|
4
4
|
import { createJiti } from "jiti";
|
|
5
5
|
import { existsSync } from "fs";
|
|
@@ -3,7 +3,7 @@ import { existsSync, readFileSync } from "node:fs";
|
|
|
3
3
|
import { dirname, join, parse } from "node:path";
|
|
4
4
|
|
|
5
5
|
//#region package.json
|
|
6
|
-
var version = "0.4.
|
|
6
|
+
var version = "0.4.2";
|
|
7
7
|
var peerDependencies = { "@riverbankcms/sdk": ">=0.130.0 <1.0.0" };
|
|
8
8
|
var package_default = {
|
|
9
9
|
name: "riverbankcms",
|
|
@@ -79,7 +79,7 @@ var package_default = {
|
|
|
79
79
|
//#endregion
|
|
80
80
|
//#region src/version.ts
|
|
81
81
|
/** The package manifest is the source-run fallback; builds inject this value. */
|
|
82
|
-
const CLI_VERSION = typeof "0.4.
|
|
82
|
+
const CLI_VERSION = typeof "0.4.2" === "string" ? "0.4.2" : version;
|
|
83
83
|
/**
|
|
84
84
|
* The CLI's SDK peer range is bundled from the CLI manifest alongside its
|
|
85
85
|
* version. Runtime config loading uses this value as the single compatibility
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { At as ok, B as parseUtcIsoDateTimeString, Ct as unsafeAsSiteScopedStoragePath, D as mapNonEmptyArray, Dt as unsafeAsUploadSessionId, E as fromArray, Et as unsafeAsStoragePath, O as hasText, Ot as unsafeAsUserId, St as unsafeAsSiteId, Tt as unsafeAsStorageBucketName, Z as assertNever, _ as parseFooterCompositionV1, _t as unsafeAsPositiveByteCount, a as parseVerticalPresetId, at as unsafeAsBookingRequirementId, bt as unsafeAsSafeDownloadFilename, c as EVENT_PRESET_VALUES, dt as unsafeAsEventOfferingId, f as createSecret, ft as unsafeAsEventSeriesId, g as footerNavigationLayouts, gt as unsafeAsOriginalFilename, h as stableJsonStringify, ht as unsafeAsOccurrenceId, i as parseVerticalId, k as isPresent, kt as err, l as ORDINARY_EVENT_PRESET_VALUES, lt as unsafeAsDetectedMimeType, m as parseManagementKey, mt as unsafeAsMediaAssetId, n as canonicalizeConfiguredBookingVerticalConfig, nt as parseSiteId, o as resolveSiteVerticalBookingConfig, ot as unsafeAsBookingSessionId, p as exposeSecret, pt as unsafeAsFileChecksumSha256, st as unsafeAsDeclaredMimeType, ut as unsafeAsEntitlementId, vt as unsafeAsPositiveSeconds, w as isCanonicalRichTextDoc, xt as unsafeAsSiteFontId, yt as unsafeAsProductId } from "./src-BRAF1Dee.mjs";
|
|
3
3
|
import { a as classifySdkEventPricing, n as sdkEventOccurrenceInputSchema, o as classifySdkEventPaymentTerms } from "./sdk-event-upsert-C6zsxDcf.mjs";
|
|
4
|
-
import { t as CliSdkPeerError } from "./sdk-peer-
|
|
4
|
+
import { t as CliSdkPeerError } from "./sdk-peer-C6kOODEY.mjs";
|
|
5
5
|
import "node:module";
|
|
6
6
|
import { Command } from "commander";
|
|
7
7
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
@@ -214,6 +214,96 @@ const sdkEventOccurrenceResponseSchema = z.object({ occurrence: sdkManagementEve
|
|
|
214
214
|
const sdkDeleteEventOccurrenceResponseSchema = z.object({ deleted: z.literal(true) });
|
|
215
215
|
const sdkReorderResponseSchema = z.object({ reordered: z.literal(true) });
|
|
216
216
|
|
|
217
|
+
//#endregion
|
|
218
|
+
//#region ../blocks/src/system/types/link.ts
|
|
219
|
+
const nullableString = z.union([z.string().min(1), z.null()]);
|
|
220
|
+
const RESOLVED_INTERNAL_LINK_ENTITY_TYPES = [
|
|
221
|
+
"page",
|
|
222
|
+
"content",
|
|
223
|
+
"pageSurface"
|
|
224
|
+
];
|
|
225
|
+
function isResolvedInternalLinkEntityType(value) {
|
|
226
|
+
return typeof value === "string" && RESOLVED_INTERNAL_LINK_ENTITY_TYPES.includes(value);
|
|
227
|
+
}
|
|
228
|
+
const resolvedInternalLinkKeys = [
|
|
229
|
+
"entityId",
|
|
230
|
+
"entityType",
|
|
231
|
+
"href",
|
|
232
|
+
"title",
|
|
233
|
+
"typeLabel"
|
|
234
|
+
];
|
|
235
|
+
const internalRouteOnlyLinkSchema = z.object({
|
|
236
|
+
kind: z.literal("internal"),
|
|
237
|
+
routeId: z.string().min(1)
|
|
238
|
+
}).passthrough().superRefine((value, ctx) => {
|
|
239
|
+
const hasResolvedMetadata = resolvedInternalLinkKeys.some((key) => value[key] != null);
|
|
240
|
+
if (!hasResolvedMetadata) return;
|
|
241
|
+
ctx.addIssue({
|
|
242
|
+
code: "custom",
|
|
243
|
+
message: "Internal links with resolved metadata must include entityId, entityType, href, title, and typeLabel"
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
const internalResolvedLinkSchema = z.object({
|
|
247
|
+
kind: z.literal("internal"),
|
|
248
|
+
routeId: z.string().min(1),
|
|
249
|
+
entityId: z.string().min(1),
|
|
250
|
+
entityType: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
|
|
251
|
+
href: z.string().min(1),
|
|
252
|
+
title: z.string().min(1),
|
|
253
|
+
typeLabel: z.string().min(1),
|
|
254
|
+
contentTypeKey: nullableString.optional(),
|
|
255
|
+
contentTypeName: nullableString.optional(),
|
|
256
|
+
updatedAt: nullableString.optional()
|
|
257
|
+
}).passthrough();
|
|
258
|
+
const internalLinkSchema = z.union([internalResolvedLinkSchema, internalRouteOnlyLinkSchema]);
|
|
259
|
+
const externalLinkSchema$1 = z.object({
|
|
260
|
+
kind: z.literal("external"),
|
|
261
|
+
href: z.string().min(1)
|
|
262
|
+
}).passthrough();
|
|
263
|
+
const customLinkSchema$1 = z.object({
|
|
264
|
+
kind: z.literal("url"),
|
|
265
|
+
href: z.string().min(1)
|
|
266
|
+
}).passthrough();
|
|
267
|
+
const pageLinkSchema$1 = z.object({
|
|
268
|
+
kind: z.literal("page"),
|
|
269
|
+
identifier: z.string().min(1)
|
|
270
|
+
}).passthrough();
|
|
271
|
+
const entryLinkSchema$1 = z.object({
|
|
272
|
+
kind: z.literal("entry"),
|
|
273
|
+
contentType: z.string().min(1),
|
|
274
|
+
identifier: z.string().min(1)
|
|
275
|
+
}).passthrough();
|
|
276
|
+
const linkSchema = z.union([
|
|
277
|
+
internalLinkSchema,
|
|
278
|
+
externalLinkSchema$1,
|
|
279
|
+
customLinkSchema$1,
|
|
280
|
+
pageLinkSchema$1,
|
|
281
|
+
entryLinkSchema$1
|
|
282
|
+
]);
|
|
283
|
+
function visitLinkValueReferences(value, visitor) {
|
|
284
|
+
const parsed = linkSchema.safeParse(value);
|
|
285
|
+
if (!parsed.success) {
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
const link = parsed.data;
|
|
289
|
+
switch (link.kind) {
|
|
290
|
+
case "internal":
|
|
291
|
+
visitor.routeIds.add(link.routeId);
|
|
292
|
+
return;
|
|
293
|
+
case "page":
|
|
294
|
+
visitor.pageIdentifiers.add(link.identifier);
|
|
295
|
+
return;
|
|
296
|
+
case "entry":
|
|
297
|
+
visitor.entryIdentifiers.add(link.contentType, link.identifier);
|
|
298
|
+
return;
|
|
299
|
+
case "external":
|
|
300
|
+
case "url": return;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
function isInternalResolvedLinkValue(value) {
|
|
304
|
+
return value?.kind === "internal" && "entityId" in value && "entityType" in value && "href" in value && "title" in value && "typeLabel" in value && typeof value.entityId === "string" && isResolvedInternalLinkEntityType(value.entityType) && typeof value.href === "string" && typeof value.title === "string" && typeof value.typeLabel === "string";
|
|
305
|
+
}
|
|
306
|
+
|
|
217
307
|
//#endregion
|
|
218
308
|
//#region ../api/src/navigation/contracts.ts
|
|
219
309
|
/**
|
|
@@ -244,7 +334,7 @@ const internalLinkPayloadSchema = z.object({
|
|
|
244
334
|
kind: z.literal("internal"),
|
|
245
335
|
routeId: z.string().uuid(),
|
|
246
336
|
entityId: z.string().uuid(),
|
|
247
|
-
entityType: z.enum(
|
|
337
|
+
entityType: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
|
|
248
338
|
href: z.string().min(1),
|
|
249
339
|
title: z.string().min(1),
|
|
250
340
|
typeLabel: z.string().min(1),
|
|
@@ -39193,7 +39283,7 @@ function buildTokenMaps(assets) {
|
|
|
39193
39283
|
const byStoragePath = new Map();
|
|
39194
39284
|
for (const asset of assets) {
|
|
39195
39285
|
byAssetId.set(asset.id, asset.id);
|
|
39196
|
-
const identifier = asset.identifier
|
|
39286
|
+
const identifier = asset.identifier.trim();
|
|
39197
39287
|
if (identifier) {
|
|
39198
39288
|
byIdentifier.set(identifier, asset.id);
|
|
39199
39289
|
}
|
|
@@ -44855,4 +44945,4 @@ Examples:
|
|
|
44855
44945
|
}
|
|
44856
44946
|
|
|
44857
44947
|
//#endregion
|
|
44858
|
-
export { require_jsx_runtime as $, NAV_LINK_LETTER_SPACING_MAP as $n, surfaceForegroundDeclarations as $r, formatIgnoredDocumentSyncSectionWarning as $t, getImageUrl as A, MQ_SM_DOWN as An, isCssColorLiteral as Ar, parseJsonData as At, createDryRunReport as B, eyebrowTreatmentValues as Bn, resolveSurfaceForeground as Br, planEnvironmentExecution as Bt, rotateNormalizedPoint as C, BREAKPOINT_LG as Cn, RESOLVED_BUTTON_DISABLED_DECLARATIONS as Cr, currentInvocationEnvelope as Ct, resolveMediaTransformForAspect as D, MQ_LG_UP as Dn, contextualButtonSurfaceStyles as Dr, handleCommandError as Dt, parseAspectRatioValue as E, BREAKPOINT_XL as En, contextualButtonSurfaceResetStyles as Er, getOutputOnlyContext as Et, parseRelativeStoragePath as F, assertNever$5 as Fn, borderColorStyle as Fr, withConfirmation as Ft, getSiteCommandMetadata as G, testimonialsCompositionTreatmentValues as Gn, TokenResolver as Gr, CliExit as Gt, mapEventCommandContent as H, headingDecorationColorTokenValues as Hn, generateEffectsCSS as Hr, requireEnvironmentWriteAuthorization as Ht, classifyKnownMimeType as I, defineBlockDesignCapability as In, cssVarValue as Ir, withErrorHandling as It, entryIdentifierForCommand as J, getComponentBorderWidthPx as Jn, parseThemeForPersistence as Jr, getEnvironmentDebugInfo as Jt, blockIdentifierForCommand as K, tileTreatmentValues as Kn, parseThemeButtonVariantId as Kr, getEnvPrefix as Kt, venueManagementFields as L, defineFrameCapability as Ln, mergeStyles as Lr, withOutputOnlyErrorHandling as Lt, deriveVideoSlotPolicy as M, MQ_TABLET_ONLY as Mn, resolveThemeColorReferenceValue as Mr, resolveCommandPath as Mt, resolveVideoSelectionIntentForMediaField as N, headerVariantValues as Nn, resolveTokenOrCssColorValue as Nr, runWithInvocation as Nt, getDirectImageUrlForRelativePath as O, MQ_MD_DOWN as On, deriveButtonSurfaceContext as Or, mapEntryForOutput as Ot, asRecord as P, pageDesignEditorBackgroundOverrideOwner as Pn, backgroundColorStyle as Pr, withCommandContext as Pt, hasConfiguredBookingVertical as Q, NAV_LINK_BORDER_RADIUS_MAP as Qn, DEFAULT_SURFACE_TEXT_COLOR as Qr, createManagementClient as Qt, sortRecord as R, defineNoBlockDesignCapability as Rn, rgbColorValue as Rr, executeEnvironmentPlan as Rt, deleteEnvSpecificKeys as S, renderHeaderPaintTargetRules as Sn, generateButtonCss as Sr, createOutputForCommand as St, isExplicitRectCrop as T, BREAKPOINT_SM as Tn, resolvedButtonFocusDeclarations as Tr, getOutputContext as Tt, evaluateSiteCommandBatchExposure as U, introCompositionTreatmentValues as Un, generateBaseInteractiveCSS as Ur, withRiverbankEnv as Ut, parseAndPlanCommandBatchForTypes as V, featureCardCompositionTreatmentValues as Vn, generateDefaultButtonSystem as Vr, planEnvironmentWriteAuthorization as Vt, evaluateSiteCommandExposure as W, offeringsPreviewCompositionTreatmentValues as Wn, generateInteractiveChildInheritanceCSS as Wr, formatError as Wt, pageIdentifierForCommand as X, parseBlockCustomCssRules as Xn, formatButtonColourContractError as Xr, isRemoteConfigured as Xt, pageIdentifierForBlockCommand as Y, getComponentShadowVar as Yn, compileButtonColourStates as Yr, isLocalConfigured as Yt, pagePathForCommand as Z, parseCustomCssRules as Zn, generateShadowValue$1 as Zr, loadSdkEnvironment as Zt, hasOwnSettingsField as _, linkPayloadSchema as _i, boxBackgroundOverlaySchema as _n, cardRoleSchema as _r, confirmAction as _t, syncLocalMediaForPull as a, getTextColorForBackground as ai, GRADIENT_PRESET_IDS as an, INPUT_SPACING_MAP as ar, createCommandRef as at, attachRenderableMediaAssetFields as b, generateMobileOverlayBackdropFilterFix as bn, PUBLIC_BUTTON_ROLES as br, createGetCommand as bt, sha256 as c, hexToRgb$1 as ci, boundaryRuntimeMetricsForTransition as cn, ACCORDION_SPACING_MAP as cr, createEventSeriesRef as ct, walkLocalContentMedia as d, unsafeAsOpaqueButtonColourToken as di, parseBackgroundAppearanceColorToken as dn, ICON_CONFIG as dr, createNavigationRef as dt, surfaceForegroundStyle as ei, ManagementApiError as en, NAV_LINK_PADDING_MAP as er, require_react as et, buildStorageUrl as f, parseBlockColorToken as fi, defaultThemeTokens as fn, ICON_SIZE_PX as fr, createPageRef as ft, buildSettingsUpdateInput as g, persistableMediaSchema as gi, themeSchema as gn, generateShadowValue as gr, slugPart as gt, SETTINGS_FILE_FIELDS as h, mediaTypeDiscriminants as hi, sdkThemeWireSchema as hn, generateCardCss as hr, refSlug as ht, syncLocalMediaForPush as i, onColorTokenName as ii, gradientToCss as in, INPUT_FONT_SIZE_MAP as ir, createBlocksRef as it, isSiteScopedDirectImageStoragePath as j, MQ_SM_UP as jn, resolveOnColorForThemeToken as jr, parsePaginationOptions as jt, getDirectImageUrlForSiteScopedPath as k, MQ_MD_UP as kn, resolveContextualButtonRole as kr, parseJsonArray as kt, normalizeMediaIdentifierInput as l, VARIANT_ROLES as li, backgroundAppearanceColorTokenNames as ln, ACCORDION_TRIGGER_FONT_SCALE as lr, createFooterRef as lt, extractMediaIdentifiers as m, mediaSchema as mi, sdkSettingsUpdateSchema as mn, getDefaultCardVariants as mr, createVenueRef as mt, createStyleCommand as n, expandPalette as ni, readHeaderNavFontSizePreference as nn, NAV_LINK_TEXT_SIZE_MAP as nr, generateCssVars as nt, applyLocalMediaPush as o, ORDINARY_TEXT_MIN_CONTRAST_RATIO as oi, getGradientPreset as on, LABEL_FONT_SIZE_MAP as or, createContentEntryRef as ot, downloadMedia as p, mediaIdentifierSchema as pi, defineBlockDesignMetadata as pn, generateCardCoreCss as pr, createSiteCommandSiteRef as pt, blockOrderIdentifiersForCommand as q, visibleHeadingDecorationFamilyValues as qn, themeButtonClassName as qr, getEnvVarName as qt, revalidateLocalMediaPushPlan as r, isOnColorBackgroundCandidateToken as ri, getCuratedSiteStyle as rn, FONT_WEIGHT_MAP as rr, createBlockRef as rt, prepareLocalMediaForPush as s, featuresFromHex as si, parseGradientPresetId as sn, ACCORDION_OPEN_ACCENT_THICKNESS as sr, createEventCategoryRef as st, buildStyleSelectionInitializeCommandFromOptions as t, surfaceForegroundValue as ti, mergeHeaderNavTypographyPreference as tn, NAV_LINK_PADDING_X_MAP as tr, pickShadeTowardBackground as tt, normalizeMediaValueToIdentifierOnly as u, buttonVariantIdSchema as ui, backgroundAppearanceQuickColorTokenNames as un, ACCORDION_TRIGGER_LETTER_SPACING as ur, createFormRef as ut, writeMediaManifest as v,
|
|
44948
|
+
export { require_jsx_runtime as $, NAV_LINK_LETTER_SPACING_MAP as $n, surfaceForegroundDeclarations as $r, formatIgnoredDocumentSyncSectionWarning as $t, getImageUrl as A, __toESM as Ai, MQ_SM_DOWN as An, isCssColorLiteral as Ar, parseJsonData as At, createDryRunReport as B, eyebrowTreatmentValues as Bn, resolveSurfaceForeground as Br, planEnvironmentExecution as Bt, rotateNormalizedPoint as C, internalResolvedLinkSchema as Ci, BREAKPOINT_LG as Cn, RESOLVED_BUTTON_DISABLED_DECLARATIONS as Cr, currentInvocationEnvelope as Ct, resolveMediaTransformForAspect as D, linkSchema as Di, MQ_LG_UP as Dn, contextualButtonSurfaceStyles as Dr, handleCommandError as Dt, parseAspectRatioValue as E, isResolvedInternalLinkEntityType as Ei, BREAKPOINT_XL as En, contextualButtonSurfaceResetStyles as Er, getOutputOnlyContext as Et, parseRelativeStoragePath as F, assertNever$5 as Fn, borderColorStyle as Fr, withConfirmation as Ft, getSiteCommandMetadata as G, testimonialsCompositionTreatmentValues as Gn, TokenResolver as Gr, CliExit as Gt, mapEventCommandContent as H, headingDecorationColorTokenValues as Hn, generateEffectsCSS as Hr, requireEnvironmentWriteAuthorization as Ht, classifyKnownMimeType as I, defineBlockDesignCapability as In, cssVarValue as Ir, withErrorHandling as It, entryIdentifierForCommand as J, getComponentBorderWidthPx as Jn, parseThemeForPersistence as Jr, getEnvironmentDebugInfo as Jt, blockIdentifierForCommand as K, tileTreatmentValues as Kn, parseThemeButtonVariantId as Kr, getEnvPrefix as Kt, venueManagementFields as L, defineFrameCapability as Ln, mergeStyles as Lr, withOutputOnlyErrorHandling as Lt, deriveVideoSlotPolicy as M, MQ_TABLET_ONLY as Mn, resolveThemeColorReferenceValue as Mr, resolveCommandPath as Mt, resolveVideoSelectionIntentForMediaField as N, headerVariantValues as Nn, resolveTokenOrCssColorValue as Nr, runWithInvocation as Nt, getDirectImageUrlForRelativePath as O, pageLinkSchema$1 as Oi, MQ_MD_DOWN as On, deriveButtonSurfaceContext as Or, mapEntryForOutput as Ot, asRecord as P, pageDesignEditorBackgroundOverrideOwner as Pn, backgroundColorStyle as Pr, withCommandContext as Pt, hasConfiguredBookingVertical as Q, NAV_LINK_BORDER_RADIUS_MAP as Qn, DEFAULT_SURFACE_TEXT_COLOR as Qr, createManagementClient as Qt, sortRecord as R, defineNoBlockDesignCapability as Rn, rgbColorValue as Rr, executeEnvironmentPlan as Rt, deleteEnvSpecificKeys as S, internalLinkSchema as Si, renderHeaderPaintTargetRules as Sn, generateButtonCss as Sr, createOutputForCommand as St, isExplicitRectCrop as T, isInternalResolvedLinkValue as Ti, BREAKPOINT_SM as Tn, resolvedButtonFocusDeclarations as Tr, getOutputContext as Tt, evaluateSiteCommandBatchExposure as U, introCompositionTreatmentValues as Un, generateBaseInteractiveCSS as Ur, withRiverbankEnv as Ut, parseAndPlanCommandBatchForTypes as V, featureCardCompositionTreatmentValues as Vn, generateDefaultButtonSystem as Vr, planEnvironmentWriteAuthorization as Vt, evaluateSiteCommandExposure as W, offeringsPreviewCompositionTreatmentValues as Wn, generateInteractiveChildInheritanceCSS as Wr, formatError as Wt, pageIdentifierForCommand as X, parseBlockCustomCssRules as Xn, formatButtonColourContractError as Xr, isRemoteConfigured as Xt, pageIdentifierForBlockCommand as Y, getComponentShadowVar as Yn, compileButtonColourStates as Yr, isLocalConfigured as Yt, pagePathForCommand as Z, parseCustomCssRules as Zn, generateShadowValue$1 as Zr, loadSdkEnvironment as Zt, hasOwnSettingsField as _, linkPayloadSchema as _i, boxBackgroundOverlaySchema as _n, cardRoleSchema as _r, confirmAction as _t, syncLocalMediaForPull as a, getTextColorForBackground as ai, GRADIENT_PRESET_IDS as an, INPUT_SPACING_MAP as ar, createCommandRef as at, attachRenderableMediaAssetFields as b, entryLinkSchema$1 as bi, generateMobileOverlayBackdropFilterFix as bn, PUBLIC_BUTTON_ROLES as br, createGetCommand as bt, sha256 as c, hexToRgb$1 as ci, boundaryRuntimeMetricsForTransition as cn, ACCORDION_SPACING_MAP as cr, createEventSeriesRef as ct, walkLocalContentMedia as d, unsafeAsOpaqueButtonColourToken as di, parseBackgroundAppearanceColorToken as dn, ICON_CONFIG as dr, createNavigationRef as dt, surfaceForegroundStyle as ei, ManagementApiError as en, NAV_LINK_PADDING_MAP as er, require_react as et, buildStorageUrl as f, parseBlockColorToken as fi, defaultThemeTokens as fn, ICON_SIZE_PX as fr, createPageRef as ft, buildSettingsUpdateInput as g, persistableMediaSchema as gi, themeSchema as gn, generateShadowValue as gr, slugPart as gt, SETTINGS_FILE_FIELDS as h, mediaTypeDiscriminants as hi, sdkThemeWireSchema as hn, generateCardCss as hr, refSlug as ht, syncLocalMediaForPush as i, onColorTokenName as ii, gradientToCss as in, INPUT_FONT_SIZE_MAP as ir, createBlocksRef as it, isSiteScopedDirectImageStoragePath as j, MQ_SM_UP as jn, resolveOnColorForThemeToken as jr, parsePaginationOptions as jt, getDirectImageUrlForSiteScopedPath as k, sdkConfiguredBookingVerticalConfigSchema as ki, MQ_MD_UP as kn, resolveContextualButtonRole as kr, parseJsonArray as kt, normalizeMediaIdentifierInput as l, VARIANT_ROLES as li, backgroundAppearanceColorTokenNames as ln, ACCORDION_TRIGGER_FONT_SCALE as lr, createFooterRef as lt, extractMediaIdentifiers as m, mediaSchema as mi, sdkSettingsUpdateSchema as mn, getDefaultCardVariants as mr, createVenueRef as mt, createStyleCommand as n, expandPalette as ni, readHeaderNavFontSizePreference as nn, NAV_LINK_TEXT_SIZE_MAP as nr, generateCssVars as nt, applyLocalMediaPush as o, ORDINARY_TEXT_MIN_CONTRAST_RATIO as oi, getGradientPreset as on, LABEL_FONT_SIZE_MAP as or, createContentEntryRef as ot, downloadMedia as p, mediaIdentifierSchema as pi, defineBlockDesignMetadata as pn, generateCardCoreCss as pr, createSiteCommandSiteRef as pt, blockOrderIdentifiersForCommand as q, visibleHeadingDecorationFamilyValues as qn, themeButtonClassName as qr, getEnvVarName as qt, revalidateLocalMediaPushPlan as r, isOnColorBackgroundCandidateToken as ri, getCuratedSiteStyle as rn, FONT_WEIGHT_MAP as rr, createBlockRef as rt, prepareLocalMediaForPush as s, featuresFromHex as si, parseGradientPresetId as sn, ACCORDION_OPEN_ACCENT_THICKNESS as sr, createEventCategoryRef as st, buildStyleSelectionInitializeCommandFromOptions as t, surfaceForegroundValue as ti, mergeHeaderNavTypographyPreference as tn, NAV_LINK_PADDING_X_MAP as tr, pickShadeTowardBackground as tt, normalizeMediaValueToIdentifierOnly as u, buttonVariantIdSchema as ui, backgroundAppearanceQuickColorTokenNames as un, ACCORDION_TRIGGER_LETTER_SPACING as ur, createFormRef as ut, writeMediaManifest as v, RESOLVED_INTERNAL_LINK_ENTITY_TYPES as vi, boxBackgroundSchema as vn, cardVariantRoleValues as vr, createClientForEnv as vt, normalizeWidthCandidates as w, internalRouteOnlyLinkSchema as wi, BREAKPOINT_MD as wn, resolvedButtonColourDeclarations as wr, formatDateShort as wt, buildRenderableMediaAssetIndex as x, externalLinkSchema$1 as xi, getHeaderPaintTargets as xn, AFFORDANCE_SUPPRESS_CLASS as xr, createListCommand$1 as xt, isMediaValue as y, customLinkSchema$1 as yi, generateHeaderScrollTreatmentStyles as yn, normalizeCardRole as yr, createCommandContext as yt, stableStringify as z, eventListTreatmentValues as zn, textColorStyle as zr, parseEnvironmentSelection as zt };
|
package/dist/testing.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { a as syncLocalMediaForPull, i as syncLocalMediaForPush, t as buildStyleSelectionInitializeCommandFromOptions, v as writeMediaManifest } from "./style-
|
|
2
|
+
import { a as syncLocalMediaForPull, i as syncLocalMediaForPush, t as buildStyleSelectionInitializeCommandFromOptions, v as writeMediaManifest } from "./style-qH8rqy9H.mjs";
|
|
3
3
|
import "./src-BRAF1Dee.mjs";
|
|
4
4
|
import "./sdk-event-upsert-C6zsxDcf.mjs";
|
|
5
|
-
import "./sdk-peer-
|
|
5
|
+
import "./sdk-peer-C6kOODEY.mjs";
|
|
6
6
|
|
|
7
7
|
export { buildStyleSelectionInitializeCommandFromOptions, syncLocalMediaForPull, syncLocalMediaForPush, writeMediaManifest };
|
package/package.json
CHANGED