@odla-ai/chapter 0.60.0 → 0.62.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/README.md +138 -0
- package/dist/{chunk-QNP3UEIL.js → chunk-7CVP6VSO.js} +61 -1
- package/dist/chunk-7CVP6VSO.js.map +1 -0
- package/dist/{chunk-J7ES2OWN.js → chunk-MUUBATZJ.js} +899 -707
- package/dist/chunk-MUUBATZJ.js.map +1 -0
- package/dist/{chunk-D5UR5H6R.js → chunk-ZIYK3OV2.js} +869 -239
- package/dist/chunk-ZIYK3OV2.js.map +1 -0
- package/dist/copy-context-BJUkVUjE.d.ts +364 -0
- package/dist/index.cjs +3847 -3186
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +435 -89
- package/dist/index.d.ts +435 -89
- package/dist/index.js +3851 -3190
- package/dist/index.js.map +1 -1
- package/dist/ui/admin/index.d.ts +672 -3
- package/dist/ui/admin/index.js +2 -2
- package/dist/ui/index.d.ts +3 -2
- package/dist/ui/index.js +49 -3
- package/dist/ui/member/index.d.ts +254 -3
- package/dist/ui/member/index.js +48 -2
- package/dist/worker/index.cjs +1641 -477
- package/dist/worker/index.cjs.map +1 -1
- package/dist/worker/index.d.cts +222 -82
- package/dist/worker/index.d.ts +222 -82
- package/dist/worker/index.js +1572 -408
- package/dist/worker/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/chunk-D5UR5H6R.js.map +0 -1
- package/dist/chunk-J7ES2OWN.js.map +0 -1
- package/dist/chunk-QNP3UEIL.js.map +0 -1
- package/dist/copy-context-BP3G1iBd.d.ts +0 -899
package/dist/index.d.cts
CHANGED
|
@@ -147,11 +147,26 @@ declare const CHAPTER_EMAIL_EVENTS: Readonly<Record<string, ChapterEmailEvent>>;
|
|
|
147
147
|
/** Resolve the event inventory for the site's actual send surfaces. Hub mail uses its declared CRM templates. */
|
|
148
148
|
declare function chapterEmailEvents(chapter: Chapter): Record<string, ChapterEmailEvent>;
|
|
149
149
|
|
|
150
|
-
type TextFields$
|
|
150
|
+
type TextFields$2<Key extends string> = {
|
|
151
151
|
[Field in Key]: string;
|
|
152
152
|
};
|
|
153
153
|
/** User-visible language for sharing, delivery state, and leader rollups. */
|
|
154
|
-
type AdminNetworkCopy = TextFields$
|
|
154
|
+
type AdminNetworkCopy = TextFields$2<"title" | "allowlistDescription" | "sharing" | "shareWith" | "shared" | "shareFailed" | "deliveryFailed" | "loadingRollup" | "loadRollupFailed" | "overview" | "configuredFollowers" | "reachableFollowers" | "recordsAcrossFollowers" | "noFollowers" | "followers" | "available" | "unavailable" | "transportReachable" | "transportUnavailable" | "transportNotChecked" | "edgeUnpaired" | "edgeUnpairedHint" | "bindingTransport" | "urlTransport" | "activeConfiguration" | "noActiveConfiguration" | "publicSiteAvailable" | "publicSiteUnavailable" | "publicSiteNotChecked" | "recordTotals" | "noRecordTotals">;
|
|
155
|
+
|
|
156
|
+
type TextFields$1<Key extends string> = {
|
|
157
|
+
[Field in Key]: string;
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* Member portal language. Placeholders in braces are filled by
|
|
161
|
+
* `formatChapterCopy()`. Sites override any field through `copy.portal`.
|
|
162
|
+
*/
|
|
163
|
+
interface PortalCopy {
|
|
164
|
+
shell: TextFields$1<"navLabel" | "welcomeBack" | "home" | "backHome" | "yourProfile" | "signedInAs" | "signOut" | "adminConsole" | "openMenu" | "closeMenu" | "locked" | "loading" | "loadFailed" | "notFound">;
|
|
165
|
+
pages: TextFields$1<"comingSoon" | "comingIn" | "includedWith" | "upgrade" | "comingToPortal" | "tagNew" | "tagSoon">;
|
|
166
|
+
profile: TextFields$1<"eyebrow" | "editProfile" | "saveProfile" | "saving" | "cancel" | "uploadPhoto" | "changePhoto" | "photoUploading" | "photoFailed" | "memberSince" | "promptsTitle" | "promptsNote" | "answerEmpty" | "addPrompt" | "howYouFoundUs" | "referredBy" | "referredByNote" | "introducedBy" | "introducedByPlaceholder" | "namePlaceholder" | "locationPlaceholder" | "saved" | "conflict" | "saveFailed">;
|
|
167
|
+
}
|
|
168
|
+
/** Neutral defaults; a site supplies its own voice. */
|
|
169
|
+
declare const DEFAULT_PORTAL_COPY: PortalCopy;
|
|
155
170
|
|
|
156
171
|
/** Copy for the person record panels: lifecycle actions, comms, scheduling, billing and meetings. */
|
|
157
172
|
type AdminRecordsCopy = {
|
|
@@ -201,11 +216,13 @@ interface ChapterCopy {
|
|
|
201
216
|
members: {
|
|
202
217
|
loadFailed: string;
|
|
203
218
|
account: TextFields<"signOut" | "adminConsole">;
|
|
204
|
-
provisional: TextFields<"cardLabel" | "applicationNeeded" | "applicationNeededBody" | "apply" | "refunded" | "refundedBody" | "active" | "renews" | "introductionCall" | "calendarInvite" | "joinCall" | "bookCall" | "bookCallBody" | "chooseTime">;
|
|
219
|
+
provisional: TextFields<"cardLabel" | "applicationNeeded" | "applicationNeededBody" | "apply" | "refunded" | "refundedBody" | "declined" | "declinedBody" | "active" | "renews" | "introductionCall" | "calendarInvite" | "joinCall" | "bookCall" | "bookCallBody" | "chooseTime">;
|
|
205
220
|
full: TextFields<"welcome">;
|
|
206
221
|
gifts: TextFields<"title" | "body" | "noneAvailable" | "paid" | "saveCode" | "purchases" | "noPurchases" | "pending" | "redeemed" | "expired" | "revoked" | "rotate" | "rotated" | "rotateFailed" | "redeemTitle" | "code" | "redeem" | "redeemFailed">;
|
|
207
222
|
reschedule: TextFields<"changeTime" | "unavailable" | "loadFailed" | "slotGone" | "loading" | "noTimes" | "rescheduling" | "keepTime">;
|
|
208
223
|
};
|
|
224
|
+
/** Signed-in member portal: shell, pages, profile. */
|
|
225
|
+
portal: PortalCopy;
|
|
209
226
|
admin: {
|
|
210
227
|
auth: TextFields<"checking" | "notAuthorized" | "accountNotAuthorized" | "thisAccount" | "signOut" | "loading" | "signInNotConfigured" | "missingPublishableKey" | "noWorkspaces" | "signInTagline">;
|
|
211
228
|
shell: TextFields<"adminRole" | "adminConsole" | "adminName" | "navigationLabel">;
|
|
@@ -215,7 +232,7 @@ interface ChapterCopy {
|
|
|
215
232
|
availability: TextFields<"loading" | "loadFailed" | "saved" | "title" | "days" | "startHour" | "endHour" | "slotMinutes" | "minNoticeHours" | "windowDays" | "timezone" | "summaryTemplate" | "save"> & {
|
|
216
233
|
dayLabels: readonly string[];
|
|
217
234
|
};
|
|
218
|
-
email: TextFields<"loading" | "loadFailed" | "saved" | "sent" | "testFailed" | "delivery" | "notificationAddress" | "replyTo" | "fromName" | "fromNameHint" | "spamRisk" | "debugInbox" | "debugInboxHint" | "sendTest" | "enabled" | "subject" | "body" | "save" | "sendLog" | "sentColumn" | "templateColumn" | "statusColumn" | "toColumn" | "failed" | "redirected" | "delivered">;
|
|
235
|
+
email: TextFields<"loading" | "loadFailed" | "saved" | "sent" | "testFailed" | "delivery" | "notificationAddress" | "replyTo" | "fromName" | "fromNameHint" | "spamRisk" | "debugInbox" | "debugInboxHint" | "sendTest" | "enabled" | "subject" | "body" | "htmlBody" | "htmlBodyHint" | "save" | "sendLog" | "sentColumn" | "templateColumn" | "statusColumn" | "toColumn" | "failed" | "redirected" | "delivered">;
|
|
219
236
|
meetings: TextFields<"loading" | "loadFailed" | "cancelConfirm" | "newStartPrompt" | "parseFailed" | "agenda" | "empty" | "unknown" | "drift" | "meet" | "reschedule" | "cancel">;
|
|
220
237
|
admission: TextFields<"title" | "description" | "email" | "decision" | "expires" | "note" | "waive" | "require" | "add" | "ledger" | "loading" | "consumed" | "revoked" | "expired" | "active" | "local" | "parent" | "revoke">;
|
|
221
238
|
network: AdminNetworkCopy;
|
|
@@ -268,6 +285,51 @@ interface ResolvedMemberContent {
|
|
|
268
285
|
} | null;
|
|
269
286
|
}
|
|
270
287
|
|
|
288
|
+
/** Invite links and referral credit for a chapter-mode site. */
|
|
289
|
+
interface ChapterMemberReferrals {
|
|
290
|
+
/** Public path that invite links live under; `<path>/<code>`. Defaults to `/join`. */
|
|
291
|
+
path?: string;
|
|
292
|
+
/** Where an invite link sends a visitor (absolute https URL or site path). `?ref=<code>` is appended. */
|
|
293
|
+
membershipUrl: string;
|
|
294
|
+
/** Lifetime of the first-party referral cookie, in days. Defaults to 90. */
|
|
295
|
+
cookieDays?: number;
|
|
296
|
+
/**
|
|
297
|
+
* Credit a dues-paying referrer earns when a friend they referred is approved
|
|
298
|
+
* on a dues-paying tier. Omit or `false` for invite links without credit.
|
|
299
|
+
*/
|
|
300
|
+
credit?: {
|
|
301
|
+
valueCents: number;
|
|
302
|
+
} | false;
|
|
303
|
+
}
|
|
304
|
+
/** The signed-in member portal. Its navigation and access come from the member-content catalog. */
|
|
305
|
+
interface ChapterMemberPortal {
|
|
306
|
+
/** Prompts a member may answer on their profile, in display order. */
|
|
307
|
+
profilePrompts?: readonly string[];
|
|
308
|
+
/** How many prompts a member may answer. Defaults to 3. */
|
|
309
|
+
maxPrompts?: number;
|
|
310
|
+
/** Member profile photos in odla-db file storage. Defaults to true. */
|
|
311
|
+
photos?: boolean;
|
|
312
|
+
/** Cohort courses on one recurring Google Calendar event. Chapter mode only. */
|
|
313
|
+
courses?: boolean;
|
|
314
|
+
/** Personal invite links, Referred by, and optional credit. Chapter mode only. */
|
|
315
|
+
referrals?: ChapterMemberReferrals;
|
|
316
|
+
}
|
|
317
|
+
/** Resolved invite-link settings. */
|
|
318
|
+
interface ResolvedMemberReferrals {
|
|
319
|
+
path: string;
|
|
320
|
+
membershipUrl: string;
|
|
321
|
+
cookieDays: number;
|
|
322
|
+
creditCents: number | null;
|
|
323
|
+
}
|
|
324
|
+
/** Resolved member portal settings. */
|
|
325
|
+
interface ResolvedMemberPortal {
|
|
326
|
+
profilePrompts: readonly string[];
|
|
327
|
+
maxPrompts: number;
|
|
328
|
+
photos: boolean;
|
|
329
|
+
courses: boolean;
|
|
330
|
+
referrals: ResolvedMemberReferrals | null;
|
|
331
|
+
}
|
|
332
|
+
|
|
271
333
|
/** Optional private Builder Library shared across Built Not Found and Chapters. */
|
|
272
334
|
interface ChapterBuilderLibrary {
|
|
273
335
|
/** Keep local admin authoring enabled. Defaults to true. */
|
|
@@ -484,6 +546,82 @@ interface ResolvedNetwork {
|
|
|
484
546
|
readers: readonly ResolvedNetworkReader[];
|
|
485
547
|
}
|
|
486
548
|
|
|
549
|
+
/** Brand identity and build-time tokens from the checked-in Chapter config. */
|
|
550
|
+
/** Typed semantic roles shared by the public site and application surfaces. */
|
|
551
|
+
interface ChapterBrandTokens {
|
|
552
|
+
background?: string;
|
|
553
|
+
surface?: string;
|
|
554
|
+
surface2?: string;
|
|
555
|
+
text?: string;
|
|
556
|
+
textMuted?: string;
|
|
557
|
+
textFaint?: string;
|
|
558
|
+
border?: string;
|
|
559
|
+
borderStrong?: string;
|
|
560
|
+
accent?: string;
|
|
561
|
+
accentStrong?: string;
|
|
562
|
+
accentSoft?: string;
|
|
563
|
+
onAccent?: string;
|
|
564
|
+
good?: string;
|
|
565
|
+
warn?: string;
|
|
566
|
+
danger?: string;
|
|
567
|
+
chart1?: string;
|
|
568
|
+
chart2?: string;
|
|
569
|
+
chart3?: string;
|
|
570
|
+
chart4?: string;
|
|
571
|
+
chart5?: string;
|
|
572
|
+
chart6?: string;
|
|
573
|
+
chartPositive?: string;
|
|
574
|
+
chartNegative?: string;
|
|
575
|
+
/** Admin/application content width, e.g. `"960px"`. */
|
|
576
|
+
contentWidth?: string;
|
|
577
|
+
panelRadius?: string;
|
|
578
|
+
panelShadow?: string;
|
|
579
|
+
masterDetailColumns?: string;
|
|
580
|
+
masterDetailMinHeight?: string;
|
|
581
|
+
/** Chapter-admin page padding shorthand. */
|
|
582
|
+
pagePadding?: string;
|
|
583
|
+
/** Chapter-admin workspace-tab padding shorthand. */
|
|
584
|
+
workspacePadding?: string;
|
|
585
|
+
}
|
|
586
|
+
/** Brand tokens that theme the site: theme, semantic roles, fonts, and logos. */
|
|
587
|
+
interface ChapterBrand {
|
|
588
|
+
/** Preloaded @odla-ai/ui theme name used by ThemeScope. */
|
|
589
|
+
theme?: string;
|
|
590
|
+
/** Named accent family supplied by the selected @odla-ai/ui theme. */
|
|
591
|
+
accent?: string;
|
|
592
|
+
/** Admin/application color mode. Explicit light is the safe default. */
|
|
593
|
+
colorScheme?: "light" | "dark" | "system";
|
|
594
|
+
tokens?: ChapterBrandTokens;
|
|
595
|
+
tokensDark?: ChapterBrandTokens;
|
|
596
|
+
/** Palette overrides written into styles.css :root (e.g. `{ moss: "#2F3E34" }`
|
|
597
|
+
* or `--ui-*` token names). Applies in BOTH light and dark unless overridden
|
|
598
|
+
* by {@link paletteDark}. */
|
|
599
|
+
palette?: Record<string, string>;
|
|
600
|
+
/** Dark-mode palette overrides. Same shape as {@link palette}; emitted under
|
|
601
|
+
* `:root[data-theme="dark"]` and `@media (prefers-color-scheme: dark)`, so a
|
|
602
|
+
* site brands both modes. */
|
|
603
|
+
paletteDark?: Record<string, string>;
|
|
604
|
+
/** Full token map for `.ui-invert` islands. A compiled custom theme normally
|
|
605
|
+
* uses its dark map here so inverted content never inherits stale composites. */
|
|
606
|
+
paletteInvert?: Record<string, string>;
|
|
607
|
+
fonts?: {
|
|
608
|
+
display?: string;
|
|
609
|
+
body?: string;
|
|
610
|
+
numeral?: string;
|
|
611
|
+
};
|
|
612
|
+
/** Short glyph used in compact admin chrome. Defaults to the first three
|
|
613
|
+
* letters of the chapter name. */
|
|
614
|
+
badge?: string;
|
|
615
|
+
wordmark?: string;
|
|
616
|
+
tagline?: string;
|
|
617
|
+
/** Header/footer nav sections for the web-component chrome: label → entries. */
|
|
618
|
+
nav?: Record<string, ReadonlyArray<{
|
|
619
|
+
label: string;
|
|
620
|
+
href: string;
|
|
621
|
+
}>>;
|
|
622
|
+
logos?: string;
|
|
623
|
+
}
|
|
624
|
+
|
|
487
625
|
/**
|
|
488
626
|
* Membership pricing for the group row (chapter mode).
|
|
489
627
|
*
|
|
@@ -570,80 +708,18 @@ interface ChapterDb {
|
|
|
570
708
|
secrets: {
|
|
571
709
|
get(name: string): Promise<string>;
|
|
572
710
|
};
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
accent?: string;
|
|
585
|
-
accentStrong?: string;
|
|
586
|
-
accentSoft?: string;
|
|
587
|
-
onAccent?: string;
|
|
588
|
-
good?: string;
|
|
589
|
-
warn?: string;
|
|
590
|
-
danger?: string;
|
|
591
|
-
chart1?: string;
|
|
592
|
-
chart2?: string;
|
|
593
|
-
chart3?: string;
|
|
594
|
-
chart4?: string;
|
|
595
|
-
chart5?: string;
|
|
596
|
-
chart6?: string;
|
|
597
|
-
chartPositive?: string;
|
|
598
|
-
chartNegative?: string;
|
|
599
|
-
/** Admin/application content width, e.g. `"960px"`. */
|
|
600
|
-
contentWidth?: string;
|
|
601
|
-
panelRadius?: string;
|
|
602
|
-
panelShadow?: string;
|
|
603
|
-
masterDetailColumns?: string;
|
|
604
|
-
masterDetailMinHeight?: string;
|
|
605
|
-
/** Chapter-admin page padding shorthand. */
|
|
606
|
-
pagePadding?: string;
|
|
607
|
-
/** Chapter-admin workspace-tab padding shorthand. */
|
|
608
|
-
workspacePadding?: string;
|
|
609
|
-
}
|
|
610
|
-
/** Brand tokens that theme the site: theme, semantic roles, fonts, and logos. */
|
|
611
|
-
interface ChapterBrand {
|
|
612
|
-
/** Preloaded @odla-ai/ui theme name used by ThemeScope. */
|
|
613
|
-
theme?: string;
|
|
614
|
-
/** Named accent family supplied by the selected @odla-ai/ui theme. */
|
|
615
|
-
accent?: string;
|
|
616
|
-
/** Admin/application color mode. Explicit light is the safe default. */
|
|
617
|
-
colorScheme?: "light" | "dark" | "system";
|
|
618
|
-
tokens?: ChapterBrandTokens;
|
|
619
|
-
tokensDark?: ChapterBrandTokens;
|
|
620
|
-
/** Palette overrides written into styles.css :root (e.g. `{ moss: "#2F3E34" }`
|
|
621
|
-
* or `--ui-*` token names). Applies in BOTH light and dark unless overridden
|
|
622
|
-
* by {@link paletteDark}. */
|
|
623
|
-
palette?: Record<string, string>;
|
|
624
|
-
/** Dark-mode palette overrides. Same shape as {@link palette}; emitted under
|
|
625
|
-
* `:root[data-theme="dark"]` and `@media (prefers-color-scheme: dark)`, so a
|
|
626
|
-
* site brands both modes. */
|
|
627
|
-
paletteDark?: Record<string, string>;
|
|
628
|
-
/** Full token map for `.ui-invert` islands. A compiled custom theme normally
|
|
629
|
-
* uses its dark map here so inverted content never inherits stale composites. */
|
|
630
|
-
paletteInvert?: Record<string, string>;
|
|
631
|
-
fonts?: {
|
|
632
|
-
display?: string;
|
|
633
|
-
body?: string;
|
|
634
|
-
numeral?: string;
|
|
711
|
+
/** odla-db file storage (present on the real client). Member photos use it. */
|
|
712
|
+
storage?: {
|
|
713
|
+
upload(path: string, data: BodyInit, contentType?: string, opts?: {
|
|
714
|
+
private?: boolean;
|
|
715
|
+
}): Promise<{
|
|
716
|
+
path: string;
|
|
717
|
+
size: number;
|
|
718
|
+
contentType: string;
|
|
719
|
+
}>;
|
|
720
|
+
sign(path: string, ttlSeconds?: number): Promise<string>;
|
|
721
|
+
delete(path: string): Promise<void>;
|
|
635
722
|
};
|
|
636
|
-
/** Short glyph used in compact admin chrome. Defaults to the first three
|
|
637
|
-
* letters of the chapter name. */
|
|
638
|
-
badge?: string;
|
|
639
|
-
wordmark?: string;
|
|
640
|
-
tagline?: string;
|
|
641
|
-
/** Header/footer nav sections for the web-component chrome: label → entries. */
|
|
642
|
-
nav?: Record<string, ReadonlyArray<{
|
|
643
|
-
label: string;
|
|
644
|
-
href: string;
|
|
645
|
-
}>>;
|
|
646
|
-
logos?: string;
|
|
647
723
|
}
|
|
648
724
|
|
|
649
725
|
/** One owner-editable transactional email template. Automatic sends require explicit `enabled: true`. */
|
|
@@ -705,6 +781,8 @@ interface ChapterAuth {
|
|
|
705
781
|
* app allowlist; `"odla"` reads protected `$users.role` by exact subject ID.
|
|
706
782
|
* Default `"odla"` for private Clerk mode, `"table"` for legacy modes. */
|
|
707
783
|
superAdminSource?: "table" | "odla";
|
|
784
|
+
/** Require a second sign-in factor on admin routes: `off` (default), `report` (allow and log), `enforce`. */
|
|
785
|
+
adminSecondFactor?: "off" | "report" | "enforce";
|
|
708
786
|
}
|
|
709
787
|
/** The fully-resolved auth policy (defaults applied) carried on the {@link Chapter}. */
|
|
710
788
|
interface ResolvedAuth {
|
|
@@ -715,6 +793,7 @@ interface ResolvedAuth {
|
|
|
715
793
|
adminRole: string;
|
|
716
794
|
superAdmins: boolean;
|
|
717
795
|
superAdminSource: "none" | "table" | "odla";
|
|
796
|
+
adminSecondFactor: "off" | "report" | "enforce";
|
|
718
797
|
}
|
|
719
798
|
/** The application status pipeline. Which statuses exist, and the subsets a site
|
|
720
799
|
* allows a call to be booked from / an application approved from. Defaults to
|
|
@@ -810,6 +889,8 @@ interface ChapterConfig {
|
|
|
810
889
|
signupControl?: ChapterSignupControl;
|
|
811
890
|
/** Authenticated parent + chapter member pages with server-enforced tier access. */
|
|
812
891
|
memberContent?: ChapterMemberContent;
|
|
892
|
+
/** Signed-in member portal: profile, photos, courses, invite links and credit. */
|
|
893
|
+
memberPortal?: ChapterMemberPortal;
|
|
813
894
|
/** Private docs, Brand asset references, and links for authorized site-building agents. */
|
|
814
895
|
builderLibrary?: ChapterBuilderLibrary;
|
|
815
896
|
/** Network-scoped canonical Person registry. Shadow mode is additive only:
|
|
@@ -915,6 +996,8 @@ interface Chapter {
|
|
|
915
996
|
signupControl: ResolvedSignupControl | null;
|
|
916
997
|
/** Null unless the standard authenticated member-content surface is enabled. */
|
|
917
998
|
memberContent: ResolvedMemberContent | null;
|
|
999
|
+
/** Null unless the member portal is enabled. */
|
|
1000
|
+
memberPortal: ResolvedMemberPortal | null;
|
|
918
1001
|
/** Null unless the private scoped Builder Library is enabled. */
|
|
919
1002
|
builderLibrary: ResolvedBuilderLibrary | null;
|
|
920
1003
|
/** Null unless this hub explicitly enables the shadow Person registry. */
|
|
@@ -1105,7 +1188,7 @@ declare function normalizeNetworkCommercialStripeEvent(input: unknown, digest: s
|
|
|
1105
1188
|
/** Deterministically rebuild the network commercial projection from its event log. */
|
|
1106
1189
|
declare function projectNetworkCommercialEvents(input: readonly NetworkCommercialFact[], sources: readonly NetworkCommercialSource[]): NetworkCommercialProjection;
|
|
1107
1190
|
|
|
1108
|
-
type Row = Record<string, unknown>;
|
|
1191
|
+
type Row$2 = Record<string, unknown>;
|
|
1109
1192
|
/** Exact chapter/runtime partition that binds every parity digest. */
|
|
1110
1193
|
interface CommercialParityPartition {
|
|
1111
1194
|
appId: string;
|
|
@@ -1166,7 +1249,7 @@ interface CommercialParityResult {
|
|
|
1166
1249
|
declare function commercialParityDigest(secret: string, partition: CommercialParityPartition, kind: "application" | "customer" | "subscription", value: string): Promise<string>;
|
|
1167
1250
|
/** Build the bounded disclosure from already-bounded local application rows. */
|
|
1168
1251
|
declare function buildChapterCommercialParitySnapshot(input: {
|
|
1169
|
-
rows: readonly Row[];
|
|
1252
|
+
rows: readonly Row$2[];
|
|
1170
1253
|
secret: string;
|
|
1171
1254
|
partition: CommercialParityPartition;
|
|
1172
1255
|
siteId: string;
|
|
@@ -1993,13 +2076,78 @@ declare const membershipAuthorityEntities: Record<string, Entity>;
|
|
|
1993
2076
|
/** Backend-only authority; browser roles, including a network admin, cannot directly change these rows. */
|
|
1994
2077
|
declare const membershipAuthorityRules: DbRules;
|
|
1995
2078
|
|
|
2079
|
+
/**
|
|
2080
|
+
* Member catalog schema version 2: ordered navigation sections, page kinds,
|
|
2081
|
+
* navigation tags and icons. Version 1 documents remain valid and keep their
|
|
2082
|
+
* alphabetical section order; every field here requires `schemaVersion: 2`.
|
|
2083
|
+
*/
|
|
2084
|
+
/** Packaged member features a catalog page can stand for. */
|
|
2085
|
+
declare const MEMBER_PAGE_FEATURES: readonly ["course", "share"];
|
|
2086
|
+
/** A packaged member feature: `course` (cohort course) or `share` (invite kit). */
|
|
2087
|
+
type MemberPageFeatureName = typeof MEMBER_PAGE_FEATURES[number];
|
|
2088
|
+
/** Fixed icon vocabulary. Content never carries SVG, URLs or markup. */
|
|
2089
|
+
declare const MEMBER_PAGE_ICONS: readonly ["home", "course", "library", "deals", "training", "events", "members", "share", "profile", "document", "calendar", "chat", "star"];
|
|
2090
|
+
/** One icon from {@link MEMBER_PAGE_ICONS}. */
|
|
2091
|
+
type MemberPageIcon = typeof MEMBER_PAGE_ICONS[number];
|
|
2092
|
+
/** Authored navigation tags. "Soon" and year tags are derived from placeholder pages. */
|
|
2093
|
+
declare const MEMBER_PAGE_TAGS: readonly ["new"];
|
|
2094
|
+
/** One tag from {@link MEMBER_PAGE_TAGS}. */
|
|
2095
|
+
type MemberPageTag = typeof MEMBER_PAGE_TAGS[number];
|
|
2096
|
+
/** How a page renders: authored Markdown, a not-yet-open placeholder, or a packaged feature. */
|
|
2097
|
+
type MemberPageKind = "markdown" | "placeholder" | "feature";
|
|
2098
|
+
/**
|
|
2099
|
+
* A page that is announced but not open. Without `availableYear` it reads as
|
|
2100
|
+
* "Coming soon"; with one, as "Coming in <year>".
|
|
2101
|
+
*/
|
|
2102
|
+
interface MemberPagePlaceholder {
|
|
2103
|
+
/** Calendar year the page is expected to open. */
|
|
2104
|
+
availableYear?: number;
|
|
2105
|
+
/** Replaces the derived "Coming soon" / "Coming in <year>" badge text. */
|
|
2106
|
+
badge?: string;
|
|
2107
|
+
/** Label of a disabled call to action, e.g. "Investor form opens in 2027". */
|
|
2108
|
+
actionLabel?: string;
|
|
2109
|
+
}
|
|
2110
|
+
/** A catalog page backed by a packaged feature, gated by the page's audience. */
|
|
2111
|
+
interface MemberPageFeature {
|
|
2112
|
+
name: MemberPageFeatureName;
|
|
2113
|
+
/** Feature-specific identity, e.g. the course id for `course`. */
|
|
2114
|
+
ref?: string;
|
|
2115
|
+
}
|
|
2116
|
+
/**
|
|
2117
|
+
* One navigation group. A section without a label renders without a heading.
|
|
2118
|
+
* Section order is the order of the document's `sections` array.
|
|
2119
|
+
*/
|
|
2120
|
+
interface MemberContentSection {
|
|
2121
|
+
id: string;
|
|
2122
|
+
label?: string;
|
|
2123
|
+
}
|
|
2124
|
+
interface SectionedDocument {
|
|
2125
|
+
sections?: readonly MemberContentSection[];
|
|
2126
|
+
}
|
|
2127
|
+
interface SectionedPage {
|
|
2128
|
+
navigation: {
|
|
2129
|
+
section: string;
|
|
2130
|
+
};
|
|
2131
|
+
}
|
|
2132
|
+
/**
|
|
2133
|
+
* Resolve display order for composed sections. Chapter-declared sections come
|
|
2134
|
+
* first, in the chapter's order (a chapter may list a parent section id to
|
|
2135
|
+
* place it, inheriting the parent's label when it gives none). Parent-declared
|
|
2136
|
+
* sections follow in the parent's order. Sections named only by pages (version
|
|
2137
|
+
* 1 labels, or documents without `sections`) follow alphabetically, which is
|
|
2138
|
+
* exactly the version 1 order. Sections without pages are dropped.
|
|
2139
|
+
*/
|
|
2140
|
+
declare function composeMemberSections(parent: SectionedDocument | null | undefined, chapter: SectionedDocument | null | undefined, pages: readonly SectionedPage[]): MemberContentSection[];
|
|
2141
|
+
|
|
1996
2142
|
/** Validate one complete parent or chapter authoring layer with actionable paths. */
|
|
1997
2143
|
declare function validateMemberContentDocument(input: unknown, options?: MemberContentValidationOptions): MemberContentValidationResult;
|
|
1998
2144
|
/** Validate or fail closed with every actionable document error. */
|
|
1999
2145
|
declare function memberContentDocument(input: unknown, options?: MemberContentValidationOptions): MemberContentDocument;
|
|
2000
2146
|
|
|
2001
|
-
/**
|
|
2002
|
-
declare const MEMBER_CONTENT_SCHEMA_VERSION:
|
|
2147
|
+
/** Latest version of the authenticated member-content contract. Version 1 documents remain valid. */
|
|
2148
|
+
declare const MEMBER_CONTENT_SCHEMA_VERSION: 2;
|
|
2149
|
+
/** Every member-content schema version this release validates. */
|
|
2150
|
+
type MemberContentSchemaVersion = 1 | 2;
|
|
2003
2151
|
/** Authenticated member projection endpoint. */
|
|
2004
2152
|
declare const MEMBER_CONTENT_PATH: "/api/member-content";
|
|
2005
2153
|
/** Dedicated signed Parent → Chapter content-delivery endpoint. */
|
|
@@ -2018,9 +2166,14 @@ interface MemberContentTarget {
|
|
|
2018
2166
|
}
|
|
2019
2167
|
/** Navigation is data, so agents do not have to coordinate route code. */
|
|
2020
2168
|
interface MemberPageNavigation {
|
|
2169
|
+
/** A section id declared in `sections`, or (without `sections`) the section's display label. */
|
|
2021
2170
|
section: string;
|
|
2022
2171
|
order: number;
|
|
2023
2172
|
parentId?: string;
|
|
2173
|
+
/** Schema version 2. */
|
|
2174
|
+
tag?: MemberPageTag;
|
|
2175
|
+
/** Schema version 2. */
|
|
2176
|
+
icon?: MemberPageIcon;
|
|
2024
2177
|
}
|
|
2025
2178
|
/** Explicit sets avoid unsafe assumptions that commercial tiers form a ladder. */
|
|
2026
2179
|
type MemberPageAudience = {
|
|
@@ -2054,9 +2207,15 @@ interface MemberContentPage {
|
|
|
2054
2207
|
audience: MemberPageAudience;
|
|
2055
2208
|
/** Safe Markdown shown while the body is withheld. */
|
|
2056
2209
|
teaserMarkdown?: string;
|
|
2057
|
-
/** Never serialized to a viewer whose audience does not match. */
|
|
2058
|
-
bodyMarkdown
|
|
2210
|
+
/** Never serialized to a viewer whose audience does not match. Required for Markdown pages. */
|
|
2211
|
+
bodyMarkdown?: string;
|
|
2059
2212
|
upsell?: MemberPageUpsell;
|
|
2213
|
+
/** Schema version 2; defaults to `markdown`. */
|
|
2214
|
+
kind?: MemberPageKind;
|
|
2215
|
+
/** Schema version 2; present exactly when `kind` is `placeholder`. */
|
|
2216
|
+
placeholder?: MemberPagePlaceholder;
|
|
2217
|
+
/** Schema version 2; present exactly when `kind` is `feature`. */
|
|
2218
|
+
feature?: MemberPageFeature;
|
|
2060
2219
|
}
|
|
2061
2220
|
/** Chapter-owned offer attached to a Parent page that delegated offer authority. */
|
|
2062
2221
|
interface MemberPageUpsellOverride {
|
|
@@ -2065,13 +2224,15 @@ interface MemberPageUpsellOverride {
|
|
|
2065
2224
|
}
|
|
2066
2225
|
/** One complete source layer. Parent and Chapter layers are stored independently. */
|
|
2067
2226
|
interface MemberContentDocument {
|
|
2068
|
-
schemaVersion:
|
|
2227
|
+
schemaVersion: MemberContentSchemaVersion;
|
|
2069
2228
|
revision: number;
|
|
2070
2229
|
generatedAt: number;
|
|
2071
2230
|
source: MemberContentSource;
|
|
2072
2231
|
target?: MemberContentTarget;
|
|
2073
2232
|
pages: readonly MemberContentPage[];
|
|
2074
2233
|
upsellOverrides?: readonly MemberPageUpsellOverride[];
|
|
2234
|
+
/** Schema version 2: navigation groups in display order. */
|
|
2235
|
+
sections?: readonly MemberContentSection[];
|
|
2075
2236
|
}
|
|
2076
2237
|
/** Provider-neutral tier facts used to validate access and resolve safe offers. */
|
|
2077
2238
|
interface MemberContentTierAuthority {
|
|
@@ -2102,6 +2263,8 @@ interface EffectiveMemberContentPage extends MemberContentPage {
|
|
|
2102
2263
|
/** Deterministically ordered parent and chapter layers with their source revisions. */
|
|
2103
2264
|
interface EffectiveMemberContent {
|
|
2104
2265
|
pages: readonly EffectiveMemberContentPage[];
|
|
2266
|
+
/** Navigation groups in display order; only groups that have pages. Always set by `composeMemberContent`. */
|
|
2267
|
+
sections?: readonly MemberContentSection[];
|
|
2105
2268
|
parentRevision: number | null;
|
|
2106
2269
|
chapterRevision: number | null;
|
|
2107
2270
|
}
|
|
@@ -2125,6 +2288,10 @@ interface MemberContentPageProjection {
|
|
|
2125
2288
|
audience: MemberPageAudience;
|
|
2126
2289
|
source: MemberContentSource;
|
|
2127
2290
|
access: "allowed" | "locked";
|
|
2291
|
+
/** Always sent by the server; a hand-built preview may omit it to mean `markdown`. */
|
|
2292
|
+
kind?: MemberPageKind;
|
|
2293
|
+
placeholder?: MemberPagePlaceholder;
|
|
2294
|
+
feature?: MemberPageFeature;
|
|
2128
2295
|
teaserMarkdown?: string;
|
|
2129
2296
|
bodyMarkdown?: string;
|
|
2130
2297
|
upsell?: ResolvedMemberPageUpsell;
|
|
@@ -2132,6 +2299,8 @@ interface MemberContentPageProjection {
|
|
|
2132
2299
|
/** Complete viewer-safe member navigation and revision projection. */
|
|
2133
2300
|
interface MemberContentProjection {
|
|
2134
2301
|
pages: readonly MemberContentPageProjection[];
|
|
2302
|
+
/** Always sent by the server; a hand-built preview may omit it. */
|
|
2303
|
+
sections?: readonly MemberContentSection[];
|
|
2135
2304
|
viewer: {
|
|
2136
2305
|
tierId: string | null;
|
|
2137
2306
|
admin: boolean;
|
|
@@ -2160,6 +2329,17 @@ type MemberContentRejection = "invalid_document" | "invalid_digest" | "wrong_sou
|
|
|
2160
2329
|
|
|
2161
2330
|
/** Compose immutable Parent content with independently stored Chapter content. */
|
|
2162
2331
|
declare function composeMemberContent(parent: MemberContentDocument | null | undefined, chapter: MemberContentDocument | null | undefined): EffectiveMemberContent;
|
|
2332
|
+
/**
|
|
2333
|
+
* The single member-content access decision. A page's lock in the catalog and
|
|
2334
|
+
* the API routes of the feature it stands for both come from this function.
|
|
2335
|
+
*/
|
|
2336
|
+
declare const memberPageAllowed: (page: MemberContentPage, viewer: MemberContentViewer) => boolean;
|
|
2337
|
+
/**
|
|
2338
|
+
* Whether a viewer may use a packaged feature. A feature is enabled only by a
|
|
2339
|
+
* catalog page of kind `feature` naming it (and `ref`, when given); access is
|
|
2340
|
+
* that page's audience. No page means the feature is off for everyone.
|
|
2341
|
+
*/
|
|
2342
|
+
declare function memberFeatureAccess(content: Pick<EffectiveMemberContent, "pages">, viewer: MemberContentViewer, name: MemberPageFeatureName, ref?: string): "allowed" | "locked" | "absent";
|
|
2163
2343
|
/** Restricted bodies are omitted and authored offers are joined to live tier authority. */
|
|
2164
2344
|
declare function projectMemberContent(content: EffectiveMemberContent, viewer: MemberContentViewer, tiers: readonly MemberContentTierAuthority[]): MemberContentProjection;
|
|
2165
2345
|
|
|
@@ -2335,6 +2515,129 @@ declare function createBuilderLibraryEnvelope(document: BuilderLibraryDocument):
|
|
|
2335
2515
|
digest: string;
|
|
2336
2516
|
}>;
|
|
2337
2517
|
|
|
2518
|
+
/**
|
|
2519
|
+
* Validate the member portal. Courses and invite links are chapter-mode
|
|
2520
|
+
* features and need the member-content catalog, whose feature pages switch
|
|
2521
|
+
* them on and decide who may use them.
|
|
2522
|
+
*/
|
|
2523
|
+
declare function resolveMemberPortal(mode: ChapterMode, input: ChapterMemberPortal | undefined, hasMemberContent: boolean): ResolvedMemberPortal | null;
|
|
2524
|
+
|
|
2525
|
+
/** Namespaces the configured member portal needs. All are deny-all to clients. */
|
|
2526
|
+
declare function memberPortalEntities(mode: ChapterMode, portal: ResolvedMemberPortal | null, hasMemberContent: boolean): Record<string, Entity>;
|
|
2527
|
+
|
|
2528
|
+
type Row$1 = Record<string, unknown>;
|
|
2529
|
+
/**
|
|
2530
|
+
* The signed-in person as a member of this site, independent of mode. In a
|
|
2531
|
+
* chapter the member is their application and access is the membership
|
|
2532
|
+
* authority's answer; in a hub the member is an active admin grant and there
|
|
2533
|
+
* are no tiers. Administrative roles never make someone a member.
|
|
2534
|
+
*/
|
|
2535
|
+
interface PortalMember {
|
|
2536
|
+
/** Stable key for portal rows: the application id, or the hub grant id. */
|
|
2537
|
+
memberId: string;
|
|
2538
|
+
source: "application" | "hub-grant";
|
|
2539
|
+
email: string;
|
|
2540
|
+
firstName?: string;
|
|
2541
|
+
lastName?: string;
|
|
2542
|
+
tierId: string | null;
|
|
2543
|
+
/** When membership began (epoch ms), for "Member since". */
|
|
2544
|
+
memberSince: number | null;
|
|
2545
|
+
row: Row$1;
|
|
2546
|
+
}
|
|
2547
|
+
/** `member` only for someone with current member access. */
|
|
2548
|
+
type PortalMemberResult = {
|
|
2549
|
+
status: "member";
|
|
2550
|
+
member: PortalMember;
|
|
2551
|
+
} | {
|
|
2552
|
+
status: "not-member";
|
|
2553
|
+
row?: Row$1;
|
|
2554
|
+
} | {
|
|
2555
|
+
status: "unavailable";
|
|
2556
|
+
};
|
|
2557
|
+
/** The member's own identity block, as `/api/me` returns it under `portal`. */
|
|
2558
|
+
interface PortalIdentity {
|
|
2559
|
+
memberId: string;
|
|
2560
|
+
tier: {
|
|
2561
|
+
id: string;
|
|
2562
|
+
name: string;
|
|
2563
|
+
} | null;
|
|
2564
|
+
memberSince: number | null;
|
|
2565
|
+
displayName: string;
|
|
2566
|
+
firstName: string | null;
|
|
2567
|
+
initials: string;
|
|
2568
|
+
location: string | null;
|
|
2569
|
+
photoUrl: string | null;
|
|
2570
|
+
}
|
|
2571
|
+
/** First letters of the first and last words, uppercased: "Jane Morgan" → "JM". */
|
|
2572
|
+
declare function initialsOf(name: string): string;
|
|
2573
|
+
|
|
2574
|
+
/**
|
|
2575
|
+
* Profile fields a member edits, each mapped to the authority contract row
|
|
2576
|
+
* that permits it. A field the contract stops listing becomes read-only here.
|
|
2577
|
+
*/
|
|
2578
|
+
declare const MEMBER_PROFILE_FIELDS: {
|
|
2579
|
+
readonly preferredName: "person.preferredName";
|
|
2580
|
+
readonly location: "person.region";
|
|
2581
|
+
readonly prompts: "person.profilePrompts";
|
|
2582
|
+
readonly introducedByText: "person.introducedByText";
|
|
2583
|
+
};
|
|
2584
|
+
/** One editable profile field name. */
|
|
2585
|
+
type MemberProfileField = keyof typeof MEMBER_PROFILE_FIELDS;
|
|
2586
|
+
/** One answered prompt. */
|
|
2587
|
+
interface MemberProfilePrompt {
|
|
2588
|
+
prompt: string;
|
|
2589
|
+
answer: string;
|
|
2590
|
+
}
|
|
2591
|
+
/** A validated profile edit. Absent keys are left as they are. */
|
|
2592
|
+
interface MemberProfilePatch {
|
|
2593
|
+
preferredName?: string | null;
|
|
2594
|
+
location?: string | null;
|
|
2595
|
+
prompts?: MemberProfilePrompt[];
|
|
2596
|
+
introducedByText?: string | null;
|
|
2597
|
+
}
|
|
2598
|
+
/** Answers are short and plain; control characters never reach storage. */
|
|
2599
|
+
declare const MAX_PROMPT_ANSWER = 280;
|
|
2600
|
+
/** Validate a member's PUT body against the contract and the site's prompt list. */
|
|
2601
|
+
declare function validateProfilePatch(body: Record<string, unknown>, portal: Pick<ResolvedMemberPortal, "profilePrompts" | "maxPrompts">): {
|
|
2602
|
+
ok: true;
|
|
2603
|
+
patch: MemberProfilePatch;
|
|
2604
|
+
} | {
|
|
2605
|
+
ok: false;
|
|
2606
|
+
errors: string[];
|
|
2607
|
+
};
|
|
2608
|
+
/** Normalize a person's name for exact matching: case, spacing and surrounding punctuation ignored. */
|
|
2609
|
+
declare const nameKey: (value: string) => string;
|
|
2610
|
+
/** "Maria Lopez" → "Maria L.": how a member sees another member's name. */
|
|
2611
|
+
declare function shortName(firstName: unknown, lastName: unknown): string;
|
|
2612
|
+
|
|
2613
|
+
/** The signed-in member's own profile. */
|
|
2614
|
+
declare const MEMBER_PROFILE_PATH = "/api/member/profile";
|
|
2615
|
+
/** Upload (POST) the member's own photo as a raw JPEG or PNG body. */
|
|
2616
|
+
declare const MEMBER_PHOTO_PATH = "/api/member/profile/photo";
|
|
2617
|
+
/** The largest photo accepted, before cleaning. */
|
|
2618
|
+
declare const MAX_PHOTO_BYTES: number;
|
|
2619
|
+
/** Photos are resized in the browser; the stored image is at most this many pixels a side. */
|
|
2620
|
+
declare const PHOTO_SIZE = 400;
|
|
2621
|
+
|
|
2622
|
+
/** Admin roster for a hub's members. A grant is member access only; it never touches admin roles. */
|
|
2623
|
+
declare const HUB_MEMBERS_PATH = "/api/admin/hub-members";
|
|
2624
|
+
|
|
2625
|
+
/**
|
|
2626
|
+
* Byte-level image hygiene for member photos, with no decoder: identify JPEG or
|
|
2627
|
+
* PNG by magic bytes, read dimensions, and rebuild the file keeping only what
|
|
2628
|
+
* is needed to draw it. EXIF (including GPS), XMP, ICC-free comments and PNG
|
|
2629
|
+
* text chunks never reach storage.
|
|
2630
|
+
*/
|
|
2631
|
+
interface CleanImage {
|
|
2632
|
+
contentType: "image/jpeg" | "image/png";
|
|
2633
|
+
extension: "jpg" | "png";
|
|
2634
|
+
width: number;
|
|
2635
|
+
height: number;
|
|
2636
|
+
bytes: Uint8Array;
|
|
2637
|
+
}
|
|
2638
|
+
/** Identify and clean a JPEG or PNG. Anything else, or a malformed file, is null. */
|
|
2639
|
+
declare function cleanImage(bytes: Uint8Array): CleanImage | null;
|
|
2640
|
+
|
|
2338
2641
|
/** The default shared CRM graph: people (with the application/member pipeline)
|
|
2339
2642
|
* plus businesses and the `works_at` relation, in both modes. */
|
|
2340
2643
|
declare function defaultCrm(mode: ChapterMode): CrmConfig;
|
|
@@ -2400,10 +2703,31 @@ interface SecretStore {
|
|
|
2400
2703
|
*/
|
|
2401
2704
|
declare function getVaultSecret(db: SecretStore, name: string): Promise<string | undefined>;
|
|
2402
2705
|
|
|
2403
|
-
/**
|
|
2706
|
+
/** `{{placeholder}}` substitution with `{{#name}} … {{/name}}` sections; unknown placeholders render empty. */
|
|
2707
|
+
declare function render(template: string, vars: Record<string, string>): string;
|
|
2708
|
+
/** Largest HTML body a template may carry; a full table-based email is well under this. */
|
|
2709
|
+
declare const HTML_BODY_LIMIT = 200000;
|
|
2710
|
+
/**
|
|
2711
|
+
* Render a template's HTML body: the same placeholders and sections as the text,
|
|
2712
|
+
* every value HTML-escaped, and line breaks inside a value (the refund policy,
|
|
2713
|
+
* the commitment) kept as `<br>`. Markup belongs to the template, never to a value.
|
|
2714
|
+
*/
|
|
2715
|
+
declare function renderHtmlBody(template: string, vars: Record<string, string>): string;
|
|
2716
|
+
/** Problems in an HTML body: size, unbalanced sections, placeholders the event does not supply, and missing values. */
|
|
2717
|
+
declare function htmlBodyIssues(html: string, options: {
|
|
2718
|
+
allowedVariables?: readonly string[];
|
|
2719
|
+
optionalVariables?: readonly string[];
|
|
2720
|
+
values?: Record<string, string>;
|
|
2721
|
+
}): EmailCopyIssue[];
|
|
2722
|
+
|
|
2723
|
+
/** One owner-editable template row on the group. Automatic sends require `enabled:true`.
|
|
2724
|
+
* `text` is always sent and is the copy the pipeline validates and records; `html`, when
|
|
2725
|
+
* present, is sent beside it as the rich alternative (mail clients pick one). */
|
|
2404
2726
|
interface EmailTemplateRow {
|
|
2405
2727
|
subject: string;
|
|
2406
2728
|
text: string;
|
|
2729
|
+
/** Optional HTML body with the same placeholders and sections; values are escaped when rendered. */
|
|
2730
|
+
html?: string;
|
|
2407
2731
|
enabled?: boolean;
|
|
2408
2732
|
}
|
|
2409
2733
|
/** The `groups`-row fields the email pipeline reads. */
|
|
@@ -2420,8 +2744,7 @@ interface EmailGroup {
|
|
|
2420
2744
|
normsText?: string;
|
|
2421
2745
|
emailTemplates: Record<string, EmailTemplateRow>;
|
|
2422
2746
|
}
|
|
2423
|
-
|
|
2424
|
-
declare function render(template: string, vars: Record<string, string>): string;
|
|
2747
|
+
|
|
2425
2748
|
/**
|
|
2426
2749
|
* Re-render a template's body for history/preview (E4): the CRM comms history
|
|
2427
2750
|
* reads back emails whose body predates `emailLog.body` by rendering the current
|
|
@@ -2451,6 +2774,8 @@ type DeliveryDecision = {
|
|
|
2451
2774
|
to: string;
|
|
2452
2775
|
subject: string;
|
|
2453
2776
|
text: string;
|
|
2777
|
+
/** The rendered HTML alternative, when the template carries its own HTML body. */
|
|
2778
|
+
html?: string;
|
|
2454
2779
|
/** True when redirected to the non-prod debug inbox. */
|
|
2455
2780
|
redirected: boolean;
|
|
2456
2781
|
};
|
|
@@ -2505,6 +2830,7 @@ declare function validateEmailReadiness(input: {
|
|
|
2505
2830
|
templates: Record<string, {
|
|
2506
2831
|
subject?: unknown;
|
|
2507
2832
|
text?: unknown;
|
|
2833
|
+
html?: unknown;
|
|
2508
2834
|
enabled?: unknown;
|
|
2509
2835
|
}>;
|
|
2510
2836
|
groupValues: Record<string, string>;
|
|
@@ -2549,7 +2875,7 @@ interface NotifyDeps {
|
|
|
2549
2875
|
from?: string;
|
|
2550
2876
|
/** Runtime-local non-production inbox; never changes the shared chapter setting. */
|
|
2551
2877
|
debugEmail?: string;
|
|
2552
|
-
/** The HTML alternative sent beside the text part: {@link textToHtml} by default, a host renderer, or `false` for text-only mail. */
|
|
2878
|
+
/** The HTML alternative sent beside the text part when the template has no `html` body of its own: {@link textToHtml} by default, a host renderer, or `false` for text-only mail. */
|
|
2553
2879
|
renderHtml?: ((text: string) => string) | false;
|
|
2554
2880
|
now: () => number;
|
|
2555
2881
|
newId: () => string;
|
|
@@ -2618,6 +2944,25 @@ declare function normalizeChapterEmail(email: string): string;
|
|
|
2618
2944
|
*/
|
|
2619
2945
|
declare function textToHtml(text: string): string;
|
|
2620
2946
|
|
|
2947
|
+
type Row = Record<string, unknown>;
|
|
2948
|
+
/** Money and tier facts frozen at checkout; every field is blank without a checkout. */
|
|
2949
|
+
interface CheckoutVariables {
|
|
2950
|
+
/** `$900.00`, or "" for a free tier / no checkout. */
|
|
2951
|
+
paymentAmount: string;
|
|
2952
|
+
/** ` of $900.00`, so copy reads "payment of $900.00" or just "payment". */
|
|
2953
|
+
paymentAmountSummary: string;
|
|
2954
|
+
/** The tier's display name. */
|
|
2955
|
+
tierName: string;
|
|
2956
|
+
/** `paid` or `included` when the checkout carried a gift seat for another person, else "" (so `{{#namedSeat}}` hides). */
|
|
2957
|
+
namedSeat: string;
|
|
2958
|
+
/** The gift recipient's name as entered at checkout; "" without a seat. */
|
|
2959
|
+
namedSeatRecipientName: string;
|
|
2960
|
+
}
|
|
2961
|
+
/** Read the frozen checkout intent (the exact terms the applicant consented to). */
|
|
2962
|
+
declare function frozenCheckoutVariables(db: ChapterDb, app: Row): Promise<CheckoutVariables>;
|
|
2963
|
+
/** Frozen checkout facts; the tier name falls back to the catalog when no checkout exists yet. */
|
|
2964
|
+
declare function checkoutVariables(db: ChapterDb, group: Row, app: Row): Promise<CheckoutVariables>;
|
|
2965
|
+
|
|
2621
2966
|
/**
|
|
2622
2967
|
* Signals in one template's copy that mailbox filters weight against the sender:
|
|
2623
2968
|
* shouting or over-punctuated subjects, fake reply prefixes, trigger phrases, insecure
|
|
@@ -2627,6 +2972,7 @@ declare function textToHtml(text: string): string;
|
|
|
2627
2972
|
declare function emailSpamSignals(copy: {
|
|
2628
2973
|
subject?: unknown;
|
|
2629
2974
|
text?: unknown;
|
|
2975
|
+
html?: unknown;
|
|
2630
2976
|
}): EmailCopyIssue[];
|
|
2631
2977
|
/**
|
|
2632
2978
|
* Sender-setup signals that apply to every message a site sends: a no-reply From
|
|
@@ -4458,4 +4804,4 @@ declare function createMembershipAuthorityIntegration(): {
|
|
|
4458
4804
|
seeds: never[];
|
|
4459
4805
|
};
|
|
4460
4806
|
|
|
4461
|
-
export { ADMINISTRATOR_AUDIENCE, ADMISSION_GRANTS_PATH, ADMISSION_GRANTS_SCHEMA_VERSION, type AccountModel, type AdminNotificationTrigger, type AdmissionDecision, type AdmissionGrantDocument, type AdmissionGrantEnvelope, type AdmissionGrantInput, type AdmissionGrantReceipt, type AdmissionGrantRejection, type AdmissionGrantRevisionRow, type AdmissionGrantRow, type AdmissionGrantValidation, type Applicant, type ApplicationBookingPatch, type ApplicationRecord, type ApplicationSummary, type Attr, type AttrType, BUILDER_LIBRARY_ADMIN_PATH, BUILDER_LIBRARY_CONTROL_PATH, BUILDER_LIBRARY_MANIFEST_PATH, BUILDER_LIBRARY_PROMOTE_PATH, BUILDER_LIBRARY_SCHEMA_VERSION, type BuilderLibraryBrandAssetRef, type BuilderLibraryDocument, type BuilderLibraryEnvelope, type BuilderLibraryManifest, type BuilderLibraryPromotionProvenance, type BuilderLibraryReceipt, type BuilderLibraryResource, type BuilderLibraryResourceKind, type BuilderLibraryResourceProvenance, type BuilderLibraryResourceStatus, type BuilderLibraryScope, type BuilderLibrarySource, type BuilderLibrarySourceType, type BuilderLibraryTarget, type BuilderLibraryValidationOptions, type BuilderLibraryValidationResult, type BuilderLibraryViewer, type BuyerGiftClaim, CHAPTER_EMAIL_EVENTS, CHAPTER_FLOW_FIELDS_SCHEMA_VERSION, CHAPTER_PROMOTION_ADAPTER, type Chapter, type ChapterApplication, type ChapterAuth, type ChapterBrand, type ChapterBuilderLibrary, type ChapterCommercialParityRecord, type ChapterCommercialParitySnapshot, type ChapterConfig, type ChapterCopy, type ChapterCopyInput, type ChapterDb, type ChapterEmailEvent, type ChapterEmailIdentity, type ChapterEmails, type ChapterFieldFlow, type ChapterFlowField, type ChapterFlowFieldContract, type ChapterIntegrationDescriptor, type ChapterIntegrationOptions, type ChapterMemberContent, type ChapterMode, type ChapterNetwork, type ChapterNetworkReader, type ChapterNetworkTarget, type ChapterOperations, type ChapterPipeline, type ChapterPolicy, type ChapterPrices, type ChapterPromotionInput, type ChapterRunbookHints, type ChapterScheduling, type ChapterSends, type ChapterSignupControl, type ChapterTier, type ChapterTierConfig, type ClerkInviteInput, type ClerkMetadataInput, type ClerkResult, type ClerkRoleMetadata, type ClerkUserInput, type ClerkUserRecord, type CommercialIdentity, type CommercialObjectKind, type CommercialParityException, type CommercialParityExceptionKind, type CommercialParityPartition, type CommercialParityResult, type CompiledChapterBrandTokens, type ConfirmMembershipPaymentInput, DEFAULT_CHAPTER_COPY, DEFAULT_SHARE_FIELDS, type DashboardMetricData, type DashboardMetricSeries, type DbOp, type DbRules, type DbSchema, type DeliveryDecision, EDGE_UNPAIRED, type EdgeUnpaired, type EffectiveMemberContent, type EffectiveMemberContentPage, type EmailEventReadiness, type EmailGroup, type EmailReadiness, type EmailTemplate, type EmailTemplateRow, type Entity, type ExistingMeeting, type FederationEdge, GIFT_OFFER_CATALOG_VERSION, type GiftOffer, type GiftOfferCatalog, type GiftOfferTarget, type GiftOfferValidation, type GuardResult, type IntegrationDescriptor, type IntegrationProvision, type IntegrationSecret, type IntegrationSetting, type IntegrationSync, type IssuedMembershipOffer, JOURNEY_ENDINGS, JOURNEY_STAGES, type JoinConfigGroup, type JoinConfigTier, type JoinContinuation, type JourneyEnding, type JourneyStage, type LeaderCrmOptions, type LeaderFormationConfig, type LifecycleDeliveryResolution, type LiveEvent, MAX_GIFT_OFFERS, MEMBERSHIP_AUTHORITY_COLLECTIONS, MEMBERSHIP_AUTHORITY_PATH, MEMBERSHIP_PAGE_RENDERER, MEMBER_CONTENT_CONTROL_PATH, MEMBER_CONTENT_PATH, MEMBER_CONTENT_SCHEMA_VERSION, MEMBER_SELF_EDITABLE_FIELDS, MEMBER_SELF_READABLE_FIELDS, MEMBER_SYSTEM_AUTHORITY_MATRIX, MEMBER_SYSTEM_CONTRACT_VERSION, MEMBER_SYSTEM_RECORD_OWNERS, MEMBER_SYSTEM_RECOVERY_OBJECTIVES, type MailSender, type MeetingForReconcile, type MeetingRecord, type MeetingReschedulePatch, type MemberApplication, type MemberAuthorityValidation, type MemberContentDocument, type MemberContentEnvelope, type MemberContentPage, type MemberContentPageProjection, type MemberContentProjection, type MemberContentReceipt, type MemberContentRejection, type MemberContentSource, type MemberContentSourceType, type MemberContentTarget, type MemberContentTierAuthority, type MemberContentValidationOptions, type MemberContentValidationResult, type MemberContentViewer, type MemberFieldAuthority, type MemberFieldSelfAccess, type MemberFieldSensitivity, type MemberPageAudience, type MemberPageNavigation, type MemberPageUpsell, type MemberPageUpsellOffer, type MemberPageUpsellOverride, type MemberSession, type MemberStripeDisposition, type MemberStripeIdentity, type MemberStripeTarget, type MemberSystemAvailability, type MemberSystemAvailabilityInput, type MemberSystemEventReceiptInput, type MemberSystemEventReplayPlan, type MemberSystemMigrationPlan, type MemberSystemMigrationRow, type MemberSystemProjection, type MemberSystemRecoveryObjectives, type MemberSystemRollbackPlan, type MemberSystemScope, type MemberSystemWriteDisposition, type MemberSystemWriteIntent, type MemberSystemWriter, type MembershipAccessReceipt, type MembershipAuthorityHandlerOptions, type MembershipAuthorityPeer, type MembershipChapterEffect, type MembershipChapterEffectData, type MembershipCheckoutBinding, type MembershipCheckoutBindingInput, type MembershipCommercialOffer, type MembershipDiscountPolicyVersion, type MembershipEffectScope, type MembershipOfferIssuer, type MembershipOfferPreview, type MembershipOfferPreviewRequest, type MembershipOfferPreviewScope, type MembershipOfferRequest, type MembershipOfferingVersion, type MembershipPageDocument, type MembershipPageValidationOptions, type MembershipPageValidationResult, type MembershipPaymentReceipt, type MembershipQuoteTarget, type MembershipRefundReceipt, type MembershipRenewalReceipt, type MembershipTierAuthority, type MembershipTierCallout, type MembershipTierCapacity, type MembershipTierMarkdownResult, type MembershipTierPresentation, type MembershipTierVariant, type NamedSeatCheckoutReceipt, type NamedSeatCheckoutRequest, type NamedSeatEvidenceRequest, type NamedSeatInvitation, type NamedSeatInvitationRequest, type NamedSeatOffer, type NamedSeatOfferSeat, type NamedSeatRecipientReceipt, type NamedSeatRefundReceipt, type NamedSeatRegiftReceipt, type NetworkCommercialException, type NetworkCommercialFact, type NetworkCommercialProjectedRow, type NetworkCommercialProjection, type NetworkEditableField, type NetworkRecord, type NetworkRecordEdit, type NetworkRecordMutation, type NetworkRecordMutationResult, type NetworkRecordNote, type NetworkRecordPage, type NetworkRecordSort, type NetworkRollup, type NetworkRollupTarget, type NetworkSharedNote, type NetworkSnapshot, type NetworkStageTransition, type NetworkTargetTransportStatus, type NewMeetingRow, type NotifyDeps, type NotifyInput, type NotifyResult, type PaymentsGroup, type PrivateRoleMigrationInput, type PrivateRoleRuntimeProof, type ProjectionDeps, type PublicGiftOffer, REQUIRED_NOTICE_KINDS, type ReconcileDecision, type RequestMembershipOfferOptions, type RequiredNoticeKind, type ResolvedApplication, type ResolvedAuth, type ResolvedBuilderLibrary, type ResolvedLeaderFormation, type ResolvedMemberContent, type ResolvedMemberPageUpsell, type ResolvedNetwork, type ResolvedNetworkReader, type ResolvedNetworkTarget, type ResolvedOperations, type ResolvedPipeline, type ResolvedScheduling, type ResolvedSends, type ResolvedSignupControl, type RoleChangeContext, type Rule, SCHEDULING_DEFAULTS, SIGNUP_CONTROL_PATH, SIGNUP_CONTROL_SCHEMA_VERSION, SIGNUP_CONTROL_THEME_MARKER, SIGNUP_CONTROL_THEME_STYLE_ID, SILVER_SALT_P0_FIXTURE, type SchedulingErrors, type SecretMode, type SecretStore, type SessionUser, type SharedBusiness, type SharedPerson, type SharedRecord, type SharedRecordV1, type SharedRecordV2, type SignupControlApplication, type SignupControlDocument, type SignupControlEnvelope, type SignupControlPolicy, type SignupControlReceipt, type SignupControlRejection, type SignupControlRuntimeTarget, type SignupControlTheme, type SignupControlThemeHead, type SignupControlThemeMetadata, type SignupControlThemeOptions, type SignupControlThemeRevision, type SignupControlThemeStyleTarget, type SignupControlTier, type SignupControlValidation, type StripeEvent, type StripeResult, type SubmitResult, type TierGroup, type TierGroupRow, type WebhookEvent, addMembershipCalendarMonths, applicantProfile, applicationBookingUpdate, applicationFlowFields, applicationSummary, applyMembershipTierMarkdown, approveNetworkMembership, backfillCrm, bindMembershipCheckout, bookingDecision, brandTokens, bucketSeries, buildBuilderLibraryManifest, buildChapterCommercialParitySnapshot, buildGroupSeed, buildTierSeeds, builderLibraryDigest, canApprove, canBook, canChangeRole, canTransition, canViewBuilderLibraryResource, canceledPatch, canonicalBuilderLibrary, canonicalMemberContent, canonicalSignupControl, chapterBrandFromTokens, chapterDb, chapterEmailEvents, chapterFlowFieldContract, clampArray, classifyMemberStripeEvent, classifyMemberSystemWrite, clerkGetUser, clerkGetUserByEmail, clerkIntegration, clerkInviteRequest, clerkListUsers, clerkRoleMetadata, clerkSetRole, clerkUserRequest, commercialParityDigest, composeMemberContent, confirmMembershipPayment, createAdmissionGrantEnvelope, createBuilderLibraryEnvelope, createChapterIntegration, createClerkInvitation, createClerkUser, createMemberContentEnvelope, createMembershipAuthorityHandler, createMembershipAuthorityIntegration, createMembershipCommercialOffer, createSignupControlEnvelope, dashboardMetricData, defaultCrm, defineChapter, deliverabilityHeaders, drainMembershipEffects, edgeUnpaired, emailGroupFrom, emailSenderWarnings, emailSpamSignals, endForSlot, exportChapterPromotion, findAdmissionGrant, findApplicationRef, findGiftOffer, findTier, firstPaymentPatch, formatChapterCopy, formationFields, formationFlowFields, getVaultSecret, giftOfferActive, hasDisclaimerAck, hydrateSignupControlTheme, injectSignupControlThemeHead, introIdempotencyKey, isAdminRole, isAlreadySent, isRecipientFacing, isReconcilable, isSlotAvailable, isValidEmail, issueMembershipCommercialOffer, joinConfig, joinConfigTiers, leaderCrmConfig, listStripeObjects, listUnsubscribeHeader, loadLatestAdmissionRevision, loadOfferableTiers, loadTiers, materializeAdmissionGrants, meetingCreateRow, meetingRescheduleUpdate, memberApplication, memberContentDigest, memberContentDocument, memberSession, memberSystemAvailability, memberSystemRollbackPlan, membershipAuthorityEntities, membershipAuthorityRules, membershipCheckoutBindingId, membershipDiscountCouponId, membershipDiscountPolicyVersion, membershipOfferEntities, membershipOfferIdForRequest, membershipOfferRules, membershipOfferingVersion, membershipPageDocument, membershipTierPresentationFromMarkdown, namedSeatOfferDigest, networkCommercialSourceKey, networkMembershipId, networkSourceTag, normalizeAdmissionEmail, normalizeChapterEmail, normalizeNetworkCommercialStripeEvent, normalizeSharedRecord, normalizeWebhookEvent, offerableTiers, pairingCommand, paymentsReady, personInputFromApp, planDelivery, planMemberSystemEventReplay, planMemberSystemMigration, planPrivateRoleMigration, previewMembershipCommercialOffer, projectApplicant, projectBuilderLibraryDelivery, projectMemberContent, projectMemberSelf, projectNetworkCommercialEvents, projectSharedRecord, promoteBuilderLibraryResource, publicGiftOffers, readMembershipAccess, readMembershipChapterEffect, readNamedSeatAccess, readNamedSeatInvitation, readNamedSeatOffer, reconcileCommercialParitySnapshot, reconcileLifecycleDelivery, reconcileMeetings, reconcileMembershipBilling, reconcileMembershipRenewal, reconcileStripeSnapshot, refundNetworkMembership, refundedPatch, render, renderSignupControlThemeHead, renderSummary, renderTemplateBody, renewalPatch, requestMembershipAccess, requestMembershipApproval, requestMembershipCancellation, requestMembershipChapterEffect, requestMembershipCheckoutBinding, requestMembershipCommercialOffer, requestMembershipOfferPreview, requestMembershipPayment, requestMembershipRefund, requestMembershipRenewal, requestMembershipRestart, requestNamedSeatAcceptance, requestNamedSeatAccess, requestNamedSeatApproval, requestNamedSeatCheckout, requestNamedSeatDecline, requestNamedSeatInvitation, requestNamedSeatOffer, requestNamedSeatOperatorRefund, requestNamedSeatPayment, requestNamedSeatRefund, requestNamedSeatRegift, requestNamedSeatReservation, resolveApplication, resolveAuth, resolveBuilderLibrary, resolveChapterCopy, resolveJoinContinuation, resolveLeaderFormation, resolveMemberContent, resolveNetworkCommercialReadModel, resolveNetworkPersonRegistry, resolvePipeline, resolveScheduling, resolveSignupControl, resolveTiers, roleFromClaim, seatPurchaseDeadline, sendTemplated, sharedPersonInput, sharedRecordFromCrm, signupControlDigest, slotWindow, stageIndex, stripeCall, subAnnualCents, submitApplication, subscriptionIdempotencyKey, syncApplicationToCrm, textToHtml, tierIsFree, tierPayable, updateClerkUserMetadata, updateClerkUserMetadataByEmail, validateAdmissionGrantDocument, validateBuilderLibraryDocument, validateEmailReadiness, validateGiftOfferCatalog, validateMemberContentDocument, validateMemberSystemAuthority, validateMembershipPageDocument, validateScheduling, validateSignupControlDocument, verifyIssuedMembershipOffer, verifyMembershipAccessReceipt, verifyMembershipCheckoutBinding, verifyMembershipPaymentReceipt, webhookMutationId };
|
|
4807
|
+
export { ADMINISTRATOR_AUDIENCE, ADMISSION_GRANTS_PATH, ADMISSION_GRANTS_SCHEMA_VERSION, type AccountModel, type AdminNotificationTrigger, type AdmissionDecision, type AdmissionGrantDocument, type AdmissionGrantEnvelope, type AdmissionGrantInput, type AdmissionGrantReceipt, type AdmissionGrantRejection, type AdmissionGrantRevisionRow, type AdmissionGrantRow, type AdmissionGrantValidation, type Applicant, type ApplicationBookingPatch, type ApplicationRecord, type ApplicationSummary, type Attr, type AttrType, BUILDER_LIBRARY_ADMIN_PATH, BUILDER_LIBRARY_CONTROL_PATH, BUILDER_LIBRARY_MANIFEST_PATH, BUILDER_LIBRARY_PROMOTE_PATH, BUILDER_LIBRARY_SCHEMA_VERSION, type BuilderLibraryBrandAssetRef, type BuilderLibraryDocument, type BuilderLibraryEnvelope, type BuilderLibraryManifest, type BuilderLibraryPromotionProvenance, type BuilderLibraryReceipt, type BuilderLibraryResource, type BuilderLibraryResourceKind, type BuilderLibraryResourceProvenance, type BuilderLibraryResourceStatus, type BuilderLibraryScope, type BuilderLibrarySource, type BuilderLibrarySourceType, type BuilderLibraryTarget, type BuilderLibraryValidationOptions, type BuilderLibraryValidationResult, type BuilderLibraryViewer, type BuyerGiftClaim, CHAPTER_EMAIL_EVENTS, CHAPTER_FLOW_FIELDS_SCHEMA_VERSION, CHAPTER_PROMOTION_ADAPTER, type Chapter, type ChapterApplication, type ChapterAuth, type ChapterBrand, type ChapterBuilderLibrary, type ChapterCommercialParityRecord, type ChapterCommercialParitySnapshot, type ChapterConfig, type ChapterCopy, type ChapterCopyInput, type ChapterDb, type ChapterEmailEvent, type ChapterEmailIdentity, type ChapterEmails, type ChapterFieldFlow, type ChapterFlowField, type ChapterFlowFieldContract, type ChapterIntegrationDescriptor, type ChapterIntegrationOptions, type ChapterMemberContent, type ChapterMode, type ChapterNetwork, type ChapterNetworkReader, type ChapterNetworkTarget, type ChapterOperations, type ChapterPipeline, type ChapterPolicy, type ChapterPrices, type ChapterPromotionInput, type ChapterRunbookHints, type ChapterScheduling, type ChapterSends, type ChapterSignupControl, type ChapterTier, type ChapterTierConfig, type CheckoutVariables, type CleanImage, type ClerkInviteInput, type ClerkMetadataInput, type ClerkResult, type ClerkRoleMetadata, type ClerkUserInput, type ClerkUserRecord, type CommercialIdentity, type CommercialObjectKind, type CommercialParityException, type CommercialParityExceptionKind, type CommercialParityPartition, type CommercialParityResult, type CompiledChapterBrandTokens, type ConfirmMembershipPaymentInput, DEFAULT_CHAPTER_COPY, DEFAULT_PORTAL_COPY, DEFAULT_SHARE_FIELDS, type DashboardMetricData, type DashboardMetricSeries, type DbOp, type DbRules, type DbSchema, type DeliveryDecision, EDGE_UNPAIRED, type EdgeUnpaired, type EffectiveMemberContent, type EffectiveMemberContentPage, type EmailEventReadiness, type EmailGroup, type EmailReadiness, type EmailTemplate, type EmailTemplateRow, type Entity, type ExistingMeeting, type FederationEdge, GIFT_OFFER_CATALOG_VERSION, type GiftOffer, type GiftOfferCatalog, type GiftOfferTarget, type GiftOfferValidation, type GuardResult, HTML_BODY_LIMIT, HUB_MEMBERS_PATH, type IntegrationDescriptor, type IntegrationProvision, type IntegrationSecret, type IntegrationSetting, type IntegrationSync, type IssuedMembershipOffer, JOURNEY_ENDINGS, JOURNEY_STAGES, type JoinConfigGroup, type JoinConfigTier, type JoinContinuation, type JourneyEnding, type JourneyStage, type LeaderCrmOptions, type LeaderFormationConfig, type LifecycleDeliveryResolution, type LiveEvent, MAX_GIFT_OFFERS, MAX_PHOTO_BYTES, MAX_PROMPT_ANSWER, MEMBERSHIP_AUTHORITY_COLLECTIONS, MEMBERSHIP_AUTHORITY_PATH, MEMBERSHIP_PAGE_RENDERER, MEMBER_CONTENT_CONTROL_PATH, MEMBER_CONTENT_PATH, MEMBER_CONTENT_SCHEMA_VERSION, MEMBER_PAGE_FEATURES, MEMBER_PAGE_ICONS, MEMBER_PAGE_TAGS, MEMBER_PHOTO_PATH, MEMBER_PROFILE_FIELDS, MEMBER_PROFILE_PATH, MEMBER_SELF_EDITABLE_FIELDS, MEMBER_SELF_READABLE_FIELDS, MEMBER_SYSTEM_AUTHORITY_MATRIX, MEMBER_SYSTEM_CONTRACT_VERSION, MEMBER_SYSTEM_RECORD_OWNERS, MEMBER_SYSTEM_RECOVERY_OBJECTIVES, type MailSender, type MeetingForReconcile, type MeetingRecord, type MeetingReschedulePatch, type MemberApplication, type MemberAuthorityValidation, type MemberContentDocument, type MemberContentEnvelope, type MemberContentPage, type MemberContentPageProjection, type MemberContentProjection, type MemberContentReceipt, type MemberContentRejection, type MemberContentSchemaVersion, type MemberContentSection, type MemberContentSource, type MemberContentSourceType, type MemberContentTarget, type MemberContentTierAuthority, type MemberContentValidationOptions, type MemberContentValidationResult, type MemberContentViewer, type MemberFieldAuthority, type MemberFieldSelfAccess, type MemberFieldSensitivity, type MemberPageAudience, type MemberPageFeature, type MemberPageFeatureName, type MemberPageIcon, type MemberPageKind, type MemberPageNavigation, type MemberPagePlaceholder, type MemberPageTag, type MemberPageUpsell, type MemberPageUpsellOffer, type MemberPageUpsellOverride, type MemberProfileField, type MemberProfilePatch, type MemberProfilePrompt, type MemberSession, type MemberStripeDisposition, type MemberStripeIdentity, type MemberStripeTarget, type MemberSystemAvailability, type MemberSystemAvailabilityInput, type MemberSystemEventReceiptInput, type MemberSystemEventReplayPlan, type MemberSystemMigrationPlan, type MemberSystemMigrationRow, type MemberSystemProjection, type MemberSystemRecoveryObjectives, type MemberSystemRollbackPlan, type MemberSystemScope, type MemberSystemWriteDisposition, type MemberSystemWriteIntent, type MemberSystemWriter, type MembershipAccessReceipt, type MembershipAuthorityHandlerOptions, type MembershipAuthorityPeer, type MembershipChapterEffect, type MembershipChapterEffectData, type MembershipCheckoutBinding, type MembershipCheckoutBindingInput, type MembershipCommercialOffer, type MembershipDiscountPolicyVersion, type MembershipEffectScope, type MembershipOfferIssuer, type MembershipOfferPreview, type MembershipOfferPreviewRequest, type MembershipOfferPreviewScope, type MembershipOfferRequest, type MembershipOfferingVersion, type MembershipPageDocument, type MembershipPageValidationOptions, type MembershipPageValidationResult, type MembershipPaymentReceipt, type MembershipQuoteTarget, type MembershipRefundReceipt, type MembershipRenewalReceipt, type MembershipTierAuthority, type MembershipTierCallout, type MembershipTierCapacity, type MembershipTierMarkdownResult, type MembershipTierPresentation, type MembershipTierVariant, type NamedSeatCheckoutReceipt, type NamedSeatCheckoutRequest, type NamedSeatEvidenceRequest, type NamedSeatInvitation, type NamedSeatInvitationRequest, type NamedSeatOffer, type NamedSeatOfferSeat, type NamedSeatRecipientReceipt, type NamedSeatRefundReceipt, type NamedSeatRegiftReceipt, type NetworkCommercialException, type NetworkCommercialFact, type NetworkCommercialProjectedRow, type NetworkCommercialProjection, type NetworkEditableField, type NetworkRecord, type NetworkRecordEdit, type NetworkRecordMutation, type NetworkRecordMutationResult, type NetworkRecordNote, type NetworkRecordPage, type NetworkRecordSort, type NetworkRollup, type NetworkRollupTarget, type NetworkSharedNote, type NetworkSnapshot, type NetworkStageTransition, type NetworkTargetTransportStatus, type NewMeetingRow, type NotifyDeps, type NotifyInput, type NotifyResult, PHOTO_SIZE, type PaymentsGroup, type PortalCopy, type PortalIdentity, type PortalMember, type PortalMemberResult, type PrivateRoleMigrationInput, type PrivateRoleRuntimeProof, type ProjectionDeps, type PublicGiftOffer, REQUIRED_NOTICE_KINDS, type ReconcileDecision, type RequestMembershipOfferOptions, type RequiredNoticeKind, type ResolvedApplication, type ResolvedAuth, type ResolvedBuilderLibrary, type ResolvedLeaderFormation, type ResolvedMemberContent, type ResolvedMemberPageUpsell, type ResolvedNetwork, type ResolvedNetworkReader, type ResolvedNetworkTarget, type ResolvedOperations, type ResolvedPipeline, type ResolvedScheduling, type ResolvedSends, type ResolvedSignupControl, type RoleChangeContext, type Rule, SCHEDULING_DEFAULTS, SIGNUP_CONTROL_PATH, SIGNUP_CONTROL_SCHEMA_VERSION, SIGNUP_CONTROL_THEME_MARKER, SIGNUP_CONTROL_THEME_STYLE_ID, SILVER_SALT_P0_FIXTURE, type SchedulingErrors, type SecretMode, type SecretStore, type SessionUser, type SharedBusiness, type SharedPerson, type SharedRecord, type SharedRecordV1, type SharedRecordV2, type SignupControlApplication, type SignupControlDocument, type SignupControlEnvelope, type SignupControlPolicy, type SignupControlReceipt, type SignupControlRejection, type SignupControlRuntimeTarget, type SignupControlTheme, type SignupControlThemeHead, type SignupControlThemeMetadata, type SignupControlThemeOptions, type SignupControlThemeRevision, type SignupControlThemeStyleTarget, type SignupControlTier, type SignupControlValidation, type StripeEvent, type StripeResult, type SubmitResult, type TierGroup, type TierGroupRow, type WebhookEvent, addMembershipCalendarMonths, applicantProfile, applicationBookingUpdate, applicationFlowFields, applicationSummary, applyMembershipTierMarkdown, approveNetworkMembership, backfillCrm, bindMembershipCheckout, bookingDecision, brandTokens, bucketSeries, buildBuilderLibraryManifest, buildChapterCommercialParitySnapshot, buildGroupSeed, buildTierSeeds, builderLibraryDigest, canApprove, canBook, canChangeRole, canTransition, canViewBuilderLibraryResource, canceledPatch, canonicalBuilderLibrary, canonicalMemberContent, canonicalSignupControl, chapterBrandFromTokens, chapterDb, chapterEmailEvents, chapterFlowFieldContract, checkoutVariables, clampArray, classifyMemberStripeEvent, classifyMemberSystemWrite, cleanImage, clerkGetUser, clerkGetUserByEmail, clerkIntegration, clerkInviteRequest, clerkListUsers, clerkRoleMetadata, clerkSetRole, clerkUserRequest, commercialParityDigest, composeMemberContent, composeMemberSections, confirmMembershipPayment, createAdmissionGrantEnvelope, createBuilderLibraryEnvelope, createChapterIntegration, createClerkInvitation, createClerkUser, createMemberContentEnvelope, createMembershipAuthorityHandler, createMembershipAuthorityIntegration, createMembershipCommercialOffer, createSignupControlEnvelope, dashboardMetricData, defaultCrm, defineChapter, deliverabilityHeaders, drainMembershipEffects, edgeUnpaired, emailGroupFrom, emailSenderWarnings, emailSpamSignals, endForSlot, exportChapterPromotion, findAdmissionGrant, findApplicationRef, findGiftOffer, findTier, firstPaymentPatch, formatChapterCopy, formationFields, formationFlowFields, frozenCheckoutVariables, getVaultSecret, giftOfferActive, hasDisclaimerAck, htmlBodyIssues, hydrateSignupControlTheme, initialsOf, injectSignupControlThemeHead, introIdempotencyKey, isAdminRole, isAlreadySent, isRecipientFacing, isReconcilable, isSlotAvailable, isValidEmail, issueMembershipCommercialOffer, joinConfig, joinConfigTiers, leaderCrmConfig, listStripeObjects, listUnsubscribeHeader, loadLatestAdmissionRevision, loadOfferableTiers, loadTiers, materializeAdmissionGrants, meetingCreateRow, meetingRescheduleUpdate, memberApplication, memberContentDigest, memberContentDocument, memberFeatureAccess, memberPageAllowed, memberPortalEntities, memberSession, memberSystemAvailability, memberSystemRollbackPlan, membershipAuthorityEntities, membershipAuthorityRules, membershipCheckoutBindingId, membershipDiscountCouponId, membershipDiscountPolicyVersion, membershipOfferEntities, membershipOfferIdForRequest, membershipOfferRules, membershipOfferingVersion, membershipPageDocument, membershipTierPresentationFromMarkdown, nameKey, namedSeatOfferDigest, networkCommercialSourceKey, networkMembershipId, networkSourceTag, normalizeAdmissionEmail, normalizeChapterEmail, normalizeNetworkCommercialStripeEvent, normalizeSharedRecord, normalizeWebhookEvent, offerableTiers, pairingCommand, paymentsReady, personInputFromApp, planDelivery, planMemberSystemEventReplay, planMemberSystemMigration, planPrivateRoleMigration, previewMembershipCommercialOffer, projectApplicant, projectBuilderLibraryDelivery, projectMemberContent, projectMemberSelf, projectNetworkCommercialEvents, projectSharedRecord, promoteBuilderLibraryResource, publicGiftOffers, readMembershipAccess, readMembershipChapterEffect, readNamedSeatAccess, readNamedSeatInvitation, readNamedSeatOffer, reconcileCommercialParitySnapshot, reconcileLifecycleDelivery, reconcileMeetings, reconcileMembershipBilling, reconcileMembershipRenewal, reconcileStripeSnapshot, refundNetworkMembership, refundedPatch, render, renderHtmlBody, renderSignupControlThemeHead, renderSummary, renderTemplateBody, renewalPatch, requestMembershipAccess, requestMembershipApproval, requestMembershipCancellation, requestMembershipChapterEffect, requestMembershipCheckoutBinding, requestMembershipCommercialOffer, requestMembershipOfferPreview, requestMembershipPayment, requestMembershipRefund, requestMembershipRenewal, requestMembershipRestart, requestNamedSeatAcceptance, requestNamedSeatAccess, requestNamedSeatApproval, requestNamedSeatCheckout, requestNamedSeatDecline, requestNamedSeatInvitation, requestNamedSeatOffer, requestNamedSeatOperatorRefund, requestNamedSeatPayment, requestNamedSeatRefund, requestNamedSeatRegift, requestNamedSeatReservation, resolveApplication, resolveAuth, resolveBuilderLibrary, resolveChapterCopy, resolveJoinContinuation, resolveLeaderFormation, resolveMemberContent, resolveMemberPortal, resolveNetworkCommercialReadModel, resolveNetworkPersonRegistry, resolvePipeline, resolveScheduling, resolveSignupControl, resolveTiers, roleFromClaim, seatPurchaseDeadline, sendTemplated, sharedPersonInput, sharedRecordFromCrm, shortName, signupControlDigest, slotWindow, stageIndex, stripeCall, subAnnualCents, submitApplication, subscriptionIdempotencyKey, syncApplicationToCrm, textToHtml, tierIsFree, tierPayable, updateClerkUserMetadata, updateClerkUserMetadataByEmail, validateAdmissionGrantDocument, validateBuilderLibraryDocument, validateEmailReadiness, validateGiftOfferCatalog, validateMemberContentDocument, validateMemberSystemAuthority, validateMembershipPageDocument, validateProfilePatch, validateScheduling, validateSignupControlDocument, verifyIssuedMembershipOffer, verifyMembershipAccessReceipt, verifyMembershipCheckoutBinding, verifyMembershipPaymentReceipt, webhookMutationId };
|