@http4t/core
Advanced tools
Comparing version 0.0.143 to 0.0.144
@@ -7,2 +7,6 @@ import { Header, HeaderName, HeaderValue } from './contract'; | ||
/** | ||
* Case insensitive on name | ||
*/ | ||
export declare function getHeaderValues(headers: readonly Header[], name: HeaderName): HeaderValue[]; | ||
/** | ||
* Replaces header(s) with same name in headers. | ||
@@ -12,3 +16,5 @@ * | ||
*/ | ||
export declare function setHeader(headers: undefined | readonly Header[], header: Header): readonly Header[]; | ||
export declare function setHeader(headers: readonly Header[], header: Header): readonly Header[]; | ||
export declare function updateHeaders(headers: readonly Header[], name: HeaderName, f: (value: HeaderValue) => HeaderValue): readonly Header[]; | ||
export declare function removeHeader(headers: readonly Header[], name: HeaderName): readonly Header[]; | ||
export declare type HeaderValueLike = string | number | Date; | ||
@@ -15,0 +21,0 @@ /** |
@@ -34,3 +34,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.headerValue = exports.headerName = exports.header = exports.setHeader = exports.getHeaderValue = void 0; | ||
exports.headerValue = exports.headerName = exports.header = exports.removeHeader = exports.updateHeaders = exports.setHeader = exports.getHeaderValues = exports.getHeaderValue = void 0; | ||
/** | ||
@@ -41,3 +41,3 @@ * Case insensitive on name | ||
var e_1, _a; | ||
if (!headers) | ||
if (typeof headers === 'undefined') | ||
return undefined; | ||
@@ -63,2 +63,19 @@ var lowerCaseName = name.toLowerCase(); | ||
/** | ||
* Case insensitive on name | ||
*/ | ||
function getHeaderValues(headers, name) { | ||
if (typeof headers === 'undefined') | ||
return []; | ||
var lowerCaseName = name.toLowerCase(); | ||
return headers.filter(function (_a) { | ||
var _b = __read(_a, 2), name = _b[0], value = _b[1]; | ||
return name.toLowerCase() === lowerCaseName; | ||
}) | ||
.map(function (_a) { | ||
var _b = __read(_a, 2), name = _b[0], value = _b[1]; | ||
return value; | ||
}); | ||
} | ||
exports.getHeaderValues = getHeaderValues; | ||
/** | ||
* Replaces header(s) with same name in headers. | ||
@@ -69,4 +86,2 @@ * | ||
function setHeader(headers, header) { | ||
if (!headers) | ||
return [header]; | ||
var lowerCaseName = headerName(header).toLowerCase(); | ||
@@ -79,2 +94,18 @@ return __spread(headers.filter(function (_a) { | ||
exports.setHeader = setHeader; | ||
function updateHeaders(headers, name, f) { | ||
var lowerCaseName = name.toLowerCase(); | ||
return headers.map(function (_a) { | ||
var _b = __read(_a, 2), name = _b[0], value = _b[1]; | ||
return (name.toLowerCase() === lowerCaseName) ? [name, f(value)] : [name, value]; | ||
}); | ||
} | ||
exports.updateHeaders = updateHeaders; | ||
function removeHeader(headers, name) { | ||
var lowerCaseName = name.toLowerCase(); | ||
return headers.filter(function (_a) { | ||
var _b = __read(_a, 1), name = _b[0]; | ||
return name.toLowerCase() !== lowerCaseName; | ||
}); | ||
} | ||
exports.removeHeader = removeHeader; | ||
/** | ||
@@ -84,3 +115,4 @@ * Dates will be formatted into the correct format as defined by [RFC 5322](https://tools.ietf.org/html/rfc5322) | ||
function header(name, value) { | ||
// TODO Date formatting | ||
if (typeof value === 'object') | ||
return [name, value.toUTCString()]; | ||
return [name, String(value)]; | ||
@@ -87,0 +119,0 @@ } |
@@ -7,11 +7,21 @@ import {Header, HeaderName, HeaderValue} from './contract'; | ||
export function getHeaderValue(headers: readonly Header[], name: HeaderName): HeaderValue | undefined { | ||
if (!headers) | ||
if (typeof headers === 'undefined') return undefined; | ||
const lowerCaseName = name.toLowerCase(); | ||
for (const [n, v] of headers) { | ||
if (n.toLowerCase() === lowerCaseName) | ||
return v; | ||
} | ||
return undefined; | ||
} | ||
const lowerCaseName = name.toLowerCase(); | ||
for (const [n, v] of headers) { | ||
if (n.toLowerCase() === lowerCaseName) | ||
return v; | ||
} | ||
return undefined; | ||
/** | ||
* Case insensitive on name | ||
*/ | ||
export function getHeaderValues(headers: readonly Header[], name: HeaderName): HeaderValue[] { | ||
if (typeof headers === 'undefined') return []; | ||
const lowerCaseName = name.toLowerCase(); | ||
return headers.filter(([name, value]) => name.toLowerCase() === lowerCaseName) | ||
.map(([name, value]) => value) | ||
} | ||
@@ -24,10 +34,17 @@ | ||
*/ | ||
export function setHeader(headers: undefined | readonly Header[], header: Header): readonly Header[] { | ||
if (!headers) | ||
return [header]; | ||
export function setHeader(headers: readonly Header[], header: Header): readonly Header[] { | ||
const lowerCaseName = headerName(header).toLowerCase(); | ||
return [...headers.filter(([name]) => name.toLowerCase() !== lowerCaseName), header]; | ||
} | ||
const lowerCaseName = headerName(header).toLowerCase(); | ||
return [...headers.filter(([name]) => name.toLowerCase() !== lowerCaseName), header]; | ||
export function updateHeaders(headers: readonly Header[], name: HeaderName, f: (value: HeaderValue)=> HeaderValue): readonly Header[] { | ||
const lowerCaseName = name.toLowerCase(); | ||
return headers.map(([name, value]) => (name.toLowerCase() === lowerCaseName) ? [name, f(value)] : [name, value] ); | ||
} | ||
export function removeHeader(headers: readonly Header[], name: HeaderName): readonly Header[] { | ||
const lowerCaseName = name.toLowerCase(); | ||
return headers.filter(([name]) => name.toLowerCase() !== lowerCaseName); | ||
} | ||
export type HeaderValueLike = string | number | Date; | ||
@@ -39,12 +56,12 @@ | ||
export function header(name: HeaderName, value: HeaderValueLike): Header { | ||
// TODO Date formatting | ||
return [name, String(value)]; | ||
if (typeof value === 'object') return [name, value.toUTCString()] | ||
return [name, String(value)]; | ||
} | ||
export function headerName(header: Header): HeaderName { | ||
return header[0]; | ||
return header[0]; | ||
} | ||
export function headerValue(header: Header): HeaderValue { | ||
return header[1]; | ||
return header[1]; | ||
} |
import { HeaderName, HeaderValue, HttpBody, HttpMessage, HttpRequest, HttpResponse } from "./contract"; | ||
export declare function setHeader<T extends HttpMessage>(message: T, name: HeaderName, value: HeaderValue): T; | ||
export declare function appendHeader<T extends HttpMessage>(message: T, name: HeaderName, value: HeaderValue): T; | ||
export declare function removeHeaders<T extends HttpMessage>(message: T, name: HeaderName): T; | ||
export declare function updateHeaders<T extends HttpMessage>(message: T, name: HeaderName, f: (value: HeaderValue) => HeaderValue): T; | ||
export declare function setBody<T extends HttpMessage>(message: T, body: HttpBody): T; | ||
@@ -4,0 +7,0 @@ export declare function isResponse(message: HttpMessage): message is HttpResponse; |
@@ -49,4 +49,24 @@ "use strict"; | ||
}; | ||
var __read = (this && this.__read) || function (o, n) { | ||
var m = typeof Symbol === "function" && o[Symbol.iterator]; | ||
if (!m) return o; | ||
var i = m.call(o), r, ar = [], e; | ||
try { | ||
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); | ||
} | ||
catch (error) { e = { error: error }; } | ||
finally { | ||
try { | ||
if (r && !r.done && (m = i["return"])) m.call(i); | ||
} | ||
finally { if (e) throw e.error; } | ||
} | ||
return ar; | ||
}; | ||
var __spread = (this && this.__spread) || function () { | ||
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); | ||
return ar; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.toJSON = exports.isRequest = exports.isResponse = exports.setBody = exports.setHeader = void 0; | ||
exports.toJSON = exports.isRequest = exports.isResponse = exports.setBody = exports.updateHeaders = exports.removeHeaders = exports.appendHeader = exports.setHeader = void 0; | ||
var h = require("./headers"); | ||
@@ -56,2 +76,6 @@ var headers_1 = require("./headers"); | ||
var bodies_1 = require("./bodies"); | ||
/* | ||
* these operate on headers in a case-insensitive way | ||
* while headers themselves can have any casing they like and we preserve it. | ||
* */ | ||
function setHeader(message, name, value) { | ||
@@ -61,2 +85,14 @@ return objects_1.modify(message, { headers: h.setHeader(message.headers, headers_1.header(name, value)) }); | ||
exports.setHeader = setHeader; | ||
function appendHeader(message, name, value) { | ||
return objects_1.modify(message, { headers: __spread(message.headers, [[name, value]]) }); | ||
} | ||
exports.appendHeader = appendHeader; | ||
function removeHeaders(message, name) { | ||
return objects_1.modify(message, { headers: h.removeHeader(message.headers, name) }); | ||
} | ||
exports.removeHeaders = removeHeaders; | ||
function updateHeaders(message, name, f) { | ||
return objects_1.modify(message, { headers: h.updateHeaders(message.headers, name, f) }); | ||
} | ||
exports.updateHeaders = updateHeaders; | ||
function setBody(message, body) { | ||
@@ -63,0 +99,0 @@ return objects_1.modify(message, { body: body }); |
@@ -7,2 +7,6 @@ import {HeaderName, HeaderValue, HttpBody, HttpMessage, HttpRequest, HttpResponse} from "./contract"; | ||
/* | ||
* these operate on headers in a case-insensitive way | ||
* while headers themselves can have any casing they like and we preserve it. | ||
* */ | ||
export function setHeader<T extends HttpMessage>(message: T, name: HeaderName, value: HeaderValue): T { | ||
@@ -12,2 +16,14 @@ return modify(message, {headers: h.setHeader(message.headers, header(name, value))} as Partial<T>); | ||
export function appendHeader<T extends HttpMessage>(message: T, name: HeaderName, value: HeaderValue): T { | ||
return modify(message, {headers: [...message.headers, [name, value]]} as Partial<T>); | ||
} | ||
export function removeHeaders<T extends HttpMessage>(message: T, name: HeaderName): T { | ||
return modify(message, {headers: h.removeHeader(message.headers, name)} as Partial<T>); | ||
} | ||
export function updateHeaders<T extends HttpMessage>(message: T, name: HeaderName, f: (value: HeaderValue)=> HeaderValue): T { | ||
return modify(message, {headers: h.updateHeaders(message.headers, name, f)} as Partial<T>); | ||
} | ||
export function setBody<T extends HttpMessage>(message: T, body: HttpBody): T { | ||
@@ -14,0 +30,0 @@ return modify(message, {body} as Partial<T>); |
{ | ||
"name": "@http4t/core", | ||
"version": "0.0.143", | ||
"version": "0.0.144", | ||
"license": "Apache-2.0" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
153125
2768