@stewardhq/sdk 0.1.0-rc.0 → 0.2.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 +19 -30
- package/dist/_chunks/events.js +1 -1
- package/dist/_chunks/index.d.ts +38 -3629
- package/dist/_chunks/src.js +46 -154
- package/dist/_chunks/steward.d.ts +4 -2403
- package/dist/_chunks/steward.js +7 -25
- package/dist/contract.d.ts +2 -2
- package/dist/contract.js +2 -2
- package/dist/index.d.ts +3 -65
- package/dist/index.js +3 -266
- package/dist/server.d.ts +5 -5
- package/dist/server.js +12 -1
- package/dist/testing.d.ts +28 -31
- package/dist/testing.js +20 -141
- package/package.json +2 -2
- package/dist/_chunks/locale.js +0 -17
package/dist/_chunks/src.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as CodeSchema, B as IntervalSchema, C as BillingProfileSchema, F as EntitlementsSchema, M as DateTimeSchema, O as ActorRefSchema, R as ExternalRefSchema, S as BillingProfileKindSchema, T as SubscriptionStatusSchema, a as EVENT_TYPES, j as CurrencySchema, k as AmountMinorSchema, o as EventIdSchema,
|
|
1
|
+
import { A as CodeSchema, B as IntervalSchema, C as BillingProfileSchema, F as EntitlementsSchema, M as DateTimeSchema, O as ActorRefSchema, R as ExternalRefSchema, S as BillingProfileKindSchema, T as SubscriptionStatusSchema, a as EVENT_TYPES, j as CurrencySchema, k as AmountMinorSchema, o as EventIdSchema, v as AccountSchema, y as AccountStateSchema, z as IdSchema } from "./events.js";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
//#region ../contract/src/catalog.ts
|
|
4
4
|
const FeatureTypeSchema = z.enum([
|
|
@@ -228,117 +228,52 @@ function isReturnUrlAllowed(settings, returnUrl) {
|
|
|
228
228
|
//#endregion
|
|
229
229
|
//#region ../contract/src/checkout.ts
|
|
230
230
|
const ReturnUrlSchema = z.url({ protocol: /^https?$/ });
|
|
231
|
-
/**
|
|
231
|
+
/** Accepted document — content lives in the product, steward keeps only the trace. */
|
|
232
232
|
const ConsentSchema = z.object({
|
|
233
233
|
document: z.string().min(1).max(100),
|
|
234
234
|
version: z.string().min(1).max(100),
|
|
235
235
|
acceptedAt: DateTimeSchema,
|
|
236
|
-
/**
|
|
236
|
+
/** Document link. */
|
|
237
237
|
url: z.string().optional()
|
|
238
238
|
});
|
|
239
|
-
/**
|
|
239
|
+
/** Document the hosted page asks the customer to accept (the page records acceptance). */
|
|
240
240
|
const CheckoutConsentInputSchema = z.object({
|
|
241
241
|
document: z.string().min(1).max(100),
|
|
242
242
|
version: z.string().min(1).max(100),
|
|
243
|
-
|
|
244
|
-
url: z.url({ protocol: /^https?$/ }).max(2e3).optional(),
|
|
245
|
-
/** Yalnızca eski gövdede (ve orada zorunlu): ürün onayı kendisi aldı. */
|
|
246
|
-
acceptedAt: DateTimeSchema.optional()
|
|
243
|
+
url: z.url({ protocol: /^https?$/ }).max(2e3)
|
|
247
244
|
});
|
|
248
|
-
/** Hosted
|
|
245
|
+
/** Hosted page prefill (not profile/identity data; K21). */
|
|
249
246
|
const CheckoutPrefillSchema = z.object({
|
|
250
247
|
email: z.email().max(200).optional(),
|
|
251
248
|
name: z.string().trim().min(1).max(200).optional(),
|
|
252
249
|
kind: BillingProfileKindSchema.optional()
|
|
253
250
|
});
|
|
254
|
-
/**
|
|
251
|
+
/** Maximum number of documents the hosted page can ask the customer to accept. */
|
|
255
252
|
const MAX_CHECKOUT_CONSENT_DOCS = 20;
|
|
256
253
|
const CheckoutSessionCreateInputSchema = z.object({
|
|
257
254
|
planCode: CodeSchema,
|
|
258
255
|
interval: IntervalSchema,
|
|
259
|
-
/**
|
|
256
|
+
/** Defaults to the product setting `defaultCurrency`. */
|
|
260
257
|
currency: CurrencySchema.optional(),
|
|
261
|
-
/**
|
|
262
|
-
locale: z.
|
|
258
|
+
/** `tr` | `en`; defaults to the product setting `defaultLocale`. */
|
|
259
|
+
locale: z.enum(SETTINGS_LOCALES).optional(),
|
|
263
260
|
/**
|
|
264
|
-
*
|
|
265
|
-
* `{
|
|
266
|
-
*
|
|
267
|
-
*
|
|
268
|
-
*
|
|
261
|
+
* The outcome returns here. Placeholders (`{CHECKOUT_ID}`, `{STATUS}`, `{ACCOUNT_REF}`,
|
|
262
|
+
* `{LOCALE}`) are filled if present; query parameters are never appended. `STATUS` is
|
|
263
|
+
* success | failed | pending (pending: provider unreachable, the session stays open and the
|
|
264
|
+
* product shows "processing"). The origin must be allowed by product settings
|
|
265
|
+
* (`appUrl` + `extraReturnOrigins`).
|
|
269
266
|
*/
|
|
270
|
-
successUrl: ReturnUrlSchema
|
|
271
|
-
/** `
|
|
272
|
-
returnUrl: ReturnUrlSchema.optional(),
|
|
273
|
-
/** Yalnızca hosted: sayfadaki "Vazgeç" hedefi (yoksa ürün ayarı `appUrl`). Origin kuralı `successUrl`le aynı. */
|
|
267
|
+
successUrl: ReturnUrlSchema,
|
|
268
|
+
/** "Cancel" target on the page (defaults to product setting `appUrl`). Same origin rule as `successUrl`. */
|
|
274
269
|
cancelUrl: ReturnUrlSchema.optional(),
|
|
275
|
-
/**
|
|
270
|
+
/** Opens the account with this name if it does not exist; never renames an existing account. */
|
|
276
271
|
displayName: z.string().min(1).max(200).optional(),
|
|
277
|
-
/** Yalnızca hosted. */
|
|
278
272
|
prefill: CheckoutPrefillSchema.optional(),
|
|
279
|
-
consents: z.array(CheckoutConsentInputSchema).optional()
|
|
280
|
-
/** Yalnızca eski gövde. */
|
|
281
|
-
profile: BillingProfileSchema.optional(),
|
|
282
|
-
/**
|
|
283
|
-
* Yalnızca eski gövde: sağlayıcının istediği kimlik numarası (ör. TCKN/VKN).
|
|
284
|
-
* Yalnızca sağlayıcıya iletilir; servis bunu SAKLAMAZ ve LOGLAMAZ.
|
|
285
|
-
*/
|
|
286
|
-
identityNumber: z.string().regex(/^\d{10,11}$/).optional()
|
|
273
|
+
consents: z.array(CheckoutConsentInputSchema).max(20).optional()
|
|
287
274
|
}).superRefine((body, ctx) => {
|
|
288
|
-
const issue = (path, message) => ctx.addIssue({
|
|
289
|
-
code: "custom",
|
|
290
|
-
path: [path],
|
|
291
|
-
message
|
|
292
|
-
});
|
|
293
|
-
if (body.successUrl !== void 0 && body.returnUrl !== void 0) issue("returnUrl", "successUrl ve returnUrl (eski ad) birlikte verilemez");
|
|
294
|
-
if (body.successUrl === void 0 && body.returnUrl === void 0) issue("successUrl", "zorunlu");
|
|
295
|
-
const hasProfile = body.profile !== void 0;
|
|
296
|
-
if (hasProfile !== (body.identityNumber !== void 0)) {
|
|
297
|
-
issue(hasProfile ? "identityNumber" : "profile", "eski gövde profile ve identityNumber'ı birlikte taşır; hosted checkout ikisini de taşımaz");
|
|
298
|
-
return;
|
|
299
|
-
}
|
|
300
|
-
if (hasProfile) {
|
|
301
|
-
if (body.currency === void 0) issue("currency", "eski gövdede zorunlu");
|
|
302
|
-
if (body.locale === void 0) issue("locale", "eski gövdede zorunlu");
|
|
303
|
-
if (body.consents === void 0) issue("consents", "eski gövdede zorunlu");
|
|
304
|
-
body.consents?.forEach((consent, i) => {
|
|
305
|
-
if (consent.acceptedAt === void 0) ctx.addIssue({
|
|
306
|
-
code: "custom",
|
|
307
|
-
path: [
|
|
308
|
-
"consents",
|
|
309
|
-
i,
|
|
310
|
-
"acceptedAt"
|
|
311
|
-
],
|
|
312
|
-
message: "eski gövdede zorunlu"
|
|
313
|
-
});
|
|
314
|
-
});
|
|
315
|
-
if (body.cancelUrl !== void 0) issue("cancelUrl", "yalnızca hosted checkout");
|
|
316
|
-
if (body.prefill !== void 0) issue("prefill", "yalnızca hosted checkout");
|
|
317
|
-
return;
|
|
318
|
-
}
|
|
319
|
-
if (body.locale !== void 0 && !SETTINGS_LOCALES.includes(body.locale)) issue("locale", `hosted checkout: ${SETTINGS_LOCALES.join(" | ")}`);
|
|
320
|
-
const consents = body.consents ?? [];
|
|
321
|
-
if (consents.length > 20) issue("consents", `en çok 20 belge`);
|
|
322
275
|
const seen = /* @__PURE__ */ new Set();
|
|
323
|
-
consents
|
|
324
|
-
if (consent.url === void 0) ctx.addIssue({
|
|
325
|
-
code: "custom",
|
|
326
|
-
path: [
|
|
327
|
-
"consents",
|
|
328
|
-
i,
|
|
329
|
-
"url"
|
|
330
|
-
],
|
|
331
|
-
message: "hosted checkout'ta zorunlu"
|
|
332
|
-
});
|
|
333
|
-
if (consent.acceptedAt !== void 0) ctx.addIssue({
|
|
334
|
-
code: "custom",
|
|
335
|
-
path: [
|
|
336
|
-
"consents",
|
|
337
|
-
i,
|
|
338
|
-
"acceptedAt"
|
|
339
|
-
],
|
|
340
|
-
message: "hosted checkout'ta onayı sayfa kaydeder"
|
|
341
|
-
});
|
|
276
|
+
body.consents?.forEach((consent, i) => {
|
|
342
277
|
if (seen.has(consent.document)) ctx.addIssue({
|
|
343
278
|
code: "custom",
|
|
344
279
|
path: [
|
|
@@ -346,18 +281,11 @@ const CheckoutSessionCreateInputSchema = z.object({
|
|
|
346
281
|
i,
|
|
347
282
|
"document"
|
|
348
283
|
],
|
|
349
|
-
message: "
|
|
284
|
+
message: "duplicate document"
|
|
350
285
|
});
|
|
351
286
|
seen.add(consent.document);
|
|
352
287
|
});
|
|
353
|
-
})
|
|
354
|
-
...rest,
|
|
355
|
-
successUrl: successUrl ?? returnUrl
|
|
356
|
-
}));
|
|
357
|
-
/** Doğrulanmış gövde eski akışı mı istiyor (K16). Hosted: false. */
|
|
358
|
-
function isLegacyCheckoutInput(input) {
|
|
359
|
-
return input.profile !== void 0 && input.identityNumber !== void 0;
|
|
360
|
-
}
|
|
288
|
+
});
|
|
361
289
|
/**
|
|
362
290
|
* `canceled` (F2b): müşteri hosted sayfada vazgeçti. Eski (0.2.0 öncesi hosted'sız)
|
|
363
291
|
* istemci bu değeri tanımaz; yalnızca hosted akışı kullanan ürün görür.
|
|
@@ -369,6 +297,7 @@ const CheckoutStatusSchema = z.enum([
|
|
|
369
297
|
"expired",
|
|
370
298
|
"canceled"
|
|
371
299
|
]);
|
|
300
|
+
/** Provider form shown on steward's hosted checkout page (never returned to the product). */
|
|
372
301
|
const ProviderPayloadSchema = z.discriminatedUnion("type", [z.object({
|
|
373
302
|
type: z.literal("html_snippet"),
|
|
374
303
|
html: z.string()
|
|
@@ -386,12 +315,10 @@ const CheckoutSessionSchema = z.object({
|
|
|
386
315
|
currency: CurrencySchema,
|
|
387
316
|
provider: z.string(),
|
|
388
317
|
locale: z.string(),
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
/**
|
|
393
|
-
cancelUrl: z.string().nullable().optional(),
|
|
394
|
-
/** Kabul edilen belgeler (hosted: sayfada onaylandıktan sonra dolar). */
|
|
318
|
+
successUrl: z.string(),
|
|
319
|
+
/** "Cancel" target (null if not given; the page falls back to product setting `appUrl`). */
|
|
320
|
+
cancelUrl: z.string().nullable(),
|
|
321
|
+
/** Accepted documents (filled once accepted on the page). */
|
|
395
322
|
consents: z.array(ConsentSchema),
|
|
396
323
|
actorRef: ActorRefSchema.nullable(),
|
|
397
324
|
failureReason: z.string().nullable(),
|
|
@@ -401,15 +328,12 @@ const CheckoutSessionSchema = z.object({
|
|
|
401
328
|
completedAt: DateTimeSchema.nullable()
|
|
402
329
|
});
|
|
403
330
|
/**
|
|
404
|
-
* `POST /v1/accounts/{ref}/checkout-sessions`
|
|
405
|
-
*
|
|
406
|
-
*
|
|
407
|
-
* - eski gövde: `url: null`, `providerPayload` sağlayıcı formu.
|
|
408
|
-
* `url` F2b öncesi steward'da yoktur (null okunur).
|
|
331
|
+
* `POST /v1/accounts/{ref}/checkout-sessions` response: `url` is steward's checkout page
|
|
332
|
+
* (`…/public/v1/checkout/{id}?k=<key>`; the key appears only here), `account` is the state
|
|
333
|
+
* after the call.
|
|
409
334
|
*/
|
|
410
335
|
const CheckoutSessionCreatedSchema = CheckoutSessionSchema.extend({
|
|
411
|
-
url: z.string()
|
|
412
|
-
providerPayload: ProviderPayloadSchema.optional(),
|
|
336
|
+
url: z.string(),
|
|
413
337
|
account: AccountStateSchema.optional()
|
|
414
338
|
});
|
|
415
339
|
const RETURN_PLACEHOLDER_RE = /\{(CHECKOUT_ID|STATUS|ACCOUNT_REF|LOCALE)\}/g;
|
|
@@ -421,28 +345,22 @@ function originOf(value) {
|
|
|
421
345
|
}
|
|
422
346
|
}
|
|
423
347
|
/**
|
|
424
|
-
*
|
|
425
|
-
*
|
|
426
|
-
*
|
|
427
|
-
*
|
|
428
|
-
*
|
|
348
|
+
* Browser redirect for a checkout outcome — the service and the fake steward share it.
|
|
349
|
+
* Placeholders in `successUrl` (`{CHECKOUT_ID}` `{STATUS}` `{ACCOUNT_REF}` `{LOCALE}`) are
|
|
350
|
+
* filled with URL-encoded values; nothing is appended, so a URL without placeholders is used
|
|
351
|
+
* as-is. An encoded value cannot change the origin; it is still checked, and if the origin
|
|
352
|
+
* would change the URL is returned unfilled.
|
|
429
353
|
*/
|
|
430
354
|
function checkoutRedirectUrl(target, status) {
|
|
431
355
|
const template = target.successUrl;
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
if (originOf(filled) !== null && originOf(filled) === originOf(template)) return filled;
|
|
441
|
-
}
|
|
442
|
-
const url = new URL(template ?? target.returnUrl);
|
|
443
|
-
url.searchParams.set("session", target.id);
|
|
444
|
-
url.searchParams.set("status", status);
|
|
445
|
-
return url.toString();
|
|
356
|
+
const values = {
|
|
357
|
+
CHECKOUT_ID: target.id,
|
|
358
|
+
STATUS: status,
|
|
359
|
+
ACCOUNT_REF: target.accountRef,
|
|
360
|
+
LOCALE: target.locale
|
|
361
|
+
};
|
|
362
|
+
const filled = template.replace(RETURN_PLACEHOLDER_RE, (_, name) => encodeURIComponent(values[name]));
|
|
363
|
+
return originOf(filled) !== null && originOf(filled) === originOf(template) ? filled : template;
|
|
446
364
|
}
|
|
447
365
|
const CHECKOUT_ERRORS = [
|
|
448
366
|
"account_not_found",
|
|
@@ -708,8 +626,6 @@ const AccountDetailSchema = AccountSchema.extend({
|
|
|
708
626
|
const withAccount = { account: AccountStateSchema.optional() };
|
|
709
627
|
/** `PUT /v1/accounts/{ref}` (201 ya da 200). */
|
|
710
628
|
const AccountUpsertResponseSchema = AccountSchema.extend(withAccount);
|
|
711
|
-
/** `PUT /v1/accounts/{ref}/billing-profile` */
|
|
712
|
-
const BillingProfileResponseSchema = BillingProfileSchema.extend(withAccount);
|
|
713
629
|
/** `POST /v1/accounts/{ref}/grants` */
|
|
714
630
|
const GrantCreateResponseSchema = GrantSchema.extend(withAccount);
|
|
715
631
|
/** `POST /v1/subscriptions/{id}/cancel` */
|
|
@@ -722,27 +638,6 @@ const ManualInvoiceResponseSchema = InvoiceSchema.extend(withAccount);
|
|
|
722
638
|
const InvoiceVoidResponseSchema = InvoiceSchema.extend(withAccount);
|
|
723
639
|
/** `GET /v1/checkout-sessions/{id}` — `account` yalnızca oturum `completed` ise. */
|
|
724
640
|
const CheckoutSessionResponseSchema = CheckoutSessionSchema.extend(withAccount);
|
|
725
|
-
const DeliverySchema = z.object({
|
|
726
|
-
endpointId: IdSchema,
|
|
727
|
-
status: z.enum([
|
|
728
|
-
"pending",
|
|
729
|
-
"delivered",
|
|
730
|
-
"dead"
|
|
731
|
-
]),
|
|
732
|
-
attempts: z.number().int().nonnegative(),
|
|
733
|
-
lastHttpStatus: z.number().int().nullable(),
|
|
734
|
-
lastError: z.string().nullable(),
|
|
735
|
-
nextAttemptAt: DateTimeSchema.nullable(),
|
|
736
|
-
deliveredAt: DateTimeSchema.nullable()
|
|
737
|
-
});
|
|
738
|
-
const EventRecordSchema = z.object({
|
|
739
|
-
event: BillingEventSchema,
|
|
740
|
-
deliveries: z.array(DeliverySchema)
|
|
741
|
-
});
|
|
742
|
-
const EventListSchema = z.object({
|
|
743
|
-
items: z.array(EventRecordSchema),
|
|
744
|
-
nextCursor: z.string().nullable()
|
|
745
|
-
});
|
|
746
641
|
/** Değişiklik yapan her istekte zorunlu başlıklar. */
|
|
747
642
|
const HEADER_IDEMPOTENCY_KEY = "idempotency-key";
|
|
748
643
|
const HEADER_ACTOR_REF = "x-actor-ref";
|
|
@@ -761,8 +656,6 @@ const ERROR_CODES = Object.freeze({
|
|
|
761
656
|
invalid_request: spec(400, "validation"),
|
|
762
657
|
invalid_account_ref: spec(400, "validation"),
|
|
763
658
|
invalid_include: spec(400, "validation"),
|
|
764
|
-
invalid_cursor: spec(400, "validation"),
|
|
765
|
-
invalid_limit: spec(400, "validation"),
|
|
766
659
|
invalid_actor_ref: spec(400, "validation"),
|
|
767
660
|
actor_ref_required: spec(400, "validation"),
|
|
768
661
|
idempotency_key_required: spec(400, "validation"),
|
|
@@ -782,7 +675,6 @@ const ERROR_CODES = Object.freeze({
|
|
|
782
675
|
grant_not_found: spec(404, "not_found"),
|
|
783
676
|
invoice_not_found: spec(404, "not_found"),
|
|
784
677
|
document_not_found: spec(404, "not_found"),
|
|
785
|
-
event_not_found: spec(404, "not_found"),
|
|
786
678
|
checkout_session_not_found: spec(404, "not_found"),
|
|
787
679
|
/** Yönetim ucu: endpoint yok ya da başka ürünün. */
|
|
788
680
|
webhook_endpoint_not_found: spec(404, "not_found"),
|
|
@@ -808,7 +700,7 @@ const ERROR_CODES = Object.freeze({
|
|
|
808
700
|
subscription_active: spec(409, "conflict"),
|
|
809
701
|
/** `DELETE /v1/accounts/:ref`: sağlayıcı formu açık checkout oturumu var; süresi dolup kapanınca tekrar dene. */
|
|
810
702
|
checkout_in_progress: spec(409, "conflict", true),
|
|
811
|
-
/** `returnUrl`
|
|
703
|
+
/** `successUrl`, `cancelUrl` or portal `returnUrl` is not in the product's allowed origins: product misconfiguration. */
|
|
812
704
|
return_url_not_allowed: spec(422, "config"),
|
|
813
705
|
/** Bu deployment'ta sağlayıcı yapılandırılmamış (503 ama beklemekle düzelmez). */
|
|
814
706
|
provider_not_configured: spec(503, "config"),
|
|
@@ -1199,4 +1091,4 @@ function buildDoctorReport(facts) {
|
|
|
1199
1091
|
};
|
|
1200
1092
|
}
|
|
1201
1093
|
//#endregion
|
|
1202
|
-
export {
|
|
1094
|
+
export { InvoiceIssueInputSchema as $, webhookEndpointUrlProblem as A, BrandingSchema as At, AccountDetailSchema as B, applySettingsPatch as Bt, WebhookEndpointListSchema as C, CheckoutSessionSchema as Ct, WebhookLastDeliverySchema as D, ProviderPayloadSchema as Dt, WebhookEndpointStatusSchema as E, MAX_CHECKOUT_CONSENT_DOCS as Et, PlanSetWarningSchema as F, ReturnOriginSchema as Ft, HEADER_ACTOR_REF as G, CatalogSyncInputSchema as Gt, CancelSubscriptionResponseSchema as H, returnOriginsOf as Ht, ResyncResultSchema as I, SETTINGS_LOCALES as It, HEADER_REQUEST_ID as J, FeatureTypeSchema as Jt, HEADER_API_VERSION as K, CatalogSyncResultSchema as Kt, ERROR_CODES as L, SettingsLocaleSchema as Lt, PlanSetInputSchema as M, DEFAULT_PORTAL_TTL_MINUTES as Mt, PlanSetModeSchema as N, ProductSettingsPatchSchema as Nt, WebhookSecretSchema as O, checkoutRedirectUrl as Ot, PlanSetResponseSchema as P, ProductSettingsSchema as Pt, ManualInvoiceResponseSchema as Q, errorCodeSpec as R, TtlMinutesSchema as Rt, WebhookEndpointCreateInputSchema as S, CheckoutSessionCreatedSchema as St, WebhookEndpointSchema as T, ConsentSchema as Tt, CheckoutSessionResponseSchema as U, AccountsRefreshResultSchema as Ut, AccountUpsertResponseSchema as V, isReturnUrlAllowed as Vt, GrantCreateResponseSchema as W, CatalogSchema as Wt, InvoiceIssueResponseSchema as X, PriceDefSchema as Xt, HEADER_SDK as Y, PlanDefSchema as Yt, InvoiceVoidResponseSchema as Z, PriceSchema as Zt, hostedReadinessOf as _, PortalSessionSchema as _t, DOCTOR_SEVERITIES as a, ManualInvoiceInputSchema as at, WEBHOOK_ENDPOINT_STATUSES as b, CheckoutPrefillSchema as bt, DoctorHostedSchema as c, splitInclusiveTax as ct, DoctorSettingsSchema as d, GrantSchema as dt, InvoiceLineSchema as et, DoctorSeveritySchema as f, PaymentSchema as ft, endpointDiagnosisOf as g, PortalSessionCreateInputSchema as gt, buildDoctorReport as h, PORTAL_SESSION_ERRORS as ht, DOCTOR_REQUIRED_LEGAL_LINKS as i, MANUAL_INVOICE_MAX_AMOUNT_MINOR as it, PLAN_SET_MODES as j, DEFAULT_CHECKOUT_TTL_MINUTES as jt, generateWebhookSecret as k, BrandingPatchSchema as kt, DoctorProviderSchema as l, CancelSubscriptionInputSchema as lt, DoctorWarningSchema as m, SubscriptionSchema as mt, DOCTOR_PROVIDER_ENVIRONMENTS as n, InvoiceStatusSchema as nt, DoctorCatalogSchema as o, ManualInvoiceLineInputSchema as ot, DoctorUnsellablePriceSchema as p, StatsSchema as pt, HEADER_IDEMPOTENCY_KEY as q, FeatureDefSchema as qt, DOCTOR_REQUIRED_BRANDING as r, InvoiceVoidInputSchema as rt, DoctorEndpointSchema as s, manualInvoiceTotals as st, DOCTOR_PENDING_BACKLOG_MS as t, InvoiceSchema as tt, DoctorReportSchema as u, GrantCreateInputSchema as ut, DEFAULT_ENDPOINT_EVENT_TYPES as v, CHECKOUT_ERRORS as vt, WebhookEndpointRotateInputSchema as w, CheckoutStatusSchema as wt, WEBHOOK_SECRET_PREFIX as x, CheckoutSessionCreateInputSchema as xt, EventTypeSchema as y, CheckoutConsentInputSchema as yt, isKnownErrorCode as z, WebUrlSchema as zt };
|