Files
triggershell/src/lib/runner/events.ts
T

20 lines
819 B
TypeScript
Raw Normal View History

2026-08-15 18:37:30 +02:00
import { EventEmitter } from "node:events";
import type { ServerMessage } from "../ws/protocol";
declare global {
var __triggershellRunEvents: EventEmitter | undefined;
}
/** Decouples the run engine from the WS transport: the engine emits, ws/server.ts broadcasts.
* Anchored on `globalThis` because Next compiles Route Handlers through its own module graph,
* separate from the modules `server.ts` requires directly via tsx - a plain module-level
* singleton would silently end up duplicated (one copy per graph) instead of shared. */
export const runEvents: EventEmitter =
globalThis.__triggershellRunEvents ?? new EventEmitter();
2026-08-15 18:37:30 +02:00
globalThis.__triggershellRunEvents = runEvents;
runEvents.setMaxListeners(0);
export function emitRunMessage(message: ServerMessage) {
runEvents.emit("message", message);
}