@alloy-js/core 0.23.0-dev.11 → 0.23.0-dev.13

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 (380) 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 +164 -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.browser.js +24 -0
  114. package/dist/dev/src/debug/source-map.browser.js.map +1 -0
  115. package/dist/dev/src/debug/source-map.js +111 -0
  116. package/dist/dev/src/debug/source-map.js.map +1 -0
  117. package/dist/dev/src/debug/symbols.js +196 -0
  118. package/dist/dev/src/debug/symbols.js.map +1 -0
  119. package/dist/dev/src/debug/symbols.test.js +93 -0
  120. package/dist/dev/src/debug/symbols.test.js.map +1 -0
  121. package/dist/dev/src/debug/trace-writer.js +658 -0
  122. package/dist/dev/src/debug/trace-writer.js.map +1 -0
  123. package/dist/dev/src/debug/trace.js +460 -0
  124. package/dist/dev/src/debug/trace.js.map +1 -0
  125. package/dist/dev/src/devtools/devtools-protocol.js +2 -0
  126. package/dist/dev/src/devtools/devtools-protocol.js.map +1 -0
  127. package/dist/dev/src/devtools/devtools-server.browser.js +33 -0
  128. package/dist/dev/src/devtools/devtools-server.browser.js.map +1 -0
  129. package/dist/dev/src/devtools/devtools-server.js +444 -0
  130. package/dist/dev/src/devtools/devtools-server.js.map +1 -0
  131. package/dist/dev/src/devtools/devtools-transport.js +114 -0
  132. package/dist/dev/src/devtools/devtools-transport.js.map +1 -0
  133. package/dist/dev/src/devtools-entry.browser.js +2 -0
  134. package/dist/dev/src/devtools-entry.browser.js.map +1 -0
  135. package/dist/dev/src/devtools-entry.js +2 -0
  136. package/dist/dev/src/devtools-entry.js.map +1 -0
  137. package/dist/dev/src/diagnostics.js +89 -0
  138. package/dist/dev/src/diagnostics.js.map +1 -0
  139. package/dist/dev/src/host/alloy-host.browser.js +32 -0
  140. package/dist/dev/src/host/alloy-host.browser.js.map +1 -0
  141. package/dist/dev/src/host/alloy-host.js +144 -0
  142. package/dist/dev/src/host/alloy-host.js.map +1 -0
  143. package/dist/dev/src/host/interface.js +2 -0
  144. package/dist/dev/src/host/interface.js.map +1 -0
  145. package/dist/dev/src/host/node-host.browser.js +21 -0
  146. package/dist/dev/src/host/node-host.browser.js.map +1 -0
  147. package/dist/dev/src/host/node-host.js +20 -0
  148. package/dist/dev/src/host/node-host.js.map +1 -0
  149. package/dist/dev/src/index.browser.js +3 -0
  150. package/dist/dev/src/index.browser.js.map +1 -0
  151. package/dist/dev/src/index.js +27 -0
  152. package/dist/dev/src/index.js.map +1 -0
  153. package/dist/dev/src/inspect.browser.js +6 -0
  154. package/dist/dev/src/inspect.browser.js.map +1 -0
  155. package/dist/dev/src/inspect.js +2 -0
  156. package/dist/dev/src/inspect.js.map +1 -0
  157. package/dist/dev/src/jsx-runtime.js +17 -0
  158. package/dist/dev/src/jsx-runtime.js.map +1 -0
  159. package/dist/dev/src/library-symbol-reference.js +5 -0
  160. package/dist/dev/src/library-symbol-reference.js.map +1 -0
  161. package/dist/dev/src/name-policy.js +24 -0
  162. package/dist/dev/src/name-policy.js.map +1 -0
  163. package/dist/dev/src/pretty-string/pretty-string.js +100 -0
  164. package/dist/dev/src/pretty-string/pretty-string.js.map +1 -0
  165. package/dist/dev/src/pretty-string/pretty-string.test.js +38 -0
  166. package/dist/dev/src/pretty-string/pretty-string.test.js.map +1 -0
  167. package/dist/dev/src/print-hook.js +10 -0
  168. package/dist/dev/src/print-hook.js.map +1 -0
  169. package/dist/dev/src/props-combinators.js +109 -0
  170. package/dist/dev/src/props-combinators.js.map +1 -0
  171. package/dist/dev/src/reactive-union-set.js +213 -0
  172. package/dist/dev/src/reactive-union-set.js.map +1 -0
  173. package/dist/dev/src/reactivity.js +426 -0
  174. package/dist/dev/src/reactivity.js.map +1 -0
  175. package/dist/dev/src/refkey.js +167 -0
  176. package/dist/dev/src/refkey.js.map +1 -0
  177. package/dist/dev/src/render-stack.js +252 -0
  178. package/dist/dev/src/render-stack.js.map +1 -0
  179. package/dist/dev/src/render.js +872 -0
  180. package/dist/dev/src/render.js.map +1 -0
  181. package/dist/dev/src/resource.js +124 -0
  182. package/dist/dev/src/resource.js.map +1 -0
  183. package/dist/dev/src/runtime/component.js +41 -0
  184. package/dist/dev/src/runtime/component.js.map +1 -0
  185. package/dist/dev/src/runtime/intrinsic.js +12 -0
  186. package/dist/dev/src/runtime/intrinsic.js.map +1 -0
  187. package/dist/dev/src/scheduler.js +217 -0
  188. package/dist/dev/src/scheduler.js.map +1 -0
  189. package/dist/dev/src/stc.js +40 -0
  190. package/dist/dev/src/stc.js.map +1 -0
  191. package/dist/dev/src/sti.js +31 -0
  192. package/dist/dev/src/sti.js.map +1 -0
  193. package/dist/dev/src/symbols/basic-scope.js +21 -0
  194. package/dist/dev/src/symbols/basic-scope.js.map +1 -0
  195. package/dist/dev/src/symbols/basic-symbol.js +34 -0
  196. package/dist/dev/src/symbols/basic-symbol.js.map +1 -0
  197. package/dist/dev/src/symbols/decl.js +26 -0
  198. package/dist/dev/src/symbols/decl.js.map +1 -0
  199. package/dist/dev/src/symbols/index.js +10 -0
  200. package/dist/dev/src/symbols/index.js.map +1 -0
  201. package/dist/dev/src/symbols/output-scope.js +202 -0
  202. package/dist/dev/src/symbols/output-scope.js.map +1 -0
  203. package/dist/dev/src/symbols/output-space.js +36 -0
  204. package/dist/dev/src/symbols/output-space.js.map +1 -0
  205. package/dist/dev/src/symbols/output-symbol.js +504 -0
  206. package/dist/dev/src/symbols/output-symbol.js.map +1 -0
  207. package/dist/dev/src/symbols/symbol-flow.js +106 -0
  208. package/dist/dev/src/symbols/symbol-flow.js.map +1 -0
  209. package/dist/dev/src/symbols/symbol-slot.js +68 -0
  210. package/dist/dev/src/symbols/symbol-slot.js.map +1 -0
  211. package/dist/dev/src/symbols/symbol-slot.test.js +43 -0
  212. package/dist/dev/src/symbols/symbol-slot.test.js.map +1 -0
  213. package/dist/dev/src/symbols/symbol-table.js +93 -0
  214. package/dist/dev/src/symbols/symbol-table.js.map +1 -0
  215. package/dist/dev/src/tap.js +109 -0
  216. package/dist/dev/src/tap.js.map +1 -0
  217. package/dist/dev/src/trace.js +2 -0
  218. package/dist/dev/src/trace.js.map +1 -0
  219. package/dist/dev/src/tracer.js +180 -0
  220. package/dist/dev/src/tracer.js.map +1 -0
  221. package/dist/dev/src/utils.js +487 -0
  222. package/dist/dev/src/utils.js.map +1 -0
  223. package/dist/dev/src/write-output.js +48 -0
  224. package/dist/dev/src/write-output.js.map +1 -0
  225. package/dist/dev/test/browser-build.test.js +85 -0
  226. package/dist/dev/test/browser-build.test.js.map +1 -0
  227. package/dist/dev/test/children.test.js +44 -0
  228. package/dist/dev/test/children.test.js.map +1 -0
  229. package/dist/dev/test/components/append-file.test.js +394 -0
  230. package/dist/dev/test/components/append-file.test.js.map +1 -0
  231. package/dist/dev/test/components/block.test.js +83 -0
  232. package/dist/dev/test/components/block.test.js.map +1 -0
  233. package/dist/dev/test/components/copy-file.test.js +119 -0
  234. package/dist/dev/test/components/copy-file.test.js.map +1 -0
  235. package/dist/dev/test/components/declaration.test.js +40 -0
  236. package/dist/dev/test/components/declaration.test.js.map +1 -0
  237. package/dist/dev/test/components/list.test.js +250 -0
  238. package/dist/dev/test/components/list.test.js.map +1 -0
  239. package/dist/dev/test/components/prose.test.js +42 -0
  240. package/dist/dev/test/components/prose.test.js.map +1 -0
  241. package/dist/dev/test/components/reference-or-content.test.js +246 -0
  242. package/dist/dev/test/components/reference-or-content.test.js.map +1 -0
  243. package/dist/dev/test/components/source-file.test.js +271 -0
  244. package/dist/dev/test/components/source-file.test.js.map +1 -0
  245. package/dist/dev/test/components/template-file.test.js +200 -0
  246. package/dist/dev/test/components/template-file.test.js.map +1 -0
  247. package/dist/dev/test/components/update-file.test.js +210 -0
  248. package/dist/dev/test/components/update-file.test.js.map +1 -0
  249. package/dist/dev/test/components/wrap.test.js +48 -0
  250. package/dist/dev/test/components/wrap.test.js.map +1 -0
  251. package/dist/dev/test/control-flow/for.test.js +318 -0
  252. package/dist/dev/test/control-flow/for.test.js.map +1 -0
  253. package/dist/dev/test/control-flow/match.test.js +112 -0
  254. package/dist/dev/test/control-flow/match.test.js.map +1 -0
  255. package/dist/dev/test/control-flow/show.test.js +38 -0
  256. package/dist/dev/test/control-flow/show.test.js.map +1 -0
  257. package/dist/dev/test/lazy-isempty.test.js +121 -0
  258. package/dist/dev/test/lazy-isempty.test.js.map +1 -0
  259. package/dist/dev/test/name-policy.test.js +28 -0
  260. package/dist/dev/test/name-policy.test.js.map +1 -0
  261. package/dist/dev/test/props-with-defaults.test.js +94 -0
  262. package/dist/dev/test/props-with-defaults.test.js.map +1 -0
  263. package/dist/dev/test/reactive-union-set-disposers.test.js +98 -0
  264. package/dist/dev/test/reactive-union-set-disposers.test.js.map +1 -0
  265. package/dist/dev/test/reactive-union-set.test.js +171 -0
  266. package/dist/dev/test/reactive-union-set.test.js.map +1 -0
  267. package/dist/dev/test/reactivity/circular-reactives.test.js +62 -0
  268. package/dist/dev/test/reactivity/circular-reactives.test.js.map +1 -0
  269. package/dist/dev/test/reactivity/cleanup.test.js +96 -0
  270. package/dist/dev/test/reactivity/cleanup.test.js.map +1 -0
  271. package/dist/dev/test/reactivity/memo.test.js +17 -0
  272. package/dist/dev/test/reactivity/memo.test.js.map +1 -0
  273. package/dist/dev/test/reactivity/ref-rendering.test.js +38 -0
  274. package/dist/dev/test/reactivity/ref-rendering.test.js.map +1 -0
  275. package/dist/dev/test/reactivity/shallow-reactive.test.js +52 -0
  276. package/dist/dev/test/reactivity/shallow-reactive.test.js.map +1 -0
  277. package/dist/dev/test/reactivity/test.test.js +74 -0
  278. package/dist/dev/test/reactivity/test.test.js.map +1 -0
  279. package/dist/dev/test/reactivity/untrack.test.js +27 -0
  280. package/dist/dev/test/reactivity/untrack.test.js.map +1 -0
  281. package/dist/dev/test/refkey.test.js +36 -0
  282. package/dist/dev/test/refkey.test.js.map +1 -0
  283. package/dist/dev/test/rendering/basic.test.js +194 -0
  284. package/dist/dev/test/rendering/basic.test.js.map +1 -0
  285. package/dist/dev/test/rendering/code.test.js +64 -0
  286. package/dist/dev/test/rendering/code.test.js.map +1 -0
  287. package/dist/dev/test/rendering/formatting.test.js +797 -0
  288. package/dist/dev/test/rendering/formatting.test.js.map +1 -0
  289. package/dist/dev/test/rendering/indent.test.js +183 -0
  290. package/dist/dev/test/rendering/indent.test.js.map +1 -0
  291. package/dist/dev/test/rendering/memoization.test.js +37 -0
  292. package/dist/dev/test/rendering/memoization.test.js.map +1 -0
  293. package/dist/dev/test/rendering/print-render-stack.test.js +287 -0
  294. package/dist/dev/test/rendering/print-render-stack.test.js.map +1 -0
  295. package/dist/dev/test/rendering/refkeys.test.js +37 -0
  296. package/dist/dev/test/rendering/refkeys.test.js.map +1 -0
  297. package/dist/dev/test/scheduler-extended.test.js +96 -0
  298. package/dist/dev/test/scheduler-extended.test.js.map +1 -0
  299. package/dist/dev/test/scheduler.test.js +46 -0
  300. package/dist/dev/test/scheduler.test.js.map +1 -0
  301. package/dist/dev/test/split-props.test.js +78 -0
  302. package/dist/dev/test/split-props.test.js.map +1 -0
  303. package/dist/dev/test/stc.test.js +35 -0
  304. package/dist/dev/test/stc.test.js.map +1 -0
  305. package/dist/dev/test/symbols/output-scope.test.js +180 -0
  306. package/dist/dev/test/symbols/output-scope.test.js.map +1 -0
  307. package/dist/dev/test/symbols/output-symbol.test.js +202 -0
  308. package/dist/dev/test/symbols/output-symbol.test.js.map +1 -0
  309. package/dist/dev/test/symbols/resolution.test.js +487 -0
  310. package/dist/dev/test/symbols/resolution.test.js.map +1 -0
  311. package/dist/dev/test/symbols/symbol-table.test.js +15 -0
  312. package/dist/dev/test/symbols/symbol-table.test.js.map +1 -0
  313. package/dist/dev/test/symbols/utils.js +26 -0
  314. package/dist/dev/test/symbols/utils.js.map +1 -0
  315. package/dist/dev/test/utils.test.js +317 -0
  316. package/dist/dev/test/utils.test.js.map +1 -0
  317. package/dist/dev/testing/create-test-wrapper.js +76 -0
  318. package/dist/dev/testing/create-test-wrapper.js.map +1 -0
  319. package/dist/dev/testing/devtools-utils.js +162 -0
  320. package/dist/dev/testing/devtools-utils.js.map +1 -0
  321. package/dist/dev/testing/extend-expect.js +167 -0
  322. package/dist/dev/testing/extend-expect.js.map +1 -0
  323. package/dist/dev/testing/extend-expect.test.js +234 -0
  324. package/dist/dev/testing/extend-expect.test.js.map +1 -0
  325. package/dist/dev/testing/index.js +4 -0
  326. package/dist/dev/testing/index.js.map +1 -0
  327. package/dist/dev/testing/render.js +23 -0
  328. package/dist/dev/testing/render.js.map +1 -0
  329. package/dist/dev/testing/vitest.d.js +2 -0
  330. package/dist/dev/testing/vitest.d.js.map +1 -0
  331. package/dist/src/debug/cli.d.ts.map +1 -1
  332. package/dist/src/debug/cli.js +3 -2
  333. package/dist/src/debug/cli.js.map +1 -1
  334. package/dist/src/debug/effects.d.ts.map +1 -1
  335. package/dist/src/debug/effects.js +2 -67
  336. package/dist/src/debug/effects.js.map +1 -1
  337. package/dist/src/debug/render.d.ts.map +1 -1
  338. package/dist/src/debug/render.js +15 -8
  339. package/dist/src/debug/render.js.map +1 -1
  340. package/dist/src/debug/source-map.browser.d.ts +16 -0
  341. package/dist/src/debug/source-map.browser.d.ts.map +1 -0
  342. package/dist/src/debug/source-map.browser.js +24 -0
  343. package/dist/src/debug/source-map.browser.js.map +1 -0
  344. package/dist/src/debug/source-map.d.ts +22 -0
  345. package/dist/src/debug/source-map.d.ts.map +1 -0
  346. package/dist/src/debug/source-map.js +111 -0
  347. package/dist/src/debug/source-map.js.map +1 -0
  348. package/dist/src/debug/trace.d.ts.map +1 -1
  349. package/dist/src/debug/trace.js +19 -5
  350. package/dist/src/debug/trace.js.map +1 -1
  351. package/dist/src/host/node-host.browser.d.ts +11 -0
  352. package/dist/src/host/node-host.browser.d.ts.map +1 -0
  353. package/dist/src/host/node-host.browser.js +21 -0
  354. package/dist/src/host/node-host.browser.js.map +1 -0
  355. package/dist/src/host/node-host.d.ts +11 -0
  356. package/dist/src/host/node-host.d.ts.map +1 -0
  357. package/dist/src/host/node-host.js +20 -0
  358. package/dist/src/host/node-host.js.map +1 -0
  359. package/dist/src/render-stack.d.ts.map +1 -1
  360. package/dist/src/render-stack.js +4 -3
  361. package/dist/src/render-stack.js.map +1 -1
  362. package/dist/src/write-output.d.ts.map +1 -1
  363. package/dist/src/write-output.js +6 -5
  364. package/dist/src/write-output.js.map +1 -1
  365. package/dist/test/browser-build.test.js +66 -67
  366. package/dist/test/browser-build.test.js.map +1 -1
  367. package/dist/tsconfig.tsbuildinfo +1 -1
  368. package/package.json +13 -3
  369. package/src/debug/cli.ts +3 -2
  370. package/src/debug/effects.ts +2 -82
  371. package/src/debug/render.ts +25 -13
  372. package/src/debug/source-map.browser.ts +30 -0
  373. package/src/debug/source-map.ts +135 -0
  374. package/src/debug/trace.ts +22 -5
  375. package/src/host/node-host.browser.ts +23 -0
  376. package/src/host/node-host.ts +22 -0
  377. package/src/render-stack.ts +4 -3
  378. package/src/write-output.ts +6 -5
  379. package/test/browser-build.test.ts +71 -78
  380. package/vitest.config.ts +8 -0
