@lynker-desktop/electron-sdk 0.0.9-alpha.6 → 0.0.9-alpha.61

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.
Files changed (68) hide show
  1. package/README.md +160 -1
  2. package/common/index.d.ts +96 -0
  3. package/common/index.d.ts.map +1 -1
  4. package/common/index.js.map +1 -1
  5. package/esm/common/index.d.ts +96 -0
  6. package/esm/common/index.d.ts.map +1 -1
  7. package/esm/common/index.js.map +1 -1
  8. package/esm/main/clipboard.d.ts +32 -0
  9. package/esm/main/clipboard.d.ts.map +1 -0
  10. package/esm/main/clipboard.js +963 -0
  11. package/esm/main/clipboard.js.map +1 -0
  12. package/esm/main/downloader.d.ts +198 -0
  13. package/esm/main/downloader.d.ts.map +1 -0
  14. package/esm/main/downloader.js +582 -0
  15. package/esm/main/downloader.js.map +1 -0
  16. package/esm/main/index.d.ts +18 -67
  17. package/esm/main/index.d.ts.map +1 -1
  18. package/esm/main/index.js +48 -202
  19. package/esm/main/index.js.map +1 -1
  20. package/esm/main/resource-cache.d.ts +215 -0
  21. package/esm/main/resource-cache.d.ts.map +1 -0
  22. package/esm/main/resource-cache.js +793 -0
  23. package/esm/main/resource-cache.js.map +1 -0
  24. package/esm/main/store.d.ts +8 -0
  25. package/esm/main/store.d.ts.map +1 -0
  26. package/esm/main/store.js +53 -0
  27. package/esm/main/store.js.map +1 -0
  28. package/esm/main/video-downloader.d.ts +39 -0
  29. package/esm/main/video-downloader.d.ts.map +1 -0
  30. package/esm/main/video-downloader.js +505 -0
  31. package/esm/main/video-downloader.js.map +1 -0
  32. package/esm/preload/index.js +19 -1
  33. package/esm/preload/index.js.map +1 -1
  34. package/esm/renderer/index.d.ts +8 -0
  35. package/esm/renderer/index.d.ts.map +1 -1
  36. package/esm/renderer/index.js +25 -0
  37. package/esm/renderer/index.js.map +1 -1
  38. package/main/clipboard.d.ts +32 -0
  39. package/main/clipboard.d.ts.map +1 -0
  40. package/main/clipboard.js +963 -0
  41. package/main/clipboard.js.map +1 -0
  42. package/main/downloader.d.ts +198 -0
  43. package/main/downloader.d.ts.map +1 -0
  44. package/main/downloader.js +582 -0
  45. package/main/downloader.js.map +1 -0
  46. package/main/index.d.ts +18 -67
  47. package/main/index.d.ts.map +1 -1
  48. package/main/index.js +51 -205
  49. package/main/index.js.map +1 -1
  50. package/main/resource-cache.d.ts +215 -0
  51. package/main/resource-cache.d.ts.map +1 -0
  52. package/main/resource-cache.js +793 -0
  53. package/main/resource-cache.js.map +1 -0
  54. package/main/store.d.ts +8 -0
  55. package/main/store.d.ts.map +1 -0
  56. package/main/store.js +53 -0
  57. package/main/store.js.map +1 -0
  58. package/main/video-downloader.d.ts +39 -0
  59. package/main/video-downloader.d.ts.map +1 -0
  60. package/main/video-downloader.js +510 -0
  61. package/main/video-downloader.js.map +1 -0
  62. package/package.json +9 -5
  63. package/preload/index.js +19 -1
  64. package/preload/index.js.map +1 -1
  65. package/renderer/index.d.ts +8 -0
  66. package/renderer/index.d.ts.map +1 -1
  67. package/renderer/index.js +25 -0
  68. package/renderer/index.js.map +1 -1
