@alloy-js/core 0.24.0-dev.2 → 0.24.0-dev.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (656) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/dev/src/components/AccessExpression.test.js +30 -38
  3. package/dist/dev/src/components/AccessExpression.test.js.map +1 -1
  4. package/dist/dev/src/components/Output.js +3 -2
  5. package/dist/dev/src/components/Output.js.map +1 -1
  6. package/dist/dev/src/components/SourceFile.js.map +1 -1
  7. package/dist/dev/src/content-slot.test.js +16 -18
  8. package/dist/dev/src/content-slot.test.js.map +1 -1
  9. package/dist/dev/src/context.js +30 -3
  10. package/dist/dev/src/context.js.map +1 -1
  11. package/dist/dev/src/debug/diagnostics.test.js +1 -1
  12. package/dist/dev/src/debug/diagnostics.test.js.map +1 -1
  13. package/dist/dev/src/debug/effects.test.js +1 -1
  14. package/dist/dev/src/debug/effects.test.js.map +1 -1
  15. package/dist/dev/src/debug/file-streaming.js +103 -0
  16. package/dist/dev/src/debug/file-streaming.js.map +1 -0
  17. package/dist/dev/src/debug/files.test.js +4 -5
  18. package/dist/dev/src/debug/files.test.js.map +1 -1
  19. package/dist/dev/src/debug/index.js +4 -6
  20. package/dist/dev/src/debug/index.js.map +1 -1
  21. package/dist/dev/src/debug/message-format.test.js +50 -52
  22. package/dist/dev/src/debug/message-format.test.js.map +1 -1
  23. package/dist/dev/src/debug/render-tree-orphans.test.js +13 -23
  24. package/dist/dev/src/debug/render-tree-orphans.test.js.map +1 -1
  25. package/dist/dev/src/debug/render.js +529 -352
  26. package/dist/dev/src/debug/render.js.map +1 -1
  27. package/dist/dev/src/debug/render.test.js +171 -92
  28. package/dist/dev/src/debug/render.test.js.map +1 -1
  29. package/dist/dev/src/debug/trace-writer.js +127 -15
  30. package/dist/dev/src/debug/trace-writer.js.map +1 -1
  31. package/dist/dev/src/debug/trace.js +0 -36
  32. package/dist/dev/src/debug/trace.js.map +1 -1
  33. package/dist/dev/src/devtools/devtools-server.js +55 -32
  34. package/dist/dev/src/devtools/devtools-server.js.map +1 -1
  35. package/dist/dev/src/devtools-entry.browser.js.map +1 -1
  36. package/dist/dev/src/devtools-entry.js.map +1 -1
  37. package/dist/dev/src/diagnostics.js +19 -1
  38. package/dist/dev/src/diagnostics.js.map +1 -1
  39. package/dist/dev/src/index.js +5 -2
  40. package/dist/dev/src/index.js.map +1 -1
  41. package/dist/dev/src/jsx-runtime.js +14 -8
  42. package/dist/dev/src/jsx-runtime.js.map +1 -1
  43. package/dist/dev/src/output-types.js +2 -0
  44. package/dist/dev/src/output-types.js.map +1 -0
  45. package/dist/dev/src/reactivity.js +155 -13
  46. package/dist/dev/src/reactivity.js.map +1 -1
  47. package/dist/dev/src/render/get-string-width.js +61 -0
  48. package/dist/dev/src/render/get-string-width.js.map +1 -0
  49. package/dist/dev/src/render/index.js +2 -0
  50. package/dist/dev/src/render/index.js.map +1 -0
  51. package/dist/dev/src/render/node-context.js +7 -0
  52. package/dist/dev/src/render/node-context.js.map +1 -0
  53. package/dist/dev/src/render/node.js +386 -0
  54. package/dist/dev/src/render/node.js.map +1 -0
  55. package/dist/dev/src/render/printer-support.js +180 -0
  56. package/dist/dev/src/render/printer-support.js.map +1 -0
  57. package/dist/dev/src/render/printer.js +797 -0
  58. package/dist/dev/src/render/printer.js.map +1 -0
  59. package/dist/dev/src/render-error.js +79 -0
  60. package/dist/dev/src/render-error.js.map +1 -0
  61. package/dist/dev/src/render-output.js +209 -0
  62. package/dist/dev/src/render-output.js.map +1 -0
  63. package/dist/dev/src/runtime/create-intrinsic.js +53 -0
  64. package/dist/dev/src/runtime/create-intrinsic.js.map +1 -0
  65. package/dist/dev/src/runtime/fragment.js +21 -0
  66. package/dist/dev/src/runtime/fragment.js.map +1 -0
  67. package/dist/dev/src/runtime/index.js +13 -0
  68. package/dist/dev/src/runtime/index.js.map +1 -0
  69. package/dist/dev/src/runtime/insert.js +453 -0
  70. package/dist/dev/src/runtime/insert.js.map +1 -0
  71. package/dist/dev/src/runtime/intrinsic.js +1 -11
  72. package/dist/dev/src/runtime/intrinsic.js.map +1 -1
  73. package/dist/dev/src/scheduler.js +38 -14
  74. package/dist/dev/src/scheduler.js.map +1 -1
  75. package/dist/dev/src/stc.js +2 -0
  76. package/dist/dev/src/stc.js.map +1 -1
  77. package/dist/dev/src/sti.js +1 -1
  78. package/dist/dev/src/sti.js.map +1 -1
  79. package/dist/dev/src/symbols/symbol-slot.test.js +5 -5
  80. package/dist/dev/src/symbols/symbol-slot.test.js.map +1 -1
  81. package/dist/dev/src/test-render.js +78 -0
  82. package/dist/dev/src/test-render.js.map +1 -0
  83. package/dist/dev/src/utils.js +47 -35
  84. package/dist/dev/src/utils.js.map +1 -1
  85. package/dist/dev/test/babel-e2e.test.js +218 -0
  86. package/dist/dev/test/babel-e2e.test.js.map +1 -0
  87. package/dist/dev/test/children.test.js +9 -11
  88. package/dist/dev/test/children.test.js.map +1 -1
  89. package/dist/dev/test/components/append-file.test.js +26 -27
  90. package/dist/dev/test/components/append-file.test.js.map +1 -1
  91. package/dist/dev/test/components/block.test.js +9 -11
  92. package/dist/dev/test/components/block.test.js.map +1 -1
  93. package/dist/dev/test/components/copy-file.test.js +1 -2
  94. package/dist/dev/test/components/copy-file.test.js.map +1 -1
  95. package/dist/dev/test/components/declaration.test.js +2 -2
  96. package/dist/dev/test/components/declaration.test.js.map +1 -1
  97. package/dist/dev/test/components/list.test.js +41 -43
  98. package/dist/dev/test/components/list.test.js.map +1 -1
  99. package/dist/dev/test/components/prose.test.js +4 -5
  100. package/dist/dev/test/components/prose.test.js.map +1 -1
  101. package/dist/dev/test/components/reference-or-content.test.js +32 -33
  102. package/dist/dev/test/components/reference-or-content.test.js.map +1 -1
  103. package/dist/dev/test/components/source-file.test.js +8 -7
  104. package/dist/dev/test/components/source-file.test.js.map +1 -1
  105. package/dist/dev/test/components/template-file.test.js +16 -17
  106. package/dist/dev/test/components/template-file.test.js.map +1 -1
  107. package/dist/dev/test/components/update-file.test.js +11 -12
  108. package/dist/dev/test/components/update-file.test.js.map +1 -1
  109. package/dist/dev/test/components/wrap.test.js +6 -8
  110. package/dist/dev/test/components/wrap.test.js.map +1 -1
  111. package/dist/dev/test/control-flow/for.test.js +58 -42
  112. package/dist/dev/test/control-flow/for.test.js.map +1 -1
  113. package/dist/dev/test/control-flow/match.test.js +15 -17
  114. package/dist/dev/test/control-flow/match.test.js.map +1 -1
  115. package/dist/dev/test/control-flow/show.test.js +5 -8
  116. package/dist/dev/test/control-flow/show.test.js.map +1 -1
  117. package/dist/dev/test/lazy-isempty.test.js +29 -31
  118. package/dist/dev/test/lazy-isempty.test.js.map +1 -1
  119. package/dist/dev/test/name-policy.test.js +2 -3
  120. package/dist/dev/test/name-policy.test.js.map +1 -1
  121. package/dist/dev/test/node.test.js +80 -0
  122. package/dist/dev/test/node.test.js.map +1 -0
  123. package/dist/dev/test/output-e2e.test.js +194 -0
  124. package/dist/dev/test/output-e2e.test.js.map +1 -0
  125. package/dist/dev/test/reactivity/circular-reactives.test.js +9 -9
  126. package/dist/dev/test/reactivity/circular-reactives.test.js.map +1 -1
  127. package/dist/dev/test/reactivity/cleanup.test.js +5 -6
  128. package/dist/dev/test/reactivity/cleanup.test.js.map +1 -1
  129. package/dist/dev/test/reactivity/ref-rendering.test.js +15 -15
  130. package/dist/dev/test/reactivity/ref-rendering.test.js.map +1 -1
  131. package/dist/dev/test/reactivity/test.test.js +18 -18
  132. package/dist/dev/test/reactivity/test.test.js.map +1 -1
  133. package/dist/dev/test/rendering/basic.test.js +18 -19
  134. package/dist/dev/test/rendering/basic.test.js.map +1 -1
  135. package/dist/dev/test/rendering/code.test.js +2 -3
  136. package/dist/dev/test/rendering/code.test.js.map +1 -1
  137. package/dist/dev/test/rendering/formatting.test.js +115 -121
  138. package/dist/dev/test/rendering/formatting.test.js.map +1 -1
  139. package/dist/dev/test/rendering/indent.test.js +23 -24
  140. package/dist/dev/test/rendering/indent.test.js.map +1 -1
  141. package/dist/dev/test/rendering/memoization.test.js +9 -5
  142. package/dist/dev/test/rendering/memoization.test.js.map +1 -1
  143. package/dist/dev/test/rendering/print-render-stack.test.js +20 -21
  144. package/dist/dev/test/rendering/print-render-stack.test.js.map +1 -1
  145. package/dist/dev/test/rendering/refkeys.test.js +1 -2
  146. package/dist/dev/test/rendering/refkeys.test.js.map +1 -1
  147. package/dist/dev/test/rendering/render-output-diagnostics.test.js +102 -0
  148. package/dist/dev/test/rendering/render-output-diagnostics.test.js.map +1 -0
  149. package/dist/dev/test/runtime.test.js +385 -0
  150. package/dist/dev/test/runtime.test.js.map +1 -0
  151. package/dist/dev/test/stc.test.js +0 -1
  152. package/dist/dev/test/stc.test.js.map +1 -1
  153. package/dist/dev/test/tree-test-utils.js +16 -0
  154. package/dist/dev/test/tree-test-utils.js.map +1 -0
  155. package/dist/dev/test/utils.test.js +34 -33
  156. package/dist/dev/test/utils.test.js.map +1 -1
  157. package/dist/dev/test/vitest.setup.js +2 -0
  158. package/dist/dev/test/vitest.setup.js.map +1 -0
  159. package/dist/dev/testing/devtools-utils.js +1 -1
  160. package/dist/dev/testing/devtools-utils.js.map +1 -1
  161. package/dist/dev/testing/extend-expect.js +30 -34
  162. package/dist/dev/testing/extend-expect.js.map +1 -1
  163. package/dist/dev/testing/render.js +7 -17
  164. package/dist/dev/testing/render.js.map +1 -1
  165. package/dist/devtools/index.html +17 -17
  166. package/dist/src/components/AccessExpression.test.d.ts +1 -1
  167. package/dist/src/components/AccessExpression.test.d.ts.map +1 -1
  168. package/dist/src/components/AccessExpression.test.js +5 -13
  169. package/dist/src/components/AccessExpression.test.js.map +1 -1
  170. package/dist/src/components/Output.d.ts +1 -1
  171. package/dist/src/components/Output.d.ts.map +1 -1
  172. package/dist/src/components/Output.js +2 -1
  173. package/dist/src/components/Output.js.map +1 -1
  174. package/dist/src/components/ReferenceOrContent.d.ts +1 -1
  175. package/dist/src/components/ReferenceOrContent.d.ts.map +1 -1
  176. package/dist/src/components/SourceFile.d.ts +1 -1
  177. package/dist/src/components/SourceFile.d.ts.map +1 -1
  178. package/dist/src/components/SourceFile.js.map +1 -1
  179. package/dist/src/content-slot.test.d.ts +1 -1
  180. package/dist/src/content-slot.test.d.ts.map +1 -1
  181. package/dist/src/content-slot.test.js +8 -10
  182. package/dist/src/content-slot.test.js.map +1 -1
  183. package/dist/src/context/format-options.d.ts +1 -1
  184. package/dist/src/context/format-options.d.ts.map +1 -1
  185. package/dist/src/context.d.ts +9 -1
  186. package/dist/src/context.d.ts.map +1 -1
  187. package/dist/src/context.js +30 -3
  188. package/dist/src/context.js.map +1 -1
  189. package/dist/src/debug/diagnostics.test.js +1 -1
  190. package/dist/src/debug/diagnostics.test.js.map +1 -1
  191. package/dist/src/debug/effects.test.js +1 -1
  192. package/dist/src/debug/effects.test.js.map +1 -1
  193. package/dist/src/debug/file-streaming.d.ts +22 -0
  194. package/dist/src/debug/file-streaming.d.ts.map +1 -0
  195. package/dist/src/debug/file-streaming.js +103 -0
  196. package/dist/src/debug/file-streaming.js.map +1 -0
  197. package/dist/src/debug/files.test.js +4 -5
  198. package/dist/src/debug/files.test.js.map +1 -1
  199. package/dist/src/debug/index.d.ts +5 -7
  200. package/dist/src/debug/index.d.ts.map +1 -1
  201. package/dist/src/debug/index.js +4 -6
  202. package/dist/src/debug/index.js.map +1 -1
  203. package/dist/src/debug/message-format.test.js +16 -18
  204. package/dist/src/debug/message-format.test.js.map +1 -1
  205. package/dist/src/debug/render-tree-orphans.test.js +8 -18
  206. package/dist/src/debug/render-tree-orphans.test.js.map +1 -1
  207. package/dist/src/debug/render.d.ts +71 -21
  208. package/dist/src/debug/render.d.ts.map +1 -1
  209. package/dist/src/debug/render.js +529 -352
  210. package/dist/src/debug/render.js.map +1 -1
  211. package/dist/src/debug/render.test.js +137 -74
  212. package/dist/src/debug/render.test.js.map +1 -1
  213. package/dist/src/debug/trace-writer.d.ts +6 -1
  214. package/dist/src/debug/trace-writer.d.ts.map +1 -1
  215. package/dist/src/debug/trace-writer.js +127 -15
  216. package/dist/src/debug/trace-writer.js.map +1 -1
  217. package/dist/src/debug/trace.d.ts +0 -36
  218. package/dist/src/debug/trace.d.ts.map +1 -1
  219. package/dist/src/debug/trace.js +0 -36
  220. package/dist/src/debug/trace.js.map +1 -1
  221. package/dist/src/devtools/devtools-protocol.d.ts +34 -1
  222. package/dist/src/devtools/devtools-protocol.d.ts.map +1 -1
  223. package/dist/src/devtools/devtools-server.d.ts.map +1 -1
  224. package/dist/src/devtools/devtools-server.js +55 -32
  225. package/dist/src/devtools/devtools-server.js.map +1 -1
  226. package/dist/src/devtools-entry.browser.d.ts +1 -1
  227. package/dist/src/devtools-entry.browser.d.ts.map +1 -1
  228. package/dist/src/devtools-entry.browser.js.map +1 -1
  229. package/dist/src/devtools-entry.d.ts +1 -1
  230. package/dist/src/devtools-entry.d.ts.map +1 -1
  231. package/dist/src/devtools-entry.js.map +1 -1
  232. package/dist/src/diagnostics.d.ts +4 -0
  233. package/dist/src/diagnostics.d.ts.map +1 -1
  234. package/dist/src/diagnostics.js +19 -1
  235. package/dist/src/diagnostics.js.map +1 -1
  236. package/dist/src/index.d.ts +5 -2
  237. package/dist/src/index.d.ts.map +1 -1
  238. package/dist/src/index.js +5 -2
  239. package/dist/src/index.js.map +1 -1
  240. package/dist/src/jsx-runtime.d.ts +13 -4
  241. package/dist/src/jsx-runtime.d.ts.map +1 -1
  242. package/dist/src/jsx-runtime.js +14 -8
  243. package/dist/src/jsx-runtime.js.map +1 -1
  244. package/dist/src/output-types.d.ts +40 -0
  245. package/dist/src/output-types.d.ts.map +1 -0
  246. package/dist/src/output-types.js +2 -0
  247. package/dist/src/output-types.js.map +1 -0
  248. package/dist/src/reactivity.d.ts +49 -18
  249. package/dist/src/reactivity.d.ts.map +1 -1
  250. package/dist/src/reactivity.js +155 -13
  251. package/dist/src/reactivity.js.map +1 -1
  252. package/dist/src/render/get-string-width.d.ts +19 -0
  253. package/dist/src/render/get-string-width.d.ts.map +1 -0
  254. package/dist/src/render/get-string-width.js +61 -0
  255. package/dist/src/render/get-string-width.js.map +1 -0
  256. package/dist/src/render/index.d.ts +2 -0
  257. package/dist/src/render/index.d.ts.map +1 -0
  258. package/dist/src/render/index.js +2 -0
  259. package/dist/src/render/index.js.map +1 -0
  260. package/dist/src/render/node-context.d.ts +5 -0
  261. package/dist/src/render/node-context.d.ts.map +1 -0
  262. package/dist/src/render/node-context.js +7 -0
  263. package/dist/src/render/node-context.js.map +1 -0
  264. package/dist/src/render/node.d.ts +146 -0
  265. package/dist/src/render/node.d.ts.map +1 -0
  266. package/dist/src/render/node.js +386 -0
  267. package/dist/src/render/node.js.map +1 -0
  268. package/dist/src/render/printer-support.d.ts +50 -0
  269. package/dist/src/render/printer-support.d.ts.map +1 -0
  270. package/dist/src/render/printer-support.js +180 -0
  271. package/dist/src/render/printer-support.js.map +1 -0
  272. package/dist/src/render/printer.d.ts +35 -0
  273. package/dist/src/render/printer.d.ts.map +1 -0
  274. package/dist/src/render/printer.js +797 -0
  275. package/dist/src/render/printer.js.map +1 -0
  276. package/dist/src/render-error.d.ts +4 -0
  277. package/dist/src/render-error.d.ts.map +1 -0
  278. package/dist/src/render-error.js +79 -0
  279. package/dist/src/render-error.js.map +1 -0
  280. package/dist/src/render-output.d.ts +42 -0
  281. package/dist/src/render-output.d.ts.map +1 -0
  282. package/dist/src/render-output.js +209 -0
  283. package/dist/src/render-output.js.map +1 -0
  284. package/dist/src/runtime/component.d.ts +2 -2
  285. package/dist/src/runtime/component.d.ts.map +1 -1
  286. package/dist/src/runtime/create-intrinsic.d.ts +28 -0
  287. package/dist/src/runtime/create-intrinsic.d.ts.map +1 -0
  288. package/dist/src/runtime/create-intrinsic.js +53 -0
  289. package/dist/src/runtime/create-intrinsic.js.map +1 -0
  290. package/dist/src/runtime/fragment.d.ts +16 -0
  291. package/dist/src/runtime/fragment.d.ts.map +1 -0
  292. package/dist/src/runtime/fragment.js +21 -0
  293. package/dist/src/runtime/fragment.js.map +1 -0
  294. package/dist/src/runtime/index.d.ts +12 -0
  295. package/dist/src/runtime/index.d.ts.map +1 -0
  296. package/dist/src/runtime/index.js +13 -0
  297. package/dist/src/runtime/index.js.map +1 -0
  298. package/dist/src/runtime/insert.d.ts +29 -0
  299. package/dist/src/runtime/insert.d.ts.map +1 -0
  300. package/dist/src/runtime/insert.js +453 -0
  301. package/dist/src/runtime/insert.js.map +1 -0
  302. package/dist/src/runtime/intrinsic.d.ts +12 -29
  303. package/dist/src/runtime/intrinsic.d.ts.map +1 -1
  304. package/dist/src/runtime/intrinsic.js +1 -11
  305. package/dist/src/runtime/intrinsic.js.map +1 -1
  306. package/dist/src/scheduler.d.ts.map +1 -1
  307. package/dist/src/scheduler.js +38 -14
  308. package/dist/src/scheduler.js.map +1 -1
  309. package/dist/src/stc.d.ts.map +1 -1
  310. package/dist/src/stc.js +2 -0
  311. package/dist/src/stc.js.map +1 -1
  312. package/dist/src/sti.d.ts +7 -6
  313. package/dist/src/sti.d.ts.map +1 -1
  314. package/dist/src/sti.js +1 -1
  315. package/dist/src/sti.js.map +1 -1
  316. package/dist/src/symbols/symbol-slot.test.js +5 -5
  317. package/dist/src/symbols/symbol-slot.test.js.map +1 -1
  318. package/dist/src/test-render.d.ts +31 -0
  319. package/dist/src/test-render.d.ts.map +1 -0
  320. package/dist/src/test-render.js +78 -0
  321. package/dist/src/test-render.js.map +1 -0
  322. package/dist/src/utils.d.ts +1 -1
  323. package/dist/src/utils.d.ts.map +1 -1
  324. package/dist/src/utils.js +40 -28
  325. package/dist/src/utils.js.map +1 -1
  326. package/dist/src/write-output.d.ts +1 -1
  327. package/dist/src/write-output.d.ts.map +1 -1
  328. package/dist/test/babel-e2e.test.d.ts +13 -0
  329. package/dist/test/babel-e2e.test.d.ts.map +1 -0
  330. package/dist/test/babel-e2e.test.js +218 -0
  331. package/dist/test/babel-e2e.test.js.map +1 -0
  332. package/dist/test/children.test.js +5 -7
  333. package/dist/test/children.test.js.map +1 -1
  334. package/dist/test/components/append-file.test.d.ts +1 -1
  335. package/dist/test/components/append-file.test.d.ts.map +1 -1
  336. package/dist/test/components/append-file.test.js +0 -1
  337. package/dist/test/components/append-file.test.js.map +1 -1
  338. package/dist/test/components/block.test.d.ts +1 -1
  339. package/dist/test/components/block.test.d.ts.map +1 -1
  340. package/dist/test/components/block.test.js +4 -6
  341. package/dist/test/components/block.test.js.map +1 -1
  342. package/dist/test/components/copy-file.test.d.ts +1 -1
  343. package/dist/test/components/copy-file.test.d.ts.map +1 -1
  344. package/dist/test/components/copy-file.test.js +1 -2
  345. package/dist/test/components/copy-file.test.js.map +1 -1
  346. package/dist/test/components/declaration.test.js +2 -2
  347. package/dist/test/components/declaration.test.js.map +1 -1
  348. package/dist/test/components/list.test.d.ts +1 -1
  349. package/dist/test/components/list.test.d.ts.map +1 -1
  350. package/dist/test/components/list.test.js +20 -22
  351. package/dist/test/components/list.test.js.map +1 -1
  352. package/dist/test/components/prose.test.d.ts +1 -1
  353. package/dist/test/components/prose.test.d.ts.map +1 -1
  354. package/dist/test/components/prose.test.js +0 -1
  355. package/dist/test/components/prose.test.js.map +1 -1
  356. package/dist/test/components/reference-or-content.test.js +8 -9
  357. package/dist/test/components/reference-or-content.test.js.map +1 -1
  358. package/dist/test/components/source-file.test.d.ts +1 -1
  359. package/dist/test/components/source-file.test.d.ts.map +1 -1
  360. package/dist/test/components/source-file.test.js +5 -4
  361. package/dist/test/components/source-file.test.js.map +1 -1
  362. package/dist/test/components/template-file.test.d.ts +1 -1
  363. package/dist/test/components/template-file.test.d.ts.map +1 -1
  364. package/dist/test/components/template-file.test.js +0 -1
  365. package/dist/test/components/template-file.test.js.map +1 -1
  366. package/dist/test/components/update-file.test.d.ts +1 -1
  367. package/dist/test/components/update-file.test.d.ts.map +1 -1
  368. package/dist/test/components/update-file.test.js +1 -2
  369. package/dist/test/components/update-file.test.js.map +1 -1
  370. package/dist/test/components/wrap.test.d.ts +1 -1
  371. package/dist/test/components/wrap.test.d.ts.map +1 -1
  372. package/dist/test/components/wrap.test.js +3 -5
  373. package/dist/test/components/wrap.test.js.map +1 -1
  374. package/dist/test/control-flow/for.test.d.ts +1 -1
  375. package/dist/test/control-flow/for.test.d.ts.map +1 -1
  376. package/dist/test/control-flow/for.test.js +40 -24
  377. package/dist/test/control-flow/for.test.js.map +1 -1
  378. package/dist/test/control-flow/match.test.d.ts +1 -1
  379. package/dist/test/control-flow/match.test.d.ts.map +1 -1
  380. package/dist/test/control-flow/match.test.js +4 -6
  381. package/dist/test/control-flow/match.test.js.map +1 -1
  382. package/dist/test/control-flow/show.test.d.ts +1 -1
  383. package/dist/test/control-flow/show.test.d.ts.map +1 -1
  384. package/dist/test/control-flow/show.test.js +3 -6
  385. package/dist/test/control-flow/show.test.js.map +1 -1
  386. package/dist/test/lazy-isempty.test.d.ts +1 -1
  387. package/dist/test/lazy-isempty.test.d.ts.map +1 -1
  388. package/dist/test/lazy-isempty.test.js +16 -18
  389. package/dist/test/lazy-isempty.test.js.map +1 -1
  390. package/dist/test/name-policy.test.d.ts +1 -1
  391. package/dist/test/name-policy.test.d.ts.map +1 -1
  392. package/dist/test/name-policy.test.js +0 -1
  393. package/dist/test/name-policy.test.js.map +1 -1
  394. package/dist/test/node.test.d.ts +2 -0
  395. package/dist/test/node.test.d.ts.map +1 -0
  396. package/dist/test/node.test.js +80 -0
  397. package/dist/test/node.test.js.map +1 -0
  398. package/dist/test/output-e2e.test.d.ts +13 -0
  399. package/dist/test/output-e2e.test.d.ts.map +1 -0
  400. package/dist/test/output-e2e.test.js +194 -0
  401. package/dist/test/output-e2e.test.js.map +1 -0
  402. package/dist/test/reactivity/circular-reactives.test.js +6 -6
  403. package/dist/test/reactivity/circular-reactives.test.js.map +1 -1
  404. package/dist/test/reactivity/cleanup.test.js +2 -3
  405. package/dist/test/reactivity/cleanup.test.js.map +1 -1
  406. package/dist/test/reactivity/ref-rendering.test.js +15 -15
  407. package/dist/test/reactivity/ref-rendering.test.js.map +1 -1
  408. package/dist/test/reactivity/test.test.js +15 -15
  409. package/dist/test/reactivity/test.test.js.map +1 -1
  410. package/dist/test/rendering/basic.test.d.ts +1 -1
  411. package/dist/test/rendering/basic.test.d.ts.map +1 -1
  412. package/dist/test/rendering/basic.test.js +0 -1
  413. package/dist/test/rendering/basic.test.js.map +1 -1
  414. package/dist/test/rendering/code.test.d.ts +1 -1
  415. package/dist/test/rendering/code.test.d.ts.map +1 -1
  416. package/dist/test/rendering/code.test.js +0 -1
  417. package/dist/test/rendering/code.test.js.map +1 -1
  418. package/dist/test/rendering/formatting.test.d.ts +1 -1
  419. package/dist/test/rendering/formatting.test.d.ts.map +1 -1
  420. package/dist/test/rendering/formatting.test.js +17 -23
  421. package/dist/test/rendering/formatting.test.js.map +1 -1
  422. package/dist/test/rendering/indent.test.d.ts +1 -1
  423. package/dist/test/rendering/indent.test.d.ts.map +1 -1
  424. package/dist/test/rendering/indent.test.js +0 -1
  425. package/dist/test/rendering/indent.test.js.map +1 -1
  426. package/dist/test/rendering/memoization.test.js +7 -3
  427. package/dist/test/rendering/memoization.test.js.map +1 -1
  428. package/dist/test/rendering/print-render-stack.test.d.ts +1 -1
  429. package/dist/test/rendering/print-render-stack.test.d.ts.map +1 -1
  430. package/dist/test/rendering/print-render-stack.test.js +0 -1
  431. package/dist/test/rendering/print-render-stack.test.js.map +1 -1
  432. package/dist/test/rendering/refkeys.test.d.ts +1 -1
  433. package/dist/test/rendering/refkeys.test.d.ts.map +1 -1
  434. package/dist/test/rendering/refkeys.test.js +0 -1
  435. package/dist/test/rendering/refkeys.test.js.map +1 -1
  436. package/dist/test/rendering/render-output-diagnostics.test.d.ts +2 -0
  437. package/dist/test/rendering/render-output-diagnostics.test.d.ts.map +1 -0
  438. package/dist/test/rendering/render-output-diagnostics.test.js +82 -0
  439. package/dist/test/rendering/render-output-diagnostics.test.js.map +1 -0
  440. package/dist/test/runtime.test.d.ts +11 -0
  441. package/dist/test/runtime.test.d.ts.map +1 -0
  442. package/dist/test/runtime.test.js +385 -0
  443. package/dist/test/runtime.test.js.map +1 -0
  444. package/dist/test/stc.test.d.ts +1 -1
  445. package/dist/test/stc.test.d.ts.map +1 -1
  446. package/dist/test/stc.test.js +0 -1
  447. package/dist/test/stc.test.js.map +1 -1
  448. package/dist/test/tree-test-utils.d.ts +3 -0
  449. package/dist/test/tree-test-utils.d.ts.map +1 -0
  450. package/dist/test/tree-test-utils.js +16 -0
  451. package/dist/test/tree-test-utils.js.map +1 -0
  452. package/dist/test/utils.test.d.ts +1 -1
  453. package/dist/test/utils.test.d.ts.map +1 -1
  454. package/dist/test/utils.test.js +12 -11
  455. package/dist/test/utils.test.js.map +1 -1
  456. package/dist/test/vitest.setup.d.ts +2 -0
  457. package/dist/test/vitest.setup.d.ts.map +1 -0
  458. package/dist/test/vitest.setup.js +2 -0
  459. package/dist/test/vitest.setup.js.map +1 -0
  460. package/dist/testing/devtools-utils.d.ts.map +1 -1
  461. package/dist/testing/devtools-utils.js +1 -1
  462. package/dist/testing/devtools-utils.js.map +1 -1
  463. package/dist/testing/extend-expect.d.ts.map +1 -1
  464. package/dist/testing/extend-expect.js +30 -34
  465. package/dist/testing/extend-expect.js.map +1 -1
  466. package/dist/testing/render.d.ts +7 -9
  467. package/dist/testing/render.d.ts.map +1 -1
  468. package/dist/testing/render.js +7 -17
  469. package/dist/testing/render.js.map +1 -1
  470. package/dist/tsconfig.tsbuildinfo +1 -1
  471. package/docs/api/components/Output.md +0 -3
  472. package/docs/api/components/SourceFile.md +0 -3
  473. package/docs/api/functions/createComment.md +18 -0
  474. package/docs/api/functions/createElement.md +19 -0
  475. package/docs/api/functions/createFragment.md +17 -0
  476. package/docs/api/functions/createTextNode.md +18 -0
  477. package/docs/api/functions/emitDiagnosticForTree.md +19 -0
  478. package/docs/api/functions/ensureIsEmpty.md +1 -1
  479. package/docs/api/functions/getContextForNode.md +18 -0
  480. package/docs/api/functions/getContextForRenderNode.md +4 -4
  481. package/docs/api/functions/getDiagnosticsForTree.md +7 -5
  482. package/docs/api/functions/getRegisteredDiagnosticsForTree.md +18 -0
  483. package/docs/api/functions/index.md +17 -12
  484. package/docs/api/functions/isCustomContext.md +4 -4
  485. package/docs/api/functions/notifyContentState.md +6 -0
  486. package/docs/api/functions/printTree.md +6 -16
  487. package/docs/api/functions/registerDiagnosticsForTree.md +19 -0
  488. package/docs/api/functions/render.md +1 -2
  489. package/docs/api/functions/renderAsync.md +1 -2
  490. package/docs/api/functions/renderTree.md +8 -5
  491. package/docs/api/functions/reportDiagnosticsForTree.md +18 -0
  492. package/docs/api/functions/runInContext.md +28 -0
  493. package/docs/api/functions/sourceFilesForTree.md +6 -16
  494. package/docs/api/index.md +3 -3
  495. package/docs/api/testing/functions/index.md +1 -1
  496. package/docs/api/testing/functions/renderToString.md +1 -1
  497. package/docs/api/types/AlloyNode.md +22 -0
  498. package/docs/api/types/Child.md +1 -1
  499. package/docs/api/types/CommentNode.md +15 -0
  500. package/docs/api/types/Context.md +13 -15
  501. package/docs/api/types/ElementNode.md +18 -0
  502. package/docs/api/types/FragmentNode.md +12 -0
  503. package/docs/api/types/Insertable.md +7 -0
  504. package/docs/api/types/NodeType.md +5 -0
  505. package/docs/api/types/OutputDirectory.md +0 -50
  506. package/docs/api/types/PrintTreeOptions.md +0 -1
  507. package/docs/api/types/RenderTreeOptions.md +7 -0
  508. package/docs/api/types/StiComponentCreator.md +4 -4
  509. package/docs/api/types/StiSignature.md +1 -1
  510. package/docs/api/types/TextNode.md +16 -0
  511. package/docs/api/types/index.md +10 -28
  512. package/docs/api/variables/COMMENT_NODE.md +5 -0
  513. package/docs/api/variables/ELEMENT_NODE.md +11 -0
  514. package/docs/api/variables/FRAGMENT_NODE.md +5 -0
  515. package/docs/api/variables/TEXT_NODE.md +5 -0
  516. package/docs/api/variables/index.md +4 -2
  517. package/docs/formatting.md +1 -1
  518. package/docs/rendering.md +4 -4
  519. package/package.json +6 -6
  520. package/src/components/AccessExpression.test.tsx +5 -13
  521. package/src/components/Output.tsx +2 -1
  522. package/src/components/SourceFile.tsx +1 -1
  523. package/src/content-slot.test.tsx +8 -10
  524. package/src/context/format-options.ts +1 -1
  525. package/src/context.ts +37 -4
  526. package/src/debug/diagnostics.test.tsx +1 -1
  527. package/src/debug/effects.test.tsx +1 -1
  528. package/src/debug/file-streaming.ts +115 -0
  529. package/src/debug/files.test.tsx +15 -11
  530. package/src/debug/index.ts +11 -11
  531. package/src/debug/message-format.test.tsx +32 -19
  532. package/src/debug/render-tree-orphans.test.tsx +10 -19
  533. package/src/debug/render.test.tsx +206 -78
  534. package/src/debug/render.ts +642 -495
  535. package/src/debug/trace-writer.ts +168 -14
  536. package/src/debug/trace.ts +0 -20
  537. package/src/devtools/devtools-protocol.ts +43 -0
  538. package/src/devtools/devtools-server.ts +57 -32
  539. package/src/devtools-entry.browser.ts +5 -0
  540. package/src/devtools-entry.ts +5 -0
  541. package/src/diagnostics.ts +31 -0
  542. package/src/index.ts +66 -2
  543. package/src/jsx-runtime.ts +16 -14
  544. package/src/output-types.ts +47 -0
  545. package/src/reactivity.ts +186 -40
  546. package/src/render/get-string-width.ts +201 -0
  547. package/src/render/index.ts +1 -0
  548. package/src/render/node-context.ts +14 -0
  549. package/src/render/node.ts +442 -0
  550. package/src/render/printer-support.ts +209 -0
  551. package/src/render/printer.ts +817 -0
  552. package/src/render-error.ts +98 -0
  553. package/src/render-output.ts +243 -0
  554. package/src/runtime/component.ts +2 -2
  555. package/src/runtime/create-intrinsic.ts +56 -0
  556. package/src/runtime/fragment.ts +22 -0
  557. package/src/runtime/index.ts +12 -0
  558. package/src/runtime/insert.ts +569 -0
  559. package/src/runtime/intrinsic.ts +14 -70
  560. package/src/scheduler.ts +40 -25
  561. package/src/stc.ts +3 -0
  562. package/src/sti.ts +17 -20
  563. package/src/symbols/symbol-slot.test.tsx +5 -5
  564. package/src/test-render.ts +103 -0
  565. package/src/utils.tsx +55 -37
  566. package/src/write-output.ts +1 -1
  567. package/temp/api-testing.json +390 -14
  568. package/temp/api.json +4320 -4144
  569. package/test/babel-e2e.test.ts +224 -0
  570. package/test/children.test.tsx +4 -7
  571. package/test/components/append-file.test.tsx +0 -1
  572. package/test/components/block.test.tsx +4 -6
  573. package/test/components/copy-file.test.tsx +2 -2
  574. package/test/components/declaration.test.tsx +2 -2
  575. package/test/components/list.test.tsx +20 -29
  576. package/test/components/prose.test.tsx +0 -1
  577. package/test/components/reference-or-content.test.tsx +8 -9
  578. package/test/components/source-file.test.tsx +4 -4
  579. package/test/components/template-file.test.tsx +0 -1
  580. package/test/components/update-file.test.tsx +1 -2
  581. package/test/components/wrap.test.tsx +3 -5
  582. package/test/control-flow/for.test.tsx +39 -31
  583. package/test/control-flow/match.test.tsx +4 -6
  584. package/test/control-flow/show.test.tsx +3 -6
  585. package/test/lazy-isempty.test.tsx +17 -19
  586. package/test/name-policy.test.tsx +0 -1
  587. package/test/node.test.ts +90 -0
  588. package/test/output-e2e.test.ts +198 -0
  589. package/test/reactivity/circular-reactives.test.tsx +6 -6
  590. package/test/reactivity/cleanup.test.tsx +2 -3
  591. package/test/reactivity/ref-rendering.test.tsx +15 -15
  592. package/test/reactivity/test.test.tsx +14 -14
  593. package/test/rendering/basic.test.tsx +0 -1
  594. package/test/rendering/code.test.tsx +0 -1
  595. package/test/rendering/formatting.test.tsx +21 -29
  596. package/test/rendering/indent.test.tsx +0 -1
  597. package/test/rendering/memoization.test.tsx +7 -3
  598. package/test/rendering/print-render-stack.test.tsx +0 -1
  599. package/test/rendering/refkeys.test.tsx +0 -1
  600. package/test/rendering/render-output-diagnostics.test.tsx +120 -0
  601. package/test/runtime.test.ts +448 -0
  602. package/test/stc.test.tsx +0 -1
  603. package/test/tree-test-utils.ts +23 -0
  604. package/test/utils.test.tsx +10 -9
  605. package/test/vitest.setup.ts +1 -0
  606. package/testing/devtools-utils.ts +2 -0
  607. package/testing/extend-expect.ts +32 -47
  608. package/testing/render.ts +17 -21
  609. package/vitest.config.ts +3 -0
  610. package/dist/dev/src/print-hook.js +0 -10
  611. package/dist/dev/src/print-hook.js.map +0 -1
  612. package/dist/dev/src/render.js +0 -872
  613. package/dist/dev/src/render.js.map +0 -1
  614. package/dist/src/print-hook.d.ts +0 -14
  615. package/dist/src/print-hook.d.ts.map +0 -1
  616. package/dist/src/print-hook.js +0 -10
  617. package/dist/src/print-hook.js.map +0 -1
  618. package/dist/src/render.d.ts +0 -155
  619. package/dist/src/render.d.ts.map +0 -1
  620. package/dist/src/render.js +0 -872
  621. package/dist/src/render.js.map +0 -1
  622. package/docs/api/functions/createIntrinsic.md +0 -19
  623. package/docs/api/functions/createRenderTreeHook.md +0 -19
  624. package/docs/api/functions/getElementCache.md +0 -17
  625. package/docs/api/functions/isIntrinsicElement.md +0 -18
  626. package/docs/api/functions/isPrintHook.md +0 -18
  627. package/docs/api/types/AlignIntrinsicElement.md +0 -5
  628. package/docs/api/types/BrIntrinsicElement.md +0 -5
  629. package/docs/api/types/BreakParentIntrinsicElement.md +0 -5
  630. package/docs/api/types/DedentIntrinsicElement.md +0 -5
  631. package/docs/api/types/DedentToRootIntrinsicElement.md +0 -5
  632. package/docs/api/types/ElementCache.md +0 -5
  633. package/docs/api/types/ElementCacheKey.md +0 -5
  634. package/docs/api/types/FillIntrinsicElement.md +0 -5
  635. package/docs/api/types/GroupIntrinsicElement.md +0 -5
  636. package/docs/api/types/HardlineIntrinsicElement.md +0 -5
  637. package/docs/api/types/HbrIntrinsicElement.md +0 -5
  638. package/docs/api/types/IfBreakIntrinsicElement.md +0 -5
  639. package/docs/api/types/IndentIfBreakIntrinsicElement.md +0 -5
  640. package/docs/api/types/IndentIntrinsicElement.md +0 -5
  641. package/docs/api/types/IntrinsicElement.md +0 -5
  642. package/docs/api/types/IntrinsicElementBase.md +0 -9
  643. package/docs/api/types/LbrIntrinsicElement.md +0 -5
  644. package/docs/api/types/LineIntrinsicElement.md +0 -5
  645. package/docs/api/types/LineSuffixBoundaryIntrinsicElement.md +0 -5
  646. package/docs/api/types/LineSuffixIntrinsicElement.md +0 -5
  647. package/docs/api/types/LiterallineIntrinsicElement.md +0 -5
  648. package/docs/api/types/MarkAsRootIntrinsicElement.md +0 -5
  649. package/docs/api/types/PrintHook.md +0 -10
  650. package/docs/api/types/RenderedTextTree.md +0 -5
  651. package/docs/api/types/SbrIntrinsicElement.md +0 -5
  652. package/docs/api/types/SoftlineIntrinsicElement.md +0 -5
  653. package/docs/api/variables/intrinsicElementKey.md +0 -5
  654. package/docs/api/variables/printHookTag.md +0 -7
  655. package/src/print-hook.ts +0 -22
  656. package/src/render.ts +0 -1154
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Throttled file-content streaming for devtools.
3
+ *
4
+ * As the render tree mutates, the debug system finds the enclosing
5
+ * `alloy:source-file` wrapper for the changed node and marks it dirty.
6
+ * When a devtools client is connected, dirty files are re-printed at
7
+ * most once per second so users can watch file content build up during
8
+ * rendering. When devtools is not connected, dirty files are flushed
9
+ * once at the end of render via {@link flushAllDirtyFiles}.
10
+ */
11
+
12
+ import { isDevtoolsConnected } from "../devtools/devtools-server.js";
13
+ import { getContextForNode } from "../render/node-context.js";
14
+ import { ElementNode } from "../render/node.js";
15
+ import { printNodeToString } from "../render/printer.js";
16
+ import { updated as filesUpdated } from "./files.js";
17
+ import { isDebugEnabled } from "./trace.js";
18
+ const DEVTOOLS_FLUSH_INTERVAL_MS = 1000;
19
+ const dirtyFiles = new Set();
20
+ const lastFlushTimeByFile = new Map();
21
+
22
+ /** Find the nearest alloy:source-file ancestor (inclusive). */
23
+ function findSourceFileWrapper(node) {
24
+ let cur = node;
25
+ while (cur !== null) {
26
+ if (cur instanceof ElementNode && cur.localName === "alloy:source-file") {
27
+ return cur;
28
+ }
29
+ cur = cur.parentNode;
30
+ }
31
+ return undefined;
32
+ }
33
+ function getSourceFileMeta(wrapper) {
34
+ const ctx = getContextForNode(wrapper);
35
+ const meta = ctx?.meta;
36
+ if (meta?.sourceFileReady === false) return undefined;
37
+ return meta?.sourceFile;
38
+ }
39
+ function getPrintOptions(wrapper) {
40
+ const ctx = getContextForNode(wrapper);
41
+ const meta = ctx?.meta;
42
+ return meta?.printOptions;
43
+ }
44
+ function flushFile(wrapper) {
45
+ const sf = getSourceFileMeta(wrapper);
46
+ if (!sf) return;
47
+ const printOpts = getPrintOptions(wrapper);
48
+ let contents;
49
+ try {
50
+ contents = printNodeToString(wrapper, {
51
+ printWidth: printOpts?.printWidth ?? 80,
52
+ tabWidth: printOpts?.tabWidth ?? 2,
53
+ useTabs: printOpts?.useTabs ?? false
54
+ }).formatted;
55
+ } catch {
56
+ // Mid-render the tree may be in an inconsistent state — skip this
57
+ // flush attempt and pick it up on the next mutation.
58
+ return;
59
+ }
60
+ if (printOpts?.insertFinalNewLine !== false && !contents.endsWith("\n")) {
61
+ contents += "\n";
62
+ }
63
+ filesUpdated({
64
+ path: sf.path,
65
+ filetype: sf.filetype,
66
+ contents
67
+ });
68
+ lastFlushTimeByFile.set(sf.path, Date.now());
69
+ dirtyFiles.delete(wrapper);
70
+ }
71
+
72
+ /**
73
+ * Mark the source file containing `node` as dirty. When devtools is
74
+ * connected and at least 1s has elapsed since this file was last flushed,
75
+ * print and broadcast its content immediately.
76
+ */
77
+ export function markFileDirtyForNode(node) {
78
+ if (!isDebugEnabled()) return;
79
+ const wrapper = findSourceFileWrapper(node);
80
+ if (!wrapper) return;
81
+ dirtyFiles.add(wrapper);
82
+ if (!isDevtoolsConnected()) return;
83
+ const sf = getSourceFileMeta(wrapper);
84
+ if (!sf) return;
85
+ const last = lastFlushTimeByFile.get(sf.path) ?? 0;
86
+ if (Date.now() - last < DEVTOOLS_FLUSH_INTERVAL_MS) return;
87
+ flushFile(wrapper);
88
+ }
89
+
90
+ /** Flush every dirty file. Called at end of render. */
91
+ export function flushAllDirtyFiles() {
92
+ if (dirtyFiles.size === 0) return;
93
+ for (const wrapper of [...dirtyFiles]) {
94
+ flushFile(wrapper);
95
+ }
96
+ }
97
+
98
+ /** Reset all streaming state. Called when a new render begins. */
99
+ export function reset() {
100
+ dirtyFiles.clear();
101
+ lastFlushTimeByFile.clear();
102
+ }
103
+ //# sourceMappingURL=file-streaming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isDevtoolsConnected","getContextForNode","ElementNode","printNodeToString","updated","filesUpdated","isDebugEnabled","DEVTOOLS_FLUSH_INTERVAL_MS","dirtyFiles","Set","lastFlushTimeByFile","Map","findSourceFileWrapper","node","cur","localName","parentNode","undefined","getSourceFileMeta","wrapper","ctx","meta","sourceFileReady","sourceFile","getPrintOptions","printOptions","flushFile","sf","printOpts","contents","printWidth","tabWidth","useTabs","formatted","insertFinalNewLine","endsWith","path","filetype","set","Date","now","delete","markFileDirtyForNode","add","last","get","flushAllDirtyFiles","size","reset","clear"],"sources":["../../../../src/debug/file-streaming.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -6,7 +6,7 @@ import { Output } from "../components/Output.js";
6
6
  import { SourceDirectory } from "../components/SourceDirectory.js";
