@maaxyz/maa-node 2.2.2-post.11-ci.12043306412

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 (105) hide show
  1. package/agent/arm64-v8a/bin/minicap +0 -0
  2. package/agent/arm64-v8a/bin/minicap-nopie +0 -0
  3. package/agent/arm64-v8a/lib/android-21/minicap.so +0 -0
  4. package/agent/arm64-v8a/lib/android-22/minicap.so +0 -0
  5. package/agent/arm64-v8a/lib/android-23/minicap.so +0 -0
  6. package/agent/arm64-v8a/lib/android-24/minicap.so +0 -0
  7. package/agent/arm64-v8a/lib/android-25/minicap.so +0 -0
  8. package/agent/arm64-v8a/lib/android-26/minicap.so +0 -0
  9. package/agent/arm64-v8a/lib/android-27/minicap.so +0 -0
  10. package/agent/arm64-v8a/lib/android-28/minicap.so +0 -0
  11. package/agent/arm64-v8a/lib/android-29/minicap +0 -0
  12. package/agent/arm64-v8a/lib/android-29/minicap-nopie +0 -0
  13. package/agent/arm64-v8a/lib/android-29/minicap.so +0 -0
  14. package/agent/arm64-v8a/lib/android-30/minicap.so +0 -0
  15. package/agent/arm64-v8a/lib/android-31/minicap.so +0 -0
  16. package/agent/arm64-v8a/minitouch +0 -0
  17. package/agent/armeabi/minitouch +0 -0
  18. package/agent/armeabi-v7a/bin/minicap +0 -0
  19. package/agent/armeabi-v7a/bin/minicap-nopie +0 -0
  20. package/agent/armeabi-v7a/lib/android-10/minicap.so +0 -0
  21. package/agent/armeabi-v7a/lib/android-14/minicap.so +0 -0
  22. package/agent/armeabi-v7a/lib/android-15/minicap.so +0 -0
  23. package/agent/armeabi-v7a/lib/android-16/minicap.so +0 -0
  24. package/agent/armeabi-v7a/lib/android-17/minicap.so +0 -0
  25. package/agent/armeabi-v7a/lib/android-18/minicap.so +0 -0
  26. package/agent/armeabi-v7a/lib/android-19/minicap.so +0 -0
  27. package/agent/armeabi-v7a/lib/android-21/minicap.so +0 -0
  28. package/agent/armeabi-v7a/lib/android-22/minicap.so +0 -0
  29. package/agent/armeabi-v7a/lib/android-23/minicap.so +0 -0
  30. package/agent/armeabi-v7a/lib/android-24/minicap.so +0 -0
  31. package/agent/armeabi-v7a/lib/android-25/minicap.so +0 -0
  32. package/agent/armeabi-v7a/lib/android-26/minicap.so +0 -0
  33. package/agent/armeabi-v7a/lib/android-27/minicap.so +0 -0
  34. package/agent/armeabi-v7a/lib/android-28/minicap.so +0 -0
  35. package/agent/armeabi-v7a/lib/android-29/minicap +0 -0
  36. package/agent/armeabi-v7a/lib/android-29/minicap-nopie +0 -0
  37. package/agent/armeabi-v7a/lib/android-29/minicap.so +0 -0
  38. package/agent/armeabi-v7a/lib/android-30/minicap.so +0 -0
  39. package/agent/armeabi-v7a/lib/android-31/minicap.so +0 -0
  40. package/agent/armeabi-v7a/lib/android-9/minicap.so +0 -0
  41. package/agent/armeabi-v7a/minitouch +0 -0
  42. package/agent/universal/maatouch +0 -0
  43. package/agent/x86/bin/minicap +0 -0
  44. package/agent/x86/bin/minicap-nopie +0 -0
  45. package/agent/x86/lib/android-14/minicap.so +0 -0
  46. package/agent/x86/lib/android-15/minicap.so +0 -0
  47. package/agent/x86/lib/android-16/minicap.so +0 -0
  48. package/agent/x86/lib/android-17/minicap.so +0 -0
  49. package/agent/x86/lib/android-18/minicap.so +0 -0
  50. package/agent/x86/lib/android-19/minicap.so +0 -0
  51. package/agent/x86/lib/android-21/minicap.so +0 -0
  52. package/agent/x86/lib/android-22/minicap.so +0 -0
  53. package/agent/x86/lib/android-23/minicap.so +0 -0
  54. package/agent/x86/lib/android-24/minicap.so +0 -0
  55. package/agent/x86/lib/android-25/minicap.so +0 -0
  56. package/agent/x86/lib/android-26/minicap.so +0 -0
  57. package/agent/x86/lib/android-27/minicap.so +0 -0
  58. package/agent/x86/lib/android-28/minicap.so +0 -0
  59. package/agent/x86/lib/android-29/minicap +0 -0
  60. package/agent/x86/lib/android-29/minicap-nopie +0 -0
  61. package/agent/x86/lib/android-29/minicap.so +0 -0
  62. package/agent/x86/lib/android-31/minicap.so +0 -0
  63. package/agent/x86/minitouch +0 -0
  64. package/agent/x86_64/bin/minicap +0 -0
  65. package/agent/x86_64/bin/minicap-nopie +0 -0
  66. package/agent/x86_64/lib/android-21/minicap.so +0 -0
  67. package/agent/x86_64/lib/android-22/minicap.so +0 -0
  68. package/agent/x86_64/lib/android-23/minicap.so +0 -0
  69. package/agent/x86_64/lib/android-24/minicap.so +0 -0
  70. package/agent/x86_64/lib/android-25/minicap.so +0 -0
  71. package/agent/x86_64/lib/android-26/minicap.so +0 -0
  72. package/agent/x86_64/lib/android-27/minicap.so +0 -0
  73. package/agent/x86_64/lib/android-28/minicap.so +0 -0
  74. package/agent/x86_64/lib/android-29/minicap +0 -0
  75. package/agent/x86_64/lib/android-29/minicap-nopie +0 -0
  76. package/agent/x86_64/lib/android-29/minicap.so +0 -0
  77. package/agent/x86_64/lib/android-31/minicap.so +0 -0
  78. package/agent/x86_64/minitouch +0 -0
  79. package/dist/context.d.ts +52 -0
  80. package/dist/controller.d.ts +105 -0
  81. package/dist/global.d.ts +10 -0
  82. package/dist/index.d.ts +9 -0
  83. package/dist/index.js +1021 -0
  84. package/dist/job.d.ts +23 -0
  85. package/dist/maa.d.ts +365 -0
  86. package/dist/pi.d.ts +9 -0
  87. package/dist/pipeline.d.ts +249 -0
  88. package/dist/resource.d.ts +35 -0
  89. package/dist/tasker.d.ts +128 -0
  90. package/dist/types.d.ts +26 -0
  91. package/package.json +25 -0
  92. package/scripts/build.mjs +20 -0
  93. package/src/context.ts +78 -0
  94. package/src/controller.ts +366 -0
  95. package/src/global.ts +49 -0
  96. package/src/index.ts +9 -0
  97. package/src/job.ts +68 -0
  98. package/src/maa.d.ts +365 -0
  99. package/src/maa.js +27 -0
  100. package/src/pi.ts +61 -0
  101. package/src/pipeline.ts +694 -0
  102. package/src/resource.ts +166 -0
  103. package/src/tasker.ts +229 -0
  104. package/src/types.ts +30 -0
  105. package/tsconfig.json +9 -0
