@trlogic/tracker-web
Version:
Formica Tracker Web SDK
69 lines (68 loc) • 2.31 kB
TypeScript
import { CachedDataCollector } from "src/core/base/CachedDataCollector";
import { TrackerVariableType } from "src/core/model/TrackerVariableType";
export interface SuspiciousFlags {
unnaturalMouseMoves: boolean;
bigClipboardPaste: boolean;
lowFPSDetected: boolean;
delayedClickDetected: boolean;
}
/**
* Collects security & risk metrics.
* Mirrors Android SecurityCollector + merges tracker-web_current risk-metrics + remote control detection.
*
* Responsibilities:
* 1. Remote control suspicion monitoring (mouse, clipboard, FPS, delayed clicks)
* 2. Risk metrics aggregation (mouse movement, click patterns, form fill, navigation, paste ratio)
* 3. Environment baseline tracking (language, timezone, OS, browser)
* 4. Composite remote access score calculation
*/
export declare class SecurityCollector extends CachedDataCollector {
private suspiciousFlags;
private lastMouseMoveTs;
private mouseMoveCounterWindow;
private clickCounterWindow;
private pageViewTimestamps;
private pasteCharCount;
private typedCharCount;
private lastPageViewTs;
private lastFormInteractionStart;
private lastFormFieldCount;
private lastFormDurationMs;
private formFillAnomaly;
private fastPageTransition;
private redirectSource;
private lastUrl;
private lastMouseX;
private lastMouseY;
private unnaturalMoveCount;
private lowFPSCount;
private lastFrameTs;
private fpsRafId;
private listenersAttached;
private baseline;
private envChangeFlags;
private envChangeScore;
private tenant;
private deviceId;
collect(): Map<TrackerVariableType, unknown>;
/**
* Start monitoring. Called once during SDK initialization.
*/
init(tenant: string, deviceId: string): void;
registerPageView(): void;
getRemoteAccessScore(): number;
resetRollingWindow(): void;
updateEnvironmentDiff(): void;
private getAggregates;
private computePasteRatio;
private calcRemoteAccessScore;
private attachListeners;
private detectFormAnomaly;
private detectRedirect;
private ensureBaseline;
private getCurrentEnvironment;
private diffEnvironment;
private calcEnvironmentChangeScore;
/** Cleanup FPS monitor on termination. */
destroy(): void;
}