express-storage
Version:
A simple and powerful file upload and storage management package for Express.js applications. Supports multiple storage drivers including S3, GCS, OCI, and local storage with presigned URL support.
70 lines • 2.44 kB
TypeScript
import { Request } from 'express';
export type StorageDriver = 's3' | 's3-presigned' | 'gcs' | 'gcs-presigned' | 'oci' | 'oci-presigned' | 'local';
export interface FileUploadResult {
success: boolean;
fileName?: string;
fileUrl?: string;
error?: string;
}
export interface PresignedUrlResult {
success: boolean;
uploadUrl?: string;
viewUrl?: string;
error?: string;
}
export interface StorageConfig {
driver: StorageDriver;
bucketName?: string | undefined;
localPath?: string | undefined;
presignedUrlExpiry?: number | undefined;
awsRegion?: string | undefined;
awsAccessKey?: string | undefined;
awsSecretKey?: string | undefined;
gcsProjectId?: string | undefined;
gcsCredentials?: string | undefined;
ociRegion?: string | undefined;
ociCredentials?: string | undefined;
}
export interface SingleFileInput {
type: 'single';
file: Express.Multer.File;
}
export interface MultipleFilesInput {
type: 'multiple';
files: Express.Multer.File[];
}
export type FileInput = SingleFileInput | MultipleFilesInput;
export interface IStorageDriver {
upload(file: Express.Multer.File): Promise<FileUploadResult>;
uploadMultiple(files: Express.Multer.File[]): Promise<FileUploadResult[]>;
generateUploadUrl(fileName: string): Promise<PresignedUrlResult>;
generateViewUrl(fileName: string): Promise<PresignedUrlResult>;
generateMultipleUploadUrls(fileNames: string[]): Promise<PresignedUrlResult[]>;
generateMultipleViewUrls(fileNames: string[]): Promise<PresignedUrlResult[]>;
delete(fileName: string): Promise<boolean>;
deleteMultiple(fileNames: string[]): Promise<boolean[]>;
}
export interface StorageRequest extends Request {
storage?: {
files?: Express.Multer.File[];
uploadResults?: FileUploadResult[];
};
}
export interface ValidationResult {
isValid: boolean;
errors: string[];
}
export interface EnvironmentConfig {
FILE_DRIVER: string;
BUCKET_NAME?: string | undefined;
LOCAL_PATH?: string | undefined;
PRESIGNED_URL_EXPIRY?: string | undefined;
AWS_REGION?: string | undefined;
AWS_ACCESS_KEY?: string | undefined;
AWS_SECRET_KEY?: string | undefined;
GCS_PROJECT_ID?: string | undefined;
GCS_CREDENTIALS?: string | undefined;
OCI_REGION?: string | undefined;
OCI_CREDENTIALS?: string | undefined;
}
//# sourceMappingURL=storage.types.d.ts.map