UNPKG

isometrik-web-tracker

Version:

Production-grade user tracking library with multiple tracking methods

177 lines 4.93 kB
/** * Core types for the user tracking system */ export interface TrackerOptions { idleThreshold?: number; trackingInterval?: number; enableConsoleLog?: boolean; secureModeEnabled?: boolean; trackingKey?: string; onActivityChange?: (isActive: boolean, activityType?: ActivityType) => void; onTimeUpdate?: (data: TimeTrackingData) => void; onElementVisible?: (elementKey: string, data: ElementTrackingData) => void; onElementHidden?: (elementKey: string, data: ElementTrackingData) => void; onTrackingEvent?: (event: TrackingEvent) => void; } export type ActivityType = 'mouse' | 'keyboard' | 'scroll' | 'touch' | 'focus' | 'visibility' | 'idle_timeout' | 'element_interaction'; export interface TimeTrackingData { sessionId: string; trackingKey: string; totalTimeSpent: number; activeTimeSpent: number; idleTimeSpent: number; pageVisits: number; lastActivity: Date; sessionStart: Date; url: string; title: string; referrer: string; userAgent: string; elementTrackingData: Record<string, ElementTrackingData>; activityHistory: TrackingEvent[]; } export interface ElementTrackingData { elementKey: string; totalVisibleTime: number; visibilityCount: number; firstSeen: Date; lastSeen: Date; isCurrentlyVisible: boolean; viewportPercentage: number; interactions: ElementInteraction[]; } export interface ElementInteraction { type: 'click' | 'hover' | 'focus' | 'scroll'; timestamp: Date; position?: { x: number; y: number; }; target?: string; } export interface TrackingEvent { type: string; timestamp: number; activityType?: ActivityType; data?: any; } export interface MouseActivityData { type: 'click' | 'move' | 'hover' | 'drag'; position: { x: number; y: number; }; target?: string; button?: number; clicks?: number; pressure?: number; movement?: { x: number; y: number; }; } export interface ScrollActivityData { type: 'scroll'; position: { x: number; y: number; }; depth: number; velocity: number; direction: 'up' | 'down' | 'left' | 'right'; target?: string; } export interface KeyboardActivityData { type: 'keydown' | 'keyup' | 'keypress'; key: string; code: string; keyCode: number; ctrlKey: boolean; altKey: boolean; shiftKey: boolean; metaKey: boolean; target?: string; } export interface TouchActivityData { type: 'touchstart' | 'touchmove' | 'touchend'; touches: TouchPoint[]; target?: string; gesture?: 'pinch' | 'swipe' | 'tap' | 'longpress'; } export interface TouchPoint { identifier: number; clientX: number; clientY: number; pageX: number; pageY: number; pressure?: number; } export interface ElementVisibilityOptions { trackVisibility?: boolean; trackInteractions?: boolean; threshold?: number; rootMargin?: string; } export interface ActivityDetectorOptions { enableConsoleLog?: boolean; onActivity: (activityType: ActivityType) => void; } export interface ElementVisibilityTrackerOptions { enableConsoleLog?: boolean; onVisible: (elementKey: string, element: Element, data: ElementTrackingData) => void; onHidden: (elementKey: string, element: Element, data: ElementTrackingData) => void; } export interface MouseTrackerOptions { enableConsoleLog?: boolean; trackClicks?: boolean; trackMovement?: boolean; trackHovers?: boolean; onMouseActivity: (data: MouseActivityData) => void; } export interface ScrollTrackerOptions { enableConsoleLog?: boolean; trackDepth?: boolean; trackVelocity?: boolean; onScrollActivity: (data: ScrollActivityData) => void; } export interface KeyboardTrackerOptions { enableConsoleLog?: boolean; trackKeystrokes?: boolean; trackCombinations?: boolean; onKeyboardActivity: (data: KeyboardActivityData) => void; } export interface TouchTrackerOptions { enableConsoleLog?: boolean; trackGestures?: boolean; trackPressure?: boolean; onTouchActivity: (data: TouchActivityData) => void; } export interface FocusTrackerOptions { enableConsoleLog?: boolean; onFocusChange: (hasFocus: boolean) => void; } export interface NetworkTrackerOptions { enableConsoleLog?: boolean; onNetworkChange: (isOnline: boolean) => void; } export interface SessionData { sessionId: string; trackingKey: string; startTime: Date; duration: number; isActive: boolean; } export interface ActivityStats { mouseEvents: number; keyboardEvents: number; scrollEvents: number; touchEvents: number; totalEvents: number; } export interface FormattedData { totalTime: string; activeTime: string; idleTime: string; engagementRate: string; } //# sourceMappingURL=types.d.ts.map