@alloy-js/core 0.23.0-dev.11 → 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 (347) 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/src/debug/effects.d.ts.map +1 -1
  326. package/dist/src/debug/effects.js +2 -67
  327. package/dist/src/debug/effects.js.map +1 -1
  328. package/dist/src/debug/render.d.ts.map +1 -1
  329. package/dist/src/debug/render.js +15 -8
  330. package/dist/src/debug/render.js.map +1 -1
  331. package/dist/src/debug/source-map.d.ts +22 -0
  332. package/dist/src/debug/source-map.d.ts.map +1 -0
  333. package/dist/src/debug/source-map.js +111 -0
  334. package/dist/src/debug/source-map.js.map +1 -0
  335. package/dist/src/debug/trace.d.ts.map +1 -1
  336. package/dist/src/debug/trace.js +13 -0
  337. package/dist/src/debug/trace.js.map +1 -1
  338. package/dist/test/browser-build.test.js +1 -1
  339. package/dist/test/browser-build.test.js.map +1 -1
  340. package/dist/tsconfig.tsbuildinfo +1 -1
  341. package/package.json +9 -3
  342. package/src/debug/effects.ts +2 -82
  343. package/src/debug/render.ts +25 -13
  344. package/src/debug/source-map.ts +135 -0
  345. package/src/debug/trace.ts +16 -0
  346. package/test/browser-build.test.ts +1 -1
  347. package/vitest.config.ts +8 -0
