New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More

@http4t/core

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@http4t/core - npm Package Compare versions

Comparing version 0.3.63 to 0.4.109

@@ -1,2 +0,1 @@

"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {

@@ -23,11 +22,9 @@ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }

};
Object.defineProperty(exports, "__esModule", { value: true });
exports.BinHandler = void 0;
const random_1 = require("./util/random");
const responses_1 = require("./responses");
const bodies_1 = require("./bodies");
import { Random } from "./util/random";
import { notFound, ok } from "./responses";
import { bufferText } from "./bodies";
/**
* Represents an in memory version of http://httpbin.org/
*/
class BinHandler {
export class BinHandler {
handle(request) {

@@ -41,3 +38,3 @@ return __awaiter(this, void 0, void 0, function* () {

if (method === 'GET')
return responses_1.ok();
return ok();
if (method === 'POST')

@@ -51,3 +48,3 @@ return BinHandler.echo(request);

return BinHandler.echo(request);
return responses_1.notFound();
return notFound();
});

@@ -62,9 +59,9 @@ }

}, {});
return responses_1.ok(JSON.stringify({ data: yield bodies_1.bufferText(body), headers: jsonedHeaders }));
return ok(JSON.stringify({ data: yield bufferText(body), headers: jsonedHeaders }));
});
}
streamBytes(size) {
return responses_1.ok((function () {
return ok((function () {
return __asyncGenerator(this, arguments, function* () {
yield yield __await(random_1.Random.bytes(size));
yield yield __await(Random.bytes(size));
});

@@ -74,3 +71,2 @@ })());

}
exports.BinHandler = BinHandler;
//# sourceMappingURL=bin.js.map

@@ -1,2 +0,1 @@

"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {

@@ -30,5 +29,3 @@ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }

};
Object.defineProperty(exports, "__esModule", { value: true });
exports.merge = exports.isPromiseLike = exports.isData = exports.isUint8Array = exports.isIterable = exports.isAsyncIterable = exports.typeDescription = exports.asBinary = exports.asString = exports.streamBinary = exports.streamText = exports.bufferBinary = exports.bufferText = void 0;
const textencoding_1 = require("./util/textencoding");
import { DECODER, ENCODER } from "./util/textencoding";
function wrongBodyType(body) {

@@ -42,5 +39,5 @@ return new Error(`Not a valid HttpBody: '${body}' (${typeDescription(body)})`);

*/
function bufferText(body) {
var body_1, body_1_1;
var e_1, _a;
export function bufferText(body) {
var _a, body_1, body_1_1;
var _b, e_1, _c, _d;
return __awaiter(this, void 0, void 0, function* () {

@@ -53,5 +50,12 @@ if (isPromiseLike(body)) {

try {
for (body_1 = __asyncValues(body); body_1_1 = yield body_1.next(), !body_1_1.done;) {
const data = body_1_1.value;
result += asString(data);
for (_a = true, body_1 = __asyncValues(body); body_1_1 = yield body_1.next(), _b = body_1_1.done, !_b;) {
_d = body_1_1.value;
_a = false;
try {
const data = _d;
result += asString(data);
}
finally {
_a = true;
}
}

@@ -62,3 +66,3 @@ }

try {
if (body_1_1 && !body_1_1.done && (_a = body_1.return)) yield _a.call(body_1);
if (!_a && !_b && (_c = body_1.return)) yield _c.call(body_1);
}

@@ -78,6 +82,5 @@ finally { if (e_1) throw e_1.error; }

}
exports.bufferText = bufferText;
function bufferBinary(body) {
var body_2, body_2_1;
var e_2, _a;
export function bufferBinary(body) {
var _a, body_2, body_2_1;
var _b, e_2, _c, _d;
return __awaiter(this, void 0, void 0, function* () {

@@ -90,5 +93,12 @@ if (isPromiseLike(body)) {

try {
for (body_2 = __asyncValues(body); body_2_1 = yield body_2.next(), !body_2_1.done;) {
const data = body_2_1.value;
result = merge(result, asBinary(data));
for (_a = true, body_2 = __asyncValues(body); body_2_1 = yield body_2.next(), _b = body_2_1.done, !_b;) {
_d = body_2_1.value;
_a = false;
try {
const data = _d;
result = merge(result, asBinary(data));
}
finally {
_a = true;
}
}

@@ -99,3 +109,3 @@ }

try {
if (body_2_1 && !body_2_1.done && (_a = body_2.return)) yield _a.call(body_2);
if (!_a && !_b && (_c = body_2.return)) yield _c.call(body_2);
}

@@ -115,6 +125,5 @@ finally { if (e_2) throw e_2.error; }

}
exports.bufferBinary = bufferBinary;
function streamText(body) {
export function streamText(body) {
return __asyncGenerator(this, arguments, function* streamText_1() {
var e_3, _a, e_4, _b;
var _a, e_3, _b, _c, _d, e_4, _e, _f;
if (isPromiseLike(body)) {

@@ -126,5 +135,12 @@ yield yield __await(asString(yield __await(body)));

try {
for (var body_3 = __asyncValues(body), body_3_1; body_3_1 = yield __await(body_3.next()), !body_3_1.done;) {
const data = body_3_1.value;
yield yield __await(asString(data));
for (var _g = true, body_3 = __asyncValues(body), body_3_1; body_3_1 = yield __await(body_3.next()), _a = body_3_1.done, !_a;) {
_c = body_3_1.value;
_g = false;
try {
const data = _c;
yield yield __await(asString(data));
}
finally {
_g = true;
}
}

@@ -135,3 +151,3 @@ }

try {
if (body_3_1 && !body_3_1.done && (_a = body_3.return)) yield __await(_a.call(body_3));
if (!_g && !_a && (_b = body_3.return)) yield __await(_b.call(body_3));
}

@@ -148,5 +164,12 @@ finally { if (e_3) throw e_3.error; }

try {
for (var body_4 = __asyncValues(body), body_4_1; body_4_1 = yield __await(body_4.next()), !body_4_1.done;) {
const data = body_4_1.value;
yield yield __await(asString(data));
for (var _h = true, body_4 = __asyncValues(body), body_4_1; body_4_1 = yield __await(body_4.next()), _d = body_4_1.done, !_d;) {
_f = body_4_1.value;
_h = false;
try {
const data = _f;
yield yield __await(asString(data));
}
finally {
_h = true;
}
}

@@ -157,3 +180,3 @@ }

try {
if (body_4_1 && !body_4_1.done && (_b = body_4.return)) yield __await(_b.call(body_4));
if (!_h && !_d && (_e = body_4.return)) yield __await(_e.call(body_4));
}

@@ -167,6 +190,5 @@ finally { if (e_4) throw e_4.error; }

}
exports.streamText = streamText;
function streamBinary(body) {
export function streamBinary(body) {
return __asyncGenerator(this, arguments, function* streamBinary_1() {
var e_5, _a;
var _a, e_5, _b, _c;
if (isPromiseLike(body)) {

@@ -178,5 +200,12 @@ yield yield __await(asBinary(yield __await(body)));

try {
for (var body_5 = __asyncValues(body), body_5_1; body_5_1 = yield __await(body_5.next()), !body_5_1.done;) {
const chunk = body_5_1.value;
yield yield __await(asBinary(chunk));
for (var _d = true, body_5 = __asyncValues(body), body_5_1; body_5_1 = yield __await(body_5.next()), _a = body_5_1.done, !_a;) {
_c = body_5_1.value;
_d = false;
try {
const chunk = _c;
yield yield __await(asBinary(chunk));
}
finally {
_d = true;
}
}

@@ -187,3 +216,3 @@ }

try {
if (body_5_1 && !body_5_1.done && (_a = body_5.return)) yield __await(_a.call(body_5));
if (!_d && !_a && (_b = body_5.return)) yield __await(_b.call(body_5));
}

@@ -207,4 +236,3 @@ finally { if (e_5) throw e_5.error; }

}
exports.streamBinary = streamBinary;
function asString(data) {
export function asString(data) {
if (typeof data === 'string')

@@ -214,7 +242,6 @@ return data;

if (data instanceof Uint8Array)
return textencoding_1.textDecoder().decode(data);
return DECODER.decode(data);
throw new Error(`Not supported ${typeDescription(data)}`);
}
exports.asString = asString;
function asBinary(data) {
export function asBinary(data) {
if (data instanceof Uint8Array)

@@ -224,6 +251,5 @@ return data;

if (typeof data === 'string')
return textencoding_1.textEncoder().encode(data);
return ENCODER.encode(data);
throw new Error(`Not supported ${typeDescription(data)}`);
}
exports.asBinary = asBinary;
/*

@@ -237,3 +263,3 @@ -----------------------------------

*/
function typeDescription(x) {
export function typeDescription(x) {
if (x === null)

@@ -249,24 +275,18 @@ return 'null';

}
exports.typeDescription = typeDescription;
function isAsyncIterable(instance) {
export function isAsyncIterable(instance) {
return typeof instance == 'object' && Symbol.asyncIterator in instance;
}
exports.isAsyncIterable = isAsyncIterable;
function isIterable(instance) {
export function isIterable(instance) {
return typeof instance == 'object' && Symbol.iterator in instance;
}
exports.isIterable = isIterable;
function isUint8Array(instance) {
export function isUint8Array(instance) {
return typeof instance == 'object' && instance instanceof Uint8Array;
}
exports.isUint8Array = isUint8Array;
function isData(instance) {
export function isData(instance) {
return typeof instance == 'string' || isUint8Array(instance);
}
exports.isData = isData;
function isPromiseLike(instance) {
export function isPromiseLike(instance) {
return typeof instance == 'object' && 'then' in instance;
}
exports.isPromiseLike = isPromiseLike;
function merge(a, b) {
export function merge(a, b) {
if (!a)

@@ -283,3 +303,2 @@ return b;

}
exports.merge = merge;
//# sourceMappingURL=bodies.js.map
import {Data, HttpBody} from "./contract";
import {textDecoder, textEncoder} from "./util/textencoding";
import {DECODER, ENCODER} from "./util/textencoding";

@@ -107,3 +107,3 @@ function wrongBodyType(body: never) {

// noinspection SuspiciousTypeOfGuard
if (data instanceof Uint8Array) return textDecoder().decode(data);
if (data instanceof Uint8Array) return DECODER.decode(data);
throw new Error(`Not supported ${typeDescription(data)}`)

@@ -115,3 +115,3 @@ }

// noinspection SuspiciousTypeOfGuard
if (typeof data === 'string') return textEncoder().encode(data);
if (typeof data === 'string') return ENCODER.encode(data);
throw new Error(`Not supported ${typeDescription(data)}`)

@@ -118,0 +118,0 @@ }

@@ -1,21 +0,1 @@

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {

@@ -30,21 +10,17 @@ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }

};
Object.defineProperty(exports, "__esModule", { value: true });
exports.bufferText = exports.bufferBinary = void 0;
const bodies = __importStar(require("./bodies"));
const messages_1 = require("./messages");
const uri_1 = require("./uri");
function bufferBinary(message) {
import * as bodies from "./bodies";
import { isRequest } from "./messages";
import { Uri } from "./uri";
export function bufferBinary(message) {
return __awaiter(this, void 0, void 0, function* () {
return messages_1.isRequest(message)
? Object.assign(Object.assign({}, message), { uri: uri_1.Uri.of(message.uri), body: yield bodies.bufferBinary(message.body) }) : Object.assign(Object.assign({}, message), { body: yield bodies.bufferBinary(message.body) });
return isRequest(message)
? Object.assign(Object.assign({}, message), { uri: Uri.of(message.uri), body: yield bodies.bufferBinary(message.body) }) : Object.assign(Object.assign({}, message), { body: yield bodies.bufferBinary(message.body) });
});
}
exports.bufferBinary = bufferBinary;
function bufferText(message) {
export function bufferText(message) {
return __awaiter(this, void 0, void 0, function* () {
return messages_1.isRequest(message)
? Object.assign(Object.assign({}, message), { uri: uri_1.Uri.of(message.uri), body: yield bodies.bufferText(message.body) }) : Object.assign(Object.assign({}, message), { body: yield bodies.bufferText(message.body) });
return isRequest(message)
? Object.assign(Object.assign({}, message), { uri: Uri.of(message.uri), body: yield bodies.bufferText(message.body) }) : Object.assign(Object.assign({}, message), { body: yield bodies.bufferText(message.body) });
});
}
exports.bufferText = bufferText;
//# sourceMappingURL=buffered.js.map

@@ -8,31 +8,31 @@ /**

*/
export declare type Method = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS' | 'TRACE' | 'CONNECT' | 'UPGRADE' | string;
export type Method = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS' | 'TRACE' | 'CONNECT' | 'UPGRADE' | string;
/**
* Header is a name value pair
*/
export declare type Header = [HeaderName, HeaderValue];
export type Header = readonly [HeaderName, HeaderValue];
/**
* The standard HTTP header name as defined by [RFC 7230](https://tools.ietf.org/html/rfc7230) or an extension
*/
export declare type HeaderName = 'Accept' | 'Accept-Charset' | 'Accept-Encoding' | 'Accept-Language' | 'Authorization' | 'Cache-Control' | 'Content-Encoding' | 'Content-Language' | 'Content-Length' | 'Content-Location' | 'Content-Type' | 'Content-MD5' | 'Date' | 'ETag' | 'Expires' | 'Host' | 'If-Match' | 'If-Modified-Since' | 'If-None-Match' | 'If-Unmodified-Since' | 'Last-Modified' | 'Location' | 'User-Agent' | 'Vary' | 'WWW-Authenticate' | 'Cookie' | 'Set-Cookie' | 'X-Forwarded-For' | 'X-Forwarded-Proto' | 'X-Forwarded-Host' | 'X-Frame-Options' | 'X-CorrelationID' | 'Transfer-Encoding' | 'Access-Control-Allow-Origin' | string;
export type HeaderName = 'Accept' | 'Accept-Charset' | 'Accept-Encoding' | 'Accept-Language' | 'Authorization' | 'Cache-Control' | 'Content-Encoding' | 'Content-Language' | 'Content-Length' | 'Content-Location' | 'Content-Type' | 'Content-MD5' | 'Date' | 'ETag' | 'Expires' | 'Host' | 'If-Match' | 'If-Modified-Since' | 'If-None-Match' | 'If-Unmodified-Since' | 'Last-Modified' | 'Location' | 'User-Agent' | 'Vary' | 'WWW-Authenticate' | 'Cookie' | 'Set-Cookie' | 'X-Forwarded-For' | 'X-Forwarded-Proto' | 'X-Forwarded-Host' | 'X-Frame-Options' | 'X-CorrelationID' | 'Transfer-Encoding' | 'Access-Control-Allow-Origin' | string;
/**
* Header value is a string.
*/
export declare type HeaderValue = string;
export type HeaderValue = string;
/**
* Data can either be text or binary
*/
export declare type Data = string | Uint8Array;
export type Data = string | Uint8Array;
/**
* SyncBody can be fixed or unknown length.
*/
export declare type SyncBody = Data | Iterable<Data>;
export type SyncBody = Data | Iterable<Data>;
/**
* AsyncBody can be fixed or unknown length.
*/
export declare type AsyncBody = Promise<Data> | AsyncIterable<Data>;
export type AsyncBody = Promise<Data> | AsyncIterable<Data>;
/**
* Body can either be synchronous or asynchronous
*/
export declare type HttpBody = SyncBody | AsyncBody;
export type HttpBody = SyncBody | AsyncBody;
/**

@@ -39,0 +39,0 @@ * ParsedUri as specified by [RFC 3986](https://tools.ietf.org/html/rfc3986)

@@ -1,2 +0,1 @@

"use strict";
/**

@@ -6,8 +5,5 @@ * The HTTP contract defines the simplest representation of the actual wire format of HTTP.

*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.isMessage = void 0;
function isMessage(value) {
export function isMessage(value) {
return value.hasOwnProperty('body') && value.hasOwnProperty('headers');
}
exports.isMessage = isMessage;
//# sourceMappingURL=contract.js.map

@@ -26,3 +26,3 @@ /**

*/
export type Header = [HeaderName, HeaderValue];
export type Header = readonly [HeaderName, HeaderValue];

@@ -29,0 +29,0 @@ /**

import { HttpHandler, HttpRequest, HttpResponse } from "@http4t/core/contract";
export declare type Filter = (decorated: HttpHandler) => HttpHandler;
export type Filter = (decorated: HttpHandler) => HttpHandler;
export declare function filterRequest(fn: (request: HttpRequest) => HttpRequest): Filter;

@@ -4,0 +4,0 @@ export declare function filterResponse(fn: (response: HttpResponse) => HttpResponse): Filter;

@@ -1,2 +0,1 @@

"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {

@@ -11,16 +10,12 @@ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }

};
Object.defineProperty(exports, "__esModule", { value: true });
exports.withFilters = exports.middlewares = exports.filter = exports.filterResponse = exports.filterRequest = void 0;
const handlers_1 = require("@http4t/core/handlers");
function filterRequest(fn) {
import { handler } from "@http4t/core/handlers";
export function filterRequest(fn) {
return filter(fn, r => r);
}
exports.filterRequest = filterRequest;
function filterResponse(fn) {
export function filterResponse(fn) {
return filter(r => r, fn);
}
exports.filterResponse = filterResponse;
function filter(requestFilter, responseFilter) {
export function filter(requestFilter, responseFilter) {
return (decorated) => {
return handlers_1.handler((request) => __awaiter(this, void 0, void 0, function* () {
return handler((request) => __awaiter(this, void 0, void 0, function* () {
const thing = requestFilter(request);

@@ -31,4 +26,3 @@ return responseFilter(yield decorated.handle(thing));

}
exports.filter = filter;
function middlewares(...ms) {
export function middlewares(...ms) {
return (handler) => {

@@ -38,7 +32,5 @@ return ms.reduce((handler, m) => m(handler), handler);

}
exports.middlewares = middlewares;
function withFilters(http, ...ms) {
export function withFilters(http, ...ms) {
return middlewares(...ms)(http);
}
exports.withFilters = withFilters;
//# sourceMappingURL=Filter.js.map
import { HttpHandler, HttpRequest, HttpResponse } from "./contract";
export declare type HttpHandlerFn = (request: HttpRequest) => Promise<HttpResponse>;
export declare function handler(f: HttpHandlerFn): HttpHandler;
export type HttpHandlerFn = (request: HttpRequest) => Promise<HttpResponse>;
export declare function handler(f: HttpHandler['handle']): HttpHandler;
//# sourceMappingURL=handlers.d.ts.map

@@ -1,8 +0,4 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.handler = void 0;
function handler(f) {
export function handler(f) {
return { handle: f };
}
exports.handler = handler;
//# sourceMappingURL=handlers.js.map

@@ -5,4 +5,4 @@ import {HttpHandler, HttpRequest, HttpResponse} from "./contract";

export function handler(f: HttpHandlerFn): HttpHandler {
export function handler(f: HttpHandler['handle']): HttpHandler {
return {handle: f};
}
}

@@ -5,11 +5,19 @@ import { Header, HeaderName, HeaderValue } from './contract';

*/
export declare function getHeaderValue(headers: readonly Header[], name: HeaderName): HeaderValue | undefined;
export declare function getHeaderValue(headers: readonly Header[] | undefined, name: HeaderName): HeaderValue | undefined;
/**
* Case insensitive on name
*/
export declare function getHeaderValues(headers: readonly Header[], name: HeaderName): HeaderValue[];
export declare function appendHeader(headers: readonly Header[], name: HeaderName, value: HeaderValueLike): readonly Header[];
export declare function appendHeader(headers: readonly Header[], header: Header): readonly Header[];
export declare function appendHeaders(headers: readonly Header[], ...next: Header[]): readonly Header[];
export declare function getHeader(headers: readonly Header[] | undefined, name: HeaderName): Header | undefined;
/**
* Case insensitive on name
*/
export declare function getHeaders(headers: readonly Header[] | undefined, name: HeaderName): Header[];
/**
* Case insensitive on name
*/
export declare function getHeaderValues(headers: readonly Header[] | undefined, name: HeaderName): HeaderValue[];
export declare function appendHeader(headers: readonly Header[] | undefined, name: HeaderName, value: HeaderValueLike): readonly Header[];
export declare function appendHeader(headers: readonly Header[] | undefined, header: Header): readonly Header[];
export declare function appendHeaders(headers: readonly (Header | undefined)[] | undefined, ...next: (Header | undefined)[]): readonly Header[];
/**
* Replaces header(s) with same name in headers.

@@ -19,9 +27,9 @@ *

*/
export declare function setHeader(headers: readonly Header[], name: HeaderName, value: HeaderValueLike): 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: string): readonly Header[];
export declare function removeHeaders(headers: readonly Header[], ...names: HeaderName[]): readonly Header[];
export declare function selectHeaders(headers: readonly Header[], ...names: HeaderName[]): readonly Header[];
export declare type HeaderValueLike = string | number | Date;
export declare function setHeader(headers: readonly Header[] | undefined, name: HeaderName, value: HeaderValueLike): readonly Header[];
export declare function setHeader(headers: readonly Header[] | undefined, header: Header): readonly Header[];
export declare function updateHeaders(headers: readonly Header[] | undefined, name: HeaderName, f: (value: HeaderValue) => HeaderValue): readonly Header[];
export declare function removeHeader(headers: readonly Header[] | undefined, name: string): readonly Header[];
export declare function removeHeaders(headers: readonly Header[] | undefined, ...names: HeaderName[]): readonly Header[];
export declare function selectHeaders(headers: readonly Header[] | undefined, ...names: HeaderName[]): readonly Header[];
export type HeaderValueLike = string | number | Date;
/**

@@ -36,2 +44,4 @@ * Dates will be formatted into the correct format as defined by [RFC 5322](https://tools.ietf.org/html/rfc5322)

export declare function isHeader(obj: any): obj is Header;
export declare function toUTC(date: Date): Date;
export declare function httpHeaderDate(date?: Date): string;
//# sourceMappingURL=headers.d.ts.map

@@ -1,8 +0,5 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.isHeader = exports.isHeaderValue = exports.isHeaderName = exports.headerValue = exports.headerName = exports.header = exports.selectHeaders = exports.removeHeaders = exports.removeHeader = exports.updateHeaders = exports.setHeader = exports.appendHeaders = exports.appendHeader = exports.getHeaderValues = exports.getHeaderValue = void 0;
/**
* Case insensitive on name
*/
function getHeaderValue(headers, name) {
export function getHeaderValue(headers, name) {
if (typeof headers === 'undefined')

@@ -17,10 +14,36 @@ return undefined;

}
exports.getHeaderValue = getHeaderValue;
/**
* Case insensitive on name
*/
function getHeaderValues(headers, name) {
export function getHeader(headers, name) {
if (typeof headers === 'undefined')
return undefined;
const lowerCaseName = name.toLowerCase();
for (const header of headers) {
if (header[0].toLowerCase() === lowerCaseName)
return header;
}
return undefined;
}
/**
* Case insensitive on name
*/
export function getHeaders(headers, name) {
if (typeof headers === 'undefined')
return [];
const lowerCaseName = name.toLowerCase();
const result = [];
for (const header of headers) {
if (header[0].toLowerCase() === lowerCaseName)
result.push(header);
}
return result;
}
/**
* Case insensitive on name
*/
export function getHeaderValues(headers, name) {
if (typeof headers === 'undefined')
return [];
const lowerCaseName = name.toLowerCase();
return headers

@@ -30,15 +53,13 @@ .filter(([name, _]) => name.toLowerCase() === lowerCaseName)

}
exports.getHeaderValues = getHeaderValues;
function appendHeader(headers, headerOrName, maybeValue) {
export function appendHeader(headers, headerOrName, maybeValue) {
if (isHeader(headerOrName))
return [...headers, headerOrName];
return [...(headers || []), headerOrName];
else
return [...headers, header(headerOrName, maybeValue)];
return [...(headers || []), header(headerOrName, maybeValue)];
}
exports.appendHeader = appendHeader;
function appendHeaders(headers, ...next) {
return [...headers, ...next];
export function appendHeaders(headers, ...next) {
return [...(headers || []), ...(next || [])]
.filter(h => typeof h !== "undefined");
}
exports.appendHeaders = appendHeaders;
function setHeader(headers, headerOrName, maybeValue) {
export function setHeader(headers, headerOrName, maybeValue) {
const lowerCaseHeaderName = isHeader(headerOrName)

@@ -50,28 +71,23 @@ ? headerName(headerOrName).toLowerCase()

: header(headerOrName, maybeValue);
return [...headers.filter(([name]) => name.toLowerCase() !== lowerCaseHeaderName), newHeader];
return [...(headers || []).filter(([name]) => name.toLowerCase() !== lowerCaseHeaderName), newHeader];
}
exports.setHeader = setHeader;
function updateHeaders(headers, name, f) {
export function updateHeaders(headers, name, f) {
const lowerCaseName = name.toLowerCase();
return headers.map(([name, value]) => (name.toLowerCase() === lowerCaseName) ? [name, f(value)] : [name, value]);
return (headers || []).map(([name, value]) => (name.toLowerCase() === lowerCaseName) ? [name, f(value)] : [name, value]);
}
exports.updateHeaders = updateHeaders;
function removeHeader(headers, name) {
export function removeHeader(headers, name) {
return removeHeaders(headers, name);
}
exports.removeHeader = removeHeader;
function removeHeaders(headers, ...names) {
export function removeHeaders(headers, ...names) {
const lowerCaseNames = new Set(names.map(n => n.toLowerCase()));
return headers.filter(([name]) => !lowerCaseNames.has(name.toLowerCase()));
return (headers || []).filter(([name]) => !lowerCaseNames.has(name.toLowerCase()));
}
exports.removeHeaders = removeHeaders;
function selectHeaders(headers, ...names) {
export function selectHeaders(headers, ...names) {
const lowerCaseNames = new Set(names.map(n => n.toLowerCase()));
return headers.filter(([name]) => lowerCaseNames.has(name.toLowerCase()));
return (headers || []).filter(([name]) => lowerCaseNames.has(name.toLowerCase()));
}
exports.selectHeaders = selectHeaders;
/**
* Dates will be formatted into the correct format as defined by [RFC 5322](https://tools.ietf.org/html/rfc5322)
*/
function header(name, value) {
export function header(name, value) {
if (typeof value === 'object')

@@ -81,23 +97,36 @@ return [name, value.toUTCString()];

}
exports.header = header;
function headerName(header) {
export function headerName(header) {
return header[0];
}
exports.headerName = headerName;
function headerValue(header) {
export function headerValue(header) {
return header[1];
}
exports.headerValue = headerValue;
function isHeaderName(obj) {
export function isHeaderName(obj) {
return typeof obj === 'string';
}
exports.isHeaderName = isHeaderName;
function isHeaderValue(obj) {
export function isHeaderValue(obj) {
return typeof obj === 'string';
}
exports.isHeaderValue = isHeaderValue;
function isHeader(obj) {
export function isHeader(obj) {
return Array.isArray(obj) && obj.length === 2 && isHeaderName(obj[0]) && isHeaderValue(obj[1]);
}
exports.isHeader = isHeader;
export function toUTC(date) {
const localTimestamp = date.getTime();
const localOffset = date.getTimezoneOffset() * 60 * 1000; // convert minutes to milliseconds
const utcTimestamp = localTimestamp - localOffset;
return new Date(utcTimestamp);
}
export function httpHeaderDate(date) {
const utcDate = toUTC(date || new Date());
const daysOfWeek = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
const monthsOfYear = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
const dayOfWeek = daysOfWeek[utcDate.getUTCDay()];
const dayOfMonth = utcDate.getUTCDate().toString().padStart(2, "0");
const month = monthsOfYear[utcDate.getUTCMonth()];
const year = utcDate.getUTCFullYear();
const hours = utcDate.getUTCHours().toString().padStart(2, "0");
const minutes = utcDate.getUTCMinutes().toString().padStart(2, "0");
const seconds = utcDate.getUTCSeconds().toString().padStart(2, "0");
return `${dayOfWeek}, ${dayOfMonth} ${month} ${year} ${hours}:${minutes}:${seconds} GMT`;
}
//# sourceMappingURL=headers.js.map

@@ -6,3 +6,3 @@ import {Header, HeaderName, HeaderValue} from './contract';

*/
export function getHeaderValue(headers: readonly Header[], name: HeaderName): HeaderValue | undefined {
export function getHeaderValue(headers: readonly Header[] | undefined, name: HeaderName): HeaderValue | undefined {
if (typeof headers === 'undefined') return undefined;

@@ -21,6 +21,35 @@

*/
export function getHeaderValues(headers: readonly Header[], name: HeaderName): HeaderValue[] {
export function getHeader(headers: readonly Header[] | undefined, name: HeaderName): Header | undefined {
if (typeof headers === 'undefined') return undefined;
const lowerCaseName = name.toLowerCase();
for (const header of headers) {
if (header[0].toLowerCase() === lowerCaseName)
return header;
}
return undefined;
}
/**
* Case insensitive on name
*/
export function getHeaders(headers: readonly Header[] | undefined, name: HeaderName): Header[] {
if (typeof headers === 'undefined') return [];
const lowerCaseName = name.toLowerCase();
const result = [];
for (const header of headers) {
if (header[0].toLowerCase() === lowerCaseName)
result.push(header);
}
return result;
}
/**
* Case insensitive on name
*/
export function getHeaderValues(headers: readonly Header[] | undefined, name: HeaderName): HeaderValue[] {
if (typeof headers === 'undefined') return [];
const lowerCaseName = name.toLowerCase();
return headers

@@ -31,13 +60,14 @@ .filter(([name, _]) => name.toLowerCase() === lowerCaseName)

export function appendHeader(headers: readonly Header[], name: HeaderName, value: HeaderValueLike): readonly Header[] ;
export function appendHeader(headers: readonly Header[], header: Header): readonly Header[] ;
export function appendHeader(headers: readonly Header[], headerOrName: Header | HeaderName, maybeValue?: HeaderValueLike): readonly Header[] {
export function appendHeader(headers: readonly Header[] | undefined, name: HeaderName, value: HeaderValueLike): readonly Header[] ;
export function appendHeader(headers: readonly Header[] | undefined, header: Header): readonly Header[] ;
export function appendHeader(headers: readonly Header[] | undefined, headerOrName: Header | HeaderName, maybeValue?: HeaderValueLike): readonly Header[] {
if (isHeader(headerOrName))
return [...headers, headerOrName];
return [...(headers || []), headerOrName];
else
return [...headers, header(headerOrName, maybeValue as HeaderValueLike)];
return [...(headers || []), header(headerOrName, maybeValue as HeaderValueLike)];
}
export function appendHeaders(headers: readonly Header[], ...next: Header[]): readonly Header[] {
return [...headers, ...next];
export function appendHeaders(headers: readonly (Header | undefined)[] | undefined, ...next: (Header | undefined)[]): readonly Header[] {
return [...(headers || []), ...(next || [])]
.filter(h => typeof h !== "undefined") as Header[];
}

@@ -50,5 +80,5 @@

*/
export function setHeader(headers: readonly Header[], name: HeaderName, value: HeaderValueLike): readonly Header[] ;
export function setHeader(headers: readonly Header[], header: Header): readonly Header[] ;
export function setHeader(headers: readonly Header[], headerOrName: Header | HeaderName, maybeValue?: HeaderValueLike): readonly Header[] {
export function setHeader(headers: readonly Header[] | undefined, name: HeaderName, value: HeaderValueLike): readonly Header[] ;
export function setHeader(headers: readonly Header[] | undefined, header: Header): readonly Header[] ;
export function setHeader(headers: readonly Header[] | undefined, headerOrName: Header | HeaderName, maybeValue?: HeaderValueLike): readonly Header[] {
const lowerCaseHeaderName: string = isHeader(headerOrName)

@@ -62,22 +92,22 @@ ? headerName(headerOrName).toLowerCase()

return [...headers.filter(([name]) => name.toLowerCase() !== lowerCaseHeaderName), newHeader];
return [...(headers || []).filter(([name]) => name.toLowerCase() !== lowerCaseHeaderName), newHeader];
}
export function updateHeaders(headers: readonly Header[], name: HeaderName, f: (value: HeaderValue) => HeaderValue): readonly Header[] {
export function updateHeaders(headers: readonly Header[] | undefined, 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]);
return (headers || []).map(([name, value]) => (name.toLowerCase() === lowerCaseName) ? [name, f(value)] : [name, value]);
}
export function removeHeader(headers: readonly Header[], name: string): readonly Header[] {
export function removeHeader(headers: readonly Header[] | undefined, name: string): readonly Header[] {
return removeHeaders(headers, name);
}
export function removeHeaders(headers: readonly Header[], ...names: HeaderName[]): readonly Header[] {
export function removeHeaders(headers: readonly Header[] | undefined, ...names: HeaderName[]): readonly Header[] {
const lowerCaseNames = new Set(names.map(n => n.toLowerCase()));
return headers.filter(([name]) => !lowerCaseNames.has(name.toLowerCase()));
return (headers || []).filter(([name]) => !lowerCaseNames.has(name.toLowerCase()));
}
export function selectHeaders(headers: readonly Header[], ...names: HeaderName[]): readonly Header[] {
export function selectHeaders(headers: readonly Header[] | undefined, ...names: HeaderName[]): readonly Header[] {
const lowerCaseNames = new Set(names.map(n => n.toLowerCase()));
return headers.filter(([name]) => lowerCaseNames.has(name.toLowerCase()));
return (headers || []).filter(([name]) => lowerCaseNames.has(name.toLowerCase()));
}

@@ -113,2 +143,25 @@

return Array.isArray(obj) && obj.length === 2 && isHeaderName(obj[0]) && isHeaderValue(obj[1]);
}
export function toUTC(date: Date): Date {
const localTimestamp = date.getTime();
const localOffset = date.getTimezoneOffset() * 60 * 1000; // convert minutes to milliseconds
const utcTimestamp = localTimestamp - localOffset;
return new Date(utcTimestamp);
}
export function httpHeaderDate(date?: Date): string {
const utcDate = toUTC(date || new Date());
const daysOfWeek = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
const monthsOfYear = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
const dayOfWeek = daysOfWeek[utcDate.getUTCDay()];
const dayOfMonth = utcDate.getUTCDate().toString().padStart(2, "0");
const month = monthsOfYear[utcDate.getUTCMonth()];
const year = utcDate.getUTCFullYear();
const hours = utcDate.getUTCHours().toString().padStart(2, "0");
const minutes = utcDate.getUTCMinutes().toString().padStart(2, "0");
const seconds = utcDate.getUTCSeconds().toString().padStart(2, "0");
return `${dayOfWeek}, ${dayOfMonth} ${month} ${year} ${hours}:${minutes}:${seconds} GMT`;
}

@@ -1,9 +0,6 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.HostHandler = void 0;
const messages_1 = require("./messages");
import { setHeader } from "./messages";
/**
* Sets Host header on requests
*/
class HostHandler {
export class HostHandler {
constructor(handler, host) {

@@ -14,6 +11,5 @@ this.handler = handler;

handle(request) {
return this.handler.handle(messages_1.setHeader(request, 'Host', this.host));
return this.handler.handle(setHeader(request, 'Host', this.host));
}
}
exports.HostHandler = HostHandler;
//# sourceMappingURL=host.js.map

@@ -1,2 +0,1 @@

"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {

@@ -23,16 +22,18 @@ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }

};
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseJson = exports.bodyJson = exports.jsonBody = exports.JsonBody = void 0;
const bodies_1 = require("./bodies");
const contract_1 = require("./contract");
const objects_1 = require("./util/objects");
import { bufferText, typeDescription } from "./bodies";
import { isMessage } from "./contract";
import { modify } from "./util/objects";
function yieldStringify(data) {
return __asyncGenerator(this, arguments, function* yieldStringify_1() {
yield yield __await(typeof data === 'undefined' ? "" : JSON.stringify(data));
yield yield __await(JSON.stringify(data));
});
}
class JsonBody {
export class JsonBody {
constructor(data) {
this.data = data;
this.ifYouAreSeeingThisInATestAssertion = "You probably forgot to call toJSON(message) on your HttpMessage, which would have called Symbol.asyncIterator on this body.";
// noinspection SuspiciousTypeOfGuard
if (typeof data !== 'object' && typeof data !== 'string' && typeof data !== 'number') {
throw new Error(`Cannot serialize to json: ${data} (${typeDescription(data)})`);
}
}

@@ -46,3 +47,2 @@ [Symbol.asyncIterator]() {

}
exports.JsonBody = JsonBody;
/**

@@ -58,6 +58,5 @@ * A JsonBody is an AsyncIterable<Data> (and is therefore a Body), which will lazily yield

*/
function jsonBody(data) {
export function jsonBody(data) {
return new JsonBody(data);
}
exports.jsonBody = jsonBody;
/**

@@ -71,8 +70,8 @@ * Parse json from body or message.body.

*/
function bodyJson(value) {
export function bodyJson(value) {
return __awaiter(this, void 0, void 0, function* () {
const body = contract_1.isMessage(value) ? value.body : value;
const body = isMessage(value) ? value.body : value;
if (body instanceof JsonBody)
return body.data;
const text = yield bodies_1.bufferText(body);
const text = yield bufferText(body);
if (text === "")

@@ -83,3 +82,2 @@ return undefined;

}
exports.bodyJson = bodyJson;
/**

@@ -91,3 +89,3 @@ * Construct a new message, replacing message.body with a JsonBody so that json only

*/
function parseJson(message) {
export function parseJson(message) {
return __awaiter(this, void 0, void 0, function* () {

@@ -97,6 +95,5 @@ if (message.body instanceof JsonBody)

const parsed = bodyJson(message.body);
return objects_1.modify(message, { body: jsonBody(parsed) });
return modify(message, { body: jsonBody(parsed) });
});
}
exports.parseJson = parseJson;
//# sourceMappingURL=json.js.map

@@ -1,7 +0,7 @@

import {bufferText} from "./bodies";
import {bufferText, typeDescription} from "./bodies";
import {Data, HttpBody, HttpMessage, HttpRequest, HttpResponse, isMessage} from "./contract";
import {modify} from "./util/objects";
async function* yieldStringify(data: object): AsyncIterable<Data> {
yield typeof data === 'undefined' ? "" : JSON.stringify(data)
async function* yieldStringify(data: any): AsyncIterable<Data> {
yield JSON.stringify(data)
}

@@ -15,2 +15,6 @@

constructor(public readonly data: Readonly<T>) {
// noinspection SuspiciousTypeOfGuard
if (typeof data !== 'object' && typeof data !== 'string' && typeof data !== 'number') {
throw new Error(`Cannot serialize to json: ${data} (${typeDescription(data)})`);
}
}

@@ -17,0 +21,0 @@

@@ -1,2 +0,1 @@

"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {

@@ -11,9 +10,7 @@ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }

};
Object.defineProperty(exports, "__esModule", { value: true });
exports.LoggingHttpHandler = void 0;
const buffered_1 = require("./buffered");
import { bufferText } from "./buffered";
/**
* NB: Buffers request and response in to text, so will break response streaming for large bodies
*/
class LoggingHttpHandler {
export class LoggingHttpHandler {
constructor(decorated) {

@@ -28,3 +25,3 @@ this.decorated = decorated;

}
const bufferedRequest = yield buffered_1.bufferText(request);
const bufferedRequest = yield bufferText(request);
try {

@@ -36,3 +33,3 @@ const response = yield this.decorated.handle(bufferedRequest);

}
const bufferedResponse = yield buffered_1.bufferText(response);
const bufferedResponse = yield bufferText(response);
console.log("http", { request: bufferedRequest, response: bufferedResponse });

@@ -48,3 +45,2 @@ return bufferedResponse;

}
exports.LoggingHttpHandler = LoggingHttpHandler;
//# sourceMappingURL=LoggingHttpHandler.js.map

@@ -26,3 +26,3 @@ import {bufferText, TextHttpResponse} from "./buffered";

return bufferedResponse;
} catch (e) {
} catch (e: any) {
console.error("http", {request: bufferedRequest, error: e});

@@ -29,0 +29,0 @@ throw e;

@@ -5,5 +5,18 @@ import { Header, HeaderName, HeaderValue, HttpBody, HttpMessage, HttpRequest, HttpResponse } from "./contract";

export declare function setHeader<T extends HttpMessage>(message: T, header: Header): T;
export declare function setHeaders<T extends HttpMessage>(message: T, ...headers: (Header | undefined)[]): T;
/**
* Case insensitive on name
*/
export declare function getHeaderValue(message: HttpMessage, name: HeaderName): HeaderValue | undefined;
/**
* Case insensitive on name
*/
export declare function getHeader(message: HttpMessage, name: HeaderName): Header | undefined;
/**
* Case insensitive on name
*/
export declare function getHeaderValues(message: HttpMessage, name: HeaderName): HeaderValue[];
export declare function appendHeader<T extends HttpMessage>(message: T, name: HeaderName, value: HeaderValueLike): T;
export declare function appendHeader<T extends HttpMessage>(message: T, header: Header): T;
export declare function appendHeaders<T extends HttpMessage>(message: T, ...headers: Header[]): T;
export declare function appendHeaders<T extends HttpMessage>(message: T, ...headers: (Header | undefined)[]): T;
export declare function removeHeaders<T extends HttpMessage>(message: T, ...names: HeaderName[]): T;

@@ -10,0 +23,0 @@ export declare function selectHeaders<T extends HttpMessage>(message: T, ...names: HeaderName[]): T;

@@ -1,21 +0,1 @@

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {

@@ -30,45 +10,62 @@ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }

};
Object.defineProperty(exports, "__esModule", { value: true });
exports.toJSON = exports.isRequest = exports.isResponse = exports.bufferedText = exports.bufferText = exports.setBody = exports.updateHeaders = exports.selectHeaders = exports.removeHeaders = exports.appendHeaders = exports.appendHeader = exports.setHeader = void 0;
const h = __importStar(require("./headers"));
const headers_1 = require("./headers");
const b = __importStar(require("./bodies"));
const objects_1 = require("./util/objects");
function setHeader(message, headerOrName, maybeValue) {
if (headers_1.isHeader(headerOrName))
return objects_1.modify(message, { headers: h.setHeader(message.headers, headerOrName) });
else if (headers_1.isHeaderValue(maybeValue))
return objects_1.modify(message, { headers: h.setHeader(message.headers, headerOrName, maybeValue) });
import * as h from "./headers";
import * as headers from "./headers";
import { isHeader, isHeaderValue } from "./headers";
import * as b from "./bodies";
import { modify } from "./util/objects";
export function setHeader(message, headerOrName, maybeValue) {
if (isHeader(headerOrName))
return modify(message, { headers: h.setHeader(message.headers, headerOrName) });
else if (isHeaderValue(maybeValue))
return modify(message, { headers: h.setHeader(message.headers, headerOrName, maybeValue) });
else
throw new Error(`Not a valid header value: ${maybeValue}`);
}
exports.setHeader = setHeader;
function appendHeader(message, headerOrName, maybeValue) {
if (headers_1.isHeader(headerOrName))
return objects_1.modify(message, { headers: h.appendHeader(message.headers, headerOrName) });
export function setHeaders(message, ...headers) {
return headers.reduce((message, header) => {
if (!header)
return message;
return setHeader(message, header);
}, message);
}
/**
* Case insensitive on name
*/
export function getHeaderValue(message, name) {
return headers.getHeaderValue(message.headers, name);
}
/**
* Case insensitive on name
*/
export function getHeader(message, name) {
return headers.getHeader(message.headers, name);
}
/**
* Case insensitive on name
*/
export function getHeaderValues(message, name) {
return headers.getHeaderValues(message.headers, name);
}
export function appendHeader(message, headerOrName, maybeValue) {
if (isHeader(headerOrName))
return modify(message, { headers: h.appendHeader(message.headers, headerOrName) });
else
return objects_1.modify(message, { headers: h.appendHeader(message.headers, headerOrName, maybeValue) });
return modify(message, { headers: h.appendHeader(message.headers, headerOrName, maybeValue) });
}
exports.appendHeader = appendHeader;
function appendHeaders(message, ...headers) {
return objects_1.modify(message, { headers: h.appendHeaders(message.headers, ...headers) });
export function appendHeaders(message, ...headers) {
return modify(message, { headers: h.appendHeaders(message.headers, ...headers) });
}
exports.appendHeaders = appendHeaders;
function removeHeaders(message, ...names) {
return objects_1.modify(message, { headers: h.removeHeaders(message.headers, ...names) });
export function removeHeaders(message, ...names) {
return modify(message, { headers: h.removeHeaders(message.headers, ...names) });
}
exports.removeHeaders = removeHeaders;
function selectHeaders(message, ...names) {
return objects_1.modify(message, { headers: h.selectHeaders(message.headers, ...names) });
export function selectHeaders(message, ...names) {
return modify(message, { headers: h.selectHeaders(message.headers, ...names) });
}
exports.selectHeaders = selectHeaders;
function updateHeaders(message, name, f) {
return objects_1.modify(message, { headers: h.updateHeaders(message.headers, name, f) });
export function updateHeaders(message, name, f) {
return modify(message, { headers: h.updateHeaders(message.headers, name, f) });
}
exports.updateHeaders = updateHeaders;
function setBody(message, body) {
return objects_1.modify(message, { body });
export function setBody(message, body) {
return modify(message, { body });
}
exports.setBody = setBody;
function bufferText(message) {
export function bufferText(message) {
return __awaiter(this, void 0, void 0, function* () {

@@ -78,4 +75,3 @@ return setBody(message, yield b.bufferText(message.body));

}
exports.bufferText = bufferText;
function bufferedText(message) {
export function bufferedText(message) {
return __awaiter(this, void 0, void 0, function* () {

@@ -85,13 +81,10 @@ return yield b.bufferText(message.body);

}
exports.bufferedText = bufferedText;
function isResponse(message) {
export function isResponse(message) {
return message.hasOwnProperty("status");
}
exports.isResponse = isResponse;
function isRequest(message) {
export function isRequest(message) {
return message.hasOwnProperty("method");
}
exports.isRequest = isRequest;
/* turns streaming bodies into text bodies so that messages are directly json serialisable */
function toJSON(message) {
export function toJSON(message) {
return __awaiter(this, void 0, void 0, function* () {

@@ -101,3 +94,2 @@ return Object.assign(Object.assign({}, message), { body: yield b.bufferText(message.body) });

}
exports.toJSON = toJSON;
//# sourceMappingURL=messages.js.map
import {Header, HeaderName, HeaderValue, HttpBody, HttpMessage, HttpRequest, HttpResponse} from "./contract";
import * as h from "./headers";
import * as headers from "./headers";
import {HeaderValueLike, isHeader, isHeaderValue} from "./headers";

@@ -22,2 +23,33 @@ import * as b from "./bodies";

export function setHeaders<T extends HttpMessage>(message: T, ...headers: (Header | undefined)[]): T {
return headers.reduce(
(message, header) => {
if (!header) return message;
return setHeader(message, header);
},
message)
}
/**
* Case insensitive on name
*/
export function getHeaderValue(message: HttpMessage, name: HeaderName): HeaderValue | undefined {
return headers.getHeaderValue(message.headers, name);
}
/**
* Case insensitive on name
*/
export function getHeader(message: HttpMessage, name: HeaderName): Header | undefined {
return headers.getHeader(message.headers, name);
}
/**
* Case insensitive on name
*/
export function getHeaderValues(message: HttpMessage, name: HeaderName): HeaderValue[] {
return headers.getHeaderValues(message.headers, name);
}
export function appendHeader<T extends HttpMessage>(message: T, name: HeaderName, value: HeaderValueLike): T ;

@@ -32,3 +64,3 @@ export function appendHeader<T extends HttpMessage>(message: T, header: Header): T ;

export function appendHeaders<T extends HttpMessage>(message: T, ...headers: Header[]): T {
export function appendHeaders<T extends HttpMessage>(message: T, ...headers: (Header|undefined)[]): T {
return modify(message, {headers: h.appendHeaders(message.headers, ...headers)} as Partial<T>)

@@ -72,2 +104,2 @@ }

return {...message, body: await b.bufferText(message.body)}
}
}
{
"name": "@http4t/core",
"version": "0.3.63",
"version": "0.4.109",
"license": "Apache-2.0",

@@ -5,0 +5,0 @@ "scripts": {

@@ -5,4 +5,4 @@ import { DecodedPair } from "./urlEncoding";

*/
export declare type QueryValue = (string | undefined)[] | string | undefined;
export declare type QueryPair = [string, QueryValue];
export type QueryValue = (string | undefined)[] | string | undefined;
export type QueryPair = [string, QueryValue];
/**

@@ -9,0 +9,0 @@ * Takes a list of pairs where the value might be an array, and returns a list of simple name-value pairs,

@@ -1,5 +0,2 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.queries = exports.query = exports.setQueries = exports.setQuery = exports.removeQueries = exports.removeQuery = exports.appendQueries = exports.appendQuery = exports.expand = void 0;
const urlEncoding_1 = require("./urlEncoding");
import { decodePairs, encodePairs } from "./urlEncoding";
/**

@@ -11,3 +8,3 @@ * Takes a list of pairs where the value might be an array, and returns a list of simple name-value pairs,

*/
function expand([name, value]) {
export function expand([name, value]) {
return Array.isArray(value)

@@ -17,5 +14,4 @@ ? value.map(value => [name, value])

}
exports.expand = expand;
function appendQuery(query, name, value) {
const newQuery = urlEncoding_1.encodePairs(expand([name, value]));
export function appendQuery(query, name, value) {
const newQuery = encodePairs(expand([name, value]));
if (typeof query === 'undefined' || query.length === 0)

@@ -25,4 +21,3 @@ return newQuery;

}
exports.appendQuery = appendQuery;
function appendQueries(query, queries) {
export function appendQueries(query, queries) {
return Object.entries(queries).reduce((acc, [name, value]) => {

@@ -32,32 +27,25 @@ return appendQuery(acc, name, value);

}
exports.appendQueries = appendQueries;
function removeQuery(query, name) {
const filtered = urlEncoding_1.decodePairs(query).filter(([n]) => n !== name);
return urlEncoding_1.encodePairs(filtered);
export function removeQuery(query, name) {
const filtered = decodePairs(query).filter(([n]) => n !== name);
return encodePairs(filtered);
}
exports.removeQuery = removeQuery;
function removeQueries(query, ...names) {
export function removeQueries(query, ...names) {
return names.reduce((result, name) => removeQuery(result, name), query);
}
exports.removeQueries = removeQueries;
function setQuery(query, name, value) {
export function setQuery(query, name, value) {
return appendQuery(removeQuery(query, name), name, value);
}
exports.setQuery = setQuery;
function setQueries(query, queries) {
export function setQueries(query, queries) {
const existingKeys = new Set(Object.keys(queries));
const filtered = urlEncoding_1.decodePairs(query)
const filtered = decodePairs(query)
.filter(([name]) => !existingKeys.has(name));
return appendQueries(urlEncoding_1.encodePairs(filtered), queries);
return appendQueries(encodePairs(filtered), queries);
}
exports.setQueries = setQueries;
function query(query, name) {
export function query(query, name) {
var _a;
return (_a = urlEncoding_1.decodePairs(query).find(([n]) => n === name)) === null || _a === void 0 ? void 0 : _a[1];
return (_a = decodePairs(query).find(([n]) => n === name)) === null || _a === void 0 ? void 0 : _a[1];
}
exports.query = query;
function queries(query, name) {
return urlEncoding_1.decodePairs(query).filter(([n]) => n === name).map(([_, v]) => v);
export function queries(query, name) {
return decodePairs(query).filter(([n]) => n === name).map(([_, v]) => v);
}
exports.queries = queries;
//# sourceMappingURL=queries.js.map

@@ -1,2 +0,2 @@

import { Header, HeaderName, HeaderValue, HttpBody, HttpMessage, HttpRequest, Method, ParsedAuthority } from "./contract";
import { Header, HttpBody, HttpRequest, Method, ParsedAuthority } from "./contract";
import { QueryValue } from "./queries";

@@ -12,10 +12,2 @@ import { Uri, UriLike } from "./uri";

export declare function queries(message: HttpRequest, name: string): (string | undefined)[];
/**
* Case insensitive on name
*/
export declare function getHeaderValue(message: HttpMessage, name: HeaderName): HeaderValue | undefined;
/**
* Case insensitive on name
*/
export declare function getHeaderValues(message: HttpMessage, name: HeaderName): HeaderValue[];
export declare function appendQueries(message: HttpRequest, queries: {

@@ -22,0 +14,0 @@ [key: string]: QueryValue;

@@ -1,37 +0,12 @@

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.uriString = exports.uri = exports.authority = exports.removeQueries = exports.removeQuery = exports.setQuery = exports.setQueries = exports.appendQuery = exports.appendQueries = exports.getHeaderValues = exports.getHeaderValue = exports.queries = exports.query = exports.delete_ = exports.patch = exports.put = exports.post = exports.get = exports.requestOf = void 0;
const headers = __importStar(require("./headers"));
const queries_1 = require("./queries");
const uri_1 = require("./uri");
const objects_1 = require("./util/objects");
import { appendQueries as uriAppendQueries, appendQuery as uriAppendQuery, queries as uriQueries, query as uriQuery, removeQueries as uriRemoveQueries, removeQuery as uriRemoveQuery, setQueries as uriSetQueries, setQuery as uriSetQuery, } from "./queries";
import { Authority, Uri } from "./uri";
import { modify } from "./util/objects";
import { getHeaderValue } from "./messages";
/*
Create requests
*/
function requestOf(method, uri, body, ...headers) {
export function requestOf(method, uri, body, ...headers) {
return {
method,
uri: uri_1.Uri.of(uri),
uri: Uri.of(uri),
headers: headers,

@@ -41,81 +16,53 @@ body: body ? body : ''

}
exports.requestOf = requestOf;
function get(uri, ...headers) {
export function get(uri, ...headers) {
return requestOf("GET", uri, undefined, ...headers);
}
exports.get = get;
function post(uri, body, ...headers) {
export function post(uri, body, ...headers) {
return requestOf("POST", uri, body, ...headers);
}
exports.post = post;
function put(uri, body, ...headers) {
export function put(uri, body, ...headers) {
return requestOf("PUT", uri, body, ...headers);
}
exports.put = put;
function patch(uri, body, ...headers) {
export function patch(uri, body, ...headers) {
return requestOf("PATCH", uri, body, ...headers);
}
exports.patch = patch;
function delete_(uri, ...headers) {
export function delete_(uri, ...headers) {
return requestOf("DELETE", uri, undefined, ...headers);
}
exports.delete_ = delete_;
function query(message, name) {
export function query(message, name) {
const query = message.uri.query;
return queries_1.query(query, name);
return uriQuery(query, name);
}
exports.query = query;
function queries(message, name) {
export function queries(message, name) {
const query = message.uri.query;
return queries_1.queries(query, name);
return uriQueries(query, name);
}
exports.queries = queries;
/**
* Case insensitive on name
*/
function getHeaderValue(message, name) {
return headers.getHeaderValue(message.headers, name);
}
exports.getHeaderValue = getHeaderValue;
/**
* Case insensitive on name
*/
function getHeaderValues(message, name) {
return headers.getHeaderValues(message.headers, name);
}
exports.getHeaderValues = getHeaderValues;
/*
Modify url query string
*/
function appendQueries(message, queries) {
export function appendQueries(message, queries) {
const query = message.uri.query;
return objects_1.modify(message, { uri: objects_1.modify(message.uri, { query: queries_1.appendQueries(query, queries) }) });
return modify(message, { uri: modify(message.uri, { query: uriAppendQueries(query, queries) }) });
}
exports.appendQueries = appendQueries;
function appendQuery(message, name, value) {
export function appendQuery(message, name, value) {
const query = message.uri.query;
return objects_1.modify(message, { uri: objects_1.modify(message.uri, { query: queries_1.appendQuery(query, name, value) }) });
return modify(message, { uri: modify(message.uri, { query: uriAppendQuery(query, name, value) }) });
}
exports.appendQuery = appendQuery;
function setQueries(message, queries) {
export function setQueries(message, queries) {
const query = message.uri.query;
return objects_1.modify(message, { uri: objects_1.modify(message.uri, { query: queries_1.setQueries(query, queries) }) });
return modify(message, { uri: modify(message.uri, { query: uriSetQueries(query, queries) }) });
}
exports.setQueries = setQueries;
function setQuery(message, name, value) {
export function setQuery(message, name, value) {
const query = message.uri.query;
return objects_1.modify(message, { uri: objects_1.modify(message.uri, { query: queries_1.setQuery(query, name, value) }) });
return modify(message, { uri: modify(message.uri, { query: uriSetQuery(query, name, value) }) });
}
exports.setQuery = setQuery;
function removeQuery(message, name) {
export function removeQuery(message, name) {
const query = message.uri.query;
return objects_1.modify(message, { uri: objects_1.modify(message.uri, { query: queries_1.removeQuery(query, name) }) });
return modify(message, { uri: modify(message.uri, { query: uriRemoveQuery(query, name) }) });
}
exports.removeQuery = removeQuery;
function removeQueries(message, ...names) {
export function removeQueries(message, ...names) {
const query = message.uri.query;
return objects_1.modify(message, { uri: objects_1.modify(message.uri, { query: queries_1.removeQueries(query, ...names) }) });
return modify(message, { uri: modify(message.uri, { query: uriRemoveQueries(query, ...names) }) });
}
exports.removeQueries = removeQueries;
function authority(request) {
export function authority(request) {
if (typeof request.uri.authority != 'undefined')

@@ -125,15 +72,12 @@ return request.uri.authority;

if (typeof value != 'string')
throw new Error(`Could not get authority from request uri '${uri_1.Uri.of(request.uri).toString()}'`);
return uri_1.Authority.parse(value);
throw new Error(`Could not get authority from request uri '${Uri.of(request.uri).toString()}'`);
return Authority.parse(value);
}
exports.authority = authority;
function uri(request) {
return uri_1.Uri.of(request.uri);
export function uri(request) {
return Uri.of(request.uri);
}
exports.uri = uri;
function uriString(request) {
return uri_1.Uri.of(request.uri).toString();
export function uriString(request) {
return Uri.of(request.uri).toString();
}
exports.uriString = uriString;
__exportStar(require("./messages"), exports);
export * from "./messages";
//# sourceMappingURL=requests.js.map

@@ -1,3 +0,2 @@

import {Header, HeaderName, HeaderValue, HttpBody, HttpMessage, HttpRequest, Method, ParsedAuthority} from "./contract";
import * as headers from "./headers";
import {Header, HttpBody, HttpRequest, Method, ParsedAuthority} from "./contract";
import {

@@ -16,2 +15,3 @@ appendQueries as uriAppendQueries,

import {modify} from "./util/objects";
import {getHeaderValue} from "./messages";

@@ -60,16 +60,2 @@ /*

/**
* Case insensitive on name
*/
export function getHeaderValue(message: HttpMessage, name: HeaderName): HeaderValue | undefined {
return headers.getHeaderValue(message.headers, name);
}
/**
* Case insensitive on name
*/
export function getHeaderValues(message: HttpMessage, name: HeaderName): HeaderValue[] {
return headers.getHeaderValues(message.headers, name);
}
/*

@@ -76,0 +62,0 @@ Modify url query string

import { Header, HttpBody, HttpResponse } from "./contract";
export declare function responseOf(status: number, body?: HttpBody, ...headers: Header[]): HttpResponse;
export declare function ok(body?: HttpBody, ...headers: Header[]): HttpResponse;
export declare function notFound(body?: HttpBody, ...headers: Header[]): HttpResponse;
export declare function noContent(...headers: Header[]): HttpResponse;
export declare function responseOf(status: number, body?: HttpBody, ...headers: (Header | undefined)[]): HttpResponse;
export declare function ok(body?: HttpBody, ...headers: (Header | undefined)[]): HttpResponse;
export declare function notFound(body?: HttpBody, ...headers: (Header | undefined)[]): HttpResponse;
export declare function noContent(...headers: (Header | undefined)[]): HttpResponse;
export * from "./messages";
//# sourceMappingURL=responses.d.ts.map

@@ -1,31 +0,14 @@

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.noContent = exports.notFound = exports.ok = exports.responseOf = void 0;
function responseOf(status, body, ...headers) {
return { status, headers: headers, body: body ? body : '' };
export function responseOf(status, body, ...headers) {
return { status, headers: headers.filter(h => typeof h !== "undefined"), body: body ? body : '' };
}
exports.responseOf = responseOf;
function ok(body, ...headers) {
export function ok(body, ...headers) {
return responseOf(200, body, ...headers);
}
exports.ok = ok;
function notFound(body, ...headers) {
export function notFound(body, ...headers) {
return responseOf(404, body, ...headers);
}
exports.notFound = notFound;
function noContent(...headers) {
export function noContent(...headers) {
return responseOf(204, undefined, ...headers);
}
exports.noContent = noContent;
__exportStar(require("./messages"), exports);
export * from "./messages";
//# sourceMappingURL=responses.js.map
import {Header, HttpBody, HttpResponse} from "./contract";
export function responseOf(status: number, body?: HttpBody, ...headers: Header[]): HttpResponse {
return {status, headers: headers, body: body ? body : ''}
export function responseOf(status: number, body?: HttpBody, ...headers: (Header|undefined)[]): HttpResponse {
return {status, headers: headers.filter(h=>typeof h !=="undefined") as Header[], body: body ? body : ''}
}
export function ok(body?: HttpBody, ...headers: Header[]): HttpResponse {
export function ok(body?: HttpBody, ...headers: (Header|undefined)[]): HttpResponse {
return responseOf(200, body, ...headers);
}
export function notFound(body?: HttpBody, ...headers: Header[]): HttpResponse {
export function notFound(body?: HttpBody, ...headers: (Header|undefined)[]): HttpResponse {
return responseOf(404, body, ...headers);
}
export function noContent(...headers: Header[]): HttpResponse {
export function noContent(...headers: (Header|undefined)[]): HttpResponse {
return responseOf(204, undefined, ...headers);

@@ -17,0 +17,0 @@ }

@@ -1,3 +0,2 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
export {};
//# sourceMappingURL=server.js.map

@@ -5,3 +5,3 @@ import { ParsedAuthority, ParsedUri } from "./contract";

*/
export declare type UriLike = string | ParsedUri;
export type UriLike = string | ParsedUri;
export declare class Uri implements ParsedUri {

@@ -8,0 +8,0 @@ readonly scheme?: string;

@@ -1,5 +0,2 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.joinPaths = exports.stripSlashes = exports.trailing = exports.leading = exports.Authority = exports.Uri = void 0;
class Uri {
export class Uri {
constructor({ scheme, authority, path, query, fragment }) {

@@ -48,5 +45,4 @@ this.scheme = scheme;

}
exports.Uri = Uri;
Uri.RFC_3986 = /^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;
class Authority {
export class Authority {
constructor({ user, host, port }) {

@@ -92,13 +88,11 @@ if (typeof port !== 'undefined' && Number.isNaN(port))

}
exports.Authority = Authority;
Authority.REGEX = /^(?:([^@]+)@)?(\[.+\]|[^:]+)(?:\:([\d]+))?$/;
exports.leading = /^\/*/;
exports.trailing = /\/*$/;
function stripSlashes(path) {
export const leading = /^\/*/;
export const trailing = /\/*$/;
export function stripSlashes(path) {
return path
.replace(exports.leading, '')
.replace(exports.trailing, '');
.replace(leading, '')
.replace(trailing, '');
}
exports.stripSlashes = stripSlashes;
function joinPaths(...segments) {
export function joinPaths(...segments) {
return segments.reduce((acc, segment) => segment === '/'

@@ -108,3 +102,2 @@ ? acc

}
exports.joinPaths = joinPaths;
//# sourceMappingURL=uri.js.map
import { Uri } from "./uri";
export declare type UriTemplateCaptures = {
export type UriTemplateCaptures = {
query: Captures;
path: Captures;
};
declare type Captures = {
type Captures = {
[name: string]: string | string[];

@@ -8,0 +8,0 @@ };

@@ -1,10 +0,7 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.uriTemplate = exports.UriTemplate = void 0;
const regex_1 = require("./util/regex");
const uri_1 = require("./uri");
class UriTemplate {
import { Regex } from "./util/regex";
import { Uri } from "./uri";
export class UriTemplate {
constructor(template) {
this.template = template;
this.pathVariableValuesCapturingRegexp = new regex_1.Regex(`^${this.pathVariableCapturingTemplate()}$`);
this.pathVariableValuesCapturingRegexp = new Regex(`^${this.pathVariableCapturingTemplate()}$`);
}

@@ -15,3 +12,3 @@ static of(template) {

matches(uri) {
const pathNoTrailingSlash = uri_1.Uri.of(uri).path.replace(/\/$/g, '');
const pathNoTrailingSlash = Uri.of(uri).path.replace(/\/$/g, '');
return this.pathVariableValuesCapturingRegexp.match(pathNoTrailingSlash) !== null;

@@ -22,3 +19,3 @@ }

query: this.extractQueryCaptures(uri),
path: this.extractPathCaptures(uri_1.Uri.of(uri).path.replace(/\/$/g, ''))
path: this.extractPathCaptures(Uri.of(uri).path.replace(/\/$/g, ''))
};

@@ -41,3 +38,3 @@ }

extractQueryCaptures(uri) {
const query = uri_1.Uri.of(uri).query;
const query = Uri.of(uri).query;
if (!query)

@@ -63,3 +60,3 @@ return {};

const templateNoTrailingSlash = this.template.replace(/\/$/g, '');
const templateRewritingRegex = new regex_1.Regex('{([^}]+?)(?::([^}]+))?}');
const templateRewritingRegex = new Regex('{([^}]+?)(?::([^}]+))?}');
const matches = Array.from(templateRewritingRegex.matches(templateNoTrailingSlash));

@@ -72,7 +69,5 @@ return matches.reduce((pathVariableCapturingTemplate, match) => {

}
exports.UriTemplate = UriTemplate;
function uriTemplate(template) {
export function uriTemplate(template) {
return new UriTemplate(template);
}
exports.uriTemplate = uriTemplate;
//# sourceMappingURL=UriTemplate.js.map

@@ -1,2 +0,2 @@

export declare type DecodedPair = [string, string | undefined];
export type DecodedPair = [string, string | undefined];
export declare function decode(value: string): string;

@@ -3,0 +3,0 @@ export declare function encode(value: string): string;

@@ -1,13 +0,8 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.encodePairs = exports.encodePair = exports.decodePairs = exports.decodePair = exports.encode = exports.decode = void 0;
function decode(value) {
export function decode(value) {
return decodeURIComponent(value.replace('+', ' '));
}
exports.decode = decode;
function encode(value) {
export function encode(value) {
return encodeURIComponent(value).replace('%20', '+');
}
exports.encode = encode;
function decodePair(pair) {
export function decodePair(pair) {
const [name, value] = pair.split('=');

@@ -17,4 +12,3 @@ const decoded = pair.indexOf('=') < 0 ? undefined : decode(value);

}
exports.decodePair = decodePair;
function decodePairs(value) {
export function decodePairs(value) {
if (typeof value === "undefined")

@@ -26,4 +20,3 @@ return [];

}
exports.decodePairs = decodePairs;
function encodePair([name, value]) {
export function encodePair([name, value]) {
const encodedValue = value === undefined

@@ -34,4 +27,3 @@ ? ""

}
exports.encodePair = encodePair;
function encodePairs(values) {
export function encodePairs(values) {
if (values.length == 0)

@@ -43,3 +35,2 @@ return undefined;

}
exports.encodePairs = encodePairs;
//# sourceMappingURL=urlEncoding.js.map

@@ -1,6 +0,3 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AsyncIteratorHandler = void 0;
// TODO: can this be (much) more terse, and obviously correct?
class AsyncIteratorHandler {
export class AsyncIteratorHandler {
constructor() {

@@ -60,3 +57,2 @@ this.pullQueue = [];

}
exports.AsyncIteratorHandler = AsyncIteratorHandler;
//# sourceMappingURL=AsyncIteratorHandler.js.map

@@ -1,8 +0,4 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.modify = void 0;
function modify(value, modifications) {
export function modify(value, modifications) {
return Object.assign({}, value, modifications);
}
exports.modify = modify;
//# sourceMappingURL=objects.js.map

@@ -1,9 +0,5 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.randomBytes = exports.Random = void 0;
class Random {
export class Random {
}
exports.Random = Random;
Random.bytes = randomBytes;
function randomBytes(size) {
export function randomBytes(size) {
const sizeInFloats = Math.round(size / 4) + 1;

@@ -16,3 +12,2 @@ const randomFloats = new Array(sizeInFloats);

}
exports.randomBytes = randomBytes;
//# sourceMappingURL=random.js.map

@@ -1,5 +0,2 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Regex = void 0;
class Regex {
export class Regex {
constructor(pattern) {

@@ -34,3 +31,2 @@ this.pattern = pattern;

}
exports.Regex = Regex;
//# sourceMappingURL=regex.js.map

@@ -1,7 +0,3 @@

export declare function textDecoder(): {
decode(input?: BufferSource, options?: TextDecodeOptions): string;
};
export declare function textEncoder(): {
encode(input?: string): Uint8Array;
};
export declare const DECODER: TextDecoder;
export declare const ENCODER: TextEncoder;
//# sourceMappingURL=textencoding.d.ts.map

@@ -1,18 +0,3 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.textEncoder = exports.textDecoder = void 0;
function textDecoder() {
if (typeof TextDecoder === 'function')
return new TextDecoder('utf-8');
const util = require('util');
return new util.TextDecoder('utf-8');
}
exports.textDecoder = textDecoder;
function textEncoder() {
if (typeof TextEncoder === 'function')
return new TextEncoder();
const util = require('util');
return new util.TextEncoder();
}
exports.textEncoder = textEncoder;
export const DECODER = new TextDecoder('utf-8');
export const ENCODER = new TextEncoder();
//# sourceMappingURL=textencoding.js.map

@@ -1,13 +0,2 @@

export function textDecoder(): { decode(input?: BufferSource, options?: TextDecodeOptions): string; } {
if (typeof TextDecoder === 'function')
return new TextDecoder('utf-8');
const util = require('util');
return new util.TextDecoder('utf-8')
}
export function textEncoder(): { encode(input?: string): Uint8Array; } {
if (typeof TextEncoder === 'function')
return new TextEncoder();
const util = require('util');
return new util.TextEncoder()
}
export const DECODER = new TextDecoder('utf-8');
export const ENCODER = new TextEncoder();

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet