Initial commit

This commit is contained in:
Jarek Krochmalski
2025-12-28 21:16:03 +01:00
commit 62e3c6439e
552 changed files with 104858 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
/**
* 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);
}