mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-01-15 05:33:29 +01:00
22 lines
592 B
TypeScript
22 lines
592 B
TypeScript
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<EventStreamEvent> {
|
|
while (true) {
|
|
yield new Promise<EventStreamEvent>((resolve) => {
|
|
this.emitter.once('__plugin_event__', (event: EventStreamEvent) => {
|
|
resolve(event);
|
|
});
|
|
});
|
|
}
|
|
}
|
|
}
|