@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,426 @@
1
+ import { isRef, pauseTracking, resetTracking, stop, computed as vueComputed, effect as vueEffect, ref as vueRef, shallowReactive as vueShallowReactive, shallowRef as vueShallowRef, toRef as vueToRef, toRefs as vueToRefs } from "@vue/reactivity";
2
+ import { captureSourceLocation, debug, isDebugEnabled } from "./debug/index.js";
3
+ import { scheduler, setLastTriggerRef } from "./scheduler.js";
4
+ if (globalThis.__ALLOY__) {
5
+ throw new Error("Multiple versions of Alloy are loaded for this project. This will likely cause undesirable behavior.");
6
+ }
7
+ globalThis.__ALLOY__ = true;
8
+ export function getElementCache() {
9
+ const ctx = getContext();
10
+ return ctx.elementCache ??= new Map();
11
+ }
12
+ let contextIdCounter = 0;
13
+ let globalContext = null;
14
+ export function getContext() {
15
+ return globalContext;
16
+ }
17
+
18
+ /**
19
+ * Walk up the owner chain to find the nearest ancestor context that
20
+ * corresponds to an effect (has meta.effectId). This bridges non-effect
21
+ * scopes (like createRoot iterations in For) so the owner chain always
22
+ * connects effect-to-effect.
23
+ */
24
+ function resolveOwnerEffectContextId(context) {
25
+ let owner = context.owner;
26
+ while (owner) {
27
+ if (owner.meta?.effectId !== undefined) {
28
+ return owner.id;
29
+ }
30
+ owner = owner.owner;
31
+ }
32
+ return context.owner?.id ?? null;
33
+ }
34
+
35
+ /**
36
+ * Ensure that a context has an isEmpty ref, creating one if needed.
37
+ * Only call this when you need to reactively observe isEmpty (e.g.,
38
+ * ContentSlot, mapJoin). Most contexts don't need an isEmpty ref.
39
+ */
40
+ export function ensureIsEmpty(context) {
41
+ context.isEmpty ??= ref(context.childrenWithContent === 0, {
42
+ isInfrastructure: true
43
+ });
44
+ return context.isEmpty;
45
+ }
46
+ export function root(fn, options) {
47
+ const context = {
48
+ id: contextIdCounter++,
49
+ componentOwner: options?.componentOwner,
50
+ owner: globalContext,
51
+ takesSymbols: false,
52
+ takenSymbols: undefined,
53
+ childrenWithContent: 0,
54
+ _lastEmpty: true,
55
+ isRoot: true
56
+ };
57
+ globalContext = context;
58
+ let ret;
59
+ try {
60
+ ret = untrack(() => fn(() => {
61
+ for (const d of context.disposables ?? []) {
62
+ untrack(d);
63
+ }
64
+ }));
65
+ } finally {
66
+ globalContext = globalContext.owner;
67
+ }
68
+ return ret;
69
+ }
70
+ export function untrack(fn) {
71
+ pauseTracking();
72
+ const v = fn();
73
+ resetTracking();
74
+ return v;
75
+ }
76
+
77
+ /**
78
+ * Walk up the context owner chain to find the nearest effect ID.
79
+ * Used to attribute reactive mutations to the effect that caused them.
80
+ */
81
+ export function findCurrentEffectId() {
82
+ let ctx = globalContext;
83
+ while (ctx) {
84
+ const id = ctx.meta?.effectId;
85
+ if (id !== undefined && id !== -1) return id;
86
+ ctx = ctx.owner;
87
+ }
88
+ return undefined;
89
+ }
90
+ export function memo(fn, equal, name) {
91
+ const memoLabel = name ? `memo:${name}` : "memo";
92
+ const o = shallowRef(undefined, {
93
+ label: memoLabel
94
+ });
95
+ effect(prev => {
96
+ const res = fn();
97
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
98
+ (!equal || prev !== res) && (o.value = res);
99
+ return res;
100
+ }, undefined, {
101
+ debug: {
102
+ name: name ? `memo:${name}` : "memo"
103
+ }
104
+ });
105
+ const getter = () => o.value;
106
+ if (name) {
107
+ Object.defineProperty(getter, "name", {
108
+ value: name,
109
+ configurable: true
110
+ });
111
+ }
112
+ return getter;
113
+ }
114
+ export function effect(fn, current, options) {
115
+ const context = {
116
+ id: contextIdCounter++,
117
+ owner: globalContext,
118
+ takesSymbols: false,
119
+ takenSymbols: undefined,
120
+ childrenWithContent: 0,
121
+ _lastEmpty: true,
122
+ isRoot: false
123
+ };
124
+ const debugInfo = options?.debug;
125
+ const effectId = debug.effect.register({
126
+ name: debugInfo?.name ?? fn.name,
127
+ type: debugInfo?.type,
128
+ createdAt: captureSourceLocation(),
129
+ contextId: context.id,
130
+ ownerContextId: resolveOwnerEffectContextId(context)
131
+ });
132
+ if (effectId !== -1) {
133
+ context.meta ??= {};
134
+ context.meta.effectId = effectId;
135
+ }
136
+ const cleanupFn = final => {
137
+ const d = context.disposables;
138
+ context.disposables = undefined;
139
+ if (d) {
140
+ for (let k = 0, len = d.length; k < len; k++) untrack(d[k]);
141
+ }
142
+
143
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
144
+ final && stop(runner);
145
+ };
146
+ onCleanup(() => cleanupFn(true));
147
+ const effectOpts = {
148
+ // allow recursive effects with 32, 1 and 4 are default flags
149
+ flags: 1 | 4 | 32,
150
+ scheduler: scheduler()
151
+ };
152
+ if (effectId !== -1) {
153
+ effectOpts.onTrack = event => {
154
+ const targetKey = typeof event.key === "symbol" ? event.key.toString() : event.key;
155
+ if (isRef(event.target)) {
156
+ const id = refId(event.target);
157
+ debug.effect.ensureRef({
158
+ id,
159
+ kind: "ref"
160
+ });
161
+ debug.effect.track({
162
+ effectId,
163
+ target: event.target,
164
+ refId: id,
165
+ targetKey
166
+ });
167
+ } else if (typeof event.target === "object" && event.target !== null && targetKey !== undefined) {
168
+ const id = reactivePropertyRefId(event.target, targetKey);
169
+ debug.effect.ensureReactivePropertyRef({
170
+ id,
171
+ target: event.target,
172
+ key: targetKey
173
+ });
174
+ debug.effect.track({
175
+ effectId,
176
+ target: event.target,
177
+ refId: id,
178
+ targetKey
179
+ });
180
+ } else {
181
+ debug.effect.track({
182
+ effectId,
183
+ target: event.target,
184
+ targetKey
185
+ });
186
+ }
187
+ };
188
+ effectOpts.onTrigger = event => {
189
+ if (!("target" in event)) {
190
+ // Vue Dep.notify() chain propagation — no actual reactive target.
191
+ // Skip recording: these are computed→subscriber notifications without
192
+ // a meaningful target reference.
193
+ return;
194
+ }
195
+ const targetKey = typeof event.key === "symbol" ? event.key.toString() : event.key;
196
+ // findCurrentEffectId() works because onTrigger fires synchronously
197
+ // during the mutation, so globalContext still points to the producer.
198
+ const producerEffectId = findCurrentEffectId();
199
+ const causedBy = producerEffectId !== undefined && producerEffectId !== effectId ? producerEffectId : undefined;
200
+ if (isRef(event.target)) {
201
+ const id = refId(event.target);
202
+ debug.effect.ensureRef({
203
+ id,
204
+ kind: "ref"
205
+ });
206
+ debug.effect.trigger({
207
+ effectId,
208
+ target: event.target,
209
+ refId: id,
210
+ targetKey,
211
+ causedBy
212
+ });
213
+ setLastTriggerRef(effectId, id);
214
+ } else if (typeof event.target === "object" && event.target !== null && targetKey !== undefined) {
215
+ const id = reactivePropertyRefId(event.target, targetKey);
216
+ debug.effect.ensureReactivePropertyRef({
217
+ id,
218
+ target: event.target,
219
+ key: targetKey
220
+ });
221
+ debug.effect.trigger({
222
+ effectId,
223
+ target: event.target,
224
+ refId: id,
225
+ targetKey,
226
+ causedBy
227
+ });
228
+ setLastTriggerRef(effectId, id);
229
+ } else {
230
+ debug.effect.trigger({
231
+ effectId,
232
+ target: event.target,
233
+ targetKey,
234
+ causedBy
235
+ });
236
+ }
237
+ };
238
+ }
239
+ const runner = vueEffect(() => {
240
+ cleanupFn(false);
241
+ const oldContext = globalContext;
242
+ globalContext = context;
243
+ try {
244
+ current = fn(current);
245
+ } finally {
246
+ globalContext = oldContext;
247
+ }
248
+ }, effectOpts);
249
+ if (effectId !== -1) {
250
+ effectIdMap.set(runner.effect, effectId);
251
+ }
252
+ }
253
+
254
+ /**
255
+ * Register a cleanup function which is called when the current reactive scope
256
+ * is recalculated or disposed. This is useful to clean up any side effects
257
+ * created in the reactive scope.
258
+ *
259
+ * @remarks
260
+ *
261
+ * When onCleanup is called inside a component definition, the provided function
262
+ * is called when the component is removed from the tree. This can be useful to
263
+ * clean up any side effects created as a result of rendering the component. For
264
+ * example, if rendering a component creates a symbol, `onCleanup` can be used
265
+ * to remove the symbol when the component is removed from the tree.
266
+ *
267
+ * When onCleanup is called inside a memo or effect, the function is called when
268
+ * the effect is refreshed (e.g. when a memo or computed recalculates) or
269
+ * disposed (e.g. it is no longer needed because it is attached to a component
270
+ * which was removed).
271
+ */
272
+ export function onCleanup(fn) {
273
+ if (globalContext != null) {
274
+ (globalContext.disposables ??= []).push(fn);
275
+ }
276
+ }
277
+
278
+ /**
279
+ * Create a custom reactive context for the children returned by
280
+ * the provided context.
281
+ */
282
+
283
+ const CUSTOM_CONTEXT_SYM = Symbol();
284
+ export function createCustomContext(useCallback) {
285
+ return {
286
+ [CUSTOM_CONTEXT_SYM]: true,
287
+ useCustomContext(useCb) {
288
+ useCallback(useCb);
289
+ }
290
+ };
291
+ }
292
+ export function isCustomContext(child) {
293
+ return typeof child === "object" && child !== null && Object.hasOwn(child, CUSTOM_CONTEXT_SYM);
294
+ }
295
+ export function ref(value, options) {
296
+ const result = vueRef(value);
297
+ debug.effect.registerRef({
298
+ id: refId(result),
299
+ kind: "ref",
300
+ createdAt: captureSourceLocation(),
301
+ createdByEffectId: globalContext?.meta?.effectId,
302
+ isInfrastructure: options?.isInfrastructure
303
+ });
304
+ return result;
305
+ }
306
+
307
+ // Stores creation location for shallowReactive objects so registerNonRefTarget
308
+ // can look it up later (since targets are lazily registered on first track/trigger).
309
+ const reactiveCreationLocations = new WeakMap();
310
+ export function getReactiveCreationLocation(target) {
311
+ return reactiveCreationLocations.get(target);
312
+ }
313
+ export function shallowReactive(target) {
314
+ const result = vueShallowReactive(target);
315
+ if (isDebugEnabled()) {
316
+ // Store by raw target — Vue's onTrack/onTrigger events pass the raw object, not the proxy.
317
+ reactiveCreationLocations.set(target, captureSourceLocation());
318
+ }
319
+ return result;
320
+ }
321
+ export function shallowRef(value, options) {
322
+ const result = vueShallowRef(value);
323
+ debug.effect.registerRef({
324
+ id: refId(result),
325
+ kind: "shallowRef",
326
+ label: options?.label,
327
+ createdAt: captureSourceLocation(),
328
+ createdByEffectId: globalContext?.meta?.effectId
329
+ });
330
+ return result;
331
+ }
332
+ export function computed(getter) {
333
+ const result = vueComputed(getter);
334
+ debug.effect.registerRef({
335
+ id: refId(result),
336
+ kind: "computed",
337
+ createdAt: captureSourceLocation(),
338
+ createdByEffectId: globalContext?.meta?.effectId
339
+ });
340
+ return result;
341
+ }
342
+ export function toRef(object, key, defaultValue) {
343
+ const result = defaultValue === undefined ? vueToRef(object, key) : vueToRef(object, key, defaultValue);
344
+ debug.effect.registerRef({
345
+ id: refId(result),
346
+ kind: "toRef",
347
+ createdAt: captureSourceLocation(),
348
+ createdByEffectId: globalContext?.meta?.effectId
349
+ });
350
+ return result;
351
+ }
352
+ export function toRefs(object) {
353
+ const result = vueToRefs(object);
354
+ for (const refValue of Object.values(result)) {
355
+ debug.effect.registerRef({
356
+ id: refId(refValue),
357
+ kind: "toRef",
358
+ createdAt: captureSourceLocation(),
359
+ createdByEffectId: globalContext?.meta?.effectId
360
+ });
361
+ }
362
+ return result;
363
+ }
364
+ const seenRefs = new WeakMap();
365
+ let refIdCounter = 1;
366
+ const effectIdMap = new WeakMap();
367
+
368
+ // Stable ID mapping for (reactive, key) pairs — each property acts as a virtual ref.
369
+ const reactivePropertyIds = new WeakMap();
370
+ export function refId(ref) {
371
+ let id = seenRefs.get(ref);
372
+ if (id === undefined) {
373
+ id = refIdCounter++;
374
+ seenRefs.set(ref, id);
375
+ }
376
+ return id;
377
+ }
378
+
379
+ /**
380
+ * Get a stable ref ID for a property of a reactive object.
381
+ * Each (target, key) pair gets a unique positive ID from the same counter as refs.
382
+ */
383
+ export function reactivePropertyRefId(target, key) {
384
+ let keys = reactivePropertyIds.get(target);
385
+ if (!keys) {
386
+ keys = new Map();
387
+ reactivePropertyIds.set(target, keys);
388
+ }
389
+ let id = keys.get(key);
390
+ if (id === undefined) {
391
+ id = refIdCounter++;
392
+ keys.set(key, id);
393
+ }
394
+ return id;
395
+ }
396
+
397
+ /**
398
+ * Build a human-readable label for a reactive property like `symbolName.prop`.
399
+ */
400
+ export function formatReactivePropertyLabel(target, key) {
401
+ let ownerLabel;
402
+ try {
403
+ const str = String(target);
404
+ // OutputSymbol toString() returns something like: TSOutputSymbol "MyInterface"[42]
405
+ // Trim to just the meaningful part
406
+ ownerLabel = str.length > 60 ? str.slice(0, 57) + "..." : str;
407
+ } catch {
408
+ ownerLabel = "reactive";
409
+ }
410
+ if (Array.isArray(target)) {
411
+ ownerLabel = "[]";
412
+ }
413
+ return `${ownerLabel}.${key}`;
414
+ }
415
+
416
+ /** Allocate a unique reactive target ID from the same counter space as ref IDs. */
417
+ export function nextReactiveId() {
418
+ return refIdCounter++;
419
+ }
420
+ export function resetRefIdCounter() {
421
+ refIdCounter = 1;
422
+ }
423
+ export function getEffectDebugId(effect) {
424
+ return effectIdMap.get(effect);
425
+ }
426
+ //# sourceMappingURL=reactivity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isRef","pauseTracking","resetTracking","stop","computed","vueComputed","effect","vueEffect","ref","vueRef","shallowReactive","vueShallowReactive","shallowRef","vueShallowRef","toRef","vueToRef","toRefs","vueToRefs","captureSourceLocation","debug","isDebugEnabled","scheduler","setLastTriggerRef","globalThis","__ALLOY__","Error","getElementCache","ctx","getContext","elementCache","Map","contextIdCounter","globalContext","resolveOwnerEffectContextId","context","owner","meta","effectId","undefined","id","ensureIsEmpty","isEmpty","childrenWithContent","isInfrastructure","root","fn","options","componentOwner","takesSymbols","takenSymbols","_lastEmpty","isRoot","ret","untrack","d","disposables","v","findCurrentEffectId","memo","equal","name","memoLabel","o","label","prev","res","value","getter","Object","defineProperty","configurable","current","debugInfo","register","type","createdAt","contextId","ownerContextId","cleanupFn","final","k","len","length","runner","onCleanup","effectOpts","flags","onTrack","event","targetKey","key","toString","target","refId","ensureRef","kind","track","reactivePropertyRefId","ensureReactivePropertyRef","onTrigger","producerEffectId","causedBy","trigger","oldContext","effectIdMap","set","push","CUSTOM_CONTEXT_SYM","Symbol","createCustomContext","useCallback","useCustomContext","useCb","isCustomContext","child","hasOwn","result","registerRef","createdByEffectId","reactiveCreationLocations","WeakMap","getReactiveCreationLocation","get","object","defaultValue","refValue","values","seenRefs","refIdCounter","reactivePropertyIds","keys","formatReactivePropertyLabel","ownerLabel","str","String","slice","Array","isArray","nextReactiveId","resetRefIdCounter","getEffectDebugId"],"sources":["../../../src/reactivity.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,167 @@
1
+ import { markRaw } from "@vue/reactivity";
2
+ import { untrack } from "./reactivity.js";
3
+ const objectIds = new WeakMap();
4
+ let objId = 0;
5
+ function getObjectKey(value) {
6
+ if (objectIds.has(value)) {
7
+ return objectIds.get(value);
8
+ }
9
+ const key = `o${objId++}`;
10
+ objectIds.set(value, key);
11
+ return key;
12
+ }
13
+ export const REFKEYABLE = Symbol("Alloy.REFKEYABLE");
14
+ export function toRefkey(refkey) {
15
+ return untrack(() => refkey[REFKEYABLE]());
16
+ }
17
+ function createSymbolRefkey(key) {
18
+ const refkey = {
19
+ key,
20
+ [REFKEYABLE]() {
21
+ return this;
22
+ }
23
+ };
24
+ markRaw(refkey);
25
+ return refkey;
26
+ }
27
+ export function isRefkeyable(value) {
28
+ return typeof value === "object" && value !== null && Object.hasOwn(value, REFKEYABLE);
29
+ }
30
+ export function isRefkey(value) {
31
+ return isRefkeyable(value) && value[REFKEYABLE]() === value;
32
+ }
33
+ export function isSymbolRefkey(value) {
34
+ return isRefkey(value) && Object.hasOwn(value, "key");
35
+ }
36
+ export function isMemberRefkey(value) {
37
+ return isRefkey(value) && Object.hasOwn(value, "base");
38
+ }
39
+ export function isNamekey(value) {
40
+ return isRefkey(value) && Object.hasOwn(value, "name");
41
+ }
42
+
43
+ /**
44
+ * This gets the key for a symbol refkey based on the value provided. Refkey values
45
+ * return the key of that refkey, objects get a unique key for that specific object,
46
+ * and otherwise the key is based on the value.
47
+ */
48
+ function getKey(value) {
49
+ if (isRefkeyable(value)) {
50
+ const refkey = toRefkey(value);
51
+ if (isSymbolRefkey(refkey)) {
52
+ return refkey.key;
53
+ } else {
54
+ return getObjectKey(value);
55
+ }
56
+ } else if (typeof value === "object" && value !== null) {
57
+ return getObjectKey(value);
58
+ } else {
59
+ return `s${String(value)}`;
60
+ }
61
+ }
62
+ const knownRefkeys = new Map();
63
+
64
+ /**
65
+ * Create a refkey for the provided arguments. Passing no arguments returns a
66
+ * fresh refkey that is guaranteed to be unique. Otherwise, the arguments passed
67
+ * will be used to create a refkey for those values. Providing the same
68
+ * arguments will always return the same refkey.
69
+ *
70
+ * @remarks
71
+ *
72
+ * Values are compared using the SameValueZero algorithm, which considers
73
+ * objects the same if they are reference identical, and primitives the same if
74
+ * they are the same value, with the exception of `NaN`, which is always considered
75
+ * equal to other `NaN` values, and `-0`, which is considered identical to `+0`
76
+ */
77
+ export function refkey(...args) {
78
+ const keys = args.length === 0 ? [getKey({})] : args.map(v => getKey(v));
79
+ const compositeKey = keys.join("\u2063");
80
+ if (knownRefkeys.has(compositeKey)) {
81
+ return knownRefkeys.get(compositeKey);
82
+ }
83
+ const key = createSymbolRefkey(compositeKey);
84
+ knownRefkeys.set(compositeKey, key);
85
+ return key;
86
+ }
87
+
88
+ /**
89
+ * Create a namekey with the given name. The namekey is a unique refkey that
90
+ * represents a single symbol with the given name and the provided
91
+ * naming-related options.
92
+ *
93
+ * @example
94
+ * ```tsx
95
+ * const myClass = namekey("MyClass");
96
+ *
97
+ * return <>
98
+ * <ClassDeclaration name={myClass} />
99
+ * {myClass}
100
+ * </>
101
+ * ```
102
+ *
103
+ * Renders a class and a reference to that class.
104
+ */
105
+ export function namekey(name, options = {}) {
106
+ return {
107
+ key: getObjectKey({}),
108
+ name,
109
+ options,
110
+ [REFKEYABLE]() {
111
+ return this;
112
+ }
113
+ };
114
+ }
115
+ /**
116
+ * Create a refkey for an instantiation of a symbol.
117
+ *
118
+ * @param base - The refkey of the symbol holding the instantiation.
119
+ * @param member - The refkey of the non-instantiated member symbol (either the
120
+ * instance or static member symbol)
121
+ *
122
+ * @remarks
123
+ *
124
+ * Refkeys for instantiated and copied members are a composite refkey of the
125
+ * owner's refkey and the member's refkey. So for example, given a refkey for an
126
+ * instantiation of a class `rk1`, and a refkey for the instance member of that
127
+ * class `rk2`, the refkey for the instantiated static member is
128
+ * `refkey(rk1, rk2)`. This function will return the same refkey given those
129
+ * same parameters.
130
+ *
131
+ * When a static member symbol `rk3` is owned by another static or instance
132
+ * member symbol (i.e. the outer symbol is itself a member container), the
133
+ * refkey of the instaniated static member is still just the composite of the
134
+ * instantiated variable refkey and the refkey of the inner member
135
+ * `refkey(rk1, rk3)`.
136
+ */
137
+ export function memberRefkey(base, ...members) {
138
+ if (members.length < 1) {
139
+ throw new Error("memberRefkey needs at least one member");
140
+ }
141
+ if (members.length === 1) {
142
+ return {
143
+ base: toRefkey(base),
144
+ member: typeof members[0] === "string" ? members[0] : toRefkey(members[0]),
145
+ [REFKEYABLE]() {
146
+ return this;
147
+ }
148
+ };
149
+ }
150
+ const lastMember = members.at(-1);
151
+ return {
152
+ base: memberRefkey(base, ...members.slice(0, -1)),
153
+ member: typeof lastMember === "string" ? lastMember : toRefkey(lastMember),
154
+ [REFKEYABLE]() {
155
+ return this;
156
+ }
157
+ };
158
+ }
159
+ export function inspectRefkey(refkey) {
160
+ const unwrapped = refkey[REFKEYABLE]();
161
+ const text = isMemberRefkey(unwrapped) ? `memberRefkey[${inspectRefkey(unwrapped.base)} -> ${typeof unwrapped.member === "string" ? unwrapped.member : inspectRefkey(unwrapped.member)}]` : `refkey[${unwrapped.key}]`;
162
+ return text;
163
+ }
164
+ export function unresolvedRefkey(refkey) {
165
+ return `<Unresolved Symbol: ${inspectRefkey(refkey)}>`;
166
+ }
167
+ //# sourceMappingURL=refkey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["markRaw","untrack","objectIds","WeakMap","objId","getObjectKey","value","has","get","key","set","REFKEYABLE","Symbol","toRefkey","refkey","createSymbolRefkey","isRefkeyable","Object","hasOwn","isRefkey","isSymbolRefkey","isMemberRefkey","isNamekey","getKey","String","knownRefkeys","Map","args","keys","length","map","v","compositeKey","join","namekey","name","options","memberRefkey","base","members","Error","member","lastMember","at","slice","inspectRefkey","unwrapped","text","unresolvedRefkey"],"sources":["../../../src/refkey.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}