@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.
- package/dist/esm/lib/api.d.ts +10 -0
- package/dist/esm/lib/api.d.ts.map +1 -1
- package/dist/esm/lib/api.js +47 -31
- package/dist/esm/lib/config.d.ts +1 -0
- package/dist/esm/lib/config.d.ts.map +1 -1
- package/dist/esm/lib/config.js +2 -0
- package/dist/esm/lib/error.d.ts.map +1 -1
- package/dist/esm/lib/error.js +65 -138
- package/dist/esm/lib/init.d.ts.map +1 -1
- package/dist/esm/lib/init.js +14 -7
- package/dist/esm/lib/net.d.ts +1 -0
- package/dist/esm/lib/net.d.ts.map +1 -1
- package/dist/esm/lib/net.js +33 -2
- package/dist/esm/lib/router-monitor.d.ts.map +1 -1
- package/dist/esm/lib/router-monitor.js +100 -0
- package/dist/esm/lib/upload-worker-manager.d.ts +37 -0
- package/dist/esm/lib/upload-worker-manager.d.ts.map +1 -0
- package/dist/esm/lib/upload-worker-manager.js +482 -0
- package/dist/esm/lib/upload-worker.d.ts +59 -0
- package/dist/esm/lib/upload-worker.d.ts.map +1 -0
- package/dist/esm/lib/upload-worker.js +26 -0
- package/dist/esm/lib/uploader.d.ts +5 -0
- package/dist/esm/lib/uploader.d.ts.map +1 -1
- package/dist/esm/lib/uploader.js +58 -10
- package/dist/lib/lib/api.d.ts +10 -0
- package/dist/lib/lib/api.d.ts.map +1 -1
- package/dist/lib/lib/api.js +48 -31
- package/dist/lib/lib/config.d.ts +1 -0
- package/dist/lib/lib/config.d.ts.map +1 -1
- package/dist/lib/lib/config.js +2 -0
- package/dist/lib/lib/error.d.ts.map +1 -1
- package/dist/lib/lib/error.js +65 -138
- package/dist/lib/lib/init.d.ts.map +1 -1
- package/dist/lib/lib/init.js +13 -6
- package/dist/lib/lib/net.d.ts +1 -0
- package/dist/lib/lib/net.d.ts.map +1 -1
- package/dist/lib/lib/net.js +33 -1
- package/dist/lib/lib/router-monitor.d.ts.map +1 -1
- package/dist/lib/lib/router-monitor.js +100 -0
- package/dist/lib/lib/upload-worker-manager.d.ts +37 -0
- package/dist/lib/lib/upload-worker-manager.d.ts.map +1 -0
- package/dist/lib/lib/upload-worker-manager.js +491 -0
- package/dist/lib/lib/upload-worker.d.ts +59 -0
- package/dist/lib/lib/upload-worker.d.ts.map +1 -0
- package/dist/lib/lib/upload-worker.js +32 -0
- package/dist/lib/lib/uploader.d.ts +5 -0
- package/dist/lib/lib/uploader.d.ts.map +1 -1
- package/dist/lib/lib/uploader.js +58 -10
- package/dist/rlog-sdk.min.js +1 -1
- package/package.json +3 -2
package/dist/lib/lib/uploader.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
|
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;
|