1+ import type { SpanEvent } from './types.js' ;
12import Span from './Span.js' ;
23
34class Tracer {
45 protected activeSpans : Map < string , Span > = new Map ( ) ;
5- protected queue : Array < Span > = [ ] ;
6+ protected queue : Array < SpanEvent > = [ ] ;
67 protected resolveWaitChunksP : ( ( ) => void ) | undefined ;
78 protected ended : boolean = false ;
89
9- protected queueSpan ( span : Span ) {
10+ protected queueSpanEvent ( span : SpanEvent ) {
1011 this . queue . push ( span ) ;
1112 if ( this . resolveWaitChunksP != null ) this . resolveWaitChunksP ( ) ;
1213 }
1314
1415 public startSpan ( name : string , parentSpanId ?: string ) : string {
1516 const span = new Span ( name , parentSpanId ) ;
1617 this . activeSpans . set ( span . spanId , span ) ;
17-
1818 if ( parentSpanId && this . activeSpans . has ( parentSpanId ) ) {
1919 this . activeSpans . get ( parentSpanId ) ! . children . push ( span ) ;
2020 }
21-
21+ this . queueSpanEvent ( { type : 'start' , span : span . toJSON ( ) } ) ;
2222 return span . spanId ;
2323 }
2424
@@ -27,7 +27,7 @@ class Tracer {
2727 if ( ! span ) return ;
2828
2929 span . close ( ) ;
30- this . queueSpan ( span ) ;
30+ this . queueSpanEvent ( { type : 'stop' , span : span . toJSON ( ) } ) ;
3131 return span ;
3232 }
3333
@@ -56,7 +56,7 @@ class Tracer {
5656 this . ended = true ;
5757 }
5858
59- public async * streamEvents ( ) : AsyncGenerator < Span , void , void > {
59+ public async * streamEvents ( ) : AsyncGenerator < SpanEvent , void , void > {
6060 while ( true ) {
6161 const value = this . queue . shift ( ) ;
6262 if ( value == null ) {
0 commit comments