@bettergi/types 0.1.14 → 0.1.15

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.
@@ -1,3 +1,8 @@
1
+ /**
2
+ * 脚本侧 HTML 遮罩全局(ClearScript 宿主对象)。
3
+ * 启用:`import "@bettergi/types/htmlMask/host"` 或整包 `@bettergi/types`。
4
+ * 遮罩页(WebView)侧见 `@bettergi/types/htmlMask/webview`。
5
+ */
1
6
  import "../types/BetterGenshinImpact/Core/Script/Dependence/HtmlMask";
2
7
 
3
8
  declare global {
@@ -0,0 +1,92 @@
1
+ /**
2
+ * HTML 遮罩页(WebView2)侧通信桥类型。
3
+ * 对应宿主 `HtmlMaskWindow` 在 DocumentCreated 时注入的 helper,
4
+ * 与脚本侧 `@bettergi/types/htmlMask/host`(ClearScript `htmlMask` 全局)相对。
5
+ *
6
+ * 启用:`import "@bettergi/types/htmlMask/webview"` 或
7
+ * `/// <reference types="@bettergi/types/htmlMask/webview" />`
8
+ *
9
+ * @see BetterGenshinImpact.View.HtmlMaskWindow
10
+ * @since 0.61.0
11
+ */
12
+
13
+ /**
14
+ * 遮罩页与脚本之间的消息信封
15
+ * 宿主 JSON 使用 camelCase(url / data / requestId)
16
+ * @since 0.61.0
17
+ */
18
+ export interface HtmlMaskWebViewMessage {
19
+ /** 消息路径;页→脚本的 request 与脚本→页的推送均使用 */
20
+ url?: string;
21
+ /** 业务载荷;解析失败时可能不存在 */
22
+ data?: unknown;
23
+ /**
24
+ * 请求-应答关联 ID
25
+ * - 页发起 request 时由注入脚本生成(`__req_*`)
26
+ * - 脚本发起 request 时由宿主生成;页 onMessage 若返回值非 undefined 则自动回传
27
+ */
28
+ requestId?: string;
29
+ }
30
+
31
+ /**
32
+ * 注入到遮罩页的 `window.htmlMask` 助手
33
+ * 内部还含 `_callbacks` / `_seq` / `_dispatch`,属实现细节,不纳入公开类型
34
+ * @since 0.61.0
35
+ */
36
+ export interface HtmlMaskWebView {
37
+ /**
38
+ * 向脚本侧发起请求并等待响应
39
+ * 经 `chrome.webview.postMessage` 送出 `{ url, data, requestId }`;
40
+ * 匹配到带同一 requestId 的入站消息后 resolve 整包对象
41
+ * @param url 消息路径
42
+ * @param data 载荷,省略时按 `{}` 发送
43
+ * @since 0.61.0
44
+ */
45
+ request(url: string, data?: unknown): Promise<HtmlMaskWebViewMessage>;
46
+
47
+ /**
48
+ * 脚本推送到页的消息回调
49
+ * - 入站 JSON 解析成功:参数为消息对象
50
+ * - 解析失败:参数为原始字符串,且仍调用本回调
51
+ * - 若消息带 `requestId` 且返回值不是 `undefined`,助手会将结果
52
+ * (支持 Promise)以 `{ requestId, url: "/__response__", data }` 回传脚本
53
+ * @since 0.61.0
54
+ */
55
+ onMessage: ((msg: HtmlMaskWebViewMessage | string) => unknown) | null;
56
+ }
57
+
58
+ /**
59
+ * WebView2 提供的 `chrome.webview` 子集(遮罩页实际使用的面)
60
+ * @since 0.61.0
61
+ */
62
+ export interface ChromeWebView {
63
+ /**
64
+ * 向宿主发送字符串消息(须为 JSON 文本)
65
+ * @since 0.61.0
66
+ */
67
+ postMessage(message: string): void;
68
+ /**
69
+ * 监听宿主 `PostWebMessageAsString` 推送
70
+ * @since 0.61.0
71
+ */
72
+ addEventListener(type: "message", listener: (event: { data: string }) => void): void;
73
+ }
74
+
75
+ declare global {
76
+ interface Window {
77
+ /**
78
+ * HTML 遮罩页通信桥(宿主注入;非宿主环境可能不存在)
79
+ * @since 0.61.0
80
+ */
81
+ htmlMask?: HtmlMaskWebView;
82
+ /**
83
+ * WebView2 宿主对象;仅 WebView 内可用
84
+ * @since 0.61.0
85
+ */
86
+ chrome?: {
87
+ webview?: ChromeWebView;
88
+ };
89
+ }
90
+ }
91
+
92
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bettergi/types",
3
- "version": "0.1.14",
3
+ "version": "0.1.15",
4
4
  "description": "BetterGI TypeScript 类型定义",
5
5
  "type": "module",
6
6
  "author": "Bread Grocery<https://github.com/breadgrocery>",
@@ -18,6 +18,12 @@
18
18
  "exports": {
19
19
  ".": {
20
20
  "types": "./index.d.ts"
21
+ },
22
+ "./htmlMask/host": {
23
+ "types": "./bindings/htmlMask.d.ts"
24
+ },
25
+ "./htmlMask/webview": {
26
+ "types": "./bindings/htmlMask.webview.d.ts"
21
27
  }
22
28
  },
23
29
  "files": [
@@ -6,15 +6,16 @@ import type {
6
6
  ReferenceTypeTrait,
7
7
  StrongNumeric
8
8
  } from "../../../../Microsoft/ClearScript/HostType";
9
- import "../../../../Microsoft/ClearScript/ScriptObject";
10
9
  import type { VoidResult } from "../../../../Microsoft/ClearScript/VoidResult";
11
10
  import "../../../../System/IDisposable";
11
+ import type { Keys } from "../../../../System/Windows/Forms/Keys";
12
12
 
13
13
  /**
14
14
  * 钩子回报的鼠标按键
15
15
  * @since 0.55.0
16
16
  */
17
17
  export type MouseButton =
18
+ | "None"
18
19
  | "Left" // 左键
19
20
  | "Right" // 右键
20
21
  | "Middle" // 中键
@@ -36,8 +37,9 @@ export interface KeyMouseHook extends ClrHostValue, System.IDisposableInput {
36
37
  * @returns ClearScript 宿主空结果
37
38
  * @since 0.55.0
38
39
  */
39
- onKeyDown(callback: Microsoft.ClearScript.ScriptObject): VoidResult;
40
- onKeyDown(callback: Microsoft.ClearScript.ScriptObject, useCodeOnly: boolean): VoidResult;
40
+ onKeyDown(callback: (keyCode: Keys) => void): VoidResult;
41
+ onKeyDown(callback: (keyCode: Keys) => void, useCodeOnly: true): VoidResult;
42
+ onKeyDown(callback: string, useCodeOnly: false): VoidResult;
41
43
  /**
42
44
  * 注册键盘释放事件回调
43
45
  * @param callback 回调函数
@@ -45,22 +47,23 @@ export interface KeyMouseHook extends ClrHostValue, System.IDisposableInput {
45
47
  * @returns ClearScript 宿主空结果
46
48
  * @since 0.55.0
47
49
  */
48
- onKeyUp(callback: Microsoft.ClearScript.ScriptObject): VoidResult;
49
- onKeyUp(callback: Microsoft.ClearScript.ScriptObject, useCodeOnly: boolean): VoidResult;
50
+ onKeyUp(callback: (keyCode: Keys) => void): VoidResult;
51
+ onKeyUp(callback: (keyCode: Keys) => void, useCodeOnly: true): VoidResult;
52
+ onKeyUp(callback: string, useCodeOnly: false): VoidResult;
50
53
  /**
51
54
  * 注册鼠标按下事件回调
52
55
  * @param callback 回调,参数为按键名与游戏窗口局部坐标
53
56
  * @returns ClearScript 宿主空结果
54
57
  * @since 0.55.0
55
58
  */
56
- onMouseDown(callback: (button: MouseButton, x: number, y: number) => void): VoidResult;
59
+ onMouseDown(callback: (button: MouseButton, localX: number, localY: number) => void): VoidResult;
57
60
  /**
58
61
  * 注册鼠标抬起事件回调
59
62
  * @param callback 回调,参数为按键名与游戏窗口局部坐标
60
63
  * @returns ClearScript 宿主空结果
61
64
  * @since 0.55.0
62
65
  */
63
- onMouseUp(callback: (button: MouseButton, x: number, y: number) => void): VoidResult;
66
+ onMouseUp(callback: (button: MouseButton, localX: number, localY: number) => void): VoidResult;
64
67
  /**
65
68
  * 注册鼠标移动事件回调
66
69
  * @param callback 回调函数
@@ -4,22 +4,84 @@ import type {
4
4
  ReferenceTypeTrait
5
5
  } from "../../../../../Microsoft/ClearScript/HostType";
6
6
  import "../../../../../Microsoft/ClearScript/ScriptObject";
7
+ import "../../../../GameTask/Common/Job/CountInventoryItemParam";
8
+ import "../../../../GameTask/Model/GameUI/GridScreenName";
7
9
 
8
10
  /**
9
- * 独立任务注册名
11
+ * 任务名 → SoloTask.Config(唯一真源;配置一律 inline,无额外 type 名)
12
+ * @see Dispatcher.RunTask switch / BuildFromSoloTaskConfig
13
+ * @since 0.43.1
14
+ */
15
+ export type SoloTaskConfigMap = {
16
+ /** 自动七圣召唤 */
17
+ AutoGeniusInvokation: {
18
+ /** 七圣策略文本;空则回退 UI 设置 */
19
+ strategy?: string;
20
+ };
21
+ /** 自动伐木 */
22
+ AutoWood: void;
23
+ /** 自动战斗 */
24
+ AutoFight: void;
25
+ /** 自动秘境 */
26
+ AutoDomain: void;
27
+ /** 自动首领 */
28
+ AutoBoss: void;
29
+ /** 自动钓鱼 */
30
+ AutoFishing: {
31
+ wholeProcessTimeoutSeconds?: number;
32
+ throwRodTimeOutTimeoutSeconds?: number;
33
+ /**
34
+ * 钓鱼时间策略
35
+ * - 0 全天
36
+ * - 1 白天
37
+ * - 2 夜晚
38
+ * - 3 不调
39
+ */
40
+ fishingTimePolicy?: 0 | 1 | 2 | 3 | number;
41
+ /** 关键节拍是否保存截图(调试用);默认 false */
42
+ saveScreenshotOnKeyTick?: boolean;
43
+ };
44
+ /** 自动烹饪 */
45
+ AutoCook: void;
46
+ /** 自动吃药 */
47
+ AutoEat: {
48
+ foodName?: string | null;
49
+ /**
50
+ * 料理类型
51
+ * - 0 恢复类料理
52
+ * - 1 攻击类料理
53
+ * - 2 冒险类料理
54
+ * - 3 防御类料理
55
+ * - 4 药剂
56
+ * - 5 其他
57
+ */
58
+ foodEffectType?: 0 | 1 | 2 | 3 | 4 | 5 | number;
59
+ };
60
+ /** 统计背包物品 */
61
+ CountInventoryItem: {
62
+ /** gridScreenName 必填 */
63
+ gridScreenName:
64
+ | BetterGenshinImpact.GameTask.Common.Job.CountInventoryItemParam["gridScreenName"]
65
+ | number
66
+ | BetterGenshinImpact.GameTask.Model.GameUI.GridScreenName;
67
+ /** itemName 与 itemNames 互斥 */
68
+ itemName?: string | null;
69
+ itemNames?: readonly string[] | string[];
70
+ };
71
+ };
72
+
73
+ /**
74
+ * 独立任务注册名 = map key;`(string & {})` 保留未知扩展
10
75
  * @since 0.46.0
11
76
  */
12
- export type SoloTaskName =
13
- | "AutoGeniusInvokation" // 自动七圣召唤
14
- | "AutoWood" // 自动伐木
15
- | "AutoFight" // 自动战斗
16
- | "AutoDomain" // 自动秘境
17
- | "AutoBoss" // 自动首领
18
- | "AutoFishing" // 自动钓鱼
19
- | "AutoCook" // 自动烹饪
20
- | "AutoEat" // 自动食用
21
- | "CountInventoryItem" // 统计背包物品
22
- | (string & {});
77
+ export type SoloTaskName = keyof SoloTaskConfigMap | (string & {});
78
+
79
+ export type SoloTaskConfigForName<TName extends SoloTaskName> =
80
+ TName extends keyof SoloTaskConfigMap
81
+ ? SoloTaskConfigMap[TName] extends void
82
+ ? undefined
83
+ : SoloTaskConfigMap[TName]
84
+ : Record<string, unknown>;
23
85
 
24
86
  /**
25
87
  * 独立任务
@@ -34,10 +96,14 @@ export interface SoloTask extends ClrHostValue {
34
96
  */
35
97
  name: SoloTaskName;
36
98
  /**
37
- * 独立任务配置
99
+ * 独立任务配置(CLR 存 `object?`,JS 侧 plain object)
38
100
  * @since 0.43.1
39
101
  */
40
- config: unknown;
102
+ config:
103
+ | Exclude<SoloTaskConfigMap[keyof SoloTaskConfigMap], void>
104
+ | Record<string, unknown>
105
+ | null
106
+ | undefined;
41
107
  }
42
108
 
43
109
  declare global {
@@ -48,18 +114,21 @@ declare global {
48
114
 
49
115
  export interface SoloTaskHostType extends HostType<SoloTask, ReferenceTypeTrait> {
50
116
  /**
51
- * 构造实例
52
- * @param name 独立任务名称
117
+ * 仅名称
53
118
  * @since 0.43.1
54
119
  */
55
120
  new (name: SoloTaskName): SoloTask;
121
+
56
122
  /**
57
- * 构造实例
58
- * @param name 独立任务名称
59
- * @param config 独立任务配置对象
123
+ * 名称 + 配置(按任务名收窄)
60
124
  * @since 0.43.1
61
125
  */
62
- new (name: SoloTaskName, config: Microsoft.ClearScript.ScriptObject): SoloTask;
126
+ new <TName extends SoloTaskName>(
127
+ name: TName,
128
+ config: SoloTaskConfigForName<TName> extends undefined
129
+ ? Record<string, unknown> | undefined
130
+ : SoloTaskConfigForName<TName>
131
+ ): SoloTask;
63
132
  }
64
133
 
65
134
  export {};
@@ -0,0 +1,195 @@
1
+ export type Keys =
2
+ | "None"
3
+ | "LButton"
4
+ | "RButton"
5
+ | "Cancel"
6
+ | "MButton"
7
+ | "XButton1"
8
+ | "XButton2"
9
+ | "Back"
10
+ | "Tab"
11
+ | "LineFeed"
12
+ | "Clear"
13
+ | "Return"
14
+ | "Enter"
15
+ | "ShiftKey"
16
+ | "ControlKey"
17
+ | "Menu"
18
+ | "Pause"
19
+ | "Capital"
20
+ | "CapsLock"
21
+ | "KanaMode"
22
+ | "HanguelMode"
23
+ | "HangulMode"
24
+ | "JunjaMode"
25
+ | "FinalMode"
26
+ | "HanjaMode"
27
+ | "KanjiMode"
28
+ | "Escape"
29
+ | "IMEConvert"
30
+ | "IMENonconvert"
31
+ | "IMEAccept"
32
+ | "IMEAceept"
33
+ | "IMEModeChange"
34
+ | "Space"
35
+ | "Prior"
36
+ | "PageUp"
37
+ | "Next"
38
+ | "PageDown"
39
+ | "End"
40
+ | "Home"
41
+ | "Left"
42
+ | "Up"
43
+ | "Right"
44
+ | "Down"
45
+ | "Select"
46
+ | "Print"
47
+ | "Execute"
48
+ | "Snapshot"
49
+ | "PrintScreen"
50
+ | "Insert"
51
+ | "Delete"
52
+ | "Help"
53
+ | "D0"
54
+ | "D1"
55
+ | "D2"
56
+ | "D3"
57
+ | "D4"
58
+ | "D5"
59
+ | "D6"
60
+ | "D7"
61
+ | "D8"
62
+ | "D9"
63
+ | "A"
64
+ | "B"
65
+ | "C"
66
+ | "D"
67
+ | "E"
68
+ | "F"
69
+ | "G"
70
+ | "H"
71
+ | "I"
72
+ | "J"
73
+ | "K"
74
+ | "L"
75
+ | "M"
76
+ | "N"
77
+ | "O"
78
+ | "P"
79
+ | "Q"
80
+ | "R"
81
+ | "S"
82
+ | "T"
83
+ | "U"
84
+ | "V"
85
+ | "W"
86
+ | "X"
87
+ | "Y"
88
+ | "Z"
89
+ | "LWin"
90
+ | "RWin"
91
+ | "Apps"
92
+ | "Sleep"
93
+ | "NumPad0"
94
+ | "NumPad1"
95
+ | "NumPad2"
96
+ | "NumPad3"
97
+ | "NumPad4"
98
+ | "NumPad5"
99
+ | "NumPad6"
100
+ | "NumPad7"
101
+ | "NumPad8"
102
+ | "NumPad9"
103
+ | "Multiply"
104
+ | "Add"
105
+ | "Separator"
106
+ | "Subtract"
107
+ | "Decimal"
108
+ | "Divide"
109
+ | "F1"
110
+ | "F2"
111
+ | "F3"
112
+ | "F4"
113
+ | "F5"
114
+ | "F6"
115
+ | "F7"
116
+ | "F8"
117
+ | "F9"
118
+ | "F10"
119
+ | "F11"
120
+ | "F12"
121
+ | "F13"
122
+ | "F14"
123
+ | "F15"
124
+ | "F16"
125
+ | "F17"
126
+ | "F18"
127
+ | "F19"
128
+ | "F20"
129
+ | "F21"
130
+ | "F22"
131
+ | "F23"
132
+ | "F24"
133
+ | "NumLock"
134
+ | "Scroll"
135
+ | "LShiftKey"
136
+ | "RShiftKey"
137
+ | "LControlKey"
138
+ | "RControlKey"
139
+ | "LMenu"
140
+ | "RMenu"
141
+ | "BrowserBack"
142
+ | "BrowserForward"
143
+ | "BrowserRefresh"
144
+ | "BrowserStop"
145
+ | "BrowserSearch"
146
+ | "BrowserFavorites"
147
+ | "BrowserHome"
148
+ | "VolumeMute"
149
+ | "VolumeDown"
150
+ | "VolumeUp"
151
+ | "MediaNextTrack"
152
+ | "MediaPreviousTrack"
153
+ | "MediaStop"
154
+ | "MediaPlayPause"
155
+ | "LaunchMail"
156
+ | "SelectMedia"
157
+ | "LaunchApplication1"
158
+ | "LaunchApplication2"
159
+ | "OemSemicolon"
160
+ | "Oem1"
161
+ | "Oemplus"
162
+ | "Oemcomma"
163
+ | "OemMinus"
164
+ | "OemPeriod"
165
+ | "OemQuestion"
166
+ | "Oem2"
167
+ | "Oemtilde"
168
+ | "Oem3"
169
+ | "OemOpenBrackets"
170
+ | "Oem4"
171
+ | "OemPipe"
172
+ | "Oem5"
173
+ | "OemCloseBrackets"
174
+ | "Oem6"
175
+ | "OemQuotes"
176
+ | "Oem7"
177
+ | "Oem8"
178
+ | "OemBackslash"
179
+ | "Oem102"
180
+ | "ProcessKey"
181
+ | "Packet"
182
+ | "Attn"
183
+ | "Crsel"
184
+ | "Exsel"
185
+ | "EraseEof"
186
+ | "Play"
187
+ | "Zoom"
188
+ | "NoName"
189
+ | "Pa1"
190
+ | "OemClear"
191
+ | "Shift"
192
+ | "Control"
193
+ | "Alt";
194
+
195
+ export {};