@@ -0,0 +1,215 @@
1
+ /**
2
+ * 资源缓存配置项
3
+ */
4
+ export interface ResourceCacheOptions {
5
+ /** 缓存目录,必填 */
6
+ cacheDir: string;
7
+ /** 缓存有效期(毫秒),默认24小时 */
8
+ cacheTTL?: number;
9
+ /** 匹配需要缓存的资源,支持正则或函数 */
10
+ match?: RegExp | ((url: string) => boolean);
11
+ /** 允许缓存的资源来源,支持null/数组/函数 */
12
+ allowedOrigins?: null | string[] | ((url: string) => boolean);
13
+ }
14
+ /**
15
+ * 下载进度回调函数类型
16
+ */
17
+ export type DownloadProgressCallback = (progress: {
18
+ url: string;
19
+ downloaded: number;
20
+ total: number;
21
+ percentage: number;
22
+ speed: number;
23
+ }) => void;
24
+ /**
25
+ * 缓存进度回调函数类型
26
+ */
27
+ export type CacheProgressCallback = (progress: {
28
+ current: number;
29
+ total: number;
30
+ url: string;
31
+ success: boolean;
32
+ result?: {
33
+ filePath?: string;
34
+ hostPath?: string;
35
+ mimeType?: string;
36
+ size?: number;
37
+ error?: string;
38
+ };
39
+ percentage: number;
40
+ downloadProgress?: {
41
+ downloaded: number;
42
+ total: number;
43
+ percentage: number;
44
+ speed: number;
45
+ };
46
+ }) => void;
47
+ /**
48
+ * 资源缓存类:拦截并缓存静态资源,提升加载性能
49
+ */
50
+ export declare class ResourceCache {
51
+ static scheme: string;
52
+ private cacheHost;
53
+ /** Electron session 实例 */
54
+ private session;
55
+ /** 缓存配置 */
56
+ private options;
57
+ /** 缓存的匹配函数(避免重复创建) */
58
+ private _cachedMatchFunction?;
59
+ /** 缓存的来源校验函数(避免重复创建) */
60
+ private _cachedOriginFunction?;
61
+ /** 正在下载的 URL 和对应的下载信息(避免重复下载,允许多个请求等待同一个下载任务) */
62
+ private _downloadingUrls;
63
+ /**
64
+ * 构造函数
65
+ * @param session Electron session
66
+ * @param options 缓存配置
67
+ */
68
+ constructor(session: Electron.Session, options: ResourceCacheOptions);
69
+ /**
70
+ * 获取缓存统计信息(异步版本,性能更好)
71
+ */
72
+ getCacheStats(): Promise<{
73
+ size: number;
74
+ totalSize: number;
75
+ }>;
76
+ /**
77
+ * 获取资源匹配函数(带缓存,避免重复创建)
78
+ */
79
+ private _getMatchFunction;
80
+ /**
81
+ * 获取来源校验函数(带缓存,避免重复创建)
82
+ */
83
+ private _getOriginAllowFunction;
84
+ /**
85
+ * 获取缓存文件路径
86
+ * @param url 资源URL
87
+ * @param customExt 自定义文件扩展名(可选,用于 base64 URL)
88
+ */
89
+ getCachedPath(url: string, customExt?: string): {
90
+ filePath: string;
91
+ hostPath: string;
92
+ };
93
+ /**
94
+ * 判断缓存是否有效(同步版本,用于拦截器)
95
+ * @param filePath 缓存文件路径
96
+ */
97
+ isCacheValid(filePath: string): boolean;
98
+ /**
99
+ * 判断缓存是否有效(异步版本,性能更好)
100
+ * @param filePath 缓存文件路径
101
+ */
102
+ isCacheValidAsync(filePath: string): Promise<boolean>;
103
+ /**
104
+ * 下载资源到本地缓存(异步版本,返回 Promise)
105
+ * @param url 资源URL
106
+ * @param filePath 本地缓存路径
107
+ * @param redirectCount 当前重定向次数(内部使用)
108
+ * @param onProgress 下载进度回调函数(可选)
109
+ * @returns Promise<void> 下载完成或失败
110
+ */
111
+ downloadResourceAsync(url: string, filePath: string, redirectCount?: number, onProgress?: DownloadProgressCallback): Promise<void>;
112
+ /**
113
+ * 下载资源到本地缓存(同步版本,不返回 Promise,用于拦截器)
114
+ * @param url 资源URL
115
+ * @param filePath 本地缓存路径
116
+ */
117
+ downloadResource(url: string, filePath: string): void;
118
+ /**
119
+ * 从文件扩展名获取 MIME 类型
120
+ * @param ext 文件扩展名(带或不带点)
121
+ * @returns MIME 类型
122
+ */
123
+ private _getMimeTypeFromExt;
124
+ /**
125
+ * 检测并处理 base64 data URL
126
+ * @param url 资源URL
127
+ * @returns 如果是 base64 URL,返回 true、文件扩展名、MIME 类型和数据;否则返回 false
128
+ */
129
+ private _isBase64DataUrl;
130
+ /**
131
+ * 保存 base64 数据到文件
132
+ * @param base64Data base64 编码的数据
133
+ * @param filePath 目标文件路径
134
+ */
135
+ private _saveBase64ToFile;
136
+ /**
137
+ * 手动缓存指定 URL 的资源
138
+ * @param url 要缓存的资源 URL(支持普通 URL 和 base64 data URL)
139
+ * @param force 是否强制重新下载,即使缓存有效(默认 false)
140
+ * @param ignoreOrigin 是否忽略来源检查(默认 false)
141
+ * @param onDownloadProgress 下载进度回调函数(可选)
142
+ * @returns Promise<{ filePath: string, hostPath: string, mimeType: string, size: number }> 返回缓存文件路径、主机路径、MIME 类型和文件大小
143
+ * @throws 如果 URL 不匹配缓存规则或来源不允许,会抛出错误
144
+ */
145
+ cacheUrl(url: string, force?: boolean, ignoreOrigin?: boolean, onDownloadProgress?: DownloadProgressCallback): Promise<{
146
+ filePath: string;
147
+ hostPath: string;
148
+ mimeType: string;
149
+ size: number;
150
+ }>;
151
+ /**
152
+ * 批量缓存多个 URL 的资源
153
+ * @param urls 要缓存的资源 URL 数组
154
+ * @param force 是否强制重新下载,即使缓存有效(默认 false)
155
+ * @param ignoreOrigin 是否忽略来源检查(默认 false)
156
+ * @param onProgress 进度回调函数(可选)
157
+ * @returns Promise<Array<{ url: string, success: boolean, filePath?: string, hostPath?: string, mimeType?: string, size?: number, error?: string }>> 返回每个 URL 的缓存结果
158
+ */
159
+ addCacheUrls(urls: string[], force?: boolean, ignoreOrigin?: boolean, onProgress?: CacheProgressCallback): Promise<Array<{
160
+ url: string;
161
+ success: boolean;
162
+ filePath?: string;
163
+ hostPath?: string;
164
+ mimeType?: string;
165
+ size?: number;
166
+ error?: string;
167
+ }>>;
168
+ /**
169
+ * 删除多个 URL 的资源
170
+ * @param urls 要删除的资源 URL 数组
171
+ * @returns Promise<Array<{ url: string, success: boolean, error?: string }>> 返回每个 URL 的删除结果
172
+ */
173
+ deleteCacheUrls(urls: string[]): Promise<Array<{
174
+ url: string;
175
+ success: boolean;
176
+ error?: string;
177
+ }>>;
178
+ /**
179
+ * 删除单个 URL 的资源(异步版本,性能更好)
180
+ * @param url 要删除的资源 URL
181
+ * @returns Promise<{ url: string, success: boolean, error?: string }> 返回删除结果
182
+ */
183
+ deleteUrl(url: string): Promise<{
184
+ url: string;
185
+ success: boolean;
186
+ error?: string;
187
+ }>;
188
+ /**
189
+ * 删除单个 URL 的资源(别名,保持向后兼容)
190
+ * @deprecated 使用 deleteUrl 代替
191
+ */
192
+ deleteCache(url: string): Promise<{
193
+ url: string;
194
+ success: boolean;
195
+ error?: string;
196
+ }>;
197
+ /**
198
+ * 清理过期缓存文件(异步并行处理,性能更好)
199
+ */
200
+ private _cleanOldCache;
201
+ /**
202
+ * 清理所有缓存文件(完全异步版本,性能更好)
203
+ * @returns Promise<{ success: number, failed: number, totalSize: number }> 返回清理统计信息
204
+ */
205
+ clearCache(): Promise<{
206
+ success: number;
207
+ failed: number;
208
+ totalSize: number;
209
+ }>;
210
+ /**
211
+ * 注册 Electron 请求拦截器,实现资源缓存
212
+ */
213
+ private _registerInterceptor;
214
+ }
215
+ //# sourceMappingURL=resource-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-cache.d.ts","sourceRoot":"","sources":["../src/main/resource-cache.ts"],"names":[],"mappings":"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"}