UNPKG

@trlogic/tracker-web

Version:
59 lines (58 loc) 2.12 kB
/** * Risk metrics collection & baseline management */ import { SuspiciousFlags } from "../domain/suspicious-flags"; interface EnvironmentBaseline { language: string | null; timezone: string | null; os: string | null; browser: string | null; firstSeen: number; } interface EnvironmentChangeFlags { languageChanged: boolean; timezoneChanged: boolean; osChanged: boolean; browserChanged: boolean; } export interface RemoteAccessAggregates { headlessIndicatorCount: number; noMouseMoveDurationMs: number; clickOnlyPattern: boolean; fastPageTransition: boolean; navigationVelocity: number; formFillAnomaly: boolean; formFillDurationMs: number; inputPasteRatio: number; } declare class RiskMetricsService { private lastMouseMoveTs; private lastClickTs; private mouseMoveCounterWindow; private clickCounterWindow; private pageViewTimestamps; private pasteCharCount; private typedCharCount; private lastPageViewTs; private lastFormInteractionStart; private lastFormFieldCount; private lastFormDurationMs; private formFillAnomaly; private fastPageTransition; /** register global listeners (idempotent) */ initListeners(): void; /** Called on each page view */ registerPageView(): void; getAggregates(): RemoteAccessAggregates; computePasteRatio(): number; resetRollingWindow(): void; private detectFormAnomaly; loadBaseline(tenant: string, deviceId: string): EnvironmentBaseline | null; ensureBaseline(tenant: string, deviceId: string, data: Omit<EnvironmentBaseline, "firstSeen">): EnvironmentBaseline; diffEnvironment(baseline: EnvironmentBaseline, current: Omit<EnvironmentBaseline, "firstSeen">): EnvironmentChangeFlags; calcEnvironmentChangeScore(flags: EnvironmentChangeFlags): number; calcRemoteAccessScore(flags: SuspiciousFlags, envMismatch: boolean, agg: RemoteAccessAggregates): number; private getBaselineKey; } export declare const riskMetricsService: RiskMetricsService; export type { EnvironmentBaseline, EnvironmentChangeFlags };