@ahmedhegazee/nestjs-telescope
Version:
Advanced observability and monitoring solution for NestJS applications with ML-powered analytics, enterprise features, and production-ready scaling
58 lines (57 loc) • 2.29 kB
TypeScript
import { OnModuleInit, OnModuleDestroy } from '@nestjs/common';
import { DevToolsBridgeService } from './devtools-bridge.service';
import { TelescopeService } from '../../core/services/telescope.service';
import { EnhancedEntryManagerService } from '../../core/services/enhanced-entry-manager.service';
import { MetricsService } from '../../core/services/metrics.service';
import { TelescopeEntry } from '../../core/interfaces/telescope-entry.interface';
import { TelescopeConfig } from '../../core/interfaces/telescope-config.interface';
export interface ProcessingError {
message: string;
stack?: string;
entry?: TelescopeEntry;
timestamp: Date;
retryCount: number;
}
export interface StreamConfiguration {
bufferTimeMs: number;
maxBufferSize: number;
maxConcurrentBatches: number;
retryDelayMs: number;
maxRetries: number;
errorThrottleMs: number;
}
export declare class StreamProcessingBridgeService extends DevToolsBridgeService implements OnModuleInit, OnModuleDestroy {
private readonly entryManager;
private readonly metricsService;
private readonly entryStream;
private readonly errorStream;
private subscriptions;
private isProcessing;
private readonly streamConfig;
constructor(telescopeService: TelescopeService, entryManager: EnhancedEntryManagerService, metricsService: MetricsService, config: TelescopeConfig);
onModuleInit(): Promise<void>;
onModuleDestroy(): Promise<void>;
private updateStreamConfig;
private setupStreams;
private processBatchSafely;
private fallbackToIndividualProcessing;
private handleBatchResults;
processDevToolsEntry(entry: any, type: string): Promise<void>;
protected transformToTelescopeFormat(entry: any, type: string): TelescopeEntry;
getStreamMetrics(): {
entriesInQueue: number;
errorCount: number;
averageProcessingTime: number;
throughput: number;
isProcessing: boolean;
subscriptions: number;
};
getStreamConfiguration(): StreamConfiguration;
updateStreamConfiguration(config: Partial<StreamConfiguration>): void;
flushBuffer(): Promise<void>;
getHealthStatus(): {
isHealthy: boolean;
issues: string[];
lastProcessedAt?: Date;
};
}