import type { NamiEntitlement, NamiPurchase, NamiSKUType } from './types'; import { NamiPaywallAction } from './types'; export function parsePurchaseDates(purchase: any): NamiPurchase { return { ...purchase, purchaseInitiatedTimestamp: new Date(purchase.purchaseInitiatedTimestamp), expires: purchase.expires ? new Date(purchase.expires) : undefined, }; } const validSkuTypes: NamiSKUType[] = [ 'unknown', 'one_time_purchase', 'subscription', ]; export function coerceSkuType(raw: string): NamiSKUType { return validSkuTypes.includes(raw as NamiSKUType) ? (raw as NamiSKUType) : 'unknown'; } const validPaywallActions = new Set( Object.values(NamiPaywallAction) as NamiPaywallAction[], ); export function mapToNamiPaywallAction(action: string): NamiPaywallAction { return validPaywallActions.has(action as NamiPaywallAction) ? (action as NamiPaywallAction) : NamiPaywallAction.UNKNOWN; } export function parseEntitlements(entitlements: any[]): NamiEntitlement[] { return entitlements.map((ent) => ({ ...ent, activePurchases: ent.activePurchases.map(parsePurchaseDates), relatedSkus: ent.relatedSkus ?? [], purchasedSkus: ent.purchasedSkus ?? [], })); }