@antglobal/rlog-sdk 0.0.1755855517-dev.10 → 0.0.1755855517-dev.12

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 (67) hide show
  1. package/README.md +48 -8
  2. package/dist/esm/index.d.ts +10 -46
  3. package/dist/esm/index.d.ts.map +1 -1
  4. package/dist/esm/index.js +27 -70
  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 +54 -32
  8. package/dist/esm/lib/config.d.ts +2 -8
  9. package/dist/esm/lib/config.d.ts.map +1 -1
  10. package/dist/esm/lib/config.js +20 -18
  11. package/dist/esm/lib/error-trigger.d.ts +1 -3
  12. package/dist/esm/lib/error-trigger.d.ts.map +1 -1
  13. package/dist/esm/lib/error-trigger.js +1 -8
  14. package/dist/esm/lib/error.d.ts.map +1 -1
  15. package/dist/esm/lib/error.js +73 -178
  16. package/dist/esm/lib/init.d.ts.map +1 -1
  17. package/dist/esm/lib/init.js +13 -13
  18. package/dist/esm/lib/net.d.ts +5 -0
  19. package/dist/esm/lib/net.d.ts.map +1 -1
  20. package/dist/esm/lib/net.js +39 -0
  21. package/dist/esm/lib/router-monitor.d.ts.map +1 -1
  22. package/dist/esm/lib/router-monitor.js +110 -36
  23. package/dist/esm/lib/rrweb.d.ts.map +1 -1
  24. package/dist/esm/lib/rrweb.js +8 -8
  25. package/dist/esm/lib/upload-worker-manager.d.ts +37 -0
  26. package/dist/esm/lib/upload-worker-manager.d.ts.map +1 -0
  27. package/dist/esm/lib/upload-worker-manager.js +482 -0
  28. package/dist/esm/lib/upload-worker.d.ts +59 -0
  29. package/dist/esm/lib/upload-worker.d.ts.map +1 -0
  30. package/dist/esm/lib/upload-worker.js +26 -0
  31. package/dist/esm/lib/uploader.d.ts +5 -0
  32. package/dist/esm/lib/uploader.d.ts.map +1 -1
  33. package/dist/esm/lib/uploader.js +85 -29
  34. package/dist/lib/index.d.ts +10 -46
  35. package/dist/lib/index.d.ts.map +1 -1
  36. package/dist/lib/index.js +9 -58
  37. package/dist/lib/lib/api.d.ts +10 -0
  38. package/dist/lib/lib/api.d.ts.map +1 -1
  39. package/dist/lib/lib/api.js +55 -32
  40. package/dist/lib/lib/config.d.ts +2 -8
  41. package/dist/lib/lib/config.d.ts.map +1 -1
  42. package/dist/lib/lib/config.js +20 -18
  43. package/dist/lib/lib/error-trigger.d.ts +1 -3
  44. package/dist/lib/lib/error-trigger.d.ts.map +1 -1
  45. package/dist/lib/lib/error-trigger.js +1 -8
  46. package/dist/lib/lib/error.d.ts.map +1 -1
  47. package/dist/lib/lib/error.js +73 -178
  48. package/dist/lib/lib/init.d.ts.map +1 -1
  49. package/dist/lib/lib/init.js +12 -12
  50. package/dist/lib/lib/net.d.ts +5 -0
  51. package/dist/lib/lib/net.d.ts.map +1 -1
  52. package/dist/lib/lib/net.js +40 -0
  53. package/dist/lib/lib/router-monitor.d.ts.map +1 -1
  54. package/dist/lib/lib/router-monitor.js +110 -36
  55. package/dist/lib/lib/rrweb.d.ts.map +1 -1
  56. package/dist/lib/lib/rrweb.js +8 -8
  57. package/dist/lib/lib/upload-worker-manager.d.ts +37 -0
  58. package/dist/lib/lib/upload-worker-manager.d.ts.map +1 -0
  59. package/dist/lib/lib/upload-worker-manager.js +491 -0
  60. package/dist/lib/lib/upload-worker.d.ts +59 -0
  61. package/dist/lib/lib/upload-worker.d.ts.map +1 -0
  62. package/dist/lib/lib/upload-worker.js +32 -0
  63. package/dist/lib/lib/uploader.d.ts +5 -0
  64. package/dist/lib/lib/uploader.d.ts.map +1 -1
  65. package/dist/lib/lib/uploader.js +85 -29
  66. package/dist/rlog-sdk.min.js +1 -1
  67. package/package.json +3 -2
