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

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 (506) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/dev/src/components/AccessExpression.test.js +1 -1
  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 +1 -1
  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 +1 -1
  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/components/block.test.js +1 -1
  88. package/dist/dev/test/components/block.test.js.map +1 -1
  89. package/dist/dev/test/components/copy-file.test.js +7 -7
  90. package/dist/dev/test/components/copy-file.test.js.map +1 -1
  91. package/dist/dev/test/components/update-file.test.js +1 -1
  92. package/dist/dev/test/components/update-file.test.js.map +1 -1
  93. package/dist/dev/test/components/wrap.test.js +1 -1
  94. package/dist/dev/test/components/wrap.test.js.map +1 -1
  95. package/dist/dev/test/control-flow/match.test.js +1 -1
  96. package/dist/dev/test/control-flow/match.test.js.map +1 -1
  97. package/dist/dev/test/control-flow/show.test.js +1 -1
  98. package/dist/dev/test/control-flow/show.test.js.map +1 -1
  99. package/dist/dev/test/lazy-isempty.test.js +6 -6
  100. package/dist/dev/test/lazy-isempty.test.js.map +1 -1
  101. package/dist/dev/test/node.test.js +80 -0
  102. package/dist/dev/test/node.test.js.map +1 -0
  103. package/dist/dev/test/output-e2e.test.js +194 -0
  104. package/dist/dev/test/output-e2e.test.js.map +1 -0
  105. package/dist/dev/test/reactivity/circular-reactives.test.js +1 -1
  106. package/dist/dev/test/reactivity/circular-reactives.test.js.map +1 -1
  107. package/dist/dev/test/reactivity/cleanup.test.js +1 -1
  108. package/dist/dev/test/reactivity/cleanup.test.js.map +1 -1
  109. package/dist/dev/test/rendering/memoization.test.js +6 -1
  110. package/dist/dev/test/rendering/memoization.test.js.map +1 -1
  111. package/dist/dev/test/rendering/render-output-diagnostics.test.js +102 -0
  112. package/dist/dev/test/rendering/render-output-diagnostics.test.js.map +1 -0
  113. package/dist/dev/test/runtime.test.js +385 -0
  114. package/dist/dev/test/runtime.test.js.map +1 -0
  115. package/dist/dev/test/tree-test-utils.js +16 -0
  116. package/dist/dev/test/tree-test-utils.js.map +1 -0
  117. package/dist/dev/test/utils.test.js +1 -1
  118. package/dist/dev/test/utils.test.js.map +1 -1
  119. package/dist/dev/testing/devtools-utils.js +1 -1
  120. package/dist/dev/testing/devtools-utils.js.map +1 -1
  121. package/dist/dev/testing/extend-expect.js +7 -33
  122. package/dist/dev/testing/extend-expect.js.map +1 -1
  123. package/dist/dev/testing/render.js +7 -17
  124. package/dist/dev/testing/render.js.map +1 -1
  125. package/dist/devtools/index.html +17 -17
  126. package/dist/src/components/AccessExpression.test.js +1 -1
  127. package/dist/src/components/AccessExpression.test.js.map +1 -1
  128. package/dist/src/components/Output.d.ts +1 -1
  129. package/dist/src/components/Output.d.ts.map +1 -1
  130. package/dist/src/components/Output.js +2 -1
  131. package/dist/src/components/Output.js.map +1 -1
  132. package/dist/src/components/ReferenceOrContent.d.ts +1 -1
  133. package/dist/src/components/ReferenceOrContent.d.ts.map +1 -1
  134. package/dist/src/components/SourceFile.d.ts +1 -1
  135. package/dist/src/components/SourceFile.d.ts.map +1 -1
  136. package/dist/src/components/SourceFile.js.map +1 -1
  137. package/dist/src/content-slot.test.js +1 -1
  138. package/dist/src/content-slot.test.js.map +1 -1
  139. package/dist/src/context/format-options.d.ts +1 -1
  140. package/dist/src/context/format-options.d.ts.map +1 -1
  141. package/dist/src/context.d.ts +9 -1
  142. package/dist/src/context.d.ts.map +1 -1
  143. package/dist/src/context.js +30 -3
  144. package/dist/src/context.js.map +1 -1
  145. package/dist/src/debug/diagnostics.test.js +1 -1
  146. package/dist/src/debug/diagnostics.test.js.map +1 -1
  147. package/dist/src/debug/effects.test.js +1 -1
  148. package/dist/src/debug/effects.test.js.map +1 -1
  149. package/dist/src/debug/file-streaming.d.ts +22 -0
  150. package/dist/src/debug/file-streaming.d.ts.map +1 -0
  151. package/dist/src/debug/file-streaming.js +103 -0
  152. package/dist/src/debug/file-streaming.js.map +1 -0
  153. package/dist/src/debug/files.test.js +4 -5
  154. package/dist/src/debug/files.test.js.map +1 -1
  155. package/dist/src/debug/index.d.ts +5 -7
  156. package/dist/src/debug/index.d.ts.map +1 -1
  157. package/dist/src/debug/index.js +4 -6
  158. package/dist/src/debug/index.js.map +1 -1
  159. package/dist/src/debug/message-format.test.js +16 -18
  160. package/dist/src/debug/message-format.test.js.map +1 -1
  161. package/dist/src/debug/render-tree-orphans.test.js +8 -18
  162. package/dist/src/debug/render-tree-orphans.test.js.map +1 -1
  163. package/dist/src/debug/render.d.ts +71 -21
  164. package/dist/src/debug/render.d.ts.map +1 -1
  165. package/dist/src/debug/render.js +529 -352
  166. package/dist/src/debug/render.js.map +1 -1
  167. package/dist/src/debug/render.test.js +137 -74
  168. package/dist/src/debug/render.test.js.map +1 -1
  169. package/dist/src/debug/trace-writer.d.ts +6 -1
  170. package/dist/src/debug/trace-writer.d.ts.map +1 -1
  171. package/dist/src/debug/trace-writer.js +127 -15
  172. package/dist/src/debug/trace-writer.js.map +1 -1
  173. package/dist/src/debug/trace.d.ts +0 -36
  174. package/dist/src/debug/trace.d.ts.map +1 -1
  175. package/dist/src/debug/trace.js +0 -36
  176. package/dist/src/debug/trace.js.map +1 -1
  177. package/dist/src/devtools/devtools-protocol.d.ts +34 -1
  178. package/dist/src/devtools/devtools-protocol.d.ts.map +1 -1
  179. package/dist/src/devtools/devtools-server.d.ts.map +1 -1
  180. package/dist/src/devtools/devtools-server.js +55 -32
  181. package/dist/src/devtools/devtools-server.js.map +1 -1
  182. package/dist/src/devtools-entry.browser.d.ts +1 -1
  183. package/dist/src/devtools-entry.browser.d.ts.map +1 -1
  184. package/dist/src/devtools-entry.browser.js.map +1 -1
  185. package/dist/src/devtools-entry.d.ts +1 -1
  186. package/dist/src/devtools-entry.d.ts.map +1 -1
  187. package/dist/src/devtools-entry.js.map +1 -1
  188. package/dist/src/diagnostics.d.ts +4 -0
  189. package/dist/src/diagnostics.d.ts.map +1 -1
  190. package/dist/src/diagnostics.js +19 -1
  191. package/dist/src/diagnostics.js.map +1 -1
  192. package/dist/src/index.d.ts +5 -2
  193. package/dist/src/index.d.ts.map +1 -1
  194. package/dist/src/index.js +5 -2
  195. package/dist/src/index.js.map +1 -1
  196. package/dist/src/jsx-runtime.d.ts +13 -4
  197. package/dist/src/jsx-runtime.d.ts.map +1 -1
  198. package/dist/src/jsx-runtime.js +14 -8
  199. package/dist/src/jsx-runtime.js.map +1 -1
  200. package/dist/src/output-types.d.ts +40 -0
  201. package/dist/src/output-types.d.ts.map +1 -0
  202. package/dist/src/output-types.js +2 -0
  203. package/dist/src/output-types.js.map +1 -0
  204. package/dist/src/reactivity.d.ts +49 -18
  205. package/dist/src/reactivity.d.ts.map +1 -1
  206. package/dist/src/reactivity.js +155 -13
  207. package/dist/src/reactivity.js.map +1 -1
  208. package/dist/src/render/get-string-width.d.ts +19 -0
  209. package/dist/src/render/get-string-width.d.ts.map +1 -0
  210. package/dist/src/render/get-string-width.js +61 -0
  211. package/dist/src/render/get-string-width.js.map +1 -0
  212. package/dist/src/render/index.d.ts +2 -0
  213. package/dist/src/render/index.d.ts.map +1 -0
  214. package/dist/src/render/index.js +2 -0
  215. package/dist/src/render/index.js.map +1 -0
  216. package/dist/src/render/node-context.d.ts +5 -0
  217. package/dist/src/render/node-context.d.ts.map +1 -0
  218. package/dist/src/render/node-context.js +7 -0
  219. package/dist/src/render/node-context.js.map +1 -0
  220. package/dist/src/render/node.d.ts +146 -0
  221. package/dist/src/render/node.d.ts.map +1 -0
  222. package/dist/src/render/node.js +386 -0
  223. package/dist/src/render/node.js.map +1 -0
  224. package/dist/src/render/printer-support.d.ts +50 -0
  225. package/dist/src/render/printer-support.d.ts.map +1 -0
  226. package/dist/src/render/printer-support.js +180 -0
  227. package/dist/src/render/printer-support.js.map +1 -0
  228. package/dist/src/render/printer.d.ts +35 -0
  229. package/dist/src/render/printer.d.ts.map +1 -0
  230. package/dist/src/render/printer.js +797 -0
  231. package/dist/src/render/printer.js.map +1 -0
  232. package/dist/src/render-error.d.ts +4 -0
  233. package/dist/src/render-error.d.ts.map +1 -0
  234. package/dist/src/render-error.js +79 -0
  235. package/dist/src/render-error.js.map +1 -0
  236. package/dist/src/render-output.d.ts +42 -0
  237. package/dist/src/render-output.d.ts.map +1 -0
  238. package/dist/src/render-output.js +209 -0
  239. package/dist/src/render-output.js.map +1 -0
  240. package/dist/src/runtime/component.d.ts +2 -2
  241. package/dist/src/runtime/component.d.ts.map +1 -1
  242. package/dist/src/runtime/create-intrinsic.d.ts +28 -0
  243. package/dist/src/runtime/create-intrinsic.d.ts.map +1 -0
  244. package/dist/src/runtime/create-intrinsic.js +53 -0
  245. package/dist/src/runtime/create-intrinsic.js.map +1 -0
  246. package/dist/src/runtime/fragment.d.ts +16 -0
  247. package/dist/src/runtime/fragment.d.ts.map +1 -0
  248. package/dist/src/runtime/fragment.js +21 -0
  249. package/dist/src/runtime/fragment.js.map +1 -0
  250. package/dist/src/runtime/index.d.ts +12 -0
  251. package/dist/src/runtime/index.d.ts.map +1 -0
  252. package/dist/src/runtime/index.js +13 -0
  253. package/dist/src/runtime/index.js.map +1 -0
  254. package/dist/src/runtime/insert.d.ts +29 -0
  255. package/dist/src/runtime/insert.d.ts.map +1 -0
  256. package/dist/src/runtime/insert.js +453 -0
  257. package/dist/src/runtime/insert.js.map +1 -0
  258. package/dist/src/runtime/intrinsic.d.ts +12 -29
  259. package/dist/src/runtime/intrinsic.d.ts.map +1 -1
  260. package/dist/src/runtime/intrinsic.js +1 -11
  261. package/dist/src/runtime/intrinsic.js.map +1 -1
  262. package/dist/src/scheduler.d.ts.map +1 -1
  263. package/dist/src/scheduler.js +38 -14
  264. package/dist/src/scheduler.js.map +1 -1
  265. package/dist/src/stc.d.ts.map +1 -1
  266. package/dist/src/stc.js +2 -0
  267. package/dist/src/stc.js.map +1 -1
  268. package/dist/src/sti.d.ts +7 -6
  269. package/dist/src/sti.d.ts.map +1 -1
  270. package/dist/src/sti.js +1 -1
  271. package/dist/src/sti.js.map +1 -1
  272. package/dist/src/symbols/symbol-slot.test.js +1 -1
  273. package/dist/src/symbols/symbol-slot.test.js.map +1 -1
  274. package/dist/src/test-render.d.ts +31 -0
  275. package/dist/src/test-render.d.ts.map +1 -0
  276. package/dist/src/test-render.js +78 -0
  277. package/dist/src/test-render.js.map +1 -0
  278. package/dist/src/utils.d.ts +1 -1
  279. package/dist/src/utils.d.ts.map +1 -1
  280. package/dist/src/utils.js +40 -28
  281. package/dist/src/utils.js.map +1 -1
  282. package/dist/src/write-output.d.ts +1 -1
  283. package/dist/src/write-output.d.ts.map +1 -1
  284. package/dist/test/babel-e2e.test.d.ts +13 -0
  285. package/dist/test/babel-e2e.test.d.ts.map +1 -0
  286. package/dist/test/babel-e2e.test.js +218 -0
  287. package/dist/test/babel-e2e.test.js.map +1 -0
  288. package/dist/test/components/block.test.js +1 -1
  289. package/dist/test/components/block.test.js.map +1 -1
  290. package/dist/test/components/copy-file.test.d.ts.map +1 -1
  291. package/dist/test/components/copy-file.test.js +1 -1
  292. package/dist/test/components/copy-file.test.js.map +1 -1
  293. package/dist/test/components/update-file.test.js +1 -1
  294. package/dist/test/components/update-file.test.js.map +1 -1
  295. package/dist/test/components/wrap.test.js +1 -1
  296. package/dist/test/components/wrap.test.js.map +1 -1
  297. package/dist/test/control-flow/match.test.js +1 -1
  298. package/dist/test/control-flow/match.test.js.map +1 -1
  299. package/dist/test/control-flow/show.test.js +1 -1
  300. package/dist/test/control-flow/show.test.js.map +1 -1
  301. package/dist/test/lazy-isempty.test.js +6 -6
  302. package/dist/test/lazy-isempty.test.js.map +1 -1
  303. package/dist/test/node.test.d.ts +2 -0
  304. package/dist/test/node.test.d.ts.map +1 -0
  305. package/dist/test/node.test.js +80 -0
  306. package/dist/test/node.test.js.map +1 -0
  307. package/dist/test/output-e2e.test.d.ts +13 -0
  308. package/dist/test/output-e2e.test.d.ts.map +1 -0
  309. package/dist/test/output-e2e.test.js +194 -0
  310. package/dist/test/output-e2e.test.js.map +1 -0
  311. package/dist/test/reactivity/circular-reactives.test.js +1 -1
  312. package/dist/test/reactivity/circular-reactives.test.js.map +1 -1
  313. package/dist/test/reactivity/cleanup.test.js +1 -1
  314. package/dist/test/reactivity/cleanup.test.js.map +1 -1
  315. package/dist/test/rendering/memoization.test.js +6 -1
  316. package/dist/test/rendering/memoization.test.js.map +1 -1
  317. package/dist/test/rendering/render-output-diagnostics.test.d.ts +2 -0
  318. package/dist/test/rendering/render-output-diagnostics.test.d.ts.map +1 -0
  319. package/dist/test/rendering/render-output-diagnostics.test.js +82 -0
  320. package/dist/test/rendering/render-output-diagnostics.test.js.map +1 -0
  321. package/dist/test/runtime.test.d.ts +11 -0
  322. package/dist/test/runtime.test.d.ts.map +1 -0
  323. package/dist/test/runtime.test.js +385 -0
  324. package/dist/test/runtime.test.js.map +1 -0
  325. package/dist/test/tree-test-utils.d.ts +3 -0
  326. package/dist/test/tree-test-utils.d.ts.map +1 -0
  327. package/dist/test/tree-test-utils.js +16 -0
  328. package/dist/test/tree-test-utils.js.map +1 -0
  329. package/dist/test/utils.test.js +1 -1
  330. package/dist/test/utils.test.js.map +1 -1
  331. package/dist/testing/devtools-utils.d.ts.map +1 -1
  332. package/dist/testing/devtools-utils.js +1 -1
  333. package/dist/testing/devtools-utils.js.map +1 -1
  334. package/dist/testing/extend-expect.d.ts.map +1 -1
  335. package/dist/testing/extend-expect.js +7 -33
  336. package/dist/testing/extend-expect.js.map +1 -1
  337. package/dist/testing/render.d.ts +7 -9
  338. package/dist/testing/render.d.ts.map +1 -1
  339. package/dist/testing/render.js +7 -17
  340. package/dist/testing/render.js.map +1 -1
  341. package/dist/tsconfig.tsbuildinfo +1 -1
  342. package/docs/api/components/Output.md +0 -3
  343. package/docs/api/components/SourceFile.md +0 -3
  344. package/docs/api/functions/createComment.md +18 -0
  345. package/docs/api/functions/createElement.md +19 -0
  346. package/docs/api/functions/createFragment.md +17 -0
  347. package/docs/api/functions/createTextNode.md +18 -0
  348. package/docs/api/functions/emitDiagnosticForTree.md +19 -0
  349. package/docs/api/functions/ensureIsEmpty.md +1 -1
  350. package/docs/api/functions/getContextForNode.md +18 -0
  351. package/docs/api/functions/getContextForRenderNode.md +4 -4
  352. package/docs/api/functions/getDiagnosticsForTree.md +7 -5
  353. package/docs/api/functions/getRegisteredDiagnosticsForTree.md +18 -0
  354. package/docs/api/functions/index.md +17 -12
  355. package/docs/api/functions/isCustomContext.md +4 -4
  356. package/docs/api/functions/notifyContentState.md +6 -0
  357. package/docs/api/functions/printTree.md +6 -16
  358. package/docs/api/functions/registerDiagnosticsForTree.md +19 -0
  359. package/docs/api/functions/render.md +1 -2
  360. package/docs/api/functions/renderAsync.md +1 -2
  361. package/docs/api/functions/renderTree.md +8 -5
  362. package/docs/api/functions/reportDiagnosticsForTree.md +18 -0
  363. package/docs/api/functions/runInContext.md +28 -0
  364. package/docs/api/functions/sourceFilesForTree.md +6 -16
  365. package/docs/api/index.md +3 -3
  366. package/docs/api/testing/functions/index.md +1 -1
  367. package/docs/api/testing/functions/renderToString.md +1 -1
  368. package/docs/api/types/AlloyNode.md +22 -0
  369. package/docs/api/types/Child.md +1 -1
  370. package/docs/api/types/CommentNode.md +15 -0
  371. package/docs/api/types/Context.md +13 -15
  372. package/docs/api/types/ElementNode.md +18 -0
  373. package/docs/api/types/FragmentNode.md +12 -0
  374. package/docs/api/types/Insertable.md +7 -0
  375. package/docs/api/types/NodeType.md +5 -0
  376. package/docs/api/types/OutputDirectory.md +0 -50
  377. package/docs/api/types/PrintTreeOptions.md +0 -1
  378. package/docs/api/types/RenderTreeOptions.md +7 -0
  379. package/docs/api/types/StiComponentCreator.md +4 -4
  380. package/docs/api/types/StiSignature.md +1 -1
  381. package/docs/api/types/TextNode.md +16 -0
  382. package/docs/api/types/index.md +10 -28
  383. package/docs/api/variables/COMMENT_NODE.md +5 -0
  384. package/docs/api/variables/ELEMENT_NODE.md +11 -0
  385. package/docs/api/variables/FRAGMENT_NODE.md +5 -0
  386. package/docs/api/variables/TEXT_NODE.md +5 -0
  387. package/docs/api/variables/index.md +4 -2
  388. package/docs/formatting.md +1 -1
  389. package/docs/rendering.md +4 -4
  390. package/package.json +6 -6
  391. package/src/components/AccessExpression.test.tsx +1 -1
  392. package/src/components/Output.tsx +2 -1
  393. package/src/components/SourceFile.tsx +1 -1
  394. package/src/content-slot.test.tsx +1 -1
  395. package/src/context/format-options.ts +1 -1
  396. package/src/context.ts +37 -4
  397. package/src/debug/diagnostics.test.tsx +1 -1
  398. package/src/debug/effects.test.tsx +1 -1
  399. package/src/debug/file-streaming.ts +115 -0
  400. package/src/debug/files.test.tsx +15 -11
  401. package/src/debug/index.ts +11 -11
  402. package/src/debug/message-format.test.tsx +32 -19
  403. package/src/debug/render-tree-orphans.test.tsx +10 -19
  404. package/src/debug/render.test.tsx +206 -78
  405. package/src/debug/render.ts +642 -495
  406. package/src/debug/trace-writer.ts +168 -14
  407. package/src/debug/trace.ts +0 -20
  408. package/src/devtools/devtools-protocol.ts +43 -0
  409. package/src/devtools/devtools-server.ts +57 -32
  410. package/src/devtools-entry.browser.ts +5 -0
  411. package/src/devtools-entry.ts +5 -0
  412. package/src/diagnostics.ts +31 -0
  413. package/src/index.ts +66 -2
  414. package/src/jsx-runtime.ts +16 -14
  415. package/src/output-types.ts +47 -0
  416. package/src/reactivity.ts +186 -40
  417. package/src/render/get-string-width.ts +201 -0
  418. package/src/render/index.ts +1 -0
  419. package/src/render/node-context.ts +14 -0
  420. package/src/render/node.ts +442 -0
  421. package/src/render/printer-support.ts +209 -0
  422. package/src/render/printer.ts +817 -0
  423. package/src/render-error.ts +98 -0
  424. package/src/render-output.ts +243 -0
  425. package/src/runtime/component.ts +2 -2
  426. package/src/runtime/create-intrinsic.ts +56 -0
  427. package/src/runtime/fragment.ts +22 -0
  428. package/src/runtime/index.ts +12 -0
  429. package/src/runtime/insert.ts +569 -0
  430. package/src/runtime/intrinsic.ts +14 -70
  431. package/src/scheduler.ts +40 -25
  432. package/src/stc.ts +3 -0
  433. package/src/sti.ts +17 -20
  434. package/src/symbols/symbol-slot.test.tsx +1 -1
  435. package/src/test-render.ts +103 -0
  436. package/src/utils.tsx +55 -37
  437. package/src/write-output.ts +1 -1
  438. package/temp/api-testing.json +390 -14
  439. package/temp/api.json +4320 -4144
  440. package/test/babel-e2e.test.ts +224 -0
  441. package/test/components/block.test.tsx +1 -1
  442. package/test/components/copy-file.test.tsx +2 -1
  443. package/test/components/update-file.test.tsx +1 -1
  444. package/test/components/wrap.test.tsx +1 -1
  445. package/test/control-flow/match.test.tsx +1 -1
  446. package/test/control-flow/show.test.tsx +1 -1
  447. package/test/lazy-isempty.test.tsx +6 -6
  448. package/test/node.test.ts +90 -0
  449. package/test/output-e2e.test.ts +198 -0
  450. package/test/reactivity/circular-reactives.test.tsx +1 -1
  451. package/test/reactivity/cleanup.test.tsx +1 -1
  452. package/test/rendering/memoization.test.tsx +6 -1
  453. package/test/rendering/render-output-diagnostics.test.tsx +120 -0
  454. package/test/runtime.test.ts +448 -0
  455. package/test/tree-test-utils.ts +23 -0
  456. package/test/utils.test.tsx +1 -1
  457. package/testing/devtools-utils.ts +2 -0
  458. package/testing/extend-expect.ts +8 -46
  459. package/testing/render.ts +17 -21
  460. package/dist/dev/src/print-hook.js +0 -10
  461. package/dist/dev/src/print-hook.js.map +0 -1
  462. package/dist/dev/src/render.js +0 -872
  463. package/dist/dev/src/render.js.map +0 -1
  464. package/dist/src/print-hook.d.ts +0 -14
  465. package/dist/src/print-hook.d.ts.map +0 -1
  466. package/dist/src/print-hook.js +0 -10
  467. package/dist/src/print-hook.js.map +0 -1
  468. package/dist/src/render.d.ts +0 -155
  469. package/dist/src/render.d.ts.map +0 -1
  470. package/dist/src/render.js +0 -872
  471. package/dist/src/render.js.map +0 -1
  472. package/docs/api/functions/createIntrinsic.md +0 -19
  473. package/docs/api/functions/createRenderTreeHook.md +0 -19
  474. package/docs/api/functions/getElementCache.md +0 -17
  475. package/docs/api/functions/isIntrinsicElement.md +0 -18
  476. package/docs/api/functions/isPrintHook.md +0 -18
  477. package/docs/api/types/AlignIntrinsicElement.md +0 -5
  478. package/docs/api/types/BrIntrinsicElement.md +0 -5
  479. package/docs/api/types/BreakParentIntrinsicElement.md +0 -5
  480. package/docs/api/types/DedentIntrinsicElement.md +0 -5
  481. package/docs/api/types/DedentToRootIntrinsicElement.md +0 -5
  482. package/docs/api/types/ElementCache.md +0 -5
  483. package/docs/api/types/ElementCacheKey.md +0 -5
  484. package/docs/api/types/FillIntrinsicElement.md +0 -5
  485. package/docs/api/types/GroupIntrinsicElement.md +0 -5
  486. package/docs/api/types/HardlineIntrinsicElement.md +0 -5
  487. package/docs/api/types/HbrIntrinsicElement.md +0 -5
  488. package/docs/api/types/IfBreakIntrinsicElement.md +0 -5
  489. package/docs/api/types/IndentIfBreakIntrinsicElement.md +0 -5
  490. package/docs/api/types/IndentIntrinsicElement.md +0 -5
  491. package/docs/api/types/IntrinsicElement.md +0 -5
  492. package/docs/api/types/IntrinsicElementBase.md +0 -9
  493. package/docs/api/types/LbrIntrinsicElement.md +0 -5
  494. package/docs/api/types/LineIntrinsicElement.md +0 -5
  495. package/docs/api/types/LineSuffixBoundaryIntrinsicElement.md +0 -5
  496. package/docs/api/types/LineSuffixIntrinsicElement.md +0 -5
  497. package/docs/api/types/LiterallineIntrinsicElement.md +0 -5
  498. package/docs/api/types/MarkAsRootIntrinsicElement.md +0 -5
  499. package/docs/api/types/PrintHook.md +0 -10
  500. package/docs/api/types/RenderedTextTree.md +0 -5
  501. package/docs/api/types/SbrIntrinsicElement.md +0 -5
  502. package/docs/api/types/SoftlineIntrinsicElement.md +0 -5
  503. package/docs/api/variables/intrinsicElementKey.md +0 -5
  504. package/docs/api/variables/printHookTag.md +0 -7
  505. package/src/print-hook.ts +0 -22
  506. package/src/render.ts +0 -1154
