winui-svelte 0.0.6 → 0.0.7

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 (281) hide show
  1. package/API.md +390 -3
  2. package/README.md +4 -0
  3. package/dist/app/launch-command.d.ts +11 -6
  4. package/dist/app/launch-command.d.ts.map +1 -1
  5. package/dist/app/launch-command.js +16 -5
  6. package/dist/app/launch-command.js.map +1 -1
  7. package/dist/app/tray-instance.d.ts +4 -3
  8. package/dist/app/tray-instance.d.ts.map +1 -1
  9. package/dist/app/tray-instance.js +7 -5
  10. package/dist/app/tray-instance.js.map +1 -1
  11. package/dist/automation/backend.d.ts +51 -0
  12. package/dist/automation/backend.d.ts.map +1 -0
  13. package/dist/automation/backend.js +5 -0
  14. package/dist/automation/backend.js.map +1 -0
  15. package/dist/automation/client.d.ts +97 -0
  16. package/dist/automation/client.d.ts.map +1 -0
  17. package/dist/automation/client.js +203 -0
  18. package/dist/automation/client.js.map +1 -0
  19. package/dist/automation/ids.d.ts +90 -0
  20. package/dist/automation/ids.d.ts.map +1 -0
  21. package/dist/automation/ids.js +84 -0
  22. package/dist/automation/ids.js.map +1 -0
  23. package/dist/automation/index.d.ts +13 -0
  24. package/dist/automation/index.d.ts.map +1 -0
  25. package/dist/automation/index.js +8 -0
  26. package/dist/automation/index.js.map +1 -0
  27. package/dist/automation/native.d.ts +11 -0
  28. package/dist/automation/native.d.ts.map +1 -0
  29. package/dist/automation/native.js +595 -0
  30. package/dist/automation/native.js.map +1 -0
  31. package/dist/automation/text.d.ts +50 -0
  32. package/dist/automation/text.d.ts.map +1 -0
  33. package/dist/automation/text.js +110 -0
  34. package/dist/automation/text.js.map +1 -0
  35. package/dist/automation/with-client.d.ts +13 -0
  36. package/dist/automation/with-client.d.ts.map +1 -0
  37. package/dist/automation/with-client.js +19 -0
  38. package/dist/automation/with-client.js.map +1 -0
  39. package/dist/automation/worker-job.d.ts +32 -0
  40. package/dist/automation/worker-job.d.ts.map +1 -0
  41. package/dist/automation/worker-job.js +69 -0
  42. package/dist/automation/worker-job.js.map +1 -0
  43. package/dist/automation/worker.d.ts +44 -0
  44. package/dist/automation/worker.d.ts.map +1 -0
  45. package/dist/automation/worker.js +70 -0
  46. package/dist/automation/worker.js.map +1 -0
  47. package/dist/bindings/.dynwinrt-managed +1 -1
  48. package/dist/chrome/context-menus/context-menu-schema.d.ts +4 -4
  49. package/dist/chrome/notifications/notification-schema.d.ts +2 -2
  50. package/dist/components/hand-written/Window.svelte +2 -0
  51. package/dist/components/window-context.d.ts +14 -0
  52. package/dist/components/window-context.d.ts.map +1 -0
  53. package/dist/components/window-context.js +20 -0
  54. package/dist/components/window-context.js.map +1 -0
  55. package/dist/downloads/chrome-downloads.d.ts +8 -0
  56. package/dist/downloads/chrome-downloads.d.ts.map +1 -1
  57. package/dist/downloads/chrome-downloads.js +35 -6
  58. package/dist/downloads/chrome-downloads.js.map +1 -1
  59. package/dist/downloads/download-record.d.ts +3 -2
  60. package/dist/downloads/download-record.d.ts.map +1 -1
  61. package/dist/downloads/download-record.js.map +1 -1
  62. package/dist/downloads/download-transfer.d.ts.map +1 -1
  63. package/dist/downloads/download-transfer.js +3 -3
  64. package/dist/downloads/download-transfer.js.map +1 -1
  65. package/dist/downloads/download-types.d.ts +3 -1
  66. package/dist/downloads/download-types.d.ts.map +1 -1
  67. package/dist/downloads/download-types.js.map +1 -1
  68. package/dist/downloads/fetch-to-file.d.ts +11 -6
  69. package/dist/downloads/fetch-to-file.d.ts.map +1 -1
  70. package/dist/downloads/fetch-to-file.js +45 -16
  71. package/dist/downloads/fetch-to-file.js.map +1 -1
  72. package/dist/downloads/taskbar-progress.d.ts +3 -18
  73. package/dist/downloads/taskbar-progress.d.ts.map +1 -1
  74. package/dist/downloads/taskbar-progress.js +1 -38
  75. package/dist/downloads/taskbar-progress.js.map +1 -1
  76. package/dist/enums.d.ts +1 -0
  77. package/dist/enums.d.ts.map +1 -1
  78. package/dist/enums.js +1 -0
  79. package/dist/enums.js.map +1 -1
  80. package/dist/forms/form-field-props.d.ts +2 -2
  81. package/dist/progress/TaskbarProgress.d.svelte.ts +6 -0
  82. package/dist/progress/TaskbarProgress.svelte +32 -0
  83. package/dist/progress/aggregate.d.ts +23 -0
  84. package/dist/progress/aggregate.d.ts.map +1 -0
  85. package/dist/progress/aggregate.js +59 -0
  86. package/dist/progress/aggregate.js.map +1 -0
  87. package/dist/progress/core.d.ts +14 -0
  88. package/dist/progress/core.d.ts.map +1 -0
  89. package/dist/progress/core.js +8 -0
  90. package/dist/progress/core.js.map +1 -0
  91. package/dist/progress/index.d.ts +5 -0
  92. package/dist/progress/index.d.ts.map +1 -0
  93. package/dist/progress/index.js +4 -0
  94. package/dist/progress/index.js.map +1 -0
  95. package/dist/progress/progress-event.d.ts +18 -0
  96. package/dist/progress/progress-event.d.ts.map +1 -0
  97. package/dist/progress/progress-event.js +19 -0
  98. package/dist/progress/progress-event.js.map +1 -0
  99. package/dist/progress/progress-operation.d.ts +163 -0
  100. package/dist/progress/progress-operation.d.ts.map +1 -0
  101. package/dist/progress/progress-operation.js +356 -0
  102. package/dist/progress/progress-operation.js.map +1 -0
  103. package/dist/progress/progress-registry.d.ts +89 -0
  104. package/dist/progress/progress-registry.d.ts.map +1 -0
  105. package/dist/progress/progress-registry.js +187 -0
  106. package/dist/progress/progress-registry.js.map +1 -0
  107. package/dist/progress/progress-source.d.ts +46 -0
  108. package/dist/progress/progress-source.d.ts.map +1 -0
  109. package/dist/progress/progress-source.js +31 -0
  110. package/dist/progress/progress-source.js.map +1 -0
  111. package/dist/progress/progress-state.d.ts +54 -0
  112. package/dist/progress/progress-state.d.ts.map +1 -0
  113. package/dist/progress/progress-state.js +35 -0
  114. package/dist/progress/progress-state.js.map +1 -0
  115. package/dist/progress/progress-text.d.ts +10 -0
  116. package/dist/progress/progress-text.d.ts.map +1 -0
  117. package/dist/progress/progress-text.js +23 -0
  118. package/dist/progress/progress-text.js.map +1 -0
  119. package/dist/progress/scoped-source.d.ts +31 -0
  120. package/dist/progress/scoped-source.d.ts.map +1 -0
  121. package/dist/progress/scoped-source.js +46 -0
  122. package/dist/progress/scoped-source.js.map +1 -0
  123. package/dist/progress/taskbar-progress-props.d.ts +15 -0
  124. package/dist/progress/taskbar-progress-props.d.ts.map +1 -0
  125. package/dist/progress/taskbar-progress-props.js +2 -0
  126. package/dist/progress/taskbar-progress-props.js.map +1 -0
  127. package/dist/progress/taskbar-progress.d.ts +44 -0
  128. package/dist/progress/taskbar-progress.d.ts.map +1 -0
  129. package/dist/progress/taskbar-progress.js +62 -0
  130. package/dist/progress/taskbar-progress.js.map +1 -0
  131. package/dist/progress/track-operation.d.ts +36 -0
  132. package/dist/progress/track-operation.d.ts.map +1 -0
  133. package/dist/progress/track-operation.js +53 -0
  134. package/dist/progress/track-operation.js.map +1 -0
  135. package/dist/tray/menu-svelte/TrayMenuOperations.d.svelte.ts +6 -0
  136. package/dist/tray/menu-svelte/TrayMenuOperations.svelte +33 -0
  137. package/dist/tray/menu-svelte/TrayMenuProgress.d.svelte.ts +6 -0
  138. package/dist/tray/menu-svelte/TrayMenuProgress.svelte +28 -0
  139. package/dist/tray/menu-svelte/index.d.ts +3 -1
  140. package/dist/tray/menu-svelte/index.d.ts.map +1 -1
  141. package/dist/tray/menu-svelte/index.js +2 -0
  142. package/dist/tray/menu-svelte/index.js.map +1 -1
  143. package/dist/tray/menu-svelte/menu-node.d.ts +5 -5
  144. package/dist/tray/menu-svelte/menu-props.d.ts +16 -0
  145. package/dist/tray/menu-svelte/menu-props.d.ts.map +1 -1
  146. package/dist/tray/menu-svelte/operation-ids.d.ts +8 -0
  147. package/dist/tray/menu-svelte/operation-ids.d.ts.map +1 -0
  148. package/dist/tray/menu-svelte/operation-ids.js +20 -0
  149. package/dist/tray/menu-svelte/operation-ids.js.map +1 -0
  150. package/dist/tray/native.d.ts +6 -1
  151. package/dist/tray/native.d.ts.map +1 -1
  152. package/dist/tray/native.js +22 -32
  153. package/dist/tray/native.js.map +1 -1
  154. package/dist/tray/pointer-share.d.ts +27 -0
  155. package/dist/tray/pointer-share.d.ts.map +1 -0
  156. package/dist/tray/pointer-share.js +61 -0
  157. package/dist/tray/pointer-share.js.map +1 -0
  158. package/dist/tray/standalone/index.d.ts +1 -0
  159. package/dist/tray/standalone/index.d.ts.map +1 -1
  160. package/dist/tray/standalone/index.js +1 -0
  161. package/dist/tray/standalone/index.js.map +1 -1
  162. package/dist/tray/standalone/menu-theme.d.ts +38 -0
  163. package/dist/tray/standalone/menu-theme.d.ts.map +1 -0
  164. package/dist/tray/standalone/menu-theme.js +74 -0
  165. package/dist/tray/standalone/menu-theme.js.map +1 -0
  166. package/dist/tray/standalone/native.d.ts +5 -1
  167. package/dist/tray/standalone/native.d.ts.map +1 -1
  168. package/dist/tray/standalone/native.js +5 -1
  169. package/dist/tray/standalone/native.js.map +1 -1
  170. package/dist/tray/standalone/standalone-tray.d.ts +13 -0
  171. package/dist/tray/standalone/standalone-tray.d.ts.map +1 -1
  172. package/dist/tray/standalone/standalone-tray.js +23 -1
  173. package/dist/tray/standalone/standalone-tray.js.map +1 -1
  174. package/dist/tray/tray-core.d.ts.map +1 -1
  175. package/dist/tray/tray-core.js +1 -0
  176. package/dist/tray/tray-core.js.map +1 -1
  177. package/dist/tray/tray-manifest.d.ts +44 -4
  178. package/dist/tray/tray-manifest.d.ts.map +1 -1
  179. package/dist/tray/tray-manifest.js +48 -4
  180. package/dist/tray/tray-manifest.js.map +1 -1
  181. package/dist/vite/entrypoints/build-tray.d.ts +3 -1
  182. package/dist/vite/entrypoints/build-tray.d.ts.map +1 -1
  183. package/dist/vite/entrypoints/build-tray.js +22 -16
  184. package/dist/vite/entrypoints/build-tray.js.map +1 -1
  185. package/dist/vite/entrypoints/extract-tray.d.ts +7 -6
  186. package/dist/vite/entrypoints/extract-tray.d.ts.map +1 -1
  187. package/dist/vite/entrypoints/extract-tray.js +35 -15
  188. package/dist/vite/entrypoints/extract-tray.js.map +1 -1
  189. package/dist/vite/entrypoints/tray-module.d.ts +2 -1
  190. package/dist/vite/entrypoints/tray-module.d.ts.map +1 -1
  191. package/dist/vite/entrypoints/tray-module.js +8 -4
  192. package/dist/vite/entrypoints/tray-module.js.map +1 -1
  193. package/dist/web-apis/file-read.d.ts +14 -0
  194. package/dist/web-apis/file-read.d.ts.map +1 -0
  195. package/dist/web-apis/file-read.js +37 -0
  196. package/dist/web-apis/file-read.js.map +1 -0
  197. package/dist/web-apis/file-system.d.ts +9 -0
  198. package/dist/web-apis/file-system.d.ts.map +1 -1
  199. package/dist/web-apis/file-system.js +24 -0
  200. package/dist/web-apis/file-system.js.map +1 -1
  201. package/dist/win32-foreground.d.ts +14 -0
  202. package/dist/win32-foreground.d.ts.map +1 -0
  203. package/dist/win32-foreground.js +71 -0
  204. package/dist/win32-foreground.js.map +1 -0
  205. package/dist/window/create-window.d.ts +1 -1
  206. package/dist/window/create-window.d.ts.map +1 -1
  207. package/dist/window/create-window.js +1 -0
  208. package/dist/window/create-window.js.map +1 -1
  209. package/dist/window/foreground-filter.d.ts +71 -0
  210. package/dist/window/foreground-filter.d.ts.map +1 -0
  211. package/dist/window/foreground-filter.js +108 -0
  212. package/dist/window/foreground-filter.js.map +1 -0
  213. package/dist/window/foreground-native.d.ts +25 -0
  214. package/dist/window/foreground-native.d.ts.map +1 -0
  215. package/dist/window/foreground-native.js +88 -0
  216. package/dist/window/foreground-native.js.map +1 -0
  217. package/dist/window/foreground.d.ts +49 -0
  218. package/dist/window/foreground.d.ts.map +1 -0
  219. package/dist/window/foreground.js +78 -0
  220. package/dist/window/foreground.js.map +1 -0
  221. package/dist/window/window-host.svelte.d.ts +1 -1
  222. package/dist/window/window-host.svelte.d.ts.map +1 -1
  223. package/package.json +18 -1
  224. package/src/app/launch-command.ts +19 -5
  225. package/src/app/tray-instance.ts +7 -5
  226. package/src/automation/backend.ts +56 -0
  227. package/src/automation/client.ts +327 -0
  228. package/src/automation/ids.ts +97 -0
  229. package/src/automation/index.ts +23 -0
  230. package/src/automation/native.ts +689 -0
  231. package/src/automation/text.ts +174 -0
  232. package/src/automation/with-client.ts +20 -0
  233. package/src/automation/worker-job.ts +97 -0
  234. package/src/automation/worker.ts +116 -0
  235. package/src/components/window-context.ts +23 -0
  236. package/src/downloads/chrome-downloads.ts +46 -6
  237. package/src/downloads/download-record.ts +3 -2
  238. package/src/downloads/download-transfer.ts +3 -3
  239. package/src/downloads/download-types.ts +3 -0
  240. package/src/downloads/fetch-to-file.ts +47 -17
  241. package/src/downloads/taskbar-progress.ts +3 -49
  242. package/src/enums.ts +1 -0
  243. package/src/progress/TaskbarProgress.d.svelte.ts +6 -0
  244. package/src/progress/aggregate.ts +68 -0
  245. package/src/progress/core.ts +13 -0
  246. package/src/progress/index.ts +4 -0
  247. package/src/progress/progress-event.ts +25 -0
  248. package/src/progress/progress-operation.ts +469 -0
  249. package/src/progress/progress-registry.ts +224 -0
  250. package/src/progress/progress-source.ts +66 -0
  251. package/src/progress/progress-state.ts +72 -0
  252. package/src/progress/progress-text.ts +27 -0
  253. package/src/progress/scoped-source.ts +56 -0
  254. package/src/progress/taskbar-progress-props.ts +18 -0
  255. package/src/progress/taskbar-progress.ts +80 -0
  256. package/src/progress/track-operation.ts +81 -0
  257. package/src/tray/menu-svelte/TrayMenuOperations.d.svelte.ts +6 -0
  258. package/src/tray/menu-svelte/TrayMenuProgress.d.svelte.ts +6 -0
  259. package/src/tray/menu-svelte/index.ts +4 -0
  260. package/src/tray/menu-svelte/menu-props.ts +20 -0
  261. package/src/tray/menu-svelte/operation-ids.ts +21 -0
  262. package/src/tray/native.ts +29 -33
  263. package/src/tray/pointer-share.ts +71 -0
  264. package/src/tray/standalone/index.ts +1 -0
  265. package/src/tray/standalone/menu-theme.ts +90 -0
  266. package/src/tray/standalone/native.ts +5 -1
  267. package/src/tray/standalone/standalone-tray.ts +43 -1
  268. package/src/tray/tray-core.ts +1 -0
  269. package/src/tray/tray-manifest.ts +53 -4
  270. package/src/vite/entrypoints/build-tray.ts +23 -16
  271. package/src/vite/entrypoints/extract-tray.ts +41 -15
  272. package/src/vite/entrypoints/tray-module.ts +8 -4
  273. package/src/web-apis/file-read.ts +43 -0
  274. package/src/web-apis/file-system.ts +33 -0
  275. package/src/win32-foreground.ts +76 -0
  276. package/src/window/create-window.ts +2 -0
  277. package/src/window/foreground-filter.ts +167 -0
  278. package/src/window/foreground-native.ts +93 -0
  279. package/src/window/foreground.ts +106 -0
  280. package/src/window/window-host.svelte.ts +1 -1
  281. package/web-types.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../src/automation/native.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAsC,MAAM,cAAc,CAAC;AA6HnF;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,eA0iBrC"}
