@antglobal/rlog-sdk 0.0.1755855517-dev.8 → 0.0.1779194445-dev.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 +15 -41
  3. package/dist/esm/index.d.ts.map +1 -1
  4. package/dist/esm/index.js +101 -76
  5. package/dist/esm/lib/api.d.ts +10 -0
  6. package/dist/esm/lib/api.d.ts.map +1 -1
  7. package/dist/esm/lib/api.js +58 -35
  8. package/dist/esm/lib/config.d.ts +14 -16
  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 -116
  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 +15 -41
  65. package/dist/lib/index.d.ts.map +1 -1
  66. package/dist/lib/index.js +89 -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 +14 -16
  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 -117
  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
@@ -1,65 +1,39 @@
1
- import { setCustomHeaders, setWhiteListUrls, setBlackListUrls, getBlackListUrls, getSdkLogEndpoint, getWhiteListUrls, shouldRecordUrl } from './lib/net';
1
+ import { setCustomHeaders, getCustomHeaders, setWhiteListUrls, setBlackListUrls, getBlackListUrls, getSdkLogEndpoint, getWhiteListUrls, shouldRecordUrl } from './lib/net';
2
2
  import { forceResetUploadState } from './lib/uploader';
3
3
  import { updateRouterConfig, getCurrentRouteInfo, manualRouteChange, stopRouterMonitor } from './lib/router-monitor';
4
+ import { getConfig } from './lib/config';
4
5
  import { cleanupErrorHandler } from './lib/error';
5
6
  type Params = {
6
7
  serv: string;
7
8
  appId: string;
8
9
  cdnConfigUrl?: string;
9
10
  };
