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

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 (263) hide show
  1. package/CHANGELOG.md +0 -22
  2. package/dist/devtools/index.html +68 -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 +55 -12
  6. package/dist/src/binder.js.map +1 -1
  7. package/dist/src/components/AppendFile.d.ts.map +1 -1
  8. package/dist/src/components/AppendFile.js +14 -3
  9. package/dist/src/components/AppendFile.js.map +1 -1
  10. package/dist/src/components/Block.js +1 -1
  11. package/dist/src/components/Block.js.map +1 -1
  12. package/dist/src/components/Declaration.d.ts.map +1 -1
  13. package/dist/src/components/Declaration.js +2 -1
  14. package/dist/src/components/Declaration.js.map +1 -1
  15. package/dist/src/components/Scope.d.ts.map +1 -1
  16. package/dist/src/components/Scope.js +4 -1
  17. package/dist/src/components/Scope.js.map +1 -1
  18. package/dist/src/components/TemplateFile.d.ts.map +1 -1
  19. package/dist/src/components/TemplateFile.js +18 -3
  20. package/dist/src/components/TemplateFile.js.map +1 -1
  21. package/dist/src/content-slot.d.ts.map +1 -1
  22. package/dist/src/content-slot.js +6 -5
  23. package/dist/src/content-slot.js.map +1 -1
  24. package/dist/src/context.d.ts.map +1 -1
  25. package/dist/src/context.js +8 -1
  26. package/dist/src/context.js.map +1 -1
  27. package/dist/src/debug/cli.d.ts +6 -0
  28. package/dist/src/debug/cli.d.ts.map +1 -0
  29. package/dist/src/{debug.js → debug/cli.js} +79 -82
  30. package/dist/src/debug/cli.js.map +1 -0
  31. package/dist/src/debug/diagnostics.test.d.ts +2 -0
  32. package/dist/src/debug/diagnostics.test.d.ts.map +1 -0
  33. package/dist/src/debug/diagnostics.test.js +45 -0
  34. package/dist/src/debug/diagnostics.test.js.map +1 -0
  35. package/dist/src/debug/effects.d.ts +69 -0
  36. package/dist/src/debug/effects.d.ts.map +1 -0
  37. package/dist/src/debug/effects.js +228 -0
  38. package/dist/src/debug/effects.js.map +1 -0
  39. package/dist/src/debug/effects.test.d.ts +2 -0
  40. package/dist/src/debug/effects.test.d.ts.map +1 -0
  41. package/dist/src/debug/effects.test.js +86 -0
  42. package/dist/src/debug/effects.test.js.map +1 -0
  43. package/dist/src/debug/files.d.ts +14 -0
  44. package/dist/src/debug/files.d.ts.map +1 -0
  45. package/dist/src/debug/files.js +40 -0
  46. package/dist/src/debug/files.js.map +1 -0
  47. package/dist/src/debug/files.test.d.ts +2 -0
  48. package/dist/src/debug/files.test.d.ts.map +1 -0
  49. package/dist/src/debug/files.test.js +89 -0
  50. package/dist/src/debug/files.test.js.map +1 -0
  51. package/dist/src/debug/index.d.ts +60 -0
  52. package/dist/src/debug/index.d.ts.map +1 -0
  53. package/dist/src/debug/index.js +68 -0
  54. package/dist/src/debug/index.js.map +1 -0
  55. package/dist/src/debug/render.d.ts +57 -0
  56. package/dist/src/debug/render.d.ts.map +1 -0
  57. package/dist/src/debug/render.js +519 -0
  58. package/dist/src/debug/render.js.map +1 -0
  59. package/dist/src/debug/render.test.d.ts +2 -0
  60. package/dist/src/debug/render.test.d.ts.map +1 -0
  61. package/dist/src/debug/render.test.js +328 -0
  62. package/dist/src/debug/render.test.js.map +1 -0
  63. package/dist/src/debug/serialize.d.ts +9 -0
  64. package/dist/src/debug/serialize.d.ts.map +1 -0
  65. package/dist/src/debug/serialize.js +70 -0
  66. package/dist/src/debug/serialize.js.map +1 -0
  67. package/dist/src/debug/symbols.d.ts +9 -0
  68. package/dist/src/debug/symbols.d.ts.map +1 -0
  69. package/dist/src/debug/symbols.js +164 -0
  70. package/dist/src/debug/symbols.js.map +1 -0
  71. package/dist/src/debug/symbols.test.d.ts +2 -0
  72. package/dist/src/debug/symbols.test.d.ts.map +1 -0
  73. package/dist/src/debug/symbols.test.js +104 -0
  74. package/dist/src/debug/symbols.test.js.map +1 -0
  75. package/dist/src/debug/trace.d.ts +342 -0
  76. package/dist/src/debug/trace.d.ts.map +1 -0
  77. package/dist/src/debug/trace.js +443 -0
  78. package/dist/src/debug/trace.js.map +1 -0
  79. package/dist/src/devtools/devtools-protocol.d.ts +232 -0
  80. package/dist/src/devtools/devtools-protocol.d.ts.map +1 -0
  81. package/dist/src/devtools/devtools-protocol.js +2 -0
  82. package/dist/src/devtools/devtools-protocol.js.map +1 -0
  83. package/dist/src/devtools/devtools-server.browser.d.ts +28 -0
  84. package/dist/src/devtools/devtools-server.browser.d.ts.map +1 -0
  85. package/dist/src/devtools/devtools-server.browser.js +36 -0
  86. package/dist/src/devtools/devtools-server.browser.js.map +1 -0
  87. package/dist/src/devtools/devtools-server.d.ts +72 -0
  88. package/dist/src/devtools/devtools-server.d.ts.map +1 -0
  89. package/dist/src/devtools/devtools-server.js +256 -0
  90. package/dist/src/devtools/devtools-server.js.map +1 -0
  91. package/dist/src/devtools/devtools-transport.d.ts +23 -0
  92. package/dist/src/devtools/devtools-transport.d.ts.map +1 -0
  93. package/dist/src/devtools/devtools-transport.js +114 -0
  94. package/dist/src/devtools/devtools-transport.js.map +1 -0
  95. package/dist/src/devtools-entry.browser.d.ts +4 -0
  96. package/dist/src/devtools-entry.browser.d.ts.map +1 -0
  97. package/dist/src/devtools-entry.browser.js +2 -0
  98. package/dist/src/devtools-entry.browser.js.map +1 -0
  99. package/dist/src/devtools-entry.d.ts +4 -0
  100. package/dist/src/devtools-entry.d.ts.map +1 -0
  101. package/dist/src/devtools-entry.js +2 -0
  102. package/dist/src/devtools-entry.js.map +1 -0
  103. package/dist/src/diagnostics.d.ts +34 -0
  104. package/dist/src/diagnostics.d.ts.map +1 -0
  105. package/dist/src/diagnostics.js +89 -0
  106. package/dist/src/diagnostics.js.map +1 -0
  107. package/dist/src/index.d.ts +3 -2
  108. package/dist/src/index.d.ts.map +1 -1
  109. package/dist/src/index.js +3 -2
  110. package/dist/src/index.js.map +1 -1
  111. package/dist/src/print-hook.d.ts +14 -0
  112. package/dist/src/print-hook.d.ts.map +1 -0
  113. package/dist/src/print-hook.js +10 -0
  114. package/dist/src/print-hook.js.map +1 -0
  115. package/dist/src/reactive-union-set.d.ts.map +1 -1
  116. package/dist/src/reactive-union-set.js +15 -0
  117. package/dist/src/reactive-union-set.js.map +1 -1
  118. package/dist/src/reactivity.d.ts +17 -3
  119. package/dist/src/reactivity.d.ts.map +1 -1
  120. package/dist/src/reactivity.js +162 -14
  121. package/dist/src/reactivity.js.map +1 -1
  122. package/dist/src/render-stack.d.ts +17 -1
  123. package/dist/src/render-stack.d.ts.map +1 -1
  124. package/dist/src/render-stack.js +57 -1
  125. package/dist/src/render-stack.js.map +1 -1
  126. package/dist/src/render.d.ts +8 -15
  127. package/dist/src/render.d.ts.map +1 -1
  128. package/dist/src/render.js +362 -103
  129. package/dist/src/render.js.map +1 -1
  130. package/dist/src/resource.d.ts.map +1 -1
  131. package/dist/src/resource.js +5 -0
  132. package/dist/src/resource.js.map +1 -1
  133. package/dist/src/scheduler.d.ts +3 -0
  134. package/dist/src/scheduler.d.ts.map +1 -1
  135. package/dist/src/scheduler.js +45 -2
  136. package/dist/src/scheduler.js.map +1 -1
  137. package/dist/src/symbols/basic-symbol.d.ts.map +1 -1
  138. package/dist/src/symbols/basic-symbol.js +6 -1
  139. package/dist/src/symbols/basic-symbol.js.map +1 -1
  140. package/dist/src/symbols/decl.d.ts.map +1 -1
  141. package/dist/src/symbols/decl.js +5 -1
  142. package/dist/src/symbols/decl.js.map +1 -1
  143. package/dist/src/symbols/output-scope.d.ts +2 -1
  144. package/dist/src/symbols/output-scope.d.ts.map +1 -1
  145. package/dist/src/symbols/output-scope.js +13 -8
  146. package/dist/src/symbols/output-scope.js.map +1 -1
  147. package/dist/src/symbols/output-symbol.d.ts +1 -0
  148. package/dist/src/symbols/output-symbol.d.ts.map +1 -1
  149. package/dist/src/symbols/output-symbol.js +23 -6
  150. package/dist/src/symbols/output-symbol.js.map +1 -1
  151. package/dist/src/symbols/symbol-flow.d.ts.map +1 -1
  152. package/dist/src/symbols/symbol-flow.js +22 -6
  153. package/dist/src/symbols/symbol-flow.js.map +1 -1
  154. package/dist/src/symbols/symbol-slot.d.ts.map +1 -1
  155. package/dist/src/symbols/symbol-slot.js +15 -0
  156. package/dist/src/symbols/symbol-slot.js.map +1 -1
  157. package/dist/src/symbols/symbol-slot.test.d.ts +2 -0
  158. package/dist/src/symbols/symbol-slot.test.d.ts.map +1 -0
  159. package/dist/src/symbols/symbol-slot.test.js +35 -0
  160. package/dist/src/symbols/symbol-slot.test.js.map +1 -0
  161. package/dist/src/symbols/symbol-table.d.ts.map +1 -1
  162. package/dist/src/symbols/symbol-table.js +6 -5
  163. package/dist/src/symbols/symbol-table.js.map +1 -1
  164. package/dist/src/trace.d.ts +2 -0
  165. package/dist/src/trace.d.ts.map +1 -0
  166. package/dist/src/trace.js +2 -0
  167. package/dist/src/trace.js.map +1 -0
  168. package/dist/src/tracer.d.ts +2 -228
  169. package/dist/src/tracer.d.ts.map +1 -1
  170. package/dist/src/tracer.js +5 -298
  171. package/dist/src/tracer.js.map +1 -1
  172. package/dist/src/utils.d.ts.map +1 -1
  173. package/dist/src/utils.js +5 -0
  174. package/dist/src/utils.js.map +1 -1
  175. package/dist/test/components/append-file.test.d.ts.map +1 -1
  176. package/dist/test/components/append-file.test.js +18 -10
  177. package/dist/test/components/append-file.test.js.map +1 -1
  178. package/dist/test/components/template-file.test.d.ts.map +1 -1
  179. package/dist/test/components/template-file.test.js +6 -4
  180. package/dist/test/components/template-file.test.js.map +1 -1
  181. package/dist/test/rendering/basic.test.js +3 -0
  182. package/dist/test/rendering/basic.test.js.map +1 -1
  183. package/dist/test/rendering/print-render-stack.test.d.ts.map +1 -1
  184. package/dist/test/rendering/print-render-stack.test.js +91 -98
  185. package/dist/test/rendering/print-render-stack.test.js.map +1 -1
  186. package/dist/testing/create-test-wrapper.d.ts +1 -1
  187. package/dist/testing/create-test-wrapper.d.ts.map +1 -1
  188. package/dist/testing/create-test-wrapper.js +1 -1
  189. package/dist/testing/create-test-wrapper.js.map +1 -1
  190. package/dist/testing/devtools-utils.d.ts +26 -0
  191. package/dist/testing/devtools-utils.d.ts.map +1 -0
  192. package/dist/testing/devtools-utils.js +140 -0
  193. package/dist/testing/devtools-utils.js.map +1 -0
  194. package/dist/testing/extend-expect.d.ts.map +1 -1
  195. package/dist/testing/extend-expect.js +63 -1
  196. package/dist/testing/extend-expect.js.map +1 -1
  197. package/dist/testing/render.d.ts +2 -2
  198. package/dist/testing/render.d.ts.map +1 -1
  199. package/dist/testing/render.js +2 -2
  200. package/dist/testing/render.js.map +1 -1
  201. package/dist/tsconfig.tsbuildinfo +1 -1
  202. package/package.json +21 -7
  203. package/scripts/copy-devtools-ui.mjs +26 -0
  204. package/src/binder.ts +71 -16
  205. package/src/components/AppendFile.tsx +14 -9
  206. package/src/components/Block.tsx +1 -1
  207. package/src/components/Declaration.tsx +2 -1
  208. package/src/components/Scope.tsx +4 -1
  209. package/src/components/TemplateFile.tsx +18 -9
  210. package/src/content-slot.tsx +6 -6
  211. package/src/context.ts +15 -4
  212. package/src/{debug.ts → debug/cli.ts} +114 -125
  213. package/src/debug/diagnostics.test.tsx +55 -0
  214. package/src/debug/effects.test.tsx +96 -0
  215. package/src/debug/effects.ts +313 -0
  216. package/src/debug/files.test.tsx +96 -0
  217. package/src/debug/files.ts +40 -0
  218. package/src/debug/index.ts +126 -0
  219. package/src/debug/render.test.tsx +379 -0
  220. package/src/debug/render.ts +639 -0
  221. package/src/debug/serialize.ts +85 -0
  222. package/src/debug/symbols.test.tsx +106 -0
  223. package/src/debug/symbols.ts +230 -0
  224. package/src/debug/trace.ts +312 -0
  225. package/src/devtools/devtools-protocol.ts +312 -0
  226. package/src/devtools/devtools-server.browser.ts +71 -0
  227. package/src/devtools/devtools-server.ts +290 -0
  228. package/src/devtools/devtools-transport.ts +154 -0
  229. package/src/devtools-entry.browser.ts +52 -0
  230. package/src/devtools-entry.ts +54 -0
  231. package/src/diagnostics.ts +141 -0
  232. package/src/index.ts +2 -6
  233. package/src/print-hook.ts +22 -0
  234. package/src/reactive-union-set.ts +71 -41
  235. package/src/reactivity.ts +206 -23
  236. package/src/render-stack.ts +68 -1
  237. package/src/render.ts +464 -157
  238. package/src/resource.ts +28 -19
  239. package/src/scheduler.ts +55 -3
  240. package/src/symbols/basic-symbol.ts +6 -1
  241. package/src/symbols/decl.ts +5 -1
  242. package/src/symbols/output-scope.ts +21 -12
  243. package/src/symbols/output-symbol.ts +33 -12
  244. package/src/symbols/symbol-flow.ts +68 -37
  245. package/src/symbols/symbol-slot.test.tsx +41 -0
  246. package/src/symbols/symbol-slot.tsx +47 -20
  247. package/src/symbols/symbol-table.ts +6 -10
  248. package/src/trace.ts +1 -0
  249. package/src/tracer.ts +13 -242
  250. package/src/utils.tsx +22 -13
  251. package/temp/api.json +1675 -162
  252. package/test/components/append-file.test.tsx +36 -29
  253. package/test/components/template-file.test.tsx +11 -11
  254. package/test/rendering/basic.test.tsx +4 -0
  255. package/test/rendering/print-render-stack.test.tsx +52 -43
  256. package/testing/create-test-wrapper.tsx +1 -1
  257. package/testing/devtools-utils.ts +203 -0
  258. package/testing/extend-expect.ts +89 -0
  259. package/testing/render.ts +2 -2
  260. package/testing/vitest.d.ts +9 -0
  261. package/dist/src/debug.d.ts +0 -14
  262. package/dist/src/debug.d.ts.map +0 -1
  263. package/dist/src/debug.js.map +0 -1
