You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.9 KiB

/// <reference types="node" />
import { FastifyRequest } from 'fastify';
import { Strategy } from './lib/file-appender';
export declare type FilesObject = {
[fieldname: string]: Partial<File>[];
};
export interface Field {
name: string;
maxCount?: number;
}
export interface File {
fieldname: string;
originalname: string;
encoding: string;
mimetype: string;
size?: number;
destination?: string;
filename?: string;
path?: string;
buffer?: Buffer;
stream?: NodeJS.ReadableStream;
}
export declare type FileFilterCallback = (error: Error | null, acceptFile?: boolean) => void;
export declare type FileFilter = (req: FastifyRequest, file: File, callback: FileFilterCallback) => void;
export interface Options {
dest?: string;
storage?: StorageEngine;
limits?: {
fieldNameSize?: number;
fieldSize?: number;
fields?: number;
fileSize?: number;
files?: number;
parts?: number;
headerPairs?: number;
};
preservePath?: boolean;
fileFilter?: FileFilter;
}
export interface StorageEngine {
_handleFile(req: FastifyRequest, file: File, callback: (error?: Error | null, info?: Partial<File>) => void): void;
_removeFile(req: FastifyRequest, file: File, callback: (error?: Error | null) => void): void;
}
export declare type GetFileName = (req: FastifyRequest, file: File, callback: (error: Error | null, filename?: string) => void) => void;
export declare type GetDestination = (req: FastifyRequest, file: File, callback: (error: Error | null, destination: string) => void) => void;
export interface DiskStorageOptions {
destination?: string | GetDestination;
filename?: GetFileName;
}
export declare type Setup = () => {
storage: StorageEngine;
limits: Options['limits'];
preservePath: Options['preservePath'];
fileFilter: FileFilter;
fileStrategy: Strategy;
};