@usethrottle/subscriptions 1.0.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,3 +1,8 @@
1
+ <p align="left">
2
+ <img src="https://raw.githubusercontent.com/Epic-Design-Labs/app-throttle/main/packages/brand/assets/throttle-logo.png" alt="Throttle" height="56" />
3
+ </p>
4
+
5
+
1
6
  # @usethrottle/subscriptions
2
7
 
3
8
  Production React hooks, server proxy helpers, and primitive components for Throttle subscriptions.
@@ -16,72 +16,70 @@ var ThrottleSubscriptionsError = class extends Error {
16
16
  function normalizeSubscription(raw) {
17
17
  return {
18
18
  id: requiredString(raw?.id, "subscription.id"),
19
- merchantId: optionalString(raw?.merchantId ?? raw?.merchant_id),
20
- storeId: optionalString(raw?.storeId ?? raw?.store_id),
21
- customerId: requiredString(raw?.customerId ?? raw?.customer_id, "subscription.customerId"),
19
+ workspaceId: optionalString(raw?.workspaceId),
20
+ applicationId: optionalString(raw?.applicationId),
21
+ customerId: requiredString(raw?.customerId, "subscription.customerId"),
22
22
  status: raw?.status ?? "active",
23
- planReference: requiredString(
24
- raw?.planReference ?? raw?.plan_reference,
25
- "subscription.planReference"
26
- ),
27
- planName: optionalString(raw?.planName ?? raw?.plan_name),
23
+ planReference: requiredString(raw?.planReference, "subscription.planReference"),
24
+ planName: optionalString(raw?.planName),
28
25
  interval: raw?.interval ?? "monthly",
29
26
  amount: Number(raw?.amount ?? 0),
30
27
  currency: optionalString(raw?.currency) ?? "USD",
31
28
  currentPeriodStart: requiredDateString(
32
- raw?.currentPeriodStart ?? raw?.current_period_start,
29
+ raw?.currentPeriodStart,
33
30
  "subscription.currentPeriodStart"
34
31
  ),
35
32
  currentPeriodEnd: requiredDateString(
36
- raw?.currentPeriodEnd ?? raw?.current_period_end,
33
+ raw?.currentPeriodEnd,
37
34
  "subscription.currentPeriodEnd"
38
35
  ),
39
- trialEnd: optionalDateString(raw?.trialEnd ?? raw?.trial_end),
40
- cancelAtPeriodEnd: Boolean(raw?.cancelAtPeriodEnd ?? raw?.cancel_at_period_end ?? false),
41
- failureCount: Number(raw?.failureCount ?? raw?.failure_count ?? 0),
42
- lastPaymentAt: optionalDateString(raw?.lastPaymentAt ?? raw?.last_payment_at),
43
- pausedAt: optionalDateString(raw?.pausedAt ?? raw?.paused_at),
44
- cancelledAt: optionalDateString(raw?.cancelledAt ?? raw?.cancelled_at),
36
+ trialEnd: optionalDateString(raw?.trialEnd),
37
+ cancelAtPeriodEnd: Boolean(raw?.cancelAtPeriodEnd ?? false),
38
+ failureCount: Number(raw?.failureCount ?? 0),
39
+ lastPaymentAt: optionalDateString(raw?.lastPaymentAt),
40
+ pausedAt: optionalDateString(raw?.pausedAt),
41
+ cancelledAt: optionalDateString(raw?.cancelledAt),
45
42
  metadata: objectOrEmpty(raw?.metadata),
46
- createdAt: optionalDateString(raw?.createdAt ?? raw?.created_at) ?? void 0,
47
- updatedAt: optionalDateString(raw?.updatedAt ?? raw?.updated_at) ?? void 0
43
+ createdAt: optionalDateString(raw?.createdAt) ?? void 0,
44
+ updatedAt: optionalDateString(raw?.updatedAt) ?? void 0
48
45
  };
49
46
  }
50
47
  function normalizeCustomer(raw) {
51
48
  if (!raw) return null;
52
49
  return {
53
50
  id: requiredString(raw?.id, "customer.id"),
54
- externalId: optionalString(raw?.externalId ?? raw?.external_id),
51
+ externalId: optionalString(raw?.externalId),
55
52
  email: optionalString(raw?.email),
56
- firstName: optionalString(raw?.firstName ?? raw?.first_name),
57
- lastName: optionalString(raw?.lastName ?? raw?.last_name),
53
+ firstName: optionalString(raw?.firstName),
54
+ lastName: optionalString(raw?.lastName),
58
55
  phone: optionalString(raw?.phone),
59
56
  metadata: objectOrEmpty(raw?.metadata),
60
- createdAt: optionalDateString(raw?.createdAt ?? raw?.created_at) ?? void 0,
61
- updatedAt: optionalDateString(raw?.updatedAt ?? raw?.updated_at) ?? void 0
57
+ createdAt: optionalDateString(raw?.createdAt) ?? void 0,
58
+ updatedAt: optionalDateString(raw?.updatedAt) ?? void 0
62
59
  };
63
60
  }
64
61
  function normalizeCustomerPaymentMethod(raw) {
65
62
  return {
66
63
  id: requiredString(raw?.id, "paymentMethod.id"),
67
64
  processor: optionalString(raw?.processor),
68
- methodType: optionalString(raw?.methodType ?? raw?.method_type),
69
- cardBrand: optionalString(raw?.cardBrand ?? raw?.card_brand),
70
- cardLastFour: optionalString(raw?.cardLastFour ?? raw?.card_last_four),
71
- isDefault: Boolean(raw?.isDefault ?? raw?.is_default ?? false),
72
- createdAt: optionalDateString(raw?.createdAt ?? raw?.created_at) ?? void 0,
73
- updatedAt: optionalDateString(raw?.updatedAt ?? raw?.updated_at) ?? void 0
65
+ methodType: optionalString(raw?.methodType),
66
+ cardBrand: optionalString(raw?.cardBrand),
67
+ cardLastFour: optionalString(raw?.cardLastFour),
68
+ isDefault: Boolean(raw?.isDefault ?? false),
69
+ isActive: Boolean(raw?.isActive ?? true),
70
+ createdAt: optionalDateString(raw?.createdAt) ?? void 0,
71
+ updatedAt: optionalDateString(raw?.updatedAt) ?? void 0
74
72
  };
75
73
  }
76
74
  function normalizeCheckoutSession(raw) {
77
- const sessionId = raw?.sessionId ?? raw?.session_id ?? raw?.id;
75
+ const sessionId = raw?.sessionId ?? raw?.id;
78
76
  return {
79
- ...raw,
80
- id: optionalString(raw?.id),
77
+ ...withoutUnderscoreKeys(raw),
78
+ id: optionalString(raw?.id) ?? void 0,
81
79
  sessionId: requiredString(sessionId, "checkoutSession.sessionId"),
82
- checkoutUrl: optionalString(raw?.checkoutUrl ?? raw?.checkout_url),
83
- embedToken: optionalString(raw?.embedToken ?? raw?.embed_token),
84
- expiresAt: optionalDateString(raw?.expiresAt ?? raw?.expires_at) ?? void 0
80
+ checkoutUrl: optionalString(raw?.checkoutUrl) ?? void 0,
81
+ embedToken: optionalString(raw?.embedToken) ?? void 0,
82
+ expiresAt: optionalDateString(raw?.expiresAt) ?? void 0
85
83
  };
86
84
  }
87
85
  function normalizeTrialEligibility(raw) {
@@ -94,7 +92,7 @@ function normalizePagination(raw) {
94
92
  if (!raw) return void 0;
95
93
  return {
96
94
  cursor: raw.cursor ?? null,
97
- hasMore: Boolean(raw.hasMore ?? raw.has_more ?? false)
95
+ hasMore: Boolean(raw.hasMore ?? false)
98
96
  };
99
97
  }
100
98
  function toIso(value) {
@@ -121,6 +119,12 @@ function optionalDateString(value) {
121
119
  function objectOrEmpty(value) {
122
120
  return value && typeof value === "object" && !Array.isArray(value) ? value : {};
123
121
  }
122
+ function withoutUnderscoreKeys(value) {
123
+ if (!value || typeof value !== "object" || Array.isArray(value)) return {};
124
+ return Object.fromEntries(
125
+ Object.entries(value).filter(([key]) => !key.includes("_"))
126
+ );
127
+ }
124
128
 
125
129
  // src/client.ts
126
130
  var SubscriptionsClient = class {
@@ -180,7 +184,7 @@ var SubscriptionsClient = class {
180
184
  async create(input) {
181
185
  const customerId = await this.resolveCustomerId(input.customerId, input.externalCustomerId);
182
186
  const data = await this.request("POST", "/api/v1/subscriptions", {
183
- storeId: input.storeId,
187
+ applicationId: input.applicationId,
184
188
  customerId,
185
189
  planReference: input.planReference,
186
190
  planName: input.planName,
@@ -260,7 +264,7 @@ var SubscriptionsClient = class {
260
264
  }
261
265
  async checkTrialEligibility(input) {
262
266
  const data = await this.request("POST", "/api/v1/subscriptions/eligibility-check", {
263
- payment_method_id: input.paymentMethodId
267
+ paymentMethodId: input.paymentMethodId
264
268
  });
265
269
  return normalizeTrialEligibility(data);
266
270
  }
@@ -320,4 +324,4 @@ export {
320
324
  SubscriptionsClient,
321
325
  createSubscriptionsClient
322
326
  };
323
- //# sourceMappingURL=chunk-SXTIX2Y2.js.map
327
+ //# sourceMappingURL=chunk-4JT35IEA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/errors.ts","../src/normalize.ts","../src/client.ts"],"sourcesContent":["export class ThrottleSubscriptionsError extends Error {\n readonly code: string;\n readonly statusCode: number;\n readonly details?: unknown;\n\n constructor(args: { code: string; message: string; statusCode: number; details?: unknown }) {\n super(args.message);\n this.name = 'ThrottleSubscriptionsError';\n this.code = args.code;\n this.statusCode = args.statusCode;\n this.details = args.details;\n }\n}\n","import type {\n CheckoutSession,\n Customer,\n CustomerPaymentMethod,\n Pagination,\n Subscription,\n SubscriptionInterval,\n SubscriptionStatus,\n TrialEligibilityResult,\n} from './types';\n\nexport function normalizeSubscription(raw: any): Subscription {\n return {\n id: requiredString(raw?.id, 'subscription.id'),\n workspaceId: optionalString(raw?.workspaceId),\n applicationId: optionalString(raw?.applicationId),\n customerId: requiredString(raw?.customerId, 'subscription.customerId'),\n status: (raw?.status ?? 'active') as SubscriptionStatus,\n planReference: requiredString(raw?.planReference, 'subscription.planReference'),\n planName: optionalString(raw?.planName),\n interval: (raw?.interval ?? 'monthly') as SubscriptionInterval,\n amount: Number(raw?.amount ?? 0),\n currency: optionalString(raw?.currency) ?? 'USD',\n currentPeriodStart: requiredDateString(\n raw?.currentPeriodStart,\n 'subscription.currentPeriodStart',\n ),\n currentPeriodEnd: requiredDateString(\n raw?.currentPeriodEnd,\n 'subscription.currentPeriodEnd',\n ),\n trialEnd: optionalDateString(raw?.trialEnd),\n cancelAtPeriodEnd: Boolean(raw?.cancelAtPeriodEnd ?? false),\n failureCount: Number(raw?.failureCount ?? 0),\n lastPaymentAt: optionalDateString(raw?.lastPaymentAt),\n pausedAt: optionalDateString(raw?.pausedAt),\n cancelledAt: optionalDateString(raw?.cancelledAt),\n metadata: objectOrEmpty(raw?.metadata),\n createdAt: optionalDateString(raw?.createdAt) ?? undefined,\n updatedAt: optionalDateString(raw?.updatedAt) ?? undefined,\n };\n}\n\nexport function normalizeCustomer(raw: any): Customer | null {\n if (!raw) return null;\n return {\n id: requiredString(raw?.id, 'customer.id'),\n externalId: optionalString(raw?.externalId),\n email: optionalString(raw?.email),\n firstName: optionalString(raw?.firstName),\n lastName: optionalString(raw?.lastName),\n phone: optionalString(raw?.phone),\n metadata: objectOrEmpty(raw?.metadata),\n createdAt: optionalDateString(raw?.createdAt) ?? undefined,\n updatedAt: optionalDateString(raw?.updatedAt) ?? undefined,\n };\n}\n\nexport function normalizeCustomerPaymentMethod(raw: any): CustomerPaymentMethod {\n return {\n id: requiredString(raw?.id, 'paymentMethod.id'),\n processor: optionalString(raw?.processor),\n methodType: optionalString(raw?.methodType),\n cardBrand: optionalString(raw?.cardBrand),\n cardLastFour: optionalString(raw?.cardLastFour),\n isDefault: Boolean(raw?.isDefault ?? false),\n isActive: Boolean(raw?.isActive ?? true),\n createdAt: optionalDateString(raw?.createdAt) ?? undefined,\n updatedAt: optionalDateString(raw?.updatedAt) ?? undefined,\n };\n}\n\nexport function normalizeCheckoutSession(raw: any): CheckoutSession {\n const sessionId = raw?.sessionId ?? raw?.id;\n return {\n ...withoutUnderscoreKeys(raw),\n id: optionalString(raw?.id) ?? undefined,\n sessionId: requiredString(sessionId, 'checkoutSession.sessionId'),\n checkoutUrl: optionalString(raw?.checkoutUrl) ?? undefined,\n embedToken: optionalString(raw?.embedToken) ?? undefined,\n expiresAt: optionalDateString(raw?.expiresAt) ?? undefined,\n };\n}\n\nexport function normalizeTrialEligibility(raw: any): TrialEligibilityResult {\n return {\n eligible: Boolean(raw?.eligible),\n reason: raw?.reason,\n };\n}\n\nexport function normalizePagination(raw: any): Pagination | undefined {\n if (!raw) return undefined;\n return {\n cursor: raw.cursor ?? null,\n hasMore: Boolean(raw.hasMore ?? false),\n };\n}\n\nexport function toIso(value: string | Date | undefined): string | undefined {\n if (value === undefined) return undefined;\n return value instanceof Date ? value.toISOString() : value;\n}\n\nfunction requiredString(value: unknown, label: string): string {\n if (typeof value === 'string' && value.length > 0) return value;\n throw new Error(`Invalid Throttle response: missing ${label}`);\n}\n\nfunction optionalString(value: unknown): string | null {\n return typeof value === 'string' ? value : null;\n}\n\nfunction requiredDateString(value: unknown, label: string): string {\n if (value instanceof Date) return value.toISOString();\n if (typeof value === 'string' && value.length > 0) return value;\n throw new Error(`Invalid Throttle response: missing ${label}`);\n}\n\nfunction optionalDateString(value: unknown): string | null {\n if (value instanceof Date) return value.toISOString();\n if (typeof value === 'string' && value.length > 0) return value;\n return null;\n}\n\nfunction objectOrEmpty(value: unknown): Record<string, unknown> {\n return value && typeof value === 'object' && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : {};\n}\n\nfunction withoutUnderscoreKeys(value: unknown): Record<string, unknown> {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return {};\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>).filter(([key]) => !key.includes('_')),\n );\n}\n","import { ThrottleSubscriptionsError } from './errors';\nimport {\n normalizeCheckoutSession,\n normalizeCustomer,\n normalizeCustomerPaymentMethod,\n normalizePagination,\n normalizeSubscription,\n normalizeTrialEligibility,\n toIso,\n} from './normalize';\nimport type {\n ChangePlanInput,\n CheckoutSession,\n CreateCheckoutSessionInput,\n CreateSubscriptionInput,\n Customer,\n CustomerPaymentMethod,\n ListSubscriptionsParams,\n PaginatedSubscriptions,\n Subscription,\n SubscriptionsClientContract,\n SubscriptionsClientOptions,\n ThrottleEnvelope,\n TrialEligibilityInput,\n TrialEligibilityResult,\n UpdateSubscriptionInput,\n} from './types';\n\nexport class SubscriptionsClient implements SubscriptionsClientContract {\n private readonly apiKey?: string;\n private readonly baseUrl: string;\n private readonly fetchImpl: typeof globalThis.fetch;\n private readonly fetcher?: SubscriptionsClientOptions['fetcher'];\n private readonly timeoutMs: number;\n\n constructor(opts: SubscriptionsClientOptions = {}) {\n const fetchImpl = opts.fetch ?? globalThis.fetch;\n if (!fetchImpl) throw new Error('SubscriptionsClient: fetch is required');\n if (!opts.apiKey && !opts.fetcher) {\n throw new Error('SubscriptionsClient: apiKey or fetcher is required');\n }\n\n this.apiKey = opts.apiKey;\n this.baseUrl = (opts.baseUrl ?? 'https://api.usethrottle.dev').replace(/\\/+$/, '');\n this.fetchImpl = fetchImpl;\n this.fetcher = opts.fetcher;\n this.timeoutMs = opts.timeoutMs ?? 30_000;\n }\n\n async request<T = unknown>(method: string, path: string, body?: unknown): Promise<T> {\n const envelope = await this.requestEnvelope<T>(method, path, body);\n if (Object.prototype.hasOwnProperty.call(envelope, 'data')) {\n return envelope.data as T;\n }\n return envelope as T;\n }\n\n async requestEnvelope<T = unknown>(\n method: string,\n path: string,\n body?: unknown,\n ): Promise<ThrottleEnvelope<T>> {\n const ctrl = new AbortController();\n const timer = setTimeout(() => ctrl.abort(), this.timeoutMs);\n\n try {\n const init: RequestInit = {\n method,\n headers: {\n 'content-type': 'application/json',\n ...(this.apiKey ? { 'x-api-key': this.apiKey } : {}),\n },\n body: body !== undefined ? JSON.stringify(body) : undefined,\n signal: ctrl.signal,\n };\n\n const res = this.fetcher\n ? await this.fetcher(path, init)\n : await this.fetchImpl(toAbsoluteUrl(this.baseUrl, path), init);\n\n if (res.status === 204) return { data: undefined as T };\n\n const json = (await res.json().catch(() => ({}))) as ThrottleEnvelope<T>;\n if (!res.ok) {\n throw new ThrottleSubscriptionsError({\n code: json.error?.code ?? 'unknown_error',\n message: json.error?.message ?? `HTTP ${res.status}`,\n statusCode: res.status,\n details: json.error?.details,\n });\n }\n return json;\n } finally {\n clearTimeout(timer);\n }\n }\n\n async create(input: CreateSubscriptionInput): Promise<Subscription> {\n const customerId = await this.resolveCustomerId(input.customerId, input.externalCustomerId);\n const data = await this.request<unknown>('POST', '/api/v1/subscriptions', {\n applicationId: input.applicationId,\n customerId,\n planReference: input.planReference,\n planName: input.planName,\n interval: input.interval,\n amount: input.amount,\n currency: input.currency,\n currentPeriodStart: toIso(input.currentPeriodStart),\n currentPeriodEnd: toIso(input.currentPeriodEnd),\n trialEnd: toIso(input.trialEnd),\n metadata: input.metadata ?? {},\n });\n return normalizeSubscription(data);\n }\n\n async list(params: ListSubscriptionsParams = {}): Promise<PaginatedSubscriptions> {\n const query = new URLSearchParams();\n setQuery(query, 'customerId', params.customerId);\n setQuery(query, 'externalCustomerId', params.externalCustomerId);\n setQuery(query, 'status', params.status);\n setQuery(query, 'interval', params.interval);\n setQuery(query, 'q', params.q);\n setQuery(query, 'cursor', params.cursor);\n setQuery(query, 'limit', params.limit);\n setQuery(query, 'sort', params.sort);\n setQuery(query, 'createdAfter', toIso(params.createdAfter));\n setQuery(query, 'createdBefore', toIso(params.createdBefore));\n\n const suffix = query.toString() ? `?${query}` : '';\n const envelope = await this.requestEnvelope<unknown[]>('GET', `/api/v1/subscriptions${suffix}`);\n return {\n data: (envelope.data ?? []).map(normalizeSubscription),\n pagination: normalizePagination(envelope.meta?.pagination),\n };\n }\n\n async get(id: string): Promise<Subscription> {\n const data = await this.request<unknown>(\n 'GET',\n `/api/v1/subscriptions/${encodeURIComponent(id)}`,\n );\n return normalizeSubscription(data);\n }\n\n async update(id: string, input: UpdateSubscriptionInput): Promise<Subscription> {\n const data = await this.request<unknown>(\n 'PATCH',\n `/api/v1/subscriptions/${encodeURIComponent(id)}`,\n input,\n );\n return normalizeSubscription(data);\n }\n\n changePlan(input: ChangePlanInput): Promise<Subscription> {\n const { id, ...body } = input;\n return this.update(id, body);\n }\n\n async pause(id: string): Promise<Subscription> {\n const data = await this.request<unknown>(\n 'POST',\n `/api/v1/subscriptions/${encodeURIComponent(id)}/pause`,\n );\n return normalizeSubscription(data);\n }\n\n async resume(id: string): Promise<Subscription> {\n const data = await this.request<unknown>(\n 'POST',\n `/api/v1/subscriptions/${encodeURIComponent(id)}/resume`,\n );\n return normalizeSubscription(data);\n }\n\n async cancel(id: string, input: { atPeriodEnd?: boolean } = {}): Promise<Subscription> {\n const data = await this.request<unknown>(\n 'POST',\n `/api/v1/subscriptions/${encodeURIComponent(id)}/cancel`,\n { atPeriodEnd: input.atPeriodEnd ?? false },\n );\n return normalizeSubscription(data);\n }\n\n async createCheckoutSession(input: CreateCheckoutSessionInput): Promise<CheckoutSession> {\n const data = await this.request<unknown>('POST', '/api/v1/checkout/sessions', input);\n return normalizeCheckoutSession(data);\n }\n\n async checkTrialEligibility(input: TrialEligibilityInput): Promise<TrialEligibilityResult> {\n const data = await this.request<unknown>('POST', '/api/v1/subscriptions/eligibility-check', {\n paymentMethodId: input.paymentMethodId,\n });\n return normalizeTrialEligibility(data);\n }\n\n async getCustomerByExternalId(externalId: string): Promise<Customer | null> {\n try {\n const data = await this.request<unknown>(\n 'GET',\n `/api/v1/customers/by-external/${encodeURIComponent(externalId)}`,\n );\n return normalizeCustomer(data);\n } catch (err) {\n if (err instanceof ThrottleSubscriptionsError && err.statusCode === 404) return null;\n throw err;\n }\n }\n\n async listCustomerPaymentMethods(customerId: string): Promise<CustomerPaymentMethod[]> {\n const data = await this.request<unknown[]>(\n 'GET',\n `/api/v1/customers/${encodeURIComponent(customerId)}/payment-methods`,\n );\n return (data ?? []).map(normalizeCustomerPaymentMethod);\n }\n\n private async resolveCustomerId(\n customerId?: string,\n externalCustomerId?: string,\n ): Promise<string> {\n if (customerId) return customerId;\n if (!externalCustomerId) {\n throw new ThrottleSubscriptionsError({\n code: 'invalid_request',\n message: 'customerId or externalCustomerId is required',\n statusCode: 400,\n });\n }\n\n const customer = await this.getCustomerByExternalId(externalCustomerId);\n if (!customer) {\n throw new ThrottleSubscriptionsError({\n code: 'customer_not_found',\n message: 'Customer not found',\n statusCode: 404,\n });\n }\n return customer.id;\n }\n}\n\nexport function createSubscriptionsClient(opts: SubscriptionsClientOptions): SubscriptionsClient {\n return new SubscriptionsClient(opts);\n}\n\nfunction toAbsoluteUrl(baseUrl: string, path: string): string {\n if (/^https?:\\/\\//i.test(path)) return path;\n return `${baseUrl}${path.startsWith('/') ? path : `/${path}`}`;\n}\n\nfunction setQuery(query: URLSearchParams, key: string, value: unknown): void {\n if (value === undefined || value === null || value === '') return;\n query.set(key, String(value));\n}\n"],"mappings":"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","names":[]}
@@ -5,8 +5,8 @@ type SubscriptionInterval = 'weekly' | 'monthly' | 'quarterly' | 'yearly';
5
5
  type SubscriptionSort = 'asc' | 'desc';
6
6
  interface Subscription {
7
7
  id: string;
8
- merchantId?: string | null;
9
- storeId?: string | null;
8
+ workspaceId?: string | null;
9
+ applicationId?: string | null;
10
10
  customerId: string;
11
11
  status: SubscriptionStatus;
12
12
  planReference: string;
@@ -44,6 +44,7 @@ interface CustomerPaymentMethod {
44
44
  cardBrand?: string | null;
45
45
  cardLastFour?: string | null;
46
46
  isDefault?: boolean;
47
+ isActive?: boolean;
47
48
  createdAt?: string;
48
49
  updatedAt?: string;
49
50
  }
@@ -68,7 +69,7 @@ interface ListSubscriptionsParams {
68
69
  createdBefore?: string | Date;
69
70
  }
70
71
  interface CreateSubscriptionInput {
71
- storeId?: string;
72
+ applicationId?: string;
72
73
  customerId?: string;
73
74
  externalCustomerId?: string;
74
75
  planReference: string;
@@ -120,7 +121,7 @@ interface CheckoutCollectInput {
120
121
  billingAddress?: boolean;
121
122
  }
122
123
  interface CreateCheckoutSessionInput {
123
- storeId: string;
124
+ applicationId: string;
124
125
  cartId?: string;
125
126
  externalCartId?: string;
126
127
  customerEmail?: string;
@@ -151,10 +152,9 @@ interface TrialEligibilityResult {
151
152
  interface ThrottleEnvelope<T> {
152
153
  data?: T;
153
154
  meta?: {
154
- request_id?: string;
155
+ requestId?: string;
155
156
  pagination?: {
156
157
  cursor?: string | null;
157
- has_more?: boolean;
158
158
  hasMore?: boolean;
159
159
  };
160
160
  [key: string]: unknown;
@@ -5,8 +5,8 @@ type SubscriptionInterval = 'weekly' | 'monthly' | 'quarterly' | 'yearly';
5
5
  type SubscriptionSort = 'asc' | 'desc';
6
6
  interface Subscription {
7
7
  id: string;
8
- merchantId?: string | null;
9
- storeId?: string | null;
8
+ workspaceId?: string | null;
9
+ applicationId?: string | null;
10
10
  customerId: string;
11
11
  status: SubscriptionStatus;
12
12
  planReference: string;
@@ -44,6 +44,7 @@ interface CustomerPaymentMethod {
44
44
  cardBrand?: string | null;
45
45
  cardLastFour?: string | null;
46
46
  isDefault?: boolean;
47
+ isActive?: boolean;
47
48
  createdAt?: string;
48
49
  updatedAt?: string;
49
50
  }
@@ -68,7 +69,7 @@ interface ListSubscriptionsParams {
68
69
  createdBefore?: string | Date;
69
70
  }
70
71
  interface CreateSubscriptionInput {
71
- storeId?: string;
72
+ applicationId?: string;
72
73
  customerId?: string;
73
74
  externalCustomerId?: string;
74
75
  planReference: string;
@@ -120,7 +121,7 @@ interface CheckoutCollectInput {
120
121
  billingAddress?: boolean;
121
122
  }
122
123
  interface CreateCheckoutSessionInput {
123
- storeId: string;
124
+ applicationId: string;
124
125
  cartId?: string;
125
126
  externalCartId?: string;
126
127
  customerEmail?: string;
@@ -151,10 +152,9 @@ interface TrialEligibilityResult {
151
152
  interface ThrottleEnvelope<T> {
152
153
  data?: T;
153
154
  meta?: {
154
- request_id?: string;
155
+ requestId?: string;
155
156
  pagination?: {
156
157
  cursor?: string | null;
157
- has_more?: boolean;
158
158
  hasMore?: boolean;
159
159
  };
160
160
  [key: string]: unknown;
package/dist/index.cjs CHANGED
@@ -71,72 +71,70 @@ var ThrottleSubscriptionsError = class extends Error {
71
71
  function normalizeSubscription(raw) {
72
72
  return {
73
73
  id: requiredString(raw?.id, "subscription.id"),
74
- merchantId: optionalString(raw?.merchantId ?? raw?.merchant_id),
75
- storeId: optionalString(raw?.storeId ?? raw?.store_id),
76
- customerId: requiredString(raw?.customerId ?? raw?.customer_id, "subscription.customerId"),
74
+ workspaceId: optionalString(raw?.workspaceId),
75
+ applicationId: optionalString(raw?.applicationId),
76
+ customerId: requiredString(raw?.customerId, "subscription.customerId"),
77
77
  status: raw?.status ?? "active",
78
- planReference: requiredString(
79
- raw?.planReference ?? raw?.plan_reference,
80
- "subscription.planReference"
81
- ),
82
- planName: optionalString(raw?.planName ?? raw?.plan_name),
78
+ planReference: requiredString(raw?.planReference, "subscription.planReference"),
79
+ planName: optionalString(raw?.planName),
83
80
  interval: raw?.interval ?? "monthly",
84
81
  amount: Number(raw?.amount ?? 0),
85
82
  currency: optionalString(raw?.currency) ?? "USD",
86
83
  currentPeriodStart: requiredDateString(
87
- raw?.currentPeriodStart ?? raw?.current_period_start,
84
+ raw?.currentPeriodStart,
88
85
  "subscription.currentPeriodStart"
89
86
  ),
90
87
  currentPeriodEnd: requiredDateString(
91
- raw?.currentPeriodEnd ?? raw?.current_period_end,
88
+ raw?.currentPeriodEnd,
92
89
  "subscription.currentPeriodEnd"
93
90
  ),
94
- trialEnd: optionalDateString(raw?.trialEnd ?? raw?.trial_end),
95
- cancelAtPeriodEnd: Boolean(raw?.cancelAtPeriodEnd ?? raw?.cancel_at_period_end ?? false),
96
- failureCount: Number(raw?.failureCount ?? raw?.failure_count ?? 0),
97
- lastPaymentAt: optionalDateString(raw?.lastPaymentAt ?? raw?.last_payment_at),
98
- pausedAt: optionalDateString(raw?.pausedAt ?? raw?.paused_at),
99
- cancelledAt: optionalDateString(raw?.cancelledAt ?? raw?.cancelled_at),
91
+ trialEnd: optionalDateString(raw?.trialEnd),
92
+ cancelAtPeriodEnd: Boolean(raw?.cancelAtPeriodEnd ?? false),
93
+ failureCount: Number(raw?.failureCount ?? 0),
94
+ lastPaymentAt: optionalDateString(raw?.lastPaymentAt),
95
+ pausedAt: optionalDateString(raw?.pausedAt),
96
+ cancelledAt: optionalDateString(raw?.cancelledAt),
100
97
  metadata: objectOrEmpty(raw?.metadata),
101
- createdAt: optionalDateString(raw?.createdAt ?? raw?.created_at) ?? void 0,
102
- updatedAt: optionalDateString(raw?.updatedAt ?? raw?.updated_at) ?? void 0
98
+ createdAt: optionalDateString(raw?.createdAt) ?? void 0,
99
+ updatedAt: optionalDateString(raw?.updatedAt) ?? void 0
103
100
  };
104
101
  }
105
102
  function normalizeCustomer(raw) {
106
103
  if (!raw) return null;
107
104
  return {
108
105
  id: requiredString(raw?.id, "customer.id"),
109
- externalId: optionalString(raw?.externalId ?? raw?.external_id),
106
+ externalId: optionalString(raw?.externalId),
110
107
  email: optionalString(raw?.email),
111
- firstName: optionalString(raw?.firstName ?? raw?.first_name),
112
- lastName: optionalString(raw?.lastName ?? raw?.last_name),
108
+ firstName: optionalString(raw?.firstName),
109
+ lastName: optionalString(raw?.lastName),
113
110
  phone: optionalString(raw?.phone),
114
111
  metadata: objectOrEmpty(raw?.metadata),
115
- createdAt: optionalDateString(raw?.createdAt ?? raw?.created_at) ?? void 0,
116
- updatedAt: optionalDateString(raw?.updatedAt ?? raw?.updated_at) ?? void 0
112
+ createdAt: optionalDateString(raw?.createdAt) ?? void 0,
113
+ updatedAt: optionalDateString(raw?.updatedAt) ?? void 0
117
114
  };
118
115
  }
119
116
  function normalizeCustomerPaymentMethod(raw) {
120
117
  return {
121
118
  id: requiredString(raw?.id, "paymentMethod.id"),
122
119
  processor: optionalString(raw?.processor),
123
- methodType: optionalString(raw?.methodType ?? raw?.method_type),
124
- cardBrand: optionalString(raw?.cardBrand ?? raw?.card_brand),
125
- cardLastFour: optionalString(raw?.cardLastFour ?? raw?.card_last_four),
126
- isDefault: Boolean(raw?.isDefault ?? raw?.is_default ?? false),
127
- createdAt: optionalDateString(raw?.createdAt ?? raw?.created_at) ?? void 0,
128
- updatedAt: optionalDateString(raw?.updatedAt ?? raw?.updated_at) ?? void 0
120
+ methodType: optionalString(raw?.methodType),
121
+ cardBrand: optionalString(raw?.cardBrand),
122
+ cardLastFour: optionalString(raw?.cardLastFour),
123
+ isDefault: Boolean(raw?.isDefault ?? false),
124
+ isActive: Boolean(raw?.isActive ?? true),
125
+ createdAt: optionalDateString(raw?.createdAt) ?? void 0,
126
+ updatedAt: optionalDateString(raw?.updatedAt) ?? void 0
129
127
  };
130
128
  }
131
129
  function normalizeCheckoutSession(raw) {
132
- const sessionId = raw?.sessionId ?? raw?.session_id ?? raw?.id;
130
+ const sessionId = raw?.sessionId ?? raw?.id;
133
131
  return {
134
- ...raw,
135
- id: optionalString(raw?.id),
132
+ ...withoutUnderscoreKeys(raw),
133
+ id: optionalString(raw?.id) ?? void 0,
136
134
  sessionId: requiredString(sessionId, "checkoutSession.sessionId"),
137
- checkoutUrl: optionalString(raw?.checkoutUrl ?? raw?.checkout_url),
138
- embedToken: optionalString(raw?.embedToken ?? raw?.embed_token),
139
- expiresAt: optionalDateString(raw?.expiresAt ?? raw?.expires_at) ?? void 0
135
+ checkoutUrl: optionalString(raw?.checkoutUrl) ?? void 0,
136
+ embedToken: optionalString(raw?.embedToken) ?? void 0,
137
+ expiresAt: optionalDateString(raw?.expiresAt) ?? void 0
140
138
  };
141
139
  }
142
140
  function normalizeTrialEligibility(raw) {
@@ -149,7 +147,7 @@ function normalizePagination(raw) {
149
147
  if (!raw) return void 0;
150
148
  return {
151
149
  cursor: raw.cursor ?? null,
152
- hasMore: Boolean(raw.hasMore ?? raw.has_more ?? false)
150
+ hasMore: Boolean(raw.hasMore ?? false)
153
151
  };
154
152
  }
155
153
  function toIso(value) {
@@ -176,6 +174,12 @@ function optionalDateString(value) {
176
174
  function objectOrEmpty(value) {
177
175
  return value && typeof value === "object" && !Array.isArray(value) ? value : {};
178
176
  }
177
+ function withoutUnderscoreKeys(value) {
178
+ if (!value || typeof value !== "object" || Array.isArray(value)) return {};
179
+ return Object.fromEntries(
180
+ Object.entries(value).filter(([key]) => !key.includes("_"))
181
+ );
182
+ }
179
183
 
180
184
  // src/client.ts
181
185
  var SubscriptionsClient = class {
@@ -235,7 +239,7 @@ var SubscriptionsClient = class {
235
239
  async create(input) {
236
240
  const customerId = await this.resolveCustomerId(input.customerId, input.externalCustomerId);
237
241
  const data = await this.request("POST", "/api/v1/subscriptions", {
238
- storeId: input.storeId,
242
+ applicationId: input.applicationId,
239
243
  customerId,
240
244
  planReference: input.planReference,
241
245
  planName: input.planName,
@@ -315,7 +319,7 @@ var SubscriptionsClient = class {
315
319
  }
316
320
  async checkTrialEligibility(input) {
317
321
  const data = await this.request("POST", "/api/v1/subscriptions/eligibility-check", {
318
- payment_method_id: input.paymentMethodId
322
+ paymentMethodId: input.paymentMethodId
319
323
  });
320
324
  return normalizeTrialEligibility(data);
321
325
  }