@technoapple/ga4 1.0.4 → 1.1.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 (74) hide show
  1. package/.github/workflows/node.js.yml +31 -31
  2. package/.prettierignore +1 -1
  3. package/LICENSE +21 -21
  4. package/README.md +386 -48
  5. package/REQUIREMENTS.md +548 -0
  6. package/babel.config.js +5 -5
  7. package/build/main/ga4/ga4.d.ts +13 -0
  8. package/build/main/ga4/ga4.js +24 -1
  9. package/build/main/helpers/debounce.d.ts +5 -0
  10. package/build/main/helpers/debounce.js +23 -0
  11. package/build/main/helpers/delegate.d.ts +8 -0
  12. package/build/main/helpers/delegate.js +37 -0
  13. package/build/main/helpers/dom-ready.d.ts +1 -0
  14. package/build/main/helpers/dom-ready.js +13 -0
  15. package/build/main/helpers/parse-url.d.ts +11 -0
  16. package/build/main/helpers/parse-url.js +32 -0
  17. package/build/main/helpers/session.d.ts +4 -0
  18. package/build/main/helpers/session.js +50 -0
  19. package/build/main/index.d.ts +9 -0
  20. package/build/main/index.js +19 -2
  21. package/build/main/plugins/clean-url-tracker.d.ts +17 -0
  22. package/build/main/plugins/clean-url-tracker.js +105 -0
  23. package/build/main/plugins/event-tracker.d.ts +27 -0
  24. package/build/main/plugins/event-tracker.js +76 -0
  25. package/build/main/plugins/impression-tracker.d.ts +32 -0
  26. package/build/main/plugins/impression-tracker.js +202 -0
  27. package/build/main/plugins/index.d.ts +8 -0
  28. package/build/main/plugins/index.js +20 -0
  29. package/build/main/plugins/media-query-tracker.d.ts +20 -0
  30. package/build/main/plugins/media-query-tracker.js +96 -0
  31. package/build/main/plugins/outbound-form-tracker.d.ts +17 -0
  32. package/build/main/plugins/outbound-form-tracker.js +55 -0
  33. package/build/main/plugins/outbound-link-tracker.d.ts +19 -0
  34. package/build/main/plugins/outbound-link-tracker.js +63 -0
  35. package/build/main/plugins/page-visibility-tracker.d.ts +24 -0
  36. package/build/main/plugins/page-visibility-tracker.js +93 -0
  37. package/build/main/plugins/url-change-tracker.d.ts +20 -0
  38. package/build/main/plugins/url-change-tracker.js +76 -0
  39. package/build/main/types/plugins.d.ts +78 -0
  40. package/build/main/types/plugins.js +3 -0
  41. package/build/tsconfig.tsbuildinfo +1 -1
  42. package/docs/examples/react.md +95 -0
  43. package/docs/examples/vanilla.md +65 -0
  44. package/docs/examples/vue.md +87 -0
  45. package/jest.config.ts +195 -195
  46. package/package.json +56 -56
  47. package/src/dataLayer.ts +85 -85
  48. package/src/ga4/ga4.ts +69 -40
  49. package/src/ga4/ga4option.ts +4 -4
  50. package/src/ga4/index.ts +4 -4
  51. package/src/helpers/debounce.ts +28 -0
  52. package/src/helpers/delegate.ts +51 -0
  53. package/src/helpers/dom-ready.ts +7 -0
  54. package/src/helpers/parse-url.ts +37 -0
  55. package/src/helpers/session.ts +39 -0
  56. package/src/index.ts +34 -7
  57. package/src/plugins/clean-url-tracker.ts +112 -0
  58. package/src/plugins/event-tracker.ts +90 -0
  59. package/src/plugins/impression-tracker.ts +230 -0
  60. package/src/plugins/index.ts +8 -0
  61. package/src/plugins/media-query-tracker.ts +116 -0
  62. package/src/plugins/outbound-form-tracker.ts +65 -0
  63. package/src/plugins/outbound-link-tracker.ts +72 -0
  64. package/src/plugins/page-visibility-tracker.ts +104 -0
  65. package/src/plugins/url-change-tracker.ts +84 -0
  66. package/src/types/dataLayer.ts +9 -9
  67. package/src/types/global.ts +12 -12
  68. package/src/types/gtag.ts +259 -259
  69. package/src/types/plugins.ts +98 -0
  70. package/src/util.ts +18 -18
  71. package/test/dataLayer.spec.ts +55 -55
  72. package/test/ga4.spec.ts +36 -36
  73. package/tsconfig.json +28 -28
  74. package/tsconfig.module.json +11 -11
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PageVisibilityTracker = void 0;
4
+ const session_1 = require("../helpers/session");
5
+ /**
6
+ * Tracks how long a page is in the visible state vs. hidden (background tab).
7
+ *
8
+ * Sends a `page_visibility` event each time the visibility state changes,
9
+ * reporting how long the page was in the previous state.
10
+ * Optionally sends a new `page_view` when the page becomes visible
11
+ * again after the session timeout has elapsed.
12
+ */
13
+ class PageVisibilityTracker {
14
+ send;
15
+ sendInitialPageview;
16
+ sessionTimeout;
17
+ eventName;
18
+ hitFilter;
19
+ lastChangeTime;
20
+ isVisible;
21
+ boundVisibilityChange;
22
+ boundBeforeUnload;
23
+ constructor(send, options) {
24
+ this.send = send;
25
+ this.sendInitialPageview = options?.sendInitialPageview ?? false;
26
+ this.sessionTimeout = options?.sessionTimeout ?? 30;
27
+ this.eventName = options?.eventName ?? 'page_visibility';
28
+ this.hitFilter = options?.hitFilter;
29
+ this.lastChangeTime = Date.now();
30
+ this.isVisible = document.visibilityState === 'visible';
31
+ this.boundVisibilityChange = this.onVisibilityChange.bind(this);
32
+ this.boundBeforeUnload = this.onBeforeUnload.bind(this);
33
+ document.addEventListener('visibilitychange', this.boundVisibilityChange);
34
+ window.addEventListener('beforeunload', this.boundBeforeUnload);
35
+ (0, session_1.updateSessionTimestamp)('pageVisibility');
36
+ if (this.sendInitialPageview && this.isVisible) {
37
+ this.send('page_view', {
38
+ page_path: location.pathname,
39
+ page_location: location.href,
40
+ page_title: document.title,
41
+ });
42
+ }
43
+ }
44
+ onVisibilityChange() {
45
+ const now = Date.now();
46
+ const duration = now - this.lastChangeTime;
47
+ const previousState = this.isVisible ? 'visible' : 'hidden';
48
+ let params = {
49
+ visibility_state: previousState,
50
+ visibility_duration: duration,
51
+ page_path: location.pathname,
52
+ };
53
+ if (this.hitFilter) {
54
+ const filtered = this.hitFilter(params);
55
+ if (filtered === null) {
56
+ this.lastChangeTime = now;
57
+ this.isVisible = document.visibilityState === 'visible';
58
+ return;
59
+ }
60
+ params = filtered;
61
+ }
62
+ this.send(this.eventName, params);
63
+ // If page becomes visible again, check session expiry
64
+ if (document.visibilityState === 'visible' && !this.isVisible) {
65
+ if ((0, session_1.isSessionExpired)('pageVisibility', this.sessionTimeout)) {
66
+ this.send('page_view', {
67
+ page_path: location.pathname,
68
+ page_location: location.href,
69
+ page_title: document.title,
70
+ });
71
+ }
72
+ (0, session_1.updateSessionTimestamp)('pageVisibility');
73
+ }
74
+ this.lastChangeTime = now;
75
+ this.isVisible = document.visibilityState === 'visible';
76
+ }
77
+ onBeforeUnload() {
78
+ if (this.isVisible) {
79
+ const duration = Date.now() - this.lastChangeTime;
80
+ this.send(this.eventName, {
81
+ visibility_state: 'visible',
82
+ visibility_duration: duration,
83
+ page_path: location.pathname,
84
+ });
85
+ }
86
+ }
87
+ remove() {
88
+ document.removeEventListener('visibilitychange', this.boundVisibilityChange);
89
+ window.removeEventListener('beforeunload', this.boundBeforeUnload);
90
+ }
91
+ }
92
+ exports.PageVisibilityTracker = PageVisibilityTracker;
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS12aXNpYmlsaXR5LXRyYWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGx1Z2lucy9wYWdlLXZpc2liaWxpdHktdHJhY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxnREFBOEU7QUFFOUU7Ozs7Ozs7R0FPRztBQUNILE1BQWEscUJBQXFCO0lBQ3RCLElBQUksQ0FBZTtJQUNuQixtQkFBbUIsQ0FBVTtJQUM3QixjQUFjLENBQVM7SUFDdkIsU0FBUyxDQUFTO0lBQ2xCLFNBQVMsQ0FBNkM7SUFDdEQsY0FBYyxDQUFTO0lBQ3ZCLFNBQVMsQ0FBVTtJQUNuQixxQkFBcUIsQ0FBYTtJQUNsQyxpQkFBaUIsQ0FBYTtJQUV0QyxZQUFZLElBQWtCLEVBQUUsT0FBc0M7UUFDbEUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE9BQU8sRUFBRSxtQkFBbUIsSUFBSSxLQUFLLENBQUM7UUFDakUsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLEVBQUUsY0FBYyxJQUFJLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxTQUFTLElBQUksaUJBQWlCLENBQUM7UUFDekQsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsU0FBUyxDQUFDO1FBRXBDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUM7UUFFeEQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXhELFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMxRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWhFLElBQUEsZ0NBQXNCLEVBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUV6QyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNuQixTQUFTLEVBQUUsUUFBUSxDQUFDLFFBQVE7Z0JBQzVCLGFBQWEsRUFBRSxRQUFRLENBQUMsSUFBSTtnQkFDNUIsVUFBVSxFQUFFLFFBQVEsQ0FBQyxLQUFLO2FBQzdCLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQjtRQUN0QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkIsTUFBTSxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDM0MsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFFNUQsSUFBSSxNQUFNLEdBQTRCO1lBQ2xDLGdCQUFnQixFQUFFLGFBQWE7WUFDL0IsbUJBQW1CLEVBQUUsUUFBUTtZQUM3QixTQUFTLEVBQUUsUUFBUSxDQUFDLFFBQVE7U0FDL0IsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hDLElBQUksUUFBUSxLQUFLLElBQUksRUFBRTtnQkFDbkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUM7Z0JBQ3hELE9BQU87YUFDVjtZQUNELE1BQU0sR0FBRyxRQUFRLENBQUM7U0FDckI7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFbEMsc0RBQXNEO1FBQ3RELElBQUksUUFBUSxDQUFDLGVBQWUsS0FBSyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzNELElBQUksSUFBQSwwQkFBZ0IsRUFBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUU7Z0JBQ3pELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUNuQixTQUFTLEVBQUUsUUFBUSxDQUFDLFFBQVE7b0JBQzVCLGFBQWEsRUFBRSxRQUFRLENBQUMsSUFBSTtvQkFDNUIsVUFBVSxFQUFFLFFBQVEsQ0FBQyxLQUFLO2lCQUM3QixDQUFDLENBQUM7YUFDTjtZQUNELElBQUEsZ0NBQXNCLEVBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUM1QztRQUVELElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUM7SUFDNUQsQ0FBQztJQUVPLGNBQWM7UUFDbEIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDdEIsZ0JBQWdCLEVBQUUsU0FBUztnQkFDM0IsbUJBQW1CLEVBQUUsUUFBUTtnQkFDN0IsU0FBUyxFQUFFLFFBQVEsQ0FBQyxRQUFRO2FBQy9CLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVELE1BQU07UUFDRixRQUFRLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDN0UsTUFBTSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2RSxDQUFDO0NBQ0o7QUE1RkQsc0RBNEZDIn0=
@@ -0,0 +1,20 @@
1
+ import { GA4Plugin, SendFunction, UrlChangeTrackerOptions } from '../types/plugins';
2
+ /**
3
+ * Automatically tracks URL changes in Single Page Applications.
4
+ *
5
+ * Intercepts `history.pushState()`, optionally `history.replaceState()`,
6
+ * and `popstate` events, sending a `page_view` event for each navigation.
7
+ */
8
+ export declare class UrlChangeTracker implements GA4Plugin {
9
+ private send;
10
+ private trackReplaceState;
11
+ private shouldTrackUrlChange?;
12
+ private hitFilter?;
13
+ private currentPath;
14
+ private originalPushState;
15
+ private originalReplaceState;
16
+ private boundPopState;
17
+ constructor(send: SendFunction, options?: UrlChangeTrackerOptions);
18
+ private onUrlChange;
19
+ remove(): void;
20
+ }
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UrlChangeTracker = void 0;
4
+ /**
5
+ * Automatically tracks URL changes in Single Page Applications.
6
+ *
7
+ * Intercepts `history.pushState()`, optionally `history.replaceState()`,
8
+ * and `popstate` events, sending a `page_view` event for each navigation.
9
+ */
10
+ class UrlChangeTracker {
11
+ send;
12
+ trackReplaceState;
13
+ shouldTrackUrlChange;
14
+ hitFilter;
15
+ currentPath;
16
+ originalPushState;
17
+ originalReplaceState;
18
+ boundPopState;
19
+ constructor(send, options) {
20
+ this.send = send;
21
+ this.trackReplaceState = options?.trackReplaceState ?? false;
22
+ this.shouldTrackUrlChange = options?.shouldTrackUrlChange;
23
+ this.hitFilter = options?.hitFilter;
24
+ this.currentPath = location.pathname + location.search;
25
+ this.originalPushState = history.pushState;
26
+ this.originalReplaceState = history.replaceState;
27
+ this.boundPopState = this.onUrlChange.bind(this);
28
+ // Monkey-patch history.pushState
29
+ const self = this;
30
+ history.pushState = function (...args) {
31
+ self.originalPushState.apply(history, args);
32
+ self.onUrlChange();
33
+ };
34
+ // Optionally monkey-patch history.replaceState
35
+ if (this.trackReplaceState) {
36
+ history.replaceState = function (...args) {
37
+ self.originalReplaceState.apply(history, args);
38
+ self.onUrlChange();
39
+ };
40
+ }
41
+ window.addEventListener('popstate', this.boundPopState);
42
+ }
43
+ onUrlChange() {
44
+ // Use setTimeout to ensure the URL has been updated
45
+ setTimeout(() => {
46
+ const newPath = location.pathname + location.search;
47
+ const shouldTrack = this.shouldTrackUrlChange
48
+ ? this.shouldTrackUrlChange(newPath, this.currentPath)
49
+ : newPath !== this.currentPath;
50
+ if (!shouldTrack)
51
+ return;
52
+ this.currentPath = newPath;
53
+ let params = {
54
+ page_path: location.pathname,
55
+ page_title: document.title,
56
+ page_location: location.href,
57
+ };
58
+ if (this.hitFilter) {
59
+ const filtered = this.hitFilter(params);
60
+ if (filtered === null)
61
+ return;
62
+ params = filtered;
63
+ }
64
+ this.send('page_view', params);
65
+ }, 0);
66
+ }
67
+ remove() {
68
+ window.removeEventListener('popstate', this.boundPopState);
69
+ history.pushState = this.originalPushState;
70
+ if (this.trackReplaceState) {
71
+ history.replaceState = this.originalReplaceState;
72
+ }
73
+ }
74
+ }
75
+ exports.UrlChangeTracker = UrlChangeTracker;
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLWNoYW5nZS10cmFja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BsdWdpbnMvdXJsLWNoYW5nZS10cmFja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOzs7OztHQUtHO0FBQ0gsTUFBYSxnQkFBZ0I7SUFDakIsSUFBSSxDQUFlO0lBQ25CLGlCQUFpQixDQUFVO0lBQzNCLG9CQUFvQixDQUFtRDtJQUN2RSxTQUFTLENBQXdDO0lBQ2pELFdBQVcsQ0FBUztJQUNwQixpQkFBaUIsQ0FBdUI7SUFDeEMsb0JBQW9CLENBQTBCO0lBQzlDLGFBQWEsQ0FBYTtJQUVsQyxZQUFZLElBQWtCLEVBQUUsT0FBaUM7UUFDN0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sRUFBRSxpQkFBaUIsSUFBSSxLQUFLLENBQUM7UUFDN0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE9BQU8sRUFBRSxvQkFBb0IsQ0FBQztRQUMxRCxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxTQUFTLENBQUM7UUFFcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDdkQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDM0MsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqRCxpQ0FBaUM7UUFDakMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxTQUFTLEdBQUcsVUFBVSxHQUFHLElBQXNDO1lBQ25FLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUM7UUFFRiwrQ0FBK0M7UUFDL0MsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDeEIsT0FBTyxDQUFDLFlBQVksR0FBRyxVQUFVLEdBQUcsSUFBeUM7Z0JBQ3pFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkIsQ0FBQyxDQUFDO1NBQ0w7UUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU8sV0FBVztRQUNmLG9EQUFvRDtRQUNwRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBRXBELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxvQkFBb0I7Z0JBQ3pDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ3RELENBQUMsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUVuQyxJQUFJLENBQUMsV0FBVztnQkFBRSxPQUFPO1lBRXpCLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO1lBRTNCLElBQUksTUFBTSxHQUE0QjtnQkFDbEMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxRQUFRO2dCQUM1QixVQUFVLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0JBQzFCLGFBQWEsRUFBRSxRQUFRLENBQUMsSUFBSTthQUMvQixDQUFDO1lBRUYsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNoQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLFFBQVEsS0FBSyxJQUFJO29CQUFFLE9BQU87Z0JBQzlCLE1BQU0sR0FBRyxRQUFRLENBQUM7YUFDckI7WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQsTUFBTTtRQUNGLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNELE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQzNDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3hCLE9BQU8sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1NBQ3BEO0lBQ0wsQ0FBQztDQUNKO0FBM0VELDRDQTJFQyJ9
@@ -0,0 +1,78 @@
1
+ export type SendFunction = (eventName: string, params: Record<string, unknown>) => void;
2
+ export interface GA4Plugin {
3
+ remove(): void;
4
+ }
5
+ export interface EventTrackerOptions {
6
+ events?: string[];
7
+ attributePrefix?: string;
8
+ hitFilter?: (params: Record<string, unknown>, element: Element, event: Event) => Record<string, unknown> | null;
9
+ }
10
+ export interface OutboundLinkTrackerOptions {
11
+ events?: string[];
12
+ linkSelector?: string;
13
+ shouldTrackOutboundLink?: (link: Element, parseUrl: (url: string) => {
14
+ hostname: string;
15
+ protocol: string;
16
+ href: string;
17
+ }) => boolean;
18
+ eventName?: string;
19
+ attributePrefix?: string;
20
+ hitFilter?: (params: Record<string, unknown>, element: Element, event: Event) => Record<string, unknown> | null;
21
+ }
22
+ export interface OutboundFormTrackerOptions {
23
+ formSelector?: string;
24
+ shouldTrackOutboundForm?: (form: HTMLFormElement, parseUrl: (url: string) => {
25
+ hostname: string;
26
+ protocol: string;
27
+ href: string;
28
+ }) => boolean;
29
+ eventName?: string;
30
+ hitFilter?: (params: Record<string, unknown>, element: Element, event: Event) => Record<string, unknown> | null;
31
+ }
32
+ export interface PageVisibilityTrackerOptions {
33
+ sendInitialPageview?: boolean;
34
+ sessionTimeout?: number;
35
+ timeZone?: string;
36
+ eventName?: string;
37
+ hitFilter?: (params: Record<string, unknown>) => Record<string, unknown> | null;
38
+ }
39
+ export interface UrlChangeTrackerOptions {
40
+ shouldTrackUrlChange?: (newPath: string, oldPath: string) => boolean;
41
+ trackReplaceState?: boolean;
42
+ hitFilter?: (params: Record<string, unknown>) => Record<string, unknown> | null;
43
+ }
44
+ export interface ImpressionElementConfig {
45
+ id: string;
46
+ threshold?: number;
47
+ trackFirstImpressionOnly?: boolean;
48
+ }
49
+ export interface ImpressionTrackerOptions {
50
+ elements?: Array<string | ImpressionElementConfig>;
51
+ rootMargin?: string;
52
+ attributePrefix?: string;
53
+ eventName?: string;
54
+ hitFilter?: (params: Record<string, unknown>, element: Element) => Record<string, unknown> | null;
55
+ }
56
+ export interface CleanUrlTrackerOptions {
57
+ stripQuery?: boolean;
58
+ queryParamsAllowlist?: string[];
59
+ queryParamsDenylist?: string[];
60
+ trailingSlash?: 'add' | 'remove';
61
+ urlFilter?: (url: string) => string;
62
+ }
63
+ export interface MediaQueryDefinitionItem {
64
+ name: string;
65
+ media: string;
66
+ }
67
+ export interface MediaQueryDefinition {
68
+ name: string;
69
+ dimensionIndex?: number;
70
+ items: MediaQueryDefinitionItem[];
71
+ }
72
+ export interface MediaQueryTrackerOptions {
73
+ definitions?: MediaQueryDefinition[];
74
+ changeTemplate?: (oldValue: string, newValue: string) => string;
75
+ changeTimeout?: number;
76
+ eventName?: string;
77
+ hitFilter?: (params: Record<string, unknown>) => Record<string, unknown> | null;
78
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90eXBlcy9wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -1 +1 @@
1
- {"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/types/datalayer.ts","../src/datalayer.ts","../src/ga4/ga4option.ts","../src/types/gtag.ts","../src/types/global.ts","../src/ga4/ga4.ts","../src/ga4/index.ts","../src/index.ts","../src/util.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts"],"fileInfos":[{"version":"6a6b471e7e43e15ef6f8fe617a22ce4ecb0e34efa6c3dfcfe7cebd392bcca9d2","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","27147504487dc1159369da4f4da8a26406364624fa9bc3db632f7d94a5bae2c3","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"fcd3ecc9f764f06f4d5c467677f4f117f6abf49dee6716283aa204ff1162498b","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"5114a95689b63f96b957e00216bc04baf9e1a1782aa4d8ee7e5e9acbf768e301","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"ab22100fdd0d24cfc2cc59d0a00fc8cf449830d9c4030dc54390a46bd562e929","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"36ae84ccc0633f7c0787bc6108386c8b773e95d3b052d9464a99cd9b8795fbec","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"189c0703923150aa30673fa3de411346d727cc44a11c75d05d7cf9ef095daa22","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},{"version":"4505cd6a0299cff3e39ddf9230f2fa71f51876c1499d6410437092678f4e84e6","signature":"c27bbc52e3f861f48cb5967ae5291c81017e22ac4c98a5ce309bfccd1bc9552f"},{"version":"eb2942624701841575b56359147e7ea33e6ca581e09d4c721faa9a7c93835818","signature":"bbd1a681210a08104676bd8e6f7f150691e47ff8eda7c4ffe05918a1d5817ce2"},{"version":"7443e1a6295df9ee39c9a5767b35ce1d541b2df5f73342a35f9b03702ef3696c","signature":"18702c5a5b1261e42757524b7d389aec3f1908f2f54fd0b04cba5ed0b6d5f6c1"},{"version":"16999cd3ff740d294f6e24055da2fb2b44feaacf936dbf5b91ca7ed7d10b529d","signature":"c327ab63d0f885684f6073fbda0336cb514d8dbbea80e210136e73353586bb21"},{"version":"ef2b57bf4bcc97f7f2c402b171e3883d278fd68ff1c1f5c5afa32d314bd079e5","signature":"83bb03806cdc796898d2c59cabc02d847b77256fc60f2a816cdea1733e403931","affectsGlobalScope":true},{"version":"ee17c63b9fc3a5d026a438bab500eba0eef32d36f36dbe739e1d60dd4c664be7","signature":"d068f287ab997e5fe33244d347378f7eb137731353f1c791722c60a5af73ef58"},{"version":"a1552f2ab1a7225f25e54b15af03a040ec5d07e67a5c3d5bd56d9ec13062d5af","signature":"ad2e67574fad659d6ac13584f527547d8eb99610c877c79a7bead55983f01b5e"},{"version":"89c30775f6ceed8dcdd43a4ce3e2274a7ae7277a2eeb8ea630602233d39090b2","signature":"b4fd030c4dedf1e2a2ed45ca09a731a4b266d931b9758406046cbc117934f42c"},{"version":"7dc733f749f435afdb7f0cc5ed617d54e692694948a06e058ab23616dc55f308","signature":"b94a542f623be983f86a1ac91139ed9fbb46728bcf70282eca6b5073b567328e"},"7e771891adaa85b690266bc37bd6eb43bc57eecc4b54693ead36467e7369952a","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"f749812878fecfa53cfc13b36e5d35086fb6377983a9df44175da83ccc23af1f","affectsGlobalScope":true},"7d2e3fea24c712c99c03ad8f556abedbfe105f87f1be10b95dbd409d24bc05a3",{"version":"211e3f15fbced4ab4be19f49ffa990b9ff20d749d33b65ff753be691e7616239","affectsGlobalScope":true},"374ca798f244e464346f14301dc2a8b4b111af1a83b49fffef5906c338a1f922","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","e596c9bb2f29a2699fdd4ae89139612652245192f67f45617c5a4b20832aaae9","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","1cdcfc1f624d6c08aa12c73935f6e13f095919cd99edf95752951796eb225729","216717f17c095cde1dc19375e1ab3af0a4a485355860c077a4f9d6ea59fab5b5","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true},{"version":"00dee7cdca8b8420c47ea4a31a34b8e8294013ebc4f463fd941e867e7bf05029","affectsGlobalScope":true},"80473bd0dd90ca1e166514c2dfead9d5803f9c51418864ca35abbeec6e6847e1","1c84b46267610a34028edfd0d035509341751262bac1062857f3c8df7aff7153","3bd1b21f21d18995315d232c5c7e868651e109396f3ca48fa8ab15f57a20d911","a3d541d303ee505053f5dcbf9fafb65cac3d5631037501cd616195863a6c5740","8d3c583a07e0c37e876908c2d5da575019f689df8d9fa4c081d99119d53dba22","2c828a5405191d006115ab34e191b8474bc6c86ffdc401d1a9864b1b6e088a58",{"version":"e630e5528e899219ae319e83bef54bf3bcb91b01d76861ecf881e8e614b167f0","affectsGlobalScope":true},"bcebb922784739bdb34c18ee51095d25a92b560c78ccd2eaacd6bd00f7443d83","7ee6ed878c4528215c82b664fe0cfe80e8b4da6c0d4cc80869367868774db8b1","b0973c3cbcdc59b37bf477731d468696ecaf442593ec51bab497a613a580fe30",{"version":"4989e92ba5b69b182d2caaea6295af52b7dc73a4f7a2e336a676722884e7139d","affectsGlobalScope":true},{"version":"0715e4cd28ad471b2a93f3e552ff51a3ae423417a01a10aa1d3bc7c6b95059d6","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","210d54cd652ec0fec8c8916e4af59bb341065576ecda039842f9ffb2e908507c","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","4f3fdeba4e28e21aa719c081b8dc8f91d47e12e773389b9d35679c08151c9d37","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","69ee23dd0d215b09907ad30d23f88b7790c93329d1faf31d7835552a10cf7cbf","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","f69ff39996a61a0dd10f4bce73272b52e8024a4d58b13ab32bf4712909d0a2b7",{"version":"3c4ba1dd9b12ffa284b565063108f2f031d150ea15b8fafbdc17f5d2a07251f3","affectsGlobalScope":true},"e10177274a35a9d07c825615340b2fcde2f610f53f3fb40269fd196b4288dda6","1422cd9e705adcc09088fda85a900c2b70e3ad36ea85846f68bd1a884cdf4e2b","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"a73ae8c0e62103bb9e21bb6538700881bf135b9a8b125b857ec68edfa0da4ed3","affectsGlobalScope":true},{"version":"e1c1b2fbe236bf7ee3e342eeae7e20efb8988a0ac7da1cbbfa2c1f66b76c3423","affectsGlobalScope":true},"868831cab82b65dfe1d68180e898af1f2101e89ba9b754d1db6fb8cc2fac1921","0fe8985a28f82c450a04a6edf1279d7181c0893f37da7d2a27f8efd4fd5edb03","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa",{"version":"52120bb7e4583612225bdf08e7c12559548170f11e660d33a33623bae9bbdbba","affectsGlobalScope":true},"8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a6dd3dba8e665ac43d279e0fdf5219edda0eed69b5e9a5061f46cd6a65c4f7a1"],"root":[[45,53]],"options":{"declaration":true,"esModuleInterop":true,"inlineSourceMap":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./main","rootDir":"../src","strict":true,"target":9},"fileIdsList":[[54,100],[57,100],[58,63,91,100],[59,70,71,78,88,99,100],[59,60,70,78,100],[61,100],[62,63,71,79,100],[63,88,96,100],[64,66,70,78,100],[65,100],[66,67,100],[70,100],[68,70,100],[70,71,72,88,99,100],[70,71,72,85,88,91,100],[100,104],[100],[66,73,78,88,99,100],[70,71,73,74,78,88,96,99,100],[73,75,88,96,99,100],[54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106],[70,76,100],[77,99,100],[66,70,78,88,100],[79,100],[80,100],[57,81,100],[82,98,100,104],[83,100],[84,100],[70,85,86,100],[85,87,100,102],[58,70,88,89,90,91,100],[58,88,90,100],[88,89,100],[91,100],[92,100],[70,94,95,100],[94,95,100],[63,78,88,96,100],[97,100],[78,98,100],[58,73,84,99,100],[63,100],[88,100,101],[100,102],[100,103],[58,63,70,72,81,88,99,100,102,104],[88,100,105],[45,100],[45,47,48,49,100],[50,100],[46,51,100],[45,48,100],[47,48],[50],[46,50],[45,48]],"referencedMap":[[54,1],[55,1],[57,2],[58,3],[59,4],[60,5],[61,6],[62,7],[63,8],[64,9],[65,10],[66,11],[67,11],[69,12],[68,13],[70,12],[71,14],[72,15],[56,16],[106,17],[73,18],[74,19],[75,20],[107,21],[76,22],[77,23],[78,24],[79,25],[80,26],[81,27],[82,28],[83,29],[84,30],[85,31],[86,31],[87,32],[88,33],[90,34],[89,35],[91,36],[92,37],[93,17],[94,38],[95,39],[96,40],[97,41],[98,42],[99,43],[100,44],[101,45],[102,46],[103,47],[104,48],[105,49],[43,17],[44,17],[8,17],[10,17],[9,17],[2,17],[11,17],[12,17],[13,17],[14,17],[15,17],[16,17],[17,17],[18,17],[3,17],[4,17],[22,17],[19,17],[20,17],[21,17],[23,17],[24,17],[25,17],[5,17],[26,17],[27,17],[28,17],[29,17],[6,17],[33,17],[30,17],[31,17],[32,17],[34,17],[7,17],[35,17],[40,17],[41,17],[36,17],[37,17],[38,17],[39,17],[1,17],[42,17],[46,50],[50,51],[47,17],[51,52],[52,53],[45,17],[49,54],[48,17],[53,17]],"exportedModulesMap":[[54,1],[55,1],[57,2],[58,3],[59,4],[60,5],[61,6],[62,7],[63,8],[64,9],[65,10],[66,11],[67,11],[69,12],[68,13],[70,12],[71,14],[72,15],[56,16],[106,17],[73,18],[74,19],[75,20],[107,21],[76,22],[77,23],[78,24],[79,25],[80,26],[81,27],[82,28],[83,29],[84,30],[85,31],[86,31],[87,32],[88,33],[90,34],[89,35],[91,36],[92,37],[93,17],[94,38],[95,39],[96,40],[97,41],[98,42],[99,43],[100,44],[101,45],[102,46],[103,47],[104,48],[105,49],[43,17],[44,17],[8,17],[10,17],[9,17],[2,17],[11,17],[12,17],[13,17],[14,17],[15,17],[16,17],[17,17],[18,17],[3,17],[4,17],[22,17],[19,17],[20,17],[21,17],[23,17],[24,17],[25,17],[5,17],[26,17],[27,17],[28,17],[29,17],[6,17],[33,17],[30,17],[31,17],[32,17],[34,17],[7,17],[35,17],[40,17],[41,17],[36,17],[37,17],[38,17],[39,17],[1,17],[42,17],[50,55],[51,56],[52,57],[49,58]],"semanticDiagnosticsPerFile":[54,55,57,58,59,60,61,62,63,64,65,66,67,69,68,70,71,72,56,106,73,74,75,107,76,77,78,79,80,81,82,83,84,85,86,87,88,90,89,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,43,44,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,33,30,31,32,34,7,35,40,41,36,37,38,39,1,42,46,50,47,51,52,45,49,48,53]},"version":"5.0.4"}
1
+ {"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/types/datalayer.ts","../src/datalayer.ts","../src/ga4/ga4option.ts","../src/types/gtag.ts","../src/types/plugins.ts","../src/types/global.ts","../src/ga4/ga4.ts","../src/ga4/index.ts","../src/helpers/delegate.ts","../src/plugins/event-tracker.ts","../src/helpers/parse-url.ts","../src/plugins/outbound-link-tracker.ts","../src/plugins/outbound-form-tracker.ts","../src/helpers/session.ts","../src/plugins/page-visibility-tracker.ts","../src/plugins/url-change-tracker.ts","../src/helpers/dom-ready.ts","../src/plugins/impression-tracker.ts","../src/plugins/clean-url-tracker.ts","../src/helpers/debounce.ts","../src/plugins/media-query-tracker.ts","../src/index.ts","../src/util.ts","../src/plugins/index.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts"],"fileInfos":[{"version":"6a6b471e7e43e15ef6f8fe617a22ce4ecb0e34efa6c3dfcfe7cebd392bcca9d2","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","27147504487dc1159369da4f4da8a26406364624fa9bc3db632f7d94a5bae2c3","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"fcd3ecc9f764f06f4d5c467677f4f117f6abf49dee6716283aa204ff1162498b","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"5114a95689b63f96b957e00216bc04baf9e1a1782aa4d8ee7e5e9acbf768e301","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"ab22100fdd0d24cfc2cc59d0a00fc8cf449830d9c4030dc54390a46bd562e929","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"36ae84ccc0633f7c0787bc6108386c8b773e95d3b052d9464a99cd9b8795fbec","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"189c0703923150aa30673fa3de411346d727cc44a11c75d05d7cf9ef095daa22","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},{"version":"9da5b9c5bc8aa5043c6b1d7d5255490f436f700ce4322ae9161be0b101766a82","signature":"c27bbc52e3f861f48cb5967ae5291c81017e22ac4c98a5ce309bfccd1bc9552f"},{"version":"b5bd2d3f3c8dc813976382dd444d589d7fa6cbd0c9c3d546bd7a5e09ed97b15b","signature":"bbd1a681210a08104676bd8e6f7f150691e47ff8eda7c4ffe05918a1d5817ce2"},{"version":"113df1d01e65950478f0fd5f9d98b9e7b7fe1363d8f11395e8942cf3be9ef69a","signature":"18702c5a5b1261e42757524b7d389aec3f1908f2f54fd0b04cba5ed0b6d5f6c1"},{"version":"2e1b284e57cc4707f43bcf8294d1ee4fbb7f42f40901dea9dd3ac2bcf316583f","signature":"c327ab63d0f885684f6073fbda0336cb514d8dbbea80e210136e73353586bb21"},{"version":"9c6f9bc9aa4412eea9311d1c41b3259072d842edcfcc2e82ce36748b61b27deb","signature":"a06a00467e466e041674adb8a43f60c1afecc657a4f12cd6b2f09131a64b8252"},{"version":"617d6d0ddb962f188c1690cf83e7b8d46e52662983560a96c34dca56ae1eeaba","signature":"83bb03806cdc796898d2c59cabc02d847b77256fc60f2a816cdea1733e403931","affectsGlobalScope":true},{"version":"036eda34aa53ac26be7c4ea6af096fa046fe7c2bdb8b037f848d12d7178cc310","signature":"74f216a65fcc499722cfcfdd30e0575c06c53ec20664a57075d3deb50e36012c"},{"version":"65aca6ae98586a3865243fc2e89e3cc21b66a07e19133e94c1d86c3b5d8d43d1","signature":"ad2e67574fad659d6ac13584f527547d8eb99610c877c79a7bead55983f01b5e"},{"version":"df0e1c3264505516dcf6f18236419e6c9793d9747f0b2053b1a96eed27260357","signature":"fceb7628f4f3f667b4bb2cf282a23a4f094f595223881734bb67dc21f7c5b47e"},{"version":"dd03073cc59e2b65af94f4586934bcf1a46b44f6130082b9ab75126b4a7ada77","signature":"a352fd0adf5cd7f90ab0e24eeb319ae84e09e34f60425ce01e742299e4c876bc"},{"version":"eaefe10ad0e710e7c73138dabd28df2223c9fd266383b33191da42ab8acc2267","signature":"5f367d89ff6e3eca35ca5b099b92643fc7059b6307d2bdf99cd0865b41c7fd0f"},{"version":"a9b5b330ece3364b5e2654c7cac14d57f61a455ab90c776a7a0b8d7e9a5ad93d","signature":"89cc670fdf3bf9343793099c8749fbd3ad9ae61c1240305288386218cbb6a1d7"},{"version":"88387f49bbc3f741828f2ecfdf17410d6402a3b23d64551d41358080581118ed","signature":"3d6722593d3d982ebe66493778dd58688a3fea3cf9818d759982cd2b34ccb75f"},{"version":"7b1224b23f089289c17fac23029ed30781c45775f71e48c1cc8ffaf4a5516e9d","signature":"61e12a731602d77be7532fce46ec6f3743f5fccc1cf2927515db7a565c2e8e57"},{"version":"cbb3c37c6944e1fcb47b741405fc87b4f39461b481d46b68840e9006fc6ec363","signature":"afeca58b65ef4bb44a995d542ce585e270ae5cb0973de5e21cd8eb7ab2569b5a"},{"version":"5eb6ff261fa05696102ee9f93439e65b2847b8133ec7d0ba68db063dc0756d6f","signature":"4a9049272ba5f196e65ec9bc58a28eb40840c15ef8418300a3ee155898853aaa"},{"version":"d9228610f211f39337aadb9af14a64c094d2611b8299636fb8c7009d7411b2bb","signature":"dd5702b6710e976502e859129a92882a9b7e1ebc6797171721f3ccd2a6c9abc8"},{"version":"376aa5ccdbb6c8f083d3db79b2ec0d62ebb351007612e0be0fbc2a919417603c","signature":"004e87829e78b5d4a21b4070f2b2ed8bcaa608c06960f4409ca452cf268b5f72"},{"version":"47e4b70a35d3c4452dba8d7afb42aa10ceef614735028a86a0af1a249532efe6","signature":"dbbd6dbc43a087f55d020f87419fa71d14717afc8648b804f146956ce165fd96"},{"version":"474e7c5cc60679670e7046a4899c520370abcb59576ad718bdebbd0fea54a523","signature":"05203779cd0c1d8727b812128057741c04d89f9ecb585a343fe35aeb402981a5"},{"version":"cf4bbbcf90e0d15b8574e035fa93d2339782b90f6500cae8314e32ee278f124d","signature":"37e8d6ec4ccb6d5ab6d6ff6ff321d456c25c03fb0af9e658cd18125b905209b6"},{"version":"6267cf6c8cc85605609dbfbae1c1523b88292d2b21f086516f26965cd7f1a36e","signature":"dcf0495af6fcf42a6220fa42c8af25b20297beecf463825afbaa1124bcde8e6d"},{"version":"5bc6485455a4146ce1d55ad489e23881afb4382948ff86ccd43fe34b0446d41d","signature":"b94a542f623be983f86a1ac91139ed9fbb46728bcf70282eca6b5073b567328e"},{"version":"33e15facf0f857fc31a4e071c0476cbf129dbeb83d11c410d8290fbac6f5640b","signature":"f3587974a89f3d5ec6827c0e3411fdf12c163761e99653599074930c0c8ef279"},"7e771891adaa85b690266bc37bd6eb43bc57eecc4b54693ead36467e7369952a","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"f749812878fecfa53cfc13b36e5d35086fb6377983a9df44175da83ccc23af1f","affectsGlobalScope":true},"7d2e3fea24c712c99c03ad8f556abedbfe105f87f1be10b95dbd409d24bc05a3",{"version":"211e3f15fbced4ab4be19f49ffa990b9ff20d749d33b65ff753be691e7616239","affectsGlobalScope":true},"374ca798f244e464346f14301dc2a8b4b111af1a83b49fffef5906c338a1f922","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","e596c9bb2f29a2699fdd4ae89139612652245192f67f45617c5a4b20832aaae9","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","1cdcfc1f624d6c08aa12c73935f6e13f095919cd99edf95752951796eb225729","216717f17c095cde1dc19375e1ab3af0a4a485355860c077a4f9d6ea59fab5b5","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true},{"version":"00dee7cdca8b8420c47ea4a31a34b8e8294013ebc4f463fd941e867e7bf05029","affectsGlobalScope":true},"80473bd0dd90ca1e166514c2dfead9d5803f9c51418864ca35abbeec6e6847e1","1c84b46267610a34028edfd0d035509341751262bac1062857f3c8df7aff7153","3bd1b21f21d18995315d232c5c7e868651e109396f3ca48fa8ab15f57a20d911","a3d541d303ee505053f5dcbf9fafb65cac3d5631037501cd616195863a6c5740","8d3c583a07e0c37e876908c2d5da575019f689df8d9fa4c081d99119d53dba22","2c828a5405191d006115ab34e191b8474bc6c86ffdc401d1a9864b1b6e088a58",{"version":"e630e5528e899219ae319e83bef54bf3bcb91b01d76861ecf881e8e614b167f0","affectsGlobalScope":true},"bcebb922784739bdb34c18ee51095d25a92b560c78ccd2eaacd6bd00f7443d83","7ee6ed878c4528215c82b664fe0cfe80e8b4da6c0d4cc80869367868774db8b1","b0973c3cbcdc59b37bf477731d468696ecaf442593ec51bab497a613a580fe30",{"version":"4989e92ba5b69b182d2caaea6295af52b7dc73a4f7a2e336a676722884e7139d","affectsGlobalScope":true},{"version":"0715e4cd28ad471b2a93f3e552ff51a3ae423417a01a10aa1d3bc7c6b95059d6","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","210d54cd652ec0fec8c8916e4af59bb341065576ecda039842f9ffb2e908507c","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","4f3fdeba4e28e21aa719c081b8dc8f91d47e12e773389b9d35679c08151c9d37","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","69ee23dd0d215b09907ad30d23f88b7790c93329d1faf31d7835552a10cf7cbf","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","f69ff39996a61a0dd10f4bce73272b52e8024a4d58b13ab32bf4712909d0a2b7",{"version":"3c4ba1dd9b12ffa284b565063108f2f031d150ea15b8fafbdc17f5d2a07251f3","affectsGlobalScope":true},"e10177274a35a9d07c825615340b2fcde2f610f53f3fb40269fd196b4288dda6","1422cd9e705adcc09088fda85a900c2b70e3ad36ea85846f68bd1a884cdf4e2b","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"a73ae8c0e62103bb9e21bb6538700881bf135b9a8b125b857ec68edfa0da4ed3","affectsGlobalScope":true},{"version":"e1c1b2fbe236bf7ee3e342eeae7e20efb8988a0ac7da1cbbfa2c1f66b76c3423","affectsGlobalScope":true},"868831cab82b65dfe1d68180e898af1f2101e89ba9b754d1db6fb8cc2fac1921","0fe8985a28f82c450a04a6edf1279d7181c0893f37da7d2a27f8efd4fd5edb03","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa",{"version":"52120bb7e4583612225bdf08e7c12559548170f11e660d33a33623bae9bbdbba","affectsGlobalScope":true},"8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a6dd3dba8e665ac43d279e0fdf5219edda0eed69b5e9a5061f46cd6a65c4f7a1"],"root":[[45,68]],"options":{"declaration":true,"esModuleInterop":true,"inlineSourceMap":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./main","rootDir":"../src","strict":true,"target":9},"fileIdsList":[[69,115],[72,115],[73,78,106,115],[74,85,86,93,103,114,115],[74,75,85,93,115],[76,115],[77,78,86,94,115],[78,103,111,115],[79,81,85,93,115],[80,115],[81,82,115],[85,115],[83,85,115],[85,86,87,103,114,115],[85,86,87,100,103,106,115],[115,119],[115],[81,88,93,103,114,115],[85,86,88,89,93,103,111,114,115],[88,90,103,111,114,115],[69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121],[85,91,115],[92,114,115],[81,85,93,103,115],[94,115],[95,115],[72,96,115],[97,113,115,119],[98,115],[99,115],[85,100,101,115],[100,102,115,117],[73,85,103,104,105,106,115],[73,103,105,115],[103,104,115],[106,115],[107,115],[85,109,110,115],[109,110,115],[78,93,103,111,115],[112,115],[93,113,115],[73,88,99,114,115],[78,115],[103,115,116],[115,117],[115,118],[73,78,85,87,96,103,114,115,117,119],[103,115,120],[45,115],[45,47,48,49,50,115],[51,115],[46,49,52,54,56,57,59,60,62,63,65,115],[49,115],[49,53,115],[49,61,115],[54,56,57,59,60,62,63,65,115],[49,64,115],[49,53,55,115],[49,58,115],[45,48,115],[47,48,49],[51],[46,49,51,54,56,57,59,60,62,63,65],[49],[54,56,57,59,60,62,63,65],[45,48]],"referencedMap":[[69,1],[70,1],[72,2],[73,3],[74,4],[75,5],[76,6],[77,7],[78,8],[79,9],[80,10],[81,11],[82,11],[84,12],[83,13],[85,12],[86,14],[87,15],[71,16],[121,17],[88,18],[89,19],[90,20],[122,21],[91,22],[92,23],[93,24],[94,25],[95,26],[96,27],[97,28],[98,29],[99,30],[100,31],[101,31],[102,32],[103,33],[105,34],[104,35],[106,36],[107,37],[108,17],[109,38],[110,39],[111,40],[112,41],[113,42],[114,43],[115,44],[116,45],[117,46],[118,47],[119,48],[120,49],[43,17],[44,17],[8,17],[10,17],[9,17],[2,17],[11,17],[12,17],[13,17],[14,17],[15,17],[16,17],[17,17],[18,17],[3,17],[4,17],[22,17],[19,17],[20,17],[21,17],[23,17],[24,17],[25,17],[5,17],[26,17],[27,17],[28,17],[29,17],[6,17],[33,17],[30,17],[31,17],[32,17],[34,17],[7,17],[35,17],[40,17],[41,17],[36,17],[37,17],[38,17],[39,17],[1,17],[42,17],[46,50],[51,51],[47,17],[52,52],[64,17],[53,17],[61,17],[55,17],[58,17],[66,53],[63,54],[54,55],[62,56],[68,57],[65,58],[57,59],[56,59],[59,60],[60,54],[45,17],[50,61],[48,17],[49,17],[67,17]],"exportedModulesMap":[[69,1],[70,1],[72,2],[73,3],[74,4],[75,5],[76,6],[77,7],[78,8],[79,9],[80,10],[81,11],[82,11],[84,12],[83,13],[85,12],[86,14],[87,15],[71,16],[121,17],[88,18],[89,19],[90,20],[122,21],[91,22],[92,23],[93,24],[94,25],[95,26],[96,27],[97,28],[98,29],[99,30],[100,31],[101,31],[102,32],[103,33],[105,34],[104,35],[106,36],[107,37],[108,17],[109,38],[110,39],[111,40],[112,41],[113,42],[114,43],[115,44],[116,45],[117,46],[118,47],[119,48],[120,49],[43,17],[44,17],[8,17],[10,17],[9,17],[2,17],[11,17],[12,17],[13,17],[14,17],[15,17],[16,17],[17,17],[18,17],[3,17],[4,17],[22,17],[19,17],[20,17],[21,17],[23,17],[24,17],[25,17],[5,17],[26,17],[27,17],[28,17],[29,17],[6,17],[33,17],[30,17],[31,17],[32,17],[34,17],[7,17],[35,17],[40,17],[41,17],[36,17],[37,17],[38,17],[39,17],[1,17],[42,17],[51,62],[52,63],[66,64],[63,65],[54,65],[62,65],[68,66],[65,65],[57,65],[56,65],[59,65],[60,65],[50,67]],"semanticDiagnosticsPerFile":[69,70,72,73,74,75,76,77,78,79,80,81,82,84,83,85,86,87,71,121,88,89,90,122,91,92,93,94,95,96,97,98,99,100,101,102,103,105,104,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,43,44,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,33,30,31,32,34,7,35,40,41,36,37,38,39,1,42,46,51,47,52,64,53,61,55,58,66,63,54,62,68,65,57,56,59,60,45,50,48,49,67]},"version":"5.0.4"}
@@ -0,0 +1,95 @@
1
+ # React Integration Guide
2
+
3
+ This guide shows a safe integration pattern for React applications.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install @technoapple/ga4
9
+ ```
10
+
11
+ ## 1) Initialize once
12
+
13
+ Create a small analytics module and initialize GA4 exactly once.
14
+
15
+ ```ts
16
+ // src/analytics.ts
17
+ import {
18
+ ga4,
19
+ EventTracker,
20
+ OutboundLinkTracker,
21
+ UrlChangeTracker,
22
+ } from '@technoapple/ga4';
23
+
24
+ let initialized = false;
25
+
26
+ export function initAnalytics() {
27
+ if (initialized) return;
28
+ initialized = true;
29
+
30
+ ga4.init({ targetId: 'G-XXXXXXX' });
31
+
32
+ ga4.use(EventTracker);
33
+ ga4.use(OutboundLinkTracker);
34
+ ga4.use(UrlChangeTracker, { trackReplaceState: true });
35
+ }
36
+
37
+ export { ga4 };
38
+ ```
39
+
40
+ Call it in your app entry.
41
+
42
+ ```tsx
43
+ // src/main.tsx or src/index.tsx
44
+ import React from 'react';
45
+ import ReactDOM from 'react-dom/client';
46
+ import App from './App';
47
+ import { initAnalytics } from './analytics';
48
+
49
+ initAnalytics();
50
+
51
+ ReactDOM.createRoot(document.getElementById('root')!).render(
52
+ <React.StrictMode>
53
+ <App />
54
+ </React.StrictMode>
55
+ );
56
+ ```
57
+
58
+ ## 2) Send custom events
59
+
60
+ ```tsx
61
+ import { ga4 } from './analytics';
62
+
63
+ export function BuyButton() {
64
+ return (
65
+ <button
66
+ onClick={() => {
67
+ ga4.send('purchase_click', {
68
+ sku: 'plan_pro',
69
+ source: 'pricing_page',
70
+ });
71
+ }}
72
+ >
73
+ Buy now
74
+ </button>
75
+ );
76
+ }
77
+ ```
78
+
79
+ ## 3) Optional cleanup (micro-frontend or test environments)
80
+
81
+ In most SPAs, analytics lives for the app lifetime. If your host mounts/unmounts React apps, clean up listeners:
82
+
83
+ ```ts
84
+ import { ga4 } from './analytics';
85
+
86
+ export function disposeAnalytics() {
87
+ ga4.removeAll();
88
+ }
89
+ ```
90
+
91
+ ## React-specific notes
92
+
93
+ - React Strict Mode can double-invoke lifecycle flows in development. The `initialized` guard prevents duplicate plugin registration.
94
+ - If your router already emits page views, avoid duplicate tracking with `UrlChangeTracker`.
95
+ - Register plugins after `ga4.init(...)`.
@@ -0,0 +1,65 @@
1
+ # Vanilla JavaScript Integration Guide
2
+
3
+ Use this setup for plain JavaScript or TypeScript browser apps.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install @technoapple/ga4
9
+ ```
10
+
11
+ ## Basic setup
12
+
13
+ ```ts
14
+ import {
15
+ ga4,
16
+ EventTracker,
17
+ OutboundLinkTracker,
18
+ UrlChangeTracker,
19
+ } from '@technoapple/ga4';
20
+
21
+ ga4.init({ targetId: 'G-XXXXXXX' });
22
+
23
+ ga4.use(EventTracker);
24
+ ga4.use(OutboundLinkTracker);
25
+ ga4.use(UrlChangeTracker, { trackReplaceState: true });
26
+
27
+ // Custom event
28
+ ga4.send('app_loaded', {
29
+ app_name: 'marketing_site',
30
+ });
31
+ ```
32
+
33
+ ## Declarative tracking in HTML
34
+
35
+ ```html
36
+ <button
37
+ data-ga4-on="click"
38
+ data-ga4-event-name="cta_click"
39
+ data-ga4-cta-name="hero_primary"
40
+ >
41
+ Get Started
42
+ </button>
43
+ ```
44
+
45
+ With `EventTracker`, this emits:
46
+
47
+ ```ts
48
+ gtag('event', 'cta_click', {
49
+ cta_name: 'hero_primary',
50
+ });
51
+ ```
52
+
53
+ ## Cleanup (if needed)
54
+
55
+ If the page shell hot-swaps modules or widgets, remove listeners before re-initializing:
56
+
57
+ ```ts
58
+ ga4.removeAll();
59
+ ```
60
+
61
+ ## Notes
62
+
63
+ - Initialize once at app startup.
64
+ - Register plugins after `ga4.init(...)`.
65
+ - Avoid duplicate page-view logic if another script already tracks history changes.
@@ -0,0 +1,87 @@
1
+ # Vue Integration Guide
2
+
3
+ This guide shows a safe integration pattern for Vue 3 applications.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install @technoapple/ga4
9
+ ```
10
+
11
+ ## 1) Create an analytics plugin
12
+
13
+ ```ts
14
+ // src/plugins/analytics.ts
15
+ import type { App } from 'vue';
16
+ import {
17
+ ga4,
18
+ EventTracker,
19
+ OutboundLinkTracker,
20
+ UrlChangeTracker,
21
+ } from '@technoapple/ga4';
22
+
23
+ let initialized = false;
24
+
25
+ export default {
26
+ install(_app: App) {
27
+ if (initialized) return;
28
+ initialized = true;
29
+
30
+ ga4.init({ targetId: 'G-XXXXXXX' });
31
+
32
+ ga4.use(EventTracker);
33
+ ga4.use(OutboundLinkTracker);
34
+ ga4.use(UrlChangeTracker, { trackReplaceState: true });
35
+ },
36
+ };
37
+
38
+ export { ga4 };
39
+ ```
40
+
41
+ Register it in app bootstrap:
42
+
43
+ ```ts
44
+ // src/main.ts
45
+ import { createApp } from 'vue';
46
+ import App from './App.vue';
47
+ import analytics from './plugins/analytics';
48
+
49
+ createApp(App)
50
+ .use(analytics)
51
+ .mount('#app');
52
+ ```
53
+
54
+ ## 2) Send custom events
55
+
56
+ ```vue
57
+ <script setup lang="ts">
58
+ import { ga4 } from '@/plugins/analytics';
59
+
60
+ function onStartTrial() {
61
+ ga4.send('start_trial_click', {
62
+ plan: 'pro',
63
+ placement: 'hero',
64
+ });
65
+ }
66
+ </script>
67
+
68
+ <template>
69
+ <button @click="onStartTrial">Start trial</button>
70
+ </template>
71
+ ```
72
+
73
+ ## 3) Optional cleanup (embedded Vue app)
74
+
75
+ If your Vue app is mounted/unmounted by another host shell, clean up listeners when disposing the app:
76
+
77
+ ```ts
78
+ import { ga4 } from '@/plugins/analytics';
79
+
80
+ ga4.removeAll();
81
+ ```
82
+
83
+ ## Vue-specific notes
84
+
85
+ - Keep initialization in one plugin/module to avoid duplicate listeners.
86
+ - If you already send page views in router hooks, avoid double page-view tracking with `UrlChangeTracker`.
87
+ - Register plugins after `ga4.init(...)`.