UNPKG

@454creative/easy-events

Version:

A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling

82 lines 2.62 kB
export interface EventMetrics { totalEvents: number; eventsByType: Record<string, number>; averageProcessingTime: number; errorCount: number; activeHandlers: number; processingTimePercentiles?: { p50: number; p95: number; p99: number; }; performanceAlerts?: { slowOperations: number; memoryUsage?: number; cpuUsage?: number; }; performanceTrends?: { avgProcessingTimeTrend: 'improving' | 'stable' | 'degrading'; errorRateTrend: 'improving' | 'stable' | 'degrading'; }; } export interface EventAudit { eventId: string; eventType: string; timestamp: Date; payload: any; correlationId?: string | undefined; userId?: string | undefined; source?: string | undefined; processingTime?: number | undefined; success: boolean; error?: string | undefined; } export interface ObservabilityConfig { enableMetrics?: boolean; enableAuditing?: boolean; enableTracing?: boolean; enablePerformanceMonitoring?: boolean; auditRetentionDays?: number; metricsRetentionDays?: number; logLevel?: "debug" | "info" | "warn" | "error"; customAuditLogger?: (audit: EventAudit) => void; customMetricsCollector?: (metrics: EventMetrics) => void; performanceMonitoring?: { enablePercentiles?: boolean; enableMemoryMonitoring?: boolean; enableCpuMonitoring?: boolean; slowOperationThreshold?: number; performanceAlertThreshold?: number; enablePerformanceTrends?: boolean; performanceBudget?: { maxProcessingTime: number; maxErrorRate: number; maxMemoryUsage: number; }; }; storage?: { type: "memory" | "file" | "database"; path?: string; connectionString?: string; retentionDays?: number; maxLogs?: number; }; } export interface EventTracing { traceId: string; spanId: string; parentSpanId?: string; correlationId?: string; userId?: string; metadata?: Record<string, any>; } export interface ObservabilityEngine { recordEvent(event: string, payload: any, tracing?: EventTracing): void; recordHandlerExecution(event: string, handler: string, duration: number, success: boolean, error?: string): void; recordError(event: string, error: Error, tracing?: EventTracing): void; getMetrics(): EventMetrics; getAuditLogs(filters?: Partial<EventAudit>): EventAudit[]; clearAuditLogs(): void; clearMetrics(): void; } //# sourceMappingURL=observability.interface.d.ts.map