7
7
  import { SourceFile } from "../components/SourceFile.js";
8
8
  import { enableDevtools, resetDevtoolsServerForTests } from "../devtools/devtools-server.js";
9
- import { renderAsync } from "../render.js";
9
+ import { renderAsync } from "../render-output.js";
10
10
  let socket;
11
11
  beforeEach(async () => {
12
12
  const server = await enableDevtools({
@@ -63,16 +63,15 @@ it("emits file and directory add/update/remove messages", async () => {
63
63
  type: "directory:added",
64
64
  path: "src"
65
65
  });
66
- expect(initialFiles[2]).toMatchObject({
66
+ expect(initialFiles).toEqual(expect.arrayContaining([expect.objectContaining({
67
67
  type: "file:added",
68
68
  path: "src/index.ts",
69
69
  filetype: "ts"
70
- });
71
- expect(initialFiles[3]).toMatchObject({
70
+ }), expect.objectContaining({
72
71
  type: "file:updated",
73
72
  path: "src/index.ts",
74
73
  content: expect.any(String)
75
- });
74
+ })]));
76
75
  collector.stop();
77
76
  });
78
77
  //# sourceMappingURL=files.test.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["afterEach","beforeEach","expect","it","WebSocket","createMessageCollector","Output","SourceDirectory","SourceFile","enableDevtools","resetDevtoolsServerForTests","renderAsync","socket","server","port","Promise","resolve","reject","once","close","undefined","collector","_$createComponent","children","path","filetype","fileName","import","meta","url","lineNumber","columnNumber","initialMessages","waitForRender","initialFiles","filter","m","type","startsWith","toMatchObject","content","any","String","stop"],"sources":["../../../../src/debug/files.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["afterEach","beforeEach","expect","it","WebSocket","createMessageCollector","Output","SourceDirectory","SourceFile","enableDevtools","resetDevtoolsServerForTests","renderAsync","socket","server","port","Promise","resolve","reject","once","close","undefined","collector","_$createComponent","children","path","filetype","fileName","import","meta","url","lineNumber","columnNumber","initialMessages","waitForRender","initialFiles","filter","m","type","startsWith","toMatchObject","toEqual","arrayContaining","objectContaining","content","any","String","stop"],"sources":["../../../../src/debug/files.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,7 @@ import { assertDevtoolsConnectedForSyncRender, initDevtoolsIfEnabled, isDevtools
2
2
  import { debugContext, debugRender, debugStack, debugTree, debugWatch } from "./cli.js";
3
3
  import { ensureReactivePropertyRef, ensureRef, register, registerRef, reset, track, trigger, update } from "./effects.js";
4
4
  import { recordDirectory, recordFile, reset as resetFiles, updated } from "./files.js";
5
- import { appendCustomContext, appendFragmentChild, appendPrintHook, appendTextNode, beginComponent, complete, error, flushJobsComplete, initialize, prepareMemoNode } from "./render.js";
5
+ import { beginComponent, complete, error, flushJobsComplete, initialize, isRerenderEnabled, nodeAttached, nodeDetached } from "./render.js";
6
6
  import { registerScope, registerSymbol, relocateScope, reset as resetSymbols, unregisterScope, unregisterSymbol } from "./symbols.js";
7
7
  import { trace } from "./trace.js";
8
8
  export { isDevtoolsConnected } from "../devtools/devtools-server.js";
@@ -32,12 +32,10 @@ export const debug = {
32
32
  },
33
33
  render: {
34
34
  initialize,
35
- appendTextNode,
36
- appendCustomContext,
37
- appendPrintHook,
38
- appendFragmentChild,
35
+ nodeAttached,
36
+ nodeDetached,
39
37
  beginComponent,
40
- prepareMemoNode,
38
+ isRerenderEnabled,
41
39
  error,
42
40
  complete,
43
41
  flushJobsComplete
@@ -1 +1 @@
1
- {"version":3,"names":["assertDevtoolsConnectedForSyncRender","initDevtoolsIfEnabled","isDevtoolsEnabled","debugContext","debugRender","debugStack","debugTree","debugWatch","ensureReactivePropertyRef","ensureRef","register","registerRef","reset","track","trigger","update","recordDirectory","recordFile","resetFiles","updated","appendCustomContext","appendFragmentChild","appendPrintHook","appendTextNode","beginComponent","complete","error","flushJobsComplete","initialize","prepareMemoNode","registerScope","registerSymbol","relocateScope","resetSymbols","unregisterScope","unregisterSymbol","trace","isDevtoolsConnected","captureSourceLocation","getRenderNodeId","isConsoleTraceEnabled","isDebugEnabled","TracePhase","debug","component","stack","tree","watch","render","context","effect","files","symbols","phase","cb","triggerIds","Set","prepare","assertReadyForSyncRender"],"sources":["../../../../src/debug/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SACEA,oCAAoC,EACpCC,qBAAqB,EACrBC,iBAAiB,QACZ,gCAAgC;AACvC,SACEC,YAAY,EACZC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,UAAU,QACL,UAAU;AACjB,SACEC,yBAAyB,EACzBC,SAAS,EACTC,QAAQ,EACRC,WAAW,EACXC,KAAK,EACLC,KAAK,EACLC,OAAO,EACPC,MAAM,QACD,cAAc;AACrB,SACEC,eAAe,EACfC,UAAU,EACVL,KAAK,IAAIM,UAAU,EACnBC,OAAO,QACF,YAAY;AACnB,SACEC,mBAAmB,EACnBC,mBAAmB,EACnBC,eAAe,EACfC,cAAc,EACdC,cAAc,EACdC,QAAQ,EACRC,KAAK,EACLC,iBAAiB,EACjBC,UAAU,EACVC,eAAe,QACV,aAAa;AACpB,SACEC,aAAa,EACbC,cAAc,EACdC,aAAa,EACbpB,KAAK,IAAIqB,YAAY,EACrBC,eAAe,EACfC,gBAAgB,QACX,cAAc;AACrB,SAASC,KAAK,QAA6B,YAAY;AAEvD,SAASC,mBAAmB,QAAQ,gCAAgC;AACpE,SAASC,qBAAqB,QAAQ,cAAc;AAMpD,SAASC,eAAe,QAAiC,aAAa;AAOtE,SACEC,qBAAqB,EACrBC,cAAc,EACdvC,iBAAiB,EACjBkC,KAAK,EACLM,UAAU,QAEL,YAAY;;AAEnB;;AAGA,OAAO,MAAMC,KAAK,GAAG;EACnBC,SAAS,EAAE;IACTC,KAAK,EAAExC,UAAU;IACjByC,IAAI,EAAExC,SAAS;IACfyC,KAAK,EAAExC,UAAU;IACjByC,MAAM,EAAE5C,WAAW;IACnB6C,OAAO,EAAE9C;EACX,CAAC;EACD+C,MAAM,EAAE;IACNxC,QAAQ;IACRK,MAAM;IACNJ,WAAW;IACXF,SAAS;IACTD,yBAAyB;IACzBK,KAAK;IACLC,OAAO;IACPF;EACF,CAAC;EACDoC,MAAM,EAAE;IACNpB,UAAU;IACVL,cAAc;IACdH,mBAAmB;IACnBE,eAAe;IACfD,mBAAmB;IACnBG,cAAc;IACdK,eAAe;IACfH,KAAK;IACLD,QAAQ;IACRE;EACF,CAAC;EACDwB,KAAK,EAAE;IACLnC,eAAe;IACfC,UAAU;IACVE,OAAO;IACPP,KAAK,EAAEM;EACT,CAAC;EACDkC,OAAO,EAAE;IACPtB,aAAa;IACbE,aAAa;IACbE,eAAe;IACfH,cAAc;IACdI,gBAAgB;IAChBvB,KAAK,EAAEqB;EACT,CAAC;EACDG,KAAKA,CAACiB,KAAqB,EAAEC,EAAgB,EAAEC,UAAwB,EAAE;IACvEnB,KAAK,CAACiB,KAAK,EAAEC,EAAE,EAAEC,UAAU,IAAI,IAAIC,GAAG,CAAC,CAAC,CAAC;EAC3C,CAAC;EACD,MAAMC,OAAOA,CAAA,EAAkB;IAC7B,MAAMxD,qBAAqB,CAAC,CAAC;EAC/B,CAAC;EACDyD,wBAAwBA,CAAA,EAAS;IAC/B,IAAIxD,iBAAiB,CAAC,CAAC,EAAE;MACvBF,oCAAoC,CAAC,CAAC;IACxC;EACF;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["assertDevtoolsConnectedForSyncRender","initDevtoolsIfEnabled","isDevtoolsEnabled","debugContext","debugRender","debugStack","debugTree","debugWatch","ensureReactivePropertyRef","ensureRef","register","registerRef","reset","track","trigger","update","recordDirectory","recordFile","resetFiles","updated","beginComponent","complete","error","flushJobsComplete","initialize","isRerenderEnabled","nodeAttached","nodeDetached","registerScope","registerSymbol","relocateScope","resetSymbols","unregisterScope","unregisterSymbol","trace","isDevtoolsConnected","captureSourceLocation","getRenderNodeId","isConsoleTraceEnabled","isDebugEnabled","TracePhase","debug","component","stack","tree","watch","render","context","effect","files","symbols","phase","cb","triggerIds","Set","prepare","assertReadyForSyncRender"],"sources":["../../../../src/debug/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SACEA,oCAAoC,EACpCC,qBAAqB,EACrBC,iBAAiB,QACZ,gCAAgC;AACvC,SACEC,YAAY,EACZC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,UAAU,QACL,UAAU;AACjB,SACEC,yBAAyB,EACzBC,SAAS,EACTC,QAAQ,EACRC,WAAW,EACXC,KAAK,EACLC,KAAK,EACLC,OAAO,EACPC,MAAM,QACD,cAAc;AACrB,SACEC,eAAe,EACfC,UAAU,EACVL,KAAK,IAAIM,UAAU,EACnBC,OAAO,QACF,YAAY;AACnB,SACEC,cAAc,EACdC,QAAQ,EACRC,KAAK,EACLC,iBAAiB,EACjBC,UAAU,EACVC,iBAAiB,EACjBC,YAAY,EACZC,YAAY,QACP,aAAa;AACpB,SACEC,aAAa,EACbC,cAAc,EACdC,aAAa,EACblB,KAAK,IAAImB,YAAY,EACrBC,eAAe,EACfC,gBAAgB,QACX,cAAc;AACrB,SAASC,KAAK,QAA6B,YAAY;AAEvD,SAASC,mBAAmB,QAAQ,gCAAgC;AACpE,SAASC,qBAAqB,QAAQ,cAAc;AAMpD,SACEC,eAAe,QAGV,aAAa;AAOpB,SACEC,qBAAqB,EACrBC,cAAc,EACdrC,iBAAiB,EACjBgC,KAAK,EACLM,UAAU,QAEL,YAAY;;AAEnB;;AAGA,OAAO,MAAMC,KAAK,GAAG;EACnBC,SAAS,EAAE;IACTC,KAAK,EAAEtC,UAAU;IACjBuC,IAAI,EAAEtC,SAAS;IACfuC,KAAK,EAAEtC,UAAU;IACjBuC,MAAM,EAAE1C,WAAW;IACnB2C,OAAO,EAAE5C;EACX,CAAC;EACD6C,MAAM,EAAE;IACNtC,QAAQ;IACRK,MAAM;IACNJ,WAAW;IACXF,SAAS;IACTD,yBAAyB;IACzBK,KAAK;IACLC,OAAO;IACPF;EACF,CAAC;EACDkC,MAAM,EAAE;IACNtB,UAAU;IACVE,YAAY;IACZC,YAAY;IACZP,cAAc;IACdK,iBAAiB;IACjBH,KAAK;IACLD,QAAQ;IACRE;EACF,CAAC;EACD0B,KAAK,EAAE;IACLjC,eAAe;IACfC,UAAU;IACVE,OAAO;IACPP,KAAK,EAAEM;EACT,CAAC;EACDgC,OAAO,EAAE;IACPtB,aAAa;IACbE,aAAa;IACbE,eAAe;IACfH,cAAc;IACdI,gBAAgB;IAChBrB,KAAK,EAAEmB;EACT,CAAC;EACDG,KAAKA,CAACiB,KAAqB,EAAEC,EAAgB,EAAEC,UAAwB,EAAE;IACvEnB,KAAK,CAACiB,KAAK,EAAEC,EAAE,EAAEC,UAAU,IAAI,IAAIC,GAAG,CAAC,CAAC,CAAC;EAC3C,CAAC;EACD,MAAMC,OAAOA,CAAA,EAAkB;IAC7B,MAAMtD,qBAAqB,CAAC,CAAC;EAC/B,CAAC;EACDuD,wBAAwBA,CAAA,EAAS;IAC/B,IAAItD,iBAAiB,CAAC,CAAC,EAAE;MACvBF,oCAAoC,CAAC,CAAC;IACxC;EACF;AACF,CAAC","ignoreList":[]}
@@ -17,7 +17,7 @@ import { Scope } from "../components/Scope.js";
17
17
  import { SourceFile } from "../components/SourceFile.js";
18
18
  import { enableDevtools, resetDevtoolsServerForTests } from "../devtools/devtools-server.js";
19
19
  import { effect, ref } from "../reactivity.js";
20
- import { renderAsync } from "../render.js";
20
+ import { renderAsync } from "../render-output.js";
21
21
  import { flushJobsAsync } from "../scheduler.js";
22
22
  import { debug } from "./index.js";
23
23
  let socket;
@@ -50,12 +50,12 @@ afterEach(async () => {
50
50
  describe("subscriptions", () => {
51
51
  it("only receives messages for subscribed channels", async () => {
52
52
  // Subscribe to render only — should NOT see effects, refs, etc.
53
- const collector = await createMessageCollector(socket, ["render"]);
53
+ const collector = await createMessageCollector(socket, ["render", "components"]);
54
54
  await renderAsync(_$createComponent(Output, {
55
55
  children: "hello"
56
56
  }, {
57
57
  fileName: import.meta.url,
58
- lineNumber: 60,
58
+ lineNumber: 63,
59
59
  columnNumber: 23
60
60
  }));
61
61
  const messages = await collector.waitForRender();
@@ -75,7 +75,7 @@ describe("subscriptions", () => {
75
75
  children: "hello"
76
76
  }, {
77
77
  fileName: import.meta.url,
78
- lineNumber: 80,
78
+ lineNumber: 83,
79
79
  columnNumber: 23
80
80
  }));
81
81
  const messages = await collector.waitForRender();
@@ -93,7 +93,7 @@ describe("subscriptions", () => {
93
93
  const collector = await createMessageCollector(socket, ["diagnostics"]);
94
94
  await renderAsync(_$createComponent(Output, {}, {
95
95
  fileName: import.meta.url,
96
- lineNumber: 96,
96
+ lineNumber: 99,
97
97
  columnNumber: 23
98
98
  }));
99
99
  const messages = await collector.waitForRender();
@@ -108,10 +108,10 @@ describe("subscriptions", () => {
108
108
 
109
109
  describe("render:node_added", () => {
110
110
  it("root node has null parent_id and kind 'root'", async () => {
111
- const collector = await createMessageCollector(socket, ["render"]);
111
+ const collector = await createMessageCollector(socket, ["render", "components"]);
112
112
  await renderAsync(_$createComponent(Output, {}, {
113
113
  fileName: import.meta.url,
114
- lineNumber: 111,
114
+ lineNumber: 117,
115
115
  columnNumber: 23
116
116
  }));
117
117
  const messages = await collector.waitForRender();
@@ -125,21 +125,20 @@ describe("render:node_added", () => {
125
125
  seq: expect.any(Number)
126
126
  });
127
127
  });
128
- it("component node has numeric id, parent_id, and name", async () => {
129
- const collector = await createMessageCollector(socket, ["render"]);
128
+ it("component instance has numeric id, parent_id, and name", async () => {
129
+ const collector = await createMessageCollector(socket, ["render", "components"]);
130
130
  await renderAsync(_$createComponent(Output, {}, {
131
131
  fileName: import.meta.url,
132
- lineNumber: 129,
132
+ lineNumber: 138,
133
133
  columnNumber: 23
134
134
  }));
135
135
  const messages = await collector.waitForRender();
136
136
  collector.stop();
137
- const output = messages.find(m => m.type === "render:node_added" && m.name === "Output");
137
+ const output = messages.find(m => m.type === "component:added" && m.name === "Output");
138
138
  expect(output).toMatchObject({
139
- type: "render:node_added",
139
+ type: "component:added",
140
140
  id: expect.any(Number),
141
- parent_id: expect.any(Number),
142
- kind: "component",
141
+ parent_id: null,
143
142
  name: "Output"
144
143
  });
145
144
  });
@@ -149,7 +148,7 @@ describe("render:node_added", () => {
149
148
  children: "hello"
150
149
  }, {
151
150
  fileName: import.meta.url,
152
- lineNumber: 147,
151
+ lineNumber: 155,
153
152
  columnNumber: 23
154
153
  }));
155
154
  const messages = await collector.waitForRender();
@@ -159,25 +158,25 @@ describe("render:node_added", () => {
159
158
  expect(text.value).toBe("hello");
160
159
  expect(text.parent_id).toEqual(expect.any(Number));
161
160
  });
162
- it("non-text node has null value (not undefined)", async () => {
161
+ it("non-text render node has null value (not undefined)", async () => {
163
162
  const collector = await createMessageCollector(socket, ["render"]);
164
163
  await renderAsync(_$createComponent(Output, {
165
164
  children: "hello"
166
165
  }, {
167
166
  fileName: import.meta.url,
168
- lineNumber: 161,
167
+ lineNumber: 169,
169
168
  columnNumber: 23
170
169
  }));
171
170
  const messages = await collector.waitForRender();
172
171
  collector.stop();
173
- const component = messages.find(m => m.type === "render:node_added" && m.kind === "component");
174
- expect(component.value).toBeNull();
172
+ const nonText = messages.find(m => m.type === "render:node_added" && m.kind === "directory");
173
+ expect(nonText.value).toBeNull();
175
174
  });
176
175
  });
177
176
  describe("render:node_removed", () => {
178
177
  it("is emitted when a reactive component removes children", async () => {
179
178
  const show = ref(true);
180
- const collector = await createMessageCollector(socket, ["render"]);
179
+ const collector = await createMessageCollector(socket, ["render", "components"]);
181
180
  function Conditional() {
182
181
  return () => show.value ? "visible" : "";
183
182
  }
@@ -185,13 +184,13 @@ describe("render:node_removed", () => {
185
184
  get children() {
186
185
  return _$createComponent(Conditional, {}, {
187
186
  fileName: import.meta.url,
188
- lineNumber: 183,
187
+ lineNumber: 194,
189
188
  columnNumber: 9
190
189
  });
191
190
  }
192
191
  }, {
193
192
  fileName: import.meta.url,
194
- lineNumber: 182,
193
+ lineNumber: 193,
195
194
  columnNumber: 7
196
195
  }));
197
196
  const renderMessages = await collector.waitForRender();
@@ -224,13 +223,13 @@ describe("render:node_updated", () => {
224
223
  children: item => [item]
225
224
  }, {
226
225
  fileName: import.meta.url,
227
- lineNumber: 217,
226
+ lineNumber: 228,
228
227
  columnNumber: 9
229
228
  });
230
229
  }
231
230
  }, {
232
231
  fileName: import.meta.url,
233
- lineNumber: 216,
232
+ lineNumber: 227,
234
233
  columnNumber: 7
235
234
  }));
236
235
  await collector.waitForRender();
@@ -254,7 +253,7 @@ describe("render:reset", () => {
254
253
  const collector = await createMessageCollector(socket, ["render"]);
255
254
  await renderAsync(_$createComponent(Output, {}, {
256
255
  fileName: import.meta.url,
257
- lineNumber: 240,
256
+ lineNumber: 251,
258
257
  columnNumber: 23
259
258
  }));
260
259
  const messages = await collector.waitForRender();
@@ -270,7 +269,7 @@ describe("render:complete", () => {
270
269
  const collector = await createMessageCollector(socket, ["render"]);
271
270
  await renderAsync(_$createComponent(Output, {}, {
272
271
  fileName: import.meta.url,
273
- lineNumber: 257,
272
+ lineNumber: 268,
274
273
  columnNumber: 23
275
274
  }));
276
275
  const messages = await collector.waitForRender();
@@ -294,7 +293,7 @@ describe("effect:added", () => {
294
293
  children: "hello"
295
294
  }, {
296
295
  fileName: import.meta.url,
297
- lineNumber: 279,
296
+ lineNumber: 290,
298
297
  columnNumber: 23
299
298
  }));
300
299
  const messages = await collector.waitForRender();
@@ -317,7 +316,7 @@ describe("effect:updated", () => {
317
316
  children: "hello"
318
317
  }, {
319
318
  fileName: import.meta.url,
320
- lineNumber: 299,
319
+ lineNumber: 310,
321
320
  columnNumber: 23
322
321
  }));
323
322
  const messages = await collector.waitForRender();
@@ -343,7 +342,7 @@ describe("ref:added", () => {
343
342
  children: "hello"
344
343
  }, {
345
344
  fileName: import.meta.url,
346
- lineNumber: 320,
345
+ lineNumber: 331,
347
346
  columnNumber: 23
348
347
  }));
349
348
  const messages = await collector.waitForRender();
@@ -372,7 +371,7 @@ describe("edge:track and edge:trigger", () => {
372
371
  children: "hello"
373
372
  }, {
374
373
  fileName: import.meta.url,
375
- lineNumber: 345,
374
+ lineNumber: 356,
376
375
  columnNumber: 23
377
376
  }));
378
377
  const messages = await collector.waitForRender();
@@ -406,19 +405,19 @@ describe("symbol:added", () => {
406
405
  children: "foo content"
407
406
  }, {
408
407
  fileName: import.meta.url,
409
- lineNumber: 374,
408
+ lineNumber: 385,
410
409
  columnNumber: 11
411
410
  });
412
411
  }
413
412
  }, {
414
413
  fileName: import.meta.url,
415
- lineNumber: 373,
414
+ lineNumber: 384,
416
415
  columnNumber: 9
417
416
  });
418
417
  }
419
418
  }, {
420
419
  fileName: import.meta.url,
421
- lineNumber: 372,
420
+ lineNumber: 383,
422
421
  columnNumber: 7
423
422
  }));
424
423
  const messages = await collector.waitForRender();
@@ -458,13 +457,13 @@ describe("scope:added", () => {
458
457
  children: "content"
459
458
  }, {
460
459
  fileName: import.meta.url,
461
- lineNumber: 412,
460
+ lineNumber: 423,
462
461
  columnNumber: 9
463
462
  });
464
463
  }
465
464
  }, {
466
465
  fileName: import.meta.url,
467
- lineNumber: 411,
466
+ lineNumber: 422,
468
467
  columnNumber: 7
469
468
  }));
470
469
  const messages = await collector.waitForRender();
@@ -500,13 +499,13 @@ describe("file:added", () => {
500
499
  children: "content"
501
500
  }, {
502
501
  fileName: import.meta.url,
503
- lineNumber: 444,
502
+ lineNumber: 455,
504
503
  columnNumber: 9
505
504
  });
506
505
  }
507
506
  }, {
508
507
  fileName: import.meta.url,
509
- lineNumber: 443,
508
+ lineNumber: 454,
510
509
  columnNumber: 7
511
510
  }));
512
511
  const messages = await collector.waitForRender();
@@ -535,7 +534,7 @@ describe("directory:added", () => {
535
534
  children: "hello"
536
535
  }, {
537
536
  fileName: import.meta.url,
538
- lineNumber: 473,
537
+ lineNumber: 484,
539
538
  columnNumber: 23
540
539
  }));
