97 lines
4.5 KiB
TypeScript
97 lines
4.5 KiB
TypeScript
import { URL } from 'url'
|
|
import { TlsOptions } from 'tls'
|
|
import Dispatcher from './dispatcher'
|
|
import buildConnector from "./connector";
|
|
|
|
/**
|
|
* A basic HTTP/1.1 client, mapped on top a single TCP/TLS connection. Pipelining is disabled by default.
|
|
*/
|
|
export class Client extends Dispatcher {
|
|
constructor(url: string | URL, options?: Client.Options);
|
|
/** Property to get and set the pipelining factor. */
|
|
pipelining: number;
|
|
/** `true` after `client.close()` has been called. */
|
|
closed: boolean;
|
|
/** `true` after `client.destroyed()` has been called or `client.close()` has been called and the client shutdown has completed. */
|
|
destroyed: boolean;
|
|
}
|
|
|
|
export declare namespace Client {
|
|
export interface OptionsInterceptors {
|
|
Client: readonly Dispatcher.DispatchInterceptor[];
|
|
}
|
|
export interface Options {
|
|
/** TODO */
|
|
interceptors?: OptionsInterceptors;
|
|
/** The maximum length of request headers in bytes. Default: `16384` (16KiB). */
|
|
maxHeaderSize?: number;
|
|
/** The amount of time, in milliseconds, the parser will wait to receive the complete HTTP headers (Node 14 and above only). Default: `300e3` milliseconds (300s). */
|
|
headersTimeout?: number;
|
|
/** @deprecated unsupported socketTimeout, use headersTimeout & bodyTimeout instead */
|
|
socketTimeout?: never;
|
|
/** @deprecated unsupported requestTimeout, use headersTimeout & bodyTimeout instead */
|
|
requestTimeout?: never;
|
|
/** TODO */
|
|
connectTimeout?: number;
|
|
/** The timeout after which a request will time out, in milliseconds. Monitors time between receiving body data. Use `0` to disable it entirely. Default: `300e3` milliseconds (300s). */
|
|
bodyTimeout?: number;
|
|
/** @deprecated unsupported idleTimeout, use keepAliveTimeout instead */
|
|
idleTimeout?: never;
|
|
/** @deprecated unsupported keepAlive, use pipelining=0 instead */
|
|
keepAlive?: never;
|
|
/** the timeout, in milliseconds, after which a socket without active requests will time out. Monitors time between activity on a connected socket. This value may be overridden by *keep-alive* hints from the server. Default: `4e3` milliseconds (4s). */
|
|
keepAliveTimeout?: number;
|
|
/** @deprecated unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead */
|
|
maxKeepAliveTimeout?: never;
|
|
/** the maximum allowed `idleTimeout`, in milliseconds, when overridden by *keep-alive* hints from the server. Default: `600e3` milliseconds (10min). */
|
|
keepAliveMaxTimeout?: number;
|
|
/** A number of milliseconds subtracted from server *keep-alive* hints when overriding `idleTimeout` to account for timing inaccuracies caused by e.g. transport latency. Default: `1e3` milliseconds (1s). */
|
|
keepAliveTimeoutThreshold?: number;
|
|
/** TODO */
|
|
socketPath?: string;
|
|
/** The amount of concurrent requests to be sent over the single TCP/TLS connection according to [RFC7230](https://tools.ietf.org/html/rfc7230#section-6.3.2). Default: `1`. */
|
|
pipelining?: number;
|
|
/** @deprecated use the connect option instead */
|
|
tls?: never;
|
|
/** If `true`, an error is thrown when the request content-length header doesn't match the length of the request body. Default: `true`. */
|
|
strictContentLength?: boolean;
|
|
/** TODO */
|
|
maxCachedSessions?: number;
|
|
/** TODO */
|
|
maxRedirections?: number;
|
|
/** TODO */
|
|
connect?: buildConnector.BuildOptions | buildConnector.connector;
|
|
/** TODO */
|
|
maxRequestsPerClient?: number;
|
|
/** TODO */
|
|
localAddress?: string;
|
|
/** Max response body size in bytes, -1 is disabled */
|
|
maxResponseSize?: number;
|
|
/** Enables a family autodetection algorithm that loosely implements section 5 of RFC 8305. */
|
|
autoSelectFamily?: boolean;
|
|
/** The amount of time in milliseconds to wait for a connection attempt to finish before trying the next address when using the `autoSelectFamily` option. */
|
|
autoSelectFamilyAttemptTimeout?: number;
|
|
/**
|
|
* @description Enables support for H2 if the server has assigned bigger priority to it through ALPN negotiation.
|
|
* @default false
|
|
*/
|
|
allowH2?: boolean;
|
|
/**
|
|
* @description Dictates the maximum number of concurrent streams for a single H2 session. It can be overriden by a SETTINGS remote frame.
|
|
* @default 100
|
|
*/
|
|
maxConcurrentStreams?: number
|
|
}
|
|
export interface SocketInfo {
|
|
localAddress?: string
|
|
localPort?: number
|
|
remoteAddress?: string
|
|
remotePort?: number
|
|
remoteFamily?: string
|
|
timeout?: number
|
|
bytesWritten?: number
|
|
bytesRead?: number
|
|
}
|
|
}
|
|
|
|
export default Client;
|