@devskin/browser-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.
@@ -0,0 +1,69 @@
1
+ import { DevSkinConfig } from './types';
2
+ declare class DevSkinSDK {
3
+ private config;
4
+ private transport;
5
+ private sessionId;
6
+ private userId;
7
+ private anonymousId;
8
+ private initialized;
9
+ private deviceCollector;
10
+ private locationCollector;
11
+ private browserCollector;
12
+ private performanceCollector;
13
+ private errorCollector;
14
+ private networkCollector;
15
+ private heatmapCollector;
16
+ private rrwebRecorder;
17
+ /**
18
+ * Initialize the DevSkin SDK
19
+ */
20
+ init(config: DevSkinConfig): void;
21
+ /**
22
+ * Track a custom event
23
+ */
24
+ track(eventName: string, properties?: Record<string, any>): void;
25
+ /**
26
+ * Track a page view
27
+ */
28
+ trackPageView(properties?: Record<string, any>): void;
29
+ /**
30
+ * Identify a user
31
+ */
32
+ identify(userId: string, traits?: Record<string, any>): void;
33
+ /**
34
+ * Capture an error manually
35
+ */
36
+ captureError(error: Error, context?: Record<string, any>): void;
37
+ /**
38
+ * Add breadcrumb for debugging
39
+ */
40
+ addBreadcrumb(breadcrumb: {
41
+ category: string;
42
+ message: string;
43
+ level?: 'info' | 'warning' | 'error';
44
+ data?: Record<string, any>;
45
+ }): void;
46
+ /**
47
+ * Start/stop session recording
48
+ */
49
+ startRecording(): void;
50
+ stopRecording(): void;
51
+ /**
52
+ * Opt out/in
53
+ */
54
+ optOut(): void;
55
+ optIn(): void;
56
+ /**
57
+ * Private methods
58
+ */
59
+ private startSession;
60
+ private getContextData;
61
+ private getOrCreateAnonymousId;
62
+ private generateId;
63
+ private setupVisibilityTracking;
64
+ private setupUnloadTracking;
65
+ }
66
+ declare const DevSkin: DevSkinSDK;
67
+ export default DevSkin;
68
+ export { DevSkin };
69
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAuB,MAAM,SAAS,CAAC;AAa7D,cAAM,UAAU;IACd,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,oBAAoB,CAAqC;IACjE,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,gBAAgB,CAAiC;IAEzD,OAAO,CAAC,aAAa,CAA8B;IAEnD;;OAEG;IACH,IAAI,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IA4GjC;;OAEG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IA4BhE;;OAEG;IACH,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAUrD;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IA0B5D;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAa/D;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;QACrC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC5B,GAAG,IAAI;IAKR;;OAEG;IACH,cAAc,IAAI,IAAI;IAItB,aAAa,IAAI,IAAI;IAIrB;;OAEG;IACH,MAAM,IAAI,IAAI;IAKd,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,mBAAmB;CAO5B;AAGD,QAAA,MAAM,OAAO,YAAmB,CAAC;AAGjC,eAAe,OAAO,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { eventWithTime } from '@rrweb/types';
2
+ export interface RRWebRecorderConfig {
3
+ enabled: boolean;
4
+ sampleRate?: number;
5
+ checkoutEveryNms?: number;
6
+ checkoutEveryNth?: number;
7
+ blockClass?: string;
8
+ ignoreClass?: string;
9
+ maskAllInputs?: boolean;
10
+ maskInputOptions?: {
11
+ password: boolean;
12
+ email?: boolean;
13
+ tel?: boolean;
14
+ };
15
+ inlineStylesheet?: boolean;
16
+ recordCanvas?: boolean;
17
+ collectFonts?: boolean;
18
+ }
19
+ export declare class RRWebRecorder {
20
+ private stopFn;
21
+ private events;
22
+ private config;
23
+ private sessionId;
24
+ private onEventsReady;
25
+ private flushInterval;
26
+ constructor(sessionId: string, config: RRWebRecorderConfig, onEventsReady: (events: eventWithTime[]) => void);
27
+ start(): void;
28
+ stop(): void;
29
+ private flush;
30
+ getEventCount(): number;
31
+ isRecording(): boolean;
32
+ }
33
+ //# sourceMappingURL=rrweb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rrweb.d.ts","sourceRoot":"","sources":["../../src/recorder/rrweb.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE;QACjB,QAAQ,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,GAAG,CAAC,EAAE,OAAO,CAAC;KACf,CAAC;IACF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAoD;IACzE,OAAO,CAAC,aAAa,CAAuB;gBAEhC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,aAAa,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,IAAI;IAM5G,KAAK,IAAI,IAAI;IAwEb,IAAI,IAAI,IAAI;IAkBZ,OAAO,CAAC,KAAK;IAWb,aAAa,IAAI,MAAM;IAIvB,WAAW,IAAI,OAAO;CAGvB"}
@@ -0,0 +1,18 @@
1
+ import { DevSkinConfig } from '../types';
2
+ import { Transport } from '../transport';
3
+ import { eventWithTime } from 'rrweb';
4
+ export declare class SessionRecorder {
5
+ private config;
6
+ private transport;
7
+ private stopRecording;
8
+ private events;
9
+ private isRecording;
10
+ private flushInterval;
11
+ constructor(config: DevSkinConfig, transport: Transport);
12
+ start(): void;
13
+ stop(): void;
14
+ private flush;
15
+ getEvents(): eventWithTime[];
16
+ isActive(): boolean;
17
+ }
18
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/recorder/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAU,aAAa,EAAE,MAAM,OAAO,CAAC;AAE9C,qBAAa,eAAe;IAOxB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IAPnB,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAA+C;gBAG1D,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,SAAS;IAG9B,KAAK,IAAI,IAAI;IA4Eb,IAAI,IAAI,IAAI;IAyBZ,OAAO,CAAC,KAAK;IAgBb,SAAS,IAAI,aAAa,EAAE;IAI5B,QAAQ,IAAI,OAAO;CAGpB"}
@@ -0,0 +1,26 @@
1
+ import { DevSkinConfig, EventData, UserData, SessionData, NetworkRequest, ErrorData } from './types';
2
+ import type { eventWithTime } from '@rrweb/types';
3
+ export declare class Transport {
4
+ private config;
5
+ private queue;
6
+ private flushInterval;
7
+ private readonly maxQueueSize;
8
+ private readonly flushIntervalMs;
9
+ private readonly apiUrl;
10
+ constructor(config: DevSkinConfig);
11
+ sendEvent(event: EventData): void;
12
+ identifyUser(user: UserData): void;
13
+ startSession(session: SessionData): void;
14
+ sendError(error: ErrorData): void;
15
+ sendNetworkRequest(request: NetworkRequest): void;
16
+ sendPerformanceMetric(metric: any): void;
17
+ sendRecordingEvents(sessionId: string, events: eventWithTime[]): void;
18
+ sendHeatmapData(heatmapData: any): void;
19
+ flush(useBeacon?: boolean): void;
20
+ private enqueue;
21
+ private startPeriodicFlush;
22
+ private getEndpointForType;
23
+ private sendToBackend;
24
+ destroy(): void;
25
+ }
26
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,SAAS,EACT,QAAQ,EACR,WAAW,EACX,cAAc,EACd,SAAS,EACV,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAQlD,qBAAa,SAAS;IAOR,OAAO,CAAC,MAAM;IAN1B,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,aAAa,CAA+C;IACpE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAM;IACnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEZ,MAAM,EAAE,aAAa;IAqBzC,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAIjC,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAKlC,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAKxC,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAIjC,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIjD,qBAAqB,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;IAIxC,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI;IASrE,eAAe,CAAC,WAAW,EAAE,GAAG,GAAG,IAAI;IAIvC,KAAK,CAAC,SAAS,UAAQ,GAAG,IAAI;IA4B9B,OAAO,CAAC,OAAO;IAaf,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,kBAAkB;YAiBZ,aAAa;IA+D3B,OAAO,IAAI,IAAI;CAOhB"}
@@ -0,0 +1,177 @@
1
+ export interface DevSkinConfig {
2
+ apiKey: string;
3
+ appId: string;
4
+ apiUrl?: string;
5
+ debug?: boolean;
6
+ sessionRecording?: {
7
+ enabled: boolean;
8
+ maskAllInputs?: boolean;
9
+ maskTextSelector?: string;
10
+ blockSelector?: string;
11
+ sampling?: number;
12
+ recordCanvas?: boolean;
13
+ recordCrossOriginIframes?: boolean;
14
+ ignoreClass?: string;
15
+ };
16
+ heatmapOptions?: {
17
+ enabled: boolean;
18
+ trackClicks?: boolean;
19
+ trackScroll?: boolean;
20
+ trackMouseMovement?: boolean;
21
+ mouseMoveSampling?: number;
22
+ };
23
+ captureWebVitals?: boolean;
24
+ captureNetworkRequests?: boolean;
25
+ captureErrors?: boolean;
26
+ captureUserAgent?: boolean;
27
+ captureLocation?: boolean;
28
+ captureDevice?: boolean;
29
+ networkRequestOptions?: {
30
+ ignoreUrls?: RegExp[];
31
+ captureHeaders?: boolean;
32
+ captureBody?: boolean;
33
+ captureFailedOnly?: boolean;
34
+ };
35
+ errorOptions?: {
36
+ ignoreErrors?: (string | RegExp)[];
37
+ denyUrls?: RegExp[];
38
+ includeLocalVariables?: boolean;
39
+ maxBreadcrumbs?: number;
40
+ };
41
+ privacy?: {
42
+ respectDoNotTrack?: boolean;
43
+ cookieConsent?: boolean;
44
+ };
45
+ environment?: string;
46
+ release?: string;
47
+ longTaskThreshold?: number;
48
+ beforeSend?: (event: any) => any | null;
49
+ }
50
+ export interface EventData {
51
+ event_name: string;
52
+ event_type: string;
53
+ timestamp: string;
54
+ session_id: string;
55
+ user_id?: string;
56
+ anonymous_id?: string;
57
+ properties?: Record<string, any>;
58
+ page_url: string;
59
+ page_title: string;
60
+ }
61
+ export interface UserData {
62
+ user_id: string;
63
+ anonymous_id?: string;
64
+ traits?: Record<string, any>;
65
+ session_id: string;
66
+ timestamp: string;
67
+ }
68
+ export interface SessionData {
69
+ session_id: string;
70
+ user_id?: string;
71
+ anonymous_id: string;
72
+ started_at: string;
73
+ ended_at?: string;
74
+ duration_ms?: number;
75
+ page_view_count?: number;
76
+ event_count?: number;
77
+ device?: DeviceInfo;
78
+ browser?: BrowserInfo;
79
+ location?: LocationInfo;
80
+ }
81
+ export interface DeviceInfo {
82
+ type: 'desktop' | 'mobile' | 'tablet' | 'unknown';
83
+ vendor?: string;
84
+ model?: string;
85
+ os: {
86
+ name: string;
87
+ version: string;
88
+ };
89
+ screen: {
90
+ width: number;
91
+ height: number;
92
+ orientation: string;
93
+ pixelRatio: number;
94
+ };
95
+ memory?: number;
96
+ cores?: number;
97
+ connection?: {
98
+ effectiveType?: string;
99
+ downlink?: number;
100
+ rtt?: number;
101
+ saveData?: boolean;
102
+ };
103
+ }
104
+ export interface BrowserInfo {
105
+ name: string;
106
+ version: string;
107
+ engine: string;
108
+ userAgent: string;
109
+ language: string;
110
+ languages: string[];
111
+ cookieEnabled: boolean;
112
+ doNotTrack: boolean | null;
113
+ viewport: {
114
+ width: number;
115
+ height: number;
116
+ };
117
+ timezone: string;
118
+ timezoneOffset: number;
119
+ }
120
+ export interface LocationInfo {
121
+ url: string;
122
+ hostname: string;
123
+ pathname: string;
124
+ search: string;
125
+ hash: string;
126
+ protocol: string;
127
+ port: string;
128
+ referrer: string;
129
+ country?: string;
130
+ region?: string;
131
+ city?: string;
132
+ timezone?: string;
133
+ latitude?: number;
134
+ longitude?: number;
135
+ }
136
+ export interface PerformanceMetrics {
137
+ fcp?: number;
138
+ lcp?: number;
139
+ fid?: number;
140
+ cls?: number;
141
+ ttfb?: number;
142
+ domLoad?: number;
143
+ windowLoad?: number;
144
+ }
145
+ export interface NetworkRequest {
146
+ url: string;
147
+ method: string;
148
+ status?: number;
149
+ duration: number;
150
+ size?: number;
151
+ type: string;
152
+ timestamp: string;
153
+ failed: boolean;
154
+ headers?: Record<string, string>;
155
+ body?: any;
156
+ }
157
+ export interface ErrorData {
158
+ message: string;
159
+ stack?: string;
160
+ type: string;
161
+ timestamp: string;
162
+ session_id: string;
163
+ user_id?: string;
164
+ url: string;
165
+ line?: number;
166
+ column?: number;
167
+ breadcrumbs?: Breadcrumb[];
168
+ context?: Record<string, any>;
169
+ }
170
+ export interface Breadcrumb {
171
+ category: string;
172
+ message: string;
173
+ level: 'info' | 'warning' | 'error';
174
+ timestamp: string;
175
+ data?: Record<string, any>;
176
+ }
177
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@devskin/browser-sdk",
3
+ "version": "1.0.0",
4
+ "description": "DevSkin Browser SDK for complete user analytics and monitoring with rrweb session recording",
5
+ "type": "module",
6
+ "main": "dist/devskin.cjs.js",
7
+ "module": "dist/devskin.esm.js",
8
+ "browser": "dist/devskin.umd.min.js",
9
+ "types": "dist/index.d.ts",
10
+ "files": [
11
+ "dist",
12
+ "README.md",
13
+ "LICENSE"
14
+ ],
15
+ "scripts": {
16
+ "build": "rollup -c",
17
+ "dev": "rollup -c -w",
18
+ "prepublishOnly": "npm run build"
19
+ },
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "https://github.com/devskin1/devskin-monitoring-browser-sdk.git"
23
+ },
24
+ "bugs": {
25
+ "url": "https://github.com/devskin1/devskin-monitoring-browser-sdk/issues"
26
+ },
27
+ "homepage": "https://github.com/devskin1/devskin-monitoring-browser-sdk#readme",
28
+ "keywords": [
29
+ "analytics",
30
+ "monitoring",
31
+ "rum",
32
+ "session-recording",
33
+ "error-tracking",
34
+ "rrweb",
35
+ "session-replay",
36
+ "web-vitals",
37
+ "user-analytics",
38
+ "observability"
39
+ ],
40
+ "author": "DevSkin",
41
+ "license": "MIT",
42
+ "devDependencies": {
43
+ "@rollup/plugin-commonjs": "^25.0.7",
44
+ "@rollup/plugin-node-resolve": "^15.2.3",
45
+ "@rollup/plugin-terser": "^0.4.4",
46
+ "@rollup/plugin-typescript": "^11.1.6",
47
+ "@types/node": "^25.0.3",
48
+ "rollup": "^4.9.6",
49
+ "tslib": "^2.8.1",
50
+ "typescript": "^5.3.3"
51
+ },
52
+ "dependencies": {
53
+ "rrweb": "^2.0.0-alpha.4",
54
+ "rrweb-player": "^1.0.0-alpha.4",
55
+ "web-vitals": "^3.5.1"
56
+ }
57
+ }