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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (464) hide show
  1. package/dist/dev/src/binder.js +488 -0
  2. package/dist/dev/src/binder.js.map +1 -0
  3. package/dist/dev/src/code.js +181 -0
  4. package/dist/dev/src/code.js.map +1 -0
  5. package/dist/dev/src/components/AccessExpression.js +230 -0
  6. package/dist/dev/src/components/AccessExpression.js.map +1 -0
  7. package/dist/dev/src/components/AccessExpression.test.js +237 -0
  8. package/dist/dev/src/components/AccessExpression.test.js.map +1 -0
  9. package/dist/dev/src/components/AppendFile.js +246 -0
  10. package/dist/dev/src/components/AppendFile.js.map +1 -0
  11. package/dist/dev/src/components/Block.js +66 -0
  12. package/dist/dev/src/components/Block.js.map +1 -0
  13. package/dist/dev/src/components/CopyFile.js +16 -0
  14. package/dist/dev/src/components/CopyFile.js.map +1 -0
  15. package/dist/dev/src/components/Declaration.js +70 -0
  16. package/dist/dev/src/components/Declaration.js.map +1 -0
  17. package/dist/dev/src/components/For.js +40 -0
  18. package/dist/dev/src/components/For.js.map +1 -0
  19. package/dist/dev/src/components/Indent.js +37 -0
  20. package/dist/dev/src/components/Indent.js.map +1 -0
  21. package/dist/dev/src/components/List.js +29 -0
  22. package/dist/dev/src/components/List.js.map +1 -0
  23. package/dist/dev/src/components/MemberDeclaration.js +70 -0
  24. package/dist/dev/src/components/MemberDeclaration.js.map +1 -0
  25. package/dist/dev/src/components/MemberName.js +11 -0
  26. package/dist/dev/src/components/MemberName.js.map +1 -0
  27. package/dist/dev/src/components/MemberScope.js +57 -0
  28. package/dist/dev/src/components/MemberScope.js.map +1 -0
  29. package/dist/dev/src/components/Name.js +11 -0
  30. package/dist/dev/src/components/Name.js.map +1 -0
  31. package/dist/dev/src/components/Output.js +72 -0
  32. package/dist/dev/src/components/Output.js.map +1 -0
  33. package/dist/dev/src/components/Prose.js +32 -0
  34. package/dist/dev/src/components/Prose.js.map +1 -0
  35. package/dist/dev/src/components/ReferenceOrContent.js +12 -0
  36. package/dist/dev/src/components/ReferenceOrContent.js.map +1 -0
  37. package/dist/dev/src/components/Scope.js +50 -0
  38. package/dist/dev/src/components/Scope.js.map +1 -0
  39. package/dist/dev/src/components/Show.js +4 -0
  40. package/dist/dev/src/components/Show.js.map +1 -0
  41. package/dist/dev/src/components/SourceDirectory.js +41 -0
  42. package/dist/dev/src/components/SourceDirectory.js.map +1 -0
  43. package/dist/dev/src/components/SourceFile.js +52 -0
  44. package/dist/dev/src/components/SourceFile.js.map +1 -0
  45. package/dist/dev/src/components/StatementList.js +20 -0
  46. package/dist/dev/src/components/StatementList.js.map +1 -0
  47. package/dist/dev/src/components/Switch.js +42 -0
  48. package/dist/dev/src/components/Switch.js.map +1 -0
  49. package/dist/dev/src/components/TemplateFile.js +153 -0
  50. package/dist/dev/src/components/TemplateFile.js.map +1 -0
  51. package/dist/dev/src/components/UpdateFile.js +71 -0
  52. package/dist/dev/src/components/UpdateFile.js.map +1 -0
  53. package/dist/dev/src/components/Wrap.js +18 -0
  54. package/dist/dev/src/components/Wrap.js.map +1 -0
  55. package/dist/dev/src/components/index.js +25 -0
  56. package/dist/dev/src/components/index.js.map +1 -0
  57. package/dist/dev/src/components/stc/index.js +27 -0
  58. package/dist/dev/src/components/stc/index.js.map +1 -0
  59. package/dist/dev/src/components/stc/sti.js +10 -0
  60. package/dist/dev/src/components/stc/sti.js.map +1 -0
  61. package/dist/dev/src/content-slot.js +78 -0
  62. package/dist/dev/src/content-slot.js.map +1 -0
  63. package/dist/dev/src/content-slot.test.js +89 -0
  64. package/dist/dev/src/content-slot.test.js.map +1 -0
  65. package/dist/dev/src/context/assignment.js +46 -0
  66. package/dist/dev/src/context/assignment.js.map +1 -0
  67. package/dist/dev/src/context/binder.js +12 -0
  68. package/dist/dev/src/context/binder.js.map +1 -0
  69. package/dist/dev/src/context/declaration.js +3 -0
  70. package/dist/dev/src/context/declaration.js.map +1 -0
  71. package/dist/dev/src/context/format-options.js +32 -0
  72. package/dist/dev/src/context/format-options.js.map +1 -0
  73. package/dist/dev/src/context/index.js +11 -0
  74. package/dist/dev/src/context/index.js.map +1 -0
  75. package/dist/dev/src/context/member-declaration.js +11 -0
  76. package/dist/dev/src/context/member-declaration.js.map +1 -0
  77. package/dist/dev/src/context/member-scope.js +12 -0
  78. package/dist/dev/src/context/member-scope.js.map +1 -0
  79. package/dist/dev/src/context/name-policy.js +13 -0
  80. package/dist/dev/src/context/name-policy.js.map +1 -0
  81. package/dist/dev/src/context/scope.js +13 -0
  82. package/dist/dev/src/context/scope.js.map +1 -0
  83. package/dist/dev/src/context/source-directory.js +3 -0
  84. package/dist/dev/src/context/source-directory.js.map +1 -0
  85. package/dist/dev/src/context/source-file.js +3 -0
  86. package/dist/dev/src/context/source-file.js.map +1 -0
  87. package/dist/dev/src/context.js +47 -0
  88. package/dist/dev/src/context.js.map +1 -0
  89. package/dist/dev/src/debug/cli.js +163 -0
  90. package/dist/dev/src/debug/cli.js.map +1 -0
  91. package/dist/dev/src/debug/diagnostics.test.js +50 -0
  92. package/dist/dev/src/debug/diagnostics.test.js.map +1 -0
  93. package/dist/dev/src/debug/effects.js +293 -0
  94. package/dist/dev/src/debug/effects.js.map +1 -0
  95. package/dist/dev/src/debug/effects.test.js +280 -0
  96. package/dist/dev/src/debug/effects.test.js.map +1 -0
  97. package/dist/dev/src/debug/files.js +29 -0
  98. package/dist/dev/src/debug/files.js.map +1 -0
  99. package/dist/dev/src/debug/files.test.js +78 -0
  100. package/dist/dev/src/debug/files.test.js.map +1 -0
  101. package/dist/dev/src/debug/index.js +71 -0
  102. package/dist/dev/src/debug/index.js.map +1 -0
  103. package/dist/dev/src/debug/message-format.test.js +836 -0
  104. package/dist/dev/src/debug/message-format.test.js.map +1 -0
  105. package/dist/dev/src/debug/render-tree-orphans.test.js +365 -0
  106. package/dist/dev/src/debug/render-tree-orphans.test.js.map +1 -0
  107. package/dist/dev/src/debug/render.js +479 -0
  108. package/dist/dev/src/debug/render.js.map +1 -0
  109. package/dist/dev/src/debug/render.test.js +363 -0
  110. package/dist/dev/src/debug/render.test.js.map +1 -0
  111. package/dist/dev/src/debug/serialize.js +70 -0
  112. package/dist/dev/src/debug/serialize.js.map +1 -0
  113. package/dist/dev/src/debug/source-map.js +111 -0
  114. package/dist/dev/src/debug/source-map.js.map +1 -0
  115. package/dist/dev/src/debug/symbols.js +196 -0
  116. package/dist/dev/src/debug/symbols.js.map +1 -0
  117. package/dist/dev/src/debug/symbols.test.js +93 -0
  118. package/dist/dev/src/debug/symbols.test.js.map +1 -0
  119. package/dist/dev/src/debug/trace-writer.js +658 -0
  120. package/dist/dev/src/debug/trace-writer.js.map +1 -0
  121. package/dist/dev/src/debug/trace.js +459 -0
  122. package/dist/dev/src/debug/trace.js.map +1 -0
  123. package/dist/dev/src/devtools/devtools-protocol.js +2 -0
  124. package/dist/dev/src/devtools/devtools-protocol.js.map +1 -0
  125. package/dist/dev/src/devtools/devtools-server.browser.js +33 -0
  126. package/dist/dev/src/devtools/devtools-server.browser.js.map +1 -0
  127. package/dist/dev/src/devtools/devtools-server.js +444 -0
  128. package/dist/dev/src/devtools/devtools-server.js.map +1 -0
  129. package/dist/dev/src/devtools/devtools-transport.js +114 -0
  130. package/dist/dev/src/devtools/devtools-transport.js.map +1 -0
  131. package/dist/dev/src/devtools-entry.browser.js +2 -0
  132. package/dist/dev/src/devtools-entry.browser.js.map +1 -0
  133. package/dist/dev/src/devtools-entry.js +2 -0
  134. package/dist/dev/src/devtools-entry.js.map +1 -0
  135. package/dist/dev/src/diagnostics.js +89 -0
  136. package/dist/dev/src/diagnostics.js.map +1 -0
  137. package/dist/dev/src/host/alloy-host.browser.js +32 -0
  138. package/dist/dev/src/host/alloy-host.browser.js.map +1 -0
  139. package/dist/dev/src/host/alloy-host.js +144 -0
  140. package/dist/dev/src/host/alloy-host.js.map +1 -0
  141. package/dist/dev/src/host/interface.js +2 -0
  142. package/dist/dev/src/host/interface.js.map +1 -0
  143. package/dist/dev/src/index.browser.js +3 -0
  144. package/dist/dev/src/index.browser.js.map +1 -0
  145. package/dist/dev/src/index.js +27 -0
  146. package/dist/dev/src/index.js.map +1 -0
  147. package/dist/dev/src/inspect.browser.js +6 -0
  148. package/dist/dev/src/inspect.browser.js.map +1 -0
  149. package/dist/dev/src/inspect.js +2 -0
  150. package/dist/dev/src/inspect.js.map +1 -0
  151. package/dist/dev/src/jsx-runtime.js +17 -0
  152. package/dist/dev/src/jsx-runtime.js.map +1 -0
  153. package/dist/dev/src/library-symbol-reference.js +5 -0
  154. package/dist/dev/src/library-symbol-reference.js.map +1 -0
  155. package/dist/dev/src/name-policy.js +24 -0
  156. package/dist/dev/src/name-policy.js.map +1 -0
  157. package/dist/dev/src/pretty-string/pretty-string.js +100 -0
  158. package/dist/dev/src/pretty-string/pretty-string.js.map +1 -0
  159. package/dist/dev/src/pretty-string/pretty-string.test.js +38 -0
  160. package/dist/dev/src/pretty-string/pretty-string.test.js.map +1 -0
  161. package/dist/dev/src/print-hook.js +10 -0
  162. package/dist/dev/src/print-hook.js.map +1 -0
  163. package/dist/dev/src/props-combinators.js +109 -0
  164. package/dist/dev/src/props-combinators.js.map +1 -0
  165. package/dist/dev/src/reactive-union-set.js +213 -0
  166. package/dist/dev/src/reactive-union-set.js.map +1 -0
  167. package/dist/dev/src/reactivity.js +426 -0
  168. package/dist/dev/src/reactivity.js.map +1 -0
  169. package/dist/dev/src/refkey.js +167 -0
  170. package/dist/dev/src/refkey.js.map +1 -0
  171. package/dist/dev/src/render-stack.js +251 -0
  172. package/dist/dev/src/render-stack.js.map +1 -0
  173. package/dist/dev/src/render.js +872 -0
  174. package/dist/dev/src/render.js.map +1 -0
  175. package/dist/dev/src/resource.js +124 -0
  176. package/dist/dev/src/resource.js.map +1 -0
  177. package/dist/dev/src/runtime/component.js +41 -0
  178. package/dist/dev/src/runtime/component.js.map +1 -0
  179. package/dist/dev/src/runtime/intrinsic.js +12 -0
  180. package/dist/dev/src/runtime/intrinsic.js.map +1 -0
  181. package/dist/dev/src/scheduler.js +217 -0
  182. package/dist/dev/src/scheduler.js.map +1 -0
  183. package/dist/dev/src/stc.js +40 -0
  184. package/dist/dev/src/stc.js.map +1 -0
  185. package/dist/dev/src/sti.js +31 -0
  186. package/dist/dev/src/sti.js.map +1 -0
  187. package/dist/dev/src/symbols/basic-scope.js +21 -0
  188. package/dist/dev/src/symbols/basic-scope.js.map +1 -0
  189. package/dist/dev/src/symbols/basic-symbol.js +34 -0
  190. package/dist/dev/src/symbols/basic-symbol.js.map +1 -0
  191. package/dist/dev/src/symbols/decl.js +26 -0
  192. package/dist/dev/src/symbols/decl.js.map +1 -0
  193. package/dist/dev/src/symbols/index.js +10 -0
  194. package/dist/dev/src/symbols/index.js.map +1 -0
  195. package/dist/dev/src/symbols/output-scope.js +202 -0
  196. package/dist/dev/src/symbols/output-scope.js.map +1 -0
  197. package/dist/dev/src/symbols/output-space.js +36 -0
  198. package/dist/dev/src/symbols/output-space.js.map +1 -0
  199. package/dist/dev/src/symbols/output-symbol.js +504 -0
  200. package/dist/dev/src/symbols/output-symbol.js.map +1 -0
  201. package/dist/dev/src/symbols/symbol-flow.js +106 -0
  202. package/dist/dev/src/symbols/symbol-flow.js.map +1 -0
  203. package/dist/dev/src/symbols/symbol-slot.js +68 -0
  204. package/dist/dev/src/symbols/symbol-slot.js.map +1 -0
  205. package/dist/dev/src/symbols/symbol-slot.test.js +43 -0
  206. package/dist/dev/src/symbols/symbol-slot.test.js.map +1 -0
  207. package/dist/dev/src/symbols/symbol-table.js +93 -0
  208. package/dist/dev/src/symbols/symbol-table.js.map +1 -0
  209. package/dist/dev/src/tap.js +109 -0
  210. package/dist/dev/src/tap.js.map +1 -0
  211. package/dist/dev/src/trace.js +2 -0
  212. package/dist/dev/src/trace.js.map +1 -0
  213. package/dist/dev/src/tracer.js +180 -0
  214. package/dist/dev/src/tracer.js.map +1 -0
  215. package/dist/dev/src/utils.js +487 -0
  216. package/dist/dev/src/utils.js.map +1 -0
  217. package/dist/dev/src/write-output.js +47 -0
  218. package/dist/dev/src/write-output.js.map +1 -0
  219. package/dist/dev/test/browser-build.test.js +86 -0
  220. package/dist/dev/test/browser-build.test.js.map +1 -0
  221. package/dist/dev/test/children.test.js +44 -0
  222. package/dist/dev/test/children.test.js.map +1 -0
  223. package/dist/dev/test/components/append-file.test.js +394 -0
  224. package/dist/dev/test/components/append-file.test.js.map +1 -0
  225. package/dist/dev/test/components/block.test.js +83 -0
  226. package/dist/dev/test/components/block.test.js.map +1 -0
  227. package/dist/dev/test/components/copy-file.test.js +119 -0
  228. package/dist/dev/test/components/copy-file.test.js.map +1 -0
  229. package/dist/dev/test/components/declaration.test.js +40 -0
  230. package/dist/dev/test/components/declaration.test.js.map +1 -0
  231. package/dist/dev/test/components/list.test.js +250 -0
  232. package/dist/dev/test/components/list.test.js.map +1 -0
  233. package/dist/dev/test/components/prose.test.js +42 -0
  234. package/dist/dev/test/components/prose.test.js.map +1 -0
  235. package/dist/dev/test/components/reference-or-content.test.js +246 -0
  236. package/dist/dev/test/components/reference-or-content.test.js.map +1 -0
  237. package/dist/dev/test/components/source-file.test.js +271 -0
  238. package/dist/dev/test/components/source-file.test.js.map +1 -0
  239. package/dist/dev/test/components/template-file.test.js +200 -0
  240. package/dist/dev/test/components/template-file.test.js.map +1 -0
  241. package/dist/dev/test/components/update-file.test.js +210 -0
  242. package/dist/dev/test/components/update-file.test.js.map +1 -0
  243. package/dist/dev/test/components/wrap.test.js +48 -0
  244. package/dist/dev/test/components/wrap.test.js.map +1 -0
  245. package/dist/dev/test/control-flow/for.test.js +318 -0
  246. package/dist/dev/test/control-flow/for.test.js.map +1 -0
  247. package/dist/dev/test/control-flow/match.test.js +112 -0
  248. package/dist/dev/test/control-flow/match.test.js.map +1 -0
  249. package/dist/dev/test/control-flow/show.test.js +38 -0
  250. package/dist/dev/test/control-flow/show.test.js.map +1 -0
  251. package/dist/dev/test/lazy-isempty.test.js +121 -0
  252. package/dist/dev/test/lazy-isempty.test.js.map +1 -0
  253. package/dist/dev/test/name-policy.test.js +28 -0
  254. package/dist/dev/test/name-policy.test.js.map +1 -0
  255. package/dist/dev/test/props-with-defaults.test.js +94 -0
  256. package/dist/dev/test/props-with-defaults.test.js.map +1 -0
  257. package/dist/dev/test/reactive-union-set-disposers.test.js +98 -0
  258. package/dist/dev/test/reactive-union-set-disposers.test.js.map +1 -0
  259. package/dist/dev/test/reactive-union-set.test.js +171 -0
  260. package/dist/dev/test/reactive-union-set.test.js.map +1 -0
  261. package/dist/dev/test/reactivity/circular-reactives.test.js +62 -0
  262. package/dist/dev/test/reactivity/circular-reactives.test.js.map +1 -0
  263. package/dist/dev/test/reactivity/cleanup.test.js +96 -0
  264. package/dist/dev/test/reactivity/cleanup.test.js.map +1 -0
  265. package/dist/dev/test/reactivity/memo.test.js +17 -0
  266. package/dist/dev/test/reactivity/memo.test.js.map +1 -0
  267. package/dist/dev/test/reactivity/ref-rendering.test.js +38 -0
  268. package/dist/dev/test/reactivity/ref-rendering.test.js.map +1 -0
  269. package/dist/dev/test/reactivity/shallow-reactive.test.js +52 -0
  270. package/dist/dev/test/reactivity/shallow-reactive.test.js.map +1 -0
  271. package/dist/dev/test/reactivity/test.test.js +74 -0
  272. package/dist/dev/test/reactivity/test.test.js.map +1 -0
  273. package/dist/dev/test/reactivity/untrack.test.js +27 -0
  274. package/dist/dev/test/reactivity/untrack.test.js.map +1 -0
  275. package/dist/dev/test/refkey.test.js +36 -0
  276. package/dist/dev/test/refkey.test.js.map +1 -0
  277. package/dist/dev/test/rendering/basic.test.js +194 -0
  278. package/dist/dev/test/rendering/basic.test.js.map +1 -0
  279. package/dist/dev/test/rendering/code.test.js +64 -0
  280. package/dist/dev/test/rendering/code.test.js.map +1 -0
  281. package/dist/dev/test/rendering/formatting.test.js +797 -0
  282. package/dist/dev/test/rendering/formatting.test.js.map +1 -0
  283. package/dist/dev/test/rendering/indent.test.js +183 -0
  284. package/dist/dev/test/rendering/indent.test.js.map +1 -0
  285. package/dist/dev/test/rendering/memoization.test.js +37 -0
  286. package/dist/dev/test/rendering/memoization.test.js.map +1 -0
  287. package/dist/dev/test/rendering/print-render-stack.test.js +287 -0
  288. package/dist/dev/test/rendering/print-render-stack.test.js.map +1 -0
  289. package/dist/dev/test/rendering/refkeys.test.js +37 -0
  290. package/dist/dev/test/rendering/refkeys.test.js.map +1 -0
  291. package/dist/dev/test/scheduler-extended.test.js +96 -0
  292. package/dist/dev/test/scheduler-extended.test.js.map +1 -0
  293. package/dist/dev/test/scheduler.test.js +46 -0
  294. package/dist/dev/test/scheduler.test.js.map +1 -0
  295. package/dist/dev/test/split-props.test.js +78 -0
  296. package/dist/dev/test/split-props.test.js.map +1 -0
  297. package/dist/dev/test/stc.test.js +35 -0
  298. package/dist/dev/test/stc.test.js.map +1 -0
  299. package/dist/dev/test/symbols/output-scope.test.js +180 -0
  300. package/dist/dev/test/symbols/output-scope.test.js.map +1 -0
  301. package/dist/dev/test/symbols/output-symbol.test.js +202 -0
  302. package/dist/dev/test/symbols/output-symbol.test.js.map +1 -0
  303. package/dist/dev/test/symbols/resolution.test.js +487 -0
  304. package/dist/dev/test/symbols/resolution.test.js.map +1 -0
  305. package/dist/dev/test/symbols/symbol-table.test.js +15 -0
  306. package/dist/dev/test/symbols/symbol-table.test.js.map +1 -0
  307. package/dist/dev/test/symbols/utils.js +26 -0
  308. package/dist/dev/test/symbols/utils.js.map +1 -0
  309. package/dist/dev/test/utils.test.js +317 -0
  310. package/dist/dev/test/utils.test.js.map +1 -0
  311. package/dist/dev/testing/create-test-wrapper.js +76 -0
  312. package/dist/dev/testing/create-test-wrapper.js.map +1 -0
  313. package/dist/dev/testing/devtools-utils.js +162 -0
  314. package/dist/dev/testing/devtools-utils.js.map +1 -0
  315. package/dist/dev/testing/extend-expect.js +167 -0
  316. package/dist/dev/testing/extend-expect.js.map +1 -0
  317. package/dist/dev/testing/extend-expect.test.js +234 -0
  318. package/dist/dev/testing/extend-expect.test.js.map +1 -0
  319. package/dist/dev/testing/index.js +4 -0
  320. package/dist/dev/testing/index.js.map +1 -0
  321. package/dist/dev/testing/render.js +23 -0
  322. package/dist/dev/testing/render.js.map +1 -0
  323. package/dist/dev/testing/vitest.d.js +2 -0
  324. package/dist/dev/testing/vitest.d.js.map +1 -0
  325. package/dist/devtools/index.html +29 -17
  326. package/dist/src/binder.d.ts.map +1 -1
  327. package/dist/src/binder.js +5 -0
  328. package/dist/src/binder.js.map +1 -1
  329. package/dist/src/components/For.d.ts.map +1 -1
  330. package/dist/src/components/For.js +1 -1
  331. package/dist/src/components/For.js.map +1 -1
  332. package/dist/src/components/List.d.ts.map +1 -1
  333. package/dist/src/components/List.js +1 -1
  334. package/dist/src/components/List.js.map +1 -1
  335. package/dist/src/components/Switch.d.ts.map +1 -1
  336. package/dist/src/components/Switch.js +1 -1
  337. package/dist/src/components/Switch.js.map +1 -1
  338. package/dist/src/debug/diagnostics.test.js +3 -2
  339. package/dist/src/debug/diagnostics.test.js.map +1 -1
  340. package/dist/src/debug/effects.d.ts +12 -4
  341. package/dist/src/debug/effects.d.ts.map +1 -1
  342. package/dist/src/debug/effects.js +119 -54
  343. package/dist/src/debug/effects.js.map +1 -1
  344. package/dist/src/debug/effects.test.js +213 -41
  345. package/dist/src/debug/effects.test.js.map +1 -1
  346. package/dist/src/debug/files.d.ts.map +1 -1
  347. package/dist/src/debug/files.js +7 -18
  348. package/dist/src/debug/files.js.map +1 -1
  349. package/dist/src/debug/files.test.js +13 -36
  350. package/dist/src/debug/files.test.js.map +1 -1
  351. package/dist/src/debug/index.d.ts +4 -2
  352. package/dist/src/debug/index.d.ts.map +1 -1
  353. package/dist/src/debug/index.js +4 -2
  354. package/dist/src/debug/index.js.map +1 -1
  355. package/dist/src/debug/message-format.test.d.ts +2 -0
  356. package/dist/src/debug/message-format.test.d.ts.map +1 -0
  357. package/dist/src/debug/message-format.test.js +700 -0
  358. package/dist/src/debug/message-format.test.js.map +1 -0
  359. package/dist/src/debug/render-tree-orphans.test.d.ts +2 -0
  360. package/dist/src/debug/render-tree-orphans.test.d.ts.map +1 -0
  361. package/dist/src/debug/render-tree-orphans.test.js +297 -0
  362. package/dist/src/debug/render-tree-orphans.test.js.map +1 -0
  363. package/dist/src/debug/render.d.ts.map +1 -1
  364. package/dist/src/debug/render.js +91 -131
  365. package/dist/src/debug/render.js.map +1 -1
  366. package/dist/src/debug/render.test.js +91 -128
  367. package/dist/src/debug/render.test.js.map +1 -1
  368. package/dist/src/debug/source-map.d.ts +22 -0
  369. package/dist/src/debug/source-map.d.ts.map +1 -0
  370. package/dist/src/debug/source-map.js +111 -0
  371. package/dist/src/debug/source-map.js.map +1 -0
  372. package/dist/src/debug/symbols.d.ts +6 -5
  373. package/dist/src/debug/symbols.d.ts.map +1 -1
  374. package/dist/src/debug/symbols.js +46 -23
  375. package/dist/src/debug/symbols.js.map +1 -1
  376. package/dist/src/debug/symbols.test.js +15 -26
  377. package/dist/src/debug/symbols.test.js.map +1 -1
  378. package/dist/src/debug/trace-writer.d.ts +55 -0
  379. package/dist/src/debug/trace-writer.d.ts.map +1 -0
  380. package/dist/src/debug/trace-writer.js +658 -0
  381. package/dist/src/debug/trace-writer.js.map +1 -0
  382. package/dist/src/debug/trace.d.ts +10 -10
  383. package/dist/src/debug/trace.d.ts.map +1 -1
  384. package/dist/src/debug/trace.js +36 -20
  385. package/dist/src/debug/trace.js.map +1 -1
  386. package/dist/src/devtools/devtools-protocol.d.ts +318 -161
  387. package/dist/src/devtools/devtools-protocol.d.ts.map +1 -1
  388. package/dist/src/devtools/devtools-server.browser.d.ts +0 -5
  389. package/dist/src/devtools/devtools-server.browser.d.ts.map +1 -1
  390. package/dist/src/devtools/devtools-server.browser.js +0 -3
  391. package/dist/src/devtools/devtools-server.browser.js.map +1 -1
  392. package/dist/src/devtools/devtools-server.d.ts +0 -6
  393. package/dist/src/devtools/devtools-server.d.ts.map +1 -1
  394. package/dist/src/devtools/devtools-server.js +212 -24
  395. package/dist/src/devtools/devtools-server.js.map +1 -1
  396. package/dist/src/devtools/devtools-transport.d.ts +2 -2
  397. package/dist/src/devtools/devtools-transport.d.ts.map +1 -1
  398. package/dist/src/devtools/devtools-transport.js +2 -2
  399. package/dist/src/devtools/devtools-transport.js.map +1 -1
  400. package/dist/src/devtools-entry.browser.d.ts +1 -1
  401. package/dist/src/devtools-entry.browser.d.ts.map +1 -1
  402. package/dist/src/devtools-entry.browser.js.map +1 -1
  403. package/dist/src/devtools-entry.d.ts +1 -1
  404. package/dist/src/devtools-entry.d.ts.map +1 -1
  405. package/dist/src/devtools-entry.js.map +1 -1
  406. package/dist/src/diagnostics.d.ts.map +1 -1
  407. package/dist/src/diagnostics.js +5 -5
  408. package/dist/src/diagnostics.js.map +1 -1
  409. package/dist/src/reactivity.d.ts +13 -2
  410. package/dist/src/reactivity.d.ts.map +1 -1
  411. package/dist/src/reactivity.js +96 -13
  412. package/dist/src/reactivity.js.map +1 -1
  413. package/dist/src/render.d.ts.map +1 -1
  414. package/dist/src/render.js +84 -30
  415. package/dist/src/render.js.map +1 -1
  416. package/dist/src/scheduler.d.ts +5 -0
  417. package/dist/src/scheduler.d.ts.map +1 -1
  418. package/dist/src/scheduler.js +94 -23
  419. package/dist/src/scheduler.js.map +1 -1
  420. package/dist/src/utils.d.ts.map +1 -1
  421. package/dist/src/utils.js +11 -5
  422. package/dist/src/utils.js.map +1 -1
  423. package/dist/test/browser-build.test.js +1 -1
  424. package/dist/test/browser-build.test.js.map +1 -1
  425. package/dist/testing/devtools-utils.d.ts +12 -3
  426. package/dist/testing/devtools-utils.d.ts.map +1 -1
  427. package/dist/testing/devtools-utils.js +26 -4
  428. package/dist/testing/devtools-utils.js.map +1 -1
  429. package/dist/tsconfig.tsbuildinfo +1 -1
  430. package/package.json +9 -3
  431. package/src/binder.ts +47 -38
  432. package/src/components/For.tsx +14 -10
  433. package/src/components/List.tsx +7 -4
  434. package/src/components/Switch.tsx +11 -7
  435. package/src/debug/diagnostics.test.tsx +3 -2
  436. package/src/debug/effects.test.tsx +248 -36
  437. package/src/debug/effects.ts +198 -64
  438. package/src/debug/files.test.tsx +15 -35
  439. package/src/debug/files.ts +11 -11
  440. package/src/debug/index.ts +4 -0
  441. package/src/debug/message-format.test.tsx +759 -0
  442. package/src/debug/render-tree-orphans.test.tsx +344 -0
  443. package/src/debug/render.test.tsx +96 -118
  444. package/src/debug/render.ts +196 -125
  445. package/src/debug/source-map.ts +135 -0
  446. package/src/debug/symbols.test.tsx +19 -20
  447. package/src/debug/symbols.ts +106 -23
  448. package/src/debug/trace-writer.ts +969 -0
  449. package/src/debug/trace.ts +41 -28
  450. package/src/devtools/devtools-protocol.ts +361 -176
  451. package/src/devtools/devtools-server.browser.ts +0 -9
  452. package/src/devtools/devtools-server.ts +210 -32
  453. package/src/devtools/devtools-transport.ts +4 -4
  454. package/src/devtools-entry.browser.ts +11 -15
  455. package/src/devtools-entry.ts +9 -15
  456. package/src/diagnostics.ts +14 -5
  457. package/src/reactivity.ts +113 -17
  458. package/src/render.ts +104 -30
  459. package/src/scheduler.ts +145 -26
  460. package/src/utils.tsx +7 -4
  461. package/temp/api.json +142 -20
  462. package/test/browser-build.test.ts +1 -1
  463. package/testing/devtools-utils.ts +46 -4
  464. package/vitest.config.ts +8 -0
