@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
@@ -0,0 +1,443 @@
1
+ /**
2
+ * Trace helpers and configuration.
3
+ */
4
+
5
+ import { broadcastDevtoolsMessage, isDevtoolsEnabled } from "../devtools/devtools-server.js";
6
+ import { untrack } from "../reactivity.js";
7
+ export { isDevtoolsEnabled } from "../devtools/devtools-server.js";
8
+
9
+ // ─────────────────────────────────────────────────────────────────────────────
10
+ // Environment configuration
11
+ // ─────────────────────────────────────────────────────────────────────────────
12
+
13
+ const traceEnv = process.env.ALLOY_TRACE ?? "";
14
+ const tracePhases = new Set(traceEnv === "" ? [] : traceEnv.split(",").map(t => t.trim()));
15
+ const debuggerIdsEnv = process.env.ALLOY_BREAK_ON_DID ?? "";
16
+ const debuggerIds = new Set();
17
+ debuggerIdsEnv.split(",").forEach(id => {
18
+ const num = parseInt(id, 10);
19
+ if (!isNaN(num)) {
20
+ debuggerIds.add(num);
21
+ }
22
+ });
23
+
24
+ /** Parse the ALLOY_BREAK_ON_DID environment variable into a set of IDs. */
25
+ export function parseBreakOnIds() {
26
+ const env = process.env.ALLOY_BREAK_ON_DID ?? "";
27
+ const ids = new Set();
28
+ env.split(",").forEach(id => {
29
+ const num = parseInt(id, 10);
30
+ if (!isNaN(num)) {
31
+ ids.add(num);
32
+ }
33
+ });
34
+ return ids;
35
+ }
36
+
37
+ /** Returns true if console tracing is enabled for the given phase (or any phase if not specified). */
38
+ export function isConsoleTraceEnabled(phase) {
39
+ if (tracePhases.size === 0) return false;
40
+ if (!phase) return true;
41
+ const [area, subarea] = phase.split(".");
42
+ return tracePhases.has(area) || (subarea ? tracePhases.has(phase) : false);
43
+ }
44
+ if (tracePhases.size > 0) {
45
+ // eslint-disable-next-line no-console
46
+ console.log("Tracing enabled for phases:", Array.from(tracePhases).join(", "));
47
+ }
48
+
49
+ // ─────────────────────────────────────────────────────────────────────────────
50
+ // Trace phases
51
+ // ─────────────────────────────────────────────────────────────────────────────
52
+
53
+ export const TracePhase = {
54
+ scope: {
55
+ update: {
56
+ area: "scope",
57
+ subarea: "update",
58
+ bg: {
59
+ r: 0,
60
+ g: 255,
61
+ b: 100
62
+ }
63
+ },
64
+ create: {
65
+ area: "scope",
66
+ subarea: "create",
67
+ bg: {
68
+ r: 0,
69
+ g: 150,
70
+ b: 100
71
+ }
72
+ },
73
+ delete: {
74
+ area: "scope",
75
+ subarea: "delete",
76
+ bg: {
77
+ r: 150,
78
+ g: 0,
79
+ b: 50
80
+ }
81
+ },
82
+ copySymbols: {
83
+ area: "scope",
84
+ subarea: "copySymbols",
85
+ bg: {
86
+ r: 0,
87
+ g: 100,
88
+ b: 100
89
+ }
90
+ },
91
+ moveSymbols: {
92
+ area: "scope",
93
+ subarea: "moveSymbols",
94
+ bg: {
95
+ r: 0,
96
+ g: 100,
97
+ b: 100
98
+ }
99
+ }
100
+ },
101
+ symbol: {
102
+ update: {
103
+ area: "symbol",
104
+ subarea: "update",
105
+ bg: {
106
+ r: 0,
107
+ g: 0,
108
+ b: 255
109
+ }
110
+ },
111
+ resolve: {
112
+ area: "symbol",
113
+ subarea: "resolve",
114
+ bg: {
115
+ r: 0,
116
+ g: 0,
117
+ b: 200
118
+ }
119
+ },
120
+ create: {
121
+ area: "symbol",
122
+ subarea: "create",
123
+ bg: {
124
+ r: 0,
125
+ g: 0,
126
+ b: 150
127
+ }
128
+ },
129
+ flow: {
130
+ area: "symbol",
131
+ subarea: "flow",
132
+ bg: {
133
+ r: 0,
134
+ g: 0,
135
+ b: 100
136
+ }
137
+ },
138
+ addToScope: {
139
+ area: "symbol",
140
+ subarea: "addToScope",
141
+ bg: {
142
+ r: 0,
143
+ g: 0,
144
+ b: 50
145
+ }
146
+ },
147
+ instantiate: {
148
+ area: "symbol",
149
+ subarea: "instantiate",
150
+ bg: {
151
+ r: 0,
152
+ g: 0,
153
+ b: 25
154
+ }
155
+ },
156
+ clone: {
157
+ area: "symbol",
158
+ subarea: "clone",
159
+ bg: {
160
+ r: 0,
161
+ g: 0,
162
+ b: 25
163
+ }
164
+ },
165
+ delete: {
166
+ area: "symbol",
167
+ subarea: "delete",
168
+ bg: {
169
+ r: 100,
170
+ g: 0,
171
+ b: 100
172
+ }
173
+ },
174
+ removeFromScope: {
175
+ area: "symbol",
176
+ subarea: "removeFromScope",
177
+ bg: {
178
+ r: 50,
179
+ g: 0,
180
+ b: 50
181
+ }
182
+ }
183
+ },
184
+ resolve: {
185
+ success: {
186
+ area: "resolve",
187
+ subarea: "success",
188
+ bg: {
189
+ r: 0,
190
+ g: 255,
191
+ b: 0
192
+ }
193
+ },
194
+ pending: {
195
+ area: "resolve",
196
+ subarea: "pending",
197
+ bg: {
198
+ r: 255,
199
+ g: 255,
200
+ b: 0
201
+ }
202
+ },
203
+ failure: {
204
+ area: "resolve",
205
+ subarea: "failure",
206
+ bg: {
207
+ r: 100,
208
+ g: 50,
209
+ b: 50
210
+ }
211
+ }
212
+ },
213
+ effect: {
214
+ schedule: {
215
+ area: "effect",
216
+ subarea: "schedule",
217
+ bg: {
218
+ r: 100,
219
+ g: 100,
220
+ b: 0
221
+ }
222
+ },
223
+ track: {
224
+ area: "effect",
225
+ subarea: "track",
226
+ bg: {
227
+ r: 75,
228
+ g: 75,
229
+ b: 0
230
+ }
231
+ },
232
+ trigger: {
233
+ area: "effect",
234
+ subarea: "trigger",
235
+ bg: {
236
+ r: 50,
237
+ g: 50,
238
+ b: 0
239
+ }
240
+ },
241
+ effectAdded: {
242
+ area: "effect",
243
+ subarea: "effectAdded",
244
+ bg: {
245
+ r: 75,
246
+ g: 100,
247
+ b: 0
248
+ }
249
+ },
250
+ effectUpdated: {
251
+ area: "effect",
252
+ subarea: "effectUpdated",
253
+ bg: {
254
+ r: 75,
255
+ g: 75,
256
+ b: 0
257
+ }
258
+ },
259
+ refAdded: {
260
+ area: "effect",
261
+ subarea: "refAdded",
262
+ bg: {
263
+ r: 100,
264
+ g: 75,
265
+ b: 0
266
+ }
267
+ }
268
+ },
269
+ render: {
270
+ worker: {
271
+ area: "render",
272
+ subarea: "worker",
273
+ bg: {
274
+ r: 100,
275
+ g: 50,
276
+ b: 0
277
+ }
278
+ },
279
+ appendChild: {
280
+ area: "render",
281
+ subarea: "appendChild",
282
+ bg: {
283
+ r: 100,
284
+ g: 50,
285
+ b: 0
286
+ }
287
+ },
288
+ appendTextNode: {
289
+ area: "render",
290
+ subarea: "appendChild.textNode",
291
+ bg: {
292
+ r: 100,
293
+ g: 50,
294
+ b: 0
295
+ }
296
+ },
297
+ appendCachedFragment: {
298
+ area: "render",
299
+ subarea: "appendChild.cachedFragment",
300
+ bg: {
301
+ r: 100,
302
+ g: 50,
303
+ b: 0
304
+ }
305
+ },
306
+ appendCustomContext: {
307
+ area: "render",
308
+ subarea: "appendChild.customContext",
309
+ bg: {
310
+ r: 100,
311
+ g: 50,
312
+ b: 0
313
+ }
314
+ },
315
+ appendPrintHook: {
316
+ area: "render",
317
+ subarea: "appendChild.printHook",
318
+ bg: {
319
+ r: 100,
320
+ g: 50,
321
+ b: 0
322
+ }
323
+ },
324
+ appendComponent: {
325
+ area: "render",
326
+ subarea: "appendChild.component",
327
+ bg: {
328
+ r: 100,
329
+ g: 50,
330
+ b: 0
331
+ }
332
+ },
333
+ appendMemo: {
334
+ area: "render",
335
+ subarea: "appendChild.memo",
336
+ bg: {
337
+ r: 100,
338
+ g: 50,
339
+ b: 0
340
+ }
341
+ },
342
+ renderEffect: {
343
+ area: "render",
344
+ subarea: "renderEffect",
345
+ bg: {
346
+ r: 100,
347
+ g: 50,
348
+ b: 0
349
+ }
350
+ }
351
+ }
352
+ };
353
+
354
+ // ─────────────────────────────────────────────────────────────────────────────
355
+ // Console formatting utilities
356
+ // ─────────────────────────────────────────────────────────────────────────────
357
+
358
+ export function colorText(text, fmt) {
359
+ if (!fmt) return text;
360
+ const codes = [];
361
+ if (fmt.bold) codes.push("1");
362
+ if (fmt.fg) codes.push(`38;2;${fmt.fg.r};${fmt.fg.g};${fmt.fg.b}`);
363
+ if (fmt.bg) codes.push(`48;2;${fmt.bg.r};${fmt.bg.g};${fmt.bg.b}`);
364
+ if (codes.length === 0) return text;
365
+ return `\x1b[${codes.join(";")}m${text}\x1b[0m`;
366
+ }
367
+
368
+ // ─────────────────────────────────────────────────────────────────────────────
369
+ // Low-level trace API
370
+ // ─────────────────────────────────────────────────────────────────────────────
371
+
372
+ let traceCount = 0;
373
+ function shouldTracePhase(area, subarea) {
374
+ return isConsoleTraceEnabled(area) || isConsoleTraceEnabled(area + "." + subarea);
375
+ }
376
+ function shouldTrace(phase) {
377
+ return shouldTracePhase(phase.area, phase.subarea);
378
+ }
379
+ export function traceType(phase) {
380
+ return `${phase.area}:${phase.subarea}`;
381
+ }
382
+ export function logDevtoolsMessage(message) {
383
+ if (!isConsoleTraceEnabled()) return;
384
+ const type = String(message.type ?? "");
385
+ const colonIndex = type.indexOf(":");
386
+ if (colonIndex === -1) return;
387
+ const area = type.slice(0, colonIndex);
388
+ const subarea = type.slice(colonIndex + 1);
389
+ if (!area || !subarea) return;
390
+ if (!shouldTracePhase(area, subarea)) return;
391
+ // eslint-disable-next-line no-console
392
+ console.log("devtools:", message.type, message);
393
+ }
394
+
395
+ /**
396
+ * Emit a devtools message. Logs to console if tracing is enabled for the
397
+ * message's area, and broadcasts over the WebSocket if devtools are connected.
398
+ *
399
+ * Accepts both strictly-typed protocol messages and loosely-typed trace
400
+ * messages (which construct the type string dynamically).
401
+ */
402
+ export function emitDevtoolsMessage(message) {
403
+ logDevtoolsMessage(message);
404
+ if (!isDevtoolsEnabled()) return;
405
+ broadcastDevtoolsMessage(message);
406
+ }
407
+
408
+ /**
409
+ * Low-level trace function for emitting console output.
410
+ * Use the `debug` object methods for most use cases.
411
+ */
412
+ export function trace(phase, cb, triggerIds = new Set()) {
413
+ if (shouldTrace(phase)) {
414
+ if (triggerIds.size === 0) {
415
+ const id = traceCount++;
416
+ triggerIds.add(id);
417
+ if (debuggerIds.has(id)) {
418
+ // eslint-disable-next-line no-debugger
419
+ debugger;
420
+ }
421
+ }
422
+ const areaTag = ` ${phase.area}:${phase.subarea} `;
423
+ const message = untrack(cb);
424
+ // eslint-disable-next-line no-console
425
+ console.log(colorText(areaTag, {
426
+ ...phase,
427
+ bold: true
428
+ }) + " " + colorText("[" + [...triggerIds].join(",") + "]", {
429
+ fg: {
430
+ r: 50,
431
+ g: 50,
432
+ b: 50
433
+ }
434
+ }) + " " + message + "\n");
435
+ }
436
+ if (isDevtoolsEnabled()) {
437
+ broadcastDevtoolsMessage({
438
+ type: traceType(phase),
439
+ triggerIds: [...triggerIds]
440
+ });
441
+ }
442
+ }
443
+ //# sourceMappingURL=trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["broadcastDevtoolsMessage","isDevtoolsEnabled","untrack","traceEnv","process","env","ALLOY_TRACE","tracePhases","Set","split","map","t","trim","debuggerIdsEnv","ALLOY_BREAK_ON_DID","debuggerIds","forEach","id","num","parseInt","isNaN","add","parseBreakOnIds","ids","isConsoleTraceEnabled","phase","size","area","subarea","has","console","log","Array","from","join","TracePhase","scope","update","bg","r","g","b","create","delete","copySymbols","moveSymbols","symbol","resolve","flow","addToScope","instantiate","clone","removeFromScope","success","pending","failure","effect","schedule","track","trigger","effectAdded","effectUpdated","refAdded","render","worker","appendChild","appendTextNode","appendCachedFragment","appendCustomContext","appendPrintHook","appendComponent","appendMemo","renderEffect","colorText","text","fmt","codes","bold","push","fg","length","traceCount","shouldTracePhase","shouldTrace","traceType","logDevtoolsMessage","message","type","String","colonIndex","indexOf","slice","emitDevtoolsMessage","trace","cb","triggerIds","areaTag"],"sources":["../../../src/debug/trace.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,232 @@
1
+ /**
2
+ * Shared protocol types for communication between the Alloy devtools server
3
+ * and the devtools UI client. Both sides import these types to ensure
4
+ * compile-time safety and prevent protocol drift.
5
+ */
6
+ import type { SourceLocation } from "../debug/effects.js";
7
+ export type { SourceLocation };
8
+ export interface RenderTreeNode {
9
+ id: number;
10
+ kind: "root" | "component" | "intrinsic" | "printHook" | "text" | "memo" | "customContext" | "fragment";
11
+ name?: string;
12
+ propsSerialized?: string;
13
+ value?: string;
14
+ source?: SourceLocation;
15
+ }
16
+ export interface EffectInfo {
17
+ id: number;
18
+ name?: string;
19
+ type?: string;
20
+ createdAt?: SourceLocation;
21
+ lastTriggeredByRefId?: number;
22
+ lastTriggeredAt?: SourceLocation;
23
+ }
24
+ export interface RefInfo {
25
+ id: number;
26
+ kind?: string;
27
+ createdAt?: SourceLocation;
28
+ createdByEffectId?: number;
29
+ }
30
+ export interface EffectEdgeInfo {
31
+ id: number;
32
+ type: "track" | "trigger" | "triggered-by";
33
+ effectId: number;
34
+ refId?: number;
35
+ targetId?: number;
36
+ targetKind?: "ref" | "target";
37
+ targetLabel?: string;
38
+ targetKey?: string | number;
39
+ location?: SourceLocation;
40
+ count?: number;
41
+ }
42
+ export interface ScopeInfo {
43
+ id: number;
44
+ name: string;
45
+ parentId: number | null;
46
+ ownerSymbolId: number | null;
47
+ renderNodeId?: number | null;
48
+ isMemberScope: boolean;
49
+ isTransient?: boolean;
50
+ metadata?: Record<string, unknown>;
51
+ debugInfo?: Record<string, unknown>;
52
+ children?: Array<{
53
+ id: number;
54
+ name?: string;
55
+ }>;
56
+ spaces?: Array<{
57
+ key: string;
58
+ symbols: Array<{
59
+ id: number;
60
+ name?: string;
61
+ }>;
62
+ }>;
63
+ }
64
+ export interface SymbolInfo {
65
+ id: number;
66
+ name: string;
67
+ originalName: string;
68
+ scopeId: number | null;
69
+ ownerSymbolId: number | null;
70
+ renderNodeId?: number | null;
71
+ isMemberSymbol: boolean;
72
+ isTransient: boolean;
73
+ isAlias: boolean;
74
+ movedToId: number | null;
75
+ metadata?: Record<string, unknown>;
76
+ debugInfo?: Record<string, unknown>;
77
+ memberSpaces?: Array<{
78
+ key: string;
79
+ symbols: Array<{
80
+ id: number;
81
+ name?: string;
82
+ }>;
83
+ }>;
84
+ }
85
+ export interface RenderErrorStackEntry {
86
+ name: string;
87
+ propsSerialized?: string;
88
+ renderNodeId?: number;
89
+ source?: SourceLocation;
90
+ }
91
+ export interface DiagnosticInfo {
92
+ id: string;
93
+ message: string;
94
+ severity: string;
95
+ source?: SourceLocation;
96
+ componentStack?: Array<{
97
+ name: string;
98
+ renderNodeId?: number;
99
+ source?: SourceLocation;
100
+ }>;
101
+ }
102
+ export interface DebuggerInfoMessage {
103
+ type: "debugger:info";
104
+ version: string;
105
+ cwd?: string;
106
+ }
107
+ export interface RenderResetMessage {
108
+ type: "render:reset";
109
+ }
110
+ export interface RenderNodeAddedMessage {
111
+ type: "render:nodeAdded";
112
+ parentId: number | null;
113
+ node: RenderTreeNode;
114
+ }
115
+ export interface RenderNodeUpdatedMessage {
116
+ type: "render:nodeUpdated";
117
+ id: number;
118
+ propsSerialized?: string;
119
+ }
120
+ export interface RenderNodeRemovedMessage {
121
+ type: "render:nodeRemoved";
122
+ parentId: number | null;
123
+ id: number;
124
+ name?: string;
125
+ }
126
+ export interface RenderErrorMessage {
127
+ type: "render:error";
128
+ id: number;
129
+ name?: string;
130
+ message?: string;
131
+ stack?: string;
132
+ componentStack: RenderErrorStackEntry[];
133
+ }
134
+ export interface RenderCompleteMessage {
135
+ type: "render:complete";
136
+ }
137
+ export interface FlushJobsCompleteMessage {
138
+ type: "flushJobs:complete";
139
+ }
140
+ export interface DirectoryAddedMessage {
141
+ type: "files:directoryAdded";
142
+ path: string;
143
+ }
144
+ export interface DirectoryRemovedMessage {
145
+ type: "files:directoryRemoved";
146
+ path: string;
147
+ }
148
+ export interface FileAddedMessage {
149
+ type: "files:fileAdded";
150
+ path: string;
151
+ filetype: string;
152
+ renderNodeId?: number;
153
+ }
154
+ export interface FileRemovedMessage {
155
+ type: "files:fileRemoved";
156
+ path: string;
157
+ }
158
+ export interface FileUpdatedMessage {
159
+ type: "files:fileUpdated";
160
+ path: string;
161
+ filetype: string;
162
+ contents: string;
163
+ }
164
+ export interface ScopeCreateMessage {
165
+ type: "scope:create";
166
+ scope: ScopeInfo;
167
+ }
168
+ export interface ScopeUpdateMessage {
169
+ type: "scope:update";
170
+ scope: ScopeInfo;
171
+ }
172
+ export interface ScopeDeleteMessage {
173
+ type: "scope:delete";
174
+ id: number;
175
+ }
176
+ export interface SymbolCreateMessage {
177
+ type: "symbol:create";
178
+ symbol: SymbolInfo;
179
+ }
180
+ export interface SymbolUpdateMessage {
181
+ type: "symbol:update";
182
+ symbol: SymbolInfo;
183
+ }
184
+ export interface SymbolDeleteMessage {
185
+ type: "symbol:delete";
186
+ id: number;
187
+ }
188
+ export interface EffectAddedMessage {
189
+ type: "effect:effectAdded";
190
+ effect: EffectInfo;
191
+ }
192
+ export interface EffectUpdatedMessage {
193
+ type: "effect:effectUpdated";
194
+ effect: EffectInfo;
195
+ }
196
+ export interface RefAddedMessage {
197
+ type: "effect:refAdded";
198
+ ref: RefInfo;
199
+ }
200
+ export interface EffectTrackMessage {
201
+ type: "effect:track";
202
+ edge: EffectEdgeInfo;
203
+ message?: string;
204
+ }
205
+ export interface EffectTriggerMessage {
206
+ type: "effect:trigger";
207
+ edge: EffectEdgeInfo;
208
+ message?: string;
209
+ }
210
+ export interface EffectEdgeUpdatedMessage {
211
+ type: "effect:edgeUpdated";
212
+ edge: EffectEdgeInfo;
213
+ }
214
+ export interface DiagnosticsReportMessage {
215
+ type: "diagnostics:report";
216
+ diagnostics: DiagnosticInfo[];
217
+ }
218
+ export interface BatchMessage {
219
+ type: "batch";
220
+ messages: ServerToClientMessage[];
221
+ }
222
+ export type ServerToClientMessage = DebuggerInfoMessage | RenderResetMessage | RenderNodeAddedMessage | RenderNodeUpdatedMessage | RenderNodeRemovedMessage | RenderErrorMessage | RenderCompleteMessage | FlushJobsCompleteMessage | DirectoryAddedMessage | DirectoryRemovedMessage | FileAddedMessage | FileRemovedMessage | FileUpdatedMessage | ScopeCreateMessage | ScopeUpdateMessage | ScopeDeleteMessage | SymbolCreateMessage | SymbolUpdateMessage | SymbolDeleteMessage | EffectAddedMessage | EffectUpdatedMessage | RefAddedMessage | EffectTrackMessage | EffectTriggerMessage | EffectEdgeUpdatedMessage | DiagnosticsReportMessage | BatchMessage;
223
+ export interface RerenderRequestMessage {
224
+ type: "render:rerender";
225
+ id: number;
226
+ }
227
+ export interface RerenderBreakRequestMessage {
228
+ type: "render:rerenderAndBreak";
229
+ id: number;
230
+ }
231
+ export type ClientToServerMessage = RerenderRequestMessage | RerenderBreakRequestMessage;
232
+ //# sourceMappingURL=devtools-protocol.d.ts.map