@letticdo/bare-server-node-tomphttp
Version:
The Bare Server implementation in NodeJS.
49 lines • 1.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.flattenHeader = exports.mapHeadersFromArray = exports.rawHeaderNames = exports.objectFromRawHeaders = void 0;
function objectFromRawHeaders(raw) {
const result = {};
Reflect.setPrototypeOf(result, null);
for (let i = 0; i < raw.length; i += 2) {
const [header, value] = raw.slice(i, i + 2);
if (header in result) {
const v = result[header];
if (Array.isArray(v))
v.push(value);
else
result[header] = [v, value];
}
else
result[header] = value;
}
return result;
}
exports.objectFromRawHeaders = objectFromRawHeaders;
function rawHeaderNames(raw) {
const result = [];
for (let i = 0; i < raw.length; i += 2) {
if (!result.includes(raw[i]))
result.push(raw[i]);
}
return result;
}
exports.rawHeaderNames = rawHeaderNames;
function mapHeadersFromArray(from, to) {
for (const header of from) {
if (header.toLowerCase() in to) {
const value = to[header.toLowerCase()];
delete to[header.toLowerCase()];
to[header] = value;
}
}
return to;
}
exports.mapHeadersFromArray = mapHeadersFromArray;
/**
* Converts a header into an HTTP-ready comma joined header.
*/
function flattenHeader(value) {
return Array.isArray(value) ? value.join(', ') : value;
}
exports.flattenHeader = flattenHeader;
//# sourceMappingURL=headerUtil.js.map