@@ -0,0 +1,166 @@
1
+ import { Context } from './context'
2
+ import { Job, JobSource } from './job'
3
+ import maa from './maa'
4
+ import {
5
+ CustomActionCallback,
6
+ CustomActionSelf,
7
+ CustomRecognizerCallback,
8
+ CustomRecognizerSelf
9
+ } from './types'
10
+
11
+ export type ResourceNotify = { res_id: maa.ResId; path: string } & (
12
+ | {
13
+ msg: 'StartLoading'
14
+ }
15
+ | {
16
+ msg: 'LoadingCompleted' | 'LoadingFailed'
17
+ hash: string
18
+ }
19
+ )
20
+
21
+ export class ResourceBase {
22
+ handle: maa.ResourceHandle
23
+ #source: JobSource<maa.ResId>
24
+
25
+ notify(message: string, details_json: string): maa.MaybePromise<void> {}
26
+
27
+ set parsed_notify(cb: (msg: ResourceNotify) => maa.MaybePromise<void>) {
28
+ this.notify = (msg, details) => {
29
+ return cb({
30
+ msg: msg.replace(/^Resource\./, '') as any,
31
+ ...JSON.parse(details)
32
+ })
33
+ }
34
+ }
35
+
36
+ constructor(handle: maa.ResourceHandle) {
37
+ this.handle = handle
38
+ this.#source = {
39
+ status: id => maa.resource_status(this.handle, id),
40
+ wait: id => maa.resource_wait(this.handle, id)
41
+ }
42
+ }
43
+
44
+ destroy() {
45
+ maa.resource_destroy(this.handle)
46
+ }
47
+
48
+ set inference_device(id: 'cpu' | 'auto' | number) {
49
+ switch (id) {
50
+ case 'cpu':
51
+ id = -2
52
+ break
53
+ case 'auto':
54
+ id = -1
55
+ break
56
+ }
57
+ if (!maa.resource_set_option_inference_device(this.handle, id)) {
58
+ throw 'Resource set inference_device failed'
59
+ }
60
+ }
61
+
62
+ register_custom_recognizer(name: string, func: CustomRecognizerCallback) {
63
+ if (
64
+ !maa.resource_register_custom_recognition(
65
+ this.handle,
66
+ name,
67
+ (context, id, task, name, param, image) => {
68
+ const self: CustomRecognizerSelf = {
69
+ context: new Context(context),
70
+ id,
71
+ task,
72
+ name,
73
+ param: JSON.parse(param),
74
+ image
75
+ }
76
+ return func.apply(self, [self])
77
+ }
78
+ )
79
+ ) {
80
+ throw 'Resource register_custom_recognition failed'
81
+ }
82
+ }
83
+
84
+ unregister_custom_recognizer(name: string) {
85
+ if (!maa.resource_unregister_custom_recognition(this.handle, name)) {
86
+ throw 'Resource unregister_custom_recognition failed'
87
+ }
88
+ }
89
+
90
+ clear_custom_recognizer() {
91
+ if (!maa.resource_clear_custom_recognition(this.handle)) {
92
+ throw 'Resource clear_custom_recognition failed'
93
+ }
94
+ }
95
+
96
+ register_custom_action(name: string, func: CustomActionCallback) {
97
+ if (
98
+ !maa.resource_register_custom_action(
99
+ this.handle,
100
+ name,
101
+ (context, id, task, name, param, recoId, box) => {
102
+ const self: CustomActionSelf = {
103
+ context: new Context(context),
104
+ id,
105
+ task,
106
+ name,
107
+ param: JSON.parse(param),
108
+ recoId,
109
+ box
110
+ }
111
+ return func.apply(self, [self])
112
+ }
113
+ )
114
+ ) {
115
+ throw 'Resource register_custom_action failed'
116
+ }
117
+ }
118
+
119
+ unregister_custom_action(name: string) {
120
+ if (!maa.resource_unregister_custom_action(this.handle, name)) {
121
+ throw 'Resource unregister_custom_action failed'
122
+ }
123
+ }
124
+
125
+ clear_custom_action() {
126
+ if (!maa.resource_clear_custom_action(this.handle)) {
127
+ throw 'Resource clear_custom_action failed'
128
+ }
129
+ }
130
+
131
+ post_path(path: string) {
132
+ return new Job(this.#source, maa.resource_post_path(this.handle, path))
133
+ }
134
+
135
+ clear() {
136
+ if (!maa.resource_clear(this.handle)) {
137
+ throw 'Resource clear failed'
138
+ }
139
+ }
140
+
141
+ get loaded() {
142
+ return maa.resource_loaded(this.handle)
143
+ }
144
+
145
+ get hash() {
146
+ return maa.resource_get_hash(this.handle)
147
+ }
148
+
149
+ get task_list() {
150
+ return maa.resource_get_task_list(this.handle)
151
+ }
152
+ }
153
+
154
+ export class Resource extends ResourceBase {
155
+ constructor() {
156
+ let ws: WeakRef<this>
157
+ const h = maa.resource_create((message, details_json) => {
158
+ ws.deref()?.notify(message, details_json)
159
+ })
160
+ if (!h) {
161
+ throw 'Resource create failed'
162
+ }
163
+ super(h)
164
+ ws = new WeakRef(this)
165
+ }
166
+ }
package/src/tasker.ts ADDED
@@ -0,0 +1,229 @@
1
+ import { ControllerBase } from './controller'
2
+ import { Job, JobSource } from './job'
3
+ import maa from './maa'
4
+ import { ResourceBase } from './resource'
5
+
6
+ type TaskDetail = ReturnType<TaskerBase['task_detail']>
7
+
8
+ class TaskJob extends Job<maa.TaskId, JobSource<maa.TaskId>> {
9
+ #tasker: TaskerBase
10
+
11
+ constructor(tasker: TaskerBase, source: JobSource<maa.TaskId>, id: maa.TaskId) {
12
+ super(source, id)
13
+
14
+ this.#tasker = tasker
15
+ }
16
+
17
+ get() {
18
+ if (this.done) {
19
+ return this.#tasker.task_detail(this.id)
20
+ } else {
21
+ return null
22
+ }
23
+ }
24
+
25
+ wait() {
26
+ const superPro = super.wait()
27
+ const pro = superPro as typeof superPro & {
28
+ get: () => Promise<TaskDetail>
29
+ }
30
+ pro.get = () => {
31
+ return new Promise(resolve => {
32
+ pro.then(self => {
33
+ resolve(self.get())
34
+ })
35
+ })
36
+ }
37
+ return pro
38
+ }
39
+ }
40
+
41
+ export type TaskerNotify = {
42
+ task_id: maa.TaskId
43
+ entry: string
44
+ hash: string
45
+ uuid: string
46
+ } & (
47
+ | {
48
+ msg: 'Task.Started' | 'Task.Completed' | 'Task.Failed'
49
+ }
50
+ | {
51
+ msg: 'Debug.RecognitionResult' | 'Debug.Hit'
52
+ current: string
53
+ recognition: {
54
+ reco_id: maa.RecoId
55
+ name: string
56
+ /**
57
+ * Won't be `null` for msg `Debug.Hit`
58
+ */
59
+ box: maa.FlatRect | null
60
+ detail: string
61
+ }
62
+ }
63
+ | {
64
+ msg: 'Focus.ReadyToRun' | 'Focus.Completed' | 'Debug.ReadyToRun' | 'Debug.Completed'
65
+ current: string
66
+ node: {
67
+ node_id: maa.NodeId
68
+ name: string
69
+ reco_id: maa.RecoId
70
+ times: number
71
+ completed: boolean
72
+ }
73
+ }
74
+ | {
75
+ msg: 'Debug.ListToRecognize' | 'Debug.MissAll'
76
+ current: string
77
+ list: string[]
78
+ }
79
+ )
80
+
81
+ export class TaskerBase {
82
+ handle: maa.TaskerHandle
83
+ #source: JobSource<maa.TaskId>
84
+
85
+ notify(message: string, details_json: string): maa.MaybePromise<void> {}
86
+
87
+ set parsed_notify(cb: (msg: TaskerNotify) => maa.MaybePromise<void>) {
88
+ this.notify = (msg, details) => {
89
+ return cb({
90
+ msg: msg.replace(/^Task(?:er)?\./, '') as any,
91
+ ...JSON.parse(details)
92
+ })
93
+ }
94
+ }
95
+
96
+ constructor(handle: maa.TaskerHandle) {
97
+ this.handle = handle
98
+ this.#source = {
99
+ status: id => maa.tasker_status(this.handle, id),
100
+ wait: id => maa.tasker_wait(this.handle, id)
101
+ }
102
+ }
103
+
104
+ destroy() {
105
+ maa.tasker_destroy(this.handle)
106
+ }
107
+
108
+ bind(slave: ControllerBase | ResourceBase) {
109
+ let ret: boolean
110
+ if (slave instanceof ControllerBase) {
111
+ ret = maa.tasker_bind_controller(this.handle, slave.handle)
112
+ } else {
113
+ ret = maa.tasker_bind_resource(this.handle, slave.handle)
114
+ }
115
+ if (!ret) {
116
+ throw 'Tasker bind failed'
117
+ }
118
+ }
119
+
120
+ post_pipeline(entry: string, param: Record<string, unknown> = {}) {
121
+ return new TaskJob(
122
+ this,
123
+ this.#source,
124
+ maa.tasker_post_pipeline(this.handle, entry, JSON.stringify(param))
125
+ )
126
+ }
127
+
128
+ get inited() {
129
+ return maa.tasker_inited(this.handle)
130
+ }
131
+
132
+ get running() {
133
+ return maa.tasker_running(this.handle)
134
+ }
135
+
136
+ post_stop() {
137
+ if (!maa.tasker_post_stop(this.handle)) {
138
+ throw 'Tasker post_stop failed'
139
+ }
140
+ }
141
+
142
+ get resource() {
143
+ const res = maa.tasker_get_resource(this.handle)
144
+ if (res) {
145
+ return new ResourceBase(res)
146
+ } else {
147
+ return null
148
+ }
149
+ }
150
+
151
+ get controller() {
152
+ const ctrl = maa.tasker_get_controller(this.handle)
153
+ if (ctrl) {
154
+ return new ControllerBase(ctrl)
155
+ } else {
156
+ return null
157
+ }
158
+ }
159
+
160
+ clear_cache() {
161
+ if (!maa.tasker_clear_cache(this.handle)) {
162
+ throw 'Tasker clear_cache failed'
163
+ }
164
+ }
165
+
166
+ recognition_detail(id: maa.RecoId) {
167
+ const dt = maa.tasker_get_recognition_detail(this.handle, id)
168
+ if (dt) {
169
+ const [name, algorithm, hit, box, detail, raw, draws] = dt
170
+ return {
171
+ name,
172
+ algorithm,
173
+ hit,
174
+ box,
175
+ detail,
176
+ raw,
177
+ draws
178
+ }
179
+ } else {
180
+ return null
181
+ }
182
+ }
183
+
184
+ node_detail(id: maa.NodeId) {
185
+ const dt = maa.tasker_get_node_detail(this.handle, id)
186
+ if (dt) {
187
+ const [name, reco_id, completed] = dt
188
+ return {
189
+ name,
190
+ reco: this.recognition_detail(reco_id),
191
+ completed
192
+ }
193
+ } else {
194
+ return null
195
+ }
196
+ }
197
+
198
+ task_detail(id: maa.TaskId) {
199
+ const dt = maa.tasker_get_task_detail(this.handle, id)
200
+ if (dt) {
201
+ const [entry, node_ids, status] = dt
202
+ return {
203
+ entry,
204
+ nodes: node_ids.map(i => this.node_detail(i)),
205
+ status
206
+ }
207
+ } else {
208
+ return null
209
+ }
210
+ }
211
+
212
+ latest_node(task: string) {
213
+ return maa.tasker_get_latest_node(this.handle, task)
214
+ }
215
+ }
216
+
217
+ export class Tasker extends TaskerBase {
218
+ constructor() {
219
+ let ws: WeakRef<this>
220
+ const h = maa.tasker_create((message, details_json) => {
221
+ ws.deref()?.notify(message, details_json)
222
+ })
223
+ if (!h) {
224
+ throw 'Tasker create failed'
225
+ }
226
+ super(h)
227
+ ws = new WeakRef(this)
228
+ }
229
+ }
package/src/types.ts ADDED
@@ -0,0 +1,30 @@
1
+ import { Context } from './context'
2
+ import maa from './maa'
3
+
4
+ export interface CustomRecognizerSelf {
5
+ context: Context
6
+ id: maa.TaskId
7
+ task: string
8
+ name: string
9
+ param: unknown
10
+ image: maa.ImageData
11
+ }
12
+
13
+ export interface CustomActionSelf {
14
+ context: Context
15
+ id: maa.TaskId
16
+ task: string
17
+ name: string
18
+ param: unknown
19
+ recoId: maa.RecoId
20
+ box: maa.Rect
21
+ }
22
+
23
+ type CustomCallback<Self, Ret> = (this: Self, self: Self) => maa.MaybePromise<Ret>
24
+
25
+ export type CustomRecognizerCallback = CustomCallback<
26
+ CustomRecognizerSelf,
27
+ [out_box: maa.Rect, out_detail: string] | null
28
+ >
29
+
30
+ export type CustomActionCallback = CustomCallback<CustomActionSelf, boolean>
package/tsconfig.json ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "@tsconfig/node20/tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "dist",
5
+ "declaration": true,
6
+ "emitDeclarationOnly": true
7
+ },
8
+ "include": ["src/**/*.ts"]
9
+ }