UNPKG

analytics

Version:

Lightweight analytics library for tracking events, page views, & identifying users. Works with any third party analytics provider via an extendable plugin system.

1,808 lines (1,627 loc) 56.1 kB
var _analytics = (function (exports) { 'use strict'; function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function n$2 (t, e, l, n, r) { for (e = e.split ? e.split(".") : e, n = 0; n < e.length; n++) t = t ? t[e[n]] : r; return t === r ? l : t; } var e = "undefined", o$1 = "object", b$3 = "any", m$1 = "*", j$1 = "__", F$2 = "undefined" != typeof process ? process : {}; F$2.env && F$2.env.NODE_ENV || ""; var $$1 = "undefined" != typeof document; null != F$2.versions && null != F$2.versions.node; "undefined" != typeof Deno && void 0 !== Deno.core; $$1 && "nodejs" === window.name || "undefined" != typeof navigator && void 0 !== navigator.userAgent && (navigator.userAgent.includes("Node.js") || navigator.userAgent.includes("jsdom")); function M$1(n, t) { return t.charAt(0)[n]() + t.slice(1); } var U$1 = M$1.bind(null, "toUpperCase"), H$1 = M$1.bind(null, "toLowerCase"); function J$2(n) { return Y$1(n) ? U$1("null") : "object" == typeof n ? yn(n) : Object.prototype.toString.call(n).slice(8, -1); } function R$1(n, t) { void 0 === t && (t = !0); var e = J$2(n); return t ? H$1(e) : e; } function V$1(n, t) { return typeof t === n; } var W$1 = V$1.bind(null, "function"), q$1 = V$1.bind(null, "string"), I$2 = V$1.bind(null, "undefined"); var Q$1 = V$1.bind(null, "boolean"); V$1.bind(null, "symbol"); function Y$1(n) { return null === n; } function nn(n) { return "number" === R$1(n) && !isNaN(n); } function rn(n) { return "array" === R$1(n); } function on(n) { if (!un(n)) return !1; for (var t = n; null !== Object.getPrototypeOf(t);) t = Object.getPrototypeOf(t); return Object.getPrototypeOf(n) === t; } function un(n) { return n && ("object" == typeof n || null !== n); } function yn(n) { return W$1(n.constructor) ? n.constructor.name : null; } function hn(n) { return n instanceof Error || q$1(n.message) && n.constructor && nn(n.constructor.stackTraceLimit); } function On(n, t) { if ("object" != typeof t || Y$1(t)) return !1; if (t instanceof n) return !0; var e = R$1(new n("")); if (hn(t)) for (; t;) { if (R$1(t) === e) return !0; t = Object.getPrototypeOf(t); } return !1; } On.bind(null, TypeError); On.bind(null, SyntaxError); function $n(n, t) { var e = n instanceof Element || n instanceof HTMLDocument; return e && t ? Tn(n, t) : e; } function Tn(n, t) { return void 0 === t && (t = ""), n && n.nodeName === t.toUpperCase(); } function _n(n) { var t = [].slice.call(arguments, 1); return function () { return n.apply(void 0, [].slice.call(arguments).concat(t)); }; } _n($n, "form"); _n($n, "button"); _n($n, "input"); _n($n, "select"); function n$1(e) { try { return decodeURIComponent(e.replace(/\+/g, " ")); } catch (e) { return null; } } function s(r) { return function (e) { for (var r, t = Object.create(null), o = /([^&=]+)=?([^&]*)/g; r = o.exec(e);) { var a = n$1(r[1]), i = n$1(r[2]); if (a) if ("[]" === a.substring(a.length - 2)) { var u = t[a = a.substring(0, a.length - 2)] || (t[a] = []); t[a] = Array.isArray(u) ? u : [], t[a].push(i); } else t[a] = "" === i || i; } for (var c in t) { var l = c.split("["); l.length > 1 && (m(t, l.map(function (e) { return e.replace(/[?[\]\\ ]/g, ""); }), t[c]), delete t[c]); } return t; }(function (r) { if (r) { var t = r.match(/\?(.*)/); return t && t[1] ? t[1].split("#")[0] : ""; } return $$1 && window.location.search.substring(1); }(r)); } function m(e, r, t) { for (var n = r.length - 1, o = 0; o < n; ++o) { var a = r[o]; if ("__proto__" === a || "constructor" === a) break; a in e || (e[a] = {}), e = e[a]; } e[r[n]] = t; } function y$1() { for (var e = "", r = 0, t = 4294967295 * Math.random() | 0; r++ < 36;) { var n = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"[r - 1], o = 15 & t; e += "-" == n || "4" == n ? n : ("x" == n ? o : 3 & o | 8).toString(16), t = r % 8 == 0 ? 4294967295 * Math.random() | 0 : t >> 4; } return e; } var l = "global", o = j$1 + "global" + j$1, n = typeof self === o$1 && self.self === self && self || typeof global === o$1 && global.global === global && global || void 0; function a$2(t) { return n[o][t]; } function f(t, e) { return n[o][t] = e; } function i$2(t) { delete n[o][t]; } function u$1(t, e, r) { var l; try { if (b$2(t)) { var o = window[t]; l = o[e].bind(o); } } catch (t) {} return l || r; } n[o] || (n[o] = {}); var c$1 = {}; function b$2(t) { if (typeof c$1[t] !== e) return c$1[t]; try { var e$1 = window[t]; e$1.setItem(e, e), e$1.removeItem(e); } catch (e) { return c$1[t] = !1; } return c$1[t] = !0; } function g$1() { return g$1 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]); } return e; }, g$1.apply(this, arguments); } var h$1 = "function", v = "undefined", y = "@@redux/" + Math.random().toString(36), b$1 = /* #__PURE__ */function () { return typeof Symbol === h$1 && Symbol.observable || "@@observable"; }(), I$1 = " != " + h$1; function w(e, t, n) { var r; if (typeof t === h$1 && typeof n === v && (n = t, t = void 0), typeof n !== v) { if (typeof n !== h$1) throw new Error("enhancer" + I$1); return n(w)(e, t); } if (typeof e !== h$1) throw new Error("reducer" + I$1); 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$1) throw new Error("Listener" + I$1); 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 (!on(e)) throw new Error("Act != obj"); if (typeof e.type === v) throw new Error("ActType " + v); if (s) throw new Error("Dispatch in reducer"); 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: "@@redux/INIT" }), (r = { dispatch: p, subscribe: d, getState: f, replaceReducer: function (e) { if (typeof e !== h$1) throw new Error("next reducer" + I$1); i = e, p({ type: "@@redux/INIT" }); } })[b$1] = 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) }; } })[b$1] = function () { return this; }, e; }, r; } function E$1(e, t) { var n = t && t.type; return "action " + (n && n.toString() || "?") + "reducer " + e + " returns " + v; } function P() { 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 S() { 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$1({}, o, { dispatch: u = P.apply(void 0, a)(o.dispatch) }); }; }; } var N$1 = j$1 + "anon_id", A$1 = j$1 + "user_id", _ = j$1 + "user_traits", O$1 = { __proto__: null, ANON_ID: N$1, USER_ID: A$1, USER_TRAITS: _ }, j = "userId", k$1 = "anonymousId", x$1 = ["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"], T = ["name", "EVENTS", "config", "loaded"], z = x$1.reduce(function (e, t) { return e[t] = t, e; }, { registerPluginType: function (e) { return "registerPlugin:" + e; }, pluginReadyType: function (e) { return "ready:" + e; } }), M = /^utm_/, q = /^an_prop_/, V = /^an_trait_/; function C$1(e) { var t = e.storage.setItem; return function (n) { return function (r) { return function (i) { if (i.type === z.bootstrap) { var a = i.params, o = i.user, u = i.persistedUser, c = i.initialUser, s = u.userId === o.userId; u.anonymousId !== o.anonymousId && t(N$1, o.anonymousId), s || t(A$1, o.userId), c.traits && t(_, g$1({}, 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(M) || t.match(/^(d|g)clid/)) { var n = t.replace(M, ""); e.campaign["campaign" === n ? "name" : n] = a[t]; } return t.match(q) && (e.props[t.replace(q, "")] = a[t]), t.match(V) && (e.traits[t.replace(V, "")] = a[t]), e; }, { campaign: {}, props: {}, traits: {} }); n.dispatch(g$1({ type: z.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: z.campaign, campaign: p.campaign }); } } return r(i); }; }; }; } function U(e) { return function (t, n) { if (void 0 === t && (t = {}), void 0 === n && (n = {}), n.type === z.setItemEnd) { if (n.key === N$1) return g$1({}, t, { anonymousId: n.value }); if (n.key === A$1) return g$1({}, t, { userId: n.value }); } switch (n.type) { case z.identify: return Object.assign({}, t, { userId: n.userId, traits: g$1({}, t.traits, n.traits) }); case z.reset: return [A$1, N$1, _].forEach(function (t) { e.removeItem(t); }), Object.assign({}, t, { userId: null, anonymousId: null, traits: {} }); default: return t; } }; } function R(e) { return { userId: e.getItem(A$1), anonymousId: e.getItem(N$1), traits: e.getItem(_) }; } var $ = function (e) { return j$1 + "TEMP" + j$1 + e; }; function D(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 === z.reset && ([A$1, _, N$1].forEach(function (e) { a(e); }), [j, k$1, "traits"].forEach(function (e) { i$2($(e)); })), u.type === z.identify) { o(N$1) || r(N$1, y$1()); var f = o(A$1), d = o(_) || {}; f && f !== c && t.dispatch({ type: z.userIdChanged, old: { userId: f, traits: d }, new: { userId: c, traits: s }, options: l }), c && r(A$1, c), s && r(_, g$1({}, d, s)); } return n(u); }; }; }; } var B = {}; function L$1(e, t) { B[e] && W$1(B[e]) && (B[e](t), delete B[e]); } function J$1(e, t, n) { return new Promise(function (r, i) { return t() ? r(e) : n < 1 ? i(g$1({}, e, { queue: !0 })) : new Promise(function (e) { return setTimeout(e, 10); }).then(function (a) { return J$1(e, t, n - 10).then(r, i); }); }); } function X(e) { return { abort: e }; } var H = 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(W), 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(W) ? function (e, t, n, r, i) { return function (a, o) { var u = r ? r.name : e, c = o && ne(o) ? o : n; if (r && (!(c = o && ne(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$1({}, 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: ae(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) { try { 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) { try { return Promise.resolve(e).then(function (e) { return t.method && W$1(t.method) ? (function (e, t) { var n = ie(e); if (n && n.name === t) { var r = ie(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$1({}, n, { abort: { reason: e, plugins: t || [i], caller: p, from: o || i } }); }), config: Q(t.pluginName, f, a), plugins: f })).then(function (t) { var n = on(t) ? t : {}; return Promise.resolve(g$1({}, e, n)); })) : e; var n, i, o; }); } catch (e) { return Promise.reject(e); } }, Promise.resolve(n))).then(function (t) { e[u] = t; }); e[u] = n; }(); return o && o.then ? o.then(i) : i(); }); } catch (e) { return Promise.reject(e); } }, 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), ee(n, l)) return K({ data: n, method: p, instance: r, pluginName: l, store: u }), Promise.resolve(t); if (ee(t, l)) return s && K({ 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: Q(l, f, a), plugins: f })).then(function (i) { var a = on(i) ? i : {}, o = g$1({}, t, a), s = e[l]; if (ee(s, l)) K({ data: s, method: p, instance: r, pluginName: l, store: u });else { var f = p + ":" + l; (f.match(/:/g) || []).length < 2 && !p.match(F$1) && !p.match(G$1) && r.dispatch(g$1({}, 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(W) || p.match(/^registerPlugin/) || p.match(G$1) || p.match(F$1) || p.match(/^params/) || p.match(/^userIdChanged/))) { if (s.plugins.includes(p), e._ && e._.originalAction === p) return e; var n = g$1({}, e, { _: { originalAction: e.type, called: e.type, from: "engineEnd" } }); te(e, t.exact.length) && !p.match(/End$/) && (n = g$1({}, n, { type: e.type + "Aborted" })), u.dispatch(n); } return e; }); }); } catch (e) { return Promise.reject(e); } }, W = /Start$/, F$1 = /^bootstrap/, G$1 = /^ready/; function K(e) { var t = e.pluginName, n = e.method + "Aborted" + (t ? ":" + t : ""); e.store.dispatch(g$1({}, e.data, { type: n, _: { called: n, from: "abort" } })); } function Q(e, t, n) { var r = t[e] || n[e]; return r && r.config ? r.config : {}; } function Y(e, t) { return t.reduce(function (t, n) { return n[e] ? t.concat({ methodName: e, pluginName: n.name, method: n[e] }) : t; }, []); } function Z(e, t) { var n = e.replace(W, ""), r = t ? ":" + t : ""; return ["" + e + r, "" + n + r, n + "End" + r]; } function ee(e, t) { var n = e.abort; return !!n && (!0 === n || re(n, t) || n && re(n.plugins, t)); } function te(e, t) { var n = e.abort; if (!n) return !1; if (!0 === n || q$1(n)) return !0; var r = n.plugins; return ne(n) && n.length === t || ne(r) && r.length === t; } function ne(e) { return Array.isArray(e); } function re(e, t) { return !(!e || !ne(e)) && e.includes(t); } function ie(e) { var t = e.match(/(.*):(.*)/); return !!t && { method: t[1], name: t[2] }; } function ae(e) { return Object.keys(e).reduce(function (t, n) { return "type" === n || (t[n] = on(e[n]) ? Object.assign({}, e[n]) : e[n]), t; }, {}); } function oe(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 === z.enablePlugin && i.dispatch({ type: z.initializeStart, plugins: p, disabled: [], fromEnable: !0, meta: o.meta }), d === z.disablePlugin && setTimeout(function () { return L$1(o.meta.rid, { payload: o }); }, 0), d === z.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 J$1(e, function () { return t({ config: a }); }, 1e4).then(function (t) { return r[n] || (i.dispatch({ type: z.pluginReadyType(n), name: n, events: Object.keys(e).filter(function (e) { return !T.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$1({}, { type: z.ready }, t)); }, 0); }); } var P = function () { if (d !== z.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 && W$1(p)) { var m, h = function (e, t) { return void 0 === e && (e = {}), void 0 === t && (t = {}), [j, k$1].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: X })) && on(m) && m.abort) return void (r[h.meta.rid] = !0); if (!v) { var y = d + ":" + f; e.dispatch(g$1({}, 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 = W$1(t) ? t() : t, o = e.type, u = o.replace(W, ""); 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 Q$1(t[e]) ? t[e] : !1 !== t.all && (!h[e] || !1 !== h[e].enabled); }).map(function (e) { return m[e]; })); o === z.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, n) { var r = Z(e).map(function (e) { return Y(e, t); }); return t.reduce(function (n, r) { var i = r.name, a = Z(e, i).map(function (e) { return Y(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: r[0], beforeNS: {}, during: r[1], duringNS: {}, after: r[2], afterNS: {} }); }(o, s); return Promise.resolve(H({ 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(W)) return Promise.resolve(H({ action: g$1({}, 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 && L$1(e.meta.rid, { payload: e }); }); }(); return t && t.then ? t.then(function () { return e; }) : e; } if (te(e, d.length)) return e; var s, l = function () { if (o !== u) return Promise.resolve(H({ action: g$1({}, 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) { return u = 1, a(e); }); }(); return Promise.resolve(P && P.then ? P.then(s) : s(P)); } catch (e) { return Promise.reject(e); } }; }; }; } function ue(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 === z.setItem || r === z.removeItem) { if (n.abort) return t(n); r === z.setItem ? e.setItem(i, a, o) : e.removeItem(i, o); } return t(n); }; }; }; } var ce = 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 P.apply(void 0, o)(r)(i); }; }; }; }; }; function se(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 = le(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$1({}, t, r); } if (/^initialize:([^:]*)$/.test(n.type)) { var c = le(n.type, z.initialize), s = e()[c]; return s && c ? (r[c] = g$1({}, t[c], { initialized: !0, loaded: Boolean(s.loaded({ config: s.config })) }), g$1({}, t, r)) : t; } if (/^ready:([^:]*)$/.test(n.type)) return r[n.name] = g$1({}, t[n.name], { loaded: !0 }), g$1({}, t, r); switch (n.type) { case z.disablePlugin: return g$1({}, t, fe(n.plugins, !1, t)); case z.enablePlugin: return g$1({}, t, fe(n.plugins, !0, t)); default: return t; } }; } function le(e, t) { return e.substring(t.length + 1, e.length); } function fe(e, t, n) { return e.reduce(function (e, r) { return e[r] = g$1({}, n[r], { enabled: t }), e; }, n); } function de(e) { try { return JSON.parse(JSON.stringify(e)); } catch (e) {} return e; } var pe = { last: {}, history: [] }; function me(e, t) { void 0 === e && (e = pe); var n = t.options, r = t.meta; if (t.type === z.track) { var i = de(g$1({ event: t.event, properties: t.properties }, Object.keys(n).length && { options: n }, { meta: r })); return g$1({}, e, { last: i, history: e.history.concat(i) }); } return e; } var ge = { actions: [] }; function he(e, t) { void 0 === e && (e = ge); var n = t.payload; switch (t.type) { case "queue": var r; return r = n && n.type && n.type === z.identify ? [t].concat(e.actions) : e.actions.concat(t), g$1({}, e, { actions: r }); case "dequeue": return []; default: return e; } } var ve = /#.*$/; function ye(e) { var t = /(http[s]?:\/\/)?([^\/\s]+\/)(.*)/g.exec(e); return "/" + (t && t[3] ? t[3].split("?")[0].replace(ve, "") : ""); } var be, Ie = function (e) { if (void 0 === e && (e = {}), !$$1) 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 ($$1) 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(ve, ""); }(s), f = { title: n, url: l, path: ye(l), hash: c, search: s, width: o, height: u }; return r && "" !== r && (f.referrer = r), g$1({}, f, e); }, we = { last: {}, history: [] }; function Ee(e, t) { void 0 === e && (e = we); var n = t.options; if (t.type === z.page) { var r = de(g$1({ properties: t.properties, meta: t.meta }, Object.keys(n).length && { options: n })); return g$1({}, e, { last: r, history: e.history.concat(r) }); } return e; } be = {}; var Pe = { initialized: !1, sessionId: y$1(), app: null, version: null, debug: !1, offline: !!$$1 && !navigator.onLine, os: { name: "na" }, userAgent: $$1 ? navigator.userAgent : "node", library: { name: "analytics", version: "0.12.16" }, timezone: void 0, locale: void 0, campaign: {}, referrer: be }; function Se(e, t) { void 0 === e && (e = Pe); var n = e.initialized, r = t.campaign; switch (t.type) { case z.campaign: return g$1({}, e, { campaign: r }); case z.offline: return g$1({}, e, { offline: !0 }); case z.online: return g$1({}, e, { offline: !1 }); default: return n ? e : g$1({}, Pe, e, { initialized: !0 }); } } var Ne = ["plugins", "reducers", "storage"]; function Ae() { return f("analytics", []), function (e) { return function (t, n$1, r) { var i = e(t, n$1, r), a = i.dispatch; return Object.assign(i, { dispatch: function (e) { return n[o].analytics.push(e.action || e), a(e); } }); }; }; } function _e(e) { return function () { return P(P.apply(null, arguments), Ae()); }; } function Oe(e) { return e ? rn(e) ? e : [e] : []; } function je(t, n, r) { void 0 === t && (t = {}); var i, a, o = y$1(); return n && (B[o] = (i = n, a = function (e) { for (var t, n = e || Array.prototype.slice.call(arguments), r = 0; r < n.length; r++) if (W$1(n[r])) { t = n[r]; break; } return t; }(r), function (e) { a && a(e), i(e); })), g$1({}, t, { rid: o, ts: new Date().getTime() }, n ? { hasCallback: !0 } : {}); } function ke(o) { void 0 === o && (o = {}); var u = o.reducers || {}, s$1 = o.initialUser || {}, f$1 = (o.plugins || []).reduce(function (e, t) { if (W$1(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] = K, r.apply({ instance: K }, 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: a$2, setItem: f, removeItem: i$2 }, b = function (e) { return function (t, n, i) { return n.getState("user")[t] || (i && on(i) && i[t] ? i[t] : R(e)[t] || a$2($(t)) || null); }; }(m), I = f$1.plugins, A = f$1.events.filter(function (e) { return !T.includes(e); }).sort(), _ = new Set(A.concat(x$1).filter(function (e) { return !T.includes(e); })), O = Array.from(_).sort(), M = function () { return I; }, q = new ce(), V = q.addMiddleware, B = q.removeMiddleware, L = q.dynamicMiddlewares, J = function () { throw new Error("Abort disabled inListener"); }, X = s(), H = R(m), W = g$1({}, H, s$1, X.an_uid ? { userId: X.an_uid } : {}, X.an_aid ? { anonymousId: X.an_aid } : {}); W.anonymousId || (W.anonymousId = y$1()); var F = g$1({ enable: function (e, t) { return new Promise(function (n) { le.dispatch({ type: z.enablePlugin, plugins: Oe(e), _: { originalAction: z.enablePlugin } }, n, [t]); }); }, disable: function (e, t) { return new Promise(function (n) { le.dispatch({ type: z.disablePlugin, plugins: Oe(e), _: { originalAction: z.disablePlugin } }, n, [t]); }); } }, f$1.methods), G = !1, K = { identify: function (e, t, n, r) { try { var i = q$1(e) ? e : null, o = on(e) ? e : t, u = n || {}, s = K.user(); f($(j), i); var l = i || o.userId || b(j, K, o); return Promise.resolve(new Promise(function (e) { le.dispatch(g$1({ type: z.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 = on(e) ? e.event : e; if (!i || !q$1(i)) throw new Error("EventMissing"); var a = on(e) ? e : t || {}, o = on(n) ? n : {}; return Promise.resolve(new Promise(function (e) { le.dispatch({ type: z.trackStart, event: i, properties: a, options: o, userId: b(j, K, t), anonymousId: b(k$1, K, t) }, e, [t, n, r]); })); } catch (e) { return Promise.reject(e); } }, page: function (e, t, n) { try { var r = on(e) ? e : {}, i = on(t) ? t : {}; return Promise.resolve(new Promise(function (a) { le.dispatch({ type: z.pageStart, properties: Ie(r), options: i, userId: b(j, K, r), anonymousId: b(k$1, K, r) }, a, [e, t, n]); })); } catch (e) { return Promise.reject(e); } }, user: function (e) { if (e === j || "id" === e) return b(j, K); if (e === k$1 || "anonId" === e) return b(k$1, K); var t = K.getState("user"); return e ? n$2(t, e) : t; }, reset: function (e) { return new Promise(function (t) { le.dispatch({ type: z.resetStart }, t, e); }); }, ready: function (e) { return G && e({ plugins: F, instance: K }), K.on(z.ready, function (t) { e(t), G = !0; }); }, on: function (e, t) { if (!e || !W$1(t)) return !1; if (e === z.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: K, plugins: I }), e(r); }; }; }, i = function (e) { return function (e) { return function (r) { return r.type.match(n) || t({ payload: r, instance: K, plugins: I }), e(r); }; }; }; return V(r, xe), V(i, Te), function () { B(r, xe), B(i, Te); }; } var a = e.match(n) ? xe : Te, o = function (n) { return function (n) { return function (r) { return r.type === e && t({ payload: r, instance: K, plugins: I, abort: J }), n(r); }; }; }; return V(o, a), function () { return B(o, a); }; }, once: function (e, t) { if (!e || !W$1(t)) return !1; if (e === z.bootstrap) throw new Error(".once disabled for " + e); var n = K.on(e, function (e) { t({ payload: e.payload, instance: K, plugins: I, abort: J }), n(); }); return n; }, getState: function (e) { var t = le.getState(); return e ? n$2(t, e) : Object.assign({}, t); }, dispatch: function (e) { var t = q$1(e) ? { type: e } : e; if (x$1.includes(t.type)) throw new Error("reserved action " + t.type); var n = g$1({}, t, { _: g$1({ originalAction: t.type }, e._ || {}) }); le.dispatch(n); }, enablePlugin: F.enable, disablePlugin: F.disable, plugins: F, storage: { getItem: m.getItem, setItem: function (e, t, n) { le.dispatch({ type: z.setItemStart, key: e, value: t, options: n }); }, removeItem: function (e, t) { le.dispatch({ type: z.removeItemStart, key: e, options: t }); } }, setAnonymousId: function (e, t) { K.storage.setItem(N$1, e, t); }, events: { core: x$1, plugins: A } }, Q = f$1.middlewares.concat([function (e) { return function (e) { return function (t) { return t.meta || (t.meta = je()), e(t); }; }; }, L(xe), oe(K, M, { all: O, plugins: A }), ue(m), C$1(K), D(K), L(Te)]), Y = { context: Se, user: U(m), page: Ee, track: me, plugins: se(M), queue: he }, Z = P, ee = P; if ($$1 && o.debug) { var te = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__; te && (Z = te({ trace: !0, traceLimit: 25 })), ee = function () { return 0 === arguments.length ? Ae() : on(typeof arguments[0]) ? _e() : _e().apply(null, arguments); }; } var ne, re = function (e) { return Object.keys(e).reduce(function (t, n) { return Ne.includes(n) || (t[n] = e[n]), t; }, {}); }(o), ie = f$1.pluginsArray.reduce(function (e, t) { var n = t.name, r = t.config, i = t.loaded, a = f$1.pluginEnabled[n]; return e[n] = { enabled: a, initialized: !!a && Boolean(!t.initialize), loaded: Boolean(i({ config: r })), config: r }, e; }, {}), ae = { context: re, user: W, plugins: ie }, le = w(function (e) { for (var t = Object.keys(e), n = {}, r = 0; r < t.length; r++) {