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) 24.9 kB
import{uuid as e,paramsParse as t,dotProp as n}from"analytics-utils";import{get as r,remove as i,set as a,globalContext as o,KEY as u}from"@analytics/global-storage-utils";import{isObject as c,PREFIX as s,isFunction as l,isBoolean as f,isString as d,isBrowser as p,isArray as m}from"@analytics/type-utils";function g(){return g=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},g.apply(null,arguments)}var h="function",v="undefined",y="reducer",b="@@redux/",I=b+"INIT",w=b+Math.random().toString(36),E=/* #__PURE__ */function(){return typeof Symbol===h&&Symbol.observable||"@@observable"}(),P=" != "+h;function S(e,t,n){var r;if(typeof t===h&&typeof n===v&&(n=t,t=void 0),typeof n!==v){if(typeof n!==h)throw new Error("enhancer"+P);return n(S)(e,t)}if(typeof e!==h)throw new Error(y+P);var i=e,a=t,o=[],u=o,s=!1;function l(){u===o&&(u=o.slice())}function f(){return a}function d(e){if(typeof e!==h)throw new Error("Listener"+P);var t=!0;return l(),u.push(e),function(){if(t){t=!1,l();var n=u.indexOf(e);u.splice(n,1)}}}function p(e){if(!c(e))throw new Error("Act != obj");if(typeof e.type===v)throw new Error("ActType "+v);if(s)throw new Error("Dispatch in "+y);try{s=!0,a=i(a,e)}finally{s=!1}for(var t=o=u,n=0;n<t.length;n++)(0,t[n])();return e}return p({type:I}),(r={dispatch:p,subscribe:d,getState:f,replaceReducer:function(e){if(typeof e!==h)throw new Error("next "+y+P);i=e,p({type:I})}})[E]=function(){var e,t=d;return(e={subscribe:function(e){if("object"!=typeof e)throw new TypeError("Observer != obj");function n(){e.next&&e.next(f())}return n(),{unsubscribe:t(n)}}})[E]=function(){return this},e},r}function N(e,t){var n=t&&t.type;return"action "+(n&&n.toString()||"?")+y+" "+e+" returns "+v}function A(){var e=[].slice.call(arguments);return 0===e.length?function(e){return e}:1===e.length?e[0]:e.reduce(function(e,t){return function(){return e(t.apply(void 0,[].slice.call(arguments)))}})}function _(){var e=arguments;return function(t){return function(n,r,i){var a,o=t(n,r,i),u=o.dispatch,c={getState:o.getState,dispatch:function(e){return u(e)}};return a=[].slice.call(e).map(function(e){return e(c)}),g({},o,{dispatch:u=A.apply(void 0,a)(o.dispatch)})}}}var O=s+"anon_id",k=s+"user_id",j=s+"user_traits",T={__proto__:null,ANON_ID:O,USER_ID:k,USER_TRAITS:j},x="analytics",z="userId",M="anonymousId",q=["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"],V=["name","EVENTS","config","loaded"],C=q.reduce(function(e,t){return e[t]=t,e},{registerPluginType:function(e){return"registerPlugin:"+e},pluginReadyType:function(e){return"ready:"+e}}),U=/^utm_/,R=/^an_prop_/,$=/^an_trait_/;function D(e){var t=e.storage.setItem;return function(n){return function(r){return function(i){if(i.type===C.bootstrap){var a=i.params,o=i.user,u=i.persistedUser,c=i.initialUser,s=u.userId===o.userId;u.anonymousId!==o.anonymousId&&t(O,o.anonymousId),s||t(k,o.userId),c.traits&&t(j,g({},s&&u.traits?u.traits:{},c.traits));var l=Object.keys(i.params);if(l.length){var f=a.an_uid,d=a.an_event,p=l.reduce(function(e,t){if(t.match(U)||t.match(/^(d|g)clid/)){var n=t.replace(U,"");e.campaign["campaign"===n?"name":n]=a[t]}return t.match(R)&&(e.props[t.replace(R,"")]=a[t]),t.match($)&&(e.traits[t.replace($,"")]=a[t]),e},{campaign:{},props:{},traits:{}});n.dispatch(g({type:C.params,raw:a},p,f?{userId:f}:{})),f&&setTimeout(function(){return e.identify(f,p.traits)},0),d&&setTimeout(function(){return e.track(d,p.props)},0),Object.keys(p.campaign).length&&n.dispatch({type:C.campaign,campaign:p.campaign})}}return r(i)}}}}function B(e){return function(t,n){if(void 0===t&&(t={}),void 0===n&&(n={}),n.type===C.setItemEnd){if(n.key===O)return g({},t,{anonymousId:n.value});if(n.key===k)return g({},t,{userId:n.value})}switch(n.type){case C.identify:return Object.assign({},t,{userId:n.userId,traits:g({},t.traits,n.traits)});case C.reset:return[k,O,j].forEach(function(t){e.removeItem(t)}),Object.assign({},t,{userId:null,anonymousId:null,traits:{}});default:return t}}}function L(e){return{userId:e.getItem(k),anonymousId:e.getItem(O),traits:e.getItem(j)}}var J=function(e){return s+"TEMP"+s+e};function X(t){var n=t.storage,r=n.setItem,a=n.removeItem,o=n.getItem;return function(t){return function(n){return function(u){var c=u.userId,s=u.traits,l=u.options;if(u.type===C.reset&&([k,j,O].forEach(function(e){a(e)}),[z,M,"traits"].forEach(function(e){i(J(e))})),u.type===C.identify){o(O)||r(O,e());var f=o(k),d=o(j)||{};f&&f!==c&&t.dispatch({type:C.userIdChanged,old:{userId:f,traits:d},new:{userId:c,traits:s},options:l}),c&&r(k,c),s&&r(j,g({},d,s))}return n(u)}}}}var H={};function W(e,t){H[e]&&l(H[e])&&(H[e](t),delete H[e])}function F(e,t,n){return new Promise(function(r,i){return t()?r(e):n<1?i(g({},e,{queue:!0})):new Promise(function(e){return setTimeout(e,10)}).then(function(a){return F(e,t,n-10).then(r,i)})})}function G(e){return{abort:e}}var K=function(e){var t=e.data,n=e.action,r=e.instance,i=e.state,a=e.allPlugins,o=e.allMatches,u=e.store,s=e.EVENTS;try{var f=i.plugins,d=i.context,p=n.type,m=p.match(Q),h=t.exact.map(function(e){return e.pluginName});m&&(h=o.during.map(function(e){return e.pluginName}));var v=function(e,t){return function(n,r,i){var a=r.config,o=r.name,u=o+"."+n.type;i&&(u=i.event);var c=n.type.match(Q)?function(e,t,n,r,i){return function(a,o){var u=r?r.name:e,c=o&&oe(o)?o:n;if(r&&(!(c=o&&oe(o)?o:[e]).includes(e)||1!==c.length))throw new Error("Method "+t+" can only abort "+e+" plugin. "+JSON.stringify(c)+" input valid");return g({},i,{abort:{reason:a,plugins:c,caller:t,_:u}})}}(o,u,t,i,n):function(e,t){return function(){throw new Error(e.type+" action not cancellable. Remove abort in "+t)}}(n,u);return{payload:se(n),instance:e,config:a||{},abort:c}}}(r,h),y=t.exact.reduce(function(e,t){var n=t.pluginName,r=t.methodName,i=!1;return r.match(/^initialize/)||r.match(/^reset/)||(i=!f[n].loaded),d.offline&&r.match(/^(page|track|identify)/)&&(i=!0),e[""+n]=i,e},{});return Promise.resolve(t.exact.reduce(function(e,i,o){var u=i.pluginName;return Promise.resolve(e).then(function(e){function i(){return Promise.resolve(e)}var o=function(){if(t.namespaced&&t.namespaced[u])return Promise.resolve(t.namespaced[u].reduce(function(e,t,n){return Promise.resolve(e).then(function(e){return t.method&&l(t.method)?(function(e,t){var n=ce(e);if(n&&n.name===t){var r=ce(n.method);throw new Error([t+" plugin is calling method "+e,"Plugins cant call self","Use "+n.method+" "+(r?"or "+r.method:"")+" in "+t+" plugin insteadof "+e].join("\n"))}}(t.methodName,t.pluginName),Promise.resolve(t.method({payload:e,instance:r,abort:(n=e,i=u,o=t.pluginName,function(e,t){return g({},n,{abort:{reason:e,plugins:t||[i],caller:p,from:o||i}})}),config:te(t.pluginName,f,a),plugins:f})).then(function(t){var n=c(t)?t:{};return Promise.resolve(g({},e,n))})):e;var n,i,o})},Promise.resolve(n))).then(function(t){e[u]=t});e[u]=n}();return o&&o.then?o.then(i):i()})},Promise.resolve({}))).then(function(e){return Promise.resolve(t.exact.reduce(function(n,i,o){try{var s=t.exact.length===o+1,l=i.pluginName,d=a[l];return Promise.resolve(n).then(function(t){var n=e[l]?e[l]:{};if(m&&(n=t),ie(n,l))return ee({data:n,method:p,instance:r,pluginName:l,store:u}),Promise.resolve(t);if(ie(t,l))return s&&ee({data:t,method:p,instance:r,store:u}),Promise.resolve(t);if(y.hasOwnProperty(l)&&!0===y[l])return u.dispatch({type:"queue",plugin:l,payload:n,_:{called:"queue",from:"queueMechanism"}}),Promise.resolve(t);var i=v(e[l],a[l]);return Promise.resolve(d[p]({abort:i.abort,payload:n,instance:r,config:te(l,f,a),plugins:f})).then(function(i){var a=c(i)?i:{},o=g({},t,a),s=e[l];if(ie(s,l))ee({data:s,method:p,instance:r,pluginName:l,store:u});else{var f=p+":"+l;(f.match(/:/g)||[]).length<2&&!p.match(Y)&&!p.match(Z)&&r.dispatch(g({},m?o:n,{type:f,_:{called:f,from:"submethod"}}))}return Promise.resolve(o)})})}catch(e){return Promise.reject(e)}},Promise.resolve(n))).then(function(e){if(!(p.match(Q)||p.match(/^registerPlugin/)||p.match(Z)||p.match(Y)||p.match(/^params/)||p.match(/^userIdChanged/))){if(s.plugins.includes(p),e._&&e._.originalAction===p)return e;var n=g({},e,{_:{originalAction:e.type,called:e.type,from:"engineEnd"}});ae(e,t.exact.length)&&!p.match(/End$/)&&(n=g({},n,{type:e.type+"Aborted"})),u.dispatch(n)}return e})})}catch(e){return Promise.reject(e)}},Q=/Start$/,Y=/^bootstrap/,Z=/^ready/;function ee(e){var t=e.pluginName,n=e.method+"Aborted"+(t?":"+t:"");e.store.dispatch(g({},e.data,{type:n,_:{called:n,from:"abort"}}))}function te(e,t,n){var r=t[e]||n[e];return r&&r.config?r.config:{}}function ne(e,t){return t.reduce(function(t,n){return n[e]?t.concat({methodName:e,pluginName:n.name,method:n[e]}):t},[])}function re(e,t){var n=e.replace(Q,""),r=t?":"+t:"";return[""+e+r,""+n+r,n+"End"+r]}function ie(e,t){var n=e.abort;return!!n&&(!0===n||ue(n,t)||n&&ue(n.plugins,t))}function ae(e,t){var n=e.abort;if(!n)return!1;if(!0===n||d(n))return!0;var r=n.plugins;return oe(n)&&n.length===t||oe(r)&&r.length===t}function oe(e){return Array.isArray(e)}function ue(e,t){return!(!e||!oe(e))&&e.includes(t)}function ce(e){var t=e.match(/(.*):(.*)/);return!!t&&{method:t[1],name:t[2]}}function se(e){return Object.keys(e).reduce(function(t,n){return"type"===n||(t[n]=c(e[n])?Object.assign({},e[n]):e[n]),t},{})}function le(e,t,n){var r={};return function(i){return function(a){return function(o){try{var u,s=function(e){return u?e:a(m)},d=o.type,p=o.plugins,m=o;if(o.abort)return Promise.resolve(a(o));if(d===C.enablePlugin&&i.dispatch({type:C.initializeStart,plugins:p,disabled:[],fromEnable:!0,meta:o.meta}),d===C.disablePlugin&&setTimeout(function(){return W(o.meta.rid,{payload:o})},0),d===C.initializeEnd){var h=t(),v=Object.keys(h),y=v.filter(function(e){return p.includes(e)}).map(function(e){return h[e]}),b=[],I=[],w=o.disabled,E=y.map(function(e){var t=e.loaded,n=e.name,a=e.config;return F(e,function(){return t({config:a})},1e4).then(function(t){return r[n]||(i.dispatch({type:C.pluginReadyType(n),name:n,events:Object.keys(e).filter(function(e){return!V.includes(e)})}),r[n]=!0),b=b.concat(n),e}).catch(function(e){if(e instanceof Error)throw new Error(e);return I=I.concat(e.name),e})});Promise.all(E).then(function(e){var t={plugins:b,failed:I,disabled:w};setTimeout(function(){v.length===E.length+w.length&&i.dispatch(g({},{type:C.ready},t))},0)})}var P=function(){if(d!==C.bootstrap)return/^ready:([^:]*)$/.test(d)&&setTimeout(function(){return function(e,t,n){var r={},i=t(),a=e.getState(),o=a.plugins,u=a.queue,s=a.user;if(!a.context.offline&&u&&u.actions&&u.actions.length){var f=u.actions.reduce(function(e,t,n){return o[t.plugin].loaded?(e.process.push(t),e.processIndex.push(n)):(e.requeue.push(t),e.requeueIndex.push(n)),e},{processIndex:[],process:[],requeue:[],requeueIndex:[]});if(f.processIndex&&f.processIndex.length){f.processIndex.forEach(function(t){var a=u.actions[t],f=a.plugin,d=a.payload.type,p=i[f][d];if(p&&l(p)){var m,h=function(e,t){return void 0===e&&(e={}),void 0===t&&(t={}),[z,M].reduce(function(n,r){return e.hasOwnProperty(r)&&t[r]&&t[r]!==e[r]&&(n[r]=t[r]),n},e)}(a.payload,s),v=r[h.meta.rid];if(!v&&(m=p({payload:h,config:o[f].config,instance:n,abort:G}))&&c(m)&&m.abort)return void(r[h.meta.rid]=!0);if(!v){var y=d+":"+f;e.dispatch(g({},h,{type:y,_:{called:y,from:"queueDrain"}}))}}});var d=u.actions.filter(function(e,t){return!~f.processIndex.indexOf(t)});u.actions=d}}}(i,t,e)},0),Promise.resolve(function(e,t,n,r,i){try{var a=l(t)?t():t,o=e.type,u=o.replace(Q,"");if(e._&&e._.called)return Promise.resolve(e);var c=n.getState(),s=(m=a,void 0===(h=c.plugins)&&(h={}),void 0===(v=e.options)&&(v={}),Object.keys(m).filter(function(e){var t=v.plugins||{};return f(t[e])?t[e]:!1!==t.all&&(!h[e]||!1!==h[e].enabled)}).map(function(e){return m[e]}));o===C.initializeStart&&e.fromEnable&&(s=Object.keys(c.plugins).filter(function(t){var n=c.plugins[t];return e.plugins.includes(t)&&!n.initialized}).map(function(e){return a[e]}));var d=s.map(function(e){return e.name}),p=function(e,t){var n=re(e).map(function(e){return ne(e,t)});return t.reduce(function(n,r){var i=r.name,a=re(e,i).map(function(e){return ne(e,t)}),o=a[0],u=a[1],c=a[2];return o.length&&(n.beforeNS[i]=o),u.length&&(n.duringNS[i]=u),c.length&&(n.afterNS[i]=c),n},{before:n[0],beforeNS:{},during:n[1],duringNS:{},after:n[2],afterNS:{}})}(o,s);return Promise.resolve(K({action:e,data:{exact:p.before,namespaced:p.beforeNS},state:c,allPlugins:a,allMatches:p,instance:n,store:r,EVENTS:i})).then(function(e){function t(){var t=function(){if(o.match(Q))return Promise.resolve(K({action:g({},s,{type:u+"End"}),data:{exact:p.after,namespaced:p.afterNS},state:c,allPlugins:a,allMatches:p,instance:n,store:r,EVENTS:i})).then(function(e){e.meta&&e.meta.hasCallback&&W(e.meta.rid,{payload:e})})}();return t&&t.then?t.then(function(){return e}):e}if(ae(e,d.length))return e;var s,l=function(){if(o!==u)return Promise.resolve(K({action:g({},e,{type:u}),data:{exact:p.during,namespaced:p.duringNS},state:c,allPlugins:a,allMatches:p,instance:n,store:r,EVENTS:i})).then(function(e){s=e});s=e}();return l&&l.then?l.then(t):t()})}catch(e){return Promise.reject(e)}var m,h,v}(o,t,e,i,n)).then(function(e){var t=a(e);return u=1,t})}();return Promise.resolve(P&&P.then?P.then(s):s(P))}catch(e){return Promise.reject(e)}}}}}function fe(e){return function(t){return function(t){return function(n){var r=n.type,i=n.key,a=n.value,o=n.options;if(r===C.setItem||r===C.removeItem){if(n.abort)return t(n);r===C.setItem?e.setItem(i,a,o):e.removeItem(i,o)}return t(n)}}}}var de=function(){var e=this;this.before=[],this.after=[],this.addMiddleware=function(t,n){e[n]=e[n].concat(t)},this.removeMiddleware=function(t,n){var r=e[n].findIndex(function(e){return e===t});-1!==r&&(e[n]=[].concat(e[n].slice(0,r),e[n].slice(r+1)))},this.dynamicMiddlewares=function(t){return function(n){return function(r){return function(i){var a={getState:n.getState,dispatch:function(e){return n.dispatch(e)}},o=e[t].map(function(e){return e(a)});return A.apply(void 0,o)(r)(i)}}}}};function pe(e){return function(t,n){void 0===t&&(t={});var r={};if("initialize:aborted"===n.type)return t;if(/^registerPlugin:([^:]*)$/.test(n.type)){var i=me(n.type,"registerPlugin"),a=e()[i];if(!a||!i)return t;var o=n.enabled,u=a.config;return r[i]={enabled:o,initialized:!!o&&Boolean(!a.initialize),loaded:!!o&&Boolean(a.loaded({config:u})),config:u},g({},t,r)}if(/^initialize:([^:]*)$/.test(n.type)){var c=me(n.type,C.initialize),s=e()[c];return s&&c?(r[c]=g({},t[c],{initialized:!0,loaded:Boolean(s.loaded({config:s.config}))}),g({},t,r)):t}if(/^ready:([^:]*)$/.test(n.type))return r[n.name]=g({},t[n.name],{loaded:!0}),g({},t,r);switch(n.type){case C.disablePlugin:return g({},t,ge(n.plugins,!1,t));case C.enablePlugin:return g({},t,ge(n.plugins,!0,t));default:return t}}}function me(e,t){return e.substring(t.length+1,e.length)}function ge(e,t,n){return e.reduce(function(e,r){return e[r]=g({},n[r],{enabled:t}),e},n)}function he(e){try{return JSON.parse(JSON.stringify(e))}catch(e){}return e}var ve={last:{},history:[]};function ye(e,t){void 0===e&&(e=ve);var n=t.options,r=t.meta;if(t.type===C.track){var i=he(g({event:t.event,properties:t.properties},Object.keys(n).length&&{options:n},{meta:r}));return g({},e,{last:i,history:e.history.concat(i)})}return e}var be={actions:[]};function Ie(e,t){void 0===e&&(e=be);var n=t.payload;switch(t.type){case"queue":var r;return r=n&&n.type&&n.type===C.identify?[t].concat(e.actions):e.actions.concat(t),g({},e,{actions:r});case"dequeue":return[];default:return e}}var we=/#.*$/;function Ee(e){var t=/(http[s]?:\/\/)?([^\/\s]+\/)(.*)/g.exec(e);return"/"+(t&&t[3]?t[3].split("?")[0].replace(we,""):"")}var Pe,Se=function(e){if(void 0===e&&(e={}),!p)return e;var t=document,n=t.title,r=t.referrer,i=window,a=i.location,o=i.innerWidth,u=i.innerHeight,c=a.hash,s=a.search,l=function(e){var t=function(){if(p)for(var e,t=document.getElementsByTagName("link"),n=0;e=t[n];n++)if("canonical"===e.getAttribute("rel"))return e.getAttribute("href")}();return t?t.match(/\?/)?t:t+e:window.location.href.replace(we,"")}(s),f={title:n,url:l,path:Ee(l),hash:c,search:s,width:o,height:u};return r&&""!==r&&(f.referrer=r),g({},f,e)},Ne={last:{},history:[]};function Ae(e,t){void 0===e&&(e=Ne);var n=t.options;if(t.type===C.page){var r=he(g({properties:t.properties,meta:t.meta},Object.keys(n).length&&{options:n}));return g({},e,{last:r,history:e.history.concat(r)})}return e}Pe={};var _e={initialized:!1,sessionId:e(),app:null,version:null,debug:!1,offline:!!p&&!navigator.onLine,os:{name:"na"},userAgent:p?navigator.userAgent:"node",library:{name:x,version:"0.13.1"},timezone:void 0,locale:void 0,campaign:{},referrer:Pe};function Oe(e,t){void 0===e&&(e=_e);var n=e.initialized,r=t.campaign;switch(t.type){case C.campaign:return g({},e,{campaign:r});case C.offline:return g({},e,{offline:!0});case C.online:return g({},e,{offline:!1});default:return n?e:g({},_e,e,{initialized:!0})}}var ke=["plugins","reducers","storage"];function je(){return a(x,[]),function(e){return function(t,n,r){var i=e(t,n,r),a=i.dispatch;return Object.assign(i,{dispatch:function(e){return o[u][x].push(e.action||e),a(e)}})}}}function Te(e){return function(){return A(A.apply(null,arguments),je())}}function xe(e){return e?m(e)?e:[e]:[]}function ze(t,n,r){void 0===t&&(t={});var i,a,o=e();return n&&(H[o]=(i=n,a=function(e){for(var t,n=e||Array.prototype.slice.call(arguments),r=0;r<n.length;r++)if(l(n[r])){t=n[r];break}return t}(r),function(e){a&&a(e),i(e)})),g({},t,{rid:o,ts:(new Date).getTime()},n?{hasCallback:!0}:{})}function Me(o){void 0===o&&(o={});var u=o.reducers||{},s=o.initialUser||{},f=(o.plugins||[]).reduce(function(e,t){if(l(t))return e.middlewares=e.middlewares.concat(t),e;if(t.NAMESPACE&&(t.name=t.NAMESPACE),!t.name)throw new Error("https://lytics.dev/errors/1");t.config||(t.config={});var n=t.EVENTS?Object.keys(t.EVENTS).map(function(e){return t.EVENTS[e]}):[];e.pluginEnabled[t.name]=!(!1===t.enabled||!1===t.config.enabled),delete t.enabled,t.methods&&(e.methods[t.name]=Object.keys(t.methods).reduce(function(e,n){var r;return e[n]=(r=t.methods[n],function(){for(var e=Array.prototype.slice.call(arguments),t=new Array(r.length),n=0;n<e.length;n++)t[n]=e[n];return t[t.length]=Y,r.apply({instance:Y},t)}),e},{}),delete t.methods);var r=Object.keys(t).concat(n),i=new Set(e.events.concat(r));if(e.events=Array.from(i),e.pluginsArray=e.pluginsArray.concat(t),e.plugins[t.name])throw new Error(t.name+"AlreadyLoaded");return e.plugins[t.name]=t,e.plugins[t.name].loaded||(e.plugins[t.name].loaded=function(){return!0}),e},{plugins:{},pluginEnabled:{},methods:{},pluginsArray:[],middlewares:[],events:[]}),m=o.storage?o.storage:{getItem:r,setItem:a,removeItem:i},b=function(e){return function(t,n,i){return n.getState("user")[t]||(i&&c(i)&&i[t]?i[t]:L(e)[t]||r(J(t))||null)}}(m),E=f.plugins,P=f.events.filter(function(e){return!V.includes(e)}).sort(),k=new Set(P.concat(q).filter(function(e){return!V.includes(e)})),j=Array.from(k).sort(),T=function(){return E},x=new de,U=x.addMiddleware,R=x.removeMiddleware,$=x.dynamicMiddlewares,H=function(){throw new Error("Abort disabled inListener")},W=t(),F=L(m),G=g({},F,s,W.an_uid?{userId:W.an_uid}:{},W.an_aid?{anonymousId:W.an_aid}:{});G.anonymousId||(G.anonymousId=e());var K=g({enable:function(e,t){return new Promise(function(n){ce.dispatch({type:C.enablePlugin,plugins:xe(e),_:{originalAction:C.enablePlugin}},n,[t])})},disable:function(e,t){return new Promise(function(n){ce.dispatch({type:C.disablePlugin,plugins:xe(e),_:{originalAction:C.disablePlugin}},n,[t])})}},f.methods),Q=!1,Y={identify:function(e,t,n,r){try{var i=d(e)?e:null,o=c(e)?e:t,u=n||{},s=Y.user();a(J(z),i);var l=i||o.userId||b(z,Y,o);return Promise.resolve(new Promise(function(e){ce.dispatch(g({type:C.identifyStart,userId:l,traits:o||{},options:u,anonymousId:s.anonymousId},s.id&&s.id!==i&&{previousId:s.id}),e,[t,n,r])}))}catch(e){return Promise.reject(e)}},track:function(e,t,n,r){try{var i=c(e)?e.event:e;if(!i||!d(i))throw new Error("EventMissing");var a=c(e)?e:t||{},o=c(n)?n:{};return Promise.resolve(new Promise(function(e){ce.dispatch({type:C.trackStart,event:i,properties:a,options:o,userId:b(z,Y,t),anonymousId:b(M,Y,t)},e,[t,n,r])}))}catch(e){return Promise.reject(e)}},page:function(e,t,n){try{var r=c(e)?e:{},i=c(t)?t:{};return Promise.resolve(new Promise(function(a){ce.dispatch({type:C.pageStart,properties:Se(r),options:i,userId:b(z,Y,r),anonymousId:b(M,Y,r)},a,[e,t,n])}))}catch(e){return Promise.reject(e)}},user:function(e){if(e===z||"id"===e)return b(z,Y);if(e===M||"anonId"===e)return b(M,Y);var t=Y.getState("user");return e?n(t,e):t},reset:function(e){return new Promise(function(t){ce.dispatch({type:C.resetStart},t,e)})},ready:function(e){return Q&&e({plugins:K,instance:Y}),Y.on(C.ready,function(t){e&&e(t),Q=!0})},on:function(e,t){if(!e||!l(t))return!1;if(e===C.bootstrap)throw new Error(".on disabled for "+e);var n=/Start$|Start:/;if("*"===e){var r=function(e){return function(e){return function(r){return r.type.match(n)&&t({payload:r,instance:Y,plugins:E}),e(r)}}},i=function(e){return function(e){return function(r){return r.type.match(n)||t({payload:r,instance:Y,plugins:E}),e(r)}}};return U(r,qe),U(i,Ve),function(){R(r,qe),R(i,Ve)}}var a=e.match(n)?qe:Ve,o=function(n){return function(n){return function(r){return r.type===e&&t({payload:r,instance:Y,plugins:E,abort:H}),n(r)}}};return U(o,a),function(){return R(o,a)}},once:function(e,t){if(!e||!l(t))return!1;if(e===C.bootstrap)throw new Error(".once disabled for "+e);var n=Y.on(e,function(e){t({payload:e.payload,instance:Y,plugins:E,abort:H}),n()});return n},getState:function(e){var t=ce.getState();return e?n(t,e):Object.assign({},t)},dispatch:function(e){var t=d(e)?{type:e}:e;if(q.includes(t.type))throw new Error("reserved action "+t.type);var n=g({},t,{_:g({originalAction:t.type},e._||{})});ce.dispatch(n)},enablePlugin:K.enable,disablePlugin:K.disable,plugins:K,storage:{getItem:m.getItem,setItem:function(e,t,n){ce.dispatch({type:C.setItemStart,key:e,value:t,options:n})},removeItem:function(e,t){ce.dispatch({type:C.removeItemStart,key:e,options:t})}},setAnonymousId:function(e,t){Y.storage.setItem(O,e,t)},events:{core:q,plugins:P}},Z=f.middlewares.concat([function(e){return function(e){return function(t){return t.meta||(t.meta=ze()),e(t)}}},$(qe),le(Y,T,{all:j,plugins:P}),fe(m),D(Y),X(Y),$(Ve)]),ee={context:Oe,user:B(m),page:Ae,track:ye,plugins:pe(T),queue:Ie},te=A,ne=A;if(p&&o.debug){var re=window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__;re&&(te=re({trace:!0,traceLimit:25})),ne=function(){return 0===arguments.length?je():c(typeof arguments[0])?Te():Te().apply(null,arguments)}}var ie,ae=function(e){return Object.keys(e).reduce(function(t,n){return ke.includes(n)||(t[n]=e[n]),t},{})}(o),oe=f.pluginsArray.reduce(function(e,t){var n=t.name,r=t.config,i=t.loaded,a=f.pluginEnabled[n];return e[n]={enabled:a,initialized:!!a&&Boolean(!t.initialize),loaded:Boolean(i({config:r})),config:r},e},{}),ue={context:ae,user:G,plugins:oe},ce=S(function(e){for(var t=Object.keys(e),n={},r=0;r<t.length;r++){var i=t[r];typeof e[i]===h&&(n[i]=e[i])}var a,o=Object.keys(n);try{!function(e){Object.keys(e).forEach(function(t){var n=e[t];if(typeof n(void 0,{type:I})===v||typeof n(void 0,{type:w})===v)throw new Error(y+" "+t+" "+v)})}(n)}catch(e){a=e}return function(e,t){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,n[c])(s,t);if(typeof l===v){var f=N(c,t);throw new Error(f)}i[c]=l,r=r||l!==s}return r?i:e}}(g({},ee,u)),ue,ne(te(_.apply(void 0,Z))));ce.dispatch=(ie=ce.dispatch,function(e,t,n){var r=g({},e,{meta:ze(e.meta,t,xe(n))});return ie.apply(null,[r])});var se=Object.keys(E);ce.dispatch({type:C.bootstrap,plugins:se,config:ae,params:W,user:G,initialUser:s,persistedUser:F});var me=se.filter(function(e){return f.pluginEnabled[e]}),ge=se.filter(function(e){return!f.pluginEnabled[e]});return ce.dispatch({type:C.registerPlugins,plugins:se,enabled:f.pluginEnabled}),f.pluginsArray.map(function(e,t){var n=e.bootstrap,r=e.config,i=e.name;n&&l(n)&&n({instance:Y,config:r,payload:e}),ce.dispatch({type:C.registerPluginType(i),name:i,enabled:f.pluginEnabled[i],plugin:e}),f.pluginsArray.length===t+1&&ce.dispatch({type:C.initializeStart,plugins:me,disabled:ge})}),Y}var qe="before",Ve="after";export{Me as Analytics,T as CONSTANTS,C as EVENTS,Me as default,Me as init}; //# sourceMappingURL=analytics-core.module.js.map