package/src/tracer.ts CHANGED
@@ -1,4 +1,10 @@
1
1
  import { effect } from "@vue/reactivity";
2
+ import {
3
+ debug,
4
+ isConsoleTraceEnabled,
5
+ type TracePhaseInfo,
6
+ } from "./debug/index.js";
7
+ import { colorText, parseBreakOnIds } from "./debug/trace.js";
2
8
  import { untrack } from "./reactivity.js";
3
9
  import { inspectRefkey, type Refkey } from "./refkey.js";
4
10
  import { scheduler } from "./scheduler.js";
@@ -10,203 +16,16 @@ import type {
10
16
  import { type OutputSymbol } from "./symbols/output-symbol.js";
11
17
  import { SymbolTable } from "./symbols/symbol-table.js";
12
18
 
13
- // enable tracing for specific phases using a comma separated list of
14
- // dotted identifiers, e.g. `scope.update,symbol.create`.
15
- const traceEnv = process.env.ALLOY_TRACE ?? "";
16
- const tracePhases = new Set<string>(
17
- traceEnv === "" ? [] : traceEnv.split(",").map((t) => t.trim()),
18
- );
19
-
20
- if (tracePhases.size > 0) {
21
- // eslint-disable-next-line no-console
22
- console.log(
23
- "Tracing enabled for phases:",
24
- Array.from(tracePhases).join(", "),
25
- );
26
- }
27
-
28
- const debuggerIdsEnv = process.env.ALLOY_BREAK_ON_DID ?? "";
29
- const dids = new Set<number>();
30
-
31
- debuggerIdsEnv.split(",").forEach((id) => {
32
- const num = parseInt(id, 10);
33
- if (!isNaN(num)) {
34
- dids.add(num);
35
- }
36
- });
37
- export const TracePhase = {
38
- scope: {
39
- update: {
40
- area: "scope",
41
- subarea: "update",
42
- bg: { r: 0, g: 255, b: 100 },
43
- },
44
- create: {
45
- area: "scope",
46
- subarea: "create",
47
- bg: { r: 0, g: 150, b: 100 },
48
- },
49
- copySymbols: {
50
- area: "scope",
51
- subarea: "copySymbols",
52
- bg: { r: 0, g: 100, b: 100 },
53
- },
54
- moveSymbols: {
55
- area: "scope",
56
- subarea: "moveSymbols",
57
- bg: { r: 0, g: 100, b: 100 },
58
- },
59
- },
60
- symbol: {
61
- update: {
62
- area: "symbol",
63
- subarea: "update",
64
- bg: { r: 0, g: 0, b: 255 },
65
- },
66
- resolve: {
67
- area: "symbol",
68
- subarea: "resolve",
69
- bg: { r: 0, g: 0, b: 200 },
70
- },
71
- create: {
72
- area: "symbol",
73
- subarea: "create",
74
- bg: { r: 0, g: 0, b: 150 },
75
- },
76
- flow: {
77
- area: "symbol",
78
- subarea: "flow",
79
- bg: { r: 0, g: 0, b: 100 },
80
- },
81
- addToScope: {
82
- area: "symbol",
83
- subarea: "addToScope",
84
- bg: { r: 0, g: 0, b: 50 },
85
- },
86
- instantiate: {
87
- area: "symbol",
88
- subarea: "instantiate",
89
- bg: { r: 0, g: 0, b: 25 },
90
- },
91
- clone: {
92
- area: "symbol",
93
- subarea: "clone",
94
- bg: { r: 0, g: 0, b: 25 },
95
- },
96
- delete: {
97
- area: "symbol",
98
- subarea: "delete",
99
- bg: { r: 100, g: 0, b: 100 },
100
- },
101
- removeFromScope: {
102
- area: "symbol",
103
- subarea: "removeFromScope",
104
- bg: { r: 50, g: 0, b: 50 },
105
- },
106
- },
107
- resolve: {
108
- success: {
109
- area: "resolve",
110
- subarea: "success",
111
- bg: { r: 0, g: 255, b: 0 },
112
- },
113
- pending: {
114
- area: "resolve",
115
- subarea: "pending",
116
- bg: { r: 255, g: 255, b: 0 },
117
- },
118
- failure: {
119
- area: "resolve",
120
- subarea: "failure",
121
- bg: { r: 100, g: 50, b: 50 },
122
- },
123
- },
124
- effect: {
125
- schedule: {
126
- area: "effect",
127
- subarea: "schedule",
128
- bg: { r: 100, g: 100, b: 0 },
129
- },
130
- track: {
131
- area: "effect",
132
- subarea: "track",
133
- bg: { r: 75, g: 75, b: 0 },
134
- },
135
- trigger: {
136
- area: "effect",
137
- subarea: "trigger",
138
- bg: { r: 50, g: 50, b: 0 },
139
- },
140
- },
141
- render: {
142
- worker: {
143
- area: "render",
144
- subarea: "worker",
145
- bg: { r: 100, g: 50, b: 0 },
146
- },
147
- appendChild: {
148
- area: "render",
149
- subarea: "appendChild",
150
- bg: { r: 100, g: 50, b: 0 },
151
- },
152
- renderEffect: {
153
- area: "render",
154
- subarea: "render effect",
155
- bg: { r: 100, g: 50, b: 0 },
156
- },
157
- },
158
- } as const;
159
-
160
- interface TracePhase extends TextFormat {
161
- area: string;
162
- subarea: string;
163
- }
19
+ const dids = parseBreakOnIds();
164
20
 
165
21
  let triggerCount = 0;
166
22
 
167
- function shouldTrace(phase: TracePhase) {
168
- return (
169
- tracePhases.has(phase.area) ||
170
- tracePhases.has(phase.area + "." + phase.subarea)
171
- );
172
- }
173
- export function trace(
174
- phase: TracePhase,
175
- cb: () => string,
176
- triggerIds: Set<number> = new Set(),
177
- ) {
178
- if (!shouldTrace(phase)) {
23
+ export function traceEffect(phase: TracePhaseInfo, cb: () => string) {
24
+ if (
25
+ !isConsoleTraceEnabled(phase.area) &&
26
+ !isConsoleTraceEnabled(phase.area + "." + phase.subarea)
27
+ )
179
28
  return;
180
- }
181
- if (triggerIds.size === 0) {
182
- // not an effect trace.
183
- const id = triggerCount++;
184
- triggerIds.add(id);
185
-
186
- if (dids.has(id)) {
187
- // eslint-disable-next-line no-debugger
188
- debugger;
189
- }
190
- }
191
-
192
- const areaTag = ` ${phase.area + ":" + phase.subarea} `;
193
- // eslint-disable-next-line no-console
194
- console.log(
195
- colorText(areaTag, { ...phase, bold: true }) +
196
- " " +
197
- colorText("[" + [...triggerIds].join(",") + "]", {
198
- fg: { r: 50, g: 50, b: 50 },
199
- }) +
200
- " " +
201
- untrack(cb) +
202
- "\n",
203
- );
204
- }
205
-
206
- export function traceEffect(phase: TracePhase, cb: () => string) {
207
- if (!shouldTrace(phase)) {
208
- return;
209
- }
210
29
  let first = true;
211
30
  const triggerIds = new Set<number>();
212
31
 
@@ -218,7 +37,7 @@ export function traceEffect(phase: TracePhase, cb: () => string) {
218
37
  first = false;
219
38
  return;
220
39
  }
221
- trace(phase, cb, triggerIds);
40
+ debug.trace(phase, cb, triggerIds);
222
41
  triggerIds.clear();
223
42
  },
224
43
  {
@@ -235,54 +54,6 @@ export function traceEffect(phase: TracePhase, cb: () => string) {
235
54
  );
236
55
  }
237
56
 
238
- interface Color {
239
- r: number;
240
- g: number;
241
- b: number;
242
- }
243
-
244
- /** Descriptor for how to format the text */
245
- interface TextFormat {
246
- fg?: Color; // optional foreground color
247
- bg?: Color; // optional background color
248
- bold?: boolean; // optional bold flag
249
- }
250
-
251
- /**
252
- * Wraps `text` in ANSI escape codes according to the given format.
253
- *
254
- * @param text The string to format.
255
- * @param fmt Optional formatting descriptor.
256
- * @returns The text wrapped in ANSI codes (or unmodified if no styles given).
257
- */
258
- function colorText(text: string, fmt?: TextFormat): string {
259
- if (!fmt) return text;
260
-
261
- const codes: string[] = [];
262
-
263
- if (fmt.bold) {
264
- codes.push("1"); // ANSI code for bold
265
- }
266
-
267
- if (fmt.fg) {
268
- const { r, g, b } = fmt.fg;
269
- codes.push(`38;2;${r};${g};${b}`);
270
- }
271
-
272
- if (fmt.bg) {
273
- const { r, g, b } = fmt.bg;
274
- codes.push(`48;2;${r};${g};${b}`);
275
- }
276
-
277
- if (codes.length === 0) {
278
- return text;
279
- }
280
-
281
- const prefix = `\x1b[${codes.join(";")}m`;
282
- const reset = `\x1b[0m`;
283
- return `${prefix}${text}${reset}`;
284
- }
285
-
286
57
  /**
287
58
  * Format a symbol name with its ID in a blue-green color
288
59
  * @param symbol The symbol to format
package/src/utils.tsx CHANGED
@@ -330,19 +330,28 @@ export function mapJoin<T, U, V>(
330
330
 
331
331
  slot.disposer = disposer;
332
332
  disposer();
333
- effect((prev?: boolean) => {
334
- const isEmpty = isEmptyFlag.value;
335
- return untrack(() => {
336
- if (slot.isEmpty.value !== isEmpty) {
337
- slot.isEmpty.value = isEmpty;
338
- }
339
- const wasEmpty = prev ?? true;
340
-
341
- applyEmptyStateChange(cleanupIndex, isEmpty, wasEmpty);
342
-
343
- return isEmpty;
344
- });
345
- });
333
+ effect(
334
+ (prev?: boolean) => {
335
+ const isEmpty = isEmptyFlag.value;
336
+ return untrack(() => {
337
+ if (slot.isEmpty.value !== isEmpty) {
338
+ slot.isEmpty.value = isEmpty;
339
+ }
340
+ const wasEmpty = prev ?? true;
341
+
342
+ applyEmptyStateChange(cleanupIndex, isEmpty, wasEmpty);
343
+
344
+ return isEmpty;
345
+ });
346
+ },
347
+ undefined,
348
+ {
349
+ debug: {
350
+ name: `list:slotEmpty:${cleanupIndex}`,
351
+ type: "list",
352
+ },
353
+ },
354
+ );
346
355
  cb(mapper(items[cleanupIndex], cleanupIndex));
347
356
  });
348
357
  });