@appfunnel-dev/sdk 2.0.0-canary.8 → 2.0.0-canary.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{capabilities-CsnkVwna.d.cts → capabilities-Dq22RCr_.d.cts} +34 -1
- package/dist/{capabilities-CsnkVwna.d.ts → capabilities-Dq22RCr_.d.ts} +34 -1
- package/dist/{checkout-3PkKwPd7.d.ts → checkout-ClaO5IYV.d.ts} +17 -4
- package/dist/{checkout-Cg20l53c.d.cts → checkout-DBp4bCpC.d.cts} +17 -4
- package/dist/{chunk-RY3LOSVZ.cjs → chunk-7JLOF6CJ.cjs} +27 -5
- package/dist/chunk-7JLOF6CJ.cjs.map +1 -0
- package/dist/{chunk-PWXMQGO6.js → chunk-JAO6AA4R.js} +3 -3
- package/dist/{chunk-PWXMQGO6.js.map → chunk-JAO6AA4R.js.map} +1 -1
- package/dist/{chunk-RVJLR4RS.js → chunk-OXQBEKZ5.js} +25 -6
- package/dist/chunk-OXQBEKZ5.js.map +1 -0
- package/dist/{chunk-FY3TMSRU.cjs → chunk-VV7TFC64.cjs} +7 -7
- package/dist/{chunk-FY3TMSRU.cjs.map → chunk-VV7TFC64.cjs.map} +1 -1
- package/dist/driver-paddle.cjs +26 -24
- package/dist/driver-paddle.cjs.map +1 -1
- package/dist/driver-paddle.d.cts +2 -2
- package/dist/driver-paddle.d.ts +2 -2
- package/dist/driver-paddle.js +6 -4
- package/dist/driver-paddle.js.map +1 -1
- package/dist/driver-stripe.cjs +32 -26
- package/dist/driver-stripe.cjs.map +1 -1
- package/dist/driver-stripe.d.cts +2 -2
- package/dist/driver-stripe.d.ts +2 -2
- package/dist/driver-stripe.js +10 -4
- package/dist/driver-stripe.js.map +1 -1
- package/dist/index.cjs +48 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +18 -3
- package/dist/index.js.map +1 -1
- package/dist/manifest-entry.cjs +24 -12
- package/dist/manifest-entry.d.cts +2 -2
- package/dist/manifest-entry.d.ts +2 -2
- package/dist/manifest-entry.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-RVJLR4RS.js.map +0 -1
- package/dist/chunk-RY3LOSVZ.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/drivers/wire.ts"],"names":["checkoutError"],"mappings":"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","file":"chunk-FY3TMSRU.cjs","sourcesContent":["/**\n * Shared wire plumbing for the checkout drivers — the CLIENT half of the v2\n * checkout contract (commerce/checkout-api.ts). Lives under drivers/ (not\n * commerce/) on purpose: it ships only inside the `driver-*` subpath entries,\n * so the core funnel entry never bundles a checkout fetch — the core SDK talks\n * to a {@link CheckoutDriver}, never to the wire.\n *\n * Only `import type` from commerce/checkout(.tsx) here — a runtime import would\n * drag the React checkout primitives into every driver chunk. The one runtime\n * dependency is the pure error taxonomy (capabilities.ts).\n */\nimport type {\n CheckoutCompleteRequest,\n CheckoutCompleteResponse,\n CheckoutSessionRequest,\n CheckoutSessionResponse,\n CheckoutSettlement,\n} from '../commerce/checkout-api'\nimport type { CheckoutDriverContext, CheckoutRequest, CheckoutResult } from '../commerce/checkout'\nimport { checkoutError, type CheckoutError } from '../commerce/capabilities'\n\nfunction endpoint(ctx: CheckoutDriverContext, path = ''): string {\n const base = ctx.apiBase.replace(/\\/+$/, '')\n return `${base}/campaign/${encodeURIComponent(ctx.campaignId)}/v2/checkout${path}`\n}\n\nasync function postJson<T>(url: string, body: unknown): Promise<T> {\n const res = await fetch(url, {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify(body),\n })\n // The contract speaks in `step` responses, not HTTP errors — a non-2xx means the\n // request never reached the checkout service properly (proxy, deploy, outage).\n if (!res.ok) throw checkoutError('processing_error', `checkout request failed (HTTP ${res.status})`)\n return (await res.json()) as T\n}\n\n/** Normalize any thrown value into the taxonomy (network drops → `processing_error`). */\nexport function toCheckoutError(e: unknown): CheckoutError {\n if (e && typeof e === 'object' && 'category' in e && 'message' in e && 'retryable' in e) {\n return e as CheckoutError\n }\n return checkoutError('processing_error', e instanceof Error ? e.message : 'Checkout request failed')\n}\n\n/**\n * Open a checkout attempt: `POST {apiBase}/campaign/{campaignId}/v2/checkout`.\n * The correlationId is client-minted per ATTEMPT (idempotency key + the id the\n * server stamps into provider metadata) — mint it once, reuse it on retries.\n */\nexport function postSession(\n ctx: CheckoutDriverContext,\n req: CheckoutRequest,\n correlationId: string,\n): Promise<CheckoutSessionResponse> {\n const body: CheckoutSessionRequest = {\n funnelId: ctx.funnelId,\n mode: ctx.mode,\n // The CHARGE identity is the catalog key (resolved from the slot by driverWithCatalog); fall back\n // to `product` for legacy builds where the page named the catalog key directly.\n productKey: req.catalogKey ?? req.product,\n intent: req.intent,\n kind: req.kind,\n // null (not absent) = explicit off-session — the server validates surfaces\n // against the capability matrix, so never let one default in transit.\n surface: req.surface ?? null,\n sessionId: ctx.sessionId ?? undefined,\n visitorId: ctx.visitorId ?? undefined,\n // Buyer email collected by the funnel (user.email) — Stripe Customer creation,\n // receipts, Paddle prefill. Injected at attempt time by the FunnelProvider seam.\n email: req.email,\n correlationId,\n }\n return postJson<CheckoutSessionResponse>(endpoint(ctx), body)\n}\n\n/** Ask the server to VERIFY with the provider and write the money facts (idempotent). */\nexport function postComplete(\n ctx: CheckoutDriverContext,\n correlationId: string,\n providerRef?: string,\n): Promise<CheckoutCompleteResponse> {\n const body: CheckoutCompleteRequest = { providerRef }\n return postJson<CheckoutCompleteResponse>(\n endpoint(ctx, `/${encodeURIComponent(correlationId)}/complete`),\n body,\n )\n}\n\n/** Server settlement → the SDK's CheckoutResult (eventId passes through for pixel dedup). */\nexport function settlementToResult(s: CheckoutSettlement): CheckoutResult {\n return { ok: true, amountMinor: s.amountMinor, currency: s.currency, eventId: s.eventId }\n}\n\nexport interface CompletePollOptions {\n providerRef?: string\n /** Total complete attempts before giving up (default 5). */\n attempts?: number\n /** Delay between attempts (default 2000ms). */\n intervalMs?: number\n /** Error message when the provider hasn't confirmed inside the window (MoR/async). */\n timeoutMessage?: string\n}\n\nconst sleep = (ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms))\n\n/**\n * Complete with a bounded poll. Sync providers (Stripe) settle on the first\n * attempt — the server verifies against the provider inline. MoR/async providers\n * (Paddle) settle via webhook, so `pending` is normal: re-poll a few times, then\n * stop holding the UI hostage — the charge may still land server-side, which is\n * why the timeout error is `retryable` and the message should say the receipt\n * can still arrive (the server's money facts don't depend on this browser).\n */\nexport async function completeWithPoll(\n ctx: CheckoutDriverContext,\n correlationId: string,\n opts: CompletePollOptions = {},\n): Promise<CheckoutResult> {\n const attempts = opts.attempts ?? 5\n const intervalMs = opts.intervalMs ?? 2000\n try {\n for (let i = 0; i < attempts; i++) {\n const res = await postComplete(ctx, correlationId, opts.providerRef)\n if (res.step === 'settled') return settlementToResult(res.result)\n if (res.step === 'failed') return { ok: false, error: res.error }\n if (i < attempts - 1) await sleep(intervalMs)\n }\n } catch (e) {\n return { ok: false, error: toCheckoutError(e) }\n }\n return {\n ok: false,\n error: checkoutError(\n 'processing_error',\n opts.timeoutMessage ?? 'The payment has not been confirmed yet — please check back shortly.',\n // `completion_timeout` marks \"the poll ran out while the attempt was still\n // pending\" — drivers key double-charge guards on it (the attempt may still\n // settle server-side; it was never refused).\n { retryable: true, declineCode: 'completion_timeout' },\n ),\n }\n}\n\n/**\n * The `redirect` step hand-off: navigate to the provider-hosted page and return a\n * promise that settles ONLY if the buyer comes back to this very page. The page\n * is leaving — resolving early would fire `purchase.complete`/navigation for a\n * charge that hasn't happened, and rejecting would flash an error during the\n * (successful) hand-off — so while the navigation proceeds the promise stays\n * pending and `useCheckout` stays in `loading`, the truthful UI for a page\n * mid-navigation. The hosted page's SUCCESS return URL re-enters the funnel with\n * `af_checkout={correlationId}` (a fresh load — this promise is gone; the SDK's\n * resume leg settles the attempt).\n *\n * The one way THIS page comes back to life is a bfcache restore (browser Back\n * from the hosted page): `pageshow` with `persisted: true`. That is a buyer who\n * abandoned the hosted checkout — resolve `canceled` so the trigger re-enables\n * and inline redirect placeholders recover instead of spinning forever.\n */\nexport function leaveForRedirect(url: string): Promise<CheckoutResult> {\n return new Promise<CheckoutResult>((resolve) => {\n if (typeof window !== 'undefined') {\n const onPageshow = (event: PageTransitionEvent) => {\n if (!event.persisted) return\n window.removeEventListener('pageshow', onPageshow)\n resolve({\n ok: false,\n error: checkoutError('canceled', 'Returned from the hosted checkout without completing'),\n })\n }\n window.addEventListener('pageshow', onPageshow)\n }\n window.location.assign(url)\n })\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/drivers/wire.ts"],"names":["checkoutError"],"mappings":";;;;;AAqBA,SAAS,QAAA,CAAS,GAAA,EAA4B,IAAA,GAAO,EAAA,EAAY;AAC/D,EAAA,MAAM,IAAA,GAAO,GAAA,CAAI,OAAA,CAAQ,OAAA,CAAQ,QAAQ,EAAE,CAAA;AAC3C,EAAA,OAAO,CAAA,EAAG,IAAI,CAAA,UAAA,EAAa,kBAAA,CAAmB,IAAI,UAAU,CAAC,eAAe,IAAI,CAAA,CAAA;AAClF;AAEA,eAAe,QAAA,CAAY,KAAa,IAAA,EAA2B;AACjE,EAAA,MAAM,GAAA,GAAM,MAAM,KAAA,CAAM,GAAA,EAAK;AAAA,IAC3B,MAAA,EAAQ,MAAA;AAAA,IACR,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA,EAAmB;AAAA,IAC9C,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI;AAAA,GAC1B,CAAA;AAGD,EAAA,IAAI,CAAC,IAAI,EAAA,EAAI,MAAMA,gCAAc,kBAAA,EAAoB,CAAA,8BAAA,EAAiC,GAAA,CAAI,MAAM,CAAA,CAAA,CAAG,CAAA;AACnG,EAAA,OAAQ,MAAM,IAAI,IAAA,EAAK;AACzB;AAGO,SAAS,gBAAgB,CAAA,EAA2B;AACzD,EAAA,IAAI,CAAA,IAAK,OAAO,CAAA,KAAM,QAAA,IAAY,cAAc,CAAA,IAAK,SAAA,IAAa,CAAA,IAAK,WAAA,IAAe,CAAA,EAAG;AACvF,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,OAAOA,gCAAc,kBAAA,EAAoB,CAAA,YAAa,KAAA,GAAQ,CAAA,CAAE,UAAU,yBAAyB,CAAA;AACrG;AAOO,SAAS,WAAA,CACd,GAAA,EACA,GAAA,EACA,aAAA,EACkC;AAClC,EAAA,MAAM,IAAA,GAA+B;AAAA,IACnC,UAAU,GAAA,CAAI,QAAA;AAAA,IACd,MAAM,GAAA,CAAI,IAAA;AAAA;AAAA;AAAA,IAGV,UAAA,EAAY,GAAA,CAAI,UAAA,IAAc,GAAA,CAAI,OAAA;AAAA,IAClC,QAAQ,GAAA,CAAI,MAAA;AAAA,IACZ,MAAM,GAAA,CAAI,IAAA;AAAA;AAAA;AAAA,IAGV,OAAA,EAAS,IAAI,OAAA,IAAW,IAAA;AAAA,IACxB,SAAA,EAAW,IAAI,SAAA,IAAa,MAAA;AAAA,IAC5B,SAAA,EAAW,IAAI,SAAA,IAAa,MAAA;AAAA;AAAA;AAAA,IAG5B,OAAO,GAAA,CAAI,KAAA;AAAA,IACX;AAAA,GACF;AACA,EAAA,OAAO,QAAA,CAAkC,QAAA,CAAS,GAAG,CAAA,EAAG,IAAI,CAAA;AAC9D;AAGO,SAAS,YAAA,CACd,GAAA,EACA,aAAA,EACA,WAAA,EACmC;AACnC,EAAA,MAAM,IAAA,GAAgC,EAAE,WAAA,EAAY;AACpD,EAAA,OAAO,QAAA;AAAA,IACL,SAAS,GAAA,EAAK,CAAA,CAAA,EAAI,kBAAA,CAAmB,aAAa,CAAC,CAAA,SAAA,CAAW,CAAA;AAAA,IAC9D;AAAA,GACF;AACF;AAGO,SAAS,mBAAmB,CAAA,EAAuC;AACxE,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,WAAA,EAAa,CAAA,CAAE,WAAA,EAAa,QAAA,EAAU,CAAA,CAAE,QAAA,EAAU,OAAA,EAAS,CAAA,CAAE,OAAA,EAAQ;AAC1F;AAYA,IAAM,KAAA,GAAQ,CAAC,EAAA,KAAe,IAAI,OAAA,CAAc,CAAC,OAAA,KAAY,UAAA,CAAW,OAAA,EAAS,EAAE,CAAC,CAAA;AAUpF,eAAsB,gBAAA,CACpB,GAAA,EACA,aAAA,EACA,IAAA,GAA4B,EAAC,EACJ;AACzB,EAAA,MAAM,QAAA,GAAW,KAAK,QAAA,IAAY,CAAA;AAClC,EAAA,MAAM,UAAA,GAAa,KAAK,UAAA,IAAc,GAAA;AACtC,EAAA,IAAI;AACF,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,EAAU,CAAA,EAAA,EAAK;AACjC,MAAA,MAAM,MAAM,MAAM,YAAA,CAAa,GAAA,EAAK,aAAA,EAAe,KAAK,WAAW,CAAA;AACnE,MAAA,IAAI,IAAI,IAAA,KAAS,SAAA,EAAW,OAAO,kBAAA,CAAmB,IAAI,MAAM,CAAA;AAChE,MAAA,IAAI,GAAA,CAAI,SAAS,QAAA,EAAU,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,GAAA,CAAI,KAAA,EAAM;AAChE,MAAA,IAAI,CAAA,GAAI,QAAA,GAAW,CAAA,EAAG,MAAM,MAAM,UAAU,CAAA;AAAA,IAC9C;AAAA,EACF,SAAS,CAAA,EAAG;AACV,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,eAAA,CAAgB,CAAC,CAAA,EAAE;AAAA,EAChD;AACA,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,KAAA;AAAA,IACJ,KAAA,EAAOA,+BAAA;AAAA,MACL,kBAAA;AAAA,MACA,KAAK,cAAA,IAAkB,0EAAA;AAAA;AAAA;AAAA;AAAA,MAIvB,EAAE,SAAA,EAAW,IAAA,EAAM,WAAA,EAAa,oBAAA;AAAqB;AACvD,GACF;AACF;AAkBO,SAAS,iBAAiB,GAAA,EAAsC;AACrE,EAAA,OAAO,IAAI,OAAA,CAAwB,CAAC,OAAA,KAAY;AAC9C,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,MAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAA+B;AACjD,QAAA,IAAI,CAAC,MAAM,SAAA,EAAW;AACtB,QAAA,MAAA,CAAO,mBAAA,CAAoB,YAAY,UAAU,CAAA;AACjD,QAAA,OAAA,CAAQ;AAAA,UACN,EAAA,EAAI,KAAA;AAAA,UACJ,KAAA,EAAOA,+BAAA,CAAc,UAAA,EAAY,sDAAsD;AAAA,SACxF,CAAA;AAAA,MACH,CAAA;AACA,MAAA,MAAA,CAAO,gBAAA,CAAiB,YAAY,UAAU,CAAA;AAAA,IAChD;AACA,IAAA,MAAA,CAAO,QAAA,CAAS,OAAO,GAAG,CAAA;AAAA,EAC5B,CAAC,CAAA;AACH","file":"chunk-VV7TFC64.cjs","sourcesContent":["/**\n * Shared wire plumbing for the checkout drivers — the CLIENT half of the v2\n * checkout contract (commerce/checkout-api.ts). Lives under drivers/ (not\n * commerce/) on purpose: it ships only inside the `driver-*` subpath entries,\n * so the core funnel entry never bundles a checkout fetch — the core SDK talks\n * to a {@link CheckoutDriver}, never to the wire.\n *\n * Only `import type` from commerce/checkout(.tsx) here — a runtime import would\n * drag the React checkout primitives into every driver chunk. The one runtime\n * dependency is the pure error taxonomy (capabilities.ts).\n */\nimport type {\n CheckoutCompleteRequest,\n CheckoutCompleteResponse,\n CheckoutSessionRequest,\n CheckoutSessionResponse,\n CheckoutSettlement,\n} from '../commerce/checkout-api'\nimport type { CheckoutDriverContext, CheckoutRequest, CheckoutResult } from '../commerce/checkout'\nimport { checkoutError, type CheckoutError } from '../commerce/capabilities'\n\nfunction endpoint(ctx: CheckoutDriverContext, path = ''): string {\n const base = ctx.apiBase.replace(/\\/+$/, '')\n return `${base}/campaign/${encodeURIComponent(ctx.campaignId)}/v2/checkout${path}`\n}\n\nasync function postJson<T>(url: string, body: unknown): Promise<T> {\n const res = await fetch(url, {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify(body),\n })\n // The contract speaks in `step` responses, not HTTP errors — a non-2xx means the\n // request never reached the checkout service properly (proxy, deploy, outage).\n if (!res.ok) throw checkoutError('processing_error', `checkout request failed (HTTP ${res.status})`)\n return (await res.json()) as T\n}\n\n/** Normalize any thrown value into the taxonomy (network drops → `processing_error`). */\nexport function toCheckoutError(e: unknown): CheckoutError {\n if (e && typeof e === 'object' && 'category' in e && 'message' in e && 'retryable' in e) {\n return e as CheckoutError\n }\n return checkoutError('processing_error', e instanceof Error ? e.message : 'Checkout request failed')\n}\n\n/**\n * Open a checkout attempt: `POST {apiBase}/campaign/{campaignId}/v2/checkout`.\n * The correlationId is client-minted per ATTEMPT (idempotency key + the id the\n * server stamps into provider metadata) — mint it once, reuse it on retries.\n */\nexport function postSession(\n ctx: CheckoutDriverContext,\n req: CheckoutRequest,\n correlationId: string,\n): Promise<CheckoutSessionResponse> {\n const body: CheckoutSessionRequest = {\n funnelId: ctx.funnelId,\n mode: ctx.mode,\n // The CHARGE identity is the catalog key (resolved from the slot by driverWithCatalog); fall back\n // to `product` for legacy builds where the page named the catalog key directly.\n productKey: req.catalogKey ?? req.product,\n intent: req.intent,\n kind: req.kind,\n // null (not absent) = explicit off-session — the server validates surfaces\n // against the capability matrix, so never let one default in transit.\n surface: req.surface ?? null,\n sessionId: ctx.sessionId ?? undefined,\n visitorId: ctx.visitorId ?? undefined,\n // Buyer email collected by the funnel (user.email) — Stripe Customer creation,\n // receipts, Paddle prefill. Injected at attempt time by the FunnelProvider seam.\n email: req.email,\n correlationId,\n }\n return postJson<CheckoutSessionResponse>(endpoint(ctx), body)\n}\n\n/** Ask the server to VERIFY with the provider and write the money facts (idempotent). */\nexport function postComplete(\n ctx: CheckoutDriverContext,\n correlationId: string,\n providerRef?: string,\n): Promise<CheckoutCompleteResponse> {\n const body: CheckoutCompleteRequest = { providerRef }\n return postJson<CheckoutCompleteResponse>(\n endpoint(ctx, `/${encodeURIComponent(correlationId)}/complete`),\n body,\n )\n}\n\n/** Server settlement → the SDK's CheckoutResult (eventId passes through for pixel dedup). */\nexport function settlementToResult(s: CheckoutSettlement): CheckoutResult {\n return { ok: true, amountMinor: s.amountMinor, currency: s.currency, eventId: s.eventId }\n}\n\nexport interface CompletePollOptions {\n providerRef?: string\n /** Total complete attempts before giving up (default 5). */\n attempts?: number\n /** Delay between attempts (default 2000ms). */\n intervalMs?: number\n /** Error message when the provider hasn't confirmed inside the window (MoR/async). */\n timeoutMessage?: string\n}\n\nconst sleep = (ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms))\n\n/**\n * Complete with a bounded poll. Sync providers (Stripe) settle on the first\n * attempt — the server verifies against the provider inline. MoR/async providers\n * (Paddle) settle via webhook, so `pending` is normal: re-poll a few times, then\n * stop holding the UI hostage — the charge may still land server-side, which is\n * why the timeout error is `retryable` and the message should say the receipt\n * can still arrive (the server's money facts don't depend on this browser).\n */\nexport async function completeWithPoll(\n ctx: CheckoutDriverContext,\n correlationId: string,\n opts: CompletePollOptions = {},\n): Promise<CheckoutResult> {\n const attempts = opts.attempts ?? 5\n const intervalMs = opts.intervalMs ?? 2000\n try {\n for (let i = 0; i < attempts; i++) {\n const res = await postComplete(ctx, correlationId, opts.providerRef)\n if (res.step === 'settled') return settlementToResult(res.result)\n if (res.step === 'failed') return { ok: false, error: res.error }\n if (i < attempts - 1) await sleep(intervalMs)\n }\n } catch (e) {\n return { ok: false, error: toCheckoutError(e) }\n }\n return {\n ok: false,\n error: checkoutError(\n 'processing_error',\n opts.timeoutMessage ?? 'The payment has not been confirmed yet — please check back shortly.',\n // `completion_timeout` marks \"the poll ran out while the attempt was still\n // pending\" — drivers key double-charge guards on it (the attempt may still\n // settle server-side; it was never refused).\n { retryable: true, declineCode: 'completion_timeout' },\n ),\n }\n}\n\n/**\n * The `redirect` step hand-off: navigate to the provider-hosted page and return a\n * promise that settles ONLY if the buyer comes back to this very page. The page\n * is leaving — resolving early would fire `purchase.complete`/navigation for a\n * charge that hasn't happened, and rejecting would flash an error during the\n * (successful) hand-off — so while the navigation proceeds the promise stays\n * pending and `useCheckout` stays in `loading`, the truthful UI for a page\n * mid-navigation. The hosted page's SUCCESS return URL re-enters the funnel with\n * `af_checkout={correlationId}` (a fresh load — this promise is gone; the SDK's\n * resume leg settles the attempt).\n *\n * The one way THIS page comes back to life is a bfcache restore (browser Back\n * from the hosted page): `pageshow` with `persisted: true`. That is a buyer who\n * abandoned the hosted checkout — resolve `canceled` so the trigger re-enables\n * and inline redirect placeholders recover instead of spinning forever.\n */\nexport function leaveForRedirect(url: string): Promise<CheckoutResult> {\n return new Promise<CheckoutResult>((resolve) => {\n if (typeof window !== 'undefined') {\n const onPageshow = (event: PageTransitionEvent) => {\n if (!event.persisted) return\n window.removeEventListener('pageshow', onPageshow)\n resolve({\n ok: false,\n error: checkoutError('canceled', 'Returned from the hosted checkout without completing'),\n })\n }\n window.addEventListener('pageshow', onPageshow)\n }\n window.location.assign(url)\n })\n}\n"]}
|
package/dist/driver-paddle.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkVV7TFC64_cjs = require('./chunk-VV7TFC64.cjs');
|
|
4
|
+
var chunk7JLOF6CJ_cjs = require('./chunk-7JLOF6CJ.cjs');
|
|
5
5
|
require('./chunk-EMMSS5I5.cjs');
|
|
6
6
|
var react = require('react');
|
|
7
7
|
|
|
@@ -638,12 +638,12 @@ async function openCheckout(ctx, session, correlationId, display) {
|
|
|
638
638
|
if (!session.transactionId && !session.items) {
|
|
639
639
|
return {
|
|
640
640
|
ok: false,
|
|
641
|
-
error:
|
|
641
|
+
error: chunk7JLOF6CJ_cjs.checkoutError("processing_error", "provider_checkout carried neither items nor a transactionId")
|
|
642
642
|
};
|
|
643
643
|
}
|
|
644
644
|
const paddle = await getPaddle(session.clientToken, session.providerEnvironment);
|
|
645
645
|
if (!paddle) {
|
|
646
|
-
return { ok: false, error:
|
|
646
|
+
return { ok: false, error: chunk7JLOF6CJ_cjs.checkoutError("processing_error", "Paddle.js failed to initialize") };
|
|
647
647
|
}
|
|
648
648
|
return await new Promise((resolve) => {
|
|
649
649
|
let done = false;
|
|
@@ -653,7 +653,7 @@ async function openCheckout(ctx, session, correlationId, display) {
|
|
|
653
653
|
if (event.name === "checkout.completed") {
|
|
654
654
|
done = true;
|
|
655
655
|
listeners.delete(listener);
|
|
656
|
-
void
|
|
656
|
+
void chunkVV7TFC64_cjs.completeWithPoll(ctx, correlationId, {
|
|
657
657
|
attempts: 10,
|
|
658
658
|
intervalMs: 3e3,
|
|
659
659
|
timeoutMessage: PADDLE_TIMEOUT_MESSAGE
|
|
@@ -661,7 +661,7 @@ async function openCheckout(ctx, session, correlationId, display) {
|
|
|
661
661
|
} else if (event.name === "checkout.closed") {
|
|
662
662
|
done = true;
|
|
663
663
|
listeners.delete(listener);
|
|
664
|
-
resolve({ ok: false, error:
|
|
664
|
+
resolve({ ok: false, error: chunk7JLOF6CJ_cjs.checkoutError("canceled", "Checkout was closed before completing") });
|
|
665
665
|
}
|
|
666
666
|
};
|
|
667
667
|
listeners.add(listener);
|
|
@@ -689,29 +689,29 @@ function paddleCheckoutDriver(ctx) {
|
|
|
689
689
|
if (prior) {
|
|
690
690
|
pendingTimeouts.delete(priorKey);
|
|
691
691
|
try {
|
|
692
|
-
const check = await
|
|
693
|
-
if (check.step === "settled") return
|
|
692
|
+
const check = await chunkVV7TFC64_cjs.postComplete(ctx, prior);
|
|
693
|
+
if (check.step === "settled") return chunkVV7TFC64_cjs.settlementToResult(check.result);
|
|
694
694
|
} catch {
|
|
695
695
|
}
|
|
696
696
|
}
|
|
697
697
|
const correlationId = crypto.randomUUID();
|
|
698
698
|
try {
|
|
699
|
-
const session = await
|
|
699
|
+
const session = await chunkVV7TFC64_cjs.postSession(ctx, req, correlationId);
|
|
700
700
|
switch (session.step) {
|
|
701
701
|
case "settled":
|
|
702
|
-
return
|
|
702
|
+
return chunkVV7TFC64_cjs.settlementToResult(session.result);
|
|
703
703
|
case "pending":
|
|
704
704
|
return rememberIfStillPending(
|
|
705
705
|
req,
|
|
706
706
|
correlationId,
|
|
707
|
-
await
|
|
707
|
+
await chunkVV7TFC64_cjs.completeWithPoll(ctx, correlationId, {
|
|
708
708
|
timeoutMessage: PADDLE_PENDING_TIMEOUT_MESSAGE
|
|
709
709
|
})
|
|
710
710
|
);
|
|
711
711
|
case "failed":
|
|
712
712
|
return { ok: false, error: session.error };
|
|
713
713
|
case "redirect":
|
|
714
|
-
return
|
|
714
|
+
return chunkVV7TFC64_cjs.leaveForRedirect(session.url);
|
|
715
715
|
case "provider_checkout":
|
|
716
716
|
return rememberIfStillPending(
|
|
717
717
|
req,
|
|
@@ -721,14 +721,14 @@ function paddleCheckoutDriver(ctx) {
|
|
|
721
721
|
default:
|
|
722
722
|
return {
|
|
723
723
|
ok: false,
|
|
724
|
-
error:
|
|
724
|
+
error: chunk7JLOF6CJ_cjs.checkoutError(
|
|
725
725
|
"processing_error",
|
|
726
726
|
`Paddle returned '${session.step}' for a trigger start \u2014 Paddle has no in-page confirm step`
|
|
727
727
|
)
|
|
728
728
|
};
|
|
729
729
|
}
|
|
730
730
|
} catch (e) {
|
|
731
|
-
return { ok: false, error:
|
|
731
|
+
return { ok: false, error: chunkVV7TFC64_cjs.toCheckoutError(e) };
|
|
732
732
|
}
|
|
733
733
|
},
|
|
734
734
|
renderInline(req, cb) {
|
|
@@ -737,7 +737,7 @@ function paddleCheckoutDriver(ctx) {
|
|
|
737
737
|
// Redirect-return resume: verify an existing attempt. Webhook-dependent, so it
|
|
738
738
|
// gets the same ~10×3s window the overlay completion poll uses.
|
|
739
739
|
resume(correlationId) {
|
|
740
|
-
return
|
|
740
|
+
return chunkVV7TFC64_cjs.completeWithPoll(ctx, correlationId, {
|
|
741
741
|
attempts: 10,
|
|
742
742
|
intervalMs: 3e3,
|
|
743
743
|
timeoutMessage: PADDLE_TIMEOUT_MESSAGE
|
|
@@ -759,43 +759,45 @@ function PaddleInline({
|
|
|
759
759
|
let disposed = false;
|
|
760
760
|
void (async () => {
|
|
761
761
|
try {
|
|
762
|
-
const session = await
|
|
762
|
+
const session = await chunkVV7TFC64_cjs.postSession(ctx, req, correlationId);
|
|
763
763
|
if (disposed) return;
|
|
764
764
|
switch (session.step) {
|
|
765
765
|
case "provider_checkout": {
|
|
766
766
|
cbRef.current.onStart?.();
|
|
767
|
+
const express = req.surface === "express";
|
|
767
768
|
const result = await openCheckout(ctx, session, correlationId, {
|
|
768
769
|
displayMode: "inline",
|
|
769
770
|
frameTarget: frameClass,
|
|
770
|
-
frameInitialHeight: 450,
|
|
771
|
+
frameInitialHeight: express ? 182 : 450,
|
|
771
772
|
// Paddle's documented inline-frame baseline: fluid width, no chrome.
|
|
772
|
-
frameStyle: "width: 100%; min-width: 286px; background-color: transparent; border: none;"
|
|
773
|
+
frameStyle: "width: 100%; min-width: 286px; background-color: transparent; border: none;",
|
|
774
|
+
...express ? { variant: "express" } : {}
|
|
773
775
|
});
|
|
774
776
|
if (disposed) return;
|
|
775
777
|
if (result.ok) cbRef.current.onSuccess(result);
|
|
776
|
-
else cbRef.current.onError(result.error ??
|
|
778
|
+
else cbRef.current.onError(result.error ?? chunk7JLOF6CJ_cjs.checkoutError("unknown", "Checkout failed"));
|
|
777
779
|
return;
|
|
778
780
|
}
|
|
779
781
|
case "settled":
|
|
780
|
-
cbRef.current.onSuccess(
|
|
782
|
+
cbRef.current.onSuccess(chunkVV7TFC64_cjs.settlementToResult(session.result));
|
|
781
783
|
return;
|
|
782
784
|
case "failed":
|
|
783
785
|
cbRef.current.onError(session.error);
|
|
784
786
|
return;
|
|
785
787
|
case "redirect": {
|
|
786
|
-
const result = await
|
|
788
|
+
const result = await chunkVV7TFC64_cjs.leaveForRedirect(session.url);
|
|
787
789
|
if (!disposed && !result.ok) {
|
|
788
|
-
cbRef.current.onError(result.error ??
|
|
790
|
+
cbRef.current.onError(result.error ?? chunk7JLOF6CJ_cjs.checkoutError("canceled", "Checkout was canceled"));
|
|
789
791
|
}
|
|
790
792
|
return;
|
|
791
793
|
}
|
|
792
794
|
default:
|
|
793
795
|
cbRef.current.onError(
|
|
794
|
-
|
|
796
|
+
chunk7JLOF6CJ_cjs.checkoutError("processing_error", "unexpected step for a Paddle inline surface")
|
|
795
797
|
);
|
|
796
798
|
}
|
|
797
799
|
} catch (e) {
|
|
798
|
-
if (!disposed) cbRef.current.onError(
|
|
800
|
+
if (!disposed) cbRef.current.onError(chunkVV7TFC64_cjs.toCheckoutError(e));
|
|
799
801
|
}
|
|
800
802
|
})();
|
|
801
803
|
return () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/@paddle/paddle-js/dist/index.esm.js","../src/drivers/paddle.tsx"],"names":["n","r","t","e","i","a","c","o","u","h","p","CheckoutEventNames","CheckoutEventsTimePeriodInterval","CheckoutEventsPaymentMethodTypes","CheckoutEventsPaymentMethodCardTypes","CheckoutEventsStatus","checkoutError","completeWithPoll","postComplete","settlementToResult","postSession","leaveForRedirect","toCheckoutError","createElement","useState","useId","useRef","useEffect"],"mappings":"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","file":"driver-paddle.cjs","sourcesContent":["function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = _objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var s = Object.getOwnPropertySymbols(e);\n for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nfunction _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nfunction _regeneratorRuntime() {\n _regeneratorRuntime = function () {\n return e;\n };\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function (t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == typeof h && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function (t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator.return && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(typeof e + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function (e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function () {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function (e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function (t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function (t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function (t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n catch: function (t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function (e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\n\nvar Versions = {\n CLASSIC: 'classic',\n V1: 'v1'\n};\nvar DefaultVersion = Versions.V1;\nvar PaddleClassicCDNUrl = 'https://cdn.paddle.com/paddle/paddle.js';\nvar PaddleBillingCDNUrl = 'https://cdn.paddle.com/paddle/v2/paddle.js';\nvar PaddleClassicInfo = {\n url: PaddleClassicCDNUrl\n};\nvar PaddleBillingV1Info = {\n url: PaddleBillingCDNUrl\n};\n\nfunction findScript(cdnUrl) {\n return document.querySelector(\"script[src=\\\"\".concat(cdnUrl, \"\\\"]\")) || undefined;\n}\nfunction injectScript(src) {\n var script = document.createElement('script');\n script.src = src;\n var headOrBody = document.head || document.body;\n if (!headOrBody) {\n throw new Error('Cannot inject Paddle.js. It needs a <head> or <body> element.');\n }\n headOrBody.appendChild(script);\n return script;\n}\nvar promiseMap = {\n classic: undefined,\n v1: undefined\n};\nvar VersionToPaddleMap = {\n classic: 'PaddleClassic',\n v1: 'PaddleBillingV1'\n};\nfunction loadFromCDN(version) {\n var _getCDNInfoBasedOnVer;\n var cdnUrl = (_getCDNInfoBasedOnVer = getCDNInfoBasedOnVersion(version)) === null || _getCDNInfoBasedOnVer === void 0 ? void 0 : _getCDNInfoBasedOnVer.url;\n if (!cdnUrl) {\n return;\n }\n // Return promise on re-renders\n var existingPromise = promiseMap[version];\n var paddleInstanceName = VersionToPaddleMap[version];\n if (existingPromise !== undefined) {\n return existingPromise;\n }\n promiseMap[version] = new Promise(function (resolve, reject) {\n if (typeof window === 'undefined') {\n // Return undefined in a server side environment\n resolve(undefined);\n return;\n }\n // Return Paddle instance if it is already initialized\n if (window[paddleInstanceName]) {\n resolve(window[paddleInstanceName]);\n return;\n }\n try {\n // Inject if paddle.js script tag is not found\n var script = findScript(cdnUrl);\n if (!script) {\n script = injectScript(cdnUrl);\n }\n // Wait for `load` event before returning\n script.addEventListener('load', function () {\n if (window[paddleInstanceName]) {\n resolve(window[paddleInstanceName]);\n } else {\n reject(new Error('Paddle.js not available'));\n }\n });\n // Show an error if loading fails\n script.addEventListener('error', function () {\n reject(new Error(\"Failed to load Paddle.js - \".concat(version)));\n });\n } catch (error) {\n reject(error);\n return;\n }\n });\n return promiseMap[version];\n}\nfunction getCDNInfoBasedOnVersion(version) {\n if (version === Versions.CLASSIC) {\n return PaddleClassicInfo;\n }\n if (version === Versions.V1) {\n return PaddleBillingV1Info;\n } else {\n console.error('[Paddle] Unknown Paddle Version');\n return;\n }\n}\n\nvar _excluded = [\"environment\", \"version\"],\n _excluded2 = [\"environment\", \"version\"];\nfunction initializePaddleBillingV1(options, paddle) {\n var environment = options.environment;\n options.version;\n var rest = _objectWithoutProperties(options, _excluded);\n try {\n if (environment) {\n paddle.Environment.set(environment);\n }\n if (paddle.Initialized) {\n paddle.Update(_objectSpread2({}, rest));\n } else {\n paddle.Initialize(_objectSpread2({}, rest));\n }\n } catch (e) {\n console.warn('[Paddle] Paddle Initialization failed. Please check the inputs', e);\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction initializePaddleClassic(options, paddle) {\n var environment = options.environment;\n options.version;\n var rest = _objectWithoutProperties(options, _excluded2);\n try {\n if (environment) {\n paddle.Environment.set(environment);\n }\n paddle.Setup(_objectSpread2({}, rest));\n } catch (e) {\n console.warn('[Paddle] Paddle Initialization failed. Please check the inputs', e);\n }\n}\n\n// Note: The enums in this file is only for `src`. Typescript will also need it added to the `types` directory for usage.\nvar CheckoutEventNames;\n(function (CheckoutEventNames) {\n CheckoutEventNames[\"CHECKOUT_LOADED\"] = \"checkout.loaded\";\n CheckoutEventNames[\"CHECKOUT_CLOSED\"] = \"checkout.closed\";\n CheckoutEventNames[\"CHECKOUT_UPDATED\"] = \"checkout.updated\";\n CheckoutEventNames[\"CHECKOUT_COMPLETED\"] = \"checkout.completed\";\n CheckoutEventNames[\"CHECKOUT_ERROR\"] = \"checkout.error\";\n CheckoutEventNames[\"CHECKOUT_FAILED\"] = \"checkout.failed\";\n CheckoutEventNames[\"CHECKOUT_ITEMS_UPDATED\"] = \"checkout.items.updated\";\n CheckoutEventNames[\"CHECKOUT_ITEMS_REMOVED\"] = \"checkout.items.removed\";\n CheckoutEventNames[\"CHECKOUT_CUSTOMER_CREATED\"] = \"checkout.customer.created\";\n CheckoutEventNames[\"CHECKOUT_CUSTOMER_UPDATED\"] = \"checkout.customer.updated\";\n CheckoutEventNames[\"CHECKOUT_CUSTOMER_REMOVED\"] = \"checkout.customer.removed\";\n CheckoutEventNames[\"CHECKOUT_PAYMENT_SELECTED\"] = \"checkout.payment.selected\";\n CheckoutEventNames[\"CHECKOUT_PAYMENT_INITIATED\"] = \"checkout.payment.initiated\";\n CheckoutEventNames[\"CHECKOUT_PAYMENT_FAILED\"] = \"checkout.payment.failed\";\n CheckoutEventNames[\"CHECKOUT_PAYMENT_ERROR\"] = \"checkout.payment.error\";\n CheckoutEventNames[\"CHECKOUT_DISCOUNT_APPLIED\"] = \"checkout.discount.applied\";\n CheckoutEventNames[\"CHECKOUT_DISCOUNT_REMOVED\"] = \"checkout.discount.removed\";\n CheckoutEventNames[\"CHECKOUT_UPSELL_CANCELED\"] = \"checkout.upsell.canceled\";\n})(CheckoutEventNames || (CheckoutEventNames = {}));\nvar CheckoutEventsTimePeriodInterval;\n(function (CheckoutEventsTimePeriodInterval) {\n CheckoutEventsTimePeriodInterval[\"DAY\"] = \"day\";\n CheckoutEventsTimePeriodInterval[\"WEEK\"] = \"week\";\n CheckoutEventsTimePeriodInterval[\"MONTH\"] = \"month\";\n CheckoutEventsTimePeriodInterval[\"YEAR\"] = \"year\";\n})(CheckoutEventsTimePeriodInterval || (CheckoutEventsTimePeriodInterval = {}));\nvar CheckoutEventsPaymentMethodTypes;\n(function (CheckoutEventsPaymentMethodTypes) {\n CheckoutEventsPaymentMethodTypes[\"ALIPAY\"] = \"alipay\";\n CheckoutEventsPaymentMethodTypes[\"APPLE_PAY\"] = \"apple-pay\";\n CheckoutEventsPaymentMethodTypes[\"CARD\"] = \"card\";\n CheckoutEventsPaymentMethodTypes[\"GOOGLE_PAY\"] = \"google-pay\";\n CheckoutEventsPaymentMethodTypes[\"IDEAL\"] = \"ideal\";\n CheckoutEventsPaymentMethodTypes[\"PAYPAL\"] = \"paypal\";\n CheckoutEventsPaymentMethodTypes[\"WECHAT_PAY\"] = \"wechat-pay\";\n CheckoutEventsPaymentMethodTypes[\"WIRE_TRANSFER\"] = \"wire-transfer\";\n CheckoutEventsPaymentMethodTypes[\"NONE\"] = \"none\";\n})(CheckoutEventsPaymentMethodTypes || (CheckoutEventsPaymentMethodTypes = {}));\nvar CheckoutEventsPaymentMethodCardTypes;\n(function (CheckoutEventsPaymentMethodCardTypes) {\n CheckoutEventsPaymentMethodCardTypes[\"AMERICAN_EXPRESS\"] = \"american_express\";\n CheckoutEventsPaymentMethodCardTypes[\"DINERS_CLUB\"] = \"diners_club\";\n CheckoutEventsPaymentMethodCardTypes[\"DISCOVER\"] = \"discover\";\n CheckoutEventsPaymentMethodCardTypes[\"JCB\"] = \"jcb\";\n CheckoutEventsPaymentMethodCardTypes[\"MADA\"] = \"mada\";\n CheckoutEventsPaymentMethodCardTypes[\"MAESTRO\"] = \"maestro\";\n CheckoutEventsPaymentMethodCardTypes[\"MASTER_CARD\"] = \"mastercard\";\n CheckoutEventsPaymentMethodCardTypes[\"UNION_PAY\"] = \"union_pay\";\n CheckoutEventsPaymentMethodCardTypes[\"VISA\"] = \"visa\";\n CheckoutEventsPaymentMethodCardTypes[\"UNKNOWN\"] = \"unknown\";\n})(CheckoutEventsPaymentMethodCardTypes || (CheckoutEventsPaymentMethodCardTypes = {}));\nvar CheckoutEventsStatus;\n(function (CheckoutEventsStatus) {\n CheckoutEventsStatus[\"DRAFT\"] = \"draft\";\n CheckoutEventsStatus[\"READY\"] = \"ready\";\n CheckoutEventsStatus[\"COMPLETED\"] = \"completed\";\n CheckoutEventsStatus[\"BILLED\"] = \"billed\";\n CheckoutEventsStatus[\"canceled\"] = \"canceled\";\n CheckoutEventsStatus[\"PAST_DUE\"] = \"past_due\";\n})(CheckoutEventsStatus || (CheckoutEventsStatus = {}));\n\nfunction initializePaddle(_x) {\n return _initializePaddle.apply(this, arguments);\n}\nfunction _initializePaddle() {\n _initializePaddle = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(options) {\n var requestedVersion, paddle;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n requestedVersion = (options === null || options === void 0 ? void 0 : options.version) || DefaultVersion;\n _context.next = 3;\n return loadFromCDN(requestedVersion);\n case 3:\n paddle = _context.sent;\n if (!paddle) {\n _context.next = 9;\n break;\n }\n if (options) {\n if (requestedVersion === Versions.V1) {\n initializePaddleBillingV1(options, paddle);\n } else if (requestedVersion === Versions.CLASSIC) {\n initializePaddleClassic(options, paddle);\n }\n }\n return _context.abrupt(\"return\", paddle);\n case 9:\n console.error('[Paddle] Error Loading Paddle');\n return _context.abrupt(\"return\");\n case 11:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return _initializePaddle.apply(this, arguments);\n}\nfunction getPaddleInstance() {\n var version = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DefaultVersion;\n if (version === Versions.V1) {\n return window.PaddleBillingV1;\n } else if (version === Versions.CLASSIC) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return window.PaddleClassic;\n } else {\n console.error('[Paddle] Unknown Paddle Version');\n return;\n }\n}\n\nexport { CheckoutEventNames, CheckoutEventsPaymentMethodCardTypes, CheckoutEventsPaymentMethodTypes, CheckoutEventsStatus, CheckoutEventsTimePeriodInterval, getPaddleInstance, initializePaddle };\n","/**\n * `@appfunnel-dev/sdk/driver-paddle` — the Paddle {@link CheckoutDriver}.\n *\n * A separate subpath entry, mirroring driver-stripe: `@paddle/paddle-js` is an\n * OPTIONAL peer dep, imported **dynamically** only when a `provider_checkout`\n * step arrives — non-Paddle funnels never download it.\n *\n * Paddle is Merchant-of-Record and card entry is always Paddle's own frame\n * (capability matrix: `embedded`/`popup`/`redirect` only — no element/express/\n * sheet). The driver therefore never renders a payment form itself:\n * - `start` (popup/redirect triggers + off-session) → `Paddle.Checkout.open`\n * as an overlay, or the hosted page hand-off, or a server-settled result;\n * - `renderInline` (`embedded`) → the same open with `displayMode: 'inline'`\n * into our stable frame-target div.\n *\n * Paddle settles ASYNC (webhook → server writes the money facts), so after\n * `checkout.completed` the driver polls `…/complete` a bounded number of times;\n * a timeout is `retryable` and tells the buyer the receipt may still arrive by\n * email — the server's facts never depend on this browser.\n *\n * Paid trials are NATIVE on the Paddle price (doc 09 §4.4) — the driver does\n * nothing special for trials; the server resolves the trial-bearing price id.\n */\nimport { createElement, useEffect, useId, useRef, useState, type ReactNode } from 'react'\nimport { initializePaddle, type Paddle } from '@paddle/paddle-js'\nimport type {\n CheckoutCallbacks,\n CheckoutDriver,\n CheckoutDriverContext,\n CheckoutRequest,\n CheckoutResult,\n} from '../commerce/checkout'\nimport { checkoutError } from '../commerce/capabilities'\nimport type { StepProviderCheckout } from '../commerce/checkout-api'\nimport {\n completeWithPoll,\n leaveForRedirect,\n postComplete,\n postSession,\n settlementToResult,\n toCheckoutError,\n} from './wire'\n\nexport type { CheckoutDriver, CheckoutDriverContext } from '../commerce/checkout'\n\nconst PADDLE_TIMEOUT_MESSAGE =\n 'The payment is still being confirmed — if you completed checkout, your receipt will arrive by email.'\n\n// The off-session tail has no checkout the buyer \"completed\" — same retryable\n// semantics, but the message speaks to a server-side charge still in flight.\nconst PADDLE_PENDING_TIMEOUT_MESSAGE =\n 'The charge is still being confirmed — it may still complete; please check back shortly.'\n\n// paddle.js has ONE global event callback (registered at initializePaddle time,\n// not per-open), so completion events fan out to per-attempt listeners here. Each\n// listener DISCRIMINATES by the event payload's `custom_data.af_correlation_id`\n// (the id our server stamps into every checkout's customData) — without it, any\n// concurrent listener would accept any attempt's completion (cross-talk).\ntype PaddleEvent = {\n name?: string\n data?: { custom_data?: Record<string, unknown> | object | null; transaction_id?: string }\n}\nconst listeners = new Set<(event: PaddleEvent) => void>()\n\n/**\n * Does this event belong to the attempt identified by `correlationId`?\n *\n * ITEMS path (`transactionId` undefined): `@paddle/paddle-js` types (checked\n * 2026-07-03): `PaddleEventData.data` is `CheckoutEventsData` whose\n * `custom_data?: object | null` echoes the checkout's custom data — OUR item\n * checkouts always open with `af_correlation_id` in it (paddle-checkout.ts), so a\n * mismatch is definitively another attempt/integration and is rejected.\n * `custom_data` IS nullable in the payload type though, so a genuinely absent\n * block falls back to ACCEPT: Paddle.js renders one checkout per page at a time,\n * and stranding the only live attempt on a missing echo would regress\n * dismissal/settlement into a stuck `loading` state.\n *\n * EXISTING-TRANSACTION path (`transactionId` set — the wire's transactionId\n * provider_checkout, e.g. Paddle's payment-method-change re-collect): custom_data\n * CANNOT discriminate here — the transaction already exists provider-side and a\n * payment-method-change transaction INHERITS the subscription's custom data, i.e.\n * the ORIGINAL purchase's `af_correlation_id` (verified against the Paddle model\n * 2026-07-04; same inheritance paddle-upsell.ts documents for subscription\n * charge/update transactions) — matching on it would wrongly REJECT our own\n * completion. `CheckoutEventsData.transaction_id` (non-optional in the paddle-js\n * types) is the truthful discriminator instead: the event is ours iff it carries\n * the very transaction id we opened; an absent echo falls back to ACCEPT for the\n * same one-checkout-per-page reason as above.\n */\nfunction eventMatchesAttempt(event: PaddleEvent, correlationId: string, transactionId?: string): boolean {\n if (transactionId) {\n const eventTransactionId = event.data?.transaction_id\n if (eventTransactionId == null) return true\n return eventTransactionId === transactionId\n }\n const customData = event.data?.custom_data as Record<string, unknown> | null | undefined\n if (customData == null) return true\n return customData.af_correlation_id === correlationId\n}\n\n// C8: the double-charge window. Paddle settles via webhook, so a slow webhook can\n// time the completion poll out while the charge is still landing — remember the\n// attempt per (product, intent) and let the NEXT start() for the same pair verify\n// it (one /complete) before opening a second checkout. In-memory per page load on\n// purpose: the double-click-after-timeout window IS a single page load.\nconst pendingTimeouts = new Map<string, string>()\nconst pendingKeyOf = (req: CheckoutRequest) => `${req.product}::${req.intent}`\n\n/** Remember a poll-exhausted attempt (still pending server-side) for the guard above. */\nfunction rememberIfStillPending(req: CheckoutRequest, correlationId: string, result: CheckoutResult): CheckoutResult {\n if (!result.ok && result.error?.declineCode === 'completion_timeout') {\n pendingTimeouts.set(pendingKeyOf(req), correlationId)\n }\n return result\n}\n\n/** TEST-ONLY: clear the page-load-scoped pending-attempt memory (mirrors __resetContextCache). */\nexport function __resetPaddleDriverState(): void {\n pendingTimeouts.clear()\n}\n\n// One Paddle instance per (environment, token) for the page's lifetime —\n// re-initializing per attempt would inject the script again and stack event\n// callbacks (double-firing completions).\nconst paddleInstances = new Map<string, Promise<Paddle | undefined>>()\n\nfunction getPaddle(clientToken: string, environment: 'sandbox' | 'production'): Promise<Paddle | undefined> {\n const key = `${environment}:${clientToken}`\n let instance = paddleInstances.get(key)\n if (!instance) {\n // initializePaddle is statically imported (direct dep); it still injects paddle.js from\n // Paddle's CDN lazily on first call — only into funnels that import this driver.\n instance = initializePaddle({\n token: clientToken,\n environment,\n eventCallback: (event) => {\n // Copy before iterating — listeners remove themselves on completion. The\n // data payload rides along so listeners can discriminate by custom_data.\n for (const listener of Array.from(listeners)) listener({ name: event.name, data: event.data })\n },\n })\n paddleInstances.set(key, instance)\n }\n return instance\n}\n\n/**\n * Open Paddle's checkout (overlay or inline) and resolve when the attempt ends:\n * `checkout.completed` → server-verified settlement (bounded poll — MoR/async),\n * `checkout.closed` before completing → `canceled`.\n *\n * The wire step carries EXACTLY ONE of `items` | `transactionId` (checkout-api.ts):\n * items opens a NEW checkout for the resolved prices; transactionId opens Paddle's\n * checkout for an EXISTING server-created transaction (`Checkout.open({ transactionId })`,\n * verified against @paddle/paddle-js 1.6.4's CheckoutOpenOptions union — e.g. the\n * payment-method-change transaction of an upgrade recovery). Completion/close/poll\n * handling is identical; only the event discrimination differs (see\n * {@link eventMatchesAttempt}).\n */\nasync function openCheckout(\n ctx: CheckoutDriverContext,\n session: StepProviderCheckout,\n correlationId: string,\n display:\n | { displayMode: 'overlay' }\n | { displayMode: 'inline'; frameTarget: string; frameInitialHeight: number; frameStyle: string },\n): Promise<CheckoutResult> {\n if (!session.transactionId && !session.items) {\n // Exactly-one contract violated — nothing openable arrived.\n return {\n ok: false,\n error: checkoutError('processing_error', 'provider_checkout carried neither items nor a transactionId'),\n }\n }\n const paddle = await getPaddle(session.clientToken, session.providerEnvironment)\n if (!paddle) {\n return { ok: false, error: checkoutError('processing_error', 'Paddle.js failed to initialize') }\n }\n return await new Promise<CheckoutResult>((resolve) => {\n let done = false\n const listener = (event: PaddleEvent) => {\n if (done) return\n // Only THIS attempt's events resolve this attempt (custom_data discrimination\n // for item checkouts, transaction-id discrimination for existing transactions).\n if (!eventMatchesAttempt(event, correlationId, session.transactionId)) return\n if (event.name === 'checkout.completed') {\n done = true\n listeners.delete(listener)\n // Paddle settles via webhook — give it a real window (~10×3s) before giving\n // up; a shorter poll times out on ordinary webhook latency and invites the\n // buyer to re-buy while the first charge is still landing (double-charge).\n void completeWithPoll(ctx, correlationId, {\n attempts: 10,\n intervalMs: 3000,\n timeoutMessage: PADDLE_TIMEOUT_MESSAGE,\n }).then(resolve)\n } else if (event.name === 'checkout.closed') {\n done = true\n listeners.delete(listener)\n resolve({ ok: false, error: checkoutError('canceled', 'Checkout was closed before completing') })\n }\n }\n listeners.add(listener)\n if (session.transactionId) {\n // An EXISTING transaction (e.g. payment-method-change): it already carries its\n // own custom data provider-side — sending customData here could clobber the\n // subscription-inherited attribution keys, so only the id and presentation go.\n paddle.Checkout.open({ transactionId: session.transactionId, settings: display })\n } else {\n paddle.Checkout.open({\n // Provider-native line items resolved by the server from the binding —\n // the browser never sees or chooses raw price ids beyond passing these through.\n items: session.items!,\n // Carries the correlationId into Paddle's transaction custom data — the\n // webhook links back to this attempt through it.\n customData: session.customData,\n settings: display,\n })\n }\n })\n}\n\n/** Build the Paddle checkout driver for a funnel mount (pass to `createFunnelTree`). */\nexport function paddleCheckoutDriver(ctx: CheckoutDriverContext): CheckoutDriver {\n return {\n provider: 'paddle',\n async start(req: CheckoutRequest): Promise<CheckoutResult> {\n // Double-charge guard (C8): a previous attempt for the SAME (product, intent)\n // timed out still-pending — verify IT first. Settled ⇒ that charge landed;\n // resolve with it instead of charging again. Failed/still-absent ⇒ fresh start.\n const priorKey = pendingKeyOf(req)\n const prior = pendingTimeouts.get(priorKey)\n if (prior) {\n pendingTimeouts.delete(priorKey)\n try {\n const check = await postComplete(ctx, prior)\n if (check.step === 'settled') return settlementToResult(check.result)\n } catch {\n // Unreachable/absent — proceed with a fresh attempt.\n }\n }\n const correlationId = crypto.randomUUID()\n try {\n const session = await postSession(ctx, req, correlationId)\n switch (session.step) {\n case 'settled': // off-session upsell (upgrade/one-time) — server charged via Paddle API\n return settlementToResult(session.result)\n case 'pending':\n // Off-session tail (MoR/async): Paddle's confirmation outlasted the open\n // request — the attempt stays PENDING server-side. Converge on the webhook\n // through the same bounded /complete poll the overlay path uses.\n return rememberIfStillPending(\n req,\n correlationId,\n await completeWithPoll(ctx, correlationId, {\n timeoutMessage: PADDLE_PENDING_TIMEOUT_MESSAGE,\n }),\n )\n case 'failed':\n return { ok: false, error: session.error }\n case 'redirect':\n return leaveForRedirect(session.url)\n case 'provider_checkout':\n return rememberIfStillPending(\n req,\n correlationId,\n await openCheckout(ctx, session, correlationId, { displayMode: 'overlay' }),\n )\n default:\n return {\n ok: false,\n error: checkoutError(\n 'processing_error',\n `Paddle returned '${session.step}' for a trigger start — Paddle has no in-page confirm step`,\n ),\n }\n }\n } catch (e) {\n return { ok: false, error: toCheckoutError(e) }\n }\n },\n renderInline(req: CheckoutRequest, cb: CheckoutCallbacks): ReactNode {\n return createElement(PaddleInline, { ctx, req, cb })\n },\n // Redirect-return resume: verify an existing attempt. Webhook-dependent, so it\n // gets the same ~10×3s window the overlay completion poll uses.\n resume(correlationId: string): Promise<CheckoutResult> {\n return completeWithPoll(ctx, correlationId, {\n attempts: 10,\n intervalMs: 3000,\n timeoutMessage: PADDLE_TIMEOUT_MESSAGE,\n })\n },\n }\n}\n\n// ── Inline surface (`embedded` — Paddle's frame in our container) ────────────\n\nfunction PaddleInline({\n ctx,\n req,\n cb,\n}: {\n ctx: CheckoutDriverContext\n req: CheckoutRequest\n cb: CheckoutCallbacks\n}): ReactNode {\n // One correlation/idempotency id per MOUNTED surface (product change remounts).\n const [correlationId] = useState(() => crypto.randomUUID())\n // Paddle mounts its inline frame into the FIRST element carrying the frameTarget\n // class — derive a per-instance class from useId (SSR-stable → hydration-safe)\n // so two surfaces on one page can't collide. Sanitized: useId emits ':r0:'.\n const uid = useId().replace(/[^a-zA-Z0-9_-]/g, '')\n const frameClass = `af-paddle-frame-${uid}`\n const cbRef = useRef(cb)\n cbRef.current = cb\n\n useEffect(() => {\n let disposed = false\n void (async () => {\n try {\n const session = await postSession(ctx, req, correlationId)\n if (disposed) return\n switch (session.step) {\n case 'provider_checkout': {\n // Card entry lives inside Paddle's frame (no observable submit) — the\n // inline checkout OPENING is the closest user-intent signal, so it is\n // when `checkout.start` fires for this surface (C5, documented choice).\n cbRef.current.onStart?.()\n const result = await openCheckout(ctx, session, correlationId, {\n displayMode: 'inline',\n frameTarget: frameClass,\n frameInitialHeight: 450,\n // Paddle's documented inline-frame baseline: fluid width, no chrome.\n frameStyle: 'width: 100%; min-width: 286px; background-color: transparent; border: none;',\n })\n if (disposed) return\n if (result.ok) cbRef.current.onSuccess(result)\n else cbRef.current.onError(result.error ?? checkoutError('unknown', 'Checkout failed'))\n return\n }\n case 'settled': // defensive — a surfaced attempt shouldn't settle server-side\n cbRef.current.onSuccess(settlementToResult(session.result))\n return\n case 'failed':\n cbRef.current.onError(session.error)\n return\n case 'redirect': {\n // The binding may force the hosted page even for an inline author. The\n // hand-off settles only on a bfcache Back-return (canceled) — report it\n // so the placeholder recovers instead of spinning forever.\n const result = await leaveForRedirect(session.url)\n if (!disposed && !result.ok) {\n cbRef.current.onError(result.error ?? checkoutError('canceled', 'Checkout was canceled'))\n }\n return\n }\n default:\n cbRef.current.onError(\n checkoutError('processing_error', 'unexpected step for a Paddle inline surface'),\n )\n }\n } catch (e) {\n if (!disposed) cbRef.current.onError(toCheckoutError(e))\n }\n })()\n return () => {\n disposed = true\n }\n // One attempt per mount by design (see correlationId) — deps intentionally empty.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n // The stable frame-target container — identical on SSR and first client paint\n // (Paddle injects its iframe into it client-side only). Hydration-safe.\n return createElement('div', {\n 'data-appfunnel-checkout': 'paddle',\n 'data-checkout-surface': req.surface,\n className: frameClass,\n })\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/@paddle/paddle-js/dist/index.esm.js","../src/drivers/paddle.tsx"],"names":["n","r","t","e","i","a","c","o","u","h","p","CheckoutEventNames","CheckoutEventsTimePeriodInterval","CheckoutEventsPaymentMethodTypes","CheckoutEventsPaymentMethodCardTypes","CheckoutEventsStatus","checkoutError","completeWithPoll","postComplete","settlementToResult","postSession","leaveForRedirect","toCheckoutError","createElement","useState","useId","useRef","useEffect"],"mappings":"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","file":"driver-paddle.cjs","sourcesContent":["function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = _objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var s = Object.getOwnPropertySymbols(e);\n for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nfunction _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nfunction _regeneratorRuntime() {\n _regeneratorRuntime = function () {\n return e;\n };\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function (t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == typeof h && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function (t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator.return && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(typeof e + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function (e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function () {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function (e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function (t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function (t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function (t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n catch: function (t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function (e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\n\nvar Versions = {\n CLASSIC: 'classic',\n V1: 'v1'\n};\nvar DefaultVersion = Versions.V1;\nvar PaddleClassicCDNUrl = 'https://cdn.paddle.com/paddle/paddle.js';\nvar PaddleBillingCDNUrl = 'https://cdn.paddle.com/paddle/v2/paddle.js';\nvar PaddleClassicInfo = {\n url: PaddleClassicCDNUrl\n};\nvar PaddleBillingV1Info = {\n url: PaddleBillingCDNUrl\n};\n\nfunction findScript(cdnUrl) {\n return document.querySelector(\"script[src=\\\"\".concat(cdnUrl, \"\\\"]\")) || undefined;\n}\nfunction injectScript(src) {\n var script = document.createElement('script');\n script.src = src;\n var headOrBody = document.head || document.body;\n if (!headOrBody) {\n throw new Error('Cannot inject Paddle.js. It needs a <head> or <body> element.');\n }\n headOrBody.appendChild(script);\n return script;\n}\nvar promiseMap = {\n classic: undefined,\n v1: undefined\n};\nvar VersionToPaddleMap = {\n classic: 'PaddleClassic',\n v1: 'PaddleBillingV1'\n};\nfunction loadFromCDN(version) {\n var _getCDNInfoBasedOnVer;\n var cdnUrl = (_getCDNInfoBasedOnVer = getCDNInfoBasedOnVersion(version)) === null || _getCDNInfoBasedOnVer === void 0 ? void 0 : _getCDNInfoBasedOnVer.url;\n if (!cdnUrl) {\n return;\n }\n // Return promise on re-renders\n var existingPromise = promiseMap[version];\n var paddleInstanceName = VersionToPaddleMap[version];\n if (existingPromise !== undefined) {\n return existingPromise;\n }\n promiseMap[version] = new Promise(function (resolve, reject) {\n if (typeof window === 'undefined') {\n // Return undefined in a server side environment\n resolve(undefined);\n return;\n }\n // Return Paddle instance if it is already initialized\n if (window[paddleInstanceName]) {\n resolve(window[paddleInstanceName]);\n return;\n }\n try {\n // Inject if paddle.js script tag is not found\n var script = findScript(cdnUrl);\n if (!script) {\n script = injectScript(cdnUrl);\n }\n // Wait for `load` event before returning\n script.addEventListener('load', function () {\n if (window[paddleInstanceName]) {\n resolve(window[paddleInstanceName]);\n } else {\n reject(new Error('Paddle.js not available'));\n }\n });\n // Show an error if loading fails\n script.addEventListener('error', function () {\n reject(new Error(\"Failed to load Paddle.js - \".concat(version)));\n });\n } catch (error) {\n reject(error);\n return;\n }\n });\n return promiseMap[version];\n}\nfunction getCDNInfoBasedOnVersion(version) {\n if (version === Versions.CLASSIC) {\n return PaddleClassicInfo;\n }\n if (version === Versions.V1) {\n return PaddleBillingV1Info;\n } else {\n console.error('[Paddle] Unknown Paddle Version');\n return;\n }\n}\n\nvar _excluded = [\"environment\", \"version\"],\n _excluded2 = [\"environment\", \"version\"];\nfunction initializePaddleBillingV1(options, paddle) {\n var environment = options.environment;\n options.version;\n var rest = _objectWithoutProperties(options, _excluded);\n try {\n if (environment) {\n paddle.Environment.set(environment);\n }\n if (paddle.Initialized) {\n paddle.Update(_objectSpread2({}, rest));\n } else {\n paddle.Initialize(_objectSpread2({}, rest));\n }\n } catch (e) {\n console.warn('[Paddle] Paddle Initialization failed. Please check the inputs', e);\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction initializePaddleClassic(options, paddle) {\n var environment = options.environment;\n options.version;\n var rest = _objectWithoutProperties(options, _excluded2);\n try {\n if (environment) {\n paddle.Environment.set(environment);\n }\n paddle.Setup(_objectSpread2({}, rest));\n } catch (e) {\n console.warn('[Paddle] Paddle Initialization failed. Please check the inputs', e);\n }\n}\n\n// Note: The enums in this file is only for `src`. Typescript will also need it added to the `types` directory for usage.\nvar CheckoutEventNames;\n(function (CheckoutEventNames) {\n CheckoutEventNames[\"CHECKOUT_LOADED\"] = \"checkout.loaded\";\n CheckoutEventNames[\"CHECKOUT_CLOSED\"] = \"checkout.closed\";\n CheckoutEventNames[\"CHECKOUT_UPDATED\"] = \"checkout.updated\";\n CheckoutEventNames[\"CHECKOUT_COMPLETED\"] = \"checkout.completed\";\n CheckoutEventNames[\"CHECKOUT_ERROR\"] = \"checkout.error\";\n CheckoutEventNames[\"CHECKOUT_FAILED\"] = \"checkout.failed\";\n CheckoutEventNames[\"CHECKOUT_ITEMS_UPDATED\"] = \"checkout.items.updated\";\n CheckoutEventNames[\"CHECKOUT_ITEMS_REMOVED\"] = \"checkout.items.removed\";\n CheckoutEventNames[\"CHECKOUT_CUSTOMER_CREATED\"] = \"checkout.customer.created\";\n CheckoutEventNames[\"CHECKOUT_CUSTOMER_UPDATED\"] = \"checkout.customer.updated\";\n CheckoutEventNames[\"CHECKOUT_CUSTOMER_REMOVED\"] = \"checkout.customer.removed\";\n CheckoutEventNames[\"CHECKOUT_PAYMENT_SELECTED\"] = \"checkout.payment.selected\";\n CheckoutEventNames[\"CHECKOUT_PAYMENT_INITIATED\"] = \"checkout.payment.initiated\";\n CheckoutEventNames[\"CHECKOUT_PAYMENT_FAILED\"] = \"checkout.payment.failed\";\n CheckoutEventNames[\"CHECKOUT_PAYMENT_ERROR\"] = \"checkout.payment.error\";\n CheckoutEventNames[\"CHECKOUT_DISCOUNT_APPLIED\"] = \"checkout.discount.applied\";\n CheckoutEventNames[\"CHECKOUT_DISCOUNT_REMOVED\"] = \"checkout.discount.removed\";\n CheckoutEventNames[\"CHECKOUT_UPSELL_CANCELED\"] = \"checkout.upsell.canceled\";\n})(CheckoutEventNames || (CheckoutEventNames = {}));\nvar CheckoutEventsTimePeriodInterval;\n(function (CheckoutEventsTimePeriodInterval) {\n CheckoutEventsTimePeriodInterval[\"DAY\"] = \"day\";\n CheckoutEventsTimePeriodInterval[\"WEEK\"] = \"week\";\n CheckoutEventsTimePeriodInterval[\"MONTH\"] = \"month\";\n CheckoutEventsTimePeriodInterval[\"YEAR\"] = \"year\";\n})(CheckoutEventsTimePeriodInterval || (CheckoutEventsTimePeriodInterval = {}));\nvar CheckoutEventsPaymentMethodTypes;\n(function (CheckoutEventsPaymentMethodTypes) {\n CheckoutEventsPaymentMethodTypes[\"ALIPAY\"] = \"alipay\";\n CheckoutEventsPaymentMethodTypes[\"APPLE_PAY\"] = \"apple-pay\";\n CheckoutEventsPaymentMethodTypes[\"CARD\"] = \"card\";\n CheckoutEventsPaymentMethodTypes[\"GOOGLE_PAY\"] = \"google-pay\";\n CheckoutEventsPaymentMethodTypes[\"IDEAL\"] = \"ideal\";\n CheckoutEventsPaymentMethodTypes[\"PAYPAL\"] = \"paypal\";\n CheckoutEventsPaymentMethodTypes[\"WECHAT_PAY\"] = \"wechat-pay\";\n CheckoutEventsPaymentMethodTypes[\"WIRE_TRANSFER\"] = \"wire-transfer\";\n CheckoutEventsPaymentMethodTypes[\"NONE\"] = \"none\";\n})(CheckoutEventsPaymentMethodTypes || (CheckoutEventsPaymentMethodTypes = {}));\nvar CheckoutEventsPaymentMethodCardTypes;\n(function (CheckoutEventsPaymentMethodCardTypes) {\n CheckoutEventsPaymentMethodCardTypes[\"AMERICAN_EXPRESS\"] = \"american_express\";\n CheckoutEventsPaymentMethodCardTypes[\"DINERS_CLUB\"] = \"diners_club\";\n CheckoutEventsPaymentMethodCardTypes[\"DISCOVER\"] = \"discover\";\n CheckoutEventsPaymentMethodCardTypes[\"JCB\"] = \"jcb\";\n CheckoutEventsPaymentMethodCardTypes[\"MADA\"] = \"mada\";\n CheckoutEventsPaymentMethodCardTypes[\"MAESTRO\"] = \"maestro\";\n CheckoutEventsPaymentMethodCardTypes[\"MASTER_CARD\"] = \"mastercard\";\n CheckoutEventsPaymentMethodCardTypes[\"UNION_PAY\"] = \"union_pay\";\n CheckoutEventsPaymentMethodCardTypes[\"VISA\"] = \"visa\";\n CheckoutEventsPaymentMethodCardTypes[\"UNKNOWN\"] = \"unknown\";\n})(CheckoutEventsPaymentMethodCardTypes || (CheckoutEventsPaymentMethodCardTypes = {}));\nvar CheckoutEventsStatus;\n(function (CheckoutEventsStatus) {\n CheckoutEventsStatus[\"DRAFT\"] = \"draft\";\n CheckoutEventsStatus[\"READY\"] = \"ready\";\n CheckoutEventsStatus[\"COMPLETED\"] = \"completed\";\n CheckoutEventsStatus[\"BILLED\"] = \"billed\";\n CheckoutEventsStatus[\"canceled\"] = \"canceled\";\n CheckoutEventsStatus[\"PAST_DUE\"] = \"past_due\";\n})(CheckoutEventsStatus || (CheckoutEventsStatus = {}));\n\nfunction initializePaddle(_x) {\n return _initializePaddle.apply(this, arguments);\n}\nfunction _initializePaddle() {\n _initializePaddle = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(options) {\n var requestedVersion, paddle;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n requestedVersion = (options === null || options === void 0 ? void 0 : options.version) || DefaultVersion;\n _context.next = 3;\n return loadFromCDN(requestedVersion);\n case 3:\n paddle = _context.sent;\n if (!paddle) {\n _context.next = 9;\n break;\n }\n if (options) {\n if (requestedVersion === Versions.V1) {\n initializePaddleBillingV1(options, paddle);\n } else if (requestedVersion === Versions.CLASSIC) {\n initializePaddleClassic(options, paddle);\n }\n }\n return _context.abrupt(\"return\", paddle);\n case 9:\n console.error('[Paddle] Error Loading Paddle');\n return _context.abrupt(\"return\");\n case 11:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return _initializePaddle.apply(this, arguments);\n}\nfunction getPaddleInstance() {\n var version = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DefaultVersion;\n if (version === Versions.V1) {\n return window.PaddleBillingV1;\n } else if (version === Versions.CLASSIC) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return window.PaddleClassic;\n } else {\n console.error('[Paddle] Unknown Paddle Version');\n return;\n }\n}\n\nexport { CheckoutEventNames, CheckoutEventsPaymentMethodCardTypes, CheckoutEventsPaymentMethodTypes, CheckoutEventsStatus, CheckoutEventsTimePeriodInterval, getPaddleInstance, initializePaddle };\n","/**\n * `@appfunnel-dev/sdk/driver-paddle` — the Paddle {@link CheckoutDriver}.\n *\n * A separate subpath entry, mirroring driver-stripe: `@paddle/paddle-js` is an\n * OPTIONAL peer dep, imported **dynamically** only when a `provider_checkout`\n * step arrives — non-Paddle funnels never download it.\n *\n * Paddle is Merchant-of-Record and card entry is always Paddle's own frame\n * (capability matrix: `embedded`/`express`/`popup`/`redirect` — no element/sheet).\n * The driver therefore never renders a payment form itself:\n * - `start` (popup/redirect triggers + off-session) → `Paddle.Checkout.open`\n * as an overlay, or the hosted page hand-off, or a server-settled result;\n * - `renderInline` (`embedded`/`express`) → the same open with `displayMode:\n * 'inline'` into our stable frame-target div; `express` adds `variant: 'express'`\n * for Paddle's Apple-Pay-first Express Checkout (shipped 2026-04-27).\n *\n * Paddle settles ASYNC (webhook → server writes the money facts), so after\n * `checkout.completed` the driver polls `…/complete` a bounded number of times;\n * a timeout is `retryable` and tells the buyer the receipt may still arrive by\n * email — the server's facts never depend on this browser.\n *\n * Paid trials are NATIVE on the Paddle price (doc 09 §4.4) — the driver does\n * nothing special for trials; the server resolves the trial-bearing price id.\n */\nimport { createElement, useEffect, useId, useRef, useState, type ReactNode } from 'react'\nimport { initializePaddle, type Paddle } from '@paddle/paddle-js'\nimport type {\n CheckoutCallbacks,\n CheckoutDriver,\n CheckoutDriverContext,\n CheckoutRequest,\n CheckoutResult,\n} from '../commerce/checkout'\nimport { checkoutError } from '../commerce/capabilities'\nimport type { StepProviderCheckout } from '../commerce/checkout-api'\nimport {\n completeWithPoll,\n leaveForRedirect,\n postComplete,\n postSession,\n settlementToResult,\n toCheckoutError,\n} from './wire'\n\nexport type { CheckoutDriver, CheckoutDriverContext } from '../commerce/checkout'\n\nconst PADDLE_TIMEOUT_MESSAGE =\n 'The payment is still being confirmed — if you completed checkout, your receipt will arrive by email.'\n\n// The off-session tail has no checkout the buyer \"completed\" — same retryable\n// semantics, but the message speaks to a server-side charge still in flight.\nconst PADDLE_PENDING_TIMEOUT_MESSAGE =\n 'The charge is still being confirmed — it may still complete; please check back shortly.'\n\n// paddle.js has ONE global event callback (registered at initializePaddle time,\n// not per-open), so completion events fan out to per-attempt listeners here. Each\n// listener DISCRIMINATES by the event payload's `custom_data.af_correlation_id`\n// (the id our server stamps into every checkout's customData) — without it, any\n// concurrent listener would accept any attempt's completion (cross-talk).\ntype PaddleEvent = {\n name?: string\n data?: { custom_data?: Record<string, unknown> | object | null; transaction_id?: string }\n}\nconst listeners = new Set<(event: PaddleEvent) => void>()\n\n/**\n * Does this event belong to the attempt identified by `correlationId`?\n *\n * ITEMS path (`transactionId` undefined): `@paddle/paddle-js` types (checked\n * 2026-07-03): `PaddleEventData.data` is `CheckoutEventsData` whose\n * `custom_data?: object | null` echoes the checkout's custom data — OUR item\n * checkouts always open with `af_correlation_id` in it (paddle-checkout.ts), so a\n * mismatch is definitively another attempt/integration and is rejected.\n * `custom_data` IS nullable in the payload type though, so a genuinely absent\n * block falls back to ACCEPT: Paddle.js renders one checkout per page at a time,\n * and stranding the only live attempt on a missing echo would regress\n * dismissal/settlement into a stuck `loading` state.\n *\n * EXISTING-TRANSACTION path (`transactionId` set — the wire's transactionId\n * provider_checkout, e.g. Paddle's payment-method-change re-collect): custom_data\n * CANNOT discriminate here — the transaction already exists provider-side and a\n * payment-method-change transaction INHERITS the subscription's custom data, i.e.\n * the ORIGINAL purchase's `af_correlation_id` (verified against the Paddle model\n * 2026-07-04; same inheritance paddle-upsell.ts documents for subscription\n * charge/update transactions) — matching on it would wrongly REJECT our own\n * completion. `CheckoutEventsData.transaction_id` (non-optional in the paddle-js\n * types) is the truthful discriminator instead: the event is ours iff it carries\n * the very transaction id we opened; an absent echo falls back to ACCEPT for the\n * same one-checkout-per-page reason as above.\n */\nfunction eventMatchesAttempt(event: PaddleEvent, correlationId: string, transactionId?: string): boolean {\n if (transactionId) {\n const eventTransactionId = event.data?.transaction_id\n if (eventTransactionId == null) return true\n return eventTransactionId === transactionId\n }\n const customData = event.data?.custom_data as Record<string, unknown> | null | undefined\n if (customData == null) return true\n return customData.af_correlation_id === correlationId\n}\n\n// C8: the double-charge window. Paddle settles via webhook, so a slow webhook can\n// time the completion poll out while the charge is still landing — remember the\n// attempt per (product, intent) and let the NEXT start() for the same pair verify\n// it (one /complete) before opening a second checkout. In-memory per page load on\n// purpose: the double-click-after-timeout window IS a single page load.\nconst pendingTimeouts = new Map<string, string>()\nconst pendingKeyOf = (req: CheckoutRequest) => `${req.product}::${req.intent}`\n\n/** Remember a poll-exhausted attempt (still pending server-side) for the guard above. */\nfunction rememberIfStillPending(req: CheckoutRequest, correlationId: string, result: CheckoutResult): CheckoutResult {\n if (!result.ok && result.error?.declineCode === 'completion_timeout') {\n pendingTimeouts.set(pendingKeyOf(req), correlationId)\n }\n return result\n}\n\n/** TEST-ONLY: clear the page-load-scoped pending-attempt memory (mirrors __resetContextCache). */\nexport function __resetPaddleDriverState(): void {\n pendingTimeouts.clear()\n}\n\n// One Paddle instance per (environment, token) for the page's lifetime —\n// re-initializing per attempt would inject the script again and stack event\n// callbacks (double-firing completions).\nconst paddleInstances = new Map<string, Promise<Paddle | undefined>>()\n\nfunction getPaddle(clientToken: string, environment: 'sandbox' | 'production'): Promise<Paddle | undefined> {\n const key = `${environment}:${clientToken}`\n let instance = paddleInstances.get(key)\n if (!instance) {\n // initializePaddle is statically imported (direct dep); it still injects paddle.js from\n // Paddle's CDN lazily on first call — only into funnels that import this driver.\n instance = initializePaddle({\n token: clientToken,\n environment,\n eventCallback: (event) => {\n // Copy before iterating — listeners remove themselves on completion. The\n // data payload rides along so listeners can discriminate by custom_data.\n for (const listener of Array.from(listeners)) listener({ name: event.name, data: event.data })\n },\n })\n paddleInstances.set(key, instance)\n }\n return instance\n}\n\n/**\n * Open Paddle's checkout (overlay or inline) and resolve when the attempt ends:\n * `checkout.completed` → server-verified settlement (bounded poll — MoR/async),\n * `checkout.closed` before completing → `canceled`.\n *\n * The wire step carries EXACTLY ONE of `items` | `transactionId` (checkout-api.ts):\n * items opens a NEW checkout for the resolved prices; transactionId opens Paddle's\n * checkout for an EXISTING server-created transaction (`Checkout.open({ transactionId })`,\n * verified against @paddle/paddle-js 1.6.4's CheckoutOpenOptions union — e.g. the\n * payment-method-change transaction of an upgrade recovery). Completion/close/poll\n * handling is identical; only the event discrimination differs (see\n * {@link eventMatchesAttempt}).\n */\nasync function openCheckout(\n ctx: CheckoutDriverContext,\n session: StepProviderCheckout,\n correlationId: string,\n display:\n | { displayMode: 'overlay' }\n | {\n displayMode: 'inline'\n frameTarget: string\n frameInitialHeight: number\n frameStyle: string\n // Paddle **Express Checkout** (Apple-Pay-first) — `variant: 'express'` on an INLINE frame\n // (the changelog's requirement; `Variant` is a real @paddle/paddle-js CheckoutSettings field).\n // Omitted for the standard `embedded` inline frame.\n variant?: 'express'\n },\n): Promise<CheckoutResult> {\n if (!session.transactionId && !session.items) {\n // Exactly-one contract violated — nothing openable arrived.\n return {\n ok: false,\n error: checkoutError('processing_error', 'provider_checkout carried neither items nor a transactionId'),\n }\n }\n const paddle = await getPaddle(session.clientToken, session.providerEnvironment)\n if (!paddle) {\n return { ok: false, error: checkoutError('processing_error', 'Paddle.js failed to initialize') }\n }\n return await new Promise<CheckoutResult>((resolve) => {\n let done = false\n const listener = (event: PaddleEvent) => {\n if (done) return\n // Only THIS attempt's events resolve this attempt (custom_data discrimination\n // for item checkouts, transaction-id discrimination for existing transactions).\n if (!eventMatchesAttempt(event, correlationId, session.transactionId)) return\n if (event.name === 'checkout.completed') {\n done = true\n listeners.delete(listener)\n // Paddle settles via webhook — give it a real window (~10×3s) before giving\n // up; a shorter poll times out on ordinary webhook latency and invites the\n // buyer to re-buy while the first charge is still landing (double-charge).\n void completeWithPoll(ctx, correlationId, {\n attempts: 10,\n intervalMs: 3000,\n timeoutMessage: PADDLE_TIMEOUT_MESSAGE,\n }).then(resolve)\n } else if (event.name === 'checkout.closed') {\n done = true\n listeners.delete(listener)\n resolve({ ok: false, error: checkoutError('canceled', 'Checkout was closed before completing') })\n }\n }\n listeners.add(listener)\n if (session.transactionId) {\n // An EXISTING transaction (e.g. payment-method-change): it already carries its\n // own custom data provider-side — sending customData here could clobber the\n // subscription-inherited attribution keys, so only the id and presentation go.\n paddle.Checkout.open({ transactionId: session.transactionId, settings: display })\n } else {\n paddle.Checkout.open({\n // Provider-native line items resolved by the server from the binding —\n // the browser never sees or chooses raw price ids beyond passing these through.\n items: session.items!,\n // Carries the correlationId into Paddle's transaction custom data — the\n // webhook links back to this attempt through it.\n customData: session.customData,\n settings: display,\n })\n }\n })\n}\n\n/** Build the Paddle checkout driver for a funnel mount (pass to `createFunnelTree`). */\nexport function paddleCheckoutDriver(ctx: CheckoutDriverContext): CheckoutDriver {\n return {\n provider: 'paddle',\n async start(req: CheckoutRequest): Promise<CheckoutResult> {\n // Double-charge guard (C8): a previous attempt for the SAME (product, intent)\n // timed out still-pending — verify IT first. Settled ⇒ that charge landed;\n // resolve with it instead of charging again. Failed/still-absent ⇒ fresh start.\n const priorKey = pendingKeyOf(req)\n const prior = pendingTimeouts.get(priorKey)\n if (prior) {\n pendingTimeouts.delete(priorKey)\n try {\n const check = await postComplete(ctx, prior)\n if (check.step === 'settled') return settlementToResult(check.result)\n } catch {\n // Unreachable/absent — proceed with a fresh attempt.\n }\n }\n const correlationId = crypto.randomUUID()\n try {\n const session = await postSession(ctx, req, correlationId)\n switch (session.step) {\n case 'settled': // off-session upsell (upgrade/one-time) — server charged via Paddle API\n return settlementToResult(session.result)\n case 'pending':\n // Off-session tail (MoR/async): Paddle's confirmation outlasted the open\n // request — the attempt stays PENDING server-side. Converge on the webhook\n // through the same bounded /complete poll the overlay path uses.\n return rememberIfStillPending(\n req,\n correlationId,\n await completeWithPoll(ctx, correlationId, {\n timeoutMessage: PADDLE_PENDING_TIMEOUT_MESSAGE,\n }),\n )\n case 'failed':\n return { ok: false, error: session.error }\n case 'redirect':\n return leaveForRedirect(session.url)\n case 'provider_checkout':\n return rememberIfStillPending(\n req,\n correlationId,\n await openCheckout(ctx, session, correlationId, { displayMode: 'overlay' }),\n )\n default:\n return {\n ok: false,\n error: checkoutError(\n 'processing_error',\n `Paddle returned '${session.step}' for a trigger start — Paddle has no in-page confirm step`,\n ),\n }\n }\n } catch (e) {\n return { ok: false, error: toCheckoutError(e) }\n }\n },\n renderInline(req: CheckoutRequest, cb: CheckoutCallbacks): ReactNode {\n return createElement(PaddleInline, { ctx, req, cb })\n },\n // Redirect-return resume: verify an existing attempt. Webhook-dependent, so it\n // gets the same ~10×3s window the overlay completion poll uses.\n resume(correlationId: string): Promise<CheckoutResult> {\n return completeWithPoll(ctx, correlationId, {\n attempts: 10,\n intervalMs: 3000,\n timeoutMessage: PADDLE_TIMEOUT_MESSAGE,\n })\n },\n }\n}\n\n// ── Inline surface (`embedded` — Paddle's frame in our container) ────────────\n\nfunction PaddleInline({\n ctx,\n req,\n cb,\n}: {\n ctx: CheckoutDriverContext\n req: CheckoutRequest\n cb: CheckoutCallbacks\n}): ReactNode {\n // One correlation/idempotency id per MOUNTED surface (product change remounts).\n const [correlationId] = useState(() => crypto.randomUUID())\n // Paddle mounts its inline frame into the FIRST element carrying the frameTarget\n // class — derive a per-instance class from useId (SSR-stable → hydration-safe)\n // so two surfaces on one page can't collide. Sanitized: useId emits ':r0:'.\n const uid = useId().replace(/[^a-zA-Z0-9_-]/g, '')\n const frameClass = `af-paddle-frame-${uid}`\n const cbRef = useRef(cb)\n cbRef.current = cb\n\n useEffect(() => {\n let disposed = false\n void (async () => {\n try {\n const session = await postSession(ctx, req, correlationId)\n if (disposed) return\n switch (session.step) {\n case 'provider_checkout': {\n // Card entry lives inside Paddle's frame (no observable submit) — the\n // inline checkout OPENING is the closest user-intent signal, so it is\n // when `checkout.start` fires for this surface (C5, documented choice).\n cbRef.current.onStart?.()\n // `express` = Paddle's Apple-Pay-first Express Checkout: the same inline frame with\n // `variant: 'express'` and a compact initial height (the changelog's example — the\n // frame is the wallet button, not the full form). Paddle itself falls back to the\n // regular payment methods when no wallet is enrolled (its `showNonExpressPaymentMethods`\n // defaults on — not settable in @paddle/paddle-js 1.6.4's types, so we rely on the\n // provider default; nothing to wire on our side). `embedded` opens the standard frame.\n const express = req.surface === 'express'\n const result = await openCheckout(ctx, session, correlationId, {\n displayMode: 'inline',\n frameTarget: frameClass,\n frameInitialHeight: express ? 182 : 450,\n // Paddle's documented inline-frame baseline: fluid width, no chrome.\n frameStyle: 'width: 100%; min-width: 286px; background-color: transparent; border: none;',\n ...(express ? { variant: 'express' as const } : {}),\n })\n if (disposed) return\n if (result.ok) cbRef.current.onSuccess(result)\n else cbRef.current.onError(result.error ?? checkoutError('unknown', 'Checkout failed'))\n return\n }\n case 'settled': // defensive — a surfaced attempt shouldn't settle server-side\n cbRef.current.onSuccess(settlementToResult(session.result))\n return\n case 'failed':\n cbRef.current.onError(session.error)\n return\n case 'redirect': {\n // The binding may force the hosted page even for an inline author. The\n // hand-off settles only on a bfcache Back-return (canceled) — report it\n // so the placeholder recovers instead of spinning forever.\n const result = await leaveForRedirect(session.url)\n if (!disposed && !result.ok) {\n cbRef.current.onError(result.error ?? checkoutError('canceled', 'Checkout was canceled'))\n }\n return\n }\n default:\n cbRef.current.onError(\n checkoutError('processing_error', 'unexpected step for a Paddle inline surface'),\n )\n }\n } catch (e) {\n if (!disposed) cbRef.current.onError(toCheckoutError(e))\n }\n })()\n return () => {\n disposed = true\n }\n // One attempt per mount by design (see correlationId) — deps intentionally empty.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n // The stable frame-target container — identical on SSR and first client paint\n // (Paddle injects its iframe into it client-side only). Hydration-safe.\n return createElement('div', {\n 'data-appfunnel-checkout': 'paddle',\n 'data-checkout-surface': req.surface,\n className: frameClass,\n })\n}\n"]}
|
package/dist/driver-paddle.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { C as CheckoutDriverContext, a as CheckoutDriver } from './checkout-
|
|
1
|
+
import { C as CheckoutDriverContext, a as CheckoutDriver } from './checkout-DBp4bCpC.cjs';
|
|
2
2
|
import 'react';
|
|
3
|
-
import './capabilities-
|
|
3
|
+
import './capabilities-Dq22RCr_.cjs';
|
|
4
4
|
|
|
5
5
|
/** TEST-ONLY: clear the page-load-scoped pending-attempt memory (mirrors __resetContextCache). */
|
|
6
6
|
declare function __resetPaddleDriverState(): void;
|
package/dist/driver-paddle.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { C as CheckoutDriverContext, a as CheckoutDriver } from './checkout-
|
|
1
|
+
import { C as CheckoutDriverContext, a as CheckoutDriver } from './checkout-ClaO5IYV.js';
|
|
2
2
|
import 'react';
|
|
3
|
-
import './capabilities-
|
|
3
|
+
import './capabilities-Dq22RCr_.js';
|
|
4
4
|
|
|
5
5
|
/** TEST-ONLY: clear the page-load-scoped pending-attempt memory (mirrors __resetContextCache). */
|
|
6
6
|
declare function __resetPaddleDriverState(): void;
|