@antglobal/rlog-sdk 0.0.1755855517-dev.9 → 0.0.1781493462-dev.2

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 (133) hide show
  1. package/README.md +192 -432
  2. package/dist/esm/index.d.ts +15 -41
  3. package/dist/esm/index.d.ts.map +1 -1
  4. package/dist/esm/index.js +101 -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 +60 -26
  8. package/dist/esm/lib/config.d.ts +14 -7
  9. package/dist/esm/lib/config.d.ts.map +1 -1
  10. package/dist/esm/lib/config.js +63 -35
  11. package/dist/esm/lib/constants.d.ts +97 -0
  12. package/dist/esm/lib/constants.d.ts.map +1 -0
  13. package/dist/esm/lib/constants.js +159 -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 -119
  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 +41 -30
  49. package/dist/esm/lib/sign.d.ts +36 -0
  50. package/dist/esm/lib/sign.d.ts.map +1 -0
  51. package/dist/esm/lib/sign.js +393 -0
  52. package/dist/esm/lib/storage-manager.d.ts +12 -0
  53. package/dist/esm/lib/storage-manager.d.ts.map +1 -1
  54. package/dist/esm/lib/storage-manager.js +129 -46
  55. package/dist/esm/lib/upload-worker-manager.d.ts +47 -0
  56. package/dist/esm/lib/upload-worker-manager.d.ts.map +1 -0
  57. package/dist/esm/lib/upload-worker-manager.js +570 -0
  58. package/dist/esm/lib/upload-worker.d.ts +58 -0
  59. package/dist/esm/lib/upload-worker.d.ts.map +1 -0
  60. package/dist/esm/lib/upload-worker.js +28 -0
  61. package/dist/esm/lib/uploader.d.ts +43 -0
  62. package/dist/esm/lib/uploader.d.ts.map +1 -1
  63. package/dist/esm/lib/uploader.js +464 -102
  64. package/dist/esm/lib/utils.d.ts +80 -0
  65. package/dist/esm/lib/utils.d.ts.map +1 -1
  66. package/dist/esm/lib/utils.js +276 -5
  67. package/dist/lib/index.d.ts +15 -41
  68. package/dist/lib/index.d.ts.map +1 -1
  69. package/dist/lib/index.js +89 -63
  70. package/dist/lib/lib/api.d.ts +10 -0
  71. package/dist/lib/lib/api.d.ts.map +1 -1
  72. package/dist/lib/lib/api.js +61 -26
  73. package/dist/lib/lib/config.d.ts +14 -7
  74. package/dist/lib/lib/config.d.ts.map +1 -1
  75. package/dist/lib/lib/config.js +65 -35
  76. package/dist/lib/lib/constants.d.ts +97 -0
  77. package/dist/lib/lib/constants.d.ts.map +1 -0
  78. package/dist/lib/lib/constants.js +165 -0
  79. package/dist/lib/lib/drive/indexeddb-adapt.d.ts +12 -0
  80. package/dist/lib/lib/drive/indexeddb-adapt.d.ts.map +1 -1
  81. package/dist/lib/lib/drive/indexeddb-adapt.js +191 -19
  82. package/dist/lib/lib/drive/localstorage-adapt.d.ts +12 -0
  83. package/dist/lib/lib/drive/localstorage-adapt.d.ts.map +1 -1
  84. package/dist/lib/lib/drive/localstorage-adapt.js +179 -36
  85. package/dist/lib/lib/drive/memory-adapt.d.ts +10 -2
  86. package/dist/lib/lib/drive/memory-adapt.d.ts.map +1 -1
  87. package/dist/lib/lib/drive/memory-adapt.js +117 -26
  88. package/dist/lib/lib/drive/safe-storage.d.ts +24 -0
  89. package/dist/lib/lib/drive/safe-storage.d.ts.map +1 -0
  90. package/dist/lib/lib/drive/safe-storage.js +102 -0
  91. package/dist/lib/lib/drive/storage-interface.d.ts +20 -0
  92. package/dist/lib/lib/drive/storage-interface.d.ts.map +1 -1
  93. package/dist/lib/lib/error-trigger.d.ts +73 -0
  94. package/dist/lib/lib/error-trigger.d.ts.map +1 -0
  95. package/dist/lib/lib/error-trigger.js +167 -0
  96. package/dist/lib/lib/error.d.ts +9 -0
  97. package/dist/lib/lib/error.d.ts.map +1 -1
  98. package/dist/lib/lib/error.js +73 -118
  99. package/dist/lib/lib/init.d.ts +0 -4
  100. package/dist/lib/lib/init.d.ts.map +1 -1
  101. package/dist/lib/lib/init.js +144 -43
  102. package/dist/lib/lib/logger.d.ts +27 -0
  103. package/dist/lib/lib/logger.d.ts.map +1 -0
  104. package/dist/lib/lib/logger.js +84 -0
  105. package/dist/lib/lib/net.d.ts +11 -0
  106. package/dist/lib/lib/net.d.ts.map +1 -1
  107. package/dist/lib/lib/net.js +268 -120
  108. package/dist/lib/lib/request.d.ts.map +1 -1
  109. package/dist/lib/lib/request.js +3 -3
  110. package/dist/lib/lib/router-monitor.d.ts.map +1 -1
  111. package/dist/lib/lib/router-monitor.js +136 -49
  112. package/dist/lib/lib/rrweb.d.ts.map +1 -1
  113. package/dist/lib/lib/rrweb.js +41 -31
  114. package/dist/lib/lib/sign.d.ts +36 -0
  115. package/dist/lib/lib/sign.d.ts.map +1 -0
  116. package/dist/lib/lib/sign.js +398 -0
  117. package/dist/lib/lib/storage-manager.d.ts +12 -0
  118. package/dist/lib/lib/storage-manager.d.ts.map +1 -1
  119. package/dist/lib/lib/storage-manager.js +130 -46
  120. package/dist/lib/lib/upload-worker-manager.d.ts +47 -0
  121. package/dist/lib/lib/upload-worker-manager.d.ts.map +1 -0
  122. package/dist/lib/lib/upload-worker-manager.js +581 -0
  123. package/dist/lib/lib/upload-worker.d.ts +58 -0
  124. package/dist/lib/lib/upload-worker.d.ts.map +1 -0
  125. package/dist/lib/lib/upload-worker.js +33 -0
  126. package/dist/lib/lib/uploader.d.ts +43 -0
  127. package/dist/lib/lib/uploader.d.ts.map +1 -1
  128. package/dist/lib/lib/uploader.js +468 -101
  129. package/dist/lib/lib/utils.d.ts +80 -0
  130. package/dist/lib/lib/utils.d.ts.map +1 -1
  131. package/dist/lib/lib/utils.js +284 -6
  132. package/dist/rlog-sdk.min.js +1 -1
  133. package/package.json +5 -4
