@analytics/core
Version:
Lightweight analytics library for tracking events, page views, & identifying users. Works with any third party analytics provider via an extendable plugin system.
3 lines (2 loc) • 28.5 kB
JavaScript
var core=function(e){function n(){return n=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)({}).hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},n.apply(null,arguments)}var t,r,i=(t=function(e,n){e.exports=function(e,n,t,r,i){for(n=n.split?n.split("."):n,r=0;r<n.length;r++)e=e?e[n[r]]:i;return e===i?t:e}},t(r={exports:{}}),r.exports),a=i,o="undefined",u="object";typeof process===o||process;var c=typeof document!==o;function s(e,n){return n.charAt(0)[e]()+n.slice(1)}typeof Deno!==o&&Deno,c&&"nodejs"===window.name||typeof navigator!==o&&typeof navigator.userAgent!==o&&(navigator.userAgent.includes("Node.js")||navigator.userAgent.includes("jsdom"));var l=s.bind(null,"toUpperCase"),f=s.bind(null,"toLowerCase");function d(e,n){void 0===n&&(n=!0);var t=function(e){return h(e)?l("null"):typeof e===u?function(e){return m(e.constructor)?e.constructor.name:null}(e):Object.prototype.toString.call(e).slice(8,-1)}(e);return n?f(t):t}function p(e,n){return typeof n===e}var m=p.bind(null,"function"),g=p.bind(null,"string");p.bind(null,o);var v=p.bind(null,"boolean");function h(e){return null===e}function y(e){if(!function(e){return e&&(typeof e===u||null!==e)}(e))return!1;for(var n=e;null!==Object.getPrototypeOf(n);)n=Object.getPrototypeOf(n);return Object.getPrototypeOf(e)===n}function b(e,n){if("object"!=typeof n||h(n))return!1;if(n instanceof e)return!0;var t=d(new e(""));if(function(e){return e instanceof Error||g(e.message)&&e.constructor&&function(e){return"number"===d(e)&&!isNaN(e)}(e.constructor.stackTraceLimit)}(n))for(;n;){if(d(n)===t)return!0;n=Object.getPrototypeOf(n)}return!1}function w(e,n){var t=e instanceof Element||e instanceof HTMLDocument;return t&&n?function(e,n){return void 0===n&&(n=""),e&&e.nodeName===n.toUpperCase()}(e,n):t}function I(e){var n=[].slice.call(arguments,1);return function(){return e.apply(void 0,[].slice.call(arguments).concat(n))}}function E(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(e){return null}}function P(e,n,t){for(var r=n.length-1,i=0;i<r;++i){var a=n[i];if("__proto__"===a||"constructor"===a)break;a in e||(e[a]={}),e=e[a]}e[n[r]]=t}function S(){for(var e="",n=0,t=4294967295*Math.random()|0;n++<36;){var r="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"[n-1],i=15&t;e+="-"==r||"4"==r?r:("x"==r?i:3&i|8).toString(16),t=n%8==0?4294967295*Math.random()|0:t>>4}return e}p.bind(null,"symbol"),b.bind(null,TypeError),b.bind(null,SyntaxError),I(w,"form"),I(w,"button"),I(w,"input"),I(w,"select");var x="global",_="__"+x+"__",O=typeof self===u&&self.self===self&&self||typeof global===u&&global[x]===global&&global||void 0;function N(e){return O[_][e]}function A(e,n){return O[_][e]=n}function j(e){delete O[_][e]}O[_]||(O[_]={});var k="function",T="undefined",M="reducer",z="@@redux/",L=z+"INIT",U=z+Math.random().toString(36),q=/* #__PURE__ */function(){return typeof Symbol===k&&Symbol.observable||"@@observable"}(),C=" != "+k;function D(e,n,t){var r;if(typeof n===k&&typeof t===T&&(t=n,n=void 0),typeof t!==T){if(typeof t!==k)throw new Error("enhancer"+C);return t(D)(e,n)}if(typeof e!==k)throw new Error(M+C);var i=e,a=n,o=[],u=o,c=!1;function s(){u===o&&(u=o.slice())}function l(){return a}function f(e){if(typeof e!==k)throw new Error("Listener"+C);var n=!0;return s(),u.push(e),function(){if(n){n=!1,s();var t=u.indexOf(e);u.splice(t,1)}}}function d(e){if(!y(e))throw new Error("Act != obj");if(typeof e.type===T)throw new Error("ActType "+T);if(c)throw new Error("Dispatch in "+M);try{c=!0,a=i(a,e)}finally{c=!1}for(var n=o=u,t=0;t<n.length;t++)(0,n[t])();return e}return d({type:L}),(r={dispatch:d,subscribe:f,getState:l,replaceReducer:function(e){if(typeof e!==k)throw new Error("next "+M+C);i=e,d({type:L})}})[q]=function(){var e,n=f;return(e={subscribe:function(e){if("object"!=typeof e)throw new TypeError("Observer != obj");function t(){e.next&&e.next(l())}return t(),{unsubscribe:n(t)}}})[q]=function(){return this},e},r}function V(e,n){var t=n&&n.type;return"action "+(t&&t.toString()||"?")+M+" "+e+" returns "+T}function R(){var e=[].slice.call(arguments);return 0===e.length?function(e){return e}:1===e.length?e[0]:e.reduce(function(e,n){return function(){return e(n.apply(void 0,[].slice.call(arguments)))}})}function $(){var e=arguments;return function(t){return function(r,i,a){var o,u=t(r,i,a),c=u.dispatch,s={getState:u.getState,dispatch:function(e){return c(e)}};return o=[].slice.call(e).map(function(e){return e(s)}),n({},u,{dispatch:c=R.apply(void 0,o)(u.dispatch)})}}}var B="__anon_id",X="__user_id",J="__user_traits",W={__proto__:null,ANON_ID:B,USER_ID:X,USER_TRAITS:J},H="analytics",F="userId",Z="anonymousId",G=["bootstrap","params","campaign","initializeStart","initialize","initializeEnd","ready","resetStart","reset","resetEnd","pageStart","page","pageEnd","pageAborted","trackStart","track","trackEnd","trackAborted","identifyStart","identify","identifyEnd","identifyAborted","userIdChanged","registerPlugins","enablePlugin","disablePlugin","online","offline","setItemStart","setItem","setItemEnd","setItemAborted","removeItemStart","removeItem","removeItemEnd","removeItemAborted"],K=["name","EVENTS","config","loaded"],Q=G.reduce(function(e,n){return e[n]=n,e},{registerPluginType:function(e){return"registerPlugin:"+e},pluginReadyType:function(e){return"ready:"+e}}),Y=/^utm_/,ee=/^an_prop_/,ne=/^an_trait_/;function te(e){var t=e.storage.setItem;return function(r){return function(i){return function(a){if(a.type===Q.bootstrap){var o=a.params,u=a.user,c=a.persistedUser,s=a.initialUser,l=c.userId===u.userId;c.anonymousId!==u.anonymousId&&t(B,u.anonymousId),l||t(X,u.userId),s.traits&&t(J,n({},l&&c.traits?c.traits:{},s.traits));var f=Object.keys(a.params);if(f.length){var d=o.an_uid,p=o.an_event,m=f.reduce(function(e,n){if(n.match(Y)||n.match(/^(d|g)clid/)){var t=n.replace(Y,"");e.campaign["campaign"===t?"name":t]=o[n]}return n.match(ee)&&(e.props[n.replace(ee,"")]=o[n]),n.match(ne)&&(e.traits[n.replace(ne,"")]=o[n]),e},{campaign:{},props:{},traits:{}});r.dispatch(n({type:Q.params,raw:o},m,d?{userId:d}:{})),d&&setTimeout(function(){return e.identify(d,m.traits)},0),p&&setTimeout(function(){return e.track(p,m.props)},0),Object.keys(m.campaign).length&&r.dispatch({type:Q.campaign,campaign:m.campaign})}}return i(a)}}}}function re(e){return function(t,r){if(void 0===t&&(t={}),void 0===r&&(r={}),r.type===Q.setItemEnd){if(r.key===B)return n({},t,{anonymousId:r.value});if(r.key===X)return n({},t,{userId:r.value})}switch(r.type){case Q.identify:return Object.assign({},t,{userId:r.userId,traits:n({},t.traits,r.traits)});case Q.reset:return[X,B,J].forEach(function(n){e.removeItem(n)}),Object.assign({},t,{userId:null,anonymousId:null,traits:{}});default:return t}}}function ie(e){return{userId:e.getItem(X),anonymousId:e.getItem(B),traits:e.getItem(J)}}var ae=function(e){return"__TEMP__"+e};function oe(e){var t=e.storage,r=t.setItem,i=t.removeItem,a=t.getItem;return function(e){return function(t){return function(o){var u=o.userId,c=o.traits,s=o.options;if(o.type===Q.reset&&([X,J,B].forEach(function(e){i(e)}),[F,Z,"traits"].forEach(function(e){j(ae(e))})),o.type===Q.identify){a(B)||r(B,S());var l=a(X),f=a(J)||{};l&&l!==u&&e.dispatch({type:Q.userIdChanged,old:{userId:l,traits:f},new:{userId:u,traits:c},options:s}),u&&r(X,u),c&&r(J,n({},f,c))}return t(o)}}}}var ue={};function ce(e,n){ue[e]&&m(ue[e])&&(ue[e](n),delete ue[e])}function se(e,t,r){return new Promise(function(i,a){return t()?i(e):r<1?a(n({},e,{queue:!0})):new Promise(function(e){return setTimeout(e,10)}).then(function(n){return se(e,t,r-10).then(i,a)})})}function le(e){return{abort:e}}function fe(e,t,r){var i={},a=t(),o=e.getState(),u=o.plugins,c=o.queue,s=o.user;if(!o.context.offline&&c&&c.actions&&c.actions.length){var l=c.actions.reduce(function(e,n,t){return u[n.plugin].loaded?(e.process.push(n),e.processIndex.push(t)):(e.requeue.push(n),e.requeueIndex.push(t)),e},{processIndex:[],process:[],requeue:[],requeueIndex:[]});if(l.processIndex&&l.processIndex.length){l.processIndex.forEach(function(t){var o=c.actions[t],l=o.plugin,f=o.payload.type,d=a[l][f];if(d&&m(d)){var p,g=function(e,n){return void 0===e&&(e={}),void 0===n&&(n={}),[F,Z].reduce(function(t,r){return e.hasOwnProperty(r)&&n[r]&&n[r]!==e[r]&&(t[r]=n[r]),t},e)}(o.payload,s),v=i[g.meta.rid];if(!v&&(p=d({payload:g,config:u[l].config,instance:r,abort:le}))&&y(p)&&p.abort)return void(i[g.meta.rid]=!0);if(!v){var h=f+":"+l;e.dispatch(n({},g,{type:h,_:{called:h,from:"queueDrain"}}))}}});var f=c.actions.filter(function(e,n){return!~l.processIndex.indexOf(n)});c.actions=f}}}var de=function(e){var t=e.data,r=e.action,i=e.instance,a=e.state,o=e.allPlugins,u=e.allMatches,c=e.store,s=e.EVENTS;try{var l=a.plugins,f=a.context,d=r.type,p=d.match(pe),g=t.exact.map(function(e){return e.pluginName});p&&(g=u.during.map(function(e){return e.pluginName}));var v=function(e,t){return function(r,i,a){var o=i.config,u=i.name,c=u+"."+r.type;a&&(c=a.event);var s=r.type.match(pe)?function(e,t,r,i,a){return function(o,u){var c=i?i.name:e,s=u&&Ee(u)?u:r;if(i&&(!(s=u&&Ee(u)?u:[e]).includes(e)||1!==s.length))throw new Error("Method "+t+" can only abort "+e+" plugin. "+JSON.stringify(s)+" input valid");return n({},a,{abort:{reason:o,plugins:s,caller:t,_:c}})}}(u,c,t,a,r):function(e,n){return function(){throw new Error(e.type+" action not cancellable. Remove abort in "+n)}}(r,c);return{payload:xe(r),instance:e,config:o||{},abort:s}}}(i,g),h=t.exact.reduce(function(e,n){var t=n.pluginName,r=n.methodName,i=!1;return r.match(/^initialize/)||r.match(/^reset/)||(i=!l[t].loaded),f.offline&&r.match(/^(page|track|identify)/)&&(i=!0),e[""+t]=i,e},{});return Promise.resolve(t.exact.reduce(function(e,a,u){var c=a.pluginName;return Promise.resolve(e).then(function(e){function a(){return Promise.resolve(e)}var u=function(){if(t.namespaced&&t.namespaced[c])return Promise.resolve(t.namespaced[c].reduce(function(e,t,r){return Promise.resolve(e).then(function(e){return t.method&&m(t.method)?(function(e,n){var t=Se(e);if(t&&t.name===n){var r=Se(t.method);throw new Error([n+" plugin is calling method "+e,"Plugins cant call self","Use "+t.method+" "+(r?"or "+r.method:"")+" in "+n+" plugin insteadof "+e].join("\n"))}}(t.methodName,t.pluginName),Promise.resolve(t.method({payload:e,instance:i,abort:(r=e,a=c,u=t.pluginName,function(e,t){return n({},r,{abort:{reason:e,plugins:t||[a],caller:d,from:u||a}})}),config:he(t.pluginName,l,o),plugins:l})).then(function(t){var r=y(t)?t:{};return Promise.resolve(n({},e,r))})):e;var r,a,u})},Promise.resolve(r))).then(function(n){e[c]=n});e[c]=r}();return u&&u.then?u.then(a):a()})},Promise.resolve({}))).then(function(e){return Promise.resolve(t.exact.reduce(function(r,a,u){try{var s=t.exact.length===u+1,f=a.pluginName,m=o[f];return Promise.resolve(r).then(function(t){var r=e[f]?e[f]:{};if(p&&(r=t),we(r,f))return ve({data:r,method:d,instance:i,pluginName:f,store:c}),Promise.resolve(t);if(we(t,f))return s&&ve({data:t,method:d,instance:i,store:c}),Promise.resolve(t);if(h.hasOwnProperty(f)&&!0===h[f])return c.dispatch({type:"queue",plugin:f,payload:r,_:{called:"queue",from:"queueMechanism"}}),Promise.resolve(t);var a=v(e[f],o[f]);return Promise.resolve(m[d]({abort:a.abort,payload:r,instance:i,config:he(f,l,o),plugins:l})).then(function(a){var o=y(a)?a:{},u=n({},t,o),s=e[f];if(we(s,f))ve({data:s,method:d,instance:i,pluginName:f,store:c});else{var l=d+":"+f;(l.match(/:/g)||[]).length<2&&!d.match(me)&&!d.match(ge)&&i.dispatch(n({},p?u:r,{type:l,_:{called:l,from:"submethod"}}))}return Promise.resolve(u)})})}catch(e){return Promise.reject(e)}},Promise.resolve(r))).then(function(e){if(!(d.match(pe)||d.match(/^registerPlugin/)||d.match(ge)||d.match(me)||d.match(/^params/)||d.match(/^userIdChanged/))){if(s.plugins.includes(d),e._&&e._.originalAction===d)return e;var r=n({},e,{_:{originalAction:e.type,called:e.type,from:"engineEnd"}});Ie(e,t.exact.length)&&!d.match(/End$/)&&(r=n({},r,{type:e.type+"Aborted"})),c.dispatch(r)}return e})})}catch(e){return Promise.reject(e)}},pe=/Start$/,me=/^bootstrap/,ge=/^ready/;function ve(e){var t=e.pluginName,r=e.method+"Aborted"+(t?":"+t:"");e.store.dispatch(n({},e.data,{type:r,_:{called:r,from:"abort"}}))}function he(e,n,t){var r=n[e]||t[e];return r&&r.config?r.config:{}}function ye(e,n){return n.reduce(function(n,t){return t[e]?n.concat({methodName:e,pluginName:t.name,method:t[e]}):n},[])}function be(e,n){var t=e.replace(pe,""),r=n?":"+n:"";return[""+e+r,""+t+r,t+"End"+r]}function we(e,n){var t=e.abort;return!!t&&(!0===t||Pe(t,n)||t&&Pe(t.plugins,n))}function Ie(e,n){var t=e.abort;if(!t)return!1;if(!0===t||g(t))return!0;var r=t.plugins;return Ee(t)&&t.length===n||Ee(r)&&r.length===n}function Ee(e){return Array.isArray(e)}function Pe(e,n){return!(!e||!Ee(e))&&e.includes(n)}function Se(e){var n=e.match(/(.*):(.*)/);return!!n&&{method:n[1],name:n[2]}}function xe(e){return Object.keys(e).reduce(function(n,t){return"type"===t||(n[t]=y(e[t])?Object.assign({},e[t]):e[t]),n},{})}function _e(e,t,r){var i={};return function(a){return function(o){return function(u){try{var c,s=function(e){return c?e:o(d)},l=u.type,f=u.plugins,d=u;if(u.abort)return Promise.resolve(o(u));if(l===Q.enablePlugin&&a.dispatch({type:Q.initializeStart,plugins:f,disabled:[],fromEnable:!0,meta:u.meta}),l===Q.disablePlugin&&setTimeout(function(){return ce(u.meta.rid,{payload:u})},0),l===Q.initializeEnd){var p=t(),g=Object.keys(p),h=g.filter(function(e){return f.includes(e)}).map(function(e){return p[e]}),y=[],b=[],w=u.disabled,I=h.map(function(e){var n=e.loaded,t=e.name,r=e.config;return se(e,function(){return n({config:r})},1e4).then(function(n){return i[t]||(a.dispatch({type:Q.pluginReadyType(t),name:t,events:Object.keys(e).filter(function(e){return!K.includes(e)})}),i[t]=!0),y=y.concat(t),e}).catch(function(e){if(e instanceof Error)throw new Error(e);return b=b.concat(e.name),e})});Promise.all(I).then(function(e){var t={plugins:y,failed:b,disabled:w};setTimeout(function(){g.length===I.length+w.length&&a.dispatch(n({},{type:Q.ready},t))},0)})}var E=function(){if(l!==Q.bootstrap)return/^ready:([^:]*)$/.test(l)&&setTimeout(function(){return fe(a,t,e)},0),Promise.resolve(function(e,t,r,i,a){try{var o=m(t)?t():t,u=e.type,c=u.replace(pe,"");if(e._&&e._.called)return Promise.resolve(e);var s=r.getState(),l=(p=o,void 0===(g=s.plugins)&&(g={}),void 0===(h=e.options)&&(h={}),Object.keys(p).filter(function(e){var n=h.plugins||{};return v(n[e])?n[e]:!1!==n.all&&(!g[e]||!1!==g[e].enabled)}).map(function(e){return p[e]}));u===Q.initializeStart&&e.fromEnable&&(l=Object.keys(s.plugins).filter(function(n){var t=s.plugins[n];return e.plugins.includes(n)&&!t.initialized}).map(function(e){return o[e]}));var f=l.map(function(e){return e.name}),d=function(e,n){var t=be(e).map(function(e){return ye(e,n)});return n.reduce(function(t,r){var i=r.name,a=be(e,i).map(function(e){return ye(e,n)}),o=a[0],u=a[1],c=a[2];return o.length&&(t.beforeNS[i]=o),u.length&&(t.duringNS[i]=u),c.length&&(t.afterNS[i]=c),t},{before:t[0],beforeNS:{},during:t[1],duringNS:{},after:t[2],afterNS:{}})}(u,l);return Promise.resolve(de({action:e,data:{exact:d.before,namespaced:d.beforeNS},state:s,allPlugins:o,allMatches:d,instance:r,store:i,EVENTS:a})).then(function(e){function t(){var t=function(){if(u.match(pe))return Promise.resolve(de({action:n({},l,{type:c+"End"}),data:{exact:d.after,namespaced:d.afterNS},state:s,allPlugins:o,allMatches:d,instance:r,store:i,EVENTS:a})).then(function(e){e.meta&&e.meta.hasCallback&&ce(e.meta.rid,{payload:e})})}();return t&&t.then?t.then(function(){return e}):e}if(Ie(e,f.length))return e;var l,p=function(){if(u!==c)return Promise.resolve(de({action:n({},e,{type:c}),data:{exact:d.during,namespaced:d.duringNS},state:s,allPlugins:o,allMatches:d,instance:r,store:i,EVENTS:a})).then(function(e){l=e});l=e}();return p&&p.then?p.then(t):t()})}catch(e){return Promise.reject(e)}var p,g,h}(u,t,e,a,r)).then(function(e){var n=o(e);return c=1,n})}();return Promise.resolve(E&&E.then?E.then(s):s(E))}catch(e){return Promise.reject(e)}}}}}function Oe(e){return function(n){return function(n){return function(t){var r=t.type,i=t.key,a=t.value,o=t.options;if(r===Q.setItem||r===Q.removeItem){if(t.abort)return n(t);r===Q.setItem?e.setItem(i,a,o):e.removeItem(i,o)}return n(t)}}}}var Ne=function(){var e=this;this.before=[],this.after=[],this.addMiddleware=function(n,t){e[t]=e[t].concat(n)},this.removeMiddleware=function(n,t){var r=e[t].findIndex(function(e){return e===n});-1!==r&&(e[t]=[].concat(e[t].slice(0,r),e[t].slice(r+1)))},this.dynamicMiddlewares=function(n){return function(t){return function(r){return function(i){var a={getState:t.getState,dispatch:function(e){return t.dispatch(e)}},o=e[n].map(function(e){return e(a)});return R.apply(void 0,o)(r)(i)}}}}};function Ae(e){return function(t,r){void 0===t&&(t={});var i={};if("initialize:aborted"===r.type)return t;if(/^registerPlugin:([^:]*)$/.test(r.type)){var a=je(r.type,"registerPlugin"),o=e()[a];if(!o||!a)return t;var u=r.enabled,c=o.config;return i[a]={enabled:u,initialized:!!u&&Boolean(!o.initialize),loaded:!!u&&Boolean(o.loaded({config:c})),config:c},n({},t,i)}if(/^initialize:([^:]*)$/.test(r.type)){var s=je(r.type,Q.initialize),l=e()[s];return l&&s?(i[s]=n({},t[s],{initialized:!0,loaded:Boolean(l.loaded({config:l.config}))}),n({},t,i)):t}if(/^ready:([^:]*)$/.test(r.type))return i[r.name]=n({},t[r.name],{loaded:!0}),n({},t,i);switch(r.type){case Q.disablePlugin:return n({},t,ke(r.plugins,!1,t));case Q.enablePlugin:return n({},t,ke(r.plugins,!0,t));default:return t}}}function je(e,n){return e.substring(n.length+1,e.length)}function ke(e,t,r){return e.reduce(function(e,i){return e[i]=n({},r[i],{enabled:t}),e},r)}function Te(e){try{return JSON.parse(JSON.stringify(e))}catch(e){}return e}var Me={last:{},history:[]};function ze(e,t){void 0===e&&(e=Me);var r=t.options,i=t.meta;if(t.type===Q.track){var a=Te(n({event:t.event,properties:t.properties},Object.keys(r).length&&{options:r},{meta:i}));return n({},e,{last:a,history:e.history.concat(a)})}return e}var Le={actions:[]};function Ue(e,t){void 0===e&&(e=Le);var r=t.payload;switch(t.type){case"queue":var i;return i=r&&r.type&&r.type===Q.identify?[t].concat(e.actions):e.actions.concat(t),n({},e,{actions:i});case"dequeue":return[];default:return e}}var qe=/#.*$/;function Ce(e){var n=/(http[s]?:\/\/)?([^\/\s]+\/)(.*)/g.exec(e);return"/"+(n&&n[3]?n[3].split("?")[0].replace(qe,""):"")}var De,Ve,Re,$e,Be=function(e){if(void 0===e&&(e={}),!c)return e;var t=document,r=t.title,i=t.referrer,a=window,o=a.location,u=a.innerWidth,s=a.innerHeight,l=o.hash,f=o.search,d=function(e){var n=function(){if(c)for(var e,n=document.getElementsByTagName("link"),t=0;e=n[t];t++)if("canonical"===e.getAttribute("rel"))return e.getAttribute("href")}();return n?n.match(/\?/)?n:n+e:window.location.href.replace(qe,"")}(f),p={title:r,url:d,path:Ce(d),hash:l,search:f,width:u,height:s};return i&&""!==i&&(p.referrer=i),n({},p,e)},Xe={last:{},history:[]};function Je(e,t){void 0===e&&(e=Xe);var r=t.options;if(t.type===Q.page){var i=Te(n({properties:t.properties,meta:t.meta},Object.keys(r).length&&{options:r}));return n({},e,{last:i,history:e.history.concat(i)})}return e}De=function(){if(!c)return!1;var e=navigator.appVersion;return~e.indexOf("Win")?"Windows":~e.indexOf("Mac")?"MacOS":~e.indexOf("X11")?"UNIX":~e.indexOf("Linux")?"Linux":"Unknown OS"}(),Ve=c?document.referrer:null,Re=function(){if(c){var e=navigator,n=e.languages;return e.userLanguage||(n&&n.length?n[0]:e.language)}}(),$e=function(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch(e){}}();var We={initialized:!1,sessionId:S(),app:null,version:null,debug:!1,offline:!!c&&!navigator.onLine,os:{name:De},userAgent:c?navigator.userAgent:"node",library:{name:H,version:"0.13.1"},timezone:$e,locale:Re,campaign:{},referrer:Ve};function He(e,t){void 0===e&&(e=We);var r=e.initialized,i=t.campaign;switch(t.type){case Q.campaign:return n({},e,{campaign:i});case Q.offline:return n({},e,{offline:!0});case Q.online:return n({},e,{offline:!1});default:return r?e:n({},We,e,{initialized:!0})}}var Fe=["plugins","reducers","storage"];function Ze(e,n,t){if(c){var r=window[(t?"add":"remove")+"EventListener"];e.split(" ").forEach(function(e){r(e,n)})}}function Ge(e){var n=Ze.bind(null,"online offline",function(n){return Promise.resolve(!navigator.onLine).then(e)});return n(!0),function(e){return n(!1)}}function Ke(){return A(H,[]),function(e){return function(n,t,r){var i=e(n,t,r),a=i.dispatch;return Object.assign(i,{dispatch:function(e){return O[_][H].push(e.action||e),a(e)}})}}}function Qe(e){return function(){return R(R.apply(null,arguments),Ke())}}function Ye(e){return e?function(e){return"array"===d(e)}(e)?e:[e]:[]}function en(e,t,r){void 0===e&&(e={});var i,a,o=S();return t&&(ue[o]=(i=t,a=function(e){for(var n,t=e||Array.prototype.slice.call(arguments),r=0;r<t.length;r++)if(m(t[r])){n=t[r];break}return n}(r),function(e){a&&a(e),i(e)})),n({},e,{rid:o,ts:(new Date).getTime()},t?{hasCallback:!0}:{})}function nn(e){void 0===e&&(e={});var t=e.reducers||{},r=e.initialUser||{},i=(e.plugins||[]).reduce(function(e,n){if(m(n))return e.middlewares=e.middlewares.concat(n),e;if(n.NAMESPACE&&(n.name=n.NAMESPACE),!n.name)throw new Error("https://lytics.dev/errors/1");n.config||(n.config={});var t=n.EVENTS?Object.keys(n.EVENTS).map(function(e){return n.EVENTS[e]}):[];e.pluginEnabled[n.name]=!(!1===n.enabled||!1===n.config.enabled),delete n.enabled,n.methods&&(e.methods[n.name]=Object.keys(n.methods).reduce(function(e,t){return e[t]=function(e){return function(){for(var n=Array.prototype.slice.call(arguments),t=new Array(e.length),r=0;r<n.length;r++)t[r]=n[r];return t[t.length]=C,e.apply({instance:C},t)}}(n.methods[t]),e},{}),delete n.methods);var r=Object.keys(n).concat(t),i=new Set(e.events.concat(r));if(e.events=Array.from(i),e.pluginsArray=e.pluginsArray.concat(n),e.plugins[n.name])throw new Error(n.name+"AlreadyLoaded");return e.plugins[n.name]=n,e.plugins[n.name].loaded||(e.plugins[n.name].loaded=function(){return!0}),e},{plugins:{},pluginEnabled:{},methods:{},pluginsArray:[],middlewares:[],events:[]}),o=e.storage?e.storage:{getItem:N,setItem:A,removeItem:j},u=function(e){return function(n,t,r){return t.getState("user")[n]||(r&&y(r)&&r[n]?r[n]:ie(e)[n]||N(ae(n))||null)}}(o),s=i.plugins,l=i.events.filter(function(e){return!K.includes(e)}).sort(),f=new Set(l.concat(G).filter(function(e){return!K.includes(e)})),d=Array.from(f).sort(),p=function(){return s},v=new Ne,h=v.addMiddleware,b=v.removeMiddleware,w=v.dynamicMiddlewares,I=function(){throw new Error("Abort disabled inListener")},x=function(e){for(var n,t=Object.create(null),r=/([^&=]+)=?([^&]*)/g;n=r.exec(e);){var i=E(n[1]),a=E(n[2]);if(i)if("[]"===i.substring(i.length-2)){var o=t[i=i.substring(0,i.length-2)]||(t[i]=[]);t[i]=Array.isArray(o)?o:[],t[i].push(a)}else t[i]=""===a||a}for(var u in t){var c=u.split("[");c.length>1&&(P(t,c.map(function(e){return e.replace(/[?[\]\\ ]/g,"")}),t[u]),delete t[u])}return t}(c&&window.location.search.substring(1)),_=ie(o),O=n({},_,r,x.an_uid?{userId:x.an_uid}:{},x.an_aid?{anonymousId:x.an_aid}:{});O.anonymousId||(O.anonymousId=S());var z=n({enable:function(e,n){return new Promise(function(t){ce.dispatch({type:Q.enablePlugin,plugins:Ye(e),_:{originalAction:Q.enablePlugin}},t,[n])})},disable:function(e,n){return new Promise(function(t){ce.dispatch({type:Q.disablePlugin,plugins:Ye(e),_:{originalAction:Q.disablePlugin}},t,[n])})}},i.methods),q=!1,C={identify:function(e,t,r,i){try{var a=g(e)?e:null,o=y(e)?e:t,c=r||{},s=C.user();A(ae(F),a);var l=a||o.userId||u(F,C,o);return Promise.resolve(new Promise(function(e){ce.dispatch(n({type:Q.identifyStart,userId:l,traits:o||{},options:c,anonymousId:s.anonymousId},s.id&&s.id!==a&&{previousId:s.id}),e,[t,r,i])}))}catch(e){return Promise.reject(e)}},track:function(e,n,t,r){try{var i=y(e)?e.event:e;if(!i||!g(i))throw new Error("EventMissing");var a=y(e)?e:n||{},o=y(t)?t:{};return Promise.resolve(new Promise(function(e){ce.dispatch({type:Q.trackStart,event:i,properties:a,options:o,userId:u(F,C,n),anonymousId:u(Z,C,n)},e,[n,t,r])}))}catch(e){return Promise.reject(e)}},page:function(e,n,t){try{var r=y(e)?e:{},i=y(n)?n:{};return Promise.resolve(new Promise(function(a){ce.dispatch({type:Q.pageStart,properties:Be(r),options:i,userId:u(F,C,r),anonymousId:u(Z,C,r)},a,[e,n,t])}))}catch(e){return Promise.reject(e)}},user:function(e){if(e===F||"id"===e)return u(F,C);if(e===Z||"anonId"===e)return u(Z,C);var n=C.getState("user");return e?a(n,e):n},reset:function(e){return new Promise(function(n){ce.dispatch({type:Q.resetStart},n,e)})},ready:function(e){return q&&e({plugins:z,instance:C}),C.on(Q.ready,function(n){e&&e(n),q=!0})},on:function(e,n){if(!e||!m(n))return!1;if(e===Q.bootstrap)throw new Error(".on disabled for "+e);var t=/Start$|Start:/;if("*"===e){var r=function(e){return function(e){return function(r){return r.type.match(t)&&n({payload:r,instance:C,plugins:s}),e(r)}}},i=function(e){return function(e){return function(r){return r.type.match(t)||n({payload:r,instance:C,plugins:s}),e(r)}}};return h(r,tn),h(i,rn),function(){b(r,tn),b(i,rn)}}var a=e.match(t)?tn:rn,o=function(t){return function(t){return function(r){return r.type===e&&n({payload:r,instance:C,plugins:s,abort:I}),t(r)}}};return h(o,a),function(){return b(o,a)}},once:function(e,n){if(!e||!m(n))return!1;if(e===Q.bootstrap)throw new Error(".once disabled for "+e);var t=C.on(e,function(e){n({payload:e.payload,instance:C,plugins:s,abort:I}),t()});return t},getState:function(e){var n=ce.getState();return e?a(n,e):Object.assign({},n)},dispatch:function(e){var t=g(e)?{type:e}:e;if(G.includes(t.type))throw new Error("reserved action "+t.type);var r=n({},t,{_:n({originalAction:t.type},e._||{})});ce.dispatch(r)},enablePlugin:z.enable,disablePlugin:z.disable,plugins:z,storage:{getItem:o.getItem,setItem:function(e,n,t){ce.dispatch({type:Q.setItemStart,key:e,value:n,options:t})},removeItem:function(e,n){ce.dispatch({type:Q.removeItemStart,key:e,options:n})}},setAnonymousId:function(e,n){C.storage.setItem(B,e,n)},events:{core:G,plugins:l}},X=i.middlewares.concat([function(e){return function(e){return function(n){return n.meta||(n.meta=en()),e(n)}}},w(tn),_e(C,p,{all:d,plugins:l}),Oe(o),te(C),oe(C),w(rn)]),J={context:He,user:re(o),page:Je,track:ze,plugins:Ae(p),queue:Ue},W=R,H=R;if(c&&e.debug){var Y=window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__;Y&&(W=Y({trace:!0,traceLimit:25})),H=function(){return 0===arguments.length?Ke():y(typeof arguments[0])?Qe():Qe().apply(null,arguments)}}var ee=function(e){return Object.keys(e).reduce(function(n,t){return Fe.includes(t)||(n[t]=e[t]),n},{})}(e),ne=i.pluginsArray.reduce(function(e,n){var t=n.name,r=n.config,a=n.loaded,o=i.pluginEnabled[t];return e[t]={enabled:o,initialized:!!o&&Boolean(!n.initialize),loaded:Boolean(a({config:r})),config:r},e},{}),ue={context:ee,user:O,plugins:ne},ce=D(function(e){for(var n=Object.keys(e),t={},r=0;r<n.length;r++){var i=n[r];typeof e[i]===k&&(t[i]=e[i])}var a,o=Object.keys(t);try{!function(e){Object.keys(e).forEach(function(n){var t=e[n];if(typeof t(void 0,{type:L})===T||typeof t(void 0,{type:U})===T)throw new Error(M+" "+n+" "+T)})}(t)}catch(e){a=e}return function(e,n){if(void 0===e&&(e={}),a)throw a;for(var r=!1,i={},u=0;u<o.length;u++){var c=o[u],s=e[c],l=(0,t[c])(s,n);if(typeof l===T){var f=V(c,n);throw new Error(f)}i[c]=l,r=r||l!==s}return r?i:e}}(n({},J,t)),ue,H(W($.apply(void 0,X))));ce.dispatch=function(e){return function(t,r,i){var a=n({},t,{meta:en(t.meta,r,Ye(i))});return e.apply(null,[a])}}(ce.dispatch);var se=Object.keys(s);ce.dispatch({type:Q.bootstrap,plugins:se,config:ee,params:x,user:O,initialUser:r,persistedUser:_});var le=se.filter(function(e){return i.pluginEnabled[e]}),de=se.filter(function(e){return!i.pluginEnabled[e]});return ce.dispatch({type:Q.registerPlugins,plugins:se,enabled:i.pluginEnabled}),i.pluginsArray.map(function(e,n){var t=e.bootstrap,r=e.config,a=e.name;t&&m(t)&&t({instance:C,config:r,payload:e}),ce.dispatch({type:Q.registerPluginType(a),name:a,enabled:i.pluginEnabled[a],plugin:e}),i.pluginsArray.length===n+1&&ce.dispatch({type:Q.initializeStart,plugins:le,disabled:de})}),Ge(function(e){ce.dispatch({type:e?Q.offline:Q.online})}),function(e,n,t){setInterval(function(){return fe(e,n,t)},3e3)}(ce,p,C),C}var tn="before",rn="after";return e.Analytics=nn,e.CONSTANTS=W,e.EVENTS=Q,e.default=nn,e.init=nn,e}({});
//# sourceMappingURL=core.js.map