@antglobal/rlog-sdk 0.0.1755855517-dev.9 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +192 -432
- package/dist/esm/index.d.ts +14 -41
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +92 -76
- package/dist/esm/lib/api.d.ts +10 -0
- package/dist/esm/lib/api.d.ts.map +1 -1
- package/dist/esm/lib/api.js +58 -35
- package/dist/esm/lib/config.d.ts +13 -6
- package/dist/esm/lib/config.d.ts.map +1 -1
- package/dist/esm/lib/config.js +61 -33
- package/dist/esm/lib/constants.d.ts +89 -0
- package/dist/esm/lib/constants.d.ts.map +1 -0
- package/dist/esm/lib/constants.js +145 -0
- package/dist/esm/lib/drive/indexeddb-adapt.d.ts +12 -0
- package/dist/esm/lib/drive/indexeddb-adapt.d.ts.map +1 -1
- package/dist/esm/lib/drive/indexeddb-adapt.js +190 -20
- package/dist/esm/lib/drive/localstorage-adapt.d.ts +12 -0
- package/dist/esm/lib/drive/localstorage-adapt.d.ts.map +1 -1
- package/dist/esm/lib/drive/localstorage-adapt.js +179 -36
- package/dist/esm/lib/drive/memory-adapt.d.ts +10 -2
- package/dist/esm/lib/drive/memory-adapt.d.ts.map +1 -1
- package/dist/esm/lib/drive/memory-adapt.js +118 -26
- package/dist/esm/lib/drive/safe-storage.d.ts +24 -0
- package/dist/esm/lib/drive/safe-storage.d.ts.map +1 -0
- package/dist/esm/lib/drive/safe-storage.js +96 -0
- package/dist/esm/lib/drive/storage-interface.d.ts +20 -0
- package/dist/esm/lib/drive/storage-interface.d.ts.map +1 -1
- package/dist/esm/lib/error-trigger.d.ts +73 -0
- package/dist/esm/lib/error-trigger.d.ts.map +1 -0
- package/dist/esm/lib/error-trigger.js +162 -0
- package/dist/esm/lib/error.d.ts +9 -0
- package/dist/esm/lib/error.d.ts.map +1 -1
- package/dist/esm/lib/error.js +70 -118
- package/dist/esm/lib/init.d.ts +0 -4
- package/dist/esm/lib/init.d.ts.map +1 -1
- package/dist/esm/lib/init.js +148 -47
- package/dist/esm/lib/logger.d.ts +27 -0
- package/dist/esm/lib/logger.d.ts.map +1 -0
- package/dist/esm/lib/logger.js +79 -0
- package/dist/esm/lib/net.d.ts +11 -0
- package/dist/esm/lib/net.d.ts.map +1 -1
- package/dist/esm/lib/net.js +264 -119
- package/dist/esm/lib/request.d.ts.map +1 -1
- package/dist/esm/lib/request.js +2 -2
- package/dist/esm/lib/router-monitor.d.ts.map +1 -1
- package/dist/esm/lib/router-monitor.js +135 -49
- package/dist/esm/lib/rrweb.d.ts.map +1 -1
- package/dist/esm/lib/rrweb.js +31 -24
- package/dist/esm/lib/storage-manager.d.ts +12 -0
- package/dist/esm/lib/storage-manager.d.ts.map +1 -1
- package/dist/esm/lib/storage-manager.js +129 -46
- package/dist/esm/lib/upload-worker-manager.d.ts +47 -0
- package/dist/esm/lib/upload-worker-manager.d.ts.map +1 -0
- package/dist/esm/lib/upload-worker-manager.js +559 -0
- package/dist/esm/lib/upload-worker.d.ts +58 -0
- package/dist/esm/lib/upload-worker.d.ts.map +1 -0
- package/dist/esm/lib/upload-worker.js +28 -0
- package/dist/esm/lib/uploader.d.ts +43 -0
- package/dist/esm/lib/uploader.d.ts.map +1 -1
- package/dist/esm/lib/uploader.js +464 -102
- package/dist/esm/lib/utils.d.ts +75 -0
- package/dist/esm/lib/utils.d.ts.map +1 -1
- package/dist/esm/lib/utils.js +268 -5
- package/dist/lib/index.d.ts +14 -41
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +81 -63
- package/dist/lib/lib/api.d.ts +10 -0
- package/dist/lib/lib/api.d.ts.map +1 -1
- package/dist/lib/lib/api.js +59 -35
- package/dist/lib/lib/config.d.ts +13 -6
- package/dist/lib/lib/config.d.ts.map +1 -1
- package/dist/lib/lib/config.js +63 -33
- package/dist/lib/lib/constants.d.ts +89 -0
- package/dist/lib/lib/constants.d.ts.map +1 -0
- package/dist/lib/lib/constants.js +151 -0
- package/dist/lib/lib/drive/indexeddb-adapt.d.ts +12 -0
- package/dist/lib/lib/drive/indexeddb-adapt.d.ts.map +1 -1
- package/dist/lib/lib/drive/indexeddb-adapt.js +191 -19
- package/dist/lib/lib/drive/localstorage-adapt.d.ts +12 -0
- package/dist/lib/lib/drive/localstorage-adapt.d.ts.map +1 -1
- package/dist/lib/lib/drive/localstorage-adapt.js +179 -36
- package/dist/lib/lib/drive/memory-adapt.d.ts +10 -2
- package/dist/lib/lib/drive/memory-adapt.d.ts.map +1 -1
- package/dist/lib/lib/drive/memory-adapt.js +117 -26
- package/dist/lib/lib/drive/safe-storage.d.ts +24 -0
- package/dist/lib/lib/drive/safe-storage.d.ts.map +1 -0
- package/dist/lib/lib/drive/safe-storage.js +102 -0
- package/dist/lib/lib/drive/storage-interface.d.ts +20 -0
- package/dist/lib/lib/drive/storage-interface.d.ts.map +1 -1
- package/dist/lib/lib/error-trigger.d.ts +73 -0
- package/dist/lib/lib/error-trigger.d.ts.map +1 -0
- package/dist/lib/lib/error-trigger.js +167 -0
- package/dist/lib/lib/error.d.ts +9 -0
- package/dist/lib/lib/error.d.ts.map +1 -1
- package/dist/lib/lib/error.js +73 -118
- package/dist/lib/lib/init.d.ts +0 -4
- package/dist/lib/lib/init.d.ts.map +1 -1
- package/dist/lib/lib/init.js +144 -43
- package/dist/lib/lib/logger.d.ts +27 -0
- package/dist/lib/lib/logger.d.ts.map +1 -0
- package/dist/lib/lib/logger.js +84 -0
- package/dist/lib/lib/net.d.ts +11 -0
- package/dist/lib/lib/net.d.ts.map +1 -1
- package/dist/lib/lib/net.js +268 -120
- package/dist/lib/lib/request.d.ts.map +1 -1
- package/dist/lib/lib/request.js +3 -3
- package/dist/lib/lib/router-monitor.d.ts.map +1 -1
- package/dist/lib/lib/router-monitor.js +136 -49
- package/dist/lib/lib/rrweb.d.ts.map +1 -1
- package/dist/lib/lib/rrweb.js +31 -23
- package/dist/lib/lib/storage-manager.d.ts +12 -0
- package/dist/lib/lib/storage-manager.d.ts.map +1 -1
- package/dist/lib/lib/storage-manager.js +130 -46
- package/dist/lib/lib/upload-worker-manager.d.ts +47 -0
- package/dist/lib/lib/upload-worker-manager.d.ts.map +1 -0
- package/dist/lib/lib/upload-worker-manager.js +570 -0
- package/dist/lib/lib/upload-worker.d.ts +58 -0
- package/dist/lib/lib/upload-worker.d.ts.map +1 -0
- package/dist/lib/lib/upload-worker.js +33 -0
- package/dist/lib/lib/uploader.d.ts +43 -0
- package/dist/lib/lib/uploader.d.ts.map +1 -1
- package/dist/lib/lib/uploader.js +468 -101
- package/dist/lib/lib/utils.d.ts +75 -0
- package/dist/lib/lib/utils.d.ts.map +1 -1
- package/dist/lib/lib/utils.js +276 -6
- package/dist/rlog-sdk.min.js +1 -1
- package/package.json +3 -2
package/dist/lib/lib/config.js
CHANGED
|
@@ -6,8 +6,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.fetchConfigFromCdn = fetchConfigFromCdn;
|
|
7
7
|
exports.getConfig = getConfig;
|
|
8
8
|
exports.initConfigManager = initConfigManager;
|
|
9
|
+
exports.stopConfigUpdate = stopConfigUpdate;
|
|
9
10
|
exports.updateConfig = updateConfig;
|
|
10
11
|
var _request = require("./request");
|
|
12
|
+
var _utils = require("./utils");
|
|
13
|
+
var _logger = _interopRequireDefault(require("./logger"));
|
|
14
|
+
var _net = require("./net");
|
|
15
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
16
|
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { 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 && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
12
17
|
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); }
|
|
13
18
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
@@ -19,12 +24,13 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
19
24
|
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); }
|
|
20
25
|
// Console录制插件配置类型定义
|
|
21
26
|
|
|
27
|
+
// 错误采集模式配置
|
|
28
|
+
|
|
22
29
|
// CDN 配置类型定义
|
|
23
30
|
|
|
24
31
|
// 默认配置
|
|
25
32
|
var DEFAULT_CONFIG = {
|
|
26
|
-
enable:
|
|
27
|
-
samplingRate: 15,
|
|
33
|
+
enable: false,
|
|
28
34
|
uploadInterval: 2000,
|
|
29
35
|
configUpdateInterval: 300000,
|
|
30
36
|
// 5分钟
|
|
@@ -39,24 +45,33 @@ var DEFAULT_CONFIG = {
|
|
|
39
45
|
// 默认关闭只采集不上报模式
|
|
40
46
|
maxRetryCount: 3,
|
|
41
47
|
// 默认最大重试次数3次
|
|
42
|
-
checkoutEveryNms:
|
|
43
|
-
// 每
|
|
48
|
+
checkoutEveryNms: 5 * 1000,
|
|
49
|
+
// 每5秒做一次全量快照
|
|
44
50
|
ignoreClass: 'rr-ignore',
|
|
45
51
|
blockClass: 'rr-block',
|
|
46
52
|
maskTextClass: 'rr-mask',
|
|
47
53
|
sampling: {
|
|
54
|
+
canvas: 15,
|
|
55
|
+
// Canvas 采样率 (帧/秒)
|
|
48
56
|
mousemove: 50,
|
|
49
57
|
// 每50ms最多采集一次mousemove事件
|
|
50
58
|
scroll: 100,
|
|
51
59
|
// 滚动事件防抖,每100ms采集一次,
|
|
52
60
|
input: 'last' // 输入只记录最后一次,
|
|
53
61
|
},
|
|
54
|
-
error: false,
|
|
55
|
-
// 默认不启用错误处理
|
|
56
62
|
packEvents: false,
|
|
57
63
|
// 默认不使用rrweb的packFn压缩事件数据
|
|
58
64
|
clearStorageBeforeRecord: true,
|
|
59
65
|
// 默认在开始录制前清空存储数据
|
|
66
|
+
error: false,
|
|
67
|
+
// 默认不启用错误监听上报,错误采集模式下默认true
|
|
68
|
+
captureMode: 'full',
|
|
69
|
+
// 默认全量采集模式
|
|
70
|
+
errorCapture: {
|
|
71
|
+
beforeDuration: 30000,
|
|
72
|
+
afterDuration: 30000,
|
|
73
|
+
httpErrorThreshold: 400
|
|
74
|
+
},
|
|
60
75
|
// 路由监控配置
|
|
61
76
|
routerMonitor: {
|
|
62
77
|
enable: false,
|
|
@@ -66,15 +81,16 @@ var DEFAULT_CONFIG = {
|
|
|
66
81
|
trackHistoryChange: true,
|
|
67
82
|
trackPageStayTime: true,
|
|
68
83
|
// 是否计算页面停留时间
|
|
69
|
-
ignoreRoutes: []
|
|
70
|
-
// 路由是否应该被忽略
|
|
71
|
-
customMatchers: [] // 自定义匹配规则
|
|
84
|
+
ignoreRoutes: [] // 路由是否应该被忽略
|
|
72
85
|
}
|
|
73
86
|
};
|
|
74
87
|
|
|
75
88
|
// 全局配置变量
|
|
76
89
|
var globalConfig = _objectSpread({}, DEFAULT_CONFIG);
|
|
77
90
|
|
|
91
|
+
// CDN 配置定时更新的 interval ID
|
|
92
|
+
var configUpdateTimer = null;
|
|
93
|
+
|
|
78
94
|
/**
|
|
79
95
|
* 从 CDN 获取配置
|
|
80
96
|
* @param cdnUrl CDN 配置文件地址
|
|
@@ -89,21 +105,19 @@ function fetchConfigFromCdn(_x) {
|
|
|
89
105
|
*/
|
|
90
106
|
function _fetchConfigFromCdn() {
|
|
91
107
|
_fetchConfigFromCdn = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(cdnUrl) {
|
|
92
|
-
var response, config;
|
|
108
|
+
var customHeaders, response, config;
|
|
93
109
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
94
110
|
while (1) switch (_context.prev = _context.next) {
|
|
95
111
|
case 0:
|
|
96
112
|
_context.prev = 0;
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
113
|
+
// 从 net.ts 中获取自定义请求头
|
|
114
|
+
customHeaders = (0, _net.getCustomHeaders)();
|
|
115
|
+
_context.next = 4;
|
|
116
|
+
return (0, _request.get)(cdnUrl, {
|
|
117
|
+
headers: customHeaders
|
|
118
|
+
});
|
|
119
|
+
case 4:
|
|
100
120
|
response = _context.sent;
|
|
101
|
-
if (response.ok) {
|
|
102
|
-
_context.next = 6;
|
|
103
|
-
break;
|
|
104
|
-
}
|
|
105
|
-
throw new Error("Failed to fetch config: ".concat(response.status));
|
|
106
|
-
case 6:
|
|
107
121
|
config = {}; // 处理三种不同的响应格式
|
|
108
122
|
if (response.data) {
|
|
109
123
|
// 情况1: response.data 直接就是配置对象
|
|
@@ -119,26 +133,26 @@ function _fetchConfigFromCdn() {
|
|
|
119
133
|
try {
|
|
120
134
|
config = JSON.parse(response.data.data);
|
|
121
135
|
} catch (parseError) {
|
|
122
|
-
|
|
136
|
+
_logger.default.warn('Failed to parse config JSON string', parseError);
|
|
123
137
|
}
|
|
124
138
|
}
|
|
125
139
|
}
|
|
126
|
-
return _context.abrupt("return",
|
|
127
|
-
case
|
|
128
|
-
_context.prev =
|
|
140
|
+
return _context.abrupt("return", (0, _utils.deepMergeConfig)(DEFAULT_CONFIG, config));
|
|
141
|
+
case 10:
|
|
142
|
+
_context.prev = 10;
|
|
129
143
|
_context.t0 = _context["catch"](0);
|
|
130
|
-
|
|
144
|
+
_logger.default.warn('Failed to fetch config from CDN, using default config', _context.t0);
|
|
131
145
|
return _context.abrupt("return", _objectSpread({}, DEFAULT_CONFIG));
|
|
132
|
-
case
|
|
146
|
+
case 14:
|
|
133
147
|
case "end":
|
|
134
148
|
return _context.stop();
|
|
135
149
|
}
|
|
136
|
-
}, _callee, null, [[0,
|
|
150
|
+
}, _callee, null, [[0, 10]]);
|
|
137
151
|
}));
|
|
138
152
|
return _fetchConfigFromCdn.apply(this, arguments);
|
|
139
153
|
}
|
|
140
154
|
function updateConfig(newConfig) {
|
|
141
|
-
globalConfig =
|
|
155
|
+
globalConfig = (0, _utils.deepMergeConfig)(globalConfig, newConfig);
|
|
142
156
|
}
|
|
143
157
|
|
|
144
158
|
/**
|
|
@@ -149,6 +163,16 @@ function getConfig() {
|
|
|
149
163
|
return _objectSpread({}, globalConfig);
|
|
150
164
|
}
|
|
151
165
|
|
|
166
|
+
/**
|
|
167
|
+
* 停止配置定时更新
|
|
168
|
+
*/
|
|
169
|
+
function stopConfigUpdate() {
|
|
170
|
+
if (configUpdateTimer) {
|
|
171
|
+
clearInterval(configUpdateTimer);
|
|
172
|
+
configUpdateTimer = null;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
152
176
|
/**
|
|
153
177
|
* 初始化配置管理器
|
|
154
178
|
* @param cdnUrl CDN 配置文件地址
|
|
@@ -163,19 +187,25 @@ function _initConfigManager() {
|
|
|
163
187
|
while (1) switch (_context3.prev = _context3.next) {
|
|
164
188
|
case 0:
|
|
165
189
|
if (!cdnUrl) {
|
|
166
|
-
_context3.next =
|
|
190
|
+
_context3.next = 8;
|
|
167
191
|
break;
|
|
168
192
|
}
|
|
169
|
-
|
|
193
|
+
// 将 CDN 配置 URL 加入黑名单,避免被网络监控 hook 拦截导致请求头重复设置
|
|
194
|
+
(0, _net.setBlackListUrls)([cdnUrl]);
|
|
195
|
+
_context3.next = 4;
|
|
170
196
|
return fetchConfigFromCdn(cdnUrl);
|
|
171
|
-
case
|
|
197
|
+
case 4:
|
|
172
198
|
config = _context3.sent;
|
|
173
199
|
updateConfig(config);
|
|
174
200
|
|
|
175
201
|
// 定时更新配置
|
|
176
202
|
updateInterval = config.configUpdateInterval || DEFAULT_CONFIG.configUpdateInterval;
|
|
177
203
|
if (updateInterval) {
|
|
178
|
-
|
|
204
|
+
// 清理之前的定时器(重新初始化场景)
|
|
205
|
+
if (configUpdateTimer) {
|
|
206
|
+
clearInterval(configUpdateTimer);
|
|
207
|
+
}
|
|
208
|
+
configUpdateTimer = setInterval( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
179
209
|
var newConfig;
|
|
180
210
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
181
211
|
while (1) switch (_context2.prev = _context2.next) {
|
|
@@ -191,7 +221,7 @@ function _initConfigManager() {
|
|
|
191
221
|
case 7:
|
|
192
222
|
_context2.prev = 7;
|
|
193
223
|
_context2.t0 = _context2["catch"](0);
|
|
194
|
-
|
|
224
|
+
_logger.default.warn('Failed to update config from CDN', _context2.t0);
|
|
195
225
|
case 10:
|
|
196
226
|
case "end":
|
|
197
227
|
return _context2.stop();
|
|
@@ -199,7 +229,7 @@ function _initConfigManager() {
|
|
|
199
229
|
}, _callee2, null, [[0, 7]]);
|
|
200
230
|
})), updateInterval);
|
|
201
231
|
}
|
|
202
|
-
case
|
|
232
|
+
case 8:
|
|
203
233
|
case "end":
|
|
204
234
|
return _context3.stop();
|
|
205
235
|
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rlog SDK 全局常量定义
|
|
3
|
+
*
|
|
4
|
+
* 集中管理项目中所有硬编码的常量值,便于统一维护和修改。
|
|
5
|
+
* 按功能领域分组,每个常量都附带用途说明。
|
|
6
|
+
*/
|
|
7
|
+
/** 设备 ID 的 localStorage 存储键 */
|
|
8
|
+
export declare const STORAGE_KEY_DEVICE_ID = "rlog-deviceId";
|
|
9
|
+
/** 旧版设备标识 key(兼容迁移) */
|
|
10
|
+
export declare const STORAGE_KEY_UTOKEN = "utoken";
|
|
11
|
+
/** IWP 设备标识 key(兼容迁移) */
|
|
12
|
+
export declare const STORAGE_KEY_IWP_DEVICE_TAG = "IWP-iwp-deivceTag";
|
|
13
|
+
/** URL 参数缓存到 sessionStorage 的前缀 */
|
|
14
|
+
export declare const STORAGE_KEY_URL_PARAM_PREFIX = "rlog-";
|
|
15
|
+
/** Session 注册表的 localStorage 存储键 */
|
|
16
|
+
export declare const STORAGE_KEY_SESSION_REGISTRY = "rlog_sessions";
|
|
17
|
+
/** 录制数据存储键前缀 */
|
|
18
|
+
export declare const STORAGE_KEY_DATA_PREFIX = "rlog_data_";
|
|
19
|
+
/** 分布式锁存储键前缀 */
|
|
20
|
+
export declare const STORAGE_KEY_LOCK_PREFIX = "rlog_lock_";
|
|
21
|
+
/** 只采集不上报模式的 sessionStorage 标识键 */
|
|
22
|
+
export declare const STORAGE_KEY_CONSUME_ONLY = "RLOG_CONSUME_ONLY";
|
|
23
|
+
/** 只采集不上报模式的 sessionStorage 标识值 */
|
|
24
|
+
export declare const STORAGE_VALUE_CONSUME_ONLY = "YES";
|
|
25
|
+
/** localStorage 可用性测试键(StorageManager) */
|
|
26
|
+
export declare const STORAGE_TEST_KEY = "__rlog_storage_test__";
|
|
27
|
+
/** localStorage 可用性测试键(SafeStorage) */
|
|
28
|
+
export declare const SAFE_STORAGE_TEST_KEY = "__rlog_safe_storage_test__";
|
|
29
|
+
/** Session 过期时间:1 小时。超过此时间的 session 数据将在下次 SDK 初始化时被清理 */
|
|
30
|
+
export declare const SESSION_MAX_AGE: number;
|
|
31
|
+
/** 孤儿 session 数据的最大有效时间跨度:2 分钟。只有数据时间跨度在此范围内的才被视为"上传周期内的残留数据" */
|
|
32
|
+
export declare const ORPHAN_DATA_MAX_SPAN: number;
|
|
33
|
+
/** 孤儿 session 数据的最大年龄:5 分钟。只有 session 注册时间在此范围内的才被视为"近期的残留数据" */
|
|
34
|
+
export declare const ORPHAN_SESSION_MAX_AGE: number;
|
|
35
|
+
/** 分布式锁超时时间:5 秒 */
|
|
36
|
+
export declare const LOCK_TIMEOUT = 5000;
|
|
37
|
+
/** 分布式锁重试间隔:10 毫秒 */
|
|
38
|
+
export declare const LOCK_RETRY_DELAY = 10;
|
|
39
|
+
/** Worker 就绪超时时间:5 秒。超时后降级到主线程模式 */
|
|
40
|
+
export declare const WORKER_READY_TIMEOUT = 5000;
|
|
41
|
+
/** HTTP 请求默认超时时间:10 秒 */
|
|
42
|
+
export declare const REQUEST_TIMEOUT = 10000;
|
|
43
|
+
/** 上传锁冲突时的延迟重试间隔:100 毫秒 */
|
|
44
|
+
export declare const UPLOAD_RETRY_DELAY = 100;
|
|
45
|
+
/** 存储适配器最大事件存储量 */
|
|
46
|
+
export declare const MAX_STORAGE_EVENTS = 10000;
|
|
47
|
+
/** 分布式锁最大重试次数 */
|
|
48
|
+
export declare const LOCK_MAX_RETRIES = 50;
|
|
49
|
+
/** 全量模式每次拉取事件数量 */
|
|
50
|
+
export declare const PULL_BATCH_SIZE = 100;
|
|
51
|
+
/** 孤儿 session 数据拉取上限 */
|
|
52
|
+
export declare const ORPHAN_PULL_LIMIT = 10000;
|
|
53
|
+
/** 默认缓存的 URL 参数名称列表 */
|
|
54
|
+
export declare const DEFAULT_URL_PARAMS_TO_CACHE: string[];
|
|
55
|
+
/** 上传失败事件名称(CustomEvent + rrweb addCustomEvent) */
|
|
56
|
+
export declare const EVENT_UPLOAD_FAILURE = "rlog-upload-failure";
|
|
57
|
+
/** 自定义错误事件名称 */
|
|
58
|
+
export declare const EVENT_CUSTOM_ERROR = "custom-error-event";
|
|
59
|
+
/** HTTP 请求成功事件名称 */
|
|
60
|
+
export declare const EVENT_HTTP_SUCCESS = "http-success";
|
|
61
|
+
/** HTTP 请求失败事件名称 */
|
|
62
|
+
export declare const EVENT_HTTP_ERROR = "http-error";
|
|
63
|
+
/** 网络状态变化事件名称 */
|
|
64
|
+
export declare const EVENT_NETWORK_STATUS = "network-status";
|
|
65
|
+
/** 路由变化事件名称 */
|
|
66
|
+
export declare const EVENT_ROUTE_CHANGE = "route-change";
|
|
67
|
+
/** 页面生命周期事件名称 */
|
|
68
|
+
export declare const EVENT_PAGE_LIFECYCLE = "page-lifecycle";
|
|
69
|
+
/** 网络监控黑名单域名列表 */
|
|
70
|
+
export declare const BLACK_HOST_NAME: string[];
|
|
71
|
+
/** 网络监控黑名单路径列表 */
|
|
72
|
+
export declare const BLACK_PATH_NAME: string[];
|
|
73
|
+
/** 需要从响应中提取的 HTTP 头字段 */
|
|
74
|
+
export declare const HEADERS_TO_EXTRACT: string[];
|
|
75
|
+
/** 默认白名单 URL 列表(rrweb 录制时设置) */
|
|
76
|
+
export declare const DEFAULT_WHITE_LIST_URLS: string[];
|
|
77
|
+
/** 日志输出统一前缀 */
|
|
78
|
+
export declare const LOG_PREFIX = "[Rlog]";
|
|
79
|
+
/** IndexedDB 数据库名称 */
|
|
80
|
+
export declare const IDB_DB_NAME = "LogStorageDB";
|
|
81
|
+
/** IndexedDB 对象存储名称 */
|
|
82
|
+
export declare const IDB_STORE_NAME = "logs";
|
|
83
|
+
/** IndexedDB 数据库版本号 */
|
|
84
|
+
export declare const IDB_VERSION = 2;
|
|
85
|
+
/** 图片导出格式 */
|
|
86
|
+
export declare const CANVAS_EXPORT_TYPE = "image/webp";
|
|
87
|
+
/** 图片导出质量 */
|
|
88
|
+
export declare const CANVAS_EXPORT_QUALITY = 0.6;
|
|
89
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,+BAA+B;AAC/B,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AAErD,uBAAuB;AACvB,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,yBAAyB;AACzB,eAAO,MAAM,0BAA0B,sBAAsB,CAAC;AAE9D,mCAAmC;AACnC,eAAO,MAAM,4BAA4B,UAAU,CAAC;AAEpD,oCAAoC;AACpC,eAAO,MAAM,4BAA4B,kBAAkB,CAAC;AAE5D,gBAAgB;AAChB,eAAO,MAAM,uBAAuB,eAAe,CAAC;AAEpD,gBAAgB;AAChB,eAAO,MAAM,uBAAuB,eAAe,CAAC;AAEpD,mCAAmC;AACnC,eAAO,MAAM,wBAAwB,sBAAsB,CAAC;AAE5D,mCAAmC;AACnC,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAEhD,0CAA0C;AAC1C,eAAO,MAAM,gBAAgB,0BAA0B,CAAC;AAExD,uCAAuC;AACvC,eAAO,MAAM,qBAAqB,+BAA+B,CAAC;AAIlE,0DAA0D;AAC1D,eAAO,MAAM,eAAe,QAAqB,CAAC;AAElD,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,QAAgB,CAAC;AAElD,iEAAiE;AACjE,eAAO,MAAM,sBAAsB,QAAgB,CAAC;AAEpD,mBAAmB;AACnB,eAAO,MAAM,YAAY,OAAO,CAAC;AAEjC,qBAAqB;AACrB,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,oCAAoC;AACpC,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,yBAAyB;AACzB,eAAO,MAAM,eAAe,QAAQ,CAAC;AAErC,2BAA2B;AAC3B,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAItC,mBAAmB;AACnB,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AAExC,iBAAiB;AACjB,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,mBAAmB;AACnB,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,wBAAwB;AACxB,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AAEvC,uBAAuB;AACvB,eAAO,MAAM,2BAA2B,UAAa,CAAC;AAItD,mDAAmD;AACnD,eAAO,MAAM,oBAAoB,wBAAwB,CAAC;AAE1D,gBAAgB;AAChB,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAEvD,oBAAoB;AACpB,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD,oBAAoB;AACpB,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAE7C,iBAAiB;AACjB,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAErD,eAAe;AACf,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD,iBAAiB;AACjB,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAIrD,kBAAkB;AAClB,eAAO,MAAM,eAAe,UAQ3B,CAAC;AAEF,kBAAkB;AAClB,eAAO,MAAM,eAAe,UAgB3B,CAAC;AAEF,yBAAyB;AACzB,eAAO,MAAM,kBAAkB,UAAsC,CAAC;AAEtE,gCAAgC;AAChC,eAAO,MAAM,uBAAuB,UAEnC,CAAC;AAIF,eAAe;AACf,eAAO,MAAM,UAAU,WAAW,CAAC;AAInC,sBAAsB;AACtB,eAAO,MAAM,WAAW,iBAAiB,CAAC;AAE1C,uBAAuB;AACvB,eAAO,MAAM,cAAc,SAAS,CAAC;AAErC,uBAAuB;AACvB,eAAO,MAAM,WAAW,IAAI,CAAC;AAI7B,aAAa;AACb,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAE/C,aAAa;AACb,eAAO,MAAM,qBAAqB,MAAM,CAAC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.WORKER_READY_TIMEOUT = exports.UPLOAD_RETRY_DELAY = exports.STORAGE_VALUE_CONSUME_ONLY = exports.STORAGE_TEST_KEY = exports.STORAGE_KEY_UTOKEN = exports.STORAGE_KEY_URL_PARAM_PREFIX = exports.STORAGE_KEY_SESSION_REGISTRY = exports.STORAGE_KEY_LOCK_PREFIX = exports.STORAGE_KEY_IWP_DEVICE_TAG = exports.STORAGE_KEY_DEVICE_ID = exports.STORAGE_KEY_DATA_PREFIX = exports.STORAGE_KEY_CONSUME_ONLY = exports.SESSION_MAX_AGE = exports.SAFE_STORAGE_TEST_KEY = exports.REQUEST_TIMEOUT = exports.PULL_BATCH_SIZE = exports.ORPHAN_SESSION_MAX_AGE = exports.ORPHAN_PULL_LIMIT = exports.ORPHAN_DATA_MAX_SPAN = exports.MAX_STORAGE_EVENTS = exports.LOG_PREFIX = exports.LOCK_TIMEOUT = exports.LOCK_RETRY_DELAY = exports.LOCK_MAX_RETRIES = exports.IDB_VERSION = exports.IDB_STORE_NAME = exports.IDB_DB_NAME = exports.HEADERS_TO_EXTRACT = exports.EVENT_UPLOAD_FAILURE = exports.EVENT_ROUTE_CHANGE = exports.EVENT_PAGE_LIFECYCLE = exports.EVENT_NETWORK_STATUS = exports.EVENT_HTTP_SUCCESS = exports.EVENT_HTTP_ERROR = exports.EVENT_CUSTOM_ERROR = exports.DEFAULT_WHITE_LIST_URLS = exports.DEFAULT_URL_PARAMS_TO_CACHE = exports.CANVAS_EXPORT_TYPE = exports.CANVAS_EXPORT_QUALITY = exports.BLACK_PATH_NAME = exports.BLACK_HOST_NAME = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Rlog SDK 全局常量定义
|
|
9
|
+
*
|
|
10
|
+
* 集中管理项目中所有硬编码的常量值,便于统一维护和修改。
|
|
11
|
+
* 按功能领域分组,每个常量都附带用途说明。
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
// ==================== Storage Key 前缀与标识 ====================
|
|
15
|
+
|
|
16
|
+
/** 设备 ID 的 localStorage 存储键 */
|
|
17
|
+
var STORAGE_KEY_DEVICE_ID = exports.STORAGE_KEY_DEVICE_ID = 'rlog-deviceId';
|
|
18
|
+
|
|
19
|
+
/** 旧版设备标识 key(兼容迁移) */
|
|
20
|
+
var STORAGE_KEY_UTOKEN = exports.STORAGE_KEY_UTOKEN = 'utoken';
|
|
21
|
+
|
|
22
|
+
/** IWP 设备标识 key(兼容迁移) */
|
|
23
|
+
var STORAGE_KEY_IWP_DEVICE_TAG = exports.STORAGE_KEY_IWP_DEVICE_TAG = 'IWP-iwp-deivceTag';
|
|
24
|
+
|
|
25
|
+
/** URL 参数缓存到 sessionStorage 的前缀 */
|
|
26
|
+
var STORAGE_KEY_URL_PARAM_PREFIX = exports.STORAGE_KEY_URL_PARAM_PREFIX = 'rlog-';
|
|
27
|
+
|
|
28
|
+
/** Session 注册表的 localStorage 存储键 */
|
|
29
|
+
var STORAGE_KEY_SESSION_REGISTRY = exports.STORAGE_KEY_SESSION_REGISTRY = 'rlog_sessions';
|
|
30
|
+
|
|
31
|
+
/** 录制数据存储键前缀 */
|
|
32
|
+
var STORAGE_KEY_DATA_PREFIX = exports.STORAGE_KEY_DATA_PREFIX = 'rlog_data_';
|
|
33
|
+
|
|
34
|
+
/** 分布式锁存储键前缀 */
|
|
35
|
+
var STORAGE_KEY_LOCK_PREFIX = exports.STORAGE_KEY_LOCK_PREFIX = 'rlog_lock_';
|
|
36
|
+
|
|
37
|
+
/** 只采集不上报模式的 sessionStorage 标识键 */
|
|
38
|
+
var STORAGE_KEY_CONSUME_ONLY = exports.STORAGE_KEY_CONSUME_ONLY = 'RLOG_CONSUME_ONLY';
|
|
39
|
+
|
|
40
|
+
/** 只采集不上报模式的 sessionStorage 标识值 */
|
|
41
|
+
var STORAGE_VALUE_CONSUME_ONLY = exports.STORAGE_VALUE_CONSUME_ONLY = 'YES';
|
|
42
|
+
|
|
43
|
+
/** localStorage 可用性测试键(StorageManager) */
|
|
44
|
+
var STORAGE_TEST_KEY = exports.STORAGE_TEST_KEY = '__rlog_storage_test__';
|
|
45
|
+
|
|
46
|
+
/** localStorage 可用性测试键(SafeStorage) */
|
|
47
|
+
var SAFE_STORAGE_TEST_KEY = exports.SAFE_STORAGE_TEST_KEY = '__rlog_safe_storage_test__';
|
|
48
|
+
|
|
49
|
+
// ==================== 时间相关常量(毫秒) ====================
|
|
50
|
+
|
|
51
|
+
/** Session 过期时间:1 小时。超过此时间的 session 数据将在下次 SDK 初始化时被清理 */
|
|
52
|
+
var SESSION_MAX_AGE = exports.SESSION_MAX_AGE = 1 * 60 * 60 * 1000;
|
|
53
|
+
|
|
54
|
+
/** 孤儿 session 数据的最大有效时间跨度:2 分钟。只有数据时间跨度在此范围内的才被视为"上传周期内的残留数据" */
|
|
55
|
+
var ORPHAN_DATA_MAX_SPAN = exports.ORPHAN_DATA_MAX_SPAN = 2 * 60 * 1000;
|
|
56
|
+
|
|
57
|
+
/** 孤儿 session 数据的最大年龄:5 分钟。只有 session 注册时间在此范围内的才被视为"近期的残留数据" */
|
|
58
|
+
var ORPHAN_SESSION_MAX_AGE = exports.ORPHAN_SESSION_MAX_AGE = 5 * 60 * 1000;
|
|
59
|
+
|
|
60
|
+
/** 分布式锁超时时间:5 秒 */
|
|
61
|
+
var LOCK_TIMEOUT = exports.LOCK_TIMEOUT = 5000;
|
|
62
|
+
|
|
63
|
+
/** 分布式锁重试间隔:10 毫秒 */
|
|
64
|
+
var LOCK_RETRY_DELAY = exports.LOCK_RETRY_DELAY = 10;
|
|
65
|
+
|
|
66
|
+
/** Worker 就绪超时时间:5 秒。超时后降级到主线程模式 */
|
|
67
|
+
var WORKER_READY_TIMEOUT = exports.WORKER_READY_TIMEOUT = 5000;
|
|
68
|
+
|
|
69
|
+
/** HTTP 请求默认超时时间:10 秒 */
|
|
70
|
+
var REQUEST_TIMEOUT = exports.REQUEST_TIMEOUT = 10000;
|
|
71
|
+
|
|
72
|
+
/** 上传锁冲突时的延迟重试间隔:100 毫秒 */
|
|
73
|
+
var UPLOAD_RETRY_DELAY = exports.UPLOAD_RETRY_DELAY = 100;
|
|
74
|
+
|
|
75
|
+
// ==================== 容量与限制 ====================
|
|
76
|
+
|
|
77
|
+
/** 存储适配器最大事件存储量 */
|
|
78
|
+
var MAX_STORAGE_EVENTS = exports.MAX_STORAGE_EVENTS = 10000;
|
|
79
|
+
|
|
80
|
+
/** 分布式锁最大重试次数 */
|
|
81
|
+
var LOCK_MAX_RETRIES = exports.LOCK_MAX_RETRIES = 50;
|
|
82
|
+
|
|
83
|
+
/** 全量模式每次拉取事件数量 */
|
|
84
|
+
var PULL_BATCH_SIZE = exports.PULL_BATCH_SIZE = 100;
|
|
85
|
+
|
|
86
|
+
/** 孤儿 session 数据拉取上限 */
|
|
87
|
+
var ORPHAN_PULL_LIMIT = exports.ORPHAN_PULL_LIMIT = 10000;
|
|
88
|
+
|
|
89
|
+
/** 默认缓存的 URL 参数名称列表 */
|
|
90
|
+
var DEFAULT_URL_PARAMS_TO_CACHE = exports.DEFAULT_URL_PARAMS_TO_CACHE = ['taskId'];
|
|
91
|
+
|
|
92
|
+
// ==================== 自定义事件名称 ====================
|
|
93
|
+
|
|
94
|
+
/** 上传失败事件名称(CustomEvent + rrweb addCustomEvent) */
|
|
95
|
+
var EVENT_UPLOAD_FAILURE = exports.EVENT_UPLOAD_FAILURE = 'rlog-upload-failure';
|
|
96
|
+
|
|
97
|
+
/** 自定义错误事件名称 */
|
|
98
|
+
var EVENT_CUSTOM_ERROR = exports.EVENT_CUSTOM_ERROR = 'custom-error-event';
|
|
99
|
+
|
|
100
|
+
/** HTTP 请求成功事件名称 */
|
|
101
|
+
var EVENT_HTTP_SUCCESS = exports.EVENT_HTTP_SUCCESS = 'http-success';
|
|
102
|
+
|
|
103
|
+
/** HTTP 请求失败事件名称 */
|
|
104
|
+
var EVENT_HTTP_ERROR = exports.EVENT_HTTP_ERROR = 'http-error';
|
|
105
|
+
|
|
106
|
+
/** 网络状态变化事件名称 */
|
|
107
|
+
var EVENT_NETWORK_STATUS = exports.EVENT_NETWORK_STATUS = 'network-status';
|
|
108
|
+
|
|
109
|
+
/** 路由变化事件名称 */
|
|
110
|
+
var EVENT_ROUTE_CHANGE = exports.EVENT_ROUTE_CHANGE = 'route-change';
|
|
111
|
+
|
|
112
|
+
/** 页面生命周期事件名称 */
|
|
113
|
+
var EVENT_PAGE_LIFECYCLE = exports.EVENT_PAGE_LIFECYCLE = 'page-lifecycle';
|
|
114
|
+
|
|
115
|
+
// ==================== 网络监控常量 ====================
|
|
116
|
+
|
|
117
|
+
/** 网络监控黑名单域名列表 */
|
|
118
|
+
var BLACK_HOST_NAME = exports.BLACK_HOST_NAME = ['arms', 'log', 'marmot-cloud.com', 'alipayobjects.com', 'renderpre.alipay.com', 'nemo-office.alipay.com', 'render.alipay.com'];
|
|
119
|
+
|
|
120
|
+
/** 网络监控黑名单路径列表 */
|
|
121
|
+
var BLACK_PATH_NAME = exports.BLACK_PATH_NAME = ['r.png', 'dwcookieLogGet.do', 'track', 'spm', 'logstores', 'render', '.json', '.js', '.css', '.wasm', '.png', '.jpg', '.jpeg', '.weapp', '.data'];
|
|
122
|
+
|
|
123
|
+
/** 需要从响应中提取的 HTTP 头字段 */
|
|
124
|
+
var HEADERS_TO_EXTRACT = exports.HEADERS_TO_EXTRACT = ['sky_trace_id', 'antbank-traceid'];
|
|
125
|
+
|
|
126
|
+
/** 默认白名单 URL 列表(rrweb 录制时设置) */
|
|
127
|
+
var DEFAULT_WHITE_LIST_URLS = exports.DEFAULT_WHITE_LIST_URLS = ['http://alipay-rmsdeploy-image.cn-hangzhou.alipay.aliyun-inc.com'];
|
|
128
|
+
|
|
129
|
+
// ==================== 日志常量 ====================
|
|
130
|
+
|
|
131
|
+
/** 日志输出统一前缀 */
|
|
132
|
+
var LOG_PREFIX = exports.LOG_PREFIX = '[Rlog]';
|
|
133
|
+
|
|
134
|
+
// ==================== IndexedDB 常量 ====================
|
|
135
|
+
|
|
136
|
+
/** IndexedDB 数据库名称 */
|
|
137
|
+
var IDB_DB_NAME = exports.IDB_DB_NAME = 'LogStorageDB';
|
|
138
|
+
|
|
139
|
+
/** IndexedDB 对象存储名称 */
|
|
140
|
+
var IDB_STORE_NAME = exports.IDB_STORE_NAME = 'logs';
|
|
141
|
+
|
|
142
|
+
/** IndexedDB 数据库版本号 */
|
|
143
|
+
var IDB_VERSION = exports.IDB_VERSION = 2;
|
|
144
|
+
|
|
145
|
+
// ==================== rrweb 录制默认配置 ====================
|
|
146
|
+
|
|
147
|
+
/** 图片导出格式 */
|
|
148
|
+
var CANVAS_EXPORT_TYPE = exports.CANVAS_EXPORT_TYPE = 'image/webp';
|
|
149
|
+
|
|
150
|
+
/** 图片导出质量 */
|
|
151
|
+
var CANVAS_EXPORT_QUALITY = exports.CANVAS_EXPORT_QUALITY = 0.6;
|
|
@@ -12,5 +12,17 @@ export declare class IndexedDBAdapter implements StorageAdapter {
|
|
|
12
12
|
unshiftBatch(deviceId: string, data: any[]): Promise<void>;
|
|
13
13
|
pull(deviceId: string, length: number): Promise<any[]>;
|
|
14
14
|
clear(deviceId: string): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* 按时间范围提取事件(不移除)
|
|
17
|
+
*/
|
|
18
|
+
pullByTimeRange(deviceId: string, startTime: number, endTime: number): Promise<any[]>;
|
|
19
|
+
/**
|
|
20
|
+
* 按时间范围移除事件(移除 sinceTime 及之后的所有事件)
|
|
21
|
+
*/
|
|
22
|
+
removeByTimeRange(deviceId: string, sinceTime: number): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* 获取存储的事件数量(非破坏性只读操作)
|
|
25
|
+
*/
|
|
26
|
+
count(deviceId: string): Promise<number>;
|
|
15
27
|
}
|
|
16
28
|
//# sourceMappingURL=indexeddb-adapt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexeddb-adapt.d.ts","sourceRoot":"","sources":["../../../../src/lib/drive/indexeddb-adapt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"indexeddb-adapt.d.ts","sourceRoot":"","sources":["../../../../src/lib/drive/indexeddb-adapt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAoBrD,qBAAa,gBAAiB,YAAW,cAAc;IACrD,OAAO,CAAC,EAAE,CAA4B;IACtC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAA8B;;YAMnC,MAAM;YAqDN,QAAQ;YAUR,eAAe;IAwBvB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAgChD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCnD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC1D,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAsCtD,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5C;;OAEG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,EAAE,CAAC;IAwBjB;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC3E;;OAEG;IACG,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAc/C"}
|