@alloy-js/core 0.23.0-dev.10 → 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.
- package/dist/devtools/index.html +29 -17
- package/dist/src/binder.d.ts.map +1 -1
- package/dist/src/binder.js +5 -0
- package/dist/src/binder.js.map +1 -1
- package/dist/src/components/For.d.ts.map +1 -1
- package/dist/src/components/For.js +1 -1
- package/dist/src/components/For.js.map +1 -1
- package/dist/src/components/List.d.ts.map +1 -1
- package/dist/src/components/List.js +1 -1
- package/dist/src/components/List.js.map +1 -1
- package/dist/src/components/Switch.d.ts.map +1 -1
- package/dist/src/components/Switch.js +1 -1
- package/dist/src/components/Switch.js.map +1 -1
- package/dist/src/debug/diagnostics.test.js +3 -2
- package/dist/src/debug/diagnostics.test.js.map +1 -1
- package/dist/src/debug/effects.d.ts +12 -4
- package/dist/src/debug/effects.d.ts.map +1 -1
- package/dist/src/debug/effects.js +182 -52
- package/dist/src/debug/effects.js.map +1 -1
- package/dist/src/debug/effects.test.js +213 -41
- package/dist/src/debug/effects.test.js.map +1 -1
- package/dist/src/debug/files.d.ts.map +1 -1
- package/dist/src/debug/files.js +7 -18
- package/dist/src/debug/files.js.map +1 -1
- package/dist/src/debug/files.test.js +13 -36
- package/dist/src/debug/files.test.js.map +1 -1
- package/dist/src/debug/index.d.ts +4 -2
- package/dist/src/debug/index.d.ts.map +1 -1
- package/dist/src/debug/index.js +4 -2
- package/dist/src/debug/index.js.map +1 -1
- package/dist/src/debug/message-format.test.d.ts +2 -0
- package/dist/src/debug/message-format.test.d.ts.map +1 -0
- package/dist/src/debug/message-format.test.js +700 -0
- package/dist/src/debug/message-format.test.js.map +1 -0
- package/dist/src/debug/render-tree-orphans.test.d.ts +2 -0
- package/dist/src/debug/render-tree-orphans.test.d.ts.map +1 -0
- package/dist/src/debug/render-tree-orphans.test.js +297 -0
- package/dist/src/debug/render-tree-orphans.test.js.map +1 -0
- package/dist/src/debug/render.d.ts.map +1 -1
- package/dist/src/debug/render.js +83 -130
- package/dist/src/debug/render.js.map +1 -1
- package/dist/src/debug/render.test.js +91 -128
- package/dist/src/debug/render.test.js.map +1 -1
- package/dist/src/debug/symbols.d.ts +6 -5
- package/dist/src/debug/symbols.d.ts.map +1 -1
- package/dist/src/debug/symbols.js +46 -23
- package/dist/src/debug/symbols.js.map +1 -1
- package/dist/src/debug/symbols.test.js +15 -26
- package/dist/src/debug/symbols.test.js.map +1 -1
- package/dist/src/debug/trace-writer.d.ts +55 -0
- package/dist/src/debug/trace-writer.d.ts.map +1 -0
- package/dist/src/debug/trace-writer.js +658 -0
- package/dist/src/debug/trace-writer.js.map +1 -0
- package/dist/src/debug/trace.d.ts +10 -10
- package/dist/src/debug/trace.d.ts.map +1 -1
- package/dist/src/debug/trace.js +23 -20
- package/dist/src/debug/trace.js.map +1 -1
- package/dist/src/devtools/devtools-protocol.d.ts +318 -161
- package/dist/src/devtools/devtools-protocol.d.ts.map +1 -1
- package/dist/src/devtools/devtools-server.browser.d.ts +0 -5
- package/dist/src/devtools/devtools-server.browser.d.ts.map +1 -1
- package/dist/src/devtools/devtools-server.browser.js +0 -3
- package/dist/src/devtools/devtools-server.browser.js.map +1 -1
- package/dist/src/devtools/devtools-server.d.ts +0 -6
- package/dist/src/devtools/devtools-server.d.ts.map +1 -1
- package/dist/src/devtools/devtools-server.js +212 -24
- package/dist/src/devtools/devtools-server.js.map +1 -1
- package/dist/src/devtools/devtools-transport.d.ts +2 -2
- package/dist/src/devtools/devtools-transport.d.ts.map +1 -1
- package/dist/src/devtools/devtools-transport.js +2 -2
- package/dist/src/devtools/devtools-transport.js.map +1 -1
- package/dist/src/devtools-entry.browser.d.ts +1 -1
- package/dist/src/devtools-entry.browser.d.ts.map +1 -1
- package/dist/src/devtools-entry.browser.js.map +1 -1
- package/dist/src/devtools-entry.d.ts +1 -1
- package/dist/src/devtools-entry.d.ts.map +1 -1
- package/dist/src/devtools-entry.js.map +1 -1
- package/dist/src/diagnostics.d.ts.map +1 -1
- package/dist/src/diagnostics.js +5 -5
- package/dist/src/diagnostics.js.map +1 -1
- package/dist/src/reactivity.d.ts +13 -2
- package/dist/src/reactivity.d.ts.map +1 -1
- package/dist/src/reactivity.js +96 -13
- package/dist/src/reactivity.js.map +1 -1
- package/dist/src/render.d.ts.map +1 -1
- package/dist/src/render.js +84 -30
- package/dist/src/render.js.map +1 -1
- package/dist/src/scheduler.d.ts +5 -0
- package/dist/src/scheduler.d.ts.map +1 -1
- package/dist/src/scheduler.js +94 -23
- package/dist/src/scheduler.js.map +1 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +11 -5
- package/dist/src/utils.js.map +1 -1
- package/dist/testing/devtools-utils.d.ts +12 -3
- package/dist/testing/devtools-utils.d.ts.map +1 -1
- package/dist/testing/devtools-utils.js +26 -4
- package/dist/testing/devtools-utils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/binder.ts +47 -38
- package/src/components/For.tsx +14 -10
- package/src/components/List.tsx +7 -4
- package/src/components/Switch.tsx +11 -7
- package/src/debug/diagnostics.test.tsx +3 -2
- package/src/debug/effects.test.tsx +248 -36
- package/src/debug/effects.ts +276 -62
- package/src/debug/files.test.tsx +15 -35
- package/src/debug/files.ts +11 -11
- package/src/debug/index.ts +4 -0
- package/src/debug/message-format.test.tsx +759 -0
- package/src/debug/render-tree-orphans.test.tsx +344 -0
- package/src/debug/render.test.tsx +96 -118
- package/src/debug/render.ts +183 -124
- package/src/debug/symbols.test.tsx +19 -20
- package/src/debug/symbols.ts +106 -23
- package/src/debug/trace-writer.ts +969 -0
- package/src/debug/trace.ts +25 -28
- package/src/devtools/devtools-protocol.ts +361 -176
- package/src/devtools/devtools-server.browser.ts +0 -9
- package/src/devtools/devtools-server.ts +210 -32
- package/src/devtools/devtools-transport.ts +4 -4
- package/src/devtools-entry.browser.ts +11 -15
- package/src/devtools-entry.ts +9 -15
- package/src/diagnostics.ts +14 -5
- package/src/reactivity.ts +113 -17
- package/src/render.ts +104 -30
- package/src/scheduler.ts +145 -26
- package/src/utils.tsx +7 -4
- package/temp/api.json +142 -20
- package/testing/devtools-utils.ts +46 -4
package/src/debug/symbols.ts
CHANGED
|
@@ -5,8 +5,16 @@ import type { OutputSymbol } from "../symbols/output-symbol.js";
|
|
|
5
5
|
import { getRenderNodeId } from "./render.js";
|
|
6
6
|
import { sanitizeRecord } from "./serialize.js";
|
|
7
7
|
import {
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
insertScope,
|
|
9
|
+
insertSymbol,
|
|
10
|
+
deleteScope as traceDeleteScope,
|
|
11
|
+
deleteSymbol as traceDeleteSymbol,
|
|
12
|
+
updateScope as traceUpdateScope,
|
|
13
|
+
updateSymbol as traceUpdateSymbol,
|
|
14
|
+
} from "./trace-writer.js";
|
|
15
|
+
import {
|
|
16
|
+
isDebugEnabled,
|
|
17
|
+
logDevtoolsMessage,
|
|
10
18
|
TracePhase,
|
|
11
19
|
traceType,
|
|
12
20
|
} from "./trace.js";
|
|
@@ -147,25 +155,49 @@ function snapshotSymbol(
|
|
|
147
155
|
};
|
|
148
156
|
}
|
|
149
157
|
|
|
158
|
+
const scopeRenderNodes = new Map<number, { value: number | null }>();
|
|
159
|
+
|
|
150
160
|
export function registerScope(scope: OutputScope) {
|
|
151
|
-
if (!
|
|
161
|
+
if (!isDebugEnabled()) return;
|
|
152
162
|
if (scopeWatchers.has(scope.id)) return;
|
|
153
163
|
untrack(() => {
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
|
|
164
|
+
const renderNodeRef = { value: getRenderNodeIdForCurrentContext() };
|
|
165
|
+
scopeRenderNodes.set(scope.id, renderNodeRef);
|
|
166
|
+
let previous = snapshotScope(scope, renderNodeRef.value);
|
|
167
|
+
logDevtoolsMessage({
|
|
157
168
|
type: traceType(TracePhase.scope.create),
|
|
158
169
|
scope: previous,
|
|
159
170
|
});
|
|
171
|
+
|
|
172
|
+
insertScope(
|
|
173
|
+
previous.id,
|
|
174
|
+
previous.name,
|
|
175
|
+
previous.parentId ?? undefined,
|
|
176
|
+
previous.ownerSymbolId ?? undefined,
|
|
177
|
+
previous.renderNodeId ?? undefined,
|
|
178
|
+
previous.isMemberScope,
|
|
179
|
+
previous.metadata ? JSON.stringify(previous.metadata) : undefined,
|
|
180
|
+
);
|
|
181
|
+
|
|
160
182
|
const stop = watch(
|
|
161
|
-
() => snapshotScope(scope,
|
|
183
|
+
() => snapshotScope(scope, renderNodeRef.value),
|
|
162
184
|
(next) => {
|
|
163
185
|
if (!shallowEqual(previous, next)) {
|
|
164
186
|
previous = next;
|
|
165
|
-
|
|
187
|
+
logDevtoolsMessage({
|
|
166
188
|
type: traceType(TracePhase.scope.update),
|
|
167
189
|
scope: next,
|
|
168
190
|
});
|
|
191
|
+
|
|
192
|
+
traceUpdateScope(
|
|
193
|
+
next.id,
|
|
194
|
+
next.name,
|
|
195
|
+
next.parentId ?? undefined,
|
|
196
|
+
next.ownerSymbolId ?? undefined,
|
|
197
|
+
next.renderNodeId ?? undefined,
|
|
198
|
+
next.isMemberScope,
|
|
199
|
+
next.metadata ? JSON.stringify(next.metadata) : undefined,
|
|
200
|
+
);
|
|
169
201
|
}
|
|
170
202
|
},
|
|
171
203
|
);
|
|
@@ -173,45 +205,94 @@ export function registerScope(scope: OutputScope) {
|
|
|
173
205
|
});
|
|
174
206
|
}
|
|
175
207
|
|
|
208
|
+
/**
|
|
209
|
+
* Update a scope's render_node_id to the current context's render node.
|
|
210
|
+
* Called when a scope is mounted in the component tree (e.g. via the Scope
|
|
211
|
+
* component with a `value` prop) so that the scope is associated with where
|
|
212
|
+
* it lives in the render tree rather than where it was instantiated.
|
|
213
|
+
*/
|
|
214
|
+
export function relocateScope(scope: OutputScope) {
|
|
215
|
+
if (!isDebugEnabled()) return;
|
|
216
|
+
untrack(() => {
|
|
217
|
+
const renderNodeId = getRenderNodeIdForCurrentContext();
|
|
218
|
+
if (renderNodeId !== null) {
|
|
219
|
+
const renderNodeRef = scopeRenderNodes.get(scope.id);
|
|
220
|
+
if (renderNodeRef) {
|
|
221
|
+
renderNodeRef.value = renderNodeId;
|
|
222
|
+
}
|
|
223
|
+
const snapshot = snapshotScope(scope, renderNodeId);
|
|
224
|
+
traceUpdateScope(
|
|
225
|
+
snapshot.id,
|
|
226
|
+
snapshot.name,
|
|
227
|
+
snapshot.parentId ?? undefined,
|
|
228
|
+
snapshot.ownerSymbolId ?? undefined,
|
|
229
|
+
snapshot.renderNodeId ?? undefined,
|
|
230
|
+
snapshot.isMemberScope,
|
|
231
|
+
snapshot.metadata ? JSON.stringify(snapshot.metadata) : undefined,
|
|
232
|
+
);
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
|
|
176
237
|
export function unregisterScope(scope: OutputScope) {
|
|
177
|
-
if (!
|
|
238
|
+
if (!isDebugEnabled()) return;
|
|
178
239
|
const stop = scopeWatchers.get(scope.id);
|
|
179
240
|
if (stop) stop();
|
|
180
241
|
scopeWatchers.delete(scope.id);
|
|
181
|
-
|
|
242
|
+
logDevtoolsMessage({
|
|
182
243
|
type: traceType(TracePhase.scope.delete),
|
|
183
244
|
id: scope.id,
|
|
184
245
|
});
|
|
185
|
-
}
|
|
186
246
|
|
|
187
|
-
|
|
188
|
-
* Re-register a pre-existing scope under the current render context.
|
|
189
|
-
* Called when `<Scope value={existingScope}>` mounts an already-created scope
|
|
190
|
-
* into a new location in the render tree.
|
|
191
|
-
*/
|
|
192
|
-
export function relocateScope(_scope: OutputScope) {
|
|
193
|
-
// Placeholder — real implementation added in the trace-writer branch.
|
|
247
|
+
traceDeleteScope(scope.id);
|
|
194
248
|
}
|
|
195
249
|
|
|
196
250
|
export function registerSymbol(symbol: OutputSymbol) {
|
|
197
|
-
if (!
|
|
251
|
+
if (!isDebugEnabled()) return;
|
|
198
252
|
if (symbolWatchers.has(symbol.id)) return;
|
|
199
253
|
untrack(() => {
|
|
200
254
|
const renderNodeId = getRenderNodeIdForCurrentContext();
|
|
201
255
|
let previous = snapshotSymbol(symbol, renderNodeId);
|
|
202
|
-
|
|
256
|
+
logDevtoolsMessage({
|
|
203
257
|
type: traceType(TracePhase.symbol.create),
|
|
204
258
|
symbol: previous,
|
|
205
259
|
});
|
|
260
|
+
|
|
261
|
+
insertSymbol(
|
|
262
|
+
previous.id,
|
|
263
|
+
previous.name,
|
|
264
|
+
previous.originalName,
|
|
265
|
+
previous.scopeId ?? undefined,
|
|
266
|
+
previous.ownerSymbolId ?? undefined,
|
|
267
|
+
previous.renderNodeId ?? undefined,
|
|
268
|
+
previous.isMemberSymbol,
|
|
269
|
+
previous.isTransient,
|
|
270
|
+
previous.isAlias,
|
|
271
|
+
previous.metadata ? JSON.stringify(previous.metadata) : undefined,
|
|
272
|
+
);
|
|
273
|
+
|
|
206
274
|
const stop = watch(
|
|
207
275
|
() => snapshotSymbol(symbol, renderNodeId),
|
|
208
276
|
(next) => {
|
|
209
277
|
if (!shallowEqual(previous, next)) {
|
|
210
278
|
previous = next;
|
|
211
|
-
|
|
279
|
+
logDevtoolsMessage({
|
|
212
280
|
type: traceType(TracePhase.symbol.update),
|
|
213
281
|
symbol: next,
|
|
214
282
|
});
|
|
283
|
+
|
|
284
|
+
traceUpdateSymbol(
|
|
285
|
+
next.id,
|
|
286
|
+
next.name,
|
|
287
|
+
next.originalName,
|
|
288
|
+
next.scopeId ?? undefined,
|
|
289
|
+
next.ownerSymbolId ?? undefined,
|
|
290
|
+
next.renderNodeId ?? undefined,
|
|
291
|
+
next.isMemberSymbol,
|
|
292
|
+
next.isTransient,
|
|
293
|
+
next.isAlias,
|
|
294
|
+
next.metadata ? JSON.stringify(next.metadata) : undefined,
|
|
295
|
+
);
|
|
215
296
|
}
|
|
216
297
|
},
|
|
217
298
|
);
|
|
@@ -220,14 +301,16 @@ export function registerSymbol(symbol: OutputSymbol) {
|
|
|
220
301
|
}
|
|
221
302
|
|
|
222
303
|
export function unregisterSymbol(symbol: OutputSymbol) {
|
|
223
|
-
if (!
|
|
304
|
+
if (!isDebugEnabled()) return;
|
|
224
305
|
const stop = symbolWatchers.get(symbol.id);
|
|
225
306
|
if (stop) stop();
|
|
226
307
|
symbolWatchers.delete(symbol.id);
|
|
227
|
-
|
|
308
|
+
logDevtoolsMessage({
|
|
228
309
|
type: traceType(TracePhase.symbol.delete),
|
|
229
310
|
id: symbol.id,
|
|
230
311
|
});
|
|
312
|
+
|
|
313
|
+
traceDeleteSymbol(symbol.id);
|
|
231
314
|
}
|
|
232
315
|
|
|
233
316
|
/** Stop all watchers and clear tracked state. Called when a new render begins. */
|