UNPKG

@stacksleuth/session-replay

Version:

StackSleuth session recording and replay agent for debugging user interactions

176 lines 4.08 kB
export interface SessionEvent { id: string; type: 'dom_mutation' | 'user_interaction' | 'network_request' | 'console_log' | 'error' | 'performance'; timestamp: number; data: any; } export interface UserInteractionEvent { type: 'click' | 'scroll' | 'input' | 'focus' | 'blur' | 'keypress' | 'resize'; target: string; value?: string; coordinates?: { x: number; y: number; }; scrollPosition?: { x: number; y: number; }; viewport?: { width: number; height: number; }; } export interface DOMEvent { type: 'added' | 'removed' | 'attributes' | 'characterData'; target: string; attributes?: { [key: string]: string; }; textContent?: string; nodeName?: string; } export interface NetworkEvent { url: string; method: string; status?: number; duration: number; requestSize: number; responseSize: number; headers?: { [key: string]: string; }; error?: string; } export interface PerformanceEvent { metric: 'FCP' | 'LCP' | 'FID' | 'CLS' | 'TTFB' | 'custom'; value: number; rating: 'good' | 'needs-improvement' | 'poor'; delta?: number; } export interface SessionMetadata { sessionId: string; userId?: string; userAgent: string; url: string; referrer: string; viewport: { width: number; height: number; }; startTime: number; endTime?: number; duration?: number; eventCount: number; errorCount: number; } export declare class SessionReplayAgent { private profiler; private isActive; private sessionId; private events; private metadata; private observers; private originalMethods; private eventBuffer; private flushInterval?; private maxEvents; private maxBufferSize; constructor(config?: { endpoint?: string; apiKey?: string; maxEvents?: number; maxBufferSize?: number; autoFlush?: boolean; flushInterval?: number; enableUserInteractions?: boolean; enableDOMTracking?: boolean; enableNetworkTracking?: boolean; enablePerformanceTracking?: boolean; enableConsoleTracking?: boolean; }); /** * Initialize the session replay agent */ init(): Promise<void>; /** * Setup user interaction tracking */ private setupUserInteractionTracking; /** * Setup DOM mutation tracking */ private setupDOMTracking; /** * Setup network request tracking */ private setupNetworkTracking; /** * Setup performance tracking */ private setupPerformanceTracking; /** * Setup console tracking */ private setupConsoleTracking; /** * Setup error tracking */ private setupErrorTracking; /** * Record user interaction */ private recordUserInteraction; /** * Record DOM changes */ private recordDOMChange; /** * Record network request */ private recordNetworkRequest; /** * Record performance metric */ private recordPerformanceMetric; /** * Record a session event */ private recordEvent; /** * Flush buffered events to storage */ flush(): void; /** * Get current session data */ getSessionData(): { metadata: SessionMetadata; events: SessionEvent[]; }; /** * Export session as JSON */ exportSession(): string; /** * Get session statistics */ getSessionStats(): any; /** * Helper methods */ private generateSessionId; private generateEventId; private getElementSelector; private getViewportSize; private isSensitiveInput; private estimateRequestSize; private estimateResponseSize; private serializeArgument; /** * Stop session recording */ stop(): Promise<void>; } export declare const sessionReplayAgent: SessionReplayAgent; //# sourceMappingURL=index.d.ts.map