@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.
Files changed (46) hide show
  1. package/README.md +117 -174
  2. package/dist/core/config.d.ts +1 -0
  3. package/dist/core/config.d.ts.map +1 -1
  4. package/dist/core/config.js +5 -4
  5. package/dist/core/context.d.ts +4 -8
  6. package/dist/core/context.d.ts.map +1 -1
  7. package/dist/core/context.js +6 -17
  8. package/dist/core/event-queue.d.ts +4 -4
  9. package/dist/core/event-queue.d.ts.map +1 -1
  10. package/dist/dashgram.min.js +1 -0
  11. package/dist/errors.d.ts +0 -3
  12. package/dist/errors.d.ts.map +1 -1
  13. package/dist/errors.js +0 -10
  14. package/dist/index.d.ts +3 -6
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +20 -32
  17. package/dist/trackers/base-tracker.d.ts +3 -3
  18. package/dist/trackers/base-tracker.d.ts.map +1 -1
  19. package/dist/trackers/base-tracker.js +1 -4
  20. package/dist/trackers/core-tracker.d.ts +3 -3
  21. package/dist/trackers/core-tracker.d.ts.map +1 -1
  22. package/dist/trackers/core-tracker.js +19 -21
  23. package/dist/trackers/deep-tracker.d.ts +6 -0
  24. package/dist/trackers/deep-tracker.d.ts.map +1 -1
  25. package/dist/trackers/deep-tracker.js +562 -12
  26. package/dist/trackers/interaction-tracker.d.ts +7 -3
  27. package/dist/trackers/interaction-tracker.d.ts.map +1 -1
  28. package/dist/trackers/interaction-tracker.js +142 -37
  29. package/dist/transport/batch-processor.d.ts +4 -4
  30. package/dist/transport/batch-processor.d.ts.map +1 -1
  31. package/dist/transport/batch-processor.js +8 -8
  32. package/dist/transport/transport.d.ts +4 -3
  33. package/dist/transport/transport.d.ts.map +1 -1
  34. package/dist/transport/transport.js +17 -24
  35. package/dist/types/index.d.ts +100 -25
  36. package/dist/types/index.d.ts.map +1 -1
  37. package/dist/utils/device.d.ts +3 -7
  38. package/dist/utils/device.d.ts.map +1 -1
  39. package/dist/utils/device.js +19 -53
  40. package/dist/utils/telegram.d.ts +4 -6
  41. package/dist/utils/telegram.d.ts.map +1 -1
  42. package/dist/utils/telegram.js +45 -29
  43. package/package.json +5 -3
  44. package/dist/core/session.d.ts +0 -13
  45. package/dist/core/session.d.ts.map +0 -1
  46. 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 { getTimestamp, isBrowser } from "./utils/helpers";
10
- import { getTelegramUserId } from "./utils/telegram";
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
- console.warn("Dashgram: Already initialized");
21
+ if (userConfig.debug) {
22
+ console.warn("Dashgram: Already initialized");
23
+ }
24
24
  return;
25
25
  }
26
26
  if (!isBrowser()) {
27
- console.warn("Dashgram: Not running in browser environment");
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(event, properties, source) {
83
+ buildEvent(type, properties, source) {
79
84
  this.ensureInitialized();
80
- this.session.renewIfExpired();
81
- this.session.updateLastActivity();
82
85
  return {
83
- event,
84
- properties,
85
- timestamp: getTimestamp(),
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
- session_id: this.session.getSessionId(),
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, InvalidCredentialsError, DashgramAPIError, NetworkError, DashgramConfigurationError } from "./errors";
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 '../types';
2
- import type { Config } from '../core/config';
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: any[]): void;
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,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAK7C,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,KAAK,IAAI,CAAC;AAKjF,8BAAsB,WAAW;IAC/B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IACvC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAS;IACpC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC;gBAEhB,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;IActE,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI;IAKhC,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI;IAKnC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;CAKpC"}
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 './base-tracker';
2
- import type { Config } from '../core/config';
3
- import type { TrackCallback } from './base-tracker';
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,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAMpD,qBAAa,WAAY,SAAQ,WAAW;IAC1C,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa;IAIxD,SAAS,CAAC,KAAK,IAAI,IAAI;IAgBvB,SAAS,CAAC,QAAQ,IAAI,IAAI;IAS1B,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,uBAAuB;IAuB/B,OAAO,CAAC,mBAAmB;CAuB5B"}
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 './base-tracker';
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 === 'undefined') {
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((unsubscribe) => unsubscribe());
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('app_open', {
26
- referrer: document.referrer || 'direct',
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 === 'hidden') {
33
- this.track('app_close', {
34
- visibility_state: 'hidden',
31
+ if (document.visibilityState === "hidden") {
32
+ this.track("app_close", {
33
+ visibility_state: "hidden"
35
34
  });
36
35
  }
37
- else if (document.visibilityState === 'visible') {
38
- this.track('app_open', {
39
- visibility_state: 'visible',
36
+ else if (document.visibilityState === "visible") {
37
+ this.track("app_open", {
38
+ visibility_state: "visible"
40
39
  });
41
40
  }
42
41
  };
43
- document.addEventListener('visibilitychange', handleVisibilityChange);
42
+ document.addEventListener("visibilitychange", handleVisibilityChange);
44
43
  this.unsubscribers.push(() => {
45
- document.removeEventListener('visibilitychange', handleVisibilityChange);
44
+ document.removeEventListener("visibilitychange", handleVisibilityChange);
46
45
  });
47
46
  }
48
47
  setupUnloadTracking() {
49
48
  const handleUnload = () => {
50
- this.track('app_close', {
51
- reason: 'unload',
49
+ this.track("app_close", {
50
+ reason: "unload"
52
51
  });
53
- this.track('session_end', {});
54
52
  };
55
- window.addEventListener('pagehide', handleUnload);
53
+ window.addEventListener("pagehide", handleUnload);
56
54
  this.unsubscribers.push(() => {
57
- window.removeEventListener('pagehide', handleUnload);
55
+ window.removeEventListener("pagehide", handleUnload);
58
56
  });
59
- window.addEventListener('beforeunload', handleUnload);
57
+ window.addEventListener("beforeunload", handleUnload);
60
58
  this.unsubscribers.push(() => {
61
- window.removeEventListener('beforeunload', handleUnload);
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,CAAwD;IACzE,OAAO,CAAC,YAAY,CAAoD;IACxE,OAAO,CAAC,cAAc,CAAI;gBAEd,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa;IAIxD,SAAS,CAAC,KAAK,IAAI,IAAI;IAavB,SAAS,CAAC,QAAQ,IAAI,IAAI;IAa1B,OAAO,CAAC,mBAAmB;IA8B3B,OAAO,CAAC,uBAAuB;IA+D/B,OAAO,CAAC,sBAAsB;IA6C9B,OAAO,CAAC,qBAAqB;IA6B7B,OAAO,CAAC,cAAc;IAmFtB,OAAO,CAAC,qBAAqB;CA+B9B"}
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"}