10
- export declare function init(param: Params): {
11
+ declare function init(param: Params): {
11
12
  cancel: (options?: {
12
13
  clearData?: boolean;
13
14
  }) => void;
14
15
  };
15
- export declare function cancelRecord(options?: {
16
+ declare function cancelRecord(options?: {
16
17
  clearData?: boolean;
17
18
  }): void;
18
- export declare function addCustomEvent(tagName: string, payload: any): void;
19
- /**
20
- * 设置只采集不上报模式
21
- * @param enable 是否启用只采集不上报模式
22
- */
23
- export declare function setConsumeOnlyMode(enable: boolean): void;
24
- /**
25
- * 获取当前是否处于只采集不上报模式
26
- * @returns 是否启用只采集不上报模式
27
- */
28
- export declare function isConsumeOnlyMode(): boolean;
29
- /**
30
- * 切换只采集不上报模式
31
- */
32
- export declare function toggleConsumeOnlyMode(): boolean;
33
- export { updateRouterConfig, getCurrentRouteInfo, manualRouteChange, stopRouterMonitor, };
34
- export { setCustomHeaders, setWhiteListUrls, setBlackListUrls, getBlackListUrls, getWhiteListUrls, getSdkLogEndpoint, };
35
- export { cleanupErrorHandler };
36
- export declare const debug: {
37
- /**
38
- * 获取存储适配器类型
39
- */
19
+ declare function addCustomEvent(tagName: string, payload: any): void;
20
+ declare function takeFullSnapshot(isCheckout?: boolean): void;
21
+ declare function setConsumeOnlyMode(enable: boolean): void;
22
+ declare function isConsumeOnlyMode(): boolean;
23
+ declare function toggleConsumeOnlyMode(): boolean;
24
+ declare function reportError(error: Error | string): void;
25
+ declare const debug: {
40
26
  getStorageAdapterType(): string;
41
- /**
42
- * 获取设备ID
43
- */
44
27
  getDeviceId: () => string;
45
- /**
46
- * 重置上传状态
47
- */
28
+ getSessionId: () => string;
29
+ getStorageKey: () => string;
48
30
  resetUploadState: typeof forceResetUploadState;
49
- /**
50
- * 获取存储状态
51
- */
52
31
  getStorageState(): Promise<{
53
32
  adapterType: string;
54
33
  eventCount: number;
55
34
  }>;
56
- /**
57
- * 清空存储数据
58
- */
59
35
  clearStorage(): Promise<void>;
60
- /**
61
- * 检查URL是否应该被记录(白名单且不在黑名单中)
62
- */
63
- shouldRecordUrl: typeof shouldRecordUrl;
36
+ getConfig: typeof getConfig;
64
37
  };
38
+ export { init, cancelRecord, addCustomEvent, takeFullSnapshot, setConsumeOnlyMode, isConsumeOnlyMode, toggleConsumeOnlyMode, updateRouterConfig, getCurrentRouteInfo, manualRouteChange, stopRouterMonitor, shouldRecordUrl, setCustomHeaders, getCustomHeaders, setWhiteListUrls, setBlackListUrls, getBlackListUrls, getWhiteListUrls, getSdkLogEndpoint, reportError, cleanupErrorHandler, debug, };
65
39
  //# sourceMappingURL=index.d.ts.map
@@ -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,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;AAE9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,KAAK,MAAM,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IAEd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM;uBAKZ;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;EAI5C;AAGD,wBAAgB,YAAY,CAAC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,QAMjE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAE3D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAGxD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAK3C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAI/C;AAGD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,CAAC;AAGF,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAClB,CAAC;AAGF,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAG/B,eAAO,MAAM,KAAK;IAChB;;OAEG;6BACsB,MAAM;IAO/B;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;;;;IAMH;;OAEG;;IAKH;;OAEG;;CAEJ,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;uBAQL;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;EAQ5C;AAED,iBAAS,YAAY,CAAC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,QAS1D;AAED,iBAAS,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAMpD;AAED,iBAAS,gBAAgB,CAAC,UAAU,CAAC,EAAE,OAAO,QAM7C;AAED,iBAAS,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAEjD;AAED,iBAAS,iBAAiB,IAAI,OAAO,CAKpC;AAED,iBAAS,qBAAqB,IAAI,OAAO,CAIxC;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CA6BhD;AAED,QAAA,MAAM,KAAK;6BACgB,MAAM;;;;;;;;;;;CAgBhC,CAAC;AAGF,OAAO,EAEL,IAAI,EACJ,YAAY,EAEZ,cAAc,EAEd,gBAAgB,EAEhB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EAErB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EAEjB,eAAe,EACf,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
@@ -1,105 +1,117 @@
1
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
1
  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; }
3
2
  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); } }
4
3
  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); }); }; }
4
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
5
5
  import { initRLog, cancelRlog } from "./lib/init";