541
540
  const messages = await collector.waitForRender();
@@ -564,7 +563,7 @@ describe("scheduler:job", () => {
564
563
  children: "hello"
565
564
  }, {
566
565
  fileName: import.meta.url,
567
- lineNumber: 501,
566
+ lineNumber: 512,
568
567
  columnNumber: 23
569
568
  }));
570
569
  const messages = await collector.waitForRender();
@@ -596,7 +595,7 @@ describe("effect:lifecycle", () => {
596
595
  children: "hello"
597
596
  }, {
598
597
  fileName: import.meta.url,
599
- lineNumber: 529,
598
+ lineNumber: 540,
600
599
  columnNumber: 23
601
600
  }));
602
601
  const messages = await collector.waitForRender();
@@ -636,7 +635,7 @@ describe("diagnostics:report", () => {
636
635
  // Render to get a completion signal for the collector
637
636
  await renderAsync(_$createComponent(Output, {}, {
638
637
  fileName: import.meta.url,
639
- lineNumber: 571,
638
+ lineNumber: 582,
640
639
  columnNumber: 23
641
640
  }));
642
641
  const messages = await collector.waitForRender();
@@ -672,7 +671,7 @@ describe("render:error", () => {
672
671
  // Render to get a completion signal
673
672
  await renderAsync(_$createComponent(Output, {}, {
674
673
  fileName: import.meta.url,
675
- lineNumber: 603,
674
+ lineNumber: 614,
676
675
  columnNumber: 23
677
676
  }));
678
677
  const messages = await collector.waitForRender();
@@ -705,13 +704,13 @@ describe("flushJobs:complete", () => {
705
704
  children: item => [item]
706
705
  }, {
707
706
  fileName: import.meta.url,
708
- lineNumber: 632,
707
+ lineNumber: 643,
709
708
  columnNumber: 9
710
709
  });
711
710
  }
712
711
  }, {
713
712
  fileName: import.meta.url,
714
- lineNumber: 631,
713
+ lineNumber: 642,
715
714
  columnNumber: 7
716
715
  }));