package/dist/lib/index.js CHANGED
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- 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); }
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
@@ -25,6 +24,12 @@ Object.defineProperty(exports, "getCurrentRouteInfo", {
25
24
  return _routerMonitor.getCurrentRouteInfo;
26
25
  }
27
26
  });
27
+ Object.defineProperty(exports, "getCustomHeaders", {
28
+ enumerable: true,
29
+ get: function get() {
30
+ return _net.getCustomHeaders;
31
+ }
32
+ });
28
33
  Object.defineProperty(exports, "getSdkLogEndpoint", {
29
34
  enumerable: true,
30
35
  get: function get() {
@@ -45,6 +50,7 @@ Object.defineProperty(exports, "manualRouteChange", {
45
50
  return _routerMonitor.manualRouteChange;
46
51
  }
47
52
  });
53
+ exports.reportError = reportError;
48
54
  Object.defineProperty(exports, "setBlackListUrls", {
49
55
  enumerable: true,
50
56
  get: function get() {
@@ -64,12 +70,19 @@ Object.defineProperty(exports, "setWhiteListUrls", {
64
70
  return _net.setWhiteListUrls;
65
71
  }
66
72
  });
73
+ Object.defineProperty(exports, "shouldRecordUrl", {
74
+ enumerable: true,
75
+ get: function get() {
76
+ return _net.shouldRecordUrl;
77
+ }
78
+ });
67
79
  Object.defineProperty(exports, "stopRouterMonitor", {
68
80
  enumerable: true,
69
81
  get: function get() {
70
82
  return _routerMonitor.stopRouterMonitor;
71
83
  }
72
84
  });
85
+ exports.takeFullSnapshot = takeFullSnapshot;
73
86
  exports.toggleConsumeOnlyMode = toggleConsumeOnlyMode;
74
87
  Object.defineProperty(exports, "updateRouterConfig", {
75
88
  enumerable: true,
@@ -86,95 +99,112 @@ var _uploader = require("./lib/uploader");
86
99
  var _routerMonitor = require("./lib/router-monitor");
87
100
  var _config = require("./lib/config");
88
101
  var _error = require("./lib/error");
102
+ var _logger = _interopRequireDefault(require("./lib/logger"));
103
+ var _constants = require("./lib/constants");
104
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
89
105
  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; }
90
106
  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); } }
91
107
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
108
+ 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); }
92
109
  function init(param) {
93
- // 初始化 RLog SDK
94
- (0, _init.initRLog)(param.serv, param.appId, param.cdnConfigUrl);
110
+ try {
111
+ (0, _init.initRLog)(param.serv, param.appId, param.cdnConfigUrl);
112
+ } catch (error) {
113
+ _logger.default.error('Failed to initialize SDK:', error);
114
+ }
95
115
  return {
96
116
  cancel: function cancel() {
97
117
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
98
- (0, _init.cancelRlog)(options, 'SDK instance');
118
+ try {
119
+ (0, _init.cancelRlog)(options, 'SDK instance');
120
+ } catch (error) {
121
+ _logger.default.error('Failed to cancel SDK:', error);
122
+ }
99
123
  }
100
124
  };
101
125
  }
