@antglobal/rlog-sdk 0.0.1755855517-dev.8 → 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.
Files changed (127) hide show
  1. package/README.md +192 -432
  2. package/dist/esm/index.d.ts +14 -41
  3. package/dist/esm/index.d.ts.map +1 -1
  4. package/dist/esm/index.js +92 -76
  5. package/dist/esm/lib/api.d.ts +10 -0
  6. package/dist/esm/lib/api.d.ts.map +1 -1
  7. package/dist/esm/lib/api.js +58 -35
  8. package/dist/esm/lib/config.d.ts +14 -16
  9. package/dist/esm/lib/config.d.ts.map +1 -1
  10. package/dist/esm/lib/config.js +61 -33
  11. package/dist/esm/lib/constants.d.ts +89 -0
  12. package/dist/esm/lib/constants.d.ts.map +1 -0
  13. package/dist/esm/lib/constants.js +145 -0
  14. package/dist/esm/lib/drive/indexeddb-adapt.d.ts +12 -0
  15. package/dist/esm/lib/drive/indexeddb-adapt.d.ts.map +1 -1
  16. package/dist/esm/lib/drive/indexeddb-adapt.js +190 -20
  17. package/dist/esm/lib/drive/localstorage-adapt.d.ts +12 -0
  18. package/dist/esm/lib/drive/localstorage-adapt.d.ts.map +1 -1
  19. package/dist/esm/lib/drive/localstorage-adapt.js +179 -36
  20. package/dist/esm/lib/drive/memory-adapt.d.ts +10 -2
  21. package/dist/esm/lib/drive/memory-adapt.d.ts.map +1 -1
  22. package/dist/esm/lib/drive/memory-adapt.js +118 -26
  23. package/dist/esm/lib/drive/safe-storage.d.ts +24 -0
  24. package/dist/esm/lib/drive/safe-storage.d.ts.map +1 -0
  25. package/dist/esm/lib/drive/safe-storage.js +96 -0
  26. package/dist/esm/lib/drive/storage-interface.d.ts +20 -0
  27. package/dist/esm/lib/drive/storage-interface.d.ts.map +1 -1
  28. package/dist/esm/lib/error-trigger.d.ts +73 -0
  29. package/dist/esm/lib/error-trigger.d.ts.map +1 -0
  30. package/dist/esm/lib/error-trigger.js +162 -0
  31. package/dist/esm/lib/error.d.ts +9 -0
  32. package/dist/esm/lib/error.d.ts.map +1 -1
  33. package/dist/esm/lib/error.js +70 -118
  34. package/dist/esm/lib/init.d.ts +0 -4
  35. package/dist/esm/lib/init.d.ts.map +1 -1
  36. package/dist/esm/lib/init.js +148 -47
  37. package/dist/esm/lib/logger.d.ts +27 -0
  38. package/dist/esm/lib/logger.d.ts.map +1 -0
  39. package/dist/esm/lib/logger.js +79 -0
  40. package/dist/esm/lib/net.d.ts +11 -0
  41. package/dist/esm/lib/net.d.ts.map +1 -1
  42. package/dist/esm/lib/net.js +264 -116
  43. package/dist/esm/lib/request.d.ts.map +1 -1
  44. package/dist/esm/lib/request.js +2 -2
  45. package/dist/esm/lib/router-monitor.d.ts.map +1 -1
  46. package/dist/esm/lib/router-monitor.js +135 -49
  47. package/dist/esm/lib/rrweb.d.ts.map +1 -1
  48. package/dist/esm/lib/rrweb.js +31 -24
  49. package/dist/esm/lib/storage-manager.d.ts +12 -0
  50. package/dist/esm/lib/storage-manager.d.ts.map +1 -1
  51. package/dist/esm/lib/storage-manager.js +129 -46
  52. package/dist/esm/lib/upload-worker-manager.d.ts +47 -0
  53. package/dist/esm/lib/upload-worker-manager.d.ts.map +1 -0
  54. package/dist/esm/lib/upload-worker-manager.js +559 -0
  55. package/dist/esm/lib/upload-worker.d.ts +58 -0
  56. package/dist/esm/lib/upload-worker.d.ts.map +1 -0
  57. package/dist/esm/lib/upload-worker.js +28 -0
  58. package/dist/esm/lib/uploader.d.ts +43 -0
  59. package/dist/esm/lib/uploader.d.ts.map +1 -1
  60. package/dist/esm/lib/uploader.js +464 -102
  61. package/dist/esm/lib/utils.d.ts +75 -0
  62. package/dist/esm/lib/utils.d.ts.map +1 -1
  63. package/dist/esm/lib/utils.js +268 -5
  64. package/dist/lib/index.d.ts +14 -41
  65. package/dist/lib/index.d.ts.map +1 -1
  66. package/dist/lib/index.js +81 -63
  67. package/dist/lib/lib/api.d.ts +10 -0
  68. package/dist/lib/lib/api.d.ts.map +1 -1
  69. package/dist/lib/lib/api.js +59 -35
  70. package/dist/lib/lib/config.d.ts +14 -16
  71. package/dist/lib/lib/config.d.ts.map +1 -1
  72. package/dist/lib/lib/config.js +63 -33
  73. package/dist/lib/lib/constants.d.ts +89 -0
  74. package/dist/lib/lib/constants.d.ts.map +1 -0
  75. package/dist/lib/lib/constants.js +151 -0
  76. package/dist/lib/lib/drive/indexeddb-adapt.d.ts +12 -0
  77. package/dist/lib/lib/drive/indexeddb-adapt.d.ts.map +1 -1
  78. package/dist/lib/lib/drive/indexeddb-adapt.js +191 -19
  79. package/dist/lib/lib/drive/localstorage-adapt.d.ts +12 -0
  80. package/dist/lib/lib/drive/localstorage-adapt.d.ts.map +1 -1
  81. package/dist/lib/lib/drive/localstorage-adapt.js +179 -36
  82. package/dist/lib/lib/drive/memory-adapt.d.ts +10 -2
  83. package/dist/lib/lib/drive/memory-adapt.d.ts.map +1 -1
  84. package/dist/lib/lib/drive/memory-adapt.js +117 -26
  85. package/dist/lib/lib/drive/safe-storage.d.ts +24 -0
  86. package/dist/lib/lib/drive/safe-storage.d.ts.map +1 -0
  87. package/dist/lib/lib/drive/safe-storage.js +102 -0
  88. package/dist/lib/lib/drive/storage-interface.d.ts +20 -0
  89. package/dist/lib/lib/drive/storage-interface.d.ts.map +1 -1
  90. package/dist/lib/lib/error-trigger.d.ts +73 -0
  91. package/dist/lib/lib/error-trigger.d.ts.map +1 -0
  92. package/dist/lib/lib/error-trigger.js +167 -0
  93. package/dist/lib/lib/error.d.ts +9 -0
  94. package/dist/lib/lib/error.d.ts.map +1 -1
  95. package/dist/lib/lib/error.js +73 -118
  96. package/dist/lib/lib/init.d.ts +0 -4
  97. package/dist/lib/lib/init.d.ts.map +1 -1
  98. package/dist/lib/lib/init.js +144 -43
  99. package/dist/lib/lib/logger.d.ts +27 -0
  100. package/dist/lib/lib/logger.d.ts.map +1 -0
  101. package/dist/lib/lib/logger.js +84 -0
  102. package/dist/lib/lib/net.d.ts +11 -0
  103. package/dist/lib/lib/net.d.ts.map +1 -1
  104. package/dist/lib/lib/net.js +268 -117
  105. package/dist/lib/lib/request.d.ts.map +1 -1
  106. package/dist/lib/lib/request.js +3 -3
  107. package/dist/lib/lib/router-monitor.d.ts.map +1 -1
  108. package/dist/lib/lib/router-monitor.js +136 -49
  109. package/dist/lib/lib/rrweb.d.ts.map +1 -1
  110. package/dist/lib/lib/rrweb.js +31 -23
  111. package/dist/lib/lib/storage-manager.d.ts +12 -0
  112. package/dist/lib/lib/storage-manager.d.ts.map +1 -1
  113. package/dist/lib/lib/storage-manager.js +130 -46
  114. package/dist/lib/lib/upload-worker-manager.d.ts +47 -0
  115. package/dist/lib/lib/upload-worker-manager.d.ts.map +1 -0
  116. package/dist/lib/lib/upload-worker-manager.js +570 -0
  117. package/dist/lib/lib/upload-worker.d.ts +58 -0
  118. package/dist/lib/lib/upload-worker.d.ts.map +1 -0
  119. package/dist/lib/lib/upload-worker.js +33 -0
  120. package/dist/lib/lib/uploader.d.ts +43 -0
  121. package/dist/lib/lib/uploader.d.ts.map +1 -1
  122. package/dist/lib/lib/uploader.js +468 -101
  123. package/dist/lib/lib/utils.d.ts +75 -0
  124. package/dist/lib/lib/utils.d.ts.map +1 -1
  125. package/dist/lib/lib/utils.js +276 -6
  126. package/dist/rlog-sdk.min.js +1 -1
  127. package/package.json +3 -2
