@meta-track/core
Version:
1,565 lines (1,547 loc) • 567 kB
JavaScript
function _arrayLikeToArray(r, a) {
(null == a || a > r.length) && (a = r.length);
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
return n;
}
function _arrayWithHoles(r) {
if (Array.isArray(r)) return r;
}
function _arrayWithoutHoles(r) {
if (Array.isArray(r)) return _arrayLikeToArray(r);
}
function asyncGeneratorStep(n, t, e, r, o, a, c) {
try {
var i = n[a](c),
u = i.value;
} catch (n) {
return void e(n);
}
i.done ? t(u) : Promise.resolve(u).then(r, o);
}
function _asyncToGenerator(n) {
return function () {
var t = this,
e = arguments;
return new Promise(function (r, o) {
var a = n.apply(t, e);
function _next(n) {
asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
}
function _throw(n) {
asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
}
_next(void 0);
});
};
}
function _classCallCheck(a, n) {
if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
}
function _defineProperties(e, r) {
for (var t = 0; t < r.length; t++) {
var o = r[t];
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);
}
}
function _createClass(e, r, t) {
return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
writable: !1
}), e;
}
function _createForOfIteratorHelper(r, e) {
var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
if (!t) {
if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
t && (r = t);
var n = 0,
F = function () {};
return {
s: F,
n: function () {
return n >= r.length ? {
done: !0
} : {
done: !1,
value: r[n++]
};
},
e: function (r) {
throw r;
},
f: F
};
}
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
var o,
a = !0,
u = !1;
return {
s: function () {
t = t.call(r);
},
n: function () {
var r = t.next();
return a = r.done, r;
},
e: function (r) {
u = !0, o = r;
},
f: function () {
try {
a || null == t.return || t.return();
} finally {
if (u) throw o;
}
}
};
}
function _defineProperty(e, r, t) {
return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
value: t,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[r] = t, e;
}
function _iterableToArray(r) {
if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
}
function _iterableToArrayLimit(r, l) {
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
if (null != t) {
var e,
n,
i,
u,
a = [],
f = !0,
o = !1;
try {
if (i = (t = t.call(r)).next, 0 === l) {
if (Object(t) !== t) return;
f = !1;
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
} catch (r) {
o = !0, n = r;
} finally {
try {
if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
} finally {
if (o) throw n;
}
}
return a;
}
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function ownKeys(e, r) {
var t = Object.keys(e);
if (Object.getOwnPropertySymbols) {
var o = Object.getOwnPropertySymbols(e);
r && (o = o.filter(function (r) {
return Object.getOwnPropertyDescriptor(e, r).enumerable;
})), t.push.apply(t, o);
}
return t;
}
function _objectSpread2(e) {
for (var r = 1; r < arguments.length; r++) {
var t = null != arguments[r] ? arguments[r] : {};
r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
_defineProperty(e, r, t[r]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
});
}
return e;
}
function _regeneratorRuntime() {
_regeneratorRuntime = function () {
return r;
};
var t,
r = {},
e = Object.prototype,
n = e.hasOwnProperty,
o = "function" == typeof Symbol ? Symbol : {},
i = o.iterator || "@@iterator",
a = o.asyncIterator || "@@asyncIterator",
u = o.toStringTag || "@@toStringTag";
function c(t, r, e, n) {
Object.defineProperty(t, r, {
value: e,
enumerable: !n,
configurable: !n,
writable: !n
});
}
try {
c({}, "");
} catch (t) {
c = function (t, r, e) {
return t[r] = e;
};
}
function h(r, e, n, o) {
var i = e && e.prototype instanceof Generator ? e : Generator,
a = Object.create(i.prototype);
return c(a, "_invoke", function (r, e, n) {
var o = 1;
return function (i, a) {
if (3 === o) throw Error("Generator is already running");
if (4 === o) {
if ("throw" === i) throw a;
return {
value: t,
done: !0
};
}
for (n.method = i, n.arg = a;;) {
var u = n.delegate;
if (u) {
var c = d(u, n);
if (c) {
if (c === f) continue;
return c;
}
}
if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
if (1 === o) throw o = 4, n.arg;
n.dispatchException(n.arg);
} else "return" === n.method && n.abrupt("return", n.arg);
o = 3;
var h = s(r, e, n);
if ("normal" === h.type) {
if (o = n.done ? 4 : 2, h.arg === f) continue;
return {
value: h.arg,
done: n.done
};
}
"throw" === h.type && (o = 4, n.method = "throw", n.arg = h.arg);
}
};
}(r, n, new Context(o || [])), !0), a;
}
function s(t, r, e) {
try {
return {
type: "normal",
arg: t.call(r, e)
};
} catch (t) {
return {
type: "throw",
arg: t
};
}
}
r.wrap = h;
var f = {};
function Generator() {}
function GeneratorFunction() {}
function GeneratorFunctionPrototype() {}
var l = {};
c(l, i, function () {
return this;
});
var p = Object.getPrototypeOf,
y = p && p(p(x([])));
y && y !== e && n.call(y, i) && (l = y);
var v = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(l);
function g(t) {
["next", "throw", "return"].forEach(function (r) {
c(t, r, function (t) {
return this._invoke(r, t);
});
});
}
function AsyncIterator(t, r) {
function e(o, i, a, u) {
var c = s(t[o], t, i);
if ("throw" !== c.type) {
var h = c.arg,
f = h.value;
return f && "object" == typeof f && n.call(f, "__await") ? r.resolve(f.__await).then(function (t) {
e("next", t, a, u);
}, function (t) {
e("throw", t, a, u);
}) : r.resolve(f).then(function (t) {
h.value = t, a(h);
}, function (t) {
return e("throw", t, a, u);
});
}
u(c.arg);
}
var o;
c(this, "_invoke", function (t, n) {
function i() {
return new r(function (r, o) {
e(t, n, r, o);
});
}
return o = o ? o.then(i, i) : i();
}, !0);
}
function d(r, e) {
var n = e.method,
o = r.i[n];
if (o === t) return e.delegate = null, "throw" === n && r.i.return && (e.method = "return", e.arg = t, d(r, e), "throw" === e.method) || "return" !== n && (e.method = "throw", e.arg = new TypeError("The iterator does not provide a '" + n + "' method")), f;
var i = s(o, r.i, e.arg);
if ("throw" === i.type) return e.method = "throw", e.arg = i.arg, e.delegate = null, f;
var a = i.arg;
return a ? a.done ? (e[r.r] = a.value, e.next = r.n, "return" !== e.method && (e.method = "next", e.arg = t), e.delegate = null, f) : a : (e.method = "throw", e.arg = new TypeError("iterator result is not an object"), e.delegate = null, f);
}
function w(t) {
this.tryEntries.push(t);
}
function m(r) {
var e = r[4] || {};
e.type = "normal", e.arg = t, r[4] = e;
}
function Context(t) {
this.tryEntries = [[-1]], t.forEach(w, this), this.reset(!0);
}
function x(r) {
if (null != r) {
var e = r[i];
if (e) return e.call(r);
if ("function" == typeof r.next) return r;
if (!isNaN(r.length)) {
var o = -1,
a = function e() {
for (; ++o < r.length;) if (n.call(r, o)) return e.value = r[o], e.done = !1, e;
return e.value = t, e.done = !0, e;
};
return a.next = a;
}
}
throw new TypeError(typeof r + " is not iterable");
}
return GeneratorFunction.prototype = GeneratorFunctionPrototype, c(v, "constructor", GeneratorFunctionPrototype), c(GeneratorFunctionPrototype, "constructor", GeneratorFunction), c(GeneratorFunctionPrototype, u, GeneratorFunction.displayName = "GeneratorFunction"), r.isGeneratorFunction = function (t) {
var r = "function" == typeof t && t.constructor;
return !!r && (r === GeneratorFunction || "GeneratorFunction" === (r.displayName || r.name));
}, r.mark = function (t) {
return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, c(t, u, "GeneratorFunction")), t.prototype = Object.create(v), t;
}, r.awrap = function (t) {
return {
__await: t
};
}, g(AsyncIterator.prototype), c(AsyncIterator.prototype, a, function () {
return this;
}), r.AsyncIterator = AsyncIterator, r.async = function (t, e, n, o, i) {
void 0 === i && (i = Promise);
var a = new AsyncIterator(h(t, e, n, o), i);
return r.isGeneratorFunction(e) ? a : a.next().then(function (t) {
return t.done ? t.value : a.next();
});
}, g(v), c(v, u, "Generator"), c(v, i, function () {
return this;
}), c(v, "toString", function () {
return "[object Generator]";
}), r.keys = function (t) {
var r = Object(t),
e = [];
for (var n in r) e.unshift(n);
return function t() {
for (; e.length;) if ((n = e.pop()) in r) return t.value = n, t.done = !1, t;
return t.done = !0, t;
};
}, r.values = x, Context.prototype = {
constructor: Context,
reset: function (r) {
if (this.prev = this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(m), !r) for (var e in this) "t" === e.charAt(0) && n.call(this, e) && !isNaN(+e.slice(1)) && (this[e] = t);
},
stop: function () {
this.done = !0;
var t = this.tryEntries[0][4];
if ("throw" === t.type) throw t.arg;
return this.rval;
},
dispatchException: function (r) {
if (this.done) throw r;
var e = this;
function n(t) {
a.type = "throw", a.arg = r, e.next = t;
}
for (var o = e.tryEntries.length - 1; o >= 0; --o) {
var i = this.tryEntries[o],
a = i[4],
u = this.prev,
c = i[1],
h = i[2];
if (-1 === i[0]) return n("end"), !1;
if (!c && !h) throw Error("try statement without catch or finally");
if (null != i[0] && i[0] <= u) {
if (u < c) return this.method = "next", this.arg = t, n(c), !0;
if (u < h) return n(h), !1;
}
}
},
abrupt: function (t, r) {
for (var e = this.tryEntries.length - 1; e >= 0; --e) {
var n = this.tryEntries[e];
if (n[0] > -1 && n[0] <= this.prev && this.prev < n[2]) {
var o = n;
break;
}
}
o && ("break" === t || "continue" === t) && o[0] <= r && r <= o[2] && (o = null);
var i = o ? o[4] : {};
return i.type = t, i.arg = r, o ? (this.method = "next", this.next = o[2], f) : this.complete(i);
},
complete: function (t, r) {
if ("throw" === t.type) throw t.arg;
return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && r && (this.next = r), f;
},
finish: function (t) {
for (var r = this.tryEntries.length - 1; r >= 0; --r) {
var e = this.tryEntries[r];
if (e[2] === t) return this.complete(e[4], e[3]), m(e), f;
}
},
catch: function (t) {
for (var r = this.tryEntries.length - 1; r >= 0; --r) {
var e = this.tryEntries[r];
if (e[0] === t) {
var n = e[4];
if ("throw" === n.type) {
var o = n.arg;
m(e);
}
return o;
}
}
throw Error("illegal catch attempt");
},
delegateYield: function (r, e, n) {
return this.delegate = {
i: x(r),
r: e,
n: n
}, "next" === this.method && (this.arg = t), f;
}
}, r;
}
function _slicedToArray(r, e) {
return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
}
function _toConsumableArray(r) {
return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
}
function _toPrimitive(t, r) {
if ("object" != typeof t || !t) return t;
var e = t[Symbol.toPrimitive];
if (void 0 !== e) {
var i = e.call(t, r || "default");
if ("object" != typeof i) return i;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return ("string" === r ? String : Number)(t);
}
function _toPropertyKey(t) {
var i = _toPrimitive(t, "string");
return "symbol" == typeof i ? i : i + "";
}
function _typeof(o) {
"@babel/helpers - typeof";
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
} : function (o) {
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
}, _typeof(o);
}
function _unsupportedIterableToArray(r, a) {
if (r) {
if ("string" == typeof r) return _arrayLikeToArray(r, a);
var t = {}.toString.call(r).slice(8, -1);
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
}
}
function isType(type) {
return function (value) {
return Object.prototype.toString.call(value) === "[object ".concat(type, "]");
};
}
var isRegExp$1 = isType("RegExp");
var isNumber = isType("Number");
var isString = isType("String");
var isBoolean = isType("Boolean");
var isFunction = isType("Function");
var isArray = isType("Array");
var isWindow = isType("Window");
var isFlase = function isFlase(val) {
return isBoolean(val) && String(val) === "false";
};
function isEmpty(wat) {
return isString(wat) && wat.trim() === "" || wat === void 0 || wat === null;
}
var _window, _window$process, _window$process$versi;
var isBrowserEnv = isWindow(typeof window !== "undefined" ? window : 0);
var isElectronEnv = !!((_window = window) !== null && _window !== void 0 && (_window$process = _window.process) !== null && _window$process !== void 0 && (_window$process$versi = _window$process.versions) !== null && _window$process$versi !== void 0 && _window$process$versi.electron);
var isTestEnv = typeof navigator !== "undefined" && navigator.userAgent.includes("jsdom") ||
// @ts-expect-error: jsdom
typeof window !== "undefined" && window.jsdom;
function getGlobal() {
if (isBrowserEnv || isElectronEnv || isTestEnv) return window;
return {};
}
function getGlobalSupport() {
_global.__metaTrack__ = _global.__metaTrack__ || {};
return _global.__metaTrack__;
}
function isInit() {
return !!_global.__metaTrackInit__;
}
var _global = getGlobal();
var _support = getGlobalSupport();
var Dep = /*#__PURE__*/function () {
function Dep() {
_classCallCheck(this, Dep);
// set结构可以自动去重,因为不可避免有些依赖会被重复添加
// 例如有两个计算属性是依赖于dataA,第一遍计算出那两个计算属性时,dataA的dep是收集了他俩的watcher
// 但是当其中一个计算属性重新计算时(比如另外一个依赖项改动了会影响此计算属性重新计算),会再次调取dataA
// 的get拦截,也就是会再次触发 dep.addSub(),如果不加重复过滤这样的场景会一直递增下去,然后当dataA发生
// 更改时遍历其subs,届时有太多不需要遍历的watcher,很大概率卡死
_defineProperty(this, "subs", /* @__PURE__ */new Set());
}
return _createClass(Dep, [{
key: "addSub",
value:
// 全局唯一收集容器
function addSub() {
if (Dep.target) this.subs.add(Dep.target);
}
}, {
key: "notify",
value: function notify() {
for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
params[_key] = arguments[_key];
}
this.subs.forEach(function (watcher) {
watcher.proxy.dirty = true;
watcher.update.apply(watcher, params);
});
}
}]);
}();
_defineProperty(Dep, "target", void 0);
var OBSERVERSIGNBOARD = "__metatrackobserver__";
function isRegExp(value) {
return Object.prototype.toString.call(value) === "[object RegExp]";
}
var Observer = /*#__PURE__*/function () {
function Observer(target) {
_classCallCheck(this, Observer);
_defineProperty(this, "target", void 0);
this.target = target;
}
return _createClass(Observer, [{
key: "defineReactive",
value: function defineReactive() {
var dep = new Dep();
var handlers = getHandlers(function () {
dep.addSub();
}, function (oldValue) {
dep.notify(oldValue);
});
return new Proxy(this.target, handlers);
}
}]);
}();
function getHandlers(getCallBack, setCallBack) {
var proxyCache = /* @__PURE__ */new WeakMap();
var handlers = {
get: function get(target, key, receiver) {
var value = Reflect.get(target, key, receiver);
getCallBack && getCallBack();
if (_typeof(value) === "object" && value !== null && !isRegExp(value)) {
var proxy = proxyCache.get(value);
if (!proxy) {
proxy = new Proxy(value, handlers);
proxyCache.set(value, proxy);
}
return proxy;
}
return value;
},
set: function set(target, key, value, receiver) {
var oldValue = Reflect.get(target, key, receiver);
if (oldValue === value) return oldValue;
var beforeTarget = JSON.parse(JSON.stringify(target));
var result = Reflect.set(target, key, value, receiver);
setCallBack && setCallBack(beforeTarget);
return result;
}
};
return handlers;
}
var refMap = /* @__PURE__ */new WeakMap();
function ref$1(target) {
var newObj = {
value: target
};
newObj[OBSERVERSIGNBOARD] = true;
var ob = new Observer(newObj);
var proxy = ob.defineReactive();
refMap.set(ob, proxy);
return proxy;
}
function isRef(ref2) {
return !!ref2[OBSERVERSIGNBOARD];
}
var targetStack = [];
function pushTarget(_target) {
if (Dep.target) targetStack.push(Dep.target);
Dep.target = _target;
}
function popTarget() {
Dep.target = targetStack.pop();
}
var Watcher = /*#__PURE__*/function () {
function Watcher(vm, options, getter) {
_classCallCheck(this, Watcher);
_defineProperty(this, "vm", void 0);
_defineProperty(this, "computed", void 0);
_defineProperty(this, "watch", void 0);
_defineProperty(this, "proxy", void 0);
_defineProperty(this, "dep", void 0);
_defineProperty(this, "getter", void 0);
_defineProperty(this, "callback", void 0);
var computed = options.computed,
watch = options.watch,
callback = options.callback;
this.getter = getter;
this.computed = computed || false;
this.watch = watch || false;
this.callback = callback;
this.proxy = {
value: "",
// 存储这个属性的值,在不需要更新的时候会直接取这个值
dirty: true
// 表示这个属性是否脏了(脏了代表需要重新运算更新这个值)
};
this.vm = vm;
if (computed) {
this.dep = new Dep();
} else if (watch) {
this.watchGet();
} else {
this.get();
}
}
return _createClass(Watcher, [{
key: "update",
value: function update(oldValue) {
if (this.computed) {
this.dep.notify();
} else if (this.watch) {
if (oldValue !== this.proxy.value) {
this.callback && this.callback(this.proxy.value, oldValue);
}
} else {
this.get();
}
}
}, {
key: "get",
value: function get() {
pushTarget(this);
var value = this.computed ? computedMap.get(this.vm).call(this.vm) : "";
if (value !== this.proxy.value) {
this.proxy.dirty = false;
this.proxy.value = value;
}
popTarget();
return value;
}
/**
* 监听属性专用 - 拿到最新值并添加依赖
*/
}, {
key: "watchGet",
value: function watchGet() {
pushTarget(this);
this.proxy.dirty = false;
if (this.getter) {
this.proxy.value = this.getter();
}
popTarget();
}
/**
* 计算属性专用 - 添加依赖
* 其他值用到了这个计算属性就会被记录添加到依赖中
*/
}, {
key: "depend",
value: function depend() {
this.dep.addSub();
}
}]);
}();
var Computed = /*#__PURE__*/function () {
function Computed(target) {
_classCallCheck(this, Computed);
_defineProperty(this, "target", void 0);
this.target = target;
}
return _createClass(Computed, [{
key: "defineReactive",
value: function defineReactive() {
var computedWatcher = new Watcher(this, {
computed: true
});
var handlers = {
get: function get() {
if (computedWatcher.proxy.dirty) {
computedWatcher.depend();
return computedWatcher.get();
} else {
computedWatcher.depend();
return computedWatcher.proxy.value;
}
}
};
return new Proxy(this.target, handlers);
}
}]);
}();
var computedMap = /* @__PURE__ */new WeakMap();
function computed$1(fun) {
var target = {
value: 0
};
target[OBSERVERSIGNBOARD] = true;
var ob = new Computed(target);
var proxy = ob.defineReactive();
computedMap.set(ob, fun);
return proxy;
}
function watchInit(callback, getter) {
new Watcher("", {
watch: true,
callback: callback
}, getter);
}
function watch$1(target, fun) {
if (!isRef(target)) return;
watchInit(function (newValue, oldValue) {
fun(newValue, oldValue);
}, function () {
return target.value;
});
}
function hasProxy() {
return !!window.Proxy;
}
function ref(target) {
return hasProxy() ? ref$1(target) : {
value: target
};
}
function computed(fun) {
return hasProxy() ? computed$1(fun) : {
value: fun()
};
}
function watch(target, fun) {
return hasProxy() ? watch$1(target, fun) : function () {
return {};
};
}
var Options = /*#__PURE__*/function () {
function Options(initOptions2) {
_classCallCheck(this, Options);
_defineProperty(this, "dsn", "");
// 上报地址
_defineProperty(this, "appName", "");
// 应用名称
_defineProperty(this, "appCode", "");
// 应用code
_defineProperty(this, "appVersion", "");
// 应用版本
_defineProperty(this, "userUuid", "");
// 用户id(外部填充进来的id)
_defineProperty(this, "sdkUserUuid", "");
// 用户id(sdk内部生成的id)
_defineProperty(this, "debug", false);
// 是否开启调试模式(控制台会输出sdk动作)
_defineProperty(this, "pv", {
core: false
// 页面跳转-是否自动发送页面跳转相关数据
});
_defineProperty(this, "performance", {
core: false,
// 性能数据-是否采集静态资源、接口的相关数据
firstResource: false,
// 性能数据-是否采集首次进入页面的数据(ps: tcp连接耗时,HTML加载完成时间,首次可交互时间)
server: false
// 接口请求-是否采集接口请求(成功的才会采集)
});
_defineProperty(this, "error", {
core: false,
// 是否采集异常数据(ps: 资源引入错误,promise错误,控制台输出错误)
server: false
// 接口请求-是否采集报错接口数据
});
_defineProperty(this, "event", {
core: false
// 页面点击-是否采集点击事件
});
_defineProperty(this, "recordScreen", true);
// 是否启动录屏
_defineProperty(this, "ext", {});
// 自定义全局附加参数(放在baseInfo中)
_defineProperty(this, "tracesSampleRate", 1);
// 抽样发送
_defineProperty(this, "cacheMaxLength", 5);
// 上报数据最大缓存数
_defineProperty(this, "cacheWatingTime", 5e3);
// 上报数据最大等待时间
_defineProperty(this, "ignoreErrors", []);
// 错误类型事件过滤
_defineProperty(this, "ignoreRequest", []);
// 请求类型事件过滤
_defineProperty(this, "scopeError", false);
// 当某个时间段报错时,会将此类错误转为特殊错误类型,会新增错误持续时间范围
_defineProperty(this, "localization", false);
// 是否本地化:sdk不再主动发送事件,事件都存储在本地,由用户手动调用方法发送
_defineProperty(this, "sendTypeByXmlBody", false);
// 是否强制指定发送形式为xml,body请求方式
// whiteScreen = false // 开启白屏检测
// 添加到行为列表前的 hook (在这里面可以给出错误类型,然后就能达到用户想拿到是何种事件类型的触发)
_defineProperty(this, "beforePushEventList", []);
// 数据上报前的 hook
_defineProperty(this, "beforeSendData", []);
// 数据上报后的 hook
_defineProperty(this, "afterSendData", []);
// 本地化存储溢出后的回调
_defineProperty(this, "localizationOverFlow", function () {});
var _options = this.transitionOptions(initOptions2);
_options.ignoreRequest.push(new RegExp(_options.dsn));
deepAssign(this, _options);
}
/**
* 对入参配置项进行转换
*/
return _createClass(Options, [{
key: "transitionOptions",
value: function transitionOptions(options2) {
var _options = deepAssign({}, this, options2);
var beforePushEventList = options2.beforePushEventList,
beforeSendData = options2.beforeSendData,
afterSendData = options2.afterSendData;
var pv = _options.pv,
performance = _options.performance,
error = _options.error,
event = _options.event;
if (typeof pv === "boolean") {
_options.pv = {
core: pv
};
}
if (typeof performance === "boolean") {
_options.performance = {
core: performance,
firstResource: performance,
server: performance
};
}
if (typeof error === "boolean") {
_options.error = {
core: error,
server: error
};
}
if (typeof event === "boolean") {
_options.event = {
core: event
};
}
if (beforePushEventList) {
_options.beforePushEventList = [beforePushEventList];
}
if (beforeSendData) {
_options.beforeSendData = [beforeSendData];
}
if (afterSendData) {
_options.afterSendData = [afterSendData];
}
return _options;
}
}]);
}();
function _validateInitOption(options2) {
var dsn = options2.dsn,
appName = options2.appName,
appCode = options2.appCode,
appVersion = options2.appVersion,
userUuid = options2.userUuid,
debug = options2.debug,
recordScreen = options2.recordScreen,
pv = options2.pv,
performance = options2.performance,
error = options2.error,
event = options2.event,
ext = options2.ext,
tracesSampleRate = options2.tracesSampleRate,
cacheMaxLength = options2.cacheMaxLength,
cacheWatingTime = options2.cacheWatingTime,
ignoreErrors = options2.ignoreErrors,
ignoreRequest = options2.ignoreRequest,
scopeError = options2.scopeError,
localization = options2.localization,
sendTypeByXmlBody = options2.sendTypeByXmlBody,
beforePushEventList = options2.beforePushEventList,
beforeSendData = options2.beforeSendData;
var validateFunList = [];
if (pv && _typeof(pv) === "object") {
validateFunList.push(validateOption(pv.core, "pv.core", "boolean"));
} else {
validateFunList.push(validateOption(pv, "pv", "boolean"));
}
if (performance && _typeof(performance) === "object") {
validateFunList.push(validateOption(performance.core, "performance.core", "boolean"), validateOption(performance.firstResource, "performance.firstResource", "boolean"), validateOption(performance.server, "performance.server", "boolean"));
} else {
validateFunList.push(validateOption(performance, "performance", "boolean"));
}
if (error && _typeof(error) === "object") {
validateFunList.push(validateOption(error.core, "error.core", "boolean"), validateOption(error.server, "error.server", "boolean"));
} else {
validateFunList.push(validateOption(error, "error", "boolean"));
}
if (event && _typeof(event) === "object") {
validateFunList.push(validateOption(event.core, "event.core", "boolean"));
} else {
validateFunList.push(validateOption(event, "event", "boolean"));
}
var validateList = [validateOption(dsn, "dsn", "string"), validateOption(appName, "appName", "string"), validateOption(appCode, "appCode", "string"), validateOption(appVersion, "appVersion", "string"), validateOption(userUuid, "userUuid", "string"), validateOption(debug, "debug", "boolean"), validateOption(recordScreen, "recordScreen", "boolean"), validateOption(ext, "ext", "object"), validateOption(tracesSampleRate, "tracesSampleRate", "number"), validateOption(cacheMaxLength, "cacheMaxLength", "number"), validateOption(cacheWatingTime, "cacheWatingTime", "number"), validateOption(ignoreErrors, "ignoreErrors", "array"), validateOptionArray(ignoreErrors, "ignoreErrors", ["string", "regexp"]), validateOption(ignoreRequest, "ignoreRequest", "array"), validateOptionArray(ignoreRequest, "ignoreRequest", ["string", "regexp"]), validateOption(scopeError, "scopeError", "boolean"), validateOption(localization, "localization", "boolean"), validateOption(sendTypeByXmlBody, "sendTypeByXmlBody", "boolean"),
// validateOption(whiteScreen, 'whiteScreen', 'boolean'),
validateOption(beforePushEventList, "beforePushEventList", "function"), validateOption(beforeSendData, "beforeSendData", "function")];
return validateList.every(function (res) {
return !!res;
});
}
function _validateMustFill(options2) {
var validateList = [validateOptionMustFill(options2.appName, "appName"), validateOptionMustFill(options2.dsn, "dsn")];
return validateList.every(function (res) {
return !!res;
});
}
function validateOptionMustFill(target, targetName) {
if (isEmpty(target)) {
logError("\u3010".concat(targetName, "\u3011\u53C2\u6570\u5FC5\u586B"));
return false;
}
return true;
}
function validateOption(target, targetName, expectType) {
if (!target || typeofAny(target) === expectType) return true;
logError("TypeError:\u3010".concat(targetName, "\u3011\u671F\u671B\u4F20\u5165").concat(expectType, "\u7C7B\u578B\uFF0C\u76EE\u524D\u662F").concat(typeofAny(target), "\u7C7B\u578B"));
return false;
}
function validateOptionArray(target, targetName, expectTypes) {
if (!target) return true;
var pass = true;
target.forEach(function (item) {
if (!expectTypes.includes(typeofAny(item))) {
logError("TypeError:\u3010".concat(targetName, "\u3011\u6570\u7EC4\u5185\u7684\u503C\u671F\u671B\u4F20\u5165").concat(expectTypes.join("|"), "\u7C7B\u578B\uFF0C\u76EE\u524D\u503C").concat(item, "\u662F").concat(typeofAny(item), "\u7C7B\u578B"));
pass = false;
}
});
return pass;
}
var options;
function initOptions(initOptions2) {
if (!_validateMustFill(initOptions2) || !_validateInitOption(initOptions2)) return false;
options = ref(new Options(initOptions2));
_support.options = options;
return true;
}
function debug() {
var _console;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
if (options.value.debug) (_console = console).log.apply(_console, ["@meta-track: "].concat(args));
}
function logError() {
var _console2;
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
(_console2 = console).error.apply(_console2, ["@meta-track: "].concat(args));
}
function on$1(target, eventName, handler) {
var opitons = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
target.addEventListener(eventName, handler, opitons);
}
function replaceAop(source, name, replacement) {
var isForced = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
if (source === void 0) return;
if (name in source || isForced) {
var original = source[name];
var wrapped = replacement(original);
if (isFunction(wrapped)) {
source[name] = wrapped;
}
}
}
function normalizeObj(source) {
Object.keys(source).forEach(function (p) {
var v = source[p];
if (isNumber(v)) {
source[p] = v === 0 ? void 0 : parseFloat(v.toFixed(2));
}
});
return source;
}
function getLocationHref() {
if (typeof document === "undefined" || document.location == null) return "";
return document.location.href;
}
function getTimestamp() {
return Date.now();
}
function throttle$1(func, wait) {
var runFirst = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var timer = null;
var lastArgs;
return function () {
var _this = this;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
lastArgs = args;
if (timer === null) {
if (runFirst) {
func.apply(this, lastArgs);
}
timer = setTimeout(function () {
timer = null;
func.apply(_this, lastArgs);
}, wait);
}
};
}
function debounce(func, wait) {
var runFirst = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var timer = null;
return function () {
var _this2 = this;
for (var _len2 = arguments.length, arg = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
arg[_key2] = arguments[_key2];
}
if (runFirst) {
func.call.apply(func, [this].concat(arg));
runFirst = false;
}
if (timer) clearTimeout(timer);
timer = setTimeout(function () {
func.call.apply(func, [_this2].concat(arg));
}, wait);
};
}
function groupArray(arr) {
var groups = /* @__PURE__ */new Map();
for (var _len3 = arguments.length, keys = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
keys[_key3 - 1] = arguments[_key3];
}
var _iterator = _createForOfIteratorHelper(arr),
_step;
try {
var _loop = function _loop() {
var obj = _step.value;
var key = keys.filter(function (k) {
return obj[k];
}).map(function (k) {
return obj[k];
}).join(":");
if (!groups.has(key)) {
groups.set(key, []);
}
groups.get(key).push(obj);
};
for (_iterator.s(); !(_step = _iterator.n()).done;) {
_loop();
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
return Array.from(groups.values());
}
function deepAssign(target) {
for (var _len4 = arguments.length, sources = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
sources[_key4 - 1] = arguments[_key4];
}
sources.forEach(function (source) {
for (var key in source) {
if (source[key] !== null && isRegExp$1(source[key])) {
target[key] = source[key];
} else if (source[key] !== null && _typeof(source[key]) === "object") {
target[key] = deepAssign(target[key] || (isArray(source[key]) ? [] : {}), source[key]);
} else {
target[key] = source[key];
}
}
});
return target;
}
function validateMethods(methodsName) {
if (!isInit()) {
logError("".concat(methodsName, " \u9700\u8981\u5728SDK\u521D\u59CB\u5316\u4E4B\u540E\u4F7F\u7528"));
return false;
}
return true;
}
function typeofAny(target) {
return Object.prototype.toString.call(target).slice(8, -1).toLowerCase();
}
function isValidKey(key, object) {
return key in object;
}
function randomBoolean(randow) {
return Math.random() <= randow;
}
function pad(num, len) {
var placeholder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "0";
var str = String(num);
if (str.length < len) {
var result = str;
for (var i = 0; i < len - str.length; i += 1) {
result = placeholder + result;
}
return result;
}
return str;
}
function getBaseUrl(url) {
return url.split("?")[0];
}
function uuid() {
var date = /* @__PURE__ */new Date();
var hexDate = parseInt("".concat(date.getFullYear()).concat(pad(date.getMonth() + 1, 2)).concat(pad(date.getDate(), 2)), 10).toString(16);
var hexTime = parseInt("".concat(pad(date.getHours(), 2)).concat(pad(date.getMinutes(), 2)).concat(pad(date.getSeconds(), 2)).concat(pad(date.getMilliseconds(), 3)), 10).toString(16);
var guid = hexDate + hexTime.length + hexTime;
while (guid.length < 32) {
guid += Math.floor(Math.random() * 16).toString(16);
}
return "".concat(guid.slice(0, 8), "-").concat(guid.slice(8, 16), "-").concat(guid.slice(16));
}
function getCookieByName(name) {
var result = document.cookie.match(new RegExp("".concat(name, "=([^;]+)(;|$)")));
return result ? result[1] : void 0;
}
function sendByBeacon(url, data) {
return navigator.sendBeacon(url, JSON.stringify(data));
}
var sendReaconImageList = [];
function sendByImage(url, data) {
return new Promise(function (resolve) {
var beacon = new Image();
beacon.src = "".concat(url, "?v=").concat(encodeURIComponent(JSON.stringify(data)));
sendReaconImageList.push(beacon);
beacon.onload = function () {
resolve();
};
beacon.onerror = function () {
resolve();
};
});
}
function sendByXML(url, data) {
return new Promise(function (resolve) {
var xhr = new XMLHttpRequest();
xhr.open("post", url);
xhr.setRequestHeader("content-type", "application/json");
xhr.send(JSON.stringify(data));
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
resolve();
}
};
});
}
function executeFunctions(funList, through, args) {
if (funList.length === 0) return args;
var result = void 0;
for (var i = 0; i < funList.length; i++) {
var func = funList[i];
if (i === 0 || through) {
result = func(args);
} else {
result = func(result);
}
}
return result;
}
function unKnowToArray(target) {
return isArray(target) ? target : [target];
}
var arrayMap = Array.prototype.map || function polyfillMap(fn) {
var result = [];
for (var i = 0; i < this.length; i += 1) {
result.push(fn(this[i], i, this));
}
return result;
};
function map(arr, fn) {
return arrayMap.call(arr, fn);
}
var arrayFilter = Array.prototype.filter || function filterPolyfill(fn) {
var result = [];
for (var i = 0; i < this.length; i += 1) {
if (fn(this[i], i, this)) {
result.push(this[i]);
}
}
return result;
};
function filter(arr, fn) {
return arrayFilter.call(arr, fn);
}
var nextTime = window.requestIdleCallback || window.requestAnimationFrame || function (callback) {
return setTimeout(callback, 17);
};
function isObjectOverSizeLimit(object, limitInKB) {
var serializedObject = JSON.stringify(object);
var sizeInBytes = new TextEncoder().encode(serializedObject).length;
var sizeInKB = sizeInBytes / 1024;
return sizeInKB > limitInKB;
}
function parseGetParams(url) {
var params = {};
var query = url.split("?")[1];
if (query) {
var pairs = query.split("&");
var _iterator2 = _createForOfIteratorHelper(pairs),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
var pair = _step2.value;
var _pair$split = pair.split("="),
_pair$split2 = _slicedToArray(_pair$split, 2),
key = _pair$split2[0],
value = _pair$split2[1];
params[decodeURIComponent(key)] = decodeURIComponent(value);
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
}
return params;
}
function deepCopy(target) {
var map2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : /* @__PURE__ */new Map();
if (target !== null && _typeof(target) === "object") {
var res = map2.get(target);
if (res) return res;
if (target instanceof Array) {
res = [];
map2.set(target, res);
target.forEach(function (item, index) {
res[index] = deepCopy(item, map2);
});
} else {
res = {};
map2.set(target, res);
Object.keys(target).forEach(function (key) {
if (isValidKey(key, target)) {
res[key] = deepCopy(target[key], map2);
}
});
}
return res;
}
return target;
}
function formatDate(date) {
if (!date) return "";
var d = new Date(date);
var pad2 = function pad2(n) {
return n.toString().padStart(2, "0");
};
var year = d.getFullYear();
var month = pad2(d.getMonth() + 1);
var day = pad2(d.getDate());
var hours = pad2(d.getHours());
var minutes = pad2(d.getMinutes());
var seconds = pad2(d.getSeconds());
return "".concat(year, "-").concat(month, "-").concat(day, " ").concat(hours, ":").concat(minutes, ":").concat(seconds);
}
var version$1 = "1.0.4";
var DEVICE_KEY = "_meta_track_device_id";
var SESSION_KEY = "_meta_track_session_id";
var SURVIVIE_MILLI_SECONDS = 18e5;
var SDK_LOCAL_KEY = "_meta_track_localization_key";
var SDK_VERSION = version$1;
var EVENTTYPES = /* @__PURE__ */function (EVENTTYPES2) {
EVENTTYPES2["ERROR"] = "error";
EVENTTYPES2["CONSOLEERROR"] = "consoleError";
EVENTTYPES2["UNHANDLEDREJECTION"] = "unhandledrejection";
EVENTTYPES2["CLICK"] = "click";
EVENTTYPES2["LOAD"] = "load";
EVENTTYPES2["BEFOREUNLOAD"] = "beforeunload";
EVENTTYPES2["FETCH"] = "fetch";
EVENTTYPES2["XHROPEN"] = "xhr-open";
EVENTTYPES2["XHRSEND"] = "xhr-send";
EVENTTYPES2["HASHCHANGE"] = "hashchange";
EVENTTYPES2["HISTORYPUSHSTATE"] = "history-pushState";
EVENTTYPES2["HISTORYREPLACESTATE"] = "history-replaceState";
EVENTTYPES2["POPSTATE"] = "popstate";
EVENTTYPES2["READYSTATECHANGE"] = "readystatechange";
EVENTTYPES2["ONLINE"] = "online";
EVENTTYPES2["OFFLINE"] = "offline";
return EVENTTYPES2;
}(EVENTTYPES || {});
var SEDNEVENTTYPES = /* @__PURE__ */function (SEDNEVENTTYPES2) {
SEDNEVENTTYPES2["PV"] = "pv";
SEDNEVENTTYPES2["PVDURATION"] = "pv-duration";
SEDNEVENTTYPES2["ERROR"] = "error";
SEDNEVENTTYPES2["PERFORMANCE"] = "performance";
SEDNEVENTTYPES2["CLICK"] = "click";
SEDNEVENTTYPES2["DWELL"] = "dwell";
SEDNEVENTTYPES2["CUSTOM"] = "custom";
SEDNEVENTTYPES2["INTERSECTION"] = "intersection";
return SEDNEVENTTYPES2;
}(SEDNEVENTTYPES || {});
var SENDID = /* @__PURE__ */function (SENDID2) {
SENDID2["PAGE"] = "page";
SENDID2["RESOURCE"] = "resource";
SENDID2["SERVER"] = "server";
SENDID2["CODE"] = "code";
SENDID2["REJECT"] = "reject";
SENDID2["CONSOLEERROR"] = "console.error";
return SENDID2;
}(SENDID || {});
var WEBPAGELOAD = {
0: "navigate",
// 网页通过点击链接,地址栏输入,表单提交,脚本操作等方式加载
1: "reload",
// 网页通过“重新加载”按钮或者location.reload()方法加载
2: "back_forward",
// 网页通过“前进”或“后退”按钮加载
255: "reserved"
// 任何其他来源的加载
};
var EventBus = /*#__PURE__*/function () {
function EventBus() {
_classCallCheck(this, EventBus);
_defineProperty(this, "handlers", void 0);
this.handlers = {};
}
/**
* 为目标类型事件添加回调
* @param handler 需要被添加的类型以及回调函数
*/
return _createClass(EventBus, [{
key: "addEvent",
value: function addEvent(handler) {
!this.handlers[handler.type] && (this.handlers[handler.type] = []);
var funIndex = this._getCallbackIndex(handler);
if (funIndex === -1) {
var _this$handlers$handle;
(_this$handlers$handle = this.handlers[handler.type]) === null || _this$handlers$handle === void 0 ? void 0 : _this$handlers$handle.push(handler.callback);
}
}
/**
* 为目标类型事件删除回调
* @param handler 需要被删除的类型以及回调函数
*/
}, {
key: "delEvent",
value: function delEvent(handler) {
var funIndex = this._getCallbackIndex(handler);
if (funIndex !== -1) {
var _this$handlers$handle2;
(_this$handlers$handle2 = this.handlers[handler.type]) === null || _this$handlers$handle2 === void 0 ? void 0 : _this$handlers$handle2.splice(funIndex, 1);
}
}
/**
* 为目标类型事件更改回调
* @param handler 需要被更改的类型以及回调函数
* @param newCallback 新的回调函数
*/
}, {
key: "changeEvent",
value: function changeEvent(handler, newCallback) {
var funIndex = this._getCallbackIndex(handler);
if (funIndex !== -1) {
var _this$handlers$handle3;
(_this$handlers$handle3 = this.handlers[handler.type]) === null || _this$handlers$handle3 === void 0 ? void 0 : _this$handlers$handle3.splice(funIndex, 1, newCallback);
}
}
/**
* 获取目标类型事件所有的回调
* @param type 事件类型
*/
}, {
key: "getEvent",
value: function getEvent(type) {
return this.handlers[type] || [];
}
/**
* 执行目标类型事件所有的回调
* @param type 事件类型
* @param args 额外参数
*/
}, {
key: "runEvent",
value: function runEvent(type) {
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
var allEvent = this.getEvent(type);
allEvent.forEach(function (fun) {
fun.apply(void 0, args);
});
}
/**
* 获取函数在 callback 列表中的位置
*/
}, {
key: "_getCallbackIndex",
value: function _getCallbackIndex(handler) {
if (this.handlers[handler.type]) {
var callbackList = this.handlers[handler.type];
if (callbackList) {
return callbackList.findIndex(function (fun) {
return fun === handler.callback;
});
} else {
return -1;
}
} else {
return -1;
}
}
}]);
}();
var eventBus = _support.eventBus || (_support.eventBus = new EventBus());
function initReplace() {
for (var key in EVENTTYPES) {
if (isValidKey(key, EVENTTYPES)) {
replace(key);
}
}
}
function replace(type) {
if (!isValidKey(type, EVENTTYPES)) return;
var value = EVENTTYPES[type];
switch (value) {
case EVENTTYPES.ERROR:
listenError(EVENTTYPES.ERROR);
break;
case EVENTTYPES.UNHANDLEDREJECTION:
listenUnhandledrejection(EVENTTYPES.UNHANDLEDREJECTION);
break;
case EVENTTYPES.CONSOLEERROR:
replaceConsoleError(EVENTTYPES.CONSOLEERROR);
break;
case EVENTTYPES.CLICK:
listenClick(EVENTTYPES.CLICK);
break;
case EVENTTYPES.LOAD:
listenLoad(EVENTTYPES.LOAD);
break;
case EVENTTYPES.BEFOREUNLOAD:
listenBeforeunload(EVENTTYPES.BEFOREUNLOAD);
break;
case EVENTTYPES.XHROPEN:
replaceXHROpen(EVENTTYPES.XHROPEN);
break;
case EVENTTYPES.XHRSEND:
replaceXHRSend(EVENTTYPES.XHRSEND);
break;
case EVENTTYPES.FETCH:
replaceFetch(EVENTTYPES.FETCH);
break;
case EVENTTYPES.HASHCHANGE:
listenHashchange(EVENTTYPES.HASHCHANGE);
break;
case EVENTTYPES.HISTORYPUSHSTATE:
replaceHistoryPushState(EVENTTYPES.HISTORYPUSHSTATE);
break;
case EVENTTYPES.HISTORYREPLACESTATE:
replaceHistoryReplaceState(EVENTTYPES.HISTORYREPLACESTATE);
break;
case EVENTTYPES.POPSTATE:
listenPopState(EVENTTYPES.POPSTATE);
break;
case EVENTTYPES.OFFLINE:
listenOffline(EVENTTYPES.OFFLINE);
break;
case EVENTTYPES.ONLINE:
listenOnline(EVENTTYPES.ONLINE);
break;
}
}
function listenError(type) {
on$1(_global, "error", function (e) {
eventBus.runEvent(type, e);
}, true);
}
function listenUnhandledrejection(type) {
on$1(_global, "unhandledrejection", function (ev) {
eventBus.runEvent(type, ev);
});
}
function replaceConsoleError(type) {
replaceAop(console, "error", function (originalError) {
return function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
if (!(args[0] && args[0].slice && args[0].slice(0, 12) === "@web-tracing")) {
eventBus.runEvent(type, args);
}
originalError.apply(this, args);
};
});
}
function listenClick(type) {
if (!("document" in _global)) return;
var clickThrottle = throttle$1(eventBus.runEvent, 100, true);
on$1(_global.document, "click", function (e) {
clickThrottle.call(eventBus, type, e);
}, true);
}
function listenLoad(type) {
on$1(_global, "load", function (e) {
eventBus.runEvent(type, e);
}, true);
}
function listenBeforeunload(type) {
on$1(_global, "beforeunload", function (e) {
eventBus.runEvent(type, e);
}, false);
}
function replaceXHROpen(type) {
if (!("XMLHttpRequest" in _global)) return;
replaceAop(XMLHttpRequest.prototype, "open", function (originalOpen) {
return function () {
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
eventBus.runEvent.apply(eventBus, [type].concat(args));
originalOpen.apply(this, args);
};
});
}
function replaceXHRSend(type) {
if (!("XMLHttpRequest" in _global)) return;
replaceAop(XMLHttpRequest.prototype, "send", function (originalSend) {
return function () {
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
args[_key3] = arguments[_