@antglobal/rlog-sdk 0.0.1755855517-dev.14 → 0.0.1755855517-dev.16

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 (88) hide show
  1. package/dist/esm/index.d.ts +2 -0
  2. package/dist/esm/index.d.ts.map +1 -1
  3. package/dist/esm/index.js +12 -9
  4. package/dist/esm/lib/api.d.ts.map +1 -1
  5. package/dist/esm/lib/api.js +5 -4
  6. package/dist/esm/lib/constants.d.ts +89 -0
  7. package/dist/esm/lib/constants.d.ts.map +1 -0
  8. package/dist/esm/lib/constants.js +145 -0
  9. package/dist/esm/lib/drive/indexeddb-adapt.d.ts.map +1 -1
  10. package/dist/esm/lib/drive/indexeddb-adapt.js +10 -10
  11. package/dist/esm/lib/drive/localstorage-adapt.d.ts.map +1 -1
  12. package/dist/esm/lib/drive/localstorage-adapt.js +14 -14
  13. package/dist/esm/lib/drive/memory-adapt.d.ts.map +1 -1
  14. package/dist/esm/lib/drive/memory-adapt.js +8 -6
  15. package/dist/esm/lib/drive/safe-storage.d.ts +24 -0
  16. package/dist/esm/lib/drive/safe-storage.d.ts.map +1 -0
  17. package/dist/esm/lib/drive/safe-storage.js +96 -0
  18. package/dist/esm/lib/error.d.ts.map +1 -1
  19. package/dist/esm/lib/error.js +2 -1
  20. package/dist/esm/lib/init.d.ts.map +1 -1
  21. package/dist/esm/lib/init.js +78 -52
  22. package/dist/esm/lib/logger.js +6 -5
  23. package/dist/esm/lib/net.d.ts.map +1 -1
  24. package/dist/esm/lib/net.js +8 -14
  25. package/dist/esm/lib/request.d.ts.map +1 -1
  26. package/dist/esm/lib/request.js +2 -2
  27. package/dist/esm/lib/router-monitor.d.ts.map +1 -1
  28. package/dist/esm/lib/router-monitor.js +7 -6
  29. package/dist/esm/lib/rrweb.d.ts.map +1 -1
  30. package/dist/esm/lib/rrweb.js +9 -9
  31. package/dist/esm/lib/storage-manager.d.ts.map +1 -1
  32. package/dist/esm/lib/storage-manager.js +18 -19
  33. package/dist/esm/lib/upload-worker-manager.d.ts.map +1 -1
  34. package/dist/esm/lib/upload-worker-manager.js +14 -17
  35. package/dist/esm/lib/upload-worker.d.ts +1 -1
  36. package/dist/esm/lib/upload-worker.d.ts.map +1 -1
  37. package/dist/esm/lib/upload-worker.js +3 -1
  38. package/dist/esm/lib/uploader.d.ts +22 -0
  39. package/dist/esm/lib/uploader.d.ts.map +1 -1
  40. package/dist/esm/lib/uploader.js +132 -13
  41. package/dist/esm/lib/utils.d.ts +64 -0
  42. package/dist/esm/lib/utils.d.ts.map +1 -1
  43. package/dist/esm/lib/utils.js +230 -5
  44. package/dist/lib/index.d.ts +2 -0
  45. package/dist/lib/index.d.ts.map +1 -1
  46. package/dist/lib/index.js +11 -8
  47. package/dist/lib/lib/api.d.ts.map +1 -1
  48. package/dist/lib/lib/api.js +5 -4
  49. package/dist/lib/lib/constants.d.ts +89 -0
  50. package/dist/lib/lib/constants.d.ts.map +1 -0
  51. package/dist/lib/lib/constants.js +151 -0
  52. package/dist/lib/lib/drive/indexeddb-adapt.d.ts.map +1 -1
  53. package/dist/lib/lib/drive/indexeddb-adapt.js +10 -9
  54. package/dist/lib/lib/drive/localstorage-adapt.d.ts.map +1 -1
  55. package/dist/lib/lib/drive/localstorage-adapt.js +14 -14
  56. package/dist/lib/lib/drive/memory-adapt.d.ts.map +1 -1
  57. package/dist/lib/lib/drive/memory-adapt.js +7 -6
  58. package/dist/lib/lib/drive/safe-storage.d.ts +24 -0
  59. package/dist/lib/lib/drive/safe-storage.d.ts.map +1 -0
  60. package/dist/lib/lib/drive/safe-storage.js +102 -0
  61. package/dist/lib/lib/error.d.ts.map +1 -1
  62. package/dist/lib/lib/error.js +2 -1
  63. package/dist/lib/lib/init.d.ts.map +1 -1
  64. package/dist/lib/lib/init.js +76 -50
  65. package/dist/lib/lib/logger.js +5 -5
  66. package/dist/lib/lib/net.d.ts.map +1 -1
  67. package/dist/lib/lib/net.js +12 -18
  68. package/dist/lib/lib/request.d.ts.map +1 -1
  69. package/dist/lib/lib/request.js +3 -3
  70. package/dist/lib/lib/router-monitor.d.ts.map +1 -1
  71. package/dist/lib/lib/router-monitor.js +7 -6
  72. package/dist/lib/lib/rrweb.d.ts.map +1 -1
  73. package/dist/lib/lib/rrweb.js +8 -8
  74. package/dist/lib/lib/storage-manager.d.ts.map +1 -1
  75. package/dist/lib/lib/storage-manager.js +18 -19
  76. package/dist/lib/lib/upload-worker-manager.d.ts.map +1 -1
  77. package/dist/lib/lib/upload-worker-manager.js +13 -16
  78. package/dist/lib/lib/upload-worker.d.ts +1 -1
  79. package/dist/lib/lib/upload-worker.d.ts.map +1 -1
  80. package/dist/lib/lib/upload-worker.js +2 -1
  81. package/dist/lib/lib/uploader.d.ts +22 -0
  82. package/dist/lib/lib/uploader.d.ts.map +1 -1
  83. package/dist/lib/lib/uploader.js +132 -12
  84. package/dist/lib/lib/utils.d.ts +64 -0
  85. package/dist/lib/lib/utils.d.ts.map +1 -1
  86. package/dist/lib/lib/utils.js +238 -6
  87. package/dist/rlog-sdk.min.js +1 -1
  88. package/package.json +1 -1
