UNPKG

2.18 kBTypeScriptView Raw
1import { Stream } from 'stream';
2import { WriteStream } from 'fs';
3
4interface Options {
5 /**
6 * Request method
7 * @default 'GET'
8 */
9 method?: string;
10 /**
11 * Request body
12 * @default null
13 */
14 body?: string | null | Buffer | Stream;
15 /**
16 * Request headers
17 */
18 headers?: Record<string, string>;
19 /**
20 * Request query
21 */
22 query?: Record<string, string>;
23 /**
24 * Allow redirect
25 * @default true
26 */
27 followRedirect?: boolean;
28 /**
29 * Maximum redirect count. 0 to not follow redirect
30 * @default 20
31 */
32 maxRedirectCount?: number;
33 /**
34 * Request/Response timeout in ms. 0 to disable
35 * @default 0
36 */
37 timeout?: number;
38 /**
39 * Maximum response body size in bytes. 0 to disable
40 * @default 0
41 */
42 size?: number;
43}
44
45interface Response {
46 /** Convenience property representing if the request ended normally */
47 ok: boolean;
48 /** Return origin stream */
49 stream: Stream;
50 /**
51 * Download file to destination
52 * @param {WriteStream} dest Download write stream
53 * @param {ProgressCallback=} onProgress Download progress callback
54 */
55 download: (dest: WriteStream, onProgress?: ProgressCallback) => Promise<void>;
56 /** Decode response as ArrayBuffer */
57 arrayBuffer(): Promise<ArrayBuffer>;
58 /** Decode response as Blob */
59 blob(): Promise<Blob>;
60 /** Decode response as text */
61 text(): Promise<string>;
62 /** Decode response as json */
63 json<T>(): Promise<T>;
64 /** Decode response as buffer */
65 buffer(): Promise<Buffer>;
66}
67
68interface ProgressInfo {
69 /** Total file bytes */
70 total: number;
71 /** Delta file bytes */
72 delta: number;
73 /** Transferred file bytes */
74 transferred: number;
75 /** Transferred percentage */
76 percent: number;
77 /** Bytes transferred per second */
78 bytesPerSecond: number;
79}
80
81type ProgressCallback = (progressInfo: ProgressInfo) => void;
82
83interface Blob {
84 size: number;
85 type: string;
86 isClosed: boolean;
87 content: Buffer;
88 slice(start?: number, end?: number, type?: string): Blob;
89 close(): void;
90 toString(): string;
91}
92
93declare const main: (requestURL: string, options?: Options) => Promise<Response>;
94
95export default main;
96export { ProgressInfo, Response };