import { RequestOptions } from 'node:https'; import type { AnyObject } from '../../types'; export interface DownloadOptions { url: string; /** 文件保存路径 */ filepath?: string; params?: AnyObject; requestOptions?: RequestOptions; /** 文件已存在时是否仍强制继续下载。默认 flase */ force?: boolean; /** 大文件分段下载时,分段的大小。单位 kB,应不小于 10 */ segmentSize?: number; /** 大文件分段下载时,并行任务数。默认为 cpu 核数 */ paralelism?: number; /** 下载进度回调。若返回 false 则取消下载 */ onProgress?: boolean | ((info: { size: number; downloaded: number; percent: number; /** bytes/s */ speed: number; errmsg: string; }) => void | boolean); } export interface DownloadResult { /** 文件总大小 */ size: number; /** 文件下载保存的路径 */ filepath: string; /** 文件是否已存在(没有从网络下载) */ isExist: boolean; /** 下载失败原因 */ errmsg?: string; } /** * 文件下载。支持大文件并发分段下载 * * @example * ```ts * download({ * url: 'https://vscode.download.prss.microsoft.com/dbazure/download/stable/19e0f9e681ecb8e5c09d8784acaa601316ca4571/VSCodeUserSetup-x64-1.100.0.exe', * onProgress(d) { * NLogger.getLogger().logInline(`${d.size} ${d.downloaded} ${d.percent.toFixed(2)}% ${(d.speed / 1024 / 1024).toFixed(2)}MB/S`); * }, * }).then(d => console.log(d)); * ``` */ export declare function download(options: DownloadOptions): Promise;