import { InternalEvent } from '@yaakapp/api'; import EventEmitter from 'node:events'; import { EventStreamEvent } from './gen/plugins/runtime'; export class EventChannel { emitter: EventEmitter = new EventEmitter(); emit(e: InternalEvent) { this.emitter.emit('__plugin_event__', { event: JSON.stringify(e) }); } async *listen(): AsyncGenerator { while (true) { yield new Promise((resolve) => { this.emitter.once('__plugin_event__', (event: EventStreamEvent) => { resolve(event); }); }); } } }