UNPKG

@redwoodjs-stripe/api

Version:

API-side code for RedwoodJS-Stripe projects

77 lines (76 loc) 2.7 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var handleStripeWebhooks_exports = {}; __export(handleStripeWebhooks_exports, { handleStripeWebhooks: () => handleStripeWebhooks }); module.exports = __toCommonJS(handleStripeWebhooks_exports); var import_stripe = require("./stripe"); var import_nonNilAssertionError = require("./nonNilAssertionError"); const handleStripeWebhooks = async ({ event, context, webhooks = {}, secure = true }) => { if (secure) { const endpointSecret = process.env.STRIPE_WEBHOOK_KEY; if (!endpointSecret) { throw (0, import_nonNilAssertionError.nonNilAssertionError)("handleStripeWebhooks:webhookKey", { endpointSecret }); } const signature = event.headers["stripe-signature"]; if (!signature) { throw (0, import_nonNilAssertionError.nonNilAssertionError)("handleStripeWebhooks:signature", { signature }); } const parsedBody = event.isBase64Encoded ? Buffer.from(event.body ?? "", "base64").toString("utf-8") : event.body; const stripeEvent = import_stripe.stripe.webhooks.constructEvent( parsedBody ?? "", signature, endpointSecret ); if (typeof webhooks[stripeEvent.type] !== "undefined") { await webhooks[stripeEvent.type](stripeEvent, context); } return { statusCode: 200, results: stripeEvent }; } else { if (process.env.NODE_ENV === "production") { throw new Error("Stripe webhooks must be secure in production"); } const unverifiedStripeEvent = JSON.parse(event.body ?? ""); const eventType = unverifiedStripeEvent.type; if (typeof webhooks[eventType] !== "undefined") { await webhooks[eventType](unverifiedStripeEvent, context); } return { statusCode: 200, results: unverifiedStripeEvent }; } }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { handleStripeWebhooks });