Files
dockhand/lib/server/audit-events.ts
Jarek Krochmalski 62e3c6439e Initial commit
2025-12-28 21:16:03 +01:00

44 lines
1.0 KiB
TypeScript

/**
* Audit Events Broadcasting
*
* Server-side event emitter for broadcasting audit log entries to connected SSE clients.
*/
import { EventEmitter } from 'events';
import type { AuditLogCreateData } from './db';
export interface AuditEventData extends AuditLogCreateData {
id: number;
timestamp: string;
}
// Create a singleton event emitter for audit events
class AuditEventEmitter extends EventEmitter {
constructor() {
super();
// Allow many listeners (one per connected SSE client)
this.setMaxListeners(1000);
}
emit(event: 'audit', data: AuditEventData): boolean {
return super.emit(event, data);
}
on(event: 'audit', listener: (data: AuditEventData) => void): this {
return super.on(event, listener);
}
off(event: 'audit', listener: (data: AuditEventData) => void): this {
return super.off(event, listener);
}
}
export const auditEvents = new AuditEventEmitter();
/**
* Broadcast a new audit event to all connected clients
*/
export function broadcastAuditEvent(data: AuditEventData): void {
auditEvents.emit('audit', data);
}