UNPKG

lambda-request-handler

Version:

An npm module that allows your Node.js web applications to be deployed as an AWS Lambda function and invoked in response to API Gateway, HTTP API, or Application Load Balancer requests.

57 lines (56 loc) 2 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const setCookieVariations_1 = __importDefault(require("./setCookieVariations")); const fixResponseHeaders = (headers, supportMultiHeaders, supportCookies) => { const multiValueHeaders = {}; const singleValueHeaders = {}; let cookies = undefined; Object.keys(headers).forEach((k) => { if (Array.isArray(headers[k])) { const values = headers[k]; multiValueHeaders[k] = values; if (k === "set-cookie") { if (supportCookies) { cookies = values; } else { values.forEach((value, i) => { singleValueHeaders[setCookieVariations_1.default[i]] = value; }); } } else { singleValueHeaders[k] = values.join(","); } } else { const value = headers[k].toString(); multiValueHeaders[k] = [value]; singleValueHeaders[k] = value; } }); if (singleValueHeaders["transfer-encoding"] === "chunked") { delete singleValueHeaders["transfer-encoding"]; } if (multiValueHeaders["transfer-encoding"]) { const filtered = multiValueHeaders["transfer-encoding"].filter((v) => v !== "chunked"); if (filtered.length > 0) { multiValueHeaders["transfer-encoding"] = filtered; } else { delete multiValueHeaders["transfer-encoding"]; } } const output = { headers: singleValueHeaders }; if (supportMultiHeaders) { output.multiValueHeaders = multiValueHeaders; } if (supportCookies) { output.cookies = cookies; } return output; }; exports.default = fixResponseHeaders;