UNPKG

@nu-art/file-upload

Version:

File Uploader - Express & Typescript based backend framework

44 lines (43 loc) 2.11 kB
import { Dispatcher, Module } from '@nu-art/ts-common'; import { ApiDef, ApiDefCaller, BaseHttpRequest, TypedApi } from '@nu-art/thunderstorm'; import { ApiStruct_AssetUploader, DB_Asset, FileStatus, OnFileStatusChanged, TempSignedUrl, UI_Asset } from '../../shared'; import { OnPushMessageReceived } from '@nu-art/push-pub-sub/frontend'; import { PushMessage_Payload } from '@nu-art/push-pub-sub'; import { PushMessage_FileUploaded } from '../assets/messages'; export type FilesToUpload = UI_Asset & { file: any; }; export type FileInfo = { status: FileStatus; messageStatus?: string; progress?: number; name: string; request?: BaseHttpRequest<any>; file?: any; asset?: DB_Asset; }; export type UploaderConfig = { manualProcessTriggering: boolean; uploadQueueParallelCount?: number; }; export declare abstract class ModuleBase_AssetUploader<Config extends UploaderConfig = UploaderConfig> extends Module<Config> implements OnPushMessageReceived<PushMessage_FileUploaded> { protected vv1: ApiDefCaller<ApiStruct_AssetUploader>['vv1']; protected files: { [id: string]: FileInfo; }; private readonly uploadQueue; protected readonly dispatch_fileStatusChange: Dispatcher<OnFileStatusChanged, "__onFileStatusChanged", [id: string], void>; protected constructor(); __onMessageReceived(notification: PushMessage_Payload<PushMessage_FileUploaded>): void; init(): void; protected abstract subscribeToPush(toSubscribe: TempSignedUrl[]): Promise<void>; getFileInfo<K extends keyof FileInfo>(id: string, key: K): FileInfo[K] | undefined; getFullFileInfo(id?: string): FileInfo | undefined; protected setFileInfo<K extends keyof FileInfo>(feId: string, values: Partial<FileInfo>): void; protected dispatchFileStatusChange(id: string): void; uploadImpl(files: FilesToUpload[]): UI_Asset[]; private uploadFiles; private uploadFile; processAssetManually: (feId?: string) => void; protected abstract createRequest<API extends TypedApi<any, any, any, any>>(uploadFile: ApiDef<API>): BaseHttpRequest<API>; }