UNPKG

averox-sdk-secure

Version:

Real-time SDK for key monitoring, secure messaging, and A/V streaming with encryption

67 lines (66 loc) 2.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SecurityMonitor = void 0; const events_1 = require("events"); const logger_1 = require("@config/logger"); class SecurityMonitor extends events_1.EventEmitter { constructor(telemetryLevel) { super(); this.keyEvents = new Map(); this.encryptionStats = new Map(); this.telemetryLevel = telemetryLevel; this.logger = new logger_1.Logger({ minLevel: logger_1.LogLevel.INFO, timestamps: true, showLevel: true, }); } trackKeyEvent(keyId, event) { this.keyEvents.set(keyId, event); this.logger.info(`Key Event: ${keyId} - ${event.type}`, event); this.updateUI('keyEvents', Array.from(this.keyEvents.values())); } trackEncryptionStats(operationId, stats) { this.encryptionStats.set(operationId, stats); this.logger.info(`Encryption Stats: ${operationId}`, stats); this.updateUI('encryptionStats', Array.from(this.encryptionStats.values())); } updateUI(component, data) { // Emit events that UI components can listen to this.emit('monitoringUpdate', { component, data, timestamp: new Date(), }); } getKeyMetrics() { return { totalKeys: this.keyEvents.size, activeKeys: Array.from(this.keyEvents.values()).filter((e) => e.status === 'active').length, compromisedKeys: Array.from(this.keyEvents.values()).filter((e) => e.status === 'compromised') .length, lastUpdated: new Date(), }; } getEncryptionMetrics() { return { totalOperations: this.encryptionStats.size, successRate: this.calculateSuccessRate(), averageLatency: this.calculateAverageLatency(), lastUpdated: new Date(), }; } calculateSuccessRate() { const stats = Array.from(this.encryptionStats.values()); if (stats.length === 0) return 0; return stats.filter((s) => s.success).length / stats.length; } calculateAverageLatency() { const stats = Array.from(this.encryptionStats.values()); if (stats.length === 0) return 0; return stats.reduce((sum, s) => sum + s.latency, 0) / stats.length; } } exports.SecurityMonitor = SecurityMonitor;