UNPKG

@telnyx/react-native-voice-sdk

Version:

Telnyx React Native Voice SDK - A complete WebRTC voice calling solution

51 lines (41 loc) 1.18 kB
import type { CallReportLog } from './call-report-models'; const LOG_LEVELS: Record<string, number> = { debug: 0, info: 1, warn: 2, error: 3, }; export class LogCollector { private buffer: CallReportLog[] = []; private maxEntries: number; private minLevel: number; constructor(maxEntries: number = 1000, minLogLevel: string = 'debug') { this.maxEntries = maxEntries; this.minLevel = LOG_LEVELS[minLogLevel] ?? 0; } add(level: 'debug' | 'info' | 'warn' | 'error', message: string, context?: Record<string, unknown>): void { if ((LOG_LEVELS[level] ?? 0) < this.minLevel) return; if (this.buffer.length >= this.maxEntries) { this.buffer.shift(); } this.buffer.push({ timestamp: new Date().toISOString(), level, message, context, }); } /** Non-destructive read of all logs */ getLogs(): CallReportLog[] { return [...this.buffer]; } /** Destructive read — removes and returns all logs (for intermediate flushes) */ drain(): CallReportLog[] { const logs = this.buffer; this.buffer = []; return logs; } get count(): number { return this.buffer.length; } }