utools-api-types 7.2.0 → 7.5.1

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 (2) hide show
  1. package/package.json +4 -1
  2. package/utools.api.d.ts +247 -64
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "utools-api-types",
3
- "version": "7.2.0",
3
+ "version": "7.5.1",
4
4
  "description": "TypeScript definitions for uTools API",
5
5
  "repository": {
6
6
  "type": "git",
@@ -20,5 +20,8 @@
20
20
  "default": {
21
21
  "types": "./utools.api.d.ts"
22
22
  }
23
+ },
24
+ "dependencies": {
25
+ "@types/sharp": "^0.31.1"
23
26
  }
24
27
  }
package/utools.api.d.ts CHANGED
@@ -1,6 +1,9 @@
1
1
  /// <reference path="ubw.d.ts"/>
2
2
  /// <reference path="electron.d.ts"/>
3
3
 
4
+ type Sharp = import('sharp').Sharp;
5
+ type SharpOptions = import('sharp').SharpOptions;
6
+
4
7
  interface UtoolsAiModel {
5
8
  id: string;
6
9
  label: string;
@@ -92,7 +95,7 @@ interface UBrowser {
92
95
  screenshot(arg: string | { x: number, y: number, width: number, height: number }, savePath?: string): this;
93
96
  /**
94
97
  * 转为 markdown 文本
95
- * @param selector css 选择器或者XPATH
98
+ * @param selector CSS 或 XPath 选择器,支持使用 `>>` 进行 iframe 嵌套
96
99
  */
97
100
  markdown(selector?: string): this;
98
101
  /**
@@ -106,30 +109,34 @@ interface UBrowser {
106
109
  */
107
110
  device(arg: { size: { width: number, height: number }, useragent: string }): this;
108
111
  /**
109
- * 在当前 url 根据名称获取 cookie
110
- * @param name 为空获取当前 url 全部 cookie
112
+ * 获取当前 URL 的 Cookie。
113
+ * @param name 可选,指定 Cookie 名称。如果未传入,则返回当前 URL 的所有 Cookie。
111
114
  */
112
115
  cookies(name?: string): this;
113
116
  /**
114
- * 根据条件获取 ubrowser cookies
115
- * @param filter 条件过滤对象
117
+ * 根据条件获取 Cookie。
118
+ * @param filter 条件过滤对象,例如 { name: string, domain?: string }。
116
119
  */
117
120
  cookies(filter: CookieFilter): this;
118
121
  /**
119
- * 设置Cookie
122
+ * 设置单个 Cookie。
123
+ * @param name Cookie 名称
124
+ * @param value Cookie 值
120
125
  */
121
126
  setCookies(name: string, value: string): this;
122
127
  /**
123
- * 设置Cookie
128
+ * 批量设置 Cookie。
129
+ * @param cookies Cookie 数组,每个元素包含 name 和 value。
124
130
  */
125
- setCookies(cookies: { name: string, value: string }[]): this;
131
+ setCookies(cookies: { name: string; value: string }[]): this;
126
132
  /**
127
- * 删除 cookie
133
+ * 删除指定 Cookie。
134
+ * @param name Cookie 名称
128
135
  */
129
136
  removeCookies(name: string): this;
130
137
  /**
131
- * 清空cookie
132
- * @param url 在执行"goto"前执行 url参数必需
138
+ * 清空 Cookie。
139
+ * @param url 可选,指定 URL。若在执行 "goto" 前调用,url 参数必填。
133
140
  */
134
141
  clearCookies(url?: string): this;
135
142
  /**
@@ -143,30 +150,66 @@ interface UBrowser {
143
150
  */
144
151
  evaluate<T extends any[]>(func: (...params: T) => any, ...params: T): this;
145
152
  /**
146
- * 等待时间
147
- * @param ms 毫秒
153
+ * 等待指定的时间。
154
+ * @param ms 等待时长(毫秒)
148
155
  */
149
156
  wait(ms: number): this;
150
157
  /**
151
- * 等待元素出现
152
- * @param selector DOM元素
153
- * @param timeout 超时 默认60000 ms(60秒)
158
+ * 等待元素满足条件。
159
+ *
160
+ * 默认行为:等待元素出现。
161
+ *
162
+ * @param selector CSS 或 XPath 选择器,支持使用 `>>` 进行 iframe 嵌套
163
+ * @param options 等待选项
164
+ * - result: true 等待出现,false 等待消失(默认 true)
165
+ * - timeout: 超时时间,默认 60000 ms
166
+ * - interval: 轮询间隔(毫秒),默认 500 ms
167
+ */
168
+ wait(selector: string, options?: { result?: boolean; timeout?: number; interval?: number; }): this;
169
+ /**
170
+ * 等待元素满足条件(简写形式)。
171
+ *
172
+ * @param selector CSS 或 XPath 选择器,支持使用 `>>` 进行 iframe 嵌套
173
+ * @param result 为 true 等待出现,为 false 等待消失(默认 true)
174
+ */
175
+ wait(selector: string, result?: boolean): this;
176
+ /**
177
+ * 等待元素出现,指定超时时间(简写形式)。
178
+ *
179
+ * @param selector CSS 或 XPath 选择器,支持使用 `>>` 进行 iframe 嵌套
180
+ * @param timeout 超时时间(毫秒)
154
181
  */
155
182
  wait(selector: string, timeout?: number): this;
156
183
  /**
157
- * 等待 JS函数 执行返回 true
158
- * @param func 执行的JS函数
159
- * @param timeout 超时 默认60000 ms(60秒)
160
- * @param params 传到 func 中的参数
184
+ * 等待 JS 函数执行结果为 true。
185
+ *
186
+ * 该函数将被周期性执行,直到返回 true 或超时。
187
+ *
188
+ * @param func 判定函数,返回 true 表示条件满足
189
+ * @param timeout 超时时间,默认 60000 ms
190
+ * @param params 传递给 func 的参数
161
191
  */
162
192
  wait<T extends any[]>(func: (...params: T) => boolean, timeout?: number, ...params: T): this;
193
+ /**
194
+ * 等待 JS 函数执行结果为 true。
195
+ *
196
+ * 该函数将被周期性执行,直到返回 true 或超时。
197
+ *
198
+ * @param func 判定函数,返回 true 表示条件满足
199
+ * @param options 等待选项
200
+ * - timeout: 超时时间,默认 60000 ms
201
+ * - interval: 轮询间隔(毫秒),默认 500 ms
202
+ * @param params 传递给 func 的参数
203
+ */
204
+ wait<T extends any[]>(func: (...params: T) => boolean, options?: { timeout?: number; interval?: number; }, ...params: T): this;
163
205
  /**
164
- * 当元素存在时执行,直到碰到 end
165
- * @param selector DOM元素
206
+ * 当元素满足条件时,直到碰到 end
207
+ * @param selector CSS 或 XPath 选择器,支持使用 `>>` 进行 iframe 嵌套
208
+ * @param result 可选,为 true 表示当元素存在时,为 false 表示当元素不存在时(默认 true)
166
209
  */
167
- when(selector: string): this;
210
+ when(selector: string, result?: boolean): this;
168
211
  /**
169
- * 当 JS函数执行返回 true 时执行直到碰到 end
212
+ * 当 JS 函数执行返回 true 时,直到碰到 end
170
213
  * @param func 执行的JS函数
171
214
  * @param params 传到 func 中的参数
172
215
  */
@@ -176,39 +219,136 @@ interface UBrowser {
176
219
  */
177
220
  end(): this;
178
221
  /**
179
- * 单击元素
222
+ * 单击指定元素
223
+ * @param selector CSS 或 XPath 选择器,支持使用 `>>` 进行 iframe 嵌套
224
+ * @param button 可选,鼠标按键;当设置该参数时,将以物理方式执行操作
225
+ */
226
+ click(selector: string, button?: 'left' | 'middle' | 'right'): this;
227
+ /**
228
+ * 单击坐标位置
229
+ * @param x 窗口 X 坐标
230
+ * @param y 窗口 Y 坐标
231
+ * @param button 可选,鼠标按键,默认为 'left'
232
+ */
233
+ click(x: number, y: number, button?: 'left' | 'middle' | 'right'): this;
234
+ /**
235
+ * 双击指定元素
236
+ * @param selector CSS 或 XPath 选择器,支持使用 `>>` 进行 iframe 嵌套
237
+ * @param button 可选,鼠标按键;当设置该参数时,将以物理方式执行操作
238
+ */
239
+ dblclick(selector: string, button?: 'left' | 'middle' | 'right'): this;
240
+ /**
241
+ * 双击坐标位置
242
+ * @param x 窗口 X 坐标
243
+ * @param y 窗口 Y 坐标
244
+ * @param button 可选,鼠标按键,默认为 'left'
180
245
  */
181
- click(selector: string): this;
246
+ dblclick(x: number, y: number, button?: 'left' | 'middle' | 'right'): this;
182
247
  /**
183
- * 元素触发按下鼠标左键
248
+ * 在指定元素按下鼠标键(mousedown)
249
+ * @param selector CSS 或 XPath 选择器,支持使用 `>>` 进行 iframe 嵌套
250
+ * @param button 可选,鼠标按键;当设置该参数时,将以物理方式执行操作
184
251
  */
185
- mousedown(selector: string): this;
252
+ mousedown(selector: string, button?: 'left' | 'middle' | 'right'): this;
186
253
  /**
187
- * 元素触发释放鼠标左键
254
+ * 在坐标位置按下鼠标键
255
+ * @param x 窗口 X 坐标
256
+ * @param y 窗口 Y 坐标
257
+ * @param button 可选,鼠标按键,默认为 'left'
188
258
  */
189
- mouseup(selector: string): this;
259
+ mousedown(x: number, y: number, button?: 'left' | 'middle' | 'right'): this;
190
260
  /**
191
- * 赋值 file input
192
- * @param selector <input type='file' /> 元素
193
- * @param payload 1. string - 文件路径 或 图片的base64编码,2. string[] - 文件路径集合,3. Uint8Array[]
261
+ * 在指定元素释放鼠标键(mouseup)
262
+ * @param selector CSS 或 XPath 选择器,支持使用 `>>` 进行 iframe 嵌套
263
+ * @param button 可选,鼠标按键;当设置该参数时,将以物理方式执行操作
264
+ */
265
+ mouseup(selector: string, button?: 'left' | 'middle' | 'right'): this;
266
+ /**
267
+ * 在坐标位置释放鼠标键
268
+ * @param x 窗口 X 坐标
269
+ * @param y 窗口 Y 坐标
270
+ * @param button 可选,鼠标按键,默认为 'left'
271
+ */
272
+ mouseup(x: number, y: number, button?: 'left' | 'middle' | 'right'): this;
273
+ /**
274
+ * 移动鼠标到元素
275
+ * @param selector CSS 或 XPath 选择器,支持使用 `>>` 进行 iframe 嵌套
276
+ */
277
+ hover(selector: string): this;
278
+ /**
279
+ * 移动鼠标到坐标。
280
+ * @param x 窗口 X 坐标
281
+ * @param y 窗口 Y 坐标
282
+ */
283
+ hover(x: number, y: number): this;
284
+ /**
285
+ * 上传文件(必须为 input[type=file])
286
+ * @param selector CSS 或 XPath 选择器,支持使用 `>>` 进行 iframe 嵌套
287
+ * @param payload 文件内容,可为以下类型:
288
+ * - string:文件路径或图像的 base64 Data URL
289
+ * - string[]:多个文件路径
290
+ * - Uint8Array[]:文件 Buffer
194
291
  */
195
292
  file(selector: string, payload: string | string[] | Uint8Array): this;
196
293
  /**
197
- * input textarea select 等元素赋值并触发 input 或 change事件
294
+ * 拖放文件到指定元素
295
+ * @param selector CSS 或 XPath 选择器,支持使用 `>>` 进行 iframe 嵌套
296
+ * @param payload 文件内容,可为以下类型:
297
+ * - string:文件路径或图像的 base64 Data URL
298
+ * - string[]:多个文件路径
299
+ * - Uint8Array[]:文件 Buffer
300
+ */
301
+ drop(selector: string, payload: string | string[] | Uint8Array): this;
302
+ /**
303
+ * 拖放文件到指定坐标
304
+ * @param x 窗口 X 坐标
305
+ * @param y 窗口 Y 坐标
306
+ * @param payload 文件内容,可为以下类型:
307
+ * - string:文件路径或图像的 base64 Data URL
308
+ * - string[]:多个文件路径
309
+ * - Uint8Array[]:多个文件的二进制数据
310
+ */
311
+ drop(x: number, y: number, payload: string | string[] | Uint8Array): this;
312
+ /**
313
+ * 输入文本,模拟输入法输入,不触发键盘按键事件
314
+ * @param text 字符串文本
315
+ */
316
+ input(text: string): this;
317
+ /**
318
+ * 元素获得焦点后,输入文本,模拟输入法输入,不触发键盘按键事件
319
+ * @param selector CSS 或 XPath 选择器,支持使用 `>>` 进行 iframe 嵌套
320
+ * @param text 字符串文本
321
+ */
322
+ input(selector: string, text: string): this;
323
+ /**
324
+ * input、textarea、select 等元素赋值
325
+ * @param selector CSS 或 XPath 选择器,支持使用 `>>` 进行 iframe 嵌套
326
+ * @param value 元素的值
198
327
  */
199
328
  value(selector: string, value: string): this;
200
329
  /**
201
330
  * checkbox radio 元素选中或取消选中
331
+ * @param selector CSS 或 XPath 选择器,支持使用 `>>` 进行 iframe 嵌套
202
332
  */
203
333
  check(selector: string, checked: boolean): this;
204
334
  /**
205
335
  * 元素获得焦点
336
+ * @param selector CSS 或 XPath 选择器,支持使用 `>>` 进行 iframe 嵌套
206
337
  */
207
338
  focus(selector: string): this;
208
339
  /**
209
- * 滚动到元素位置
340
+ * 滚动到指定元素位置
341
+ *
342
+ * @param selector CSS 或 XPath 选择器,支持使用 `>>` 进行 iframe 嵌套
343
+ * @param options 可选参数:
344
+ * - boolean:是否执行滚动(默认 true)
345
+ * - object:滚动行为与条件配置
210
346
  */
211
- scroll(selector: string): this;
347
+ scroll(selector: string, optional?: boolean | {
348
+ behavior?: 'auto' | 'smooth';
349
+ block?: 'start' | 'center' | 'end' | 'nearest';
350
+ inline?: 'start' | 'center' | 'end' | 'nearest';
351
+ }): this;
212
352
  /**
213
353
  * Y轴滚动
214
354
  */
@@ -219,52 +359,115 @@ interface UBrowser {
219
359
  scroll(x: number, y: number): this;
220
360
  /**
221
361
  * 下载文件
362
+ *
363
+ * @param url 需要下载的文件地址。
364
+ * @param savePath 可选,文件保存路径或保存目录,未传时将保存到下载目录
222
365
  */
223
366
  download(url: string, savePath?: string): this;
224
367
  /**
225
- * 下载文件
368
+ * 下载文件(动态生成的下载地址)
369
+ *
370
+ * @param func 返回下载地址的函数。该函数将在 ubrowser 运行环境中执行。
371
+ * @param savePath 可选,文件保存路径或保存目录,未传时将保存到下载目录
372
+ * @param params 传递给 func 的参数列表
226
373
  */
227
374
  download(func: (...params: any[]) => string, savePath: string | null, ...params: any[]): this;
228
375
  /**
229
- * 启动一个 ubrowser 运行
230
- * 当运行结束后,窗口如果为隐藏状态将自动销毁窗口
231
- * @param options
376
+ * 启动一个新的 ubrowser 实例运行。
377
+ *
378
+ * 当执行结束后:
379
+ * - 若窗口为隐藏状态(show = false),将自动销毁该窗口
380
+ * - 若窗口仍处于显示状态,则保留实例并返回其 ID
381
+ *
382
+ * @param options 窗口及运行配置项
232
383
  */
233
384
  run<T extends any = any[]>(options: {
385
+ /** 是否显示窗口,默认 false */
234
386
  show?: boolean;
387
+
388
+ /** 窗口宽度 */
235
389
  width?: number;
390
+ /** 窗口高度 */
236
391
  height?: number;
392
+
393
+ /** 窗口 X 坐标 */
237
394
  x?: number;
395
+ /** 窗口 Y 坐标 */
238
396
  y?: number;
397
+
398
+ /** 是否居中显示 */
239
399
  center?: boolean;
400
+
401
+ /** 最小宽度 */
240
402
  minWidth?: number;
403
+ /** 最小高度 */
241
404
  minHeight?: number;
405
+
406
+ /** 最大宽度 */
242
407
  maxWidth?: number;
408
+ /** 最大高度 */
243
409
  maxHeight?: number;
410
+
411
+ /** 是否允许调整大小 */
244
412
  resizable?: boolean;
413
+ /** 是否允许移动 */
245
414
  movable?: boolean;
415
+
416
+ /** 是否允许最小化 */
246
417
  minimizable?: boolean;
418
+ /** 是否允许最大化 */
247
419
  maximizable?: boolean;
420
+
421
+ /** 是否置顶 */
248
422
  alwaysOnTop?: boolean;
423
+
424
+ /** 是否全屏 */
249
425
  fullscreen?: boolean;
426
+ /** 是否允许进入全屏 */
250
427
  fullscreenable?: boolean;
428
+
429
+ /** 是否允许窗口尺寸大于屏幕 */
251
430
  enableLargerThanScreen?: boolean;
431
+
432
+ /** 窗口透明度(0 ~ 1) */
252
433
  opacity?: number;
434
+
435
+ /** 是否显示窗口边框 */
253
436
  frame?: boolean;
437
+
438
+ /** 是否允许关闭 */
254
439
  closable?: boolean;
440
+ /** 是否可获取焦点 */
255
441
  focusable?: boolean;
442
+
443
+ /** 是否在任务栏显示 */
256
444
  skipTaskbar?: boolean;
445
+
446
+ /** 窗口背景色 */
257
447
  backgroundColor?: string;
448
+
449
+ /** 是否显示阴影 */
258
450
  hasShadow?: boolean;
451
+
452
+ /** 是否透明窗口 */
259
453
  transparent?: boolean;
454
+
455
+ /** 标题栏样式(平台相关) */
260
456
  titleBarStyle?: string;
457
+
458
+ /** 是否使用系统厚边框(Windows) */
261
459
  thickFrame?: boolean;
262
460
  }): Promise<T>;
461
+
263
462
  /**
264
- * 运行在闲置的 ubrowser 上
265
- * @param ubrowserId 1. run(options) 运行结束后, 当 ubrowser 实例窗口仍然显示时返回 2. utools.getIdleUBrowsers() 中获得
463
+ * 在一个闲置的 ubrowser 实例上运行。
464
+ *
465
+ * @param ubrowserId ubrowser 实例 ID:
466
+ * - 可由 `run(options)` 在窗口未销毁时返回
467
+ * - 或通过 `utools.getIdleUBrowsers()` 获取
266
468
  */
267
469
  run<T extends any = any[]>(ubrowserId: number): Promise<T>;
470
+
268
471
  }
269
472
 
270
473
  interface Display {
@@ -860,30 +1063,10 @@ interface UToolsApi {
860
1063
  removeItem(key: string): void;
861
1064
  };
862
1065
 
863
- team: {
864
- /**
865
- * 获取团队信息
866
- */
867
- info(): {
868
- teamId: string,
869
- teamName: string,
870
- teamLogo: string,
871
- userId: string,
872
- userName: string,
873
- userAvatar: string
874
- };
875
- /**
876
- * 获取团队版预设键名对应的值
877
- */
878
- preset<T = any>(key: string): T;
879
- /**
880
- * 获取团队版预设的所有数据
881
- */
882
- allPresets(): Promise<{ key: string, value: any }[]>;
883
- }
884
-
885
1066
  ubrowser: UBrowser;
886
1067
 
1068
+ sharp: (input?: Buffer | Uint8Array | Uint8ClampedArray | Int8Array | Uint16Array | Int16Array | Uint32Array | Int32Array | Float32Array | Float64Array | string, options?: SharpOptions) => Sharp;
1069
+
887
1070
  /**
888
1071
  * 运行 ffmpeg
889
1072
  * @param args ffmpeg 命令行参数