next-sanity
Version:
Sanity.io toolkit for Next.js
49 lines (47 loc) • 1.46 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true
});
var sanityWebhook = require('@sanity/webhook');
function _interopDefaultCompat(e) {
return e && typeof e === 'object' && 'default' in e ? e : {
default: e
};
}
var sanityWebhook__default = /*#__PURE__*/_interopDefaultCompat(sanityWebhook);
const config = {
api: {
bodyParser: false
},
runtime: "nodejs"
};
async function _readBody(readable) {
const chunks = [];
for await (const chunk of readable) {
chunks.push(typeof chunk === "string" ? Buffer.from(chunk) : chunk);
}
return Buffer.concat(chunks).toString("utf8");
}
const {
isValidSignature,
SIGNATURE_HEADER_NAME
} = sanityWebhook__default.default;
async function parseBody(req, secret) {
let waitForContentLakeEventualConsistency = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
let signature = req.headers[SIGNATURE_HEADER_NAME];
if (Array.isArray(signature)) {
signature = signature[0];
}
const body = await _readBody(req);
const validSignature = secret ? isValidSignature(body, signature, secret.trim()) : null;
if (validSignature !== false && waitForContentLakeEventualConsistency) {
await new Promise(resolve => setTimeout(resolve, 1e3));
}
return {
body: body.trim() && JSON.parse(body),
isValidSignature: validSignature
};
}
exports.config = config;
exports.parseBody = parseBody;
//# sourceMappingURL=webhook.cjs.map