@antglobal/rlog-sdk 0.0.1755855517-dev.9 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +13 -6
  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 -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 +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 +13 -6
  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 -120
  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
@@ -11,6 +11,8 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
11
11
  import { IndexedDBAdapter } from "./drive/indexeddb-adapt";
12
12
  import { LocalStorageAdapter } from "./drive/localstorage-adapt";
13
13
  import { MemoryAdapter } from "./drive/memory-adapt";
14
+ import logger from "./logger";
15
+ import { STORAGE_TEST_KEY } from "./constants";
14
16
 
15
17
  /**
16
18
  * 存储管理器 - 支持并发安全的存储操作
@@ -26,33 +28,31 @@ var StorageManager = /*#__PURE__*/function () {
26
28
  key: "selectAdapter",
27
29
  value: function selectAdapter() {
28
30
  // 优先使用IndexedDB
29
- if (typeof window !== 'undefined' && window.indexedDB) {
30
- try {
31
- // 测试IndexedDB是否可用
32
- var test = indexedDB.open('__rlog_test__', 1);
33
- test.onerror = function () {
34
- throw new Error('IndexedDB blocked');
35
- };
36
- test.onsuccess = function () {
37
- test.result.close();
38
- // 清理测试数据库
39
- indexedDB.deleteDatabase('__rlog_test__');
40
- };
41
- return new IndexedDBAdapter();
42
- } catch (e) {
43
- console.warn('IndexedDB不可用,降级使用LocalStorage');
44
- }
45
- }
31
+ // if (typeof window !== 'undefined' && window.indexedDB) {
32
+ // try {
33
+ // // 测试IndexedDB是否可用
34
+ // const test = indexedDB.open('__rlog_test__', 1);
35
+ // test.onerror = () => { throw new Error('IndexedDB blocked'); };
36
+ // test.onsuccess = () => {
37
+ // test.result.close();
38
+ // // 清理测试数据库
39
+ // indexedDB.deleteDatabase('__rlog_test__');
40
+ // };
41
+ // return new IndexedDBAdapter();
42
+ // } catch (e) {
43
+ // logger.warn('IndexedDB不可用,降级使用LocalStorage');
44
+ // }
45
+ // }
46
46
 
47
47
  // 其次使用LocalStorage
48
48
  if (typeof window !== 'undefined' && window.localStorage) {
49
49
  try {
50
- var testKey = '__rlog_storage_test__';
50
+ var testKey = STORAGE_TEST_KEY;
51
51
  window.localStorage.setItem(testKey, 'test');
52
52
  window.localStorage.removeItem(testKey);
53
53
  return new LocalStorageAdapter();
54
54
  } catch (e) {
55
- console.warn('LocalStorage不可用,降级使用内存缓存');
55
+ logger.warn('LocalStorage不可用,降级使用内存缓存');
56
56
  }
57
57
  }
58
58
 
@@ -77,7 +77,7 @@ var StorageManager = /*#__PURE__*/function () {
77
77
  newOperation = previousOperation.then(function () {
78
78
  return operation();
79
79
  }).catch(function (error) {
80
- console.error('Storage operation failed:', error);
80
+ logger.error('Storage operation failed:', error);
81
81
  throw error;
82
82
  }).finally(function () {
83
83
  // 清理已完成的操作
@@ -198,7 +198,7 @@ var StorageManager = /*#__PURE__*/function () {
198
198
  if (_this6.adapter.clear) {
199
199
  return _this6.adapter.clear(deviceId);
200
200
  }
201
- console.warn('Storage adapter does not support clear operation');
201
+ logger.warn('Storage adapter does not support clear operation');
202
202
  return Promise.resolve();
203
203
  }));
204
204
  case 1:
@@ -212,9 +212,69 @@ var StorageManager = /*#__PURE__*/function () {
212
212
  }
213
213
  return clear;
214
214
  }()
215
+ /**
216
+ * 按时间范围提取事件(用于 error 模式)
217
+ */
218
+ }, {
219
+ key: "pullByTimeRange",
220
+ value: (function () {
221
+ var _pullByTimeRange = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(deviceId, startTime, endTime) {
222
+ var _this7 = this;
223
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
224
+ while (1) switch (_context7.prev = _context7.next) {
225
+ case 0:
226
+ return _context7.abrupt("return", this.serialize(deviceId, function () {
227
+ if (_this7.adapter.pullByTimeRange) {
228
+ return _this7.adapter.pullByTimeRange(deviceId, startTime, endTime);
229
+ }
230
+ logger.warn('Storage adapter does not support pullByTimeRange operation');
231
+ return Promise.resolve([]);
232
+ }));
233
+ case 1:
234
+ case "end":
235
+ return _context7.stop();
236
+ }
237
+ }, _callee7, this);
238
+ }));
239
+ function pullByTimeRange(_x12, _x13, _x14) {
240
+ return _pullByTimeRange.apply(this, arguments);
241
+ }
242
+ return pullByTimeRange;
243
+ }()
244
+ /**
245
+ * 按时间范围移除事件(用于 error 模式)
246
+ */
247
+ )
248
+ }, {
249
+ key: "removeByTimeRange",
250
+ value: (function () {
251
+ var _removeByTimeRange = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(deviceId, sinceTime) {
252
+ var _this8 = this;
253
+ return _regeneratorRuntime().wrap(function _callee8$(_context8) {
254
+ while (1) switch (_context8.prev = _context8.next) {
255
+ case 0:
256
+ return _context8.abrupt("return", this.serialize(deviceId, function () {
257
+ if (_this8.adapter.removeByTimeRange) {
258
+ return _this8.adapter.removeByTimeRange(deviceId, sinceTime);
259
+ }
260
+ logger.warn('Storage adapter does not support removeByTimeRange operation');
261
+ return Promise.resolve();
262
+ }));
263
+ case 1:
264
+ case "end":
265
+ return _context8.stop();
266
+ }
267
+ }, _callee8, this);
268
+ }));
269
+ function removeByTimeRange(_x15, _x16) {
270
+ return _removeByTimeRange.apply(this, arguments);
271
+ }
272
+ return removeByTimeRange;
273
+ }()
215
274
  /**
216
275
  * 获取当前存储适配器类型
217
276
  */
