riverbankcms 0.26.0 → 0.28.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/acceptance/matrix.mjs +3 -3
- package/dist/cli/index.mjs +1718 -1453
- package/dist/{entryCommands-61TwBBCA.mjs → entryCommands-Bus1LjSx.mjs} +395 -111
- package/dist/{eventUpsertInputSchema-zAAQrjXE.mjs → eventUpsertInputSchema-COwkcsq7.mjs} +14 -11
- package/dist/{load-config-C7Ght4_r.mjs → load-config-9DBnYiBm.mjs} +2 -2
- package/dist/load-config-DX04ekBQ.mjs +4 -0
- package/dist/{plan-DB3FQqwH.mjs → plan-DU4T2YGq.mjs} +1 -1
- package/dist/scaffold/index.mjs +2 -2
- package/dist/{sdk-event-upsert-CH3xwzuX.mjs → sdk-event-upsert-BrJvTQ-D.mjs} +7119 -3556
- package/dist/{src-DsR6-gBQ.mjs → src-D9-RAM-l.mjs} +52 -3
- package/dist/testing.mjs +4 -4
- package/package.json +1 -1
- package/dist/load-config-DAdJwh-i.mjs +0 -4
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { n as CliSdkPeerError, t as loadConfigFile } from "./load-config-
|
|
2
|
+
import { A as evaluateSiteCommandExposure, E as parseAndPlanCommandBatchForTypes, F as entryIdentifierForCommand, It as themeSchema, K as bookingQuestionAttachmentSchema, Mr as asPageFlowPresetId, Nr as asSiteStyleId, T as createDryRunReport, V as eventBookingOfferIntentSchema, X as createCommandRef, Xr as parseSurfaceTree, Z as createContentEntryRef, Zn as getDirectImageUrlForSiteScopedPath, _n as pageDesignIntentSchemaVersion, _r as normalizeAmbiguousStoragePathForSite, br as MAX_MANAGEMENT_MEDIA_UPLOAD_BYTES, cn as asHeaderLayoutId, ct as require_dist, dn as headerStyleIdValues, dr as slugifyMediaIdentifier, fn as buttonStyleSelectionSchema, gn as pageDesignBoundaryTreatmentSchema, gt as headerPreferencesSchema, hr as getMimeType, it as createSiteCommandSiteRef, j as getSiteCommandMetadata, k as evaluateSiteCommandBatchExposure, kr as asAppearancePresetId, ln as asHeaderStyleId, m as isInternalResolvedLinkValue, mr as getExtensionForMimeType, n as sdkCourseBookingSettingsSchema, on as asFooterLookId, r as sdkEventOccurrenceInputSchema, s as RESOLVED_INTERNAL_LINK_ENTITY_TYPES, sn as footerLookIdValues, sr as buildMediaIdentifierFromFilename, st as slugPart, un as headerLayoutIdValues, ur as resolveMediaIdentifier, vn as footerPreferencesSchema, w as stableStringify, x as resolvePageUpsertSeo, y as eventVisibilitySchema, yr as FILE_SIZE_LIMITS } from "./sdk-event-upsert-BrJvTQ-D.mjs";
|
|
3
|
+
import { C as createSecret, Cn as parsePageId, Et as resolveBookingTimeZoneId, L as parseFooterCompositionV1, Ln as unsafeAsEventOfferingId, On as unsafeAsAppointmentResourceId, Qn as unsafeAsStaffMemberId, Rn as unsafeAsEventSeriesId, St as parseBookingLocalDate, T as parseManagementKey, Tn as parseSiteId, Vn as unsafeAsOccurrenceId, Z as locationValueSchema, _ as publicReadFreshnessSeconds, c as parseVerticalId, d as DEFAULT_EVENT_TYPE_PRESETS, f as EVENT_PRESET_VALUES, g as getPublicReadCachePolicy, ir as ok, l as parseVerticalPresetId, o as areConfiguredBookingVerticalConfigsEqual, ot as formatDate, pn as assertNever, r as resolveEventCatalogue, rr as err, s as canonicalizeConfiguredBookingVerticalConfig, t as committedWriteProofSchema, u as resolveSiteVerticalBookingConfig, w as exposeSecret } from "./src-D9-RAM-l.mjs";
|
|
4
|
+
import { n as CliSdkPeerError, t as loadConfigFile } from "./load-config-9DBnYiBm.mjs";
|
|
5
5
|
import { Command } from "commander";
|
|
6
6
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
7
7
|
import * as fs$1 from "fs/promises";
|
|
@@ -473,19 +473,39 @@ const retentionPolicyRegistry = {
|
|
|
473
473
|
},
|
|
474
474
|
email_audit_metadata: {
|
|
475
475
|
dataClass: "email_audit_metadata",
|
|
476
|
-
policyKind: "
|
|
476
|
+
policyKind: "platform_auto_delete",
|
|
477
477
|
trigger: "created_at",
|
|
478
478
|
window: {
|
|
479
479
|
kind: "relative",
|
|
480
480
|
unit: "months",
|
|
481
481
|
value: 12
|
|
482
482
|
},
|
|
483
|
-
action: "
|
|
483
|
+
action: "hard_delete",
|
|
484
484
|
automation: {
|
|
485
|
-
kind: "
|
|
486
|
-
|
|
485
|
+
kind: "scheduled",
|
|
486
|
+
jobKind: "email_audit_metadata_cleanup",
|
|
487
|
+
executionModes: ["dry_run", "scheduled"],
|
|
488
|
+
executionSubstrate: "vercel_cron"
|
|
487
489
|
},
|
|
488
|
-
rationale: "
|
|
490
|
+
rationale: "Sent email records are kept for twelve months; send jobs and delivery receipts preserve their independent history."
|
|
491
|
+
},
|
|
492
|
+
transactional_email_job_payload: {
|
|
493
|
+
dataClass: "transactional_email_job_payload",
|
|
494
|
+
policyKind: "platform_auto_delete",
|
|
495
|
+
trigger: "delivery_finished_at",
|
|
496
|
+
window: {
|
|
497
|
+
kind: "relative",
|
|
498
|
+
unit: "days",
|
|
499
|
+
value: 90
|
|
500
|
+
},
|
|
501
|
+
action: "hard_delete",
|
|
502
|
+
automation: {
|
|
503
|
+
kind: "scheduled",
|
|
504
|
+
jobKind: "transactional_email_payload_cleanup",
|
|
505
|
+
executionModes: ["dry_run", "scheduled"],
|
|
506
|
+
executionSubstrate: "vercel_cron"
|
|
507
|
+
},
|
|
508
|
+
rationale: "Finished email jobs lose copied content after ninety days once completion work is settled; delivery and replay evidence remain."
|
|
489
509
|
},
|
|
490
510
|
dsar_run_metadata: {
|
|
491
511
|
dataClass: "dsar_run_metadata",
|
|
@@ -914,6 +934,13 @@ function pageCommitReasonFromTag(tag) {
|
|
|
914
934
|
//#endregion
|
|
915
935
|
//#region ../api/src/pageJournalEndpoints.ts
|
|
916
936
|
const PAGE_JOURNAL_ENDPOINT_DEFINITIONS = {
|
|
937
|
+
getPagePublishReadinessFacts: {
|
|
938
|
+
path: "/sites/{siteId}/pages/readiness-facts",
|
|
939
|
+
method: "POST",
|
|
940
|
+
auth: "user",
|
|
941
|
+
responseKind: "json",
|
|
942
|
+
errors: ["validation:invalid_input", "server:internal_error"]
|
|
943
|
+
},
|
|
917
944
|
replayThemeJournalChange: {
|
|
918
945
|
path: "/sites/{siteId}/theme/journal",
|
|
919
946
|
method: "POST",
|
|
@@ -1452,6 +1479,26 @@ function normalizeSiteCacheId(id) {
|
|
|
1452
1479
|
const parsed = parseSiteId(id);
|
|
1453
1480
|
return parsed.ok ? parsed.value : id;
|
|
1454
1481
|
}
|
|
1482
|
+
/** Memory caches follow the same public-read policy as HTTP and batch readers. */
|
|
1483
|
+
function buildPublicReadMemoryCacheTags(endpoint, params) {
|
|
1484
|
+
const policy = getPublicReadCachePolicy(endpoint);
|
|
1485
|
+
if (policy.kind === "live") return [];
|
|
1486
|
+
const templates = {
|
|
1487
|
+
published_content: TAG_TEMPLATES.siteRoutableContent,
|
|
1488
|
+
public_team_members: TAG_TEMPLATES.publicTeamMembers,
|
|
1489
|
+
public_products: TAG_TEMPLATES.publicShop,
|
|
1490
|
+
site_forms: TAG_TEMPLATES.siteForms
|
|
1491
|
+
};
|
|
1492
|
+
return buildCacheReadTags([
|
|
1493
|
+
...policy.tags.map((kind) => templates[kind]),
|
|
1494
|
+
...endpoint === "checkRedirect" ? [
|
|
1495
|
+
TAG_TEMPLATES.siteRedirects,
|
|
1496
|
+
TAG_TEMPLATES.siteBySlug,
|
|
1497
|
+
TAG_TEMPLATES.siteById
|
|
1498
|
+
] : [],
|
|
1499
|
+
...endpoint === "getPublicFormById" ? [TAG_TEMPLATES.formById] : []
|
|
1500
|
+
], params);
|
|
1501
|
+
}
|
|
1455
1502
|
|
|
1456
1503
|
//#endregion
|
|
1457
1504
|
//#region ../api/src/sdkEntryReadEndpoints.ts
|
|
@@ -3057,6 +3104,7 @@ const SDK_APPOINTMENT_SERVICE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
3057
3104
|
errors: [
|
|
3058
3105
|
"validation:invalid_input",
|
|
3059
3106
|
"resource:not_found",
|
|
3107
|
+
"resource:conflict",
|
|
3060
3108
|
"server:internal_error"
|
|
3061
3109
|
]
|
|
3062
3110
|
},
|
|
@@ -3075,6 +3123,7 @@ const SDK_APPOINTMENT_SERVICE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
3075
3123
|
errors: [
|
|
3076
3124
|
"validation:invalid_input",
|
|
3077
3125
|
"resource:not_found",
|
|
3126
|
+
"resource:conflict",
|
|
3078
3127
|
"server:internal_error"
|
|
3079
3128
|
]
|
|
3080
3129
|
}
|
|
@@ -5281,6 +5330,7 @@ const ENDPOINT_DEFINITIONS = {
|
|
|
5281
5330
|
responseKind: "json"
|
|
5282
5331
|
},
|
|
5283
5332
|
createContentEntry: {
|
|
5333
|
+
editLease: "unleased-editor",
|
|
5284
5334
|
path: "/sites/{siteId}/content/{type}",
|
|
5285
5335
|
method: "POST",
|
|
5286
5336
|
tags: ["site-{siteId}", "content-{siteId}-{type}"],
|
|
@@ -5603,6 +5653,29 @@ const ENDPOINT_DEFINITIONS = {
|
|
|
5603
5653
|
auth: "user",
|
|
5604
5654
|
responseKind: "json"
|
|
5605
5655
|
},
|
|
5656
|
+
previewSiteBrandingOperation: {
|
|
5657
|
+
path: "/sites/{siteId}/settings/general/preview",
|
|
5658
|
+
method: "POST",
|
|
5659
|
+
auth: "user",
|
|
5660
|
+
responseKind: "json",
|
|
5661
|
+
errors: [
|
|
5662
|
+
"validation:invalid_input",
|
|
5663
|
+
"auth:insufficient_permissions",
|
|
5664
|
+
"server:internal_error"
|
|
5665
|
+
]
|
|
5666
|
+
},
|
|
5667
|
+
confirmSiteBrandingOperation: {
|
|
5668
|
+
path: "/sites/{siteId}/settings/general/confirm",
|
|
5669
|
+
method: "POST",
|
|
5670
|
+
auth: "user",
|
|
5671
|
+
responseKind: "json",
|
|
5672
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings],
|
|
5673
|
+
errors: [
|
|
5674
|
+
"validation:invalid_input",
|
|
5675
|
+
"auth:insufficient_permissions",
|
|
5676
|
+
"server:internal_error"
|
|
5677
|
+
]
|
|
5678
|
+
},
|
|
5606
5679
|
getSiteFooterBlocks: {
|
|
5607
5680
|
path: "/sites/{siteId}/content/footer-blocks",
|
|
5608
5681
|
method: "GET",
|
|
@@ -5625,6 +5698,7 @@ const ENDPOINT_DEFINITIONS = {
|
|
|
5625
5698
|
errors: [
|
|
5626
5699
|
"validation:invalid_input",
|
|
5627
5700
|
"resource:not_found",
|
|
5701
|
+
"resource:conflict",
|
|
5628
5702
|
"auth:forbidden",
|
|
5629
5703
|
"server:internal_error"
|
|
5630
5704
|
]
|
|
@@ -6683,48 +6757,6 @@ const ENDPOINT_DEFINITIONS = {
|
|
|
6683
6757
|
auth: "user",
|
|
6684
6758
|
responseKind: "json"
|
|
6685
6759
|
},
|
|
6686
|
-
classifyMediaAsset: {
|
|
6687
|
-
path: "/media/{assetId}/classify",
|
|
6688
|
-
method: "POST",
|
|
6689
|
-
tags: ["media", "media-{assetId}"],
|
|
6690
|
-
auth: "user",
|
|
6691
|
-
responseKind: "json"
|
|
6692
|
-
},
|
|
6693
|
-
classifyMediaBatch: {
|
|
6694
|
-
path: "/media/classify",
|
|
6695
|
-
method: "POST",
|
|
6696
|
-
tags: ["media"],
|
|
6697
|
-
auth: "user",
|
|
6698
|
-
responseKind: "json"
|
|
6699
|
-
},
|
|
6700
|
-
mediaJobsStatus: {
|
|
6701
|
-
path: "/media/jobs/status",
|
|
6702
|
-
method: "GET",
|
|
6703
|
-
tags: ["media"],
|
|
6704
|
-
auth: "user",
|
|
6705
|
-
responseKind: "json"
|
|
6706
|
-
},
|
|
6707
|
-
enqueueMediaClassifyJob: {
|
|
6708
|
-
path: "/media/jobs",
|
|
6709
|
-
method: "POST",
|
|
6710
|
-
tags: ["media"],
|
|
6711
|
-
auth: "user",
|
|
6712
|
-
responseKind: "json"
|
|
6713
|
-
},
|
|
6714
|
-
runMediaClassifyJob: {
|
|
6715
|
-
path: "/media/jobs/run",
|
|
6716
|
-
method: "POST",
|
|
6717
|
-
tags: ["media"],
|
|
6718
|
-
auth: "user",
|
|
6719
|
-
responseKind: "json"
|
|
6720
|
-
},
|
|
6721
|
-
runAllMediaClassifyJobs: {
|
|
6722
|
-
path: "/media/jobs/run-all",
|
|
6723
|
-
method: "POST",
|
|
6724
|
-
tags: ["media"],
|
|
6725
|
-
auth: "user",
|
|
6726
|
-
responseKind: "json"
|
|
6727
|
-
},
|
|
6728
6760
|
initSiteContent: {
|
|
6729
6761
|
path: "/sites/{siteId}/content/init",
|
|
6730
6762
|
method: "POST",
|
|
@@ -6990,14 +7022,6 @@ const ENDPOINT_DEFINITIONS = {
|
|
|
6990
7022
|
auth: "user",
|
|
6991
7023
|
responseKind: "json"
|
|
6992
7024
|
},
|
|
6993
|
-
getPageDesignEditorState: {
|
|
6994
|
-
path: "/sites/{siteId}/pages/{pageId}/design",
|
|
6995
|
-
method: "GET",
|
|
6996
|
-
tags: [TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById],
|
|
6997
|
-
auth: "user",
|
|
6998
|
-
responseKind: "json",
|
|
6999
|
-
errors: ["resource:not_found", "server:internal_error"]
|
|
7000
|
-
},
|
|
7001
7025
|
savePageDesignState: {
|
|
7002
7026
|
editLease: "managed",
|
|
7003
7027
|
path: "/sites/{siteId}/pages/{pageId}/design-state",
|
|
@@ -7615,6 +7639,14 @@ const ENDPOINT_DEFINITIONS = {
|
|
|
7615
7639
|
auth: "admin",
|
|
7616
7640
|
responseKind: "json"
|
|
7617
7641
|
},
|
|
7642
|
+
adminClearSitePublicCache: {
|
|
7643
|
+
path: "/admin/sites/{siteId}/cache/clear",
|
|
7644
|
+
method: "POST",
|
|
7645
|
+
tags: ["admin", "sites"],
|
|
7646
|
+
auth: "admin",
|
|
7647
|
+
errors: [],
|
|
7648
|
+
responseKind: "json"
|
|
7649
|
+
},
|
|
7618
7650
|
adminDeleteSite: {
|
|
7619
7651
|
path: "/admin/sites/{siteId}",
|
|
7620
7652
|
method: "DELETE",
|
|
@@ -10433,6 +10465,7 @@ function normalizeSdkThemeWire(theme) {
|
|
|
10433
10465
|
|
|
10434
10466
|
//#endregion
|
|
10435
10467
|
//#region ../api/src/sdkPullResponseSchemas.ts
|
|
10468
|
+
var import_dist = require_dist();
|
|
10436
10469
|
const sdkIdentifierSchema$1 = z.string().min(1);
|
|
10437
10470
|
const sdkTimestampSchema$2 = z.string().min(1);
|
|
10438
10471
|
const sdkJsonObjectSchema$1 = z.record(z.string(), z.unknown());
|
|
@@ -10548,29 +10581,16 @@ const sdkPullSettingsSchema = sdkSettingsUpdateSchema.extend({
|
|
|
10548
10581
|
seoDefaults: sdkSeoDefaultsSchema.nullable(),
|
|
10549
10582
|
verticalConfig: sdkConfiguredBookingVerticalConfigSchema.optional()
|
|
10550
10583
|
});
|
|
10551
|
-
/**
|
|
10552
|
-
const
|
|
10584
|
+
/** Existing flat form wire shape; detailed questionnaires retain their canonical sections. */
|
|
10585
|
+
const sdkPullFlatFormSchema = z.object({
|
|
10586
|
+
schemaVersion: z.undefined().optional(),
|
|
10553
10587
|
version: z.string().optional(),
|
|
10554
|
-
|
|
10555
|
-
|
|
10556
|
-
label: z.string(),
|
|
10557
|
-
type: z.string(),
|
|
10558
|
-
required: z.boolean().optional(),
|
|
10559
|
-
placeholder: z.string().optional(),
|
|
10560
|
-
helpText: z.string().optional(),
|
|
10561
|
-
layout: z.object({ width: z.enum(["full", "half"]).optional() }).optional(),
|
|
10562
|
-
options: z.array(z.object({
|
|
10563
|
-
value: z.string(),
|
|
10564
|
-
label: z.string()
|
|
10565
|
-
})).optional(),
|
|
10566
|
-
multiple: z.boolean().optional(),
|
|
10567
|
-
minLength: z.number().optional(),
|
|
10568
|
-
maxLength: z.number().optional(),
|
|
10569
|
-
pattern: z.string().optional(),
|
|
10570
|
-
min: z.number().optional(),
|
|
10571
|
-
max: z.number().optional()
|
|
10572
|
-
}))
|
|
10588
|
+
sections: z.never().optional(),
|
|
10589
|
+
fields: z.array(import_dist.formFieldTransportSchema)
|
|
10573
10590
|
});
|
|
10591
|
+
const sdkPullFormSchema = z.discriminatedUnion("schemaVersion", [sdkPullFlatFormSchema, import_dist.bookingQuestionsDetailedSchemaSchema]);
|
|
10592
|
+
/** The same pulled definition, with nonempty fields required on a flat write. */
|
|
10593
|
+
const sdkFormDefinitionInputSchema = z.discriminatedUnion("schemaVersion", [sdkPullFlatFormSchema.extend({ fields: sdkPullFlatFormSchema.shape.fields.min(1, "Form must have at least one field") }), import_dist.bookingQuestionsDetailedSchemaSchema]);
|
|
10574
10594
|
const sdkPullFormSchemaWithId = z.object({
|
|
10575
10595
|
id: sdkIdentifierSchema$1,
|
|
10576
10596
|
slug: sdkIdentifierSchema$1,
|
|
@@ -10654,6 +10674,7 @@ const sdkPullEventRunCommonSchema = z.object({
|
|
|
10654
10674
|
bookingOffer: eventBookingOfferIntentSchema,
|
|
10655
10675
|
venueRef: z.string().nullable(),
|
|
10656
10676
|
formRef: z.string().nullable(),
|
|
10677
|
+
bookingQuestions: bookingQuestionAttachmentSchema.nullable().optional(),
|
|
10657
10678
|
settings: sdkJsonObjectSchema$1,
|
|
10658
10679
|
presentation: z.unknown().optional(),
|
|
10659
10680
|
tags: z.array(z.string()),
|
|
@@ -10756,14 +10777,11 @@ function authoredThemeJournalValue(input) {
|
|
|
10756
10777
|
body: {
|
|
10757
10778
|
...input.selections,
|
|
10758
10779
|
theme,
|
|
10759
|
-
themeId: input.themeId,
|
|
10760
|
-
selectionId: input.selectionId,
|
|
10761
10780
|
overrides: input.overrides
|
|
10762
10781
|
},
|
|
10763
10782
|
preferences: input.preferences
|
|
10764
10783
|
};
|
|
10765
10784
|
}
|
|
10766
|
-
/** Shared request/value wire contract: authored theme bytes exclude compiled chrome. */
|
|
10767
10785
|
const chromelessBodyThemeSchema = themeSchema.omit({
|
|
10768
10786
|
header: true,
|
|
10769
10787
|
footer: true
|
|
@@ -10780,22 +10798,27 @@ const themeSaveBodySchema = z.object({
|
|
|
10780
10798
|
}).strict().optional(),
|
|
10781
10799
|
footerLookId: z.enum(footerLookIdValues).transform(asFooterLookId).nullable().optional()
|
|
10782
10800
|
}).strict();
|
|
10783
|
-
const
|
|
10801
|
+
const themeJournalValueShape = {
|
|
10784
10802
|
snapshot: themeSchema,
|
|
10785
|
-
body: themeSaveBodySchema
|
|
10803
|
+
body: themeSaveBodySchema.omit({
|
|
10804
|
+
themeId: true,
|
|
10805
|
+
selectionId: true
|
|
10806
|
+
}),
|
|
10786
10807
|
preferences: z.object({
|
|
10787
10808
|
header: headerPreferencesSchema.nullable(),
|
|
10788
10809
|
footer: footerPreferencesSchema
|
|
10789
10810
|
}).strict()
|
|
10790
|
-
}
|
|
10791
|
-
const
|
|
10811
|
+
};
|
|
10812
|
+
const themeJournalValueSchema = z.object(themeJournalValueShape).strict();
|
|
10813
|
+
const themeJournalEvidenceShape = {
|
|
10792
10814
|
siteId: z.string().uuid(),
|
|
10793
10815
|
selectionId: z.string().uuid(),
|
|
10794
10816
|
expectedRevision: z.number().int().nonnegative(),
|
|
10795
10817
|
revision: z.number().int().nonnegative(),
|
|
10796
10818
|
before: themeJournalValueSchema,
|
|
10797
10819
|
after: themeJournalValueSchema
|
|
10798
|
-
}
|
|
10820
|
+
};
|
|
10821
|
+
const themeJournalEvidenceSchema = z.object(themeJournalEvidenceShape).strict();
|
|
10799
10822
|
|
|
10800
10823
|
//#endregion
|
|
10801
10824
|
//#region ../api/src/bookingSettingsSections.ts
|
|
@@ -10849,13 +10872,8 @@ const BOOKING_SETTINGS_SECTION_KEYS = {
|
|
|
10849
10872
|
* Whether each email is sent, and when. No section owns these: the command
|
|
10850
10873
|
* behind an email's own screen (`updateEmailSendSetting`) is their only writer,
|
|
10851
10874
|
* so a section save can neither send them nor overwrite them.
|
|
10852
|
-
*
|
|
10853
|
-
* `remindersEnabled` is the old shared reminders switch. Nothing writes it any
|
|
10854
|
-
* more. It's read only as the fallback for a reminder switch that hasn't been
|
|
10855
|
-
* set, until stored settings are backfilled and the key is removed.
|
|
10856
10875
|
*/
|
|
10857
10876
|
const BOOKING_SETTINGS_EMAIL_SEND_KEYS = [
|
|
10858
|
-
"remindersEnabled",
|
|
10859
10877
|
"eventRemindersEnabled",
|
|
10860
10878
|
"eventReminderHours",
|
|
10861
10879
|
"appointmentRemindersEnabled",
|
|
@@ -14370,6 +14388,25 @@ function parsePublicProductCategorySelector(value) {
|
|
|
14370
14388
|
return undefined;
|
|
14371
14389
|
}
|
|
14372
14390
|
|
|
14391
|
+
//#endregion
|
|
14392
|
+
//#region ../api/src/request-error.ts
|
|
14393
|
+
var ApiRequestError = class extends Error {
|
|
14394
|
+
constructor(message, options) {
|
|
14395
|
+
super(message);
|
|
14396
|
+
this.name = "ApiRequestError";
|
|
14397
|
+
this.endpoint = options.endpoint;
|
|
14398
|
+
this.status = options.status;
|
|
14399
|
+
this.method = options.method;
|
|
14400
|
+
this.auth = options.auth;
|
|
14401
|
+
this.requestId = options.requestId;
|
|
14402
|
+
this.body = options.body;
|
|
14403
|
+
this.cause = options.cause;
|
|
14404
|
+
this.errorCode = options.errorCode;
|
|
14405
|
+
this.tag = options.tag;
|
|
14406
|
+
this.retryAfterMs = options.retryAfterMs;
|
|
14407
|
+
}
|
|
14408
|
+
};
|
|
14409
|
+
|
|
14373
14410
|
//#endregion
|
|
14374
14411
|
//#region ../api/src/token.ts
|
|
14375
14412
|
async function getAuthHeaders(supabase) {
|
|
@@ -14885,22 +14922,6 @@ function setSdkVersion(version) {
|
|
|
14885
14922
|
function getSdkVersion() {
|
|
14886
14923
|
return sdkVersion;
|
|
14887
14924
|
}
|
|
14888
|
-
var ApiRequestError = class extends Error {
|
|
14889
|
-
constructor(message, options) {
|
|
14890
|
-
super(message);
|
|
14891
|
-
this.name = "ApiRequestError";
|
|
14892
|
-
this.endpoint = options.endpoint;
|
|
14893
|
-
this.status = options.status;
|
|
14894
|
-
this.method = options.method;
|
|
14895
|
-
this.auth = options.auth;
|
|
14896
|
-
this.requestId = options.requestId;
|
|
14897
|
-
this.body = options.body;
|
|
14898
|
-
this.cause = options.cause;
|
|
14899
|
-
this.errorCode = options.errorCode;
|
|
14900
|
-
this.tag = options.tag;
|
|
14901
|
-
this.retryAfterMs = options.retryAfterMs;
|
|
14902
|
-
}
|
|
14903
|
-
};
|
|
14904
14925
|
/**
|
|
14905
14926
|
* Parse the Retry-After header value to milliseconds.
|
|
14906
14927
|
* The header can be either:
|
|
@@ -15360,6 +15381,7 @@ function normalizeApiError(error, fallback) {
|
|
|
15360
15381
|
body: error.body,
|
|
15361
15382
|
cause: error,
|
|
15362
15383
|
errorCode: error.errorCode,
|
|
15384
|
+
tag: error.tag,
|
|
15363
15385
|
retryAfterMs: error.retryAfterMs
|
|
15364
15386
|
});
|
|
15365
15387
|
}
|
|
@@ -16605,6 +16627,268 @@ function linkPayloadKindToNavigationUrlType(kind) {
|
|
|
16605
16627
|
return LINK_PAYLOAD_NAVIGATION_URL_TYPES[kind];
|
|
16606
16628
|
}
|
|
16607
16629
|
|
|
16630
|
+
//#endregion
|
|
16631
|
+
//#region ../api/src/admin.ts
|
|
16632
|
+
async function startImpersonation(apiClient, body, options) {
|
|
16633
|
+
try {
|
|
16634
|
+
return unwrapResponse(await apiClient({
|
|
16635
|
+
endpoint: "adminStartImpersonation",
|
|
16636
|
+
body,
|
|
16637
|
+
options
|
|
16638
|
+
}));
|
|
16639
|
+
} catch (error) {
|
|
16640
|
+
return normalizeApiError(error, "Failed to start impersonation session");
|
|
16641
|
+
}
|
|
16642
|
+
}
|
|
16643
|
+
async function stopImpersonation(apiClient, body, options) {
|
|
16644
|
+
try {
|
|
16645
|
+
return unwrapResponse(await apiClient({
|
|
16646
|
+
endpoint: "adminStopImpersonation",
|
|
16647
|
+
body,
|
|
16648
|
+
options
|
|
16649
|
+
}));
|
|
16650
|
+
} catch (error) {
|
|
16651
|
+
return normalizeApiError(error, "Failed to stop impersonation session");
|
|
16652
|
+
}
|
|
16653
|
+
}
|
|
16654
|
+
async function assignAdminRole(apiClient, body, options) {
|
|
16655
|
+
try {
|
|
16656
|
+
return unwrapResponse(await apiClient({
|
|
16657
|
+
endpoint: "adminAssignRole",
|
|
16658
|
+
body,
|
|
16659
|
+
options
|
|
16660
|
+
}));
|
|
16661
|
+
} catch (error) {
|
|
16662
|
+
return normalizeApiError(error, "Failed to assign admin role");
|
|
16663
|
+
}
|
|
16664
|
+
}
|
|
16665
|
+
async function revokeAdminRole(apiClient, body, options) {
|
|
16666
|
+
try {
|
|
16667
|
+
return unwrapResponse(await apiClient({
|
|
16668
|
+
endpoint: "adminRevokeRole",
|
|
16669
|
+
body,
|
|
16670
|
+
options
|
|
16671
|
+
}));
|
|
16672
|
+
} catch (error) {
|
|
16673
|
+
return normalizeApiError(error, "Failed to revoke admin role");
|
|
16674
|
+
}
|
|
16675
|
+
}
|
|
16676
|
+
async function adminChangePlan(apiClient, body, options) {
|
|
16677
|
+
try {
|
|
16678
|
+
return unwrapResponse(await apiClient({
|
|
16679
|
+
endpoint: "adminChangePlan",
|
|
16680
|
+
body: {
|
|
16681
|
+
...body,
|
|
16682
|
+
attemptId: body.attemptId ?? crypto.randomUUID()
|
|
16683
|
+
},
|
|
16684
|
+
options
|
|
16685
|
+
}));
|
|
16686
|
+
} catch (error) {
|
|
16687
|
+
return normalizeApiError(error, "Failed to update billing plan");
|
|
16688
|
+
}
|
|
16689
|
+
}
|
|
16690
|
+
async function listAdminInvites(apiClient, params = {}, options) {
|
|
16691
|
+
try {
|
|
16692
|
+
return unwrapResponse(await apiClient({
|
|
16693
|
+
endpoint: "adminListInvites",
|
|
16694
|
+
params,
|
|
16695
|
+
options
|
|
16696
|
+
}));
|
|
16697
|
+
} catch (error) {
|
|
16698
|
+
return normalizeApiError(error, "Failed to load invites");
|
|
16699
|
+
}
|
|
16700
|
+
}
|
|
16701
|
+
async function createAdminInvite(apiClient, body, options) {
|
|
16702
|
+
try {
|
|
16703
|
+
return unwrapResponse(await apiClient({
|
|
16704
|
+
endpoint: "adminCreateInvite",
|
|
16705
|
+
body,
|
|
16706
|
+
options
|
|
16707
|
+
}));
|
|
16708
|
+
} catch (error) {
|
|
16709
|
+
return normalizeApiError(error, "Failed to create invite");
|
|
16710
|
+
}
|
|
16711
|
+
}
|
|
16712
|
+
async function revokeAdminInvite(apiClient, inviteId, options) {
|
|
16713
|
+
try {
|
|
16714
|
+
return unwrapResponse(await apiClient({
|
|
16715
|
+
endpoint: "adminRevokeInvite",
|
|
16716
|
+
params: { inviteId },
|
|
16717
|
+
options
|
|
16718
|
+
}));
|
|
16719
|
+
} catch (error) {
|
|
16720
|
+
return normalizeApiError(error, "Failed to revoke invite");
|
|
16721
|
+
}
|
|
16722
|
+
}
|
|
16723
|
+
async function createAdminUser(apiClient, body, options) {
|
|
16724
|
+
try {
|
|
16725
|
+
return unwrapResponse(await apiClient({
|
|
16726
|
+
endpoint: "adminCreateUser",
|
|
16727
|
+
body,
|
|
16728
|
+
options
|
|
16729
|
+
}));
|
|
16730
|
+
} catch (error) {
|
|
16731
|
+
return normalizeApiError(error, "Failed to create user");
|
|
16732
|
+
}
|
|
16733
|
+
}
|
|
16734
|
+
async function adminDeleteSite(apiClient, siteId, options) {
|
|
16735
|
+
try {
|
|
16736
|
+
return unwrapResponse(await apiClient({
|
|
16737
|
+
endpoint: "adminDeleteSite",
|
|
16738
|
+
params: { siteId },
|
|
16739
|
+
options
|
|
16740
|
+
}));
|
|
16741
|
+
} catch (error) {
|
|
16742
|
+
return normalizeApiError(error, "Failed to delete site");
|
|
16743
|
+
}
|
|
16744
|
+
}
|
|
16745
|
+
async function adminDeleteUser(apiClient, userId, params = {}, options) {
|
|
16746
|
+
const forceQuery = params.force ? { force: "true" } : {};
|
|
16747
|
+
try {
|
|
16748
|
+
return unwrapResponse(await apiClient({
|
|
16749
|
+
endpoint: "adminDeleteUser",
|
|
16750
|
+
params: {
|
|
16751
|
+
userId,
|
|
16752
|
+
...forceQuery
|
|
16753
|
+
},
|
|
16754
|
+
options
|
|
16755
|
+
}));
|
|
16756
|
+
} catch (error) {
|
|
16757
|
+
return normalizeApiError(error, "Failed to delete user");
|
|
16758
|
+
}
|
|
16759
|
+
}
|
|
16760
|
+
async function listAllowedDomains(apiClient, params = {}, options) {
|
|
16761
|
+
try {
|
|
16762
|
+
return unwrapResponse(await apiClient({
|
|
16763
|
+
endpoint: "adminListAllowedDomains",
|
|
16764
|
+
params,
|
|
16765
|
+
options
|
|
16766
|
+
}));
|
|
16767
|
+
} catch (error) {
|
|
16768
|
+
return normalizeApiError(error, "Failed to load allowed domains");
|
|
16769
|
+
}
|
|
16770
|
+
}
|
|
16771
|
+
async function addAllowedDomain(apiClient, body, options) {
|
|
16772
|
+
try {
|
|
16773
|
+
return unwrapResponse(await apiClient({
|
|
16774
|
+
endpoint: "adminAddAllowedDomain",
|
|
16775
|
+
body,
|
|
16776
|
+
options
|
|
16777
|
+
}));
|
|
16778
|
+
} catch (error) {
|
|
16779
|
+
return normalizeApiError(error, "Failed to add domain");
|
|
16780
|
+
}
|
|
16781
|
+
}
|
|
16782
|
+
async function deleteAllowedDomain(apiClient, domainId, options) {
|
|
16783
|
+
try {
|
|
16784
|
+
return unwrapResponse(await apiClient({
|
|
16785
|
+
endpoint: "adminDeleteAllowedDomain",
|
|
16786
|
+
params: { domainId },
|
|
16787
|
+
options
|
|
16788
|
+
}));
|
|
16789
|
+
} catch (error) {
|
|
16790
|
+
return normalizeApiError(error, "Failed to remove domain");
|
|
16791
|
+
}
|
|
16792
|
+
}
|
|
16793
|
+
async function listGscPropertiesAdmin(apiClient, options) {
|
|
16794
|
+
try {
|
|
16795
|
+
return unwrapResponse(await apiClient({
|
|
16796
|
+
endpoint: "listGscPropertiesAdmin",
|
|
16797
|
+
options
|
|
16798
|
+
}));
|
|
16799
|
+
} catch (error) {
|
|
16800
|
+
return normalizeApiError(error, "Failed to load GSC properties");
|
|
16801
|
+
}
|
|
16802
|
+
}
|
|
16803
|
+
async function setGscPersistEnabled(apiClient, body, options) {
|
|
16804
|
+
try {
|
|
16805
|
+
return unwrapResponse(await apiClient({
|
|
16806
|
+
endpoint: "adminGscMetaPersist",
|
|
16807
|
+
body,
|
|
16808
|
+
options
|
|
16809
|
+
}));
|
|
16810
|
+
} catch (error) {
|
|
16811
|
+
return normalizeApiError(error, "Failed to update GSC persist toggle");
|
|
16812
|
+
}
|
|
16813
|
+
}
|
|
16814
|
+
async function startGscVerification(apiClient, body, options) {
|
|
16815
|
+
try {
|
|
16816
|
+
return unwrapResponse(await apiClient({
|
|
16817
|
+
endpoint: "adminGscVerifyStart",
|
|
16818
|
+
body,
|
|
16819
|
+
options
|
|
16820
|
+
}));
|
|
16821
|
+
} catch (error) {
|
|
16822
|
+
return normalizeApiError(error, "Failed to start GSC verification");
|
|
16823
|
+
}
|
|
16824
|
+
}
|
|
16825
|
+
async function confirmGscVerification(apiClient, body, options) {
|
|
16826
|
+
try {
|
|
16827
|
+
return unwrapResponse(await apiClient({
|
|
16828
|
+
endpoint: "adminGscVerifyConfirm",
|
|
16829
|
+
body,
|
|
16830
|
+
options
|
|
16831
|
+
}));
|
|
16832
|
+
} catch (error) {
|
|
16833
|
+
return normalizeApiError(error, "Failed to confirm GSC verification");
|
|
16834
|
+
}
|
|
16835
|
+
}
|
|
16836
|
+
async function runGscIngestionForSite(apiClient, body, options) {
|
|
16837
|
+
try {
|
|
16838
|
+
return unwrapResponse(await apiClient({
|
|
16839
|
+
endpoint: "adminSeoIngestRun",
|
|
16840
|
+
body,
|
|
16841
|
+
options
|
|
16842
|
+
}));
|
|
16843
|
+
} catch (error) {
|
|
16844
|
+
return normalizeApiError(error, "Failed to run GSC ingestion");
|
|
16845
|
+
}
|
|
16846
|
+
}
|
|
16847
|
+
async function getPriceOverride(apiClient, params, options) {
|
|
16848
|
+
try {
|
|
16849
|
+
return unwrapResponse(await apiClient({
|
|
16850
|
+
endpoint: "adminGetPriceOverride",
|
|
16851
|
+
params,
|
|
16852
|
+
options
|
|
16853
|
+
}));
|
|
16854
|
+
} catch (error) {
|
|
16855
|
+
return normalizeApiError(error, "Failed to get price override");
|
|
16856
|
+
}
|
|
16857
|
+
}
|
|
16858
|
+
async function upsertPriceOverride(apiClient, body, options) {
|
|
16859
|
+
try {
|
|
16860
|
+
return unwrapResponse(await apiClient({
|
|
16861
|
+
endpoint: "adminUpsertPriceOverride",
|
|
16862
|
+
body,
|
|
16863
|
+
options
|
|
16864
|
+
}));
|
|
16865
|
+
} catch (error) {
|
|
16866
|
+
return normalizeApiError(error, "Failed to set custom price");
|
|
16867
|
+
}
|
|
16868
|
+
}
|
|
16869
|
+
async function deletePriceOverride(apiClient, body, options) {
|
|
16870
|
+
try {
|
|
16871
|
+
return unwrapResponse(await apiClient({
|
|
16872
|
+
endpoint: "adminDeletePriceOverride",
|
|
16873
|
+
body,
|
|
16874
|
+
options
|
|
16875
|
+
}));
|
|
16876
|
+
} catch (error) {
|
|
16877
|
+
return normalizeApiError(error, "Failed to clear custom price");
|
|
16878
|
+
}
|
|
16879
|
+
}
|
|
16880
|
+
async function adminClearSitePublicCache(apiClient, siteId, options) {
|
|
16881
|
+
try {
|
|
16882
|
+
return unwrapResponse(await apiClient({
|
|
16883
|
+
endpoint: "adminClearSitePublicCache",
|
|
16884
|
+
params: { siteId },
|
|
16885
|
+
options
|
|
16886
|
+
}));
|
|
16887
|
+
} catch (error) {
|
|
16888
|
+
return normalizeApiError(error, "The public page cache could not be cleared.");
|
|
16889
|
+
}
|
|
16890
|
+
}
|
|
16891
|
+
|
|
16608
16892
|
//#endregion
|
|
16609
16893
|
//#region ../api/src/accessAdmin.ts
|
|
16610
16894
|
const STAFF_OPERATIONAL_CAPABILITIES = ["appointments", "event_ops"];
|
|
@@ -17270,8 +17554,8 @@ const SETTINGS_SURFACE_POLICIES = {
|
|
|
17270
17554
|
},
|
|
17271
17555
|
"settings.emails.sent": {
|
|
17272
17556
|
surfaceId: "settings.emails.sent",
|
|
17273
|
-
navVisibilityPolicy:
|
|
17274
|
-
pageAccessPolicy:
|
|
17557
|
+
navVisibilityPolicy: editorPolicy,
|
|
17558
|
+
pageAccessPolicy: editorPolicy,
|
|
17275
17559
|
actionIds: []
|
|
17276
17560
|
},
|
|
17277
17561
|
"settings.ai.siteProfile": {
|
|
@@ -24614,4 +24898,4 @@ function optionalTitle(data) {
|
|
|
24614
24898
|
}
|
|
24615
24899
|
|
|
24616
24900
|
//#endregion
|
|
24617
|
-
export { normalizeMediaValueToIdentifierOnly as $, createCommandContext as $t, formatDiffDetail as A, getEnvPrefix as An, navigationIdentity as At, buildFieldChanges as B, portablePageDesignSchema as Bn, preparePushConfigTarget as Bt, reportFromOutcomes as C, requireEnvironmentWriteAuthorization as Cn, fileExists$1 as Ct, normalizeRemoteHomepageReference as D, transportSuggestion as Dn, writeJsonFileAtomic as Dt, createEmptySyncResult as E, formatError as En, writeJsonFile$1 as Et, calculatePullDiff as F, createManagementClient as Fn, navigationCommandItemToManagementInput as Ft, syncLocalMediaForPull as G, APPOINTMENT_SERVICE_VISIBILITY_VALUES as Gt, formatFieldPath as H, API_ENDPOINTS as Hn, extractApiErrorMessage as Ht, buildJsonDiff as I, ManagementApiError as In, normalizeNavigationConfigItemForCommand as It, admitBinaryWriteDestination as J,
|
|
24901
|
+
export { normalizeMediaValueToIdentifierOnly as $, createCommandContext as $t, formatDiffDetail as A, getEnvPrefix as An, navigationIdentity as At, buildFieldChanges as B, portablePageDesignSchema as Bn, preparePushConfigTarget as Bt, reportFromOutcomes as C, requireEnvironmentWriteAuthorization as Cn, fileExists$1 as Ct, normalizeRemoteHomepageReference as D, transportSuggestion as Dn, writeJsonFileAtomic as Dt, createEmptySyncResult as E, formatError as En, writeJsonFile$1 as Et, calculatePullDiff as F, createManagementClient as Fn, navigationCommandItemToManagementInput as Ft, syncLocalMediaForPull as G, APPOINTMENT_SERVICE_VISIBILITY_VALUES as Gt, formatFieldPath as H, API_ENDPOINTS as Hn, extractApiErrorMessage as Ht, buildJsonDiff as I, ManagementApiError as In, normalizeNavigationConfigItemForCommand as It, admitBinaryWriteDestination as J, ApiRequestError as Jt, applyLocalMediaPush as K, createBearerAPIClient as Kt, hasPageOperations as L, sdkEventScheduleSchema as Ln, applyPushConfigPlan as Lt, hasPendingChanges as M, isLocalConfigured as Mn, convertPulledFooterToLocal as Mt, findChangedFieldsWithValues as N, isRemoteConfigured as Nn, convertPulledNavigationToLocal as Nt, calculateDiff as O, CliExit as On, isMediaValue as Ot, formatHumanDiff as P, loadSdkEnvironment as Pn, convertPulledPagesToLocal as Pt, normalizeMediaIdentifierInput as Q, createClientForEnv as Qt, pageMetadataForUpsert as R, sdkSettingsUpdateSchema as Rn, createPushConfigCommand as Rt, planCliCommandBatchForBindings as S, planEnvironmentWriteAuthorization as Sn, ensureDir$1 as St, executeResidualSettingsSyncPlan as T, ErrorCodes as Tn, readJsonFile as Tt, revalidateLocalMediaPushPlan as U, ApiEnvelopeError as Un, normalizeApiError as Ut, formatFieldChange as V, sdkConfiguredBookingVerticalConfigSchema as Vn, revalidatePushConfigPlan as Vt, syncLocalMediaForPush as W, unwrapResponse as Wn, isRecord$5 as Wt, writeBinaryFileAtomic as X, bindRequestTimeout as Xt, readStableBinaryFile as Y, mapEnvironmentExecutionOutcomesJson as Yt, sha256 as Z, confirmAction as Zt, commandExecutionToReport as _, withErrorHandling as _n, metadataFilePath as _t, executeEntryCommandPlanAsReport as a, getOutputContext as an, readEntries as at, executeCompiledCliCommandPlanAsReport as b, parseEnvironmentSelection as bn, writeMetadataFile as bt, titleFromEntryData as c, managementClientConfigFor as cn, readEventsMeta as ct, unsafeAsCliEntryIdentifier as d, parseJsonData as dn, readNavigationMeta as dt, createGetCommand as en, walkLocalContentMedia as et, unsafeAsCliFormSlug as f, parsePaginationOptions as fn, readPagesMeta as ft, commandCompileFailureToReport as g, withConfirmation as gn, ensureMetadataDir as gt, mutationCounterForEffect as h, withCommandContext as hn, writeMediaManifest as ht, entrySiteCommandTypes as i, formatDateShort as in, findLegacyEntryFiles as it, formatDiffSummary as j, getEnvironmentDebugInfo as jn, navigationIdentityMap as jt, calculateFooterDiff as k, createOutput as kn, duplicateNavigationIdentityMessage as kt, unsafeAsCliBlockIdentifier as l, mapEntryForOutput as ln, readFooterMeta as lt, commandReportToSyncResult as m, runWithInvocation as mn, readVenuesMeta as mt, entryCommandCompileErrorToReport as n, createOutputForCommand as nn, downloadMedia as nt, executeEntryCommandPlanAsSyncResult as o, getOutputOnlyContext as on, readAllMeta as ot, unsafeAsCliPageIdentifier as p, resolveCommandPath as pn, readSettingsMeta as pt, prepareLocalMediaForPush as q, deriveCmsApiUrlFromDashboardUrl as qt, entryCommandReportToSyncResult as r, currentInvocationEnvelope as rn, extractMediaIdentifiers as rt, syncResultForEntryCommandCompileError as s, handleCommandError as sn, readEventCategoriesMeta as st, compileEntryPushCommands as t, createListCommand as tn, buildStorageUrl as tt, unsafeAsCliContentTypeKey as u, parseJsonArray as un, readFormsMeta as ut, commandReportHasFailures as v, withOutputOnlyErrorHandling as vn, metadataTargetFromEnvironment as vt, mergeManySyncResults as w, withRiverbankEnv as wn, listFiles as wt, formatManagementError as x, planEnvironmentExecution as xn, writeMetadataRecordMap as xt, executeCliCommandPlan as y, executeEnvironmentPlan as yn, readMetadataFile as yt, calculateEntryDiffs as z, linkPayloadSchema as zn, loadPushConfigTarget as zt };
|