@antglobal/rlog-sdk 0.0.1755855517-dev.11 → 0.0.1755855517-dev.13

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 (50) hide show
  1. package/dist/esm/lib/api.d.ts +10 -0
  2. package/dist/esm/lib/api.d.ts.map +1 -1
  3. package/dist/esm/lib/api.js +47 -31
  4. package/dist/esm/lib/config.d.ts +1 -0
  5. package/dist/esm/lib/config.d.ts.map +1 -1
  6. package/dist/esm/lib/config.js +2 -0
  7. package/dist/esm/lib/error.d.ts.map +1 -1
  8. package/dist/esm/lib/error.js +65 -138
  9. package/dist/esm/lib/init.d.ts.map +1 -1
  10. package/dist/esm/lib/init.js +14 -7
  11. package/dist/esm/lib/net.d.ts +1 -0
  12. package/dist/esm/lib/net.d.ts.map +1 -1
  13. package/dist/esm/lib/net.js +33 -2
  14. package/dist/esm/lib/router-monitor.d.ts.map +1 -1
  15. package/dist/esm/lib/router-monitor.js +100 -0
  16. package/dist/esm/lib/upload-worker-manager.d.ts +37 -0
  17. package/dist/esm/lib/upload-worker-manager.d.ts.map +1 -0
  18. package/dist/esm/lib/upload-worker-manager.js +482 -0
  19. package/dist/esm/lib/upload-worker.d.ts +59 -0
  20. package/dist/esm/lib/upload-worker.d.ts.map +1 -0
  21. package/dist/esm/lib/upload-worker.js +26 -0
  22. package/dist/esm/lib/uploader.d.ts +5 -0
  23. package/dist/esm/lib/uploader.d.ts.map +1 -1
  24. package/dist/esm/lib/uploader.js +58 -10
  25. package/dist/lib/lib/api.d.ts +10 -0
  26. package/dist/lib/lib/api.d.ts.map +1 -1
  27. package/dist/lib/lib/api.js +48 -31
  28. package/dist/lib/lib/config.d.ts +1 -0
  29. package/dist/lib/lib/config.d.ts.map +1 -1
  30. package/dist/lib/lib/config.js +2 -0
  31. package/dist/lib/lib/error.d.ts.map +1 -1
  32. package/dist/lib/lib/error.js +65 -138
  33. package/dist/lib/lib/init.d.ts.map +1 -1
  34. package/dist/lib/lib/init.js +13 -6
  35. package/dist/lib/lib/net.d.ts +1 -0
  36. package/dist/lib/lib/net.d.ts.map +1 -1
  37. package/dist/lib/lib/net.js +33 -1
  38. package/dist/lib/lib/router-monitor.d.ts.map +1 -1
  39. package/dist/lib/lib/router-monitor.js +100 -0
  40. package/dist/lib/lib/upload-worker-manager.d.ts +37 -0
  41. package/dist/lib/lib/upload-worker-manager.d.ts.map +1 -0
  42. package/dist/lib/lib/upload-worker-manager.js +491 -0
  43. package/dist/lib/lib/upload-worker.d.ts +59 -0
  44. package/dist/lib/lib/upload-worker.d.ts.map +1 -0
  45. package/dist/lib/lib/upload-worker.js +32 -0
  46. package/dist/lib/lib/uploader.d.ts +5 -0
  47. package/dist/lib/lib/uploader.d.ts.map +1 -1
  48. package/dist/lib/lib/uploader.js +58 -10
  49. package/dist/rlog-sdk.min.js +1 -1
  50. package/package.json +3 -2
@@ -16,11 +16,14 @@ var _utils = require("./utils");
16
16
  var _config = require("./config");
17
17
  var _rrweb = require("rrweb");
18
18
  var _init = require("./init");
19
+ var _uploadWorkerManager = require("./upload-worker-manager");
19
20
  var _logger = _interopRequireDefault(require("./logger"));
20
21
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
22
  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; }
22
23
  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); } }
23
24
  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); }); }; }
25
+ // ==================== 主线程降级模式状态 ====================
26
+
24
27
  // 全局取消标志
25
28
  var isUploadCancelled = false;
26
29
 
@@ -39,21 +42,33 @@ var errorModeWindowStart = 0;
39
42
  /**
40
43
  * 设置错误模式上传状态
41
44
  * 由 ErrorTrigger 调用:错误触发时设置为 true,cooldown 结束时设置为 false
45
+ * 自动分发到 Worker 模式或主线程模式
42
46
  */
43
47
  function setErrorModeUploading(uploading) {
44
- errorModeUploading = uploading;
48
+ if ((0, _uploadWorkerManager.isUsingWorkerMode)()) {
49
+ (0, _uploadWorkerManager.setWorkerErrorModeUploading)(uploading);
50
+ } else {
51
+ errorModeUploading = uploading;
52
+ }
45
53
  }
46
54
 