@@ -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: true,
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: 2 * 1000,
43
- // 每2秒做一次全量快照
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
- _context.next = 3;
98
- return (0, _request.get)(cdnUrl);
99
- case 3:
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
- console.warn('Failed to parse config JSON string:', parseError);
136
+ _logger.default.warn('Failed to parse config JSON string', parseError);
123
137
  }
124
138
  }
125
139
  }
126
- return _context.abrupt("return", _objectSpread(_objectSpread({}, DEFAULT_CONFIG), config));
127
- case 11:
128
- _context.prev = 11;
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
- console.warn('Failed to fetch config from CDN, using default config:', _context.t0);
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 15:
146
+ case 14:
133
147
  case "end":
134
148
  return _context.stop();
135
149
  }
136
- }, _callee, null, [[0, 11]]);
150
+ }, _callee, null, [[0, 10]]);
137
151
  }));
138
152
  return _fetchConfigFromCdn.apply(this, arguments);
139
153
  }
140
154
  function updateConfig(newConfig) {
141
- globalConfig = _objectSpread(_objectSpread({}, globalConfig), newConfig);
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 = 7;
190
+ _context3.next = 8;
167
191
  break;
168
192
  }
169
- _context3.next = 3;
193
+ // CDN 配置 URL 加入黑名单,避免被网络监控 hook 拦截导致请求头重复设置
194
+ (0, _net.setBlackListUrls)([cdnUrl]);
195
+ _context3.next = 4;
170
196
  return fetchConfigFromCdn(cdnUrl);
171
- case 3:
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
- setInterval( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
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
- console.warn('Failed to update config from CDN:', _context2.t0);
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 7:
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;AAarD,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;CAS7C"}
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"}