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

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 (337) hide show
  1. package/CHANGELOG.md +0 -22
  2. package/dist/devtools/index.html +80 -0
  3. package/dist/src/binder.d.ts +2 -0
  4. package/dist/src/binder.d.ts.map +1 -1
  5. package/dist/src/binder.js +60 -12
  6. package/dist/src/binder.js.map +1 -1
  7. package/dist/src/components/AccessExpression.d.ts +78 -0
  8. package/dist/src/components/AccessExpression.d.ts.map +1 -0
  9. package/dist/src/components/AccessExpression.js +218 -0
  10. package/dist/src/components/AccessExpression.js.map +1 -0
  11. package/dist/src/components/AccessExpression.test.d.ts +2 -0
  12. package/dist/src/components/AccessExpression.test.d.ts.map +1 -0
  13. package/dist/src/components/AccessExpression.test.js +137 -0
  14. package/dist/src/components/AccessExpression.test.js.map +1 -0
  15. package/dist/src/components/AppendFile.d.ts.map +1 -1
  16. package/dist/src/components/AppendFile.js +14 -3
  17. package/dist/src/components/AppendFile.js.map +1 -1
  18. package/dist/src/components/Block.js +1 -1
  19. package/dist/src/components/Block.js.map +1 -1
  20. package/dist/src/components/Declaration.d.ts.map +1 -1
  21. package/dist/src/components/Declaration.js +2 -1
  22. package/dist/src/components/Declaration.js.map +1 -1
  23. package/dist/src/components/For.d.ts.map +1 -1
  24. package/dist/src/components/For.js +1 -1
  25. package/dist/src/components/For.js.map +1 -1
  26. package/dist/src/components/List.d.ts.map +1 -1
  27. package/dist/src/components/List.js +1 -1
  28. package/dist/src/components/List.js.map +1 -1
  29. package/dist/src/components/Prose.js +2 -2
  30. package/dist/src/components/Prose.js.map +1 -1
  31. package/dist/src/components/Scope.d.ts.map +1 -1
  32. package/dist/src/components/Scope.js +6 -1
  33. package/dist/src/components/Scope.js.map +1 -1
  34. package/dist/src/components/SourceDirectory.d.ts.map +1 -1
  35. package/dist/src/components/SourceDirectory.js +1 -2
  36. package/dist/src/components/SourceDirectory.js.map +1 -1
  37. package/dist/src/components/Switch.d.ts.map +1 -1
  38. package/dist/src/components/Switch.js +1 -1
  39. package/dist/src/components/Switch.js.map +1 -1
  40. package/dist/src/components/TemplateFile.d.ts.map +1 -1
  41. package/dist/src/components/TemplateFile.js +18 -3
  42. package/dist/src/components/TemplateFile.js.map +1 -1
  43. package/dist/src/components/index.d.ts +1 -0
  44. package/dist/src/components/index.d.ts.map +1 -1
  45. package/dist/src/components/index.js +1 -0
  46. package/dist/src/components/index.js.map +1 -1
  47. package/dist/src/content-slot.d.ts.map +1 -1
  48. package/dist/src/content-slot.js +7 -6
  49. package/dist/src/content-slot.js.map +1 -1
  50. package/dist/src/context.d.ts.map +1 -1
  51. package/dist/src/context.js +10 -3
  52. package/dist/src/context.js.map +1 -1
  53. package/dist/src/debug/cli.d.ts +6 -0
  54. package/dist/src/debug/cli.d.ts.map +1 -0
  55. package/dist/src/{debug.js → debug/cli.js} +79 -82
  56. package/dist/src/debug/cli.js.map +1 -0
  57. package/dist/src/debug/diagnostics.test.d.ts +2 -0
  58. package/dist/src/debug/diagnostics.test.d.ts.map +1 -0
  59. package/dist/src/debug/diagnostics.test.js +46 -0
  60. package/dist/src/debug/diagnostics.test.js.map +1 -0
  61. package/dist/src/debug/effects.d.ts +81 -0
  62. package/dist/src/debug/effects.d.ts.map +1 -0
  63. package/dist/src/debug/effects.js +358 -0
  64. package/dist/src/debug/effects.js.map +1 -0
  65. package/dist/src/debug/effects.test.d.ts +2 -0
  66. package/dist/src/debug/effects.test.d.ts.map +1 -0
  67. package/dist/src/debug/effects.test.js +256 -0
  68. package/dist/src/debug/effects.test.js.map +1 -0
  69. package/dist/src/debug/files.d.ts +14 -0
  70. package/dist/src/debug/files.d.ts.map +1 -0
  71. package/dist/src/debug/files.js +29 -0
  72. package/dist/src/debug/files.js.map +1 -0
  73. package/dist/src/debug/files.test.d.ts +2 -0
  74. package/dist/src/debug/files.test.d.ts.map +1 -0
  75. package/dist/src/debug/files.test.js +66 -0
  76. package/dist/src/debug/files.test.js.map +1 -0
  77. package/dist/src/debug/index.d.ts +63 -0
  78. package/dist/src/debug/index.d.ts.map +1 -0
  79. package/dist/src/debug/index.js +71 -0
  80. package/dist/src/debug/index.js.map +1 -0
  81. package/dist/src/debug/message-format.test.d.ts +2 -0
  82. package/dist/src/debug/message-format.test.d.ts.map +1 -0
  83. package/dist/src/debug/message-format.test.js +700 -0
  84. package/dist/src/debug/message-format.test.js.map +1 -0
  85. package/dist/src/debug/render-tree-orphans.test.d.ts +2 -0
  86. package/dist/src/debug/render-tree-orphans.test.d.ts.map +1 -0
  87. package/dist/src/debug/render-tree-orphans.test.js +297 -0
  88. package/dist/src/debug/render-tree-orphans.test.js.map +1 -0
  89. package/dist/src/debug/render.d.ts +57 -0
  90. package/dist/src/debug/render.d.ts.map +1 -0
  91. package/dist/src/debug/render.js +472 -0
  92. package/dist/src/debug/render.js.map +1 -0
  93. package/dist/src/debug/render.test.d.ts +2 -0
  94. package/dist/src/debug/render.test.d.ts.map +1 -0
  95. package/dist/src/debug/render.test.js +291 -0
  96. package/dist/src/debug/render.test.js.map +1 -0
  97. package/dist/src/debug/serialize.d.ts +9 -0
  98. package/dist/src/debug/serialize.d.ts.map +1 -0
  99. package/dist/src/debug/serialize.js +70 -0
  100. package/dist/src/debug/serialize.js.map +1 -0
  101. package/dist/src/debug/symbols.d.ts +16 -0
  102. package/dist/src/debug/symbols.d.ts.map +1 -0
  103. package/dist/src/debug/symbols.js +196 -0
  104. package/dist/src/debug/symbols.js.map +1 -0
  105. package/dist/src/debug/symbols.test.d.ts +2 -0
  106. package/dist/src/debug/symbols.test.d.ts.map +1 -0
  107. package/dist/src/debug/symbols.test.js +93 -0
  108. package/dist/src/debug/symbols.test.js.map +1 -0
  109. package/dist/src/debug/trace-writer.d.ts +55 -0
  110. package/dist/src/debug/trace-writer.d.ts.map +1 -0
  111. package/dist/src/debug/trace-writer.js +658 -0
  112. package/dist/src/debug/trace-writer.js.map +1 -0
  113. package/dist/src/debug/trace.d.ts +342 -0
  114. package/dist/src/debug/trace.d.ts.map +1 -0
  115. package/dist/src/debug/trace.js +446 -0
  116. package/dist/src/debug/trace.js.map +1 -0
  117. package/dist/src/devtools/devtools-protocol.d.ts +389 -0
  118. package/dist/src/devtools/devtools-protocol.d.ts.map +1 -0
  119. package/dist/src/devtools/devtools-protocol.js +2 -0
  120. package/dist/src/devtools/devtools-protocol.js.map +1 -0
  121. package/dist/src/devtools/devtools-server.browser.d.ts +23 -0
  122. package/dist/src/devtools/devtools-server.browser.d.ts.map +1 -0
  123. package/dist/src/devtools/devtools-server.browser.js +33 -0
  124. package/dist/src/devtools/devtools-server.browser.js.map +1 -0
  125. package/dist/src/devtools/devtools-server.d.ts +66 -0
  126. package/dist/src/devtools/devtools-server.d.ts.map +1 -0
  127. package/dist/src/devtools/devtools-server.js +444 -0
  128. package/dist/src/devtools/devtools-server.js.map +1 -0
  129. package/dist/src/devtools/devtools-transport.d.ts +23 -0
  130. package/dist/src/devtools/devtools-transport.d.ts.map +1 -0
  131. package/dist/src/devtools/devtools-transport.js +114 -0
  132. package/dist/src/devtools/devtools-transport.js.map +1 -0
  133. package/dist/src/devtools-entry.browser.d.ts +4 -0
  134. package/dist/src/devtools-entry.browser.d.ts.map +1 -0
  135. package/dist/src/devtools-entry.browser.js +2 -0
  136. package/dist/src/devtools-entry.browser.js.map +1 -0
  137. package/dist/src/devtools-entry.d.ts +4 -0
  138. package/dist/src/devtools-entry.d.ts.map +1 -0
  139. package/dist/src/devtools-entry.js +2 -0
  140. package/dist/src/devtools-entry.js.map +1 -0
  141. package/dist/src/diagnostics.d.ts +34 -0
  142. package/dist/src/diagnostics.d.ts.map +1 -0
  143. package/dist/src/diagnostics.js +89 -0
  144. package/dist/src/diagnostics.js.map +1 -0
  145. package/dist/src/index.d.ts +3 -2
  146. package/dist/src/index.d.ts.map +1 -1
  147. package/dist/src/index.js +3 -2
  148. package/dist/src/index.js.map +1 -1
  149. package/dist/src/print-hook.d.ts +14 -0
  150. package/dist/src/print-hook.d.ts.map +1 -0
  151. package/dist/src/print-hook.js +10 -0
  152. package/dist/src/print-hook.js.map +1 -0
  153. package/dist/src/reactive-union-set.d.ts.map +1 -1
  154. package/dist/src/reactive-union-set.js +28 -3
  155. package/dist/src/reactive-union-set.js.map +1 -1
  156. package/dist/src/reactivity.d.ts +60 -7
  157. package/dist/src/reactivity.d.ts.map +1 -1
  158. package/dist/src/reactivity.js +308 -39
  159. package/dist/src/reactivity.js.map +1 -1
  160. package/dist/src/render-stack.d.ts +18 -1
  161. package/dist/src/render-stack.d.ts.map +1 -1
  162. package/dist/src/render-stack.js +61 -1
  163. package/dist/src/render-stack.js.map +1 -1
  164. package/dist/src/render.d.ts +8 -15
  165. package/dist/src/render.d.ts.map +1 -1
  166. package/dist/src/render.js +424 -109
  167. package/dist/src/render.js.map +1 -1
  168. package/dist/src/resource.d.ts.map +1 -1
  169. package/dist/src/resource.js +5 -0
  170. package/dist/src/resource.js.map +1 -1
  171. package/dist/src/scheduler.d.ts +13 -0
  172. package/dist/src/scheduler.d.ts.map +1 -1
  173. package/dist/src/scheduler.js +150 -13
  174. package/dist/src/scheduler.js.map +1 -1
  175. package/dist/src/symbols/basic-symbol.d.ts.map +1 -1
  176. package/dist/src/symbols/basic-symbol.js +6 -1
  177. package/dist/src/symbols/basic-symbol.js.map +1 -1
  178. package/dist/src/symbols/decl.d.ts.map +1 -1
  179. package/dist/src/symbols/decl.js +5 -1
  180. package/dist/src/symbols/decl.js.map +1 -1
  181. package/dist/src/symbols/output-scope.d.ts +2 -1
  182. package/dist/src/symbols/output-scope.d.ts.map +1 -1
  183. package/dist/src/symbols/output-scope.js +13 -8
  184. package/dist/src/symbols/output-scope.js.map +1 -1
  185. package/dist/src/symbols/output-symbol.d.ts +1 -0
  186. package/dist/src/symbols/output-symbol.d.ts.map +1 -1
  187. package/dist/src/symbols/output-symbol.js +25 -8
  188. package/dist/src/symbols/output-symbol.js.map +1 -1
  189. package/dist/src/symbols/symbol-flow.d.ts.map +1 -1
  190. package/dist/src/symbols/symbol-flow.js +24 -8
  191. package/dist/src/symbols/symbol-flow.js.map +1 -1
  192. package/dist/src/symbols/symbol-slot.d.ts.map +1 -1
  193. package/dist/src/symbols/symbol-slot.js +15 -0
  194. package/dist/src/symbols/symbol-slot.js.map +1 -1
  195. package/dist/src/symbols/symbol-slot.test.d.ts +2 -0
  196. package/dist/src/symbols/symbol-slot.test.d.ts.map +1 -0
  197. package/dist/src/symbols/symbol-slot.test.js +35 -0
  198. package/dist/src/symbols/symbol-slot.test.js.map +1 -0
  199. package/dist/src/symbols/symbol-table.d.ts.map +1 -1
  200. package/dist/src/symbols/symbol-table.js +6 -5
  201. package/dist/src/symbols/symbol-table.js.map +1 -1
  202. package/dist/src/trace.d.ts +2 -0
  203. package/dist/src/trace.d.ts.map +1 -0
  204. package/dist/src/trace.js +2 -0
  205. package/dist/src/trace.js.map +1 -0
  206. package/dist/src/tracer.d.ts +2 -228
  207. package/dist/src/tracer.d.ts.map +1 -1
  208. package/dist/src/tracer.js +5 -298
  209. package/dist/src/tracer.js.map +1 -1
  210. package/dist/src/utils.d.ts.map +1 -1
  211. package/dist/src/utils.js +17 -9
  212. package/dist/src/utils.js.map +1 -1
  213. package/dist/test/components/append-file.test.d.ts.map +1 -1
  214. package/dist/test/components/append-file.test.js +18 -10
  215. package/dist/test/components/append-file.test.js.map +1 -1
  216. package/dist/test/components/template-file.test.d.ts.map +1 -1
  217. package/dist/test/components/template-file.test.js +6 -4
  218. package/dist/test/components/template-file.test.js.map +1 -1
  219. package/dist/test/lazy-isempty.test.d.ts +2 -0
  220. package/dist/test/lazy-isempty.test.d.ts.map +1 -0
  221. package/dist/test/lazy-isempty.test.js +89 -0
  222. package/dist/test/lazy-isempty.test.js.map +1 -0
  223. package/dist/test/reactive-union-set-disposers.test.d.ts +2 -0
  224. package/dist/test/reactive-union-set-disposers.test.d.ts.map +1 -0
  225. package/dist/test/reactive-union-set-disposers.test.js +98 -0
  226. package/dist/test/reactive-union-set-disposers.test.js.map +1 -0
  227. package/dist/test/reactivity/shallow-reactive.test.d.ts +2 -0
  228. package/dist/test/reactivity/shallow-reactive.test.d.ts.map +1 -0
  229. package/dist/test/reactivity/shallow-reactive.test.js +52 -0
  230. package/dist/test/reactivity/shallow-reactive.test.js.map +1 -0
  231. package/dist/test/rendering/basic.test.js +3 -0
  232. package/dist/test/rendering/basic.test.js.map +1 -1
  233. package/dist/test/rendering/print-render-stack.test.d.ts.map +1 -1
  234. package/dist/test/rendering/print-render-stack.test.js +91 -98
  235. package/dist/test/rendering/print-render-stack.test.js.map +1 -1
  236. package/dist/test/scheduler-extended.test.d.ts +2 -0
  237. package/dist/test/scheduler-extended.test.d.ts.map +1 -0
  238. package/dist/test/scheduler-extended.test.js +96 -0
  239. package/dist/test/scheduler-extended.test.js.map +1 -0
  240. package/dist/test/scheduler.test.d.ts +2 -0
  241. package/dist/test/scheduler.test.d.ts.map +1 -0
  242. package/dist/test/scheduler.test.js +46 -0
  243. package/dist/test/scheduler.test.js.map +1 -0
  244. package/dist/testing/create-test-wrapper.d.ts +1 -1
  245. package/dist/testing/create-test-wrapper.d.ts.map +1 -1
  246. package/dist/testing/create-test-wrapper.js +1 -1
  247. package/dist/testing/create-test-wrapper.js.map +1 -1
  248. package/dist/testing/devtools-utils.d.ts +35 -0
  249. package/dist/testing/devtools-utils.d.ts.map +1 -0
  250. package/dist/testing/devtools-utils.js +162 -0
  251. package/dist/testing/devtools-utils.js.map +1 -0
  252. package/dist/testing/extend-expect.d.ts.map +1 -1
  253. package/dist/testing/extend-expect.js +63 -1
  254. package/dist/testing/extend-expect.js.map +1 -1
  255. package/dist/testing/render.d.ts +2 -2
  256. package/dist/testing/render.d.ts.map +1 -1
  257. package/dist/testing/render.js +2 -2
  258. package/dist/testing/render.js.map +1 -1
  259. package/dist/tsconfig.tsbuildinfo +1 -1
  260. package/package.json +21 -7
  261. package/scripts/copy-devtools-ui.mjs +26 -0
  262. package/src/binder.ts +117 -53
  263. package/src/components/AccessExpression.test.tsx +132 -0
  264. package/src/components/AccessExpression.tsx +344 -0
  265. package/src/components/AppendFile.tsx +14 -9
  266. package/src/components/Block.tsx +1 -1
  267. package/src/components/Declaration.tsx +2 -1
  268. package/src/components/For.tsx +14 -10
  269. package/src/components/List.tsx +7 -4
  270. package/src/components/Prose.tsx +1 -1
  271. package/src/components/Scope.tsx +6 -1
  272. package/src/components/SourceDirectory.tsx +1 -2
  273. package/src/components/Switch.tsx +11 -7
  274. package/src/components/TemplateFile.tsx +18 -9
  275. package/src/components/index.tsx +1 -0
  276. package/src/content-slot.tsx +7 -7
  277. package/src/context.ts +17 -6
  278. package/src/{debug.ts → debug/cli.ts} +114 -125
  279. package/src/debug/diagnostics.test.tsx +56 -0
  280. package/src/debug/effects.test.tsx +301 -0
  281. package/src/debug/effects.ts +531 -0
  282. package/src/debug/files.test.tsx +76 -0
  283. package/src/debug/files.ts +40 -0
  284. package/src/debug/index.ts +132 -0
  285. package/src/debug/message-format.test.tsx +759 -0
  286. package/src/debug/render-tree-orphans.test.tsx +344 -0
  287. package/src/debug/render.test.tsx +357 -0
  288. package/src/debug/render.ts +698 -0
  289. package/src/debug/serialize.ts +85 -0
  290. package/src/debug/symbols.test.tsx +105 -0
  291. package/src/debug/symbols.ts +322 -0
  292. package/src/debug/trace-writer.ts +969 -0
  293. package/src/debug/trace.ts +309 -0
  294. package/src/devtools/devtools-protocol.ts +497 -0
  295. package/src/devtools/devtools-server.browser.ts +62 -0
  296. package/src/devtools/devtools-server.ts +468 -0
  297. package/src/devtools/devtools-transport.ts +154 -0
  298. package/src/devtools-entry.browser.ts +48 -0
  299. package/src/devtools-entry.ts +48 -0
  300. package/src/diagnostics.ts +150 -0
  301. package/src/index.ts +2 -7
  302. package/src/print-hook.ts +22 -0
  303. package/src/reactive-union-set.ts +85 -44
  304. package/src/reactivity.ts +396 -58
  305. package/src/render-stack.ts +73 -1
  306. package/src/render.ts +544 -161
  307. package/src/resource.ts +28 -19
  308. package/src/scheduler.ts +209 -14
  309. package/src/symbols/basic-symbol.ts +6 -1
  310. package/src/symbols/decl.ts +5 -1
  311. package/src/symbols/output-scope.ts +21 -13
  312. package/src/symbols/output-symbol.ts +34 -14
  313. package/src/symbols/symbol-flow.ts +76 -39
  314. package/src/symbols/symbol-slot.test.tsx +41 -0
  315. package/src/symbols/symbol-slot.tsx +47 -20
  316. package/src/symbols/symbol-table.ts +6 -10
  317. package/src/trace.ts +1 -0
  318. package/src/tracer.ts +13 -242
  319. package/src/utils.tsx +31 -21
  320. package/temp/api.json +5700 -3015
  321. package/test/components/append-file.test.tsx +36 -29
  322. package/test/components/template-file.test.tsx +11 -11
  323. package/test/lazy-isempty.test.tsx +106 -0
  324. package/test/reactive-union-set-disposers.test.tsx +112 -0
  325. package/test/reactivity/shallow-reactive.test.tsx +56 -0
  326. package/test/rendering/basic.test.tsx +4 -0
  327. package/test/rendering/print-render-stack.test.tsx +52 -43
  328. package/test/scheduler-extended.test.tsx +122 -0
  329. package/test/scheduler.test.tsx +50 -0
  330. package/testing/create-test-wrapper.tsx +1 -1
  331. package/testing/devtools-utils.ts +245 -0
  332. package/testing/extend-expect.ts +89 -0
  333. package/testing/render.ts +2 -2
  334. package/testing/vitest.d.ts +9 -0
  335. package/dist/src/debug.d.ts +0 -14
  336. package/dist/src/debug.d.ts.map +0 -1
  337. package/dist/src/debug.js.map +0 -1
