@randyd45/web-behavior-tracker
Version:
A framework-agnostic package for tracking user behavior on web forms
99 lines (98 loc) • 3.06 kB
TypeScript
import { BehaviorEvent, BehaviorMetrics, BehaviorInsights, TrackingOptions, CustomEventStats } from './types.js';
export declare class BehaviorTracker {
private events;
private startTime;
private options;
private formFields;
private isTracking;
private sessionId;
private static readonly STORAGE_KEY;
private debounceTimers;
private THROTTLE_DELAY;
private inputHandler;
private formHandler;
private mouseHandler;
private clipboardHandler;
private customHandler;
constructor(options?: TrackingOptions);
private getOrCreateSessionId;
private saveSessionData;
private loadSessionData;
startTracking(reset?: boolean): void;
stopTracking(): void;
private setupPageUnloadHandler;
private removePageUnloadHandler;
private handlePageUnload;
getMetrics(): BehaviorMetrics;
getInsights(): BehaviorInsights;
getEvents(): BehaviorEvent[];
/**
* Helper method to handle event creation and storage
*/
private onEventCreated;
/**
* Gets browser metadata using the dedicated BrowserMetadataCollector
*/
getBrowserMetadata(): import("./types.js").BrowserMetadata;
/**
* Gets additional metadata using the dedicated BrowserMetadataCollector
*/
getAdditionalMetadata(): Record<string, any>;
/**
* Gets high-entropy metadata using the dedicated BrowserMetadataCollector
*/
getHighEntropyMetadata(): Promise<Record<string, any>>;
/**
* Gets browser fingerprint using the dedicated BrowserMetadataCollector
*/
getBrowserFingerprint(): string;
/**
* Gets browser capabilities using the dedicated BrowserMetadataCollector
*/
getBrowserCapabilities(): Record<string, boolean>;
/**
* Creates and logs a custom event
*/
trackCustomEvent(eventName: string, customData?: Record<string, any>, target?: HTMLElement): BehaviorEvent;
/**
* Gets all custom events
*/
getCustomEvents(): BehaviorEvent[];
/**
* Gets custom events by name
*/
getCustomEventsByName(eventName: string): BehaviorEvent[];
/**
* Gets custom events count
*/
getCustomEventsCount(): number;
/**
* Gets custom events count by name
*/
getCustomEventsCountByName(eventName: string): number;
/**
* Gets custom events statistics
*/
getCustomEventStats(): CustomEventStats;
/**
* Clears all custom events
*/
clearCustomEvents(): void;
/**
* Checks if a custom event has been triggered
*/
hasCustomEvent(eventName: string): boolean;
/**
* Gets the last occurrence of a custom event
*/
getLastCustomEvent(eventName?: string): BehaviorEvent | null;
private setupEventListeners;
private removeEventListeners;
private getFieldInteractionOrder;
private detectSuspiciousPatterns;
private calculateRiskScore;
private detectRapidCopyPasteSequence;
private calculateCompletionRate;
getSessionId(): string;
clearSession(): void;
}