UNPKG

@analytics/original-source-plugin

Version:

Save original referral source of visitor plugin for 'analytics' pkg

3 lines (2 loc) 8.2 kB
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e||self).analyticsOriginalSource={})}(this,function(e){function n(){return n=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e},n.apply(this,arguments)}var r="undefined",t="object";"undefined"==typeof process||process;var o="undefined"!=typeof document;function i(e,n){return n.charAt(0)[e]()+n.slice(1)}"undefined"!=typeof Deno&&Deno,o&&"nodejs"===window.name||"undefined"!=typeof navigator&&void 0!==navigator.userAgent&&(navigator.userAgent.includes("Node.js")||navigator.userAgent.includes("jsdom"));var a=i.bind(null,"toUpperCase"),u=i.bind(null,"toLowerCase");function c(e,n){void 0===n&&(n=!0);var r=function(e){return d(e)?a("null"):"object"==typeof e?function(e){return s(e.constructor)?e.constructor.name:null}(e):Object.prototype.toString.call(e).slice(8,-1)}(e);return n?u(r):r}function l(e,n){return typeof n===e}var s=l.bind(null,"function"),f=l.bind(null,"string"),g=l.bind(null,"undefined");function d(e){return null===e}function m(e){if(!function(e){return e&&("object"==typeof e||null!==e)}(e))return!1;for(var n=e;null!==Object.getPrototypeOf(n);)n=Object.getPrototypeOf(n);return Object.getPrototypeOf(e)===n}function v(e,n){if("object"!=typeof n||d(n))return!1;if(n instanceof e)return!0;var r=c(new e(""));if(function(e){return e instanceof Error||f(e.message)&&e.constructor&&function(e){return"number"===c(e)&&!isNaN(e)}(e.constructor.stackTraceLimit)}(n))for(;n;){if(c(n)===r)return!0;n=Object.getPrototypeOf(n)}return!1}function p(e,n){var r=e instanceof Element||e instanceof HTMLDocument;return r&&n?function(e,n){return void 0===n&&(n=""),e&&e.nodeName===n.toUpperCase()}(e,n):r}function b(e){var n=[].slice.call(arguments,1);return function(){return e.apply(void 0,[].slice.call(arguments).concat(n))}}function y(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(e){return null}}function h(e){if(!o)return!1;var n=e||document.referrer;if(n){var r=window.document.location.port,t=n.split("/")[2];return r&&(t=t.replace(":"+r,"")),t!==window.location.hostname}return!1}function S(e,n,r){for(var t=n.length-1,o=0;o<t;++o){var i=n[o];if("__proto__"===i||"constructor"===i)break;i in e||(e[i]={}),e=e[i]}e[n[t]]=r}function O(e){var n=e.split(".");return n.length>1?n.slice(0,-1).join("."):e}l.bind(null,"boolean"),l.bind(null,"symbol"),v.bind(null,TypeError),v.bind(null,SyntaxError),b(p,"form"),b(p,"button"),b(p,"input"),b(p,"select");var _="q",j={"daum.net":_,"eniro.se":"search_word","naver.com":"query","yahoo.com":"p","msn.com":_,"aol.com":_,"ask.com":_,"baidu.com":"wd","yandex.com":"text","rambler.ru":"words",google:_,"bing.com":{p:_,n:"live"}},w="global",I="__global__",k=typeof self===t&&self.self===self&&self||typeof global===t&&global.global===global&&global||void 0;function E(e){return k[I][e]}function x(e,n){return k[I][e]=n}function P(e){delete k[I][e]}function L(e,n,r){var t;try{if(C(e)){var o=window[e];t=o[n].bind(o)}}catch(e){}return t||r}k[I]||(k[I]={});var A={};function C(e){if(typeof A[e]!==r)return A[e];try{var n=window[e];n.setItem(r,r),n.removeItem(r)}catch(n){return A[e]=!1}return A[e]=!0}var N="cookie",T=K(),R=D,U=D;function K(){if(void 0!==T)return T;var e="cookiecookie";try{D(e,e),T=-1!==document.cookie.indexOf(e),function(e){T?D(e,"",-1):P(e)}(e)}catch(e){T=!1}return T}function D(e,n,r,t,o,i){if("undefined"!=typeof window){var a=arguments.length>1;return!1===T&&(a?x(e,n):E(e)),a?document.cookie=e+"="+encodeURIComponent(n)+(r?"; expires="+new Date(+new Date+1e3*r).toUTCString()+(t?"; path="+t:"")+(o?"; domain="+o:"")+(i?"; secure":""):""):decodeURIComponent((("; "+document.cookie).split("; "+e+"=")[1]||"").split(";")[0])}}var q="localStorage",F=C.bind(null,"localStorage");L("localStorage","getItem",E),L("localStorage","setItem",x),L("localStorage","removeItem",P);var G="sessionStorage",J=C.bind(null,"sessionStorage");function z(e){var n=e;try{if("true"===(n=JSON.parse(e)))return!0;if("false"===n)return!1;if(m(n))return n;parseFloat(n)===n&&(n=parseFloat(n))}catch(e){}if(null!==n&&""!==n)return n}L("sessionStorage","getItem",E),L("sessionStorage","setItem",x),L("sessionStorage","removeItem",P);var H=F(),M=J(),V=K();function $(e,n){if(e){var r=Q(n),t=!Z(r),o=W(r)?z(localStorage.getItem(e)):void 0;if(t&&!g(o))return o;var i=X(r)?z(R(e)):void 0;if(t&&i)return i;var a=Y(r)?z(sessionStorage.getItem(e)):void 0;if(t&&a)return a;var u=E(e);return t?u:{localStorage:o,sessionStorage:a,cookie:i,global:u}}}function B(e,n,r){if(e&&!g(n)){var t={},o=Q(r),i=JSON.stringify(n),a=!Z(o);return W(o)&&(t[q]=ne(q,n,z(localStorage.getItem(e))),localStorage.setItem(e,i),a)?t[q]:X(o)&&(t[N]=ne(N,n,z(R(e))),U(e,i),a)?t[N]:Y(o)&&(t[G]=ne(G,n,z(sessionStorage.getItem(e))),sessionStorage.setItem(e,i),a)?t[G]:(t[w]=ne(w,n,E(e)),x(e,n),a?t[w]:t)}}function Q(e){return e?f(e)?e:e.storage:"any"}function W(e){return H&&ee(e,q)}function X(e){return V&&ee(e,N)}function Y(e){return M&&ee(e,G)}function Z(e){return"*"===e||"all"===e}function ee(e,n){return"any"===e||e===n||Z(e)}function ne(e,n,r){return{location:e,current:n,previous:r}}function re(e){var n={utmcsr:"source",utmcmd:"medium",utmccn:"campaign",utmcct:"content",utmctr:"term",utmgclid:"gclid",utmdclid:"dclid"},r=e?e.split("|"):[];return r.reduce(function(e,t,o){var i=r[o].split("="),a=i[0].split(".").pop();return n[a]?e[""+n[a]]=y(i[1]):void 0===t[a]&&(e[a]=y(i[1])),e},{})}var te={SET_ORIGINAL_SOURCE:"setOriginalSource"},oe={storage:q,originalSourceKey:"__user_original_source",originalLandingPageKey:"__user_original_landing_page"};function ie(e){void 0===e&&(e={});var n=Object.assign({},oe,e),r=n.referrer,t=$(n.originalSourceKey,n.storage);if(t)return re(t);var i=$("__utmz",N);if(i){var a=re(i);if(a)return ae(a,n),a}var u=function(e,n){if(!o)return!1;var r={source:"(direct)",medium:"(none)",campaign:"(not set)"};e&&h(e)&&(r.referrer=e);var t=function(e){if(!e||!o)return!1;var n=function(e){return(function(e){if(!o)return null;var n=document.createElement("a");return n.setAttribute("href",e),n.hostname}(e)||"").split(".").slice(-2).join(".")}(e),r=document.createElement("a");if(r.href=e,r.hostname.indexOf("google")>-1&&(n="google"),j[n]){var t=j[n],i=new RegExp(("string"==typeof t?t:t.p)+"=.*?([^&#]*|$)","gi"),a=r.search.match(i);return{source:t.n||O(n),medium:"organic",term:(a?a[0].split("=")[1]:"")||"(not provided)"}}var u=h(e)?"referral":"internal";return{source:r.hostname,medium:u}}(e);t&&Object.keys(t).length&&(r=Object.assign({},r,t));var i=function(e){for(var n,r=Object.create(null),t=/([^&=]+)=?([^&]*)/g;n=t.exec(e);){var o=y(n[1]),i=y(n[2]);if(o)if("[]"===o.substring(o.length-2)){var a=r[o=o.substring(0,o.length-2)]||(r[o]=[]);r[o]=Array.isArray(a)?a:[],r[o].push(i)}else r[o]=""===i||i}for(var u in r){var c=u.split("[");c.length>1&&(S(r,c.map(function(e){return e.replace(/[?[\]\\ ]/g,"")}),r[u]),delete r[u])}return r}(o&&window.location.search.substring(1)),a=Object.keys(i);if(!a.length)return r;var u=a.reduce(function(e,n){return n.match(/^utm_/)&&(e[""+n.replace(/^utm_/,"")]=i[n]),n.match(/^(d|g)clid/)&&(e.source="google",e.medium=i.gclid?"cpc":"cpm",e[n]=i[n]),e},{});return Object.assign({},r,u)}(o?r||document.referrer:"");return ae(u,n),u}function ae(e,n){B(n.originalSourceKey,function(e){if(m(e))return Object.keys(e).reduce(function(n,r,t){return n+(t?"|":"")+r+"="+e[r]},"")}(e),n.storage)}function ue(e){void 0===e&&(e={});var n=Object.assign({},oe,e),r=n.originalLandingPageKey,t={storage:n.storage},i=$(r,t);if(i)return i;var a=o?window.location.href:"";return B(r,a,t),a}e.getOriginalLandingPage=ue,e.getOriginalSource=ie,e.originalSourcePlugin=function(e){return void 0===e&&(e={}),{name:"original-source",EVENTS:te,config:n({},oe,e),bootstrap:function(e){var n=e.config;e.instance.dispatch({type:te.SET_ORIGINAL_SOURCE,originalSource:ie(n),originalLandingPage:ue(n)})},reset:function(e){var n=e.instance;n.storage.removeItem(oe.originalSourceKey),n.storage.removeItem(oe.originalLandingPageKey)}}}}); //# sourceMappingURL=original-source-plugin.umd.js.map