package/README.md CHANGED
@@ -15,28 +15,68 @@ CDN 配置文件应为 JSON 格式,包含以下字段:
15
15
  ```json
16
16
  {
17
17
  "enable": true, // 采集总开关
18
- "samplingRate": 15, // Canvas 采样率 (帧/秒)
19
18
  "uploadInterval": 2000, // 数据上传时间间隔 (毫秒)
20
- "configUpdateInterval": 300000 // 配置更新时间间隔 (毫秒),默认 5 分钟
19
+ "configUpdateInterval": 300000, // 配置更新时间间隔 (毫秒),默认 5 分钟
20
+ "checkoutEveryNms": 5000, // 每N毫秒做一次全量快照,默认 5 秒
21
+ "captureMode": "full", // 采集模式: 'full' 全量采集(默认) | 'error' 错误采集
22
+ "packEvents": false, // 是否使用rrweb的packFn压缩事件数据,默认false
23
+ "clearStorageBeforeRecord": true, // 是否在开始录制前清空存储数据,默认true
24
+ "http": false, // 是否开启接口请求抓取,默认false
25
+ "maxRetryCount": 3, // 上传失败最大重试次数,默认3次
26
+ "consumeOnly": false, // 只采集不上报模式,默认false
27
+ "urlParamsToCache": [], // 需要从URL中缓存和上报的参数名称列表
28
+
29
+ // 事件采样配置
30
+ "sampling": {
31
+ "canvas": 15, // Canvas 采样率 (帧/秒),默认 15
32
+ "mousemove": 50, // 鼠标移动事件采样间隔 (毫秒),false表示不录制
33
+ "scroll": 100, // 滚动事件防抖间隔 (毫秒)
34
+ "input": "last" // 输入事件录制时机: 'all' 全部 | 'last' 只记录最终值
35
+ },
36
+
37
+ // rrweb 相关 CSS 类名配置
38
+ "ignoreClass": "rr-ignore", // 忽略采集的CSS类名
39
+ "blockClass": "rr-block", // 阻塞采集的CSS类名
40
+ "maskTextClass": "rr-mask", // 文本遮罩的CSS类名
41
+
42
+ // 错误采集模式配置 (仅在 captureMode='error' 时生效)
43
+ "errorCapture": {
44
+ "beforeDuration": 30000, // 错误发生前录制时长 (毫秒),默认 30000
45
+ "afterDuration": 30000, // 错误发生后继续录制时长 (毫秒),默认 30000
46
+ "httpErrorThreshold": 400 // HTTP 错误状态码阈值,>= 该值视为错误,默认 400
47
+ }
21
48
  }
22
49
  ```
23
50
 
24
- #### Console录制插件详细配置
51
+ #### Console录制插件配置
25
52
  ```json
26
53
  {
27
54
  "console": {
28
- "enable": true, // 是否启用console录制
29
- "level": ["log", "warn", "error", "info"], // 需要录制的console方法
55
+ "enable": true, // 是否启用console录制,默认false
56
+ "level": ["log", "warn", "error", "info"], // 需要录制的console方法,默认['log', 'warn', 'error', 'info']
30
57
  "lengthThreshold": 1000, // 最大录制条数,默认1000
31
58
  "stringifyOptions": {
32
- "stringLengthLimit": 500, // 字符串长度限制
33
- "numOfKeysLimit": 50, // 对象key数量限制,默认50
34
- "depthOfLimit": 4 // 对象深度限制,默认4
59
+ "stringLengthLimit": 500, // 单个值能转化的最大字符串长度,默认不限制
60
+ "numOfKeysLimit": 50, // 被序列化的js对象能够包含的最大key数量,默认50
61
+ "depthOfLimit": 4 // 对象能够拥有的最大深度(层数),默认4
35
62
  }
36
63
  }
37
64
  }
38
65
  ```
39
66
 
