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