@polar-sh/adapter-utils
Version:
Core package for Polar adapters
83 lines (79 loc) • 6.71 kB
TypeScript
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 };