@paykit-sdk/stripe 1.1.4 → 1.1.5

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/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { PaykitProviderOptions, PayKitProvider, CreateCheckoutParams, Checkout, CreateCustomerParams, Customer, UpdateCustomerParams, UpdateSubscriptionParams, Subscription, $ExtWebhookHandlerConfig, WebhookEventPayload } from '@paykit-sdk/core';
1
+ import { PaykitProviderOptions, PayKitProvider, CreateCheckoutParams, Checkout, CreateCustomerParams, Customer, UpdateCustomerParams, UpdateSubscriptionParams, Subscription, HandleWebhookParams, WebhookEventPayload } from '@paykit-sdk/core';
2
2
  import Stripe from 'stripe';
3
3
 
4
4
  interface StripeConfig extends PaykitProviderOptions<Stripe.StripeConfig> {
@@ -28,7 +28,7 @@ declare class StripeProvider implements PayKitProvider {
28
28
  /**
29
29
  * Webhook management
30
30
  */
31
- handleWebhook: (params: $ExtWebhookHandlerConfig) => Promise<WebhookEventPayload>;
31
+ handleWebhook: (params: HandleWebhookParams) => Promise<WebhookEventPayload>;
32
32
  }
33
33
 
34
34
  declare const createStripe: (config: StripeConfig) => StripeProvider;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { PaykitProviderOptions, PayKitProvider, CreateCheckoutParams, Checkout, CreateCustomerParams, Customer, UpdateCustomerParams, UpdateSubscriptionParams, Subscription, $ExtWebhookHandlerConfig, WebhookEventPayload } from '@paykit-sdk/core';
1
+ import { PaykitProviderOptions, PayKitProvider, CreateCheckoutParams, Checkout, CreateCustomerParams, Customer, UpdateCustomerParams, UpdateSubscriptionParams, Subscription, HandleWebhookParams, WebhookEventPayload } from '@paykit-sdk/core';
2
2
  import Stripe from 'stripe';
3
3
 
4
4
  interface StripeConfig extends PaykitProviderOptions<Stripe.StripeConfig> {
@@ -28,7 +28,7 @@ declare class StripeProvider implements PayKitProvider {
28
28
  /**
29
29
  * Webhook management
30
30
  */
31
- handleWebhook: (params: $ExtWebhookHandlerConfig) => Promise<WebhookEventPayload>;
31
+ handleWebhook: (params: HandleWebhookParams) => Promise<WebhookEventPayload>;
32
32
  }
33
33
 
34
34
  declare const createStripe: (config: StripeConfig) => StripeProvider;
package/dist/index.js CHANGED
@@ -34,6 +34,7 @@ __export(index_exports, {
34
34
  stripe: () => stripe
35
35
  });
36
36
  module.exports = __toCommonJS(index_exports);
37
+ var import_core3 = require("@paykit-sdk/core");
37
38
 
38
39
  // src/stripe-provider.ts
39
40
  var import_core2 = require("@paykit-sdk/core");
@@ -154,67 +155,65 @@ var StripeProvider = class {
154
155
  const stripeHeaders = (0, import_core2.headersExtractor)(headers, ["x-stripe-signature"]);
155
156
  const signature = stripeHeaders[0].value;
156
157
  const event = this.stripe.webhooks.constructEvent(body, signature, webhookSecret);
157
- if (event.type === "checkout.session.completed") {
158
- const data = event.data.object;
159
- return (0, import_core2.toPaykitEvent)({
160
- type: "$invoicePaid",
161
- created: event.created,
162
- id: event.id,
163
- data: {
164
- id: data.id,
165
- amount: data.amount_total ?? 0,
166
- currency: data.currency ?? "",
167
- metadata: (0, import_core2.stringifyObjectValues)(data.metadata ?? {}),
168
- customer_id: data.customer?.toString() ?? ""
169
- }
170
- });
171
- } else if (event.type === "customer.created") {
172
- const customer = event.data.object;
173
- return (0, import_core2.toPaykitEvent)({
174
- type: "$customerCreated",
175
- created: event.created,
176
- id: event.id,
177
- data: toPaykitCustomer(customer)
178
- });
179
- } else if (event.type === "customer.updated") {
180
- const customer = event.data.object;
181
- return (0, import_core2.toPaykitEvent)({
182
- type: "$customerUpdated",
183
- created: event.created,
184
- id: event.id,
185
- data: toPaykitCustomer(customer)
186
- });
187
- } else if (event.type === "customer.deleted") {
188
- return (0, import_core2.toPaykitEvent)({ type: "$customerDeleted", created: event.created, id: event.id, data: null });
189
- } else if (event.type === "customer.subscription.created") {
190
- const subscription = event.data.object;
191
- return (0, import_core2.toPaykitEvent)({
192
- type: "$subscriptionCreated",
193
- created: event.created,
194
- id: event.id,
195
- data: toPaykitSubscription(subscription)
196
- });
197
- } else if (event.type === "customer.subscription.updated") {
198
- const subscription = event.data.object;
199
- return (0, import_core2.toPaykitEvent)({
200
- type: "$subscriptionUpdated",
201
- created: event.created,
202
- id: event.id,
203
- data: toPaykitSubscription(subscription)
204
- });
205
- } else if (event.type === "customer.subscription.deleted") {
206
- const subscription = event.data.object;
207
- return (0, import_core2.toPaykitEvent)({
208
- type: "$subscriptionCancelled",
209
- created: event.created,
210
- id: event.id,
211
- data: toPaykitSubscription(subscription)
212
- });
213
- } else if (event.type == "invoice.paid" && event.data.object.status == "paid") {
214
- const invoice = event.data.object;
215
- return (0, import_core2.toPaykitEvent)({ type: "$invoicePaid", created: event.created, id: event.id, data: toPaykitInvoice(invoice) });
216
- }
217
- throw new Error(`Unhandled event type: ${event.type}`);
158
+ const webhookHandlers = {
159
+ /**
160
+ * Invoice
161
+ */
162
+ "checkout.session.completed": (event2) => {
163
+ const data = event2.data.object;
164
+ if (data.mode !== "payment") return null;
165
+ return (0, import_core2.toPaykitEvent)({
166
+ type: "$invoicePaid",
167
+ created: event2.created,
168
+ id: event2.id,
169
+ data: {
170
+ id: data.id,
171
+ amount: data.amount_total ?? 0,
172
+ currency: data.currency ?? "",
173
+ metadata: (0, import_core2.stringifyObjectValues)({ ...data.metadata ?? {}, $mode: data.mode }),
174
+ customer_id: data.customer?.toString() ?? ""
175
+ }
176
+ });
177
+ },
178
+ "invoice.paid": (event2) => {
179
+ const data = event2.data.object;
180
+ if (data.status !== "paid") return null;
181
+ return (0, import_core2.toPaykitEvent)({ type: "$invoicePaid", created: event2.created, id: event2.id, data: toPaykitInvoice(data) });
182
+ },
183
+ /**
184
+ * Customer
185
+ */
186
+ "customer.created": (event2) => {
187
+ const data = event2.data.object;
188
+ return (0, import_core2.toPaykitEvent)({ type: "$customerCreated", created: event2.created, id: event2.id, data: toPaykitCustomer(data) });
189
+ },
190
+ "customer.updated": (event2) => {
191
+ const data = event2.data.object;
192
+ return (0, import_core2.toPaykitEvent)({ type: "$customerUpdated", created: event2.created, id: event2.id, data: toPaykitCustomer(data) });
193
+ },
194
+ "customer.deleted": (event2) => {
195
+ return (0, import_core2.toPaykitEvent)({ type: "$customerDeleted", created: event2.created, id: event2.id, data: null });
196
+ },
197
+ /**
198
+ * Subscription
199
+ */
200
+ "customer.subscription.created": (event2) => {
201
+ const data = event2.data.object;
202
+ return (0, import_core2.toPaykitEvent)({ type: "$subscriptionCreated", created: event2.created, id: event2.id, data: toPaykitSubscription(data) });
203
+ },
204
+ "customer.subscription.updated": (event2) => {
205
+ const data = event2.data.object;
206
+ return (0, import_core2.toPaykitEvent)({ type: "$subscriptionUpdated", created: event2.created, id: event2.id, data: toPaykitSubscription(data) });
207
+ },
208
+ "customer.subscription.deleted": (event2) => {
209
+ return (0, import_core2.toPaykitEvent)({ type: "$subscriptionCancelled", created: event2.created, id: event2.id, data: null });
210
+ }
211
+ };
212
+ const handler = webhookHandlers[event.type];
213
+ if (!handler) throw new Error(`Unhandled event type: ${event.type}`);
214
+ const result = handler(event);
215
+ if (!result) throw new Error(`Unhandled event type: ${event.type}`);
216
+ return result;
218
217
  };
219
218
  const { debug, apiKey, ...rest } = config;
220
219
  this.stripe = new import_stripe.default(apiKey, rest);
@@ -226,12 +225,9 @@ var createStripe = (config) => {
226
225
  return new StripeProvider(config);
227
226
  };
228
227
  var stripe = () => {
229
- const apiKey = process.env.STRIPE_API_KEY;
228
+ const envVars = (0, import_core3.validateEnvVars)(["STRIPE_API_KEY"], process.env);
230
229
  const isDev = process.env.NODE_ENV === "development";
231
- if (!apiKey) {
232
- throw new Error("STRIPE_API_KEY is not set");
233
- }
234
- return createStripe({ apiKey, debug: isDev, apiVersion: "2025-07-30.basil" });
230
+ return createStripe({ apiKey: envVars.STRIPE_API_KEY, debug: isDev, apiVersion: "2025-07-30.basil" });
235
231
  };
236
232
  // Annotate the CommonJS export names for ESM import in node:
237
233
  0 && (module.exports = {
package/dist/index.mjs CHANGED
@@ -1,3 +1,6 @@
1
+ // src/index.ts
2
+ import { validateEnvVars } from "@paykit-sdk/core";
3
+
1
4
  // src/stripe-provider.ts
2
5
  import {
3
6
  toPaykitEvent,
@@ -121,67 +124,65 @@ var StripeProvider = class {
121
124
  const stripeHeaders = headersExtractor(headers, ["x-stripe-signature"]);
122
125
  const signature = stripeHeaders[0].value;
123
126
  const event = this.stripe.webhooks.constructEvent(body, signature, webhookSecret);
124
- if (event.type === "checkout.session.completed") {
125
- const data = event.data.object;
126
- return toPaykitEvent({
127
- type: "$invoicePaid",
128
- created: event.created,
129
- id: event.id,
130
- data: {
131
- id: data.id,
132
- amount: data.amount_total ?? 0,
133
- currency: data.currency ?? "",
134
- metadata: stringifyObjectValues2(data.metadata ?? {}),
135
- customer_id: data.customer?.toString() ?? ""
136
- }
137
- });
138
- } else if (event.type === "customer.created") {
139
- const customer = event.data.object;
140
- return toPaykitEvent({
141
- type: "$customerCreated",
142
- created: event.created,
143
- id: event.id,
144
- data: toPaykitCustomer(customer)
145
- });
146
- } else if (event.type === "customer.updated") {
147
- const customer = event.data.object;
148
- return toPaykitEvent({
149
- type: "$customerUpdated",
150
- created: event.created,
151
- id: event.id,
152
- data: toPaykitCustomer(customer)
153
- });
154
- } else if (event.type === "customer.deleted") {
155
- return toPaykitEvent({ type: "$customerDeleted", created: event.created, id: event.id, data: null });
156
- } else if (event.type === "customer.subscription.created") {
157
- const subscription = event.data.object;
158
- return toPaykitEvent({
159
- type: "$subscriptionCreated",
160
- created: event.created,
161
- id: event.id,
162
- data: toPaykitSubscription(subscription)
163
- });
164
- } else if (event.type === "customer.subscription.updated") {
165
- const subscription = event.data.object;
166
- return toPaykitEvent({
167
- type: "$subscriptionUpdated",
168
- created: event.created,
169
- id: event.id,
170
- data: toPaykitSubscription(subscription)
171
- });
172
- } else if (event.type === "customer.subscription.deleted") {
173
- const subscription = event.data.object;
174
- return toPaykitEvent({
175
- type: "$subscriptionCancelled",
176
- created: event.created,
177
- id: event.id,
178
- data: toPaykitSubscription(subscription)
179
- });
180
- } else if (event.type == "invoice.paid" && event.data.object.status == "paid") {
181
- const invoice = event.data.object;
182
- return toPaykitEvent({ type: "$invoicePaid", created: event.created, id: event.id, data: toPaykitInvoice(invoice) });
183
- }
184
- throw new Error(`Unhandled event type: ${event.type}`);
127
+ const webhookHandlers = {
128
+ /**
129
+ * Invoice
130
+ */
131
+ "checkout.session.completed": (event2) => {
132
+ const data = event2.data.object;
133
+ if (data.mode !== "payment") return null;
134
+ return toPaykitEvent({
135
+ type: "$invoicePaid",
136
+ created: event2.created,
137
+ id: event2.id,
138
+ data: {
139
+ id: data.id,
140
+ amount: data.amount_total ?? 0,
141
+ currency: data.currency ?? "",
142
+ metadata: stringifyObjectValues2({ ...data.metadata ?? {}, $mode: data.mode }),
143
+ customer_id: data.customer?.toString() ?? ""
144
+ }
145
+ });
146
+ },
147
+ "invoice.paid": (event2) => {
148
+ const data = event2.data.object;
149
+ if (data.status !== "paid") return null;
150
+ return toPaykitEvent({ type: "$invoicePaid", created: event2.created, id: event2.id, data: toPaykitInvoice(data) });
151
+ },
152
+ /**
153
+ * Customer
154
+ */
155
+ "customer.created": (event2) => {
156
+ const data = event2.data.object;
157
+ return toPaykitEvent({ type: "$customerCreated", created: event2.created, id: event2.id, data: toPaykitCustomer(data) });
158
+ },
159
+ "customer.updated": (event2) => {
160
+ const data = event2.data.object;
161
+ return toPaykitEvent({ type: "$customerUpdated", created: event2.created, id: event2.id, data: toPaykitCustomer(data) });
162
+ },
163
+ "customer.deleted": (event2) => {
164
+ return toPaykitEvent({ type: "$customerDeleted", created: event2.created, id: event2.id, data: null });
165
+ },
166
+ /**
167
+ * Subscription
168
+ */
169
+ "customer.subscription.created": (event2) => {
170
+ const data = event2.data.object;
171
+ return toPaykitEvent({ type: "$subscriptionCreated", created: event2.created, id: event2.id, data: toPaykitSubscription(data) });
172
+ },
173
+ "customer.subscription.updated": (event2) => {
174
+ const data = event2.data.object;
175
+ return toPaykitEvent({ type: "$subscriptionUpdated", created: event2.created, id: event2.id, data: toPaykitSubscription(data) });
176
+ },
177
+ "customer.subscription.deleted": (event2) => {
178
+ return toPaykitEvent({ type: "$subscriptionCancelled", created: event2.created, id: event2.id, data: null });
179
+ }
180
+ };
181
+ const handler = webhookHandlers[event.type];
182
+ if (!handler) throw new Error(`Unhandled event type: ${event.type}`);
183
+ const result = handler(event);
184
+ if (!result) throw new Error(`Unhandled event type: ${event.type}`);
185
+ return result;
185
186
  };
186
187
  const { debug, apiKey, ...rest } = config;
187
188
  this.stripe = new Stripe(apiKey, rest);
@@ -193,12 +194,9 @@ var createStripe = (config) => {
193
194
  return new StripeProvider(config);
194
195
  };
195
196
  var stripe = () => {
196
- const apiKey = process.env.STRIPE_API_KEY;
197
+ const envVars = validateEnvVars(["STRIPE_API_KEY"], process.env);
197
198
  const isDev = process.env.NODE_ENV === "development";
198
- if (!apiKey) {
199
- throw new Error("STRIPE_API_KEY is not set");
200
- }
201
- return createStripe({ apiKey, debug: isDev, apiVersion: "2025-07-30.basil" });
199
+ return createStripe({ apiKey: envVars.STRIPE_API_KEY, debug: isDev, apiVersion: "2025-07-30.basil" });
202
200
  };
203
201
  export {
204
202
  createStripe,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paykit-sdk/stripe",
3
- "version": "1.1.4",
3
+ "version": "1.1.5",
4
4
  "description": "Stripe provider for PayKit",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",
@@ -24,7 +24,7 @@
24
24
  "stripe": "^18.2.1"
25
25
  },
26
26
  "peerDependencies": {
27
- "@paykit-sdk/core": "^1.1.3"
27
+ "@paykit-sdk/core": "^1.1.6"
28
28
  },
29
29
  "devDependencies": {
30
30
  "tsup": "^8.0.0",