@yiero/gmlib
Version:
GM Lib for Tampermonkey/ScriptCat
51 lines (50 loc) • 1.71 kB
TypeScript
/**
* 下载请求配置类型
*
* 基于 GM_download API 的配置参数,提供进度监控和错误处理回调
*/
export type DownloadRequest = Omit<GMTypes.DownloadDetails<string | Blob | File>, 'url' | 'name' | 'onerror' | 'onprogress'> & {
/** 下载失败时的回调函数 */
onerror?: (error: GMTypes.DownloadError) => void;
/** 下载进度变化的回调函数 */
onprogress?: (response: {
done: number;
lengthComputable: boolean;
loaded: number;
position?: number;
total: number;
totalSize: number;
}, abortHandle: GMTypes.AbortHandle<boolean>) => void;
};
/**
* 下载 URL 指向的文件
*
* 封装 GM_download API,提供 Promise 化的文件下载能力,
* 支持进度监控、错误处理和超时控制。
*
* @param url 文件下载地址
* @param filename 保存的文件名
* @param details 下载配置项(可选)
* @returns Promise<boolean> 下载成功时解析为 true
*
* @warn 需要授权函数 `GM_download`
*
* @example
* ```ts
* // 基本下载
* await gmDownload('https://example.com/image.png', 'image.png');
*
* // 带进度监控的下载
* await gmDownload('https://example.com/file.zip', 'file.zip', {
* onprogress: (progress, abort) => {
* console.log(`进度: ${progress.loaded}/${progress.total}`);
* }
* });
* ```
*/
declare const gmDownload: {
(url: string, filename: string, details?: DownloadRequest): Promise<boolean>;
blob(blob: Blob | File, filename: string, details?: DownloadRequest): Promise<boolean>;
text(content: string, filename: string, mimeType?: string, details?: DownloadRequest): Promise<boolean>;
};
export { gmDownload };