feat(web): share realtime hub across domain events

This commit is contained in:
jjbrunton committed 2026-08-08 15:46:25 +01:00
1 parent 66a1146562
commit a51e0b6b31
2 files changed
+26 -1

No files matched your search

+7 -1
View File
@@ -1,6 +1,10 @@
import type { Request, RequestHandler, Response } from 'express';
import type { LogEntry } from './types.js';
import { RealtimeEventHub } from './events/index.js';
import {
createDashboardEventAdapters,
createDashboardEventPublisher,
RealtimeEventHub,
} from './events/index.js';
import { createExpressSseHandler } from './events/express-sse-adapter.js';
const MAX_LOGS = 500;
@@ -15,10 +19,12 @@ export class LogBroadcaster {
private clients = new Set<Response>();
private readonly eventHub: RealtimeEventHub;
readonly events: RequestHandler;
readonly dashboardEvents: ReturnType<typeof createDashboardEventAdapters>;
constructor(eventHub?: RealtimeEventHub) {
this.eventHub = eventHub ?? new RealtimeEventHub({ capacity: MAX_LOGS });
this.events = createExpressSseHandler({ hub: this.eventHub });
this.dashboardEvents = createDashboardEventAdapters(createDashboardEventPublisher(this.eventHub));
}
push(level: LogEntry['level'], message: string, data?: unknown): void {