102
-
103
- // 单独导出 cancelRecord 方法
104
126
  function cancelRecord() {
105
127
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
106
- console.warn('Please use rlog.cancel() from initialized instance instead of standalone cancelRecord()');
107
- (0, _init.cancelRlog)(options, 'standalone function');
128
+ try {
129
+ _logger.default.warn('Please use rlog.cancel() from initialized instance instead of standalone cancelRecord()');
130
+ (0, _init.cancelRlog)(options, 'standalone function');
131
+ } catch (error) {
132
+ _logger.default.error('Failed to cancel record:', error);
133
+ }
108
134
  }
109
135
  function addCustomEvent(tagName, payload) {
110
- _rrweb.record.addCustomEvent(tagName, payload);
136
+ try {
137
+ _rrweb.record.addCustomEvent(tagName, payload);
138
+ } catch (error) {
139
+ _logger.default.warn('Failed to add custom event:', error);
140
+ }
141
+ }
142
+ function takeFullSnapshot(isCheckout) {
143
+ try {
144
+ _rrweb.record.takeFullSnapshot(isCheckout);
145
+ } catch (error) {
146
+ _logger.default.warn('Failed to take full snapshot:', error);
147
+ }
111
148
  }
112
-
113
- /**
114
- * 设置只采集不上报模式
115
- * @param enable 是否启用只采集不上报模式
116
- */
117
149
  function setConsumeOnlyMode(enable) {
118
150
  (0, _config.updateConfig)({
119
151
  consumeOnly: enable
120
152
  });
121
- console.log("RLog consume only mode ".concat(enable ? 'enabled' : 'disabled'));
122
153
  }
123
-
124
- /**
125
- * 获取当前是否处于只采集不上报模式
126
- * @returns 是否启用只采集不上报模式
127
- */
128
154
  function isConsumeOnlyMode() {
129
- return sessionStorage.getItem('RLOG_CONSUME_ONLY') === 'YES' || !!(0, _config.getConfig)().consumeOnly;
155
+ return sessionStorage.getItem(_constants.STORAGE_KEY_CONSUME_ONLY) === _constants.STORAGE_VALUE_CONSUME_ONLY || !!(0, _config.getConfig)().consumeOnly;
130
156
  }
131
-
132
- /**
133
- * 切换只采集不上报模式
134
- */
135
157
  function toggleConsumeOnlyMode() {
136
158
  var newMode = !(0, _config.getConfig)().consumeOnly;
137
159
  setConsumeOnlyMode(newMode);
138
160
  return newMode;
139
161
  }