67
+ #### 路由监控配置
68
+ ```json
69
+ {
70
+ "routerMonitor": {
71
+ "enable": false, // 是否启用路由监控,默认false
72
+ "trackHashChange": true, // 是否监听hash变化,默认true
73
+ "trackHistoryChange": true, // 是否监听History API变化,默认true
74
+ "trackPageStayTime": true, // 是否计算页面停留时间,默认true
75
+ "ignoreRoutes": [] // 需要忽略的路由列表
76
+ }
77
+ }
78
+ ```
79
+
40
80
  **支持的console方法级别**:
41
81
  - `assert`, `clear`, `count`, `countReset`
42
82
  - `debug`, `dir`, `dirxml`, `error`
@@ -1,4 +1,4 @@
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
4
  import { getConfig } from './lib/config';
@@ -8,66 +8,30 @@ type Params = {
8
8
  appId: string;
9
9
  cdnConfigUrl?: string;
10
10
  };
11
- export declare function init(param: Params): {
11
+ declare function init(param: Params): {
12
12
  cancel: (options?: {
13
13
  clearData?: boolean;
14
14
  }) => void;
15
15
  };
16
- export declare function cancelRecord(options?: {
16
+ declare function cancelRecord(options?: {
17
17
  clearData?: boolean;
18
18
  }): void;
19
- export declare function addCustomEvent(tagName: string, payload: any): void;
20
- /**
21
- * 设置只采集不上报模式
22
- * @param enable 是否启用只采集不上报模式
23
- */
24
- export declare function setConsumeOnlyMode(enable: boolean): void;
25
- /**
26
- * 获取当前是否处于只采集不上报模式
27
- * @returns 是否启用只采集不上报模式
28
- */
29
- export declare function isConsumeOnlyMode(): boolean;
30
- /**
31
- * 切换只采集不上报模式
32
- */
33
- export declare function toggleConsumeOnlyMode(): boolean;
34
- export { updateRouterConfig, getCurrentRouteInfo, manualRouteChange, stopRouterMonitor, };
35
- export { setCustomHeaders, setWhiteListUrls, setBlackListUrls, getBlackListUrls, getWhiteListUrls, getSdkLogEndpoint, };
36
- export { cleanupErrorHandler };
37
- /**
38
- * 手动触发错误上报(用于业务自定义错误)
39
- * 仅在错误采集模式(captureMode: 'error')下有效。
40
- * @param error 错误信息,可以是 Error 对象或自定义描述字符串
41
- */
42
- export declare function reportError(error: Error | string): void;
43
- export declare const debug: {
44
- /**
45
- * 获取存储适配器类型
46
- */
19
+ declare function addCustomEvent(tagName: string, payload: any): void;
20
+ declare function setConsumeOnlyMode(enable: boolean): void;
21
+ declare function isConsumeOnlyMode(): boolean;
22
+ declare function toggleConsumeOnlyMode(): boolean;
23
+ declare function reportError(error: Error | string): void;
24
+ declare const debug: {
47
25
  getStorageAdapterType(): string;
48
- /**
49
- * 获取设备ID
50
- */
51
26
  getDeviceId: () => string;
52
- /**
53
- * 重置上传状态
54
- */
55
27
  resetUploadState: typeof forceResetUploadState;
56
- /**
57
- * 获取存储状态
58
- */
59
28
  getStorageState(): Promise<{
60
29
  adapterType: string;
61
30
  eventCount: number;
62
31
  }>;
63
- /**
64
- * 清空存储数据
65
- */
66
32
  clearStorage(): Promise<void>;
67
- /**
68
- * 检查URL是否应该被记录(白名单且不在黑名单中)
69
- */
70
33
  shouldRecordUrl: typeof shouldRecordUrl;
71
34
  getConfig: typeof getConfig;
72
35
  };
36
+ export { init, cancelRecord, addCustomEvent, setConsumeOnlyMode, isConsumeOnlyMode, toggleConsumeOnlyMode, updateRouterConfig, getCurrentRouteInfo, manualRouteChange, stopRouterMonitor, setCustomHeaders, getCustomHeaders, setWhiteListUrls, setBlackListUrls, getBlackListUrls, getWhiteListUrls, getSdkLogEndpoint, reportError, cleanupErrorHandler, debug, };
73
37
  //# 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;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;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;AAE/B;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAsCvD;AAGD,eAAO,MAAM,KAAK;IAChB;;OAEG;6BACsB,MAAM;IAO/B;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;;;;IAMH;;OAEG;;IAKH;;OAEG;;;CAGJ,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;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,CAkChD;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"}
package/dist/esm/index.js CHANGED
@@ -3,7 +3,7 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try
3
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
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
9
  import { getDeviceId } from "./lib/utils";
@@ -12,8 +12,7 @@ import { updateRouterConfig, getCurrentRouteInfo, manualRouteChange, stopRouterM
12
12
  import { updateConfig, getConfig } from "./lib/config";
13
13
  import { cleanupErrorHandler, getErrorTrigger } from "./lib/error";
14
14
  import logger from "./lib/logger";
15
- export function init(param) {
16
- // 初始化 RLog SDK
15
+ function init(param) {
17
16
  initRLog(param.serv, param.appId, param.cdnConfigUrl);
18
17
  return {
19
18
  cancel: function cancel() {
@@ -22,60 +21,29 @@ export function init(param) {
22
21
  }
23
22
  };
24
23
  }
25
-
26
- // 单独导出 cancelRecord 方法
27
- export function cancelRecord() {
24
+ function cancelRecord() {
28
25
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
29
26
  logger.warn('Please use rlog.cancel() from initialized instance instead of standalone cancelRecord()');
30
27
  cancelRlog(options, 'standalone function');
31
28
  }
32
- export function addCustomEvent(tagName, payload) {
29
+ function addCustomEvent(tagName, payload) {
33
30
  record.addCustomEvent(tagName, payload);
34
31
  }
35
-
36
- /**
37
- * 设置只采集不上报模式
38
- * @param enable 是否启用只采集不上报模式
39
- */
40
- export function setConsumeOnlyMode(enable) {
32
+ function setConsumeOnlyMode(enable) {
41
33
  updateConfig({
42
34
  consumeOnly: enable
43
35
  });
44
36
  logger.log("Consume only mode ".concat(enable ? 'enabled' : 'disabled'));
45
37
  }
46
-
47
- /**
48
- * 获取当前是否处于只采集不上报模式
49
- * @returns 是否启用只采集不上报模式
50
- */
51
- export function isConsumeOnlyMode() {
38
+ function isConsumeOnlyMode() {
52
39
  return sessionStorage.getItem('RLOG_CONSUME_ONLY') === 'YES' || !!getConfig().consumeOnly;
53
40
  }
54
-
55
- /**
56
- * 切换只采集不上报模式
57
- */
58
- export function toggleConsumeOnlyMode() {
41
+ function toggleConsumeOnlyMode() {
59
42
  var newMode = !getConfig().consumeOnly;
60
43
  setConsumeOnlyMode(newMode);
61
44
  return newMode;
62
45
  }
63
-
64
- // 路由监控相关API
65
- export { updateRouterConfig, getCurrentRouteInfo, manualRouteChange, stopRouterMonitor };
66
-
67
- // 网络监控相关函数
68
- export { setCustomHeaders, setWhiteListUrls, setBlackListUrls, getBlackListUrls, getWhiteListUrls, getSdkLogEndpoint };
69
-
70
- // 错误处理相关函数
71
- export { cleanupErrorHandler };
72
-
73
- /**
74
- * 手动触发错误上报(用于业务自定义错误)
75
- * 仅在错误采集模式(captureMode: 'error')下有效。
76
- * @param error 错误信息,可以是 Error 对象或自定义描述字符串
77
- */
78
- export function reportError(error) {
46
+ function reportError(error) {
79
47
  var config = getConfig();
80
48
  if (config.captureMode !== 'error') {
81
49
  logger.warn('reportError() is only available in error capture mode (captureMode: "error")');
@@ -88,8 +56,6 @@ export function reportError(error) {
88
56
  }
89
57
  var message = typeof error === 'string' ? error : error.message;
90
58
  var stack = _typeof(error) === 'object' && error.stack ? error.stack : undefined;
91
-
92
- // 同时记录为 rrweb 自定义事件
93
59
  try {
94
60
  record.addCustomEvent('custom-error-event', {
95
61
  type: 'CUSTOM_ERROR',
@@ -101,8 +67,6 @@ export function reportError(error) {
101
67
  } catch (e) {
102
68
  logger.warn('Failed to add custom error event:', e);
103
69
  }
104
-
105
- // 通知错误触发器
106
70
  trigger.onError({
107
71
  type: 'custom',
108
72
  message: message,
@@ -112,30 +76,12 @@ export function reportError(error) {
112
76
  }
113
77
  });
114
78
  }
115
-
116
- // 调试和测试相关API
117
- export var debug = {
118
- /**
119
- * 获取存储适配器类型
120
- */
79
+ var debug = {
121
80
  getStorageAdapterType: function getStorageAdapterType() {
122
81
  return storage.getAdapterType();
123
82
  },
124
- // get storage() {
125
- // return storage;
126
- // },
127
-
128
- /**
129
- * 获取设备ID
130
- */
131
83
  getDeviceId: getDeviceId,
132
- /**
133
- * 重置上传状态
134
- */
135
84
  resetUploadState: forceResetUploadState,
136
- /**
137
- * 获取存储状态
138
- */
139
85
  getStorageState: function getStorageState() {
140
86
  return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
141
87
  var deviceId;
@@ -151,9 +97,6 @@ export var debug = {
151
97
  }, _callee);
152
98
  }))();
153
99
  },
154
- /**
155
- * 清空存储数据
156
- */
157
100
  clearStorage: function clearStorage() {
158
101
  return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
159
102
  var deviceId;
@@ -169,9 +112,23 @@ export var debug = {
169
112
  }, _callee2);
170
113
  }))();
171
114
  },
172
- /**
173
- * 检查URL是否应该被记录(白名单且不在黑名单中)
174
- */
175
115
  shouldRecordUrl: shouldRecordUrl,
176
116
  getConfig: getConfig
177
- };
117
+ };
118
+
119
+ // 统一导出所有公共 API
120
+ export {
121
+ // 核心初始化
122
+ init, cancelRecord,
123
+ // 自定义事件
124
+ addCustomEvent,
125
+ // 只采集不上报模式
126
+ setConsumeOnlyMode, isConsumeOnlyMode, toggleConsumeOnlyMode,
127
+ // 路由监控
128
+ updateRouterConfig, getCurrentRouteInfo, manualRouteChange, stopRouterMonitor,
129
+ // 网络监控
130
+ setCustomHeaders, getCustomHeaders, setWhiteListUrls, setBlackListUrls, getBlackListUrls, getWhiteListUrls, getSdkLogEndpoint,
131
+ // 错误处理
132
+ reportError, cleanupErrorHandler,
133
+ // 调试工具
134
+ 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":"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"}
@@ -5,6 +5,7 @@ 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";
8
9
  // 从URL中提取指定参数并存储到sessionStorage中
9
10
  var cacheUrlParams = function cacheUrlParams() {
10
11
  var config = getConfig();
@@ -22,62 +23,83 @@ var cacheUrlParams = function cacheUrlParams() {
22
23
  var getCachedParam = function getCachedParam(paramName) {
23
24
  return sessionStorage.getItem("rlog-".concat(paramName));
24
25
  };
26
+
27
+ /**
28
+ * 构建上传查询参数(纯函数,供 Worker 管理器复用)
29
+ * @param opts 包含 appId、deviceId、data 的选项
30
+ * @returns 查询参数键值对
31
+ */
32
+ export function buildQueryParams(opts) {
33
+ var _opts$data, _opts$data2;
34
+ // 缓存URL中的参数
35
+ cacheUrlParams();
36
+ var lastIndex = opts.data && opts.data.length > 0 ? opts.data.length - 1 : -1;
37
+ var queryParams = {
38
+ deviceId: opts.deviceId,
39
+ appId: opts.appId,
40
+ 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,
41
+ 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
42
+ };
43
+
44
+ // 从配置中获取需要上报的参数名称列表
45
+ var config = getConfig();
46
+ var paramsToReport = config.urlParamsToCache || ['taskId']; // 默认上报taskId
47
+
48
+ // 添加缓存的参数到查询字符串中
49
+ paramsToReport.forEach(function (paramName) {
50
+ var paramValue = getCachedParam(paramName);
51
+ if (paramValue) {
52
+ queryParams[paramName] = paramValue;
53
+ }
54
+ });
55
+ return queryParams;
56
+ }
25
57
  export var upload = /*#__PURE__*/function () {
26
58
  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;
59
+ var queryParams, queryString, api, formData, customHeaders, response, responseData, error;
29
60
  return _regeneratorRuntime().wrap(function _callee$(_context) {
30
61
  while (1) switch (_context.prev = _context.next) {
31
62
  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,
63
+ // 构建查询参数
64
+ queryParams = buildQueryParams({
39
65
  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
- }
66
+ deviceId: opt.deviceId,
67
+ data: opt.data
51
68
  });
52
69
  queryString = new URLSearchParams(queryParams);
53
70
  api = "".concat(opt.url).concat(queryString ? "?".concat(queryString) : '');
54
71
  formData = new FormData();
55
72
  formData.append('file', new Blob([JSON.stringify(opt.data)]), generateUUIDCompat() + '.json');
56
- _context.next = 12;
57
- return post(api, formData);
58
- case 12:
73
+
74
+ // 获取自定义请求头
75
+ customHeaders = getCustomHeaders();
76
+ _context.next = 8;
77
+ return post(api, formData, {
78
+ headers: customHeaders
79
+ });
80
+ case 8:
59
81
  response = _context.sent;
60
- _context.prev = 13;
82
+ _context.prev = 9;
61
83
  responseData = typeof response.data === 'string' ? JSON.parse(response.data) : response.data;
62
- _context.next = 20;
84
+ _context.next = 16;
63
85
  break;
64
- case 17:
65
- _context.prev = 17;
66
- _context.t0 = _context["catch"](13);
86
+ case 13:
87
+ _context.prev = 13;
88
+ _context.t0 = _context["catch"](9);
67
89
  return _context.abrupt("return");
68
- case 20:
90
+ case 16:
69
91
  if (!(responseData && _typeof(responseData) === 'object' && responseData.success === false)) {
70
- _context.next = 24;
92
+ _context.next = 20;
71
93
  break;
72
94
  }
73
95
  error = new Error(responseData.errorMessage || 'Upload failed with success=false'); // 将完整的响应数据附加到错误对象上
74
96
  error.responseData = responseData;
75
97
  throw error;
76
- case 24:
98
+ case 20:
77
99
  case "end":
78
100
  return _context.stop();
79
101
  }
80
- }, _callee, null, [[13, 17]]);
102
+ }, _callee, null, [[9, 13]]);
81
103
  }));
82
104
  return function upload(_x) {
83
105
  return _ref.apply(this, arguments);
@@ -11,8 +11,6 @@ export interface ConsoleRecordConfig {
11
11
  export interface ErrorCaptureConfig {
12
12
  beforeDuration?: number;
13
13
  afterDuration?: number;
14
- maxBufferSize?: number;
15
- triggerErrors?: ('js' | 'promise' | 'resource' | 'http' | 'custom')[];
16
14
  httpErrorThreshold?: number;
17
15
  }
18
16
  export interface CdnConfig {
@@ -21,8 +19,8 @@ export interface CdnConfig {
21
19
  ignoreClass?: string;
22
20
  blockClass?: string;
23
21
  maskTextClass?: string;
24
- samplingRate: number;
25
22
  sampling?: {
23
+ canvas?: number;
26
24
  mousemove?: number | boolean;
27
25
  scroll?: number;
28
26
  input?: 'all' | 'last';
@@ -35,19 +33,15 @@ export interface CdnConfig {
35
33
  clearStorageBeforeRecord?: boolean;
36
34
  console?: ConsoleRecordConfig;
37
35
  http?: boolean;
38
- error?: boolean;
39
36
  routerMonitor?: {
40
37
  enable?: boolean;
41
38
  trackHashChange?: boolean;
42
39
  trackHistoryChange?: boolean;
43
40
  trackPageStayTime?: boolean;
44
41
  ignoreRoutes?: string[];
45
- customMatchers?: Array<{
46
- pattern: string | RegExp;
47
- name?: string;
48
- }>;
49
42
  };
50
43
  packEvents?: boolean;
44
+ error?: boolean;
51
45
  captureMode?: 'full' | 'error';
52
46
  errorCapture?: ErrorCaptureConfig;
53
47
  }
@@ -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;AA+CD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAuC3E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAEhE;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,SAAS,CAErC;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBtE"}
@@ -10,6 +10,7 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
10
10
  import { get } from "./request";
11
11
  import { deepMergeConfig } from "./utils";
12
12
  import logger from "./logger";
13
+ import { getCustomHeaders } from "./net";
13
14
 
14
15
  // Console录制插件配置类型定义
15
16
 
@@ -20,7 +21,6 @@ import logger from "./logger";
20
21
  // 默认配置
21
22
  var DEFAULT_CONFIG = {
22
23
  enable: true,
23
- samplingRate: 15,
24
24
  uploadInterval: 2000,
25
25
  configUpdateInterval: 300000,
26
26
  // 5分钟
@@ -41,25 +41,25 @@ var DEFAULT_CONFIG = {
41
41
  blockClass: 'rr-block',
42
42
  maskTextClass: 'rr-mask',
43
43
  sampling: {
44
+ canvas: 15,
45
+ // Canvas 采样率 (帧/秒)
44
46
  mousemove: 50,
45
47
  // 每50ms最多采集一次mousemove事件
46
48
  scroll: 100,
47
49
  // 滚动事件防抖,每100ms采集一次,
48
50
  input: 'last' // 输入只记录最后一次,
49
51
  },
50
- error: false,
51
- // 默认不启用错误处理
52
52
  packEvents: false,
53
53
  // 默认不使用rrweb的packFn压缩事件数据
54
54
  clearStorageBeforeRecord: true,
55
55
  // 默认在开始录制前清空存储数据
56
+ error: false,
57
+ // 默认不启用错误监听上报,错误采集模式下默认true
56
58
  captureMode: 'full',
57
59
  // 默认全量采集模式
58
60
  errorCapture: {
59
61
  beforeDuration: 30000,
60
62
  afterDuration: 30000,
61
- maxBufferSize: 10000,
62
- triggerErrors: ['js', 'promise', 'resource', 'http', 'custom'],
63
63
  httpErrorThreshold: 400
64
64
  },
65
65
  // 路由监控配置
@@ -71,9 +71,7 @@ var DEFAULT_CONFIG = {
71
71
  trackHistoryChange: true,
72
72
  trackPageStayTime: true,
73
73
  // 是否计算页面停留时间
74
- ignoreRoutes: [],
75
- // 路由是否应该被忽略
76
- customMatchers: [] // 自定义匹配规则
74
+ ignoreRoutes: [] // 路由是否应该被忽略
77
75
  }
78
76
  };
79
77
 
@@ -95,21 +93,25 @@ export function fetchConfigFromCdn(_x) {
95
93
  */
96
94
  function _fetchConfigFromCdn() {
97
95
  _fetchConfigFromCdn = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(cdnUrl) {
98
- var response, config;
96
+ var customHeaders, response, config;
99
97
  return _regeneratorRuntime().wrap(function _callee$(_context) {
100
98
  while (1) switch (_context.prev = _context.next) {
101
99
  case 0:
102
100
  _context.prev = 0;
103
- _context.next = 3;
104
- return get(cdnUrl);
105
- case 3:
101
+ // 从 net.ts 中获取自定义请求头
102
+ customHeaders = getCustomHeaders();
103
+ _context.next = 4;
104
+ return get(cdnUrl, {
105
+ headers: customHeaders
106
+ });
107
+ case 4:
106
108
  response = _context.sent;
107
109
  if (response.ok) {
108
- _context.next = 6;
110
+ _context.next = 7;
109
111
  break;
110
112
  }
111
113
  throw new Error("Failed to fetch config: ".concat(response.status));
112
- case 6:
114
+ case 7:
113
115
  config = {}; // 处理三种不同的响应格式
114
116
  if (response.data) {
115
117
  // 情况1: response.data 直接就是配置对象
@@ -130,16 +132,16 @@ function _fetchConfigFromCdn() {
130
132
  }
131
133
  }
132
134
  return _context.abrupt("return", deepMergeConfig(DEFAULT_CONFIG, config));
133
- case 11:
134
- _context.prev = 11;
135
+ case 12:
136
+ _context.prev = 12;
135
137
  _context.t0 = _context["catch"](0);
136
138
  logger.warn('Failed to fetch config from CDN, using default config', _context.t0);
137
139
  return _context.abrupt("return", _objectSpread({}, DEFAULT_CONFIG));
138
- case 15:
140
+ case 16:
139
141
  case "end":
140
142
  return _context.stop();
141
143
  }
142
- }, _callee, null, [[0, 11]]);
144
+ }, _callee, null, [[0, 12]]);
143
145
  }));
144
146
  return _fetchConfigFromCdn.apply(this, arguments);
145
147
  }