Class GraphEventEmitter

Lightweight event emitter for GraphEvent values.

Supports both:

  • Push-based consumption via on() / off() callbacks.
  • Pull-based consumption via the stream() async generator.

The emitter is single-use: once close() is called it is permanently closed and subsequent emit() calls are silently ignored.

Example

const emitter = new GraphEventEmitter();

// Pull-based — collect events in order
async function consume() {
for await (const event of emitter.stream()) {
console.log(event.type);
}
}

emitter.emit({ type: 'run_start', runId: 'r1', graphId: 'g1' });
emitter.close();
await consume(); // logs 'run_start'

Constructors

Methods

Constructors

Methods

  • Registers a callback that is invoked synchronously for every subsequent emit() call.

    Parameters

    • listener: ((event) => void)

      Function to call with each emitted GraphEvent.

        • (event): void
        • Parameters

          Returns void

    Returns void

  • Removes a previously registered listener. If the listener was not registered, this is a no-op.

    Parameters

    • listener: ((event) => void)

      The exact function reference passed to on().

        • (event): void
        • Parameters

          Returns void

    Returns void

  • Dispatches event to all registered listeners and any active stream() generators. If close() has already been called, this method is a no-op.

    Parameters

    Returns void

  • Permanently closes the emitter.

    • Future emit() calls are silently ignored.
    • Active stream() generators are signalled to drain their queues and return.

    Returns void

  • Returns an AsyncGenerator that yields every GraphEvent emitted after the call to stream(), in the exact order they were emitted.

    The generator completes (returns) when close() is called on the emitter and any queued events have been yielded.

    Multiple concurrent stream() calls are supported; each gets an independent copy of the event stream.

    Returns AsyncGenerator<GraphEvent, any, any>

    Example

    for await (const event of emitter.stream()) {
    if (event.type === 'run_end') break;
    }