@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
package/README.md CHANGED
@@ -62,7 +62,10 @@ jssdk.log('info', '我是测试')
62
62
  ### 主进程
63
63
  | 属性 | 说明 | 类型 | 演示 |
64
64
  | --- | --- | --- | --- |
65
- | | | | |
65
+ | downloadVideo | 下载视频并转码 | function | `await sdk.downloadVideo(options, callbacks)` |
66
+ | clearVideoCache | 清除指定目录的缓存文件 | function | `sdk.clearVideoCache(outputDir)` |
67
+ | getVideoCacheStats | 获取缓存统计信息 | function | `sdk.getVideoCacheStats(outputDir)` |
68
+ | removeVideoCache | 删除指定URL的缓存文件 | function | `sdk.removeVideoCache(options)` |
66
69
 
67
70
  ### 渲染进程 -
68
71
  #### 1. 日志 `jssdk.log`
@@ -124,3 +127,159 @@ jssdk.log('info', '我是测试')
124
127
  | onTabsUpdate | 监听Tabs栏变化 | function | `jssdk.tabsBrowser.onTabsUpdate((tabs) => {console.log(tabs)})` |
125
128
  | onWinChange | 监听当前挂载windows | function | `jssdk.tabsBrowser.onWinChange((win) => {console.log(win)})` |
126
129
  | sendControlReady | 当`controlPanel`页面完成加载后主动调用(必须) | function | `jssdk.tabsBrowser.sendControlReady()` |
