utm-tracking
Version:
For tracking utm
72 lines (58 loc) • 1.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
function getReferrerSessions() {
return JSON.parse(window.localStorage.getItem('referrerSessions') || null);
}
function getDomainFromUrl(url) {
var result;
var match = url.match(/^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n\?\=]+)/im);
if (match) {
result = match[1];
match = result.match(/^[^\.]+\.(.+\..+)$/);
if (match) {
result = match[1];
}
}
return result;
}
function minutesPassed(timestamp) {
var d1 = timestamp;
var d2 = new Date().getTime();
return (d2 - d1) / (1000 * 60);
}
var _default = {
/**
* Set 'referrerSessions' in localStorage to determine where user from
* @param {Number} overTimeLimit How long will referrerSessions expire ? (minute)
*/
setReferrerSessions: function setReferrerSessions(overTimeLimit) {
var time = overTimeLimit || 30;
var referrerSessions = getReferrerSessions();
if (referrerSessions && minutesPassed(referrerSessions.timestamp) <= time) {
return;
}
window.localStorage.setItem('referrerSessions', JSON.stringify({
referrer: getDomainFromUrl(document.referrer),
timestamp: new Date().getTime()
}));
},
/**
* according to different source to return correct url
* @param {string} link where you want to go ?
*/
mergeUrlParams: function mergeUrlParams(link) {
var referrerSessions = getReferrerSessions();
var isHaveUtmParams = /utm/.test(window.location.search);
if (isHaveUtmParams) {
return "".concat(link, "/").concat(window.location.search);
}
if (!referrerSessions.referrer) {
return link;
}
return "".concat(link, "/?utm_source=").concat(referrerSessions.referrer, "&utm_medium=searchResult&utm_campaign=search");
}
};
exports["default"] = _default;