717
716
  await collector.waitForRender();
@@ -763,12 +762,12 @@ describe("debugger:info", () => {
763
762
 
764
763
  describe("null vs undefined contract", () => {
765
764
  it("nullable fields arrive as null (not undefined or missing)", async () => {
766
- const collector = await createMessageCollector(socket, ["render"]);
765
+ const collector = await createMessageCollector(socket, ["render", "components"]);
767
766
  await renderAsync(_$createComponent(Output, {
768
767
  children: "hello"
769
768
  }, {
770
769
  fileName: import.meta.url,
771
- lineNumber: 695,
770
+ lineNumber: 709,
772
771
  columnNumber: 23
773
772
  }));
774
773
  const messages = await collector.waitForRender();
@@ -780,11 +779,10 @@ describe("null vs undefined contract", () => {
780
779
  expect(root.parent_id).toBeNull();
781
780
  expect("parent_id" in root).toBe(true);
782
781
 
783
- // Component node: value should be null, not undefined
784
- const component = messages.find(m => m.type === "render:node_added" && m.kind === "component");
782
+ // Component facts are not render nodes.
783
+ const component = messages.find(m => m.type === "component:added" && m.name === "Output");
785
784
  expect(component).toBeDefined();
786
- expect(component.value).toBeNull();
787
- expect("value" in component).toBe(true);
785
+ expect(component.parent_id).toBeNull();
788
786
 
789
787
  // source_file is nullable
790
788
  expect("source_file" in root).toBe(true);
@@ -795,7 +793,7 @@ describe("null vs undefined contract", () => {
795
793
  children: "hello"
796
794
  }, {
797
795
  fileName: import.meta.url,
798
- lineNumber: 723,
796
+ lineNumber: 736,
799
797
  columnNumber: 23
800
798
  }));
801
799
  const messages = await collector.waitForRender();
@@ -822,7 +820,7 @@ describe("seq ordering", () => {
822
820
  children: "hello"
823
821
  }, {
824
822
  fileName: import.meta.url,
825
- lineNumber: 748,
823
+ lineNumber: 761,
826
824
  columnNumber: 23
827
825
  }));
828
826
  const messages = await collector.waitForRender();