@zaplier/sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +144 -0
- package/dist/index.cjs +11092 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +1204 -0
- package/dist/index.esm.js +11059 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +3517 -0
- package/dist/index.js.map +1 -0
- package/dist/sdk.js +11098 -0
- package/dist/sdk.js.map +1 -0
- package/dist/sdk.min.js +7 -0
- package/dist/src/index.d.ts +15 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/modules/anti-adblock.d.ts +108 -0
- package/dist/src/modules/anti-adblock.d.ts.map +1 -0
- package/dist/src/modules/bot-detection.d.ts +15 -0
- package/dist/src/modules/bot-detection.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/accessibility.d.ts +155 -0
- package/dist/src/modules/fingerprint/accessibility.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/audio.d.ts +16 -0
- package/dist/src/modules/fingerprint/audio.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/browser-apis.d.ts +108 -0
- package/dist/src/modules/fingerprint/browser-apis.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/browser.d.ts +14 -0
- package/dist/src/modules/fingerprint/browser.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/canvas.d.ts +14 -0
- package/dist/src/modules/fingerprint/canvas.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/confidence.d.ts +89 -0
- package/dist/src/modules/fingerprint/confidence.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/datetime-locale.d.ts +76 -0
- package/dist/src/modules/fingerprint/datetime-locale.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/device-signals.d.ts +29 -0
- package/dist/src/modules/fingerprint/device-signals.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/dom-blockers.d.ts +56 -0
- package/dist/src/modules/fingerprint/dom-blockers.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/font-preferences.d.ts +55 -0
- package/dist/src/modules/fingerprint/font-preferences.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/fonts-enhanced.d.ts +43 -0
- package/dist/src/modules/fingerprint/fonts-enhanced.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/fonts.d.ts +14 -0
- package/dist/src/modules/fingerprint/fonts.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/hardware.d.ts +40 -0
- package/dist/src/modules/fingerprint/hardware.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/hashing.d.ts +28 -0
- package/dist/src/modules/fingerprint/hashing.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/incognito.d.ts +6 -0
- package/dist/src/modules/fingerprint/incognito.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/math-enhanced.d.ts +70 -0
- package/dist/src/modules/fingerprint/math-enhanced.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/math.d.ts +32 -0
- package/dist/src/modules/fingerprint/math.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/plugins-enhanced.d.ts +97 -0
- package/dist/src/modules/fingerprint/plugins-enhanced.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/screen.d.ts +15 -0
- package/dist/src/modules/fingerprint/screen.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/storage.d.ts +45 -0
- package/dist/src/modules/fingerprint/storage.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/system.d.ts +40 -0
- package/dist/src/modules/fingerprint/system.d.ts.map +1 -0
- package/dist/src/modules/fingerprint/webgl.d.ts +15 -0
- package/dist/src/modules/fingerprint/webgl.d.ts.map +1 -0
- package/dist/src/modules/fingerprint.d.ts +35 -0
- package/dist/src/modules/fingerprint.d.ts.map +1 -0
- package/dist/src/modules/global-interface.d.ts +141 -0
- package/dist/src/modules/global-interface.d.ts.map +1 -0
- package/dist/src/modules/heatmap.d.ts +140 -0
- package/dist/src/modules/heatmap.d.ts.map +1 -0
- package/dist/src/modules/incognito-detection.d.ts +23 -0
- package/dist/src/modules/incognito-detection.d.ts.map +1 -0
- package/dist/src/modules/session-replay.d.ts +132 -0
- package/dist/src/modules/session-replay.d.ts.map +1 -0
- package/dist/src/modules/user-agent.d.ts +35 -0
- package/dist/src/modules/user-agent.d.ts.map +1 -0
- package/dist/src/sdk.d.ts +227 -0
- package/dist/src/sdk.d.ts.map +1 -0
- package/dist/src/types/config.d.ts +44 -0
- package/dist/src/types/config.d.ts.map +1 -0
- package/dist/src/types/detection.d.ts +114 -0
- package/dist/src/types/detection.d.ts.map +1 -0
- package/dist/src/types/events.d.ts +174 -0
- package/dist/src/types/events.d.ts.map +1 -0
- package/dist/src/types/fingerprint.d.ts +157 -0
- package/dist/src/types/fingerprint.d.ts.map +1 -0
- package/dist/src/types/index.d.ts +83 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/methods.d.ts +83 -0
- package/dist/src/types/methods.d.ts.map +1 -0
- package/dist/src/types/visitor.d.ts +90 -0
- package/dist/src/types/visitor.d.ts.map +1 -0
- package/dist/src/utils/browser.d.ts +79 -0
- package/dist/src/utils/browser.d.ts.map +1 -0
- package/dist/src/utils/lazy-loader.d.ts +60 -0
- package/dist/src/utils/lazy-loader.d.ts.map +1 -0
- package/dist/src/utils/webgl-cache.d.ts +43 -0
- package/dist/src/utils/webgl-cache.d.ts.map +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global Interface for Zaplier SDK
|
|
3
|
+
* Provides unified API for both Script tag and NPM usage
|
|
4
|
+
*/
|
|
5
|
+
import { ZaplierSDK } from "../sdk";
|
|
6
|
+
import type { SDKConfig } from "../types";
|
|
7
|
+
/**
|
|
8
|
+
* Unified Zaplier interface
|
|
9
|
+
*/
|
|
10
|
+
export declare const Zaplier: {
|
|
11
|
+
/**
|
|
12
|
+
* Initialize SDK
|
|
13
|
+
*/
|
|
14
|
+
init: (config: SDKConfig) => ZaplierSDK;
|
|
15
|
+
/**
|
|
16
|
+
* Get current instance
|
|
17
|
+
*/
|
|
18
|
+
getInstance: () => ZaplierSDK | null;
|
|
19
|
+
/**
|
|
20
|
+
* Track custom event
|
|
21
|
+
*/
|
|
22
|
+
track: (eventType: string, eventData?: Record<string, any>) => void;
|
|
23
|
+
/**
|
|
24
|
+
* Track page view
|
|
25
|
+
*/
|
|
26
|
+
trackPageView: (data?: any) => void;
|
|
27
|
+
/**
|
|
28
|
+
* Track custom event (alias for track)
|
|
29
|
+
*/
|
|
30
|
+
trackEvent: (eventName: string, metadata?: Record<string, any>) => boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Track conversion
|
|
33
|
+
*/
|
|
34
|
+
trackConversion: (conversionType: string, value?: number, currency?: string, metadata?: Record<string, any>) => void;
|
|
35
|
+
/**
|
|
36
|
+
* Track purchase
|
|
37
|
+
*/
|
|
38
|
+
trackPurchase: (data: {
|
|
39
|
+
value: number;
|
|
40
|
+
currency?: string;
|
|
41
|
+
items?: Array<{
|
|
42
|
+
id: string;
|
|
43
|
+
name: string;
|
|
44
|
+
category?: string;
|
|
45
|
+
quantity?: number;
|
|
46
|
+
price?: number;
|
|
47
|
+
}>;
|
|
48
|
+
orderId?: string;
|
|
49
|
+
coupon?: string;
|
|
50
|
+
}) => void;
|
|
51
|
+
/**
|
|
52
|
+
* Track add to cart
|
|
53
|
+
*/
|
|
54
|
+
trackAddToCart: (data?: {
|
|
55
|
+
productId?: string;
|
|
56
|
+
productName?: string;
|
|
57
|
+
price?: number;
|
|
58
|
+
quantity?: number;
|
|
59
|
+
customData?: Record<string, any>;
|
|
60
|
+
}) => void;
|
|
61
|
+
/**
|
|
62
|
+
* Identify user
|
|
63
|
+
*/
|
|
64
|
+
identify: (userData: {
|
|
65
|
+
email?: string;
|
|
66
|
+
name?: string;
|
|
67
|
+
id?: string;
|
|
68
|
+
properties?: Record<string, any>;
|
|
69
|
+
}) => void;
|
|
70
|
+
/**
|
|
71
|
+
* Get visitor ID
|
|
72
|
+
*/
|
|
73
|
+
getVisitorId: () => string | null;
|
|
74
|
+
/**
|
|
75
|
+
* Get visitor info
|
|
76
|
+
*/
|
|
77
|
+
getVisitorInfo: () => Promise<any>;
|
|
78
|
+
/**
|
|
79
|
+
* Get user data
|
|
80
|
+
*/
|
|
81
|
+
getUserData: () => any;
|
|
82
|
+
/**
|
|
83
|
+
* Enable enhanced tracking
|
|
84
|
+
*/
|
|
85
|
+
enableEnhancedTracking: () => boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Disable enhanced tracking
|
|
88
|
+
*/
|
|
89
|
+
disableEnhancedTracking: () => void;
|
|
90
|
+
/**
|
|
91
|
+
* Check if enhanced mode is active
|
|
92
|
+
*/
|
|
93
|
+
isEnhancedMode: () => boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Heatmap controls
|
|
96
|
+
*/
|
|
97
|
+
heatmap: {
|
|
98
|
+
enable: () => void;
|
|
99
|
+
disable: () => void;
|
|
100
|
+
enableMouseTracking: () => void;
|
|
101
|
+
disableMouseTracking: () => void;
|
|
102
|
+
getStats: () => {
|
|
103
|
+
clickCount: number;
|
|
104
|
+
maxScrollDepth: number;
|
|
105
|
+
isRecording: boolean;
|
|
106
|
+
mouseMovements: number;
|
|
107
|
+
rageClicks: number;
|
|
108
|
+
} | null;
|
|
109
|
+
isRecording: () => boolean;
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Session replay controls
|
|
113
|
+
*/
|
|
114
|
+
replay: {
|
|
115
|
+
enable: () => void;
|
|
116
|
+
disable: () => void;
|
|
117
|
+
start: () => boolean;
|
|
118
|
+
stop: () => void;
|
|
119
|
+
isRecording: () => boolean;
|
|
120
|
+
getEventCount: () => number;
|
|
121
|
+
addFunnelStep: (stepData: Record<string, any>) => void;
|
|
122
|
+
markConversion: (data: Record<string, any>) => void;
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Debug and utility functions
|
|
126
|
+
*/
|
|
127
|
+
debug: {
|
|
128
|
+
getStats: () => any;
|
|
129
|
+
getSuccessRates: () => any;
|
|
130
|
+
testTransports: () => any;
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* Version info
|
|
134
|
+
*/
|
|
135
|
+
version: string;
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* Auto-initialization from script tag data attributes
|
|
139
|
+
*/
|
|
140
|
+
export declare function autoInitializeFromScript(): void;
|
|
141
|
+
//# sourceMappingURL=global-interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-interface.d.ts","sourceRoot":"","sources":["../../../src/modules/global-interface.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAK1C;;GAEG;AACH,eAAO,MAAM,OAAO;IAClB;;OAEG;mBACY,SAAS,KAAG,UAAU;IAUrC;;OAEG;uBACc,UAAU,GAAG,IAAI;IAIlC;;OAEG;uBACgB,MAAM,cAAc,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,IAAI;IAQjE;;OAEG;2BACoB,GAAG,KAAG,IAAI;IAQjC;;OAEG;4BACqB,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,OAAO;IAQxE;;OAEG;sCAEe,MAAM,UACd,MAAM,aACH,MAAM,aACN,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC7B,IAAI;IAQP;;OAEG;0BACmB;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,KAAK,CAAC;YACZ,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,KAAK,CAAC,EAAE,MAAM,CAAC;SAChB,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,KAAG,IAAI;IAQR;;OAEG;4BACqB;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAClC,KAAG,IAAI;IAQR;;OAEG;yBACkB;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAClC,KAAG,IAAI;IAQR;;OAEG;wBACe,MAAM,GAAG,IAAI;IAO/B;;OAEG;0BACiB,OAAO,CAAC,GAAG,CAAC;IAOhC;;OAEG;uBACc,GAAG;IAOpB;;OAEG;kCACyB,OAAO;IAQnC;;OAEG;mCAC0B,IAAI;IAQjC;;OAEG;0BACiB,OAAO;IAO3B;;OAEG;;sBAEW,IAAI;uBAOH,IAAI;mCAOQ,IAAI;oCAOH,IAAI;;;;;;;;2BAab,OAAO;;IAQ1B;;OAEG;;sBAEW,IAAI;uBAOH,IAAI;qBAON,OAAO;oBAOR,IAAI;2BAOG,OAAO;6BAML,MAAM;kCAMC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,IAAI;+BAO7B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,IAAI;;IASnD;;OAEG;;;;;;IAsBH;;OAEG;;CAEJ,CAAC;AAEF;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CA4C/C"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heatmap Engine
|
|
3
|
+
* Captures click coordinates, scroll depth, mouse movements and rage clicks
|
|
4
|
+
* for visual analytics and user behavior insights
|
|
5
|
+
*/
|
|
6
|
+
export interface HeatmapClick {
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
absoluteX: number;
|
|
10
|
+
absoluteY: number;
|
|
11
|
+
element: string;
|
|
12
|
+
timestamp: number;
|
|
13
|
+
button: number;
|
|
14
|
+
rageClick?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface HeatmapScroll {
|
|
17
|
+
depth: number;
|
|
18
|
+
maxDepth: number;
|
|
19
|
+
timestamp: number;
|
|
20
|
+
viewport: {
|
|
21
|
+
width: number;
|
|
22
|
+
height: number;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export interface HeatmapMouseMove {
|
|
26
|
+
path: Array<{
|
|
27
|
+
x: number;
|
|
28
|
+
y: number;
|
|
29
|
+
timestamp: number;
|
|
30
|
+
}>;
|
|
31
|
+
timestamp: number;
|
|
32
|
+
}
|
|
33
|
+
export interface HeatmapConfig {
|
|
34
|
+
enabled: boolean;
|
|
35
|
+
trackClicks: boolean;
|
|
36
|
+
trackScrollDepth: boolean;
|
|
37
|
+
trackMouseMoves: boolean;
|
|
38
|
+
trackRageClicks: boolean;
|
|
39
|
+
mouseMoveThrottle: number;
|
|
40
|
+
batchInterval: number;
|
|
41
|
+
maxClickBuffer: number;
|
|
42
|
+
rageClickThreshold: number;
|
|
43
|
+
rageClickTimeWindow: number;
|
|
44
|
+
}
|
|
45
|
+
export declare class HeatmapEngine {
|
|
46
|
+
private config;
|
|
47
|
+
private clicks;
|
|
48
|
+
private scrollData;
|
|
49
|
+
private mouseMoves;
|
|
50
|
+
private lastMouseMove;
|
|
51
|
+
private maxScrollDepth;
|
|
52
|
+
private batchTimer?;
|
|
53
|
+
private isActive;
|
|
54
|
+
private sessionId;
|
|
55
|
+
private recentClicks;
|
|
56
|
+
constructor(sessionId: string, config?: Partial<HeatmapConfig>);
|
|
57
|
+
/**
|
|
58
|
+
* Start heatmap tracking
|
|
59
|
+
*/
|
|
60
|
+
start(): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Stop heatmap tracking
|
|
63
|
+
*/
|
|
64
|
+
stop(): void;
|
|
65
|
+
/**
|
|
66
|
+
* Setup event listeners
|
|
67
|
+
*/
|
|
68
|
+
private setupEventListeners;
|
|
69
|
+
/**
|
|
70
|
+
* Remove event listeners
|
|
71
|
+
*/
|
|
72
|
+
private removeEventListeners;
|
|
73
|
+
/**
|
|
74
|
+
* Track initial viewport for context
|
|
75
|
+
*/
|
|
76
|
+
private trackInitialViewport;
|
|
77
|
+
/**
|
|
78
|
+
* Handle click events
|
|
79
|
+
*/
|
|
80
|
+
private handleClick;
|
|
81
|
+
/**
|
|
82
|
+
* Handle scroll events
|
|
83
|
+
*/
|
|
84
|
+
private handleScroll;
|
|
85
|
+
/**
|
|
86
|
+
* Handle mouse move events (throttled)
|
|
87
|
+
*/
|
|
88
|
+
private handleMouseMove;
|
|
89
|
+
/**
|
|
90
|
+
* Handle viewport resize
|
|
91
|
+
*/
|
|
92
|
+
private handleResize;
|
|
93
|
+
/**
|
|
94
|
+
* Calculate current scroll depth as percentage
|
|
95
|
+
*/
|
|
96
|
+
private calculateScrollDepth;
|
|
97
|
+
/**
|
|
98
|
+
* Detect rage clicks (multiple clicks in same area within time window)
|
|
99
|
+
*/
|
|
100
|
+
private detectRageClick;
|
|
101
|
+
/**
|
|
102
|
+
* Get element selector for targeting
|
|
103
|
+
*/
|
|
104
|
+
private getElementSelector;
|
|
105
|
+
/**
|
|
106
|
+
* Start batch timer
|
|
107
|
+
*/
|
|
108
|
+
private startBatchTimer;
|
|
109
|
+
/**
|
|
110
|
+
* Send batch of heatmap data
|
|
111
|
+
*/
|
|
112
|
+
private sendBatch;
|
|
113
|
+
/**
|
|
114
|
+
* Send data to backend (will be enhanced with anti-adblock)
|
|
115
|
+
*/
|
|
116
|
+
private sendToBackend;
|
|
117
|
+
/**
|
|
118
|
+
* Get current statistics
|
|
119
|
+
*/
|
|
120
|
+
getStats(): {
|
|
121
|
+
clickCount: number;
|
|
122
|
+
maxScrollDepth: number;
|
|
123
|
+
isRecording: boolean;
|
|
124
|
+
mouseMovements: number;
|
|
125
|
+
rageClicks: number;
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* Enable mouse movement tracking
|
|
129
|
+
*/
|
|
130
|
+
enableMouseTracking(): void;
|
|
131
|
+
/**
|
|
132
|
+
* Disable mouse movement tracking
|
|
133
|
+
*/
|
|
134
|
+
disableMouseTracking(): void;
|
|
135
|
+
/**
|
|
136
|
+
* Check if heatmap is recording
|
|
137
|
+
*/
|
|
138
|
+
isRecording(): boolean;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=heatmap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heatmap.d.ts","sourceRoot":"","sources":["../../../src/modules/heatmap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Incognito Mode Detection (Analytics Only)
|
|
3
|
+
*
|
|
4
|
+
* Detects private/incognito browsing mode for analytics purposes only.
|
|
5
|
+
* Does NOT use localStorage/sessionStorage for tracking or data persistence.
|
|
6
|
+
* Used only to enrich analytics data with browser context information.
|
|
7
|
+
*/
|
|
8
|
+
import type { IncognitoDetectionResult } from "../types/detection";
|
|
9
|
+
/**
|
|
10
|
+
* Main incognito detection function (IMPROVED - 2024)
|
|
11
|
+
*
|
|
12
|
+
* Enhanced with:
|
|
13
|
+
* - Weighted scoring system to reduce false positives
|
|
14
|
+
* - Browser-specific detection weights
|
|
15
|
+
* - Multi-signal validation requirements
|
|
16
|
+
* - Improved confidence thresholds
|
|
17
|
+
*/
|
|
18
|
+
export declare function detectIncognitoMode(): Promise<IncognitoDetectionResult>;
|
|
19
|
+
/**
|
|
20
|
+
* Quick incognito detection (less comprehensive but faster)
|
|
21
|
+
*/
|
|
22
|
+
export declare function quickIncognitoDetection(): Promise<boolean>;
|
|
23
|
+
//# sourceMappingURL=incognito-detection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incognito-detection.d.ts","sourceRoot":"","sources":["../../../src/modules/incognito-detection.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAGV,wBAAwB,EACzB,MAAM,oBAAoB,CAAC;AAmpB5B;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,wBAAwB,CAAC,CA4L7E;AAoFD;;GAEG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC,CAYhE"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Replay Engine
|
|
3
|
+
* Captures DOM mutations, user interactions, and viewport changes
|
|
4
|
+
* for comprehensive session recording
|
|
5
|
+
*/
|
|
6
|
+
export interface ReplayEvent {
|
|
7
|
+
type: 'mutation' | 'click' | 'scroll' | 'input' | 'mouse' | 'viewport' | 'navigation';
|
|
8
|
+
timestamp: number;
|
|
9
|
+
data: any;
|
|
10
|
+
sequence: number;
|
|
11
|
+
}
|
|
12
|
+
export interface ReplayConfig {
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
sampleRate: number;
|
|
15
|
+
maskSensitiveFields: boolean;
|
|
16
|
+
maxEventBuffer: number;
|
|
17
|
+
batchInterval: number;
|
|
18
|
+
captureClicks: boolean;
|
|
19
|
+
captureScrolls: boolean;
|
|
20
|
+
captureInputs: boolean;
|
|
21
|
+
captureMouseMoves: boolean;
|
|
22
|
+
compressionEnabled: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare class SessionReplayEngine {
|
|
25
|
+
private config;
|
|
26
|
+
private events;
|
|
27
|
+
private observer?;
|
|
28
|
+
private sequence;
|
|
29
|
+
private batchTimer?;
|
|
30
|
+
private isActive;
|
|
31
|
+
private sessionId;
|
|
32
|
+
private lastMouseMove;
|
|
33
|
+
private mouseMoveThrottle;
|
|
34
|
+
constructor(sessionId: string, config?: Partial<ReplayConfig>);
|
|
35
|
+
/**
|
|
36
|
+
* Start session replay recording
|
|
37
|
+
*/
|
|
38
|
+
start(): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Stop session replay recording
|
|
41
|
+
*/
|
|
42
|
+
stop(): void;
|
|
43
|
+
/**
|
|
44
|
+
* Setup DOM mutation observer
|
|
45
|
+
*/
|
|
46
|
+
private setupDOMObserver;
|
|
47
|
+
/**
|
|
48
|
+
* Setup event listeners
|
|
49
|
+
*/
|
|
50
|
+
private setupEventListeners;
|
|
51
|
+
/**
|
|
52
|
+
* Remove event listeners
|
|
53
|
+
*/
|
|
54
|
+
private removeEventListeners;
|
|
55
|
+
/**
|
|
56
|
+
* Record initial DOM state
|
|
57
|
+
*/
|
|
58
|
+
private recordInitialState;
|
|
59
|
+
/**
|
|
60
|
+
* Handle click events
|
|
61
|
+
*/
|
|
62
|
+
private handleClick;
|
|
63
|
+
/**
|
|
64
|
+
* Handle scroll events
|
|
65
|
+
*/
|
|
66
|
+
private handleScroll;
|
|
67
|
+
/**
|
|
68
|
+
* Handle input events
|
|
69
|
+
*/
|
|
70
|
+
private handleInput;
|
|
71
|
+
/**
|
|
72
|
+
* Handle change events
|
|
73
|
+
*/
|
|
74
|
+
private handleChange;
|
|
75
|
+
/**
|
|
76
|
+
* Handle mouse move events (throttled)
|
|
77
|
+
*/
|
|
78
|
+
private handleMouseMove;
|
|
79
|
+
/**
|
|
80
|
+
* Handle viewport changes
|
|
81
|
+
*/
|
|
82
|
+
private handleViewportChange;
|
|
83
|
+
/**
|
|
84
|
+
* Handle navigation events
|
|
85
|
+
*/
|
|
86
|
+
private handleNavigation;
|
|
87
|
+
/**
|
|
88
|
+
* Serialize DOM mutation
|
|
89
|
+
*/
|
|
90
|
+
private serializeMutation;
|
|
91
|
+
/**
|
|
92
|
+
* Serialize DOM element
|
|
93
|
+
*/
|
|
94
|
+
private serializeElement;
|
|
95
|
+
/**
|
|
96
|
+
* Get element path for targeting
|
|
97
|
+
*/
|
|
98
|
+
private getElementPath;
|
|
99
|
+
/**
|
|
100
|
+
* Check if field should be masked
|
|
101
|
+
*/
|
|
102
|
+
private isSensitiveField;
|
|
103
|
+
/**
|
|
104
|
+
* Check if attribute should be masked
|
|
105
|
+
*/
|
|
106
|
+
private isSensitiveAttribute;
|
|
107
|
+
/**
|
|
108
|
+
* Add event to buffer
|
|
109
|
+
*/
|
|
110
|
+
private addEvent;
|
|
111
|
+
/**
|
|
112
|
+
* Start batch timer
|
|
113
|
+
*/
|
|
114
|
+
private startBatchTimer;
|
|
115
|
+
/**
|
|
116
|
+
* Send batch of events
|
|
117
|
+
*/
|
|
118
|
+
private sendBatch;
|
|
119
|
+
/**
|
|
120
|
+
* Send data to backend (will be enhanced with anti-adblock)
|
|
121
|
+
*/
|
|
122
|
+
private sendToBackend;
|
|
123
|
+
/**
|
|
124
|
+
* Get current event count
|
|
125
|
+
*/
|
|
126
|
+
getEventCount(): number;
|
|
127
|
+
/**
|
|
128
|
+
* Check if recording is active
|
|
129
|
+
*/
|
|
130
|
+
isRecording(): boolean;
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=session-replay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../../src/modules/session-replay.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC;IACtF,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,QAAQ,CAAC,CAAmB;IACpC,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,iBAAiB,CAAO;gBAEpB,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM;IAiBjE;;OAEG;IACH,KAAK,IAAI,OAAO;IAqBhB;;OAEG;IACH,IAAI,IAAI,IAAI;IAqBZ;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA4BxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;OAEG;IACH,OAAO,CAAC,WAAW,CAkBjB;IAEF;;OAEG;IACH,OAAO,CAAC,YAAY,CAUlB;IAEF;;OAEG;IACH,OAAO,CAAC,WAAW,CAqBjB;IAEF;;OAEG;IACH,OAAO,CAAC,YAAY,CAoBlB;IAEF;;OAEG;IACH,OAAO,CAAC,eAAe,CAgBrB;IAEF;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAU1B;IAEF;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAGtB;IAEF;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkCzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgCtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAexB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAK5B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAShB;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,OAAO,CAAC,SAAS;IAoBjB;;OAEG;YACW,aAAa;IAiB3B;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,WAAW,IAAI,OAAO;CAGvB"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced User Agent Parser
|
|
3
|
+
* Based on FingerprintJS browser detection with advanced engine and version parsing
|
|
4
|
+
*/
|
|
5
|
+
import type { UserAgentAnalysis } from '../types/detection';
|
|
6
|
+
/**
|
|
7
|
+
* Browser engine detection (based on FingerprintJS)
|
|
8
|
+
*/
|
|
9
|
+
export declare function isChromium(): boolean;
|
|
10
|
+
export declare function isWebKit(): boolean;
|
|
11
|
+
export declare function isGecko(): boolean;
|
|
12
|
+
export declare function isSamsungInternet(): boolean;
|
|
13
|
+
export declare function isIPad(): boolean;
|
|
14
|
+
export declare function isAndroid(): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Enhanced user agent analysis
|
|
17
|
+
*/
|
|
18
|
+
export declare function analyzeUserAgent(userAgent?: string): UserAgentAnalysis;
|
|
19
|
+
/**
|
|
20
|
+
* Get browser engine type
|
|
21
|
+
*/
|
|
22
|
+
export declare function getBrowserEngine(): 'chromium' | 'webkit' | 'gecko' | 'trident' | 'unknown';
|
|
23
|
+
/**
|
|
24
|
+
* Check if running on mobile device
|
|
25
|
+
*/
|
|
26
|
+
export declare function isMobile(): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Check if running on tablet
|
|
29
|
+
*/
|
|
30
|
+
export declare function isTablet(): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Check if running on desktop
|
|
33
|
+
*/
|
|
34
|
+
export declare function isDesktop(): boolean;
|
|
35
|
+
//# sourceMappingURL=user-agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-agent.d.ts","sourceRoot":"","sources":["../../../src/modules/user-agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAQpC;AAED,wBAAgB,QAAQ,IAAI,OAAO,CAGlC;AAED,wBAAgB,OAAO,IAAI,OAAO,CAGjC;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAG3C;AAED,wBAAgB,MAAM,IAAI,OAAO,CAIhC;AAED,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AA4VD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAoCtE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAS1F;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC"}
|