@@ -24,6 +24,8 @@ declare function reportError(error: Error | string): void;
24
24
  declare const debug: {
25
25
  getStorageAdapterType(): string;
26
26
  getDeviceId: () => string;
27
+ getSessionId: () => string;
28
+ getStorageKey: () => string;
27
29
  resetUploadState: typeof forceResetUploadState;
28
30
  getStorageState(): Promise<{
29
31
  adapterType: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EAChB,MAAM,WAAW,CAAC;AAInB,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAgB,SAAS,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAGnE,KAAK,MAAM,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,iBAAS,IAAI,CAAC,KAAK,EAAE,MAAM;uBAIL;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;EAI5C;AAED,iBAAS,YAAY,CAAC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,QAK1D;AAED,iBAAS,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAEpD;AAED,iBAAS,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAGjD;AAED,iBAAS,iBAAiB,IAAI,OAAO,CAKpC;AAED,iBAAS,qBAAqB,IAAI,OAAO,CAIxC;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAyBhD;AAED,QAAA,MAAM,KAAK;6BACgB,MAAM;;;;;;;;;;CAehC,CAAC;AAGF,OAAO,EAEL,IAAI,EACJ,YAAY,EAEZ,cAAc,EAEd,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EAErB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EAEjB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EAEjB,WAAW,EACX,mBAAmB,EAEnB,KAAK,GACN,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EAChB,MAAM,WAAW,CAAC;AAInB,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAgB,SAAS,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAQnE,KAAK,MAAM,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,iBAAS,IAAI,CAAC,KAAK,EAAE,MAAM;uBAIL;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;EAI5C;AAED,iBAAS,YAAY,CAAC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,QAK1D;AAED,iBAAS,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAEpD;AAED,iBAAS,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAGjD;AAED,iBAAS,iBAAiB,IAAI,OAAO,CAKpC;AAED,iBAAS,qBAAqB,IAAI,OAAO,CAIxC;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAyBhD;AAED,QAAA,MAAM,KAAK;6BACgB,MAAM;;;;;;;;;;;;CAiBhC,CAAC;AAGF,OAAO,EAEL,IAAI,EACJ,YAAY,EAEZ,cAAc,EAEd,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EAErB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EAEjB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EAEjB,WAAW,EACX,mBAAmB,EAEnB,KAAK,GACN,CAAC"}
package/dist/esm/index.js CHANGED
@@ -6,12 +6,13 @@ import { initRLog, cancelRlog } from "./lib/init";
6
6
  import { setCustomHeaders, getCustomHeaders, setWhiteListUrls, setBlackListUrls, getBlackListUrls, getSdkLogEndpoint, getWhiteListUrls, shouldRecordUrl } from "./lib/net";
7
7
  import { record } from 'rrweb';
8
8
  import { storage } from "./lib/storage-manager";
9
- import { getDeviceId } from "./lib/utils";
9
+ import { getDeviceId, getSessionId, getStorageKey } from "./lib/utils";
10
10
  import { forceResetUploadState } from "./lib/uploader";
11
11
  import { updateRouterConfig, getCurrentRouteInfo, manualRouteChange, stopRouterMonitor } from "./lib/router-monitor";
12
12
  import { updateConfig, getConfig } from "./lib/config";
13
13
  import { cleanupErrorHandler, getErrorTrigger } from "./lib/error";
14
14
  import logger from "./lib/logger";
15
+ import { STORAGE_KEY_CONSUME_ONLY, STORAGE_VALUE_CONSUME_ONLY, EVENT_CUSTOM_ERROR } from "./lib/constants";
15
16
  function init(param) {
16
17
  initRLog(param.serv, param.appId, param.cdnConfigUrl);
17
18
  return {
@@ -36,7 +37,7 @@ function setConsumeOnlyMode(enable) {
36
37
  logger.log("Consume only mode ".concat(enable ? 'enabled' : 'disabled'));
37
38
  }
38
39
  function isConsumeOnlyMode() {
39
- return sessionStorage.getItem('RLOG_CONSUME_ONLY') === 'YES' || !!getConfig().consumeOnly;
40
+ return sessionStorage.getItem(STORAGE_KEY_CONSUME_ONLY) === STORAGE_VALUE_CONSUME_ONLY || !!getConfig().consumeOnly;
40
41
  }
41
42
  function toggleConsumeOnlyMode() {
42
43
  var newMode = !getConfig().consumeOnly;
@@ -47,7 +48,7 @@ function reportError(error) {
47
48
  var message = typeof error === 'string' ? error : error.message;
48
49
  var stack = _typeof(error) === 'object' && error.stack ? error.stack : undefined;
49
50
  try {
50
- record.addCustomEvent('custom-error-event', {
51
+ record.addCustomEvent(EVENT_CUSTOM_ERROR, {
51
52
  type: 'CUSTOM_ERROR',
52
53
  message: message,
53
54
  stack: stack,
@@ -74,15 +75,17 @@ var debug = {
74
75
  return storage.getAdapterType();
75
76
  },
76
77
  getDeviceId: getDeviceId,
78
+ getSessionId: getSessionId,
79
+ getStorageKey: getStorageKey,
77
80
  resetUploadState: forceResetUploadState,
78
81
  getStorageState: function getStorageState() {
79
82
  return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
80
- var deviceId;
83
+ var storageKey;
81
84
  return _regeneratorRuntime().wrap(function _callee$(_context) {
82
85
  while (1) switch (_context.prev = _context.next) {
83
86
  case 0:
84
- deviceId = getDeviceId();
85
- return _context.abrupt("return", storage.getStorageState(deviceId));
87
+ storageKey = getStorageKey();
88
+ return _context.abrupt("return", storage.getStorageState(storageKey));
86
89
  case 2:
87
90
  case "end":
88
91
  return _context.stop();
@@ -92,12 +95,12 @@ var debug = {
92
95
  },
93
96
  clearStorage: function clearStorage() {
94
97
  return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
95
- var deviceId;
98
+ var storageKey;
96
99
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
97
100
  while (1) switch (_context2.prev = _context2.next) {
98
101
  case 0:
99
- deviceId = getDeviceId();
100
- return _context2.abrupt("return", storage.clear(deviceId));
102
+ storageKey = getStorageKey();
103
+ return _context2.abrupt("return", storage.clear(storageKey));
101
104
  case 2:
102
105
  case "end":
103
106
  return _context2.stop();
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/lib/api.ts"],"names":[],"mappings":"AAKA,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,kBAsC9C,CAAC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/lib/api.ts"],"names":[],"mappings":"AASA,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,kBAsC9C,CAAC"}
@@ -6,22 +6,23 @@ import { generateUUIDCompat } from "./utils";
6
6
  import { post } from "./request";
7
7
  import { getConfig } from "./config";
8
8
  import { getCustomHeaders } from "./net";
9
+ import { STORAGE_KEY_URL_PARAM_PREFIX, DEFAULT_URL_PARAMS_TO_CACHE } from "./constants";
9
10
  // 从URL中提取指定参数并存储到sessionStorage中
10
11
  var cacheUrlParams = function cacheUrlParams() {
11
12
  var config = getConfig();
12
- var paramsToCache = config.urlParamsToCache || ['taskId']; // 默认缓存taskId
13
+ var paramsToCache = config.urlParamsToCache || DEFAULT_URL_PARAMS_TO_CACHE;
13
14
  var urlParams = new URLSearchParams(window.location.search);
14
15
  paramsToCache.forEach(function (paramName) {
15
16
  var paramValue = urlParams.get(paramName);
16
17
  if (paramValue) {
17
- sessionStorage.setItem("rlog-".concat(paramName), paramValue);
18
+ sessionStorage.setItem("".concat(STORAGE_KEY_URL_PARAM_PREFIX).concat(paramName), paramValue);
18
19
  }
19
20
  });
20
21
  };
21
22
 
22
23
  // 获取缓存的参数值
23
24
  var getCachedParam = function getCachedParam(paramName) {
24
- return sessionStorage.getItem("rlog-".concat(paramName));
25
+ return sessionStorage.getItem("".concat(STORAGE_KEY_URL_PARAM_PREFIX).concat(paramName));
25
26
  };
26
27
 
27
28
  /**
@@ -43,7 +44,7 @@ export function buildQueryParams(opts) {
43
44
 
44
45
  // 从配置中获取需要上报的参数名称列表
45
46
  var config = getConfig();
46
- var paramsToReport = config.urlParamsToCache || ['taskId']; // 默认上报taskId
47
+ var paramsToReport = config.urlParamsToCache || DEFAULT_URL_PARAMS_TO_CACHE;
47
48
 
48
49
  // 添加缓存的参数到查询字符串中
49
50
  paramsToReport.forEach(function (paramName) {
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Rlog SDK 全局常量定义
3
+ *
4
+ * 集中管理项目中所有硬编码的常量值,便于统一维护和修改。
5
+ * 按功能领域分组,每个常量都附带用途说明。
6
+ */
7
+ /** 设备 ID 的 localStorage 存储键 */
8
+ export declare const STORAGE_KEY_DEVICE_ID = "rlog-deviceId";
9
+ /** 旧版设备标识 key(兼容迁移) */
10
+ export declare const STORAGE_KEY_UTOKEN = "utoken";
11
+ /** IWP 设备标识 key(兼容迁移) */
12
+ export declare const STORAGE_KEY_IWP_DEVICE_TAG = "IWP-iwp-deivceTag";
13
+ /** URL 参数缓存到 sessionStorage 的前缀 */
14
+ export declare const STORAGE_KEY_URL_PARAM_PREFIX = "rlog-";
15
+ /** Session 注册表的 localStorage 存储键 */
16
+ export declare const STORAGE_KEY_SESSION_REGISTRY = "rlog_sessions";
17
+ /** 录制数据存储键前缀 */
18
+ export declare const STORAGE_KEY_DATA_PREFIX = "rlog_data_";
19
+ /** 分布式锁存储键前缀 */
20
+ export declare const STORAGE_KEY_LOCK_PREFIX = "rlog_lock_";
21
+ /** 只采集不上报模式的 sessionStorage 标识键 */
22
+ export declare const STORAGE_KEY_CONSUME_ONLY = "RLOG_CONSUME_ONLY";
23
+ /** 只采集不上报模式的 sessionStorage 标识值 */
24
+ export declare const STORAGE_VALUE_CONSUME_ONLY = "YES";
25
+ /** localStorage 可用性测试键(StorageManager) */
26
+ export declare const STORAGE_TEST_KEY = "__rlog_storage_test__";
27
+ /** localStorage 可用性测试键(SafeStorage) */
28
+ export declare const SAFE_STORAGE_TEST_KEY = "__rlog_safe_storage_test__";
29
+ /** Session 过期时间:1 小时。超过此时间的 session 数据将在下次 SDK 初始化时被清理 */
30
+ export declare const SESSION_MAX_AGE: number;
31
+ /** 孤儿 session 数据的最大有效时间跨度:2 分钟。只有数据时间跨度在此范围内的才被视为"上传周期内的残留数据" */
32
+ export declare const ORPHAN_DATA_MAX_SPAN: number;
33
+ /** 孤儿 session 数据的最大年龄:5 分钟。只有 session 注册时间在此范围内的才被视为"近期的残留数据" */
34
+ export declare const ORPHAN_SESSION_MAX_AGE: number;
35
+ /** 分布式锁超时时间:5 秒 */
36
+ export declare const LOCK_TIMEOUT = 5000;
37
+ /** 分布式锁重试间隔:10 毫秒 */
38
+ export declare const LOCK_RETRY_DELAY = 10;
39
+ /** Worker 就绪超时时间:5 秒。超时后降级到主线程模式 */
40
+ export declare const WORKER_READY_TIMEOUT = 5000;
41
+ /** HTTP 请求默认超时时间:10 秒 */
42
+ export declare const REQUEST_TIMEOUT = 10000;
43
+ /** 上传锁冲突时的延迟重试间隔:100 毫秒 */
44
+ export declare const UPLOAD_RETRY_DELAY = 100;
45
+ /** 存储适配器最大事件存储量 */
46
+ export declare const MAX_STORAGE_EVENTS = 10000;
47
+ /** 分布式锁最大重试次数 */
48
+ export declare const LOCK_MAX_RETRIES = 50;
49
+ /** 全量模式每次拉取事件数量 */
50
+ export declare const PULL_BATCH_SIZE = 100;
51
+ /** 孤儿 session 数据拉取上限 */
52
+ export declare const ORPHAN_PULL_LIMIT = 10000;
53
+ /** 默认缓存的 URL 参数名称列表 */
54
+ export declare const DEFAULT_URL_PARAMS_TO_CACHE: string[];
55
+ /** 上传失败事件名称(CustomEvent + rrweb addCustomEvent) */
56
+ export declare const EVENT_UPLOAD_FAILURE = "rlog-upload-failure";
57
+ /** 自定义错误事件名称 */
58
+ export declare const EVENT_CUSTOM_ERROR = "custom-error-event";
59
+ /** HTTP 请求成功事件名称 */
60
+ export declare const EVENT_HTTP_SUCCESS = "http-success";
61
+ /** HTTP 请求失败事件名称 */
62
+ export declare const EVENT_HTTP_ERROR = "http-error";
63
+ /** 网络状态变化事件名称 */
64
+ export declare const EVENT_NETWORK_STATUS = "network-status";
65
+ /** 路由变化事件名称 */
66
+ export declare const EVENT_ROUTE_CHANGE = "route-change";
67
+ /** 页面生命周期事件名称 */
68
+ export declare const EVENT_PAGE_LIFECYCLE = "page-lifecycle";
69
+ /** 网络监控黑名单域名列表 */
70
+ export declare const BLACK_HOST_NAME: string[];
71
+ /** 网络监控黑名单路径列表 */
72
+ export declare const BLACK_PATH_NAME: string[];
73
+ /** 需要从响应中提取的 HTTP 头字段 */
74
+ export declare const HEADERS_TO_EXTRACT: string[];
75
+ /** 默认白名单 URL 列表(rrweb 录制时设置) */
76
+ export declare const DEFAULT_WHITE_LIST_URLS: string[];
77
+ /** 日志输出统一前缀 */
78
+ export declare const LOG_PREFIX = "[Rlog]";
79
+ /** IndexedDB 数据库名称 */
80
+ export declare const IDB_DB_NAME = "LogStorageDB";
81
+ /** IndexedDB 对象存储名称 */
82
+ export declare const IDB_STORE_NAME = "logs";
83
+ /** IndexedDB 数据库版本号 */
84
+ export declare const IDB_VERSION = 2;
85
+ /** 图片导出格式 */
86
+ export declare const CANVAS_EXPORT_TYPE = "image/webp";
87
+ /** 图片导出质量 */
88
+ export declare const CANVAS_EXPORT_QUALITY = 0.6;
89
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,+BAA+B;AAC/B,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AAErD,uBAAuB;AACvB,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,yBAAyB;AACzB,eAAO,MAAM,0BAA0B,sBAAsB,CAAC;AAE9D,mCAAmC;AACnC,eAAO,MAAM,4BAA4B,UAAU,CAAC;AAEpD,oCAAoC;AACpC,eAAO,MAAM,4BAA4B,kBAAkB,CAAC;AAE5D,gBAAgB;AAChB,eAAO,MAAM,uBAAuB,eAAe,CAAC;AAEpD,gBAAgB;AAChB,eAAO,MAAM,uBAAuB,eAAe,CAAC;AAEpD,mCAAmC;AACnC,eAAO,MAAM,wBAAwB,sBAAsB,CAAC;AAE5D,mCAAmC;AACnC,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAEhD,0CAA0C;AAC1C,eAAO,MAAM,gBAAgB,0BAA0B,CAAC;AAExD,uCAAuC;AACvC,eAAO,MAAM,qBAAqB,+BAA+B,CAAC;AAIlE,0DAA0D;AAC1D,eAAO,MAAM,eAAe,QAAqB,CAAC;AAElD,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,QAAgB,CAAC;AAElD,iEAAiE;AACjE,eAAO,MAAM,sBAAsB,QAAgB,CAAC;AAEpD,mBAAmB;AACnB,eAAO,MAAM,YAAY,OAAO,CAAC;AAEjC,qBAAqB;AACrB,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,oCAAoC;AACpC,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,yBAAyB;AACzB,eAAO,MAAM,eAAe,QAAQ,CAAC;AAErC,2BAA2B;AAC3B,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAItC,mBAAmB;AACnB,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AAExC,iBAAiB;AACjB,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,mBAAmB;AACnB,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,wBAAwB;AACxB,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AAEvC,uBAAuB;AACvB,eAAO,MAAM,2BAA2B,UAAa,CAAC;AAItD,mDAAmD;AACnD,eAAO,MAAM,oBAAoB,wBAAwB,CAAC;AAE1D,gBAAgB;AAChB,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAEvD,oBAAoB;AACpB,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD,oBAAoB;AACpB,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAE7C,iBAAiB;AACjB,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAErD,eAAe;AACf,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD,iBAAiB;AACjB,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAIrD,kBAAkB;AAClB,eAAO,MAAM,eAAe,UAQ3B,CAAC;AAEF,kBAAkB;AAClB,eAAO,MAAM,eAAe,UAgB3B,CAAC;AAEF,yBAAyB;AACzB,eAAO,MAAM,kBAAkB,UAAsC,CAAC;AAEtE,gCAAgC;AAChC,eAAO,MAAM,uBAAuB,UAEnC,CAAC;AAIF,eAAe;AACf,eAAO,MAAM,UAAU,WAAW,CAAC;AAInC,sBAAsB;AACtB,eAAO,MAAM,WAAW,iBAAiB,CAAC;AAE1C,uBAAuB;AACvB,eAAO,MAAM,cAAc,SAAS,CAAC;AAErC,uBAAuB;AACvB,eAAO,MAAM,WAAW,IAAI,CAAC;AAI7B,aAAa;AACb,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAE/C,aAAa;AACb,eAAO,MAAM,qBAAqB,MAAM,CAAC"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Rlog SDK 全局常量定义
3
+ *
4
+ * 集中管理项目中所有硬编码的常量值,便于统一维护和修改。
5
+ * 按功能领域分组,每个常量都附带用途说明。
6
+ */
7
+
8
+ // ==================== Storage Key 前缀与标识 ====================
9
+
10
+ /** 设备 ID 的 localStorage 存储键 */
11
+ export var STORAGE_KEY_DEVICE_ID = 'rlog-deviceId';
12
+
13
+ /** 旧版设备标识 key(兼容迁移) */
14
+ export var STORAGE_KEY_UTOKEN = 'utoken';
15
+
16
+ /** IWP 设备标识 key(兼容迁移) */
17
+ export var STORAGE_KEY_IWP_DEVICE_TAG = 'IWP-iwp-deivceTag';
18
+
19
+ /** URL 参数缓存到 sessionStorage 的前缀 */
20
+ export var STORAGE_KEY_URL_PARAM_PREFIX = 'rlog-';
21
+
22
+ /** Session 注册表的 localStorage 存储键 */
23
+ export var STORAGE_KEY_SESSION_REGISTRY = 'rlog_sessions';
24
+
25
+ /** 录制数据存储键前缀 */
26
+ export var STORAGE_KEY_DATA_PREFIX = 'rlog_data_';
27
+
28
+ /** 分布式锁存储键前缀 */
29
+ export var STORAGE_KEY_LOCK_PREFIX = 'rlog_lock_';
30
+
31
+ /** 只采集不上报模式的 sessionStorage 标识键 */
32
+ export var STORAGE_KEY_CONSUME_ONLY = 'RLOG_CONSUME_ONLY';
33
+
34
+ /** 只采集不上报模式的 sessionStorage 标识值 */
35
+ export var STORAGE_VALUE_CONSUME_ONLY = 'YES';
36
+
37
+ /** localStorage 可用性测试键(StorageManager) */
38
+ export var STORAGE_TEST_KEY = '__rlog_storage_test__';
39
+
40
+ /** localStorage 可用性测试键(SafeStorage) */
41
+ export var SAFE_STORAGE_TEST_KEY = '__rlog_safe_storage_test__';
42
+
43
+ // ==================== 时间相关常量(毫秒) ====================
44
+
45
+ /** Session 过期时间:1 小时。超过此时间的 session 数据将在下次 SDK 初始化时被清理 */
46
+ export var SESSION_MAX_AGE = 1 * 60 * 60 * 1000;
47
+
48
+ /** 孤儿 session 数据的最大有效时间跨度:2 分钟。只有数据时间跨度在此范围内的才被视为"上传周期内的残留数据" */
49
+ export var ORPHAN_DATA_MAX_SPAN = 2 * 60 * 1000;
50
+
51
+ /** 孤儿 session 数据的最大年龄:5 分钟。只有 session 注册时间在此范围内的才被视为"近期的残留数据" */
52
+ export var ORPHAN_SESSION_MAX_AGE = 5 * 60 * 1000;
53
+
54
+ /** 分布式锁超时时间:5 秒 */
55
+ export var LOCK_TIMEOUT = 5000;
56
+
57
+ /** 分布式锁重试间隔:10 毫秒 */
58
+ export var LOCK_RETRY_DELAY = 10;
59
+
60
+ /** Worker 就绪超时时间:5 秒。超时后降级到主线程模式 */
61
+ export var WORKER_READY_TIMEOUT = 5000;
62
+
63
+ /** HTTP 请求默认超时时间:10 秒 */
64
+ export var REQUEST_TIMEOUT = 10000;
65
+
66
+ /** 上传锁冲突时的延迟重试间隔:100 毫秒 */
67
+ export var UPLOAD_RETRY_DELAY = 100;
68
+
69
+ // ==================== 容量与限制 ====================
70
+
71
+ /** 存储适配器最大事件存储量 */
72
+ export var MAX_STORAGE_EVENTS = 10000;
73
+
74
+ /** 分布式锁最大重试次数 */
75
+ export var LOCK_MAX_RETRIES = 50;
76
+
77
+ /** 全量模式每次拉取事件数量 */
78
+ export var PULL_BATCH_SIZE = 100;
79
+
80
+ /** 孤儿 session 数据拉取上限 */
81
+ export var ORPHAN_PULL_LIMIT = 10000;
82
+
83
+ /** 默认缓存的 URL 参数名称列表 */
84
+ export var DEFAULT_URL_PARAMS_TO_CACHE = ['taskId'];
85
+
86
+ // ==================== 自定义事件名称 ====================
87
+
88
+ /** 上传失败事件名称(CustomEvent + rrweb addCustomEvent) */
89
+ export var EVENT_UPLOAD_FAILURE = 'rlog-upload-failure';
90
+
91
+ /** 自定义错误事件名称 */
92
+ export var EVENT_CUSTOM_ERROR = 'custom-error-event';
93
+
94
+ /** HTTP 请求成功事件名称 */
95
+ export var EVENT_HTTP_SUCCESS = 'http-success';
96
+
97
+ /** HTTP 请求失败事件名称 */
98
+ export var EVENT_HTTP_ERROR = 'http-error';
99
+
100
+ /** 网络状态变化事件名称 */
101
+ export var EVENT_NETWORK_STATUS = 'network-status';
102
+
103
+ /** 路由变化事件名称 */
104
+ export var EVENT_ROUTE_CHANGE = 'route-change';
105
+
106
+ /** 页面生命周期事件名称 */
107
+ export var EVENT_PAGE_LIFECYCLE = 'page-lifecycle';
108
+
109
+ // ==================== 网络监控常量 ====================
110
+
111
+ /** 网络监控黑名单域名列表 */
112
+ export var BLACK_HOST_NAME = ['arms', 'log', 'marmot-cloud.com', 'alipayobjects.com', 'renderpre.alipay.com', 'nemo-office.alipay.com', 'render.alipay.com'];
113
+
114
+ /** 网络监控黑名单路径列表 */
115
+ export var BLACK_PATH_NAME = ['r.png', 'dwcookieLogGet.do', 'track', 'spm', 'logstores', 'render', '.json', '.js', '.css', '.wasm', '.png', '.jpg', '.jpeg', '.weapp', '.data'];
116
+
117
+ /** 需要从响应中提取的 HTTP 头字段 */
118
+ export var HEADERS_TO_EXTRACT = ['sky_trace_id', 'antbank-traceid'];
119
+
120
+ /** 默认白名单 URL 列表(rrweb 录制时设置) */
121
+ export var DEFAULT_WHITE_LIST_URLS = ['http://alipay-rmsdeploy-image.cn-hangzhou.alipay.aliyun-inc.com'];
122
+
123
+ // ==================== 日志常量 ====================
124
+
125
+ /** 日志输出统一前缀 */
126
+ export var LOG_PREFIX = '[Rlog]';
127
+
128
+ // ==================== IndexedDB 常量 ====================
129
+
130
+ /** IndexedDB 数据库名称 */
131
+ export var IDB_DB_NAME = 'LogStorageDB';
132
+
133
+ /** IndexedDB 对象存储名称 */
134
+ export var IDB_STORE_NAME = 'logs';
135
+
136
+ /** IndexedDB 数据库版本号 */
137
+ export var IDB_VERSION = 2;
138
+
139
+ // ==================== rrweb 录制默认配置 ====================
140
+
141
+ /** 图片导出格式 */
142
+ export var CANVAS_EXPORT_TYPE = 'image/webp';
143
+
144
+ /** 图片导出质量 */
145
+ export var CANVAS_EXPORT_QUALITY = 0.6;
@@ -1 +1 @@
1
- {"version":3,"file":"indexeddb-adapt.d.ts","sourceRoot":"","sources":["../../../../src/lib/drive/indexeddb-adapt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAcrD,qBAAa,gBAAiB,YAAW,cAAc;IACrD,OAAO,CAAC,EAAE,CAA4B;IACtC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAA8B;;YAMnC,MAAM;YAqDN,QAAQ;YAUR,eAAe;IAwBvB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAgChD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCnD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC1D,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAsCtD,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5C;;OAEG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,EAAE,CAAC;IAwBjB;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAiC5E"}
1
+ {"version":3,"file":"indexeddb-adapt.d.ts","sourceRoot":"","sources":["../../../../src/lib/drive/indexeddb-adapt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAoBrD,qBAAa,gBAAiB,YAAW,cAAc;IACrD,OAAO,CAAC,EAAE,CAA4B;IACtC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAA8B;;YAMnC,MAAM;YAqDN,QAAQ;YAUR,eAAe;IAwBvB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAgChD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCnD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC1D,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAsCtD,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5C;;OAEG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,EAAE,CAAC;IAwBjB;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAiC5E"}
@@ -15,10 +15,10 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
15
15
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
16
16
  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); }
17
17
  import logger from "../logger";
18
- var DB_NAME = 'LogStorageDB';
19
- var STORE_NAME = 'logs';
20
- var VERSION = 2; // 升级版本号以触发数据库升级
21
-
18
+ import { IDB_DB_NAME, IDB_STORE_NAME, IDB_VERSION, MAX_STORAGE_EVENTS } from "../constants";
19
+ var DB_NAME = IDB_DB_NAME;
20
+ var STORE_NAME = IDB_STORE_NAME;
21
+ var VERSION = IDB_VERSION;
22
22
  export var IndexedDBAdapter = /*#__PURE__*/function () {
23
23
  function IndexedDBAdapter() {
24
24
  _classCallCheck(this, IndexedDBAdapter);
@@ -199,8 +199,8 @@ export var IndexedDBAdapter = /*#__PURE__*/function () {
199
199
  record.version = (record.version || 1) + 1;
200
200
 
201
201
  // 限制最大存储量
202
- if (record.data.length > 10000) {
203
- record.data.splice(0, record.data.length - 10000);
202
+ if (record.data.length > MAX_STORAGE_EVENTS) {
203
+ record.data.splice(0, record.data.length - MAX_STORAGE_EVENTS);
204
204
  }
205
205
  var putRequest = store.put(record);
206
206
  putRequest.onsuccess = function () {
@@ -261,8 +261,8 @@ export var IndexedDBAdapter = /*#__PURE__*/function () {
261
261
  record.version = (record.version || 1) + 1;
262
262
 
263
263
  // 限制最大存储量
264
- if (record.data.length > 10000) {
265
- record.data.splice(0, record.data.length - 10000);
264
+ if (record.data.length > MAX_STORAGE_EVENTS) {
265
+ record.data.splice(0, record.data.length - MAX_STORAGE_EVENTS);
266
266
  }
267
267
  var putRequest = store.put(record);
268
268
  putRequest.onsuccess = function () {
@@ -324,8 +324,8 @@ export var IndexedDBAdapter = /*#__PURE__*/function () {
324
324
  record.version = (record.version || 1) + 1;
325
325
 
326
326
  // 限制最大存储量
327
- if (record.data.length > 10000) {
328
- record.data.splice(0, record.data.length - 10000);
327
+ if (record.data.length > MAX_STORAGE_EVENTS) {
328
+ record.data.splice(0, record.data.length - MAX_STORAGE_EVENTS);
329
329
  }
330
330
  var putRequest = store.put(record);
331
331
  putRequest.onsuccess = function () {
@@ -1 +1 @@
1
- {"version":3,"file":"localstorage-adapt.d.ts","sourceRoot":"","sources":["../../../../src/lib/drive/localstorage-adapt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD;;GAEG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAgB;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAgB;IAC1D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAQ;IAC5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAM;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAM;IAEzC;;OAEG;YACW,WAAW;IA8BzB;;OAEG;IACH,OAAO,CAAC,WAAW;IASnB;;OAEG;YACW,QAAQ;IAuBtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAIf,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBhD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBnD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB1D,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IA8BtD,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5C;;OAEG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,EAAE,CAAC;IAgBjB;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAmB5E"}
1
+ {"version":3,"file":"localstorage-adapt.d.ts","sourceRoot":"","sources":["../../../../src/lib/drive/localstorage-adapt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAWrD;;GAEG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAA2B;IAClE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAA2B;IACrE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAgB;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAoB;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAEvD;;OAEG;YACW,WAAW;IA8BzB;;OAEG;IACH,OAAO,CAAC,WAAW;IASnB;;OAEG;YACW,QAAQ;IAuBtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAIf,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBhD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBnD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB1D,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IA8BtD,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5C;;OAEG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,EAAE,CAAC;IAgBjB;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAmB5E"}
@@ -20,6 +20,7 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
20
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); }
21
21
  import { MemoryAdapter } from "./memory-adapt";
22
22
  import logger from "../logger";
23
+ import { STORAGE_KEY_LOCK_PREFIX, STORAGE_KEY_DATA_PREFIX, LOCK_TIMEOUT, LOCK_RETRY_DELAY, LOCK_MAX_RETRIES, MAX_STORAGE_EVENTS } from "../constants";
23
24
 
24
25
  /**
25
26
  * 使用锁机制解决localStorage多标签并发问题
@@ -30,7 +31,7 @@ export var LocalStorageAdapter = /*#__PURE__*/function () {
30
31
  }
31
32
  _createClass(LocalStorageAdapter, [{
32
33
  key: "acquireLock",
33
- value: // 最多重试50次
34
+ value: (
34
35
  /**
35
36
  * 获取分布式锁
36
37
  */
@@ -86,6 +87,7 @@ export var LocalStorageAdapter = /*#__PURE__*/function () {
86
87
  /**
87
88
  * 释放分布式锁
88
89
  */
90
+ )
89
91
  }, {
90
92
  key: "releaseLock",
91
93
  value: function releaseLock(deviceId) {
@@ -183,8 +185,8 @@ export var LocalStorageAdapter = /*#__PURE__*/function () {
183
185
  list.push(data);
184
186
 
185
187
  // 限制最大存储量,防止内存溢出
186
- if (list.length > 10000) {
187
- list.splice(0, list.length - 10000);
188
+ if (list.length > MAX_STORAGE_EVENTS) {
189
+ list.splice(0, list.length - MAX_STORAGE_EVENTS);
188
190
  }
189
191
  localStorage.setItem(key, JSON.stringify(list));
190
192
  case 6:
@@ -233,8 +235,8 @@ export var LocalStorageAdapter = /*#__PURE__*/function () {
233
235
  list.unshift(data);
234
236
 
235
237
  // 限制最大存储量
236
- if (list.length > 10000) {
237
- list.splice(0, list.length - 10000);
238
+ if (list.length > MAX_STORAGE_EVENTS) {
239
+ list.splice(0, list.length - MAX_STORAGE_EVENTS);
238
240
  }
239
241
  localStorage.setItem(key, JSON.stringify(list));
240
242
  case 6:
@@ -283,8 +285,8 @@ export var LocalStorageAdapter = /*#__PURE__*/function () {
283
285
  list.unshift.apply(list, _toConsumableArray(data));
284
286
 
285
287
  // 限制最大存储量
286
- if (list.length > 10000) {
287
- list.splice(0, list.length - 10000);
288
+ if (list.length > MAX_STORAGE_EVENTS) {
289
+ list.splice(0, list.length - MAX_STORAGE_EVENTS);
288
290
  }
289
291
  localStorage.setItem(key, JSON.stringify(list));
290
292
  case 6:
@@ -514,10 +516,8 @@ export var LocalStorageAdapter = /*#__PURE__*/function () {
514
516
  }]);
515
517
  return LocalStorageAdapter;
516
518
  }();
517
- _defineProperty(LocalStorageAdapter, "LOCK_KEY_PREFIX", 'rlog_lock_');
518
- _defineProperty(LocalStorageAdapter, "STORAGE_KEY_PREFIX", 'rlog_data_');
519
- _defineProperty(LocalStorageAdapter, "LOCK_TIMEOUT", 5000);
520
- // 5秒超时
521
- _defineProperty(LocalStorageAdapter, "RETRY_DELAY", 10);
522
- // 10ms重试间隔
523
- _defineProperty(LocalStorageAdapter, "MAX_RETRIES", 50);
519
+ _defineProperty(LocalStorageAdapter, "LOCK_KEY_PREFIX", STORAGE_KEY_LOCK_PREFIX);
520
+ _defineProperty(LocalStorageAdapter, "STORAGE_KEY_PREFIX", STORAGE_KEY_DATA_PREFIX);
521
+ _defineProperty(LocalStorageAdapter, "LOCK_TIMEOUT", LOCK_TIMEOUT);
522
+ _defineProperty(LocalStorageAdapter, "RETRY_DELAY", LOCK_RETRY_DELAY);
523
+ _defineProperty(LocalStorageAdapter, "MAX_RETRIES", LOCK_MAX_RETRIES);
@@ -1 +1 @@
1
- {"version":3,"file":"memory-adapt.d.ts","sourceRoot":"","sources":["../../../../src/lib/drive/memory-adapt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;GAEG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,KAAK,CAAyC;IAEtD,OAAO;WAEO,WAAW,IAAI,aAAa;IAO1C;;OAEG;YACW,WAAW;IAuBnB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBhD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBnD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB1D,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IA2BtD,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5C;;OAEG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,EAAE,CAAC;IAajB;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAgB5E"}
1
+ {"version":3,"file":"memory-adapt.d.ts","sourceRoot":"","sources":["../../../../src/lib/drive/memory-adapt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD;;GAEG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,KAAK,CAAyC;IAEtD,OAAO;WAEO,WAAW,IAAI,aAAa;IAO1C;;OAEG;YACW,WAAW;IAuBnB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBhD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBnD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB1D,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IA2BtD,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5C;;OAEG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,EAAE,CAAC;IAajB;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAgB5E"}
@@ -14,6 +14,8 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
14
14
  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; }
15
15
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
16
16
  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); }
17
+ import { MAX_STORAGE_EVENTS } from "../constants";
18
+
17
19
  /**
18
20
  * 线程安全的内存适配器
19
21
  */
@@ -89,8 +91,8 @@ export var MemoryAdapter = /*#__PURE__*/function () {
89
91
  list.push(data);
90
92
 
91
93
  // 限制最大存储量
92
- if (list.length > 10000) {
93
- list.splice(0, list.length - 10000);
94
+ if (list.length > MAX_STORAGE_EVENTS) {
95
+ list.splice(0, list.length - MAX_STORAGE_EVENTS);
94
96
  }
95
97
  } finally {
96
98
  release();
@@ -126,8 +128,8 @@ export var MemoryAdapter = /*#__PURE__*/function () {
126
128
  list.unshift(data);
127
129
 
128
130
  // 限制最大存储量
129
- if (list.length > 10000) {
130
- list.splice(0, list.length - 10000);
131
+ if (list.length > MAX_STORAGE_EVENTS) {
132
+ list.splice(0, list.length - MAX_STORAGE_EVENTS);
131
133
  }
132
134
  } finally {
133
135
  release();
@@ -163,8 +165,8 @@ export var MemoryAdapter = /*#__PURE__*/function () {
163
165
  list.unshift.apply(list, _toConsumableArray(data));
164
166
 
165
167
  // 限制最大存储量
166
- if (list.length > 10000) {
167
- list.splice(0, list.length - 10000);
168
+ if (list.length > MAX_STORAGE_EVENTS) {
169
+ list.splice(0, list.length - MAX_STORAGE_EVENTS);
168
170
  }
169
171
  } finally {
170
172
  release();
@@ -0,0 +1,24 @@
1
+ /**
2
+ * 安全的 KV 存储工具
3
+ * 提供与 localStorage 相同的 getItem/setItem/removeItem 接口,
4
+ * 当 localStorage 不可用时自动降级到内存 Map 存储。
5
+ *
6
+ * 用途:给 utils.ts 中 deviceId、session 注册表等轻量 KV 场景使用,
7
+ * 避免直接裸调 localStorage 导致在隐私模式、iframe sandbox 等环境下抛异常。
8
+ */
9
+ declare class SafeStorage {
10
+ private memoryFallback;
11
+ private useMemory;
12
+ constructor();
13
+ /**
14
+ * 检测 localStorage 是否可用
15
+ */
16
+ private isLocalStorageAvailable;
17
+ getItem(key: string): string | null;
18
+ setItem(key: string, value: string): void;
19
+ removeItem(key: string): void;
20
+ }
21
+ /** 单例导出 */
22
+ export declare const safeStorage: SafeStorage;
23
+ export {};
24
+ //# sourceMappingURL=safe-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-storage.d.ts","sourceRoot":"","sources":["../../../../src/lib/drive/safe-storage.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,cAAM,WAAW;IACf,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,SAAS,CAAS;;IAS1B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAanC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAazC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAY9B;AAED,WAAW;AACX,eAAO,MAAM,WAAW,aAAoB,CAAC"}