UNPKG

@polar-sh/adapter-utils

Version:

Core package for Polar adapters

83 lines (79 loc) 6.71 kB
import { validateEvent } from '@polar-sh/sdk/webhooks'; import { WebhookBenefitCreatedPayload } from '@polar-sh/sdk/models/components/webhookbenefitcreatedpayload'; import { WebhookBenefitGrantCreatedPayload } from '@polar-sh/sdk/models/components/webhookbenefitgrantcreatedpayload'; import { WebhookBenefitGrantRevokedPayload } from '@polar-sh/sdk/models/components/webhookbenefitgrantrevokedpayload'; import { WebhookBenefitGrantUpdatedPayload } from '@polar-sh/sdk/models/components/webhookbenefitgrantupdatedpayload'; import { WebhookBenefitUpdatedPayload } from '@polar-sh/sdk/models/components/webhookbenefitupdatedpayload'; import { WebhookCheckoutCreatedPayload } from '@polar-sh/sdk/models/components/webhookcheckoutcreatedpayload'; import { WebhookCheckoutUpdatedPayload } from '@polar-sh/sdk/models/components/webhookcheckoutupdatedpayload'; import { WebhookOrderCreatedPayload } from '@polar-sh/sdk/models/components/webhookordercreatedpayload'; import { WebhookOrderPaidPayload } from '@polar-sh/sdk/models/components/webhookorderpaidpayload'; import { WebhookOrderRefundedPayload } from '@polar-sh/sdk/models/components/webhookorderrefundedpayload'; import { WebhookOrderUpdatedPayload } from '@polar-sh/sdk/models/components/webhookorderupdatedpayload'; import { WebhookOrganizationUpdatedPayload } from '@polar-sh/sdk/models/components/webhookorganizationupdatedpayload'; import { WebhookProductCreatedPayload } from '@polar-sh/sdk/models/components/webhookproductcreatedpayload'; import { WebhookProductUpdatedPayload } from '@polar-sh/sdk/models/components/webhookproductupdatedpayload'; import { WebhookRefundCreatedPayload } from '@polar-sh/sdk/models/components/webhookrefundcreatedpayload'; import { WebhookRefundUpdatedPayload } from '@polar-sh/sdk/models/components/webhookrefundupdatedpayload'; import { WebhookSubscriptionActivePayload } from '@polar-sh/sdk/models/components/webhooksubscriptionactivepayload'; import { WebhookSubscriptionCanceledPayload } from '@polar-sh/sdk/models/components/webhooksubscriptioncanceledpayload'; import { WebhookSubscriptionCreatedPayload } from '@polar-sh/sdk/models/components/webhooksubscriptioncreatedpayload'; import { WebhookSubscriptionRevokedPayload } from '@polar-sh/sdk/models/components/webhooksubscriptionrevokedpayload'; import { WebhookSubscriptionUncanceledPayload } from '@polar-sh/sdk/models/components/webhooksubscriptionuncanceledpayload'; import { WebhookSubscriptionUpdatedPayload } from '@polar-sh/sdk/models/components/webhooksubscriptionupdatedpayload'; import { Customer } from '@polar-sh/sdk/models/components/customer'; import { WebhookCustomerUpdatedPayload } from '@polar-sh/sdk/models/components/webhookcustomerupdatedpayload'; import { WebhookCustomerDeletedPayload } from '@polar-sh/sdk/models/components/webhookcustomerdeletedpayload'; import { WebhookCustomerCreatedPayload } from '@polar-sh/sdk/models/components/webhookcustomercreatedpayload'; import { WebhookCustomerStateChangedPayload } from '@polar-sh/sdk/models/components/webhookcustomerstatechangedpayload'; type EntitlementProperties = Record<string, string>; type EntitlementHandler = (payload: WebhookBenefitGrantCreatedPayload | WebhookBenefitGrantRevokedPayload) => Promise<void>; interface EntitlementContext<T extends EntitlementProperties> { customer: Customer; properties: T; payload: WebhookBenefitGrantCreatedPayload | WebhookBenefitGrantRevokedPayload; } declare class EntitlementStrategy<T extends EntitlementProperties> { private grantCallbacks; private revokeCallbacks; grant(callback: (context: EntitlementContext<T>) => Promise<void>): this; revoke(callback: (context: EntitlementContext<T>) => Promise<void>): this; handler(slug: string): EntitlementHandler; } declare class Entitlements { static handlers: EntitlementHandler[]; static use<T extends EntitlementProperties = EntitlementProperties>(slug: string, strategy: EntitlementStrategy<T>): typeof Entitlements; } interface WebhooksConfig { webhookSecret: string; entitlements?: typeof Entitlements; onPayload?: (payload: ReturnType<typeof validateEvent>) => Promise<void>; onCheckoutCreated?: (payload: WebhookCheckoutCreatedPayload) => Promise<void>; onCheckoutUpdated?: (payload: WebhookCheckoutUpdatedPayload) => Promise<void>; onOrderCreated?: (payload: WebhookOrderCreatedPayload) => Promise<void>; onOrderUpdated?: (payload: WebhookOrderUpdatedPayload) => Promise<void>; onOrderPaid?: (payload: WebhookOrderPaidPayload) => Promise<void>; onOrderRefunded?: (payload: WebhookOrderRefundedPayload) => Promise<void>; onRefundCreated?: (payload: WebhookRefundCreatedPayload) => Promise<void>; onRefundUpdated?: (payload: WebhookRefundUpdatedPayload) => Promise<void>; onSubscriptionCreated?: (payload: WebhookSubscriptionCreatedPayload) => Promise<void>; onSubscriptionUpdated?: (payload: WebhookSubscriptionUpdatedPayload) => Promise<void>; onSubscriptionActive?: (payload: WebhookSubscriptionActivePayload) => Promise<void>; onSubscriptionCanceled?: (payload: WebhookSubscriptionCanceledPayload) => Promise<void>; onSubscriptionRevoked?: (payload: WebhookSubscriptionRevokedPayload) => Promise<void>; onSubscriptionUncanceled?: (payload: WebhookSubscriptionUncanceledPayload) => Promise<void>; onProductCreated?: (payload: WebhookProductCreatedPayload) => Promise<void>; onProductUpdated?: (payload: WebhookProductUpdatedPayload) => Promise<void>; onOrganizationUpdated?: (payload: WebhookOrganizationUpdatedPayload) => Promise<void>; onBenefitCreated?: (payload: WebhookBenefitCreatedPayload) => Promise<void>; onBenefitUpdated?: (payload: WebhookBenefitUpdatedPayload) => Promise<void>; onBenefitGrantCreated?: (payload: WebhookBenefitGrantCreatedPayload) => Promise<void>; onBenefitGrantUpdated?: (payload: WebhookBenefitGrantUpdatedPayload) => Promise<void>; onBenefitGrantRevoked?: (payload: WebhookBenefitGrantRevokedPayload) => Promise<void>; onCustomerCreated?: (payload: WebhookCustomerCreatedPayload) => Promise<void>; onCustomerUpdated?: (payload: WebhookCustomerUpdatedPayload) => Promise<void>; onCustomerDeleted?: (payload: WebhookCustomerDeletedPayload) => Promise<void>; onCustomerStateChanged?: (payload: WebhookCustomerStateChangedPayload) => Promise<void>; } declare const handleWebhookPayload: (payload: ReturnType<typeof validateEvent>, { webhookSecret, entitlements, onPayload, ...eventHandlers }: WebhooksConfig) => Promise<void[]>; export { type EntitlementContext, type EntitlementHandler, type EntitlementProperties, EntitlementStrategy, Entitlements, type WebhooksConfig, handleWebhookPayload };