@intuitionrobotics/file-upload
Version:
File Uploader - Express & Typescript based backend framework
49 lines (48 loc) • 1.9 kB
TypeScript
import { Module } from "@intuitionrobotics/ts-common";
import { BaseHttpModule_Class, BaseHttpRequest } from "@intuitionrobotics/thunderstorm";
import { BaseUploaderFile, DB_Temp_File, Request_Uploader, TempSecureUrl } from "../../shared/types";
export declare enum FileStatus {
ObtainingUrl = "ObtainingUrl",
UrlObtained = "UrlObtained",
UploadingFile = "UploadingFile",
PostProcessing = "PostProcessing",
Completed = "Completed",
Error = "Error"
}
export type FileInfo = {
status: FileStatus;
messageStatus?: string;
progress?: number;
name: string;
request?: BaseHttpRequest<any>;
file?: any;
fileName?: string;
tempDoc?: DB_Temp_File;
statusCallBack: (feId: string, status: FileStatus) => void;
};
export type FilesToUpload = Request_Uploader & {
file: any;
onFileStatusChanged: (feId: string, status: FileStatus) => void;
};
type Config = {
uploadQueueParallelCount?: number;
};
export declare abstract class BaseUploaderModule_Class<HttpModule extends BaseHttpModule_Class, CustomConfig extends object = {}> extends Module<Config & CustomConfig> {
protected files: {
[id: string]: FileInfo;
};
private readonly uploadQueue;
private httpModule;
protected constructor(httpModule: HttpModule, moduleName: string);
init(): void;
protected abstract subscribeToPush(toSubscribe: TempSecureUrl[]): 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>(id: string, key: K, value: FileInfo[K]): void;
uploadImpl(files: FilesToUpload[], _bucketName?: string, _pathPrefix?: string): BaseUploaderFile[];
private getUrlEndpoint;
private getUrlEndpointWithBucketName;
private uploadFiles;
private uploadFile;
}
export {};