visang-tracker 0.9.10 → 0.9.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.
- package/dist/index.js +25 -49
- package/package.json +44 -45
package/dist/index.js
CHANGED
|
@@ -1,30 +1,17 @@
|
|
|
1
1
|
import api, { setBaseUrl } from './api';
|
|
2
|
+
const MAX_QUEUE_SIZE = 500;
|
|
2
3
|
let LOG_BATCH_MAX = 20;
|
|
3
4
|
let LOG_FLUSH_INTERVAL_MS = 10000;
|
|
4
5
|
const LOG_STORAGE_KEY = 'aidt_trace_log_queue_v1';
|
|
5
6
|
let logQueue = [];
|
|
6
7
|
let flushTimerId = null;
|
|
7
8
|
let isFlushing = false;
|
|
8
|
-
const hasWindow = typeof window !== 'undefined';
|
|
9
|
-
const hasDocument = typeof document !== 'undefined';
|
|
10
|
-
const canUseStorage = () => {
|
|
11
|
-
if (!hasWindow)
|
|
12
|
-
return false;
|
|
13
|
-
try {
|
|
14
|
-
return !!window.localStorage;
|
|
15
|
-
}
|
|
16
|
-
catch {
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
9
|
try {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
logQueue = parsed;
|
|
27
|
-
}
|
|
10
|
+
const saved = localStorage.getItem(LOG_STORAGE_KEY);
|
|
11
|
+
if (saved) {
|
|
12
|
+
const parsed = JSON.parse(saved);
|
|
13
|
+
if (Array.isArray(parsed)) {
|
|
14
|
+
logQueue = parsed;
|
|
28
15
|
}
|
|
29
16
|
}
|
|
30
17
|
}
|
|
@@ -32,10 +19,8 @@ catch (e) {
|
|
|
32
19
|
console.log(e);
|
|
33
20
|
}
|
|
34
21
|
const persistQueue = () => {
|
|
35
|
-
if (!canUseStorage())
|
|
36
|
-
return;
|
|
37
22
|
try {
|
|
38
|
-
|
|
23
|
+
localStorage.setItem(LOG_STORAGE_KEY, JSON.stringify(logQueue));
|
|
39
24
|
}
|
|
40
25
|
catch {
|
|
41
26
|
/* storage may be full or unavailable */
|
|
@@ -56,56 +41,47 @@ const flushLogQueue = async () => {
|
|
|
56
41
|
return;
|
|
57
42
|
isFlushing = true;
|
|
58
43
|
try {
|
|
59
|
-
while (logQueue.length > 0) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
catch (err) {
|
|
65
|
-
console.error(err);
|
|
66
|
-
// Keep remaining queue for a future retry
|
|
67
|
-
break;
|
|
68
|
-
}
|
|
69
|
-
logQueue.splice(0, batch.length);
|
|
70
|
-
persistQueue();
|
|
71
|
-
}
|
|
44
|
+
// while (logQueue.length > 0) {
|
|
45
|
+
const batch = logQueue.splice(0, LOG_BATCH_MAX);
|
|
46
|
+
await transportBatch(batch);
|
|
47
|
+
persistQueue();
|
|
48
|
+
// }
|
|
72
49
|
}
|
|
73
50
|
finally {
|
|
74
51
|
isFlushing = false;
|
|
75
52
|
}
|
|
76
53
|
};
|
|
77
54
|
const scheduleFlush = () => {
|
|
78
|
-
if (!hasWindow || !hasDocument)
|
|
79
|
-
return;
|
|
80
55
|
if (flushTimerId != null)
|
|
81
56
|
return;
|
|
82
57
|
flushTimerId = window.setInterval(() => {
|
|
83
58
|
if (document.visibilityState === 'visible') {
|
|
84
|
-
flushLogQueue()
|
|
85
|
-
console.error(err);
|
|
86
|
-
});
|
|
59
|
+
flushLogQueue();
|
|
87
60
|
}
|
|
88
61
|
}, LOG_FLUSH_INTERVAL_MS);
|
|
89
62
|
};
|
|
90
63
|
const enqueueTraceLog = (item) => {
|
|
91
64
|
logQueue.push(item);
|
|
65
|
+
if (logQueue.length > MAX_QUEUE_SIZE) {
|
|
66
|
+
logQueue.shift();
|
|
67
|
+
console.warn('[Tracker] Queue overflow, dropping oldest log');
|
|
68
|
+
}
|
|
92
69
|
persistQueue();
|
|
93
70
|
scheduleFlush();
|
|
71
|
+
// if (logQueue.length >= LOG_BATCH_MAX) {
|
|
72
|
+
// flushLogQueue();
|
|
73
|
+
// } else {
|
|
74
|
+
// }
|
|
94
75
|
};
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
console.error(err);
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
}
|
|
76
|
+
window.addEventListener('visibilitychange', () => {
|
|
77
|
+
flushLogQueue();
|
|
78
|
+
});
|
|
102
79
|
const sendTraceLogDebug = (errorLog) => {
|
|
103
80
|
enqueueTraceLog(errorLog);
|
|
104
81
|
};
|
|
105
82
|
const resetLogQueue = () => {
|
|
106
83
|
logQueue = [];
|
|
107
|
-
if (!canUseStorage())
|
|
108
|
-
return;
|
|
84
|
+
// if (!canUseStorage()) return;
|
|
109
85
|
try {
|
|
110
86
|
window.localStorage.removeItem(LOG_STORAGE_KEY);
|
|
111
87
|
}
|
package/package.json
CHANGED
|
@@ -1,47 +1,46 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
"files": [
|
|
15
|
-
"dist"
|
|
16
|
-
],
|
|
17
|
-
"scripts": {
|
|
18
|
-
"build": "tsc",
|
|
19
|
-
"prepare": "npm run build"
|
|
20
|
-
},
|
|
21
|
-
"keywords": [
|
|
22
|
-
"visang",
|
|
23
|
-
"tracker",
|
|
24
|
-
"logging",
|
|
25
|
-
"analytics"
|
|
26
|
-
],
|
|
27
|
-
"author": "",
|
|
28
|
-
"license": "MIT",
|
|
29
|
-
"devDependencies": {
|
|
30
|
-
"@types/node": "^22.14.1",
|
|
31
|
-
"@types/qs": "^6.14.0",
|
|
32
|
-
"@typescript-eslint/eslint-plugin": "^8.46.2",
|
|
33
|
-
"@typescript-eslint/parser": "^8.46.2",
|
|
34
|
-
"eslint": "^9.38.0",
|
|
35
|
-
"eslint-config-prettier": "^10.1.8",
|
|
36
|
-
"eslint-plugin-react": "^7.37.5",
|
|
37
|
-
"eslint-plugin-react-hooks": "^7.0.0",
|
|
38
|
-
"prettier": "^3.6.2",
|
|
39
|
-
"typescript": "^5.8.3"
|
|
40
|
-
},
|
|
41
|
-
"dependencies": {
|
|
42
|
-
"axios": "^1.12.2",
|
|
43
|
-
"googleapis": "^148.0.0",
|
|
44
|
-
"qs": "^6.14.0",
|
|
45
|
-
"url": "^0.11.4"
|
|
2
|
+
"name": "visang-tracker",
|
|
3
|
+
"version": "0.9.12",
|
|
4
|
+
"description": "Lightweight logging and tracking helper for Visang apps.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"import": "./dist/index.js",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"default": "./dist/index.js"
|
|
46
12
|
}
|
|
47
|
-
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"keywords": [
|
|
18
|
+
"visang",
|
|
19
|
+
"tracker",
|
|
20
|
+
"logging",
|
|
21
|
+
"analytics"
|
|
22
|
+
],
|
|
23
|
+
"author": "",
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@types/node": "^22.14.1",
|
|
27
|
+
"@types/qs": "^6.14.0",
|
|
28
|
+
"@typescript-eslint/eslint-plugin": "^8.46.2",
|
|
29
|
+
"@typescript-eslint/parser": "^8.46.2",
|
|
30
|
+
"eslint": "^9.38.0",
|
|
31
|
+
"eslint-config-prettier": "^10.1.8",
|
|
32
|
+
"eslint-plugin-react": "^7.37.5",
|
|
33
|
+
"eslint-plugin-react-hooks": "^7.0.0",
|
|
34
|
+
"prettier": "^3.6.2",
|
|
35
|
+
"typescript": "^5.8.3"
|
|
36
|
+
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"axios": "^1.12.2",
|
|
39
|
+
"googleapis": "^148.0.0",
|
|
40
|
+
"qs": "^6.14.0",
|
|
41
|
+
"url": "^0.11.4"
|
|
42
|
+
},
|
|
43
|
+
"scripts": {
|
|
44
|
+
"build": "tsc"
|
|
45
|
+
}
|
|
46
|
+
}
|