@solazah/solazah-runtime 0.2.20 → 0.2.21

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solazah/solazah-runtime",
3
- "version": "0.2.20",
3
+ "version": "0.2.21",
4
4
  "main": "index.cjs",
5
5
  "module": "index.js",
6
6
  "types": "types/index.d.ts",
@@ -6,8 +6,10 @@ export interface RecorderStartOptions {
6
6
  stopKey?: number;
7
7
  /** 时长上限,缺省 10 分钟 */
8
8
  maxMs?: number;
9
- /** 以管理员身份录制:经 UAC 拉起助手进程,能录到提权程序(游戏等)的画面与操作;用户在授权框上取消就抛错 */
9
+ /** 以管理员身份收输入:经 UAC 拉起助手进程,能录到提权程序(游戏等)里的操作;用户在授权框上取消就抛错 */
10
10
  elevated?: boolean;
11
+ /** 合成输入(本产品或别的程序注入的点击与按键)也录进去,缺省只录真人的输入。助理自己演示一遍时用 */
12
+ injected?: boolean;
11
13
  }
12
14
  export interface RecorderStatus {
13
15
  supported: boolean;
@@ -16,8 +18,10 @@ export interface RecorderStatus {
16
18
  elapsedMs: number;
17
19
  events: number;
18
20
  frames: number;
19
- /** 这次录制带管理员权限 */
21
+ /** 输入由带管理员权限的钩子在收 */
20
22
  elevated: boolean;
23
+ /** 合成输入也在录 */
24
+ injected: boolean;
21
25
  }
22
26
  export interface RecorderCapabilities {
23
27
  supported: boolean;
@@ -35,8 +39,12 @@ export interface RecorderResult {
35
39
  events: number;
36
40
  frames: number;
37
41
  durationMs: number;
38
- stoppedBy: "hotkey" | "api" | "timeout";
42
+ /** error 是录制中途出了错(截不到画面、提权助手退出),原因在 error;轨迹照样写到出错那一刻 */
43
+ stoppedBy: "hotkey" | "api" | "timeout" | "error";
44
+ error: string | null;
45
+ /** 录制的任何一段输入由带管理员权限的钩子收 */
39
46
  elevated: boolean;
47
+ injected: boolean;
40
48
  }
41
49
  export default class SystemRecorder {
42
50
  private transport;
@@ -44,13 +52,14 @@ export default class SystemRecorder {
44
52
  /**
45
53
  * 开始录制用户操作:低层钩子收鼠标键盘、定时截主屏,每个按下/抬起/按键带上前后帧与那一刻的前台窗口。
46
54
  * 只记事实,不做任何手势归并;录制期间每一拍向发起方视图推 `recorder.progress`(RecorderStatus),
47
- * 收尾(F12、超时、stop)写完轨迹后推一次 `recorder.stopped`(RecorderResult),用 ipcRenderer.on 接;
48
- * 录制没有产物就中断了(管理员助手退出)只推一次 active=false 的 `recorder.progress`。
55
+ * 收尾(F12、超时、stop、出错)写完轨迹后推一次 `recorder.stopped`(RecorderResult),用 ipcRenderer.on 接;
56
+ * 出错结束的 stoppedBy 是 "error",原因在 error 里。
49
57
  * 产物落在**本插件的设备空间**里 recordings/<id>/:trajectory.json + frames/*.jpg —— 录到的是整屏画面
50
58
  * 与窗口标题,只属于这台设备,不进工作空间;用 window.file 的 `devicespace` 分类按同样的相对路径读写。
51
59
  *
52
- * @param options `{fps?, stopKey?, maxMs?, elevated?}`,缺省 4 帧/秒、F12 结束、10 分钟上限;
53
- * elevated 为真时经 UAC 申请管理员权限,先用 capabilities() 看要不要。
60
+ * @param options `{fps?, stopKey?, maxMs?, elevated?, injected?}`,缺省 4 帧/秒、F12 结束、10 分钟上限;
61
+ * elevated 为真时经 UAC 申请管理员权限,先用 capabilities() 看要不要;画面一律由宿主截。
62
+ * injected 为真时合成输入也录进去(助理自己演示时用);任务回放这类合成输入缺省不进轨迹。
54
63
  * @returns `{id, dir, relPath, elevated}`。
55
64
  * @throws 平台不支持(目前仅 Windows)、已有录制在进行、钩子安装失败、用户在授权框上取消时抛错。
56
65
  */
@@ -60,15 +69,22 @@ export default class SystemRecorder {
60
69
  relPath: string;
61
70
  elevated: boolean;
62
71
  }>;
72
+ /**
73
+ * 录到一半申请管理员权限:经 UAC 拉起助手,之后的输入由它收,画面与时间轴不断。
74
+ *
75
+ * @returns 换过之后的录制状态;已经带管理员权限就原样返回。
76
+ * @throws 没有进行中的录制、用户在授权框上取消时抛错(录制照常继续)。
77
+ */
78
+ elevate: () => Promise<RecorderStatus>;
63
79
  /**
64
80
  * 结束录制并写出轨迹。按 stopKey 结束的录制不必再调。
65
81
  *
66
- * @returns `{id, dir, relPath, events, frames, durationMs, stoppedBy, elevated}`。
82
+ * @returns `{id, dir, relPath, events, frames, durationMs, stoppedBy, error, elevated, injected}`。
67
83
  * @throws 没有进行中的录制时抛错。
68
84
  */
69
85
  stop: () => Promise<RecorderResult>;
70
86
  /**
71
- * 录制状态:是否支持、是否进行中、已录事件数与帧数、是否带管理员权限。
87
+ * 录制状态:是否支持、是否进行中、已录事件数与帧数、是否带管理员权限、是否在录合成输入。
72
88
  */
73
89
  status: () => Promise<RecorderStatus>;
74
90
  /**