@odla-ai/chapter 0.34.0 → 0.36.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 +83 -2
- package/dist/{chunk-UJIVBGL5.js → chunk-I45VYBUV.js} +441 -239
- package/dist/chunk-I45VYBUV.js.map +1 -0
- package/dist/{chunk-JAWTIROV.js → chunk-IAWBE5PX.js} +55 -1
- package/dist/chunk-IAWBE5PX.js.map +1 -0
- package/dist/{chunk-TXE5ZDI4.js → chunk-LWM32REV.js} +166 -59
- package/dist/chunk-LWM32REV.js.map +1 -0
- package/dist/{copy-context-c1tqPXOR.d.ts → copy-context-0k0-yWHL.d.ts} +6 -2
- package/dist/index.cjs +967 -296
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +253 -3
- package/dist/index.d.ts +253 -3
- package/dist/index.js +967 -296
- package/dist/index.js.map +1 -1
- package/dist/ui/admin/index.d.ts +10 -3
- package/dist/ui/admin/index.js +6 -2
- package/dist/ui/index.d.ts +3 -3
- package/dist/ui/index.js +11 -3
- package/dist/ui/member/index.d.ts +86 -7
- package/dist/ui/member/index.js +6 -2
- package/dist/worker/index.cjs +1957 -722
- package/dist/worker/index.cjs.map +1 -1
- package/dist/worker/index.d.cts +200 -3
- package/dist/worker/index.d.ts +200 -3
- package/dist/worker/index.js +1968 -733
- package/dist/worker/index.js.map +1 -1
- package/package.json +2 -1
- package/dist/chunk-JAWTIROV.js.map +0 -1
- package/dist/chunk-TXE5ZDI4.js.map +0 -1
- package/dist/chunk-UJIVBGL5.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -133,18 +133,21 @@ interface ChapterCopy {
|
|
|
133
133
|
*/
|
|
134
134
|
payment: TextFields<"setupFailed" | "preparing" | "pending" | "processing" | "payAndContinue" | "incomplete" | "consent">;
|
|
135
135
|
done: TextFields<"label" | "calendarInvite" | "memberArea">;
|
|
136
|
+
accepted: TextFields<"label" | "body">;
|
|
137
|
+
gift: TextFields<"chooseSelf" | "optionsLabel" | "label" | "body" | "save" | "rotate" | "rotateFailed">;
|
|
136
138
|
};
|
|
137
139
|
members: {
|
|
138
140
|
loadFailed: string;
|
|
139
141
|
account: TextFields<"signOut" | "adminConsole">;
|
|
140
142
|
provisional: TextFields<"cardLabel" | "applicationNeeded" | "applicationNeededBody" | "apply" | "refunded" | "refundedBody" | "active" | "renews" | "introductionCall" | "calendarInvite" | "joinCall" | "bookCall" | "bookCallBody" | "chooseTime">;
|
|
141
143
|
full: TextFields<"welcome">;
|
|
144
|
+
gifts: TextFields<"title" | "body" | "noneAvailable" | "paid" | "saveCode" | "purchases" | "noPurchases" | "pending" | "redeemed" | "expired" | "revoked" | "rotate" | "rotated" | "rotateFailed" | "redeemTitle" | "code" | "redeem" | "redeemFailed">;
|
|
142
145
|
reschedule: TextFields<"changeTime" | "unavailable" | "loadFailed" | "slotGone" | "loading" | "noTimes" | "rescheduling" | "keepTime">;
|
|
143
146
|
};
|
|
144
147
|
admin: {
|
|
145
148
|
auth: TextFields<"checking" | "notAuthorized" | "accountNotAuthorized" | "thisAccount" | "signOut" | "loading" | "signInNotConfigured" | "missingPublishableKey" | "noWorkspaces" | "signInTagline">;
|
|
146
149
|
shell: TextFields<"adminRole" | "adminConsole" | "adminName" | "navigationLabel">;
|
|
147
|
-
workspaces: TextFields<"dashboard" | "overview" | "billing" | "people" | "network" | "portfolio" | "settings" | "calendar" | "email" | "chapters" | "formations" | "dealFlow" | "dashboardViewsLabel" | "settingsViewsLabel" | "collectionsLabel" | "portfolioViewsLabel">;
|
|
150
|
+
workspaces: TextFields<"dashboard" | "overview" | "billing" | "people" | "admission" | "network" | "portfolio" | "settings" | "calendar" | "email" | "chapters" | "formations" | "dealFlow" | "dashboardViewsLabel" | "settingsViewsLabel" | "collectionsLabel" | "portfolioViewsLabel">;
|
|
148
151
|
dashboard: TextFields<"loading" | "loadFailed" | "upcomingCalls" | "callsNeedAttention" | "noUpcomingCalls" | "drift" | "open" | "meet" | "applications" | "newMembers" | "newMembersUnavailable" | "revenueAdded" | "revenue" | "revenueUnavailable" | "pipeline" | "pipelineLabel" | "thisWeek" | "noChange" | "activeMemberships" | "annualRunRate" | "testMode">;
|
|
149
152
|
billing: TextFields<"loading" | "loadFailed" | "notConfigured" | "active" | "annualized" | "renewingSoon" | "pastDue" | "subscriptions" | "testMode" | "truncated" | "name" | "email" | "application" | "subscription" | "cancelling" | "amount" | "renews">;
|
|
150
153
|
availability: TextFields<"loading" | "loadFailed" | "saved" | "title" | "days" | "startHour" | "endHour" | "slotMinutes" | "minNoticeHours" | "windowDays" | "timezone" | "summaryTemplate" | "save"> & {
|
|
@@ -152,6 +155,7 @@ interface ChapterCopy {
|
|
|
152
155
|
};
|
|
153
156
|
email: TextFields<"loading" | "loadFailed" | "saved" | "sent" | "testFailed" | "delivery" | "notificationAddress" | "replyTo" | "debugInbox" | "debugInboxHint" | "sendTest" | "enabled" | "subject" | "body" | "save" | "sendLog" | "sentColumn" | "templateColumn" | "statusColumn" | "toColumn" | "failed" | "redirected" | "delivered">;
|
|
154
157
|
meetings: TextFields<"loading" | "loadFailed" | "cancelConfirm" | "newStartPrompt" | "parseFailed" | "agenda" | "empty" | "unknown" | "drift" | "meet" | "reschedule" | "cancel">;
|
|
158
|
+
admission: TextFields<"title" | "description" | "email" | "decision" | "expires" | "note" | "waive" | "require" | "add" | "ledger" | "loading" | "consumed" | "revoked" | "expired" | "active" | "local" | "parent" | "revoke">;
|
|
155
159
|
network: AdminNetworkCopy;
|
|
156
160
|
records: TextFields<"workflowMissing" | "comms" | "commsHistory" | "scheduling" | "billing" | "notes" | "access" | "sharing" | "lifecycle" | "role" | "superAdminHint" | "noAccount" | "approve" | "refund" | "approved" | "refunded" | "roleSet" | "messageSent" | "messageNotSent" | "loadingTemplates" | "template" | "chooseTemplate" | "sending" | "send" | "noMessages" | "message" | "newStartPrompt" | "parseFailed" | "cancelConfirm" | "callCancelled" | "callRescheduled" | "noApplication" | "loadingMeetings" | "noMeetings" | "joinMeeting" | "openCalendar" | "reschedule" | "cancel">;
|
|
157
161
|
};
|
|
@@ -341,6 +345,13 @@ interface ChapterDb {
|
|
|
341
345
|
value: string | number | boolean;
|
|
342
346
|
}>[], opts?: {
|
|
343
347
|
mutationId?: string;
|
|
348
|
+
guards?: Array<{
|
|
349
|
+
ns: string;
|
|
350
|
+
id: string;
|
|
351
|
+
exists: boolean;
|
|
352
|
+
equals?: Record<string, unknown>;
|
|
353
|
+
absent?: string[];
|
|
354
|
+
}>;
|
|
344
355
|
}): Promise<{
|
|
345
356
|
txId: number;
|
|
346
357
|
duplicate: boolean;
|
|
@@ -349,7 +360,7 @@ interface ChapterDb {
|
|
|
349
360
|
get(name: string): Promise<string>;
|
|
350
361
|
};
|
|
351
362
|
}
|
|
352
|
-
/**
|
|
363
|
+
/** Scalar kinds accepted by the Chapter schema adapter. */
|
|
353
364
|
type AttrType = "string" | "number" | "boolean" | "json";
|
|
354
365
|
/** One odla-db attribute: its type and index/uniqueness/optionality flags. */
|
|
355
366
|
interface Attr {
|
|
@@ -1064,6 +1075,14 @@ interface StripeEvent {
|
|
|
1064
1075
|
/** A normalized, provider-agnostic webhook event. `kind` drives the db write;
|
|
1065
1076
|
* the application is resolved from `applicationId` (metadata) or `customerId`. */
|
|
1066
1077
|
type WebhookEvent = {
|
|
1078
|
+
kind: "gift_paid";
|
|
1079
|
+
giftIntentId: string;
|
|
1080
|
+
providerObjectId: string;
|
|
1081
|
+
} | {
|
|
1082
|
+
kind: "gift_revoked";
|
|
1083
|
+
giftIntentId: string;
|
|
1084
|
+
reason: "refunded" | "canceled";
|
|
1085
|
+
} | {
|
|
1067
1086
|
kind: "first_payment";
|
|
1068
1087
|
applicationId?: string;
|
|
1069
1088
|
customerId?: string;
|
|
@@ -1117,6 +1136,105 @@ declare function canceledPatch(): {
|
|
|
1117
1136
|
canceled: true;
|
|
1118
1137
|
};
|
|
1119
1138
|
|
|
1139
|
+
/** Current wire version for parent-authored admission decisions. */
|
|
1140
|
+
declare const ADMISSION_GRANTS_SCHEMA_VERSION: 1;
|
|
1141
|
+
/** Dedicated signed Parent → Chapter delivery endpoint. */
|
|
1142
|
+
declare const ADMISSION_GRANTS_PATH: "/api/admission-grants";
|
|
1143
|
+
/** Whether an exact email can skip or must retain the Chapter interview. */
|
|
1144
|
+
type AdmissionDecision = "waive_interview" | "require_interview";
|
|
1145
|
+
/** One bounded admission decision. Email is PII and never enters public config. */
|
|
1146
|
+
interface AdmissionGrantInput {
|
|
1147
|
+
id: string;
|
|
1148
|
+
email: string;
|
|
1149
|
+
decision: AdmissionDecision;
|
|
1150
|
+
note?: string;
|
|
1151
|
+
expiresAt?: number;
|
|
1152
|
+
}
|
|
1153
|
+
/** Complete desired Parent state for one Chapter and environment. */
|
|
1154
|
+
interface AdmissionGrantDocument {
|
|
1155
|
+
schemaVersion: typeof ADMISSION_GRANTS_SCHEMA_VERSION;
|
|
1156
|
+
revision: number;
|
|
1157
|
+
generatedAt: number;
|
|
1158
|
+
source: {
|
|
1159
|
+
appId: string;
|
|
1160
|
+
actor: string;
|
|
1161
|
+
};
|
|
1162
|
+
target: {
|
|
1163
|
+
chapterId: string;
|
|
1164
|
+
environment: string;
|
|
1165
|
+
};
|
|
1166
|
+
grants: readonly AdmissionGrantInput[];
|
|
1167
|
+
}
|
|
1168
|
+
/** Canonical desired-state document paired with its integrity digest. */
|
|
1169
|
+
interface AdmissionGrantEnvelope {
|
|
1170
|
+
digest: string;
|
|
1171
|
+
document: AdmissionGrantDocument;
|
|
1172
|
+
}
|
|
1173
|
+
/** Chapter acknowledgement for an accepted or idempotently replayed revision. */
|
|
1174
|
+
interface AdmissionGrantReceipt {
|
|
1175
|
+
ok: true;
|
|
1176
|
+
target: {
|
|
1177
|
+
chapterId: string;
|
|
1178
|
+
environment: string;
|
|
1179
|
+
};
|
|
1180
|
+
revision: number;
|
|
1181
|
+
digest: string;
|
|
1182
|
+
status: "accepted" | "replayed";
|
|
1183
|
+
acknowledgedAt: number;
|
|
1184
|
+
}
|
|
1185
|
+
/** Stable machine-readable rejection reasons returned by a Chapter receiver. */
|
|
1186
|
+
type AdmissionGrantRejection = "invalid_document" | "invalid_digest" | "wrong_source" | "wrong_target" | "wrong_environment" | "stale_revision" | "conflicting_revision" | "materialization_failed";
|
|
1187
|
+
|
|
1188
|
+
/** Exact email natural key: trim and lowercase, with no provider alias rules. */
|
|
1189
|
+
declare function normalizeAdmissionEmail(email: string): string;
|
|
1190
|
+
/** Validated normalized admission document or all contract errors. */
|
|
1191
|
+
type AdmissionGrantValidation = {
|
|
1192
|
+
ok: true;
|
|
1193
|
+
value: AdmissionGrantDocument;
|
|
1194
|
+
} | {
|
|
1195
|
+
ok: false;
|
|
1196
|
+
errors: readonly string[];
|
|
1197
|
+
};
|
|
1198
|
+
/** Validate and normalize a complete Parent admission document. */
|
|
1199
|
+
declare function validateAdmissionGrantDocument(input: unknown): AdmissionGrantValidation;
|
|
1200
|
+
/** Pair a validated desired-state document with its canonical digest. */
|
|
1201
|
+
declare function createAdmissionGrantEnvelope(document: AdmissionGrantDocument): Promise<AdmissionGrantEnvelope>;
|
|
1202
|
+
/** Materialized local or Parent admission decision stored by a Chapter. */
|
|
1203
|
+
interface AdmissionGrantRow {
|
|
1204
|
+
id: string;
|
|
1205
|
+
sourceGrantId: string;
|
|
1206
|
+
sourceScope: "local" | "parent";
|
|
1207
|
+
sourceId: string;
|
|
1208
|
+
targetId: string;
|
|
1209
|
+
email: string;
|
|
1210
|
+
emailNormalized: string;
|
|
1211
|
+
decision: AdmissionDecision;
|
|
1212
|
+
active: boolean;
|
|
1213
|
+
createdAt: number;
|
|
1214
|
+
note?: string;
|
|
1215
|
+
expiresAt?: number;
|
|
1216
|
+
revokedAt?: number;
|
|
1217
|
+
consumedAt?: number;
|
|
1218
|
+
consumedApplicationId?: string;
|
|
1219
|
+
}
|
|
1220
|
+
/** Resolve the effective current decision. Local rows always outrank Parent rows. */
|
|
1221
|
+
declare function findAdmissionGrant(db: ChapterDb, targetId: string, email: string, now: number): Promise<AdmissionGrantRow | null>;
|
|
1222
|
+
/** Stored receipt for one signed Parent admission revision. */
|
|
1223
|
+
interface AdmissionGrantRevisionRow {
|
|
1224
|
+
id: string;
|
|
1225
|
+
sourceId: string;
|
|
1226
|
+
targetId: string;
|
|
1227
|
+
environment: string;
|
|
1228
|
+
revision: number;
|
|
1229
|
+
digest: string;
|
|
1230
|
+
active: boolean;
|
|
1231
|
+
receivedAt: number;
|
|
1232
|
+
}
|
|
1233
|
+
/** Read the newest received revision without issuing an ordered query over empty history. */
|
|
1234
|
+
declare function loadLatestAdmissionRevision(db: ChapterDb, sourceId: string, targetId: string, environment: string): Promise<AdmissionGrantRevisionRow | null>;
|
|
1235
|
+
/** Replace only Parent-authored rows; local Chapter decisions remain untouched. */
|
|
1236
|
+
declare function materializeAdmissionGrants(db: ChapterDb, envelope: AdmissionGrantEnvelope, previous: AdmissionGrantRevisionRow | null, receivedAt: number): Promise<void>;
|
|
1237
|
+
|
|
1120
1238
|
/** Apply defaults + validate the application config. Throws at import on bad shape. */
|
|
1121
1239
|
declare function resolveApplication(a: ChapterApplication | undefined): ResolvedApplication;
|
|
1122
1240
|
/** Whether a string looks like an email address (see {@link EMAIL_RE}). Exported
|
|
@@ -1169,6 +1287,10 @@ declare function submitApplication(db: ChapterDb, chapter: Chapter, fields: Reco
|
|
|
1169
1287
|
/** Tier ids this chapter offers. A posted `tierId` outside it is refused;
|
|
1170
1288
|
* omit to accept any (pre-tier callers). */
|
|
1171
1289
|
tierIds?: readonly string[];
|
|
1290
|
+
/** Effective one-use waiver selected by the server, never by the client. */
|
|
1291
|
+
admissionGrant?: AdmissionGrantRow;
|
|
1292
|
+
/** Server-validated gift offer selected from active signed control. */
|
|
1293
|
+
giftOfferId?: string;
|
|
1172
1294
|
}): Promise<SubmitResult>;
|
|
1173
1295
|
/** The `groups`-row fields the join config exposes. */
|
|
1174
1296
|
interface JoinConfigGroup {
|
|
@@ -1196,6 +1318,80 @@ interface JoinConfigGroup {
|
|
|
1196
1318
|
*/
|
|
1197
1319
|
declare function joinConfig(group: JoinConfigGroup, paymentsReady: boolean, tiers?: readonly JoinConfigTier[], conditions?: Readonly<Record<string, FieldConditions>>): Record<string, unknown>;
|
|
1198
1320
|
|
|
1321
|
+
/** Canonical next action or browser-visible step after application submission. */
|
|
1322
|
+
type JoinContinuation = "payment" | "paymentPending" | "booking" | "approve" | "accepted";
|
|
1323
|
+
/** One server-side decision for submit, resume, and payment completion. */
|
|
1324
|
+
declare function resolveJoinContinuation(input: {
|
|
1325
|
+
status: string;
|
|
1326
|
+
initialStatus: string;
|
|
1327
|
+
pipeline: ResolvedPipeline;
|
|
1328
|
+
payable: boolean;
|
|
1329
|
+
subscriptionStarted: boolean;
|
|
1330
|
+
interviewWaived: boolean;
|
|
1331
|
+
}): JoinContinuation | null;
|
|
1332
|
+
|
|
1333
|
+
/** Current nested gift-catalog version inside signup-control. */
|
|
1334
|
+
declare const GIFT_OFFER_CATALOG_VERSION: 1;
|
|
1335
|
+
/** Maximum signed gift SKUs accepted in one catalog revision. */
|
|
1336
|
+
declare const MAX_GIFT_OFFERS = 20;
|
|
1337
|
+
/** Membership tier or standalone entitlement fulfilled by redemption. */
|
|
1338
|
+
type GiftOfferTarget = {
|
|
1339
|
+
type: "tier";
|
|
1340
|
+
tierId: string;
|
|
1341
|
+
} | {
|
|
1342
|
+
type: "entitlement";
|
|
1343
|
+
entitlementKey: string;
|
|
1344
|
+
};
|
|
1345
|
+
/** Server-authored gift SKU; provider identifiers never reach public config. */
|
|
1346
|
+
interface GiftOffer {
|
|
1347
|
+
id: string;
|
|
1348
|
+
target: GiftOfferTarget;
|
|
1349
|
+
billingMode: "one_time" | "subscription";
|
|
1350
|
+
stripePriceId: string;
|
|
1351
|
+
priceCents: number;
|
|
1352
|
+
currency: string;
|
|
1353
|
+
redemptionLifetimeHours: number;
|
|
1354
|
+
activeFrom?: number;
|
|
1355
|
+
activeUntil?: number;
|
|
1356
|
+
title: string;
|
|
1357
|
+
description: string;
|
|
1358
|
+
ctaLabel: string;
|
|
1359
|
+
}
|
|
1360
|
+
/** Versioned bounded collection delegated through signed signup control. */
|
|
1361
|
+
interface GiftOfferCatalog {
|
|
1362
|
+
schemaVersion: typeof GIFT_OFFER_CATALOG_VERSION;
|
|
1363
|
+
offers: readonly GiftOffer[];
|
|
1364
|
+
}
|
|
1365
|
+
/** Provider-free gift offer shape rendered by Chapter and exact CMS previews. */
|
|
1366
|
+
type PublicGiftOffer = Omit<GiftOffer, "stripePriceId" | "target">;
|
|
1367
|
+
/** Result of validating and normalizing an untrusted gift catalog. */
|
|
1368
|
+
type GiftOfferValidation = {
|
|
1369
|
+
ok: true;
|
|
1370
|
+
value: GiftOfferCatalog;
|
|
1371
|
+
} | {
|
|
1372
|
+
ok: false;
|
|
1373
|
+
errors: readonly string[];
|
|
1374
|
+
};
|
|
1375
|
+
/** Validate and normalize gift offers against the same document's tier ids. */
|
|
1376
|
+
declare function validateGiftOfferCatalog(input: unknown, tierIds: ReadonlySet<string>): GiftOfferValidation;
|
|
1377
|
+
/** Whether an offer is active at an exact server time. */
|
|
1378
|
+
declare const giftOfferActive: (offer: GiftOffer, now: number) => boolean;
|
|
1379
|
+
/** Public provider-free active catalog projection. */
|
|
1380
|
+
declare function publicGiftOffers(catalog: GiftOfferCatalog | undefined, now: number): PublicGiftOffer[];
|
|
1381
|
+
/** Resolve one currently active server-authoritative offer. */
|
|
1382
|
+
declare function findGiftOffer(catalog: GiftOfferCatalog | undefined, offerId: string, now: number): GiftOffer | null;
|
|
1383
|
+
|
|
1384
|
+
/** Safe buyer-facing claim state; hashes and beneficiary identity are deliberately absent. */
|
|
1385
|
+
interface BuyerGiftClaim {
|
|
1386
|
+
id: string;
|
|
1387
|
+
offerId: string;
|
|
1388
|
+
status: "pending" | "redeemed" | "expired" | "revoked";
|
|
1389
|
+
createdAt: number;
|
|
1390
|
+
codeExpiresAt: number;
|
|
1391
|
+
redeemedAt?: number;
|
|
1392
|
+
revokedAt?: number;
|
|
1393
|
+
}
|
|
1394
|
+
|
|
1199
1395
|
/** The contact data the hub shares for a prospect. `hubRecordId` is the stable
|
|
1200
1396
|
* idempotency key (the hub's crm_record id). */
|
|
1201
1397
|
interface SharedPerson {
|
|
@@ -2026,6 +2222,7 @@ interface SignupControlDocument {
|
|
|
2026
2222
|
policy?: SignupControlPolicy;
|
|
2027
2223
|
scheduling?: ChapterScheduling;
|
|
2028
2224
|
theme?: SignupControlTheme;
|
|
2225
|
+
giftOffers?: GiftOfferCatalog;
|
|
2029
2226
|
}
|
|
2030
2227
|
/** Digest travels beside the document so the exact desired state is attestable. */
|
|
2031
2228
|
interface SignupControlEnvelope {
|
|
@@ -2068,6 +2265,59 @@ declare function createSignupControlEnvelope(document: SignupControlDocument): P
|
|
|
2068
2265
|
/** Validate and normalize one complete desired signup state. */
|
|
2069
2266
|
declare function validateSignupControlDocument(input: unknown): SignupControlValidation;
|
|
2070
2267
|
|
|
2268
|
+
/** Stable marker a static document can place where managed signup tokens belong. */
|
|
2269
|
+
declare const SIGNUP_CONTROL_THEME_MARKER: "<!--odla:signup-control-theme-->";
|
|
2270
|
+
/** Stable id shared by the server renderer and browser hydration helper. */
|
|
2271
|
+
declare const SIGNUP_CONTROL_THEME_STYLE_ID: "odla-signup-control-theme";
|
|
2272
|
+
/** The active revision shape exposed by `GET /api/join-config`. */
|
|
2273
|
+
interface SignupControlThemeRevision {
|
|
2274
|
+
revision: number;
|
|
2275
|
+
digest: string;
|
|
2276
|
+
theme?: SignupControlTheme;
|
|
2277
|
+
}
|
|
2278
|
+
/** Identity shared by initial HTML, response caching, and client hydration. */
|
|
2279
|
+
interface SignupControlThemeMetadata {
|
|
2280
|
+
source: "active" | "bootstrap";
|
|
2281
|
+
revision: number | null;
|
|
2282
|
+
digest: string | null;
|
|
2283
|
+
/** Include this value in any host-owned cache key for transformed HTML. */
|
|
2284
|
+
cacheKey: string;
|
|
2285
|
+
}
|
|
2286
|
+
/** A validated style block ready to place in an HTML head. */
|
|
2287
|
+
interface SignupControlThemeHead {
|
|
2288
|
+
css: string;
|
|
2289
|
+
head: string;
|
|
2290
|
+
metadata: SignupControlThemeMetadata;
|
|
2291
|
+
}
|
|
2292
|
+
/** Minimal DOM surface required by {@link hydrateSignupControlTheme}. */
|
|
2293
|
+
interface SignupControlThemeStyleTarget {
|
|
2294
|
+
textContent: string | null;
|
|
2295
|
+
getAttribute(name: string): string | null;
|
|
2296
|
+
setAttribute(name: string, value: string): void;
|
|
2297
|
+
removeAttribute(name: string): void;
|
|
2298
|
+
}
|
|
2299
|
+
/** Host-owned fallback inputs shared by server rendering and hydration. */
|
|
2300
|
+
interface SignupControlThemeOptions {
|
|
2301
|
+
/** Local site-owned tokens used only when no active managed revision exists. */
|
|
2302
|
+
bootstrapTokens?: Readonly<Record<string, string | number>>;
|
|
2303
|
+
}
|
|
2304
|
+
/**
|
|
2305
|
+
* Render validated signup-control tokens for the initial HTML head. Passing
|
|
2306
|
+
* `null` emits the deterministic local bootstrap state; it never performs I/O.
|
|
2307
|
+
*/
|
|
2308
|
+
declare function renderSignupControlThemeHead(revision: SignupControlThemeRevision | null, options?: SignupControlThemeOptions): SignupControlThemeHead;
|
|
2309
|
+
/**
|
|
2310
|
+
* Replace the stable marker (preferred), an earlier Chapter style block, or the
|
|
2311
|
+
* closing head tag. The returned HTML always contains exactly one managed block.
|
|
2312
|
+
*/
|
|
2313
|
+
declare function injectSignupControlThemeHead(html: string, rendered: SignupControlThemeHead, marker?: string): string;
|
|
2314
|
+
/**
|
|
2315
|
+
* Apply a newly fetched revision to the server-rendered style element. When the
|
|
2316
|
+
* revision and digest already match, this performs no writes and returns false,
|
|
2317
|
+
* so hydration cannot cause a visual token change.
|
|
2318
|
+
*/
|
|
2319
|
+
declare function hydrateSignupControlTheme(target: SignupControlThemeStyleTarget, revision: SignupControlThemeRevision | null, options?: SignupControlThemeOptions): boolean;
|
|
2320
|
+
|
|
2071
2321
|
/** A presentation overlay parsed from the constrained membership Markdown convention. */
|
|
2072
2322
|
type MembershipTierMarkdownResult = {
|
|
2073
2323
|
ok: true;
|
|
@@ -2101,4 +2351,4 @@ interface ChapterPromotionInput {
|
|
|
2101
2351
|
/** Export the provider-independent pieces of one exact active signup revision. */
|
|
2102
2352
|
declare function exportChapterPromotion(input: ChapterPromotionInput): Promise<PromotionAdapterResult>;
|
|
2103
2353
|
|
|
2104
|
-
export { type AccountModel, type AdminNotificationTrigger, type Applicant, type ApplicationBookingPatch, type ApplicationRecord, type ApplicationSummary, type Attr, type AttrType, CHAPTER_PROMOTION_ADAPTER, type Chapter, type ChapterApplication, type ChapterAuth, type ChapterBrand, type ChapterConfig, type ChapterCopy, type ChapterCopyInput, type ChapterDb, type ChapterEmails, type ChapterIntegrationDescriptor, type ChapterIntegrationOptions, 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 ClerkUserInput, type ClerkUserRecord, type CompiledChapterBrandTokens, DEFAULT_CHAPTER_COPY, DEFAULT_SHARE_FIELDS, type DashboardMetricData, type DashboardMetricSeries, type DbOp, type DbRules, type DbSchema, type DeliveryDecision, type EmailGroup, type EmailTemplate, type EmailTemplateRow, type Entity, type ExistingMeeting, type GuardResult, type IntegrationDescriptor, type IntegrationProvision, type IntegrationSecret, type IntegrationSetting, type IntegrationSync, type JoinConfigGroup, type JoinConfigTier, type LeaderCrmOptions, type LeaderFormationConfig, type LiveEvent, MEMBERSHIP_PAGE_RENDERER, type MailSender, type MeetingForReconcile, type MeetingRecord, type MeetingReschedulePatch, type MemberApplication, type MemberSession, type MembershipPageDocument, type MembershipPageValidationOptions, type MembershipPageValidationResult, type MembershipTierAuthority, type MembershipTierCallout, type MembershipTierCapacity, type MembershipTierMarkdownResult, type MembershipTierPresentation, type MembershipTierVariant, type NetworkRecord, type NetworkRecordNote, type NetworkRecordPage, type NetworkRollup, type NetworkRollupTarget, type NetworkSharedNote, type NetworkSnapshot, type NewMeetingRow, type NotifyDeps, type NotifyInput, type NotifyResult, type PaymentsGroup, type ProjectionDeps, type ReconcileDecision, type ResolvedApplication, type ResolvedAuth, type ResolvedLeaderFormation, 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, 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 SignupControlTheme, type SignupControlTier, type SignupControlValidation, type StripeEvent, type StripeResult, type SubmitResult, type TierGroup, type TierGroupRow, type WebhookEvent, applicantProfile, applicationBookingUpdate, applicationSummary, applyMembershipTierMarkdown, backfillCrm, bookingDecision, brandTokens, bucketSeries, buildGroupSeed, buildTierSeeds, canApprove, canBook, canChangeRole, canTransition, canceledPatch, canonicalSignupControl, chapterBrandFromTokens, chapterDb, clampArray, clerkGetUser, clerkGetUserByEmail, clerkIntegration, clerkInviteRequest, clerkListUsers, clerkSetRole, clerkUserRequest, createChapterIntegration, createClerkInvitation, createClerkUser, createSignupControlEnvelope, dashboardMetricData, defaultCrm, defineChapter, emailGroupFrom, endForSlot, exportChapterPromotion, findApplicationRef, findTier, firstPaymentPatch, formatChapterCopy, formationFields, getVaultSecret, hasDisclaimerAck, introIdempotencyKey, isAdminRole, isAlreadySent, isReconcilable, isSlotAvailable, isValidEmail, joinConfig, joinConfigTiers, leaderCrmConfig, loadOfferableTiers, loadTiers, meetingCreateRow, meetingRescheduleUpdate, memberApplication, memberSession, membershipPageDocument, membershipTierPresentationFromMarkdown, networkSourceTag, normalizeSharedRecord, normalizeWebhookEvent, offerableTiers, paymentsReady, personInputFromApp, planDelivery, projectApplicant, projectSharedRecord, reconcileMeetings, refundedPatch, render, renderSummary, renderTemplateBody, renewalPatch, resolveApplication, resolveAuth, resolveChapterCopy, resolveLeaderFormation, resolvePipeline, resolveScheduling, resolveSignupControl, resolveTiers, roleFromClaim, sendTemplated, sharedPersonInput, sharedRecordFromCrm, signupControlDigest, slotWindow, stageIndex, stripeCall, subAnnualCents, submitApplication, subscriptionIdempotencyKey, syncApplicationToCrm, tierIsFree, tierPayable, updateClerkUserMetadata, updateClerkUserMetadataByEmail, validateMembershipPageDocument, validateScheduling, validateSignupControlDocument, webhookMutationId };
|
|
2354
|
+
export { 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, type BuyerGiftClaim, CHAPTER_PROMOTION_ADAPTER, type Chapter, type ChapterApplication, type ChapterAuth, type ChapterBrand, type ChapterConfig, type ChapterCopy, type ChapterCopyInput, type ChapterDb, type ChapterEmails, type ChapterIntegrationDescriptor, type ChapterIntegrationOptions, 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 ClerkUserInput, type ClerkUserRecord, type CompiledChapterBrandTokens, DEFAULT_CHAPTER_COPY, DEFAULT_SHARE_FIELDS, type DashboardMetricData, type DashboardMetricSeries, type DbOp, type DbRules, type DbSchema, type DeliveryDecision, type EmailGroup, type EmailTemplate, type EmailTemplateRow, type Entity, type ExistingMeeting, 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 JoinConfigGroup, type JoinConfigTier, type JoinContinuation, type LeaderCrmOptions, type LeaderFormationConfig, type LiveEvent, MAX_GIFT_OFFERS, MEMBERSHIP_PAGE_RENDERER, type MailSender, type MeetingForReconcile, type MeetingRecord, type MeetingReschedulePatch, type MemberApplication, type MemberSession, type MembershipPageDocument, type MembershipPageValidationOptions, type MembershipPageValidationResult, type MembershipTierAuthority, type MembershipTierCallout, type MembershipTierCapacity, type MembershipTierMarkdownResult, type MembershipTierPresentation, type MembershipTierVariant, type NetworkRecord, type NetworkRecordNote, type NetworkRecordPage, type NetworkRollup, type NetworkRollupTarget, type NetworkSharedNote, type NetworkSnapshot, type NewMeetingRow, type NotifyDeps, type NotifyInput, type NotifyResult, type PaymentsGroup, type ProjectionDeps, type PublicGiftOffer, type ReconcileDecision, type ResolvedApplication, type ResolvedAuth, type ResolvedLeaderFormation, 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, 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 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, applicantProfile, applicationBookingUpdate, applicationSummary, applyMembershipTierMarkdown, backfillCrm, bookingDecision, brandTokens, bucketSeries, buildGroupSeed, buildTierSeeds, canApprove, canBook, canChangeRole, canTransition, canceledPatch, canonicalSignupControl, chapterBrandFromTokens, chapterDb, clampArray, clerkGetUser, clerkGetUserByEmail, clerkIntegration, clerkInviteRequest, clerkListUsers, clerkSetRole, clerkUserRequest, createAdmissionGrantEnvelope, createChapterIntegration, createClerkInvitation, createClerkUser, createSignupControlEnvelope, dashboardMetricData, defaultCrm, defineChapter, emailGroupFrom, endForSlot, exportChapterPromotion, findAdmissionGrant, findApplicationRef, findGiftOffer, findTier, firstPaymentPatch, formatChapterCopy, formationFields, getVaultSecret, giftOfferActive, hasDisclaimerAck, hydrateSignupControlTheme, injectSignupControlThemeHead, introIdempotencyKey, isAdminRole, isAlreadySent, isReconcilable, isSlotAvailable, isValidEmail, joinConfig, joinConfigTiers, leaderCrmConfig, loadLatestAdmissionRevision, loadOfferableTiers, loadTiers, materializeAdmissionGrants, meetingCreateRow, meetingRescheduleUpdate, memberApplication, memberSession, membershipPageDocument, membershipTierPresentationFromMarkdown, networkSourceTag, normalizeAdmissionEmail, normalizeSharedRecord, normalizeWebhookEvent, offerableTiers, paymentsReady, personInputFromApp, planDelivery, projectApplicant, projectSharedRecord, publicGiftOffers, reconcileMeetings, refundedPatch, render, renderSignupControlThemeHead, renderSummary, renderTemplateBody, renewalPatch, resolveApplication, resolveAuth, resolveChapterCopy, resolveJoinContinuation, resolveLeaderFormation, resolvePipeline, resolveScheduling, resolveSignupControl, resolveTiers, roleFromClaim, sendTemplated, sharedPersonInput, sharedRecordFromCrm, signupControlDigest, slotWindow, stageIndex, stripeCall, subAnnualCents, submitApplication, subscriptionIdempotencyKey, syncApplicationToCrm, tierIsFree, tierPayable, updateClerkUserMetadata, updateClerkUserMetadataByEmail, validateAdmissionGrantDocument, validateGiftOfferCatalog, validateMembershipPageDocument, validateScheduling, validateSignupControlDocument, webhookMutationId };
|