UNPKG

@clipwhisperer/common

Version:

ClipWhisperer Common - Shared library providing core utilities, database schemas, authentication, bucket management, and common functionality across all ClipWhisperer microservices

93 lines (92 loc) 2.58 kB
"use strict"; /** * Performance Metrics Infrastructure * Centralized performance tracking system used across all services */ Object.defineProperty(exports, "__esModule", { value: true }); exports.globalPerformanceTracker = exports.PerformanceTracker = void 0; class PerformanceTracker { constructor() { this.metrics = { totalRequests: 0, totalResponseTime: 0, successCount: 0, startTime: Date.now() }; } /** * Track a successful request */ trackSuccess(responseTime) { this.metrics.totalRequests++; this.metrics.successCount++; if (responseTime !== undefined) { this.metrics.totalResponseTime += responseTime; } } /** * Track a failed request */ trackError(responseTime) { this.metrics.totalRequests++; if (responseTime !== undefined) { this.metrics.totalResponseTime += responseTime; } } /** * Track a request with timing */ async trackRequest(operation) { const startTime = Date.now(); try { const result = await operation(); this.trackSuccess(Date.now() - startTime); return result; } catch (error) { this.trackError(Date.now() - startTime); throw error; } } /** * Get current performance metrics */ getMetrics() { const averageResponseTime = this.metrics.totalRequests > 0 ? this.metrics.totalResponseTime / this.metrics.totalRequests : 0; const successRate = this.metrics.totalRequests > 0 ? (this.metrics.successCount / this.metrics.totalRequests) * 100 : 100; return { totalRequests: this.metrics.totalRequests, averageResponseTime, successRate, queueSize: 0, // Override in subclasses that have queue access memoryUsage: process.memoryUsage(), uptime: Date.now() - this.metrics.startTime }; } /** * Reset metrics */ reset() { this.metrics = { totalRequests: 0, totalResponseTime: 0, successCount: 0, startTime: Date.now() }; } /** * Get raw metrics data */ getRawData() { return { ...this.metrics }; } } exports.PerformanceTracker = PerformanceTracker; /** * Global performance tracker instance */ exports.globalPerformanceTracker = new PerformanceTracker();