@redwoodjs-stripe/api
Version:
API-side code for RedwoodJS-Stripe projects
77 lines (76 loc) • 2.7 kB
JavaScript
;
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
});