@@ -14,7 +14,6 @@ This component is the root component for all your emitted output. Place your var
14
14
  insertFinalNewLine
15
15
  nameConflictResolver={NameConflictResolver}
16
16
  namePolicy={NamePolicy<string>}
17
- noFlush
18
17
  printWidth={number}
19
18
  tabWidth={number}
20
19
  useTabs
@@ -35,7 +34,6 @@ This component is the root component for all your emitted output. Place your var
35
34
  insertFinalNewLine: boolean,
36
35
  nameConflictResolver: NameConflictResolver,
37
36
  namePolicy: NamePolicy<string>,
38
- noFlush: boolean,
39
37
  printWidth: number,
40
38
  tabWidth: number,
41
39
  useTabs: boolean,
@@ -52,7 +50,6 @@ This component is the root component for all your emitted output. Place your var
52
50
  | insertFinalNewLine | optional boolean | If files should end with a final new line. |
53
51
  | nameConflictResolver | optional [NameConflictResolver](../../types/nameconflictresolver/) | Policy for handling multiple symbols declared with the same name. |
54
52
  | namePolicy | optional [NamePolicy](../../types/namepolicy/)\<string> | Name policy to use for this output. |
55
- | noFlush | optional boolean | Skip flushing scheduled jobs before printing. |
56
53
  | printWidth | optional number | The number of characters the printer will wrap on. Defaults to 100 characters. |
