Spaces:
Runtime error
Runtime error
// Definitions by: Jacob Baskin <https://github.com/jacobbaskin> | |
// BendingBender <https://github.com/BendingBender> | |
// Igor Savin <https://github.com/kibertoad> | |
/// <reference types="node" /> | |
import * as http from 'http'; | |
import { Readable, Writable } from 'stream'; | |
export { Dicer } from "../deps/dicer/lib/dicer"; | |
export const Busboy: BusboyConstructor; | |
export default Busboy; | |
export interface BusboyConfig { | |
/** | |
* These are the HTTP headers of the incoming request, which are used by individual parsers. | |
*/ | |
headers: BusboyHeaders; | |
/** | |
* `highWaterMark` to use for this Busboy instance. | |
* @default WritableStream default. | |
*/ | |
highWaterMark?: number | undefined; | |
/** | |
* highWaterMark to use for file streams. | |
* @default ReadableStream default. | |
*/ | |
fileHwm?: number | undefined; | |
/** | |
* Default character set to use when one isn't defined. | |
* @default 'utf8' | |
*/ | |
defCharset?: string | undefined; | |
/** | |
* Detect if a Part is a file. | |
* | |
* By default a file is detected if contentType | |
* is application/octet-stream or fileName is not | |
* undefined. | |
* | |
* Modify this to handle e.g. Blobs. | |
*/ | |
isPartAFile?: (fieldName: string | undefined, contentType: string | undefined, fileName: string | undefined) => boolean; | |
/** | |
* If paths in the multipart 'filename' field shall be preserved. | |
* @default false | |
*/ | |
preservePath?: boolean | undefined; | |
/** | |
* Various limits on incoming data. | |
*/ | |
limits?: | |
| { | |
/** | |
* Max field name size (in bytes) | |
* @default 100 bytes | |
*/ | |
fieldNameSize?: number | undefined; | |
/** | |
* Max field value size (in bytes) | |
* @default 1MB | |
*/ | |
fieldSize?: number | undefined; | |
/** | |
* Max number of non-file fields | |
* @default Infinity | |
*/ | |
fields?: number | undefined; | |
/** | |
* For multipart forms, the max file size (in bytes) | |
* @default Infinity | |
*/ | |
fileSize?: number | undefined; | |
/** | |
* For multipart forms, the max number of file fields | |
* @default Infinity | |
*/ | |
files?: number | undefined; | |
/** | |
* For multipart forms, the max number of parts (fields + files) | |
* @default Infinity | |
*/ | |
parts?: number | undefined; | |
/** | |
* For multipart forms, the max number of header key=>value pairs to parse | |
* @default 2000 | |
*/ | |
headerPairs?: number | undefined; | |
/** | |
* For multipart forms, the max size of a header part | |
* @default 81920 | |
*/ | |
headerSize?: number | undefined; | |
} | |
| undefined; | |
} | |
export type BusboyHeaders = { 'content-type': string } & http.IncomingHttpHeaders; | |
export interface BusboyFileStream extends | |
Readable { | |
truncated: boolean; | |
/** | |
* The number of bytes that have been read so far. | |
*/ | |
bytesRead: number; | |
} | |
export interface Busboy extends Writable { | |
addListener<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this; | |
addListener(event: string | symbol, listener: (...args: any[]) => void): this; | |
on<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this; | |
on(event: string | symbol, listener: (...args: any[]) => void): this; | |
once<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this; | |
once(event: string | symbol, listener: (...args: any[]) => void): this; | |
removeListener<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this; | |
removeListener(event: string | symbol, listener: (...args: any[]) => void): this; | |
off<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this; | |
off(event: string | symbol, listener: (...args: any[]) => void): this; | |
prependListener<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this; | |
prependListener(event: string | symbol, listener: (...args: any[]) => void): this; | |
prependOnceListener<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this; | |
prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this; | |
} | |
export interface BusboyEvents { | |
/** | |
* Emitted for each new file form field found. | |
* | |
* * Note: if you listen for this event, you should always handle the `stream` no matter if you care about the | |
* file contents or not (e.g. you can simply just do `stream.resume();` if you want to discard the contents), | |
* otherwise the 'finish' event will never fire on the Busboy instance. However, if you don't care about **any** | |
* incoming files, you can simply not listen for the 'file' event at all and any/all files will be automatically | |
* and safely discarded (these discarded files do still count towards `files` and `parts` limits). | |
* * If a configured file size limit was reached, `stream` will both have a boolean property `truncated` | |
* (best checked at the end of the stream) and emit a 'limit' event to notify you when this happens. | |
* | |
* @param listener.transferEncoding Contains the 'Content-Transfer-Encoding' value for the file stream. | |
* @param listener.mimeType Contains the 'Content-Type' value for the file stream. | |
*/ | |
file: ( | |
fieldname: string, | |
stream: BusboyFileStream, | |
filename: string, | |
transferEncoding: string, | |
mimeType: string, | |
) => void; | |
/** | |
* Emitted for each new non-file field found. | |
*/ | |
field: ( | |
fieldname: string, | |
value: string, | |
fieldnameTruncated: boolean, | |
valueTruncated: boolean, | |
transferEncoding: string, | |
mimeType: string, | |
) => void; | |
finish: () => void; | |
/** | |
* Emitted when specified `parts` limit has been reached. No more 'file' or 'field' events will be emitted. | |
*/ | |
partsLimit: () => void; | |
/** | |
* Emitted when specified `files` limit has been reached. No more 'file' events will be emitted. | |
*/ | |
filesLimit: () => void; | |
/** | |
* Emitted when specified `fields` limit has been reached. No more 'field' events will be emitted. | |
*/ | |
fieldsLimit: () => void; | |
error: (error: unknown) => void; | |
} | |
export interface BusboyConstructor { | |
(options: BusboyConfig): Busboy; | |
new(options: BusboyConfig): Busboy; | |
} | |