@alloy-js/core 0.23.0-dev.10 → 0.23.0-dev.12

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 (464) hide show
  1. package/dist/dev/src/binder.js +488 -0
  2. package/dist/dev/src/binder.js.map +1 -0
  3. package/dist/dev/src/code.js +181 -0
  4. package/dist/dev/src/code.js.map +1 -0
  5. package/dist/dev/src/components/AccessExpression.js +230 -0
  6. package/dist/dev/src/components/AccessExpression.js.map +1 -0
  7. package/dist/dev/src/components/AccessExpression.test.js +237 -0
  8. package/dist/dev/src/components/AccessExpression.test.js.map +1 -0
  9. package/dist/dev/src/components/AppendFile.js +246 -0
  10. package/dist/dev/src/components/AppendFile.js.map +1 -0
  11. package/dist/dev/src/components/Block.js +66 -0
  12. package/dist/dev/src/components/Block.js.map +1 -0
  13. package/dist/dev/src/components/CopyFile.js +16 -0
  14. package/dist/dev/src/components/CopyFile.js.map +1 -0
  15. package/dist/dev/src/components/Declaration.js +70 -0
  16. package/dist/dev/src/components/Declaration.js.map +1 -0
  17. package/dist/dev/src/components/For.js +40 -0
  18. package/dist/dev/src/components/For.js.map +1 -0
  19. package/dist/dev/src/components/Indent.js +37 -0
  20. package/dist/dev/src/components/Indent.js.map +1 -0
  21. package/dist/dev/src/components/List.js +29 -0
  22. package/dist/dev/src/components/List.js.map +1 -0
  23. package/dist/dev/src/components/MemberDeclaration.js +70 -0
  24. package/dist/dev/src/components/MemberDeclaration.js.map +1 -0
  25. package/dist/dev/src/components/MemberName.js +11 -0
  26. package/dist/dev/src/components/MemberName.js.map +1 -0
  27. package/dist/dev/src/components/MemberScope.js +57 -0
  28. package/dist/dev/src/components/MemberScope.js.map +1 -0
  29. package/dist/dev/src/components/Name.js +11 -0
  30. package/dist/dev/src/components/Name.js.map +1 -0
  31. package/dist/dev/src/components/Output.js +72 -0
  32. package/dist/dev/src/components/Output.js.map +1 -0
  33. package/dist/dev/src/components/Prose.js +32 -0
  34. package/dist/dev/src/components/Prose.js.map +1 -0
  35. package/dist/dev/src/components/ReferenceOrContent.js +12 -0
  36. package/dist/dev/src/components/ReferenceOrContent.js.map +1 -0
  37. package/dist/dev/src/components/Scope.js +50 -0
  38. package/dist/dev/src/components/Scope.js.map +1 -0
  39. package/dist/dev/src/components/Show.js +4 -0
  40. package/dist/dev/src/components/Show.js.map +1 -0
  41. package/dist/dev/src/components/SourceDirectory.js +41 -0
  42. package/dist/dev/src/components/SourceDirectory.js.map +1 -0
  43. package/dist/dev/src/components/SourceFile.js +52 -0
  44. package/dist/dev/src/components/SourceFile.js.map +1 -0
  45. package/dist/dev/src/components/StatementList.js +20 -0
  46. package/dist/dev/src/components/StatementList.js.map +1 -0
  47. package/dist/dev/src/components/Switch.js +42 -0
  48. package/dist/dev/src/components/Switch.js.map +1 -0
  49. package/dist/dev/src/components/TemplateFile.js +153 -0
  50. package/dist/dev/src/components/TemplateFile.js.map +1 -0
  51. package/dist/dev/src/components/UpdateFile.js +71 -0
  52. package/dist/dev/src/components/UpdateFile.js.map +1 -0
  53. package/dist/dev/src/components/Wrap.js +18 -0
  54. package/dist/dev/src/components/Wrap.js.map +1 -0
  55. package/dist/dev/src/components/index.js +25 -0
  56. package/dist/dev/src/components/index.js.map +1 -0
  57. package/dist/dev/src/components/stc/index.js +27 -0
  58. package/dist/dev/src/components/stc/index.js.map +1 -0
  59. package/dist/dev/src/components/stc/sti.js +10 -0
  60. package/dist/dev/src/components/stc/sti.js.map +1 -0
  61. package/dist/dev/src/content-slot.js +78 -0
  62. package/dist/dev/src/content-slot.js.map +1 -0
  63. package/dist/dev/src/content-slot.test.js +89 -0
  64. package/dist/dev/src/content-slot.test.js.map +1 -0
  65. package/dist/dev/src/context/assignment.js +46 -0
  66. package/dist/dev/src/context/assignment.js.map +1 -0
  67. package/dist/dev/src/context/binder.js +12 -0
  68. package/dist/dev/src/context/binder.js.map +1 -0
  69. package/dist/dev/src/context/declaration.js +3 -0
  70. package/dist/dev/src/context/declaration.js.map +1 -0
  71. package/dist/dev/src/context/format-options.js +32 -0
  72. package/dist/dev/src/context/format-options.js.map +1 -0
  73. package/dist/dev/src/context/index.js +11 -0
  74. package/dist/dev/src/context/index.js.map +1 -0
  75. package/dist/dev/src/context/member-declaration.js +11 -0
  76. package/dist/dev/src/context/member-declaration.js.map +1 -0
  77. package/dist/dev/src/context/member-scope.js +12 -0
  78. package/dist/dev/src/context/member-scope.js.map +1 -0
  79. package/dist/dev/src/context/name-policy.js +13 -0
  80. package/dist/dev/src/context/name-policy.js.map +1 -0
  81. package/dist/dev/src/context/scope.js +13 -0
  82. package/dist/dev/src/context/scope.js.map +1 -0
  83. package/dist/dev/src/context/source-directory.js +3 -0
  84. package/dist/dev/src/context/source-directory.js.map +1 -0
  85. package/dist/dev/src/context/source-file.js +3 -0
  86. package/dist/dev/src/context/source-file.js.map +1 -0
  87. package/dist/dev/src/context.js +47 -0
  88. package/dist/dev/src/context.js.map +1 -0
  89. package/dist/dev/src/debug/cli.js +163 -0
  90. package/dist/dev/src/debug/cli.js.map +1 -0
  91. package/dist/dev/src/debug/diagnostics.test.js +50 -0
  92. package/dist/dev/src/debug/diagnostics.test.js.map +1 -0
  93. package/dist/dev/src/debug/effects.js +293 -0
  94. package/dist/dev/src/debug/effects.js.map +1 -0
  95. package/dist/dev/src/debug/effects.test.js +280 -0
  96. package/dist/dev/src/debug/effects.test.js.map +1 -0
  97. package/dist/dev/src/debug/files.js +29 -0
  98. package/dist/dev/src/debug/files.js.map +1 -0
  99. package/dist/dev/src/debug/files.test.js +78 -0
  100. package/dist/dev/src/debug/files.test.js.map +1 -0
  101. package/dist/dev/src/debug/index.js +71 -0
  102. package/dist/dev/src/debug/index.js.map +1 -0
  103. package/dist/dev/src/debug/message-format.test.js +836 -0
  104. package/dist/dev/src/debug/message-format.test.js.map +1 -0
  105. package/dist/dev/src/debug/render-tree-orphans.test.js +365 -0
  106. package/dist/dev/src/debug/render-tree-orphans.test.js.map +1 -0
  107. package/dist/dev/src/debug/render.js +479 -0
  108. package/dist/dev/src/debug/render.js.map +1 -0
  109. package/dist/dev/src/debug/render.test.js +363 -0
  110. package/dist/dev/src/debug/render.test.js.map +1 -0
  111. package/dist/dev/src/debug/serialize.js +70 -0
  112. package/dist/dev/src/debug/serialize.js.map +1 -0
  113. package/dist/dev/src/debug/source-map.js +111 -0
  114. package/dist/dev/src/debug/source-map.js.map +1 -0
  115. package/dist/dev/src/debug/symbols.js +196 -0
  116. package/dist/dev/src/debug/symbols.js.map +1 -0
  117. package/dist/dev/src/debug/symbols.test.js +93 -0
  118. package/dist/dev/src/debug/symbols.test.js.map +1 -0
  119. package/dist/dev/src/debug/trace-writer.js +658 -0
  120. package/dist/dev/src/debug/trace-writer.js.map +1 -0
  121. package/dist/dev/src/debug/trace.js +459 -0
  122. package/dist/dev/src/debug/trace.js.map +1 -0
  123. package/dist/dev/src/devtools/devtools-protocol.js +2 -0
  124. package/dist/dev/src/devtools/devtools-protocol.js.map +1 -0
  125. package/dist/dev/src/devtools/devtools-server.browser.js +33 -0
  126. package/dist/dev/src/devtools/devtools-server.browser.js.map +1 -0
  127. package/dist/dev/src/devtools/devtools-server.js +444 -0
  128. package/dist/dev/src/devtools/devtools-server.js.map +1 -0
  129. package/dist/dev/src/devtools/devtools-transport.js +114 -0
  130. package/dist/dev/src/devtools/devtools-transport.js.map +1 -0
  131. package/dist/dev/src/devtools-entry.browser.js +2 -0
  132. package/dist/dev/src/devtools-entry.browser.js.map +1 -0
  133. package/dist/dev/src/devtools-entry.js +2 -0
  134. package/dist/dev/src/devtools-entry.js.map +1 -0
  135. package/dist/dev/src/diagnostics.js +89 -0
  136. package/dist/dev/src/diagnostics.js.map +1 -0
  137. package/dist/dev/src/host/alloy-host.browser.js +32 -0
  138. package/dist/dev/src/host/alloy-host.browser.js.map +1 -0
  139. package/dist/dev/src/host/alloy-host.js +144 -0
  140. package/dist/dev/src/host/alloy-host.js.map +1 -0
  141. package/dist/dev/src/host/interface.js +2 -0
  142. package/dist/dev/src/host/interface.js.map +1 -0
  143. package/dist/dev/src/index.browser.js +3 -0
  144. package/dist/dev/src/index.browser.js.map +1 -0
  145. package/dist/dev/src/index.js +27 -0
  146. package/dist/dev/src/index.js.map +1 -0
  147. package/dist/dev/src/inspect.browser.js +6 -0
  148. package/dist/dev/src/inspect.browser.js.map +1 -0
  149. package/dist/dev/src/inspect.js +2 -0
  150. package/dist/dev/src/inspect.js.map +1 -0
  151. package/dist/dev/src/jsx-runtime.js +17 -0
  152. package/dist/dev/src/jsx-runtime.js.map +1 -0
  153. package/dist/dev/src/library-symbol-reference.js +5 -0
  154. package/dist/dev/src/library-symbol-reference.js.map +1 -0
  155. package/dist/dev/src/name-policy.js +24 -0
  156. package/dist/dev/src/name-policy.js.map +1 -0
  157. package/dist/dev/src/pretty-string/pretty-string.js +100 -0
  158. package/dist/dev/src/pretty-string/pretty-string.js.map +1 -0
  159. package/dist/dev/src/pretty-string/pretty-string.test.js +38 -0
  160. package/dist/dev/src/pretty-string/pretty-string.test.js.map +1 -0
  161. package/dist/dev/src/print-hook.js +10 -0
  162. package/dist/dev/src/print-hook.js.map +1 -0
  163. package/dist/dev/src/props-combinators.js +109 -0
  164. package/dist/dev/src/props-combinators.js.map +1 -0
  165. package/dist/dev/src/reactive-union-set.js +213 -0
  166. package/dist/dev/src/reactive-union-set.js.map +1 -0
  167. package/dist/dev/src/reactivity.js +426 -0
  168. package/dist/dev/src/reactivity.js.map +1 -0
  169. package/dist/dev/src/refkey.js +167 -0
  170. package/dist/dev/src/refkey.js.map +1 -0
  171. package/dist/dev/src/render-stack.js +251 -0
  172. package/dist/dev/src/render-stack.js.map +1 -0
  173. package/dist/dev/src/render.js +872 -0
  174. package/dist/dev/src/render.js.map +1 -0
  175. package/dist/dev/src/resource.js +124 -0
  176. package/dist/dev/src/resource.js.map +1 -0
  177. package/dist/dev/src/runtime/component.js +41 -0
  178. package/dist/dev/src/runtime/component.js.map +1 -0
  179. package/dist/dev/src/runtime/intrinsic.js +12 -0
  180. package/dist/dev/src/runtime/intrinsic.js.map +1 -0
  181. package/dist/dev/src/scheduler.js +217 -0
  182. package/dist/dev/src/scheduler.js.map +1 -0
  183. package/dist/dev/src/stc.js +40 -0
  184. package/dist/dev/src/stc.js.map +1 -0
  185. package/dist/dev/src/sti.js +31 -0
  186. package/dist/dev/src/sti.js.map +1 -0
  187. package/dist/dev/src/symbols/basic-scope.js +21 -0
  188. package/dist/dev/src/symbols/basic-scope.js.map +1 -0
  189. package/dist/dev/src/symbols/basic-symbol.js +34 -0
  190. package/dist/dev/src/symbols/basic-symbol.js.map +1 -0
  191. package/dist/dev/src/symbols/decl.js +26 -0
  192. package/dist/dev/src/symbols/decl.js.map +1 -0
  193. package/dist/dev/src/symbols/index.js +10 -0
  194. package/dist/dev/src/symbols/index.js.map +1 -0
  195. package/dist/dev/src/symbols/output-scope.js +202 -0
  196. package/dist/dev/src/symbols/output-scope.js.map +1 -0
  197. package/dist/dev/src/symbols/output-space.js +36 -0
  198. package/dist/dev/src/symbols/output-space.js.map +1 -0
  199. package/dist/dev/src/symbols/output-symbol.js +504 -0
  200. package/dist/dev/src/symbols/output-symbol.js.map +1 -0
  201. package/dist/dev/src/symbols/symbol-flow.js +106 -0
  202. package/dist/dev/src/symbols/symbol-flow.js.map +1 -0
  203. package/dist/dev/src/symbols/symbol-slot.js +68 -0
  204. package/dist/dev/src/symbols/symbol-slot.js.map +1 -0
  205. package/dist/dev/src/symbols/symbol-slot.test.js +43 -0
  206. package/dist/dev/src/symbols/symbol-slot.test.js.map +1 -0
  207. package/dist/dev/src/symbols/symbol-table.js +93 -0
  208. package/dist/dev/src/symbols/symbol-table.js.map +1 -0
  209. package/dist/dev/src/tap.js +109 -0
  210. package/dist/dev/src/tap.js.map +1 -0
  211. package/dist/dev/src/trace.js +2 -0
  212. package/dist/dev/src/trace.js.map +1 -0
  213. package/dist/dev/src/tracer.js +180 -0
  214. package/dist/dev/src/tracer.js.map +1 -0
  215. package/dist/dev/src/utils.js +487 -0
  216. package/dist/dev/src/utils.js.map +1 -0
  217. package/dist/dev/src/write-output.js +47 -0
  218. package/dist/dev/src/write-output.js.map +1 -0
  219. package/dist/dev/test/browser-build.test.js +86 -0
  220. package/dist/dev/test/browser-build.test.js.map +1 -0
  221. package/dist/dev/test/children.test.js +44 -0
  222. package/dist/dev/test/children.test.js.map +1 -0
  223. package/dist/dev/test/components/append-file.test.js +394 -0
  224. package/dist/dev/test/components/append-file.test.js.map +1 -0
  225. package/dist/dev/test/components/block.test.js +83 -0
  226. package/dist/dev/test/components/block.test.js.map +1 -0
  227. package/dist/dev/test/components/copy-file.test.js +119 -0
  228. package/dist/dev/test/components/copy-file.test.js.map +1 -0
  229. package/dist/dev/test/components/declaration.test.js +40 -0
  230. package/dist/dev/test/components/declaration.test.js.map +1 -0
  231. package/dist/dev/test/components/list.test.js +250 -0
  232. package/dist/dev/test/components/list.test.js.map +1 -0
  233. package/dist/dev/test/components/prose.test.js +42 -0
  234. package/dist/dev/test/components/prose.test.js.map +1 -0
  235. package/dist/dev/test/components/reference-or-content.test.js +246 -0
  236. package/dist/dev/test/components/reference-or-content.test.js.map +1 -0
  237. package/dist/dev/test/components/source-file.test.js +271 -0
  238. package/dist/dev/test/components/source-file.test.js.map +1 -0
  239. package/dist/dev/test/components/template-file.test.js +200 -0
  240. package/dist/dev/test/components/template-file.test.js.map +1 -0
  241. package/dist/dev/test/components/update-file.test.js +210 -0
  242. package/dist/dev/test/components/update-file.test.js.map +1 -0
  243. package/dist/dev/test/components/wrap.test.js +48 -0
  244. package/dist/dev/test/components/wrap.test.js.map +1 -0
  245. package/dist/dev/test/control-flow/for.test.js +318 -0
  246. package/dist/dev/test/control-flow/for.test.js.map +1 -0
  247. package/dist/dev/test/control-flow/match.test.js +112 -0
  248. package/dist/dev/test/control-flow/match.test.js.map +1 -0
  249. package/dist/dev/test/control-flow/show.test.js +38 -0
  250. package/dist/dev/test/control-flow/show.test.js.map +1 -0
  251. package/dist/dev/test/lazy-isempty.test.js +121 -0
  252. package/dist/dev/test/lazy-isempty.test.js.map +1 -0
  253. package/dist/dev/test/name-policy.test.js +28 -0
  254. package/dist/dev/test/name-policy.test.js.map +1 -0
  255. package/dist/dev/test/props-with-defaults.test.js +94 -0
  256. package/dist/dev/test/props-with-defaults.test.js.map +1 -0
  257. package/dist/dev/test/reactive-union-set-disposers.test.js +98 -0
  258. package/dist/dev/test/reactive-union-set-disposers.test.js.map +1 -0
  259. package/dist/dev/test/reactive-union-set.test.js +171 -0
  260. package/dist/dev/test/reactive-union-set.test.js.map +1 -0
  261. package/dist/dev/test/reactivity/circular-reactives.test.js +62 -0
  262. package/dist/dev/test/reactivity/circular-reactives.test.js.map +1 -0
  263. package/dist/dev/test/reactivity/cleanup.test.js +96 -0
  264. package/dist/dev/test/reactivity/cleanup.test.js.map +1 -0
  265. package/dist/dev/test/reactivity/memo.test.js +17 -0
  266. package/dist/dev/test/reactivity/memo.test.js.map +1 -0
  267. package/dist/dev/test/reactivity/ref-rendering.test.js +38 -0
  268. package/dist/dev/test/reactivity/ref-rendering.test.js.map +1 -0
  269. package/dist/dev/test/reactivity/shallow-reactive.test.js +52 -0
  270. package/dist/dev/test/reactivity/shallow-reactive.test.js.map +1 -0
  271. package/dist/dev/test/reactivity/test.test.js +74 -0
  272. package/dist/dev/test/reactivity/test.test.js.map +1 -0
  273. package/dist/dev/test/reactivity/untrack.test.js +27 -0
  274. package/dist/dev/test/reactivity/untrack.test.js.map +1 -0
  275. package/dist/dev/test/refkey.test.js +36 -0
  276. package/dist/dev/test/refkey.test.js.map +1 -0
  277. package/dist/dev/test/rendering/basic.test.js +194 -0
  278. package/dist/dev/test/rendering/basic.test.js.map +1 -0
  279. package/dist/dev/test/rendering/code.test.js +64 -0
  280. package/dist/dev/test/rendering/code.test.js.map +1 -0
  281. package/dist/dev/test/rendering/formatting.test.js +797 -0
  282. package/dist/dev/test/rendering/formatting.test.js.map +1 -0
  283. package/dist/dev/test/rendering/indent.test.js +183 -0
  284. package/dist/dev/test/rendering/indent.test.js.map +1 -0
  285. package/dist/dev/test/rendering/memoization.test.js +37 -0
  286. package/dist/dev/test/rendering/memoization.test.js.map +1 -0
  287. package/dist/dev/test/rendering/print-render-stack.test.js +287 -0
  288. package/dist/dev/test/rendering/print-render-stack.test.js.map +1 -0
  289. package/dist/dev/test/rendering/refkeys.test.js +37 -0
  290. package/dist/dev/test/rendering/refkeys.test.js.map +1 -0
  291. package/dist/dev/test/scheduler-extended.test.js +96 -0
  292. package/dist/dev/test/scheduler-extended.test.js.map +1 -0
  293. package/dist/dev/test/scheduler.test.js +46 -0
  294. package/dist/dev/test/scheduler.test.js.map +1 -0
  295. package/dist/dev/test/split-props.test.js +78 -0
  296. package/dist/dev/test/split-props.test.js.map +1 -0
  297. package/dist/dev/test/stc.test.js +35 -0
  298. package/dist/dev/test/stc.test.js.map +1 -0
  299. package/dist/dev/test/symbols/output-scope.test.js +180 -0
  300. package/dist/dev/test/symbols/output-scope.test.js.map +1 -0
  301. package/dist/dev/test/symbols/output-symbol.test.js +202 -0
  302. package/dist/dev/test/symbols/output-symbol.test.js.map +1 -0
  303. package/dist/dev/test/symbols/resolution.test.js +487 -0
  304. package/dist/dev/test/symbols/resolution.test.js.map +1 -0
  305. package/dist/dev/test/symbols/symbol-table.test.js +15 -0
  306. package/dist/dev/test/symbols/symbol-table.test.js.map +1 -0
  307. package/dist/dev/test/symbols/utils.js +26 -0
  308. package/dist/dev/test/symbols/utils.js.map +1 -0
  309. package/dist/dev/test/utils.test.js +317 -0
  310. package/dist/dev/test/utils.test.js.map +1 -0
  311. package/dist/dev/testing/create-test-wrapper.js +76 -0
  312. package/dist/dev/testing/create-test-wrapper.js.map +1 -0
  313. package/dist/dev/testing/devtools-utils.js +162 -0
  314. package/dist/dev/testing/devtools-utils.js.map +1 -0
  315. package/dist/dev/testing/extend-expect.js +167 -0
  316. package/dist/dev/testing/extend-expect.js.map +1 -0
  317. package/dist/dev/testing/extend-expect.test.js +234 -0
  318. package/dist/dev/testing/extend-expect.test.js.map +1 -0
  319. package/dist/dev/testing/index.js +4 -0
  320. package/dist/dev/testing/index.js.map +1 -0
  321. package/dist/dev/testing/render.js +23 -0
  322. package/dist/dev/testing/render.js.map +1 -0
  323. package/dist/dev/testing/vitest.d.js +2 -0
  324. package/dist/dev/testing/vitest.d.js.map +1 -0
  325. package/dist/devtools/index.html +29 -17
  326. package/dist/src/binder.d.ts.map +1 -1
  327. package/dist/src/binder.js +5 -0
  328. package/dist/src/binder.js.map +1 -1
  329. package/dist/src/components/For.d.ts.map +1 -1
  330. package/dist/src/components/For.js +1 -1
  331. package/dist/src/components/For.js.map +1 -1
  332. package/dist/src/components/List.d.ts.map +1 -1
  333. package/dist/src/components/List.js +1 -1
  334. package/dist/src/components/List.js.map +1 -1
  335. package/dist/src/components/Switch.d.ts.map +1 -1
  336. package/dist/src/components/Switch.js +1 -1
  337. package/dist/src/components/Switch.js.map +1 -1
  338. package/dist/src/debug/diagnostics.test.js +3 -2
  339. package/dist/src/debug/diagnostics.test.js.map +1 -1
  340. package/dist/src/debug/effects.d.ts +12 -4
  341. package/dist/src/debug/effects.d.ts.map +1 -1
  342. package/dist/src/debug/effects.js +119 -54
  343. package/dist/src/debug/effects.js.map +1 -1
  344. package/dist/src/debug/effects.test.js +213 -41
  345. package/dist/src/debug/effects.test.js.map +1 -1
  346. package/dist/src/debug/files.d.ts.map +1 -1
  347. package/dist/src/debug/files.js +7 -18
  348. package/dist/src/debug/files.js.map +1 -1
  349. package/dist/src/debug/files.test.js +13 -36
  350. package/dist/src/debug/files.test.js.map +1 -1
  351. package/dist/src/debug/index.d.ts +4 -2
  352. package/dist/src/debug/index.d.ts.map +1 -1
  353. package/dist/src/debug/index.js +4 -2
  354. package/dist/src/debug/index.js.map +1 -1
  355. package/dist/src/debug/message-format.test.d.ts +2 -0
  356. package/dist/src/debug/message-format.test.d.ts.map +1 -0
  357. package/dist/src/debug/message-format.test.js +700 -0
  358. package/dist/src/debug/message-format.test.js.map +1 -0
  359. package/dist/src/debug/render-tree-orphans.test.d.ts +2 -0
  360. package/dist/src/debug/render-tree-orphans.test.d.ts.map +1 -0
  361. package/dist/src/debug/render-tree-orphans.test.js +297 -0
  362. package/dist/src/debug/render-tree-orphans.test.js.map +1 -0
  363. package/dist/src/debug/render.d.ts.map +1 -1
  364. package/dist/src/debug/render.js +91 -131
  365. package/dist/src/debug/render.js.map +1 -1
  366. package/dist/src/debug/render.test.js +91 -128
  367. package/dist/src/debug/render.test.js.map +1 -1
  368. package/dist/src/debug/source-map.d.ts +22 -0
  369. package/dist/src/debug/source-map.d.ts.map +1 -0
  370. package/dist/src/debug/source-map.js +111 -0
  371. package/dist/src/debug/source-map.js.map +1 -0
  372. package/dist/src/debug/symbols.d.ts +6 -5
  373. package/dist/src/debug/symbols.d.ts.map +1 -1
  374. package/dist/src/debug/symbols.js +46 -23
  375. package/dist/src/debug/symbols.js.map +1 -1
  376. package/dist/src/debug/symbols.test.js +15 -26
  377. package/dist/src/debug/symbols.test.js.map +1 -1
  378. package/dist/src/debug/trace-writer.d.ts +55 -0
  379. package/dist/src/debug/trace-writer.d.ts.map +1 -0
  380. package/dist/src/debug/trace-writer.js +658 -0
  381. package/dist/src/debug/trace-writer.js.map +1 -0
  382. package/dist/src/debug/trace.d.ts +10 -10
  383. package/dist/src/debug/trace.d.ts.map +1 -1
  384. package/dist/src/debug/trace.js +36 -20
  385. package/dist/src/debug/trace.js.map +1 -1
  386. package/dist/src/devtools/devtools-protocol.d.ts +318 -161
  387. package/dist/src/devtools/devtools-protocol.d.ts.map +1 -1
  388. package/dist/src/devtools/devtools-server.browser.d.ts +0 -5
  389. package/dist/src/devtools/devtools-server.browser.d.ts.map +1 -1
  390. package/dist/src/devtools/devtools-server.browser.js +0 -3
  391. package/dist/src/devtools/devtools-server.browser.js.map +1 -1
  392. package/dist/src/devtools/devtools-server.d.ts +0 -6
  393. package/dist/src/devtools/devtools-server.d.ts.map +1 -1
  394. package/dist/src/devtools/devtools-server.js +212 -24
  395. package/dist/src/devtools/devtools-server.js.map +1 -1
  396. package/dist/src/devtools/devtools-transport.d.ts +2 -2
  397. package/dist/src/devtools/devtools-transport.d.ts.map +1 -1
  398. package/dist/src/devtools/devtools-transport.js +2 -2
  399. package/dist/src/devtools/devtools-transport.js.map +1 -1
  400. package/dist/src/devtools-entry.browser.d.ts +1 -1
  401. package/dist/src/devtools-entry.browser.d.ts.map +1 -1
  402. package/dist/src/devtools-entry.browser.js.map +1 -1
  403. package/dist/src/devtools-entry.d.ts +1 -1
  404. package/dist/src/devtools-entry.d.ts.map +1 -1
  405. package/dist/src/devtools-entry.js.map +1 -1
  406. package/dist/src/diagnostics.d.ts.map +1 -1
  407. package/dist/src/diagnostics.js +5 -5
  408. package/dist/src/diagnostics.js.map +1 -1
  409. package/dist/src/reactivity.d.ts +13 -2
  410. package/dist/src/reactivity.d.ts.map +1 -1
  411. package/dist/src/reactivity.js +96 -13
  412. package/dist/src/reactivity.js.map +1 -1
  413. package/dist/src/render.d.ts.map +1 -1
  414. package/dist/src/render.js +84 -30
  415. package/dist/src/render.js.map +1 -1
  416. package/dist/src/scheduler.d.ts +5 -0
  417. package/dist/src/scheduler.d.ts.map +1 -1
  418. package/dist/src/scheduler.js +94 -23
  419. package/dist/src/scheduler.js.map +1 -1
  420. package/dist/src/utils.d.ts.map +1 -1
  421. package/dist/src/utils.js +11 -5
  422. package/dist/src/utils.js.map +1 -1
  423. package/dist/test/browser-build.test.js +1 -1
  424. package/dist/test/browser-build.test.js.map +1 -1
  425. package/dist/testing/devtools-utils.d.ts +12 -3
  426. package/dist/testing/devtools-utils.d.ts.map +1 -1
  427. package/dist/testing/devtools-utils.js +26 -4
  428. package/dist/testing/devtools-utils.js.map +1 -1
  429. package/dist/tsconfig.tsbuildinfo +1 -1
  430. package/package.json +9 -3
  431. package/src/binder.ts +47 -38
  432. package/src/components/For.tsx +14 -10
  433. package/src/components/List.tsx +7 -4
  434. package/src/components/Switch.tsx +11 -7
  435. package/src/debug/diagnostics.test.tsx +3 -2
  436. package/src/debug/effects.test.tsx +248 -36
  437. package/src/debug/effects.ts +198 -64
  438. package/src/debug/files.test.tsx +15 -35
  439. package/src/debug/files.ts +11 -11
  440. package/src/debug/index.ts +4 -0
  441. package/src/debug/message-format.test.tsx +759 -0
  442. package/src/debug/render-tree-orphans.test.tsx +344 -0
  443. package/src/debug/render.test.tsx +96 -118
  444. package/src/debug/render.ts +196 -125
  445. package/src/debug/source-map.ts +135 -0
  446. package/src/debug/symbols.test.tsx +19 -20
  447. package/src/debug/symbols.ts +106 -23
  448. package/src/debug/trace-writer.ts +969 -0
  449. package/src/debug/trace.ts +41 -28
  450. package/src/devtools/devtools-protocol.ts +361 -176
  451. package/src/devtools/devtools-server.browser.ts +0 -9
  452. package/src/devtools/devtools-server.ts +210 -32
  453. package/src/devtools/devtools-transport.ts +4 -4
  454. package/src/devtools-entry.browser.ts +11 -15
  455. package/src/devtools-entry.ts +9 -15
  456. package/src/diagnostics.ts +14 -5
  457. package/src/reactivity.ts +113 -17
  458. package/src/render.ts +104 -30
  459. package/src/scheduler.ts +145 -26
  460. package/src/utils.tsx +7 -4
  461. package/temp/api.json +142 -20
  462. package/test/browser-build.test.ts +1 -1
  463. package/testing/devtools-utils.ts +46 -4
  464. package/vitest.config.ts +8 -0