277
+ )
218
278
  }, {
219
279
  key: "getAdapterType",
220
280
  value: function getAdapterType() {
@@ -228,48 +288,71 @@ var StorageManager = /*#__PURE__*/function () {
228
288
  return 'Unknown';
229
289
  }
230
290
 
291
+ /**
292
+ * 获取存储的事件数量(非破坏性只读操作)
293
+ */
294
+ }, {
295
+ key: "count",
296
+ value: (function () {
297
+ var _count = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(deviceId) {
298
+ var _this9 = this;
299
+ return _regeneratorRuntime().wrap(function _callee9$(_context9) {
300
+ while (1) switch (_context9.prev = _context9.next) {
301
+ case 0:
302
+ return _context9.abrupt("return", this.serialize(deviceId, function () {
303
+ if (_this9.adapter.count) {
304
+ return _this9.adapter.count(deviceId);
305
+ }
306
+ logger.warn('Storage adapter does not support count operation');
307
+ return Promise.resolve(0);
308
+ }));
309
+ case 1:
310
+ case "end":
311
+ return _context9.stop();
312
+ }
313
+ }, _callee9, this);
314
+ }));
315
+ function count(_x17) {
316
+ return _count.apply(this, arguments);
317
+ }
318
+ return count;
319
+ }()
231
320
  /**
232
321
  * 获取存储状态(调试用)
233
322
  */
323
+ )
234
324
  }, {
235
325
  key: "getStorageState",
236
326
  value: (function () {
237
- var _getStorageState = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(deviceId) {
238
- var adapterType, events;
239
- return _regeneratorRuntime().wrap(function _callee7$(_context7) {
240
- while (1) switch (_context7.prev = _context7.next) {
327
+ var _getStorageState = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(deviceId) {
328
+ var adapterType, eventCount;
329
+ return _regeneratorRuntime().wrap(function _callee10$(_context10) {
330
+ while (1) switch (_context10.prev = _context10.next) {
241
331
  case 0:
242
332
  adapterType = this.getAdapterType();
243
- _context7.prev = 1;
244
- _context7.next = 4;
245
- return this.pull(deviceId, 10000);
333
+ _context10.prev = 1;
334
+ _context10.next = 4;
335
+ return this.count(deviceId);
246
336
  case 4:
247
- events = _context7.sent;
248
- if (!(events.length > 0)) {
249
- _context7.next = 8;
250
- break;
251
- }
252
- _context7.next = 8;
253
- return this.unshiftBatch(deviceId, events);
254
- case 8:
255
- return _context7.abrupt("return", {
337
+ eventCount = _context10.sent;
338
+ return _context10.abrupt("return", {
256
339
  adapterType: adapterType,
257
- eventCount: events.length
340
+ eventCount: eventCount
258
341
  });
259
- case 11:
260
- _context7.prev = 11;
261
- _context7.t0 = _context7["catch"](1);
262
- return _context7.abrupt("return", {
342
+ case 8:
343
+ _context10.prev = 8;
344
+ _context10.t0 = _context10["catch"](1);
345
+ return _context10.abrupt("return", {
263
346
  adapterType: adapterType,
264
347
  eventCount: -1
265
348
  });
266
- case 14:
349
+ case 11:
267
350
  case "end":
268
- return _context7.stop();
351
+ return _context10.stop();
269
352
  }
270
- }, _callee7, this, [[1, 11]]);
353
+ }, _callee10, this, [[1, 8]]);
271
354
  }));
272
- function getStorageState(_x12) {
355
+ function getStorageState(_x18) {
273
356
  return _getStorageState.apply(this, arguments);
274
357
  }
275
358
  return getStorageState;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Upload Worker 管理器
3
+ *
4
+ * 职责:
5
+ * - Worker 生命周期管理(创建、销毁、降级)
6
+ * - 将 Worker 脚本以 inline Blob 方式加载
7
+ * - 封装 postMessage/onmessage 通信
8
+ * - 处理 Worker 回传的消息,调用对应的主线程逻辑
9
+ * - 提供与现有 uploader.ts 相同的对外 API
10
+ */
11
+ import type { WorkerConfig } from './upload-worker';
12
+ /**
13
+ * 设置 SDK 取消回调(由 init.ts 在启动上传循环前注入)
14
+ */
15
+ export declare function setWorkerCancelCallback(callback: (() => void) | null): void;
16
+ /**
17
+ * 设置 Worker 降级回调
18
+ * @param callback 降级回调函数
19
+ */
20
+ export declare function setWorkerFallbackCallback(callback: (() => void) | null): void;
21
+ /**
22
+ * 尝试初始化 Worker 模式
23
+ * @returns 是否成功启用 Worker 模式
24
+ */
25
+ export declare function initWorkerUpload(serv: string, appId: string): boolean;
26
+ /**
27
+ * 销毁 Worker
28
+ * @param triggerFallback 是否触发降级回调
29
+ */
30
+ export declare function destroyWorker(triggerFallback?: boolean): void;
31
+ /**
32
+ * 是否正在使用 Worker 模式
33
+ */
34
+ export declare function isUsingWorkerMode(): boolean;
35
+ /**
36
+ * 设置错误模式上传状态(Worker 模式)
37
+ */
38
+ export declare function setWorkerErrorModeUploading(uploading: boolean): void;
39
+ /**
40
+ * 设置错误模式上传时间窗口起点(Worker 模式)
41
+ */
42
+ export declare function setWorkerErrorModeWindowStart(startTime: number): void;
43
+ /**
44
+ * 更新 Worker 配置
45
+ */
46
+ export declare function updateWorkerConfig(config: Partial<WorkerConfig>): void;
47
+ //# sourceMappingURL=upload-worker-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-worker-manager.d.ts","sourceRoot":"","sources":["../../../src/lib/upload-worker-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAgC,MAAM,iBAAiB,CAAC;AA+ClF;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAE3E;AA6SD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAE7E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAwCrE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,eAAe,UAAQ,GAAG,IAAI,CA6B3D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAQpE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAErE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAKtE"}