47
55
  /**
48
56
  * 设置错误模式上传时间窗口起点
49
57
  * 由 ErrorTrigger 调用,记录错误触发前的时间窗口起点
58
+ * 自动分发到 Worker 模式或主线程模式
50
59
  */
51
60
  function setErrorModeWindowStart(startTime) {
52
- errorModeWindowStart = startTime;
61
+ if ((0, _uploadWorkerManager.isUsingWorkerMode)()) {
62
+ (0, _uploadWorkerManager.setWorkerErrorModeWindowStart)(startTime);
63
+ } else {
64
+ errorModeWindowStart = startTime;
65
+ }
53
66
  }
54
67
 
68
+ // ==================== 主线程降级模式上传逻辑 ====================
69
+
55
70
  /**
56
- * 统一的上传函数
71
+ * 统一的上传函数(主线程降级模式)
57
72
  * @param serv 服务器地址
58
73
  * @param appId 应用ID
59
74
  * @param events 要上传的事件数组
@@ -63,7 +78,7 @@ function uploadEvents(_x, _x2, _x3) {
63
78
  return _uploadEvents.apply(this, arguments);
64
79
  }
65
80
  /**
66
- * 处理上传失败
81
+ * 处理上传失败(主线程降级模式)
67
82
  * @param events 失败的事件
68
83
  * @param error 错误信息
69
84
  * @param appId 应用ID
@@ -117,11 +132,7 @@ function handleUploadFailure(_x4, _x5, _x6, _x7, _x8, _x9) {
117
132
  return _handleUploadFailure.apply(this, arguments);
118
133
  }
119
134
  /**
120
- * 启动数据上传循环
121
- * 全量模式:持续轮询上传
122
- * 错误模式:idle 时跳过上传,uploading 时轮询上传(由 ErrorTrigger 控制状态)
123
- * @param serv 服务器地址
124
- * @param appId 应用ID
135
+ * 主线程降级模式的上传循环
125
136
  */
126
137
  function _handleUploadFailure() {
127
138
  _handleUploadFailure = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(events, error, appId, serv, maxRetryCount, currentCount) {
@@ -194,7 +205,7 @@ function _handleUploadFailure() {
194
205
  }));
195
206
  return _handleUploadFailure.apply(this, arguments);
196
207
  }
197
- function startUploadLoop(serv, appId) {
208
+ function startMainThreadUploadLoop(serv, appId) {
198
209
  var push = /*#__PURE__*/function () {
199
210
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
200
211
  var currentConfig, isErrorMode, events, windowStart, config, consumeOnly, result, batchKey, lastEvent, maxRetryCount, _batchKey, currentCount, shouldStop;
@@ -357,10 +368,41 @@ function startUploadLoop(serv, appId) {
357
368
  push();
358
369
  }
359
370
 
371
+ // ==================== 对外 API ====================
372
+
373
+ /**
374
+ * 启动数据上传循环
375
+ * 优先尝试 Worker 模式,失败则降级到主线程模式
376
+ *
377
+ * 全量模式:持续轮询上传
378
+ * 错误模式:idle 时跳过上传,uploading 时轮询上传(由 ErrorTrigger 控制状态)
379
+ * @param serv 服务器地址
380
+ * @param appId 应用ID
381
+ */
382
+ function startUploadLoop(serv, appId) {
383
+ // 优先尝试 Worker 模式
384
+ var workerInitialized = (0, _uploadWorkerManager.initWorkerUpload)(serv, appId);
385
+ if (workerInitialized) {
386
+ _logger.default.log('Upload loop started in Worker mode');
387
+ return;
388
+ }
389
+
390
+ // Worker 不可用,降级到主线程模式
391
+ _logger.default.log('Worker not available, falling back to main thread upload');
392
+ startMainThreadUploadLoop(serv, appId);
393
+ }
394
+
360
395
  /**
361
396
  * 取消上传循环
397
+ * 同时处理 Worker 模式和主线程模式
362
398
  */
363
399
  function cancelUploadLoop() {
400
+ // 销毁 Worker(如果存在)
401
+ if ((0, _uploadWorkerManager.isUsingWorkerMode)()) {
402
+ (0, _uploadWorkerManager.destroyWorker)();
403
+ }
404
+
405
+ // 重置主线程模式状态
364
406
  isUploadCancelled = true;
365
407
  isUploading = false;
366
408
  errorModeUploading = false;
@@ -371,6 +413,12 @@ function cancelUploadLoop() {
371
413
  * 重置上传循环状态(用于重新初始化)
372
414
  */
373
415
  function resetUploadLoop() {
416
+ // 销毁 Worker(如果存在)
417
+ if ((0, _uploadWorkerManager.isUsingWorkerMode)()) {
418
+ (0, _uploadWorkerManager.destroyWorker)();
419
+ }
420
+
421
+ // 重置主线程模式状态
374
422
  isUploadCancelled = false;
375
423
  isUploading = false;
376
424
  errorModeUploading = false;