@dimina-kit/devtools 0.1.0-dev.20260422094158

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 (301) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +562 -0
  3. package/dist/main/api.d.ts +21 -0
  4. package/dist/main/api.d.ts.map +1 -0
  5. package/dist/main/api.js +22 -0
  6. package/dist/main/api.js.map +1 -0
  7. package/dist/main/app/app.d.ts +15 -0
  8. package/dist/main/app/app.d.ts.map +1 -0
  9. package/dist/main/app/app.js +192 -0
  10. package/dist/main/app/app.js.map +1 -0
  11. package/dist/main/app/bootstrap.d.ts +14 -0
  12. package/dist/main/app/bootstrap.d.ts.map +1 -0
  13. package/dist/main/app/bootstrap.js +41 -0
  14. package/dist/main/app/bootstrap.js.map +1 -0
  15. package/dist/main/app/launch.d.ts +10 -0
  16. package/dist/main/app/launch.d.ts.map +1 -0
  17. package/dist/main/app/launch.js +28 -0
  18. package/dist/main/app/launch.js.map +1 -0
  19. package/dist/main/app/lifecycle.d.ts +2 -0
  20. package/dist/main/app/lifecycle.d.ts.map +1 -0
  21. package/dist/main/app/lifecycle.js +11 -0
  22. package/dist/main/app/lifecycle.js.map +1 -0
  23. package/dist/main/index.d.ts +2 -0
  24. package/dist/main/index.d.ts.map +1 -0
  25. package/dist/main/index.js +3 -0
  26. package/dist/main/index.js.map +1 -0
  27. package/dist/main/ipc/app.d.ts +3 -0
  28. package/dist/main/ipc/app.d.ts.map +1 -0
  29. package/dist/main/ipc/app.js +14 -0
  30. package/dist/main/ipc/app.js.map +1 -0
  31. package/dist/main/ipc/index.d.ts +9 -0
  32. package/dist/main/ipc/index.d.ts.map +1 -0
  33. package/dist/main/ipc/index.js +9 -0
  34. package/dist/main/ipc/index.js.map +1 -0
  35. package/dist/main/ipc/panels.d.ts +3 -0
  36. package/dist/main/ipc/panels.d.ts.map +1 -0
  37. package/dist/main/ipc/panels.js +39 -0
  38. package/dist/main/ipc/panels.js.map +1 -0
  39. package/dist/main/ipc/popover.d.ts +3 -0
  40. package/dist/main/ipc/popover.d.ts.map +1 -0
  41. package/dist/main/ipc/popover.js +13 -0
  42. package/dist/main/ipc/popover.js.map +1 -0
  43. package/dist/main/ipc/projects.d.ts +3 -0
  44. package/dist/main/ipc/projects.d.ts.map +1 -0
  45. package/dist/main/ipc/projects.js +15 -0
  46. package/dist/main/ipc/projects.js.map +1 -0
  47. package/dist/main/ipc/session.d.ts +3 -0
  48. package/dist/main/ipc/session.d.ts.map +1 -0
  49. package/dist/main/ipc/session.js +10 -0
  50. package/dist/main/ipc/session.js.map +1 -0
  51. package/dist/main/ipc/settings.d.ts +3 -0
  52. package/dist/main/ipc/settings.d.ts.map +1 -0
  53. package/dist/main/ipc/settings.js +61 -0
  54. package/dist/main/ipc/settings.js.map +1 -0
  55. package/dist/main/ipc/simulator.d.ts +3 -0
  56. package/dist/main/ipc/simulator.d.ts.map +1 -0
  57. package/dist/main/ipc/simulator.js +26 -0
  58. package/dist/main/ipc/simulator.js.map +1 -0
  59. package/dist/main/ipc/toolbar.d.ts +3 -0
  60. package/dist/main/ipc/toolbar.d.ts.map +1 -0
  61. package/dist/main/ipc/toolbar.js +10 -0
  62. package/dist/main/ipc/toolbar.js.map +1 -0
  63. package/dist/main/menu/index.d.ts +3 -0
  64. package/dist/main/menu/index.d.ts.map +1 -0
  65. package/dist/main/menu/index.js +65 -0
  66. package/dist/main/menu/index.js.map +1 -0
  67. package/dist/main/services/automation/exec.d.ts +9 -0
  68. package/dist/main/services/automation/exec.d.ts.map +1 -0
  69. package/dist/main/services/automation/exec.js +33 -0
  70. package/dist/main/services/automation/exec.js.map +1 -0
  71. package/dist/main/services/automation/handlers/app.d.ts +3 -0
  72. package/dist/main/services/automation/handlers/app.d.ts.map +1 -0
  73. package/dist/main/services/automation/handlers/app.js +132 -0
  74. package/dist/main/services/automation/handlers/app.js.map +1 -0
  75. package/dist/main/services/automation/handlers/element.d.ts +3 -0
  76. package/dist/main/services/automation/handlers/element.d.ts.map +1 -0
  77. package/dist/main/services/automation/handlers/element.js +151 -0
  78. package/dist/main/services/automation/handlers/element.js.map +1 -0
  79. package/dist/main/services/automation/handlers/page.d.ts +3 -0
  80. package/dist/main/services/automation/handlers/page.d.ts.map +1 -0
  81. package/dist/main/services/automation/handlers/page.js +66 -0
  82. package/dist/main/services/automation/handlers/page.js.map +1 -0
  83. package/dist/main/services/automation/handlers/tool.d.ts +3 -0
  84. package/dist/main/services/automation/handlers/tool.d.ts.map +1 -0
  85. package/dist/main/services/automation/handlers/tool.js +8 -0
  86. package/dist/main/services/automation/handlers/tool.js.map +1 -0
  87. package/dist/main/services/automation/index.d.ts +18 -0
  88. package/dist/main/services/automation/index.d.ts.map +1 -0
  89. package/dist/main/services/automation/index.js +95 -0
  90. package/dist/main/services/automation/index.js.map +1 -0
  91. package/dist/main/services/automation/registry.d.ts +6 -0
  92. package/dist/main/services/automation/registry.d.ts.map +1 -0
  93. package/dist/main/services/automation/registry.js +20 -0
  94. package/dist/main/services/automation/registry.js.map +1 -0
  95. package/dist/main/services/automation/shared.d.ts +24 -0
  96. package/dist/main/services/automation/shared.d.ts.map +1 -0
  97. package/dist/main/services/automation/shared.js +2 -0
  98. package/dist/main/services/automation/shared.js.map +1 -0
  99. package/dist/main/services/default-adapter.d.ts +3 -0
  100. package/dist/main/services/default-adapter.d.ts.map +1 -0
  101. package/dist/main/services/default-adapter.js +17 -0
  102. package/dist/main/services/default-adapter.js.map +1 -0
  103. package/dist/main/services/layout/index.d.ts +27 -0
  104. package/dist/main/services/layout/index.d.ts.map +1 -0
  105. package/dist/main/services/layout/index.js +49 -0
  106. package/dist/main/services/layout/index.js.map +1 -0
  107. package/dist/main/services/mcp/index.d.ts +15 -0
  108. package/dist/main/services/mcp/index.d.ts.map +1 -0
  109. package/dist/main/services/mcp/index.js +15 -0
  110. package/dist/main/services/mcp/index.js.map +1 -0
  111. package/dist/main/services/mcp/server.d.ts +10 -0
  112. package/dist/main/services/mcp/server.d.ts.map +1 -0
  113. package/dist/main/services/mcp/server.js +76 -0
  114. package/dist/main/services/mcp/server.js.map +1 -0
  115. package/dist/main/services/mcp/target-manager.d.ts +43 -0
  116. package/dist/main/services/mcp/target-manager.d.ts.map +1 -0
  117. package/dist/main/services/mcp/target-manager.js +165 -0
  118. package/dist/main/services/mcp/target-manager.js.map +1 -0
  119. package/dist/main/services/mcp/tool-registry.d.ts +14 -0
  120. package/dist/main/services/mcp/tool-registry.d.ts.map +1 -0
  121. package/dist/main/services/mcp/tool-registry.js +84 -0
  122. package/dist/main/services/mcp/tool-registry.js.map +1 -0
  123. package/dist/main/services/mcp/tools/context-tools.d.ts +15 -0
  124. package/dist/main/services/mcp/tools/context-tools.d.ts.map +1 -0
  125. package/dist/main/services/mcp/tools/context-tools.js +244 -0
  126. package/dist/main/services/mcp/tools/context-tools.js.map +1 -0
  127. package/dist/main/services/mcp/tools/simulator-tools.d.ts +14 -0
  128. package/dist/main/services/mcp/tools/simulator-tools.d.ts.map +1 -0
  129. package/dist/main/services/mcp/tools/simulator-tools.js +143 -0
  130. package/dist/main/services/mcp/tools/simulator-tools.js.map +1 -0
  131. package/dist/main/services/mcp/tools/workbench-tools.d.ts +7 -0
  132. package/dist/main/services/mcp/tools/workbench-tools.d.ts.map +1 -0
  133. package/dist/main/services/mcp/tools/workbench-tools.js +13 -0
  134. package/dist/main/services/mcp/tools/workbench-tools.js.map +1 -0
  135. package/dist/main/services/notifications/renderer-notifier.d.ts +80 -0
  136. package/dist/main/services/notifications/renderer-notifier.d.ts.map +1 -0
  137. package/dist/main/services/notifications/renderer-notifier.js +70 -0
  138. package/dist/main/services/notifications/renderer-notifier.js.map +1 -0
  139. package/dist/main/services/projects/index.d.ts +2 -0
  140. package/dist/main/services/projects/index.d.ts.map +1 -0
  141. package/dist/main/services/projects/index.js +6 -0
  142. package/dist/main/services/projects/index.js.map +1 -0
  143. package/dist/main/services/projects/project-repository.d.ts +28 -0
  144. package/dist/main/services/projects/project-repository.d.ts.map +1 -0
  145. package/dist/main/services/projects/project-repository.js +145 -0
  146. package/dist/main/services/projects/project-repository.js.map +1 -0
  147. package/dist/main/services/settings/index.d.ts +16 -0
  148. package/dist/main/services/settings/index.d.ts.map +1 -0
  149. package/dist/main/services/settings/index.js +46 -0
  150. package/dist/main/services/settings/index.js.map +1 -0
  151. package/dist/main/services/simulator/dir.d.ts +2 -0
  152. package/dist/main/services/simulator/dir.d.ts.map +1 -0
  153. package/dist/main/services/simulator/dir.js +5 -0
  154. package/dist/main/services/simulator/dir.js.map +1 -0
  155. package/dist/main/services/simulator/referer.d.ts +10 -0
  156. package/dist/main/services/simulator/referer.d.ts.map +1 -0
  157. package/dist/main/services/simulator/referer.js +20 -0
  158. package/dist/main/services/simulator/referer.js.map +1 -0
  159. package/dist/main/services/views/view-manager.d.ts +84 -0
  160. package/dist/main/services/views/view-manager.d.ts.map +1 -0
  161. package/dist/main/services/views/view-manager.js +254 -0
  162. package/dist/main/services/views/view-manager.js.map +1 -0
  163. package/dist/main/services/workbench-context.d.ts +59 -0
  164. package/dist/main/services/workbench-context.d.ts.map +1 -0
  165. package/dist/main/services/workbench-context.js +33 -0
  166. package/dist/main/services/workbench-context.js.map +1 -0
  167. package/dist/main/services/workspace/index.d.ts +2 -0
  168. package/dist/main/services/workspace/index.d.ts.map +1 -0
  169. package/dist/main/services/workspace/index.js +2 -0
  170. package/dist/main/services/workspace/index.js.map +1 -0
  171. package/dist/main/services/workspace/workspace-service.d.ts +49 -0
  172. package/dist/main/services/workspace/workspace-service.d.ts.map +1 -0
  173. package/dist/main/services/workspace/workspace-service.js +90 -0
  174. package/dist/main/services/workspace/workspace-service.js.map +1 -0
  175. package/dist/main/utils/logger.d.ts +15 -0
  176. package/dist/main/utils/logger.d.ts.map +1 -0
  177. package/dist/main/utils/logger.js +48 -0
  178. package/dist/main/utils/logger.js.map +1 -0
  179. package/dist/main/utils/paths.d.ts +6 -0
  180. package/dist/main/utils/paths.d.ts.map +1 -0
  181. package/dist/main/utils/paths.js +15 -0
  182. package/dist/main/utils/paths.js.map +1 -0
  183. package/dist/main/utils/theme.d.ts +10 -0
  184. package/dist/main/utils/theme.d.ts.map +1 -0
  185. package/dist/main/utils/theme.js +13 -0
  186. package/dist/main/utils/theme.js.map +1 -0
  187. package/dist/main/windows/main-window/create.d.ts +11 -0
  188. package/dist/main/windows/main-window/create.d.ts.map +1 -0
  189. package/dist/main/windows/main-window/create.js +67 -0
  190. package/dist/main/windows/main-window/create.js.map +1 -0
  191. package/dist/main/windows/main-window/events.d.ts +9 -0
  192. package/dist/main/windows/main-window/events.d.ts.map +1 -0
  193. package/dist/main/windows/main-window/events.js +18 -0
  194. package/dist/main/windows/main-window/events.js.map +1 -0
  195. package/dist/main/windows/main-window/index.d.ts +5 -0
  196. package/dist/main/windows/main-window/index.d.ts.map +1 -0
  197. package/dist/main/windows/main-window/index.js +3 -0
  198. package/dist/main/windows/main-window/index.js.map +1 -0
  199. package/dist/main/windows/settings-window/create.d.ts +3 -0
  200. package/dist/main/windows/settings-window/create.d.ts.map +1 -0
  201. package/dist/main/windows/settings-window/create.js +18 -0
  202. package/dist/main/windows/settings-window/create.js.map +1 -0
  203. package/dist/main/windows/settings-window/events.d.ts +3 -0
  204. package/dist/main/windows/settings-window/events.d.ts.map +1 -0
  205. package/dist/main/windows/settings-window/events.js +6 -0
  206. package/dist/main/windows/settings-window/events.js.map +1 -0
  207. package/dist/main/windows/settings-window/index.d.ts +3 -0
  208. package/dist/main/windows/settings-window/index.d.ts.map +1 -0
  209. package/dist/main/windows/settings-window/index.js +3 -0
  210. package/dist/main/windows/settings-window/index.js.map +1 -0
  211. package/dist/preload/instrumentation/app-data.d.ts +3 -0
  212. package/dist/preload/instrumentation/app-data.d.ts.map +1 -0
  213. package/dist/preload/instrumentation/app-data.js +103 -0
  214. package/dist/preload/instrumentation/app-data.js.map +1 -0
  215. package/dist/preload/instrumentation/console.d.ts +2 -0
  216. package/dist/preload/instrumentation/console.d.ts.map +1 -0
  217. package/dist/preload/instrumentation/console.js +54 -0
  218. package/dist/preload/instrumentation/console.js.map +1 -0
  219. package/dist/preload/instrumentation/disposable.d.ts +11 -0
  220. package/dist/preload/instrumentation/disposable.d.ts.map +1 -0
  221. package/dist/preload/instrumentation/disposable.js +15 -0
  222. package/dist/preload/instrumentation/disposable.js.map +1 -0
  223. package/dist/preload/instrumentation/index.d.ts +5 -0
  224. package/dist/preload/instrumentation/index.d.ts.map +1 -0
  225. package/dist/preload/instrumentation/index.js +5 -0
  226. package/dist/preload/instrumentation/index.js.map +1 -0
  227. package/dist/preload/instrumentation/storage.d.ts +2 -0
  228. package/dist/preload/instrumentation/storage.d.ts.map +1 -0
  229. package/dist/preload/instrumentation/storage.js +106 -0
  230. package/dist/preload/instrumentation/storage.js.map +1 -0
  231. package/dist/preload/instrumentation/wxml-extract.d.ts +11 -0
  232. package/dist/preload/instrumentation/wxml-extract.d.ts.map +1 -0
  233. package/dist/preload/instrumentation/wxml-extract.js +173 -0
  234. package/dist/preload/instrumentation/wxml-extract.js.map +1 -0
  235. package/dist/preload/instrumentation/wxml.d.ts +5 -0
  236. package/dist/preload/instrumentation/wxml.d.ts.map +1 -0
  237. package/dist/preload/instrumentation/wxml.js +223 -0
  238. package/dist/preload/instrumentation/wxml.js.map +1 -0
  239. package/dist/preload/runtime/bridge.d.ts +36 -0
  240. package/dist/preload/runtime/bridge.d.ts.map +1 -0
  241. package/dist/preload/runtime/bridge.js +151 -0
  242. package/dist/preload/runtime/bridge.js.map +1 -0
  243. package/dist/preload/runtime/host.d.ts +3 -0
  244. package/dist/preload/runtime/host.d.ts.map +1 -0
  245. package/dist/preload/runtime/host.js +28 -0
  246. package/dist/preload/runtime/host.js.map +1 -0
  247. package/dist/preload/shared/api-compat.d.ts +2 -0
  248. package/dist/preload/shared/api-compat.d.ts.map +1 -0
  249. package/dist/preload/shared/api-compat.js +196 -0
  250. package/dist/preload/shared/api-compat.js.map +1 -0
  251. package/dist/preload/shared/constants.d.ts +16 -0
  252. package/dist/preload/shared/constants.d.ts.map +1 -0
  253. package/dist/preload/shared/constants.js +16 -0
  254. package/dist/preload/shared/constants.js.map +1 -0
  255. package/dist/preload/shared/types.d.ts +34 -0
  256. package/dist/preload/shared/types.d.ts.map +1 -0
  257. package/dist/preload/shared/types.js +8 -0
  258. package/dist/preload/shared/types.js.map +1 -0
  259. package/dist/preload/windows/main.d.ts +7 -0
  260. package/dist/preload/windows/main.d.ts.map +1 -0
  261. package/dist/preload/windows/main.js +7 -0
  262. package/dist/preload/windows/main.js.map +1 -0
  263. package/dist/preload/windows/simulator.js +969 -0
  264. package/dist/preload/windows/simulator.js.map +7 -0
  265. package/dist/renderer/assets/index-kcmIQPCg.js +2 -0
  266. package/dist/renderer/assets/index-kcmIQPCg.js.map +1 -0
  267. package/dist/renderer/assets/input-B7sz4y1r.js +2 -0
  268. package/dist/renderer/assets/input-B7sz4y1r.js.map +1 -0
  269. package/dist/renderer/assets/ipc-transport-C9-PPTGn.css +1 -0
  270. package/dist/renderer/assets/ipc-transport-L_WD9x12.js +9 -0
  271. package/dist/renderer/assets/ipc-transport-L_WD9x12.js.map +1 -0
  272. package/dist/renderer/assets/popover-CzMIs2j4.js +2 -0
  273. package/dist/renderer/assets/popover-CzMIs2j4.js.map +1 -0
  274. package/dist/renderer/assets/select-BBXJVe8R.js +2 -0
  275. package/dist/renderer/assets/select-BBXJVe8R.js.map +1 -0
  276. package/dist/renderer/assets/settings-Db1pvrBJ.js +2 -0
  277. package/dist/renderer/assets/settings-Db1pvrBJ.js.map +1 -0
  278. package/dist/renderer/assets/settings-api-DJ1M-CNt.js +2 -0
  279. package/dist/renderer/assets/settings-api-DJ1M-CNt.js.map +1 -0
  280. package/dist/renderer/assets/workbenchSettings-BnQsvWkQ.js +8 -0
  281. package/dist/renderer/assets/workbenchSettings-BnQsvWkQ.js.map +1 -0
  282. package/dist/renderer/entries/main/index.html +15 -0
  283. package/dist/renderer/entries/popover/index.html +18 -0
  284. package/dist/renderer/entries/settings/index.html +15 -0
  285. package/dist/renderer/entries/workbench-settings/index.html +15 -0
  286. package/dist/shared/constants.d.ts +10 -0
  287. package/dist/shared/constants.d.ts.map +1 -0
  288. package/dist/shared/constants.js +10 -0
  289. package/dist/shared/constants.js.map +1 -0
  290. package/dist/shared/ipc-channels.d.ts +89 -0
  291. package/dist/shared/ipc-channels.d.ts.map +1 -0
  292. package/dist/shared/ipc-channels.js +102 -0
  293. package/dist/shared/ipc-channels.js.map +1 -0
  294. package/dist/shared/types.d.ts +89 -0
  295. package/dist/shared/types.d.ts.map +1 -0
  296. package/dist/shared/types.js +2 -0
  297. package/dist/shared/types.js.map +1 -0
  298. package/dist/simulator/assets/simulator-C1eHXnuq.js +9 -0
  299. package/dist/simulator/assets/simulator-C1eHXnuq.js.map +1 -0
  300. package/dist/simulator/simulator.html +164 -0
  301. package/package.json +204 -0
