@dimina-kit/devtools 0.4.0 → 0.5.0

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 (507) hide show
  1. package/README.md +51 -660
  2. package/dist/main/api.d.ts +2 -1
  3. package/dist/main/app/app.d.ts +41 -12
  4. package/dist/main/app/app.js +299 -514
  5. package/dist/main/app/bootstrap.d.ts +8 -5
  6. package/dist/main/app/bootstrap.js +15 -15
  7. package/dist/main/app/editor-view.d.ts +21 -0
  8. package/dist/main/app/editor-view.js +71 -0
  9. package/dist/main/app/global-mirrors.d.ts +23 -0
  10. package/dist/main/app/global-mirrors.js +37 -0
  11. package/dist/main/app/host-sidebar-default.d.ts +19 -0
  12. package/dist/main/app/host-sidebar-default.js +44 -0
  13. package/dist/main/app/lifecycle.d.ts +12 -1
  14. package/dist/main/app/lifecycle.js +27 -1
  15. package/dist/main/app/menu-setup.d.ts +13 -0
  16. package/dist/main/app/menu-setup.js +49 -0
  17. package/dist/main/app/native-overview.d.ts +1 -1
  18. package/dist/main/app/open-project-ipc.d.ts +13 -0
  19. package/dist/main/app/open-project-ipc.js +21 -0
  20. package/dist/main/app/project-list-surface.d.ts +31 -0
  21. package/dist/main/app/project-list-surface.js +20 -0
  22. package/dist/main/app/project-window.d.ts +36 -0
  23. package/dist/main/app/project-window.js +93 -0
  24. package/dist/main/app/servers.d.ts +17 -0
  25. package/dist/main/app/servers.js +60 -0
  26. package/dist/main/app/ui-extension-targets.d.ts +42 -0
  27. package/dist/main/app/ui-extension-targets.js +101 -0
  28. package/dist/main/app/window-close-reveal.harness.d.ts +34 -0
  29. package/dist/main/app/window-close-reveal.harness.js +65 -0
  30. package/dist/main/app/window-events.d.ts +15 -0
  31. package/dist/main/app/window-events.js +45 -0
  32. package/dist/main/app/window-runtime-services.d.ts +41 -0
  33. package/dist/main/app/window-runtime-services.js +197 -0
  34. package/dist/main/app/workbench-modules.d.ts +24 -0
  35. package/dist/main/app/workbench-modules.js +51 -0
  36. package/dist/main/app/workbench-window.d.ts +85 -0
  37. package/dist/main/app/workbench-window.js +310 -0
  38. package/dist/main/index.bundle.js +11712 -9986
  39. package/dist/main/index.js +49 -1
  40. package/dist/main/ipc/app-lifecycle.d.ts +1 -31
  41. package/dist/main/ipc/app-lifecycle.js +1 -53
  42. package/dist/main/ipc/app.d.ts +4 -1
  43. package/dist/main/ipc/app.js +4 -3
  44. package/dist/main/ipc/bridge-router.d.ts +19 -116
  45. package/dist/main/ipc/bridge-router.js +28 -2128
  46. package/dist/main/ipc/device-picker.d.ts +16 -0
  47. package/dist/main/ipc/device-picker.js +27 -0
  48. package/dist/main/ipc/index.d.ts +5 -0
  49. package/dist/main/ipc/index.js +5 -0
  50. package/dist/main/ipc/internal-devtools.d.ts +16 -0
  51. package/dist/main/ipc/internal-devtools.js +10 -0
  52. package/dist/main/ipc/page-scroll.d.ts +1 -13
  53. package/dist/main/ipc/page-scroll.js +1 -16
  54. package/dist/main/ipc/popover.d.ts +4 -1
  55. package/dist/main/ipc/popover.js +26 -19
  56. package/dist/main/ipc/project-create.d.ts +16 -0
  57. package/dist/main/ipc/project-create.js +27 -0
  58. package/dist/main/ipc/project-fs.d.ts +38 -3
  59. package/dist/main/ipc/project-fs.js +53 -22
  60. package/dist/main/ipc/projects.d.ts +3 -3
  61. package/dist/main/ipc/projects.js +47 -11
  62. package/dist/main/ipc/session-listener-bag.d.ts +1 -40
  63. package/dist/main/ipc/session-listener-bag.js +1 -39
  64. package/dist/main/ipc/session.d.ts +4 -1
  65. package/dist/main/ipc/session.js +26 -26
  66. package/dist/main/ipc/settings.d.ts +4 -1
  67. package/dist/main/ipc/settings.js +17 -19
  68. package/dist/main/ipc/simulator-module.d.ts +9 -3
  69. package/dist/main/ipc/simulator-module.js +13 -10
  70. package/dist/main/ipc/simulator.d.ts +4 -1
  71. package/dist/main/ipc/simulator.js +12 -18
  72. package/dist/main/ipc/tooltip.d.ts +14 -0
  73. package/dist/main/ipc/tooltip.js +29 -0
  74. package/dist/main/ipc/views.d.ts +19 -2
  75. package/dist/main/ipc/views.js +76 -8
  76. package/dist/main/runtime/devtools-backend-before-quit.harness.d.ts +43 -0
  77. package/dist/main/runtime/devtools-backend-before-quit.harness.js +87 -0
  78. package/dist/main/runtime/devtools-backend.js +60 -4
  79. package/dist/main/runtime/devtools-runtime-mock.harness.d.ts +21 -0
  80. package/dist/main/runtime/devtools-runtime-mock.harness.js +313 -0
  81. package/dist/main/runtime/miniapp-runtime.d.ts +91 -22
  82. package/dist/main/services/app-services.d.ts +62 -0
  83. package/dist/main/services/app-services.js +64 -0
  84. package/dist/main/services/automation/connection-target.d.ts +36 -0
  85. package/dist/main/services/automation/connection-target.js +29 -0
  86. package/dist/main/services/automation/console-bridge.d.ts +28 -0
  87. package/dist/main/services/automation/console-bridge.js +91 -0
  88. package/dist/main/services/automation/handlers/app.js +4 -4
  89. package/dist/main/services/automation/handlers/element.js +55 -21
  90. package/dist/main/services/automation/index.d.ts +12 -1
  91. package/dist/main/services/automation/index.js +54 -133
  92. package/dist/main/services/cdp-session/index.d.ts +87 -0
  93. package/dist/main/services/cdp-session/index.js +173 -0
  94. package/dist/main/services/compile-standby.js +4 -0
  95. package/dist/main/services/console-forward/cdp-inject.d.ts +18 -0
  96. package/dist/main/services/console-forward/cdp-inject.js +30 -0
  97. package/dist/main/services/console-forward/global-console-mirror.d.ts +33 -0
  98. package/dist/main/services/console-forward/global-console-mirror.js +71 -0
  99. package/dist/main/services/console-forward/global-diagnostics-mirror.d.ts +33 -0
  100. package/dist/main/services/console-forward/global-diagnostics-mirror.js +73 -0
  101. package/dist/main/services/console-forward/index.d.ts +1 -46
  102. package/dist/main/services/console-forward/index.js +1 -185
  103. package/dist/main/services/console-forward/internal-log.d.ts +2 -0
  104. package/dist/main/services/console-forward/internal-log.js +2 -0
  105. package/dist/main/services/console-forward/open-gated-relay.d.ts +67 -0
  106. package/dist/main/services/console-forward/open-gated-relay.js +55 -0
  107. package/dist/main/services/default-adapter.js +1 -1
  108. package/dist/main/services/diagnostics/index.d.ts +1 -48
  109. package/dist/main/services/diagnostics/index.js +1 -60
  110. package/dist/main/services/dimina-resource-server.d.ts +1 -6
  111. package/dist/main/services/dimina-resource-server.js +1 -98
  112. package/dist/main/services/elements-forward/index.d.ts +132 -15
  113. package/dist/main/services/elements-forward/index.js +155 -304
  114. package/dist/main/services/fs-bridge-protocol.d.ts +61 -0
  115. package/dist/main/services/fs-bridge-protocol.js +34 -0
  116. package/dist/main/services/fs-watch-sse.d.ts +40 -0
  117. package/dist/main/services/fs-watch-sse.js +113 -0
  118. package/dist/main/services/http-json.d.ts +9 -0
  119. package/dist/main/services/http-json.js +6 -0
  120. package/dist/main/services/layout/index.d.ts +11 -0
  121. package/dist/main/services/layout/index.js +23 -0
  122. package/dist/main/services/mcp/connection-owner.d.ts +38 -0
  123. package/dist/main/services/mcp/connection-owner.js +79 -0
  124. package/dist/main/services/mcp/index.d.ts +3 -1
  125. package/dist/main/services/mcp/index.js +4 -3
  126. package/dist/main/services/mcp/opened-project.d.ts +88 -0
  127. package/dist/main/services/mcp/opened-project.js +60 -0
  128. package/dist/main/services/mcp/server.d.ts +2 -1
  129. package/dist/main/services/mcp/server.js +29 -4
  130. package/dist/main/services/mcp/target-manager.d.ts +71 -23
  131. package/dist/main/services/mcp/target-manager.js +269 -138
  132. package/dist/main/services/mcp/target-selection.d.ts +47 -0
  133. package/dist/main/services/mcp/target-selection.js +71 -0
  134. package/dist/main/services/mcp/tools/context-tools.js +20 -5
  135. package/dist/main/services/mcp/tools/project-tools.d.ts +72 -0
  136. package/dist/main/services/mcp/tools/project-tools.js +133 -0
  137. package/dist/main/services/module.d.ts +13 -5
  138. package/dist/main/services/network-forward/body-cache.d.ts +72 -0
  139. package/dist/main/services/network-forward/body-cache.js +179 -0
  140. package/dist/main/services/network-forward/frontend-dispatch.d.ts +91 -0
  141. package/dist/main/services/network-forward/frontend-dispatch.js +148 -0
  142. package/dist/main/services/network-forward/global-body-gate.d.ts +46 -0
  143. package/dist/main/services/network-forward/global-body-gate.js +93 -0
  144. package/dist/main/services/network-forward/global-mirror-test-fixtures.d.ts +48 -0
  145. package/dist/main/services/network-forward/global-mirror-test-fixtures.js +96 -0
  146. package/dist/main/services/network-forward/http.d.ts +47 -0
  147. package/dist/main/services/network-forward/http.js +162 -0
  148. package/dist/main/services/network-forward/index.d.ts +135 -15
  149. package/dist/main/services/network-forward/index.js +854 -224
  150. package/dist/main/services/network-forward/request-ids.d.ts +5 -0
  151. package/dist/main/services/network-forward/request-ids.js +5 -0
  152. package/dist/main/services/network-forward/user-facing.d.ts +21 -0
  153. package/dist/main/services/network-forward/user-facing.js +50 -0
  154. package/dist/main/services/network-forward/websocket.d.ts +36 -0
  155. package/dist/main/services/network-forward/websocket.js +120 -0
  156. package/dist/main/services/notifications/renderer-notifier.d.ts +71 -9
  157. package/dist/main/services/notifications/renderer-notifier.js +45 -8
  158. package/dist/main/services/projects/create-project-service.js +19 -5
  159. package/dist/main/services/projects/local-provider.js +8 -4
  160. package/dist/main/services/projects/project-repository.d.ts +59 -7
  161. package/dist/main/services/projects/project-repository.js +285 -51
  162. package/dist/main/services/projects/types.d.ts +44 -34
  163. package/dist/main/services/render-inspect/index.d.ts +12 -2
  164. package/dist/main/services/render-inspect/index.js +21 -102
  165. package/dist/main/services/safe-area/index.d.ts +21 -6
  166. package/dist/main/services/safe-area/index.js +92 -46
  167. package/dist/main/services/service-host-pool/pool.d.ts +1 -196
  168. package/dist/main/services/service-host-pool/pool.js +1 -363
  169. package/dist/main/services/settings/index.d.ts +7 -1
  170. package/dist/main/services/settings/index.js +22 -2
  171. package/dist/main/services/simulator/custom-apis.d.ts +1 -42
  172. package/dist/main/services/simulator/custom-apis.js +1 -46
  173. package/dist/main/services/simulator/referer.d.ts +1 -9
  174. package/dist/main/services/simulator/referer.js +1 -19
  175. package/dist/main/services/simulator/ui-extensions.d.ts +21 -0
  176. package/dist/main/services/simulator/ui-extensions.js +176 -0
  177. package/dist/main/services/simulator-appdata/index.d.ts +6 -0
  178. package/dist/main/services/simulator-appdata/index.js +21 -2
  179. package/dist/main/services/simulator-current-page/index.d.ts +5 -3
  180. package/dist/main/services/simulator-current-page/index.js +8 -1
  181. package/dist/main/services/simulator-storage/index.d.ts +34 -5
  182. package/dist/main/services/simulator-storage/index.js +73 -71
  183. package/dist/main/services/simulator-storage/service-storage-ops.d.ts +1 -39
  184. package/dist/main/services/simulator-storage/service-storage-ops.js +1 -66
  185. package/dist/main/services/simulator-storage/window-scope.d.ts +20 -0
  186. package/dist/main/services/simulator-storage/window-scope.js +20 -0
  187. package/dist/main/services/simulator-temp-files/disk.d.ts +1 -54
  188. package/dist/main/services/simulator-temp-files/disk.js +1 -237
  189. package/dist/main/services/simulator-temp-files/fs-channels.d.ts +1 -68
  190. package/dist/main/services/simulator-temp-files/fs-channels.js +1 -107
  191. package/dist/main/services/simulator-temp-files/index.d.ts +1 -32
  192. package/dist/main/services/simulator-temp-files/index.js +1 -181
  193. package/dist/main/services/simulator-temp-files/request-handler.d.ts +1 -29
  194. package/dist/main/services/simulator-temp-files/request-handler.js +1 -177
  195. package/dist/main/services/simulator-temp-files/resolver.d.ts +1 -21
  196. package/dist/main/services/simulator-temp-files/resolver.js +1 -21
  197. package/dist/main/services/simulator-temp-files/store.d.ts +1 -13
  198. package/dist/main/services/simulator-temp-files/store.js +1 -23
  199. package/dist/main/services/update/github-release-checker.js +22 -3
  200. package/dist/main/services/update/update-manager.d.ts +21 -4
  201. package/dist/main/services/update/update-manager.js +55 -11
  202. package/dist/main/services/views/clear-console-filter.d.ts +44 -0
  203. package/dist/main/services/views/clear-console-filter.js +86 -0
  204. package/dist/main/services/views/console-filter-test-fixtures.d.ts +94 -0
  205. package/dist/main/services/views/console-filter-test-fixtures.js +82 -0
  206. package/dist/main/services/views/console-filter.d.ts +94 -0
  207. package/dist/main/services/views/console-filter.js +190 -0
  208. package/dist/main/services/views/devtools-tabs.d.ts +24 -4
  209. package/dist/main/services/views/devtools-tabs.js +40 -21
  210. package/dist/main/services/views/frontend-bootstrap-gate.d.ts +59 -0
  211. package/dist/main/services/views/frontend-bootstrap-gate.js +117 -0
  212. package/dist/main/services/views/host-dialog-port-channel.d.ts +18 -0
  213. package/dist/main/services/views/host-dialog-port-channel.js +15 -0
  214. package/dist/main/services/views/host-dialog-session-runtime.d.ts +10 -0
  215. package/dist/main/services/views/host-dialog-session-runtime.js +17 -0
  216. package/dist/main/services/views/host-dialog-view.d.ts +95 -0
  217. package/dist/main/services/views/host-dialog-view.js +147 -0
  218. package/dist/main/services/views/host-sidebar-port-channel.d.ts +18 -0
  219. package/dist/main/services/views/host-sidebar-port-channel.js +15 -0
  220. package/dist/main/services/views/host-sidebar-session-runtime.d.ts +10 -0
  221. package/dist/main/services/views/host-sidebar-session-runtime.js +17 -0
  222. package/dist/main/services/views/host-sidebar-view.d.ts +59 -0
  223. package/dist/main/services/views/host-sidebar-view.js +44 -0
  224. package/dist/main/services/views/host-slot-port-channel.d.ts +124 -0
  225. package/dist/main/services/views/host-slot-port-channel.js +289 -0
  226. package/dist/main/services/views/host-slot-session-runtime.d.ts +40 -0
  227. package/dist/main/services/views/host-slot-session-runtime.js +50 -0
  228. package/dist/main/services/views/host-slot-view.d.ts +109 -0
  229. package/dist/main/services/views/host-slot-view.js +147 -0
  230. package/dist/main/services/views/host-toolbar-port-channel.d.ts +6 -91
  231. package/dist/main/services/views/host-toolbar-port-channel.js +10 -243
  232. package/dist/main/services/views/host-toolbar-session-runtime.d.ts +5 -30
  233. package/dist/main/services/views/host-toolbar-session-runtime.js +9 -47
  234. package/dist/main/services/views/host-toolbar-view.d.ts +34 -7
  235. package/dist/main/services/views/host-toolbar-view.js +30 -237
  236. package/dist/main/services/views/managed-web-contents-view.d.ts +48 -0
  237. package/dist/main/services/views/managed-web-contents-view.js +143 -0
  238. package/dist/main/services/views/miniapp-partition.d.ts +1 -89
  239. package/dist/main/services/views/miniapp-partition.js +1 -158
  240. package/dist/main/services/views/native-simulator-devtools-host.js +206 -68
  241. package/dist/main/services/views/native-simulator-view.d.ts +6 -0
  242. package/dist/main/services/views/native-simulator-view.js +47 -40
  243. package/dist/main/services/views/native-view-tree.d.ts +25 -0
  244. package/dist/main/services/views/native-view-tree.js +69 -0
  245. package/dist/main/services/views/overlay-panels-view.d.ts +63 -4
  246. package/dist/main/services/views/overlay-panels-view.js +257 -108
  247. package/dist/main/services/views/placement-reconciler.d.ts +18 -18
  248. package/dist/main/services/views/placement-reconciler.js +91 -29
  249. package/dist/main/services/views/placement-test-driver.d.ts +27 -0
  250. package/dist/main/services/views/placement-test-driver.js +29 -0
  251. package/dist/main/services/views/refresh-styles.d.ts +10 -0
  252. package/dist/main/services/views/refresh-styles.js +57 -0
  253. package/dist/main/services/views/simulator-session-policy.d.ts +1 -27
  254. package/dist/main/services/views/simulator-session-policy.js +1 -98
  255. package/dist/main/services/views/view-manager-devtools-host-test-fixtures.d.ts +76 -0
  256. package/dist/main/services/views/view-manager-devtools-host-test-fixtures.js +184 -0
  257. package/dist/main/services/views/view-manager.d.ts +69 -88
  258. package/dist/main/services/views/view-manager.js +62 -7
  259. package/dist/main/services/views/workbench-view.d.ts +2 -0
  260. package/dist/main/services/views/workbench-view.js +104 -17
  261. package/dist/main/services/window-contexts/context-router.d.ts +36 -0
  262. package/dist/main/services/window-contexts/context-router.js +55 -0
  263. package/dist/main/services/workbench-coi-host.d.ts +52 -0
  264. package/dist/main/services/workbench-coi-host.js +227 -0
  265. package/dist/main/services/workbench-coi-server.d.ts +11 -0
  266. package/dist/main/services/workbench-coi-server.js +126 -126
  267. package/dist/main/services/workbench-coi-shutdown.d.ts +40 -0
  268. package/dist/main/services/workbench-coi-shutdown.js +69 -0
  269. package/dist/main/services/workbench-coi-static.d.ts +23 -0
  270. package/dist/main/services/workbench-coi-static.js +87 -0
  271. package/dist/main/services/workbench-context.d.ts +88 -8
  272. package/dist/main/services/workbench-context.js +54 -6
  273. package/dist/main/services/workspace/compile-log-buffer.d.ts +40 -0
  274. package/dist/main/services/workspace/compile-log-buffer.js +41 -0
  275. package/dist/main/services/workspace/compile-mode-adapter.d.ts +18 -0
  276. package/dist/main/services/workspace/compile-mode-adapter.js +57 -0
  277. package/dist/main/services/workspace/compile-mode-store.d.ts +25 -0
  278. package/dist/main/services/workspace/compile-mode-store.js +71 -0
  279. package/dist/main/services/workspace/open-project-guards.d.ts +16 -0
  280. package/dist/main/services/workspace/open-project-guards.js +42 -0
  281. package/dist/main/services/workspace/rebuild-status.d.ts +37 -0
  282. package/dist/main/services/workspace/rebuild-status.js +36 -0
  283. package/dist/main/services/workspace/session-status-store.d.ts +47 -0
  284. package/dist/main/services/workspace/session-status-store.js +73 -0
  285. package/dist/main/services/workspace/status-tap.d.ts +20 -0
  286. package/dist/main/services/workspace/status-tap.js +32 -0
  287. package/dist/main/services/workspace/workspace-compile-modes.d.ts +59 -0
  288. package/dist/main/services/workspace/workspace-compile-modes.js +93 -0
  289. package/dist/main/services/workspace/workspace-lifecycle-race.testutil.d.ts +22 -0
  290. package/dist/main/services/workspace/workspace-lifecycle-race.testutil.js +62 -0
  291. package/dist/main/services/workspace/workspace-referer.d.ts +17 -0
  292. package/dist/main/services/workspace/workspace-referer.js +26 -0
  293. package/dist/main/services/workspace/workspace-service.d.ts +7 -5
  294. package/dist/main/services/workspace/workspace-service.js +96 -135
  295. package/dist/main/services/workspace/workspace-thumbnails.d.ts +22 -0
  296. package/dist/main/services/workspace/workspace-thumbnails.js +67 -0
  297. package/dist/main/utils/ipc-context-source.d.ts +40 -0
  298. package/dist/main/utils/ipc-context-source.js +23 -0
  299. package/dist/main/utils/ipc-registry.d.ts +46 -21
  300. package/dist/main/utils/ipc-registry.js +166 -76
  301. package/dist/main/utils/paths.d.ts +18 -0
  302. package/dist/main/utils/paths.js +18 -0
  303. package/dist/main/utils/sender-policy.d.ts +10 -1
  304. package/dist/main/utils/sender-policy.js +42 -4
  305. package/dist/main/utils/theme.d.ts +18 -8
  306. package/dist/main/utils/theme.js +19 -9
  307. package/dist/main/windows/internal-devtools-window/index.d.ts +66 -0
  308. package/dist/main/windows/internal-devtools-window/index.js +160 -0
  309. package/dist/main/windows/main-window/create.d.ts +16 -0
  310. package/dist/main/windows/main-window/create.js +19 -11
  311. package/dist/main/windows/main-window/events.d.ts +1 -1
  312. package/dist/main/windows/main-window/events.js +26 -13
  313. package/dist/main/windows/main-window/index.d.ts +1 -1
  314. package/dist/main/windows/main-window/index.js +1 -1
  315. package/dist/main/windows/service-host-window/create.d.ts +1 -92
  316. package/dist/main/windows/service-host-window/create.js +1 -154
  317. package/dist/native-host/common/common.js +173 -53
  318. package/dist/native-host/container/pageFrame.css +1 -1
  319. package/dist/native-host/render/render.js +8278 -3659
  320. package/dist/native-host/service/service.js +2 -2
  321. package/dist/preload/index.d.ts +2 -0
  322. package/dist/preload/index.js +1 -0
  323. package/dist/preload/instrumentation/app-data.d.ts +2 -2
  324. package/dist/preload/instrumentation/app-data.js +1 -1
  325. package/dist/preload/instrumentation/wxml.js +1 -1
  326. package/dist/preload/runtime/bridge.d.ts +3 -3
  327. package/dist/preload/runtime/bridge.js +2 -2
  328. package/dist/preload/runtime/clipboard.d.ts +6 -0
  329. package/dist/preload/runtime/clipboard.js +12 -0
  330. package/dist/preload/runtime/host-dialog-advertiser.d.ts +22 -0
  331. package/dist/preload/runtime/host-dialog-advertiser.js +37 -0
  332. package/dist/preload/runtime/host-dialog-port.d.ts +44 -0
  333. package/dist/preload/runtime/host-dialog-port.js +53 -0
  334. package/dist/preload/runtime/host-dialog-runtime.d.ts +28 -0
  335. package/dist/preload/runtime/host-dialog-runtime.js +36 -0
  336. package/dist/preload/runtime/host-sidebar-advertiser.d.ts +19 -0
  337. package/dist/preload/runtime/host-sidebar-advertiser.js +35 -0
  338. package/dist/preload/runtime/host-sidebar-port.d.ts +44 -0
  339. package/dist/preload/runtime/host-sidebar-port.js +53 -0
  340. package/dist/preload/runtime/host-sidebar-runtime.d.ts +28 -0
  341. package/dist/preload/runtime/host-sidebar-runtime.js +36 -0
  342. package/dist/preload/runtime/host-slot-port-bridge.d.ts +18 -0
  343. package/dist/preload/runtime/host-slot-port-bridge.js +112 -0
  344. package/dist/preload/runtime/host-toolbar-advertiser.d.ts +5 -13
  345. package/dist/preload/runtime/host-toolbar-advertiser.js +18 -38
  346. package/dist/preload/runtime/host-toolbar-port.d.ts +9 -0
  347. package/dist/preload/runtime/host-toolbar-port.js +11 -95
  348. package/dist/preload/runtime/native-host.d.ts +14 -0
  349. package/dist/preload/runtime/native-host.js +5 -8
  350. package/dist/preload/runtime/node-bindings.d.ts +18 -0
  351. package/dist/preload/runtime/node-bindings.js +44 -0
  352. package/dist/preload/runtime/temp-files.js +9 -2
  353. package/dist/preload/runtime/wait-for-slot-root.d.ts +23 -0
  354. package/dist/preload/runtime/wait-for-slot-root.js +80 -0
  355. package/dist/preload/shared/api-compat.js +63 -41
  356. package/dist/preload/windows/host-dialog-runtime.cjs +360 -0
  357. package/dist/preload/windows/host-dialog-runtime.cjs.map +7 -0
  358. package/dist/preload/windows/host-dialog-runtime.d.ts +2 -0
  359. package/dist/preload/windows/host-dialog-runtime.js +13 -0
  360. package/dist/preload/windows/host-sidebar-runtime.cjs +361 -0
  361. package/dist/preload/windows/host-sidebar-runtime.cjs.map +7 -0
  362. package/dist/preload/windows/host-sidebar-runtime.d.ts +2 -0
  363. package/dist/preload/windows/host-sidebar-runtime.js +13 -0
  364. package/dist/preload/windows/host-toolbar-runtime.cjs +142 -52
  365. package/dist/preload/windows/host-toolbar-runtime.cjs.map +3 -3
  366. package/dist/preload/windows/main.cjs +4922 -1246
  367. package/dist/preload/windows/main.cjs.map +4 -4
  368. package/dist/preload/windows/main.css +428 -0
  369. package/dist/preload/windows/main.css.map +7 -0
  370. package/dist/preload/windows/simulator.cjs +376 -322
  371. package/dist/preload/windows/simulator.cjs.map +4 -4
  372. package/dist/preload/windows/simulator.js +376 -322
  373. package/dist/render-host/pageFrame.html +4 -4
  374. package/dist/render-host/preload.cjs +30 -0
  375. package/dist/render-host/render-inspect.js +184 -115
  376. package/dist/renderer/assets/button-CB2MWjHY.js +2 -0
  377. package/dist/renderer/assets/constants-CkoGPQTS.js +2 -0
  378. package/dist/renderer/assets/constants-zQZ2-y21.js +2 -0
  379. package/dist/renderer/assets/createLucideIcon-cZ9FlZZw.js +2 -0
  380. package/dist/renderer/assets/devicePicker-H2eIO4e1.js +2 -0
  381. package/dist/renderer/assets/dialog-pHzEA8Vx.js +46 -0
  382. package/dist/renderer/assets/dist-B5HADirS.js +2 -0
  383. package/dist/renderer/assets/dist-DIFlRMKe.js +2 -0
  384. package/dist/renderer/assets/hostSidebarDefault-DRWh6OCt.js +2 -0
  385. package/dist/renderer/assets/index-CEL_XFge.js +2 -0
  386. package/dist/renderer/assets/input-CAObw95L.js +2 -0
  387. package/dist/renderer/assets/ipc-channels-overlays-gIPUFnqc.js +2 -0
  388. package/dist/renderer/assets/jsx-runtime-DICEQH_0.css +1 -0
  389. package/dist/renderer/assets/jsx-runtime-DIw5wnYl.js +9 -0
  390. package/dist/renderer/assets/plus-BQ9u5EbL.js +2 -0
  391. package/dist/renderer/assets/popover-Cw7G2Ctp.js +2 -0
  392. package/dist/renderer/assets/presets-DMZOb9ay.js +2 -0
  393. package/dist/renderer/assets/project-api-YTOr_Yvo.js +2 -0
  394. package/dist/renderer/assets/projectCreateDialog-BmLqiYxn.js +2 -0
  395. package/dist/renderer/assets/search-BMvuYF48.js +2 -0
  396. package/dist/renderer/assets/select-nFP95TxM.js +2 -0
  397. package/dist/renderer/assets/settings-CnpVfSWt.js +2 -0
  398. package/dist/renderer/assets/settings-api-Ccsf-Nsj.js +2 -0
  399. package/dist/renderer/assets/settings-tab-bar-CAzrv32m.js +2 -0
  400. package/dist/renderer/assets/smartphone-Bb2GdIKy.js +2 -0
  401. package/dist/renderer/assets/tabs-CPKN3Mmq.js +2 -0
  402. package/dist/renderer/assets/tooltip-D6AxXRk5.js +2 -0
  403. package/dist/renderer/assets/types-Bh0hA7El.js +2 -0
  404. package/dist/renderer/assets/updateDialog-CwndJ0Bl.js +2 -0
  405. package/dist/renderer/assets/utils-sEB5OZEQ.js +2 -0
  406. package/dist/renderer/assets/view-api-B-2zPBR5.js +2 -0
  407. package/dist/renderer/assets/view-ids-BfaDVV5P.js +2 -0
  408. package/dist/renderer/assets/workbench-C0Jkdlps.js +5 -0
  409. package/dist/renderer/assets/workbenchSettings-YD0Ctbm_.js +8 -0
  410. package/dist/renderer/entries/device-picker/index.html +28 -0
  411. package/dist/renderer/entries/host-sidebar-default/index.html +22 -0
  412. package/dist/renderer/entries/main/index.html +16 -7
  413. package/dist/renderer/entries/popover/index.html +16 -6
  414. package/dist/renderer/entries/project-create-dialog/index.html +27 -0
  415. package/dist/renderer/entries/settings/index.html +10 -5
  416. package/dist/renderer/entries/tooltip/index.html +21 -0
  417. package/dist/renderer/entries/update-dialog/index.html +25 -0
  418. package/dist/renderer/entries/workbench/index.html +49 -0
  419. package/dist/renderer/entries/workbench-settings/index.html +12 -5
  420. package/dist/service-host/appdata-set-data.cjs +39 -0
  421. package/dist/service-host/host-env-update.cjs +23 -0
  422. package/dist/service-host/preload.cjs +54 -48
  423. package/dist/service-host/service-message-queue.cjs +71 -0
  424. package/dist/service-host/sync-impls/menu-button-geometry.js +16 -5
  425. package/dist/service-host/sync-impls/menu-button.js +5 -3
  426. package/dist/service-host/sync-impls/system-info.js +31 -9
  427. package/dist/shared/bridge-channels.d.ts +1 -416
  428. package/dist/shared/bridge-channels.js +1 -89
  429. package/dist/shared/compile-mode-state.d.ts +73 -0
  430. package/dist/shared/compile-mode-state.js +100 -0
  431. package/dist/shared/compile-modes.d.ts +152 -0
  432. package/dist/shared/compile-modes.js +237 -0
  433. package/dist/shared/constants.d.ts +22 -0
  434. package/dist/shared/constants.js +22 -0
  435. package/dist/shared/dmb-resource-url.d.ts +2 -0
  436. package/dist/shared/dmb-resource-url.js +2 -0
  437. package/dist/shared/ipc-channels-overlays.d.ts +162 -0
  438. package/dist/shared/ipc-channels-overlays.js +203 -0
  439. package/dist/shared/ipc-channels.d.ts +24 -154
  440. package/dist/shared/ipc-channels.js +48 -96
  441. package/dist/shared/ipc-schemas.d.ts +143 -54
  442. package/dist/shared/ipc-schemas.js +137 -45
  443. package/dist/shared/node-bindings.d.ts +2 -0
  444. package/dist/shared/node-bindings.js +2 -0
  445. package/dist/shared/project-window-types.d.ts +42 -0
  446. package/dist/shared/project-window-types.js +2 -0
  447. package/dist/shared/simulator-route.d.ts +8 -0
  448. package/dist/shared/simulator-route.js +15 -0
  449. package/dist/shared/simulator-ui.d.ts +61 -0
  450. package/dist/shared/simulator-ui.js +12 -0
  451. package/dist/shared/types.d.ts +126 -41
  452. package/dist/shared/view-ids.d.ts +10 -0
  453. package/dist/shared/view-ids.js +23 -0
  454. package/dist/simulator/assets/bridge-channels-B3JAmRfl.js +2 -0
  455. package/dist/simulator/assets/device-shell-ATEhHV2_.css +1 -0
  456. package/dist/simulator/assets/device-shell-DucLepkm.js +431 -0
  457. package/dist/simulator/assets/simulator-B4rbcOVt.js +10 -0
  458. package/dist/simulator/assets/simulator-mini-app-DFo7fhi5.js +2 -0
  459. package/dist/simulator/assets/simulator-ui-BupATgKo.css +1 -0
  460. package/dist/simulator/assets/simulator-ui-i3GCc7YJ.js +2 -0
  461. package/dist/simulator/simulator.html +4 -3
  462. package/dist/simulator/temp-files.d.ts +35 -0
  463. package/dist/simulator/temp-files.js +121 -0
  464. package/dist/simulator/types.d.ts +50 -0
  465. package/dist/simulator/types.js +2 -0
  466. package/dist/vscode-workbench/assets/__vite-browser-external-JIkWewFf.js +1 -0
  467. package/dist/vscode-workbench/assets/{dist-TpGpmMGi.js → dist-CXG-u1VB.js} +3 -3
  468. package/dist/vscode-workbench/assets/fs-core-worker-urls-DZ1nod84.js +1 -0
  469. package/dist/vscode-workbench/assets/fs-core.worker-Bnmpp6fo.js +1 -0
  470. package/dist/vscode-workbench/assets/fs-query.worker-cZ-7Fjch.js +2 -0
  471. package/dist/vscode-workbench/assets/{iconv-lite-umd-C9tiCAJa.js → iconv-lite-umd-Dxx9Qyb4.js} +1 -1
  472. package/dist/vscode-workbench/assets/{index-DJ1HyMZ7.js → index-6VJMsaWj.js} +475 -475
  473. package/dist/vscode-workbench/assets/{jschardet-DE1jV513.js → jschardet-Ba3D16vt.js} +1 -1
  474. package/dist/vscode-workbench/index.html +21 -1
  475. package/package.json +23 -13
  476. package/dist/main/services/views/destroy-child-view.d.ts +0 -9
  477. package/dist/main/services/views/destroy-child-view.js +0 -23
  478. package/dist/preload/instrumentation/wxml-extract.d.ts +0 -11
  479. package/dist/preload/instrumentation/wxml-extract.js +0 -382
  480. package/dist/preload/shared/sid-registry.d.ts +0 -11
  481. package/dist/preload/shared/sid-registry.js +0 -38
  482. package/dist/renderer/assets/constants-EAMiwL9_.js +0 -2
  483. package/dist/renderer/assets/index-BMqyDx71.js +0 -49
  484. package/dist/renderer/assets/input-CDAEwpBO.js +0 -2
  485. package/dist/renderer/assets/ipc-transport-B7eFOR68.css +0 -1
  486. package/dist/renderer/assets/ipc-transport-_G1k5V1p.js +0 -9
  487. package/dist/renderer/assets/popover-DEdjK14m.js +0 -2
  488. package/dist/renderer/assets/select-DpKPCh3y.js +0 -2
  489. package/dist/renderer/assets/settings-M5q2elUr.js +0 -2
  490. package/dist/renderer/assets/settings-api-CDlZoHiO.js +0 -2
  491. package/dist/renderer/assets/workbenchSettings-CT_H1WhV.js +0 -8
  492. package/dist/shared/appdata-accumulator.d.ts +0 -95
  493. package/dist/shared/appdata-accumulator.js +0 -218
  494. package/dist/shared/request-core.d.ts +0 -84
  495. package/dist/shared/request-core.js +0 -168
  496. package/dist/shared/simulator-api-metadata.d.ts +0 -26
  497. package/dist/shared/simulator-api-metadata.js +0 -59
  498. package/dist/shared/vpath.d.ts +0 -42
  499. package/dist/shared/vpath.js +0 -105
  500. package/dist/simulator/assets/bridge-channels-zhsumfky.js +0 -2
  501. package/dist/simulator/assets/device-shell-C-wcFq3Z.js +0 -2
  502. package/dist/simulator/assets/device-shell-CS1rqAQz.css +0 -1
  503. package/dist/simulator/assets/jsx-runtime-BDTY6fEq.js +0 -2
  504. package/dist/simulator/assets/simulator-DU3-fS3v.js +0 -10
  505. package/dist/simulator/assets/simulator-mini-app-DzfMfnVM.js +0 -2
  506. package/dist/simulator/device-shell/menu-button-geometry.js +0 -8
  507. package/dist/vscode-workbench/assets/__vite-browser-external-CXi6Kz9W.js +0 -1
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Decide and emit the post-rebuild status for one completed rebuild.
3
+ *
4
+ * Explicit rebuild (`info.explicit` — the 重新编译 button, via
5
+ * `session.rebuild()`): the renderer's own relaunch drives a hard re-attach
6
+ * once the rebuild IPC resolves, and that re-attach is the run's ONLY
7
+ * reflection. Emitting `hotReload: true` here as well would race a soft
8
+ * reload against it — the two arrive through different channels with no
9
+ * ordering guarantee, so the soft reload can land AFTER the hard re-attach
10
+ * and drag the simulator back to the drifted page. The style fast path is a
11
+ * soft-update path too and is skipped for the same reason.
12
+ *
13
+ * Watcher rebuild (explicit absent/false) — style-only fast path: hot-swap the
14
+ * render-host stylesheets in place instead of respawning the DeviceShell —
15
+ * page stack / form state / scroll / focus survive (no jitter, no focus
16
+ * steal); `hotReload: false` keeps the renderer from bumping its reload token
17
+ * (the respawn signal). Falls through to the full reload when the swap can't
18
+ * run (no live render guest yet) so an edit is never dropped.
19
+ *
20
+ * `getProjectPages` never throws; empty pages are withheld so the renderer
21
+ * keeps its previous launch dropdown.
22
+ */
23
+ export function reportRebuildStatus(info, deps) {
24
+ const { pages } = deps.repo.getProjectPages(deps.projectPath);
25
+ const pageList = pages.length ? pages : undefined;
26
+ if (info?.explicit) {
27
+ deps.sendStatus('ready', '编译完成', false, pageList);
28
+ return;
29
+ }
30
+ if (info?.styleOnly && deps.autoReload && deps.refreshSimulatorStyles()) {
31
+ deps.sendStatus('ready', '样式已热更新', false, pageList);
32
+ return;
33
+ }
34
+ deps.sendStatus('ready', deps.autoReload ? '编译完成,已重启' : '编译完成', deps.autoReload, pageList);
35
+ }
36
+ //# sourceMappingURL=rebuild-status.js.map
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Authoritative, queryable record of the active project's compile status in
3
+ * the main process.
4
+ *
5
+ * `notify.projectStatus` is a fire-and-forget push to the renderer; MCP
6
+ * clients instead need to QUERY the latest state and AWAIT the next settled
7
+ * state. The notifier tap (see `status-tap.ts`) records every payload here
8
+ * BEFORE it is broadcast — the store is the authority, the renderer push is
9
+ * derived from the same single gate.
10
+ *
11
+ * "Settled" means the compile pipeline is not mid-flight: every phase except
12
+ * `'compiling'`. `generation` is a monotonic per-record counter so a waiter
13
+ * can ignore states recorded before its own trigger (e.g. `project_open`
14
+ * must not accept the PREVIOUS session's `'ready'` as its own result).
15
+ */
16
+ export type SessionPhase = 'idle' | 'compiling' | 'ready' | 'error';
17
+ export interface SessionStatusSnapshot {
18
+ phase: SessionPhase;
19
+ message: string;
20
+ /** False once the file watcher died mid-session (saves no longer trigger a rebuild). Reset when the next compile starts. */
21
+ watcherAlive: boolean;
22
+ /** Wall-clock time of the last recorded transition; 0 before the first one. */
23
+ updatedAt: number;
24
+ /** Monotonic counter bumped on every record. */
25
+ generation: number;
26
+ }
27
+ export interface SessionStatusStore {
28
+ get(): SessionStatusSnapshot;
29
+ /** Record one `projectStatus` payload (the notifier tap is the only expected caller). */
30
+ record(payload: {
31
+ status: string;
32
+ message: string;
33
+ watcher?: 'dead';
34
+ }): void;
35
+ /**
36
+ * Resolve with the first snapshot whose phase is settled (not 'compiling')
37
+ * AND whose generation is greater than `afterGeneration` (default: accept
38
+ * the current snapshot when it is already settled). Rejects after
39
+ * `timeoutMs` with the last observed phase in the message.
40
+ */
41
+ waitForSettled(opts: {
42
+ afterGeneration?: number;
43
+ timeoutMs: number;
44
+ }): Promise<SessionStatusSnapshot>;
45
+ }
46
+ export declare function createSessionStatusStore(): SessionStatusStore;
47
+ //# sourceMappingURL=session-status-store.d.ts.map
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Authoritative, queryable record of the active project's compile status in
3
+ * the main process.
4
+ *
5
+ * `notify.projectStatus` is a fire-and-forget push to the renderer; MCP
6
+ * clients instead need to QUERY the latest state and AWAIT the next settled
7
+ * state. The notifier tap (see `status-tap.ts`) records every payload here
8
+ * BEFORE it is broadcast — the store is the authority, the renderer push is
9
+ * derived from the same single gate.
10
+ *
11
+ * "Settled" means the compile pipeline is not mid-flight: every phase except
12
+ * `'compiling'`. `generation` is a monotonic per-record counter so a waiter
13
+ * can ignore states recorded before its own trigger (e.g. `project_open`
14
+ * must not accept the PREVIOUS session's `'ready'` as its own result).
15
+ */
16
+ function toPhase(status) {
17
+ if (status === 'compiling')
18
+ return 'compiling';
19
+ if (status === 'error')
20
+ return 'error';
21
+ // 'ready' plus any future non-error chatter: the pipeline is not mid-flight.
22
+ return 'ready';
23
+ }
24
+ export function createSessionStatusStore() {
25
+ let snapshot = {
26
+ phase: 'idle',
27
+ message: '',
28
+ watcherAlive: true,
29
+ updatedAt: 0,
30
+ generation: 0,
31
+ };
32
+ const waiters = new Set();
33
+ return {
34
+ get: () => snapshot,
35
+ record(payload) {
36
+ const phase = toPhase(payload.status);
37
+ snapshot = {
38
+ phase,
39
+ message: payload.message,
40
+ // A dead watcher is a session-lifetime fact; only a NEW compile
41
+ // (fresh open) resets it. Rebuild 'ready' chatter keeps it dead.
42
+ watcherAlive: payload.watcher === 'dead'
43
+ ? false
44
+ : phase === 'compiling' ? true : snapshot.watcherAlive,
45
+ updatedAt: Date.now(),
46
+ generation: snapshot.generation + 1,
47
+ };
48
+ for (const waiter of [...waiters])
49
+ waiter(snapshot);
50
+ },
51
+ waitForSettled({ afterGeneration = -1, timeoutMs }) {
52
+ const isSettled = (s) => s.phase !== 'compiling' && s.generation > afterGeneration;
53
+ if (isSettled(snapshot))
54
+ return Promise.resolve(snapshot);
55
+ return new Promise((resolve, reject) => {
56
+ const timer = setTimeout(() => {
57
+ waiters.delete(onRecord);
58
+ reject(new Error(`timed out after ${timeoutMs}ms waiting for the compile to settle `
59
+ + `(last phase: ${snapshot.phase})`));
60
+ }, timeoutMs);
61
+ const onRecord = (s) => {
62
+ if (!isSettled(s))
63
+ return;
64
+ clearTimeout(timer);
65
+ waiters.delete(onRecord);
66
+ resolve(s);
67
+ };
68
+ waiters.add(onRecord);
69
+ });
70
+ },
71
+ };
72
+ }
73
+ //# sourceMappingURL=session-status-store.js.map
@@ -0,0 +1,20 @@
1
+ import type { RendererNotifier } from '../notifications/renderer-notifier.js';
2
+ import type { CompileLogBuffer } from './compile-log-buffer.js';
3
+ import type { SessionStatusStore } from './session-status-store.js';
4
+ /**
5
+ * Wraps the renderer notifier so the two compile-state pushes ALSO land in
6
+ * the main-process authorities (session-status store + compile-log buffer)
7
+ * before the renderer broadcast.
8
+ *
9
+ * `ctx.notify` is the single outlet every status transition and log line
10
+ * already flows through (`workspace-service`'s `sendStatus` / `onLog`
11
+ * closures), so tapping at this gate keeps ONE bookkeeping site instead of a
12
+ * second call next to every producer — and the stale-session generation
13
+ * guard upstream of the notify call protects the store/buffer for free.
14
+ *
15
+ * A fresh open (`'compiling'` without `hotReload`) starts a new compile
16
+ * timeline, so it clears the buffer; watcher rebuilds never pass through
17
+ * `'compiling'` and keep appending to the same timeline.
18
+ */
19
+ export declare function tapNotifierIntoStores(notify: RendererNotifier, status: SessionStatusStore, compileLogs: CompileLogBuffer): RendererNotifier;
20
+ //# sourceMappingURL=status-tap.d.ts.map
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Wraps the renderer notifier so the two compile-state pushes ALSO land in
3
+ * the main-process authorities (session-status store + compile-log buffer)
4
+ * before the renderer broadcast.
5
+ *
6
+ * `ctx.notify` is the single outlet every status transition and log line
7
+ * already flows through (`workspace-service`'s `sendStatus` / `onLog`
8
+ * closures), so tapping at this gate keeps ONE bookkeeping site instead of a
9
+ * second call next to every producer — and the stale-session generation
10
+ * guard upstream of the notify call protects the store/buffer for free.
11
+ *
12
+ * A fresh open (`'compiling'` without `hotReload`) starts a new compile
13
+ * timeline, so it clears the buffer; watcher rebuilds never pass through
14
+ * `'compiling'` and keep appending to the same timeline.
15
+ */
16
+ export function tapNotifierIntoStores(notify, status, compileLogs) {
17
+ return {
18
+ ...notify,
19
+ projectStatus(payload) {
20
+ if (payload.status === 'compiling' && payload.hotReload !== true) {
21
+ compileLogs.clear();
22
+ }
23
+ status.record(payload);
24
+ notify.projectStatus(payload);
25
+ },
26
+ compileLog(payload) {
27
+ compileLogs.append(payload);
28
+ notify.compileLog(payload);
29
+ },
30
+ };
31
+ }
32
+ //# sourceMappingURL=status-tap.js.map
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Wires a `CompileModeStore` into `WorkspaceService` for whichever project is
3
+ * currently open. Extracted out of workspace-service.ts to keep that file
4
+ * under the repo's file-length ratchet — this is the sole owner of the
5
+ * store's lifecycle (open/replace/dispose); `WorkspaceService` only forwards
6
+ * to it.
7
+ */
8
+ import { type CompileModeCommand } from '../../../shared/compile-mode-state.js';
9
+ import type { CompileConfig } from '../../../shared/types.js';
10
+ import type { ProjectsProvider } from '../projects/types.js';
11
+ import { type CompileModeChange, type CompileModeSnapshot, type CompileModeStore } from './compile-mode-store.js';
12
+ export interface CompileModeManager {
13
+ /**
14
+ * Creates and returns a store for `projectPath` as a standalone handle —
15
+ * it does NOT touch the current store or subscribe to `onChange`. The
16
+ * caller owns the handle until it either passes it to `adopt` or disposes
17
+ * it itself (e.g. because the open it belongs to was superseded).
18
+ */
19
+ open(projectPath: string): Promise<CompileModeStore>;
20
+ /**
21
+ * Makes `store` the current one: disposes whatever was current (and its
22
+ * subscription) first, then wires `store` up. The current store must only
23
+ * ever change here, alongside the session it belongs to — never as a side
24
+ * effect of merely opening one.
25
+ */
26
+ adopt(store: CompileModeStore): void;
27
+ /** Disposes the current store, if any. Safe to call when none is open. */
28
+ disposeCurrent(): void;
29
+ /**
30
+ * `projectPath` omitted returns the currently open project's snapshot
31
+ * (for callers, like the popover, that don't track a project path of
32
+ * their own); given, it must match the open store's project or this
33
+ * throws — a caller that DOES know the path never silently reads another
34
+ * project's modes.
35
+ */
36
+ getCompileModeState(projectPath?: string): CompileModeSnapshot;
37
+ applyCompileModeCommand(command: CompileModeCommand): Promise<CompileModeChange>;
38
+ getCompileConfig(projectPath: string): Promise<CompileConfig>;
39
+ /** Untouched by the store redesign — a direct provider passthrough. */
40
+ saveCompileConfig(projectPath: string, config: CompileConfig): Promise<void>;
41
+ }
42
+ export declare function createCompileModeManager(provider: ProjectsProvider, onChange: (change: CompileModeChange) => void): CompileModeManager;
43
+ /**
44
+ * Opens a store handle for `projectPath` right after a compile succeeds,
45
+ * WITHOUT making it current — the caller decides whether to `adopt` it once
46
+ * it has confirmed (under the op lock) that its open is still the latest
47
+ * one; a superseded open disposes the handle itself instead. On failure,
48
+ * closes `session` (best-effort) and returns the error message. A session
49
+ * that compiled but whose store failed to open must not be left running, so
50
+ * this centralizes that cleanup for callers.
51
+ */
52
+ export declare function openCompileModeStoreAfterCompile(manager: CompileModeManager, projectPath: string, session: {
53
+ close(): Promise<void>;
54
+ }): Promise<{
55
+ store: CompileModeStore;
56
+ } | {
57
+ error: string;
58
+ }>;
59
+ //# sourceMappingURL=workspace-compile-modes.d.ts.map
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Wires a `CompileModeStore` into `WorkspaceService` for whichever project is
3
+ * currently open. Extracted out of workspace-service.ts to keep that file
4
+ * under the repo's file-length ratchet — this is the sole owner of the
5
+ * store's lifecycle (open/replace/dispose); `WorkspaceService` only forwards
6
+ * to it.
7
+ */
8
+ import { selectedMode } from '../../../shared/compile-mode-state.js';
9
+ import { compileConfigFromMode } from '../../../shared/compile-modes.js';
10
+ import * as repo from '../projects/project-repository.js';
11
+ import { createCompileModeAdapter } from './compile-mode-adapter.js';
12
+ import { openCompileModeStore, } from './compile-mode-store.js';
13
+ export function createCompileModeManager(provider, onChange) {
14
+ const adapter = createCompileModeAdapter(provider);
15
+ let store = null;
16
+ let unsubscribe = null;
17
+ function disposeCurrent() {
18
+ unsubscribe?.();
19
+ unsubscribe = null;
20
+ store?.dispose();
21
+ store = null;
22
+ }
23
+ async function open(projectPath) {
24
+ return openCompileModeStore({
25
+ projectPath,
26
+ load: () => adapter.getCompileModes(projectPath),
27
+ persist: (stored) => adapter.saveCompileModes(projectPath, stored),
28
+ });
29
+ }
30
+ function adopt(handle) {
31
+ disposeCurrent();
32
+ store = handle;
33
+ unsubscribe = handle.onChange(onChange);
34
+ }
35
+ function getCompileModeState(projectPath) {
36
+ if (!store || (projectPath !== undefined && projectPath !== store.projectPath)) {
37
+ throw new Error(`no compile-mode store open for ${projectPath ?? ''}`);
38
+ }
39
+ return store.get();
40
+ }
41
+ function applyCompileModeCommand(command) {
42
+ if (!store)
43
+ return Promise.reject(new Error('no compile-mode store open'));
44
+ return store.apply(command);
45
+ }
46
+ // Mirrors project-repository.ts's own getCompileConfig: 普通编译 (and any
47
+ // selected mode that left its start page blank) resolves to an empty
48
+ // startPage, filled in here with the project's real entry page rather than
49
+ // a mini-program-only literal.
50
+ async function getCompileConfig(projectPath) {
51
+ if (store && store.projectPath === projectPath) {
52
+ const config = compileConfigFromMode(selectedMode(store.get().state));
53
+ if (config.startPage)
54
+ return config;
55
+ return { ...config, startPage: repo.getProjectPages(projectPath).entryPagePath };
56
+ }
57
+ return adapter.getCompileConfig(projectPath);
58
+ }
59
+ return {
60
+ open,
61
+ adopt,
62
+ disposeCurrent,
63
+ getCompileModeState,
64
+ applyCompileModeCommand,
65
+ getCompileConfig,
66
+ saveCompileConfig: adapter.saveCompileConfig,
67
+ };
68
+ }
69
+ /**
70
+ * Opens a store handle for `projectPath` right after a compile succeeds,
71
+ * WITHOUT making it current — the caller decides whether to `adopt` it once
72
+ * it has confirmed (under the op lock) that its open is still the latest
73
+ * one; a superseded open disposes the handle itself instead. On failure,
74
+ * closes `session` (best-effort) and returns the error message. A session
75
+ * that compiled but whose store failed to open must not be left running, so
76
+ * this centralizes that cleanup for callers.
77
+ */
78
+ export async function openCompileModeStoreAfterCompile(manager, projectPath, session) {
79
+ try {
80
+ const store = await manager.open(projectPath);
81
+ return { store };
82
+ }
83
+ catch (err) {
84
+ try {
85
+ await session.close();
86
+ }
87
+ catch (closeErr) {
88
+ console.warn('[workspace] closing session after compile-mode store open failure (non-fatal):', closeErr);
89
+ }
90
+ return { error: err instanceof Error ? err.message : String(err) };
91
+ }
92
+ }
93
+ //# sourceMappingURL=workspace-compile-modes.js.map
@@ -0,0 +1,22 @@
1
+ import { vi } from 'vitest';
2
+ type WorkbenchContext = Parameters<typeof import('./workspace-service.js').createWorkspaceService>[0];
3
+ export declare function stubProjectsProvider(): import('../projects/types.js').ProjectsProvider;
4
+ export declare function makeViewsSpy(): {
5
+ views: {
6
+ disposeAll: import("vitest").Mock<() => void>;
7
+ holdWorkbenchAttach: import("vitest").Mock<() => (() => void)>;
8
+ cancelWorkbenchAttachHold: import("vitest").Mock<() => void>;
9
+ disposeProjectViews: import("vitest").Mock<() => void>;
10
+ detachWorkbench: import("vitest").Mock<() => void>;
11
+ detachSimulator: import("vitest").Mock<() => void>;
12
+ };
13
+ events: string[];
14
+ };
15
+ export declare function makeCtxWith(views: ReturnType<typeof makeViewsSpy>['views'], adapter: {
16
+ openProject: ReturnType<typeof vi.fn>;
17
+ }): WorkbenchContext;
18
+ export declare function makeClosingHarness(closeBehavior: () => Promise<void>): {
19
+ ctx: WorkbenchContext;
20
+ };
21
+ export {};
22
+ //# sourceMappingURL=workspace-lifecycle-race.testutil.d.ts.map
@@ -0,0 +1,62 @@
1
+ // Shared harness for the workspace-service concurrent-lifecycle suites
2
+ // (workspace-lifecycle-race.test.ts): spy-instrumented views, minimal
3
+ // WorkbenchContext stubs, and a close-behavior harness for the isClosing
4
+ // tests. Pure vi.fn factories — the electron/fs/module mocks stay in the
5
+ // test file (vi.mock is hoisted per test module and cannot live here).
6
+ import { vi } from 'vitest';
7
+ export function stubProjectsProvider() {
8
+ return {
9
+ listProjects: vi.fn(() => []),
10
+ addProject: vi.fn((p) => ({ name: 'fake', path: p, lastOpened: null })),
11
+ removeProject: vi.fn(),
12
+ };
13
+ }
14
+ export function makeViewsSpy() {
15
+ const events = [];
16
+ const views = {
17
+ disposeAll: vi.fn(() => { events.push('views.disposeAll'); }),
18
+ holdWorkbenchAttach: vi.fn(() => vi.fn()),
19
+ cancelWorkbenchAttachHold: vi.fn(() => { }),
20
+ // Project-scoped teardown: closeProject must call THIS, never disposeAll
21
+ // (which would also kill the host toolbar — see view-manager-dispose-scopes.test.ts).
22
+ disposeProjectViews: vi.fn(() => { events.push('views.disposeProjectViews'); }),
23
+ detachWorkbench: vi.fn(() => { events.push('views.detachWorkbench'); }),
24
+ detachSimulator: vi.fn(() => { events.push('views.detachSimulator'); }),
25
+ };
26
+ return { views, events };
27
+ }
28
+ export function makeCtxWith(views, adapter) {
29
+ return {
30
+ adapter,
31
+ notify: { projectStatus: vi.fn(), compileLog: vi.fn() },
32
+ views,
33
+ projectsProvider: stubProjectsProvider(),
34
+ };
35
+ }
36
+ // Minimal harness for the isClosing tests: sessions whose close() calls the given behavior.
37
+ export function makeClosingHarness(closeBehavior) {
38
+ const adapter = {
39
+ openProject: vi.fn(async ({ projectPath }) => ({
40
+ port: 7788,
41
+ appInfo: { appId: `app:${projectPath}` },
42
+ close: vi.fn(closeBehavior),
43
+ })),
44
+ };
45
+ const views = {
46
+ disposeAll: vi.fn(),
47
+ holdWorkbenchAttach: vi.fn(() => vi.fn()),
48
+ cancelWorkbenchAttachHold: vi.fn(() => { }),
49
+ disposeProjectViews: vi.fn(),
50
+ detachWorkbench: vi.fn(),
51
+ detachSimulator: vi.fn(),
52
+ };
53
+ return {
54
+ ctx: {
55
+ adapter,
56
+ notify: { projectStatus: vi.fn(), compileLog: vi.fn() },
57
+ views,
58
+ projectsProvider: stubProjectsProvider(),
59
+ },
60
+ };
61
+ }
62
+ //# sourceMappingURL=workspace-lifecycle-race.testutil.js.map
@@ -0,0 +1,17 @@
1
+ import type { ProjectSession } from '../../../shared/types.js';
2
+ /**
3
+ * The forced `servicewechat.com` Referer is stored per project partition, so
4
+ * every workspace call must name the project it is acting for. Both helpers
5
+ * therefore take the session and project path explicitly: a workspace that
6
+ * reached for its own mutable `currentSession` after resetting it would clear
7
+ * nothing, and one that passed no project at all would be asking to wipe a
8
+ * partition that belongs to whichever project happens to be open elsewhere.
9
+ */
10
+ /** Forces this project's Referer. No-op for a session without a usable appId. */
11
+ export declare function applyRefererForSession(session: ProjectSession, projectPath: string): void;
12
+ /**
13
+ * Clears only this project's own entry. Call BEFORE the caller resets its
14
+ * session/path state, otherwise there is no partition left to name.
15
+ */
16
+ export declare function clearRefererForSession(session: ProjectSession | null, projectPath: string): void;
17
+ //# sourceMappingURL=workspace-referer.d.ts.map
@@ -0,0 +1,26 @@
1
+ import { clearSimulatorServicewechatReferer, setSimulatorServicewechatReferer, } from '../simulator/referer.js';
2
+ /**
3
+ * The forced `servicewechat.com` Referer is stored per project partition, so
4
+ * every workspace call must name the project it is acting for. Both helpers
5
+ * therefore take the session and project path explicitly: a workspace that
6
+ * reached for its own mutable `currentSession` after resetting it would clear
7
+ * nothing, and one that passed no project at all would be asking to wipe a
8
+ * partition that belongs to whichever project happens to be open elsewhere.
9
+ */
10
+ /** Forces this project's Referer. No-op for a session without a usable appId. */
11
+ export function applyRefererForSession(session, projectPath) {
12
+ const appInfo = session.appInfo;
13
+ if (!appInfo || typeof appInfo.appId !== 'string' || appInfo.appId.length === 0)
14
+ return;
15
+ setSimulatorServicewechatReferer(appInfo.appId, typeof appInfo.version === 'string' ? appInfo.version : undefined, projectPath);
16
+ }
17
+ /**
18
+ * Clears only this project's own entry. Call BEFORE the caller resets its
19
+ * session/path state, otherwise there is no partition left to name.
20
+ */
21
+ export function clearRefererForSession(session, projectPath) {
22
+ if (!session)
23
+ return;
24
+ clearSimulatorServicewechatReferer(session.appInfo.appId, projectPath);
25
+ }
26
+ //# sourceMappingURL=workspace-referer.js.map
@@ -1,6 +1,9 @@
1
- import type { AppInfo, CompileConfig, LaunchConfig, ProjectSession } from '../../../shared/types.js';
1
+ import type { AppInfo, CompileConfig, ProjectSession } from '../../../shared/types.js';
2
+ import type { CompileModeCommand } from '../../../shared/compile-mode-state.js';
3
+ import type { CompileModeChange, CompileModeSnapshot } from './compile-mode-store.js';
2
4
  import type { WorkbenchContext } from '../workbench-context.js';
3
5
  import type { Project, ProjectPages, ProjectSettings } from '../projects/project-repository.js';
6
+ import type { ProjectPatch } from '../projects/types.js';
4
7
  /**
5
8
  * Result returned to the renderer after `project:open` finishes.
6
9
  * Mirrors the previous inline shape in ipc/session.ts so no
@@ -28,6 +31,7 @@ export interface WorkspaceService {
28
31
  listProjects(): Promise<Project[]>;
29
32
  addProject(dirPath: string): Promise<Project>;
30
33
  removeProject(dirPath: string): Promise<void>;
34
+ updateProject(dirPath: string, patch: ProjectPatch): Promise<Project>;
31
35
  hasProject(dirPath: string): Promise<boolean>;
32
36
  validateProjectDir(dirPath: string): Promise<string | null>;
33
37
  openProject(projectPath: string): Promise<OpenProjectResult>;
@@ -55,12 +59,10 @@ export interface WorkspaceService {
55
59
  getProjectPages(projectPath: string): ProjectPages;
56
60
  getCompileConfig(projectPath: string): Promise<CompileConfig>;
57
61
  saveCompileConfig(projectPath: string, config: CompileConfig): Promise<void>;
62
+ getCompileModeState(projectPath?: string): CompileModeSnapshot;
63
+ applyCompileModeCommand(command: CompileModeCommand): Promise<CompileModeChange>;
58
64
  getProjectSettings(projectPath: string): ProjectSettings;
59
65
  updateProjectSettings(projectPath: string, patch: Partial<ProjectSettings>): void;
60
- getLaunchConfigs(projectPath: string): Promise<LaunchConfig[]>;
61
- saveLaunchConfigs(projectPath: string, configs: LaunchConfig[]): Promise<void>;
62
- getActiveLaunchConfigId(projectPath: string): Promise<string | null>;
63
- saveActiveLaunchConfigId(projectPath: string, id: string | null): Promise<void>;
64
66
  }
65
67
  /** Build a workspace service bound to the given workbench context. */
66
68
  export declare function createWorkspaceService(ctx: WorkbenchContext): WorkspaceService;