source: node_modules/@fastify/busboy/lib/main.d.ts

main
Last change on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 6.5 KB
RevLine 
[d24f17c]1// Definitions by: Jacob Baskin <https://github.com/jacobbaskin>
2// BendingBender <https://github.com/BendingBender>
3// Igor Savin <https://github.com/kibertoad>
4
5/// <reference types="node" />
6
7import * as http from 'http';
8import { Readable, Writable } from 'stream';
9export { Dicer } from "../deps/dicer/lib/dicer";
10
11export const Busboy: BusboyConstructor;
12export default Busboy;
13
14export interface BusboyConfig {
15 /**
16 * These are the HTTP headers of the incoming request, which are used by individual parsers.
17 */
18 headers: BusboyHeaders;
19 /**
20 * `highWaterMark` to use for this Busboy instance.
21 * @default WritableStream default.
22 */
23 highWaterMark?: number | undefined;
24 /**
25 * highWaterMark to use for file streams.
26 * @default ReadableStream default.
27 */
28 fileHwm?: number | undefined;
29 /**
30 * Default character set to use when one isn't defined.
31 * @default 'utf8'
32 */
33 defCharset?: string | undefined;
34 /**
35 * Detect if a Part is a file.
36 *
37 * By default a file is detected if contentType
38 * is application/octet-stream or fileName is not
39 * undefined.
40 *
41 * Modify this to handle e.g. Blobs.
42 */
43 isPartAFile?: (fieldName: string | undefined, contentType: string | undefined, fileName: string | undefined) => boolean;
44 /**
45 * If paths in the multipart 'filename' field shall be preserved.
46 * @default false
47 */
48 preservePath?: boolean | undefined;
49 /**
50 * Various limits on incoming data.
51 */
52 limits?:
53 | {
54 /**
55 * Max field name size (in bytes)
56 * @default 100 bytes
57 */
58 fieldNameSize?: number | undefined;
59 /**
60 * Max field value size (in bytes)
61 * @default 1MB
62 */
63 fieldSize?: number | undefined;
64 /**
65 * Max number of non-file fields
66 * @default Infinity
67 */
68 fields?: number | undefined;
69 /**
70 * For multipart forms, the max file size (in bytes)
71 * @default Infinity
72 */
73 fileSize?: number | undefined;
74 /**
75 * For multipart forms, the max number of file fields
76 * @default Infinity
77 */
78 files?: number | undefined;
79 /**
80 * For multipart forms, the max number of parts (fields + files)
81 * @default Infinity
82 */
83 parts?: number | undefined;
84 /**
85 * For multipart forms, the max number of header key=>value pairs to parse
86 * @default 2000
87 */
88 headerPairs?: number | undefined;
89
90 /**
91 * For multipart forms, the max size of a header part
92 * @default 81920
93 */
94 headerSize?: number | undefined;
95 }
96 | undefined;
97}
98
99export type BusboyHeaders = { 'content-type': string } & http.IncomingHttpHeaders;
100
101export interface BusboyFileStream extends
102 Readable {
103
104 truncated: boolean;
105
106 /**
107 * The number of bytes that have been read so far.
108 */
109 bytesRead: number;
110}
111
112export interface Busboy extends Writable {
113 addListener<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this;
114
115 addListener(event: string | symbol, listener: (...args: any[]) => void): this;
116
117 on<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this;
118
119 on(event: string | symbol, listener: (...args: any[]) => void): this;
120
121 once<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this;
122
123 once(event: string | symbol, listener: (...args: any[]) => void): this;
124
125 removeListener<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this;
126
127 removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
128
129 off<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this;
130
131 off(event: string | symbol, listener: (...args: any[]) => void): this;
132
133 prependListener<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this;
134
135 prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
136
137 prependOnceListener<Event extends keyof BusboyEvents>(event: Event, listener: BusboyEvents[Event]): this;
138
139 prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
140}
141
142export interface BusboyEvents {
143 /**
144 * Emitted for each new file form field found.
145 *
146 * * Note: if you listen for this event, you should always handle the `stream` no matter if you care about the
147 * file contents or not (e.g. you can simply just do `stream.resume();` if you want to discard the contents),
148 * otherwise the 'finish' event will never fire on the Busboy instance. However, if you don't care about **any**
149 * incoming files, you can simply not listen for the 'file' event at all and any/all files will be automatically
150 * and safely discarded (these discarded files do still count towards `files` and `parts` limits).
151 * * If a configured file size limit was reached, `stream` will both have a boolean property `truncated`
152 * (best checked at the end of the stream) and emit a 'limit' event to notify you when this happens.
153 *
154 * @param listener.transferEncoding Contains the 'Content-Transfer-Encoding' value for the file stream.
155 * @param listener.mimeType Contains the 'Content-Type' value for the file stream.
156 */
157 file: (
158 fieldname: string,
159 stream: BusboyFileStream,
160 filename: string,
161 transferEncoding: string,
162 mimeType: string,
163 ) => void;
164 /**
165 * Emitted for each new non-file field found.
166 */
167 field: (
168 fieldname: string,
169 value: string,
170 fieldnameTruncated: boolean,
171 valueTruncated: boolean,
172 transferEncoding: string,
173 mimeType: string,
174 ) => void;
175 finish: () => void;
176 /**
177 * Emitted when specified `parts` limit has been reached. No more 'file' or 'field' events will be emitted.
178 */
179 partsLimit: () => void;
180 /**
181 * Emitted when specified `files` limit has been reached. No more 'file' events will be emitted.
182 */
183 filesLimit: () => void;
184 /**
185 * Emitted when specified `fields` limit has been reached. No more 'field' events will be emitted.
186 */
187 fieldsLimit: () => void;
188 error: (error: unknown) => void;
189}
190
191export interface BusboyConstructor {
192 (options: BusboyConfig): Busboy;
193
194 new(options: BusboyConfig): Busboy;
195}
196
Note: See TracBrowser for help on using the repository browser.