@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,246 @@
1
+ import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
+ import { computed } from "@vue/reactivity";
3
+ import { join } from "pathe";
4
+ import { useContext } from "../context.js";
5
+ import { SourceDirectoryContext } from "../context/source-directory.js";
6
+ import { emitDiagnostic } from "../diagnostics.js";
7
+ import { createFileResource } from "../resource.js";
8
+ import { isComponentCreator } from "../runtime/component.js";
9
+ import { childrenArray } from "../utils.js";
10
+ import { SourceFile } from "./SourceFile.js";
11
+
12
+ // Regular expression for finding all sigils at once
13
+ const SIGIL_REGEX = /^(\s*)(.*alloy-(.+)-(start|end).*)$/gm;
14
+ /**
15
+ * A component that reads a file and returns content with new content appended
16
+ * at the end or within specific regions marked by alloy-\{region name\}-start/alloy-\{region name\}-end sigils.
17
+ *
18
+ * The component can append content in two ways:
19
+ * 1. **Simple append**: Content is appended to the end of the file
20
+ * 2. **Region-based append**: Content is appended before the end sigil on its own line
21
+ *
22
+ * Region sigils are line-based - any line containing "alloy-\{region name\}-start" or "alloy-\{region name\}-end"
23
+ * is considered a sigil.
24
+ *
25
+ * @example
26
+ * Simple append to end of file:
27
+ * ```tsx
28
+ * <AppendFile path="output.txt">
29
+ * <AppendRegion id="append">New content to add</AppendRegion>
30
+ * </AppendFile>
31
+ *
32
+ * // Returns:
33
+ * // Original file content
34
+ * // New content to add
35
+ * ```
36
+ *
37
+ * @example
38
+ * Append to specific regions:
39
+ * ```tsx
40
+ * // File content before:
41
+ * // Header content
42
+ * // <!-- alloy-main-start -->
43
+ * // <!-- alloy-main-end -->
44
+ * // Footer content
45
+ *
46
+ * <AppendFile path="template.html" regions={["main"]}>
47
+ * <AppendRegion id="main">New main content</AppendRegion>
48
+ * </AppendFile>
49
+ *
50
+ * // Returns:
51
+ * // Header content
52
+ * // <!-- alloy-main-start -->
53
+ * // New main content
54
+ * // <!-- alloy-main-end -->
55
+ * // Footer content
56
+ * ```
57
+ */
58
+ export function AppendFile(props) {
59
+ const regions = props.regions || ["append"];
60
+
61
+ // Get all children and filter for AppendRegion components
62
+ const children = childrenArray(() => props.children);
63
+ const appendRegions = {};
64
+
65
+ // Check if we have any AppendRegion components
66
+ let hasAppendRegions = false;
67
+ for (const child of children) {
68
+ if (isComponentCreator(child, AppendRegion)) {
69
+ hasAppendRegions = true;
70
+ const regionProps = child.props;
71
+ let content;
72
+ if ("children" in regionProps && regionProps.children !== undefined) {
73
+ content = regionProps.children;
74
+ } else if ("content" in regionProps) {
75
+ content = regionProps.content;
76
+ } else {
77
+ emitDiagnostic({
78
+ message: `AppendRegion "${regionProps.id}" must have either children or content`,
79
+ severity: "error"
80
+ });
81
+ // Still register the region to avoid duplicate "region not found" diagnostic
82
+ }
83
+ appendRegions[regionProps.id] = content;
84
+ }
85
+ }
86
+
87
+ // If no AppendRegion components found, treat all children as content for the default "append" region
88
+ if (!hasAppendRegions && children.length > 0) {
89
+ appendRegions["append"] = children;
90
+ }
91
+
92
+ // Validate that all requested regions have corresponding AppendRegion children
93
+ for (const regionId of regions) {
94
+ if (!(regionId in appendRegions)) {
95
+ emitDiagnostic({
96
+ message: `Region "${regionId}" specified but no corresponding AppendRegion child found`,
97
+ severity: "error"
98
+ });
99
+ }
100
+ }
101
+
102
+ // Read existing file content or start with empty string
103
+ const parentDirectory = useContext(SourceDirectoryContext);
104
+ const fullPath = join(parentDirectory ? parentDirectory.path : "", props.path);
105
+ const currentContents = createFileResource(fullPath);
106
+ const newFileContent = computed(() => {
107
+ if (currentContents.loading) {
108
+ return;
109
+ }
110
+ const fileContent = currentContents.error ? "" : currentContents.data;
111
+
112
+ // Find all sigils in the file
113
+ const sigilInfo = {};
114
+ const endSigils = [];
115
+
116
+ // Reset regex and find all sigils
117
+ SIGIL_REGEX.lastIndex = 0;
118
+ let match;
119
+ while ((match = SIGIL_REGEX.exec(fileContent)) !== null) {
120
+ const indent = match[1];
121
+ const fullLine = match[0];
122
+ const regionId = match[3];
123
+ const sigilType = match[4];
124
+ const index = match.index;
125
+
126
+ // Initialize sigil info for this region if not exists
127
+ if (!sigilInfo[regionId]) {
128
+ sigilInfo[regionId] = {
129
+ id: regionId,
130
+ start: null,
131
+ end: null
132
+ };
133
+ }
134
+ if (sigilType === "start") {
135
+ sigilInfo[regionId].start = index;
136
+ } else if (sigilType === "end") {
137
+ sigilInfo[regionId].end = index;
138
+
139
+ // If this is a region we care about, track it for processing
140
+ if (regions.includes(regionId)) {
141
+ endSigils.push({
142
+ regionId,
143
+ index,
144
+ indent,
145
+ line: fullLine
146
+ });
147
+ }
148
+ }
149
+ }
150
+
151
+ // Validate regions - check for unclosed regions
152
+ for (const regionId of regions) {
153
+ const info = sigilInfo[regionId];
154
+ if (info && info.start !== null && info.end === null) {
155
+ emitDiagnostic({
156
+ message: `Region "${regionId}" has start sigil but no corresponding end sigil`,
157
+ severity: "error"
158
+ });
159
+ }
160
+ }
161
+
162
+ // Check if we have any sigils to process
163
+ if (endSigils.length === 0) {
164
+ // No sigils found, append all regions to the end
165
+ const result = [fileContent];
166
+ for (const regionId of regions) {
167
+ if (fileContent && !fileContent.endsWith("\n")) {
168
+ result.push("\n");
169
+ }
170
+ result.push(appendRegions[regionId]);
171
+ }
172
+ return _$createComponent(SourceFile, {
173
+ get path() {
174
+ return props.path;
175
+ },
176
+ filetype: "text/plain",
177
+ children: result
178
+ }, {
179
+ fileName: import.meta.url,
180
+ lineNumber: 206,
181
+ columnNumber: 9
182
+ });
183
+ }
184
+
185
+ // Sort end sigils by their position in the file
186
+ endSigils.sort((a, b) => a.index - b.index);
187
+
188
+ // Process content with sigils
189
+ const result = [];
190
+ let lastIndex = 0;
191
+
192
+ // Process each end sigil in order
193
+ for (const {
194
+ regionId,
195
+ index,
196
+ indent,
197
+ line
198
+ } of endSigils) {
199
+ // Add content before this sigil
200
+ if (index > lastIndex) {
201
+ const beforeContent = fileContent.substring(lastIndex, index);
202
+ if (beforeContent) {
203
+ result.push(beforeContent);
204
+ }
205
+ }
206
+
207
+ // Add the new content with proper indentation
208
+ result.push(indent);
209
+ result.push(appendRegions[regionId]);
210
+ result.push("\n");
211
+
212
+ // Add the sigil line
213
+ result.push(line);
214
+
215
+ // Update last processed index
216
+ lastIndex = index + line.length;
217
+ }
218
+
219
+ // Add any remaining content after the last sigil
220
+ if (lastIndex < fileContent.length) {
221
+ const remainingPart = fileContent.substring(lastIndex);
222
+ if (remainingPart) {
223
+ result.push(remainingPart);
224
+ }
225
+ }
226
+ return result;
227
+ });
228
+ return _$createComponent(SourceFile, {
229
+ get path() {
230
+ return props.path;
231
+ },
232
+ filetype: "text/plain",
233
+ children: newFileContent
234
+ }, {
235
+ fileName: import.meta.url,
236
+ lineNumber: 252,
237
+ columnNumber: 5
238
+ });
239
+ }
240
+ export function AppendRegion(props) {
241
+ /**
242
+ * This component does nothing except hold props which are retrieved by
243
+ * the `AppendFile` component.
244
+ */
245
+ }
246
+ //# sourceMappingURL=AppendFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["computed","join","useContext","SourceDirectoryContext","emitDiagnostic","createFileResource","isComponentCreator","childrenArray","SourceFile","SIGIL_REGEX","AppendFile","props","regions","children","appendRegions","hasAppendRegions","child","AppendRegion","regionProps","content","undefined","message","id","severity","length","regionId","parentDirectory","fullPath","path","currentContents","newFileContent","loading","fileContent","error","data","sigilInfo","endSigils","lastIndex","match","exec","indent","fullLine","sigilType","index","start","end","includes","push","line","info","result","endsWith","_$createComponent","filetype","fileName","import","meta","url","lineNumber","columnNumber","sort","a","b","beforeContent","substring","remainingPart"],"sources":["../../../../src/components/AppendFile.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,66 @@
1
+ import { createIntrinsic as _$createIntrinsic, memo as _$memo, createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
+ import { createContentSlot } from "../content-slot.js";
3
+ import { computed } from "../reactivity.js";
4
+ import { Indent } from "./Indent.js";
5
+ /**
6
+ * Create an indented block of source text. The block has `opener` text which is
7
+ * added prior to the block, which defaults to `"{"`, and `closer` text which is
8
+ * added after the block, which defaults to `"}"`.
9
+ */
10
+ export function Block(props) {
11
+ const ContentSlot = createContentSlot();
12
+ const leadingNewline = computed(() => {
13
+ if (!props.newline) return false;
14
+
15
+ // When inline, we want a newline only when content breaks, otherwise a nothing..
16
+ if (props.inline) return _$createIntrinsic("sbr", {}, {
17
+ fileName: import.meta.url,
18
+ lineNumber: 41,
19
+ columnNumber: 30
20
+ });
21
+
22
+ // When not inline, we want a hardline when the slot has contents otherwise a space.
23
+ if (ContentSlot.hasContent) return _$createIntrinsic("hbr", {}, {
24
+ fileName: import.meta.url,
25
+ lineNumber: 44,
26
+ columnNumber: 40
27
+ });
28
+ return " ";
29
+ });
30
+ return _$createIntrinsic("group", {
31
+ get children() {
32
+ return [leadingNewline, _$memo(() => props.opener ?? "{", false, "props.opener ?? \u2026"), _$createComponent(Indent, {
33
+ get hardline() {
34
+ return !props.inline && ContentSlot.hasContent;
35
+ },
36
+ get line() {
37
+ return props.inline && ContentSlot.hasContent;
38
+ },
39
+ get softline() {
40
+ return !props.inline || ContentSlot.isEmpty;
41
+ },
42
+ trailingBreak: true,
43
+ get children() {
44
+ return _$createComponent(ContentSlot, {
45
+ get children() {
46
+ return props.children;
47
+ }
48
+ }, {
49
+ fileName: import.meta.url,
50
+ lineNumber: 58,
51
+ columnNumber: 9
52
+ });
53
+ }
54
+ }, {
55
+ fileName: import.meta.url,
56
+ lineNumber: 52,
57
+ columnNumber: 7
58
+ }), _$memo(() => props.closer ?? "}", false, "props.closer ?? \u2026")];
59
+ }
60
+ }, {
61
+ fileName: import.meta.url,
62
+ lineNumber: 49,
63
+ columnNumber: 5
64
+ });
65
+ }
66
+ //# sourceMappingURL=Block.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContentSlot","computed","Indent","Block","props","ContentSlot","leadingNewline","newline","inline","_$createIntrinsic","fileName","import","meta","url","lineNumber","columnNumber","hasContent","children","_$memo","opener","_$createComponent","hardline","line","softline","isEmpty","trailingBreak","closer"],"sources":["../../../../src/components/Block.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,iBAAiB;AAC1B,SAASC,QAAQ,QAAQ,kBAAkB;AAE3C,SAASC,MAAM;AA0Bf;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,KAAKA,CAACC,KAAiB,EAAE;EACvC,MAAMC,WAAW,GAAGL,iBAAiB,CAAC,CAAC;EACvC,MAAMM,cAAc,GAAGL,QAAQ,CAAC,MAAM;IACpC,IAAI,CAACG,KAAK,CAACG,OAAO,EAAE,OAAO,KAAK;;IAEhC;IACA,IAAIH,KAAK,CAACI,MAAM,EAAE,OAAAC,iBAAA;MAAAC,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA;;IAElB;IACA,IAAIV,WAAW,CAACW,UAAU,EAAE,OAAAP,iBAAA;MAAAC,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA;IAE5B,OAAO,GAAG;EACZ,CAAC,CAAC;EACF,OAAAN,iBAAA;IAAA,IAAAQ,SAAA;MAAA,QAEKX,cAAc,EAAAY,MAAA,OACdd,KAAK,CAACe,MAAM,IAAI,GAAG,oCAAAC,iBAAA,CACnBlB,MAAM;QAAA,IACLmB,QAAQA,CAAA;UAAA,OAAE,CAACjB,KAAK,CAACI,MAAM,IAAIH,WAAW,CAACW,UAAU;QAAA;QAAA,IACjDM,IAAIA,CAAA;UAAA,OAAElB,KAAK,CAACI,MAAM,IAAIH,WAAW,CAACW,UAAU;QAAA;QAAA,IAC5CO,QAAQA,CAAA;UAAA,OAAE,CAACnB,KAAK,CAACI,MAAM,IAAIH,WAAW,CAACmB,OAAO;QAAA;QAC9CC,aAAa;QAAA,IAAAR,SAAA;UAAA,OAAAG,iBAAA,CAEZf,WAAW;YAAA,IAAAY,SAAA;cAAA,OAAEb,KAAK,CAACa,QAAQ;YAAA;UAAA;YAAAP,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA;QAAA;MAAA;QAAAL,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,IAAAG,MAAA,OAE7Bd,KAAK,CAACsB,MAAM,IAAI,GAAG;IAAA;EAAA;IAAAhB,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA;AAG1B","ignoreList":[]}
@@ -0,0 +1,16 @@
1
+ import { join } from "pathe";
2
+ import { useContext } from "../context.js";
3
+ import { SourceDirectoryContext } from "../context/source-directory.js";
4
+ import { getContext } from "../reactivity.js";
5
+ export function CopyFile(props) {
6
+ const parentDirectory = useContext(SourceDirectoryContext);
7
+ const context = {
8
+ path: join(parentDirectory ? parentDirectory.path : "", props.path),
9
+ sourcePath: props.src
10
+ };
11
+ parentDirectory?.addContent(context);
12
+ const nodeContext = getContext();
13
+ nodeContext.meta ??= {};
14
+ nodeContext.meta.copyFile = context;
15
+ }
16
+ //# sourceMappingURL=CopyFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["join","useContext","SourceDirectoryContext","getContext","CopyFile","props","parentDirectory","context","path","sourcePath","src","addContent","nodeContext","meta","copyFile"],"sources":["../../../../src/components/CopyFile.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,SAASC,UAAU,QAAQ,eAAe;AAC1C,SAASC,sBAAsB,QAAQ,gCAAgC;AAEvE,SAASC,UAAU,QAAQ,kBAAkB;AAc7C,OAAO,SAASC,QAAQA,CAACC,KAAoB,EAAE;EAC7C,MAAMC,eAAe,GAAGL,UAAU,CAACC,sBAAsB,CAAE;EAC3D,MAAMK,OAAwB,GAAG;IAC/BC,IAAI,EAAER,IAAI,CAACM,eAAe,GAAGA,eAAe,CAACE,IAAI,GAAG,EAAE,EAAEH,KAAK,CAACG,IAAI,CAAC;IACnEC,UAAU,EAAEJ,KAAK,CAACK;EACpB,CAAC;EACDJ,eAAe,EAAEK,UAAU,CAACJ,OAAO,CAAC;EACpC,MAAMK,WAAW,GAAGT,UAAU,CAAC,CAAE;EACjCS,WAAW,CAACC,IAAI,KAAK,CAAC,CAAC;EACvBD,WAAW,CAACC,IAAI,CAACC,QAAQ,GAAGP,OAAO;AACrC","ignoreList":[]}
@@ -0,0 +1,70 @@
1
+ import { memo as _$memo, createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
+ import { createSymbol } from "../binder.js";
3
+ import { useContext } from "../context.js";
4
+ import { BinderContext } from "../context/binder.js";
5
+ import { DeclarationContext } from "../context/declaration.js";
6
+ import { useScope } from "../context/scope.js";
7
+ import { onCleanup } from "../reactivity.js";
8
+ import { BasicScope } from "../symbols/basic-scope.js";
9
+ import { BasicSymbol } from "../symbols/basic-symbol.js";
10
+
11
+ /**
12
+ * Create a declaration by providing an already created symbol. The symbol is
13
+ * merely exposed via {@link DeclarationContext}.
14
+ */
15
+
16
+ /**
17
+ * Create a declaration by providing a symbol name and optional symbol metadata.
18
+ */
19
+
20
+ /**
21
+ * Declares a symbol in the current scope for this component's children.
22
+ *
23
+ * @remarks
24
+ *
25
+ * This component must be called in one of two ways: with a name and an optional
26
+ * refkey, or else passing in the symbol. When called with a name and refkey, a
27
+ * symbol will be created in the current scope (provided by
28
+ * {@link ScopeContext}) with that name and refkey.
29
+ *
30
+ * When called with a symbol, that symbol is merely exposed via
31
+ * {@link DeclarationContext}. It is assumed that the caller of this component
32
+ * has created the symbol with the `createSymbol` API on the
33
+ * {@link BinderContext }.
34
+ *
35
+ * @see {@link BinderContext}
36
+ */
37
+ export function Declaration(props) {
38
+ const binder = useContext(BinderContext);
39
+ if (!binder) {
40
+ throw new Error("Need binder context to create declarations");
41
+ }
42
+ let declaration;
43
+ if ("symbol" in props) {
44
+ declaration = props.symbol;
45
+ } else {
46
+ const scope = useScope();
47
+ if (!(scope instanceof BasicScope)) {
48
+ throw new Error(`Declaration component cannot create a symbol in a non-basic scope: ${scope}`);
49
+ }
50
+ declaration = createSymbol(BasicSymbol, props.name, scope.symbols, {
51
+ binder,
52
+ refkeys: [props.refkey ?? []].flat(),
53
+ metadata: props.metadata
54
+ });
55
+ onCleanup(() => {
56
+ declaration.delete();
57
+ });
58
+ }
59
+ return _$createComponent(DeclarationContext.Provider, {
60
+ value: declaration,
61
+ get children() {
62
+ return props.children;
63
+ }
64
+ }, {
65
+ fileName: import.meta.url,
66
+ lineNumber: 99,
67
+ columnNumber: 5
68
+ });
69
+ }
70
+ //# sourceMappingURL=Declaration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createSymbol","useContext","BinderContext","DeclarationContext","useScope","onCleanup","BasicScope","BasicSymbol","Declaration","props","binder","Error","declaration","symbol","scope","name","symbols","refkeys","refkey","flat","metadata","delete","_$createComponent","Provider","value","children","fileName","import","meta","url","lineNumber","columnNumber"],"sources":["../../../../src/components/Declaration.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,YAAY,QAAQ,cAAc;AAC3C,SAASC,UAAU,QAAQ,eAAe;AAC1C,SAASC,aAAa,QAAQ,sBAAsB;AACpD,SAASC,kBAAkB,QAAQ,2BAA2B;AAC9D,SAASC,QAAQ,QAAQ,qBAAqB;AAC9C,SAASC,SAAS,QAAQ,kBAAkB;AAG5C,SAASC,UAAU,QAAQ,2BAA2B;AACtD,SAASC,WAAW,QAAQ,4BAA4B;;AAGxD;AACA;AACA;AACA;;AAWA;AACA;AACA;;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAACC,KAAuB,EAAE;EACnD,MAAMC,MAAM,GAAGT,UAAU,CAACC,aAAa,CAAC;EACxC,IAAI,CAACQ,MAAM,EAAE;IACX,MAAM,IAAIC,KAAK,CAAC,4CAA4C,CAAC;EAC/D;EAEA,IAAIC,WAAyB;EAC7B,IAAI,QAAQ,IAAIH,KAAK,EAAE;IACrBG,WAAW,GAAGH,KAAK,CAACI,MAAM;EAC5B,CAAC,MAAM;IACL,MAAMC,KAAK,GAAGV,QAAQ,CAAC,CAAC;IACxB,IAAI,EAAEU,KAAK,YAAYR,UAAU,CAAC,EAAE;MAClC,MAAM,IAAIK,KAAK,CACb,sEAAsEG,KAAK,EAC7E,CAAC;IACH;IAEAF,WAAW,GAAGZ,YAAY,CAACO,WAAW,EAAEE,KAAK,CAACM,IAAI,EAAED,KAAK,CAACE,OAAO,EAAE;MACjEN,MAAM;MACNO,OAAO,EAAE,CAACR,KAAK,CAACS,MAAM,IAAI,EAAE,CAAC,CAACC,IAAI,CAAC,CAAC;MACpCC,QAAQ,EAAEX,KAAK,CAACW;IAClB,CAAC,CAAC;IAEFf,SAAS,CAAC,MAAM;MACdO,WAAW,CAACS,MAAM,CAAC,CAAC;IACtB,CAAC,CAAC;EACJ;EAEA,OAAAC,iBAAA,CACGnB,kBAAkB,CAACoB,QAAQ;IAACC,KAAK,EAAEZ,WAAW;IAAA,IAAAa,SAAA;MAAA,OAC5ChB,KAAK,CAACgB,QAAQ;IAAA;EAAA;IAAAC,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA;AAGrB","ignoreList":[]}
@@ -0,0 +1,40 @@
1
+ import { isRef } from "@vue/reactivity";
2
+ import { memo } from "../reactivity.js";
3
+ import { baseListPropsToMapJoinArgs, mapJoin } from "../utils.js";
4
+ /**
5
+ * The For component iterates over the provided array and invokes the child
6
+ * callback for each item. It can optionally be provided with a `joiner` which
7
+ * is placed between each item, and an `ender` which is placed after the last
8
+ * item when there is at least one item.
9
+ *
10
+ * @example
11
+ *
12
+ * ```tsx
13
+ * const items = ["apple", "pear", "plum"];
14
+ * return <For each={items}>
15
+ * {(item) => <>Fruit: {item}</>}
16
+ * </For>
17
+ * ```
18
+ *
19
+ * @remarks
20
+ *
21
+ * When the `each` prop is a reactive (e.g. a reactive array, or ref to an
22
+ * array), `For` will automatically update when the array changes. When doing
23
+ * so, it will attempt to avoid re-rendering items which have not changed. For
24
+ * example, when appending an item to a reactive array, existing items will not
25
+ * be re-rendered. Note that presently the implementation is fairly simple -
26
+ * when making modifications to the middle of an array it likely that every
27
+ * element after the modification will be rerendered.
28
+ *
29
+ * @see {@link (mapJoin:1)} for mapping arrays to elements outside of JSX templates.
30
+ */
31
+ export function For(props) {
32
+ const cb = props.children;
33
+ const options = baseListPropsToMapJoinArgs(props);
34
+ options.skipFalsy = props.skipFalsy;
35
+ return memo(() => {
36
+ const maybeRef = props.each;
37
+ return mapJoin(typeof maybeRef === "function" ? maybeRef : () => isRef(maybeRef) ? maybeRef.value : maybeRef, cb, options);
38
+ }, undefined, "For");
39
+ }
40
+ //# sourceMappingURL=For.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isRef","memo","baseListPropsToMapJoinArgs","mapJoin","For","props","cb","children","options","skipFalsy","maybeRef","each","value","undefined"],"sources":["../../../../src/components/For.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,KAAK,QAAa,iBAAiB;AAC5C,SAASC,IAAI,QAAQ,kBAAkB;AAEvC,SAASC,0BAA0B,EAAEC,OAAO,QAAQ,aAAa;AA0CjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,GAAGA,CAMjBC,KAAqB,EAAE;EACvB,MAAMC,EAAE,GAAGD,KAAK,CAACE,QAAQ;EACzB,MAAMC,OAAO,GAAGN,0BAA0B,CAACG,KAAK,CAAC;EACjDG,OAAO,CAACC,SAAS,GAAGJ,KAAK,CAACI,SAAS;EACnC,OAAOR,IAAI,CACT,MAAM;IACJ,MAAMS,QAAQ,GAAGL,KAAK,CAACM,IAAI;IAE3B,OAAQR,OAAO,CACb,OAAOO,QAAQ,KAAK,UAAU,GAAGA,QAAQ,GACvC,MAAOV,KAAK,CAACU,QAAQ,CAAC,GAAGA,QAAQ,CAACE,KAAK,GAAGF,QAC3C,EACDJ,EAAE,EACFE,OACF,CAAC;EACH,CAAC,EACDK,SAAS,EACT,KACF,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ import { createIntrinsic as _$createIntrinsic, memo as _$memo } from "@alloy-js/core/jsx-runtime";
2
+ import { computed } from "@vue/reactivity";
3
+ /**
4
+ * Create an indented block of source text. The indented block starts a new line
5
+ * at the new indentation level and, with `trailingBreak`, ends with a new line
6
+ * after restoring the indentation level. The default line break is a hard line
7
+ * break suitable for typical blocks of statements but can be configured.
8
+ */
9
+ export function Indent(props) {
10
+ const breakElem = computed(() => props.nobreak ? "" : props.hardline ? _$createIntrinsic("hbr", {}, {
11
+ fileName: import.meta.url,
12
+ lineNumber: 46,
13
+ columnNumber: 24
14
+ }) : props.softline ? _$createIntrinsic("sbr", {}, {
15
+ fileName: import.meta.url,
16
+ lineNumber: 47,
17
+ columnNumber: 24
18
+ }) : props.line ? _$createIntrinsic("br", {}, {
19
+ fileName: import.meta.url,
20
+ lineNumber: 48,
21
+ columnNumber: 20
22
+ }) : _$createIntrinsic("hbr", {}, {
23
+ fileName: import.meta.url,
24
+ lineNumber: 49,
25
+ columnNumber: 7
26
+ }));
27
+ return [_$createIntrinsic("indent", {
28
+ get children() {
29
+ return [breakElem, _$memo(() => props.children, false, "props.children")];
30
+ }
31
+ }, {
32
+ fileName: import.meta.url,
33
+ lineNumber: 54,
34
+ columnNumber: 7
35
+ }), _$memo(() => props.trailingBreak && breakElem, false, "props.trailingBreak && \u2026")];
36
+ }
37
+ //# sourceMappingURL=Indent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["computed","Indent","props","breakElem","nobreak","hardline","_$createIntrinsic","fileName","import","meta","url","lineNumber","columnNumber","softline","line","children","_$memo","trailingBreak"],"sources":["../../../../src/components/Indent.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,QAAQ,QAAQ,iBAAiB;AAoC1C;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAACC,KAAkB,EAAE;EACzC,MAAMC,SAAS,GAAGH,QAAQ,CAAC,MACzBE,KAAK,CAACE,OAAO,GAAG,EAAE,GAChBF,KAAK,CAACG,QAAQ,GAAAC,iBAAA;IAAAC,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA,KACdV,KAAK,CAACW,QAAQ,GAAAP,iBAAA;IAAAC,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA,KACdV,KAAK,CAACY,IAAI,GAAAR,iBAAA;IAAAC,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA,KAAAN,iBAAA;IAAAC,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA,EAEd,CAAC;EAED,QAAAN,iBAAA;IAAA,IAAAS,SAAA;MAAA,QAGOZ,SAAS,EAAAa,MAAA,OACTd,KAAK,CAACa,QAAQ;IAAA;EAAA;IAAAR,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA,IAAAI,MAAA,OAEhBd,KAAK,CAACe,aAAa,IAAId,SAAS;AAGvC","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ import { mergeProps as _$mergeProps, createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
+ import { splitProps } from "../props-combinators.js";
3
+ import { memo } from "../reactivity.js";
4
+ import { childrenArray } from "../utils.js";
5
+ import { For } from "./For.js";
6
+ /**
7
+ * Create a list of children with text between each child. The text to join with
8
+ * is specified by providing either `joiner` children, or providing boolean
9
+ * props for the punctuation and line breaks. The default joiner is no
10
+ * punctuation and a hard break. The `ender` prop can provide text to place at
11
+ * the end of the list when there is at least one child.
12
+ */
13
+ export function List(props) {
14
+ const [rest, forProps] = splitProps(props, ["children"]);
15
+ const resolvedChildren = memo(() => childrenArray(() => rest.children, {
16
+ preserveFragments: true
17
+ }), undefined, "List:children");
18
+ return _$createComponent(For, _$mergeProps({
19
+ each: resolvedChildren
20
+ }, forProps, {
21
+ skipFalsy: true,
22
+ children: child => child
23
+ }), {
24
+ fileName: import.meta.url,
25
+ lineNumber: 69,
26
+ columnNumber: 5
27
+ });
28
+ }
29
+ //# sourceMappingURL=List.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["splitProps","memo","childrenArray","For","List","props","rest","forProps","resolvedChildren","children","preserveFragments","undefined","_$createComponent","_$mergeProps","each","skipFalsy","child","fileName","import","meta","url","lineNumber","columnNumber"],"sources":["../../../../src/components/List.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,UAAU,QAAQ,yBAAyB;AACpD,SAASC,IAAI,QAAQ,kBAAkB;AAEvC,SAASC,aAAa,QAAQ,aAAa;AAC3C,SAASC,GAAG;AA8CZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,IAAIA,CAACC,KAAgB,EAAE;EACrC,MAAM,CAACC,IAAI,EAAEC,QAAQ,CAAC,GAAGP,UAAU,CAACK,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC;EACxD,MAAMG,gBAAgB,GAAGP,IAAI,CAC3B,MACEC,aAAa,CAAC,MAAMI,IAAI,CAACG,QAAQ,EAAE;IACjCC,iBAAiB,EAAE;EACrB,CAAC,CAAC,EACJC,SAAS,EACT,eACF,CAAC;EACD,OAAAC,iBAAA,CACGT,GAAG,EAAAU,YAAA;IAACC,IAAI,EAAEN;EAAgB,GAAMD,QAAQ;IAAEQ,SAAS;IAAAN,QAAA,EAChDO,KAAK,IAAKA;EAAK;IAAAC,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA;AAGvB","ignoreList":[]}
@@ -0,0 +1,70 @@
1
+ import { memo as _$memo, createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
+ import { useContext } from "../context.js";
3
+ import { BinderContext } from "../context/binder.js";
4
+ import { MemberDeclarationContext } from "../context/member-declaration.js";
5
+ import { useMemberContext } from "../context/member-scope.js";
6
+ import { BasicSymbol } from "../symbols/basic-symbol.js";
7
+
8
+ /**
9
+ * Create a member declaration by providing a symbol name and optional symbol
10
+ * metadata.
11
+ */
12
+
13
+ /**
14
+ * Create a declaration by providing an already created symbol. The symbol is
15
+ * merely exposed via {@link DeclarationContext}.
16
+ */
17
+
18
+ /**
19
+ * Declares a symbol in the current member scope for this component's children.
20
+ *
21
+ * @remarks
22
+ *
23
+ * This component must be called in one of two ways: with a name and an optional
24
+ * refkey, or else passing in the symbol. When called with a name and refkey, a
25
+ * symbol will be created in the current scope (provided by
26
+ * {@link MemberDeclarationContext}) with that name and refkey. If a refkey is not
27
+ * provided, `refkey(props.name)` is used.
28
+ *
29
+ * When called with a symbol, that symbol is merely exposed via
30
+ * {@link MemberDeclarationContext}. It is assumed that the caller of this component
31
+ * has created the symbol with the `createSymbol` API on the
32
+ * {@link BinderContext}.
33
+ *
34
+ * @see {@link BinderContext}
35
+ */
36
+ export function MemberDeclaration(props) {
37
+ const binder = useContext(BinderContext);
38
+ if (!binder) {
39
+ throw new Error("Need binder context to create declarations");
40
+ }
41
+ let declaration;
42
+ if ("symbol" in props && props.symbol) {
43
+ declaration = props.symbol;
44
+ } else {
45
+ const infoProps = props;
46
+ if (!infoProps.name) {
47
+ throw new Error("Must provide a member name, or else provide a member symbol");
48
+ }
49
+ const scopeContext = useMemberContext();
50
+ if (!(scopeContext.ownerSymbol instanceof BasicSymbol)) {
51
+ throw new Error(`MemberDeclaration component cannot create a symbol in a non-basic scope: ${scopeContext.ownerSymbol}`);
52
+ }
53
+ const space = infoProps.static ? scopeContext.ownerSymbol.staticMembers : scopeContext.ownerSymbol.instanceMembers;
54
+ declaration = new BasicSymbol(infoProps.name, space, {
55
+ refkeys: infoProps.refkey,
56
+ metadata: infoProps.metadata
57
+ });
58
+ }
59
+ return _$createComponent(MemberDeclarationContext.Provider, {
60
+ value: declaration,
61
+ get children() {
62
+ return props.children;
63
+ }
64
+ }, {
65
+ fileName: import.meta.url,
66
+ lineNumber: 108,
67
+ columnNumber: 5
68
+ });
69
+ }
70
+ //# sourceMappingURL=MemberDeclaration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useContext","BinderContext","MemberDeclarationContext","useMemberContext","BasicSymbol","MemberDeclaration","props","binder","Error","declaration","symbol","infoProps","name","scopeContext","ownerSymbol","space","static","staticMembers","instanceMembers","refkeys","refkey","metadata","_$createComponent","Provider","value","children","fileName","import","meta","url","lineNumber","columnNumber"],"sources":["../../../../src/components/MemberDeclaration.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,UAAU,QAAQ,eAAe;AAC1C,SAASC,aAAa,QAAQ,sBAAsB;AACpD,SAASC,wBAAwB,QAAQ,kCAAkC;AAC3E,SAASC,gBAAgB,QAAQ,4BAA4B;AAG7D,SAASC,WAAW,QAAQ,4BAA4B;;AAGxD;AACA;AACA;AACA;;AAyBA;AACA;AACA;AACA;;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAACC,KAA6B,EAAE;EAC/D,MAAMC,MAAM,GAAGP,UAAU,CAACC,aAAa,CAAC;EACxC,IAAI,CAACM,MAAM,EAAE;IACX,MAAM,IAAIC,KAAK,CAAC,4CAA4C,CAAC;EAC/D;EAEA,IAAIC,WAAW;EACf,IAAI,QAAQ,IAAIH,KAAK,IAAIA,KAAK,CAACI,MAAM,EAAE;IACrCD,WAAW,GAAGH,KAAK,CAACI,MAAM;EAC5B,CAAC,MAAM;IACL,MAAMC,SAAS,GAAGL,KAAuC;IACzD,IAAI,CAACK,SAAS,CAACC,IAAI,EAAE;MACnB,MAAM,IAAIJ,KAAK,CACb,6DACF,CAAC;IACH;IAEA,MAAMK,YAAY,GAAGV,gBAAgB,CAAC,CAAE;IACxC,IAAI,EAAEU,YAAY,CAACC,WAAW,YAAYV,WAAW,CAAC,EAAE;MACtD,MAAM,IAAII,KAAK,CACb,4EAA4EK,YAAY,CAACC,WAAW,EACtG,CAAC;IACH;IACA,MAAMC,KAAK,GACTJ,SAAS,CAACK,MAAM,GACdH,YAAY,CAACC,WAAW,CAACG,aAAa,GACtCJ,YAAY,CAACC,WAAW,CAACI,eAAe;IAC5CT,WAAW,GAAG,IAAIL,WAAW,CAACO,SAAS,CAACC,IAAI,EAAEG,KAAK,EAAE;MACnDI,OAAO,EAAER,SAAS,CAACS,MAAM;MACzBC,QAAQ,EAAEV,SAAS,CAACU;IACtB,CAAC,CAAC;EACJ;EAEA,OAAAC,iBAAA,CACGpB,wBAAwB,CAACqB,QAAQ;IAACC,KAAK,EAAEf,WAAW;IAAA,IAAAgB,SAAA;MAAA,OAClDnB,KAAK,CAACmB,QAAQ;IAAA;EAAA;IAAAC,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA;AAGrB","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ import { memo as _$memo } from "@alloy-js/core/jsx-runtime";
2
+ import { useContext } from "../context.js";
3
+ import { MemberDeclarationContext } from "../context/member-declaration.js";
4
+ export function MemberName() {
5
+ const declSymbol = useContext(MemberDeclarationContext);
6
+ if (!declSymbol) {
7
+ return "(no member declaration context)";
8
+ }
9
+ return [_$memo(() => declSymbol.name, false, "declSymbol.name")];
10
+ }
11
+ //# sourceMappingURL=MemberName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useContext","MemberDeclarationContext","MemberName","declSymbol","_$memo","name"],"sources":["../../../../src/components/MemberName.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,UAAU,QAAQ,eAAe;AAC1C,SAASC,wBAAwB,QAAQ,kCAAkC;AAE3E,OAAO,SAASC,UAAUA,CAAA,EAAG;EAC3B,MAAMC,UAAU,GAAGH,UAAU,CAACC,wBAAwB,CAAC;EACvD,IAAI,CAACE,UAAU,EAAE;IACf,OAAO,iCAAiC;EAC1C;EAEA,QAAAC,MAAA,OAAUD,UAAU,CAACE,IAAI;AAC3B","ignoreList":[]}