naive-upload
Version:
<p align="left"> <a href="https://www.npmjs.org/package/naive-upload"> <img src="https://img.shields.io/npm/v/naive-upload.svg"> </a> <a href="https://bundlephobia.com/package/naive-upload@latest"> <img src="https://img.shields.io/bundl
516 lines (515 loc) • 13.3 kB
TypeScript
import { IApiService } from "../Core/IApiService";
import { IConfig } from "../Model/IConfig";
import Settings from "../Model/Settings";
import RawFile from "../Model/RawFile";
import SelectedFile from "../Model/SelectedFile";
import { IUserFileInfo } from "../Model/IUserFileInfo";
import { IOpenApi } from "../Extention/IOpenApi";
import { Layout } from "../Model/Layout";
/**
* 初级上传工具
*
* @author LCTR
* @date 2022-09-22
*/
export default class NaiveUpload {
/**
*
* @param settings 设置
* @param apiService 接口服务
*/
constructor(settings: Settings, apiService: IApiService);
/**
* 用于设置数据对象的双向绑定
*/
private readonly reactive;
/**
* 设置
*/
private readonly settings;
/**
* 接口服务
*/
private readonly apiService;
/**
* 文件上传配置
*/
private config?;
/**
* 源文件集合
*/
private readonly rawFileList;
/**
* 选择的文件集合
*/
private readonly selectedFileList;
/**
* 选择的文件排序值映射表
*
* <p>key:排序值,value:selectedFileList中的索引</p>
*/
private readonly selectedFileSortMap;
/**
* 校验文件队列
* 数据项为this.SelectedFileList的索引
*/
private checkQueue;
/**
* 当前正在校验中的文件数量
*/
private checkHandlerCount;
/**
* 上传文件队列
* 数据项为this.SelectedFileList的索引
*/
private uploadQueue;
/**
* 暂停文件
* key:数据项为this.SelectedFileList的索引,value:{step:0:校验步骤、1:上传步骤,helper:实例,continue:是否已恢复}
*/
private pausedQueue;
/**
* 当前正在上传中的文件数量
*/
private uploadHandlerCount;
/**
* 追加文件后返回的文件令牌和selectedFileList索引映射表
*/
private tokenWithIndex;
/**
* 布局变更后执行
*
* @param layout 布局
*/
private layoutChanged;
/**
* 配置变更后执行
*
* @param config 配置
*/
private configChanged;
/**
* 选择的文件集合变更后执行
*
* @param files 当前的文件集合(已排序)
*/
private selectedFileListChanged;
/**
* 文件排序值映射表变更后执行
*
* @param sortMap 当前的文件排序值映射表
*/
private selectedFileSortMapChanged;
/**
* 用户文件信息集合变更后执行
*
* @param userFileInfoList 当前的用户文件信息集合(已排序)
*/
private userFileInfoListChanged;
/**
* 提示异常
*
* @param error 异常
*/
private alertError;
/**
* 文件校验前执行
*
* @param file 文件
* @returns 是否保留该文件
*/
private beforeCheck?;
/**
* 文件校验结束后执行
*
* @param rawFile 文件
*/
private afterCheck?;
/**
* 文件校验全部校验结束后执行
*
* @param rawFileList 文件集合
*/
private afterCheckAll?;
/**
* 文件上传后执行
*
* @param rawFile 文件
*/
private afterUpload?;
/**
* 所有文件上传后执行
* <p>此方法将会异步执行</p>
*
* @param rawFileList 文件集合
*/
private afterUploadAll?;
/**
* 发生异常后执行
* <p>此方法将会异步执行</p>
*
* @param error 异常
*/
private handlerError?;
/**
* 更新文件上传配置
*/
private updateConfig;
/**
* 监听配置的变化
*/
private watchSettings;
/**
* 文件排序值映射表变更
*/
private selectedFileSortMapChangedTrigger;
/**
* 追加文件
*
* @param file
*/
private appendFile;
/**
* 追加以前上传过的文件
*
* @param id
*/
private appendUploadedFile;
/**
* 获取文件类型
*
* @param selectedFile
*/
private getFileType;
/**
* 检查图像
*
* @param {any} selectedFile
*/
private checkImage;
/**
* 获取原始文件
*
* @param selectedFile
*/
getRawFile(this: NaiveUpload, selectedFile: SelectedFile): RawFile;
/**
* 文件切片
*
* @param selectedFile
*/
private getChunks;
/**
* 处理文件
*
* @param selectedFileIndex 索引
*/
private handleFile;
/**
* 推送至校验队列
*
* @param selectedFileIndex
*/
private pushToCheckQueue;
/**
* 推送至上传队列
*
* @param selectedFileIndex
*/
private pushToUploadQueue;
/**
* 开始校验MD5
*/
private checkMD5;
/**
* 开始上传已经校验过了的文件
*/
private upload;
/**
* 计算进度
*
* @param selectedFile 文件
* @param progress 进度
*/
private static calcPercent;
/**
* 抛出异常
*
* @param error
*/
private throwError;
/**
* 异常
*
* @param selectedFileIndex
* @param message 异常信息
* @param retry 是否允许重试
* @param done 回调
*/
private error;
/**
* 校验时异常
*
* @param selectedFileIndex
* @param message 说明
* @param retry 是否允许重试
* @param e 异常
*/
private checkError;
/**
* 上传时异常
*
* @param selectedFileIndex
* @param message 说明
* @param retry 是否允许重试
* @param e 异常
*/
private uploadError;
/**
* 文件重命名
*
* @param selectedFile
* @param rename 文件重命名
*/
private renameByIndex;
/**
* 恢复处理
*
* @param index
*/
private continueByIndex;
/**
* 获取实例
*
* @param settings 设置
* @param apiService 接口服务
*/
static getInstance(settings: Settings, apiService: IApiService): Promise<NaiveUpload>;
/**
* 获取设置
*/
getSettings(this: NaiveUpload): Settings;
/**
* 获取文件上传配置
*/
getConfig(this: NaiveUpload): IConfig;
/**
* 校验队列中的文件
*/
checkNow(this: NaiveUpload): void;
/**
* 上传队列中的文件
*/
uploadNow(this: NaiveUpload): void;
/**
* 暂停
*
* @param token 追加文件后返回的文件令牌,未设置此参数时暂停全部
*/
pause(this: NaiveUpload, token?: string): void;
/**
* 恢复
*
* @param token 追加文件后返回的文件令牌,未设置此参数时恢复全部
*/
continue(this: NaiveUpload, token?: string): void;
/**
* 删除
*
* @param token 追加文件后返回的文件令牌
*/
remove(this: NaiveUpload, token: string): void;
/**
* 清空
*/
clean(this: NaiveUpload): void;
/**
* 重置
*/
reset(this: NaiveUpload): void;
/**
* 获取开发的接口
*/
getOpenApi(this: NaiveUpload): IOpenApi;
/**
* 文件重命名
*
* @param token 追加文件后返回的文件令牌
* @param rename 文件重命名
*/
rename(this: NaiveUpload, token: string, rename: string): Promise<void>;
/**
* 获取下载地址
*
* @param selectedFile 选择的文件
* @return 下载地址
*/
getDownloadUrl(this: NaiveUpload, selectedFile: SelectedFile): string | null;
/**
* 选择的文件列表是否有有效的数据
*/
anyFile(this: NaiveUpload): boolean;
/**
* 获取选择文件时要显示的警告信息
*/
getSelectFileAlarmInfo(this: NaiveUpload): string;
/**
* 获取文件选择框类名
*/
getSelectCLass(this: NaiveUpload): string;
/**
* 获取全部允许的类型
*/
getAllowedTypes(this: NaiveUpload): string;
/**
* 是否已达上限
*
* @return true: 已达上限
*/
limited(this: NaiveUpload): boolean;
/**
* 当前文件总大小
*
* @return size: 字节数
*/
totalSize(this: NaiveUpload): number;
/**
* 追加文件
*
* @param file 文件
*/
append(this: NaiveUpload, file: File): void;
/**
* 追加以前上传过的文件
*
* @param id 标识
*/
appendById(this: NaiveUpload, id: string): Promise<void>;
/**
* 更改排序值
*
* @param currentIndex 当前排序值
* @param targetIndex 目标排序值
*/
changeSort(this: NaiveUpload, currentIndex: number, targetIndex: number): void;
/**
* 注册布局变更后执行的函数
*
* @param even
*/
registerLayoutChanged(this: NaiveUpload, even: (layout: Layout) => void): void;
/**
* 注册配置变更后执行的函数
*
* @param even
*/
registerConfigChanged(this: NaiveUpload, even: (config: IConfig) => void): void;
/**
* 注册选择的文件排序值映射表变更后执行的函数
*
* @param even
*/
registerSelectedFileListChanged(this: NaiveUpload, even: (files: SelectedFile[]) => void): void;
/**
* 注册选择的文件集合变更后执行的函数
*
* @param even
*/
registerSelectedFileSortMapChanged(this: NaiveUpload, even: (sortMap: Map<number, number>) => void): void;
/**
* 注册用户文件信息集合变更后执行的函数
*
* @param even
*/
registerUserFileInfoListChanged(this: NaiveUpload, even: (userFileInfoList: IUserFileInfo[]) => void): void;
/**
* 注册提示异常的函数
*
* @param even
*/
registerAlertError(this: NaiveUpload, even: (error: Error) => void): void;
/**
* 设置文件校验前执行的函数
*
* @param even
*/
setupBeforeCheck(this: NaiveUpload, even: (file: File) => Promise<boolean>): void;
/**
* 设置文件校验结束后执行的函数
*
* @param even
*/
setupAfterCheck(this: NaiveUpload, even: (rawFile: RawFile) => Promise<void>): void;
/**
* 设置文件校验全部校验结束后执行的函数
*
* @param even
*/
setupAfterCheckAll(this: NaiveUpload, even: (rawFileList: RawFile[]) => Promise<void>): void;
/**
* 设置文件上传后执行的函数
*
* @param even
*/
setupAfterUpload(this: NaiveUpload, even: (rawFile: RawFile) => Promise<void>): void;
/**
* 设置所有文件上传后执行的函数
*
* @param even
*/
setupAfterUploadAll(this: NaiveUpload, even: (rawFileList: RawFile[]) => Promise<void>): void;
/**
* 设置发生异常后执行的函数
*
* @param even
*/
setupHandlerError(this: NaiveUpload, even: (error: Error) => Promise<void>): void;
/**
* 获取当前选择的文件数量
*/
getSelectedFileCount(this: NaiveUpload): number;
/**
* 获取当前选择的文件排序值映射表
*/
getSelectedFileSortMap(this: NaiveUpload): Map<number, number>;
/**
* 获取当前所有选择的文件集合
*
* @param sort 是否需要排序
*/
getSelectedFileList(this: NaiveUpload, sort: boolean): SelectedFile[];
/**
* 获取当前所有文件集合
*
* @param sort 是否需要排序
*/
getRawFileList(this: NaiveUpload, sort: boolean): RawFile[];
/**
* 获取当前所有的用户文件信息集合
*
* @param sort 是否需要排序
*/
getUserFileInfoList(this: NaiveUpload, sort: boolean): IUserFileInfo[];
/**
* 获取选择的文件
*
* @param sortKey 排序值
*/
getSelectedFile(this: NaiveUpload, sortKey: number): SelectedFile;
/**
* 获取渐变色样式
* @param {string} type 类型 conic锥形渐变,linear线性渐变
* @param {string} color 颜色
* @param {number} value1 值1
* @param {number} value2 值2
*/
getGradientStyle(type: string, color: string, value1: number, value2: number): string;
/**
* 获取渐变色样式
* @param {string} type 类型 conic锥形渐变,linear线性渐变
* @param {string} color 颜色
* @param {number} value1 值1
* @param {number} value2 值2
*/
getGradientStyleObject(type: string, color: string, value1: number, value2: number): Array<Record<string, string>>;
}