UNPKG

@nu-art/file-upload

Version:

File Uploader - Express & Typescript based backend framework

56 lines (55 loc) 2.76 kB
import { TypedMap } from '@nu-art/ts-common'; import { FileWrapper, FirebaseType_Metadata, FirestoreTransaction } from '@nu-art/firebase/backend'; import { CleanupDetails, DBApiConfigV3, ModuleBE_BaseDB, OnCleanupSchedulerAct } from '@nu-art/thunderstorm/backend'; import { FileExtension, MimeType } from 'file-type'; import { Clause_Where } from '@nu-art/firebase'; import { OnAssetUploaded } from './ModuleBE_BucketListener'; import { DB_Asset, DBProto_Assets, TempSignedUrl, UI_Asset } from '../../shared'; import { CollectionActionType, PostWriteProcessingData } from '@nu-art/firebase/backend/firestore-v3/FirestoreCollectionV3'; import { firestore } from 'firebase-admin'; import Transaction = firestore.Transaction; type MyConfig = DBApiConfigV3<DBProto_Assets> & { authKey: string; bucketName?: string; storagePath: string; pathRegexp: string; }; export type AssetContent = { asset: DB_Asset; content: Buffer; }; export type FileTypeResult = { ext: FileExtension; mime: MimeType; } | { ext: string; mime: string; }; export type FileTypeValidation = { fileType?: string[]; minSize?: number; maxSize?: number; validator?: FileValidator; }; export declare const DefaultMimetypeValidator: (file: FileWrapper, doc: DB_Asset) => Promise<import("file-type/core").FileTypeResult>; export type FileValidator = (file: FileWrapper, doc: DB_Asset) => Promise<FileTypeResult | undefined>; export declare const fileSizeValidator: (file: FileWrapper, metadata: FirebaseType_Metadata, minSizeInBytes?: number, maxSizeInBytes?: number) => Promise<boolean>; export declare class ModuleBE_AssetsDB_Class extends ModuleBE_BaseDB<DBProto_Assets, MyConfig> implements OnCleanupSchedulerAct, OnAssetUploaded { constructor(); mimeTypeValidator: TypedMap<FileValidator>; fileValidator: TypedMap<FileTypeValidation>; protected postWriteProcessing(data: PostWriteProcessingData<DBProto_Assets>, actionType: CollectionActionType, transaction?: Transaction): Promise<void>; init(): void; getAssetsContent(assetIds: string[]): Promise<AssetContent[]>; registerTypeValidator(mimeType: string, validator: (file: FileWrapper, doc: DB_Asset) => Promise<void>): void; queryUnique(where: Clause_Where<DB_Asset>, transaction?: FirestoreTransaction): Promise<DB_Asset>; register: (key: string, validationConfig: FileTypeValidation) => void; __onCleanupSchedulerAct(): CleanupDetails; private cleanup; getUrl: (files: UI_Asset[]) => Promise<TempSignedUrl[]>; processAssetManually: (feId?: string) => Promise<void[]>; __processAsset: (filePath?: string) => Promise<void>; private notifyFrontend; } export declare const ModuleBE_AssetsDB: ModuleBE_AssetsDB_Class; export {};