-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdebug-cache.js
More file actions
128 lines (111 loc) · 4.05 KB
/
debug-cache.js
File metadata and controls
128 lines (111 loc) · 4.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/**
* Debug Cache Module for hide-dotpaths Plugin
* Copyright (C) 2025 JMSolo (QuickBox.io)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* @author JMSolo
* @version 2.5.210
*/
// Debug cache to prevent spam logging
const debugCache = {
// Cache for last logged message
lastMessage: "",
// Cache for message counts
messageCounts: {},
// Timestamp for rate limiting
lastLogTime: 0,
// Minimum time between logs (ms)
minLogInterval: 50,
};
// Self-contained debug logging function for debug-cache.js
function cacheDebugLog(messageKey, ...args) {
// Get config from window object (set by conf.php)
const config = window.hide_dotpaths_config || {};
// Only log if debug mode is enabled
if (typeof config.debugMode === "undefined" || !config.debugMode) {
return;
}
// Get formatted message with fallback for when theUILang isn't loaded yet
let message;
if (typeof theUILang !== "undefined" && theUILang[messageKey]) {
message = theUILang[messageKey];
} else {
// Fallback to a simple format when translations aren't available
message = messageKey
.replace(/-/g, " ")
.replace(/\b\w/g, (l) => l.toUpperCase());
}
const formattedMessage = args.length > 0 ? message + args.join("") : message;
// Log with appropriate prefix
console.debug("[hide-dotpaths-cache-debug]", formattedMessage);
}
// Smart debug logging function - simple debouncer
function smartDebugLog(messageKey, ...args) {
// Check if config exists and debug mode is enabled
if (typeof config === "undefined") return;
// If debug mode isn't set yet, assume it's enabled for early logging
if (typeof config.debugMode === "undefined" || config.debugMode) {
const now = Date.now();
const message = theUILang[messageKey] || messageKey;
const formattedMessage =
args.length > 0 ? message + args.join("") : message;
// DEBUG: Show what's happening inside the cache function
cacheDebugLog(
"hide-dotpaths-debug-cache-processing",
messageKey,
" formatted: ",
formattedMessage
);
// Rate limiting to prevent spam
if (now - debugCache.lastLogTime < debugCache.minLogInterval) {
cacheDebugLog("hide-dotpaths-debug-cache-rate-limited", messageKey);
return;
}
// Always log important messages (filtered items, patch status, etc.)
if (
messageKey.includes("filtered-item") ||
messageKey.includes("filtered-filemanager") ||
messageKey.includes("patch-applied") ||
messageKey.includes("checkbox-replaced") ||
messageKey.includes("filtered-count")
) {
console.debug("[hide-dotpaths]", formattedMessage);
debugCache.lastLogTime = now;
cacheDebugLog("hide-dotpaths-debug-cache-important-logged", messageKey);
return;
}
// For repetitive function calls, only log if message is different
if (formattedMessage !== debugCache.lastMessage) {
console.debug("[hide-dotpaths]", formattedMessage);
debugCache.lastMessage = formattedMessage;
debugCache.lastLogTime = now;
cacheDebugLog("hide-dotpaths-debug-cache-different-logged", messageKey);
} else {
cacheDebugLog("hide-dotpaths-debug-cache-duplicate-skipped", messageKey);
}
}
}
// Reset cache function for testing
function resetDebugCache() {
debugCache.lastMessage = "";
debugCache.messageCounts = {};
debugCache.lastLogTime = 0;
}
// Export for use in main plugin
window.hideDotpathsDebugCache = {
smartDebugLog,
resetDebugCache,
debugCache,
};