@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.
- package/README.md +298 -0
- package/dist/collectors/browser.d.ts +11 -0
- package/dist/collectors/browser.d.ts.map +1 -0
- package/dist/collectors/device.d.ts +16 -0
- package/dist/collectors/device.d.ts.map +1 -0
- package/dist/collectors/error.d.ts +23 -0
- package/dist/collectors/error.d.ts.map +1 -0
- package/dist/collectors/heatmap.d.ts +21 -0
- package/dist/collectors/heatmap.d.ts.map +1 -0
- package/dist/collectors/location.d.ts +10 -0
- package/dist/collectors/location.d.ts.map +1 -0
- package/dist/collectors/network.d.ts +15 -0
- package/dist/collectors/network.d.ts.map +1 -0
- package/dist/collectors/performance.d.ts +15 -0
- package/dist/collectors/performance.d.ts.map +1 -0
- package/dist/devskin.cjs.js +5505 -0
- package/dist/devskin.cjs.js.map +1 -0
- package/dist/devskin.esm.js +5500 -0
- package/dist/devskin.esm.js.map +1 -0
- package/dist/devskin.umd.js +5511 -0
- package/dist/devskin.umd.js.map +1 -0
- package/dist/devskin.umd.min.js +16 -0
- package/dist/devskin.umd.min.js.map +1 -0
- package/dist/index.d.ts +69 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/recorder/rrweb.d.ts +33 -0
- package/dist/recorder/rrweb.d.ts.map +1 -0
- package/dist/recorder/session.d.ts +18 -0
- package/dist/recorder/session.d.ts.map +1 -0
- package/dist/transport.d.ts +26 -0
- package/dist/transport.d.ts.map +1 -0
- package/dist/types.d.ts +177 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +57 -0
package/dist/index.d.ts
ADDED
|
@@ -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"}
|
package/dist/types.d.ts
ADDED
|
@@ -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
|
+
}
|