UNPKG

undici

Version:

An HTTP/1.1 client, written from scratch for Node.js

68 lines (62 loc) 2.84 kB
import { IncomingHttpHeaders } from 'http' export { Interceptable, MockInterceptor, MockScope } /** The scope associated with a mock dispatch. */ declare class MockScope<TData extends object = object> { constructor(mockDispatch: MockInterceptor.MockDispatch<TData>); /** Delay a reply by a set amount of time in ms. */ delay(waitInMs: number): MockScope<TData>; /** Persist the defined mock data for the associated reply. It will return the defined mock data indefinitely. */ persist(): MockScope<TData>; /** Define a reply for a set amount of matching requests. */ times(repeatTimes: number): MockScope<TData>; } /** The interceptor for a Mock. */ declare class MockInterceptor { constructor(options: MockInterceptor.Options, mockDispatches: MockInterceptor.MockDispatch[]); /** Mock an undici request with the defined reply. */ reply<TData extends object = object>(statusCode: number, data: TData | string, responseOptions?: MockInterceptor.MockResponseOptions): MockScope<TData>; /** Mock an undici request by throwing the defined reply error. */ replyWithError<TError extends Error = Error>(error: TError): MockScope; /** Set default reply headers on the interceptor for subsequent mocked replies. */ defaultReplyHeaders(headers: IncomingHttpHeaders): MockInterceptor; /** Set default reply trailers on the interceptor for subsequent mocked replies. */ defaultReplyTrailers(trailers: Record<string, string>): MockInterceptor; /** Set automatically calculated content-length header on subsequent mocked replies. */ replyContentLength(): MockInterceptor; } declare namespace MockInterceptor { /** MockInterceptor options. */ export interface Options { /** Path to intercept on. */ path: string | RegExp | ((path: string) => boolean); /** Method to intercept on. */ method: string | RegExp | ((method: string) => boolean); /** Body to intercept on. */ body?: string | RegExp | ((body: string) => boolean); /** Headers to intercept on. */ headers?: Record<string, string | RegExp | ((body: string) => boolean)>; } export interface MockDispatch<TData extends object = object, TError extends Error = Error> extends Options { times: number | null; persist: boolean; consumed: boolean; data: MockDispatchData<TData, TError>; } export interface MockDispatchData<TData extends object = object, TError extends Error = Error> extends MockResponseOptions { error: TError | null; statusCode?: number; data?: TData | string; } export interface MockResponseOptions { headers?: IncomingHttpHeaders; trailers?: Record<string, string>; } } interface Interceptable { /** Intercepts any matching requests that use the same origin as this mock client. */ intercept(options: MockInterceptor.Options): MockInterceptor; }