57
54
  | tabWidth | optional number | The number of spaces to use for indentation. Defaults to 2 spaces. |
58
55
  | useTabs | optional boolean | Whether to use tabs instead of spaces for indentation. Defaults to false. |
@@ -10,7 +10,6 @@
10
10
  filetype="string"
11
11
  header={Children}
12
12
  insertFinalNewLine
13
- noFlush
14
13
  path="string"
15
14
  printWidth={number}
16
15
  reference={ComponentDefinition<{
@@ -33,7 +32,6 @@
33
32
  filetype: string,
34
33
  header: Children,
35
34
  insertFinalNewLine: boolean,
36
- noFlush: boolean,
37
35
  path: string,
38
36
  printWidth: number,
39
37
  reference: ComponentDefinition<{
@@ -52,7 +50,6 @@
52
50
  | filetype | string | The type of contents in this file. This is a metadata hint only. It does not trigger formatting or content processing. The value is forwarded to debug tooling and the [`ContentOutputFile`](../types/ContentOutputFile.md) output metadata. |
53
51
  | header | optional [Children](../../types/children/) | Content rendered before the file body, separated from it by a hard line break. The separator is emitted whenever `header` is not `undefined` — including when it is an empty string or a component that renders nothing. To suppress both the header and the separator, omit this prop entirely. |
54
52
  | insertFinalNewLine | optional boolean | If files should end with a final new line. |
55
- | noFlush | optional boolean | Skip flushing scheduled jobs before printing. |
56
53
  | path | string | The path of this file relative to its parent directory |
57
54
  | printWidth | optional number | The number of characters the printer will wrap on. Defaults to 100 characters. |
58
55
  | reference | optional [ComponentDefinition](../../types/componentdefinition/)<{ refkey: [Refkey](../../types/refkey/); }> | The component to use to render refkeys references within the file’s contents. |
@@ -0,0 +1,18 @@
1
+ # createComment
2
+
3
+ ```ts
4
+ import { createComment } from "@alloy-js/core";
5
+
6
+
7
+ function createComment(data?: string): CommentNode;
8
+ ```
9
+
10
+ ## Parameters
11
+
12
+ | | | |
13
+ | ---- | --------------- | - |
14
+ | data | optional string | |
15
+
16
+ ## Returns
17
+
18
+ [CommentNode](../../types/commentnode/)
@@ -0,0 +1,19 @@
1
+ # createElement
2
+
3
+ ```ts
4
+ import { createElement } from "@alloy-js/core";
5
+
6
+
7
+ function createElement(localName: string, data?: unknown): ElementNode;
8
+ ```
9
+
10
+ ## Parameters
11
+
12
+ | | | |
13
+ | --------- | ---------------- | - |
14
+ | localName | string | |
15
+ | data | optional unknown | |
16
+
17
+ ## Returns
18
+
19
+ [ElementNode](../../types/elementnode/)
@@ -0,0 +1,17 @@
1
+ # createFragment
2
+
3
+ ```ts
4
+ import { createFragment } from "@alloy-js/core";
5
+
6
+
7
+ function createFragment(): FragmentNode;
8
+ ```
9
+
10
+ ## Parameters
11
+
12
+ | |
13
+ | - |
14
+
15
+ ## Returns
16
+
17
+ [FragmentNode](../../types/fragmentnode/)
@@ -0,0 +1,18 @@
1
+ # createTextNode
2
+
3
+ ```ts
4
+ import { createTextNode } from "@alloy-js/core";
5
+
6
+
7
+ function createTextNode(data: string): TextNode;
8
+ ```
9
+
10
+ ## Parameters
11
+
12
+ | | | |
13
+ | ---- | ------ | - |
14
+ | data | string | |
15
+
16
+ ## Returns
17
+
18
+ [TextNode](../../types/textnode/)
@@ -0,0 +1,19 @@
1
+ # emitDiagnosticForTree
2
+
3
+ ```ts
4
+ import { emitDiagnosticForTree } from "@alloy-js/core";
5
+
6
+
7
+ function emitDiagnosticForTree(tree: object, input: DiagnosticInput): DiagnosticHandle;
8
+ ```
9
+
10
+ ## Parameters
11
+
12
+ | | | |
13
+ | ----- | --------------- | - |
14
+ | tree | object | |
15
+ | input | DiagnosticInput | |
16
+
17
+ ## Returns
18
+
19
+ [DiagnosticHandle](../../types/diagnostichandle/)
@@ -1,6 +1,6 @@
1
1
  # ensureIsEmpty
2
2
 
3
- Ensure that a context has an isEmpty ref, creating one if needed. Only call this when you need to reactively observe isEmpty (e.g., ContentSlot, mapJoin). Most contexts don’t need an isEmpty ref.
3
+ Ensure that a context has an isEmpty ref, creating one if needed. Only call this when you need to reactively observe isEmpty (e.g., [`ContentSlot`](../types/ContentSlot.md)). `mapJoin` does not call this — it uses an internal empty-change callback directly so most slots never allocate a Ref at all.
4
4
 
5
5
  ```ts
6
6
  import { ensureIsEmpty } from "@alloy-js/core";
@@ -0,0 +1,18 @@
1
+ # getContextForNode
2
+
3
+ ```ts
4
+ import { getContextForNode } from "@alloy-js/core";
5
+
6
+
7
+ function getContextForNode(node: AlloyNode): Context | undefined;
8
+ ```
9
+
10
+ ## Parameters
11
+
12
+ | | | |
13
+ | ---- | --------- | - |
14
+ | node | AlloyNode | |
15
+
16
+ ## Returns
17
+
18
+ [Context](../../types/context/) | undefined
@@ -4,14 +4,14 @@
4
4
  import { getContextForRenderNode } from "@alloy-js/core";
5
5
 
6
6
 
7
- function getContextForRenderNode(node: RenderedTextTree): Context | undefined;
7
+ function getContextForRenderNode(node: AlloyNode): Context | undefined;
8
8
  ```
9
9
 
10
10
  ## Parameters
11
11
 
12
- | | | |
13
- | ---- | ---------------- | - |
14
- | node | RenderedTextTree | |
12
+ | | | |
13
+ | ---- | --------- | - |
14
+ | node | AlloyNode | |
15
15
 
16
16
  ## Returns
17
17
 
@@ -1,18 +1,20 @@
1
1
  # getDiagnosticsForTree
2
2
 
3
+ Diagnostics collected during the render of `rootNode`.
4
+
3
5
  ```ts
4
6
  import { getDiagnosticsForTree } from "@alloy-js/core";
5
7
 
6
8
 
7
- function getDiagnosticsForTree(tree: RenderedTextTree): import("./diagnostics.js").Diagnostic[];
9
+ function getDiagnosticsForTree(rootNode: AlloyNode): Diagnostic[];
8
10
  ```
9
11
 
10
12
  ## Parameters
11
13
 
12
- | | | |
13
- | ---- | ---------------- | - |
14
- | tree | RenderedTextTree | |
14
+ | | | |
15
+ | -------- | --------- | - |
16
+ | rootNode | AlloyNode | |
15
17
 
16
18
  ## Returns
17
19
 
18
- import(”./diagnostics.js”).[Diagnostic](../../types/diagnostic/)\[]
20
+ [Diagnostic](../../types/diagnostic/)\[]
@@ -0,0 +1,18 @@
1
+ # getRegisteredDiagnosticsForTree
2
+
3
+ ```ts
4
+ import { getRegisteredDiagnosticsForTree } from "@alloy-js/core";
5
+
6
+
7
+ function getRegisteredDiagnosticsForTree(tree: object): Diagnostic[];
8
+ ```
9
+
10
+ ## Parameters
11
+
12
+ | | | |
13
+ | ---- | ------ | - |
14
+ | tree | object | |
15
+
16
+ ## Returns
17
+
18
+ [Diagnostic](../../types/diagnostic/)\[]
@@ -6,19 +6,20 @@
6
6
  - [childrenArray](childrenArray.md) — import { childrenArray } from "@alloy-js/core";
7
7
  - [code](code.md) — Turn the provided string template into Children by replacing literal line breaks with hardlines and automatically indenting indented content.
8
8
  - [computed](computed.md) — import { computed } from "@alloy-js/core";
9
+ - [createComment](createComment.md) — import { createComment } from "@alloy-js/core";
9
10
  - [createComponent](createComponent.md) — import { createComponent } from "@alloy-js/core";
10
11
  - [createContentSlot](createContentSlot.md) — Create a component which tracks whether any content is placed inside of it.
11
12
  - [createContext](createContext.md) — import { createContext } from "@alloy-js/core";
12
13
  - [createCustomContext](createCustomContext.md) — import { createCustomContext } from "@alloy-js/core";
13
14
  - [createDeclarationTap](createDeclarationTap.md) — Create a tap for [Declaration context](../../contexts/declaration-context/).
15
+ - [createElement](createElement.md) — import { createElement } from "@alloy-js/core";
14
16
  - [createFileResource](createFileResource.md) — Create a resource that reads a file from the file system.
15
17
  - [createFormatOptionsContextFor](createFormatOptionsContextFor.md) — Create a format options context for a specific file type.
16
- - [createIntrinsic](createIntrinsic.md) — import { createIntrinsic } from "@alloy-js/core";
18
+ - [createFragment](createFragment.md) — import { createFragment } from "@alloy-js/core";
17
19
  - [createMemberTap](createMemberTap.md) — Create a tap for [MemberDeclaration context](../../contexts/memberdeclaration-context/).
18
20
  - [createNamedContext](createNamedContext.md) — import { createNamedContext } from "@alloy-js/core";
19
21
  - [createNamePolicy](createNamePolicy.md) — Creates a name policy that transforms symbol names based on element kind.
20
22
  - [createOutputBinder](createOutputBinder.md) — import { createOutputBinder } from "@alloy-js/core";
21
- - [createRenderTreeHook](createRenderTreeHook.md) — import { createRenderTreeHook } from "@alloy-js/core";
22
23
  - [createResource](createResource.md) — Create a resource that fetches data asynchronously.
23
24
  - [createScope](createScope.md) — Construct a scope instance and register it with devtools.
24
25
  - [createScopeTap](createScopeTap.md) — Create a tap for [OutputScope](../../types/outputscope/).
@@ -26,10 +27,12 @@
26
27
  - [createSymbol](createSymbol.md) — Construct a symbol instance and register it with devtools.
27
28
  - [createSymbolSlot](createSymbolSlot.md) — Create a component which accepts emitted symbols.
28
29
  - [createTap](createTap.md) — Create a component that when rendered, initializes the tapped value with the provided callback.
30
+ - [createTextNode](createTextNode.md) — import { createTextNode } from "@alloy-js/core";
29
31
  - [decl](decl.md) — Create a declaration in the current scope with the given namekey.
30
32
  - [defaultProps](defaultProps.md) — Applies default values to a props object.
31
33
  - [effect](effect.md) — import { effect } from "@alloy-js/core";
32
34
  - [emitDiagnostic](emitDiagnostic.md) — import { emitDiagnostic } from "@alloy-js/core";
35
+ - [emitDiagnosticForTree](emitDiagnosticForTree.md) — import { emitDiagnosticForTree } from "@alloy-js/core";
33
36
  - [emitSymbol](emitSymbol.md) — import { emitSymbol } from "@alloy-js/core";
34
37
  - [ensureIsEmpty](ensureIsEmpty.md) — Ensure that a context has an isEmpty ref, creating one if needed.
35
38
  - [findCurrentEffectId](findCurrentEffectId.md) — Walk up the context owner chain to find the nearest effect ID.
@@ -39,23 +42,22 @@
39
42
  - [formatReactivePropertyLabel](formatReactivePropertyLabel.md) — Build a human-readable label for a reactive property like `symbolName.prop`.
40
43
  - [getAssignmentSymbol](getAssignmentSymbol.md) — Get the symbol being defined.
41
44
  - [getContext](getContext.md) — import { getContext } from "@alloy-js/core";
45
+ - [getContextForNode](getContextForNode.md) — import { getContextForNode } from "@alloy-js/core";
42
46
  - [getContextForRenderNode](getContextForRenderNode.md) — import { getContextForRenderNode } from "@alloy-js/core";
43
- - [getDiagnosticsForTree](getDiagnosticsForTree.md) — import { getDiagnosticsForTree } from "@alloy-js/core";
47
+ - [getDiagnosticsForTree](getDiagnosticsForTree.md) — Diagnostics collected during the render of `rootNode`.
44
48
  - [getEffectDebugId](getEffectDebugId.md) — import { getEffectDebugId } from "@alloy-js/core";
45
- - [getElementCache](getElementCache.md) — import { getElementCache } from "@alloy-js/core";
46
49
  - [getReactiveCreationLocation](getReactiveCreationLocation.md) — import { getReactiveCreationLocation } from "@alloy-js/core";
50
+ - [getRegisteredDiagnosticsForTree](getRegisteredDiagnosticsForTree.md) — import { getRegisteredDiagnosticsForTree } from "@alloy-js/core";
47
51
  - [getSymbolCreator](getSymbolCreator.md) — import { getSymbolCreator } from "@alloy-js/core";
48
52
  - [getSymbolCreatorSymbol](getSymbolCreatorSymbol.md) — import { getSymbolCreatorSymbol } from "@alloy-js/core";
49
53
  - [inspectRefkey](inspectRefkey.md) — import { inspectRefkey } from "@alloy-js/core";
50
54
  - [instantiateTakenMembersTo](instantiateTakenMembersTo.md) — import { instantiateTakenMembersTo } from "@alloy-js/core";
51
55
  - [isComponentCreator](isComponentCreator.md) — import { isComponentCreator } from "@alloy-js/core";
52
56
  - [isCustomContext](isCustomContext.md) — import { isCustomContext } from "@alloy-js/core";
53
- - [isIntrinsicElement](isIntrinsicElement.md) — import { isIntrinsicElement } from "@alloy-js/core";
54
57
  - [isKeyedChild](isKeyedChild.md) — import { isKeyedChild } from "@alloy-js/core";
55
58
  - [isLibrarySymbolReference](isLibrarySymbolReference.md) — import { isLibrarySymbolReference } from "@alloy-js/core";
56
59
  - [isMemberRefkey](isMemberRefkey.md) — import { isMemberRefkey } from "@alloy-js/core";
57
60
  - [isNamekey](isNamekey.md) — import { isNamekey } from "@alloy-js/core";
58
- - [isPrintHook](isPrintHook.md) — import { isPrintHook } from "@alloy-js/core";
59
61
  - [isRefkey](isRefkey.md) — import { isRefkey } from "@alloy-js/core";
60
62
  - [isRefkeyable](isRefkeyable.md) — import { isRefkeyable } from "@alloy-js/core";
61
63
  - [isRenderableObject](isRenderableObject.md) — Returns true if the item is a renderable object, meaning it has an `[ay.RENDERABLE]` method.
@@ -68,23 +70,26 @@
68
70
  - [moveTakenMembersTo](moveTakenMembersTo.md) — import { moveTakenMembersTo } from "@alloy-js/core";
69
71
  - [namekey](namekey.md) — Create a namekey with the given name.
70
72
  - [nextReactiveId](nextReactiveId.md) — Allocate a unique reactive target ID from the same counter space as ref IDs.
71
- - [notifyContentState](notifyContentState.md) — import { notifyContentState } from "@alloy-js/core";
73
+ - [notifyContentState](notifyContentState.md) — Reconcile the current context’s last-empty flag and `isEmpty` ref with its current `childrenWithContent` count, propagat
72
74
  - [onCleanup](onCleanup.md) — Register a cleanup function which is called when the current reactive scope is recalculated or disposed.
73
- - [printTree](printTree.md) — Convert a rendered text tree to a string.
75
+ - [printTree](printTree.md) — Print an AlloyNode tree to a string.
74
76
  - [reactivePropertyRefId](reactivePropertyRefId.md) — Get a stable ref ID for a property of a reactive object.
75
77
  - [ref](ref.md) — import { ref } from "@alloy-js/core";
76
78
  - [refId](refId.md) — import { refId } from "@alloy-js/core";
77
79
  - [refkey](refkey.md) — Create a refkey for the provided arguments.
78
- - [render](render.md) — Render a component tree to source directories and files.
79
- - [renderAsync](renderAsync.md) — Render a component tree to source directories and files.
80
- - [renderTree](renderTree.md) — import { renderTree } from "@alloy-js/core";
80
+ - [registerDiagnosticsForTree](registerDiagnosticsForTree.md) — import { registerDiagnosticsForTree } from "@alloy-js/core";
81
+ - [render](render.md) — Render a component tree to an [OutputDirectory](../../types/outputdirectory/).
82
+ - [renderAsync](renderAsync.md) — Async variant awaits any scheduled async jobs (e.g.
83
+ - [renderTree](renderTree.md) — Render `children` into a fresh root AlloyNode.
81
84
  - [reportDiagnostics](reportDiagnostics.md) — import { reportDiagnostics } from "@alloy-js/core";
85
+ - [reportDiagnosticsForTree](reportDiagnosticsForTree.md) — import { reportDiagnosticsForTree } from "@alloy-js/core";
82
86
  - [resetRefIdCounter](resetRefIdCounter.md) — import { resetRefIdCounter } from "@alloy-js/core";
83
87
  - [resolve](resolve.md) — Resolve a refkey in the current scope.
84
88
  - [root](root.md) — import { root } from "@alloy-js/core";
89
+ - [runInContext](runInContext.md) — Run `fn` in a fresh child Context (just like [effect](../effect/)) but **without** a tracking ReactiveEffect wrapper.
85
90
  - [shallowReactive](shallowReactive.md) — import { shallowReactive } from "@alloy-js/core";
86
91
  - [shallowRef](shallowRef.md) — import { shallowRef } from "@alloy-js/core";
87
- - [sourceFilesForTree](sourceFilesForTree.md) — Convert a rendered text tree to source directories and files.
92
+ - [sourceFilesForTree](sourceFilesForTree.md) — Walk the AlloyNode tree, collecting `<SourceDirectory>`, `<SourceFile>`, and `<CopyFile>` markers into an [OutputDirecto
88
93
  - [splitProps](splitProps.md) — import { splitProps } from "@alloy-js/core";
89
94
  - [stc](stc.md) — import { stc } from "@alloy-js/core";
90
95
  - [sti](sti.md) — import { sti } from "@alloy-js/core";
@@ -4,14 +4,14 @@
4
4
  import { isCustomContext } from "@alloy-js/core";
5
5
 
6
6
 
7
- function isCustomContext(child: Children): child is CustomContext;
7
+ function isCustomContext(child: unknown): child is CustomContext;
8
8
  ```
9
9
 
10
10
  ## Parameters
11
11
 
12
- | | | |
13
- | ----- | -------- | - |
14
- | child | Children | |
12
+ | | | |
13
+ | ----- | ------- | - |
14
+ | child | unknown | |
15
15
 
16
16
  ## Returns
17
17
 
@@ -1,5 +1,11 @@
1
1
  # notifyContentState
2
2
 
3
+ Reconcile the current context’s last-empty flag and `isEmpty` ref with its current `childrenWithContent` count, propagating changes up the owner chain.
4
+
5
+ Call after mutating `childrenWithContent`. Safe to call when there is no active context — it just no-ops.
6
+
7
+ On every transition, both write the (lazily-allocated) `isEmpty` Ref (if present) AND invoke the internal empty-change callback (if present). Order is ref-first so external observers see the new Ref value before any internal mapJoin bookkeeping mutates dependent Refs.
8
+
3
9
  ```ts
4
10
  import { notifyContentState } from "@alloy-js/core";
5
11
 
@@ -1,30 +1,20 @@
1
1
  # printTree
2
2
 
3
- Convert a rendered text tree to a string. Will ensure that the scheduler is empty before printing.
3
+ Print an AlloyNode tree to a string.
4
4
 
5
5
  ```ts
6
6
  import { printTree } from "@alloy-js/core";
7
7
 
8
8
 
9
- function printTree(tree: RenderedTextTree, options?: PrintTreeOptions): string;
9
+ function printTree(node: AlloyNode, opts?: PrintTreeOptions & RenderTreeOptions): string;
10
10
  ```
11
11
 
12
12
  ## Parameters
13
13
 
14
- | | | |
15
- | ------- | ------------------------- | - |
16
- | tree | RenderedTextTree | |
17
- | options | optional PrintTreeOptions | |
18
-
19
- ## Options
20
-
21
- | | | |
22
- | ------------------ | ---------------- | ------------------------------------------------------------------------------ |
23
- | insertFinalNewLine | optional boolean | If files should end with a final new line. |
24
- | noFlush | optional boolean | Skip flushing scheduled jobs before printing. |
25
- | printWidth | optional number | The number of characters the printer will wrap on. Defaults to 100 characters. |
26
- | tabWidth | optional number | The number of spaces to use for indentation. Defaults to 2 spaces. |
27
- | useTabs | optional boolean | Whether to use tabs instead of spaces for indentation. Defaults to false. |
14
+ | | | |
15
+ | ---- | --------------------------------------------- | - |
16
+ | node | AlloyNode | |
17
+ | opts | optional PrintTreeOptions & RenderTreeOptions | |
28
18
 
29
19
  ## Returns
30
20
 
@@ -0,0 +1,19 @@
1
+ # registerDiagnosticsForTree
2
+
3
+ ```ts
4
+ import { registerDiagnosticsForTree } from "@alloy-js/core";
5
+
6
+
7
+ function registerDiagnosticsForTree(tree: object, collector: DiagnosticsCollector): void;
8
+ ```
9
+
10
+ ## Parameters
11
+
12
+ | | | |
13
+ | --------- | -------------------- | - |
14
+ | tree | object | |
15
+ | collector | DiagnosticsCollector | |
16
+
17
+ ## Returns
18
+
19
+ void
@@ -1,6 +1,6 @@
1
1
  # render
2
2
 
3
- Render a component tree to source directories and files. Will ensure that all non-async scheduled jobs are completed before returning. If async jobs are found, an error will be thrown. Use `renderAsync` when asynchronous jobs are expected.
3
+ Render a component tree to an [OutputDirectory](../../types/outputdirectory/).
4
4
 
5
5
  ```ts
6
6
  import { render } from "@alloy-js/core";
@@ -21,7 +21,6 @@ function render(children: Children, options?: PrintTreeOptions): OutputDirectory
21
21
  | | | |
22
22
  | ------------------ | ---------------- | ------------------------------------------------------------------------------ |
23
23
  | insertFinalNewLine | optional boolean | If files should end with a final new line. |
24
- | noFlush | optional boolean | Skip flushing scheduled jobs before printing. |
25
24
  | printWidth | optional number | The number of characters the printer will wrap on. Defaults to 100 characters. |
26
25
  | tabWidth | optional number | The number of spaces to use for indentation. Defaults to 2 spaces. |
27
26
  | useTabs | optional boolean | Whether to use tabs instead of spaces for indentation. Defaults to false. |
@@ -1,6 +1,6 @@
1
1
  # renderAsync
2
2
 
3
- Render a component tree to source directories and files. Will ensure that all scheduled jobs are completed before returning.
3
+ Async variant awaits any scheduled async jobs (e.g. produced by `<Output>` consumers that read external data) before walking the tree.
4
4
 
5
5
  ```ts
6
6
  import { renderAsync } from "@alloy-js/core";
@@ -21,7 +21,6 @@ function renderAsync(children: Children, options?: PrintTreeOptions): Promise<Ou
21
21
  | | | |
22
22
  | ------------------ | ---------------- | ------------------------------------------------------------------------------ |
23
23
  | insertFinalNewLine | optional boolean | If files should end with a final new line. |
24
- | noFlush | optional boolean | Skip flushing scheduled jobs before printing. |
25
24
  | printWidth | optional number | The number of characters the printer will wrap on. Defaults to 100 characters. |
26
25
  | tabWidth | optional number | The number of spaces to use for indentation. Defaults to 2 spaces. |
27
26
  | useTabs | optional boolean | Whether to use tabs instead of spaces for indentation. Defaults to false. |
@@ -1,18 +1,21 @@
1
1
  # renderTree
2
2
 
3
+ Render `children` into a fresh root AlloyNode.
4
+
3
5
  ```ts
4
6
  import { renderTree } from "@alloy-js/core";
5
7
 
6
8
 
7
- function renderTree(children: Children): RenderedTextTree;
9
+ function renderTree(children: Children, opts?: RenderTreeOptions): ElementNode;
8
10
  ```
9
11
 
10
12
  ## Parameters
11
13
 
12
- | | | |
13
- | -------- | -------- | - |
14
- | children | Children | |
14
+ | | | |
15
+ | -------- | -------------------------- | - |
16
+ | children | Children | |
17
+ | opts | optional RenderTreeOptions | |
15
18
 
16
19
  ## Returns
17
20
 
18
- [RenderedTextTree](../../types/renderedtexttree/)
21
+ [ElementNode](../../types/elementnode/)
@@ -0,0 +1,18 @@
1
+ # reportDiagnosticsForTree
2
+
3
+ ```ts
4
+ import { reportDiagnosticsForTree } from "@alloy-js/core";
5
+
6
+
7
+ function reportDiagnosticsForTree(tree: object): void;
8
+ ```
9
+
10
+ ## Parameters
11
+
12
+ | | | |
13
+ | ---- | ------ | - |
14
+ | tree | object | |
15
+
16
+ ## Returns
17
+
18
+ void
@@ -0,0 +1,28 @@
1
+ # runInContext
2
+
3
+ Run `fn` in a fresh child Context (just like [effect](../effect/)) but **without** a tracking ReactiveEffect wrapper. Use this when the caller knows the body does not establish reactive subscriptions at its top level (e.g. it wraps its only reactive reads in `untrack()` or function children) — typically for component-invocation plumbing where the outer “effect” never re-fires.
4
+
5
+ Compared to [effect](../effect/):
6
+
7
+ * No `vueEffect` allocation, no scheduler binding.
8
+ * The body runs synchronously to completion exactly once.
9
+ * Disposables registered via `onCleanup` inside `fn` (or its descendants) are still registered on the new context, and disposed via the parent context’s cleanup chain.
10
+
11
+ Returns the value returned by `fn`.
12
+
13
+ ```ts
14
+ import { runInContext } from "@alloy-js/core";
15
+
16
+
17
+ function runInContext<T>(fn: () => T): T;
18
+ ```
19
+
20
+ ## Parameters
21
+
22
+ | | | |
23
+ | -- | ------- | - |
24
+ | fn | () => T | |
25
+
26
+ ## Returns
27
+
28
+ T
@@ -1,30 +1,20 @@
1
1
  # sourceFilesForTree
2
2
 
3
- Convert a rendered text tree to source directories and files. Will ensure that all scheduled jobs are completed before returning.
3
+ Walk the AlloyNode tree, collecting `<SourceDirectory>`, `<SourceFile>`, and `<CopyFile>` markers into an [OutputDirectory](../../types/outputdirectory/).
4
4
 
5
5
  ```ts
6
6
  import { sourceFilesForTree } from "@alloy-js/core";
7
7
 
8
8
 
9
- function sourceFilesForTree(tree: RenderedTextTree, options?: PrintTreeOptions): OutputDirectory;
9
+ function sourceFilesForTree(rootNode: AlloyNode, opts?: PrintTreeOptions): OutputDirectory;
10
10
  ```
11
11
 
12
12
  ## Parameters
13
13
 
14
- | | | |
15
- | ------- | ------------------------- | - |
16
- | tree | RenderedTextTree | |
17
- | options | optional PrintTreeOptions | |
18
-
19
- ## Options
20
-
21
- | | | |
22
- | ------------------ | ---------------- | ------------------------------------------------------------------------------ |
23
- | insertFinalNewLine | optional boolean | If files should end with a final new line. |
24
- | noFlush | optional boolean | Skip flushing scheduled jobs before printing. |
25
- | printWidth | optional number | The number of characters the printer will wrap on. Defaults to 100 characters. |
26
- | tabWidth | optional number | The number of spaces to use for indentation. Defaults to 2 spaces. |
27
- | useTabs | optional boolean | Whether to use tabs instead of spaces for indentation. Defaults to false. |
14
+ | | | |
15
+ | -------- | ------------------------- | - |
16
+ | rootNode | AlloyNode | |
17
+ | opts | optional PrintTreeOptions | |
28
18
 
29
19
  ## Returns
30
20
 
package/docs/api/index.md CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  - [components](components/index.md) (25 items)
4
4
  - [contexts](contexts/index.md) (9 items)
5
- - [functions](functions/index.md) (103 items)
5
+ - [functions](functions/index.md) (108 items)
6
6
  - [testing/functions](testing/functions/index.md) (4 items)
7
7
  - [testing/types](testing/types/index.md) (2 items)
8
- - [types](types/index.md) (120 items)
9
- - [variables](variables/index.md) (9 items)
8
+ - [types](types/index.md) (102 items)
9
+ - [variables](variables/index.md) (11 items)
@@ -3,4 +3,4 @@
3
3
  - [createTestWrapper](createTestWrapper.md) — Create a reusable test harness for a language package.
4
4
  - [d](d.md) — Dedented template literal tag.
5
5
  - [dedent](dedent.md) — import { dedent } from "@alloy-js/core/testing";
6
- - [renderToString](renderToString.md) — Render a JSX element tree to a string.
6
+ - [renderToString](renderToString.md) — Convenience wrapper combining `renderTree` and `printTree`.
@@ -1,6 +1,6 @@
1
1
  # renderToString
2
2
 
3
- Render a JSX element tree to a string. Convenience wrapper combining `renderTree` and `printTree`.
3
+ Convenience wrapper combining `renderTree` and `printTree`.
4
4
 
5
5
  ```ts
6
6
  import { renderToString } from "@alloy-js/core/testing";