130
+
131
+ ## 4. 视频下载和转码功能
132
+
133
+ ### 4.1 基本用法
134
+
135
+ ```javascript
136
+ const { initialize, downloadVideo } = require('@lynker-desktop/electron-sdk/main');
137
+
138
+ // 初始化SDK
139
+ const sdk = initialize({
140
+ protocol: 'test',
141
+ preload: path.join(__dirname, 'preload.js')
142
+ });
143
+
144
+ // 下载并转码视频(带缓存功能)
145
+ const result = await sdk.downloadVideo({
146
+ url: 'https://example.com/video.mp4',
147
+ outputDir: './downloads',
148
+ outputName: 'my_video',
149
+ format: 'mp4',
150
+ quality: 18,
151
+ videoCodec: 'h264',
152
+ audioCodec: 'aac',
153
+ // 缓存配置
154
+ cache: {
155
+ enabled: true, // 启用缓存
156
+ ttl: 24 * 60 * 60 * 1000 // 24小时缓存有效期
157
+ }
158
+ }, {
159
+ onDownloadProgress: (progress) => {
160
+ console.log(`下载进度: ${progress.percentage.toFixed(2)}%`);
161
+ },
162
+ onTranscodeProgress: (progress) => {
163
+ console.log(`转码进度: ${progress.percentage.toFixed(2)}%`);
164
+ },
165
+ onComplete: (result) => {
166
+ console.log('完成:', result);
167
+ console.log('来自缓存:', result.fromCache);
168
+ }
169
+ });
170
+ ```
171
+
172
+ ### 4.2 配置选项
173
+
174
+ | 选项 | 类型 | 默认值 | 说明 |
175
+ | --- | --- | --- | --- |
176
+ | url | string | - | 视频URL(必填) |
177
+ | outputDir | string | - | 输出目录(必填) |
178
+ | outputName | string | - | 输出文件名(不包含扩展名) |
179
+ | format | 'mp4' \| 'avi' \| 'mov' \| 'mkv' \| 'webm' | 'mp4' | 转码格式 |
180
+ | pffmpegPath | string | 'ffmpeg' | FFmpeg可执行文件路径 |
181
+ | quality | number | 18 | 视频质量(1-31,数值越小质量越高) |
182
+ | videoCodec | 'h264' \| 'h265' \| 'vp9' \| 'av1' | 'h264' | 视频编码器 |
183
+ | audioCodec | 'aac' \| 'mp3' \| 'opus' | 'aac' | 音频编码器 |
184
+ | keepOriginal | boolean | false | 是否保留原始文件 |
185
+ | cache | CacheOptions | { enabled: true, ttl: 24小时 } | 缓存配置 |
186
+
187
+ ### 4.3 进度回调
188
+
189
+ | 回调 | 参数 | 说明 |
190
+ | --- | --- | --- |
191
+ | onDownloadProgress | { downloaded, total, percentage, speed } | 下载进度回调 |
192
+ | onTranscodeProgress | { percentage, time, speed } | 转码进度回调 |
193
+ | onComplete | { success, outputPath?, error? } | 完成回调 |
194
+
195
+ ### 4.4 返回结果
196
+
197
+ ```typescript
198
+ interface VideoDownloadResult {
199
+ success: boolean;
200
+ outputPath?: string; // 输出文件路径
201
+ originalPath?: string; // 原始文件路径(如果keepOriginal为true)
202
+ error?: string; // 错误信息
203
+ duration?: number; // 视频时长(秒)
204
+ fileSize?: number; // 文件大小(字节)
205
+ fromCache?: boolean; // 是否来自缓存
206
+ }
207
+
208
+ interface CacheOptions {
209
+ enabled?: boolean; // 是否启用缓存,默认true
210
+ ttl?: number; // 缓存有效期(毫秒),默认24小时
211
+ }
212
+ ```
213
+
214
+ ### 4.5 缓存功能
215
+
216
+ #### 4.5.1 缓存机制
217
+ - **简单缓存**: 基于URL生成MD5文件名,直接检查文件是否存在
218
+ - **文件检查**: 每次下载前检查输出目录中是否存在对应的缓存文件
219
+ - **自动清理**: 支持自动清理过期的缓存文件
220
+ - **时间过期**: 支持自定义缓存有效期,默认24小时
221
+
222
+ #### 4.5.2 缓存管理
223
+ ```javascript
224
+ // 获取缓存统计信息
225
+ const stats = sdk.getVideoCacheStats('./downloads');
226
+ console.log(`缓存文件数: ${stats.size}`);
227
+
228
+ // 清除指定目录的所有缓存文件
229
+ sdk.clearVideoCache('./downloads');
230
+
231
+ // 删除指定URL的缓存文件
232
+ sdk.removeVideoCache({
233
+ url: 'https://example.com/video.mp4',
234
+ outputDir: './downloads',
235
+ format: 'mp4'
236
+ });
237
+ ```
238
+
239
+ #### 4.5.3 缓存配置
240
+ ```javascript
241
+ const options = {
242
+ url: 'https://example.com/video.mp4',
243
+ outputDir: './downloads',
244
+ cache: {
245
+ enabled: true, // 启用缓存
246
+ ttl: 7 * 24 * 60 * 60 * 1000 // 7天缓存有效期
247
+ }
248
+ };
249
+ ```
250
+
251
+ ### 4.6 FFmpeg支持
252
+
253
+ #### 4.6.1 自动安装的FFmpeg
254
+ 项目已集成`@ffmpeg-installer/ffmpeg`包,会自动下载适合当前平台的FFmpeg二进制文件:
255
+
256
+ ```javascript
257
+ // 使用默认FFmpeg(推荐)
258
+ const result = await sdk.downloadVideo({
259
+ url: 'https://example.com/video.mp4',
260
+ outputDir: './downloads'
261
+ // 不指定ffmpegPath,使用自动安装的FFmpeg
262
+ });
263
+
264
+ // 使用自定义FFmpeg路径
265
+ const result = await sdk.downloadVideo({
266
+ url: 'https://example.com/video.mp4',
267
+ outputDir: './downloads',
268
+ ffmpegPath: '/usr/local/bin/ffmpeg' // 自定义路径
269
+ });
270
+ ```
271
+
272
+ #### 4.6.2 支持的平台
273
+ - Windows (x64)
274
+ - macOS (x64, arm64)
275
+ - Linux (x64, arm64)
276
+
277
+ ### 4.7 注意事项
278
+
279
+ 1. **FFmpeg依赖**: 已自动安装,无需手动配置
280
+ 2. **网络权限**: 确保应用有网络访问权限
281
+ 3. **磁盘空间**: 确保输出目录有足够的磁盘空间
282
+ 4. **文件权限**: 确保对输出目录有写入权限
283
+ 5. **缓存管理**: 定期清理过期缓存以节省磁盘空间
284
+ 6. **缓存一致性**: 相同URL的请求会命中缓存,不同URL会重新处理
285
+ 7. **文件命名**: 缓存文件使用URL的MD5值命名,确保唯一性
package/common/index.d.ts CHANGED
@@ -10,4 +10,100 @@ export type ServeOptions = Array<{
10
10
  partition?: string;
11
11
  }>;
