UNPKG

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