formzilla
Version:
Fastify plugin for parsing multipart/form data
42 lines (40 loc) • 1.23 kB
TypeScript
import { Readable } from "stream";
import { FileInfo, Limits } from "busboy";
import { FastifyPluginOptions, FastifyPluginAsync } from "fastify";
export interface Dictionary extends Object {
[key: string | symbol]: any;
}
export interface File {
field: string | undefined;
originalName: string;
encoding: string;
mimeType: string;
path: string | undefined;
stream: Readable | undefined;
data: Buffer | undefined;
error: Error | undefined;
}
export type FileHandler = (name: string, stream: Readable, info: FileInfo) => File | Promise<File>;
export interface StorageOption {
process: FileHandler;
}
export interface FileSaveTarget {
directory?: string;
fileName?: string;
}
export type TargetType = FileSaveTarget | ((source: File) => FileSaveTarget);
export interface FormDataParserPluginOptions extends FastifyPluginOptions {
limits?: Limits;
storage?: StorageOption;
}
export type FormDataParserPlugin = FastifyPluginAsync<FormDataParserPluginOptions> & Dictionary;
export interface FieldParser {
parseField(name: string, value: any): any;
}
declare module "fastify" {
interface FastifyRequest {
__files__?: Array<File>;
}
}
declare const formDataParser: FormDataParserPlugin;
export default formDataParser;