@@ -0,0 +1,223 @@
1
+ import { SimulatorChannel } from '../../shared/ipc-channels.js';
2
+ import { sendToHost } from '../runtime/host.js';
3
+ import { clearWxmlSnapshot, setWxmlSnapshot, unhighlightElement, } from '../runtime/bridge.js';
4
+ import { WXML_DEBOUNCE_MS, WXML_RETRY_INTERVAL_MS, WXML_RETRY_TIMEOUT_MS, NAVIGATION_POLL_INTERVAL_MS, NAVIGATION_TIMEOUT_MS, } from '../shared/constants.js';
5
+ import { createDisposableSet } from './disposable.js';
6
+ import { walkInstance } from './wxml-extract.js';
7
+ function findActivePageIframe() {
8
+ const iframes = document.querySelectorAll('.dimina-native-webview__window');
9
+ return iframes.length > 0 ? iframes[iframes.length - 1] : null;
10
+ }
11
+ function getVueAppFromIframe(iframe) {
12
+ try {
13
+ const doc = iframe.contentDocument;
14
+ if (!doc?.body)
15
+ return null;
16
+ const body = doc.body;
17
+ const app = body.__vue_app__;
18
+ if (!app)
19
+ return null;
20
+ if (app._instance)
21
+ return app._instance;
22
+ const container = app._container;
23
+ const vnode = container?._vnode;
24
+ return vnode?.component ?? null;
25
+ }
26
+ catch {
27
+ return null;
28
+ }
29
+ }
30
+ let wxmlTimer;
31
+ let currentObserver = null;
32
+ let currentIframe = null;
33
+ let topObserver = null;
34
+ let retryTimer;
35
+ let retryTimeout;
36
+ let navigationWaitTimer;
37
+ let navigationWaitTimeout;
38
+ const disposables = createDisposableSet();
39
+ function clearTimers() {
40
+ if (wxmlTimer)
41
+ clearTimeout(wxmlTimer);
42
+ if (retryTimer)
43
+ clearInterval(retryTimer);
44
+ if (retryTimeout)
45
+ clearTimeout(retryTimeout);
46
+ if (navigationWaitTimer)
47
+ clearInterval(navigationWaitTimer);
48
+ if (navigationWaitTimeout)
49
+ clearTimeout(navigationWaitTimeout);
50
+ wxmlTimer = undefined;
51
+ retryTimer = undefined;
52
+ retryTimeout = undefined;
53
+ navigationWaitTimer = undefined;
54
+ navigationWaitTimeout = undefined;
55
+ }
56
+ function publishTree(tree) {
57
+ if (tree) {
58
+ const normalized = Array.isArray(tree)
59
+ ? { tagName: '#fragment', attrs: {}, children: tree }
60
+ : tree;
61
+ setWxmlSnapshot(normalized, true);
62
+ sendToHost(SimulatorChannel.Wxml, normalized);
63
+ return;
64
+ }
65
+ clearWxmlSnapshot();
66
+ unhighlightElement();
67
+ }
68
+ function sendWxmlTree() {
69
+ const iframe = findActivePageIframe();
70
+ if (!iframe) {
71
+ publishTree(null);
72
+ return;
73
+ }
74
+ const instance = getVueAppFromIframe(iframe);
75
+ if (!instance) {
76
+ publishTree(null);
77
+ return;
78
+ }
79
+ const tree = walkInstance(instance, 0);
80
+ if (!tree) {
81
+ publishTree(null);
82
+ return;
83
+ }
84
+ publishTree(tree);
85
+ }
86
+ function observeIframe(iframe) {
87
+ if (iframe === currentIframe)
88
+ return;
89
+ if (currentObserver) {
90
+ currentObserver.disconnect();
91
+ currentObserver = null;
92
+ }
93
+ if (navigationWaitTimer) {
94
+ clearInterval(navigationWaitTimer);
95
+ navigationWaitTimer = undefined;
96
+ }
97
+ if (navigationWaitTimeout) {
98
+ clearTimeout(navigationWaitTimeout);
99
+ navigationWaitTimeout = undefined;
100
+ }
101
+ currentIframe = iframe;
102
+ const doc = iframe.contentDocument;
103
+ if (!doc?.body) {
104
+ publishTree(null);
105
+ return;
106
+ }
107
+ sendWxmlTree();
108
+ currentObserver = new MutationObserver(() => {
109
+ clearTimeout(wxmlTimer);
110
+ wxmlTimer = setTimeout(sendWxmlTree, WXML_DEBOUNCE_MS);
111
+ });
112
+ currentObserver.observe(doc.body, { childList: true, subtree: true });
113
+ }
114
+ function tryAttach() {
115
+ const iframe = findActivePageIframe();
116
+ if (!iframe)
117
+ return false;
118
+ const instance = getVueAppFromIframe(iframe);
119
+ if (!instance)
120
+ return false;
121
+ observeIframe(iframe);
122
+ return true;
123
+ }
124
+ function scheduleAttach() {
125
+ if (retryTimer)
126
+ clearInterval(retryTimer);
127
+ if (retryTimeout)
128
+ clearTimeout(retryTimeout);
129
+ retryTimer = setInterval(() => {
130
+ if (tryAttach() && retryTimer) {
131
+ clearInterval(retryTimer);
132
+ retryTimer = undefined;
133
+ }
134
+ }, WXML_RETRY_INTERVAL_MS);
135
+ retryTimeout = setTimeout(() => {
136
+ if (retryTimer)
137
+ clearInterval(retryTimer);
138
+ retryTimer = undefined;
139
+ }, WXML_RETRY_TIMEOUT_MS);
140
+ }
141
+ function observeTopLevel() {
142
+ if (topObserver)
143
+ return;
144
+ topObserver = new MutationObserver(() => {
145
+ const iframe = findActivePageIframe();
146
+ if (!iframe) {
147
+ publishTree(null);
148
+ return;
149
+ }
150
+ if (iframe !== currentIframe) {
151
+ if (navigationWaitTimer) {
152
+ clearInterval(navigationWaitTimer);
153
+ navigationWaitTimer = undefined;
154
+ }
155
+ if (navigationWaitTimeout) {
156
+ clearTimeout(navigationWaitTimeout);
157
+ navigationWaitTimeout = undefined;
158
+ }
159
+ navigationWaitTimer = setInterval(() => {
160
+ if (getVueAppFromIframe(iframe)) {
161
+ if (navigationWaitTimer) {
162
+ clearInterval(navigationWaitTimer);
163
+ navigationWaitTimer = undefined;
164
+ }
165
+ if (navigationWaitTimeout) {
166
+ clearTimeout(navigationWaitTimeout);
167
+ navigationWaitTimeout = undefined;
168
+ }
169
+ observeIframe(iframe);
170
+ }
171
+ }, NAVIGATION_POLL_INTERVAL_MS);
172
+ navigationWaitTimeout = setTimeout(() => {
173
+ if (navigationWaitTimer) {
174
+ clearInterval(navigationWaitTimer);
175
+ navigationWaitTimer = undefined;
176
+ }
177
+ navigationWaitTimeout = undefined;
178
+ }, NAVIGATION_TIMEOUT_MS);
179
+ }
180
+ });
181
+ if (document.body) {
182
+ topObserver.observe(document.body, { childList: true, subtree: true });
183
+ }
184
+ else {
185
+ document.addEventListener('DOMContentLoaded', () => {
186
+ if (document.body && topObserver) {
187
+ topObserver.observe(document.body, { childList: true, subtree: true });
188
+ }
189
+ }, { once: true });
190
+ }
191
+ }
192
+ export function installWxmlInstrumentation() {
193
+ if (!tryAttach()) {
194
+ scheduleAttach();
195
+ }
196
+ observeTopLevel();
197
+ disposables.add(() => {
198
+ if (currentObserver) {
199
+ currentObserver.disconnect();
200
+ currentObserver = null;
201
+ }
202
+ });
203
+ disposables.add(() => {
204
+ if (topObserver) {
205
+ topObserver.disconnect();
206
+ topObserver = null;
207
+ }
208
+ });
209
+ disposables.add(() => {
210
+ currentIframe = null;
211
+ clearTimers();
212
+ });
213
+ disposables.add(() => {
214
+ clearWxmlSnapshot();
215
+ unhighlightElement();
216
+ });
217
+ return () => {
218
+ disposables.disposeAll();
219
+ };
220
+ }
221
+ export const setupWxmlObserver = installWxmlInstrumentation;
222
+ export { sendWxmlTree };
223
+ //# sourceMappingURL=wxml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wxml.js","sourceRoot":"","sources":["../../../src/preload/instrumentation/wxml.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ export interface WxmlNode {
2
+ tagName: string;
3
+ attrs: Record<string, string>;
4
+ children: WxmlNode[];
5
+ text?: string;
6
+ sid?: string;
7
+ }
8
+ export interface Snapshot<T> {
9
+ gen: number;
10
+ ready: boolean;
11
+ data: T;
12
+ }
13
+ export interface StorageSnapshot extends Snapshot<Record<string, string>> {
14
+ namespace: string | null;
15
+ }
16
+ type RefreshTarget = 'wxml' | 'appdata' | 'storage';
17
+ interface SimulatorBridgeState {
18
+ appdata: Snapshot<Record<string, unknown>>;
19
+ storage: StorageSnapshot;
20
+ wxml: Snapshot<WxmlNode | WxmlNode[] | null>;
21
+ refreshHandler: ((type: RefreshTarget) => void) | null;
22
+ }
23
+ declare function highlightElement(sid: string): void;
24
+ declare function unhighlightElement(): void;
25
+ export { highlightElement, unhighlightElement };
26
+ export declare const simulatorBridge: SimulatorBridgeState;
27
+ export declare function setRefreshHandler(handler: ((type: RefreshTarget) => void) | null): void;
28
+ export declare function setAppDataSnapshot(data: Record<string, unknown>): void;
29
+ export declare function clearAppDataSnapshot(): void;
30
+ export declare function setStorageSnapshot(namespace: string | null, data: Record<string, string>): void;
31
+ export declare function clearStorageSnapshot(): void;
32
+ export declare function setWxmlSnapshot(data: WxmlNode | WxmlNode[] | null, ready?: boolean): void;
33
+ export declare function clearWxmlSnapshot(): void;
34
+ export declare function resetBridgeState(): void;
35
+ export declare function installSimulatorBridge(): () => void;
36
+ //# sourceMappingURL=bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/preload/runtime/bridge.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,QAAQ,EAAE,QAAQ,EAAE,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,CAAC,CAAA;CACR;AAED,MAAM,WAAW,eAAgB,SAAQ,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAED,KAAK,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;AAEnD,UAAU,oBAAoB;IAC5B,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC1C,OAAO,EAAE,eAAe,CAAA;IACxB,IAAI,EAAE,QAAQ,CAAC,QAAQ,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAA;IAC5C,cAAc,EAAE,CAAC,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC,GAAG,IAAI,CAAA;CACvD;AAqCD,iBAAS,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAa3C;AAED,iBAAS,kBAAkB,IAAI,IAAI,CAElC;AAED,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAA;AAkB/C,eAAO,MAAM,eAAe,sBAAQ,CAAA;AAEpC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAEvF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAMtE;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAM3C;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAO/F;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAO3C;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,KAAK,UAAO,GAAG,IAAI,CAMtF;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAMvC;AAED,wBAAgB,sBAAsB,IAAI,MAAM,IAAI,CAyBnD"}
@@ -0,0 +1,151 @@
1
+ import { contextBridge } from 'electron';
2
+ const state = {
3
+ appdata: { gen: 0, ready: true, data: {} },
4
+ storage: { gen: 0, ready: false, namespace: null, data: {} },
5
+ wxml: { gen: 0, ready: false, data: null },
6
+ refreshHandler: null,
7
+ };
8
+ let highlightOverlay = null;
9
+ let exposedApi = null;
10
+ function clone(value) {
11
+ try {
12
+ return JSON.parse(JSON.stringify(value));
13
+ }
14
+ catch {
15
+ return value;
16
+ }
17
+ }
18
+ function getPageIframe() {
19
+ const iframes = document.querySelectorAll('.dimina-native-webview__window');
20
+ return iframes.length > 0 ? iframes[iframes.length - 1] : null;
21
+ }
22
+ function ensureOverlay(doc) {
23
+ if (highlightOverlay && highlightOverlay.ownerDocument === doc)
24
+ return highlightOverlay;
25
+ highlightOverlay = doc.createElement('div');
26
+ highlightOverlay.id = '__simulator-highlight';
27
+ highlightOverlay.style.cssText =
28
+ 'position:fixed;pointer-events:none;z-index:999999;' +
29
+ 'border:2px solid #1a73e8;background:rgba(26,115,232,0.12);' +
30
+ 'transition:all 0.1s ease;display:none;border-radius:2px;';
31
+ doc.body.appendChild(highlightOverlay);
32
+ return highlightOverlay;
33
+ }
34
+ function highlightElement(sid) {
35
+ const iframe = getPageIframe();
36
+ if (!iframe?.contentDocument)
37
+ return;
38
+ const doc = iframe.contentDocument;
39
+ const el = doc.querySelector(`[data-sid="${sid}"]`);
40
+ if (!el)
41
+ return;
42
+ const rect = el.getBoundingClientRect();
43
+ const overlay = ensureOverlay(doc);
44
+ overlay.style.left = `${rect.left}px`;
45
+ overlay.style.top = `${rect.top}px`;
46
+ overlay.style.width = `${rect.width}px`;
47
+ overlay.style.height = `${rect.height}px`;
48
+ overlay.style.display = 'block';
49
+ }
50
+ function unhighlightElement() {
51
+ if (highlightOverlay)
52
+ highlightOverlay.style.display = 'none';
53
+ }
54
+ export { highlightElement, unhighlightElement };
55
+ function buildApi() {
56
+ return {
57
+ getAppdata: () => clone(state.appdata.data),
58
+ getAppdataSnapshot: () => clone(state.appdata),
59
+ getAppdataGen: () => state.appdata.gen,
60
+ getStorageSnapshot: () => clone(state.storage),
61
+ getStorageGen: () => state.storage.gen,
62
+ getWxml: () => clone(state.wxml.data),
63
+ getWxmlSnapshot: () => clone(state.wxml),
64
+ getWxmlGen: () => state.wxml.gen,
65
+ refresh: (type) => state.refreshHandler?.(type),
66
+ highlightElement,
67
+ unhighlightElement,
68
+ };
69
+ }
70
+ export const simulatorBridge = state;
71
+ export function setRefreshHandler(handler) {
72
+ state.refreshHandler = handler;
73
+ }
74
+ export function setAppDataSnapshot(data) {
75
+ state.appdata = {
76
+ gen: state.appdata.gen + 1,
77
+ ready: true,
78
+ data: clone(data),
79
+ };
80
+ }
81
+ export function clearAppDataSnapshot() {
82
+ state.appdata = {
83
+ gen: state.appdata.gen + 1,
84
+ ready: true,
85
+ data: {},
86
+ };
87
+ }
88
+ export function setStorageSnapshot(namespace, data) {
89
+ state.storage = {
90
+ gen: state.storage.gen + 1,
91
+ ready: namespace !== null,
92
+ namespace,
93
+ data: clone(data),
94
+ };
95
+ }
96
+ export function clearStorageSnapshot() {
97
+ state.storage = {
98
+ gen: state.storage.gen + 1,
99
+ ready: false,
100
+ namespace: null,
101
+ data: {},
102
+ };
103
+ }
104
+ export function setWxmlSnapshot(data, ready = true) {
105
+ state.wxml = {
106
+ gen: state.wxml.gen + 1,
107
+ ready,
108
+ data: clone(data),
109
+ };
110
+ }
111
+ export function clearWxmlSnapshot() {
112
+ state.wxml = {
113
+ gen: state.wxml.gen + 1,
114
+ ready: false,
115
+ data: null,
116
+ };
117
+ }
118
+ export function resetBridgeState() {
119
+ clearAppDataSnapshot();
120
+ clearStorageSnapshot();
121
+ clearWxmlSnapshot();
122
+ unhighlightElement();
123
+ state.refreshHandler = null;
124
+ }
125
+ export function installSimulatorBridge() {
126
+ if (!exposedApi) {
127
+ exposedApi = buildApi();
128
+ }
129
+ try {
130
+ contextBridge.exposeInMainWorld('__simulatorData', {
131
+ ...exposedApi,
132
+ getAppdata: () => clone(state.appdata.data),
133
+ getAppdataSnapshot: () => clone(state.appdata),
134
+ getStorageSnapshot: () => clone(state.storage),
135
+ getWxml: () => clone(state.wxml.data),
136
+ getWxmlSnapshot: () => clone(state.wxml),
137
+ });
138
+ }
139
+ catch {
140
+ ;
141
+ window.__simulatorData = exposedApi;
142
+ }
143
+ return () => {
144
+ resetBridgeState();
145
+ const windowRef = window;
146
+ if (windowRef.__simulatorData === exposedApi) {
147
+ delete windowRef.__simulatorData;
148
+ }
149
+ };
150
+ }
151
+ //# sourceMappingURL=bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../src/preload/runtime/bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function sendToHost(channel: string, data: unknown): void;
2
+ export declare function safeSerialize(val: unknown): unknown;
3
+ //# sourceMappingURL=host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../src/preload/runtime/host.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAE/D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAgBnD"}
@@ -0,0 +1,28 @@
1
+ import { ipcRenderer } from 'electron';
2
+ export function sendToHost(channel, data) {
3
+ ipcRenderer.sendToHost(channel, data);
4
+ }
5
+ export function safeSerialize(val) {
6
+ if (val === null || val === undefined)
7
+ return val;
8
+ if (typeof val === 'function')
9
+ return `[Function: ${val.name || 'anonymous'}]`;
10
+ if (typeof val !== 'object')
11
+ return val;
12
+ if (val instanceof Error)
13
+ return { __isError: true, message: val.message, stack: val.stack };
14
+ try {
15
+ return structuredClone(val);
16
+ }
17
+ catch {
18
+ // expected: some objects (e.g. DOM nodes, proxies) cannot be structuredCloned
19
+ }
20
+ try {
21
+ return JSON.parse(JSON.stringify(val));
22
+ }
23
+ catch {
24
+ // expected: circular references or non-serializable values
25
+ }
26
+ return String(val);
27
+ }
28
+ //# sourceMappingURL=host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.js","sourceRoot":"","sources":["../../../src/preload/runtime/host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAEtC,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,IAAa;IACvD,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAA;IACjD,IAAI,OAAO,GAAG,KAAK,UAAU;QAAE,OAAO,cAAe,GAAyB,CAAC,IAAI,IAAI,WAAW,GAAG,CAAA;IACrG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAA;IACvC,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAA;IAC5F,IAAI,CAAC;QACH,OAAO,eAAe,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,8EAA8E;IAChF,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,2DAA2D;IAC7D,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;AACpB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function setupApiCompatHook(): void;
2
+ //# sourceMappingURL=api-compat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-compat.d.ts","sourceRoot":"","sources":["../../../src/preload/shared/api-compat.ts"],"names":[],"mappings":"AAqMA,wBAAgB,kBAAkB,IAAI,IAAI,CAgBzC"}