12
12
  export declare const IPC_GET_APP_METRICS = "__sdk_get_app_metrics__";
13
+ /**
14
+ * 视频下载和转码配置选项
15
+ */
16
+ export interface VideoDownloadOptions {
17
+ /** 视频URL */
18
+ url: string;
19
+ /** 输出目录 */
20
+ outputDir: string;
21
+ /** 输出文件名(不包含扩展名) */
22
+ outputName?: string;
23
+ /** 转码格式,默认为mp4 */
24
+ format?: 'mp4' | 'avi' | 'mov' | 'mkv' | 'webm';
25
+ /** FFmpeg可执行文件路径,不传则使用系统默认 */
26
+ ffmpegPath?: string;
27
+ /** 视频质量,1-31,数值越小质量越高,默认18 */
28
+ quality?: number;
29
+ /** 视频编码器,默认h264 */
30
+ videoCodec?: 'h264' | 'h265' | 'vp9' | 'av1';
31
+ /** 音频编码器,默认aac */
32
+ audioCodec?: 'aac' | 'mp3' | 'opus';
33
+ /** 是否保留原始文件,默认false */
34
+ keepOriginal?: boolean;
35
+ /** 缓存选项 */
36
+ cache?: CacheOptions;
37
+ }
38
+ /**
39
+ * 下载和转码进度回调
40
+ */
41
+ export interface VideoProgressCallback {
42
+ /** 下载进度回调 */
43
+ onDownloadProgress?: (progress: {
44
+ downloaded: number;
45
+ total: number;
46
+ percentage: number;
47
+ speed: number;
48
+ }) => void;
49
+ /** 转码进度回调 */
50
+ onTranscodeProgress?: (progress: {
51
+ percentage: number;
52
+ time: number;
53
+ speed: number;
54
+ }) => void;
55
+ /** 完成回调 */
56
+ onComplete?: (result: {
57
+ success: boolean;
58
+ outputPath?: string;
59
+ error?: string;
60
+ }) => void;
61
+ }
62
+ /**
63
+ * 视频下载和转码结果
64
+ */
65
+ export interface VideoDownloadResult {
66
+ success: boolean;
67
+ outputPath?: string;
68
+ originalPath?: string;
69
+ error?: string;
70
+ duration?: number;
71
+ fileSize?: number;
72
+ fromCache?: boolean;
73
+ }
74
+ /**
75
+ * 缓存管理选项
76
+ */
77
+ export interface CacheOptions {
78
+ /** 缓存有效期(毫秒),默认24小时 */
79
+ ttl?: number;
80
+ /** 是否启用缓存,默认true */
81
+ enabled?: boolean;
82
+ }
83
+ export interface VideoTranscodeChangeCallbackFordownloadProgress {
84
+ type: 'downloadProgress';
85
+ data: {
86
+ downloaded: number;
87
+ total: number;
88
+ percentage: number;
89
+ speed: number;
90
+ };
91
+ }
92
+ export interface VideoTranscodeChangeCallbackForTranscodeProgress {
93
+ type: 'transcodeProgress';
94
+ data: {
95
+ percentage: number;
96
+ time: number;
97
+ speed: number;
98
+ };
99
+ }
100
+ export interface VideoTranscodeChangeCallbackForComplete {
101
+ type: 'complete';
102
+ data: {
103
+ success: boolean;
104
+ outputPath?: string;
105
+ error?: string;
106
+ };
107
+ }
108
+ export type VideoTranscodeChangeCallback = VideoTranscodeChangeCallbackFordownloadProgress | VideoTranscodeChangeCallbackForTranscodeProgress | VideoTranscodeChangeCallbackForComplete;
13
109
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/common/index.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,gBAAgB,CAAC,EAAE,GAAG,CAAC;KACxB;CACF;AAED,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC;AAEnH,eAAO,MAAM,mBAAmB,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/common/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/src/common/index.ts"],"sourcesContent":["// @ts-ignore\ndeclare global {\n interface Window {\n __ELECTRON_SDK__?: any;\n }\n}\n\nexport type ServeOptions = Array<{directory: string, scheme: string, isCorsEnabled?: boolean, partition?: string}>;\n\nexport const IPC_GET_APP_METRICS = '__sdk_get_app_metrics__';\n\n"],"names":[],"mappings":"AASO,MAAM,mBAAmB,GAAG;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../src/src/common/index.ts"],"sourcesContent":["// @ts-ignore\ndeclare global {\n interface Window {\n __ELECTRON_SDK__?: any;\n }\n}\n\nexport type ServeOptions = Array<{directory: string, scheme: string, isCorsEnabled?: boolean, partition?: string}>;\n\nexport const IPC_GET_APP_METRICS = '__sdk_get_app_metrics__';\n\n/**\n * 视频下载和转码配置选项\n */\nexport interface VideoDownloadOptions {\n /** 视频URL */\n url: string;\n /** 输出目录 */\n outputDir: string;\n /** 输出文件名(不包含扩展名) */\n outputName?: string;\n /** 转码格式,默认为mp4 */\n format?: 'mp4' | 'avi' | 'mov' | 'mkv' | 'webm';\n /** FFmpeg可执行文件路径,不传则使用系统默认 */\n ffmpegPath?: string;\n /** 视频质量,1-31,数值越小质量越高,默认18 */\n quality?: number;\n /** 视频编码器,默认h264 */\n videoCodec?: 'h264' | 'h265' | 'vp9' | 'av1';\n /** 音频编码器,默认aac */\n audioCodec?: 'aac' | 'mp3' | 'opus';\n /** 是否保留原始文件,默认false */\n keepOriginal?: boolean;\n /** 缓存选项 */\n cache?: CacheOptions;\n}\n\n/**\n * 下载和转码进度回调\n */\nexport interface VideoProgressCallback {\n /** 下载进度回调 */\n onDownloadProgress?: (progress: {\n downloaded: number;\n total: number;\n percentage: number;\n speed: number; // bytes per second\n }) => void;\n /** 转码进度回调 */\n onTranscodeProgress?: (progress: {\n percentage: number;\n time: number; // seconds\n speed: number; // speed factor\n }) => void;\n /** 完成回调 */\n onComplete?: (result: {\n success: boolean;\n outputPath?: string;\n error?: string;\n }) => void;\n}\n\n/**\n * 视频下载和转码结果\n */\nexport interface VideoDownloadResult {\n success: boolean;\n outputPath?: string;\n originalPath?: string;\n error?: string;\n duration?: number; // seconds\n fileSize?: number; // bytes\n fromCache?: boolean; // 是否来自缓存\n}\n\n/**\n * 缓存管理选项\n */\nexport interface CacheOptions {\n /** 缓存有效期(毫秒),默认24小时 */\n ttl?: number;\n /** 是否启用缓存,默认true */\n enabled?: boolean;\n}\nexport interface VideoTranscodeChangeCallbackFordownloadProgress {\n type: 'downloadProgress';\n data: {\n downloaded: number;\n total: number;\n percentage: number;\n speed: number;\n };\n}\n\nexport interface VideoTranscodeChangeCallbackForTranscodeProgress {\n type: 'transcodeProgress';\n data: {\n percentage: number;\n time: number;\n speed: number;\n };\n}\n\nexport interface VideoTranscodeChangeCallbackForComplete {\n type: 'complete';\n data: {\n success: boolean;\n outputPath?: string;\n error?: string;\n };\n}\n\nexport type VideoTranscodeChangeCallback = VideoTranscodeChangeCallbackFordownloadProgress | VideoTranscodeChangeCallbackForTranscodeProgress | VideoTranscodeChangeCallbackForComplete;\n"],"names":[],"mappings":"AASO,MAAM,mBAAmB,GAAG;;;;"}
@@ -10,4 +10,100 @@ export type ServeOptions = Array<{
10
10
  partition?: string;
11
11
  }>;
