@nu-art/file-upload
Version:
File Uploader - Express & Typescript based backend framework
44 lines (43 loc) • 2.11 kB
TypeScript
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>;
}