@@ -0,0 +1,595 @@
1
+ import { UiaElementUnavailableError } from "./backend.js";
2
+ import { HEADING_LEVEL_FIRST, HEADING_LEVEL_NONE, UiaPatternId, UiaPropertyId } from "./ids.js";
3
+ import { DynWinRtValue, WinGuid } from "@microsoft/dynwinrt";
4
+ import { DynCom, DynComMethodSig, DynComUnsafe } from "@microsoft/dynwinrt/com/unsafe";
5
+ import { DynComRawCleanup, DynComRawMemory, DynComRawPointer } from "@microsoft/dynwinrt/com/unsafe/raw";
6
+ // IUIAutomation and its neighbours (UIAutomationClient.h) have no WinRT form,
7
+ // so the methods are declared at their vtable slots, counted in the order the
8
+ // header declares them after IUnknown's three. Every argument crosses as a
9
+ // raw pointer or integer and every result comes back through memory this file
10
+ // owns, so no BSTR, VARIANT or SAFEARRAY marshalling is trusted: a BSTR is
11
+ // read through its length prefix and freed, a VARIANT is read at its value
12
+ // offset and cleared, and the two arrays are read through their own
13
+ // get_Length and GetElement.
14
+ const CLSID_UI_AUTOMATION = "ff48dba4-60ef-4201-aa87-54103eef594e";
15
+ const IID_AUTOMATION = WinGuid.parse("30cbe57d-d9d0-452a-ab13-7ac5ac4825ee");
16
+ const IID_ELEMENT = WinGuid.parse("d22108aa-8ac5-49a5-837b-37bbb3d7591e");
17
+ const IID_CACHE_REQUEST = WinGuid.parse("b32a92b5-bc25-4078-9c08-d7ee95c48e03");
18
+ const IID_ELEMENT_ARRAY = WinGuid.parse("14314595-b4bc-4055-95f2-58f2e42c9855");
19
+ const IID_TEXT_PATTERN = WinGuid.parse("32eba289-3583-42c9-9c59-3b6d9a1e9b6a");
20
+ const IID_TEXT_RANGE = WinGuid.parse("a543cc6a-f4ae-494b-8239-c814481187a8");
21
+ const IID_TEXT_RANGE_ARRAY = WinGuid.parse("ce4ae76a-e717-4c98-81ea-47371d028eb6");
22
+ const IID_VALUE_PATTERN = WinGuid.parse("a94cd8b1-0844-4cd6-9d2d-640537ab39e9");
23
+ const IID_CONDITION = WinGuid.parse("352ffba8-0973-437c-a61f-f64cafd81df9");
24
+ const AUTOMATION_ELEMENT_FROM_HANDLE_SLOT = 6;
25
+ const AUTOMATION_FOCUSED_ELEMENT_SLOT = 8;
26
+ const AUTOMATION_CONTROL_VIEW_CONDITION_SLOT = 18;
27
+ const AUTOMATION_CREATE_CACHE_REQUEST_SLOT = 20;
28
+ const ELEMENT_FIND_ALL_BUILD_CACHE_SLOT = 8;
29
+ const ELEMENT_GET_CURRENT_PATTERN_AS_SLOT = 14;
30
+ const ELEMENT_GET_CACHED_PROPERTY_VALUE_SLOT = 12;
31
+ const ELEMENT_GET_CURRENT_PROPERTY_VALUE_SLOT = 10;
32
+ const CACHE_REQUEST_ADD_PROPERTY_SLOT = 3;
33
+ const CACHE_REQUEST_PUT_TREE_FILTER_SLOT = 9;
34
+ const ARRAY_LENGTH_SLOT = 3;
35
+ const ARRAY_GET_ELEMENT_SLOT = 4;
36
+ const TEXT_PATTERN_VISIBLE_RANGES_SLOT = 6;
37
+ const TEXT_PATTERN_DOCUMENT_RANGE_SLOT = 7;
38
+ const TEXT_RANGE_GET_TEXT_SLOT = 12;
39
+ const VALUE_PATTERN_VALUE_SLOT = 4;
40
+ const CACHED_OFFSET = 32;
41
+ const ELEMENT_PROCESS_ID_SLOT = 20;
42
+ const ELEMENT_CONTROL_TYPE_SLOT = 21;
43
+ const ELEMENT_NAME_SLOT = 23;
44
+ const ELEMENT_AUTOMATION_ID_SLOT = 29;
45
+ const ELEMENT_CLASS_NAME_SLOT = 30;
46
+ const ELEMENT_IS_OFFSCREEN_SLOT = 38;
47
+ const ELEMENT_BOUNDING_RECTANGLE_SLOT = 43;
48
+ const GETTER_SLOTS = [
49
+ ELEMENT_PROCESS_ID_SLOT,
50
+ ELEMENT_CONTROL_TYPE_SLOT,
51
+ ELEMENT_NAME_SLOT,
52
+ ELEMENT_AUTOMATION_ID_SLOT,
53
+ ELEMENT_CLASS_NAME_SLOT,
54
+ ELEMENT_IS_OFFSCREEN_SLOT,
55
+ ELEMENT_BOUNDING_RECTANGLE_SLOT
56
+ ];
57
+ const TREE_SCOPE_CHILDREN = 2;
58
+ const POINTER_BYTES = 8;
59
+ const RECT_BYTES = 16;
60
+ const RECT_TOP_OFFSET = 4;
61
+ const RECT_RIGHT_OFFSET = 8;
62
+ const RECT_BOTTOM_OFFSET = 12;
63
+ const VARIANT_BYTES = 24;
64
+ const VARIANT_VALUE_OFFSET = 8;
65
+ const BSTR_LENGTH_BYTES = 4;
66
+ const VT_I4 = 3;
67
+ const VT_BOOL = 11;
68
+ const VT_EMPTY = 0;
69
+ const NO_ADDRESS = 0n;
70
+ const UIA_E_ELEMENTNOTAVAILABLE = "80040201";
71
+ const UIA_E_ELEMENTNOTENABLED = "80040200";
72
+ const MAX_BSTR_BYTES = 0x7fffffff;
73
+ function signatureOf(steps) {
74
+ let signature = new DynComMethodSig();
75
+ for (const step of steps) {
76
+ signature = signature.addIn(step === "int" ? DynCom.i32Type() : DynComUnsafe.unclassifiedPointerType());
77
+ }
78
+ return signature;
79
+ }
80
+ function interfaceOf({ name, iid, slots }) {
81
+ let registered = DynComUnsafe.registerIUnknownInterface(name, iid);
82
+ for (const [slot, steps] of Object.entries(slots)) {
83
+ registered = registered.addMethodAt(Number(slot), `${name}${slot}`, signatureOf(steps));
84
+ }
85
+ return registered;
86
+ }
87
+ function isUnavailableMessage(message) {
88
+ const lower = message.toLowerCase();
89
+ return lower.includes(UIA_E_ELEMENTNOTAVAILABLE) || lower.includes(UIA_E_ELEMENTNOTENABLED);
90
+ }
91
+ function addressOf(memory) {
92
+ return DynComUnsafe.pointer(memory.pointer().address);
93
+ }
94
+ function describe(error) {
95
+ return error instanceof Error ? error.message : String(error);
96
+ }
97
+ /**
98
+ * The real UI Automation calls, over `CUIAutomation`. The COM objects are made
99
+ * on the first call and every pointer is released by `dispose`; the thread
100
+ * that calls must already be in a COM apartment (a worker that called
101
+ * `DynCom.initialize`).
102
+ *
103
+ * @returns A backend for `runUiaClient`.
104
+ */
105
+ export function createUiaNativeBackend() {
106
+ const automationInterface = interfaceOf({
107
+ name: "IUIAutomation",
108
+ iid: IID_AUTOMATION,
109
+ slots: {
110
+ [AUTOMATION_ELEMENT_FROM_HANDLE_SLOT]: ["pointer", "pointer"],
111
+ [AUTOMATION_FOCUSED_ELEMENT_SLOT]: ["pointer"],
112
+ [AUTOMATION_CONTROL_VIEW_CONDITION_SLOT]: ["pointer"],
113
+ [AUTOMATION_CREATE_CACHE_REQUEST_SLOT]: ["pointer"]
114
+ }
115
+ });
116
+ const elementSlots = {
117
+ [ELEMENT_FIND_ALL_BUILD_CACHE_SLOT]: ["int", "pointer", "pointer", "pointer"],
118
+ [ELEMENT_GET_CURRENT_PATTERN_AS_SLOT]: ["int", "pointer", "pointer"],
119
+ [ELEMENT_GET_CACHED_PROPERTY_VALUE_SLOT]: ["int", "pointer"],
120
+ [ELEMENT_GET_CURRENT_PROPERTY_VALUE_SLOT]: ["int", "pointer"]
121
+ };
122
+ for (const base of GETTER_SLOTS) {
123
+ elementSlots[base] = ["pointer"];
124
+ elementSlots[base + CACHED_OFFSET] = ["pointer"];
125
+ }
126
+ const elementInterface = interfaceOf({
127
+ name: "IUIAutomationElement",
128
+ iid: IID_ELEMENT,
129
+ slots: elementSlots
130
+ });
131
+ const cacheRequestInterface = interfaceOf({
132
+ name: "IUIAutomationCacheRequest",
133
+ iid: IID_CACHE_REQUEST,
134
+ slots: {
135
+ [CACHE_REQUEST_ADD_PROPERTY_SLOT]: ["int"],
136
+ [CACHE_REQUEST_PUT_TREE_FILTER_SLOT]: ["pointer"]
137
+ }
138
+ });
139
+ const arrayInterface = interfaceOf({
140
+ name: "IUIAutomationElementArray",
141
+ iid: IID_ELEMENT_ARRAY,
142
+ slots: {
143
+ [ARRAY_LENGTH_SLOT]: ["pointer"],
144
+ [ARRAY_GET_ELEMENT_SLOT]: ["int", "pointer"]
145
+ }
146
+ });
147
+ const rangeArrayInterface = interfaceOf({
148
+ name: "IUIAutomationTextRangeArray",
149
+ iid: IID_TEXT_RANGE_ARRAY,
150
+ slots: {
151
+ [ARRAY_LENGTH_SLOT]: ["pointer"],
152
+ [ARRAY_GET_ELEMENT_SLOT]: ["int", "pointer"]
153
+ }
154
+ });
155
+ const textPatternInterface = interfaceOf({
156
+ name: "IUIAutomationTextPattern",
157
+ iid: IID_TEXT_PATTERN,
158
+ slots: {
159
+ [TEXT_PATTERN_VISIBLE_RANGES_SLOT]: ["pointer"],
160
+ [TEXT_PATTERN_DOCUMENT_RANGE_SLOT]: ["pointer"]
161
+ }
162
+ });
163
+ const textRangeInterface = interfaceOf({
164
+ name: "IUIAutomationTextRange",
165
+ iid: IID_TEXT_RANGE,
166
+ slots: {
167
+ [TEXT_RANGE_GET_TEXT_SLOT]: ["int", "pointer"]
168
+ }
169
+ });
170
+ const valuePatternInterface = interfaceOf({
171
+ name: "IUIAutomationValuePattern",
172
+ iid: IID_VALUE_PATTERN,
173
+ slots: {
174
+ [VALUE_PATTERN_VALUE_SLOT]: ["pointer"]
175
+ }
176
+ });
177
+ const held = [];
178
+ const handles = [];
179
+ let automation = null;
180
+ let cacheRequest = null;
181
+ let conditionHeld = null;
182
+ function hold({ address, iid }) {
183
+ const value = DynComUnsafe.adoptOwnedComPointer(address, iid);
184
+ const entry = {
185
+ value,
186
+ address
187
+ };
188
+ held.push(entry);
189
+ return entry;
190
+ }
191
+ function outPointer(call) {
192
+ const memory = DynComRawMemory.allocate(POINTER_BYTES, POINTER_BYTES);
193
+ try {
194
+ call(addressOf(memory));
195
+ return memory.readU64(0);
196
+ }
197
+ finally {
198
+ memory.release();
199
+ }
200
+ }
201
+ function outMemory({ size, read }) {
202
+ const memory = DynComRawMemory.allocate(size, POINTER_BYTES);
203
+ try {
204
+ return read(memory);
205
+ }
206
+ finally {
207
+ memory.release();
208
+ }
209
+ }
210
+ function guard(call) {
211
+ try {
212
+ return call();
213
+ }
214
+ catch (error) {
215
+ const message = describe(error);
216
+ const isUnavailable = isUnavailableMessage(message);
217
+ if (isUnavailable) {
218
+ throw new UiaElementUnavailableError(message);
219
+ }
220
+ throw error;
221
+ }
222
+ }
223
+ function readBstr(address) {
224
+ const isAddressNOADDRESS = address === NO_ADDRESS;
225
+ if (isAddressNOADDRESS) {
226
+ return "";
227
+ }
228
+ const prefix = address - BigInt(BSTR_LENGTH_BYTES);
229
+ const length = DynComRawMemory.fromUnsafeAddress(prefix, BSTR_LENGTH_BYTES, 1).readU32(0);
230
+ const isSane = length <= MAX_BSTR_BYTES;
231
+ const isReadable = isSane && length > 0;
232
+ const text = isReadable
233
+ ? DynComRawMemory.fromUnsafeAddress(address, length, 1).readBytes(0, length).toString("utf16le")
234
+ : "";
235
+ DynComRawCleanup.sysFreeString(DynComRawPointer.fromAddress(address));
236
+ return text;
237
+ }
238
+ function bstrOf({ object, interfaceType, slot, steps }) {
239
+ return guard(() => readBstr(outPointer(out => {
240
+ interfaceType.method(slot).invoke(object.value, [...steps ?? [], out]);
241
+ })));
242
+ }
243
+ function numberOut({ object, slot }) {
244
+ return guard(() => outMemory({
245
+ size: POINTER_BYTES,
246
+ read(memory) {
247
+ elementInterface.method(slot).invoke(object.value, [addressOf(memory)]);
248
+ return memory.readI32(0);
249
+ }
250
+ }));
251
+ }
252
+ function getAutomation() {
253
+ if (automation) {
254
+ return automation;
255
+ }
256
+ const created = DynComUnsafe.coCreateInstance(CLSID_UI_AUTOMATION, IID_AUTOMATION);
257
+ const address = DynComRawPointer.fromManagedBorrowed(created).address;
258
+ const entry = {
259
+ value: created,
260
+ address
261
+ };
262
+ held.push(entry);
263
+ automation = entry;
264
+ return entry;
265
+ }
266
+ function getCacheRequest() {
267
+ if (cacheRequest) {
268
+ return cacheRequest;
269
+ }
270
+ const root = getAutomation();
271
+ const request = hold({
272
+ address: outPointer(out => {
273
+ automationInterface.method(AUTOMATION_CREATE_CACHE_REQUEST_SLOT).invoke(root.value, [out]);
274
+ }),
275
+ iid: IID_CACHE_REQUEST
276
+ });
277
+ const condition = hold({
278
+ address: outPointer(out => {
279
+ automationInterface.method(AUTOMATION_CONTROL_VIEW_CONDITION_SLOT).invoke(root.value, [out]);
280
+ }),
281
+ iid: IID_CONDITION
282
+ });
283
+ const cached = [
284
+ UiaPropertyId.name, UiaPropertyId.className, UiaPropertyId.automationId, UiaPropertyId.controlType,
285
+ UiaPropertyId.processId, UiaPropertyId.isOffscreen, UiaPropertyId.boundingRectangle,
286
+ UiaPropertyId.headingLevel, UiaPropertyId.isTextPatternAvailable, UiaPropertyId.isValuePatternAvailable
287
+ ];
288
+ for (const property of cached) {
289
+ cacheRequestInterface.method(CACHE_REQUEST_ADD_PROPERTY_SLOT).invoke(request.value, [
290
+ DynWinRtValue.i32(property)
291
+ ]);
292
+ }
293
+ cacheRequestInterface.method(CACHE_REQUEST_PUT_TREE_FILTER_SLOT).invoke(request.value, [
294
+ DynComUnsafe.pointer(condition.address)
295
+ ]);
296
+ cacheRequest = request;
297
+ conditionHeld = condition;
298
+ return request;
299
+ }
300
+ function register(entry) {
301
+ handles.push(entry);
302
+ return handles.length - 1;
303
+ }
304
+ function entryOf(handle) {
305
+ const entry = handles[handle];
306
+ const isEntryUndefined = entry === undefined;
307
+ if (isEntryUndefined) {
308
+ throw new UiaElementUnavailableError("the handle is not of this scope");
309
+ }
310
+ return entry;
311
+ }
312
+ function variantOf({ element, property, isCached }) {
313
+ return guard(() => outMemory({
314
+ size: VARIANT_BYTES,
315
+ read(memory) {
316
+ memory.writeBytes(0, Buffer.alloc(VARIANT_BYTES));
317
+ const slot = isCached ? ELEMENT_GET_CACHED_PROPERTY_VALUE_SLOT : ELEMENT_GET_CURRENT_PROPERTY_VALUE_SLOT;
318
+ elementInterface.method(slot).invoke(element.value, [DynWinRtValue.i32(property), addressOf(memory)]);
319
+ const type = memory.readU16(0);
320
+ const raw = memory.readI32(VARIANT_VALUE_OFFSET);
321
+ DynComRawCleanup.variantClear(memory, 0);
322
+ const isNumber = type === VT_I4;
323
+ const isBoolean = type === VT_BOOL;
324
+ const isEmpty = type === VT_EMPTY;
325
+ return {
326
+ number: isNumber ? raw : 0,
327
+ boolean: isBoolean ? memory.readI16(VARIANT_VALUE_OFFSET) !== 0 : false,
328
+ isEmpty
329
+ };
330
+ }
331
+ }));
332
+ }
333
+ function propertiesOf({ element, isCached }) {
334
+ const offset = isCached ? CACHED_OFFSET : 0;
335
+ const rectangle = guard(() => outMemory({
336
+ size: RECT_BYTES,
337
+ read(memory) {
338
+ elementInterface.method(ELEMENT_BOUNDING_RECTANGLE_SLOT + offset).invoke(element.value, [addressOf(memory)]);
339
+ const left = memory.readI32(0);
340
+ const top = memory.readI32(RECT_TOP_OFFSET);
341
+ return {
342
+ left,
343
+ top,
344
+ width: memory.readI32(RECT_RIGHT_OFFSET) - left,
345
+ height: memory.readI32(RECT_BOTTOM_OFFSET) - top
346
+ };
347
+ }
348
+ }));
349
+ const level = variantOf({
350
+ element,
351
+ property: UiaPropertyId.headingLevel,
352
+ isCached
353
+ }).number;
354
+ const isHeading = level > HEADING_LEVEL_NONE;
355
+ const properties = {
356
+ name: bstrOf({
357
+ object: element,
358
+ interfaceType: elementInterface,
359
+ slot: ELEMENT_NAME_SLOT + offset
360
+ }),
361
+ className: bstrOf({
362
+ object: element,
363
+ interfaceType: elementInterface,
364
+ slot: ELEMENT_CLASS_NAME_SLOT + offset
365
+ }),
366
+ automationId: bstrOf({
367
+ object: element,
368
+ interfaceType: elementInterface,
369
+ slot: ELEMENT_AUTOMATION_ID_SLOT + offset
370
+ }),
371
+ // oxlint-disable-next-line typescript/consistent-type-assertions -- the answer is a control type id of the header
372
+ controlType: numberOut({
373
+ object: element,
374
+ slot: ELEMENT_CONTROL_TYPE_SLOT + offset
375
+ }),
376
+ processId: numberOut({
377
+ object: element,
378
+ slot: ELEMENT_PROCESS_ID_SLOT + offset
379
+ }),
380
+ isOffscreen: numberOut({
381
+ object: element,
382
+ slot: ELEMENT_IS_OFFSCREEN_SLOT + offset
383
+ }) !== 0,
384
+ boundingRectangle: rectangle,
385
+ headingLevel: isHeading ? level - HEADING_LEVEL_FIRST + 1 : 0,
386
+ hasTextPattern: variantOf({
387
+ element,
388
+ property: UiaPropertyId.isTextPatternAvailable,
389
+ isCached
390
+ }).boolean,
391
+ hasValuePattern: variantOf({
392
+ element,
393
+ property: UiaPropertyId.isValuePatternAvailable,
394
+ isCached
395
+ }).boolean
396
+ };
397
+ return properties;
398
+ }
399
+ function patternOf({ element, pattern, iid }) {
400
+ const address = guard(() => outPointer(out => {
401
+ elementInterface.method(ELEMENT_GET_CURRENT_PATTERN_AS_SLOT).invoke(element.value, [
402
+ DynWinRtValue.i32(pattern),
403
+ DynComUnsafe.iidPointer(iid),
404
+ out
405
+ ]);
406
+ }));
407
+ return address === NO_ADDRESS ? null : hold({
408
+ address,
409
+ iid
410
+ });
411
+ }
412
+ const backend = {
413
+ elementFromHandle(hwnd) {
414
+ const root = getAutomation();
415
+ const address = guard(() => outPointer(out => {
416
+ automationInterface.method(AUTOMATION_ELEMENT_FROM_HANDLE_SLOT).invoke(root.value, [
417
+ DynComUnsafe.pointer(hwnd),
418
+ out
419
+ ]);
420
+ }));
421
+ return address === NO_ADDRESS ? null : register(hold({
422
+ address,
423
+ iid: IID_ELEMENT
424
+ }));
425
+ },
426
+ focusedElement() {
427
+ const root = getAutomation();
428
+ const address = guard(() => outPointer(out => {
429
+ automationInterface.method(AUTOMATION_FOCUSED_ELEMENT_SLOT).invoke(root.value, [out]);
430
+ }));
431
+ return address === NO_ADDRESS ? null : register(hold({
432
+ address,
433
+ iid: IID_ELEMENT
434
+ }));
435
+ },
436
+ properties(handle) {
437
+ return propertiesOf({
438
+ element: entryOf(handle),
439
+ isCached: false
440
+ });
441
+ },
442
+ children(handle) {
443
+ const parent = entryOf(handle);
444
+ const request = getCacheRequest();
445
+ const condition = conditionHeld;
446
+ const isConditionNull = condition === null;
447
+ if (isConditionNull) {
448
+ return [];
449
+ }
450
+ const arrayAddress = guard(() => outPointer(out => {
451
+ elementInterface.method(ELEMENT_FIND_ALL_BUILD_CACHE_SLOT).invoke(parent.value, [
452
+ DynWinRtValue.i32(TREE_SCOPE_CHILDREN),
453
+ DynComUnsafe.pointer(condition.address),
454
+ DynComUnsafe.pointer(request.address),
455
+ out
456
+ ]);
457
+ }));
458
+ const isArrayAddressNOADDRESS = arrayAddress === NO_ADDRESS;
459
+ if (isArrayAddressNOADDRESS) {
460
+ return [];
461
+ }
462
+ const array = hold({
463
+ address: arrayAddress,
464
+ iid: IID_ELEMENT_ARRAY
465
+ });
466
+ const count = guard(() => outMemory({
467
+ size: POINTER_BYTES,
468
+ read(memory) {
469
+ arrayInterface.method(ARRAY_LENGTH_SLOT).invoke(array.value, [addressOf(memory)]);
470
+ return memory.readI32(0);
471
+ }
472
+ }));
473
+ const children = [];
474
+ for (let i = 0; i < count; i += 1) {
475
+ const childAddress = guard(() => outPointer(out => {
476
+ arrayInterface.method(ARRAY_GET_ELEMENT_SLOT).invoke(array.value, [DynWinRtValue.i32(i), out]);
477
+ }));
478
+ const child = hold({
479
+ address: childAddress,
480
+ iid: IID_ELEMENT
481
+ });
482
+ try {
483
+ children.push({
484
+ handle: register(child),
485
+ properties: propertiesOf({
486
+ element: child,
487
+ isCached: true
488
+ })
489
+ });
490
+ }
491
+ catch (error) {
492
+ const isUnavailable = error instanceof UiaElementUnavailableError;
493
+ if (!isUnavailable) {
494
+ throw error;
495
+ }
496
+ }
497
+ }
498
+ return children;
499
+ },
500
+ visibleRanges(handle) {
501
+ const pattern = patternOf({
502
+ element: entryOf(handle),
503
+ pattern: UiaPatternId.text,
504
+ iid: IID_TEXT_PATTERN
505
+ });
506
+ const isPatternNull = pattern === null;
507
+ if (isPatternNull) {
508
+ return null;
509
+ }
510
+ const arrayAddress = guard(() => outPointer(out => {
511
+ textPatternInterface.method(TEXT_PATTERN_VISIBLE_RANGES_SLOT).invoke(pattern.value, [out]);
512
+ }));
513
+ const isArrayAddressNOADDRESS = arrayAddress === NO_ADDRESS;
514
+ if (isArrayAddressNOADDRESS) {
515
+ return [];
516
+ }
517
+ const array = hold({
518
+ address: arrayAddress,
519
+ iid: IID_TEXT_RANGE_ARRAY
520
+ });
521
+ const count = guard(() => outMemory({
522
+ size: POINTER_BYTES,
523
+ read(memory) {
524
+ rangeArrayInterface.method(ARRAY_LENGTH_SLOT).invoke(array.value, [addressOf(memory)]);
525
+ return memory.readI32(0);
526
+ }
527
+ }));
528
+ const ranges = [];
529
+ for (let i = 0; i < count; i += 1) {
530
+ const address = guard(() => outPointer(out => {
531
+ rangeArrayInterface.method(ARRAY_GET_ELEMENT_SLOT).invoke(array.value, [DynWinRtValue.i32(i), out]);
532
+ }));
533
+ ranges.push(register(hold({
534
+ address,
535
+ iid: IID_TEXT_RANGE
536
+ })));
537
+ }
538
+ return ranges;
539
+ },
540
+ documentRange(handle) {
541
+ const pattern = patternOf({
542
+ element: entryOf(handle),
543
+ pattern: UiaPatternId.text,
544
+ iid: IID_TEXT_PATTERN
545
+ });
546
+ const isPatternNull = pattern === null;
547
+ if (isPatternNull) {
548
+ return null;
549
+ }
550
+ const address = guard(() => outPointer(out => {
551
+ textPatternInterface.method(TEXT_PATTERN_DOCUMENT_RANGE_SLOT).invoke(pattern.value, [out]);
552
+ }));
553
+ return address === NO_ADDRESS ? null : register(hold({
554
+ address,
555
+ iid: IID_TEXT_RANGE
556
+ }));
557
+ },
558
+ rangeText({ range, maxLength }) {
559
+ return bstrOf({
560
+ object: entryOf(range),
561
+ interfaceType: textRangeInterface,
562
+ slot: TEXT_RANGE_GET_TEXT_SLOT,
563
+ steps: [DynWinRtValue.i32(maxLength)]
564
+ });
565
+ },
566
+ value(handle) {
567
+ const pattern = patternOf({
568
+ element: entryOf(handle),
569
+ pattern: UiaPatternId.value,
570
+ iid: IID_VALUE_PATTERN
571
+ });
572
+ const isPatternNull = pattern === null;
573
+ if (isPatternNull) {
574
+ return null;
575
+ }
576
+ return bstrOf({
577
+ object: pattern,
578
+ interfaceType: valuePatternInterface,
579
+ slot: VALUE_PATTERN_VALUE_SLOT
580
+ });
581
+ },
582
+ dispose() {
583
+ for (const entry of held.reverse()) {
584
+ entry.value.release();
585
+ }
586
+ held.length = 0;
587
+ handles.length = 0;
588
+ automation = null;
589
+ cacheRequest = null;
590
+ conditionHeld = null;
591
+ }
592
+ };
593
+ return backend;
594
+ }
595
+ //# sourceMappingURL=native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.js","sourceRoot":"","sources":["../../src/automation/native.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import type { UiaClient, UiaElement, UiaWalkEnd } from "./client.js";
2
+ /** The control types that are window chrome, not content: their subtree is skipped. */
3
+ export declare const UIA_CHROME_CONTROL_TYPES: ReadonlySet<number>;
4
+ /** The kinds of block a window's text is made of. */
5
+ export declare const TextBlockKind: {
6
+ readonly heading: "heading";
7
+ readonly text: "text";
8
+ };
9
+ /** One kind of text block. */
10
+ export type TextBlockKind = typeof TextBlockKind[keyof typeof TextBlockKind];
11
+ /** A piece of the text of a window. */
12
+ export interface TextBlock {
13
+ readonly kind: TextBlockKind;
14
+ /** 1 to 9 for a heading, 0 for text. */
15
+ readonly level: number;
16
+ readonly text: string;
17
+ }
18
+ /** The text of a window as UI Automation reports it. */
19
+ export interface WindowText {
20
+ readonly title: string;
21
+ readonly blocks: readonly TextBlock[];
22
+ /** Sixteen characters that change when the title or a block changes. */
23
+ readonly version: string;
24
+ /** Why the walk ended; anything but `complete` means the text may be cut. */
25
+ readonly end: UiaWalkEnd;
26
+ }
27
+ /** The options of `readWindowText`. */
28
+ export interface ReadWindowTextOptions {
29
+ /** The most elements to visit; 400 by default. */
30
+ readonly maxElements?: number;
31
+ /** The soft deadline of the walk; 400 by default. */
32
+ readonly maxMilliseconds?: number;
33
+ /** The most characters of text in all; 12 000 by default. */
34
+ readonly maxCharacters?: number;
35
+ }
36
+ /**
37
+ * Reads the text of a window: headings and the exact copy of the text beneath
38
+ * the chrome, through the control view. Elements that are off screen and
39
+ * window chrome (buttons, menus, tool bars, tabs, scroll bars, status bars,
40
+ * images) are skipped; an element with a text pattern gives its visible
41
+ * ranges and its subtree is not walked again.
42
+ *
43
+ * @param options - `client`: the client of a `withUiaClient` call; `root`: the window's element; the limits.
44
+ * @returns The title, the blocks and a version that changes with the text.
45
+ */
46
+ export declare function readWindowText({ client, root, maxElements, maxMilliseconds, maxCharacters }: ReadWindowTextOptions & {
47
+ readonly client: UiaClient;
48
+ readonly root: UiaElement;
49
+ }): WindowText;
50
+ //# sourceMappingURL=text.d.ts.map