140
-
141
- // 路由监控相关API
142
-
143
- // 网络监控相关函数
144
-
145
- // 错误处理相关函数
146
-
147
- // 调试和测试相关API
162
+ function reportError(error) {
163
+ var message = typeof error === 'string' ? error : error.message;
164
+ var stack = _typeof(error) === 'object' && error.stack ? error.stack : undefined;
165
+ try {
166
+ _rrweb.record.addCustomEvent(_constants.EVENT_CUSTOM_ERROR, {
167
+ type: 'CUSTOM_ERROR',
168
+ message: message,
169
+ stack: stack,
170
+ timestamp: Date.now(),
171
+ location: typeof window !== 'undefined' ? window.location.href : ''
172
+ });
173
+ } catch (e) {
174
+ _logger.default.warn('Failed to add custom error event:', e);
175
+ }
176
+ try {
177
+ var trigger = (0, _error.getErrorTrigger)();
178
+ if (trigger) {
179
+ trigger.onError({
180
+ type: 'custom',
181
+ message: message,
182
+ timestamp: Date.now(),
183
+ detail: {
184
+ stack: stack
185
+ }
186
+ });
187
+ }
188
+ } catch (e) {
189
+ _logger.default.warn('Failed to trigger error mode:', e);
190
+ }
191
+ }
148
192
  var debug = exports.debug = {
149
- /**
150
- * 获取存储适配器类型
151
- */
152
193
  getStorageAdapterType: function getStorageAdapterType() {
153
194
  return _storageManager.storage.getAdapterType();
154
195
  },
155
- // get storage() {
156
- // return storage;
157
- // },
158
-
159
- /**
160
- * 获取设备ID
161
- */
162
196
  getDeviceId: _utils.getDeviceId,
163
- /**
164
- * 重置上传状态
165
- */
197
+ getSessionId: _utils.getSessionId,
198
+ getStorageKey: _utils.getStorageKey,
166
199
  resetUploadState: _uploader.forceResetUploadState,
167
- /**
168
- * 获取存储状态
169
- */
170
200
  getStorageState: function getStorageState() {
171
201
  return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
172
- var deviceId;
202
+ var storageKey;
173
203
  return _regeneratorRuntime().wrap(function _callee$(_context) {
174
204
  while (1) switch (_context.prev = _context.next) {
175
205
  case 0:
176
- deviceId = (0, _utils.getDeviceId)();
177
- return _context.abrupt("return", _storageManager.storage.getStorageState(deviceId));
206
+ storageKey = (0, _utils.getStorageKey)();
207
+ return _context.abrupt("return", _storageManager.storage.getStorageState(storageKey));
178
208
  case 2:
179
209
  case "end":
180
210
  return _context.stop();
@@ -182,17 +212,14 @@ var debug = exports.debug = {
182
212
  }, _callee);
183
213
  }))();
184
214
  },
185
- /**
186
- * 清空存储数据
187
- */
188
215
  clearStorage: function clearStorage() {
189
216
  return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
190
- var deviceId;
217
+ var storageKey;
191
218
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
192
219
  while (1) switch (_context2.prev = _context2.next) {
193
220
  case 0:
194
- deviceId = (0, _utils.getDeviceId)();
195
- return _context2.abrupt("return", _storageManager.storage.clear(deviceId));
221
+ storageKey = (0, _utils.getStorageKey)();
222
+ return _context2.abrupt("return", _storageManager.storage.clear(storageKey));
196
223
  case 2:
197
224
  case "end":
198
225
  return _context2.stop();
@@ -200,8 +227,7 @@ var debug = exports.debug = {
200
227
  }, _callee2);
201
228
  }))();
202
229
  },
203
- /**
204
- * 检查URL是否应该被记录(白名单且不在黑名单中)
205
- */
206
- shouldRecordUrl: _net.shouldRecordUrl
207
- };
230
+ getConfig: _config.getConfig
231
+ };
232
+
233
+ // 统一导出所有公共 API
@@ -4,6 +4,16 @@ type UploadOptions = {
4
4
  deviceId: string;
5
5
  appId: string;
6
6
  };
