UNPKG

5.36 kBTypeScriptView Raw
1/// <reference types="node" />
2import { URL } from 'url';
3import { CancelError } from 'p-cancelable';
4import { CancelableRequest, Response, Options, NormalizedOptions, Defaults as DefaultOptions, PaginationOptions, ParseError, RequestError, CacheError, ReadError, HTTPError, MaxRedirectsError, TimeoutError } from './as-promise';
5import Request from './core';
6declare type Except<ObjectType, KeysType extends keyof ObjectType> = Pick<ObjectType, Exclude<keyof ObjectType, KeysType>>;
7declare type Merge<FirstType, SecondType> = Except<FirstType, Extract<keyof FirstType, keyof SecondType>> & SecondType;
8export interface InstanceDefaults {
9 options: DefaultOptions;
10 handlers: HandlerFunction[];
11 mutableDefaults: boolean;
12 _rawHandlers?: HandlerFunction[];
13}
14export declare type GotReturn = Request | CancelableRequest;
15export declare type HandlerFunction = <T extends GotReturn>(options: NormalizedOptions, next: (options: NormalizedOptions) => T) => T | Promise<T>;
16export interface ExtendOptions extends Options {
17 handlers?: HandlerFunction[];
18 mutableDefaults?: boolean;
19}
20export declare type OptionsOfTextResponseBody = Merge<Options, {
21 isStream?: false;
22 resolveBodyOnly?: false;
23 responseType?: 'text';
24}>;
25export declare type OptionsOfJSONResponseBody = Merge<Options, {
26 isStream?: false;
27 resolveBodyOnly?: false;
28 responseType?: 'json';
29}>;
30export declare type OptionsOfBufferResponseBody = Merge<Options, {
31 isStream?: false;
32 resolveBodyOnly?: false;
33 responseType: 'buffer';
34}>;
35export declare type OptionsOfUnknownResponseBody = Merge<Options, {
36 isStream?: false;
37 resolveBodyOnly?: false;
38}>;
39export declare type StrictOptions = Except<Options, 'isStream' | 'responseType' | 'resolveBodyOnly'>;
40export declare type StreamOptions = Merge<Options, {
41 isStream?: true;
42}>;
43declare type ResponseBodyOnly = {
44 resolveBodyOnly: true;
45};
46export declare type OptionsWithPagination<T = unknown, R = unknown> = Merge<Options, PaginationOptions<T, R>>;
47export interface GotPaginate {
48 each: (<T, R = unknown>(url: string | URL, options?: OptionsWithPagination<T, R>) => AsyncIterableIterator<T>) & (<T, R = unknown>(options?: OptionsWithPagination<T, R>) => AsyncIterableIterator<T>);
49 all: (<T, R = unknown>(url: string | URL, options?: OptionsWithPagination<T, R>) => Promise<T[]>) & (<T, R = unknown>(options?: OptionsWithPagination<T, R>) => Promise<T[]>);
50 <T, R = unknown>(url: string | URL, options?: OptionsWithPagination<T, R>): AsyncIterableIterator<T>;
51 <T, R = unknown>(options?: OptionsWithPagination<T, R>): AsyncIterableIterator<T>;
52}
53export interface GotRequestFunction {
54 (url: string | URL, options?: OptionsOfTextResponseBody): CancelableRequest<Response<string>>;
55 <T>(url: string | URL, options?: OptionsOfJSONResponseBody): CancelableRequest<Response<T>>;
56 (url: string | URL, options?: OptionsOfBufferResponseBody): CancelableRequest<Response<Buffer>>;
57 (url: string | URL, options?: OptionsOfUnknownResponseBody): CancelableRequest<Response>;
58 (options: OptionsOfTextResponseBody): CancelableRequest<Response<string>>;
59 <T>(options: OptionsOfJSONResponseBody): CancelableRequest<Response<T>>;
60 (options: OptionsOfBufferResponseBody): CancelableRequest<Response<Buffer>>;
61 (options: OptionsOfUnknownResponseBody): CancelableRequest<Response>;
62 (url: string | URL, options?: (Merge<OptionsOfTextResponseBody, ResponseBodyOnly>)): CancelableRequest<string>;
63 <T>(url: string | URL, options?: (Merge<OptionsOfJSONResponseBody, ResponseBodyOnly>)): CancelableRequest<T>;
64 (url: string | URL, options?: (Merge<OptionsOfBufferResponseBody, ResponseBodyOnly>)): CancelableRequest<Buffer>;
65 (options: (Merge<OptionsOfTextResponseBody, ResponseBodyOnly>)): CancelableRequest<string>;
66 <T>(options: (Merge<OptionsOfJSONResponseBody, ResponseBodyOnly>)): CancelableRequest<T>;
67 (options: (Merge<OptionsOfBufferResponseBody, ResponseBodyOnly>)): CancelableRequest<Buffer>;
68 (url: string | URL, options?: Merge<Options, {
69 isStream: true;
70 }>): Request;
71 (options: Merge<Options, {
72 isStream: true;
73 }>): Request;
74 (url: string | URL, options?: Options): CancelableRequest | Request;
75 (options: Options): CancelableRequest | Request;
76}
77export declare type HTTPAlias = 'get' | 'post' | 'put' | 'patch' | 'head' | 'delete';
78interface GotStreamFunction {
79 (url: string | URL, options?: Merge<Options, {
80 isStream?: true;
81 }>): Request;
82 (options?: Merge<Options, {
83 isStream?: true;
84 }>): Request;
85}
86export declare type GotStream = GotStreamFunction & Record<HTTPAlias, GotStreamFunction>;
87export interface Got extends Record<HTTPAlias, GotRequestFunction>, GotRequestFunction {
88 stream: GotStream;
89 paginate: GotPaginate;
90 defaults: InstanceDefaults;
91 CacheError: typeof CacheError;
92 RequestError: typeof RequestError;
93 ReadError: typeof ReadError;
94 ParseError: typeof ParseError;
95 HTTPError: typeof HTTPError;
96 MaxRedirectsError: typeof MaxRedirectsError;
97 TimeoutError: typeof TimeoutError;
98 CancelError: typeof CancelError;
99 extend: (...instancesOrOptions: Array<Got | ExtendOptions>) => Got;
100 mergeInstances: (parent: Got, ...instances: Got[]) => Got;
101 mergeOptions: (...sources: Options[]) => NormalizedOptions;
102}
103export {};