open-next-cdk
Version:
Deploy a NextJS app using OpenNext packaging to serverless AWS using CDK
46 lines (45 loc) • 1.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.writeRequestBody = void 0;
const stream_1 = require("stream");
const MIN_WAIT_TIME = 1000;
async function writeRequestBody(httpRequest, request, maxContinueTimeoutMs = MIN_WAIT_TIME) {
var _a;
const headers = (_a = request.headers) !== null && _a !== void 0 ? _a : {};
const expect = headers["Expect"] || headers["expect"];
let timeoutId = -1;
let hasError = false;
if (expect === "100-continue") {
await Promise.race([
new Promise((resolve) => {
timeoutId = Number(setTimeout(resolve, Math.max(MIN_WAIT_TIME, maxContinueTimeoutMs)));
}),
new Promise((resolve) => {
httpRequest.on("continue", () => {
clearTimeout(timeoutId);
resolve();
});
httpRequest.on("error", () => {
hasError = true;
clearTimeout(timeoutId);
resolve();
});
}),
]);
}
if (!hasError) {
writeBody(httpRequest, request.body);
}
}
exports.writeRequestBody = writeRequestBody;
function writeBody(httpRequest, body) {
if (body instanceof stream_1.Readable) {
body.pipe(httpRequest);
}
else if (body) {
httpRequest.end(Buffer.from(body));
}
else {
httpRequest.end();
}
}