7
+ /**
8
+ * 构建上传查询参数(纯函数,供 Worker 管理器复用)
9
+ * @param opts 包含 appId、deviceId、data 的选项
10
+ * @returns 查询参数键值对
11
+ */
12
+ export declare function buildQueryParams(opts: {
13
+ appId: string;
14
+ deviceId: string;
15
+ data: any[];
16
+ }): Record<string, string>;
7
17
  export declare const upload: (opt: UploadOptions) => Promise<void>;
8
18
  export {};
9
19
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/lib/api.ts"],"names":[],"mappings":"AAIA,KAAK,aAAa,GAAG;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAqBF,eAAO,MAAM,MAAM,QAAe,aAAa,kBAoD9C,CAAC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/lib/api.ts"],"names":[],"mappings":"AAUA,KAAK,aAAa,GAAG;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAqBF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,GAAG,EAAE,CAAC;CACb,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAyBzB;AAED,eAAO,MAAM,MAAM,QAAe,aAAa,kBA2C9C,CAAC"}
@@ -3,64 +3,99 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.buildQueryParams = buildQueryParams;
6
7
  exports.upload = void 0;
7
8
  var _utils = require("./utils");
8
9
  var _request = require("./request");
9
10
  var _config = require("./config");
11
+ var _net = require("./net");
12
+ var _sign = require("./sign");
13
+ var _constants = require("./constants");
10
14
  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; }
11
15
  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); }
16
+ 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; }
17
+ function _objectSpread(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; }
18
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
20
+ 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); }
12
21
  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); } }
13
22
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
14
23
  // 从URL中提取指定参数并存储到sessionStorage中
15
24
  var cacheUrlParams = function cacheUrlParams() {
16
25
  var config = (0, _config.getConfig)();
17
- var paramsToCache = config.urlParamsToCache || ['taskId']; // 默认缓存taskId
26
+ var paramsToCache = config.urlParamsToCache || _constants.DEFAULT_URL_PARAMS_TO_CACHE;
18
27
  var urlParams = new URLSearchParams(window.location.search);
19
28
  paramsToCache.forEach(function (paramName) {
20
29
  var paramValue = urlParams.get(paramName);
21
30
  if (paramValue) {
22
- sessionStorage.setItem("rlog-".concat(paramName), paramValue);
31
+ sessionStorage.setItem("".concat(_constants.STORAGE_KEY_URL_PARAM_PREFIX).concat(paramName), paramValue);
23
32
  }
24
33
  });
25
34
  };
26
35
 
27
36
  // 获取缓存的参数值
28
37
  var getCachedParam = function getCachedParam(paramName) {
29
- return sessionStorage.getItem("rlog-".concat(paramName));
38
+ return sessionStorage.getItem("".concat(_constants.STORAGE_KEY_URL_PARAM_PREFIX).concat(paramName));
30
39
  };
