UNPKG

serverless-offline-edge-lambda

Version:

A plugin for the Serverless Framework that simulates the behavior of AWS CloudFront Edge Lambdas while developing offline.

99 lines 3.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CloudFrontHeadersHelper = exports.setHeader = exports.initializeKey = exports.normalizeKey = exports.toHttpHeaders = exports.hasHeader = exports.getHeaders = exports.getHeader = exports.addHeader = void 0; function addHeader(key, value, headers) { const normalized = normalizeKey(key); const newHeaders = Object.assign({ [normalized]: [] }, headers); newHeaders[normalized].push({ key, value }); return newHeaders; } exports.addHeader = addHeader; function getHeader(key, headers) { const subheaders = getHeaders(key, headers); if (!subheaders || subheaders.length === 0) { return null; } return subheaders[0]; } exports.getHeader = getHeader; function getHeaders(key, headers) { const normalized = normalizeKey(key); if (!(normalized in headers)) { return null; } return headers[normalized].map(header => header.value); } exports.getHeaders = getHeaders; function hasHeader(key, headers) { const subheaders = getHeaders(key, headers); return (subheaders !== null && subheaders.length > 0); } exports.hasHeader = hasHeader; function toHttpHeaders(headers) { return Object.entries(headers) .reduce((acc, [key, subheaders]) => { acc.push({ key, value: subheaders.map(sh => sh.value) }); return acc; }, []); } exports.toHttpHeaders = toHttpHeaders; function normalizeKey(key) { return key.toLowerCase(); } exports.normalizeKey = normalizeKey; function initializeKey(key, headers) { const normalized = normalizeKey(key); if (!headers[normalized] || headers[normalized].length === 0) { headers[normalized] = []; } } exports.initializeKey = initializeKey; function setHeader(key, value, headers) { const normalized = normalizeKey(key); const newHeaders = Object.assign(Object.assign({}, headers), { [normalized]: [] }); newHeaders[normalized].push({ key, value }); return newHeaders; } exports.setHeader = setHeader; class CloudFrontHeadersHelper { constructor(headers = {}) { this.headers = headers; } getHeader(key) { return getHeader(key, this.headers); } getHeaders(key) { return getHeaders(key, this.headers); } addHeader(key, value) { this.headers = addHeader(key, value, this.headers); } hasHeader(key) { return hasHeader(key, this.headers); } setHeader(key, value) { this.headers = setHeader(key, value, this.headers); } asHttpHeaders() { return toHttpHeaders(this.headers); } asCloudFrontHeaders() { return this.headers; } static from(headers) { const cfHeaders = Object.entries(headers) .reduce((acc, [key, value]) => { acc[key.toLowerCase()] = [{ key, value: value }]; return acc; }, {}); return new CloudFrontHeadersHelper(cfHeaders); } } exports.CloudFrontHeadersHelper = CloudFrontHeadersHelper; //# sourceMappingURL=cloudfront-headers.js.map