@@ -5,6 +5,15 @@
5
5
  * messages, and reset. Transport details (HTTP/WebSocket) are delegated
6
6
  * to devtools-transport.ts.
7
7
  */
8
+ import type { ChangeChannel, ChangeEvent } from "../debug/trace-writer.js";
9
+ import {
10
+ ALL_CHANNELS,
11
+ closeTrace,
12
+ initTrace,
13
+ isTraceEnabled,
14
+ queryChannel,
15
+ setChangeListener,
16
+ } from "../debug/trace-writer.js";
8
17
  import {
9
18
  createTransport,
10
19
  getAlloyVersion,
@@ -15,11 +24,6 @@ import {
15
24
  // Public types
16
25
  // ─────────────────────────────────────────────────────────────────────────────
17
26
 
18
- export interface DevtoolsMessage {
19
- type: string;
20
- [key: string]: unknown;
21
- }
22
-
23
27
  export interface DevtoolsIncomingMessage {
24
28
  type: string;
25
29
  [key: string]: unknown;
@@ -47,6 +51,95 @@ let devtoolsInitialized = false;
47
51
  let loggedDevtoolsLinks = false;
48
52
  let waitingForConnection = false;
49
53
  let configuredPort: number | undefined;
54
+ let tempDbPath: string | null = null;
55
+ let subscribedPromise: Promise<void> | null = null;
56
+ let resolveSubscribed: (() => void) | null = null;
57
+
58
+ // ─────────────────────────────────────────────────────────────────────────────
59
+ // Per-client subscription state
60
+ // ─────────────────────────────────────────────────────────────────────────────
61
+
62
+ interface ClientState {
63
+ subscriptions: Set<ChangeChannel>;
64
+ }
65
+
66
+ const clientStates = new Map<any, ClientState>();
67
+
68
+ function eventToMessageType(event: ChangeEvent): string {
69
+ const map: Record<string, Record<string, string>> = {
70
+ render: {
71
+ added: "render:node_added",
72
+ updated: "render:node_updated",
73
+ removed: "render:node_removed",
74
+ reset: "render:reset",
75
+ },
76
+ effects: { added: "effect:added", updated: "effect:updated" },
77
+ refs: { added: "ref:added" },
78
+ edges: { added: `edge:${(event.data as any).edge_type ?? "track"}` },
79
+ symbols: {
80
+ added: "symbol:added",
81
+ updated: "symbol:updated",
82
+ removed: "symbol:removed",
83
+ },
84
+ scopes: {
85
+ added: "scope:added",
86
+ updated: "scope:updated",
87
+ removed: "scope:removed",
88
+ },
89
+ files: {
90
+ added: "file:added",
91
+ updated: "file:updated",
92
+ removed: "file:removed",
93
+ },
94
+ directories: { added: "directory:added", removed: "directory:removed" },
95
+ diagnostics: { added: "diagnostics:report" },
96
+ errors: { added: "render:error" },
97
+ lifecycle: { added: "effect:lifecycle" },
98
+ scheduler: { added: "scheduler:job" },
99
+ };
100
+ return (
101
+ map[event.channel]?.[event.action] ?? `${event.channel}:${event.action}`
102
+ );
103
+ }
104
+
105
+ function channelToInitialMessageType(
106
+ channel: ChangeChannel,
107
+ row: Record<string, unknown>,
108
+ ): string {
109
+ const map: Record<string, string> = {
110
+ render: "render:node_added",
111
+ effects: "effect:added",
112
+ refs: "ref:added",
113
+ symbols: "symbol:added",
114
+ scopes: "scope:added",
115
+ files: "file:added",
116
+ directories: "directory:added",
117
+ diagnostics: "diagnostics:report",
118
+ errors: "render:error",
119
+ lifecycle: "effect:lifecycle",
120
+ scheduler: "scheduler:job",
121
+ };
122
+ if (channel === "edges") {
123
+ return `edge:${(row.type as string) ?? "track"}`;
124
+ }
125
+ return map[channel] ?? `${channel}:added`;
126
+ }
127
+
128
+ function sendInitialState(socket: any, channels: ChangeChannel[]): void {
129
+ if (!isTraceEnabled()) return;
130
+ for (const channel of channels) {
131
+ const rows = queryChannel(channel);
132
+ for (const row of rows) {
133
+ const msgType = channelToInitialMessageType(channel, row);
134
+ // Remap SQLite column names that collide with the message `type` field
135
+ if (channel === "effects" && row.type !== undefined) {
136
+ row.effect_type = row.type;
137
+ }
138
+ const msg = { ...row, type: msgType };
139
+ socket.send(JSON.stringify(msg));
140
+ }
141
+ }
142
+ }
50
143
 
51
144
  // ─────────────────────────────────────────────────────────────────────────────
52
145
  // Environment helpers
@@ -98,6 +191,38 @@ export function getDevtoolsServerInfo(): DevtoolsServerInfo | null {
98
191
  return { port: transportState.port, connected: transportState.connected };
99
192
  }
100
193
 
194
+ // ─────────────────────────────────────────────────────────────────────────────
195
+ // Temp SQLite for devtools
196
+ // ─────────────────────────────────────────────────────────────────────────────
197
+
198
+ async function ensureSqliteForDevtools(): Promise<void> {
199
+ if (isTraceEnabled()) return;
200
+ const os = await import("node:os");
201
+ const path = await import("node:path");
202
+ tempDbPath = path.join(os.tmpdir(), `alloy-debug-${process.pid}.db`);
203
+ await initTrace(tempDbPath);
204
+ process.on("exit", () => {
205
+ if (!tempDbPath) return;
206
+ try {
207
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
208
+ const fs = require("node:fs");
209
+ fs.unlinkSync(tempDbPath);
210
+ try {
211
+ fs.unlinkSync(tempDbPath + "-wal");
212
+ } catch {
213
+ /* ignore */
214
+ }
215
+ try {
216
+ fs.unlinkSync(tempDbPath + "-shm");
217
+ } catch {
218
+ /* ignore */
219
+ }
220
+ } catch {
221
+ /* ignore cleanup failures */
222
+ }
223
+ });
224
+ }
225
+
101
226
  // ─────────────────────────────────────────────────────────────────────────────
102
227
  // Server lifecycle
103
228
  // ─────────────────────────────────────────────────────────────────────────────
@@ -108,6 +233,13 @@ async function ensureServer(): Promise<DevtoolsTransportState> {
108
233
  transportPromise = createTransport({
109
234
  port: configuredPort ?? resolveDebugPort(),
110
235
  onConnection(socket) {
236
+ // Start with no subscriptions — client must subscribe explicitly.
237
+ clientStates.set(socket, { subscriptions: new Set() });
238
+ if (!subscribedPromise) {
239
+ subscribedPromise = new Promise<void>((resolve) => {
240
+ resolveSubscribed = resolve;
241
+ });
242
+ }
111
243
  if (waitingForConnection) {
112
244
  waitingForConnection = false;
113
245
  process.stdout.write(" Connected!\n");
@@ -117,21 +249,75 @@ async function ensureServer(): Promise<DevtoolsTransportState> {
117
249
  type: "debugger:info",
118
250
  version: getAlloyVersion(),
119
251
  cwd: getCwd(),
252
+ sourceMapEnabled: process.execArgv.includes("--enable-source-maps"),
120
253
  }),
121
254
  );
122
255
  },
123
- onMessage(raw) {
256
+ onMessage(raw, socket) {
124
257
  const message = raw as DevtoolsIncomingMessage;
125
258
  if (!message || !message.type) return;
259
+
260
+ if (message.type === "subscribe") {
261
+ const channels = (message as any).channels as string[];
262
+ const state = clientStates.get(socket);
263
+ if (state && channels && Array.isArray(channels)) {
264
+ const validChannels = channels.filter((ch) =>
265
+ ALL_CHANNELS.includes(ch as ChangeChannel),
266
+ ) as ChangeChannel[];
267
+ state.subscriptions = new Set(validChannels);
268
+ sendInitialState(socket, validChannels);
269
+ }
270
+ resolveSubscribed?.();
271
+ return;
272
+ }
273
+ if (message.type === "unsubscribe") {
274
+ const channels = (message as any).channels as string[];
275
+ const state = clientStates.get(socket);
276
+ if (state && channels) {
277
+ for (const ch of channels)
278
+ state.subscriptions.delete(ch as ChangeChannel);
279
+ }
280
+ return;
281
+ }
282
+
126
283
  for (const handler of messageHandlers) {
127
284
  handler(message);
128
285
  }
129
286
  },
130
- onDisconnect() {
131
- // Currently no-op; transport handles client set management
287
+ onDisconnect(socket) {
288
+ clientStates.delete(socket);
132
289
  },
133
290
  }).then((state) => {
134
291
  transportState = state;
292
+
293
+ // Wire up the change notification bus to forward events to subscribed clients
294
+ setChangeListener((event: ChangeEvent) => {
295
+ if (!transportState) return;
296
+
297
+ // Lifecycle signals are broadcast to ALL connected clients
298
+ const signalType = (event.data as any)?._signal as string | undefined;
299
+ if (signalType) {
300
+ const payload = JSON.stringify({ type: signalType });
301
+ for (const client of transportState.clients) {
302
+ if (client.readyState === client.OPEN) {
303
+ client.send(payload);
304
+ }
305
+ }
306
+ return;
307
+ }
308
+
309
+ const msgType = eventToMessageType(event);
310
+ const message = { ...event.data, type: msgType };
311
+ const payload = JSON.stringify(message);
312
+
313
+ for (const [client, clientState] of clientStates) {
314
+ if (client.readyState !== client.OPEN) continue;
315
+ if (clientState.subscriptions.has(event.channel)) {
316
+ client.send(payload);
317
+ }
318
+ }
319
+ });
320
+
135
321
  if (!loggedDevtoolsLinks) {
136
322
  loggedDevtoolsLinks = true;
137
323
  // eslint-disable-next-line no-console
@@ -173,8 +359,14 @@ async function ensureServer(): Promise<DevtoolsTransportState> {
173
359
  export async function waitForDevtoolsConnection(): Promise<void> {
174
360
  devtoolsExplicitlyEnabled = true;
175
361
  const server = await ensureServer();
176
- if (server.connected) return;
177
- await server.ready;
362
+ if (!server.connected) {
363
+ await server.ready;
364
+ }
365
+ // Wait for the client to send its initial subscribe message so that
366
+ // messages emitted during a synchronous render are not dropped.
367
+ if (subscribedPromise) {
368
+ await subscribedPromise;
369
+ }
178
370
  }
179
371
 
180
372
  /**
@@ -191,6 +383,7 @@ export async function enableDevtools(
191
383
  if (options?.port !== undefined) {
192
384
  configuredPort = options.port;
193
385
  }
386
+ await ensureSqliteForDevtools();
194
387
  const server = await ensureServer();
195
388
  return { port: server.port, connected: server.connected };
196
389
  }
@@ -203,6 +396,7 @@ export async function initDevtoolsIfEnabled(): Promise<void> {
203
396
  if (devtoolsInitialized) return;
204
397
  if (!isDevtoolsEnabled()) return;
205
398
  devtoolsInitialized = true;
399
+ await ensureSqliteForDevtools();
206
400
  await waitForDevtoolsConnection();
207
401
  }
208
402
 
@@ -232,28 +426,6 @@ export async function enableDevtoolsAndConnect(
232
426
  // Messaging
233
427
  // ─────────────────────────────────────────────────────────────────────────────
234
428
 
235
- /** Broadcast a message to all connected devtools clients. */
236
- export function broadcastDevtoolsMessage(message: DevtoolsMessage) {
237
- if (!isDevtoolsEnabled()) return;
238
- if (!transportState) return;
239
- if (transportState.clients.size === 0) return;
240
-
241
- try {
242
- const payload = JSON.stringify(message);
243
- for (const client of transportState.clients) {
244
- if (client.readyState === client.OPEN) {
245
- client.send(payload);
246
- }
247
- }
248
- } catch (err) {
249
- // eslint-disable-next-line no-console
250
- console.error(
251
- `Failed to send devtools message (type: ${message.type}):`,
252
- err,
253
- );
254
- }
255
- }
256
-
257
429
  /** Register a handler for incoming devtools messages. Returns an unsubscribe function. */
258
430
  export function registerDevtoolsMessageHandler(
259
431
  handler: (message: DevtoolsIncomingMessage) => void,
@@ -278,6 +450,8 @@ export function assertDevtoolsConnectedForSyncRender() {
278
450
 
279
451
  /** Reset all devtools state. For use in tests only. */
280
452
  export async function resetDevtoolsServerForTests() {
453
+ setChangeListener(null);
454
+ clientStates.clear();
281
455
  if (transportState) {
282
456
  await transportState.close();
283
457
  }
@@ -287,4 +461,8 @@ export async function resetDevtoolsServerForTests() {
287
461
  devtoolsInitialized = false;
288
462
  configuredPort = undefined;
289
463
  loggedDevtoolsLinks = false;
464
+ subscribedPromise = null;
465
+ resolveSubscribed = null;
466
+ // Close the trace DB so each test starts fresh
467
+ closeTrace();
290
468
  }
@@ -58,8 +58,8 @@ function loadDevtoolsUiHtml(): string | null {
58
58
  export interface CreateTransportOptions {
59
59
  port: number;
60
60
  onConnection(socket: any): void;
61
- onMessage(message: unknown): void;
62
- onDisconnect(): void;
61
+ onMessage(message: unknown, socket: any): void;
62
+ onDisconnect(socket: any): void;
63
63
  }
64
64
 
65
65
  /**
@@ -137,7 +137,7 @@ export async function createTransport(
137
137
 
138
138
  socket.on("message", (data) => {
139
139
  try {
140
- options.onMessage(JSON.parse(String(data)));
140
+ options.onMessage(JSON.parse(String(data)), socket);
141
141
  } catch {
142
142
  // ignore malformed messages
143
143
  }
@@ -146,7 +146,7 @@ export async function createTransport(
146
146
  socket.on("close", () => {
147
147
  clients.delete(socket);
148
148
  state.connected = clients.size > 0;
149
- options.onDisconnect();
149
+ options.onDisconnect(socket);
150
150
  });
151
151
  });
152
152
 
@@ -1,15 +1,13 @@
1
1
  export type {
2
- BatchMessage,
2
+ // Individual server→client message types
3
3
  ClientToServerMessage,
4
4
  DebuggerInfoMessage,
5
- DiagnosticInfo,
5
+ DiagnosticRow,
6
6
  DiagnosticsReportMessage,
7
7
  DirectoryAddedMessage,
8
8
  DirectoryRemovedMessage,
9
9
  EffectAddedMessage,
10
- EffectEdgeInfo,
11
10
  EffectEdgeUpdatedMessage,
12
- EffectInfo,
13
11
  EffectTrackMessage,
14
12
  EffectTriggerMessage,
15
13
  EffectUpdatedMessage,
@@ -18,27 +16,25 @@ export type {
18
16
  FileUpdatedMessage,
19
17
  FlushJobsCompleteMessage,
20
18
  RefAddedMessage,
21
- RefInfo,
22
19
  RenderCompleteMessage,
23
20
  RenderErrorMessage,
24
- RenderErrorStackEntry,
25
21
  RenderNodeAddedMessage,
26
22
  RenderNodeRemovedMessage,
27
23
  RenderNodeUpdatedMessage,
28
24
  RenderResetMessage,
29
- RenderTreeNode,
25
+ // Individual client→server message types
30
26
  RerenderBreakRequestMessage,
31
27
  RerenderRequestMessage,
32
- ScopeCreateMessage,
33
- ScopeDeleteMessage,
34
- ScopeInfo,
35
- ScopeUpdateMessage,
28
+ ScopeAddedMessage,
29
+ ScopeRemovedMessage,
30
+ ScopeUpdatedMessage,
36
31
  ServerToClientMessage,
37
32
  SourceLocation,
38
- SymbolCreateMessage,
39
- SymbolDeleteMessage,
40
- SymbolInfo,
41
- SymbolUpdateMessage,
33
+ SubscribeMessage,
34
+ SymbolAddedMessage,
35
+ SymbolRemovedMessage,
36
+ SymbolUpdatedMessage,
37
+ UnsubscribeMessage,
42
38
  } from "./devtools/devtools-protocol.js";
43
39
  export {
44
40
  enableDevtools,
@@ -1,16 +1,13 @@
1
1
  export type {
2
2
  // Individual server→client message types
3
- BatchMessage,
4
3
  ClientToServerMessage,
5
4
  DebuggerInfoMessage,
6
- DiagnosticInfo,
5
+ DiagnosticRow,
7
6
  DiagnosticsReportMessage,
8
7
  DirectoryAddedMessage,
9
8
  DirectoryRemovedMessage,
10
9
  EffectAddedMessage,
11
- EffectEdgeInfo,
12
10
  EffectEdgeUpdatedMessage,
13
- EffectInfo,
14
11
  EffectTrackMessage,
15
12
  EffectTriggerMessage,
16
13
  EffectUpdatedMessage,
@@ -19,28 +16,25 @@ export type {
19
16
  FileUpdatedMessage,
20
17
  FlushJobsCompleteMessage,
21
18
  RefAddedMessage,
22
- RefInfo,
23
19
  RenderCompleteMessage,
24
20
  RenderErrorMessage,
25
- RenderErrorStackEntry,
26
21
  RenderNodeAddedMessage,
27
22
  RenderNodeRemovedMessage,
28
23
  RenderNodeUpdatedMessage,
29
24
  RenderResetMessage,
30
- RenderTreeNode,
31
25
  // Individual client→server message types
32
26
  RerenderBreakRequestMessage,
33
27
  RerenderRequestMessage,
34
- ScopeCreateMessage,
35
- ScopeDeleteMessage,
36
- ScopeInfo,
37
- ScopeUpdateMessage,
28
+ ScopeAddedMessage,
29
+ ScopeRemovedMessage,
30
+ ScopeUpdatedMessage,
38
31
  ServerToClientMessage,
39
32
  SourceLocation,
40
- SymbolCreateMessage,
41
- SymbolDeleteMessage,
42
- SymbolInfo,
43
- SymbolUpdateMessage,
33
+ SubscribeMessage,
34
+ SymbolAddedMessage,
35
+ SymbolRemovedMessage,
36
+ SymbolUpdatedMessage,
37
+ UnsubscribeMessage,
44
38
  } from "./devtools/devtools-protocol.js";
45
39
  export {
46
40
  enableDevtools,
@@ -1,5 +1,5 @@
1
1
  import { getRenderNodeId } from "./debug/index.js";
2
- import { broadcastDevtoolsMessage } from "./devtools/devtools-server.js";
2
+ import { insertDiagnostic } from "./debug/trace-writer.js";
3
3
  import { getContext } from "./reactivity.js";
4
4
  import { getRenderStackSnapshot } from "./render-stack.js";
5
5
  import type { SourceLocation } from "./runtime/component.js";
@@ -77,10 +77,19 @@ export class DiagnosticsCollector {
77
77
  }
78
78
 
79
79
  private broadcast() {
80
- broadcastDevtoolsMessage({
81
- type: "diagnostics:report",
82
- diagnostics: this.getDiagnostics(),
83
- });
80
+ const diagnostics = this.getDiagnostics();
81
+ for (const diagnostic of diagnostics) {
82
+ insertDiagnostic(
83
+ diagnostic.message,
84
+ diagnostic.severity,
85
+ diagnostic.source?.fileName,
86
+ diagnostic.source?.lineNumber,
87
+ diagnostic.source?.columnNumber,
88
+ diagnostic.componentStack ?
89
+ JSON.stringify(diagnostic.componentStack)
90
+ : undefined,
91
+ );
92
+ }
84
93
  }
85
94
  }
86
95