next-sanity
Version:
Sanity.io toolkit for Next.js
37 lines (36 loc) • 1.13 kB
JavaScript
import sanityWebhook from '@sanity/webhook';
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;
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
};
}
export { config, parseBody };
//# sourceMappingURL=webhook.js.map