@nu-art/file-upload
Version:
File Uploader - Express & Typescript based backend framework
53 lines (52 loc) • 2.7 kB
TypeScript
import { TypedMap } from '@nu-art/ts-common';
import { FileWrapper, FirestoreTransaction } from '@nu-art/firebase/backend/index';
import { CleanupDetails, DBApiConfigV3, ModuleBE_BaseDB, OnCleanupSchedulerAct } from '@nu-art/thunderstorm/backend/index';
import { Clause_Where } from '@nu-art/firebase';
import { OnAssetUploaded } from './ModuleBE_BucketListener.js';
import { DB_Asset, DBProto_Assets, TempSignedUrl, UI_Asset } from '../../shared/index.js';
import { CollectionActionType, PostWriteProcessingData } from '@nu-art/firebase/backend/firestore-v3/FirestoreCollectionV3';
import { firestore } from 'firebase-admin';
import { FileMetadata } from '@google-cloud/storage';
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: 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").FileTypeResult>;
export type FileValidator = (file: FileWrapper, doc: DB_Asset) => Promise<FileTypeResult | undefined>;
export declare const fileSizeValidator: (file: FileWrapper, metadata: FileMetadata, 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 {};