@@ -1,38 +1,65 @@
1
- import { isRef, pauseTracking, ref, resetTracking, shallowRef, stop, effect as vueEffect } from "@vue/reactivity";
2
- import { scheduler } from "./scheduler.js";
3
- import { trace, TracePhase } from "./tracer.js";
4
-
5
- // check for multiple versions of alloy here.
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";
6
4
  if (globalThis.__ALLOY__) {
7
5
  throw new Error("Multiple versions of Alloy are loaded for this project. This will likely cause undesirable behavior.");
8
6
  }
9
7
  globalThis.__ALLOY__ = true;
10
8
  export function getElementCache() {
11
- return getContext().elementCache;
9
+ const ctx = getContext();
10
+ return ctx.elementCache ??= new Map();
12
11
  }
12
+ let contextIdCounter = 0;
13
13
  let globalContext = null;
14
14
  export function getContext() {
15
15
  return globalContext;
16
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
+ }
17
46
  export function root(fn, options) {
18
47
  const context = {
48
+ id: contextIdCounter++,
19
49
  componentOwner: options?.componentOwner,
20
- disposables: [],
21
50
  owner: globalContext,
22
- context: {},
23
- elementCache: new Map(),
24
51
  takesSymbols: false,
25
52
  takenSymbols: undefined,
26
53
  childrenWithContent: 0,
27
- isEmpty: ref(true),
54
+ _lastEmpty: true,
28
55
  isRoot: true
29
56
  };
30
57
  globalContext = context;
31
58
  let ret;
32
59
  try {
33
60
  ret = untrack(() => fn(() => {
34
- for (const d of context.disposables) {
35
- d();
61
+ for (const d of context.disposables ?? []) {
62
+ untrack(d);
36
63
  }
37
64
  }));
38
65
  } finally {
@@ -46,36 +73,169 @@ export function untrack(fn) {
46
73
  resetTracking();
47
74
  return v;
48
75
  }
49
- export function memo(fn, equal) {
50
- const o = shallowRef();
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
+ });
51
95
  effect(prev => {
52
96
  const res = fn();
53
97
  // eslint-disable-next-line @typescript-eslint/no-unused-expressions
54
98
  (!equal || prev !== res) && (o.value = res);
55
99
  return res;
56
- }, undefined);
57
- return () => o.value;
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;
58
113
  }
59
- export function effect(fn, current) {
114
+ export function effect(fn, current, options) {
60
115
  const context = {
61
- context: {},
62
- disposables: [],
116
+ id: contextIdCounter++,
63
117
  owner: globalContext,
64
- elementCache: new Map(),
65
118
  takesSymbols: false,
66
119
  takenSymbols: undefined,
67
120
  childrenWithContent: 0,
121
+ _lastEmpty: true,
68
122
  isRoot: false
69
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
+ }
70
136
  const cleanupFn = final => {
71
137
  const d = context.disposables;
72
- context.disposables = [];
73
- for (let k = 0, len = d.length; k < len; k++) d[k]();
138
+ context.disposables = undefined;
139
+ if (d) {
140
+ for (let k = 0, len = d.length; k < len; k++) untrack(d[k]);
141
+ }
74
142
 
75
143
  // eslint-disable-next-line @typescript-eslint/no-unused-expressions
76
144
  final && stop(runner);
77
145
  };
78
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
+ }
79
239
  const runner = vueEffect(() => {
80
240
  cleanupFn(false);
81
241
  const oldContext = globalContext;
@@ -85,22 +245,10 @@ export function effect(fn, current) {
85
245
  } finally {
86
246
  globalContext = oldContext;
87
247
  }
88
- }, {
89
- // allow recursive effects with 32, 1 and 4 are default flags
90
- // @ts-expect-error flags is a vue internal thing
91
- flags: 1 | 4 | 32,
92
- scheduler: scheduler(),
93
- onTrack(event) {
94
- trace(TracePhase.effect.track, () => {
95
- return `tracking ${isRef(event.target) ? `Ref:${refId(event.target)}` : event.target}, ${String(event.key)}`;
96
- });
97
- },
98
- onTrigger(event) {
99
- trace(TracePhase.effect.trigger, () => {
100
- return `triggering ${isRef(event.target) ? `Ref:${refId(event.target)}` : event.target}, ${String(event.key)}`;
101
- });
102
- }
103
- });
248
+ }, effectOpts);
249
+ if (effectId !== -1) {
250
+ effectIdMap.set(runner.effect, effectId);
251
+ }
104
252
  }
