@riverbankcms/sdk 0.91.0 → 0.92.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-3CI5MKV3.mjs} +2 -2
- package/dist/{PreviewEditorUI-ORCLLUNZ.mjs → PreviewEditorUI-DKEP636I.mjs} +2 -2
- package/dist/SdkPreviewModeRuntime-BRGRDQFH.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/customerMembershipOutcomes.d.ts +4 -4
- package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +6 -0
- 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 +7 -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-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/videoPrep.d.ts +15 -6
- package/dist/_dts/media-core/src/videoSlotPolicy.d.ts +5 -5
- 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-AFPMCLS7.mjs → chunk-6D7PLF4M.mjs} +1 -1
- package/dist/{chunk-RQUZYSES.mjs → chunk-I6EOKV6B.mjs} +520 -40
- package/dist/{chunk-S3YHJWEU.mjs → chunk-LERKJM3E.mjs} +5 -5
- package/dist/{chunk-GDT2QGIL.mjs → chunk-UOMTCHZD.mjs} +1 -1
- package/dist/cli/index.mjs +552 -80
- package/dist/client/{accordion-AFX37652.mjs → accordion-BUDH2G3S.mjs} +2 -2
- package/dist/client/{bookingForm-32V5QCOW.mjs → bookingForm-NQMCELVB.mjs} +89 -14
- package/dist/client/bookings.mjs +243 -17
- package/dist/client/{carousel-TJGQJ7ER.mjs → carousel-ONCEW6IJ.mjs} +3 -3
- package/dist/client/{cart-JUU2JEW4.mjs → cart-V2TCK2GI.mjs} +7 -7
- package/dist/client/{checkout-RD6BTFX4.mjs → checkout-ZI7SWNCS.mjs} +7 -7
- package/dist/client/{chunk-FMZZHAIR.mjs → chunk-AUMRQ242.mjs} +52 -5
- package/dist/client/{chunk-PMNAV6LO.mjs → chunk-B5UC2D6X.mjs} +7 -6
- package/dist/client/{chunk-6RN62XBV.mjs → chunk-ERQDHUS2.mjs} +1 -1
- package/dist/client/{chunk-RWYFG625.mjs → chunk-GH6IIOOE.mjs} +30 -2
- package/dist/client/{chunk-C4LP6BPG.mjs → chunk-HQWIJLYN.mjs} +1 -1
- package/dist/client/{chunk-RMOFBBNA.mjs → chunk-JXY6NHG6.mjs} +6 -6
- package/dist/client/{chunk-6QZIBNGV.mjs → chunk-KXYEKEV6.mjs} +154 -16
- package/dist/client/{chunk-E6VIWZUG.mjs → chunk-N2WJPTF7.mjs} +3 -3
- package/dist/client/{chunk-ISAUXU5R.mjs → chunk-QQNVQ62W.mjs} +1 -1
- package/dist/client/{chunk-MLBNVN4H.mjs → chunk-R3CZQLXF.mjs} +67 -4
- package/dist/client/{chunk-WHZQDPBZ.mjs → chunk-TNGL2WJF.mjs} +1 -0
- package/dist/client/{chunk-CKXEUWWA.mjs → chunk-ZJDBOLX7.mjs} +3 -3
- package/dist/client/client.mjs +515 -38
- package/dist/client/{courseRegistration-X63QAIVV.mjs → courseRegistration-JPWAQ6KM.mjs} +111 -11
- package/dist/client/{eventCalendar-5T24GCZL.mjs → eventCalendar-QDOCHBBV.mjs} +9 -9
- package/dist/client/{eventCombined-AZVTF22X.mjs → eventCombined-ZS2CXSIE.mjs} +9 -9
- package/dist/client/{eventDetails-7GPFNLGF.mjs → eventDetails-5LOBMPLN.mjs} +9 -9
- package/dist/client/{eventListing-QEUMTMUM.mjs → eventListing-SBGY4I3L.mjs} +9 -9
- package/dist/client/{eventRegistration-P2EDKCQZ.mjs → eventRegistration-XGPIU3Z2.mjs} +9 -9
- package/dist/client/{form-NUJ7H4IN.mjs → form-R7D4LZWW.mjs} +3 -3
- package/dist/client/{headerSection-JB7LECPL.mjs → headerSection-RRLYUCGC.mjs} +3 -3
- package/dist/client/hooks.mjs +22 -2
- package/dist/client/{locationMap-UEYWUCSW.mjs → locationMap-35ZJMRBZ.mjs} +3 -3
- package/dist/client/{newsletterForm-S2YZQ2X7.mjs → newsletterForm-MJ2VCFUT.mjs} +3 -3
- package/dist/client/{productDetail-H5MADGG7.mjs → productDetail-2O7YQNBX.mjs} +7 -7
- package/dist/client/{productList-DK7YON7H.mjs → productList-FDP5BH7W.mjs} +7 -7
- package/dist/client/rendering/client.mjs +495 -36
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +514 -37
- package/dist/client/{shop-6PA7RDRJ.mjs → shop-BGYJ3LDT.mjs} +7 -7
- package/dist/preview-next/client/runtime.mjs +3 -3
- package/dist/{sdk-runtime-JP5347OB.mjs → sdk-runtime-B3TFXRXZ.mjs} +4 -4
- package/dist/server/components.mjs +166 -7
- package/dist/server/config-validation.mjs +23 -2
- package/dist/server/config.mjs +23 -2
- package/dist/server/data.mjs +22 -2
- package/dist/server/index.mjs +1 -1
- package/dist/server/next.mjs +167 -8
- package/dist/server/page-converter.mjs +19 -2
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +166 -7
- package/dist/server/rendering.mjs +166 -7
- package/dist/server/routing.mjs +29 -5
- package/dist/server/server.mjs +23 -3
- package/package.json +1 -1
- package/dist/SdkPreviewModeRuntime-GMCDQPZZ.mjs +0 -8
|
@@ -3309,6 +3309,9 @@ export type Database = {
|
|
|
3309
3309
|
pricing_strategy: string;
|
|
3310
3310
|
single_price_amount: number | null;
|
|
3311
3311
|
site_id: string;
|
|
3312
|
+
sliding_max_amount: number | null;
|
|
3313
|
+
sliding_min_amount: number | null;
|
|
3314
|
+
sliding_suggested_amount: number | null;
|
|
3312
3315
|
updated_at: string;
|
|
3313
3316
|
};
|
|
3314
3317
|
Insert: {
|
|
@@ -3323,6 +3326,9 @@ export type Database = {
|
|
|
3323
3326
|
pricing_strategy: string;
|
|
3324
3327
|
single_price_amount?: number | null;
|
|
3325
3328
|
site_id: string;
|
|
3329
|
+
sliding_max_amount?: number | null;
|
|
3330
|
+
sliding_min_amount?: number | null;
|
|
3331
|
+
sliding_suggested_amount?: number | null;
|
|
3326
3332
|
updated_at?: string;
|
|
3327
3333
|
};
|
|
3328
3334
|
Update: {
|
|
@@ -3337,6 +3343,9 @@ export type Database = {
|
|
|
3337
3343
|
pricing_strategy?: string;
|
|
3338
3344
|
single_price_amount?: number | null;
|
|
3339
3345
|
site_id?: string;
|
|
3346
|
+
sliding_max_amount?: number | null;
|
|
3347
|
+
sliding_min_amount?: number | null;
|
|
3348
|
+
sliding_suggested_amount?: number | null;
|
|
3340
3349
|
updated_at?: string;
|
|
3341
3350
|
};
|
|
3342
3351
|
Relationships: [
|
|
@@ -11529,6 +11538,67 @@ export type Database = {
|
|
|
11529
11538
|
}
|
|
11530
11539
|
];
|
|
11531
11540
|
};
|
|
11541
|
+
page_surface_slots: {
|
|
11542
|
+
Row: {
|
|
11543
|
+
created_at: string;
|
|
11544
|
+
created_by: string | null;
|
|
11545
|
+
deleted_at: string | null;
|
|
11546
|
+
deleted_by: string | null;
|
|
11547
|
+
id: string;
|
|
11548
|
+
page_surface_id: string;
|
|
11549
|
+
site_id: string;
|
|
11550
|
+
slot_key: string;
|
|
11551
|
+
updated_at: string;
|
|
11552
|
+
updated_by: string | null;
|
|
11553
|
+
};
|
|
11554
|
+
Insert: {
|
|
11555
|
+
created_at?: string;
|
|
11556
|
+
created_by?: string | null;
|
|
11557
|
+
deleted_at?: string | null;
|
|
11558
|
+
deleted_by?: string | null;
|
|
11559
|
+
id?: string;
|
|
11560
|
+
page_surface_id: string;
|
|
11561
|
+
site_id: string;
|
|
11562
|
+
slot_key: string;
|
|
11563
|
+
updated_at?: string;
|
|
11564
|
+
updated_by?: string | null;
|
|
11565
|
+
};
|
|
11566
|
+
Update: {
|
|
11567
|
+
created_at?: string;
|
|
11568
|
+
created_by?: string | null;
|
|
11569
|
+
deleted_at?: string | null;
|
|
11570
|
+
deleted_by?: string | null;
|
|
11571
|
+
id?: string;
|
|
11572
|
+
page_surface_id?: string;
|
|
11573
|
+
site_id?: string;
|
|
11574
|
+
slot_key?: string;
|
|
11575
|
+
updated_at?: string;
|
|
11576
|
+
updated_by?: string | null;
|
|
11577
|
+
};
|
|
11578
|
+
Relationships: [
|
|
11579
|
+
{
|
|
11580
|
+
foreignKeyName: "page_surface_slots_page_surface_id_fkey";
|
|
11581
|
+
columns: ["page_surface_id"];
|
|
11582
|
+
isOneToOne: false;
|
|
11583
|
+
referencedRelation: "page_surfaces";
|
|
11584
|
+
referencedColumns: ["id"];
|
|
11585
|
+
},
|
|
11586
|
+
{
|
|
11587
|
+
foreignKeyName: "page_surface_slots_site_id_fkey";
|
|
11588
|
+
columns: ["site_id"];
|
|
11589
|
+
isOneToOne: false;
|
|
11590
|
+
referencedRelation: "sites";
|
|
11591
|
+
referencedColumns: ["id"];
|
|
11592
|
+
},
|
|
11593
|
+
{
|
|
11594
|
+
foreignKeyName: "page_surface_slots_surface_site_fk";
|
|
11595
|
+
columns: ["page_surface_id", "site_id"];
|
|
11596
|
+
isOneToOne: false;
|
|
11597
|
+
referencedRelation: "page_surfaces";
|
|
11598
|
+
referencedColumns: ["id", "site_id"];
|
|
11599
|
+
}
|
|
11600
|
+
];
|
|
11601
|
+
};
|
|
11532
11602
|
page_surfaces: {
|
|
11533
11603
|
Row: {
|
|
11534
11604
|
created_at: string;
|
|
@@ -9,7 +9,7 @@ import type { MediaAsset, MediaSource } from './types';
|
|
|
9
9
|
* Until then it keeps old image/video rows readable through the new typed model without
|
|
10
10
|
* changing current storage or DB behavior.
|
|
11
11
|
*/
|
|
12
|
-
export type LegacyMediaAssetProjectionError = 'unsupported-mime-type' | 'non-renderable-legacy-media-kind' | 'empty-site-id' | 'empty-storage-bucket' | 'empty-storage-path' | 'empty-filename' | 'invalid-byte-count' | 'invalid-checksum' | 'invalid-created-at' | 'invalid-updated-at';
|
|
12
|
+
export type LegacyMediaAssetProjectionError = 'unsupported-mime-type' | 'non-renderable-legacy-media-kind' | 'empty-site-id' | 'empty-storage-bucket' | 'empty-storage-path' | 'empty-filename' | 'invalid-storage-path' | 'invalid-byte-count' | 'invalid-checksum' | 'invalid-created-at' | 'invalid-updated-at';
|
|
13
13
|
export declare function projectLegacyMediaAssetToFileAsset(asset: MediaAsset): Result<FileAsset, LegacyMediaAssetProjectionError>;
|
|
14
14
|
export declare function fileAssetSourceFromLegacyMediaSource(source: MediaSource): FileAssetSource;
|
|
15
15
|
export declare function deriveLegacyMediaAssetDerivatives(asset: MediaAsset, kind: FileKind): readonly FileDerivative[];
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type DeclaredMimeType, type DetectedMimeType, type FileChecksumSha256, type NonEmptyArray, type OriginalFilename, type PositiveByteCount, type Result, type SafeDownloadFilename, type SiteId, type StorageBucketName, type StoragePath, type UploadSessionId, type UserId, type UtcIsoDateTimeString } from '../../core/src/index';
|
|
2
2
|
import { type AccessPolicy, type ActiveFileAssetValidationError, type ActiveValidatedFileAsset, type FileAsset, type FileActor, type FileDerivative, type FileKind, type FileUse, type StorageClass, type UploadSessionState, type UploadSessionStateTag, type UploadIntent, type UploadPolicy, type UploadPolicyDetection } from './fileDomain';
|
|
3
|
+
import { type FileStoragePathError } from './fileStorage';
|
|
3
4
|
export type FileKindJson = FileJsonObject;
|
|
4
5
|
export type FileUseJson = FileJsonObject;
|
|
5
6
|
export type FileUsesJson = readonly FileUseJson[];
|
|
@@ -8,7 +9,7 @@ export type UploadIntentJson = FileJsonObject;
|
|
|
8
9
|
export type AccessPolicyJson = FileJsonObject;
|
|
9
10
|
export type UploadPolicyJson = FileJsonObject;
|
|
10
11
|
export type FileDomainJson = FileJsonObject | readonly FileJsonValue[];
|
|
11
|
-
export type FileDomainJsonParseError = 'expected-object' | 'expected-array' | 'expected-non-empty-array' | 'invalid-tag' | 'invalid-field' | 'invalid-string' | 'invalid-number' | 'invalid-positive-byte-count' | 'invalid-positive-seconds' | 'invalid-timestamp' | 'invalid-checksum' | 'invalid-safe-download-filename' | 'missing-state-timestamp' | 'missing-finalized-asset' | 'missing-rejection-reason';
|
|
12
|
+
export type FileDomainJsonParseError = 'expected-object' | 'expected-array' | 'expected-non-empty-array' | 'invalid-tag' | 'invalid-field' | 'invalid-string' | 'invalid-number' | 'invalid-positive-byte-count' | 'invalid-positive-seconds' | 'invalid-timestamp' | 'invalid-checksum' | 'invalid-safe-download-filename' | 'invalid-storage-path' | 'missing-state-timestamp' | 'missing-finalized-asset' | 'missing-rejection-reason';
|
|
12
13
|
export type FileUploadSessionRecordError = 'actor-site-mismatch' | 'policy-intent-mismatch';
|
|
13
14
|
export type FileJsonValue = string | number | boolean | null | FileJsonObject | readonly FileJsonValue[];
|
|
14
15
|
export type FileJsonObject = {
|
|
@@ -179,6 +180,9 @@ export type FileAssetRowParseError = {
|
|
|
179
180
|
} | {
|
|
180
181
|
readonly tag: 'invalid-derivative-kind';
|
|
181
182
|
readonly error: FileDomainJsonParseError;
|
|
183
|
+
} | {
|
|
184
|
+
readonly tag: 'invalid-storage-path';
|
|
185
|
+
readonly error: FileStoragePathError;
|
|
182
186
|
} | {
|
|
183
187
|
readonly tag: 'invalid-file-asset';
|
|
184
188
|
readonly error: ActiveFileAssetValidationError;
|
|
@@ -38,3 +38,4 @@ export declare function buildStagedUploadStoragePath(input: StagedUploadStorageP
|
|
|
38
38
|
* `sites/{siteId}/files/{fileAssetId}/{safeDownloadFilename}`.
|
|
39
39
|
*/
|
|
40
40
|
export declare function buildDurableFileStoragePath(input: DurableFileStoragePathInput): Result<SiteScopedStoragePath, FileStoragePathError>;
|
|
41
|
+
export declare function parseStoragePath(value: string): Result<StoragePath, FileStoragePathError>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Result } from '../../core/src/index';
|
|
1
|
+
import { type Brand, type PositiveByteCount, type Result } from '../../core/src/index';
|
|
2
2
|
export type VideoPrepIntent = {
|
|
3
3
|
readonly tag: 'files-and-media';
|
|
4
4
|
} | {
|
|
@@ -8,8 +8,8 @@ export type VideoPrepIntent = {
|
|
|
8
8
|
};
|
|
9
9
|
export type VideoPrepPolicy = {
|
|
10
10
|
readonly intent: VideoPrepIntent;
|
|
11
|
-
readonly maxRawByteCount:
|
|
12
|
-
readonly maxDurationSeconds?:
|
|
11
|
+
readonly maxRawByteCount: PositiveByteCount;
|
|
12
|
+
readonly maxDurationSeconds?: PositiveVideoDurationSeconds;
|
|
13
13
|
readonly targetMaxDimensionPixels: number;
|
|
14
14
|
readonly stripAudio: boolean;
|
|
15
15
|
readonly allowOriginalFallback: boolean;
|
|
@@ -20,6 +20,13 @@ export type VideoPrepSourceMetadata = {
|
|
|
20
20
|
readonly width: number;
|
|
21
21
|
readonly height: number;
|
|
22
22
|
};
|
|
23
|
+
export type PositiveVideoDurationSeconds = Brand<number, 'PositiveVideoDurationSeconds'>;
|
|
24
|
+
export type ParsedVideoPrepSourceMetadata = {
|
|
25
|
+
readonly byteSize: PositiveByteCount;
|
|
26
|
+
readonly durationSeconds: PositiveVideoDurationSeconds;
|
|
27
|
+
readonly width: number;
|
|
28
|
+
readonly height: number;
|
|
29
|
+
};
|
|
23
30
|
export type VideoPrepValidationError = {
|
|
24
31
|
readonly tag: 'invalid-byte-size';
|
|
25
32
|
readonly byteSize: number;
|
|
@@ -40,11 +47,12 @@ export type VideoPrepValidationError = {
|
|
|
40
47
|
readonly height: number;
|
|
41
48
|
};
|
|
42
49
|
export declare const VIDEO_PREP_LIMITS: {
|
|
43
|
-
readonly maxRawByteCount:
|
|
44
|
-
readonly inlineContentMaxDurationSeconds:
|
|
45
|
-
readonly backgroundVideoMaxDurationSeconds:
|
|
50
|
+
readonly maxRawByteCount: PositiveByteCount;
|
|
51
|
+
readonly inlineContentMaxDurationSeconds: PositiveVideoDurationSeconds;
|
|
52
|
+
readonly backgroundVideoMaxDurationSeconds: PositiveVideoDurationSeconds;
|
|
46
53
|
readonly targetMaxDimensionPixels: 1080;
|
|
47
54
|
};
|
|
55
|
+
export declare function asPositiveVideoDurationSeconds(value: number): Result<PositiveVideoDurationSeconds, 'not-positive-video-duration-seconds'>;
|
|
48
56
|
/**
|
|
49
57
|
* Derives the client-side video preparation rules for a concrete upload/use surface.
|
|
50
58
|
*/
|
|
@@ -55,4 +63,5 @@ export declare function deriveVideoPrepPolicy(intent: VideoPrepIntent): VideoPre
|
|
|
55
63
|
* Checks cheap scalar invariants first, then policy limits, then dimensions so the
|
|
56
64
|
* returned error points at the first user-actionable upload problem.
|
|
57
65
|
*/
|
|
66
|
+
export declare function parseVideoPrepSourceMetadata(source: VideoPrepSourceMetadata, policy: VideoPrepPolicy): Result<ParsedVideoPrepSourceMetadata, VideoPrepValidationError>;
|
|
58
67
|
export declare function validateVideoPrepSource(source: VideoPrepSourceMetadata, policy: VideoPrepPolicy): Result<void, VideoPrepValidationError>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type VideoPrepIntent } from './videoPrep';
|
|
1
|
+
import { type PositiveVideoDurationSeconds, type VideoPrepIntent } from './videoPrep';
|
|
2
2
|
export type VideoSlotPolicyIntent = Extract<VideoPrepIntent, {
|
|
3
3
|
readonly tag: 'inline-content';
|
|
4
4
|
} | {
|
|
@@ -6,7 +6,7 @@ export type VideoSlotPolicyIntent = Extract<VideoPrepIntent, {
|
|
|
6
6
|
}>;
|
|
7
7
|
export type VideoSlotPolicy = Readonly<{
|
|
8
8
|
intent: VideoSlotPolicyIntent;
|
|
9
|
-
maxDurationSeconds:
|
|
9
|
+
maxDurationSeconds: PositiveVideoDurationSeconds;
|
|
10
10
|
}>;
|
|
11
11
|
export type VideoSlotAssetLike = Readonly<{
|
|
12
12
|
mimeType?: string | null;
|
|
@@ -24,11 +24,11 @@ export type VideoSlotAssetPolicyResult = Readonly<{
|
|
|
24
24
|
tag: 'unconstrained';
|
|
25
25
|
}> | Readonly<{
|
|
26
26
|
tag: 'duration-unknown';
|
|
27
|
-
maxSeconds:
|
|
27
|
+
maxSeconds: PositiveVideoDurationSeconds;
|
|
28
28
|
}> | Readonly<{
|
|
29
29
|
tag: 'duration-too-long';
|
|
30
|
-
actualSeconds:
|
|
31
|
-
maxSeconds:
|
|
30
|
+
actualSeconds: PositiveVideoDurationSeconds;
|
|
31
|
+
maxSeconds: PositiveVideoDurationSeconds;
|
|
32
32
|
}>;
|
|
33
33
|
export declare function deriveVideoSlotPolicy(intent: VideoPrepIntent | undefined): VideoSlotPolicy | undefined;
|
|
34
34
|
export declare function evaluateVideoSlotAssetPolicy(asset: VideoSlotAssetLike, policy: VideoSlotPolicy | undefined): VideoSlotAssetPolicyResult;
|
|
@@ -3,6 +3,7 @@ import type { LoadedCliConfig } from '../../../config-loader';
|
|
|
3
3
|
import type { LocalContent } from '../../../content/reader';
|
|
4
4
|
import type { OutputContext } from '../../../output';
|
|
5
5
|
import { type ContentDiff, type JsonDiffMode } from '../../../sync';
|
|
6
|
+
import type { LocalMediaPushReport } from '../../../media/local-sync';
|
|
6
7
|
export declare function displayDiff(params: {
|
|
7
8
|
output: OutputContext;
|
|
8
9
|
diff: ContentDiff;
|
|
@@ -14,4 +15,5 @@ export declare function displayDiff(params: {
|
|
|
14
15
|
localContent: LocalContent;
|
|
15
16
|
remoteContent: PulledContent;
|
|
16
17
|
humanDiff?: boolean;
|
|
18
|
+
mediaReport?: LocalMediaPushReport;
|
|
17
19
|
}): void;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type OutputContext } from '../../../output';
|
|
2
|
+
import type { ManagementClient } from '../../../../client/management';
|
|
3
|
+
import type { LocalContent } from '../../../content/reader';
|
|
4
|
+
import type { LocalMediaPushEvent, LocalMediaPushReport } from '../../../media/local-sync';
|
|
5
|
+
import { type LocalMediaPushResult } from '../../../media/local-sync';
|
|
6
|
+
export declare function reportLocalMediaPushEvent(output: OutputContext, event: LocalMediaPushEvent): void;
|
|
7
|
+
export declare function reportLocalMediaPushSummary(params: {
|
|
8
|
+
output: OutputContext;
|
|
9
|
+
report: LocalMediaPushReport;
|
|
10
|
+
dryRun: boolean;
|
|
11
|
+
includeResolved?: boolean;
|
|
12
|
+
}): void;
|
|
13
|
+
export declare function syncLocalMediaForPushWithReporting(params: {
|
|
14
|
+
output: OutputContext;
|
|
15
|
+
contentDir: string;
|
|
16
|
+
content: LocalContent;
|
|
17
|
+
client: ManagementClient;
|
|
18
|
+
dryRun: boolean;
|
|
19
|
+
targetEnv: string;
|
|
20
|
+
isStructuredOutput: boolean;
|
|
21
|
+
forceUpdateAsset?: boolean;
|
|
22
|
+
printSummary?: boolean;
|
|
23
|
+
}): Promise<LocalMediaPushResult>;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { SiteId } from '../../../../../../core/src/index';
|
|
2
|
+
import { type JsonDiffMode } from '../../../sync';
|
|
2
3
|
import { type CliDatedOfferingCommandBatchSource, type CliDatedOfferingCommandCompileInput, type DatedOfferingReportSubject, type DatedOfferingUpsertItem } from '../../../site-commands';
|
|
3
4
|
import type { WriterOptions } from '../../../content/writer';
|
|
4
5
|
import type { PushScopeResult, ScopePushContext } from './types';
|
|
6
|
+
import type { LocalMediaPushReport } from '../../../media/local-sync';
|
|
5
7
|
type CommandBackedDatedOfferingScopeConfig<TLocal, TRemote> = Readonly<{
|
|
6
8
|
source: CliDatedOfferingCommandBatchSource;
|
|
7
9
|
scopeName: string;
|
|
@@ -27,6 +29,58 @@ type CommandBackedDatedOfferingScopeConfig<TLocal, TRemote> = Readonly<{
|
|
|
27
29
|
upserts: readonly DatedOfferingUpsertItem<TLocal>[];
|
|
28
30
|
deletes: readonly string[];
|
|
29
31
|
}>) => CliDatedOfferingCommandCompileInput;
|
|
32
|
+
dryRunReportExtras?: Readonly<{
|
|
33
|
+
media?: LocalMediaPushReport;
|
|
34
|
+
}>;
|
|
30
35
|
}>;
|
|
36
|
+
type DatedOfferingDryRunItemStatus = 'created' | 'updated' | 'unchanged' | 'deleted';
|
|
37
|
+
export type DatedOfferingDryRunItem = Readonly<{
|
|
38
|
+
identifier: string;
|
|
39
|
+
label: string;
|
|
40
|
+
status: DatedOfferingDryRunItemStatus;
|
|
41
|
+
changes: readonly Readonly<{
|
|
42
|
+
path: string;
|
|
43
|
+
before: unknown;
|
|
44
|
+
after: unknown;
|
|
45
|
+
}>[];
|
|
46
|
+
}>;
|
|
47
|
+
export type DatedOfferingDryRunSummary = Readonly<{
|
|
48
|
+
created: number;
|
|
49
|
+
updated: number;
|
|
50
|
+
unchanged: number;
|
|
51
|
+
deleted: number;
|
|
52
|
+
}>;
|
|
53
|
+
export type DatedOfferingDryRunPlan = Readonly<{
|
|
54
|
+
summary: DatedOfferingDryRunSummary;
|
|
55
|
+
items: readonly DatedOfferingDryRunItem[];
|
|
56
|
+
}>;
|
|
57
|
+
export type ScopedPushJsonDiffChange = Readonly<{
|
|
58
|
+
type: string;
|
|
59
|
+
identifier: string;
|
|
60
|
+
operation: 'create' | 'update' | 'delete';
|
|
61
|
+
changes?: DatedOfferingDryRunItem['changes'];
|
|
62
|
+
}>;
|
|
63
|
+
export interface ScopedPushJsonDiff {
|
|
64
|
+
mode: JsonDiffMode;
|
|
65
|
+
direction: 'push';
|
|
66
|
+
scope: string;
|
|
67
|
+
targetEnv: ScopePushContext['targetEnv'];
|
|
68
|
+
dryRun: true;
|
|
69
|
+
summary: Readonly<{
|
|
70
|
+
creates: number;
|
|
71
|
+
updates: number;
|
|
72
|
+
deletes: number;
|
|
73
|
+
unchanged: number;
|
|
74
|
+
}>;
|
|
75
|
+
changes: readonly ScopedPushJsonDiffChange[];
|
|
76
|
+
media?: LocalMediaPushReport;
|
|
77
|
+
}
|
|
78
|
+
export declare function normalizeDatedOfferingForComparison(value: unknown): Record<string, unknown>;
|
|
79
|
+
export declare function buildDatedOfferingDryRunPlan<TLocal, TRemote>(input: Readonly<{
|
|
80
|
+
localItems: readonly TLocal[];
|
|
81
|
+
remoteItems: readonly TRemote[];
|
|
82
|
+
orphanIdentifiers: readonly string[];
|
|
83
|
+
config: Pick<CommandBackedDatedOfferingScopeConfig<TLocal, TRemote>, 'getIdentifier' | 'getDisplayLabel' | 'findRemote'>;
|
|
84
|
+
}>): DatedOfferingDryRunPlan;
|
|
31
85
|
export declare function pushCommandBackedDatedOfferingScope<TLocal, TRemote>(ctx: ScopePushContext, config: CommandBackedDatedOfferingScopeConfig<TLocal, TRemote>): Promise<PushScopeResult>;
|
|
32
86
|
export {};
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import type { LocalContent } from '../../../content/reader';
|
|
2
|
+
import type { LocalMediaPushReport } from '../../../media/local-sync';
|
|
2
3
|
import type { ScopePushContext } from './types';
|
|
3
4
|
export declare function createEmptyLocalContent(): LocalContent;
|
|
4
|
-
|
|
5
|
+
type ScopedLocalMediaSyncResult = Readonly<{
|
|
5
6
|
ok: true;
|
|
6
|
-
|
|
7
|
+
mediaReport: LocalMediaPushReport;
|
|
8
|
+
}> | Readonly<{
|
|
7
9
|
ok: false;
|
|
8
10
|
errors: string[];
|
|
11
|
+
mediaReport: LocalMediaPushReport;
|
|
9
12
|
}>;
|
|
13
|
+
export declare function syncLocalMediaForScopePush(ctx: ScopePushContext, content: LocalContent): Promise<ScopedLocalMediaSyncResult>;
|
|
14
|
+
export {};
|
|
@@ -3,6 +3,8 @@ import type { ManagementClient } from '../../../../client/management';
|
|
|
3
3
|
import type { WriterOptions } from '../../../content/writer';
|
|
4
4
|
import type { SiteId } from '../../../../../../core/src/index';
|
|
5
5
|
import type { EnvTarget } from '../../../helpers';
|
|
6
|
+
import type { JsonDiffMode } from '../../../sync';
|
|
7
|
+
import type { LocalMediaPushReport } from '../../../media/local-sync';
|
|
6
8
|
export interface ScopePushContext {
|
|
7
9
|
output: OutputContext;
|
|
8
10
|
contentDir: string;
|
|
@@ -12,6 +14,8 @@ export interface ScopePushContext {
|
|
|
12
14
|
dryRun: boolean;
|
|
13
15
|
force: boolean;
|
|
14
16
|
isJsonOutput: boolean;
|
|
17
|
+
isStructuredOutput?: boolean;
|
|
18
|
+
jsonDiffMode?: JsonDiffMode | null;
|
|
15
19
|
forceUpdateAsset?: boolean;
|
|
16
20
|
deleteOrphaned: boolean;
|
|
17
21
|
autoPullStale: boolean;
|
|
@@ -29,9 +33,11 @@ export interface PushScopeResult {
|
|
|
29
33
|
scopeName: string;
|
|
30
34
|
created: number;
|
|
31
35
|
updated: number;
|
|
36
|
+
unchanged?: number;
|
|
32
37
|
deleted: number;
|
|
33
38
|
failed: number;
|
|
34
39
|
errors: PushScopeItemError[];
|
|
40
|
+
media?: LocalMediaPushReport;
|
|
35
41
|
}
|
|
36
42
|
/**
|
|
37
43
|
* Generic configuration for push scope operations
|
|
@@ -13,10 +13,42 @@ export type LocalMediaPushSummary = {
|
|
|
13
13
|
pendingUploads: number;
|
|
14
14
|
pendingAssignments: number;
|
|
15
15
|
};
|
|
16
|
+
export type LocalMediaUploadFailureKind = 'max_object_size' | 'unsupported_mime' | 'quota_or_storage_limit' | 'auth_or_permission' | 'network' | 'cms_api' | 'unknown';
|
|
17
|
+
export type LocalMediaPushItemStatus = 'resolved' | 'reused' | 'assigned' | 'pending_upload' | 'uploaded' | 'skipped' | 'missing_local_file' | 'failed';
|
|
18
|
+
export type LocalMediaPushItemReport = Readonly<{
|
|
19
|
+
identifier: string;
|
|
20
|
+
status: LocalMediaPushItemStatus;
|
|
21
|
+
targetEnv?: string;
|
|
22
|
+
filename?: string;
|
|
23
|
+
sizeBytes?: number;
|
|
24
|
+
mimeType?: string;
|
|
25
|
+
locations?: readonly string[];
|
|
26
|
+
message?: string;
|
|
27
|
+
failureKind?: LocalMediaUploadFailureKind;
|
|
28
|
+
rawError?: string;
|
|
29
|
+
}>;
|
|
30
|
+
export type LocalMediaPushReport = Readonly<{
|
|
31
|
+
targetEnv?: string;
|
|
32
|
+
summary: LocalMediaPushSummary;
|
|
33
|
+
items: readonly LocalMediaPushItemReport[];
|
|
34
|
+
failedIdentifiers: readonly string[];
|
|
35
|
+
missingIdentifiers: readonly string[];
|
|
36
|
+
}>;
|
|
37
|
+
export type LocalMediaPushEvent = Readonly<{
|
|
38
|
+
type: 'upload_started';
|
|
39
|
+
item: LocalMediaPushItemReport;
|
|
40
|
+
}> | Readonly<{
|
|
41
|
+
type: 'upload_succeeded';
|
|
42
|
+
item: LocalMediaPushItemReport;
|
|
43
|
+
}> | Readonly<{
|
|
44
|
+
type: 'upload_failed';
|
|
45
|
+
item: LocalMediaPushItemReport;
|
|
46
|
+
}>;
|
|
16
47
|
export type LocalMediaPushResult = {
|
|
17
48
|
content: LocalContent;
|
|
18
49
|
manifest: LocalMediaManifest;
|
|
19
50
|
summary: LocalMediaPushSummary;
|
|
51
|
+
report: LocalMediaPushReport;
|
|
20
52
|
warnings: string[];
|
|
21
53
|
errors: string[];
|
|
22
54
|
hasChanges: boolean;
|
|
@@ -40,6 +72,8 @@ type SyncLocalMediaForPushOptions = {
|
|
|
40
72
|
client: ManagementClient;
|
|
41
73
|
dryRun: boolean;
|
|
42
74
|
forceUpdateAsset?: boolean;
|
|
75
|
+
targetEnv?: string;
|
|
76
|
+
onEvent?: (event: LocalMediaPushEvent) => void;
|
|
43
77
|
};
|
|
44
78
|
type SyncLocalMediaForPullOptions = {
|
|
45
79
|
contentDir: string;
|
|
@@ -51,6 +85,7 @@ type SyncLocalMediaForPullOptions = {
|
|
|
51
85
|
siteId?: string;
|
|
52
86
|
downloadFiles: boolean;
|
|
53
87
|
};
|
|
88
|
+
export declare function classifyLocalMediaUploadFailure(error: unknown): LocalMediaUploadFailureKind;
|
|
54
89
|
export declare function syncLocalMediaForPush(options: SyncLocalMediaForPushOptions): Promise<LocalMediaPushResult>;
|
|
55
90
|
export declare function syncLocalMediaForPull(options: SyncLocalMediaForPullOptions): Promise<LocalMediaPullResult>;
|
|
56
91
|
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Media } from '../../contracts';
|
|
2
|
+
import type { EventScheduleScope, EventSurfacePreset } from '../../contracts/system-block-content';
|
|
2
3
|
import type { PublicTeamMemberSummary } from '../../../../api/src/index';
|
|
3
4
|
import type { BookingFlexibleBalanceConfig, BookingInstalmentPlanConfig, LocationCoordinates, PublicCoursePriceDisplay, PublicEventPriceDisplay, PublicEventPricing, PublicEventPricingType } from '../../../../core/src/index';
|
|
4
5
|
import type { AccordionIslandProps as BlocksAccordionIslandProps, BookingFormConfig as BlocksBookingFormConfig, BookingFormInteractiveIslandProps as BlocksBookingFormIslandProps, BookingFormService as BlocksBookingFormService, CarouselIslandProps as BlocksCarouselIslandProps, CourseRegistrationInteractiveIslandProps as BlocksCourseRegistrationIslandProps, CartDisplay as BlocksCartDisplay, CartInteractiveIslandProps as BlocksCartIslandProps, CartLineDisplay as BlocksCartLineDisplay, CheckoutDisplay as BlocksCheckoutDisplay, CheckoutInteractiveIslandProps as BlocksCheckoutIslandProps, EventCalendarInteractiveIslandProps as BlocksEventCalendarIslandProps, EventCombinedInteractiveIslandProps as BlocksEventCombinedIslandProps, EventDetailsContentEntry as BlocksEventDetailsContentEntry, EventDetailsIslandProps as BlocksEventDetailsIslandProps, EventDetailsOccurrenceContext as BlocksEventDetailsOccurrenceContext, LocationMapIslandProps as BlocksLocationMapIslandProps, EventRegistrationInteractiveIslandProps as BlocksEventRegistrationIslandProps, EventListingDisplay as BlocksEventListingDisplay, EventListingHydration as BlocksEventListingHydration, EventListingInteractiveIslandProps as BlocksEventListingIslandProps, FormInteractiveIslandProps as BlocksFormIslandProps, HeaderSectionIslandProps as BlocksHeaderSectionIslandProps, MembershipCardDisplay as BlocksMembershipCardDisplay, NewsletterFormInteractiveIslandProps as BlocksNewsletterFormIslandProps, PassCardDisplay as BlocksPassCardDisplay, PassesMembershipsDisplay as BlocksPassesMembershipsDisplay, ProductCardDisplay as BlocksProductCardDisplay, ProductDetailDisplay as BlocksProductDetailDisplay, ProductDetailInteractiveIslandProps as BlocksProductDetailIslandProps, ProductListDisplay as BlocksProductListDisplay, ProductListInteractiveIslandProps as BlocksProductListIslandProps, ProductVariantOptionDisplay as BlocksProductVariantOptionDisplay, ShopInteractiveIslandProps as BlocksShopIslandProps } from '../../../../blocks/src/contracts/index';
|
|
@@ -122,20 +123,41 @@ export type BookingPricingOption = {
|
|
|
122
123
|
};
|
|
123
124
|
export type BookingPricing = {
|
|
124
125
|
bookingRequirement: 'none' | 'required';
|
|
125
|
-
pricingStrategy: 'free' | 'single' | 'tiered';
|
|
126
|
+
pricingStrategy: 'free' | 'single' | 'tiered' | 'sliding_scale';
|
|
126
127
|
currency: string;
|
|
127
128
|
singlePriceAmount: number | null;
|
|
129
|
+
slidingMinAmount?: number | null;
|
|
130
|
+
slidingMaxAmount?: number | null;
|
|
131
|
+
slidingSuggestedAmount?: number | null;
|
|
128
132
|
paymentTerms: BookingPaymentTerms;
|
|
129
133
|
options: readonly BookingPricingOption[];
|
|
130
134
|
};
|
|
135
|
+
type PublicEventRichTextDoc = {
|
|
136
|
+
type: 'doc';
|
|
137
|
+
content: Array<{
|
|
138
|
+
type: string;
|
|
139
|
+
content?: Array<{
|
|
140
|
+
type: string;
|
|
141
|
+
text?: string;
|
|
142
|
+
[key: string]: unknown;
|
|
143
|
+
}>;
|
|
144
|
+
[key: string]: unknown;
|
|
145
|
+
}>;
|
|
146
|
+
};
|
|
131
147
|
export type PublicEvent = {
|
|
132
148
|
kind?: 'event' | 'course_session';
|
|
149
|
+
eventPreset?: 'event' | EventSurfacePreset;
|
|
150
|
+
eventDestinationMode?: 'cms-managed' | 'system-managed';
|
|
133
151
|
destination: PublicEventDestination;
|
|
152
|
+
scheduleScope?: Exclude<EventScheduleScope, 'any'>;
|
|
134
153
|
id: string;
|
|
135
154
|
occurrenceId: string;
|
|
136
155
|
seriesId: string;
|
|
137
156
|
title: string;
|
|
138
157
|
description: string | null;
|
|
158
|
+
content?: {
|
|
159
|
+
body?: PublicEventRichTextDoc | null;
|
|
160
|
+
};
|
|
139
161
|
presentation?: {
|
|
140
162
|
cardTitleOverride?: string | null;
|
|
141
163
|
summary?: string | null;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { assertNever2, usePreviewDesignHistoryOrder, useOptionalEditorUiStoreInstance, getPageDesignEditorState, PAGE_DESIGN_EDITOR_STATE_FETCH_ERROR_MESSAGE, unwrapResponse, useDebouncedLatestSave, AMBIENT_BACKGROUND_ROLES, applyPageDesignEditorAction, resolvePreviewSidebarTab, confirmAutosaveBatch, beginAutosaveBatch, enqueueTransaction, applyBackgroundOverrideContentPatch, systemCustomizeFacetDefinitionForBlock, systemCustomizeFacetRollbackContentPatch, systemCustomizeFacetApplyContentPatch, unsafeAsEditorBlockId, createHistoryState, rejectAutosaveBatch, redoHistory, undoHistory, pushHistoryEntry, idleEditorTransactionQueueState, canRedoHistory, deriveTransactionCapabilities, canUndoHistory, backgroundOverrideEquals, attachRenderableMediaAssetFields, planPageDesignLayoutLookCompatibility, unsafeAsEditorBlockValues } from './chunk-
|
|
2
|
+
import { assertNever2, usePreviewDesignHistoryOrder, useOptionalEditorUiStoreInstance, getPageDesignEditorState, PAGE_DESIGN_EDITOR_STATE_FETCH_ERROR_MESSAGE, unwrapResponse, useDebouncedLatestSave, AMBIENT_BACKGROUND_ROLES, applyPageDesignEditorAction, resolvePreviewSidebarTab, confirmAutosaveBatch, beginAutosaveBatch, enqueueTransaction, applyBackgroundOverrideContentPatch, systemCustomizeFacetDefinitionForBlock, systemCustomizeFacetRollbackContentPatch, systemCustomizeFacetApplyContentPatch, unsafeAsEditorBlockId, createHistoryState, rejectAutosaveBatch, redoHistory, undoHistory, pushHistoryEntry, idleEditorTransactionQueueState, canRedoHistory, deriveTransactionCapabilities, canUndoHistory, backgroundOverrideEquals, attachRenderableMediaAssetFields, planPageDesignLayoutLookCompatibility, unsafeAsEditorBlockValues } from './chunk-I6EOKV6B.mjs';
|
|
3
3
|
import { ApiRequestError, resolveSurfaceDocumentAttributes, SURFACE_DOCUMENT_DATA_ATTRIBUTE, SURFACE_IDS } from './chunk-ZA2S7H34.mjs';
|
|
4
4
|
import { createContext, useState, useRef, useEffect, useMemo, useLayoutEffect, useContext } from 'react';
|
|
5
5
|
import { jsx } from 'react/jsx-runtime';
|