UNPKG

@ahmedhegazee/nestjs-telescope

Version:

Advanced observability and monitoring solution for NestJS applications with ML-powered analytics, enterprise features, and production-ready scaling

78 lines (77 loc) 2.25 kB
import { RequestContext, ResponseContext } from './request-watcher.interceptor'; export interface SessionInfo { id: string; userId?: string; startTime: Date; lastActivity: Date; requestCount: number; totalDuration: number; averageResponseTime: number; errorCount: number; pages: string[]; userAgent: string; ipAddress: string; isActive: boolean; } export interface UserSession { sessionId: string; userId?: string; requests: SessionRequest[]; startTime: Date; endTime?: Date; duration: number; isActive: boolean; metadata: SessionMetadata; } export interface SessionRequest { id: string; method: string; url: string; statusCode: number; duration: number; timestamp: Date; error?: string; } export interface SessionMetadata { userAgent: string; ipAddress: string; initialReferrer?: string; totalPages: number; uniquePages: number; bounceRate: number; avgTimePerPage: number; } export declare class RequestSessionTracker { private readonly logger; private readonly sessions; private readonly userSessions; private readonly sessionTimeout; private readonly cleanupInterval; constructor(); trackRequest(requestContext: RequestContext, responseContext: ResponseContext, error: Error | null): void; private trackSessionRequest; private trackUserSession; private updateSessionMetadata; private extractPageFromUrl; private generateSessionId; private startCleanupTimer; private cleanupInactiveSessions; getSessionInfo(sessionId: string): SessionInfo | undefined; getUserSession(userId: string, sessionId?: string): UserSession | undefined; getActiveSessions(): SessionInfo[]; getActiveUserSessions(): UserSession[]; getSessionsByUser(userId: string): UserSession[]; getSessionStats(): { totalSessions: number; activeSessions: number; averageSessionDuration: number; averageRequestsPerSession: number; bounceRate: number; topPages: Array<{ page: string; visits: number; }>; }; invalidateSession(sessionId: string): void; clearAllSessions(): void; }