UNPKG

utm-tracking

Version:
72 lines (58 loc) 1.87 kB
"use strict"; 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;