UNPKG

@whook/whook

Version:

Build strong and efficient REST web services.

57 lines 1.71 kB
import { YError } from 'yerror'; import { identity } from './utils.js'; export function mergeVaryHeaders(baseHeader, addedValue) { if (addedValue.includes(',')) { throw new YError('E_BAD_VARY_VALUE', addedValue); } const baseHeaderValues = (baseHeader instanceof Array ? baseHeader : [baseHeader]) .map((value) => value .split(',') .filter(identity) .map((v) => v.trim().toLowerCase())) .reduce((allValues, values) => [...allValues, ...values], []); if (baseHeaderValues.includes('*') || addedValue.trim() === '*') { return '*'; } return [ ...new Set([...baseHeaderValues, addedValue.trim().toLowerCase()].filter(identity)), ].join(', '); } export function lowerCaseHeaders(object) { return Object.keys(object).reduce((finalObject, key) => ({ ...finalObject, [key.toLowerCase()]: object[key], }), {}); } /** * Pick the first header value if exists * @function * @param {string} name * The header name * @param {Object} headers * The headers map * @return {string} * The value if defined. */ export function pickFirstHeaderValue(name, headers) { return pickAllHeaderValues(name, headers)[0]; } /** * Pick header values * @function * @param {string} name * The header name * @param {Object} headers * The headers map * @return {Array} * The values in an array. */ export function pickAllHeaderValues(name, headers) { const headerValues = headers && typeof headers[name] === 'undefined' ? [] : typeof headers[name] === 'string' ? [headers[name]] : headers[name]; return headerValues; } //# sourceMappingURL=headers.js.map