40
+
41
+ /**
42
+ * 构建上传查询参数(纯函数,供 Worker 管理器复用)
43
+ * @param opts 包含 appId、deviceId、data 的选项
44
+ * @returns 查询参数键值对
45
+ */
46
+ function buildQueryParams(opts) {
47
+ var _opts$data, _opts$data2;
48
+ // 缓存URL中的参数
49
+ cacheUrlParams();
50
+ var lastIndex = opts.data && opts.data.length > 0 ? opts.data.length - 1 : -1;
51
+ var queryParams = {
52
+ deviceId: opts.deviceId,
53
+ appId: opts.appId,
54
+ startTime: (_opts$data = opts.data) === null || _opts$data === void 0 || (_opts$data = _opts$data[0]) === null || _opts$data === void 0 ? void 0 : _opts$data.timestamp,
55
+ endTime: (_opts$data2 = opts.data) === null || _opts$data2 === void 0 || (_opts$data2 = _opts$data2[lastIndex]) === null || _opts$data2 === void 0 ? void 0 : _opts$data2.timestamp
56
+ };
57
+
58
+ // 从配置中获取需要上报的参数名称列表
59
+ var config = (0, _config.getConfig)();
60
+ var paramsToReport = config.urlParamsToCache || _constants.DEFAULT_URL_PARAMS_TO_CACHE;
61
+
62
+ // 添加缓存的参数到查询字符串中
63
+ paramsToReport.forEach(function (paramName) {
64
+ var paramValue = getCachedParam(paramName);
65
+ if (paramValue) {
66
+ queryParams[paramName] = paramValue;
67
+ }
68
+ });
69
+ return queryParams;
70
+ }
31
71
  var upload = exports.upload = /*#__PURE__*/function () {
32
72
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(opt) {
33
- var _opt$data, _opt$data2;
34
- var lastIndex, queryParams, config, paramsToReport, queryString, api, formData, response, responseData, error;
73
+ var queryParams, queryString, api, jsonData, signHeaders, formData, customHeaders, response, responseData, error;
35
74
  return _regeneratorRuntime().wrap(function _callee$(_context) {
36
75
  while (1) switch (_context.prev = _context.next) {
37
76
  case 0:
38
- // 缓存URL中的参数
39
- cacheUrlParams();
40
-
41
- // 构建查询字符串
42
- lastIndex = opt.data && opt.data.length > 0 ? opt.data.length - 1 : -1;
43
- queryParams = {
44
- deviceId: opt.deviceId,
77
+ // 构建查询参数
78
+ queryParams = buildQueryParams({
45
79
  appId: opt.appId,
46
- startTime: (_opt$data = opt.data) === null || _opt$data === void 0 || (_opt$data = _opt$data[0]) === null || _opt$data === void 0 ? void 0 : _opt$data.timestamp,
47
- endTime: (_opt$data2 = opt.data) === null || _opt$data2 === void 0 || (_opt$data2 = _opt$data2[lastIndex]) === null || _opt$data2 === void 0 ? void 0 : _opt$data2.timestamp
48
- }; // 从配置中获取需要上报的参数名称列表
49
- config = (0, _config.getConfig)();
50
- paramsToReport = config.urlParamsToCache || ['taskId']; // 默认上报taskId
51
- // 添加缓存的参数到查询字符串中
52
- paramsToReport.forEach(function (paramName) {
53
- var paramValue = getCachedParam(paramName);
54
- if (paramValue) {
55
- queryParams[paramName] = paramValue;
56
- }
80
+ deviceId: opt.deviceId,
81
+ data: opt.data
57
82
  });
58
83
  queryString = new URLSearchParams(queryParams);
59
- api = "".concat(opt.url).concat(queryString ? "?".concat(queryString) : '');
84
+ api = "".concat(opt.url).concat(queryString ? "?".concat(queryString) : ''); // 序列化事件数据并计算签名请求头
85
+ jsonData = JSON.stringify(opt.data);
86
+ _context.next = 6;
87
+ return (0, _sign.computeSignHeaders)(queryParams, jsonData);
88
+ case 6:
89
+ signHeaders = _context.sent;
60
90
  formData = new FormData();
61
- formData.append('file', new Blob([JSON.stringify(opt.data)]), (0, _utils.generateUUIDCompat)() + '.json');
91
+ formData.append('file', new Blob([jsonData]), (0, _utils.generateUUIDCompat)() + '.json');
92
+
93
+ // 获取自定义请求头并合并签名头
94
+ customHeaders = (0, _net.getCustomHeaders)();
62
95
  _context.next = 12;
63
- return (0, _request.post)(api, formData);
96
+ return (0, _request.post)(api, formData, {
97
+ headers: _objectSpread(_objectSpread({}, customHeaders), signHeaders)
98
+ });
64
99
  case 12:
65
100
  response = _context.sent;
66
101
  _context.prev = 13;
@@ -8,14 +8,19 @@ export interface ConsoleRecordConfig {
8
8
  depthOfLimit?: number;
9
9
  };
10
10
  }
11
+ export interface ErrorCaptureConfig {
12
+ beforeDuration?: number;
13
+ afterDuration?: number;
14
+ httpErrorThreshold?: number;
15
+ }
11
16
  export interface CdnConfig {
12
17
  enable: boolean;
13
18
  checkoutEveryNms?: number;
14
19
  ignoreClass?: string;
15
20
  blockClass?: string;
16
21
  maskTextClass?: string;
17
- samplingRate: number;
18
22
  sampling?: {
23
+ canvas?: number;
19
24
  mousemove?: number | boolean;
20
25
  scroll?: number;
21
26
  input?: 'all' | 'last';
@@ -28,19 +33,17 @@ export interface CdnConfig {
28
33
  clearStorageBeforeRecord?: boolean;
29
34
  console?: ConsoleRecordConfig;
30
35
  http?: boolean;
31
- error?: boolean;
32
36
  routerMonitor?: {
33
37
  enable?: boolean;
34
38
  trackHashChange?: boolean;
35
39
  trackHistoryChange?: boolean;
36
40
  trackPageStayTime?: boolean;
37
41
  ignoreRoutes?: string[];
38
- customMatchers?: Array<{
39
- pattern: string | RegExp;
40
- name?: string;
41
- }>;
42
42
  };
43
- packEvents?: boolean;
43
+ ignoreCSSAttributes?: string[];
44
+ error?: boolean;
45
+ captureMode?: 'full' | 'error';
46
+ errorCapture?: ErrorCaptureConfig;
44
47
  }
45
48
  /**
46
49
  * 从 CDN 获取配置
@@ -58,6 +61,10 @@ export declare function updateConfig(newConfig: Partial<CdnConfig>): void;
58
61
  * @returns 当前配置
59
62
  */
60
63
  export declare function getConfig(): CdnConfig;
64
+ /**
65
+ * 停止配置定时更新
66
+ */
67
+ export declare function stopConfigUpdate(): void;
61
68
  /**
62
69
  * 初始化配置管理器
63
70
  * @param cdnUrl CDN 配置文件地址
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,mBAAmB;IAElC,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,KAAK,CAAC,EAAE,CACJ,QAAQ,GACR,OAAO,GACP,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,QAAQ,GACR,OAAO,GACP,OAAO,GACP,gBAAgB,GAChB,UAAU,GACV,MAAM,GACN,KAAK,GACL,OAAO,GACP,MAAM,GACN,SAAS,GACT,SAAS,GACT,OAAO,GACP,MAAM,CACT,EAAE,CAAC;IAEJ,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,gBAAgB,CAAC,EAAE;QAEjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAE3B,cAAc,CAAC,EAAE,MAAM,CAAC;QAExB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAGD,MAAM,WAAW,SAAS;IAExB,MAAM,EAAE,OAAO,CAAC;IAEhB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,YAAY,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,EAAE;QAET,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAE7B,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;KACxB,CAAC;IAGF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,cAAc,EAAE,MAAM,CAAC;IAEvB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAG5B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAGnC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAG9B,IAAI,CAAC,EAAE,OAAO,CAAC;IAGf,KAAK,CAAC,EAAE,OAAO,CAAC;IAGhB,aAAa,CAAC,EAAE;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;QAEjB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QAExB,cAAc,CAAC,EAAE,KAAK,CAAC;YACrB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;YACzB,IAAI,CAAC,EAAE,MAAM,CAAC;SACf,CAAC,CAAC;KACJ,CAAC;IAGF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA0CD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAwC3E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAKhE;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,SAAS,CAErC;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBtE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,mBAAmB;IAElC,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,KAAK,CAAC,EAAE,CACJ,QAAQ,GACR,OAAO,GACP,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,QAAQ,GACR,OAAO,GACP,OAAO,GACP,gBAAgB,GAChB,UAAU,GACV,MAAM,GACN,KAAK,GACL,OAAO,GACP,MAAM,GACN,SAAS,GACT,SAAS,GACT,OAAO,GACP,MAAM,CACT,EAAE,CAAC;IAEJ,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,gBAAgB,CAAC,EAAE;QAEjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAE3B,cAAc,CAAC,EAAE,MAAM,CAAC;QAExB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAGD,MAAM,WAAW,kBAAkB;IAEjC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAGD,MAAM,WAAW,SAAS;IAExB,MAAM,EAAE,OAAO,CAAC;IAEhB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,EAAE;QAET,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAE7B,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;KACxB,CAAC;IAGF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,cAAc,EAAE,MAAM,CAAC;IAEvB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAG5B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAGnC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAG9B,IAAI,CAAC,EAAE,OAAO,CAAC;IAGf,aAAa,CAAC,EAAE;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;QAEjB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IAIF,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAG/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAGhB,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAG/B,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAkDD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAoC3E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAEhE;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,SAAS,CAErC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BtE"}