6
- import { setCustomHeaders, setWhiteListUrls, setBlackListUrls, getBlackListUrls, getSdkLogEndpoint, getWhiteListUrls, shouldRecordUrl } from "./lib/net";
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
- import { cleanupErrorHandler } from "./lib/error";
14
- export function init(param) {
15
- // 初始化 RLog SDK
16
- initRLog(param.serv, param.appId, param.cdnConfigUrl);
13
+ import { cleanupErrorHandler, getErrorTrigger } from "./lib/error";
14
+ import logger from "./lib/logger";
15
+ import { STORAGE_KEY_CONSUME_ONLY, STORAGE_VALUE_CONSUME_ONLY, EVENT_CUSTOM_ERROR } from "./lib/constants";
16
+ function init(param) {
17
+ try {
18
+ initRLog(param.serv, param.appId, param.cdnConfigUrl);
19
+ } catch (error) {
20
+ logger.error('Failed to initialize SDK:', error);
21
+ }
17
22
  return {
18
23
  cancel: function cancel() {
19
24
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
20
- cancelRlog(options, 'SDK instance');
25
+ try {
26
+ cancelRlog(options, 'SDK instance');
27
+ } catch (error) {
28
+ logger.error('Failed to cancel SDK:', error);
29
+ }
21
30
  }
22
31
  };
23
32
  }
24
-
25
- // 单独导出 cancelRecord 方法
26
- export function cancelRecord() {
33
+ function cancelRecord() {
27
34
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
28
- console.warn('Please use rlog.cancel() from initialized instance instead of standalone cancelRecord()');
29
- cancelRlog(options, 'standalone function');
35
+ try {
36
+ logger.warn('Please use rlog.cancel() from initialized instance instead of standalone cancelRecord()');
37
+ cancelRlog(options, 'standalone function');
38
+ } catch (error) {
39
+ logger.error('Failed to cancel record:', error);
40
+ }
30
41
  }
31
- export function addCustomEvent(tagName, payload) {
32
- record.addCustomEvent(tagName, payload);
42
+ function addCustomEvent(tagName, payload) {
43
+ try {
44
+ record.addCustomEvent(tagName, payload);
45
+ } catch (error) {
46
+ logger.warn('Failed to add custom event:', error);
47
+ }
33
48
  }
34
-
35
- /**
36
- * 设置只采集不上报模式
37
- * @param enable 是否启用只采集不上报模式
38
- */
39
- export function setConsumeOnlyMode(enable) {
49
+ function takeFullSnapshot(isCheckout) {
50
+ try {
51
+ record.takeFullSnapshot(isCheckout);
52
+ } catch (error) {
53
+ logger.warn('Failed to take full snapshot:', error);
54
+ }
55
+ }
56
+ function setConsumeOnlyMode(enable) {
40
57
  updateConfig({
41
58
  consumeOnly: enable
42
59
  });
43
- console.log("RLog consume only mode ".concat(enable ? 'enabled' : 'disabled'));
44
60
  }
45
-
46
- /**
47
- * 获取当前是否处于只采集不上报模式
48
- * @returns 是否启用只采集不上报模式
49
- */
50
- export function isConsumeOnlyMode() {
51
- return sessionStorage.getItem('RLOG_CONSUME_ONLY') === 'true' || !!getConfig().consumeOnly;
61
+ function isConsumeOnlyMode() {
62
+ return sessionStorage.getItem(STORAGE_KEY_CONSUME_ONLY) === STORAGE_VALUE_CONSUME_ONLY || !!getConfig().consumeOnly;
52
63
  }
53
-
54
- /**
55
- * 切换只采集不上报模式
56
- */
57
- export function toggleConsumeOnlyMode() {
64
+ function toggleConsumeOnlyMode() {
58
65
  var newMode = !getConfig().consumeOnly;
59
66
  setConsumeOnlyMode(newMode);
60
67
  return newMode;
61
68
  }
62
-
63
- // 路由监控相关API
64
- export { updateRouterConfig, getCurrentRouteInfo, manualRouteChange, stopRouterMonitor };
65
-
66
- // 网络监控相关函数
67
- export { setCustomHeaders, setWhiteListUrls, setBlackListUrls, getBlackListUrls, getWhiteListUrls, getSdkLogEndpoint };
68
-
69
- // 错误处理相关函数
70
- export { cleanupErrorHandler };
71
-
72
- // 调试和测试相关API
73
- export var debug = {
74
- /**
75
- * 获取存储适配器类型
76
- */
69
+ function reportError(error) {
70
+ var message = typeof error === 'string' ? error : error.message;
71
+ var stack = _typeof(error) === 'object' && error.stack ? error.stack : undefined;
72
+ try {
73
+ record.addCustomEvent(EVENT_CUSTOM_ERROR, {
74
+ type: 'CUSTOM_ERROR',
75
+ message: message,
76
+ stack: stack,
77
+ timestamp: Date.now(),
78
+ location: typeof window !== 'undefined' ? window.location.href : ''
79
+ });
80
+ } catch (e) {
81
+ logger.warn('Failed to add custom error event:', e);
82
+ }
83
+ try {
84
+ var trigger = getErrorTrigger();
85
+ if (trigger) {
86
+ trigger.onError({
87
+ type: 'custom',
88
+ message: message,
89
+ timestamp: Date.now(),
90
+ detail: {
91
+ stack: stack
92
+ }
93
+ });
94
+ }
95
+ } catch (e) {
96
+ logger.warn('Failed to trigger error mode:', e);
97
+ }
98
+ }
99
+ var debug = {
77
100
  getStorageAdapterType: function getStorageAdapterType() {
78
101
  return storage.getAdapterType();
79
102
  },
80
- // get storage() {
81
- // return storage;
82
- // },
83
-
84
- /**
85
- * 获取设备ID
86
- */
87
103
  getDeviceId: getDeviceId,
88
- /**
89
- * 重置上传状态
90
- */
104
+ getSessionId: getSessionId,
105
+ getStorageKey: getStorageKey,
91
106
  resetUploadState: forceResetUploadState,
92
- /**
93
- * 获取存储状态
94
- */
95
107
  getStorageState: function getStorageState() {
96
108
  return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
97
- var deviceId;
109
+ var storageKey;
98
110
  return _regeneratorRuntime().wrap(function _callee$(_context) {
99
111
  while (1) switch (_context.prev = _context.next) {
100
112
  case 0:
101
- deviceId = getDeviceId();
102
- return _context.abrupt("return", storage.getStorageState(deviceId));
113
+ storageKey = getStorageKey();
114
+ return _context.abrupt("return", storage.getStorageState(storageKey));
103
115
  case 2:
104
116
  case "end":
105
117
  return _context.stop();
@@ -107,17 +119,14 @@ export var debug = {
107
119
  }, _callee);
108
120
  }))();
109
121
  },
110
- /**
111
- * 清空存储数据
112
- */
113
122
  clearStorage: function clearStorage() {
114
123
  return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
115
- var deviceId;
124
+ var storageKey;
116
125
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
117
126
  while (1) switch (_context2.prev = _context2.next) {
118
127
  case 0:
119
- deviceId = getDeviceId();
120
- return _context2.abrupt("return", storage.clear(deviceId));
128
+ storageKey = getStorageKey();
129
+ return _context2.abrupt("return", storage.clear(storageKey));
121
130
  case 2:
122
131
  case "end":
123
132
  return _context2.stop();
@@ -125,8 +134,24 @@ export var debug = {
125
134
  }, _callee2);
126
135
  }))();
127
136
  },
128
- /**
129
- * 检查URL是否应该被记录(白名单且不在黑名单中)
130
- */
131
- shouldRecordUrl: shouldRecordUrl
132
- };
137
+ getConfig: getConfig
138
+ };
139
+
140
+ // 统一导出所有公共 API
141
+ export {
142
+ // 核心初始化
143
+ init, cancelRecord,
144
+ // 自定义事件
145
+ addCustomEvent,
146
+ // 全量快照
147
+ takeFullSnapshot,
148
+ // 只采集不上报模式
149
+ setConsumeOnlyMode, isConsumeOnlyMode, toggleConsumeOnlyMode,
150
+ // 路由监控
151
+ updateRouterConfig, getCurrentRouteInfo, manualRouteChange, stopRouterMonitor,
152
+ // 网络监控
153
+ shouldRecordUrl, setCustomHeaders, getCustomHeaders, setWhiteListUrls, setBlackListUrls, getBlackListUrls, getWhiteListUrls, getSdkLogEndpoint,
154
+ // 错误处理
155
+ reportError, cleanupErrorHandler,
156
+ // 调试工具
157
+ debug };
@@ -4,6 +4,16 @@ type UploadOptions = {
4
4
  deviceId: string;
5
5
  appId: string;
6
6
  };
7
+ /**
8
+ * 构建上传查询参数(纯函数,供 Worker 管理器复用)
9
+ * @param opts 包含 appId、deviceId、data 的选项
10
+ * @returns 查询参数键值对
11
+ */
12
+ export declare function buildQueryParams(opts: {
13
+ appId: string;
14
+ deviceId: string;
15
+ data: any[];
16
+ }): Record<string, string>;
7
17
  export declare const upload: (opt: UploadOptions) => Promise<void>;
8
18
  export {};
9
19
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/lib/api.ts"],"names":[],"mappings":"AAIA,KAAK,aAAa,GAAG;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAqBF,eAAO,MAAM,MAAM,QAAe,aAAa,kBAoD9C,CAAC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/lib/api.ts"],"names":[],"mappings":"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"}
@@ -5,79 +5,102 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar
5
5
  import { generateUUIDCompat } from "./utils";
6
6
  import { post } from "./request";
7
7
  import { getConfig } from "./config";
8
+ import { getCustomHeaders } from "./net";
9
+ import { STORAGE_KEY_URL_PARAM_PREFIX, DEFAULT_URL_PARAMS_TO_CACHE } from "./constants";
8
10
  // 从URL中提取指定参数并存储到sessionStorage中
9
11
  var cacheUrlParams = function cacheUrlParams() {
10
12
  var config = getConfig();
11
- var paramsToCache = config.urlParamsToCache || ['taskId']; // 默认缓存taskId
13
+ var paramsToCache = config.urlParamsToCache || DEFAULT_URL_PARAMS_TO_CACHE;
12
14
  var urlParams = new URLSearchParams(window.location.search);
13
15
  paramsToCache.forEach(function (paramName) {
14
16
  var paramValue = urlParams.get(paramName);
15
17
  if (paramValue) {
16
- sessionStorage.setItem("rlog-".concat(paramName), paramValue);
18
+ sessionStorage.setItem("".concat(STORAGE_KEY_URL_PARAM_PREFIX).concat(paramName), paramValue);
17
19
  }
18
20
  });
19
21
  };
20
22
 
21
23
  // 获取缓存的参数值
22
24
  var getCachedParam = function getCachedParam(paramName) {
23
- return sessionStorage.getItem("rlog-".concat(paramName));
25
+ return sessionStorage.getItem("".concat(STORAGE_KEY_URL_PARAM_PREFIX).concat(paramName));
24
26
  };
27
+
28
+ /**
29
+ * 构建上传查询参数(纯函数,供 Worker 管理器复用)
30
+ * @param opts 包含 appId、deviceId、data 的选项
31
+ * @returns 查询参数键值对
32
+ */
33
+ export function buildQueryParams(opts) {
34
+ var _opts$data, _opts$data2;
35
+ // 缓存URL中的参数
36
+ cacheUrlParams();
37
+ var lastIndex = opts.data && opts.data.length > 0 ? opts.data.length - 1 : -1;
38
+ var queryParams = {
39
+ deviceId: opts.deviceId,
40
+ appId: opts.appId,
41
+ startTime: (_opts$data = opts.data) === null || _opts$data === void 0 || (_opts$data = _opts$data[0]) === null || _opts$data === void 0 ? void 0 : _opts$data.timestamp,
42
+ endTime: (_opts$data2 = opts.data) === null || _opts$data2 === void 0 || (_opts$data2 = _opts$data2[lastIndex]) === null || _opts$data2 === void 0 ? void 0 : _opts$data2.timestamp
43
+ };
44
+
45
+ // 从配置中获取需要上报的参数名称列表
46
+ var config = getConfig();
47
+ var paramsToReport = config.urlParamsToCache || DEFAULT_URL_PARAMS_TO_CACHE;
48
+
49
+ // 添加缓存的参数到查询字符串中
50
+ paramsToReport.forEach(function (paramName) {
51
+ var paramValue = getCachedParam(paramName);
52
+ if (paramValue) {
53
+ queryParams[paramName] = paramValue;
54
+ }
55
+ });
56
+ return queryParams;
57
+ }
25
58
  export var upload = /*#__PURE__*/function () {
26
59
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(opt) {
27
- var _opt$data, _opt$data2;
28
- var lastIndex, queryParams, config, paramsToReport, queryString, api, formData, response, responseData, error;
60
+ var queryParams, queryString, api, formData, customHeaders, response, responseData, error;
29
61
  return _regeneratorRuntime().wrap(function _callee$(_context) {
30
62
  while (1) switch (_context.prev = _context.next) {
31
63
  case 0:
32
- // 缓存URL中的参数
33
- cacheUrlParams();
34
-
35
- // 构建查询字符串
36
- lastIndex = opt.data && opt.data.length > 0 ? opt.data.length - 1 : -1;
37
- queryParams = {
38
- deviceId: opt.deviceId,
64
+ // 构建查询参数
65
+ queryParams = buildQueryParams({
39
66
  appId: opt.appId,
40
- startTime: (_opt$data = opt.data) === null || _opt$data === void 0 || (_opt$data = _opt$data[0]) === null || _opt$data === void 0 ? void 0 : _opt$data.timestamp,
41
- endTime: (_opt$data2 = opt.data) === null || _opt$data2 === void 0 || (_opt$data2 = _opt$data2[lastIndex]) === null || _opt$data2 === void 0 ? void 0 : _opt$data2.timestamp
42
- }; // 从配置中获取需要上报的参数名称列表
43
- config = getConfig();
44
- paramsToReport = config.urlParamsToCache || ['taskId']; // 默认上报taskId
45
- // 添加缓存的参数到查询字符串中
46
- paramsToReport.forEach(function (paramName) {
47
- var paramValue = getCachedParam(paramName);
48
- if (paramValue) {
49
- queryParams[paramName] = paramValue;
50
- }
67
+ deviceId: opt.deviceId,
68
+ data: opt.data
51
69
  });
52
70
  queryString = new URLSearchParams(queryParams);
53
71
  api = "".concat(opt.url).concat(queryString ? "?".concat(queryString) : '');
54
72
  formData = new FormData();
55
73
  formData.append('file', new Blob([JSON.stringify(opt.data)]), generateUUIDCompat() + '.json');
56
- _context.next = 12;
57
- return post(api, formData);
58
- case 12:
74
+
75
+ // 获取自定义请求头
76
+ customHeaders = getCustomHeaders();
77
+ _context.next = 8;
78
+ return post(api, formData, {
79
+ headers: customHeaders
80
+ });
81
+ case 8:
59
82
  response = _context.sent;
60
- _context.prev = 13;
83
+ _context.prev = 9;
61
84
  responseData = typeof response.data === 'string' ? JSON.parse(response.data) : response.data;
62
- _context.next = 20;
85
+ _context.next = 16;
63
86
  break;
64
- case 17:
65
- _context.prev = 17;
66
- _context.t0 = _context["catch"](13);
87
+ case 13:
88
+ _context.prev = 13;
89
+ _context.t0 = _context["catch"](9);
67
90
  return _context.abrupt("return");
68
- case 20:
91
+ case 16:
69
92
  if (!(responseData && _typeof(responseData) === 'object' && responseData.success === false)) {
70
- _context.next = 24;
93
+ _context.next = 20;
71
94
  break;
72
95
  }
73
96
  error = new Error(responseData.errorMessage || 'Upload failed with success=false'); // 将完整的响应数据附加到错误对象上
74
97
  error.responseData = responseData;
75
98
  throw error;
76
- case 24:
99
+ case 20:
77
100
  case "end":
78
101
  return _context.stop();
79
102
  }
80
- }, _callee, null, [[13, 17]]);
103
+ }, _callee, null, [[9, 13]]);
81
104
  }));
82
105
  return function upload(_x) {
83
106
  return _ref.apply(this, arguments);
@@ -8,14 +8,19 @@ export interface ConsoleRecordConfig {
8
8
  depthOfLimit?: number;
9
9
  };
10
10
  }
11
+ export interface ErrorCaptureConfig {
12
+ beforeDuration?: number;
13
+ afterDuration?: number;
14
+ httpErrorThreshold?: number;
15
+ }
11
16
  export interface CdnConfig {
12
17
  enable: boolean;
13
18
  checkoutEveryNms?: number;
14
19
  ignoreClass?: string;
15
20
  blockClass?: string;
16
21
  maskTextClass?: string;
17
- samplingRate: number;
18
22
  sampling?: {
23
+ canvas?: number;
19
24
  mousemove?: number | boolean;
20
25
  scroll?: number;
21
26
  input?: 'all' | 'last';
@@ -26,30 +31,19 @@ export interface CdnConfig {
26
31
  maxRetryCount?: number;
27
32
  urlParamsToCache?: string[];
28
33
  clearStorageBeforeRecord?: boolean;
29
- console?: {
30
- enable?: boolean;
31
- level?: ('assert' | 'clear' | 'count' | 'countReset' | 'debug' | 'dir' | 'dirxml' | 'error' | 'group' | 'groupCollapsed' | 'groupEnd' | 'info' | 'log' | 'table' | 'time' | 'timeEnd' | 'timeLog' | 'trace' | 'warn')[];
32
- lengthThreshold?: number;
33
- stringifyOptions?: {
34
- stringLengthLimit?: number;
35
- numOfKeysLimit?: number;
36
- depthOfLimit?: number;
37
- };
38
- };
34
+ console?: ConsoleRecordConfig;
39
35
  http?: boolean;
40
- error?: boolean;
41
36
  routerMonitor?: {
42
37
  enable?: boolean;
43
38
  trackHashChange?: boolean;
44
39
  trackHistoryChange?: boolean;
45
40
  trackPageStayTime?: boolean;
46
41
  ignoreRoutes?: string[];
47
- customMatchers?: Array<{
48
- pattern: string | RegExp;
49
- name?: string;
50
- }>;
51
42
  };
52
43
  packEvents?: boolean;
44
+ error?: boolean;
45
+ captureMode?: 'full' | 'error';
46
+ errorCapture?: ErrorCaptureConfig;
53
47
  }
54
48
  /**
55
49
  * 从 CDN 获取配置
@@ -67,6 +61,10 @@ export declare function updateConfig(newConfig: Partial<CdnConfig>): void;
67
61
  * @returns 当前配置
68
62
  */
69
63
  export declare function getConfig(): CdnConfig;
64
+ /**
65
+ * 停止配置定时更新
66
+ */
67
+ export declare function stopConfigUpdate(): void;
70
68
  /**
71
69
  * 初始化配置管理器
72
70
  * @param cdnUrl CDN 配置文件地址
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,mBAAmB;IAElC,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,KAAK,CAAC,EAAE,CACJ,QAAQ,GACR,OAAO,GACP,OAAO,GACP,YAAY,GACZ,OAAO,GACP,KAAK,GACL,QAAQ,GACR,OAAO,GACP,OAAO,GACP,gBAAgB,GAChB,UAAU,GACV,MAAM,GACN,KAAK,GACL,OAAO,GACP,MAAM,GACN,SAAS,GACT,SAAS,GACT,OAAO,GACP,MAAM,CACT,EAAE,CAAC;IAEJ,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,gBAAgB,CAAC,EAAE;QAEjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAE3B,cAAc,CAAC,EAAE,MAAM,CAAC;QAExB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAGD,MAAM,WAAW,kBAAkB;IAEjC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAGD,MAAM,WAAW,SAAS;IAExB,MAAM,EAAE,OAAO,CAAC;IAEhB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,EAAE;QAET,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAE7B,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;KACxB,CAAC;IAGF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,cAAc,EAAE,MAAM,CAAC;IAEvB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAG5B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAGnC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAG9B,IAAI,CAAC,EAAE,OAAO,CAAC;IAGf,aAAa,CAAC,EAAE;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;QAEjB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IAGF,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAGhB,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAG/B,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAkDD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAoC3E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAEhE;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,SAAS,CAErC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BtE"}