@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,363 @@
1
+ import { createComponent as _$createComponent, createIntrinsic as _$createIntrinsic, memo as _$memo } from "@alloy-js/core/jsx-runtime";
2
+ import { afterEach, beforeEach, expect, it } from "vitest";
3
+ import WebSocket from "ws";
4
+ import { createMessageCollector, filterRenderTreeMessages } from "../../testing/devtools-utils.js";
5
+ import { For } from "../components/For.js";
6
+ import { Output } from "../components/Output.js";
7
+ import { enableDevtools, resetDevtoolsServerForTests } from "../devtools/devtools-server.js";
8
+ import { ref } from "../reactivity.js";
9
+ import { renderAsync } from "../render.js";
10
+ import { flushJobsAsync } from "../scheduler.js";
11
+ let socket;
12
+ beforeEach(async () => {
13
+ const server = await enableDevtools({
14
+ port: 0
15
+ });
16
+ socket = new WebSocket(`ws://127.0.0.1:${server.port}`);
17
+ await new Promise((resolve, reject) => {
18
+ socket?.once("open", resolve);
19
+ socket?.once("error", reject);
20
+ });
21
+ });
22
+ afterEach(async () => {
23
+ if (socket) {
24
+ socket.close();
25
+ socket = undefined;
26
+ }
27
+ await resetDevtoolsServerForTests();
28
+ });
29
+ it("emits render:complete on successful render", async () => {
30
+ const collector = await createMessageCollector(socket);
31
+ await renderAsync(_$createComponent(Output, {}, {
32
+ fileName: import.meta.url,
33
+ lineNumber: 42,
34
+ columnNumber: 21
35
+ }));
36
+ const messages = await collector.waitForRender();
37
+ expect(messages.at(-1)).toMatchObject({
38
+ type: "render:complete"
39
+ });
40
+ collector.stop();
41
+ });
42
+ it("emits render:error on render failure", async () => {
43
+ function Boom() {
44
+ throw new Error("Boom");
45
+ }
46
+ const collector = await createMessageCollector(socket);
47
+ await expect(renderAsync(_$createComponent(Output, {
48
+ get children() {
49
+ return _$createComponent(Boom, {}, {
50
+ fileName: import.meta.url,
51
+ lineNumber: 60,
52
+ columnNumber: 9
53
+ });
54
+ }
55
+ }, {
56
+ fileName: import.meta.url,
57
+ lineNumber: 59,
58
+ columnNumber: 7
59
+ }))).rejects.toThrow("Boom");
60
+ const messages = await collector.waitForRender();
61
+ const renderMessages = messages.filter(m => m.type.startsWith("render:"));
62
+ expect(renderMessages.at(-1)).toMatchObject({
63
+ type: "render:error",
64
+ name: expect.any(String),
65
+ message: expect.any(String)
66
+ });
67
+ collector.stop();
68
+ });
69
+ it("sends render tree messages during render", async () => {
70
+ function Foo() {
71
+ return ["Hello", _$createIntrinsic("br", {}, {
72
+ fileName: import.meta.url,
73
+ lineNumber: 82,
74
+ columnNumber: 9
75
+ }), () => "World"];
76
+ }
77
+ const collector = await createMessageCollector(socket);
78
+ await renderAsync(_$createComponent(Output, {
79
+ get children() {
80
+ return _$createComponent(Foo, {}, {
81
+ fileName: import.meta.url,
82
+ lineNumber: 92,
83
+ columnNumber: 7
84
+ });
85
+ }
86
+ }, {
87
+ fileName: import.meta.url,
88
+ lineNumber: 91,
89
+ columnNumber: 5
90
+ }));
91
+ const messages = await collector.waitForRender();
92
+ const renderMessages = filterRenderTreeMessages(messages);
93
+ collector.stop();
94
+ expect(renderMessages[0]).toMatchObject({
95
+ type: "render:reset"
96
+ });
97
+ const nodeAdded = renderMessages.filter(m => m.type === "render:node_added");
98
+ expect(nodeAdded[0]).toMatchObject({
99
+ type: "render:node_added",
100
+ parent_id: null
101
+ });
102
+ expect(nodeAdded[1]).toMatchObject({
103
+ type: "render:node_added",
104
+ name: "Output"
105
+ });
106
+ expect(nodeAdded[2]).toMatchObject({
107
+ type: "render:node_added",
108
+ name: "Context Binder"
109
+ });
110
+ expect(nodeAdded[3]).toMatchObject({
111
+ type: "render:node_added"
112
+ });
113
+ expect(nodeAdded[4]).toMatchObject({
114
+ type: "render:node_added",
115
+ name: expect.stringMatching(/^Context FormatOptions/)
116
+ });
117
+ expect(nodeAdded[5]).toMatchObject({
118
+ type: "render:node_added"
119
+ });
120
+ expect(nodeAdded[6]).toMatchObject({
121
+ type: "render:node_added",
122
+ name: "SourceDirectory"
123
+ });
124
+ expect(nodeAdded[7]).toMatchObject({
125
+ type: "render:node_added",
126
+ name: "Context SourceDirectory"
127
+ });
128
+ expect(nodeAdded[8]).toMatchObject({
129
+ type: "render:node_added"
130
+ });
131
+ expect(nodeAdded[9]).toMatchObject({
132
+ type: "render:node_added",
133
+ name: "Foo"
134
+ });
135
+ expect(nodeAdded[10]).toMatchObject({
136
+ type: "render:node_added",
137
+ value: "Hello"
138
+ });
139
+ expect(nodeAdded[11]).toMatchObject({
140
+ type: "render:node_added",
141
+ name: "br"
142
+ });
143
+ expect(nodeAdded[12]).toMatchObject({
144
+ type: "render:node_added"
145
+ });
146
+ expect(nodeAdded[13]).toMatchObject({
147
+ type: "render:node_added",
148
+ value: "World"
149
+ });
150
+ });
151
+ it("rerenders when devtools requests rerender", async () => {
152
+ let renderCount = 0;
153
+ function Display() {
154
+ renderCount += 1;
155
+ return "Hi";
156
+ }
157
+ const collector = await createMessageCollector(socket);
158
+ await renderAsync(_$createComponent(Output, {
159
+ get children() {
160
+ return _$createComponent(Display, {}, {
161
+ fileName: import.meta.url,
162
+ lineNumber: 171,
163
+ columnNumber: 7
164
+ });
165
+ }
166
+ }, {
167
+ fileName: import.meta.url,
168
+ lineNumber: 170,
169
+ columnNumber: 5
170
+ }));
171
+ const messages = await collector.waitForRender();
172
+ const renderMessages = filterRenderTreeMessages(messages);
173
+ const displayNode = renderMessages.find(message => message.type === "render:node_added" && message.name === "Display");
174
+ expect(renderCount).toBe(1);
175
+ expect(displayNode?.id).toEqual(expect.any(Number));
176
+ socket.send(JSON.stringify({
177
+ type: "render:rerender",
178
+ id: displayNode.id
179
+ }));
180
+ await collector.waitForFlush();
181
+ expect(renderCount).toBe(2);
182
+ collector.stop();
183
+ });
184
+ it("sends render tree messages during render with For component", async () => {
185
+ const collector = await createMessageCollector(socket);
186
+ function Display(props) {
187
+ return ["item ", _$memo(() => props.item, false, "props.item")];
188
+ }
189
+ await renderAsync(_$createComponent(Output, {
190
+ get children() {
191
+ return _$createComponent(For, {
192
+ each: ["a", "b"],
193
+ children: item => _$createComponent(Display, {
194
+ item: item
195
+ }, {
196
+ fileName: import.meta.url,
197
+ lineNumber: 202,
198
+ columnNumber: 41
199
+ })
200
+ }, {
201
+ fileName: import.meta.url,
202
+ lineNumber: 202,
203
+ columnNumber: 7
204
+ });
205
+ }
206
+ }, {
207
+ fileName: import.meta.url,
208
+ lineNumber: 201,
209
+ columnNumber: 5
210
+ }));
211
+ const messages = await collector.waitForRender();
212
+ const renderMessages = filterRenderTreeMessages(messages);
213
+ collector.stop();
214
+ expect(renderMessages[0]).toMatchObject({
215
+ type: "render:reset"
216
+ });
217
+ expect(renderMessages).toEqual(expect.arrayContaining([expect.objectContaining({
218
+ type: "render:node_added",
219
+ name: "For"
220
+ }), expect.objectContaining({
221
+ type: "render:node_added",
222
+ value: "a"
223
+ }), expect.objectContaining({
224
+ type: "render:node_added",
225
+ value: "b"
226
+ })]));
227
+ });
228
+ it("emits nodeUpdated during render for context updates", async () => {
229
+ const collector = await createMessageCollector(socket);
230
+ function Counter(props) {
231
+ return `Count: ${props.value}`;
232
+ }
233
+ await renderAsync(_$createComponent(Output, {
234
+ get children() {
235
+ return _$createComponent(Counter, {
236
+ value: 1
237
+ }, {
238
+ fileName: import.meta.url,
239
+ lineNumber: 238,
240
+ columnNumber: 7
241
+ });
242
+ }
243
+ }, {
244
+ fileName: import.meta.url,
245
+ lineNumber: 237,
246
+ columnNumber: 5
247
+ }));
248
+ const messages = await collector.waitForRender();
249
+ const renderMessages = filterRenderTreeMessages(messages);
250
+
251
+ // Context updates during the initial render produce render:node_updated messages
252
+ const nodeUpdated = renderMessages.filter(m => m.type === "render:node_updated");
253
+ expect(nodeUpdated.length).toBeGreaterThan(0);
254
+ expect(nodeUpdated[0]).toMatchObject({
255
+ type: "render:node_updated",
256
+ id: expect.any(Number)
257
+ });
258
+ collector.stop();
259
+ });
260
+ it("tracks render tree nodes during initial render", async () => {
261
+ const items = ref(["a", "b", "c"]);
262
+ const collector = await createMessageCollector(socket);
263
+ await renderAsync(_$createComponent(Output, {
264
+ get children() {
265
+ return _$createComponent(For, {
266
+ each: items,
267
+ children: item => [item]
268
+ }, {
269
+ fileName: import.meta.url,
270
+ lineNumber: 264,
271
+ columnNumber: 7
272
+ });
273
+ }
274
+ }, {
275
+ fileName: import.meta.url,
276
+ lineNumber: 263,
277
+ columnNumber: 5
278
+ }));
279
+ const messages = await collector.waitForRender();
280
+ const renderMessages = filterRenderTreeMessages(messages);
281
+
282
+ // The initial render should include node_added messages for all items
283
+ const nodeAdded = renderMessages.filter(m => m.type === "render:node_added");
284
+ expect(nodeAdded.length).toBeGreaterThan(0);
285
+
286
+ // Verify specific items appear in the tree
287
+ const itemValues = nodeAdded.filter(m => m.value === "a" || m.value === "b" || m.value === "c").map(m => m.value);
288
+ expect(itemValues).toContain("a");
289
+ expect(itemValues).toContain("b");
290
+ expect(itemValues).toContain("c");
291
+ collector.stop();
292
+ });
293
+ it("emits proper events when items are added/removed in For component", async () => {
294
+ const items = ref(["a", "b"]);
295
+ const collector = await createMessageCollector(socket);
296
+ function Display(props) {
297
+ return ["item ", _$memo(() => props.item, false, "props.item")];
298
+ }
299
+ await renderAsync(_$createComponent(Output, {
300
+ get children() {
301
+ return _$createComponent(For, {
302
+ each: items,
303
+ children: item => _$createComponent(Display, {
304
+ item: item
305
+ }, {
306
+ fileName: import.meta.url,
307
+ lineNumber: 299,
308
+ columnNumber: 36
309
+ })
310
+ }, {
311
+ fileName: import.meta.url,
312
+ lineNumber: 299,
313
+ columnNumber: 7
314
+ });
315
+ }
316
+ }, {
317
+ fileName: import.meta.url,
318
+ lineNumber: 298,
319
+ columnNumber: 5
320
+ }));
321
+ const originalMessages = await collector.waitForRender();
322
+
323
+ // Track all nodes that are currently in the tree
324
+ const activeNodes = new Map();
325
+ function processMessages(messages) {
326
+ for (const msg of messages) {
327
+ if (msg.type === "render:node_added") {
328
+ const nodeId = msg.id;
329
+ const parentId = msg.parent_id;
330
+
331
+ // Root node has null parent, otherwise parent must exist
332
+ if (parentId !== null && !activeNodes.has(parentId)) {
333
+ throw new Error(`Node ${nodeId} (${msg.kind}${msg.name ? `: ${msg.name}` : ""}) ` + `added with parent ${parentId} but parent is not in active nodes. ` + `Active nodes: ${[...activeNodes.keys()].join(", ")}`);
334
+ }
335
+ activeNodes.set(nodeId, {
336
+ parentId,
337
+ kind: msg.kind,
338
+ name: msg.name
339
+ });
340
+ } else if (msg.type === "render:node_removed") {
341
+ const nodeId = msg.id;
342
+ if (!activeNodes.has(nodeId)) {
343
+ throw new Error(`Node ${nodeId} removed but was not in active nodes. ` + `Active nodes: ${[...activeNodes.keys()].join(", ")}`);
344
+ }
345
+ activeNodes.delete(nodeId);
346
+ }
347
+ }
348
+ }
349
+
350
+ // Process initial render
351
+ processMessages(filterRenderTreeMessages(originalMessages));
352
+
353
+ // Mutate the list
354
+ items.value.push("c");
355
+ items.value.unshift("0");
356
+ await flushJobsAsync();
357
+ const updateMessages = await collector.waitForFlush();
358
+ const updateRenderMessages = filterRenderTreeMessages(updateMessages);
359
+
360
+ // Process update - this will throw if parent invariant is violated
361
+ processMessages(updateRenderMessages);
362
+ });
363
+ //# sourceMappingURL=render.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["afterEach","beforeEach","expect","it","WebSocket","createMessageCollector","filterRenderTreeMessages","For","Output","enableDevtools","resetDevtoolsServerForTests","ref","renderAsync","flushJobsAsync","socket","server","port","Promise","resolve","reject","once","close","undefined","collector","_$createComponent","fileName","import","meta","url","lineNumber","columnNumber","messages","waitForRender","at","toMatchObject","type","stop","Boom","Error","children","rejects","toThrow","renderMessages","filter","m","startsWith","name","any","String","message","Foo","_$createIntrinsic","nodeAdded","parent_id","stringMatching","value","renderCount","Display","displayNode","find","toBe","id","toEqual","Number","send","JSON","stringify","waitForFlush","props","_$memo","item","each","arrayContaining","objectContaining","Counter","nodeUpdated","length","toBeGreaterThan","items","itemValues","map","toContain","originalMessages","activeNodes","Map","processMessages","msg","nodeId","parentId","has","kind","keys","join","set","delete","push","unshift","updateMessages","updateRenderMessages"],"sources":["../../../../src/debug/render.test.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Shared serialization utilities for debug modules.
3
+ *
4
+ * Provides safe, depth-limited serialization of arbitrary values for
5
+ * transmission over the devtools protocol. Handles reactive refs, circular
6
+ * references, and non-plain objects.
7
+ */
8
+ import { isReactive, isRef } from "@vue/reactivity";
9
+ import { untrack } from "../reactivity.js";
10
+ const MAX_ENTRIES = 50;
11
+ const MAX_DEPTH = 3;
12
+ function isPlainObject(value) {
13
+ if (!value || typeof value !== "object") return false;
14
+ const proto = Object.getPrototypeOf(value);
15
+ return proto === Object.prototype || proto === null;
16
+ }
17
+ function sanitize(value, depth, seen) {
18
+ if (depth > MAX_DEPTH) return "[MaxDepth]";
19
+ if (value === null || typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
20
+ return value;
21
+ }
22
+ if (typeof value === "bigint") return value.toString();
23
+ if (typeof value === "symbol") return value.toString();
24
+ if (typeof value === "function") return "[Function]";
25
+ if (isRef(value)) {
26
+ return sanitize(value.value, depth + 1, seen);
27
+ }
28
+ if (isReactive(value)) {
29
+ return "[Reactive]";
30
+ }
31
+ if (Array.isArray(value)) {
32
+ return value.slice(0, MAX_ENTRIES).map(item => sanitize(item, depth + 1, seen));
33
+ }
34
+ if (typeof value === "object") {
35
+ const obj = value;
36
+ if (seen.has(obj)) return "[Circular]";
37
+ seen.add(obj);
38
+ if (!isPlainObject(obj)) {
39
+ const name = obj.constructor?.name ?? "Object";
40
+ return `[${name}]`;
41
+ }
42
+ const entries = Object.entries(obj).slice(0, MAX_ENTRIES);
43
+ const result = {};
44
+ for (const [key, val] of entries) {
45
+ result[key] = sanitize(val, depth + 1, seen);
46
+ }
47
+ return result;
48
+ }
49
+ return String(value);
50
+ }
51
+
52
+ /**
53
+ * Sanitize a record of metadata for safe serialization over the devtools
54
+ * protocol. Unwraps refs, replaces reactive objects with placeholders, limits
55
+ * depth and entry count, and detects circular references.
56
+ *
57
+ * Runs inside `untrack()` to avoid creating reactive dependencies.
58
+ */
59
+ export function sanitizeRecord(input) {
60
+ return untrack(() => {
61
+ if (!input) return undefined;
62
+ const seen = new WeakSet();
63
+ const result = {};
64
+ for (const [key, value] of Object.entries(input).slice(0, MAX_ENTRIES)) {
65
+ result[key] = sanitize(value, 0, seen);
66
+ }
67
+ return result;
68
+ });
69
+ }
70
+ //# sourceMappingURL=serialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isReactive","isRef","untrack","MAX_ENTRIES","MAX_DEPTH","isPlainObject","value","proto","Object","getPrototypeOf","prototype","sanitize","depth","seen","toString","Array","isArray","slice","map","item","obj","has","add","name","constructor","entries","result","key","val","String","sanitizeRecord","input","undefined","WeakSet"],"sources":["../../../../src/debug/serialize.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Browser stub for source-map resolution.
3
+ *
4
+ * Source maps are not resolved in the browser — all functions pass through
5
+ * their inputs unchanged.
6
+ */
7
+
8
+ export function loadSourceMapSupport() {
9
+ // no-op in browser
10
+ }
11
+ export function getRealPath(fileName) {
12
+ return fileName;
13
+ }
14
+ export function resolveSourceMap(fileName, line, col) {
15
+ return {
16
+ fileName,
17
+ line,
18
+ col
19
+ };
20
+ }
21
+ export function resolveComponentSource(source) {
22
+ return source;
23
+ }
24
+ //# sourceMappingURL=source-map.browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["loadSourceMapSupport","getRealPath","fileName","resolveSourceMap","line","col","resolveComponentSource","source"],"sources":["../../../../src/debug/source-map.browser.ts"],"sourcesContent":[null],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;;AAIA,OAAO,SAASA,oBAAoBA,CAAA,EAAG;EACrC;AAAA;AAGF,OAAO,SAASC,WAAWA,CAACC,QAAgB,EAAU;EACpD,OAAOA,QAAQ;AACjB;AAEA,OAAO,SAASC,gBAAgBA,CAC9BD,QAAgB,EAChBE,IAAY,EACZC,GAAW,EACsC;EACjD,OAAO;IAAEH,QAAQ;IAAEE,IAAI;IAAEC;EAAI,CAAC;AAChC;AAEA,OAAO,SAASC,sBAAsBA,CACpCC,MAAkC,EACN;EAC5B,OAAOA,MAAM;AACf","ignoreList":[]}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Shared source-map resolution utilities.
3
+ *
4
+ * Used by both effect source capture (effects.ts) and component source
5
+ * resolution (render.ts) to convert file paths and resolve source maps.
6
+ */
7
+
8
+ // Lazily loaded findSourceMap from node:module
9
+ let findSourceMap;
10
+ let loaded = false;
11
+ let realpathSync;
12
+ let fileURLToPath;
13
+ const realpathCache = new Map();
14
+ export function loadSourceMapSupport() {
15
+ if (loaded) return;
16
+ loaded = true;
17
+ try {
18
+ const mod = process.getBuiltinModule?.("node:module");
19
+ if (mod && typeof mod.findSourceMap === "function") {
20
+ findSourceMap = mod.findSourceMap;
21
+ }
22
+ } catch {
23
+ // not available
24
+ }
25
+ try {
26
+ const fs = process.getBuiltinModule?.("node:fs");
27
+ if (fs) {
28
+ realpathSync = fs.realpathSync;
29
+ }
30
+ } catch {
31
+ // not available
32
+ }
33
+ try {
34
+ const url = process.getBuiltinModule?.("node:url");
35
+ if (url) {
36
+ fileURLToPath = url.fileURLToPath;
37
+ }
38
+ } catch {
39
+ // not available
40
+ }
41
+ }
42
+ export function getRealPath(fileName) {
43
+ if (!realpathSync) return fileName;
44
+ let real = realpathCache.get(fileName);
45
+ if (real === undefined) {
46
+ try {
47
+ real = realpathSync(fileName);
48
+ } catch {
49
+ real = fileName;
50
+ }
51
+ realpathCache.set(fileName, real);
52
+ }
53
+ return real;
54
+ }
55
+ export function resolveSourceMap(fileName, line, col) {
56
+ if (!findSourceMap) return {
57
+ fileName,
58
+ line,
59
+ col
60
+ };
61
+ // pnpm uses symlinks; findSourceMap only matches the real path
62
+ const real = getRealPath(fileName);
63
+ const map = findSourceMap(real);
64
+ if (!map) return {
65
+ fileName,
66
+ line,
67
+ col
68
+ };
69
+ const entry = map.findEntry(line - 1, col - 1);
70
+ if (!entry) return {
71
+ fileName,
72
+ line,
73
+ col
74
+ };
75
+ return {
76
+ fileName: entry.originalSource,
77
+ line: entry.originalLine + 1,
78
+ col: entry.originalColumn + 1
79
+ };
80
+ }
81
+ function stripFileUrl(path) {
82
+ if (!path.startsWith("file://")) return path;
83
+ if (fileURLToPath) return fileURLToPath(path);
84
+ return new URL(path).pathname;
85
+ }
86
+
87
+ /**
88
+ * Resolve a component source location. Handles:
89
+ * - `file://` URLs from import.meta.url (converts to file path)
90
+ * - Source map resolution (maps compiled .js to original .tsx)
91
+ * - Plain absolute paths (legacy format, returned as-is)
92
+ */
93
+ export function resolveComponentSource(source) {
94
+ if (!source?.fileName) return source;
95
+ loadSourceMapSupport();
96
+ const fileName = stripFileUrl(source.fileName);
97
+ if (source.lineNumber != null && source.columnNumber != null) {
98
+ // Resolve through source maps to get the original .tsx path
99
+ const resolved = resolveSourceMap(fileName, source.lineNumber, source.columnNumber);
100
+ return {
101
+ fileName: stripFileUrl(resolved.fileName),
102
+ lineNumber: resolved.line,
103
+ columnNumber: resolved.col
104
+ };
105
+ }
106
+ return {
107
+ ...source,
108
+ fileName
109
+ };
110
+ }
111
+ //# sourceMappingURL=source-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["findSourceMap","loaded","realpathSync","fileURLToPath","realpathCache","Map","loadSourceMapSupport","mod","process","getBuiltinModule","fs","url","getRealPath","fileName","real","get","undefined","set","resolveSourceMap","line","col","map","entry","findEntry","originalSource","originalLine","originalColumn","stripFileUrl","path","startsWith","URL","pathname","resolveComponentSource","source","lineNumber","columnNumber","resolved"],"sources":["../../../../src/debug/source-map.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}