@analytics/original-source-plugin
Version:
Save original referral source of visitor plugin for 'analytics' pkg
3 lines (2 loc) • 1.97 kB
JavaScript
var r=require("analytics-utils"),e=require("@analytics/storage-utils"),i=require("@analytics/type-utils");function t(){return t=Object.assign||function(r){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var t in i)Object.prototype.hasOwnProperty.call(i,t)&&(r[t]=i[t])}return r},t.apply(this,arguments)}function n(e){var i={utmcsr:"source",utmcmd:"medium",utmccn:"campaign",utmcct:"content",utmctr:"term",utmgclid:"gclid",utmdclid:"dclid"},t=e?e.split("|"):[];return t.reduce(function(e,n,a){var o=t[a].split("="),c=o[0].split(".").pop();return i[c]?e[""+i[c]]=r.decodeUri(o[1]):void 0===n[c]&&(e[c]=r.decodeUri(o[1])),e},{})}var a={SET_ORIGINAL_SOURCE:"setOriginalSource"},o={storage:e.LOCAL_STORAGE,originalSourceKey:"__user_original_source",originalLandingPageKey:"__user_original_landing_page"};function c(t){void 0===t&&(t={});var a=Object.assign({},o,t),c=a.referrer,g=e.getItem(a.originalSourceKey,a.storage);if(g)return n(g);var s=e.getItem("__utmz",e.COOKIE);if(s){var l=n(s);if(l)return u(l,a),l}var d=i.isBrowser?c||document.referrer:"",f=r.parseReferrer(d);return u(f,a),f}function u(r,t){e.setItem(t.originalSourceKey,function(r){if(i.isObject(r))return Object.keys(r).reduce(function(e,i,t){return e+(t?"|":"")+i+"="+r[i]},"")}(r),t.storage)}function g(r){void 0===r&&(r={});var t=Object.assign({},o,r),n=t.originalLandingPageKey,a={storage:t.storage},c=e.getItem(n,a);if(c)return c;var u=i.isBrowser?window.location.href:"";return e.setItem(n,u,a),u}exports.getOriginalLandingPage=g,exports.getOriginalSource=c,exports.originalSourcePlugin=function(r){return void 0===r&&(r={}),{name:"original-source",EVENTS:a,config:t({},o,r),bootstrap:function(r){var e=r.config;r.instance.dispatch({type:a.SET_ORIGINAL_SOURCE,originalSource:c(e),originalLandingPage:g(e)})},reset:function(r){var e=r.instance;e.storage.removeItem(o.originalSourceKey),e.storage.removeItem(o.originalLandingPageKey)}}};
//# sourceMappingURL=analytics-original-source.js.map