@lynker-desktop/electron-sdk 0.0.9-alpha.81 → 0.0.9-alpha.85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/index.d.ts +9 -1
- package/common/index.d.ts.map +1 -1
- package/common/index.js.map +1 -1
- package/esm/common/index.d.ts +9 -1
- package/esm/common/index.d.ts.map +1 -1
- package/esm/common/index.js.map +1 -1
- package/esm/main/downloader.d.ts +99 -21
- package/esm/main/downloader.d.ts.map +1 -1
- package/esm/main/downloader.js +438 -87
- package/esm/main/downloader.js.map +1 -1
- package/esm/main/index.d.ts.map +1 -1
- package/esm/main/index.js +46 -11
- package/esm/main/index.js.map +1 -1
- package/main/downloader.d.ts +99 -21
- package/main/downloader.d.ts.map +1 -1
- package/main/downloader.js +438 -87
- package/main/downloader.js.map +1 -1
- package/main/index.d.ts.map +1 -1
- package/main/index.js +46 -11
- package/main/index.js.map +1 -1
- package/package.json +5 -5
package/main/downloader.d.ts
CHANGED
|
@@ -52,11 +52,13 @@ export interface DownloadOptions {
|
|
|
52
52
|
export interface DownloadResult {
|
|
53
53
|
/** 是否成功 */
|
|
54
54
|
success: boolean;
|
|
55
|
-
/**
|
|
55
|
+
/** 下载的文件路径(成功时返回) */
|
|
56
56
|
filePath?: string;
|
|
57
|
-
/**
|
|
57
|
+
/** 错误信息(失败时返回,包含错误类型和详细描述) */
|
|
58
58
|
error?: string;
|
|
59
|
-
/**
|
|
59
|
+
/** 错误类型(失败时返回,用于区分不同类型的错误) */
|
|
60
|
+
errorType?: 'NETWORK' | 'FILE_SYSTEM' | 'PERMISSION' | 'VALIDATION' | 'USER_CANCEL' | 'UNKNOWN';
|
|
61
|
+
/** 文件大小(字节,成功时返回) */
|
|
60
62
|
size?: number;
|
|
61
63
|
}
|
|
62
64
|
/**
|
|
@@ -67,13 +69,25 @@ export declare class Downloader {
|
|
|
67
69
|
private _downloadingUrls;
|
|
68
70
|
/** 上一次选择的保存文件夹路径 */
|
|
69
71
|
private _lastSelectedDir;
|
|
72
|
+
/**
|
|
73
|
+
* 构造函数:初始化下载器并注册 IPC 处理器
|
|
74
|
+
* 注册 `core:downloader` IPC 处理器,用于从渲染进程接收下载请求
|
|
75
|
+
*/
|
|
70
76
|
constructor();
|
|
71
77
|
/**
|
|
72
78
|
* 下载文件
|
|
73
|
-
*
|
|
74
|
-
*
|
|
79
|
+
*
|
|
80
|
+
* 主要流程:
|
|
81
|
+
* 1. 检查是否正在下载(避免重复下载)
|
|
82
|
+
* 2. 确定输出路径(支持弹窗选择或自动解析)
|
|
83
|
+
* 3. 验证并准备输出目录
|
|
84
|
+
* 4. 处理 base64 data URL 或普通 HTTP 下载
|
|
85
|
+
* 5. 使用临时文件下载,完成后重命名为最终文件
|
|
86
|
+
*
|
|
87
|
+
* @param url 要下载的 URL(支持 HTTP/HTTPS 和 base64 data URL)
|
|
88
|
+
* @param options 下载选项(输出路径、重试配置、回调函数等)
|
|
75
89
|
* @param onProgress 进度回调函数(可选,优先级高于 options.onProgress)
|
|
76
|
-
* @returns Promise<DownloadResult>
|
|
90
|
+
* @returns Promise<DownloadResult> 下载结果,包含成功/失败状态、文件路径、错误信息等
|
|
77
91
|
*/
|
|
78
92
|
download(url: string, options?: DownloadOptions, onProgress?: DownloadProgressCallback): Promise<DownloadResult>;
|
|
79
93
|
/**
|
|
@@ -117,10 +131,31 @@ export declare class Downloader {
|
|
|
117
131
|
* @returns 清理后的文件名
|
|
118
132
|
*/
|
|
119
133
|
private _getFileName;
|
|
134
|
+
/**
|
|
135
|
+
* 检查目录是否存在且有访问权限
|
|
136
|
+
*
|
|
137
|
+
* 检查项:
|
|
138
|
+
* 1. 路径是否有效(非空字符串)
|
|
139
|
+
* 2. 目录是否存在
|
|
140
|
+
* 3. 路径是否为目录(而非文件)
|
|
141
|
+
* 4. 是否有读写权限
|
|
142
|
+
*
|
|
143
|
+
* @param dirPath 目录路径
|
|
144
|
+
* @returns 如果目录存在且有读写权限则返回 true,否则返回 false
|
|
145
|
+
*/
|
|
146
|
+
private _isDirectoryAccessible;
|
|
120
147
|
/**
|
|
121
148
|
* 显示保存对话框
|
|
122
|
-
*
|
|
123
|
-
*
|
|
149
|
+
*
|
|
150
|
+
* 功能说明:
|
|
151
|
+
* 1. 确定默认保存目录(优先级:defaultPath > outputDir > _lastSelectedDir > 系统下载目录)
|
|
152
|
+
* 2. 验证并更新 _lastSelectedDir(如果不可访问则重置)
|
|
153
|
+
* 3. 生成唯一文件名(如果文件已存在,添加数字后缀)
|
|
154
|
+
* 4. 显示 Electron 保存对话框
|
|
155
|
+
* 5. 记录用户选择的目录(用于下次默认使用)
|
|
156
|
+
*
|
|
157
|
+
* @param url 下载 URL(用于提取默认文件名)
|
|
158
|
+
* @param options 下载选项(包含 defaultPath、outputDir 等)
|
|
124
159
|
* @param defaultExt 默认扩展名(可选,用于 base64 URL)
|
|
125
160
|
* @returns Promise<string | null> 用户选择的保存路径,如果取消则返回 null
|
|
126
161
|
*/
|
|
@@ -133,45 +168,87 @@ export declare class Downloader {
|
|
|
133
168
|
private _isBase64DataUrl;
|
|
134
169
|
/**
|
|
135
170
|
* 保存 base64 数据到文件
|
|
136
|
-
*
|
|
137
|
-
*
|
|
171
|
+
*
|
|
172
|
+
* 处理流程:
|
|
173
|
+
* 1. 将 base64 字符串解码为 Buffer
|
|
174
|
+
* 2. 将 Buffer 写入目标文件路径
|
|
175
|
+
*
|
|
176
|
+
* @param base64Data base64 编码的数据字符串
|
|
177
|
+
* @param filePath 目标文件路径(完整路径,包含文件名)
|
|
178
|
+
* @throws 如果解码失败或文件写入失败,抛出错误
|
|
138
179
|
*/
|
|
139
180
|
private _saveBase64ToFile;
|
|
140
181
|
/**
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
182
|
+
* 准备输出路径
|
|
183
|
+
*
|
|
184
|
+
* 主要功能:
|
|
185
|
+
* 1. 确保输出目录存在(不存在则创建)
|
|
186
|
+
* 2. 检查文件是否已存在
|
|
187
|
+
* 3. 如果文件已存在且不允许覆盖,返回已存在的文件信息
|
|
188
|
+
*
|
|
189
|
+
* @param outputPath 输出文件路径
|
|
190
|
+
* @param options 下载选项(包含 override 选项)
|
|
191
|
+
* @returns 如果文件已存在且不允许覆盖,返回已存在的文件信息;否则返回 null
|
|
192
|
+
* @throws 如果目录创建失败或权限不足,抛出错误
|
|
145
193
|
*/
|
|
146
194
|
private _prepareOutputPath;
|
|
147
195
|
/**
|
|
148
196
|
* 创建成功结果
|
|
149
197
|
* @param filePath 文件路径
|
|
150
|
-
* @param size
|
|
151
|
-
* @returns DownloadResult
|
|
198
|
+
* @param size 文件大小(字节)
|
|
199
|
+
* @returns DownloadResult 成功结果对象
|
|
152
200
|
*/
|
|
153
201
|
private _createSuccessResult;
|
|
154
202
|
/**
|
|
155
203
|
* 创建错误结果
|
|
156
204
|
* @param error 错误信息
|
|
157
|
-
* @
|
|
205
|
+
* @param errorType 错误类型(可选,用于区分不同类型的错误)
|
|
206
|
+
* @returns DownloadResult 错误结果对象
|
|
158
207
|
*/
|
|
159
208
|
private _createErrorResult;
|
|
209
|
+
/**
|
|
210
|
+
* 从错误对象中提取错误类型和详细信息
|
|
211
|
+
* @param error 错误对象
|
|
212
|
+
* @param url 下载的 URL(用于上下文信息)
|
|
213
|
+
* @returns 包含错误类型和详细错误信息的对象
|
|
214
|
+
*/
|
|
215
|
+
private _parseError;
|
|
160
216
|
/**
|
|
161
217
|
* 处理 base64 data URL 的下载
|
|
218
|
+
*
|
|
219
|
+
* base64 data URL 格式:data:[<mediatype>][;base64],<data>
|
|
220
|
+
* 例如:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...
|
|
221
|
+
*
|
|
222
|
+
* 处理流程:
|
|
223
|
+
* 1. 验证 base64 数据有效性
|
|
224
|
+
* 2. 触发进度回调(模拟 100% 完成)
|
|
225
|
+
* 3. 解码并保存 base64 数据到文件
|
|
226
|
+
* 4. 返回成功结果
|
|
227
|
+
*
|
|
162
228
|
* @param url base64 data URL
|
|
163
|
-
* @param base64Info base64
|
|
229
|
+
* @param base64Info base64 信息(扩展名、MIME 类型、数据)
|
|
164
230
|
* @param outputPath 已确定的输出路径
|
|
165
231
|
* @param options 下载选项
|
|
166
|
-
* @param progressCallback
|
|
232
|
+
* @param progressCallback 进度回调(可选)
|
|
167
233
|
* @returns Promise<DownloadResult> 下载结果
|
|
168
234
|
*/
|
|
169
235
|
private _handleBase64Download;
|
|
170
236
|
/**
|
|
171
237
|
* 生成唯一的文件名(如果文件已存在,添加数字后缀)
|
|
238
|
+
*
|
|
239
|
+
* 命名规则:
|
|
240
|
+
* - 如果文件不存在,返回原始文件名
|
|
241
|
+
* - 如果文件已存在,添加数字后缀:filename(1).ext, filename(2).ext, ...
|
|
242
|
+
* - 最多尝试 MAX_FILENAME_COUNTER 次,防止无限循环
|
|
243
|
+
*
|
|
244
|
+
* 示例:
|
|
245
|
+
* - "test.pdf" -> "test.pdf" (如果不存在)
|
|
246
|
+
* - "test.pdf" -> "test(1).pdf" (如果 test.pdf 已存在)
|
|
247
|
+
* - "test(1).pdf" -> "test(2).pdf" (如果 test(1).pdf 也已存在)
|
|
248
|
+
*
|
|
172
249
|
* @param dir 目录路径
|
|
173
|
-
* @param fileName
|
|
174
|
-
* @returns
|
|
250
|
+
* @param fileName 原始文件名(包含扩展名)
|
|
251
|
+
* @returns 唯一的文件名(如果原文件不存在则返回原文件名,否则返回带数字后缀的文件名)
|
|
175
252
|
*/
|
|
176
253
|
private _generateUniqueFileName;
|
|
177
254
|
/**
|
|
@@ -192,6 +269,7 @@ export declare class Downloader {
|
|
|
192
269
|
* @param options 下载选项
|
|
193
270
|
* @param defaultExt 默认扩展名(可选,用于 base64 URL)
|
|
194
271
|
* @returns 输出文件路径
|
|
272
|
+
* @throws 如果无法解析有效路径,抛出错误
|
|
195
273
|
*/
|
|
196
274
|
private _resolveOutputPath;
|
|
197
275
|
}
|
package/main/downloader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"downloader.d.ts","sourceRoot":"","sources":["../src/main/downloader.ts"],"names":[],"mappings":"AA4CA;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,QAAQ,EAAE;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf,KAAK,IAAI,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sBAAsB;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2BAA2B;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sBAAsB;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,KAAK,CAAC,EAAE;QACN,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,mBAAmB;IACnB,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,mBAAmB;IACnB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,mBAAmB;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,gBAAgB;IAChB,kBAAkB,CAAC,EAAE;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,
|
|
1
|
+
{"version":3,"file":"downloader.d.ts","sourceRoot":"","sources":["../src/main/downloader.ts"],"names":[],"mappings":"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"}
|