UNPKG

miniprogram-downloader

Version:
147 lines 6.01 kB
import { BaseConfiguration, ExtraConfiguration, LifeCycle, SuccessParam } from 'miniprogram-network-life-cycle'; import { GeneralCallbackResult, ParamsType } from 'miniprogram-network-utils'; /** * 默认配置信息 */ export declare type DownloadInit<T extends {} = {}, TReturn = any> = BaseConfiguration<FullDownloadOption<T, TReturn>, T & wx.DownloadFileOption, TReturn>; interface BaseDownloadOption { /** * 下载地址 * 如果URL以`http://`或者`https://`开头将忽略 baseURL */ url: NonNullable<string>; /** * 本地路径可缓存 */ filePath?: string; } /** * 全部配置信息 */ export interface FullDownloadOption<T extends {} = {}, TReturn = any> extends DownloadInit<T, TReturn>, ExtraConfiguration, BaseDownloadOption { /** * 下载进度回调函数 */ onProgressUpdate?: wx.DownloadTaskOnProgressUpdateCallback; } /** * 下载的额外配置 * @template TParams 路径参数(如`/items/{id}`或者`/{0}/{1}`)的格式类型,默认 任意object或数组 * @template TExt 额外的扩展属性 */ declare type DownloadConfig<TParams = ParamsType, TExt extends {} = {}, TReturn = any> = Partial<TExt> & Partial<DownloadInit<TExt, TReturn> & ExtraConfiguration> & { /** * 路径参数 * URL Path Params * the path parameters to be replace in path * Must be a plain `object` or `array` * @example * url = "/{ID}/status" * param = {ID: 12345} * request url will be /1234/status */ params?: TParams; /** * 下载进度回调函数 */ onProgressUpdate?: wx.DownloadTaskOnProgressUpdateCallback; }; /** * 下载的全部配置项 * @template TData patch data参数格式类型,默认 any * @template TParams 路径参数(如`/items/{id}`或者`/{0}/{1}`)的格式类型,默认 任意object或数组 */ export declare type DownloadOption<TParams = ParamsType, TExt extends {} = {}, TReturn = any> = DownloadConfig<TParams, TExt, TReturn> & BaseDownloadOption; /** * 下载封装 * @template T 扩展参数类型 */ export declare class Downloader<T extends {} = {}> extends LifeCycle<T & wx.DownloadFileOption, wx.DownloadTask, DownloadInit<T>, FullDownloadOption<T>> { /** * 新建 Http实列 * @param config 全局默认配置 * @param downloader 下载处理方法,默认使用下载队列处理 * @param listeners 下载事件监听回调 */ constructor(config?: DownloadInit<T>, downloader?: (o: T & wx.DownloadFileOption) => wx.DownloadTask, listeners?: Downloader<T>['Listeners']); /** * 使用自定义参数下载 * @param options - 完整下载参数 * @template TReturn Promise 返回的格式类型,默认返回微信原始返回数据格式 * @template TParams 路径参数(如`/items/{id}`或者`/{0}/{1}`)的格式类型,默认 任意object或数组 */ download<TReturn = SuccessParam<wx.DownloadFileOption>, TParams = ParamsType>(options: DownloadOption<TParams, T, TReturn>): Promise<TReturn>; /** * 快速下载 * @param url 下载地址 * @param filePath 本地文件路径 * @param config 其他参数 * @template TReturn Promise 返回的格式类型,默认返回微信原始返回数据格式 * @template TParams 路径参数(如`/items/{id}`或者`/{0}/{1}`)的格式类型,默认 任意object或数组 */ download<TReturn = SuccessParam<wx.DownloadFileOption>, TParams = ParamsType>(url: string, filePath?: string, config?: DownloadConfig<TParams, T, TReturn>): Promise<TReturn>; } export declare namespace wx { function downloadFile(options: DownloadFileOption): DownloadTask; type DownloadTaskOnHeadersReceivedCallback = (result?: { header: object; }) => void; type DownloadTaskOnProgressUpdateCallback = (result: { /** 下载进度百分比 */ progress: number; /** 预期需要下载的数据总长度,单位 Bytes */ totalBytesExpectedToWrite: number; /** 已经下载的数据长度,单位 Bytes */ totalBytesWritten: number; }) => void; interface DownloadFileOption { /** 下载资源的 url */ url: string; /** 指定文件下载后存储的路径 * * 最低基础库: `1.8.0` */ filePath?: string; /** HTTP 请求的 Header,Header 中不能设置 Referer */ header?: object; /** 接口调用结束的回调函数(调用成功、失败都会执行) */ complete?(res: { errMsg: string; }): void; /** 接口调用失败的回调函数 */ fail?(res: { errMsg: string; }): void; /** 接口调用成功的回调函数 */ success?(result: DownloaderReponse): void; } interface DownloadTask { /** * * 中断下载任务 * * 最低基础库: `1.4.0` */ abort(): void; onHeadersReceived( /** HTTP Response Header 事件的回调函数 */ callback: DownloadTaskOnHeadersReceivedCallback): void; /** [DownloadTask.onProgressUpdate(function callback)](DownloadTask.onProgressUpdate.md) * * 监听下载进度变化事件 * * 最低基础库: `1.4.0` */ onProgressUpdate( /** 下载进度变化事件的回调函数 */ callback: DownloadTaskOnProgressUpdateCallback): void; } } export interface DownloaderReponse extends GeneralCallbackResult { /** 开发者服务器返回的 HTTP 状态码 */ statusCode: number; /** 临时文件路径。如果没传入 filePath 指定文件存储路径,则下载后的文件会存储到一个临时文件 */ tempFilePath: string; } export {}; //# sourceMappingURL=downloader.d.ts.map