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
JavaScript
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,