@livestore/utils 0.4.0-dev.20 → 0.4.0-dev.21

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.
@@ -1,74 +1,210 @@
1
- import * as C from '@effect/experimental/DevTools/Client';
2
- import { Duration, Schedule } from 'effect';
3
- import * as Console from 'effect/Console';
1
+ import * as Cause from 'effect/Cause';
2
+ import * as Context from 'effect/Context';
4
3
  import * as Effect from 'effect/Effect';
5
- import { pipe } from 'effect/Function';
6
4
  import * as Graph from 'effect/Graph';
7
- import * as Layer from 'effect/Layer';
8
5
  import * as Option from 'effect/Option';
9
- class DebugInfo extends Effect.Service()('@mattiamanzati/debug/DebugInfo', {
10
- effect: Effect.sync(() => ({
11
- mutableGraph: Graph.beginMutation(Graph.directed()),
12
- nodeIdBySpanId: new Map(),
13
- })),
14
- }) {
15
- }
16
- const layerClientInMemoryGraph = Layer.effect(C.Client, Effect.gen(function* () {
17
- const { mutableGraph, nodeIdBySpanId } = yield* DebugInfo;
18
- function ensureNode(traceId, spanId) {
19
- const existingNodeId = nodeIdBySpanId.get(spanId);
20
- if (existingNodeId !== undefined)
21
- return existingNodeId;
22
- const nodeId = Graph.addNode(mutableGraph, {
23
- span: { _tag: 'ExternalSpan', spanId, traceId, sampled: false },
6
+ import * as RuntimeFlags from 'effect/RuntimeFlags';
7
+ import * as Scope from 'effect/Scope';
8
+ const graphByTraceId = new Map();
9
+ function ensureSpan(traceId, spanId) {
10
+ let info = graphByTraceId.get(traceId);
11
+ if (info === undefined) {
12
+ info = {
13
+ graph: Graph.beginMutation(Graph.directed()),
14
+ nodeIdBySpanId: new Map(),
15
+ };
16
+ graphByTraceId.set(traceId, info);
17
+ }
18
+ let nodeId = info.nodeIdBySpanId.get(spanId);
19
+ if (nodeId === undefined) {
20
+ nodeId = Graph.addNode(info.graph, {
21
+ span: { _tag: 'ExternalSpan', spanId, traceId, sampled: false, context: Context.empty() },
24
22
  events: [],
23
+ exitTag: undefined,
25
24
  });
26
- nodeIdBySpanId.set(spanId, nodeId);
27
- return nodeId;
25
+ info.nodeIdBySpanId.set(spanId, nodeId);
28
26
  }
29
- function upgradeInfo(prev, next) {
30
- if (prev._tag === 'ExternalSpan' && next._tag === 'Span')
31
- return [next, true];
32
- if (prev._tag === 'Span' && next._tag === 'ExternalSpan')
33
- return [prev, false];
34
- if (prev._tag === 'Span' && prev.status._tag === 'Ended')
35
- return [prev, false];
36
- return [next, false];
27
+ return [info.graph, nodeId];
28
+ }
29
+ function sortSpan(prev, next) {
30
+ if (prev._tag === 'ExternalSpan' && next._tag === 'Span')
31
+ return [next, true, true];
32
+ if (prev._tag === 'Span' && next._tag === 'Span' && next.status._tag === 'Ended')
33
+ return [next, false, true];
34
+ return [prev, false, false];
35
+ }
36
+ function addNode(span) {
37
+ const [mutableGraph, nodeId] = ensureSpan(span.traceId, span.spanId);
38
+ Graph.updateNode(mutableGraph, nodeId, (previousInfo) => {
39
+ const [latestInfo, upgraded] = sortSpan(previousInfo.span, span);
40
+ if (upgraded && latestInfo._tag === 'Span' && Option.isSome(latestInfo.parent)) {
41
+ const parentNodeId = addNode(latestInfo.parent.value);
42
+ Graph.addEdge(mutableGraph, parentNodeId, nodeId, undefined);
43
+ }
44
+ return { ...previousInfo, span: latestInfo };
45
+ });
46
+ return nodeId;
47
+ }
48
+ function addEvent(traceId, spanId, event) {
49
+ const [mutableGraph, nodeId] = ensureSpan(traceId, spanId);
50
+ Graph.updateNode(mutableGraph, nodeId, (previousInfo) => {
51
+ return { ...previousInfo, events: [...previousInfo.events, event] };
52
+ });
53
+ return nodeId;
54
+ }
55
+ function addNodeExit(traceId, spanId, exit) {
56
+ const [mutableGraph, nodeId] = ensureSpan(traceId, spanId);
57
+ Graph.updateNode(mutableGraph, nodeId, (previousInfo) => {
58
+ const isInterruptedOnly = exit._tag === 'Failure' && Cause.isInterruptedOnly(exit.cause);
59
+ return {
60
+ ...previousInfo,
61
+ exitTag: isInterruptedOnly ? 'Interrupted' : exit._tag,
62
+ };
63
+ });
64
+ return nodeId;
65
+ }
66
+ function createPropertyInterceptor(obj, property, interceptor) {
67
+ const descriptor = Object.getOwnPropertyDescriptor(obj, property);
68
+ const previousSetter = descriptor?.set;
69
+ let currentValue;
70
+ const previousGetter = descriptor?.get;
71
+ if (!previousGetter) {
72
+ currentValue = obj[property];
37
73
  }
38
- function addNode(span) {
39
- const nodeId = ensureNode(span.traceId, span.spanId);
40
- Graph.updateNode(mutableGraph, nodeId, (previousInfo) => {
41
- const [latestInfo, upgraded] = upgradeInfo(previousInfo.span, span);
42
- if (upgraded && latestInfo._tag === 'Span' && Option.isSome(latestInfo.parent)) {
43
- const parentNodeId = addNode(latestInfo.parent.value);
44
- Graph.addEdge(mutableGraph, parentNodeId, nodeId, undefined);
74
+ Object.defineProperty(obj, property, {
75
+ get() {
76
+ if (previousGetter) {
77
+ return previousGetter.call(obj);
45
78
  }
46
- return { ...previousInfo, span: latestInfo };
47
- });
48
- return nodeId;
79
+ return currentValue;
80
+ },
81
+ set(value) {
82
+ if (previousSetter) {
83
+ previousSetter.call(obj, value);
84
+ }
85
+ else {
86
+ currentValue = value;
87
+ }
88
+ interceptor(value);
89
+ },
90
+ enumerable: descriptor?.enumerable ?? true,
91
+ configurable: descriptor?.configurable ?? true,
92
+ });
93
+ }
94
+ const patchedTracer = new WeakSet();
95
+ function ensureTracerPatched(currentTracer) {
96
+ if (patchedTracer.has(currentTracer)) {
97
+ return;
49
98
  }
50
- function addEvent(event) {
51
- const nodeId = ensureNode(event.traceId, event.spanId);
52
- Graph.updateNode(mutableGraph, nodeId, (previousInfo) => ({
53
- ...previousInfo,
54
- events: [...previousInfo.events, event],
55
- }));
99
+ patchedTracer.add(currentTracer);
100
+ const oldSpanConstructor = currentTracer.span;
101
+ currentTracer.span = function (...args) {
102
+ const span = oldSpanConstructor.apply(this, args);
103
+ addNode(span);
104
+ const oldSpanEnd = span.end;
105
+ span.end = function (endTime, exit, ...args) {
106
+ oldSpanEnd.apply(this, [endTime, exit, ...args]);
107
+ addNodeExit(this.traceId, this.spanId, exit);
108
+ };
109
+ const oldSpanEvent = span.event;
110
+ span.event = function (name, startTime, attributes, ...args) {
111
+ oldSpanEvent.apply(this, [name, startTime, attributes, ...args]);
112
+ addEvent(this.traceId, this.spanId, { name, startTime, attributes: attributes ?? {} });
113
+ };
114
+ return span;
115
+ };
116
+ const oldContext = currentTracer.context;
117
+ currentTracer.context = function (f, fiber, ...args) {
118
+ const context = oldContext.apply(this, [f, fiber, ...args]);
119
+ ensureFiberPatched(fiber);
120
+ return context;
121
+ };
122
+ }
123
+ const knownScopes = new Map();
124
+ let lastScopeId = 0;
125
+ function ensureScopePatched(scope, allocationFiber) {
126
+ if (scope.state._tag === 'Closed')
127
+ return;
128
+ if (knownScopes.has(scope))
129
+ return;
130
+ const id = lastScopeId++;
131
+ if (patchScopeClose) {
132
+ const oldClose = scope.close;
133
+ scope.close = function (...args) {
134
+ return oldClose.apply(this, args).pipe(Effect.withSpan(`scope.${id}.closeRunFinalizers`), Effect.ensuring(Effect.sync(() => {
135
+ knownScopes.delete(scope);
136
+ })));
137
+ };
138
+ }
139
+ else {
140
+ cleanupScopes();
141
+ }
142
+ const allocationSpan = allocationFiber?.currentSpan;
143
+ knownScopes.set(scope, { id, allocationFiber, allocationSpan });
144
+ }
145
+ const cleanupScopes = () => {
146
+ for (const [scope] of knownScopes) {
147
+ if (scope.state._tag === 'Closed')
148
+ knownScopes.delete(scope);
149
+ }
150
+ };
151
+ const knownFibers = new Set();
152
+ function ensureFiberPatched(fiber) {
153
+ // patch tracer
154
+ ensureTracerPatched(fiber.currentTracer);
155
+ // patch scope
156
+ const currentScope = Context.getOrElse(fiber.currentContext, Scope.Scope, () => undefined);
157
+ if (currentScope)
158
+ ensureScopePatched(currentScope, undefined);
159
+ // patch fiber
160
+ if (knownFibers.has(fiber))
161
+ return;
162
+ knownFibers.add(fiber);
163
+ fiber.addObserver((exit) => {
164
+ knownFibers.delete(fiber);
165
+ onFiberCompleted?.(fiber, exit);
166
+ });
167
+ }
168
+ let patchScopeClose = false;
169
+ let onFiberResumed;
170
+ let onFiberSuspended;
171
+ let onFiberCompleted;
172
+ export function attachSlowDebugInstrumentation(options) {
173
+ const _globalThis = globalThis;
174
+ if (_globalThis['effect/DevtoolsHook']) {
175
+ return console.error('attachDebugInstrumentation has already been called! To show the tree, call attachDebugInstrumentation() in the root/main file of your program to ensure it is loaded as soon as possible.');
56
176
  }
57
- return C.Client.of({
58
- unsafeAddSpan: (span) => {
59
- switch (span._tag) {
60
- case 'SpanEvent':
61
- return addEvent(span);
62
- case 'Span':
63
- return addNode(span);
177
+ patchScopeClose = options.patchScopeClose ?? false;
178
+ onFiberResumed = options.onFiberResumed;
179
+ onFiberSuspended = options.onFiberSuspended;
180
+ onFiberCompleted = options.onFiberCompleted;
181
+ let lastFiber;
182
+ createPropertyInterceptor(globalThis, 'effect/FiberCurrent', (value) => {
183
+ if (value && knownFibers.has(value))
184
+ onFiberResumed?.(value);
185
+ if (value)
186
+ ensureFiberPatched(value);
187
+ if (!value && lastFiber && knownFibers.has(lastFiber))
188
+ onFiberSuspended?.(lastFiber);
189
+ lastFiber = value;
190
+ });
191
+ _globalThis['effect/DevtoolsHook'] = {
192
+ onEvent: (event) => {
193
+ console.log('onEvent', event);
194
+ switch (event._tag) {
195
+ case 'ScopeAllocated':
196
+ ensureScopePatched(event.scope, _globalThis['effect/FiberCurrent']);
197
+ break;
198
+ case 'FiberAllocated':
199
+ ensureFiberPatched(event.fiber);
200
+ break;
64
201
  }
65
202
  },
66
- });
67
- }));
68
- export const layerDebug = pipe(C.makeTracer, Effect.map(Layer.setTracer), Layer.unwrapEffect, Layer.provide(layerClientInMemoryGraph), Layer.provideMerge(DebugInfo.Default));
203
+ };
204
+ }
69
205
  function formatDuration(startTime, endTime) {
70
206
  if (endTime === undefined)
71
- return 'running';
207
+ return '[running]';
72
208
  const durationMs = Number(endTime - startTime) / 1000000; // Convert nanoseconds to milliseconds
73
209
  if (durationMs < 1000)
74
210
  return `${durationMs.toFixed(0)}ms`;
@@ -81,12 +217,16 @@ function getSpanName(span) {
81
217
  return `[external] ${span.spanId}`;
82
218
  return span.name;
83
219
  }
84
- function getSpanStatus(span) {
85
- if (span._tag === 'ExternalSpan')
220
+ function getSpanStatus(info) {
221
+ if (info.span._tag === 'ExternalSpan')
86
222
  return '?';
87
- if (span.status._tag === 'Ended')
223
+ if (info.exitTag === 'Success')
88
224
  return '✓';
89
- return '';
225
+ if (info.exitTag === 'Failure')
226
+ return '✗';
227
+ if (info.exitTag === 'Interrupted')
228
+ return '!';
229
+ return '⋮';
90
230
  }
91
231
  function getSpanDuration(span) {
92
232
  if (span._tag === 'ExternalSpan')
@@ -94,194 +234,113 @@ function getSpanDuration(span) {
94
234
  const endTime = span.status._tag === 'Ended' ? span.status.endTime : undefined;
95
235
  return formatDuration(span.status.startTime, endTime);
96
236
  }
97
- /**
98
- * Filters a graph by keeping only nodes that match the predicate or have descendants that match.
99
- * This ensures parent nodes are included even if they don't match, as long as they have matching descendants.
100
- *
101
- * @param graph - The graph to filter
102
- * @param predicate - A function that tests whether a node should be included
103
- * @returns A new filtered graph containing only matching nodes and their ancestors
104
- */
105
- function filterGraphWithAncestors(graph, predicate) {
237
+ function filterGraphKeepAncestors(graph, predicate) {
106
238
  // Find all root nodes (nodes with no incoming edges)
107
239
  const rootNodes = Array.from(Graph.indices(Graph.externals(graph, { direction: 'incoming' })));
108
- const shouldInclude = new Map();
240
+ const shouldInclude = new Set();
109
241
  // Use postorder DFS to evaluate children before parents
110
- for (const rootId of rootNodes) {
111
- for (const nodeId of Graph.indices(Graph.dfsPostOrder(graph, { startNodes: [rootId], direction: 'outgoing' }))) {
112
- const node = Graph.getNode(graph, nodeId);
113
- if (Option.isNone(node))
114
- continue;
115
- const matchesPredicate = predicate(node.value, nodeId);
116
- // Check if any children should be included
242
+ for (const nodeId of Graph.indices(Graph.dfsPostOrder(graph, { start: rootNodes, direction: 'outgoing' }))) {
243
+ const node = Graph.getNode(graph, nodeId);
244
+ if (Option.isNone(node))
245
+ continue;
246
+ const matchesPredicate = predicate(node.value, nodeId);
247
+ if (matchesPredicate) {
248
+ shouldInclude.add(nodeId);
249
+ }
250
+ else {
117
251
  const children = Graph.neighborsDirected(graph, nodeId, 'outgoing');
118
- const hasMatchingChildren = children.some((childId) => shouldInclude.get(childId) === true);
119
- const include = matchesPredicate || hasMatchingChildren;
120
- shouldInclude.set(nodeId, include);
252
+ const hasMatchingChildren = children.some((childId) => shouldInclude.has(childId));
253
+ if (hasMatchingChildren)
254
+ shouldInclude.add(nodeId);
121
255
  }
122
256
  }
123
257
  // Create a filtered copy of the graph
124
258
  return Graph.mutate(graph, (mutable) => {
125
259
  for (const [nodeId] of mutable.nodes) {
126
- if (shouldInclude.get(nodeId) === true)
260
+ if (shouldInclude.has(nodeId))
127
261
  continue;
128
262
  Graph.removeNode(mutable, nodeId);
129
263
  }
130
264
  });
131
265
  }
132
- function renderNode(graph, nodeId, prefix = '', isLast = true) {
266
+ function renderSpanNode(graph, nodeId) {
133
267
  const node = Graph.getNode(graph, nodeId);
134
268
  if (Option.isNone(node))
135
269
  return [];
136
270
  const info = node.value;
137
- const status = getSpanStatus(info.span);
271
+ const status = getSpanStatus(info);
138
272
  const name = getSpanName(info.span);
139
273
  const duration = getSpanDuration(info.span);
140
274
  const durationStr = duration ? ` ${duration}` : '';
141
- const connector = isLast ? '└─ ' : '├─ ';
142
- const lines = [`${prefix}${connector}${status} ${name}${durationStr}`];
143
- // Get children
144
- const children = Graph.neighborsDirected(graph, nodeId, 'outgoing');
145
- const childCount = children.length;
146
- children.forEach((childId, index) => {
147
- const isLastChild = index === childCount - 1;
148
- const childPrefix = prefix + (isLast ? ' ' : '│ ');
149
- const childLines = renderNode(graph, childId, childPrefix, isLastChild);
150
- lines.push(...childLines);
151
- });
152
- return lines;
275
+ const fiberIds = Array.from(knownFibers)
276
+ .filter((fiber) => fiber.currentSpan?.spanId === info.span.spanId && fiber.currentSpan?.traceId === info.span.traceId)
277
+ .map((fiber) => `#${fiber.id().id}`)
278
+ .join(', ');
279
+ const runningOnFibers = fiberIds.length > 0 ? ` [fibers ${fiberIds}]` : '';
280
+ return [` ${status} ${name}${durationStr}${runningOnFibers}`];
153
281
  }
154
- /**
155
- * Converts a span node to Chrome Trace Events (Begin and End)
156
- */
157
- function spanToTraceEvents(span, _nodeId, processId = 1) {
158
- const events = [];
159
- if (span._tag === 'ExternalSpan') {
160
- // External spans don't have timing info, skip them
161
- return events;
282
+ function renderTree(graph, nodeIds, renderNode) {
283
+ let lines = [];
284
+ for (let childIndex = 0; childIndex < nodeIds.length; childIndex++) {
285
+ const isLastChild = childIndex === nodeIds.length - 1;
286
+ const childLines = renderNode(graph, nodeIds[childIndex]).concat(renderTree(graph, Graph.neighborsDirected(graph, nodeIds[childIndex], 'outgoing'), renderNode));
287
+ lines = [
288
+ ...lines,
289
+ ...childLines.map((l, lineIndex) => {
290
+ if (lineIndex === 0) {
291
+ return (isLastChild ? ' └─' : ' ├─') + l;
292
+ }
293
+ return (isLastChild ? ' ' : ' │') + l;
294
+ }),
295
+ ];
162
296
  }
163
- const name = span.name;
164
- const threadId = 1; // Could use spanId hash or other identifier
165
- // Begin event
166
- const startTimeUs = Number(span.status.startTime) / 1000; // Convert nanoseconds to microseconds
167
- events.push({
168
- name,
169
- cat: 'span',
170
- ph: 'B',
171
- ts: startTimeUs,
172
- pid: processId,
173
- tid: threadId,
174
- args: {
175
- spanId: span.spanId,
176
- traceId: span.traceId,
177
- attributes: Object.fromEntries(span.attributes),
178
- },
179
- });
180
- // End event (only if span has ended)
181
- if (span.status._tag === 'Ended') {
182
- const endTimeUs = Number(span.status.endTime) / 1000; // Convert nanoseconds to microseconds
183
- events.push({
184
- name,
185
- cat: 'span',
186
- ph: 'E',
187
- ts: endTimeUs,
188
- pid: processId,
189
- tid: threadId,
190
- });
191
- }
192
- return events;
297
+ return lines;
193
298
  }
194
- /**
195
- * Traverses the graph and collects all trace events
196
- */
197
- function collectTraceEvents(graph, rootNodes) {
198
- const events = [];
199
- // Use DFS to traverse all nodes
200
- for (const rootId of rootNodes) {
201
- for (const nodeId of Graph.indices(Graph.dfs(graph, { startNodes: [rootId], direction: 'outgoing' }))) {
202
- const node = Graph.getNode(graph, nodeId);
203
- if (Option.isNone(node))
204
- continue;
205
- const nodeEvents = spanToTraceEvents(node.value.span, nodeId);
206
- events.push(...nodeEvents);
207
- }
299
+ export const logDebug = (options = {}) => {
300
+ const _globalThis = globalThis;
301
+ if (!_globalThis['effect/DevtoolsHook']) {
302
+ return console.error('attachDebugInstrumentation has not been called! To show the tree, call attachDebugInstrumentation() in the root/main file of your program to ensure it is loaded as soon as possible.');
208
303
  }
209
- // Sort events by timestamp
210
- events.sort((a, b) => a.ts - b.ts);
211
- return events;
212
- }
213
- export const logTree = (options = {}) => Effect.gen(function* () {
214
- const maybeInfo = yield* Effect.serviceOption(DebugInfo);
215
- if (Option.isNone(maybeInfo))
216
- return yield* Console.log('(no debug info provided! To show the tree, provide the layerDebug layer in the root of your program)');
217
- const { mutableGraph } = maybeInfo.value;
218
- const graph = Graph.endMutation(mutableGraph);
219
- // Find root nodes (nodes with no incoming edges) using externals
220
- const rootNodes = Array.from(Graph.indices(Graph.externals(graph, { direction: 'incoming' })));
221
- if (rootNodes.length === 0) {
222
- return yield* Console.log('(empty trace)');
304
+ let lines = [`----------------${options.title ?? ''}----------------`];
305
+ // fibers
306
+ lines = [...lines, 'Active Fibers:'];
307
+ for (const fiber of knownFibers) {
308
+ const interruptible = RuntimeFlags.interruptible(fiber.currentRuntimeFlags);
309
+ lines = [...lines, `- #${fiber.id().id}${!interruptible ? ' [uninterruptible]' : ''}`];
223
310
  }
224
- // Apply filter to create a filtered copy of the graph
225
- const filteredGraph = options.regex
226
- ? filterGraphWithAncestors(graph, (nodeData, _nodeId) => {
227
- const name = getSpanName(nodeData.span);
228
- return options.regex.test(name);
229
- })
230
- : graph;
231
- // Find root nodes in the filtered graph
232
- const filteredRootNodes = Array.from(Graph.indices(Graph.externals(filteredGraph, { direction: 'incoming' })));
233
- if (filteredRootNodes.length === 0) {
234
- return yield* Console.log(options.title ? `${options.title}\n(no matches)` : '(no matches)');
311
+ if (knownFibers.size === 0) {
312
+ lines = [...lines, '- No active effect fibers'];
235
313
  }
236
- const lines = [];
237
- // Add title if provided
238
- if (options.title) {
239
- lines.push(options.title);
314
+ lines = [...lines, ''];
315
+ // spans
316
+ for (const [traceId, info] of graphByTraceId) {
317
+ const graph = Graph.endMutation(info.graph);
318
+ const filteredGraph = options.regex
319
+ ? filterGraphKeepAncestors(graph, (nodeData, _nodeId) => {
320
+ const name = getSpanName(nodeData.span);
321
+ return options.regex.test(name);
322
+ })
323
+ : graph;
324
+ const filteredRootNodes = Array.from(Graph.indices(Graph.externals(filteredGraph, { direction: 'incoming' })));
325
+ lines = [...lines, `Spans Trace ${traceId}:`, ...renderTree(filteredGraph, filteredRootNodes, renderSpanNode)];
240
326
  }
241
- // Render root nodes using the same logic as regular children
242
- const rootCount = filteredRootNodes.length;
243
- filteredRootNodes.forEach((rootId, index) => {
244
- const isLastRoot = index === rootCount - 1;
245
- const rootLines = renderNode(filteredGraph, rootId, '', isLastRoot);
246
- lines.push(...rootLines);
247
- });
248
- return yield* Console.log(lines.join('\n'));
249
- });
250
- /**
251
- * Logs the span tree in Chrome Performance Trace Event Format.
252
- * The output can be loaded in Chrome DevTools Performance tab or chrome://tracing
253
- *
254
- * @see https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/preview
255
- */
256
- export const logPerformanceTrace = (options = {}) => Effect.gen(function* () {
257
- const maybeInfo = yield* Effect.serviceOption(DebugInfo);
258
- if (Option.isNone(maybeInfo)) {
259
- return yield* Console.log('(no debug info provided! To show the trace, provide the layerDebug layer in the root of your program)');
327
+ lines = [...lines, '? external span - success - ✗ failure - ! interrupted', ''];
328
+ // scopes
329
+ lines = [...lines, 'Open Scopes:'];
330
+ for (const [scope, info] of knownScopes) {
331
+ const fiberIds = Array.from(knownFibers)
332
+ .filter((fiber) => Context.getOrElse(fiber.currentContext, Scope.Scope, () => undefined) === scope)
333
+ .map((fiber) => `#${fiber.id().id}`)
334
+ .join(', ');
335
+ const usedByFibers = fiberIds.length > 0 ? ` [used by: ${fiberIds}]` : '';
336
+ const allocationFiber = info.allocationFiber ? ` [allocated in fiber #${info.allocationFiber.id().id}]` : '';
337
+ const allocationSpan = info.allocationSpan ? ` [allocated in span: ${getSpanName(info.allocationSpan)}]` : '';
338
+ lines = [...lines, `- #${info.id}${usedByFibers}${allocationFiber}${allocationSpan}`];
260
339
  }
261
- const { mutableGraph } = maybeInfo.value;
262
- const graph = Graph.endMutation(mutableGraph);
263
- // Find root nodes (nodes with no incoming edges) using externals
264
- const rootNodes = Array.from(Graph.indices(Graph.externals(graph, { direction: 'incoming' })));
265
- if (rootNodes.length === 0) {
266
- return yield* Console.log('[]');
340
+ if (knownScopes.size === 0) {
341
+ lines = [...lines, '- No active scopes'];
267
342
  }
268
- // Apply filter if provided
269
- const filteredGraph = options.regex
270
- ? filterGraphWithAncestors(graph, (nodeData, _nodeId) => {
271
- const name = getSpanName(nodeData.span);
272
- return options.regex.test(name);
273
- })
274
- : graph;
275
- // Find root nodes in the filtered graph
276
- const filteredRootNodes = Array.from(Graph.indices(Graph.externals(filteredGraph, { direction: 'incoming' })));
277
- // Collect all trace events
278
- const events = collectTraceEvents(filteredGraph, filteredRootNodes);
279
- // Output as compact JSON array
280
- const json = JSON.stringify(events);
281
- return yield* Console.log(json);
282
- });
283
- export const logScopeState = ({ label }) => Effect.gen(function* () {
284
- const scope = yield* Effect.scope;
285
- yield* Effect.log(`scope.state[${label}]`, scope.state._tag).pipe(Effect.repeat({ schedule: Schedule.fixed(Duration.millis(100)) }), Effect.forkScoped);
286
- });
343
+ lines = [...lines, ''];
344
+ console.log(lines.join('\n'));
345
+ };
287
346
  //# sourceMappingURL=Debug.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Debug.js","sourceRoot":"","sources":["../../src/effect/Debug.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Debug.js","sourceRoot":"","sources":["../../src/effect/Debug.ts"],"names":[],"mappings":"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"}
@@ -66,7 +66,7 @@ describe('debug-diff', () => {
66
66
  `);
67
67
  });
68
68
  test('tagged union', () => {
69
- const schema = Schema.Union(Schema.Struct({ _tag: Schema.Literal('a'), a: Schema.String }), Schema.Struct({ _tag: Schema.Literal('b'), b: Schema.Number }));
69
+ const schema = Schema.Union(Schema.TaggedStruct('a', { a: Schema.String }), Schema.TaggedStruct('b', { b: Schema.Number }));
70
70
  const a = { _tag: 'a', a: 'hello' };
71
71
  const b = { _tag: 'b', b: 1 };
72
72
  const diff = debugDiff(schema)(a, b);