UNPKG

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
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