19 lines
817 B
TypeScript
19 lines
817 B
TypeScript
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();
|
||
|
|
globalThis.__triggershellRunEvents = runEvents;
|
||
|
|
runEvents.setMaxListeners(0);
|
||
|
|
|
||
|
|
export function emitRunMessage(message: ServerMessage) {
|
||
|
|
runEvents.emit("message", message);
|
||
|
|
}
|