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,617 lines (1,609 loc) 56.8 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$3 (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 n$2 = "function", t$1 = "string", e = "undefined", r$2 = "boolean", o$1 = "object", u$2 = "array", c$2 = "number", i$2 = "symbol", a$3 = "null", m$2 = "any", v$1 = "*", O$2 = "__", S$1 = "form", j$1 = "input", A$2 = "button", E$2 = "select", P$1 = typeof process !== e ? process : {}; P$1.env && P$1.env.NODE_ENV || ""; var $$1 = typeof document !== e; null != P$1.versions && null != P$1.versions.node; typeof Deno !== e && typeof Deno.core !== e; $$1 && "nodejs" === window.name || typeof navigator !== e && typeof navigator.userAgent !== e && (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(a$3) : typeof n === o$1 ? 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, n$2), q$1 = V$1.bind(null, t$1), I$2 = V$1.bind(null, e); var Q$1 = V$1.bind(null, r$2); V$1.bind(null, i$2); function Y$1(n) { return null === n; } function nn(n) { return R$1(n) === c$2 && !isNaN(n); } function rn(n) { return R$1(n) === u$2; } 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 && (typeof n === o$1 || 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 Sn(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; } Sn.bind(null, TypeError); Sn.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, S$1); _n($n, A$2); _n($n, j$1); _n($n, E$2); function n$1(e) { try { return decodeURIComponent(e.replace(/\+/g, " ")); } catch (e) { return null; } } function s$1(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$1(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$1(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 b$2() { 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 n = "global", o = O$2 + n + O$2, l$1 = typeof self === o$1 && self.self === self && self || typeof global === o$1 && global[n] === global && global || void 0; function f(t) { return l$1[o][t]; } function a$2(t, e) { return l$1[o][t] = e; } function i$1(t) { delete l$1[o][t]; } function u$1(t, e, r) { var n; try { if (s(t)) { var o = window[t]; n = o[e].bind(o); } } catch (t) {} return n || r; } l$1[o] || (l$1[o] = {}); var c$1 = {}; function s(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() { 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$1 = "function", v = "undefined", y = "reducer", b$1 = "@@redux/", I$1 = b$1 + "INIT", w = b$1 + Math.random().toString(36), E$1 = /* #__PURE__ */function () { return typeof Symbol === h$1 && Symbol.observable || "@@observable"; }(), P = " != " + h$1; function S(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" + P); return n(S)(e, t); } if (typeof e !== h$1) 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$1) 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 (!on(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$1 }), (r = { dispatch: p, subscribe: d, getState: f, replaceReducer: function (e) { if (typeof e !== h$1) throw new Error("next " + y + P); i = e, p({ type: I$1 }); } })[E$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) }; } })[E$1] = function () { return this; }, e; }, r; } function N$1(e, t) { var n = t && t.type; return "action " + (n && n.toString() || "?") + y + " " + e + " returns " + v; } function A$1() { 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$1.apply(void 0, a)(o.dispatch) }); }; }; } var O$1 = O$2 + "anon_id", k$1 = O$2 + "user_id", j = O$2 + "user_traits", T = { __proto__: null, ANON_ID: O$1, USER_ID: k$1, USER_TRAITS: j }, x$1 = "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$1 = 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$1.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$1, o.anonymousId), s || t(k$1, 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$1.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$1.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$1.setItemEnd) { if (n.key === O$1) return g({}, t, { anonymousId: n.value }); if (n.key === k$1) return g({}, t, { userId: n.value }); } switch (n.type) { case C$1.identify: return Object.assign({}, t, { userId: n.userId, traits: g({}, t.traits, n.traits) }); case C$1.reset: return [k$1, O$1, j].forEach(function (t) { e.removeItem(t); }), Object.assign({}, t, { userId: null, anonymousId: null, traits: {} }); default: return t; } }; } function L$1(e) { return { userId: e.getItem(k$1), anonymousId: e.getItem(O$1), traits: e.getItem(j) }; } var J$1 = function (e) { return O$2 + "TEMP" + O$2 + 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$1.reset && ([k$1, j, O$1].forEach(function (e) { a(e); }), [z, M, "traits"].forEach(function (e) { i$1(J$1(e)); })), u.type === C$1.identify) { o(O$1) || r(O$1, b$2()); var f = o(k$1), d = o(j) || {}; f && f !== c && t.dispatch({ type: C$1.userIdChanged, old: { userId: f, traits: d }, new: { userId: c, traits: s }, options: l }), c && r(k$1, c), s && r(j, g({}, d, s)); } return n(u); }; }; }; } var H = {}; function W(e, t) { H[e] && W$1(H[e]) && (H[e](t), delete H[e]); } function F$1(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$1(e, t, n - 10).then(r, i); }); }); } function G$1(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 && W$1(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 = on(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 = on(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 || q$1(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] = on(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$1.enablePlugin && i.dispatch({ type: C$1.initializeStart, plugins: p, disabled: [], fromEnable: !0, meta: o.meta }), d === C$1.disablePlugin && setTimeout(function () { return W(o.meta.rid, { payload: o }); }, 0), d === C$1.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$1(e, function () { return t({ config: a }); }, 1e4).then(function (t) { return r[n] || (i.dispatch({ type: C$1.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$1.ready }, t)); }, 0); }); } var P = function () { if (d !== C$1.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 = {}), [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$1 })) && on(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 = W$1(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 Q$1(t[e]) ? t[e] : !1 !== t.all && (!h[e] || !1 !== h[e].enabled); }).map(function (e) { return m[e]; })); o === C$1.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$1.setItem || r === C$1.removeItem) { if (n.abort) return t(n); r === C$1.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$1.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$1.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$1.disablePlugin: return g({}, t, ge(n.plugins, !1, t)); case C$1.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$1.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$1.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 = {}), !$$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(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$1.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: b$2(), app: null, version: null, debug: !1, offline: !!$$1 && !navigator.onLine, os: { name: "na" }, userAgent: $$1 ? navigator.userAgent : "node", library: { name: x$1, 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$1.campaign: return g({}, e, { campaign: r }); case C$1.offline: return g({}, e, { offline: !0 }); case C$1.online: return g({}, e, { offline: !1 }); default: return n ? e : g({}, _e, e, { initialized: !0 }); } } var ke = ["plugins", "reducers", "storage"]; function je() { return a$2(x$1, []), function (e) { return function (t, n, r) { var i = e(t, n, r), a = i.dispatch; return Object.assign(i, { dispatch: function (e) { return l$1[o][x$1].push(e.action || e), a(e); } }); }; }; } function Te(e) { return function () { return A$1(A$1.apply(null, arguments), je()); }; } function xe(e) { return e ? rn(e) ? e : [e] : []; } function ze(t, n, r) { void 0 === t && (t = {}); var i, a, o = b$2(); 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 (W$1(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$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] = 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: f, setItem: a$2, removeItem: i$1 }, b = function (e) { return function (t, n, i) { return n.getState("user")[t] || (i && on(i) && i[t] ? i[t] : L$1(e)[t] || f(J$1(t)) || null); }; }(m), E = f$1.plugins, P = f$1.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 = s$1(), F = L$1(m), G = g({}, F, s, W.an_uid ? { userId: W.an_uid } : {}, W.an_aid ? { anonymousId: W.an_aid } : {}); G.anonymousId || (G.anonymousId = b$2()); var K = g({ enable: function (e, t) { return new Promise(function (n) { ce.dispatch({ type: C$1.enablePlugin, plugins: xe(e), _: { originalAction: C$1.enablePlugin } }, n, [t]); }); }, disable: function (e, t) { return new Promise(function (n) { ce.dispatch({ type: C$1.disablePlugin, plugins: xe(e), _: { originalAction: C$1.disablePlugin } }, n, [t]); }); } }, f$1.methods), Q = !1, Y = { identify: function (e, t, n, r) { try { var i = q$1(e) ? e : null, o = on(e) ? e : t, u = n || {}, s = Y.user(); a$2(J$1(z), i); var l = i || o.userId || b(z, Y, o); return Promise.resolve(new Promise(function (e) { ce.dispatch(g({ type: C$1.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) { ce.dispatch({ type: C$1.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 = on(e) ? e : {}, i = on(t) ? t : {}; return Promise.resolve(new Promise(function (a) { ce.dispatch({ type: C$1.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$3(t, e) : t; }, reset: function (e) { return new Promise(function (t) { ce.dispatch({ type: C$1.resetStart }, t, e); }); }, ready: function (e) { return Q && e({ plugins: K, instance: Y }), Y.on(C$1.ready, function (t) { e && e(t), Q = !0; }); }, on: function (e, t) { if (!e || !W$1(t)) return !1; if (e === C$1.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 || !W$1(t)) return !1; if (e === C$1.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$3(t, e) : Object.assign({}, t); }, dispatch: function (e) { var t = q$1(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$1.setItemStart, key: e, value: t, options: n }); }, removeItem: function (e, t) { ce.dispatch({ type: C$1.removeItemStart, key: e, options: t }); } }, setAnonymousId: function (e, t) { Y.storage.setItem(O$1, e, t); }, events: { core: q, plugins: P } }, Z = f$1.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$1, ne = A$1; if ($$1 && o.debug) { var re = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__; re && (te = re({ trace: !0, traceLimit: 25 })), ne = function () { return 0 === arguments.length ? je() : on(typeof arguments[0]) ? Te() : Te().apply(null, arguments); }; } var ie,