@@ -0,0 +1,444 @@
1
+ /**
2
+ * Devtools session manager.
3
+ *
4
+ * Manages the lifecycle of a devtools session: enable, connect, broadcast
5
+ * messages, and reset. Transport details (HTTP/WebSocket) are delegated
6
+ * to devtools-transport.ts.
7
+ */
8
+
9
+ import { ALL_CHANNELS, closeTrace, initTrace, isTraceEnabled, queryChannel, setChangeListener } from "../debug/trace-writer.js";
10
+ import { createTransport, getAlloyVersion } from "./devtools-transport.js";
11
+
12
+ // ─────────────────────────────────────────────────────────────────────────────
13
+ // Public types
14
+ // ─────────────────────────────────────────────────────────────────────────────
15
+
16
+ // ─────────────────────────────────────────────────────────────────────────────
17
+ // Session state
18
+ // ─────────────────────────────────────────────────────────────────────────────
19
+
20
+ let transportState = null;
21
+ let transportPromise = null;
22
+ const messageHandlers = new Set();
23
+ let devtoolsExplicitlyEnabled = false;
24
+ let devtoolsInitialized = false;
25
+ let loggedDevtoolsLinks = false;
26
+ let waitingForConnection = false;
27
+ let configuredPort;
28
+ let tempDbPath = null;
29
+ let subscribedPromise = null;
30
+ let resolveSubscribed = null;
31
+
32
+ // ─────────────────────────────────────────────────────────────────────────────
33
+ // Per-client subscription state
34
+ // ─────────────────────────────────────────────────────────────────────────────
35
+
36
+ const clientStates = new Map();
37
+ function eventToMessageType(event) {
38
+ const map = {
39
+ render: {
40
+ added: "render:node_added",
41
+ updated: "render:node_updated",
42
+ removed: "render:node_removed",
43
+ reset: "render:reset"
44
+ },
45
+ effects: {
46
+ added: "effect:added",
47
+ updated: "effect:updated"
48
+ },
49
+ refs: {
50
+ added: "ref:added"
51
+ },
52
+ edges: {
53
+ added: `edge:${event.data.edge_type ?? "track"}`
54
+ },
55
+ symbols: {
56
+ added: "symbol:added",
57
+ updated: "symbol:updated",
58
+ removed: "symbol:removed"
59
+ },
60
+ scopes: {
61
+ added: "scope:added",
62
+ updated: "scope:updated",
63
+ removed: "scope:removed"
64
+ },
65
+ files: {
66
+ added: "file:added",
67
+ updated: "file:updated",
68
+ removed: "file:removed"
69
+ },
70
+ directories: {
71
+ added: "directory:added",
72
+ removed: "directory:removed"
73
+ },
74
+ diagnostics: {
75
+ added: "diagnostics:report"
76
+ },
77
+ errors: {
78
+ added: "render:error"
79
+ },
80
+ lifecycle: {
81
+ added: "effect:lifecycle"
82
+ },
83
+ scheduler: {
84
+ added: "scheduler:job"
85
+ }
86
+ };
87
+ return map[event.channel]?.[event.action] ?? `${event.channel}:${event.action}`;
88
+ }
89
+ function channelToInitialMessageType(channel, row) {
90
+ const map = {
91
+ render: "render:node_added",
92
+ effects: "effect:added",
93
+ refs: "ref:added",
94
+ symbols: "symbol:added",
95
+ scopes: "scope:added",
96
+ files: "file:added",
97
+ directories: "directory:added",
98
+ diagnostics: "diagnostics:report",
99
+ errors: "render:error",
100
+ lifecycle: "effect:lifecycle",
101
+ scheduler: "scheduler:job"
102
+ };
103
+ if (channel === "edges") {
104
+ return `edge:${row.type ?? "track"}`;
105
+ }
106
+ return map[channel] ?? `${channel}:added`;
107
+ }
108
+ function sendInitialState(socket, channels) {
109
+ if (!isTraceEnabled()) return;
110
+ for (const channel of channels) {
111
+ const rows = queryChannel(channel);
112
+ for (const row of rows) {
113
+ const msgType = channelToInitialMessageType(channel, row);
114
+ // Remap SQLite column names that collide with the message `type` field
115
+ if (channel === "effects" && row.type !== undefined) {
116
+ row.effect_type = row.type;
117
+ }
118
+ const msg = {
119
+ ...row,
120
+ type: msgType
121
+ };
122
+ socket.send(JSON.stringify(msg));
123
+ }
124
+ }
125
+ }
126
+
127
+ // ─────────────────────────────────────────────────────────────────────────────
128
+ // Environment helpers
129
+ // ─────────────────────────────────────────────────────────────────────────────
130
+
131
+ function isNodeEnvironment() {
132
+ return typeof process !== "undefined" && typeof process.versions === "object" && Boolean(process.versions?.node);
133
+ }
134
+ function getCwd() {
135
+ if (!isNodeEnvironment()) return undefined;
136
+ try {
137
+ return process.cwd();
138
+ } catch {
139
+ return undefined;
140
+ }
141
+ }
142
+ function resolveDebugPort() {
143
+ const raw = process.env.ALLOY_DEBUG_PORT;
144
+ if (!raw) return 8123;
145
+ const parsed = Number.parseInt(raw, 10);
146
+ if (Number.isNaN(parsed)) return 8123;
147
+ return parsed;
148
+ }
149
+
150
+ // ─────────────────────────────────────────────────────────────────────────────
151
+ // Query functions
152
+ // ─────────────────────────────────────────────────────────────────────────────
153
+
154
+ /** Returns true when devtools are enabled (via env var or explicit call). */
155
+ export function isDevtoolsEnabled() {
156
+ if (!isNodeEnvironment()) return false;
157
+ return devtoolsExplicitlyEnabled || Boolean(process.env.ALLOY_DEBUG);
158
+ }
159
+
160
+ /** Returns true when a devtools client is currently connected. */
161
+ export function isDevtoolsConnected() {
162
+ return Boolean(transportState?.connected);
163
+ }
164
+
165
+ /** Get the current server info, or null if not running. */
166
+ export function getDevtoolsServerInfo() {
167
+ if (!transportState) return null;
168
+ return {
169
+ port: transportState.port,
170
+ connected: transportState.connected
171
+ };
172
+ }
173
+
174
+ // ─────────────────────────────────────────────────────────────────────────────
175
+ // Temp SQLite for devtools
176
+ // ─────────────────────────────────────────────────────────────────────────────
177
+
178
+ async function ensureSqliteForDevtools() {
179
+ if (isTraceEnabled()) return;
180
+ const os = await import("node:os");
181
+ const path = await import("node:path");
182
+ tempDbPath = path.join(os.tmpdir(), `alloy-debug-${process.pid}.db`);
183
+ await initTrace(tempDbPath);
184
+ process.on("exit", () => {
185
+ if (!tempDbPath) return;
186
+ try {
187
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
188
+ const fs = require("node:fs");
189
+ fs.unlinkSync(tempDbPath);
190
+ try {
191
+ fs.unlinkSync(tempDbPath + "-wal");
192
+ } catch {
193
+ /* ignore */
194
+ }
195
+ try {
196
+ fs.unlinkSync(tempDbPath + "-shm");
197
+ } catch {
198
+ /* ignore */
199
+ }
200
+ } catch {
201
+ /* ignore cleanup failures */
202
+ }
203
+ });
204
+ }
205
+
206
+ // ─────────────────────────────────────────────────────────────────────────────
207
+ // Server lifecycle
208
+ // ─────────────────────────────────────────────────────────────────────────────
209
+
210
+ async function ensureServer() {
211
+ if (transportState) return transportState;
212
+ if (!transportPromise) {
213
+ transportPromise = createTransport({
214
+ port: configuredPort ?? resolveDebugPort(),
215
+ onConnection(socket) {
216
+ // Start with no subscriptions — client must subscribe explicitly.
217
+ clientStates.set(socket, {
218
+ subscriptions: new Set()
219
+ });
220
+ if (!subscribedPromise) {
221
+ subscribedPromise = new Promise(resolve => {
222
+ resolveSubscribed = resolve;
223
+ });
224
+ }
225
+ if (waitingForConnection) {
226
+ waitingForConnection = false;
227
+ process.stdout.write(" Connected!\n");
228
+ }
229
+ socket.send(JSON.stringify({
230
+ type: "debugger:info",
231
+ version: getAlloyVersion(),
232
+ cwd: getCwd(),
233
+ sourceMapEnabled: process.execArgv.includes("--enable-source-maps")
234
+ }));
235
+ },
236
+ onMessage(raw, socket) {
237
+ const message = raw;
238
+ if (!message || !message.type) return;
239
+ if (message.type === "subscribe") {
240
+ const channels = message.channels;
241
+ const state = clientStates.get(socket);
242
+ if (state && channels && Array.isArray(channels)) {
243
+ const validChannels = channels.filter(ch => ALL_CHANNELS.includes(ch));
244
+ state.subscriptions = new Set(validChannels);
245
+ sendInitialState(socket, validChannels);
246
+ }
247
+ resolveSubscribed?.();
248
+ return;
249
+ }
250
+ if (message.type === "unsubscribe") {
251
+ const channels = message.channels;
252
+ const state = clientStates.get(socket);
253
+ if (state && channels) {
254
+ for (const ch of channels) state.subscriptions.delete(ch);
255
+ }
256
+ return;
257
+ }
258
+ for (const handler of messageHandlers) {
259
+ handler(message);
260
+ }
261
+ },
262
+ onDisconnect(socket) {
263
+ clientStates.delete(socket);
264
+ }
265
+ }).then(state => {
266
+ transportState = state;
267
+
268
+ // Wire up the change notification bus to forward events to subscribed clients
269
+ setChangeListener(event => {
270
+ if (!transportState) return;
271
+
272
+ // Lifecycle signals are broadcast to ALL connected clients
273
+ const signalType = event.data?._signal;
274
+ if (signalType) {
275
+ const payload = JSON.stringify({
276
+ type: signalType
277
+ });
278
+ for (const client of transportState.clients) {
279
+ if (client.readyState === client.OPEN) {
280
+ client.send(payload);
281
+ }
282
+ }
283
+ return;
284
+ }
285
+ const msgType = eventToMessageType(event);
286
+ const message = {
287
+ ...event.data,
288
+ type: msgType
289
+ };
290
+ const payload = JSON.stringify(message);
291
+ for (const [client, clientState] of clientStates) {
292
+ if (client.readyState !== client.OPEN) continue;
293
+ if (clientState.subscriptions.has(event.channel)) {
294
+ client.send(payload);
295
+ }
296
+ }
297
+ });
298
+ if (!loggedDevtoolsLinks) {
299
+ loggedDevtoolsLinks = true;
300
+ // eslint-disable-next-line no-console
301
+ console.log(`Alloy ${getAlloyVersion()}`);
302
+ // eslint-disable-next-line no-console
303
+ console.log(`➜ Debug UI: http://localhost:${state.port}/`);
304
+ // eslint-disable-next-line no-console
305
+ console.log(`➜ Websocket: ws://localhost:${state.port}/`);
306
+ // eslint-disable-next-line no-console
307
+ console.log("");
308
+ waitingForConnection = true;
309
+ process.stdout.write("Waiting for connection...");
310
+ }
311
+ return state;
312
+ });
313
+ }
314
+ return transportPromise;
315
+ }
316
+
317
+ // ─────────────────────────────────────────────────────────────────────────────
318
+ // Public API
319
+ // ─────────────────────────────────────────────────────────────────────────────
320
+
321
+ /**
322
+ * Wait for a devtools client to connect before proceeding.
323
+ *
324
+ * Starts the devtools server if not already running, and blocks until a
325
+ * devtools client connects via WebSocket.
326
+ *
327
+ * @example
328
+ * ```ts
329
+ * import { waitForDevtoolsConnection } from "@alloy-js/core/devtools";
330
+ * import { render } from "@alloy-js/core";
331
+ *
332
+ * await waitForDevtoolsConnection();
333
+ * const tree = render(<MyComponent />);
334
+ * ```
335
+ */
336
+ export async function waitForDevtoolsConnection() {
337
+ devtoolsExplicitlyEnabled = true;
338
+ const server = await ensureServer();
339
+ if (!server.connected) {
340
+ await server.ready;
341
+ }
342
+ // Wait for the client to send its initial subscribe message so that
343
+ // messages emitted during a synchronous render are not dropped.
344
+ if (subscribedPromise) {
345
+ await subscribedPromise;
346
+ }
347
+ }
348
+
349
+ /**
350
+ * Enable devtools and start the server, returning when the server is ready.
351
+ * Use this in tests to enable devtools before connecting a client.
352
+ *
353
+ * @returns Server info with port number
354
+ */
355
+ export async function enableDevtools(options) {
356
+ devtoolsExplicitlyEnabled = true;
357
+ devtoolsInitialized = true;
358
+ if (options?.port !== undefined) {
359
+ configuredPort = options.port;
360
+ }
361
+ await ensureSqliteForDevtools();
362
+ const server = await ensureServer();
363
+ return {
364
+ port: server.port,
365
+ connected: server.connected
366
+ };
367
+ }
368
+
369
+ /**
370
+ * Initialize devtools if ALLOY_DEBUG is set. Called lazily by render functions.
371
+ * Returns immediately if devtools are not enabled or already initialized.
372
+ */
373
+ export async function initDevtoolsIfEnabled() {
374
+ if (devtoolsInitialized) return;
375
+ if (!isDevtoolsEnabled()) return;
376
+ devtoolsInitialized = true;
377
+ await ensureSqliteForDevtools();
378
+ await waitForDevtoolsConnection();
379
+ }
380
+
381
+ /**
382
+ * Start the devtools server and wait for a client connection.
383
+ *
384
+ * @example
385
+ * ```ts
386
+ * const serverInfo = await enableDevtoolsAndConnect({ port: 0 });
387
+ * // ... run your test ...
388
+ * await resetDevtoolsServerForTests();
389
+ * ```
390
+ *
391
+ * @returns Server info once a client has connected
392
+ */
393
+ export async function enableDevtoolsAndConnect(options) {
394
+ const info = await enableDevtools(options);
395
+ if (!info.connected) {
396
+ await transportState.ready;
397
+ }
398
+ return {
399
+ port: transportState.port,
400
+ connected: true
401
+ };
402
+ }
403
+
404
+ // ─────────────────────────────────────────────────────────────────────────────
405
+ // Messaging
406
+ // ─────────────────────────────────────────────────────────────────────────────
407
+
408
+ /** Register a handler for incoming devtools messages. Returns an unsubscribe function. */
409
+ export function registerDevtoolsMessageHandler(handler) {
410
+ messageHandlers.add(handler);
411
+ return () => messageHandlers.delete(handler);
412
+ }
413
+
414
+ /** Throw if devtools are enabled but no client is connected (for sync render). */
415
+ export function assertDevtoolsConnectedForSyncRender() {
416
+ if (!isDevtoolsEnabled()) return;
417
+ if (!transportState || !transportState.connected) {
418
+ throw new Error("ALLOY_DEBUG is set but devtools are not connected. Use renderAsync or wait for the devtools client before rendering.");
419
+ }
420
+ }
421
+
422
+ // ─────────────────────────────────────────────────────────────────────────────
423
+ // Test utilities
424
+ // ─────────────────────────────────────────────────────────────────────────────
425
+
426
+ /** Reset all devtools state. For use in tests only. */
427
+ export async function resetDevtoolsServerForTests() {
428
+ setChangeListener(null);
429
+ clientStates.clear();
430
+ if (transportState) {
431
+ await transportState.close();
432
+ }
433
+ transportState = null;
434
+ transportPromise = null;
435
+ devtoolsExplicitlyEnabled = false;
436
+ devtoolsInitialized = false;
437
+ configuredPort = undefined;
438
+ loggedDevtoolsLinks = false;
439
+ subscribedPromise = null;
440
+ resolveSubscribed = null;
441
+ // Close the trace DB so each test starts fresh
442
+ closeTrace();
443
+ }
444
+ //# sourceMappingURL=devtools-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ALL_CHANNELS","closeTrace","initTrace","isTraceEnabled","queryChannel","setChangeListener","createTransport","getAlloyVersion","transportState","transportPromise","messageHandlers","Set","devtoolsExplicitlyEnabled","devtoolsInitialized","loggedDevtoolsLinks","waitingForConnection","configuredPort","tempDbPath","subscribedPromise","resolveSubscribed","clientStates","Map","eventToMessageType","event","map","render","added","updated","removed","reset","effects","refs","edges","data","edge_type","symbols","scopes","files","directories","diagnostics","errors","lifecycle","scheduler","channel","action","channelToInitialMessageType","row","type","sendInitialState","socket","channels","rows","msgType","undefined","effect_type","msg","send","JSON","stringify","isNodeEnvironment","process","versions","Boolean","node","getCwd","cwd","resolveDebugPort","raw","env","ALLOY_DEBUG_PORT","parsed","Number","parseInt","isNaN","isDevtoolsEnabled","ALLOY_DEBUG","isDevtoolsConnected","connected","getDevtoolsServerInfo","port","ensureSqliteForDevtools","os","path","join","tmpdir","pid","on","fs","require","unlinkSync","ensureServer","onConnection","set","subscriptions","Promise","resolve","stdout","write","version","sourceMapEnabled","execArgv","includes","onMessage","message","state","get","Array","isArray","validChannels","filter","ch","delete","handler","onDisconnect","then","signalType","_signal","payload","client","clients","readyState","OPEN","clientState","has","console","log","waitForDevtoolsConnection","server","ready","enableDevtools","options","initDevtoolsIfEnabled","enableDevtoolsAndConnect","info","registerDevtoolsMessageHandler","add","assertDevtoolsConnectedForSyncRender","Error","resetDevtoolsServerForTests","clear","close"],"sources":["../../../../src/devtools/devtools-server.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * WebSocket transport for the Alloy devtools server.
3
+ *
4
+ * Handles HTTP serving of the devtools UI and WebSocket connection management.
5
+ * This module is concerned only with the transport layer — session lifecycle
6
+ * is managed by devtools-server.ts.
7
+ */
8
+ import { readFileSync } from "node:fs";
9
+ import { createServer as createHttpServer } from "node:http";
10
+ let cachedAlloyVersion = null;
11
+
12
+ /** Read the @alloy-js/core package version, cached after first call. */
13
+ export function getAlloyVersion() {
14
+ if (cachedAlloyVersion) return cachedAlloyVersion;
15
+ try {
16
+ const pkgUrl = new URL("../../../package.json", import.meta.url);
17
+ const pkg = JSON.parse(readFileSync(pkgUrl, "utf-8"));
18
+ cachedAlloyVersion = pkg.version ?? "0.0.0";
19
+ } catch {
20
+ cachedAlloyVersion = "0.0.0";
21
+ }
22
+ return cachedAlloyVersion;
23
+ }
24
+
25
+ /** Attempt to load the devtools UI HTML from known candidate paths. */
26
+ function loadDevtoolsUiHtml() {
27
+ const candidates = [new URL("../../dist/devtools/index.html", import.meta.url), new URL("../../devtools/index.html", import.meta.url), new URL("../../../devtools/dist/index.html", import.meta.url)];
28
+ for (const candidate of candidates) {
29
+ try {
30
+ return readFileSync(candidate, "utf-8");
31
+ } catch {
32
+ // try next
33
+ }
34
+ }
35
+ return null;
36
+ }
37
+ /**
38
+ * Create the HTTP + WebSocket transport. Returns when the server is listening.
39
+ * Only accepts one concurrent WebSocket connection.
40
+ */
41
+ export async function createTransport(options) {
42
+ const {
43
+ WebSocketServer
44
+ } = await import("ws");
45
+ const devtoolsUiHtml = loadDevtoolsUiHtml();
46
+ const httpServer = createHttpServer((req, res) => {
47
+ const url = req.url ?? "/";
48
+ if (url !== "/" && url !== "/index.html") {
49
+ res.statusCode = 404;
50
+ res.end("Not Found");
51
+ return;
52
+ }
53
+ if (!devtoolsUiHtml) {
54
+ res.statusCode = 404;
55
+ res.end("Not Found");
56
+ return;
57
+ }
58
+ res.statusCode = 200;
59
+ res.setHeader("Content-Type", "text/html; charset=utf-8");
60
+ res.end(devtoolsUiHtml);
61
+ });
62
+ const wss = new WebSocketServer({
63
+ server: httpServer
64
+ });
65
+ await new Promise((resolve, reject) => {
66
+ httpServer.once("listening", resolve);
67
+ httpServer.once("error", reject);
68
+ httpServer.listen(options.port);
69
+ });
70
+ const address = httpServer.address();
71
+ const actualPort = typeof address === "object" && address !== null ? address.port : options.port;
72
+ let resolveReady;
73
+ const ready = new Promise(resolve => {
74
+ resolveReady = resolve;
75
+ });
76
+ const clients = new Set();
77
+ const state = {
78
+ port: actualPort,
79
+ connected: false,
80
+ clients,
81
+ httpServer,
82
+ ready,
83
+ close: async () => {
84
+ await new Promise(resolve => wss.close(() => resolve()));
85
+ await new Promise(resolve => httpServer.close(() => resolve()));
86
+ clients.clear();
87
+ state.connected = false;
88
+ }
89
+ };
90
+ wss.on("connection", socket => {
91
+ if (state.connected) {
92
+ socket.close(1000, "Another devtools client is already connected");
93
+ return;
94
+ }
95
+ clients.add(socket);
96
+ state.connected = true;
97
+ resolveReady?.();
98
+ options.onConnection(socket);
99
+ socket.on("message", data => {
100
+ try {
101
+ options.onMessage(JSON.parse(String(data)), socket);
102
+ } catch {
103
+ // ignore malformed messages
104
+ }
105
+ });
106
+ socket.on("close", () => {
107
+ clients.delete(socket);
108
+ state.connected = clients.size > 0;
109
+ options.onDisconnect(socket);
110
+ });
111
+ });
112
+ return state;
113
+ }
114
+ //# sourceMappingURL=devtools-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["readFileSync","createServer","createHttpServer","cachedAlloyVersion","getAlloyVersion","pkgUrl","URL","import","meta","url","pkg","JSON","parse","version","loadDevtoolsUiHtml","candidates","candidate","createTransport","options","WebSocketServer","devtoolsUiHtml","httpServer","req","res","statusCode","end","setHeader","wss","server","Promise","resolve","reject","once","listen","port","address","actualPort","resolveReady","ready","clients","Set","state","connected","close","clear","on","socket","add","onConnection","data","onMessage","String","delete","size","onDisconnect"],"sources":["../../../../src/devtools/devtools-transport.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export { enableDevtools, enableDevtoolsAndConnect, resetDevtoolsServerForTests, waitForDevtoolsConnection } from "./devtools/devtools-server.browser.js";
2
+ //# sourceMappingURL=devtools-entry.browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["enableDevtools","enableDevtoolsAndConnect","resetDevtoolsServerForTests","waitForDevtoolsConnection"],"sources":["../../../src/devtools-entry.browser.ts"],"sourcesContent":[null],"mappings":"AAsCA,SACEA,cAAc,EACdC,wBAAwB,EACxBC,2BAA2B,EAC3BC,yBAAyB,QACpB,uCAAuC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export { enableDevtools, enableDevtoolsAndConnect, resetDevtoolsServerForTests, waitForDevtoolsConnection } from "./devtools/devtools-server.js";
2
+ //# sourceMappingURL=devtools-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["enableDevtools","enableDevtoolsAndConnect","resetDevtoolsServerForTests","waitForDevtoolsConnection"],"sources":["../../../src/devtools-entry.ts"],"sourcesContent":[null],"mappings":"AAsCA,SACEA,cAAc,EACdC,wBAAwB,EACxBC,2BAA2B,EAC3BC,yBAAyB,QACpB,+BAA+B","ignoreList":[]}