12
12
  export declare const IPC_GET_APP_METRICS = "__sdk_get_app_metrics__";
13
+ /**
14
+ * 视频下载和转码配置选项
15
+ */
16
+ export interface VideoDownloadOptions {
17
+ /** 视频URL */
18
+ url: string;
19
+ /** 输出目录 */
20
+ outputDir: string;
21
+ /** 输出文件名(不包含扩展名) */
22
+ outputName?: string;
23
+ /** 转码格式,默认为mp4 */
24
+ format?: 'mp4' | 'avi' | 'mov' | 'mkv' | 'webm';
25
+ /** FFmpeg可执行文件路径,不传则使用系统默认 */
26
+ ffmpegPath?: string;
27
+ /** 视频质量,1-31,数值越小质量越高,默认18 */
28
+ quality?: number;
29
+ /** 视频编码器,默认h264 */
30
+ videoCodec?: 'h264' | 'h265' | 'vp9' | 'av1';
31
+ /** 音频编码器,默认aac */
32
+ audioCodec?: 'aac' | 'mp3' | 'opus';
33
+ /** 是否保留原始文件,默认false */
34
+ keepOriginal?: boolean;
35
+ /** 缓存选项 */
36
+ cache?: CacheOptions;
37
+ }
38
+ /**
39
+ * 下载和转码进度回调
40
+ */
41
+ export interface VideoProgressCallback {
42
+ /** 下载进度回调 */
43
+ onDownloadProgress?: (progress: {
44
+ downloaded: number;
45
+ total: number;
46
+ percentage: number;
47
+ speed: number;
48
+ }) => void;
49
+ /** 转码进度回调 */
50
+ onTranscodeProgress?: (progress: {
51
+ percentage: number;
52
+ time: number;
53
+ speed: number;
54
+ }) => void;
55
+ /** 完成回调 */
56
+ onComplete?: (result: {
57
+ success: boolean;
58
+ outputPath?: string;
59
+ error?: string;
60
+ }) => void;
61
+ }
62
+ /**
63
+ * 视频下载和转码结果
64
+ */
65
+ export interface VideoDownloadResult {
66
+ success: boolean;
67
+ outputPath?: string;
68
+ originalPath?: string;
69
+ error?: string;
70
+ duration?: number;
71
+ fileSize?: number;
72
+ fromCache?: boolean;
73
+ }
74
+ /**
75
+ * 缓存管理选项
76
+ */
77
+ export interface CacheOptions {
78
+ /** 缓存有效期(毫秒),默认24小时 */
79
+ ttl?: number;
80
+ /** 是否启用缓存,默认true */
81
+ enabled?: boolean;
82
+ }
83
+ export interface VideoTranscodeChangeCallbackFordownloadProgress {
84
+ type: 'downloadProgress';
85
+ data: {
86
+ downloaded: number;
87
+ total: number;
88
+ percentage: number;
89
+ speed: number;
90
+ };
91
+ }
92
+ export interface VideoTranscodeChangeCallbackForTranscodeProgress {
93
+ type: 'transcodeProgress';
94
+ data: {
95
+ percentage: number;
96
+ time: number;
97
+ speed: number;
98
+ };
99
+ }
100
+ export interface VideoTranscodeChangeCallbackForComplete {
101
+ type: 'complete';
102
+ data: {
103
+ success: boolean;
104
+ outputPath?: string;
105
+ error?: string;
106
+ };
107
+ }
108
+ export type VideoTranscodeChangeCallback = VideoTranscodeChangeCallbackFordownloadProgress | VideoTranscodeChangeCallbackForTranscodeProgress | VideoTranscodeChangeCallbackForComplete;
13
109
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,gBAAgB,CAAC,EAAE,GAAG,CAAC;KACxB;CACF;AAED,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC;AAEnH,eAAO,MAAM,mBAAmB,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/common/index.ts"],"sourcesContent":["// @ts-ignore\ndeclare global {\n interface Window {\n __ELECTRON_SDK__?: any;\n }\n}\n\nexport type ServeOptions = Array<{directory: string, scheme: string, isCorsEnabled?: boolean, partition?: string}>;\n\nexport const IPC_GET_APP_METRICS = '__sdk_get_app_metrics__';\n\n"],"names":[],"mappings":"AASO,MAAM,mBAAmB,GAAG;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/common/index.ts"],"sourcesContent":["// @ts-ignore\ndeclare global {\n interface Window {\n __ELECTRON_SDK__?: any;\n }\n}\n\nexport type ServeOptions = Array<{directory: string, scheme: string, isCorsEnabled?: boolean, partition?: string}>;\n\nexport const IPC_GET_APP_METRICS = '__sdk_get_app_metrics__';\n\n/**\n * 视频下载和转码配置选项\n */\nexport interface VideoDownloadOptions {\n /** 视频URL */\n url: string;\n /** 输出目录 */\n outputDir: string;\n /** 输出文件名(不包含扩展名) */\n outputName?: string;\n /** 转码格式,默认为mp4 */\n format?: 'mp4' | 'avi' | 'mov' | 'mkv' | 'webm';\n /** FFmpeg可执行文件路径,不传则使用系统默认 */\n ffmpegPath?: string;\n /** 视频质量,1-31,数值越小质量越高,默认18 */\n quality?: number;\n /** 视频编码器,默认h264 */\n videoCodec?: 'h264' | 'h265' | 'vp9' | 'av1';\n /** 音频编码器,默认aac */\n audioCodec?: 'aac' | 'mp3' | 'opus';\n /** 是否保留原始文件,默认false */\n keepOriginal?: boolean;\n /** 缓存选项 */\n cache?: CacheOptions;\n}\n\n/**\n * 下载和转码进度回调\n */\nexport interface VideoProgressCallback {\n /** 下载进度回调 */\n onDownloadProgress?: (progress: {\n downloaded: number;\n total: number;\n percentage: number;\n speed: number; // bytes per second\n }) => void;\n /** 转码进度回调 */\n onTranscodeProgress?: (progress: {\n percentage: number;\n time: number; // seconds\n speed: number; // speed factor\n }) => void;\n /** 完成回调 */\n onComplete?: (result: {\n success: boolean;\n outputPath?: string;\n error?: string;\n }) => void;\n}\n\n/**\n * 视频下载和转码结果\n */\nexport interface VideoDownloadResult {\n success: boolean;\n outputPath?: string;\n originalPath?: string;\n error?: string;\n duration?: number; // seconds\n fileSize?: number; // bytes\n fromCache?: boolean; // 是否来自缓存\n}\n\n/**\n * 缓存管理选项\n */\nexport interface CacheOptions {\n /** 缓存有效期(毫秒),默认24小时 */\n ttl?: number;\n /** 是否启用缓存,默认true */\n enabled?: boolean;\n}\nexport interface VideoTranscodeChangeCallbackFordownloadProgress {\n type: 'downloadProgress';\n data: {\n downloaded: number;\n total: number;\n percentage: number;\n speed: number;\n };\n}\n\nexport interface VideoTranscodeChangeCallbackForTranscodeProgress {\n type: 'transcodeProgress';\n data: {\n percentage: number;\n time: number;\n speed: number;\n };\n}\n\nexport interface VideoTranscodeChangeCallbackForComplete {\n type: 'complete';\n data: {\n success: boolean;\n outputPath?: string;\n error?: string;\n };\n}\n\nexport type VideoTranscodeChangeCallback = VideoTranscodeChangeCallbackFordownloadProgress | VideoTranscodeChangeCallbackForTranscodeProgress | VideoTranscodeChangeCallbackForComplete;\n"],"names":[],"mappings":"AASO,MAAM,mBAAmB,GAAG;;;;"}
@@ -0,0 +1,32 @@
1
+ export interface ClipboardFileData {
2
+ name: string;
3
+ path: string;
4
+ size: number;
5
+ type: string;
6
+ lastModified: number;
7
+ buffer?: ArrayBuffer;
8
+ }
9
+ export interface ClipboardData {
10
+ type: 'text' | 'html' | 'image' | 'file' | 'files' | 'url' | 'buffer';
11
+ text?: string;
12
+ html?: string;
13
+ image?: ClipboardFileData;
14
+ file?: ClipboardFileData;
15
+ files?: ClipboardFileData[];
16
+ url?: string;
17
+ buffer?: ArrayBuffer;
18
+ }
19
+ export interface ClipboardQuery {
20
+ method: 'set' | 'get' | 'clear';
21
+ value?: string | ClipboardFileData | ClipboardFileData[] | ArrayBuffer;
22
+ type?: 'text' | 'html' | 'image' | 'file' | 'url' | 'buffer' | 'auto';
23
+ options?: {
24
+ includeBuffer?: boolean;
25
+ maxFileSize?: number;
26
+ };
27
+ }
28
+ /**
29
+ * 初始化剪贴板 IPC 处理器
30
+ */
31
+ export declare const initializeClipboard: () => void;
32
+ //# sourceMappingURL=clipboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/main/clipboard.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,KAAK,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,WAAW,CAAC;IACvE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtE,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AA09BD;;GAEG;AACH,eAAO,MAAM,mBAAmB,YA0F/B,CAAA"}