@@ -0,0 +1,797 @@
1
+ import { createIntrinsic as _$createIntrinsic, createComponent as _$createComponent, memo as _$memo } from "@alloy-js/core/jsx-runtime";
2
+ import { describe, expect, it } from "vitest";
3
+ import { For, Output, render, SourceFile } from "../../src/index.js";
4
+ import "../../testing/extend-expect.js";
5
+ import { d } from "../../testing/render.js";
6
+ describe("group", () => {
7
+ it("breaks when shouldBreak is passed", () => {
8
+ expect(_$createIntrinsic("group", {
9
+ shouldBreak: true,
10
+ get children() {
11
+ return ["hi", _$createIntrinsic("sbr", {}, {
12
+ fileName: import.meta.url,
13
+ lineNumber: 17,
14
+ columnNumber: 9
15
+ }), "bye"];
16
+ }
17
+ }, {
18
+ fileName: import.meta.url,
19
+ lineNumber: 15,
20
+ columnNumber: 7
21
+ })).toRenderTo(`
22
+ hi
23
+ bye
24
+ `);
25
+ });
26
+ });
27
+ describe("indent", () => {
28
+ it("indents its children", () => {
29
+ expect(["a", _$createIntrinsic("indent", {
30
+ get children() {
31
+ return [_$createIntrinsic("hardline", {}, {
32
+ fileName: import.meta.url,
33
+ lineNumber: 34,
34
+ columnNumber: 11
35
+ }), "b"];
36
+ }
37
+ }, {
38
+ fileName: import.meta.url,
39
+ lineNumber: 33,
40
+ columnNumber: 9
41
+ })]).toRenderTo(`
42
+ a
43
+ b
44
+ `);
45
+ });
46
+ });
47
+ describe("dedent and markAsRoot", () => {
48
+ it("dedents its children", () => {
49
+ expect(["base", _$createIntrinsic("indent", {
50
+ get children() {
51
+ return [_$createIntrinsic("hbr", {}, {
52
+ fileName: import.meta.url,
53
+ lineNumber: 50,
54
+ columnNumber: 11
55
+ }), "a", _$createIntrinsic("dedent", {
56
+ get children() {
57
+ return [_$createIntrinsic("hardline", {}, {
58
+ fileName: import.meta.url,
59
+ lineNumber: 52,
60
+ columnNumber: 13
61
+ }), "b"];
62
+ }
63
+ }, {
64
+ fileName: import.meta.url,
65
+ lineNumber: 51,
66
+ columnNumber: 11
67
+ })];
68
+ }
69
+ }, {
70
+ fileName: import.meta.url,
71
+ lineNumber: 49,
72
+ columnNumber: 9
73
+ })]).toRenderTo(`
74
+ base
75
+ a
76
+ b
77
+ `);
78
+ });
79
+ });
80
+ describe("dedentToRoot and setRoot", () => {
81
+ it("dedents to the indent level marked by the root when not marked", () => {
82
+ expect(["base", _$createIntrinsic("indent", {
83
+ get children() {
84
+ return [_$createIntrinsic("hbr", {}, {
85
+ fileName: import.meta.url,
86
+ lineNumber: 70,
87
+ columnNumber: 11
88
+ }), "a", _$createIntrinsic("dedentToRoot", {
89
+ get children() {
90
+ return [_$createIntrinsic("hbr", {}, {
91
+ fileName: import.meta.url,
92
+ lineNumber: 72,
93
+ columnNumber: 13
94
+ }), "b"];
95
+ }
96
+ }, {
97
+ fileName: import.meta.url,
98
+ lineNumber: 71,
99
+ columnNumber: 11
100
+ })];
101
+ }
102
+ }, {
103
+ fileName: import.meta.url,
104
+ lineNumber: 69,
105
+ columnNumber: 9
106
+ })]).toRenderTo(`
107
+ base
108
+ a
109
+ b
110
+ `);
111
+ });
112
+ it("dedents to the indent level marked by the root when marked", () => {
113
+ expect(["base", _$createIntrinsic("indent", {
114
+ get children() {
115
+ return [_$createIntrinsic("hbr", {}, {
116
+ fileName: import.meta.url,
117
+ lineNumber: 87,
118
+ columnNumber: 11
119
+ }), "root", _$createIntrinsic("markAsRoot", {
120
+ get children() {
121
+ return _$createIntrinsic("indent", {
122
+ get children() {
123
+ return [_$createIntrinsic("hbr", {}, {
124
+ fileName: import.meta.url,
125
+ lineNumber: 91,
126
+ columnNumber: 15
127
+ }), "a", _$createIntrinsic("dedentToRoot", {
128
+ get children() {
129
+ return [_$createIntrinsic("hbr", {}, {
130
+ fileName: import.meta.url,
131
+ lineNumber: 93,
132
+ columnNumber: 17
133
+ }), "b"];
134
+ }
135
+ }, {
136
+ fileName: import.meta.url,
137
+ lineNumber: 92,
138
+ columnNumber: 15
139
+ })];
140
+ }
141
+ }, {
142
+ fileName: import.meta.url,
143
+ lineNumber: 90,
144
+ columnNumber: 13
145
+ });
146
+ }
147
+ }, {
148
+ fileName: import.meta.url,
149
+ lineNumber: 89,
150
+ columnNumber: 11
151
+ })];
152
+ }
153
+ }, {
154
+ fileName: import.meta.url,
155
+ lineNumber: 86,
156
+ columnNumber: 9
157
+ })]).toRenderTo(`
158
+ base
159
+ root
160
+ a
161
+ b
162
+ `);
163
+ });
164
+ });
165
+ describe("softline", () => {
166
+ it("breaks to to a new line when needed", () => {
167
+ expect(_$createIntrinsic("group", {
168
+ get children() {
169
+ return ["1234567890", _$createIntrinsic("softline", {}, {
170
+ fileName: import.meta.url,
171
+ lineNumber: 113,
172
+ columnNumber: 9
173
+ }), "1234567890"];
174
+ }
175
+ }, {
176
+ fileName: import.meta.url,
177
+ lineNumber: 111,
178
+ columnNumber: 7
179
+ })).toRenderTo(`12345678901234567890`, {
180
+ printWidth: 25
181
+ });
182
+ expect(_$createIntrinsic("group", {
183
+ get children() {
184
+ return ["1234567890", _$createIntrinsic("softline", {}, {
185
+ fileName: import.meta.url,
186
+ lineNumber: 120,
187
+ columnNumber: 9
188
+ }), "1234567890"];
189
+ }
190
+ }, {
191
+ fileName: import.meta.url,
192
+ lineNumber: 118,
193
+ columnNumber: 7
194
+ })).toRenderTo(`
195
+ 1234567890
196
+ 1234567890
197
+ `, {
198
+ printWidth: 15
199
+ });
200
+ expect(_$createIntrinsic("group", {
201
+ get children() {
202
+ return ["1234567890", _$createIntrinsic("sbr", {}, {
203
+ fileName: import.meta.url,
204
+ lineNumber: 133,
205
+ columnNumber: 9
206
+ }), "1234567890"];
207
+ }
208
+ }, {
209
+ fileName: import.meta.url,
210
+ lineNumber: 131,
211
+ columnNumber: 7
212
+ })).toRenderTo(`12345678901234567890`, {
213
+ printWidth: 25
214
+ });
215
+ expect(_$createIntrinsic("group", {
216
+ get children() {
217
+ return ["1234567890", _$createIntrinsic("sbr", {}, {
218
+ fileName: import.meta.url,
219
+ lineNumber: 140,
220
+ columnNumber: 9
221
+ }), "1234567890"];
222
+ }
223
+ }, {
224
+ fileName: import.meta.url,
225
+ lineNumber: 138,
226
+ columnNumber: 7
227
+ })).toRenderTo(`
228
+ 1234567890
229
+ 1234567890
230
+ `, {
231
+ printWidth: 15
232
+ });
233
+ });
234
+ });
235
+ describe("hardline", () => {
236
+ it("always breaks to a new line", () => {
237
+ expect(_$createIntrinsic("group", {
238
+ get children() {
239
+ return ["1234567890", _$createIntrinsic("hardline", {}, {
240
+ fileName: import.meta.url,
241
+ lineNumber: 158,
242
+ columnNumber: 9
243
+ }), "1234567890"];
244
+ }
245
+ }, {
246
+ fileName: import.meta.url,
247
+ lineNumber: 156,
248
+ columnNumber: 7
249
+ })).toRenderTo(`
250
+ 1234567890
251
+ 1234567890
252
+ `);
253
+ expect(_$createIntrinsic("group", {
254
+ get children() {
255
+ return ["1234567890", _$createIntrinsic("hbr", {}, {
256
+ fileName: import.meta.url,
257
+ lineNumber: 170,
258
+ columnNumber: 9
259
+ }), "1234567890"];
260
+ }
261
+ }, {
262
+ fileName: import.meta.url,
263
+ lineNumber: 168,
264
+ columnNumber: 7
265
+ })).toRenderTo(`
266
+ 1234567890
267
+ 1234567890
268
+ `);
269
+ });
270
+ });
271
+ describe("line", () => {
272
+ it("creates a new line when needed, is otherwise space", () => {
273
+ expect(_$createIntrinsic("group", {
274
+ get children() {
275
+ return ["1234567890", _$createIntrinsic("line", {}, {
276
+ fileName: import.meta.url,
277
+ lineNumber: 187,
278
+ columnNumber: 9
279
+ }), "1234567890"];
280
+ }
281
+ }, {
282
+ fileName: import.meta.url,
283
+ lineNumber: 185,
284
+ columnNumber: 7
285
+ })).toRenderTo(`1234567890 1234567890`, {
286
+ printWidth: 25
287
+ });
288
+ expect(_$createIntrinsic("group", {
289
+ get children() {
290
+ return ["1234567890", _$createIntrinsic("line", {}, {
291
+ fileName: import.meta.url,
292
+ lineNumber: 194,
293
+ columnNumber: 9
294
+ }), "1234567890"];
295
+ }
296
+ }, {
297
+ fileName: import.meta.url,
298
+ lineNumber: 192,
299
+ columnNumber: 7
300
+ })).toRenderTo(`
301
+ 1234567890
302
+ 1234567890
303
+ `, {
304
+ printWidth: 15
305
+ });
306
+ expect(_$createIntrinsic("group", {
307
+ get children() {
308
+ return ["1234567890", _$createIntrinsic("br", {}, {
309
+ fileName: import.meta.url,
310
+ lineNumber: 207,
311
+ columnNumber: 9
312
+ }), "1234567890"];
313
+ }
314
+ }, {
315
+ fileName: import.meta.url,
316
+ lineNumber: 205,
317
+ columnNumber: 7
318
+ })).toRenderTo(`1234567890 1234567890`, {
319
+ printWidth: 25
320
+ });
321
+ expect(_$createIntrinsic("group", {
322
+ get children() {
323
+ return ["1234567890", _$createIntrinsic("br", {}, {
324
+ fileName: import.meta.url,
325
+ lineNumber: 214,
326
+ columnNumber: 9
327
+ }), "1234567890"];
328
+ }
329
+ }, {
330
+ fileName: import.meta.url,
331
+ lineNumber: 212,
332
+ columnNumber: 7
333
+ })).toRenderTo(`
334
+ 1234567890
335
+ 1234567890
336
+ `, {
337
+ printWidth: 15
338
+ });
339
+ });
340
+ });
341
+ describe("literalline", () => {
342
+ it("always creates a new line", () => {
343
+ expect(["base", _$createIntrinsic("indent", {
344
+ get children() {
345
+ return [_$createIntrinsic("hbr", {}, {
346
+ fileName: import.meta.url,
347
+ lineNumber: 233,
348
+ columnNumber: 11
349
+ }), "1234567890", _$createIntrinsic("literalline", {}, {
350
+ fileName: import.meta.url,
351
+ lineNumber: 235,
352
+ columnNumber: 11
353
+ }), "1234567890", _$createIntrinsic("hbr", {}, {
354
+ fileName: import.meta.url,
355
+ lineNumber: 237,
356
+ columnNumber: 11
357
+ }), "x"];
358
+ }
359
+ }, {
360
+ fileName: import.meta.url,
361
+ lineNumber: 232,
362
+ columnNumber: 9
363
+ })]).toRenderTo(`
364
+ base
365
+ 1234567890
366
+ 1234567890
367
+ x
368
+ `);
369
+ expect(["base", _$createIntrinsic("indent", {
370
+ get children() {
371
+ return [_$createIntrinsic("hbr", {}, {
372
+ fileName: import.meta.url,
373
+ lineNumber: 252,
374
+ columnNumber: 11
375
+ }), "1234567890", _$createIntrinsic("lbr", {}, {
376
+ fileName: import.meta.url,
377
+ lineNumber: 254,
378
+ columnNumber: 11
379
+ }), "1234567890", _$createIntrinsic("hbr", {}, {
380
+ fileName: import.meta.url,
381
+ lineNumber: 256,
382
+ columnNumber: 11
383
+ }), "x"];
384
+ }
385
+ }, {
386
+ fileName: import.meta.url,
387
+ lineNumber: 251,
388
+ columnNumber: 9
389
+ })]).toRenderTo(`
390
+ base
391
+ 1234567890
392
+ 1234567890
393
+ x
394
+ `);
395
+ });
396
+ });
397
+ describe("lineSuffix and lineSuffixBoundary", () => {
398
+ it("adds a line suffix", () => {
399
+ expect(["hello", _$createIntrinsic("lineSuffix", {
400
+ children: "// comment"
401
+ }, {
402
+ fileName: import.meta.url,
403
+ lineNumber: 274,
404
+ columnNumber: 14
405
+ }), " there", _$createIntrinsic("hbr", {}, {
406
+ fileName: import.meta.url,
407
+ lineNumber: 275,
408
+ columnNumber: 9
409
+ }), "how", _$createIntrinsic("lineSuffix", {
410
+ children: "// another comment"
411
+ }, {
412
+ fileName: import.meta.url,
413
+ lineNumber: 276,
414
+ columnNumber: 12
415
+ }), " are", " ", _$createIntrinsic("lineSuffixBoundary", {}, {
416
+ fileName: import.meta.url,
417
+ lineNumber: 277,
418
+ columnNumber: 9
419
+ }), "you"]).toRenderTo(`
420
+ hello there// comment
421
+ how are // another comment
422
+ you
423
+ `);
424
+ });
425
+ });
426
+ describe("breakParent", () => {
427
+ it("breaks the parent group", () => {
428
+ expect(_$createIntrinsic("group", {
429
+ get children() {
430
+ return [_$createIntrinsic("breakParent", {}, {
431
+ fileName: import.meta.url,
432
+ lineNumber: 294,
433
+ columnNumber: 9
434
+ }), "one", _$createIntrinsic("sbr", {}, {
435
+ fileName: import.meta.url,
436
+ lineNumber: 296,
437
+ columnNumber: 9
438
+ }), "two"];
439
+ }
440
+ }, {
441
+ fileName: import.meta.url,
442
+ lineNumber: 293,
443
+ columnNumber: 7
444
+ })).toRenderTo(`
445
+ one
446
+ two
447
+ `);
448
+ });
449
+ });
450
+ describe("ifBreak", () => {
451
+ it("renders the children when broken", () => {
452
+ expect(_$createIntrinsic("group", {
453
+ get children() {
454
+ return _$createIntrinsic("ifBreak", {
455
+ flatContents: "bye",
456
+ children: "hi"
457
+ }, {
458
+ fileName: import.meta.url,
459
+ lineNumber: 312,
460
+ columnNumber: 9
461
+ });
462
+ }
463
+ }, {
464
+ fileName: import.meta.url,
465
+ lineNumber: 311,
466
+ columnNumber: 7
467
+ })).toRenderTo(`bye`);
468
+ });
469
+ it("renders the children when not broken", () => {
470
+ expect(_$createIntrinsic("group", {
471
+ get children() {
472
+ return [_$createIntrinsic("ifBreak", {
473
+ flatContents: "bye",
474
+ children: "hi"
475
+ }, {
476
+ fileName: import.meta.url,
477
+ lineNumber: 320,
478
+ columnNumber: 9
479
+ }), _$createIntrinsic("breakParent", {}, {
480
+ fileName: import.meta.url,
481
+ lineNumber: 321,
482
+ columnNumber: 9
483
+ })];
484
+ }
485
+ }, {
486
+ fileName: import.meta.url,
487
+ lineNumber: 319,
488
+ columnNumber: 7
489
+ })).toRenderTo(`hi`);
490
+ });
491
+ it("renders flatContents that are elements", () => {
492
+ function Foo() {
493
+ return "Foo";
494
+ }
495
+ const contents = [_$createComponent(Foo, {}, {
496
+ fileName: import.meta.url,
497
+ lineNumber: 332,
498
+ columnNumber: 9
499
+ }), _$createComponent(Foo, {}, {
500
+ fileName: import.meta.url,
501
+ lineNumber: 333,
502
+ columnNumber: 9
503
+ })];
504
+ expect(_$createIntrinsic("group", {
505
+ get children() {
506
+ return _$createIntrinsic("ifBreak", {
507
+ flatContents: contents,
508
+ children: "hi"
509
+ }, {
510
+ fileName: import.meta.url,
511
+ lineNumber: 339,
512
+ columnNumber: 9
513
+ });
514
+ }
515
+ }, {
516
+ fileName: import.meta.url,
517
+ lineNumber: 338,
518
+ columnNumber: 7
519
+ })).toRenderTo(`FooFoo`);
520
+ });
521
+ it("works with a group id", () => {
522
+ const id = Symbol();
523
+ expect([_$createIntrinsic("group", {
524
+ id: id,
525
+ get children() {
526
+ return ["a", _$createIntrinsic("hbr", {}, {
527
+ fileName: import.meta.url,
528
+ lineNumber: 349,
529
+ columnNumber: 12
530
+ }), "b", _$createIntrinsic("hbr", {}, {
531
+ fileName: import.meta.url,
532
+ lineNumber: 349,
533
+ columnNumber: 20
534
+ })];
535
+ }
536
+ }, {
537
+ fileName: import.meta.url,
538
+ lineNumber: 348,
539
+ columnNumber: 9
540
+ }), _$createIntrinsic("ifBreak", {
541
+ groupId: id,
542
+ children: "c"
543
+ }, {
544
+ fileName: import.meta.url,
545
+ lineNumber: 351,
546
+ columnNumber: 9
547
+ })]).toRenderTo(`a\nb\nc`);
548
+ });
549
+ });
550
+ describe("fill", () => {
551
+ it("fills the group with its children", () => {
552
+ const items = ["one", "two", "three", "four", "five", "six"];
553
+ // place a <br /> after every item except the last
554
+ const filledItems = items.map((item, index) => [item, _$memo(() => _$memo(() => index < items.length - 1)() && _$createIntrinsic("br", {}, {
555
+ fileName: import.meta.url,
556
+ lineNumber: 364,
557
+ columnNumber: 38
558
+ }), false, "_$memo(\u2026)(\u2026) && \u2026")]);
559
+ expect(_$createIntrinsic("fill", {
560
+ children: filledItems
561
+ }, {
562
+ fileName: import.meta.url,
563
+ lineNumber: 368,
564
+ columnNumber: 12
565
+ })).toRenderTo(`one two three four\nfive six`, {
566
+ printWidth: 20
567
+ });
568
+ });
569
+ });
570
+ describe("align", () => {
571
+ it("aligns contents with a number of spaces", () => {
572
+ expect(["base", _$createIntrinsic("align", {
573
+ width: 4,
574
+ get children() {
575
+ return [_$createIntrinsic("hbr", {}, {
576
+ fileName: import.meta.url,
577
+ lineNumber: 381,
578
+ columnNumber: 11
579
+ }), "hi"];
580
+ }
581
+ }, {
582
+ fileName: import.meta.url,
583
+ lineNumber: 380,
584
+ columnNumber: 9
585
+ })]).toRenderTo(`
586
+ base
587
+ hi
588
+ `);
589
+ });
590
+ it("aligns contents with a string", () => {
591
+ expect(["base", _$createIntrinsic("align", {
592
+ string: "XXXX",
593
+ get children() {
594
+ return [_$createIntrinsic("hbr", {}, {
595
+ fileName: import.meta.url,
596
+ lineNumber: 398,
597
+ columnNumber: 11
598
+ }), "hi"];
599
+ }
600
+ }, {
601
+ fileName: import.meta.url,
602
+ lineNumber: 397,
603
+ columnNumber: 9
604
+ })]).toRenderTo(`
605
+ base
606
+ XXXXhi
607
+ `);
608
+ });
609
+ });
610
+ it("all works together", () => {
611
+ const argCount = 2;
612
+ const args = Array.from({
613
+ length: argCount
614
+ }, (_, i) => `arg${i + 1}`);
615
+ expect([_$createIntrinsic("group", {
616
+ get children() {
617
+ return ["async function foo(", _$createIntrinsic("indent", {
618
+ get children() {
619
+ return [_$createIntrinsic("sbr", {}, {
620
+ fileName: import.meta.url,
621
+ lineNumber: 419,
622
+ columnNumber: 11
623
+ }), _$createComponent(For, {
624
+ each: args,
625
+ get joiner() {
626
+ return [",", _$createIntrinsic("br", {}, {
627
+ fileName: import.meta.url,
628
+ lineNumber: 424,
629
+ columnNumber: 18
630
+ })];
631
+ },
632
+ children: arg => [arg, ": string"]
633
+ }, {
634
+ fileName: import.meta.url,
635
+ lineNumber: 420,
636
+ columnNumber: 11
637
+ })];
638
+ }
639
+ }, {
640
+ fileName: import.meta.url,
641
+ lineNumber: 418,
642
+ columnNumber: 9
643
+ }), _$createIntrinsic("sbr", {}, {
644
+ fileName: import.meta.url,
645
+ lineNumber: 431,
646
+ columnNumber: 9
647
+ }), ")"];
648
+ }
649
+ }, {
650
+ fileName: import.meta.url,
651
+ lineNumber: 416,
652
+ columnNumber: 7
653
+ }), ": void ", "{", _$createIntrinsic("indent", {
654
+ get children() {
655
+ return [_$createIntrinsic("hbr", {}, {
656
+ fileName: import.meta.url,
657
+ lineNumber: 435,
658
+ columnNumber: 9
659
+ }), "// function body"];
660
+ }
661
+ }, {
662
+ fileName: import.meta.url,
663
+ lineNumber: 434,
664
+ columnNumber: 7
665
+ }), _$createIntrinsic("hbr", {}, {
666
+ fileName: import.meta.url,
667
+ lineNumber: 438,
668
+ columnNumber: 7
669
+ }), "}"]).toRenderTo(`
670
+ async function foo(arg1: string, arg2: string): void {
671
+ // function body
672
+ }
673
+ `, {
674
+ printWidth: 80
675
+ });
676
+ });
677
+ it("formats based on the output component props", () => {
678
+ const template = _$createComponent(Output, {
679
+ printWidth: 5,
680
+ get children() {
681
+ return _$createComponent(SourceFile, {
682
+ path: "foo.txt",
683
+ filetype: "text/plain",
684
+ get children() {
685
+ return _$createIntrinsic("group", {
686
+ get children() {
687
+ return ["1", _$createIntrinsic("br", {}, {
688
+ fileName: import.meta.url,
689
+ lineNumber: 456,
690
+ columnNumber: 12
691
+ }), "2", _$createIntrinsic("br", {}, {
692
+ fileName: import.meta.url,
693
+ lineNumber: 456,
694
+ columnNumber: 19
695
+ }), "3", _$createIntrinsic("br", {}, {
696
+ fileName: import.meta.url,
697
+ lineNumber: 456,
698
+ columnNumber: 26
699
+ }), "4", _$createIntrinsic("br", {}, {
700
+ fileName: import.meta.url,
701
+ lineNumber: 456,
702
+ columnNumber: 33
703
+ }), "5", _$createIntrinsic("br", {}, {
704
+ fileName: import.meta.url,
705
+ lineNumber: 456,
706
+ columnNumber: 40
707
+ }), "6"];
708
+ }
709
+ }, {
710
+ fileName: import.meta.url,
711
+ lineNumber: 455,
712
+ columnNumber: 9
713
+ });
714
+ }
715
+ }, {
716
+ fileName: import.meta.url,
717
+ lineNumber: 454,
718
+ columnNumber: 7
719
+ });
720
+ }
721
+ }, {
722
+ fileName: import.meta.url,
723
+ lineNumber: 453,
724
+ columnNumber: 5
725
+ });
726
+ const tree = render(template);
727
+ expect(tree.contents[0].contents).toEqual(d`
728
+ 1
729
+ 2
730
+ 3
731
+ 4
732
+ 5
733
+ 6
734
+
735
+ `);
736
+ });
737
+ it("formats based on the source file component props", () => {
738
+ const template = _$createComponent(Output, {
739
+ get children() {
740
+ return _$createComponent(SourceFile, {
741
+ path: "foo.txt",
742
+ filetype: "text/plain",
743
+ printWidth: 5,
744
+ get children() {
745
+ return _$createIntrinsic("group", {
746
+ get children() {
747
+ return ["1", _$createIntrinsic("br", {}, {
748
+ fileName: import.meta.url,
749
+ lineNumber: 479,
750
+ columnNumber: 12
751
+ }), "2", _$createIntrinsic("br", {}, {
752
+ fileName: import.meta.url,
753
+ lineNumber: 479,
754
+ columnNumber: 19
755
+ }), "3", _$createIntrinsic("br", {}, {
756
+ fileName: import.meta.url,
757
+ lineNumber: 479,
758
+ columnNumber: 26
759
+ }), "4", _$createIntrinsic("br", {}, {
760
+ fileName: import.meta.url,
761
+ lineNumber: 479,
762
+ columnNumber: 33
763
+ }), "5", _$createIntrinsic("br", {}, {
764
+ fileName: import.meta.url,
765
+ lineNumber: 479,
766
+ columnNumber: 40
767
+ }), "6"];
768
+ }
769
+ }, {
770
+ fileName: import.meta.url,
771
+ lineNumber: 478,
772
+ columnNumber: 9
773
+ });
774
+ }
775
+ }, {
776
+ fileName: import.meta.url,
777
+ lineNumber: 477,
778
+ columnNumber: 7
779
+ });
780
+ }
781
+ }, {
782
+ fileName: import.meta.url,
783
+ lineNumber: 476,
784
+ columnNumber: 5
785
+ });
786
+ const tree = render(template);
787
+ expect(tree.contents[0].contents).toEqual(d`
788
+ 1
789
+ 2
790
+ 3
791
+ 4
792
+ 5
793
+ 6
794
+
795
+ `);
796
+ });
797
+ //# sourceMappingURL=formatting.test.js.map