index.d.ts
1 // Definitions by: Carlos Ballesteros Velasco <https://github.com/soywiz> 2 // Leon Yu <https://github.com/leonyu> 3 // BendingBender <https://github.com/BendingBender> 4 // Maple Miao <https://github.com/mapleeit> 5 6 /// <reference types="node" /> 7 import * as stream from 'stream'; 8 import * as http from 'http'; 9 10 export = FormData; 11 12 // Extracted because @types/node doesn't export interfaces. 13 interface ReadableOptions { 14 highWaterMark?: number; 15 encoding?: string; 16 objectMode?: boolean; 17 read?(this: stream.Readable, size: number): void; 18 destroy?(this: stream.Readable, error: Error | null, callback: (error: Error | null) => void): void; 19 autoDestroy?: boolean; 20 } 21 22 interface Options extends ReadableOptions { 23 writable?: boolean; 24 readable?: boolean; 25 dataSize?: number; 26 maxDataSize?: number; 27 pauseStreams?: boolean; 28 } 29 30 declare class FormData extends stream.Readable { 31 constructor(options?: Options); 32 append(key: string, value: any, options?: FormData.AppendOptions | string): void; 33 getHeaders(userHeaders?: FormData.Headers): FormData.Headers; 34 submit( 35 params: string | FormData.SubmitOptions, 36 callback?: (error: Error | null, response: http.IncomingMessage) => void 37 ): http.ClientRequest; 38 getBuffer(): Buffer; 39 setBoundary(boundary: string): void; 40 getBoundary(): string; 41 getLength(callback: (err: Error | null, length: number) => void): void; 42 getLengthSync(): number; 43 hasKnownLength(): boolean; 44 } 45 46 declare namespace FormData { 47 interface Headers { 48 [key: string]: any; 49 } 50 51 interface AppendOptions { 52 header?: string | Headers; 53 knownLength?: number; 54 filename?: string; 55 filepath?: string; 56 contentType?: string; 57 } 58 59 interface SubmitOptions extends http.RequestOptions { 60 protocol?: 'https:' | 'http:'; 61 } 62 }