@grainql/analytics-web 2.2.1 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/attribution.d.ts +47 -0
- package/dist/attribution.d.ts.map +1 -0
- package/dist/attribution.js +228 -0
- package/dist/cjs/attribution.d.ts +47 -0
- package/dist/cjs/attribution.d.ts.map +1 -0
- package/dist/cjs/attribution.js +228 -0
- package/dist/cjs/attribution.js.map +1 -0
- package/dist/cjs/countries.d.ts +13 -0
- package/dist/cjs/countries.d.ts.map +1 -0
- package/dist/cjs/countries.js +2907 -0
- package/dist/cjs/countries.js.map +1 -0
- package/dist/cjs/heartbeat.d.ts +1 -0
- package/dist/cjs/heartbeat.d.ts.map +1 -1
- package/dist/cjs/heartbeat.js +1 -1
- package/dist/cjs/heartbeat.js.map +1 -1
- package/dist/cjs/index.d.ts +26 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/page-tracking.d.ts +25 -0
- package/dist/cjs/page-tracking.d.ts.map +1 -1
- package/dist/cjs/page-tracking.js +162 -9
- package/dist/cjs/page-tracking.js.map +1 -1
- package/dist/countries.d.ts +13 -0
- package/dist/countries.d.ts.map +1 -0
- package/dist/countries.js +2907 -0
- package/dist/esm/attribution.d.ts +47 -0
- package/dist/esm/attribution.d.ts.map +1 -0
- package/dist/esm/attribution.js +218 -0
- package/dist/esm/attribution.js.map +1 -0
- package/dist/esm/countries.d.ts +13 -0
- package/dist/esm/countries.d.ts.map +1 -0
- package/dist/esm/countries.js +2902 -0
- package/dist/esm/countries.js.map +1 -0
- package/dist/esm/heartbeat.d.ts +1 -0
- package/dist/esm/heartbeat.d.ts.map +1 -1
- package/dist/esm/heartbeat.js +1 -1
- package/dist/esm/heartbeat.js.map +1 -1
- package/dist/esm/index.d.ts +26 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/page-tracking.d.ts +25 -0
- package/dist/esm/page-tracking.d.ts.map +1 -1
- package/dist/esm/page-tracking.js +162 -9
- package/dist/esm/page-tracking.js.map +1 -1
- package/dist/heartbeat.d.ts +1 -0
- package/dist/heartbeat.d.ts.map +1 -1
- package/dist/heartbeat.js +1 -1
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.global.dev.js +3361 -11
- package/dist/index.global.dev.js.map +3 -3
- package/dist/index.global.js +2 -2
- package/dist/index.global.js.map +4 -4
- package/dist/index.js +162 -1
- package/dist/index.mjs +157 -0
- package/dist/page-tracking.d.ts +25 -0
- package/dist/page-tracking.d.ts.map +1 -1
- package/dist/page-tracking.js +162 -9
- package/package.json +1 -1
|
@@ -5,12 +5,17 @@
|
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.PageTrackingManager = void 0;
|
|
8
|
+
const attribution_1 = require("./attribution");
|
|
9
|
+
const countries_1 = require("./countries");
|
|
8
10
|
class PageTrackingManager {
|
|
9
11
|
constructor(tracker, config) {
|
|
10
12
|
this.isDestroyed = false;
|
|
11
13
|
this.currentPath = null;
|
|
12
14
|
this.originalPushState = null;
|
|
13
15
|
this.originalReplaceState = null;
|
|
16
|
+
this.previousPage = null;
|
|
17
|
+
this.landingPage = null;
|
|
18
|
+
this.pageViewCount = 0;
|
|
14
19
|
/**
|
|
15
20
|
* Handle popstate event (back/forward navigation)
|
|
16
21
|
*/
|
|
@@ -29,8 +34,8 @@ class PageTrackingManager {
|
|
|
29
34
|
};
|
|
30
35
|
this.tracker = tracker;
|
|
31
36
|
this.config = config;
|
|
32
|
-
// Track initial page load
|
|
33
|
-
this.trackCurrentPage();
|
|
37
|
+
// Track initial page load (this is the landing page)
|
|
38
|
+
this.trackCurrentPage(true);
|
|
34
39
|
// Setup listeners
|
|
35
40
|
this.setupHistoryListeners();
|
|
36
41
|
this.setupHashChangeListener();
|
|
@@ -67,16 +72,39 @@ class PageTrackingManager {
|
|
|
67
72
|
/**
|
|
68
73
|
* Track the current page
|
|
69
74
|
*/
|
|
70
|
-
trackCurrentPage() {
|
|
75
|
+
trackCurrentPage(isLanding = false) {
|
|
71
76
|
if (this.isDestroyed || typeof window === 'undefined')
|
|
72
77
|
return;
|
|
73
78
|
const page = this.extractPath(window.location.href);
|
|
74
|
-
// Don't track if it's the same page
|
|
75
|
-
if (page === this.currentPath) {
|
|
79
|
+
// Don't track if it's the same page (unless it's the landing page)
|
|
80
|
+
if (!isLanding && page === this.currentPath) {
|
|
76
81
|
return;
|
|
77
82
|
}
|
|
83
|
+
// Store previous page before updating
|
|
84
|
+
if (this.currentPath) {
|
|
85
|
+
this.previousPage = this.currentPath;
|
|
86
|
+
}
|
|
78
87
|
this.currentPath = page;
|
|
88
|
+
this.pageViewCount++;
|
|
89
|
+
// Set landing page on first view
|
|
90
|
+
if (isLanding) {
|
|
91
|
+
this.landingPage = page;
|
|
92
|
+
}
|
|
79
93
|
const hasConsent = this.tracker.hasConsent('analytics');
|
|
94
|
+
const currentUrl = window.location.href;
|
|
95
|
+
const referrer = document.referrer || '';
|
|
96
|
+
// Parse UTM parameters from current URL
|
|
97
|
+
const utmParams = (0, attribution_1.parseUTMParameters)(currentUrl);
|
|
98
|
+
// Store session UTM if they exist (first time only or if new UTMs appear)
|
|
99
|
+
if (Object.keys(utmParams).length > 0) {
|
|
100
|
+
const existing = (0, attribution_1.getSessionUTMParameters)();
|
|
101
|
+
if (!existing || isLanding) {
|
|
102
|
+
(0, attribution_1.setSessionUTMParameters)(utmParams);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Get or create first-touch attribution
|
|
106
|
+
const sessionUTMs = (0, attribution_1.getSessionUTMParameters)() || {};
|
|
107
|
+
const firstTouch = (0, attribution_1.getOrCreateFirstTouchAttribution)(this.config.tenantId, referrer, currentUrl, sessionUTMs);
|
|
80
108
|
// Base properties (always included)
|
|
81
109
|
const properties = {
|
|
82
110
|
page,
|
|
@@ -84,9 +112,50 @@ class PageTrackingManager {
|
|
|
84
112
|
};
|
|
85
113
|
// Enhanced properties when consent is granted
|
|
86
114
|
if (hasConsent) {
|
|
87
|
-
properties.referrer = document.referrer || '';
|
|
88
115
|
properties.title = document.title || '';
|
|
89
|
-
properties.full_url =
|
|
116
|
+
properties.full_url = currentUrl;
|
|
117
|
+
properties.session_id = this.tracker.getSessionId();
|
|
118
|
+
// Add referrer info
|
|
119
|
+
if (referrer) {
|
|
120
|
+
properties.referrer = referrer;
|
|
121
|
+
properties.referrer_domain = this.extractDomain(referrer);
|
|
122
|
+
properties.referrer_category = (0, attribution_1.categorizeReferrer)(referrer, currentUrl);
|
|
123
|
+
}
|
|
124
|
+
// Add landing page if this is not the first view
|
|
125
|
+
if (this.landingPage && !isLanding) {
|
|
126
|
+
properties.landing_page = this.landingPage;
|
|
127
|
+
}
|
|
128
|
+
// Add previous page if available
|
|
129
|
+
if (this.previousPage) {
|
|
130
|
+
properties.previous_page = this.previousPage;
|
|
131
|
+
}
|
|
132
|
+
// Add UTM parameters if present (from session)
|
|
133
|
+
if (sessionUTMs.utm_source)
|
|
134
|
+
properties.utm_source = sessionUTMs.utm_source;
|
|
135
|
+
if (sessionUTMs.utm_medium)
|
|
136
|
+
properties.utm_medium = sessionUTMs.utm_medium;
|
|
137
|
+
if (sessionUTMs.utm_campaign)
|
|
138
|
+
properties.utm_campaign = sessionUTMs.utm_campaign;
|
|
139
|
+
if (sessionUTMs.utm_term)
|
|
140
|
+
properties.utm_term = sessionUTMs.utm_term;
|
|
141
|
+
if (sessionUTMs.utm_content)
|
|
142
|
+
properties.utm_content = sessionUTMs.utm_content;
|
|
143
|
+
// Add first-touch attribution
|
|
144
|
+
properties.first_touch_source = firstTouch.source;
|
|
145
|
+
properties.first_touch_medium = firstTouch.medium;
|
|
146
|
+
properties.first_touch_campaign = firstTouch.campaign;
|
|
147
|
+
properties.first_touch_referrer_category = firstTouch.referrer_category;
|
|
148
|
+
// Browser and device info
|
|
149
|
+
properties.device = this.getDeviceType();
|
|
150
|
+
properties.browser = this.getBrowser();
|
|
151
|
+
properties.os = this.getOS();
|
|
152
|
+
properties.language = navigator.language || '';
|
|
153
|
+
// Timezone and country (privacy-friendly: derived from timezone, no IP tracking)
|
|
154
|
+
const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
155
|
+
properties.timezone = timezone;
|
|
156
|
+
properties.country = (0, countries_1.getCountryCodeFromTimezone)();
|
|
157
|
+
properties.screen_resolution = `${screen.width}x${screen.height}`;
|
|
158
|
+
properties.viewport = `${window.innerWidth}x${window.innerHeight}`;
|
|
90
159
|
}
|
|
91
160
|
// Track the page view event
|
|
92
161
|
this.tracker.trackSystemEvent('page_view', properties);
|
|
@@ -94,6 +163,75 @@ class PageTrackingManager {
|
|
|
94
163
|
console.log('[Page Tracking] Tracked page view:', properties);
|
|
95
164
|
}
|
|
96
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* Extract domain from URL
|
|
168
|
+
*/
|
|
169
|
+
extractDomain(url) {
|
|
170
|
+
try {
|
|
171
|
+
const urlObj = new URL(url);
|
|
172
|
+
return urlObj.hostname;
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
return '';
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Detect browser name
|
|
180
|
+
*/
|
|
181
|
+
getBrowser() {
|
|
182
|
+
const ua = navigator.userAgent;
|
|
183
|
+
if (ua.includes('Firefox/'))
|
|
184
|
+
return 'Firefox';
|
|
185
|
+
if (ua.includes('Edg/'))
|
|
186
|
+
return 'Edge';
|
|
187
|
+
if (ua.includes('Chrome/'))
|
|
188
|
+
return 'Chrome';
|
|
189
|
+
if (ua.includes('Safari/') && !ua.includes('Chrome/'))
|
|
190
|
+
return 'Safari';
|
|
191
|
+
if (ua.includes('Opera/') || ua.includes('OPR/'))
|
|
192
|
+
return 'Opera';
|
|
193
|
+
return 'Unknown';
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Detect operating system
|
|
197
|
+
*/
|
|
198
|
+
getOS() {
|
|
199
|
+
const ua = navigator.userAgent;
|
|
200
|
+
if (ua.includes('Win'))
|
|
201
|
+
return 'Windows';
|
|
202
|
+
if (ua.includes('Mac'))
|
|
203
|
+
return 'macOS';
|
|
204
|
+
if (ua.includes('Linux'))
|
|
205
|
+
return 'Linux';
|
|
206
|
+
if (ua.includes('Android'))
|
|
207
|
+
return 'Android';
|
|
208
|
+
if (ua.includes('iOS') || ua.includes('iPhone') || ua.includes('iPad'))
|
|
209
|
+
return 'iOS';
|
|
210
|
+
return 'Unknown';
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Detect device type (Mobile, Tablet, Desktop)
|
|
214
|
+
*/
|
|
215
|
+
getDeviceType() {
|
|
216
|
+
const ua = navigator.userAgent;
|
|
217
|
+
const width = window.innerWidth;
|
|
218
|
+
// Check for tablet-specific indicators
|
|
219
|
+
if (ua.includes('iPad') || (ua.includes('Android') && !ua.includes('Mobile'))) {
|
|
220
|
+
return 'Tablet';
|
|
221
|
+
}
|
|
222
|
+
// Check for mobile indicators
|
|
223
|
+
if (ua.includes('Mobile') || ua.includes('iPhone') || ua.includes('Android')) {
|
|
224
|
+
return 'Mobile';
|
|
225
|
+
}
|
|
226
|
+
// Fallback to screen width detection
|
|
227
|
+
if (width < 768) {
|
|
228
|
+
return 'Mobile';
|
|
229
|
+
}
|
|
230
|
+
else if (width >= 768 && width < 1024) {
|
|
231
|
+
return 'Tablet';
|
|
232
|
+
}
|
|
233
|
+
return 'Desktop';
|
|
234
|
+
}
|
|
97
235
|
/**
|
|
98
236
|
* Extract path from URL, optionally stripping query parameters
|
|
99
237
|
*/
|
|
@@ -134,22 +272,37 @@ class PageTrackingManager {
|
|
|
134
272
|
...properties,
|
|
135
273
|
};
|
|
136
274
|
// Enhanced properties when consent is granted
|
|
137
|
-
if (hasConsent && typeof document !== 'undefined') {
|
|
275
|
+
if (hasConsent && typeof document !== 'undefined' && typeof window !== 'undefined') {
|
|
138
276
|
if (!baseProperties.referrer) {
|
|
139
277
|
baseProperties.referrer = document.referrer || '';
|
|
140
278
|
}
|
|
141
279
|
if (!baseProperties.title) {
|
|
142
280
|
baseProperties.title = document.title || '';
|
|
143
281
|
}
|
|
144
|
-
if (!baseProperties.full_url
|
|
282
|
+
if (!baseProperties.full_url) {
|
|
145
283
|
baseProperties.full_url = window.location.href;
|
|
146
284
|
}
|
|
285
|
+
if (!baseProperties.session_id) {
|
|
286
|
+
baseProperties.session_id = this.tracker.getSessionId();
|
|
287
|
+
}
|
|
288
|
+
if (!baseProperties.browser) {
|
|
289
|
+
baseProperties.browser = this.getBrowser();
|
|
290
|
+
}
|
|
291
|
+
if (!baseProperties.os) {
|
|
292
|
+
baseProperties.os = this.getOS();
|
|
293
|
+
}
|
|
147
294
|
}
|
|
148
295
|
this.tracker.trackSystemEvent('page_view', baseProperties);
|
|
149
296
|
if (this.config.debug) {
|
|
150
297
|
console.log('[Page Tracking] Manually tracked page:', baseProperties);
|
|
151
298
|
}
|
|
152
299
|
}
|
|
300
|
+
/**
|
|
301
|
+
* Get page view count for current session
|
|
302
|
+
*/
|
|
303
|
+
getPageViewCount() {
|
|
304
|
+
return this.pageViewCount;
|
|
305
|
+
}
|
|
153
306
|
/**
|
|
154
307
|
* Destroy the page tracker
|
|
155
308
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-tracking.js","sourceRoot":"","sources":["../../src/page-tracking.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"page-tracking.js","sourceRoot":"","sources":["../../src/page-tracking.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get full country name from user's timezone
|
|
3
|
+
* @returns Full country name or null if timezone is unavailable
|
|
4
|
+
*/
|
|
5
|
+
export declare function getCountry(): string | null;
|
|
6
|
+
/**
|
|
7
|
+
* Get country code (ISO 3166-1 alpha-2) from user's timezone
|
|
8
|
+
* Privacy-friendly alternative to IP geolocation
|
|
9
|
+
* @returns ISO 3166-1 alpha-2 country code (e.g., "US", "GB") or "Unknown"
|
|
10
|
+
*/
|
|
11
|
+
export declare function getCountryCodeFromTimezone(): string;
|
|
12
|
+
export declare function getState(): string | null;
|
|
13
|
+
//# sourceMappingURL=countries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"countries.d.ts","sourceRoot":"","sources":["../src/countries.ts"],"names":[],"mappings":"AAyyFA;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAe1C;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CAanD;AAED,wBAAgB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAUxC"}
|