@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,488 @@
1
+ import { computed, shallowRef } from "@vue/reactivity";
2
+ import { useBinder } from "./context/binder.js";
3
+ import { useMemberContext } from "./context/member-scope.js";
4
+ import { useScope } from "./context/scope.js";
5
+ import { debug, TracePhase } from "./debug/index.js";
6
+ import { emitDiagnostic } from "./diagnostics.js";
7
+ import { effect, onCleanup } from "./reactivity.js";
8
+ import { inspectRefkey, isMemberRefkey, refkey, toRefkey } from "./refkey.js";
9
+ import { formatRefkeys, formatSymbolName } from "./tracer.js";
10
+
11
+ /**
12
+ * The binder tracks all output scopes and symbols. Scopes are nested containers
13
+ * for symbols.
14
+ *
15
+ * @remarks
16
+ *
17
+ * Symbol information is reactive because in certain situations this data may
18
+ * change. For example, when a symbol becomes conflicted with another symbol,
19
+ * one of the symbol names may change. Ensure that you interact with binder
20
+ * values in a reactive context (i.e. within JSX/code template, or within
21
+ * memo/computed/etc).
22
+ *
23
+ */
24
+
25
+ /**
26
+ * A successful resolution of a refkey.
27
+ *
28
+ * @example
29
+ *
30
+ * Let's say we have the following scopes and symbols:
31
+ *
32
+ * ```
33
+ * scope: global scope
34
+ * ├── scope: namespace scope 1
35
+ * │ └── symbol: foo
36
+ * │ └── static members
37
+ * │ └── symbol: bar
38
+ * └── scope: namespace scope 2
39
+ * └── (resolve bar from here)
40
+ * ```
41
+ *
42
+ * When we resolve the refkey for `bar` from within `namespace scope 2`, we will get the following
43
+ * resolution result:
44
+ *
45
+ * * **targetDeclaration**: symbol bar, the symbol we resolved.
46
+ * * **commonScope**: global scope, because this is the most specific scope that contains both the declaration and the reference.
47
+ * * **pathUp**: [namespace scope 2], because this is the scope between the reference and the common scope.
48
+ * * **pathDown**: [namespace scope 1], because this is the scope between the common scope and the declaration
49
+ * * **memberPath**: [foo, bar], because we resolved a member symbol and these are the symbols that lead from the base declaration to the member symbol.
50
+ */
51
+
52
+ /**
53
+ * Describes a member in a member access chain, tracking both the symbol
54
+ * and whether this specific member was accessed via a memberRefkey.
55
+ */
56
+
57
+ /**
58
+ * The context for a member resolution. This is used to properly resolve a
59
+ * member in the MemberResolver.
60
+ */
61
+
62
+ /**
63
+ *
64
+ */
65
+
66
+ export function createScope(ctor, ...args) {
67
+ const scope = new ctor(...args);
68
+ debug.symbols.registerScope(scope);
69
+ return scope;
70
+ }
71
+ export function createSymbol(ctor, ...args) {
72
+ const symbol = new ctor(...args);
73
+ debug.symbols.registerSymbol(symbol);
74
+ return symbol;
75
+ }
76
+ export function createOutputBinder(options = {}) {
77
+ const binder = {
78
+ resolveDeclarationByKey,
79
+ getSymbolForRefkey,
80
+ notifyScopeCreated,
81
+ notifySymbolCreated,
82
+ notifySymbolDeleted,
83
+ nameConflictResolver: options.nameConflictResolver
84
+ };
85
+ const knownDeclarations = new Map();
86
+ const waitingDeclarations = new Map();
87
+ const waitingSymbolNames = new Map();
88
+ const waitingScopeNames = new Map();
89
+ return binder;
90
+ function notifyScopeCreated(scope) {
91
+ if (!scope.parent || !waitingScopeNames.has(scope.parent)) {
92
+ return;
93
+ }
94
+ const waiting = waitingScopeNames.get(scope.parent);
95
+ if (waiting?.has(scope.name)) {
96
+ const ref = waiting.get(scope.name);
97
+ ref.value = scope;
98
+ }
99
+ }
100
+ function notifySymbolDeleted(symbol) {
101
+ debug.symbols.unregisterSymbol(symbol);
102
+ if (!refkey) {
103
+ return;
104
+ }
105
+ for (const refkey of symbol.refkeys) {
106
+ const resolution = waitingDeclarations.get(refkey);
107
+ if (!resolution) return;
108
+ resolution.value = undefined;
109
+ }
110
+ }
111
+ function buildResult(currentScope, targetDeclarationBase) {
112
+ const {
113
+ memberPath: targetMemberPath,
114
+ scopeChain: targetChain
115
+ } = scopeAndMemberChain(targetDeclarationBase);
116
+ let targetLexicalDeclaration = targetMemberPath && targetMemberPath.length > 0 ? targetMemberPath[0].ownerSymbol : targetDeclarationBase;
117
+ // when we are resolving from a scope which is a member scope and might have
118
+ // member scope parents, and any symbols in the member path are members of
119
+ // the member scope's owner symbol (i.e., those symbols are in scope where
120
+ // the reference is made), we replace the target member path with an entry
121
+ // on the scope chain.
122
+
123
+ // So, first we find all the owner symbols for any member scopes in scope
124
+ // for the reference.
125
+ const referenceChain = scopeChain(currentScope);
126
+ const inScopeSymbols = new Map();
127
+ for (const scope of referenceChain) {
128
+ if (scope.isMemberScope) {
129
+ inScopeSymbols.set(scope.ownerSymbol, scope);
130
+ }
131
+ }
132
+
133
+ // then if the lexical declaration symbol's members are in scope, remove the
134
+ // symbol from the member path and add its corresponding member scope to the
135
+ // target chain.
136
+ while (targetMemberPath.length > 0 && inScopeSymbols.has(targetLexicalDeclaration)) {
137
+ targetChain.push(inScopeSymbols.get(targetLexicalDeclaration));
138
+ targetLexicalDeclaration = targetMemberPath.shift();
139
+ }
140
+
141
+ // Now we replace any scopes in the target chain with corresponding scopes
142
+ // from the reference chain.
143
+ for (const [index, scope] of targetChain.entries()) {
144
+ if (inScopeSymbols.has(scope.ownerSymbol)) {
145
+ targetChain[index] = inScopeSymbols.get(scope.ownerSymbol);
146
+ }
147
+ }
148
+
149
+ // Next we look for member scopes in the target chain that correspond to
150
+ // member scopes in the reference chain. We splice the reference chain into
151
+ // the target chain at that point. This ensures that we establish the proper
152
+ // common scope and path up/down even if the reference chain has additional
153
+ // scopes above it (e.g. a scope for the current source file).
154
+ const commonMemberContainer = targetChain.findIndex(scope => scope.isMemberScope && inScopeSymbols.has(scope.ownerSymbol));
155
+ if (commonMemberContainer > -1) {
156
+ const sourceLocation = referenceChain.findIndex(scope => scope.isMemberScope && scope.ownerSymbol === targetChain[commonMemberContainer].ownerSymbol);
157
+
158
+ // source location is guaranteed to exist at this point.
159
+ targetChain.splice(0, commonMemberContainer + 1, ...referenceChain.slice(0, sourceLocation + 1));
160
+ }
161
+
162
+ // Now that we have the target chain and scopes, we can determine the common
163
+ // scopes and paths.
164
+ let diffStart = 0;
165
+ while (targetChain[diffStart] && referenceChain[diffStart] && targetChain[diffStart] === referenceChain[diffStart]) {
166
+ diffStart++;
167
+ }
168
+ const pathUp = referenceChain.slice(diffStart);
169
+ const pathDown = targetChain.slice(diffStart);
170
+ const commonScope = targetChain[diffStart - 1] ?? undefined;
171
+ return {
172
+ pathUp,
173
+ pathDown,
174
+ memberPath: targetMemberPath,
175
+ commonScope,
176
+ symbol: targetDeclarationBase,
177
+ lexicalDeclaration: targetLexicalDeclaration,
178
+ fullSymbolPath: targetChain,
179
+ fullReferencePath: referenceChain
180
+ };
181
+ }
182
+
183
+ /**
184
+ * Walk from the provided symbol up to the non-member symbol. This constitutes
185
+ * the member path. Then, walk from the first non-member symbol's scope up to
186
+ * the global scope. This constitutes the scope chain.
187
+ */
188
+ function scopeAndMemberChain(symbol) {
189
+ const result = {
190
+ memberPath: [],
191
+ scopeChain: []
192
+ };
193
+ let currentSymbol = symbol;
194
+ if (currentSymbol.isMemberSymbol) {
195
+ result.memberPath = [];
196
+ while (currentSymbol.isMemberSymbol) {
197
+ result.memberPath.unshift(currentSymbol);
198
+ currentSymbol = currentSymbol.ownerSymbol;
199
+ }
200
+ }
201
+ const startScope = currentSymbol.scope;
202
+ result.scopeChain = scopeChain(startScope);
203
+ return result;
204
+ }
205
+ function scopeChain(scope) {
206
+ const chain = [];
207
+ while (scope) {
208
+ chain.unshift(scope);
209
+ scope = scope.parent;
210
+ }
211
+ return chain;
212
+ }
213
+ function getSymbolForRefkey(refkeyable) {
214
+ const refkey = toRefkey(refkeyable);
215
+ if (waitingDeclarations.has(refkey)) {
216
+ return waitingDeclarations.get(refkey);
217
+ }
218
+ let symbolRef;
219
+ if (isMemberRefkey(refkey)) {
220
+ const baseSymbolRef = getSymbolForRefkey(refkey.base);
221
+ const memberSymbolRef = getMemberSymbolFromMemberRefkey(refkey);
222
+ symbolRef = computed(() => {
223
+ // even though we don't necessarily need the base symbol to be available
224
+ // yet (the member symbol might already be declared on a type), we wait
225
+ // to resolve the member refkey until the base symbol is available.
226
+ const baseSymbol = baseSymbolRef.value;
227
+ const memberSymbol = memberSymbolRef.value;
228
+ if (!baseSymbol || !memberSymbol) {
229
+ return undefined;
230
+ }
231
+ return memberSymbol;
232
+ });
233
+ } else {
234
+ symbolRef = shallowRef();
235
+ }
236
+ waitingDeclarations.set(refkey, symbolRef);
237
+ if (knownDeclarations.has(refkey)) {
238
+ symbolRef.value = knownDeclarations.get(refkey);
239
+ }
240
+ return symbolRef;
241
+ }
242
+
243
+ /**
244
+ * There are two ways to reference a member symbol - directly via its refkey,
245
+ * and via a member refkey. In the former case, we just find the member
246
+ * symbol, and then compute its path directly from there. In hte latter case,
247
+ * we need to find the base of the member expression, and then add the members
248
+ * from the (possibly nested) member refkey to result.
249
+ */
250
+ function resolveDeclarationByKey(currentScope, refkey, options = {}) {
251
+ const resolvedSymbol = getSymbolForRefkey(refkey);
252
+ return computed(() => {
253
+ debug.trace(TracePhase.resolve.pending, () => `Resolving ${formatRefkeys(refkey)}.`);
254
+ const symbol = resolvedSymbol.value;
255
+ if (!symbol) {
256
+ debug.trace(TracePhase.resolve.failure, () => `No symbol for ${formatRefkeys(refkey)}.`);
257
+ return undefined;
258
+ }
259
+ debug.trace(TracePhase.resolve.pending, () => `${formatRefkeys(refkey)} resolved to ${formatSymbolName(symbol)}.`);
260
+ if (symbol.isTransient) {
261
+ debug.trace(TracePhase.resolve.failure, () => `Symbol ${formatSymbolName(symbol)} is transient.`);
262
+ return undefined;
263
+ }
264
+ const chain = scopeChain(symbol.scope);
265
+ if (chain.some(scope => scope.isTransient)) {
266
+ debug.trace(TracePhase.resolve.failure, () => `Symbol ${formatSymbolName(symbol)} is in a transient scope.`);
267
+ return undefined;
268
+ }
269
+ let result;
270
+ let memberDescriptorsFromRefkey;
271
+ if (isMemberRefkey(refkey)) {
272
+ memberDescriptorsFromRefkey = getMemberPathFromRefkey(refkey);
273
+ result = buildResult(currentScope, memberDescriptorsFromRefkey[0].symbol);
274
+ } else {
275
+ memberDescriptorsFromRefkey = [];
276
+ result = buildResult(currentScope, symbol);
277
+ }
278
+
279
+ // When we have member descriptors, this first entry is already part of the result due to passing it
280
+ // to buildResult above, so we don't need it here.
281
+ const newMemberPathDescriptors = memberDescriptorsFromRefkey.slice(1);
282
+ const allDescriptors = [...result.memberPath.map(s => ({
283
+ symbol: s,
284
+ isMemberAccess: false
285
+ })), ...newMemberPathDescriptors];
286
+
287
+ // update the member path and resolved symbol from our member descriptors
288
+ // (if we have them)
289
+ if (memberDescriptorsFromRefkey.length > 0) {
290
+ for (const descriptor of newMemberPathDescriptors) {
291
+ result.memberPath.push(descriptor.symbol);
292
+ }
293
+ result.symbol = memberDescriptorsFromRefkey.at(-1).symbol;
294
+ }
295
+
296
+ // a subcomputed here ensures we don't lose the progress above When
297
+ // we fail to resolve because a type isn't available yet.
298
+ return computed(() => {
299
+ // resolve each member in the member path
300
+ let currentBase = result.lexicalDeclaration;
301
+ for (const descriptor of allDescriptors) {
302
+ const member = descriptor.symbol;
303
+ if (currentBase.isTyped && !currentBase.hasTypeSymbol) {
304
+ debug.trace(TracePhase.resolve.pending, () => `${formatRefkeys(refkey)} needs type information from a parent type.`);
305
+ // waiting for type
306
+ return undefined;
307
+ }
308
+ resolveMember(currentBase, member, options.memberResolver, {
309
+ referencePath: result.fullReferencePath,
310
+ isMemberAccess: descriptor.isMemberAccess
311
+ });
312
+ currentBase = member;
313
+ }
314
+ debug.trace(TracePhase.resolve.success, () => `${formatRefkeys(refkey)} successfully resolved to ${formatSymbolName(symbol)}.`);
315
+ return result;
316
+ }).value;
317
+ });
318
+ }
319
+
320
+ /**
321
+ * Extracts member descriptors from a refkey, tracking which members
322
+ * were accessed via memberRefkey for proper member resolution context.
323
+ */
324
+ function getMemberPathFromRefkey(refkey) {
325
+ if (isMemberRefkey(refkey)) {
326
+ return [...getMemberPathFromRefkey(refkey.base), {
327
+ symbol: getMemberSymbolFromMemberRefkey(refkey).value,
328
+ isMemberAccess: true
329
+ }];
330
+ }
331
+ return [{
332
+ symbol: getSymbolForRefkey(refkey).value,
333
+ isMemberAccess: false
334
+ }];
335
+ }
336
+ function getMemberSymbolFromMemberRefkey(refkey) {
337
+ if (typeof refkey.member === "string") {
338
+ return computed(() => {
339
+ const baseSymbol = getSymbolForRefkey(refkey.base).value;
340
+ if (!baseSymbol) {
341
+ return undefined;
342
+ }
343
+ return baseSymbol.resolveMemberByName(refkey.member);
344
+ });
345
+ } else {
346
+ return getSymbolForRefkey(refkey.member);
347
+ }
348
+ }
349
+ function resolveMember(base, member, memberResolver, context) {
350
+ if (memberResolver) {
351
+ memberResolver(base, member, context);
352
+ } else {
353
+ // default member resolution
354
+ if (!member.isMemberSymbol) {
355
+ throw new Error(`${formatSymbolName(member)} is not a member symbol.`);
356
+ }
357
+ const memberOwner = base.hasTypeSymbol ? base.type : base.dealias();
358
+ if (member.ownerSymbol !== memberOwner) {
359
+ throw new Error(`${formatSymbolName(member)} is not a member of ${formatSymbolName(base)}.`);
360
+ }
361
+ }
362
+ }
363
+ function notifySymbolCreated(symbol) {
364
+ effect(oldRefkeys => {
365
+ if (symbol.refkeys) {
366
+ debug.trace(TracePhase.resolve.pending, () => `Notifying resolutions for ${formatRefkeys(symbol.refkeys)}.`);
367
+ }
368
+ if (oldRefkeys) {
369
+ for (const refkey of oldRefkeys) {
370
+ if (!symbol.refkeys.includes(refkey)) {
371
+ // remove the old refkey from the known declarations
372
+ knownDeclarations.delete(refkey);
373
+
374
+ // reset any waiting declarations
375
+ if (waitingDeclarations.has(refkey)) {
376
+ const signal = waitingDeclarations.get(refkey);
377
+ signal.value = undefined;
378
+ }
379
+ }
380
+ }
381
+ }
382
+ for (const refkey of symbol.refkeys) {
383
+ // notify those waiting for this refkey
384
+ knownDeclarations.set(refkey, symbol);
385
+ if (waitingDeclarations.has(refkey)) {
386
+ const signal = waitingDeclarations.get(refkey);
387
+ signal.value = symbol;
388
+ }
389
+ const scope = symbol.scope;
390
+ if (!scope) {
391
+ continue;
392
+ }
393
+
394
+ // notify those waiting for this symbol name
395
+ const waitingScope = waitingSymbolNames.get(scope);
396
+ if (waitingScope) {
397
+ const waitingName = waitingScope.get(symbol.name);
398
+ if (waitingName) {
399
+ waitingName.value = symbol;
400
+ }
401
+ }
402
+ }
403
+ return [...symbol.refkeys];
404
+ }, undefined, {
405
+ debug: {
406
+ name: "binder:notifySymbolCreated",
407
+ type: "binder"
408
+ }
409
+ });
410
+ }
411
+ }
412
+
413
+ /**
414
+ * Resolve a refkey in the current scope. Returns a Ref for the resolution result.
415
+ * The value of the ref will be undefined if the identifier hasn't been resolved yet.
416
+ *
417
+ * @remarks
418
+ *
419
+ * This API may return a ref for undefined, but that does not mean that the symbol is
420
+ * not found. The symbol you're looking for may not have been declared yet. When the symbol
421
+ * is declared, the ref will be updated with the resolution result.
422
+ */
423
+ export function resolve(refkey, options = {}) {
424
+ const scope = useScope();
425
+ const memberScope = useMemberContext();
426
+ const binder = scope?.binder ?? memberScope?.ownerSymbol.binder;
427
+ if (!binder) {
428
+ throw new Error("Can't resolve refkey without a binder");
429
+ }
430
+ const result = binder.resolveDeclarationByKey(scope, refkey, options);
431
+ let diagnosticHandle = null;
432
+ effect(() => {
433
+ if (result.value === undefined) {
434
+ // Emit diagnostic for this specific reference site
435
+ if (!diagnosticHandle) {
436
+ diagnosticHandle = emitDiagnostic({
437
+ severity: "warning",
438
+ message: `Unresolved refkey: ${inspectRefkey(refkey)}`
439
+ });
440
+ }
441
+ } else {
442
+ // Dismiss diagnostic when resolved
443
+ if (diagnosticHandle) {
444
+ diagnosticHandle.dismiss();
445
+ diagnosticHandle = null;
446
+ }
447
+ }
448
+ }, undefined, {
449
+ debug: {
450
+ name: `binder:resolve:${inspectRefkey(refkey)}`,
451
+ type: "binder"
452
+ }
453
+ });
454
+ onCleanup(() => {
455
+ if (diagnosticHandle) {
456
+ diagnosticHandle.dismiss();
457
+ diagnosticHandle = null;
458
+ }
459
+ });
460
+ return result;
461
+ }
462
+
463
+ /**
464
+ * Get a ref to the symbol for the given refkey using the current binder. The
465
+ * value of the ref will be undefined when no symbol with that refkey has been
466
+ * created.
467
+ *
468
+ * @remarks
469
+ *
470
+ * This API may return a ref for undefined, but that does not mean that the symbol is
471
+ * not found. The symbol you're looking for may not have been declared yet. When the symbol
472
+ * is declared, the ref will be updated with the symbol.
473
+ */
474
+ export function symbolForRefkey(refkey) {
475
+ const binder = useBinder();
476
+ if (!binder) {
477
+ throw new Error("Can't resolve refkey without a binder");
478
+ }
479
+ return binder.getSymbolForRefkey(refkey);
480
+ }
481
+ const createSymbolsSymbol = Symbol();
482
+ export function getSymbolCreator(creator) {
483
+ return creator[createSymbolsSymbol];
484
+ }
485
+ export function getSymbolCreatorSymbol() {
486
+ return createSymbolsSymbol;
487
+ }
488
+ //# sourceMappingURL=binder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["computed","shallowRef","useBinder","useMemberContext","useScope","debug","TracePhase","emitDiagnostic","effect","onCleanup","inspectRefkey","isMemberRefkey","refkey","toRefkey","formatRefkeys","formatSymbolName","createScope","ctor","args","scope","symbols","registerScope","createSymbol","symbol","registerSymbol","createOutputBinder","options","binder","resolveDeclarationByKey","getSymbolForRefkey","notifyScopeCreated","notifySymbolCreated","notifySymbolDeleted","nameConflictResolver","knownDeclarations","Map","waitingDeclarations","waitingSymbolNames","waitingScopeNames","parent","has","waiting","get","name","ref","value","unregisterSymbol","refkeys","resolution","undefined","buildResult","currentScope","targetDeclarationBase","memberPath","targetMemberPath","scopeChain","targetChain","scopeAndMemberChain","targetLexicalDeclaration","length","ownerSymbol","referenceChain","inScopeSymbols","isMemberScope","set","push","shift","index","entries","commonMemberContainer","findIndex","sourceLocation","splice","slice","diffStart","pathUp","pathDown","commonScope","lexicalDeclaration","fullSymbolPath","fullReferencePath","result","currentSymbol","isMemberSymbol","unshift","startScope","chain","refkeyable","symbolRef","baseSymbolRef","base","memberSymbolRef","getMemberSymbolFromMemberRefkey","baseSymbol","memberSymbol","resolvedSymbol","trace","resolve","pending","failure","isTransient","some","memberDescriptorsFromRefkey","getMemberPathFromRefkey","newMemberPathDescriptors","allDescriptors","map","s","isMemberAccess","descriptor","at","currentBase","member","isTyped","hasTypeSymbol","resolveMember","memberResolver","referencePath","success","resolveMemberByName","context","Error","memberOwner","type","dealias","oldRefkeys","includes","delete","signal","waitingScope","waitingName","memberScope","diagnosticHandle","severity","message","dismiss","symbolForRefkey","createSymbolsSymbol","Symbol","getSymbolCreator","creator","getSymbolCreatorSymbol"],"sources":["../../../src/binder.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}