1 |
|
2 | import { URL } from 'url';
|
3 | import { CancelError } from 'p-cancelable';
|
4 | import { CancelableRequest, Response, Options, NormalizedOptions, Defaults as DefaultOptions, PaginationOptions, ParseError, RequestError, CacheError, ReadError, HTTPError, MaxRedirectsError, TimeoutError } from './as-promise';
|
5 | import Request from './core';
|
6 | declare type Except<ObjectType, KeysType extends keyof ObjectType> = Pick<ObjectType, Exclude<keyof ObjectType, KeysType>>;
|
7 | declare type Merge<FirstType, SecondType> = Except<FirstType, Extract<keyof FirstType, keyof SecondType>> & SecondType;
|
8 | export interface InstanceDefaults {
|
9 | options: DefaultOptions;
|
10 | handlers: HandlerFunction[];
|
11 | mutableDefaults: boolean;
|
12 | _rawHandlers?: HandlerFunction[];
|
13 | }
|
14 | export declare type GotReturn = Request | CancelableRequest;
|
15 | export declare type HandlerFunction = <T extends GotReturn>(options: NormalizedOptions, next: (options: NormalizedOptions) => T) => T | Promise<T>;
|
16 | export interface ExtendOptions extends Options {
|
17 | handlers?: HandlerFunction[];
|
18 | mutableDefaults?: boolean;
|
19 | }
|
20 | export declare type OptionsOfTextResponseBody = Merge<Options, {
|
21 | isStream?: false;
|
22 | resolveBodyOnly?: false;
|
23 | responseType?: 'text';
|
24 | }>;
|
25 | export declare type OptionsOfJSONResponseBody = Merge<Options, {
|
26 | isStream?: false;
|
27 | resolveBodyOnly?: false;
|
28 | responseType?: 'json';
|
29 | }>;
|
30 | export declare type OptionsOfBufferResponseBody = Merge<Options, {
|
31 | isStream?: false;
|
32 | resolveBodyOnly?: false;
|
33 | responseType: 'buffer';
|
34 | }>;
|
35 | export declare type OptionsOfUnknownResponseBody = Merge<Options, {
|
36 | isStream?: false;
|
37 | resolveBodyOnly?: false;
|
38 | }>;
|
39 | export declare type StrictOptions = Except<Options, 'isStream' | 'responseType' | 'resolveBodyOnly'>;
|
40 | export declare type StreamOptions = Merge<Options, {
|
41 | isStream?: true;
|
42 | }>;
|
43 | declare type ResponseBodyOnly = {
|
44 | resolveBodyOnly: true;
|
45 | };
|
46 | export declare type OptionsWithPagination<T = unknown, R = unknown> = Merge<Options, PaginationOptions<T, R>>;
|
47 | export 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 | }
|
53 | export 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 | }
|
77 | export declare type HTTPAlias = 'get' | 'post' | 'put' | 'patch' | 'head' | 'delete';
|
78 | interface GotStreamFunction {
|
79 | (url: string | URL, options?: Merge<Options, {
|
80 | isStream?: true;
|
81 | }>): Request;
|
82 | (options?: Merge<Options, {
|
83 | isStream?: true;
|
84 | }>): Request;
|
85 | }
|
86 | export declare type GotStream = GotStreamFunction & Record<HTTPAlias, GotStreamFunction>;
|
87 | export 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 | }
|
103 | export {};
|