polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
137 lines • 3.86 kB
TypeScript
import { EventEmitter } from 'events';
export interface ApiAnalyticsConfig {
enableDetailedTracking: boolean;
maxRequestRecords: number;
analyticsWindow: number;
enablePerformanceMonitoring: boolean;
enableErrorTracking: boolean;
sampleRate: number;
}
export interface ApiRequestRecord {
id: string;
method: string;
url: string;
timestamp: number;
responseTime: number;
statusCode: number;
requestSize: number;
responseSize: number;
success: boolean;
error: string;
priority: 'low' | 'medium' | 'high';
cached: boolean;
batched: boolean;
userAgent: string;
}
export interface EndpointStats {
endpoint: string;
totalRequests: number;
successfulRequests: number;
failedRequests: number;
averageResponseTime: number;
minResponseTime: number;
maxResponseTime: number;
successRate: number;
totalDataTransferred: number;
lastRequestTime: number;
requestsPerHour: number;
}
export interface PerformanceMetrics {
averageResponseTime: number;
p95ResponseTime: number;
p99ResponseTime: number;
overallSuccessRate: number;
requestsPerSecond: number;
cacheHitRate: number;
batchEfficiency: number;
errorRate: number;
averageRequestSize: number;
averageResponseSize: number;
}
export interface ErrorAnalysis {
commonErrors: Array<{
error: string;
count: number;
percentage: number;
endpoints: string[];
}>;
errorsByEndpoint: Array<{
endpoint: string;
errorCount: number;
errorRate: number;
}>;
errorTrends: Array<{
timestamp: number;
errorCount: number;
totalRequests: number;
}>;
}
export interface UsagePatterns {
peakHours: Array<{
hour: number;
requestCount: number;
}>;
activeEndpoints: Array<{
endpoint: string;
requestCount: number;
percentage: number;
}>;
methodDistribution: Record<string, number>;
priorityDistribution: Record<string, number>;
cachingStats: {
cacheHitRate: number;
cacheMissRate: number;
cacheableRequests: number;
};
}
export declare class ApiAnalytics extends EventEmitter {
private config;
private requestRecords;
private endpointStats;
private errorCounts;
private isRunning;
private analyticsTimer?;
constructor(config?: Partial<ApiAnalyticsConfig>);
start(): void;
stop(): void;
recordRequest(id: string, method: string, url: string, responseTime: number, options?: {
statusCode?: number;
requestSize?: number;
responseSize?: number;
success?: boolean;
error?: string;
priority?: 'low' | 'medium' | 'high';
cached?: boolean;
batched?: boolean;
userAgent?: string;
}): void;
getOverallStats(): {
totalRequests: number;
successfulRequests: number;
failedRequests: number;
averageResponseTime: number;
successRate: number;
totalDataTransferred: number;
timeWindow: number;
};
getEndpointStats(): EndpointStats[];
getPerformanceMetrics(): PerformanceMetrics;
getErrorAnalysis(): ErrorAnalysis;
getUsagePatterns(): UsagePatterns;
generateReport(): {
summary: ReturnType<ApiAnalytics['getOverallStats']>;
performance: PerformanceMetrics;
errors: ErrorAnalysis;
usage: UsagePatterns;
endpoints: EndpointStats[];
generatedAt: number;
};
clearData(): void;
updateConfig(newConfig: Partial<ApiAnalyticsConfig>): void;
private updateEndpointStats;
private normalizeEndpoint;
private trackError;
private setupPeriodicAnalytics;
private performPeriodicAnalytics;
}
//# sourceMappingURL=api-analytics.d.ts.map