@dashgram/javascript 1.0.0 → 1.0.1
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 +117 -174
- package/dist/core/config.d.ts +1 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +5 -4
- package/dist/core/context.d.ts +4 -8
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +6 -17
- package/dist/core/event-queue.d.ts +4 -4
- package/dist/core/event-queue.d.ts.map +1 -1
- package/dist/dashgram.min.js +1 -0
- package/dist/errors.d.ts +0 -3
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +0 -10
- package/dist/index.d.ts +3 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -32
- package/dist/trackers/base-tracker.d.ts +3 -3
- package/dist/trackers/base-tracker.d.ts.map +1 -1
- package/dist/trackers/base-tracker.js +1 -4
- package/dist/trackers/core-tracker.d.ts +3 -3
- package/dist/trackers/core-tracker.d.ts.map +1 -1
- package/dist/trackers/core-tracker.js +19 -21
- package/dist/trackers/deep-tracker.d.ts +6 -0
- package/dist/trackers/deep-tracker.d.ts.map +1 -1
- package/dist/trackers/deep-tracker.js +562 -12
- package/dist/trackers/interaction-tracker.d.ts +7 -3
- package/dist/trackers/interaction-tracker.d.ts.map +1 -1
- package/dist/trackers/interaction-tracker.js +142 -37
- package/dist/transport/batch-processor.d.ts +4 -4
- package/dist/transport/batch-processor.d.ts.map +1 -1
- package/dist/transport/batch-processor.js +8 -8
- package/dist/transport/transport.d.ts +4 -3
- package/dist/transport/transport.d.ts.map +1 -1
- package/dist/transport/transport.js +17 -24
- package/dist/types/index.d.ts +100 -25
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/device.d.ts +3 -7
- package/dist/utils/device.d.ts.map +1 -1
- package/dist/utils/device.js +19 -53
- package/dist/utils/telegram.d.ts +4 -6
- package/dist/utils/telegram.d.ts.map +1 -1
- package/dist/utils/telegram.js +45 -29
- package/package.json +5 -3
- package/dist/core/session.d.ts +0 -13
- package/dist/core/session.d.ts.map +0 -1
- package/dist/core/session.js +0 -63
package/dist/index.js
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
import { Config } from "./core/config";
|
|
2
2
|
import { Context } from "./core/context";
|
|
3
|
-
import { Session } from "./core/session";
|
|
4
3
|
import { Transport } from "./transport/transport";
|
|
5
4
|
import { BatchProcessor } from "./transport/batch-processor";
|
|
6
5
|
import { CoreTracker } from "./trackers/core-tracker";
|
|
7
6
|
import { InteractionTracker } from "./trackers/interaction-tracker";
|
|
8
7
|
import { DeepTracker } from "./trackers/deep-tracker";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
8
|
+
import { generateUUID, isBrowser } from "./utils/helpers";
|
|
9
|
+
import { getTelegramInitData } from "./utils/telegram";
|
|
11
10
|
class DashgramSDK {
|
|
12
11
|
constructor() {
|
|
13
12
|
this.config = null;
|
|
14
13
|
this.context = null;
|
|
15
|
-
this.session = null;
|
|
16
14
|
this.transport = null;
|
|
17
15
|
this.batchProcessor = null;
|
|
18
16
|
this.trackers = [];
|
|
@@ -20,17 +18,24 @@ class DashgramSDK {
|
|
|
20
18
|
}
|
|
21
19
|
init(userConfig) {
|
|
22
20
|
if (this.isInitialized) {
|
|
23
|
-
|
|
21
|
+
if (userConfig.debug) {
|
|
22
|
+
console.warn("Dashgram: Already initialized");
|
|
23
|
+
}
|
|
24
24
|
return;
|
|
25
25
|
}
|
|
26
26
|
if (!isBrowser()) {
|
|
27
|
-
|
|
27
|
+
if (userConfig.debug) {
|
|
28
|
+
console.warn("Dashgram: Not running in browser environment");
|
|
29
|
+
}
|
|
28
30
|
return;
|
|
29
31
|
}
|
|
30
32
|
try {
|
|
31
33
|
this.config = new Config(userConfig);
|
|
34
|
+
if (typeof window !== "undefined") {
|
|
35
|
+
;
|
|
36
|
+
window.__DASHGRAM_DEBUG__ = this.config.isDebug();
|
|
37
|
+
}
|
|
32
38
|
this.context = new Context();
|
|
33
|
-
this.session = new Session();
|
|
34
39
|
this.transport = new Transport(this.config);
|
|
35
40
|
this.batchProcessor = new BatchProcessor(this.config, this.transport);
|
|
36
41
|
this.setupTrackers();
|
|
@@ -75,30 +80,19 @@ class DashgramSDK {
|
|
|
75
80
|
this.batchProcessor.addEvent(fullEvent);
|
|
76
81
|
this.log("Auto-tracked event", { event, properties });
|
|
77
82
|
}
|
|
78
|
-
buildEvent(
|
|
83
|
+
buildEvent(type, properties, source) {
|
|
79
84
|
this.ensureInitialized();
|
|
80
|
-
this.session.renewIfExpired();
|
|
81
|
-
this.session.updateLastActivity();
|
|
82
85
|
return {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
+
eventId: generateUUID(),
|
|
87
|
+
type,
|
|
88
|
+
initData: getTelegramInitData(),
|
|
89
|
+
properties: Object.keys(properties).length > 0 ? properties : undefined,
|
|
90
|
+
telemetry: this.context.getTelemetry(),
|
|
86
91
|
source,
|
|
87
92
|
level: this.config.getTrackLevel(),
|
|
88
|
-
|
|
89
|
-
user_id: this.context.getUserId() || getTelegramUserId(),
|
|
90
|
-
context: this.context.getContext()
|
|
93
|
+
timestamp: Date.now()
|
|
91
94
|
};
|
|
92
95
|
}
|
|
93
|
-
identify(userId, traits = {}) {
|
|
94
|
-
this.ensureInitialized();
|
|
95
|
-
this.context.setUserId(userId);
|
|
96
|
-
this.track("identify", {
|
|
97
|
-
user_id: userId,
|
|
98
|
-
...traits
|
|
99
|
-
});
|
|
100
|
-
this.log("Identified user", { userId, traits });
|
|
101
|
-
}
|
|
102
96
|
setTrackLevel(level) {
|
|
103
97
|
this.ensureInitialized();
|
|
104
98
|
const oldLevel = this.config.getTrackLevel();
|
|
@@ -114,12 +108,6 @@ class DashgramSDK {
|
|
|
114
108
|
await this.batchProcessor.flushAsync();
|
|
115
109
|
this.log("Flushed all events");
|
|
116
110
|
}
|
|
117
|
-
reset() {
|
|
118
|
-
this.ensureInitialized();
|
|
119
|
-
this.session.reset();
|
|
120
|
-
this.context.clearUserId();
|
|
121
|
-
this.log("Reset session and user");
|
|
122
|
-
}
|
|
123
111
|
shutdown() {
|
|
124
112
|
if (!this.isInitialized) {
|
|
125
113
|
return;
|
|
@@ -143,6 +131,6 @@ class DashgramSDK {
|
|
|
143
131
|
}
|
|
144
132
|
}
|
|
145
133
|
const DashgramMini = new DashgramSDK();
|
|
146
|
-
export { DashgramError,
|
|
134
|
+
export { DashgramError, DashgramAPIError, NetworkError, DashgramConfigurationError } from "./errors";
|
|
147
135
|
export { DashgramMini };
|
|
148
136
|
export default DashgramMini;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { TrackLevel, EventProperties } from
|
|
2
|
-
import type { Config } from
|
|
1
|
+
import type { TrackLevel, EventProperties } from "../types";
|
|
2
|
+
import type { Config } from "../core/config";
|
|
3
3
|
export type TrackCallback = (event: string, properties: EventProperties) => void;
|
|
4
4
|
export declare abstract class BaseTracker {
|
|
5
5
|
protected config: Config;
|
|
@@ -12,6 +12,6 @@ export declare abstract class BaseTracker {
|
|
|
12
12
|
protected track(event: string, properties?: EventProperties): void;
|
|
13
13
|
protected abstract setup(): void;
|
|
14
14
|
protected abstract teardown(): void;
|
|
15
|
-
protected log(...args:
|
|
15
|
+
protected log(...args: unknown[]): void;
|
|
16
16
|
}
|
|
17
17
|
//# sourceMappingURL=base-tracker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-tracker.d.ts","sourceRoot":"","sources":["../../src/trackers/base-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"base-tracker.d.ts","sourceRoot":"","sources":["../../src/trackers/base-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAK5C,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,KAAK,IAAI,CAAA;AAKhF,8BAAsB,WAAW;IAC/B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,aAAa,EAAE,aAAa,CAAA;IACtC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAQ;IACnC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAA;gBAEf,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU;IAS3E,KAAK,IAAI,IAAI;IAkBb,IAAI,IAAI,IAAI;IAaZ,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,GAAE,eAAoB,GAAG,IAAI;IAWtE,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI;IAKhC,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI;IAKnC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;CAKxC"}
|
|
@@ -28,10 +28,7 @@ export class BaseTracker {
|
|
|
28
28
|
if (!this.isActive) {
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
|
-
this.trackCallback(event,
|
|
32
|
-
...properties,
|
|
33
|
-
_tracker: this.constructor.name,
|
|
34
|
-
});
|
|
31
|
+
this.trackCallback(event, properties);
|
|
35
32
|
}
|
|
36
33
|
log(...args) {
|
|
37
34
|
if (this.config.isDebug()) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { BaseTracker } from
|
|
2
|
-
import type { Config } from
|
|
3
|
-
import type { TrackCallback } from
|
|
1
|
+
import { BaseTracker } from "./base-tracker";
|
|
2
|
+
import type { Config } from "../core/config";
|
|
3
|
+
import type { TrackCallback } from "./base-tracker";
|
|
4
4
|
export declare class CoreTracker extends BaseTracker {
|
|
5
5
|
private unsubscribers;
|
|
6
6
|
private hasTrackedAppOpen;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-tracker.d.ts","sourceRoot":"","sources":["../../src/trackers/core-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"core-tracker.d.ts","sourceRoot":"","sources":["../../src/trackers/core-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAMnD,qBAAa,WAAY,SAAQ,WAAW;IAC1C,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,iBAAiB,CAAQ;gBAErB,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa;IAIxD,SAAS,CAAC,KAAK,IAAI,IAAI;IAavB,SAAS,CAAC,QAAQ,IAAI,IAAI;IAQ1B,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,uBAAuB;IAuB/B,OAAO,CAAC,mBAAmB;CAmB5B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BaseTracker } from
|
|
1
|
+
import { BaseTracker } from "./base-tracker";
|
|
2
2
|
export class CoreTracker extends BaseTracker {
|
|
3
3
|
constructor(config, trackCallback) {
|
|
4
4
|
super(config, trackCallback, 1);
|
|
@@ -6,59 +6,57 @@ export class CoreTracker extends BaseTracker {
|
|
|
6
6
|
this.hasTrackedAppOpen = false;
|
|
7
7
|
}
|
|
8
8
|
setup() {
|
|
9
|
-
if (typeof window ===
|
|
9
|
+
if (typeof window === "undefined") {
|
|
10
10
|
return;
|
|
11
11
|
}
|
|
12
12
|
this.trackAppOpen();
|
|
13
|
-
this.track('session_start', {});
|
|
14
13
|
this.setupVisibilityTracking();
|
|
15
14
|
this.setupUnloadTracking();
|
|
16
15
|
}
|
|
17
16
|
teardown() {
|
|
18
|
-
this.unsubscribers.forEach(
|
|
17
|
+
this.unsubscribers.forEach(unsubscribe => unsubscribe());
|
|
19
18
|
this.unsubscribers = [];
|
|
20
19
|
}
|
|
21
20
|
trackAppOpen() {
|
|
22
21
|
if (this.hasTrackedAppOpen) {
|
|
23
22
|
return;
|
|
24
23
|
}
|
|
25
|
-
this.track(
|
|
26
|
-
referrer: document.referrer ||
|
|
24
|
+
this.track("app_open", {
|
|
25
|
+
referrer: document.referrer || "direct"
|
|
27
26
|
});
|
|
28
27
|
this.hasTrackedAppOpen = true;
|
|
29
28
|
}
|
|
30
29
|
setupVisibilityTracking() {
|
|
31
30
|
const handleVisibilityChange = () => {
|
|
32
|
-
if (document.visibilityState ===
|
|
33
|
-
this.track(
|
|
34
|
-
visibility_state:
|
|
31
|
+
if (document.visibilityState === "hidden") {
|
|
32
|
+
this.track("app_close", {
|
|
33
|
+
visibility_state: "hidden"
|
|
35
34
|
});
|
|
36
35
|
}
|
|
37
|
-
else if (document.visibilityState ===
|
|
38
|
-
this.track(
|
|
39
|
-
visibility_state:
|
|
36
|
+
else if (document.visibilityState === "visible") {
|
|
37
|
+
this.track("app_open", {
|
|
38
|
+
visibility_state: "visible"
|
|
40
39
|
});
|
|
41
40
|
}
|
|
42
41
|
};
|
|
43
|
-
document.addEventListener(
|
|
42
|
+
document.addEventListener("visibilitychange", handleVisibilityChange);
|
|
44
43
|
this.unsubscribers.push(() => {
|
|
45
|
-
document.removeEventListener(
|
|
44
|
+
document.removeEventListener("visibilitychange", handleVisibilityChange);
|
|
46
45
|
});
|
|
47
46
|
}
|
|
48
47
|
setupUnloadTracking() {
|
|
49
48
|
const handleUnload = () => {
|
|
50
|
-
this.track(
|
|
51
|
-
reason:
|
|
49
|
+
this.track("app_close", {
|
|
50
|
+
reason: "unload"
|
|
52
51
|
});
|
|
53
|
-
this.track('session_end', {});
|
|
54
52
|
};
|
|
55
|
-
window.addEventListener(
|
|
53
|
+
window.addEventListener("pagehide", handleUnload);
|
|
56
54
|
this.unsubscribers.push(() => {
|
|
57
|
-
window.removeEventListener(
|
|
55
|
+
window.removeEventListener("pagehide", handleUnload);
|
|
58
56
|
});
|
|
59
|
-
window.addEventListener(
|
|
57
|
+
window.addEventListener("beforeunload", handleUnload);
|
|
60
58
|
this.unsubscribers.push(() => {
|
|
61
|
-
window.removeEventListener(
|
|
59
|
+
window.removeEventListener("beforeunload", handleUnload);
|
|
62
60
|
});
|
|
63
61
|
}
|
|
64
62
|
}
|
|
@@ -6,14 +6,20 @@ export declare class DeepTracker extends BaseTracker {
|
|
|
6
6
|
private observers;
|
|
7
7
|
private clickTracker;
|
|
8
8
|
private maxScrollDepth;
|
|
9
|
+
private trackedMedia;
|
|
9
10
|
constructor(config: Config, trackCallback: TrackCallback);
|
|
10
11
|
protected setup(): void;
|
|
11
12
|
protected teardown(): void;
|
|
13
|
+
private getScrollDepth;
|
|
12
14
|
private setupScrollTracking;
|
|
13
15
|
private setupVisibilityTracking;
|
|
14
16
|
private setupRageClickTracking;
|
|
15
17
|
private setupLongTaskTracking;
|
|
16
18
|
private setupWebVitals;
|
|
19
|
+
private setupNetworkTracking;
|
|
20
|
+
private setupOrientationTracking;
|
|
21
|
+
private setupMediaTracking;
|
|
17
22
|
private setupTelegramTracking;
|
|
23
|
+
private patchWebAppMethods;
|
|
18
24
|
}
|
|
19
25
|
//# sourceMappingURL=deep-tracker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deep-tracker.d.ts","sourceRoot":"","sources":["../../src/trackers/deep-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AASnD,qBAAa,WAAY,SAAQ,WAAW;IAC1C,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"deep-tracker.d.ts","sourceRoot":"","sources":["../../src/trackers/deep-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AASnD,qBAAa,WAAY,SAAQ,WAAW;IAC1C,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,SAAS,CAA2E;IAC5F,OAAO,CAAC,YAAY,CAAoD;IACxE,OAAO,CAAC,cAAc,CAAI;IAC1B,OAAO,CAAC,YAAY,CAAkC;gBAE1C,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa;IAIxD,SAAS,CAAC,KAAK,IAAI,IAAI;IAgBvB,SAAS,CAAC,QAAQ,IAAI,IAAI;IAa1B,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,mBAAmB;IA8B3B,OAAO,CAAC,uBAAuB;IA+D/B,OAAO,CAAC,sBAAsB;IA6C9B,OAAO,CAAC,qBAAqB;IA6B7B,OAAO,CAAC,cAAc;IAmFtB,OAAO,CAAC,oBAAoB;IA+C5B,OAAO,CAAC,wBAAwB;IA+BhC,OAAO,CAAC,kBAAkB;IAkF1B,OAAO,CAAC,qBAAqB;IAgd7B,OAAO,CAAC,kBAAkB;CA6J3B"}
|