UNPKG

frontend-logger-advanced

Version:

Comprehensive frontend logging system with dead click detection, rage click detection, framework integrations (React/Solid), and cloud streaming support

112 lines (111 loc) 2.72 kB
export type LogLevel = 'DEBUG' | 'INFO' | 'WARN' | 'ERROR'; export interface LogEntry { id: string; type: 'custom' | 'dead_click' | 'rage_click' | 'error'; level: LogLevel; timestamp: string; message?: string; details: Record<string, any>; metadata: LogMetadata; } export interface LogMetadata { sessionId: string; url: string; userAgent?: string; browserInfo?: BrowserInfo; userId?: string; } export interface BrowserInfo { name: string; version: string; platform: string; } export interface DeadClickDetails { element: string; selector: string; coords: { x: number; y: number; }; timeout: number; } export interface RageClickDetails { clickCount: number; element: string; selector: string; coords: { x: number; y: number; }; duration: number; } export interface LoggerConfig { logging: { level: LogLevel; endpoint?: string; batchInterval: number; batchSize: number; maxQueueSize: number; }; features: { customLogs: boolean; deadClicks: boolean; rageClicks: boolean; localLogFile: boolean; eventHub: boolean; reactSupport: boolean; solidSupport: boolean; }; thresholds: { deadClickTimeout: number; rageClickCount: number; rageClickWindow: number; rageClickDistance: number; maxLogFileSize: number; }; metadata: { includeBrowserInfo: boolean; anonymizeUserId: boolean; }; localLogging: { autoExportOnUnload: boolean; defaultFileName: string; }; eventHub: { connectionString: string; eventHubName: string; useSasToken: boolean; partitionKey: string; }; frameworks: { enableHooks: boolean; devModeOnly: boolean; }; } export interface LogProcessor { process(logs: LogEntry[]): Promise<void>; } export interface ClickEvent { timestamp: number; element: Element; coords: { x: number; y: number; }; selector: string; } export interface LoggerInstance { debug(message: string, data?: Record<string, any>): void; info(message: string, data?: Record<string, any>): void; warn(message: string, data?: Record<string, any>): void; error(message: string, data?: Record<string, any>): void; custom(eventName: string, data?: Record<string, any>): void; exportToFile(filename?: string): void; getQueueSize(): number; clearQueue(): void; destroy(): void; } export interface InitOptions { configPath?: string; config?: Partial<LoggerConfig>; }