UNPKG

get-it

Version:

Generic HTTP request library for node, browsers and workers

371 lines (331 loc) 9.98 kB
import {FinalizeNodeOptionsPayload as FinalizeNodeOptionsPayload_2} from 'get-it' import {HookOnRequestEvent} from 'get-it' import {HttpContext} from 'get-it' import type {IncomingHttpHeaders} from 'http' import type {IncomingMessage} from 'http' import {MiddlewareChannels as MiddlewareChannels_2} from 'get-it' import {MiddlewareResponse} from 'get-it' import {ProxyOptions as ProxyOptions_2} from 'get-it' import {RequestAdapter as RequestAdapter_2} from 'get-it' import {RequestOptions} from 'get-it' import type {Transform} from 'stream' import type {UrlWithStringQuery} from 'url' /** * This middleware only has an effect in Node.js. * @public */ export declare function agent(_opts?: any): any /** @public */ declare type ApplyMiddleware = <T extends keyof MiddlewareHooks>( hook: T, value: MiddlewareHooks[T] extends (defaultValue: infer V, ...rest: any[]) => any ? V : never, ...args: MiddlewareHooks[T] extends (defaultValue: any, ...rest: infer P) => any ? P : never ) => ReturnType<MiddlewareHooks[T]> /** @public */ export declare function base(baseUrl: string): { processOptions: (options: RequestOptions) => RequestOptions } /** * The cancel token API is based on the [cancelable promises proposal](https://github.com/tc39/proposal-cancelable-promises), which is currently at Stage 1. * * Code shamelessly stolen/borrowed from MIT-licensed [axios](https://github.com/mzabriskie/axios). Thanks to [Nick Uraltsev](https://github.com/nickuraltsev), [Matt Zabriskie](https://github.com/mzabriskie) and the other contributors of that project! */ /** @public */ export declare class Cancel { __CANCEL__: boolean message: string | undefined constructor(message: string | undefined) toString(): string } /** @public */ export declare class CancelToken { promise: Promise<any> reason?: Cancel constructor(executor: (cb: (message?: string) => void) => void) static source: () => { token: CancelToken cancel: (message?: string) => void } } /** @public */ declare function debug_2(opts?: any): { processOptions: (options: RequestOptions) => RequestOptions onRequest: (event: HookOnRequestEvent) => HookOnRequestEvent onResponse: (res: MiddlewareResponse, context: HttpContext) => MiddlewareResponse onError: (err: Error | null, context: HttpContext) => Error | null } export {debug_2 as debug} /** @public */ declare interface FinalizeNodeOptionsPayload extends UrlWithStringQuery { method: RequestOptions_2['method'] headers: RequestOptions_2['headers'] maxRedirects: RequestOptions_2['maxRedirects'] agent?: any cert?: any key?: any ca?: any } /** @public */ export declare function headers( _headers: any, opts?: any, ): { processOptions: (options: RequestOptions) => RequestOptions } /** @public */ declare type HookOnRequestEvent_2 = HookOnRequestEventNode | HookOnRequestEventBrowser /** @public */ declare interface HookOnRequestEventBase { options: RequestOptions_2 context: HttpContext_2 request: any } /** @public */ declare interface HookOnRequestEventBrowser extends HookOnRequestEventBase { adapter: Exclude<RequestAdapter, 'node'> progress?: undefined } /** @public */ declare interface HookOnRequestEventNode extends HookOnRequestEventBase { adapter: 'node' progress?: any } /** @public */ declare interface HttpContext_2 { options: RequestOptions_2 channels: MiddlewareChannels applyMiddleware: ApplyMiddleware } /** @public */ export declare function httpErrors(): { onResponse: (res: MiddlewareResponse_2, ctx: HttpContext_2) => MiddlewareResponse_2 } /** @public */ export declare function injectResponse(opts?: { inject: ( event: Parameters<MiddlewareHooks['interceptRequest']>[1], prevValue: Parameters<MiddlewareHooks['interceptRequest']>[0], ) => Partial<MiddlewareResponse_2 | undefined | void> }): { interceptRequest: ( prevValue: MiddlewareResponse_2 | undefined, event: { adapter: RequestAdapter_2 context: HttpContext }, ) => MiddlewareResponse_2 | undefined } /** @public */ export declare function jsonRequest(): { processOptions: (options: RequestOptions) => RequestOptions } /** @public */ export declare function jsonResponse(opts?: any): { onResponse: (response: MiddlewareResponse) => MiddlewareResponse processOptions: (options: RequestOptions) => RequestOptions & { headers: any } } /** @public */ export declare const keepAlive: (config?: { ms?: number maxFree?: number maxRetries?: number }) => any /** @public */ declare interface MiddlewareChannels { request: PubSub<HttpContext_2> response: PubSub<unknown> progress: PubSub<unknown> error: PubSub<unknown> abort: PubSub<void> } /** @public */ declare interface MiddlewareHooks { processOptions: (options: RequestOptions_2) => RequestOptions_2 validateOptions: (options: RequestOptions_2) => void | undefined interceptRequest: ( prevValue: MiddlewareResponse_2 | undefined, event: { adapter: RequestAdapter context: HttpContext_2 }, ) => MiddlewareResponse_2 | undefined | void finalizeOptions: ( options: FinalizeNodeOptionsPayload | RequestOptions_2, ) => FinalizeNodeOptionsPayload | RequestOptions_2 onRequest: (evt: HookOnRequestEvent_2) => void onResponse: (response: MiddlewareResponse_2, context: HttpContext_2) => MiddlewareResponse_2 onError: (err: Error | null, context: HttpContext_2) => any onReturn: (channels: MiddlewareChannels, context: HttpContext_2) => any onHeaders: ( response: IncomingMessage, evt: { headers: IncomingHttpHeaders adapter: RequestAdapter context: HttpContext_2 }, ) => ProgressStream } /** @public */ declare interface MiddlewareResponse_2 { body: any url: string method: string headers: any statusCode: number statusMessage: string remoteAddress?: string } /** @public */ export declare function mtls(config?: any): { finalizeOptions: (options: RequestOptions | FinalizeNodeOptionsPayload_2) => | RequestOptions | (FinalizeNodeOptionsPayload_2 & { cert: any key: any ca: any }) } /** @public */ export declare function observable(opts?: {implementation?: any}): { onReturn: (channels: MiddlewareChannels_2, context: HttpContext) => any } /** @public */ export declare const processOptions: (opts: RequestOptions_2) => { url: string body?: any bodySize?: number cancelToken?: any compress?: boolean headers?: any maxRedirects?: number maxRetries?: number retryDelay?: (attemptNumber: number) => number method?: string proxy?: string | false | null | ProxyOptions_2 query?: any rawBody?: boolean shouldRetry?: any stream?: boolean timeout: any tunnel?: boolean debug?: any requestId?: number attemptNumber?: number withCredentials?: boolean fetch?: boolean | Omit<RequestInit, 'method'> useAbortSignal?: boolean } declare interface Progress { percentage: number transferred: number length: number remaining: number eta: number runtime: number delta: number speed: number } /** @public */ export declare function progress(): { onRequest: (evt: HookOnRequestEvent) => void } declare interface ProgressStream extends Transform { progress(): Progress } /** @public */ export declare const promise: { (options?: {onlyBody?: boolean; implementation?: PromiseConstructor}): { onReturn: (channels: MiddlewareChannels_2, context: HttpContext) => Promise<unknown> } Cancel: typeof Cancel CancelToken: typeof CancelToken isCancel: (value: any) => value is Cancel } /** @public */ export declare function proxy(_proxy: any): { processOptions: (options: RequestOptions) => { proxy: any } & RequestOptions } /** * @public */ declare interface ProxyOptions { host: string port: number protocol?: 'http:' | 'https:' auth?: { username?: string password?: string } } /** @public */ declare interface PubSub<Message> { publish: (message: Message) => void subscribe: (subscriber: Subscriber<Message>) => () => void } /** * Reports the request adapter in use. `node` is only available if `ExportEnv` is also `node`. * When `ExportEnv` is `browser` then the adapter can be either `xhr` or `fetch`. * In the future `fetch` will be available in `node` as well. * @public */ declare type RequestAdapter = 'node' | 'xhr' | 'fetch' /** @public */ declare interface RequestOptions_2 { url: string body?: any bodySize?: number cancelToken?: any compress?: boolean headers?: any maxRedirects?: number maxRetries?: number retryDelay?: (attemptNumber: number) => number method?: string proxy?: string | false | null | ProxyOptions query?: any rawBody?: boolean shouldRetry?: any stream?: boolean timeout?: any tunnel?: boolean debug?: any requestId?: number attemptNumber?: number withCredentials?: boolean /** * Enables using the native `fetch` API instead of the default `http` module, and allows setting its options like `cache` */ fetch?: boolean | Omit<RequestInit, 'method'> /** * Some frameworks have special behavior for `fetch` when an `AbortSignal` is used, and may want to disable it unless userland specifically opts-in. */ useAbortSignal?: boolean } /** @public */ export declare const retry: { (opts?: Partial<RetryOptions>): { onError: (err: Error | null, context: HttpContext) => Error | null } shouldRetry: (err: any, _attempt: any, options: any) => any } /** @public */ declare interface RetryOptions { shouldRetry: (err: any, num: number, options: any) => boolean maxRetries?: number retryDelay?: (attemptNumber: number) => number } /** @public */ declare interface Subscriber<Event> { (event: Event): void } /** @public */ export declare function urlEncoded(): { processOptions: (options: RequestOptions) => RequestOptions } /** @public */ export declare const validateOptions: (options: RequestOptions) => void export {}