105
253
 
106
254
  /**
@@ -123,7 +271,7 @@ export function effect(fn, current) {
123
271
  */
124
272
  export function onCleanup(fn) {
125
273
  if (globalContext != null) {
126
- globalContext.disposables.push(fn);
274
+ (globalContext.disposables ??= []).push(fn);
127
275
  }
128
276
  }
129
277
 
@@ -144,8 +292,81 @@ export function createCustomContext(useCallback) {
144
292
  export function isCustomContext(child) {
145
293
  return typeof child === "object" && child !== null && Object.hasOwn(child, CUSTOM_CONTEXT_SYM);
146
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
+ }
147
364
  const seenRefs = new WeakMap();
148
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();
149
370
  export function refId(ref) {
150
371
  let id = seenRefs.get(ref);
151
372
  if (id === undefined) {
@@ -154,4 +375,52 @@ export function refId(ref) {
154
375
  }
155
376
  return id;
156
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
+ }
157
426
  //# sourceMappingURL=reactivity.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["isRef","pauseTracking","ref","resetTracking","shallowRef","stop","effect","vueEffect","scheduler","trace","TracePhase","globalThis","__ALLOY__","Error","getElementCache","getContext","elementCache","globalContext","root","fn","options","context","componentOwner","disposables","owner","Map","takesSymbols","takenSymbols","undefined","childrenWithContent","isEmpty","isRoot","ret","untrack","d","v","memo","equal","o","prev","res","value","current","cleanupFn","final","k","len","length","runner","onCleanup","oldContext","flags","onTrack","event","track","target","refId","String","key","onTrigger","trigger","push","CUSTOM_CONTEXT_SYM","Symbol","createCustomContext","useCallback","useCustomContext","useCb","isCustomContext","child","Object","hasOwn","seenRefs","WeakMap","refIdCounter","id","get","set"],"sources":["../../src/reactivity.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
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":[]}
@@ -1,13 +1,30 @@
1
+ import { Context } from "./reactivity.js";
1
2
  import { Component, Props, SourceLocation } from "./runtime/component.js";
3
+ export interface RenderStackSnapshotEntry {
4
+ component: Component<any>;
5
+ props: Props;
6
+ context: Context | null;
7
+ source?: SourceLocation;
8
+ displayName: string;
9
+ }
2
10
  export declare function pushStack(component: Component<any>, props: Props, source?: SourceLocation): void;
3
11
  export declare function popStack(): void;
12
+ export declare function currentComponentName(): string | undefined;
4
13
  export declare function clearRenderStack(): void;
14
+ /**
15
+ * Get the current rendering path from the render stack context.
16
+ * Prefers SourceFileContext over SourceDirectoryContext.
17
+ */
18
+ export declare function getCurrentRenderPath(): string | undefined;
19
+ export declare function getRenderStackSnapshot(): RenderStackSnapshotEntry[];
5
20
  /**
6
21
  * Print the current render stack to the console for debugging.
7
22
  *
8
23
  * This differs from debug.component.stack in that this uses a purpose-built
9
24
  * stack rather than walking the context chain. When this is called, the context
10
25
  * chain has been restored. In the future this can probably be unified nicely.
26
+ *
27
+ * @param error - Optional error to print the stack trace from
11
28
  */
12
- export declare function printRenderStack(): void;
29
+ export declare function printRenderStack(error?: unknown): void;
13
30
  //# sourceMappingURL=render-stack.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"render-stack.d.ts","sourceRoot":"","sources":["../../src/render-stack.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAU1E,wBAAgB,SAAS,CACvB,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,EACzB,KAAK,EAAE,KAAK,EACZ,MAAM,CAAC,EAAE,cAAc,QAGxB;AAED,wBAAgB,QAAQ,SAEvB;AAED,wBAAgB,gBAAgB,SAE/B;AA4DD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,SA6H/B"}
1
+ {"version":3,"file":"render-stack.d.ts","sourceRoot":"","sources":["../../src/render-stack.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAc,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAU1E,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,SAAS,CACvB,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,EACzB,KAAK,EAAE,KAAK,EACZ,MAAM,CAAC,EAAE,cAAc,QAGxB;AAED,wBAAgB,QAAQ,SAEvB;AAED,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAGzD;AAED,wBAAgB,gBAAgB,SAE/B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAoBzD;AAED,wBAAgB,sBAAsB,IAAI,wBAAwB,EAAE,CAQnE;AA4DD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,EAAE,OAAO,QAkJ/C"}
@@ -16,10 +16,47 @@ export function pushStack(component, props, source) {
16
16
  export function popStack() {
17
17
  renderStack.pop();
18
18
  }
19
+ export function currentComponentName() {
20
+ const entry = renderStack[renderStack.length - 1];
21
+ return entry?.component.name || undefined;
22
+ }
19
23
  export function clearRenderStack() {
20
24
  renderStack.length = 0;
21
25
  }
22
26
 
27
+ /**
28
+ * Get the current rendering path from the render stack context.
29
+ * Prefers SourceFileContext over SourceDirectoryContext.
30
+ */
31
+ export function getCurrentRenderPath() {
32
+ let currentPath;
33
+ for (let i = renderStack.length - 1; i >= 0; i--) {
34
+ const {
35
+ context
36
+ } = renderStack[i];
37
+ // Prefer SourceFileContext over SourceDirectoryContext
38
+ if (context?.context?.[SourceFileContext.id]) {
39
+ const fileContext = context.context[SourceFileContext.id];
40
+ return fileContext.path;
41
+ }
42
+ if (!currentPath && context?.context?.[SourceDirectoryContext.id]) {
43
+ const dirContext = context.context[SourceDirectoryContext.id];
44
+ currentPath = dirContext.path;
45
+ // Don't break - keep looking for a SourceFileContext
46
+ }
47
+ }
48
+ return currentPath;
49
+ }
50
+ export function getRenderStackSnapshot() {
51
+ return renderStack.map(entry => ({
52
+ component: entry.component,
53
+ props: entry.props,
54
+ context: entry.context,
55
+ source: entry.source,
56
+ displayName: getComponentDisplayName(entry.component, entry.props)
57
+ }));
58
+ }
59
+
23
60
  // Helper functions
24
61
  function getComponentDisplayName(component, props) {
25
62
  // Check if this is a Provider and if we can find its context name
@@ -75,8 +112,10 @@ function formatSourceLocation(source) {
75
112
  * This differs from debug.component.stack in that this uses a purpose-built
76
113
  * stack rather than walking the context chain. When this is called, the context
77
114
  * chain has been restored. In the future this can probably be unified nicely.
115
+ *
116
+ * @param error - Optional error to print the stack trace from
78
117
  */
79
- export function printRenderStack() {
118
+ export function printRenderStack(error) {
80
119
  // Find the nearest SourceFileContext or SourceDirectoryContext from the render stack
81
120
  let currentPath;
82
121
  for (let i = renderStack.length - 1; i >= 0; i--) {
@@ -103,6 +142,27 @@ export function printRenderStack() {
103
142
  console.error(pc.red("Error rendering:"));
104
143
  }
105
144
 
145
+ // Print the error message and stack if provided
146
+ if (error) {
147
+ if (error instanceof Error) {
148
+ // eslint-disable-next-line no-console
149
+ console.error(pc.red(` ${error.message}`));
150
+ if (error.stack) {
151
+ // Print stack lines (skip the first line which is the error message)
152
+ const stackLines = error.stack.split("\n").slice(1);
153
+ for (const line of stackLines) {
154
+ // eslint-disable-next-line no-console
155
+ console.error(pc.gray(line));
156
+ }
157
+ }
158
+ } else {
159
+ // eslint-disable-next-line no-console
160
+ console.error(pc.red(` ${String(error)}`));
161
+ }
162
+ // eslint-disable-next-line no-console
163
+ console.error(); // Empty line before component stack
164
+ }
165
+
106
166
  // First pass: determine which providers should be nested vs standalone
107
167
  // A provider should be nested under its parent if it's from a different file
108
168
  // (i.e., it's part of the component's implementation, not user-provided)
@@ -1 +1 @@
1
- {"version":3,"names":["pc","contextsByKey","SourceDirectoryContext","SourceFileContext","getContext","renderStack","pushStack","component","props","source","push","context","popStack","pop","clearRenderStack","length","getComponentDisplayName","name","ctx","values","Provider","inspectProps","entries","Object","filter","key","map","value","formattedValue","formatValue","dim","join","blue","String","gray","formatSourceLocation","cwd","process","filePath","fileName","startsWith","slice","lineNumber","columnNumber","printRenderStack","currentPath","i","id","fileContext","path","dirContext","console","error","red","nestedProviderIndices","Set","j","providerEntry","shouldNest","add","has","displayName","sourceStr","cyan","bold","propsStr","providerName","providerSourceStr","magenta","providerPropsStr"],"sources":["../../src/render-stack.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["pc","contextsByKey","SourceDirectoryContext","SourceFileContext","getContext","renderStack","pushStack","component","props","source","push","context","popStack","pop","currentComponentName","entry","length","name","undefined","clearRenderStack","getCurrentRenderPath","currentPath","i","id","fileContext","path","dirContext","getRenderStackSnapshot","map","displayName","getComponentDisplayName","ctx","values","Provider","inspectProps","entries","Object","filter","key","value","formattedValue","formatValue","dim","join","blue","String","gray","formatSourceLocation","cwd","process","filePath","fileName","startsWith","slice","lineNumber","columnNumber","printRenderStack","error","console","red","Error","message","stack","stackLines","split","line","nestedProviderIndices","Set","j","providerEntry","shouldNest","add","has","sourceStr","cyan","bold","propsStr","providerName","providerSourceStr","magenta","providerPropsStr"],"sources":["../../src/render-stack.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}