@antglobal/rlog-sdk 0.0.1755855517-dev.15 → 0.0.1755855517-dev.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +12 -9
- package/dist/esm/lib/api.d.ts.map +1 -1
- package/dist/esm/lib/api.js +5 -4
- package/dist/esm/lib/config.d.ts +4 -0
- package/dist/esm/lib/config.d.ts.map +1 -1
- package/dist/esm/lib/config.js +22 -11
- package/dist/esm/lib/constants.d.ts +89 -0
- package/dist/esm/lib/constants.d.ts.map +1 -0
- package/dist/esm/lib/constants.js +145 -0
- package/dist/esm/lib/drive/indexeddb-adapt.d.ts +4 -0
- package/dist/esm/lib/drive/indexeddb-adapt.d.ts.map +1 -1
- package/dist/esm/lib/drive/indexeddb-adapt.js +58 -18
- package/dist/esm/lib/drive/localstorage-adapt.d.ts +4 -0
- package/dist/esm/lib/drive/localstorage-adapt.d.ts.map +1 -1
- package/dist/esm/lib/drive/localstorage-adapt.js +71 -31
- package/dist/esm/lib/drive/memory-adapt.d.ts +4 -0
- package/dist/esm/lib/drive/memory-adapt.d.ts.map +1 -1
- package/dist/esm/lib/drive/memory-adapt.js +46 -17
- package/dist/esm/lib/drive/safe-storage.d.ts +24 -0
- package/dist/esm/lib/drive/safe-storage.d.ts.map +1 -0
- package/dist/esm/lib/drive/safe-storage.js +96 -0
- package/dist/esm/lib/drive/storage-interface.d.ts +6 -0
- package/dist/esm/lib/drive/storage-interface.d.ts.map +1 -1
- package/dist/esm/lib/error.d.ts.map +1 -1
- package/dist/esm/lib/error.js +2 -3
- package/dist/esm/lib/init.d.ts.map +1 -1
- package/dist/esm/lib/init.js +97 -56
- package/dist/esm/lib/logger.js +6 -5
- package/dist/esm/lib/net.d.ts.map +1 -1
- package/dist/esm/lib/net.js +8 -14
- package/dist/esm/lib/request.d.ts.map +1 -1
- package/dist/esm/lib/request.js +2 -2
- package/dist/esm/lib/router-monitor.d.ts.map +1 -1
- package/dist/esm/lib/router-monitor.js +10 -6
- package/dist/esm/lib/rrweb.d.ts.map +1 -1
- package/dist/esm/lib/rrweb.js +9 -9
- package/dist/esm/lib/storage-manager.d.ts +4 -0
- package/dist/esm/lib/storage-manager.d.ts.map +1 -1
- package/dist/esm/lib/storage-manager.js +50 -26
- package/dist/esm/lib/upload-worker-manager.d.ts +4 -0
- package/dist/esm/lib/upload-worker-manager.d.ts.map +1 -1
- package/dist/esm/lib/upload-worker-manager.js +31 -22
- package/dist/esm/lib/upload-worker.d.ts +1 -1
- package/dist/esm/lib/upload-worker.d.ts.map +1 -1
- package/dist/esm/lib/upload-worker.js +3 -1
- package/dist/esm/lib/uploader.d.ts +26 -0
- package/dist/esm/lib/uploader.d.ts.map +1 -1
- package/dist/esm/lib/uploader.js +151 -18
- package/dist/esm/lib/utils.d.ts +64 -0
- package/dist/esm/lib/utils.d.ts.map +1 -1
- package/dist/esm/lib/utils.js +230 -5
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +11 -8
- package/dist/lib/lib/api.d.ts.map +1 -1
- package/dist/lib/lib/api.js +5 -4
- package/dist/lib/lib/config.d.ts +4 -0
- package/dist/lib/lib/config.d.ts.map +1 -1
- package/dist/lib/lib/config.js +23 -11
- package/dist/lib/lib/constants.d.ts +89 -0
- package/dist/lib/lib/constants.d.ts.map +1 -0
- package/dist/lib/lib/constants.js +151 -0
- package/dist/lib/lib/drive/indexeddb-adapt.d.ts +4 -0
- package/dist/lib/lib/drive/indexeddb-adapt.d.ts.map +1 -1
- package/dist/lib/lib/drive/indexeddb-adapt.js +58 -17
- package/dist/lib/lib/drive/localstorage-adapt.d.ts +4 -0
- package/dist/lib/lib/drive/localstorage-adapt.d.ts.map +1 -1
- package/dist/lib/lib/drive/localstorage-adapt.js +71 -31
- package/dist/lib/lib/drive/memory-adapt.d.ts +4 -0
- package/dist/lib/lib/drive/memory-adapt.d.ts.map +1 -1
- package/dist/lib/lib/drive/memory-adapt.js +45 -17
- package/dist/lib/lib/drive/safe-storage.d.ts +24 -0
- package/dist/lib/lib/drive/safe-storage.d.ts.map +1 -0
- package/dist/lib/lib/drive/safe-storage.js +102 -0
- package/dist/lib/lib/drive/storage-interface.d.ts +6 -0
- package/dist/lib/lib/drive/storage-interface.d.ts.map +1 -1
- package/dist/lib/lib/error.d.ts.map +1 -1
- package/dist/lib/lib/error.js +2 -3
- package/dist/lib/lib/init.d.ts.map +1 -1
- package/dist/lib/lib/init.js +94 -53
- package/dist/lib/lib/logger.js +5 -5
- package/dist/lib/lib/net.d.ts.map +1 -1
- package/dist/lib/lib/net.js +12 -18
- package/dist/lib/lib/request.d.ts.map +1 -1
- package/dist/lib/lib/request.js +3 -3
- package/dist/lib/lib/router-monitor.d.ts.map +1 -1
- package/dist/lib/lib/router-monitor.js +10 -6
- package/dist/lib/lib/rrweb.d.ts.map +1 -1
- package/dist/lib/lib/rrweb.js +8 -8
- package/dist/lib/lib/storage-manager.d.ts +4 -0
- package/dist/lib/lib/storage-manager.d.ts.map +1 -1
- package/dist/lib/lib/storage-manager.js +50 -26
- package/dist/lib/lib/upload-worker-manager.d.ts +4 -0
- package/dist/lib/lib/upload-worker-manager.d.ts.map +1 -1
- package/dist/lib/lib/upload-worker-manager.js +31 -21
- package/dist/lib/lib/upload-worker.d.ts +1 -1
- package/dist/lib/lib/upload-worker.d.ts.map +1 -1
- package/dist/lib/lib/upload-worker.js +2 -1
- package/dist/lib/lib/uploader.d.ts +26 -0
- package/dist/lib/lib/uploader.d.ts.map +1 -1
- package/dist/lib/lib/uploader.js +152 -17
- package/dist/lib/lib/utils.d.ts +64 -0
- package/dist/lib/lib/utils.d.ts.map +1 -1
- package/dist/lib/lib/utils.js +238 -6
- package/dist/rlog-sdk.min.js +1 -1
- package/package.json +1 -1
package/dist/esm/index.d.ts
CHANGED
|
@@ -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;
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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(
|
|
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(
|
|
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
|
|
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
|
-
|
|
85
|
-
return _context.abrupt("return", storage.getStorageState(
|
|
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
|
|
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
|
-
|
|
100
|
-
return _context2.abrupt("return", storage.clear(
|
|
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":"
|
|
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"}
|
package/dist/esm/lib/api.js
CHANGED
|
@@ -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 ||
|
|
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("
|
|
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("
|
|
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 ||
|
|
47
|
+
var paramsToReport = config.urlParamsToCache || DEFAULT_URL_PARAMS_TO_CACHE;
|
|
47
48
|
|
|
48
49
|
// 添加缓存的参数到查询字符串中
|
|
49
50
|
paramsToReport.forEach(function (paramName) {
|
package/dist/esm/lib/config.d.ts
CHANGED
|
@@ -61,6 +61,10 @@ export declare function updateConfig(newConfig: Partial<CdnConfig>): void;
|
|
|
61
61
|
* @returns 当前配置
|
|
62
62
|
*/
|
|
63
63
|
export declare function getConfig(): CdnConfig;
|
|
64
|
+
/**
|
|
65
|
+
* 停止配置定时更新
|
|
66
|
+
*/
|
|
67
|
+
export declare function stopConfigUpdate(): void;
|
|
64
68
|
/**
|
|
65
69
|
* 初始化配置管理器
|
|
66
70
|
* @param cdnUrl CDN 配置文件地址
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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"}
|
package/dist/esm/lib/config.js
CHANGED
|
@@ -78,6 +78,9 @@ var DEFAULT_CONFIG = {
|
|
|
78
78
|
// 全局配置变量
|
|
79
79
|
var globalConfig = _objectSpread({}, DEFAULT_CONFIG);
|
|
80
80
|
|
|
81
|
+
// CDN 配置定时更新的 interval ID
|
|
82
|
+
var configUpdateTimer = null;
|
|
83
|
+
|
|
81
84
|
/**
|
|
82
85
|
* 从 CDN 获取配置
|
|
83
86
|
* @param cdnUrl CDN 配置文件地址
|
|
@@ -106,12 +109,6 @@ function _fetchConfigFromCdn() {
|
|
|
106
109
|
});
|
|
107
110
|
case 4:
|
|
108
111
|
response = _context.sent;
|
|
109
|
-
if (response.ok) {
|
|
110
|
-
_context.next = 7;
|
|
111
|
-
break;
|
|
112
|
-
}
|
|
113
|
-
throw new Error("Failed to fetch config: ".concat(response.status));
|
|
114
|
-
case 7:
|
|
115
112
|
config = {}; // 处理三种不同的响应格式
|
|
116
113
|
if (response.data) {
|
|
117
114
|
// 情况1: response.data 直接就是配置对象
|
|
@@ -132,16 +129,16 @@ function _fetchConfigFromCdn() {
|
|
|
132
129
|
}
|
|
133
130
|
}
|
|
134
131
|
return _context.abrupt("return", deepMergeConfig(DEFAULT_CONFIG, config));
|
|
135
|
-
case
|
|
136
|
-
_context.prev =
|
|
132
|
+
case 10:
|
|
133
|
+
_context.prev = 10;
|
|
137
134
|
_context.t0 = _context["catch"](0);
|
|
138
135
|
logger.warn('Failed to fetch config from CDN, using default config', _context.t0);
|
|
139
136
|
return _context.abrupt("return", _objectSpread({}, DEFAULT_CONFIG));
|
|
140
|
-
case
|
|
137
|
+
case 14:
|
|
141
138
|
case "end":
|
|
142
139
|
return _context.stop();
|
|
143
140
|
}
|
|
144
|
-
}, _callee, null, [[0,
|
|
141
|
+
}, _callee, null, [[0, 10]]);
|
|
145
142
|
}));
|
|
146
143
|
return _fetchConfigFromCdn.apply(this, arguments);
|
|
147
144
|
}
|
|
@@ -157,6 +154,16 @@ export function getConfig() {
|
|
|
157
154
|
return _objectSpread({}, globalConfig);
|
|
158
155
|
}
|
|
159
156
|
|
|
157
|
+
/**
|
|
158
|
+
* 停止配置定时更新
|
|
159
|
+
*/
|
|
160
|
+
export function stopConfigUpdate() {
|
|
161
|
+
if (configUpdateTimer) {
|
|
162
|
+
clearInterval(configUpdateTimer);
|
|
163
|
+
configUpdateTimer = null;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
160
167
|
/**
|
|
161
168
|
* 初始化配置管理器
|
|
162
169
|
* @param cdnUrl CDN 配置文件地址
|
|
@@ -185,7 +192,11 @@ function _initConfigManager() {
|
|
|
185
192
|
// 定时更新配置
|
|
186
193
|
updateInterval = config.configUpdateInterval || DEFAULT_CONFIG.configUpdateInterval;
|
|
187
194
|
if (updateInterval) {
|
|
188
|
-
|
|
195
|
+
// 清理之前的定时器(重新初始化场景)
|
|
196
|
+
if (configUpdateTimer) {
|
|
197
|
+
clearInterval(configUpdateTimer);
|
|
198
|
+
}
|
|
199
|
+
configUpdateTimer = setInterval( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
189
200
|
var newConfig;
|
|
190
201
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
191
202
|
while (1) switch (_context2.prev = _context2.next) {
|
|
@@ -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;
|
|
@@ -20,5 +20,9 @@ export declare class IndexedDBAdapter implements StorageAdapter {
|
|
|
20
20
|
* 按时间范围移除事件(移除 sinceTime 及之后的所有事件)
|
|
21
21
|
*/
|
|
22
22
|
removeByTimeRange(deviceId: string, sinceTime: number): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* 获取存储的事件数量(非破坏性只读操作)
|
|
25
|
+
*/
|
|
26
|
+
count(deviceId: string): Promise<number>;
|
|
23
27
|
}
|
|
24
28
|
//# sourceMappingURL=indexeddb-adapt.d.ts.map
|
|
@@ -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;
|
|
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;IAkC3E;;OAEG;IACG,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAc/C"}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
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
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
3
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
5
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
6
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
7
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
8
2
|
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; }
|
|
9
3
|
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); } }
|
|
10
4
|
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); }); }; }
|
|
@@ -15,10 +9,10 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
15
9
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
16
10
|
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
11
|
import logger from "../logger";
|
|
18
|
-
|
|
19
|
-
var
|
|
20
|
-
var
|
|
21
|
-
|
|
12
|
+
import { IDB_DB_NAME, IDB_STORE_NAME, IDB_VERSION, MAX_STORAGE_EVENTS } from "../constants";
|
|
13
|
+
var DB_NAME = IDB_DB_NAME;
|
|
14
|
+
var STORE_NAME = IDB_STORE_NAME;
|
|
15
|
+
var VERSION = IDB_VERSION;
|
|
22
16
|
export var IndexedDBAdapter = /*#__PURE__*/function () {
|
|
23
17
|
function IndexedDBAdapter() {
|
|
24
18
|
_classCallCheck(this, IndexedDBAdapter);
|
|
@@ -199,8 +193,8 @@ export var IndexedDBAdapter = /*#__PURE__*/function () {
|
|
|
199
193
|
record.version = (record.version || 1) + 1;
|
|
200
194
|
|
|
201
195
|
// 限制最大存储量
|
|
202
|
-
if (record.data.length >
|
|
203
|
-
record.data.splice(0, record.data.length -
|
|
196
|
+
if (record.data.length > MAX_STORAGE_EVENTS) {
|
|
197
|
+
record.data.splice(0, record.data.length - MAX_STORAGE_EVENTS);
|
|
204
198
|
}
|
|
205
199
|
var putRequest = store.put(record);
|
|
206
200
|
putRequest.onsuccess = function () {
|
|
@@ -261,8 +255,8 @@ export var IndexedDBAdapter = /*#__PURE__*/function () {
|
|
|
261
255
|
record.version = (record.version || 1) + 1;
|
|
262
256
|
|
|
263
257
|
// 限制最大存储量
|
|
264
|
-
if (record.data.length >
|
|
265
|
-
record.data.splice(0, record.data.length -
|
|
258
|
+
if (record.data.length > MAX_STORAGE_EVENTS) {
|
|
259
|
+
record.data.splice(0, record.data.length - MAX_STORAGE_EVENTS);
|
|
266
260
|
}
|
|
267
261
|
var putRequest = store.put(record);
|
|
268
262
|
putRequest.onsuccess = function () {
|
|
@@ -312,20 +306,19 @@ export var IndexedDBAdapter = /*#__PURE__*/function () {
|
|
|
312
306
|
return _context8.abrupt("return", new Promise(function (resolve, reject) {
|
|
313
307
|
var getRequest = store.get(deviceId);
|
|
314
308
|
getRequest.onsuccess = function () {
|
|
315
|
-
var _record$data;
|
|
316
309
|
var record = getRequest.result || {
|
|
317
310
|
deviceId: deviceId,
|
|
318
311
|
data: [],
|
|
319
312
|
lastModified: Date.now(),
|
|
320
313
|
version: 1
|
|
321
314
|
};
|
|
322
|
-
|
|
315
|
+
record.data = data.concat(record.data);
|
|
323
316
|
record.lastModified = Date.now();
|
|
324
317
|
record.version = (record.version || 1) + 1;
|
|
325
318
|
|
|
326
319
|
// 限制最大存储量
|
|
327
|
-
if (record.data.length >
|
|
328
|
-
record.data.splice(0, record.data.length -
|
|
320
|
+
if (record.data.length > MAX_STORAGE_EVENTS) {
|
|
321
|
+
record.data.splice(0, record.data.length - MAX_STORAGE_EVENTS);
|
|
329
322
|
}
|
|
330
323
|
var putRequest = store.put(record);
|
|
331
324
|
putRequest.onsuccess = function () {
|
|
@@ -607,6 +600,53 @@ export var IndexedDBAdapter = /*#__PURE__*/function () {
|
|
|
607
600
|
return _removeByTimeRange.apply(this, arguments);
|
|
608
601
|
}
|
|
609
602
|
return removeByTimeRange;
|
|
603
|
+
}()
|
|
604
|
+
/**
|
|
605
|
+
* 获取存储的事件数量(非破坏性只读操作)
|
|
606
|
+
*/
|
|
607
|
+
)
|
|
608
|
+
}, {
|
|
609
|
+
key: "count",
|
|
610
|
+
value: (function () {
|
|
611
|
+
var _count = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee19(deviceId) {
|
|
612
|
+
return _regeneratorRuntime().wrap(function _callee19$(_context19) {
|
|
613
|
+
while (1) switch (_context19.prev = _context19.next) {
|
|
614
|
+
case 0:
|
|
615
|
+
return _context19.abrupt("return", this.withTransaction('readonly', /*#__PURE__*/function () {
|
|
616
|
+
var _ref8 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee18(store) {
|
|
617
|
+
return _regeneratorRuntime().wrap(function _callee18$(_context18) {
|
|
618
|
+
while (1) switch (_context18.prev = _context18.next) {
|
|
619
|
+
case 0:
|
|
620
|
+
return _context18.abrupt("return", new Promise(function (resolve, reject) {
|
|
621
|
+
var getRequest = store.get(deviceId);
|
|
622
|
+
getRequest.onsuccess = function () {
|
|
623
|
+
var record = getRequest.result;
|
|
624
|
+
resolve(record ? record.data.length : 0);
|
|
625
|
+
};
|
|
626
|
+
getRequest.onerror = function () {
|
|
627
|
+
return reject(getRequest.error);
|
|
628
|
+
};
|
|
629
|
+
}));
|
|
630
|
+
case 1:
|
|
631
|
+
case "end":
|
|
632
|
+
return _context18.stop();
|
|
633
|
+
}
|
|
634
|
+
}, _callee18);
|
|
635
|
+
}));
|
|
636
|
+
return function (_x25) {
|
|
637
|
+
return _ref8.apply(this, arguments);
|
|
638
|
+
};
|
|
639
|
+
}()));
|
|
640
|
+
case 1:
|
|
641
|
+
case "end":
|
|
642
|
+
return _context19.stop();
|
|
643
|
+
}
|
|
644
|
+
}, _callee19, this);
|
|
645
|
+
}));
|
|
646
|
+
function count(_x24) {
|
|
647
|
+
return _count.apply(this, arguments);
|
|
648
|
+
}
|
|
649
|
+
return count;
|
|
610
650
|
}())
|
|
611
651
|
}]);
|
|
612
652
|
return IndexedDBAdapter;
|
|
@@ -37,5 +37,9 @@ export declare class LocalStorageAdapter implements StorageAdapter {
|
|
|
37
37
|
* 按时间范围移除事件(移除 sinceTime 及之后的所有事件)
|
|
38
38
|
*/
|
|
39
39
|
removeByTimeRange(deviceId: string, sinceTime: number): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* 获取存储的事件数量(非破坏性只读操作)
|
|
42
|
+
*/
|
|
43
|
+
count(deviceId: string): Promise<number>;
|
|
40
44
|
}
|
|
41
45
|
//# sourceMappingURL=localstorage-adapt.d.ts.map
|