@@ -0,0 +1,112 @@
1
+ import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
+ import "@alloy-js/core/testing";
3
+ import { ref } from "@vue/reactivity";
4
+ import { expect, it } from "vitest";
5
+ import { Match, Switch } from "../../src/components/Switch.js";
6
+ import { printTree, renderTree } from "../../src/render.js";
7
+ it("selects the true branch", () => {
8
+ const template = _$createComponent(Switch, {
9
+ get children() {
10
+ return [_$createComponent(Match, {
11
+ when: true,
12
+ children: "true"
13
+ }, {
14
+ fileName: import.meta.url,
15
+ lineNumber: 10,
16
+ columnNumber: 7
17
+ }), _$createComponent(Match, {
18
+ "else": true,
19
+ children: "false"
20
+ }, {
21
+ fileName: import.meta.url,
22
+ lineNumber: 11,
23
+ columnNumber: 7
24
+ })];
25
+ }
26
+ }, {
27
+ fileName: import.meta.url,
28
+ lineNumber: 9,
29
+ columnNumber: 5
30
+ });
31
+ expect(template).toRenderTo(`true`);
32
+ });
33
+ it("selects the else branch", () => {
34
+ const template = _$createComponent(Switch, {
35
+ get children() {
36
+ return [_$createComponent(Match, {
37
+ when: false,
38
+ children: "true"
39
+ }, {
40
+ fileName: import.meta.url,
41
+ lineNumber: 19,
42
+ columnNumber: 7
43
+ }), _$createComponent(Match, {
44
+ "else": true,
45
+ children: "false"
46
+ }, {
47
+ fileName: import.meta.url,
48
+ lineNumber: 20,
49
+ columnNumber: 7
50
+ })];
51
+ }
52
+ }, {
53
+ fileName: import.meta.url,
54
+ lineNumber: 18,
55
+ columnNumber: 5
56
+ });
57
+ expect(template).toRenderTo(`false`);
58
+ });
59
+ it("renders to nothing when no branch matches", () => {
60
+ const template = _$createComponent(Switch, {
61
+ get children() {
62
+ return _$createComponent(Match, {
63
+ when: false,
64
+ children: "true"
65
+ }, {
66
+ fileName: import.meta.url,
67
+ lineNumber: 29,
68
+ columnNumber: 7
69
+ });
70
+ }
71
+ }, {
72
+ fileName: import.meta.url,
73
+ lineNumber: 28,
74
+ columnNumber: 5
75
+ });
76
+ expect(template).toRenderTo(``);
77
+ });
78
+ it("works with reactivity", () => {
79
+ const count = ref(0);
80
+ const template = _$createComponent(Switch, {
81
+ get children() {
82
+ return [_$createComponent(Match, {
83
+ get when() {
84
+ return count.value % 2 === 0;
85
+ },
86
+ children: "even"
87
+ }, {
88
+ fileName: import.meta.url,
89
+ lineNumber: 39,
90
+ columnNumber: 7
91
+ }), _$createComponent(Match, {
92
+ "else": true,
93
+ children: "odd"
94
+ }, {
95
+ fileName: import.meta.url,
96
+ lineNumber: 40,
97
+ columnNumber: 7
98
+ })];
99
+ }
100
+ }, {
101
+ fileName: import.meta.url,
102
+ lineNumber: 38,
103
+ columnNumber: 5
104
+ });
105
+ const tree = renderTree(template);
106
+ expect(printTree(tree)).toBe(`even`);
107
+ count.value++;
108
+ expect(printTree(tree)).toBe(`odd`);
109
+ count.value++;
110
+ expect(printTree(tree)).toBe(`even`);
111
+ });
112
+ //# sourceMappingURL=match.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ref","expect","it","Match","Switch","printTree","renderTree","template","_$createComponent","children","when","fileName","import","meta","url","lineNumber","columnNumber","toRenderTo","count","value","tree","toBe"],"sources":["../../../../test/control-flow/match.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,38 @@
1
+ import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
+ import "@alloy-js/core/testing";
3
+ import { ref } from "@vue/reactivity";
4
+ import { expect, it } from "vitest";
5
+ import { Show } from "../../src/components/Show.js";
6
+ import { printTree, renderTree } from "../../src/render.js";
7
+ it("selects the true branch", () => {
8
+ const template = _$createComponent(Show, {
9
+ when: true,
10
+ children: "true"
11
+ }, {
12
+ fileName: import.meta.url,
13
+ lineNumber: 8,
14
+ columnNumber: 20
15
+ });
16
+ expect(template).toRenderTo(`true`);
17
+ });
18
+ it("works with reactivity", () => {
19
+ const count = ref(0);
20
+ const template = _$createComponent(Show, {
21
+ get when() {
22
+ return count.value % 2 === 0;
23
+ },
24
+ fallback: "odd",
25
+ children: "even"
26
+ }, {
27
+ fileName: import.meta.url,
28
+ lineNumber: 15,
29
+ columnNumber: 5
30
+ });
31
+ const tree = renderTree(template);
32
+ expect(printTree(tree)).toBe(`even`);
33
+ count.value++;
34
+ expect(printTree(tree)).toBe(`odd`);
35
+ count.value++;
36
+ expect(printTree(tree)).toBe(`even`);
37
+ });
38
+ //# sourceMappingURL=show.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ref","expect","it","Show","printTree","renderTree","template","_$createComponent","when","children","fileName","import","meta","url","lineNumber","columnNumber","toRenderTo","count","value","fallback","tree","toBe"],"sources":["../../../../test/control-flow/show.test.tsx"],"sourcesContent":[null],"mappings":";AAAA,OAAO,wBAAwB;AAC/B,SAASA,GAAG,QAAQ,iBAAiB;AACrC,SAASC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AACnC,SAASC,IAAI;AACb,SAASC,SAAS,EAAEC,UAAU,QAAQ,qBAAqB;AAE3DH,EAAE,CAAC,yBAAyB,EAAE,MAAM;EAClC,MAAMI,QAAQ,GAAAC,iBAAA,CAAIJ,IAAI;IAACK,IAAI,EAAE,IAAI;IAAAC,QAAA;EAAA;IAAAC,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA,EAAa;EAC9Cd,MAAM,CAACK,QAAQ,CAAC,CAACU,UAAU,CAAC,MAAM,CAAC;AACrC,CAAC,CAAC;AAEFd,EAAE,CAAC,uBAAuB,EAAE,MAAM;EAChC,MAAMe,KAAK,GAAGjB,GAAG,CAAC,CAAC,CAAC;EACpB,MAAMM,QAAQ,GAAAC,iBAAA,CACXJ,IAAI;IAAA,IAACK,IAAIA,CAAA;MAAA,OAAES,KAAK,CAACC,KAAK,GAAG,CAAC,KAAK,CAAC;IAAA;IAAEC,QAAQ,EAAE,KAAK;IAAAV,QAAA;EAAA;IAAAC,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA,EAGnD;EACD,MAAMK,IAAI,GAAGf,UAAU,CAACC,QAAQ,CAAC;EACjCL,MAAM,CAACG,SAAS,CAACgB,IAAI,CAAC,CAAC,CAACC,IAAI,CAAC,MAAM,CAAC;EACpCJ,KAAK,CAACC,KAAK,EAAE;EACbjB,MAAM,CAACG,SAAS,CAACgB,IAAI,CAAC,CAAC,CAACC,IAAI,CAAC,KAAK,CAAC;EACnCJ,KAAK,CAACC,KAAK,EAAE;EACbjB,MAAM,CAACG,SAAS,CAACgB,IAAI,CAAC,CAAC,CAACC,IAAI,CAAC,MAAM,CAAC;AACtC,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,121 @@
1
+ import { createComponent as _$createComponent, memo as _$memo } from "@alloy-js/core/jsx-runtime";
2
+ import { ref } from "@vue/reactivity";
3
+ import { describe, expect, it } from "vitest";
4
+ import { Show } from "../src/components/Show.js";
5
+ import { createContentSlot } from "../src/content-slot.js";
6
+ import { ensureIsEmpty, getContext } from "../src/reactivity.js";
7
+ import { printTree, renderTree } from "../src/render.js";
8
+ import "../testing/extend-expect.js";
9
+ describe("lazy isEmpty / _lastEmpty", () => {
10
+ it("context starts without isEmpty ref allocated", () => {
11
+ let ctx = null;
12
+ function Capture() {
13
+ ctx = getContext();
14
+ return "content";
15
+ }
16
+ renderTree(_$createComponent(Capture, {}, {
17
+ fileName: import.meta.url,
18
+ lineNumber: 18,
19
+ columnNumber: 16
20
+ }));
21
+
22
+ // The isEmpty ref should NOT be allocated unless someone observes it.
23
+ expect(ctx).not.toBeNull();
24
+ expect(ctx.isEmpty).toBeUndefined();
25
+ expect(ctx._lastEmpty).toBe(false);
26
+ });
27
+ it("ensureIsEmpty lazily allocates the isEmpty ref", () => {
28
+ let ctx = null;
29
+ function Capture() {
30
+ ctx = getContext();
31
+ return "content";
32
+ }
33
+ renderTree(_$createComponent(Capture, {}, {
34
+ fileName: import.meta.url,
35
+ lineNumber: 34,
36
+ columnNumber: 16
37
+ }));
38
+ expect(ctx.isEmpty).toBeUndefined();
39
+ const isEmptyRef = ensureIsEmpty(ctx);
40
+ expect(ctx.isEmpty).toBeDefined();
41
+ expect(isEmptyRef).toBe(ctx.isEmpty);
42
+ });
43
+ it("_lastEmpty is true for empty component, false for non-empty", () => {
44
+ let emptyCtx = null;
45
+ let fullCtx = null;
46
+ function EmptyCapture() {
47
+ emptyCtx = getContext();
48
+ return false;
49
+ }
50
+ function FullCapture() {
51
+ fullCtx = getContext();
52
+ return "has content";
53
+ }
54
+ renderTree([_$createComponent(EmptyCapture, {}, {
55
+ fileName: import.meta.url,
56
+ lineNumber: 58,
57
+ columnNumber: 9
58
+ }), _$createComponent(FullCapture, {}, {
59
+ fileName: import.meta.url,
60
+ lineNumber: 59,
61
+ columnNumber: 9
62
+ })]);
63
+ expect(emptyCtx._lastEmpty).toBe(true);
64
+ expect(fullCtx._lastEmpty).toBe(false);
65
+ });
66
+ it("ContentSlot triggers ensureIsEmpty and tracks reactively", () => {
67
+ const ContentSlot = createContentSlot();
68
+ const showContent = ref(false);
69
+ const tree = renderTree([_$memo(() => ContentSlot.isEmpty && "empty", false, "ContentSlot.isEmpty && \u2026"), _$createComponent(ContentSlot, {
70
+ get children() {
71
+ return _$createComponent(Show, {
72
+ get when() {
73
+ return showContent.value;
74
+ },
75
+ children: "content"
76
+ }, {
77
+ fileName: import.meta.url,
78
+ lineNumber: 75,
79
+ columnNumber: 11
80
+ });
81
+ }
82
+ }, {
83
+ fileName: import.meta.url,
84
+ lineNumber: 74,
85
+ columnNumber: 9
86
+ })]);
87
+ expect(printTree(tree)).toBe("empty");
88
+ showContent.value = true;
89
+ expect(printTree(tree)).toBe("content");
90
+ });
91
+ it("propagates empty state up through parent contexts", () => {
92
+ const OuterSlot = createContentSlot();
93
+ const showContent = ref(false);
94
+ const tree = renderTree([_$memo(() => OuterSlot.isEmpty && "outer-empty", false, "OuterSlot.isEmpty && \u2026"), _$createComponent(OuterSlot, {
95
+ get children() {
96
+ return _$createComponent(Show, {
97
+ get when() {
98
+ return showContent.value;
99
+ },
100
+ children: "content"
101
+ }, {
102
+ fileName: import.meta.url,
103
+ lineNumber: 94,
104
+ columnNumber: 11
105
+ });
106
+ }
107
+ }, {
108
+ fileName: import.meta.url,
109
+ lineNumber: 93,
110
+ columnNumber: 9
111
+ })]);
112
+
113
+ // Outer should be empty initially.
114
+ expect(printTree(tree)).toBe("outer-empty");
115
+
116
+ // Show content — outer should become non-empty.
117
+ showContent.value = true;
118
+ expect(printTree(tree)).toBe("content");
119
+ });
120
+ });
121
+ //# sourceMappingURL=lazy-isempty.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ref","describe","expect","it","Show","createContentSlot","ensureIsEmpty","getContext","printTree","renderTree","ctx","Capture","_$createComponent","fileName","import","meta","url","lineNumber","columnNumber","not","toBeNull","isEmpty","toBeUndefined","_lastEmpty","toBe","isEmptyRef","toBeDefined","emptyCtx","fullCtx","EmptyCapture","FullCapture","ContentSlot","showContent","tree","_$memo","children","when","value","OuterSlot"],"sources":["../../../test/lazy-isempty.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,28 @@
1
+ import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
2
+ import { createNamePolicy, Output, useNamePolicy } from "@alloy-js/core";
3
+ import { expect, it } from "vitest";
4
+ import "../testing/extend-expect.js";
5
+ it("is applied by output", () => {
6
+ const policy = createNamePolicy(name => {
7
+ return "name" + name;
8
+ });
9
+ function Foo() {
10
+ const namer = useNamePolicy();
11
+ return namer.getName("hi", "name");
12
+ }
13
+ expect(_$createComponent(Output, {
14
+ namePolicy: policy,
15
+ get children() {
16
+ return _$createComponent(Foo, {}, {
17
+ fileName: import.meta.url,
18
+ lineNumber: 16,
19
+ columnNumber: 7
20
+ });
21
+ }
22
+ }, {
23
+ fileName: import.meta.url,
24
+ lineNumber: 15,
25
+ columnNumber: 5
26
+ })).toRenderTo("namehi");
27
+ });
28
+ //# sourceMappingURL=name-policy.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createNamePolicy","Output","useNamePolicy","expect","it","policy","name","Foo","namer","getName","_$createComponent","namePolicy","children","fileName","import","meta","url","lineNumber","columnNumber","toRenderTo"],"sources":["../../../test/name-policy.test.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,gBAAgB,EAAEC,MAAM,EAAEC,aAAa,QAAQ,gBAAgB;AACxE,SAASC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AACnC,OAAO,6BAA6B;AAEpCA,EAAE,CAAC,sBAAsB,EAAE,MAAM;EAC/B,MAAMC,MAAM,GAAGL,gBAAgB,CAAEM,IAAI,IAAK;IACxC,OAAO,MAAM,GAAGA,IAAI;EACtB,CAAC,CAAC;EAEF,SAASC,GAAGA,CAAA,EAAG;IACb,MAAMC,KAAK,GAAGN,aAAa,CAAC,CAAC;IAC7B,OAAOM,KAAK,CAAEC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;EACrC;EACAN,MAAM,CAAAO,iBAAA,CACHT,MAAM;IAACU,UAAU,EAAEN,MAAM;IAAA,IAAAO,SAAA;MAAA,OAAAF,iBAAA,CACvBH,GAAG;QAAAM,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA;IAAA;EAAA;IAAAL,QAAA,EAAAC,MAAA,CAAAC,IAAA,CAAAC,GAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA,EAER,CAAC,CAACC,UAAU,CAAC,QAAQ,CAAC;AACxB,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,94 @@
1
+ import { effect, reactive } from "@vue/reactivity";
2
+ import { expect, it, vi } from "vitest";
3
+ import { defaultProps } from "../src/props-combinators.js";
4
+ it("applies defaults to regular object props", () => {
5
+ const props = {
6
+ a: 1,
7
+ b: 2,
8
+ c: undefined
9
+ };
10
+ const dProps = defaultProps(props, {
11
+ a: 10,
12
+ c: 20
13
+ });
14
+ expect(dProps).toEqual({
15
+ a: 1,
16
+ b: 2,
17
+ c: 20
18
+ });
19
+ });
20
+ it("applies defaults with getters without invoking them", () => {
21
+ const getterA = vi.fn(() => 1);
22
+ const getterB = vi.fn(() => undefined);
23
+ const props = {
24
+ get a() {
25
+ return getterA();
26
+ },
27
+ get b() {
28
+ return getterB();
29
+ },
30
+ c: 3
31
+ };
32
+ const dProps = defaultProps(props, {
33
+ b: 20,
34
+ c: 30
35
+ });
36
+ expect(getterA).not.toHaveBeenCalled();
37
+ expect(getterB).not.toHaveBeenCalled();
38
+ const value = dProps.b;
39
+ expect(getterB).toHaveBeenCalledTimes(1);
40
+ expect(value).toEqual(20);
41
+ });
42
+ it("applies defaults to reactives without observing them initially", () => {
43
+ const props = reactive({
44
+ a: 1,
45
+ b: 2,
46
+ c: undefined
47
+ });
48
+ const defaults = defaultProps(props, {
49
+ c: 10
50
+ });
51
+ expect(defaults.a).toBe(1);
52
+ expect(defaults.b).toBe(2);
53
+ expect(defaults.c).toBe(10);
54
+ });
55
+ it("ensures effect is not triggered by defaults but by accessing reactive props", () => {
56
+ const props = reactive({
57
+ a: 1,
58
+ b: 2,
59
+ c: undefined
60
+ });
61
+ let withDefaults;
62
+ const splitEffect = vi.fn(() => {
63
+ withDefaults = defaultProps(props, {
64
+ c: 10
65
+ });
66
+ });
67
+ effect(splitEffect);
68
+ expect(splitEffect).toHaveBeenCalledTimes(1);
69
+ const observeEffect = vi.fn(() => {
70
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
71
+ withDefaults.a;
72
+ });
73
+ effect(observeEffect);
74
+ expect(observeEffect).toHaveBeenCalledTimes(1);
75
+ props.a = 2;
76
+ expect(splitEffect).toHaveBeenCalledTimes(1);
77
+ expect(observeEffect).toHaveBeenCalledTimes(2);
78
+ });
79
+ it("applies defaults to reactives", () => {
80
+ const props = reactive({
81
+ a: 1,
82
+ b: 2,
83
+ c: undefined
84
+ });
85
+ const withDefaults = defaultProps(props, {
86
+ c: 10
87
+ });
88
+ expect(withDefaults.c).toBe(10);
89
+ props.c = 20;
90
+ expect(withDefaults.c).toBe(20);
91
+ props.c = undefined;
92
+ expect(withDefaults.c).toBe(10);
93
+ });
94
+ //# sourceMappingURL=props-with-defaults.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["effect","reactive","expect","it","vi","defaultProps","props","a","b","c","undefined","dProps","toEqual","getterA","fn","getterB","not","toHaveBeenCalled","value","toHaveBeenCalledTimes","defaults","toBe","withDefaults","splitEffect","observeEffect"],"sources":["../../../test/props-with-defaults.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAM,EAAEC,QAAQ,QAAQ,iBAAiB;AAClD,SAASC,MAAM,EAAEC,EAAE,EAAEC,EAAE,QAAQ,QAAQ;AACvC,SAASC,YAAY,QAAQ,6BAA6B;AAE1DF,EAAE,CAAC,0CAA0C,EAAE,MAAM;EACnD,MAAMG,KAAK,GAAG;IACZC,CAAC,EAAE,CAAC;IACJC,CAAC,EAAE,CAAC;IACJC,CAAC,EAAEC;EACL,CAAC;EAED,MAAMC,MAAM,GAAGN,YAAY,CAACC,KAAK,EAAE;IAAEC,CAAC,EAAE,EAAE;IAAEE,CAAC,EAAE;EAAG,CAAC,CAAC;EAEpDP,MAAM,CAACS,MAAM,CAAC,CAACC,OAAO,CAAC;IAAEL,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAG,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEFN,EAAE,CAAC,qDAAqD,EAAE,MAAM;EAC9D,MAAMU,OAAO,GAAGT,EAAE,CAACU,EAAE,CAAC,MAAM,CAAC,CAAC;EAC9B,MAAMC,OAAO,GAAGX,EAAE,CAACU,EAAE,CAAC,MAAMJ,SAA+B,CAAC;EAC5D,MAAMJ,KAAK,GAAG;IACZ,IAAIC,CAACA,CAAA,EAAG;MACN,OAAOM,OAAO,CAAC,CAAC;IAClB,CAAC;IACD,IAAIL,CAACA,CAAA,EAAG;MACN,OAAOO,OAAO,CAAC,CAAC;IAClB,CAAC;IACDN,CAAC,EAAE;EACL,CAAC;EAED,MAAME,MAAM,GAAGN,YAAY,CAACC,KAAK,EAAE;IAAEE,CAAC,EAAE,EAAE;IAAEC,CAAC,EAAE;EAAG,CAAC,CAAC;EAEpDP,MAAM,CAACW,OAAO,CAAC,CAACG,GAAG,CAACC,gBAAgB,CAAC,CAAC;EACtCf,MAAM,CAACa,OAAO,CAAC,CAACC,GAAG,CAACC,gBAAgB,CAAC,CAAC;EAEtC,MAAMC,KAAK,GAAGP,MAAM,CAACH,CAAC;EACtBN,MAAM,CAACa,OAAO,CAAC,CAACI,qBAAqB,CAAC,CAAC,CAAC;EACxCjB,MAAM,CAACgB,KAAK,CAAC,CAACN,OAAO,CAAC,EAAE,CAAC;AAC3B,CAAC,CAAC;AAEFT,EAAE,CAAC,gEAAgE,EAAE,MAAM;EACzE,MAAMG,KAAK,GAAGL,QAAQ,CAAC;IACrBM,CAAC,EAAE,CAAC;IACJC,CAAC,EAAE,CAAC;IACJC,CAAC,EAAEC;EACL,CAAC,CAAC;EAEF,MAAMU,QAAQ,GAAGf,YAAY,CAACC,KAAK,EAAE;IAAEG,CAAC,EAAE;EAAG,CAAC,CAAC;EAE/CP,MAAM,CAACkB,QAAQ,CAACb,CAAC,CAAC,CAACc,IAAI,CAAC,CAAC,CAAC;EAC1BnB,MAAM,CAACkB,QAAQ,CAACZ,CAAC,CAAC,CAACa,IAAI,CAAC,CAAC,CAAC;EAC1BnB,MAAM,CAACkB,QAAQ,CAACX,CAAC,CAAC,CAACY,IAAI,CAAC,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEFlB,EAAE,CAAC,6EAA6E,EAAE,MAAM;EACtF,MAAMG,KAAK,GAAGL,QAAQ,CAAC;IACrBM,CAAC,EAAE,CAAC;IACJC,CAAC,EAAE,CAAC;IACJC,CAAC,EAAEC;EACL,CAAC,CAAC;EAEF,IAAIY,YAAiB;EACrB,MAAMC,WAAW,GAAGnB,EAAE,CAACU,EAAE,CAAC,MAAM;IAC9BQ,YAAY,GAAGjB,YAAY,CAACC,KAAK,EAAE;MAAEG,CAAC,EAAE;IAAG,CAAC,CAAC;EAC/C,CAAC,CAAC;EAEFT,MAAM,CAACuB,WAAW,CAAC;EACnBrB,MAAM,CAACqB,WAAW,CAAC,CAACJ,qBAAqB,CAAC,CAAC,CAAC;EAE5C,MAAMK,aAAa,GAAGpB,EAAE,CAACU,EAAE,CAAC,MAAM;IAChC;IACAQ,YAAY,CAACf,CAAC;EAChB,CAAC,CAAC;EACFP,MAAM,CAACwB,aAAa,CAAC;EACrBtB,MAAM,CAACsB,aAAa,CAAC,CAACL,qBAAqB,CAAC,CAAC,CAAC;EAE9Cb,KAAK,CAACC,CAAC,GAAG,CAAC;EACXL,MAAM,CAACqB,WAAW,CAAC,CAACJ,qBAAqB,CAAC,CAAC,CAAC;EAC5CjB,MAAM,CAACsB,aAAa,CAAC,CAACL,qBAAqB,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC;AAEFhB,EAAE,CAAC,+BAA+B,EAAE,MAAM;EACxC,MAAMG,KAAK,GAAGL,QAAQ,CAAC;IACrBM,CAAC,EAAE,CAAC;IACJC,CAAC,EAAE,CAAC;IACJC,CAAC,EAAEC;EACL,CAAC,CAAC;EAEF,MAAMY,YAAY,GAAGjB,YAAY,CAACC,KAAK,EAAE;IAAEG,CAAC,EAAE;EAAG,CAAC,CAAC;EAEnDP,MAAM,CAACoB,YAAY,CAACb,CAAC,CAAC,CAACY,IAAI,CAAC,EAAE,CAAC;EAC/Bf,KAAK,CAACG,CAAC,GAAG,EAAE;EAEZP,MAAM,CAACoB,YAAY,CAACb,CAAC,CAAC,CAACY,IAAI,CAAC,EAAE,CAAC;EAC/Bf,KAAK,CAACG,CAAC,GAAGC,SAAS;EAEnBR,MAAM,CAACoB,YAAY,CAACb,CAAC,CAAC,CAACY,IAAI,CAAC,EAAE,CAAC;AACjC,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,98 @@
1
+ import { reactive } from "@vue/reactivity";
2
+ import { describe, expect, it } from "vitest";
3
+ import { ReactiveUnionSet } from "../src/reactive-union-set.js";
4
+ import { effect } from "../src/reactivity.js";
5
+ import { flushJobs } from "../src/scheduler.js";
6
+ describe("ReactiveUnionSet: per-item disposers via addSubset", () => {
7
+ it("calls onDelete when item is removed from subset", () => {
8
+ const parentSet = new ReactiveUnionSet();
9
+ const subset = reactive(new Set());
10
+ const deleted = [];
11
+ parentSet.addSubset(subset, {
12
+ onDelete(value) {
13
+ deleted.push(value);
14
+ }
15
+ });
16
+ subset.add("a");
17
+ subset.add("b");
18
+ flushJobs();
19
+ expect(parentSet.has("a")).toBe(true);
20
+ expect(parentSet.has("b")).toBe(true);
21
+ subset.delete("a");
22
+ flushJobs();
23
+ expect(parentSet.has("a")).toBe(false);
24
+ expect(deleted).toContain("a");
25
+ });
26
+ it("calls onDelete for all items when subset is cleared", () => {
27
+ const parentSet = new ReactiveUnionSet();
28
+ const subset = reactive(new Set());
29
+ const deleted = [];
30
+ parentSet.addSubset(subset, {
31
+ onDelete(value) {
32
+ deleted.push(value);
33
+ }
34
+ });
35
+ subset.add("a");
36
+ subset.add("b");
37
+ subset.add("c");
38
+ flushJobs();
39
+ expect(parentSet.size).toBe(3);
40
+ subset.clear();
41
+ flushJobs();
42
+ expect(parentSet.size).toBe(0);
43
+ expect(deleted.sort()).toEqual(["a", "b", "c"]);
44
+ });
45
+ it("disposes root scopes created by onAdd when item is removed", () => {
46
+ const parentSet = new ReactiveUnionSet();
47
+ const subset = reactive(new Set());
48
+ let disposeCount = 0;
49
+
50
+ // Use the constructor-level onAdd so items are still added to the set,
51
+ // plus per-subset onAdd with root scope tracking.
52
+ parentSet.addSubset(subset, {
53
+ onAdd(value) {
54
+ // The onAdd in addSubset wraps in root() internally.
55
+ // Side-effects created here are cleaned up when the item is removed.
56
+ effect(() => {
57
+ void value; // track nothing real, just proving the effect exists
58
+ });
59
+ return value;
60
+ },
61
+ onDelete() {
62
+ disposeCount++;
63
+ }
64
+ });
65
+ subset.add("x");
66
+ flushJobs();
67
+
68
+ // Remove item — root scope (and its effects) should be disposed.
69
+ subset.delete("x");
70
+ flushJobs();
71
+ expect(disposeCount).toBe(1);
72
+ });
73
+ it("re-adding after delete triggers fresh onAdd", () => {
74
+ const parentSet = new ReactiveUnionSet();
75
+ const subset = reactive(new Set());
76
+ let addCount = 0;
77
+ const deleted = [];
78
+ parentSet.addSubset(subset, {
79
+ onAdd(value) {
80
+ addCount++;
81
+ return value;
82
+ },
83
+ onDelete(value) {
84
+ deleted.push(value);
85
+ }
86
+ });
87
+ subset.add("a");
88
+ flushJobs();
89
+ expect(addCount).toBe(1);
90
+ subset.delete("a");
91
+ flushJobs();
92
+ expect(deleted).toEqual(["a"]);
93
+ subset.add("a");
94
+ flushJobs();
95
+ expect(addCount).toBe(2);
96
+ });
97
+ });
98
+ //# sourceMappingURL=reactive-union-set-disposers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["reactive","describe","expect","it","ReactiveUnionSet","effect","flushJobs","parentSet","subset","Set","deleted","addSubset","onDelete","value","push","add","has","toBe","delete","toContain","size","clear","sort","toEqual","disposeCount","onAdd","addCount"],"sources":["../../../test/reactive-union-set-disposers.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}