@tracelog/lib 2.1.0 → 2.1.1-rc.75.2
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/browser/tracelog.esm.js +341 -302
- package/dist/browser/tracelog.esm.js.map +1 -1
- package/dist/browser/tracelog.js +1 -1
- package/dist/browser/tracelog.js.map +1 -1
- package/dist/public-api.cjs +84 -9
- package/dist/public-api.cjs.map +1 -1
- package/dist/public-api.d.mts +2 -0
- package/dist/public-api.d.ts +2 -0
- package/dist/public-api.js +84 -9
- package/dist/public-api.js.map +1 -1
- package/package.json +1 -1
package/dist/public-api.cjs
CHANGED
|
@@ -720,7 +720,7 @@ var init_performance_constants = __esm({
|
|
|
720
720
|
var version;
|
|
721
721
|
var init_package = __esm({
|
|
722
722
|
"package.json"() {
|
|
723
|
-
version = "2.
|
|
723
|
+
version = "2.1.1";
|
|
724
724
|
}
|
|
725
725
|
});
|
|
726
726
|
|
|
@@ -829,6 +829,61 @@ var init_mode_utils = __esm({
|
|
|
829
829
|
}
|
|
830
830
|
});
|
|
831
831
|
|
|
832
|
+
// src/utils/browser/referrer.utils.ts
|
|
833
|
+
var COMPOUND_TLDS, getRootDomain, isSameDomain, getExternalReferrer;
|
|
834
|
+
var init_referrer_utils = __esm({
|
|
835
|
+
"src/utils/browser/referrer.utils.ts"() {
|
|
836
|
+
init_logging_utils();
|
|
837
|
+
COMPOUND_TLDS = [
|
|
838
|
+
"co.uk",
|
|
839
|
+
"org.uk",
|
|
840
|
+
"com.au",
|
|
841
|
+
"net.au",
|
|
842
|
+
"com.br",
|
|
843
|
+
"co.nz",
|
|
844
|
+
"co.jp",
|
|
845
|
+
"com.mx",
|
|
846
|
+
"co.in",
|
|
847
|
+
"com.cn",
|
|
848
|
+
"co.za"
|
|
849
|
+
];
|
|
850
|
+
getRootDomain = (hostname) => {
|
|
851
|
+
const parts = hostname.toLowerCase().split(".");
|
|
852
|
+
if (parts.length <= 2) {
|
|
853
|
+
return hostname.toLowerCase();
|
|
854
|
+
}
|
|
855
|
+
const lastTwo = parts.slice(-2).join(".");
|
|
856
|
+
if (COMPOUND_TLDS.includes(lastTwo)) {
|
|
857
|
+
return parts.slice(-3).join(".");
|
|
858
|
+
}
|
|
859
|
+
return parts.slice(-2).join(".");
|
|
860
|
+
};
|
|
861
|
+
isSameDomain = (hostname1, hostname2) => {
|
|
862
|
+
if (hostname1 === hostname2) {
|
|
863
|
+
return true;
|
|
864
|
+
}
|
|
865
|
+
return getRootDomain(hostname1) === getRootDomain(hostname2);
|
|
866
|
+
};
|
|
867
|
+
getExternalReferrer = () => {
|
|
868
|
+
const referrer = document.referrer;
|
|
869
|
+
if (!referrer) {
|
|
870
|
+
return "Direct";
|
|
871
|
+
}
|
|
872
|
+
try {
|
|
873
|
+
const referrerHostname = new URL(referrer).hostname.toLowerCase();
|
|
874
|
+
const currentHostname = window.location.hostname.toLowerCase();
|
|
875
|
+
if (isSameDomain(referrerHostname, currentHostname)) {
|
|
876
|
+
return "Direct";
|
|
877
|
+
}
|
|
878
|
+
return referrer;
|
|
879
|
+
} catch (error) {
|
|
880
|
+
log("debug", "Failed to parse referrer URL, using raw value", { error, data: { referrer } });
|
|
881
|
+
return referrer;
|
|
882
|
+
}
|
|
883
|
+
};
|
|
884
|
+
}
|
|
885
|
+
});
|
|
886
|
+
|
|
832
887
|
// src/utils/browser/utm-params.utils.ts
|
|
833
888
|
var getUTMParameters;
|
|
834
889
|
var init_utm_params_utils = __esm({
|
|
@@ -855,6 +910,7 @@ var init_browser = __esm({
|
|
|
855
910
|
"src/utils/browser/index.ts"() {
|
|
856
911
|
init_device_detector_utils();
|
|
857
912
|
init_mode_utils();
|
|
913
|
+
init_referrer_utils();
|
|
858
914
|
init_utm_params_utils();
|
|
859
915
|
}
|
|
860
916
|
});
|
|
@@ -3506,7 +3562,6 @@ var init_event_manager = __esm({
|
|
|
3506
3562
|
return queue;
|
|
3507
3563
|
}
|
|
3508
3564
|
buildEventPayload(data) {
|
|
3509
|
-
const isSessionStart = data.type === "session_start" /* SESSION_START */;
|
|
3510
3565
|
const currentPageUrl = data.page_url ?? this.get("pageUrl");
|
|
3511
3566
|
const timestamp = this.timeManager.now();
|
|
3512
3567
|
const validation = this.timeManager.validateTimestamp(timestamp);
|
|
@@ -3515,12 +3570,14 @@ var init_event_manager = __esm({
|
|
|
3515
3570
|
data: { type: data.type, error: validation.error }
|
|
3516
3571
|
});
|
|
3517
3572
|
}
|
|
3573
|
+
const sessionReferrer = this.get("sessionReferrer");
|
|
3574
|
+
const sessionUtm = this.get("sessionUtm");
|
|
3518
3575
|
let payload = {
|
|
3519
3576
|
id: generateEventId(),
|
|
3520
3577
|
type: data.type,
|
|
3521
3578
|
page_url: currentPageUrl,
|
|
3522
3579
|
timestamp,
|
|
3523
|
-
...
|
|
3580
|
+
...sessionReferrer && { referrer: sessionReferrer },
|
|
3524
3581
|
...data.from_page_url && { from_page_url: data.from_page_url },
|
|
3525
3582
|
...data.scroll_data && { scroll_data: data.scroll_data },
|
|
3526
3583
|
...data.click_data && { click_data: data.click_data },
|
|
@@ -3529,7 +3586,7 @@ var init_event_manager = __esm({
|
|
|
3529
3586
|
...data.error_data && { error_data: data.error_data },
|
|
3530
3587
|
...data.viewport_data && { viewport_data: data.viewport_data },
|
|
3531
3588
|
...data.page_view && { page_view: data.page_view },
|
|
3532
|
-
...
|
|
3589
|
+
...sessionUtm && { utm: sessionUtm }
|
|
3533
3590
|
};
|
|
3534
3591
|
const collectApiUrls = this.get("collectApiUrls");
|
|
3535
3592
|
const hasCustomBackend = Boolean(collectApiUrls?.custom);
|
|
@@ -4058,10 +4115,12 @@ var init_session_manager = __esm({
|
|
|
4058
4115
|
}
|
|
4059
4116
|
return storedSession.id;
|
|
4060
4117
|
}
|
|
4061
|
-
persistSession(sessionId, lastActivity = Date.now()) {
|
|
4118
|
+
persistSession(sessionId, lastActivity = Date.now(), referrer, utm) {
|
|
4062
4119
|
this.saveStoredSession({
|
|
4063
4120
|
id: sessionId,
|
|
4064
|
-
lastActivity
|
|
4121
|
+
lastActivity,
|
|
4122
|
+
...referrer && { referrer },
|
|
4123
|
+
...utm && { utm }
|
|
4065
4124
|
});
|
|
4066
4125
|
}
|
|
4067
4126
|
clearStoredSession() {
|
|
@@ -4153,17 +4212,31 @@ var init_session_manager = __esm({
|
|
|
4153
4212
|
}
|
|
4154
4213
|
const recoveredSessionId = this.recoverSession();
|
|
4155
4214
|
const sessionId = recoveredSessionId ?? this.generateSessionId();
|
|
4215
|
+
let sessionReferrer;
|
|
4216
|
+
let sessionUtm;
|
|
4217
|
+
if (recoveredSessionId) {
|
|
4218
|
+
const storedSession = this.loadStoredSession();
|
|
4219
|
+
sessionReferrer = storedSession?.referrer ?? getExternalReferrer();
|
|
4220
|
+
sessionUtm = storedSession?.utm ?? getUTMParameters();
|
|
4221
|
+
} else {
|
|
4222
|
+
sessionReferrer = getExternalReferrer();
|
|
4223
|
+
sessionUtm = getUTMParameters();
|
|
4224
|
+
}
|
|
4156
4225
|
log("debug", "Session tracking initialized", {
|
|
4157
4226
|
data: {
|
|
4158
4227
|
sessionId,
|
|
4159
4228
|
wasRecovered: !!recoveredSessionId,
|
|
4160
|
-
willEmitSessionStart: true
|
|
4229
|
+
willEmitSessionStart: true,
|
|
4230
|
+
sessionReferrer,
|
|
4231
|
+
hasUtm: !!sessionUtm
|
|
4161
4232
|
}
|
|
4162
4233
|
});
|
|
4163
4234
|
this.isTracking = true;
|
|
4164
4235
|
try {
|
|
4165
4236
|
this.set("sessionId", sessionId);
|
|
4166
|
-
this.
|
|
4237
|
+
this.set("sessionReferrer", sessionReferrer);
|
|
4238
|
+
this.set("sessionUtm", sessionUtm);
|
|
4239
|
+
this.persistSession(sessionId, Date.now(), sessionReferrer, sessionUtm);
|
|
4167
4240
|
this.initCrossTabSync();
|
|
4168
4241
|
this.shareSession(sessionId);
|
|
4169
4242
|
log("debug", "Emitting SESSION_START event", {
|
|
@@ -4199,7 +4272,7 @@ var init_session_manager = __esm({
|
|
|
4199
4272
|
this.setupSessionTimeout();
|
|
4200
4273
|
const sessionId = this.get("sessionId");
|
|
4201
4274
|
if (sessionId) {
|
|
4202
|
-
this.persistSession(sessionId);
|
|
4275
|
+
this.persistSession(sessionId, Date.now(), this.get("sessionReferrer"), this.get("sessionUtm"));
|
|
4203
4276
|
}
|
|
4204
4277
|
}
|
|
4205
4278
|
clearSessionTimeout() {
|
|
@@ -4254,6 +4327,8 @@ var init_session_manager = __esm({
|
|
|
4254
4327
|
this.clearStoredSession();
|
|
4255
4328
|
this.set("sessionId", null);
|
|
4256
4329
|
this.set("hasStartSession", false);
|
|
4330
|
+
this.set("sessionReferrer", void 0);
|
|
4331
|
+
this.set("sessionUtm", void 0);
|
|
4257
4332
|
this.isTracking = false;
|
|
4258
4333
|
}
|
|
4259
4334
|
/**
|