content-security-toolkit 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/LICENSE +9 -0
  2. package/README.md +171 -0
  3. package/dist/config/default-extensions-config.json +103 -0
  4. package/dist/core/ContentProtector.d.ts +63 -0
  5. package/dist/core/ContentProtector.js +279 -0
  6. package/dist/core/index.d.ts +1 -0
  7. package/dist/core/index.js +2 -0
  8. package/dist/core/mediator/ContentProtectionMediator.d.ts +86 -0
  9. package/dist/core/mediator/ContentProtectionMediator.js +238 -0
  10. package/dist/core/mediator/eventDataTypes.d.ts +205 -0
  11. package/dist/core/mediator/eventDataTypes.js +23 -0
  12. package/dist/core/mediator/handlers/abstractEventHandler.d.ts +67 -0
  13. package/dist/core/mediator/handlers/abstractEventHandler.js +106 -0
  14. package/dist/core/mediator/handlers/baseEventHandler.d.ts +65 -0
  15. package/dist/core/mediator/handlers/baseEventHandler.js +99 -0
  16. package/dist/core/mediator/handlers/devToolsEventHandler.d.ts +9 -0
  17. package/dist/core/mediator/handlers/devToolsEventHandler.js +95 -0
  18. package/dist/core/mediator/handlers/eventHandlerRegistry.d.ts +9 -0
  19. package/dist/core/mediator/handlers/eventHandlerRegistry.js +34 -0
  20. package/dist/core/mediator/handlers/extensionEventHandlers.d.ts +40 -0
  21. package/dist/core/mediator/handlers/extensionEventHandlers.js +140 -0
  22. package/dist/core/mediator/handlers/iFrameEventHandlers.d.ts +27 -0
  23. package/dist/core/mediator/handlers/iFrameEventHandlers.js +93 -0
  24. package/dist/core/mediator/handlers/index.d.ts +9 -0
  25. package/dist/core/mediator/handlers/index.js +34 -0
  26. package/dist/core/mediator/handlers/screenShotEventHandlers.d.ts +34 -0
  27. package/dist/core/mediator/handlers/screenShotEventHandlers.js +111 -0
  28. package/dist/core/mediator/protection-event.d.ts +94 -0
  29. package/dist/core/mediator/protection-event.js +43 -0
  30. package/dist/core/mediator/types.d.ts +105 -0
  31. package/dist/core/mediator/types.js +1 -0
  32. package/dist/index.d.ts +4 -0
  33. package/dist/index.js +5 -0
  34. package/dist/strategies/AbstractStrategy.d.ts +152 -0
  35. package/dist/strategies/AbstractStrategy.js +296 -0
  36. package/dist/strategies/AbstractStrategy.mediator.d.ts +162 -0
  37. package/dist/strategies/AbstractStrategy.mediator.js +349 -0
  38. package/dist/strategies/ClipboardStrategy.d.ts +67 -0
  39. package/dist/strategies/ClipboardStrategy.js +291 -0
  40. package/dist/strategies/ContextMenuStrategy.d.ts +60 -0
  41. package/dist/strategies/ContextMenuStrategy.js +454 -0
  42. package/dist/strategies/DevToolsStrategy copy.d.ts +85 -0
  43. package/dist/strategies/DevToolsStrategy copy.js +362 -0
  44. package/dist/strategies/DevToolsStrategy-detectorManager.d.ts +70 -0
  45. package/dist/strategies/DevToolsStrategy-detectorManager.js +309 -0
  46. package/dist/strategies/DevToolsStrategy-simple.d.ts +75 -0
  47. package/dist/strategies/DevToolsStrategy-simple.js +366 -0
  48. package/dist/strategies/DevToolsStrategy.d.ts +55 -0
  49. package/dist/strategies/DevToolsStrategy.js +314 -0
  50. package/dist/strategies/ExtensionStrategy.d.ts +66 -0
  51. package/dist/strategies/ExtensionStrategy.js +486 -0
  52. package/dist/strategies/IFrameStrategy.d.ts +49 -0
  53. package/dist/strategies/IFrameStrategy.js +255 -0
  54. package/dist/strategies/KeyboardStrategy.d.ts +35 -0
  55. package/dist/strategies/KeyboardStrategy.js +130 -0
  56. package/dist/strategies/PrintStrategy.d.ts +47 -0
  57. package/dist/strategies/PrintStrategy.js +201 -0
  58. package/dist/strategies/ScreenshotStrategy.d.ts +90 -0
  59. package/dist/strategies/ScreenshotStrategy.js +488 -0
  60. package/dist/strategies/SelectionStrategy.d.ts +49 -0
  61. package/dist/strategies/SelectionStrategy.js +216 -0
  62. package/dist/strategies/StrategyRegistry.d.ts +133 -0
  63. package/dist/strategies/StrategyRegistry.js +379 -0
  64. package/dist/strategies/WatermarkStrategy.d.ts +47 -0
  65. package/dist/strategies/WatermarkStrategy.js +273 -0
  66. package/dist/strategies/index.d.ts +9 -0
  67. package/dist/strategies/index.js +10 -0
  68. package/dist/types/index.d.ts +271 -0
  69. package/dist/types/index.js +16 -0
  70. package/dist/utils/DOMObserver.d.ts +68 -0
  71. package/dist/utils/DOMObserver.js +134 -0
  72. package/dist/utils/base/LoggableComponent.d.ts +62 -0
  73. package/dist/utils/base/LoggableComponent.js +95 -0
  74. package/dist/utils/debuggerDetector/debuggerDetectionWorker.d.ts +6 -0
  75. package/dist/utils/debuggerDetector/debuggerDetectionWorker.js +24 -0
  76. package/dist/utils/debuggerDetector/debuggerDetector.d.ts +55 -0
  77. package/dist/utils/debuggerDetector/debuggerDetector.js +158 -0
  78. package/dist/utils/debuggerDetector/firefoxDetector.d.ts +8 -0
  79. package/dist/utils/debuggerDetector/firefoxDetector.js +64 -0
  80. package/dist/utils/detection.d.ts +29 -0
  81. package/dist/utils/detection.js +267 -0
  82. package/dist/utils/detectors/AbstractDevToolsDetector.d.ts +105 -0
  83. package/dist/utils/detectors/AbstractDevToolsDetector.js +136 -0
  84. package/dist/utils/detectors/dateToStringDetector.d.ts +43 -0
  85. package/dist/utils/detectors/dateToStringDetector.js +96 -0
  86. package/dist/utils/detectors/debugLibDetector.d.ts +64 -0
  87. package/dist/utils/detectors/debugLibDetector.js +195 -0
  88. package/dist/utils/detectors/debuggerDetectionWorker.d.ts +6 -0
  89. package/dist/utils/detectors/debuggerDetectionWorker.js +24 -0
  90. package/dist/utils/detectors/debuggerDetector.d.ts +51 -0
  91. package/dist/utils/detectors/debuggerDetector.js +211 -0
  92. package/dist/utils/detectors/defineGetterDetector.d.ts +48 -0
  93. package/dist/utils/detectors/defineGetterDetector.js +150 -0
  94. package/dist/utils/detectors/detectorInterface.d.ts +36 -0
  95. package/dist/utils/detectors/detectorInterface.js +1 -0
  96. package/dist/utils/detectors/devToolsDetectorManager.d.ts +88 -0
  97. package/dist/utils/detectors/devToolsDetectorManager.js +246 -0
  98. package/dist/utils/detectors/firefoxDetector.d.ts +8 -0
  99. package/dist/utils/detectors/firefoxDetector.js +64 -0
  100. package/dist/utils/detectors/funcToStringDetector.d.ts +43 -0
  101. package/dist/utils/detectors/funcToStringDetector.js +90 -0
  102. package/dist/utils/detectors/regToStringDetector.d.ts +43 -0
  103. package/dist/utils/detectors/regToStringDetector.js +129 -0
  104. package/dist/utils/detectors/sizeDetector.d.ts +54 -0
  105. package/dist/utils/detectors/sizeDetector.js +134 -0
  106. package/dist/utils/detectors/timingDetector.d.ts +55 -0
  107. package/dist/utils/detectors/timingDetector.js +143 -0
  108. package/dist/utils/dom.d.ts +20 -0
  109. package/dist/utils/dom.js +83 -0
  110. package/dist/utils/environment.d.ts +29 -0
  111. package/dist/utils/environment.js +267 -0
  112. package/dist/utils/eventManager.d.ts +167 -0
  113. package/dist/utils/eventManager.js +556 -0
  114. package/dist/utils/index.d.ts +2 -0
  115. package/dist/utils/index.js +3 -0
  116. package/dist/utils/intervalManager.d.ts +96 -0
  117. package/dist/utils/intervalManager.js +229 -0
  118. package/dist/utils/keyboardShortcutManager/keyboardShortcutManager.d.ts +41 -0
  119. package/dist/utils/keyboardShortcutManager/keyboardShortcutManager.js +135 -0
  120. package/dist/utils/keyboardShortcutManager/keyboardShortcuts.d.ts +18 -0
  121. package/dist/utils/keyboardShortcutManager/keyboardShortcuts.js +195 -0
  122. package/dist/utils/logging/LogLevel.d.ts +21 -0
  123. package/dist/utils/logging/LogLevel.js +46 -0
  124. package/dist/utils/logging/LoggingConfig.d.ts +68 -0
  125. package/dist/utils/logging/LoggingConfig.js +64 -0
  126. package/dist/utils/logging/LoggingFactory.d.ts +22 -0
  127. package/dist/utils/logging/LoggingFactory.js +61 -0
  128. package/dist/utils/logging/LoggingService.d.ts +235 -0
  129. package/dist/utils/logging/LoggingService.js +385 -0
  130. package/dist/utils/logging/SimpleLoggingService.d.ts +39 -0
  131. package/dist/utils/logging/SimpleLoggingService.js +58 -0
  132. package/dist/utils/logging/advanced/LogLevel.d.ts +21 -0
  133. package/dist/utils/logging/advanced/LogLevel.js +46 -0
  134. package/dist/utils/logging/advanced/LoggingConfig.d.ts +68 -0
  135. package/dist/utils/logging/advanced/LoggingConfig.js +64 -0
  136. package/dist/utils/logging/advanced/LoggingFactory.d.ts +22 -0
  137. package/dist/utils/logging/advanced/LoggingFactory.js +61 -0
  138. package/dist/utils/logging/advanced/LoggingService.d.ts +235 -0
  139. package/dist/utils/logging/advanced/LoggingService.js +385 -0
  140. package/dist/utils/logging/simple/Loggable.d.ts +33 -0
  141. package/dist/utils/logging/simple/Loggable.js +1 -0
  142. package/dist/utils/logging/simple/LoggingDelegate.d.ts +42 -0
  143. package/dist/utils/logging/simple/LoggingDelegate.js +53 -0
  144. package/dist/utils/logging/simple/SimpleLoggingService.d.ts +39 -0
  145. package/dist/utils/logging/simple/SimpleLoggingService.js +58 -0
  146. package/dist/utils/orientation.d.ts +15 -0
  147. package/dist/utils/orientation.js +32 -0
  148. package/dist/utils/protectedContentManager-simple.d.ts +86 -0
  149. package/dist/utils/protectedContentManager-simple.js +180 -0
  150. package/dist/utils/protectedContentManager.d.ts +162 -0
  151. package/dist/utils/protectedContentManager.js +427 -0
  152. package/dist/utils/screenshotDetector.d.ts +72 -0
  153. package/dist/utils/screenshotDetector.js +179 -0
  154. package/dist/utils/securityOverlayManager-observer-pause.d.ts +283 -0
  155. package/dist/utils/securityOverlayManager-observer-pause.js +878 -0
  156. package/dist/utils/securityOverlayManager-simple.d.ts +197 -0
  157. package/dist/utils/securityOverlayManager-simple.js +552 -0
  158. package/dist/utils/securityOverlayManager.d.ts +260 -0
  159. package/dist/utils/securityOverlayManager.js +774 -0
  160. package/dist/utils/timeoutManager.d.ts +55 -0
  161. package/dist/utils/timeoutManager.js +121 -0
  162. package/package.json +54 -0
@@ -0,0 +1,267 @@
1
+ // FEATURE/ENVIRONMENT DETECTION
2
+ /**
3
+ * Detect browser environment
4
+ */
5
+ export const isBrowser = () => {
6
+ return typeof window !== 'undefined' && typeof document !== 'undefined';
7
+ };
8
+ /**
9
+ * Detect mobile device
10
+ */
11
+ export const isMobile = () => {
12
+ if (!isBrowser())
13
+ return false;
14
+ const userAgent = navigator.userAgent;
15
+ // Standard mobile OS and browser detection
16
+ if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent)) {
17
+ return true;
18
+ }
19
+ // Chinese mobile devices
20
+ if (/Huawei|HUAWEI|Honor|HONOR|Xiaomi|MI\/|Redmi|POCO|OPPO|vivo|OnePlus|Realme/i.test(userAgent)) {
21
+ return true;
22
+ }
23
+ // Korean mobile devices
24
+ if (/Samsung|SAMSUNG|LG|Tizen/i.test(userAgent)) {
25
+ return true;
26
+ }
27
+ // Japanese mobile devices
28
+ if (/Sony|SONY|Xperia|Sharp|SHARP|Fujitsu|FOMA|KDDI/i.test(userAgent)) {
29
+ return true;
30
+ }
31
+ // Russian mobile devices
32
+ if (/Yandex.Phone|YandexPhone|BQ-|BQru/i.test(userAgent)) {
33
+ return true;
34
+ }
35
+ // Other mobile platforms
36
+ if (/Windows Phone|WindowsPhone|Lumia|Mobile|Tablet|Phone|WPDesktop|ZuneWP|WP7|wds|Fennec|Firefox OS|KaiOS|KAIOS|Sailfish/i.test(userAgent)) {
37
+ return true;
38
+ }
39
+ // Mobile browser detection
40
+ if (/Mobile|Tablet|Android|Touch/i.test(userAgent) && !/Windows NT|Mac OS X/i.test(userAgent)) {
41
+ return true;
42
+ }
43
+ // Feature detection for touch devices (most mobile devices have touch capability)
44
+ if (isBrowser() && ("ontouchstart" in window || navigator.maxTouchPoints > 0)) {
45
+ // Additional check to avoid false positives on desktops with touch screens
46
+ if (window.innerWidth <= 1024 || /Mobi|Android/i.test(userAgent)) {
47
+ return true;
48
+ }
49
+ }
50
+ return false;
51
+ };
52
+ /**
53
+ * Detect specific browser
54
+ */
55
+ export const getBrowser = () => {
56
+ if (!isBrowser())
57
+ return { name: "unknown", version: "0" };
58
+ const ua = navigator.userAgent;
59
+ let browserName = "unknown";
60
+ let version = "0";
61
+ // Order matters here - we need to check more specific browsers first
62
+ // before falling back to more generic ones
63
+ // --- Chinese Browsers ---
64
+ if (/MicroMessenger|WeChat/.test(ua)) {
65
+ browserName = "wechat";
66
+ const match = ua.match(/MicroMessenger\/(\d+\.\d+)/);
67
+ version = match ? match[1] : "0";
68
+ }
69
+ // QQ Browser
70
+ else if (/QQBrowser/.test(ua)) {
71
+ browserName = "qq";
72
+ const match = ua.match(/QQBrowser\/(\d+\.\d+)/);
73
+ version = match ? match[1] : "0";
74
+ }
75
+ // UC Browser
76
+ else if (/UCBrowser/.test(ua)) {
77
+ browserName = "uc";
78
+ const match = ua.match(/UCBrowser\/(\d+\.\d+)/);
79
+ version = match ? match[1] : "0";
80
+ }
81
+ // Baidu Browser
82
+ else if (/Baidu|BIDUBrowser|baiduboxapp/.test(ua)) {
83
+ browserName = "baidu";
84
+ const match = ua.match(/(?:Baidu|BIDUBOX)(?:Browser)?\/(\d+\.\d+)/);
85
+ version = match ? match[1] : "0";
86
+ }
87
+ // Mi Browser
88
+ else if (/MiuiBrowser/.test(ua)) {
89
+ browserName = "mi";
90
+ const match = ua.match(/MiuiBrowser\/(\d+\.\d+)/);
91
+ version = match ? match[1] : "0";
92
+ }
93
+ // --- Russian Browsers ---
94
+ // Yandex Browser
95
+ else if (/YaBrowser/.test(ua)) {
96
+ browserName = "yandex";
97
+ const match = ua.match(/YaBrowser\/(\d+\.\d+)/);
98
+ version = match ? match[1] : "0";
99
+ }
100
+ // --- Korean Browsers ---
101
+ // Naver Whale
102
+ else if (/Whale/.test(ua)) {
103
+ browserName = "whale";
104
+ const match = ua.match(/Whale\/(\d+\.\d+)/);
105
+ version = match ? match[1] : "0";
106
+ }
107
+ // --- Mobile Browsers ---
108
+ // Samsung Internet
109
+ else if (/SamsungBrowser/.test(ua)) {
110
+ browserName = "samsung";
111
+ const match = ua.match(/SamsungBrowser\/(\d+\.\d+)/);
112
+ version = match ? match[1] : "0";
113
+ }
114
+ // Huawei Browser
115
+ else if (/HuaweiBrowser/.test(ua)) {
116
+ browserName = "huawei";
117
+ const match = ua.match(/HuaweiBrowser\/(\d+\.\d+)/);
118
+ version = match ? match[1] : "0";
119
+ }
120
+ // --- Alternative Browsers ---
121
+ // Vivaldi
122
+ else if (/Vivaldi/.test(ua)) {
123
+ browserName = "vivaldi";
124
+ const match = ua.match(/Vivaldi\/(\d+\.\d+)/);
125
+ version = match ? match[1] : "0";
126
+ }
127
+ // Lunascape
128
+ else if (/Lunascape/.test(ua)) {
129
+ browserName = "lunascape";
130
+ const match = ua.match(/Lunascape[/| ](\d+\.\d+)/);
131
+ version = match ? match[1] : "0";
132
+ }
133
+ // Opera
134
+ else if (/OPR|Opera/.test(ua)) {
135
+ browserName = "opera";
136
+ const match = ua.match(/(?:OPR|Opera)[/| ](\d+\.\d+)/);
137
+ version = match ? match[1] : "0";
138
+ }
139
+ // --- Emulators ---
140
+ // Nox Browser/Emulator
141
+ else if (/Nox/.test(ua)) {
142
+ browserName = "nox";
143
+ const match = ua.match(/Nox\/(\d+\.\d+)/);
144
+ version = match ? match[1] : "0";
145
+ }
146
+ // BlueStacks
147
+ else if (/BlueStacks/.test(ua)) {
148
+ browserName = "bluestacks";
149
+ const match = ua.match(/BlueStacks\/(\d+\.\d+)/);
150
+ version = match ? match[1] : "0";
151
+ }
152
+ // --- Major Browsers (keep these last as fallbacks) ---
153
+ // Edge
154
+ else if (/Edg/.test(ua)) {
155
+ browserName = "edge";
156
+ const match = ua.match(/Edg\/(\d+\.\d+)/);
157
+ version = match ? match[1] : "0";
158
+ }
159
+ // Chrome
160
+ else if (/Chrome/.test(ua) && !/Chromium|Edge|Edg|OPR|Opera/.test(ua)) {
161
+ browserName = "chrome";
162
+ const match = ua.match(/Chrome\/(\d+\.\d+)/);
163
+ version = match ? match[1] : "0";
164
+ }
165
+ // Firefox
166
+ else if (/Firefox/.test(ua)) {
167
+ browserName = "firefox";
168
+ const match = ua.match(/Firefox\/(\d+\.\d+)/);
169
+ version = match ? match[1] : "0";
170
+ }
171
+ // Safari
172
+ else if (/Safari/.test(ua) && !/Chrome/.test(ua)) {
173
+ browserName = "safari";
174
+ const match = ua.match(/Version\/(\d+\.\d+)/);
175
+ version = match ? match[1] : "0";
176
+ }
177
+ // IE
178
+ else if (/Trident|MSIE/.test(ua)) {
179
+ browserName = "ie";
180
+ const match = ua.match(/(?:rv:|MSIE )(\d+\.\d+)/);
181
+ version = match ? match[1] : "0";
182
+ }
183
+ // Chromium-based browsers not caught above
184
+ else if (/Chromium/.test(ua)) {
185
+ browserName = "chromium";
186
+ const match = ua.match(/Chromium\/(\d+\.\d+)/);
187
+ version = match ? match[1] : "0";
188
+ }
189
+ return { name: browserName, version };
190
+ };
191
+ /**
192
+ * Detect operating system
193
+ */
194
+ export const getOS = () => {
195
+ if (!isBrowser())
196
+ return { name: "unknown" };
197
+ const platform = navigator.platform.toLowerCase();
198
+ const userAgent = navigator.userAgent.toLowerCase();
199
+ // macOS and iOS devices
200
+ if (platform.includes("mac") ||
201
+ platform.includes("ipad") ||
202
+ platform.includes("ipod") ||
203
+ platform.includes("iphone") ||
204
+ userAgent.includes("mac") ||
205
+ userAgent.includes("iphone") ||
206
+ userAgent.includes("ipad") ||
207
+ (userAgent.includes("safari") && !userAgent.includes("chrome") && !userAgent.includes("android"))) {
208
+ return { name: "mac" };
209
+ }
210
+ // Windows detection
211
+ else if (platform.includes("win") || userAgent.includes("win") || userAgent.includes("windows nt")) {
212
+ return { name: "windows" };
213
+ }
214
+ // Linux and Linux-based OS detection
215
+ else if (
216
+ // Standard Linux
217
+ platform.includes("linux") ||
218
+ userAgent.includes("linux") ||
219
+ // Android (Linux-based)
220
+ userAgent.includes("android") ||
221
+ // Chinese OS (most are Linux-based)
222
+ userAgent.includes("harmonyos") ||
223
+ userAgent.includes("deepin") ||
224
+ userAgent.includes("uos") ||
225
+ userAgent.includes("cos") ||
226
+ // Russian Linux distributions
227
+ userAgent.includes("astra linux") ||
228
+ userAgent.includes("alt linux") ||
229
+ userAgent.includes("rosa") ||
230
+ // Korean OS
231
+ userAgent.includes("tizen") ||
232
+ userAgent.includes("gooroom") ||
233
+ // Other Linux-based OS
234
+ userAgent.includes("ubuntu") ||
235
+ userAgent.includes("debian") ||
236
+ userAgent.includes("fedora") ||
237
+ userAgent.includes("red hat") ||
238
+ userAgent.includes("suse") ||
239
+ userAgent.includes("mint") ||
240
+ // Chrome OS (Linux-based)
241
+ userAgent.includes("cros") ||
242
+ userAgent.includes("chromium os") ||
243
+ userAgent.includes("chrome os") ||
244
+ // BSD variants (Unix-like, grouped with Linux for simplicity)
245
+ userAgent.includes("freebsd") ||
246
+ userAgent.includes("openbsd") ||
247
+ userAgent.includes("netbsd")) {
248
+ return { name: "linux" };
249
+ }
250
+ // Fallback for undetected OS
251
+ return { name: "unknown" };
252
+ };
253
+ /**
254
+ * Check if print is supported
255
+ */
256
+ export const isPrintSupported = () => {
257
+ return isBrowser() && typeof window.print === 'function';
258
+ };
259
+ /**
260
+ * Check if beforeprint event is supported
261
+ */
262
+ export const isBeforePrintSupported = () => {
263
+ if (!isBrowser())
264
+ return false;
265
+ const mediaQueryList = window.matchMedia('print');
266
+ return !!mediaQueryList.addListener || 'onbeforeprint' in window;
267
+ };
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Options for event registration
3
+ */
4
+ export interface EventRegistrationOptions extends AddEventListenerOptions {
5
+ /**
6
+ * Optional ID for the event (auto-generated if not provided)
7
+ */
8
+ id?: string;
9
+ /**
10
+ * Priority for the event handler (higher executes first)
11
+ * @default 0
12
+ */
13
+ priority?: number;
14
+ }
15
+ /**
16
+ * EventManager centralizes event handling across protection strategies
17
+ * It provides a unified API for registering and removing event listeners
18
+ * and ensures proper cleanup when strategies are removed
19
+ */
20
+ export declare class EventManager {
21
+ private static instance;
22
+ private events;
23
+ private targetMap;
24
+ private readonly DOCUMENT_SYMBOL;
25
+ private readonly WINDOW_SYMBOL;
26
+ private logger;
27
+ /**
28
+ * Create a new EventManager
29
+ * @param debugMode Enable debug mode for troubleshooting
30
+ */
31
+ private constructor();
32
+ /**
33
+ * Get the EventManager instance (singleton)
34
+ * @param debugMode Enable debug mode for troubleshooting
35
+ */
36
+ static getInstance(debugMode?: boolean): EventManager;
37
+ /**
38
+ * Register an event listener
39
+ * @param target The target element, document, or window
40
+ * @param eventType The type of event (e.g., "click", "keydown")
41
+ * @param handler The event handler function
42
+ * @param owner The component or strategy that owns this event
43
+ * @param options Additional options for the event listener
44
+ * @returns The ID of the registered event
45
+ */
46
+ addEventListener(target: EventTarget | null, eventType: string, handler: EventListener, owner: string, options?: EventRegistrationOptions): string;
47
+ /**
48
+ * Remove a specific event listener by ID
49
+ * @param target The target element, document, or window
50
+ * @param eventId The ID of the event to remove
51
+ * @returns True if the event was removed, false otherwise
52
+ */
53
+ removeEventListener(target: EventTarget | null, eventId: string): boolean;
54
+ /**
55
+ * Remove all event listeners for a specific owner (strategy/component)
56
+ * @param owner The owner to remove events for
57
+ * @returns The number of events removed
58
+ */
59
+ removeEventsByOwner(owner: string): number;
60
+ /**
61
+ * Remove all event listeners for a specific target
62
+ * @param target The target to remove events from
63
+ * @returns The number of events removed
64
+ */
65
+ removeAllEventsForTarget(target: EventTarget | null): number;
66
+ /**
67
+ * Get all event IDs for a specific owner
68
+ * @param owner The owner to get events for
69
+ * @returns Array of event IDs
70
+ */
71
+ getEventsByOwner(owner: string): string[];
72
+ /**
73
+ * Check if an event exists
74
+ * @param target The target element
75
+ * @param eventId The event ID
76
+ * @returns True if the event exists
77
+ */
78
+ hasEvent(target: EventTarget | null, eventId: string): boolean;
79
+ /**
80
+ * Get a unique identifier for a target
81
+ * @param target The target element, document, or window
82
+ * @param create Whether to create a new ID if one doesn't exist
83
+ * @returns The target ID
84
+ */
85
+ private getTargetId;
86
+ /**
87
+ * Get a target from its ID
88
+ * @param targetId The target ID
89
+ * @returns The target element or null
90
+ */
91
+ private getTargetFromId;
92
+ /**
93
+ * Set debug mode
94
+ * @param enabled Whether debug mode should be enabled
95
+ */
96
+ setDebugMode(enabled: boolean): void;
97
+ /**
98
+ * Get the number of registered events
99
+ * @returns The total number of registered events
100
+ */
101
+ getEventCount(): number;
102
+ /**
103
+ * Get debug information about registered events
104
+ * @returns Object with debug information
105
+ */
106
+ getDebugInfo(): {
107
+ totalEvents: number;
108
+ eventsByOwner: Record<string, number>;
109
+ eventsByType: Record<string, number>;
110
+ eventDetails: Array<{
111
+ targetId: string | symbol;
112
+ eventId: string;
113
+ eventType: string;
114
+ owner: string;
115
+ priority: number;
116
+ }>;
117
+ };
118
+ /**
119
+ * Clear all registered events
120
+ * @returns The number of events removed
121
+ */
122
+ clearAllEvents(): number;
123
+ /**
124
+ * Check if an event handler is already registered for this target, event type, and owner
125
+ * This helps prevent duplicate registrations
126
+ * @param target The target element
127
+ * @param eventType The event type (e.g., "click", "contextmenu")
128
+ * @param owner The owner of the event handler
129
+ * @returns True if an event handler is already registered
130
+ */
131
+ hasRegisteredEventType(target: EventTarget | null, eventType: string, owner: string): boolean;
132
+ /**
133
+ * Check for potential conflicts with existing event listeners
134
+ * @param target The target element
135
+ * @param eventType The event type (e.g., "click", "contextmenu")
136
+ * @param owner The owner of the event handler
137
+ * @returns Object with conflict information
138
+ */
139
+ checkForConflicts(target: EventTarget | null, eventType: string, owner: string): {
140
+ hasConflicts: boolean;
141
+ conflictsWith: Array<{
142
+ owner: string;
143
+ eventId: string;
144
+ }>;
145
+ };
146
+ /**
147
+ * Get events of a specific type for a target
148
+ * @param target The target element
149
+ * @param eventType The event type (e.g., "click", "contextmenu")
150
+ * @returns Array of event information
151
+ */
152
+ getEventsByType(target: EventTarget | null, eventType: string): Array<{
153
+ eventId: string;
154
+ owner: string;
155
+ priority: number;
156
+ }>;
157
+ /**
158
+ * Remove event listeners by selector
159
+ * Useful for Vue components and other dynamically created elements
160
+ * @param selector CSS selector to match elements
161
+ * @param eventType The event type (e.g., "click", "contextmenu")
162
+ * @param owner The owner of the event handler
163
+ * @returns The number of events removed
164
+ */
165
+ removeEventsBySelector(selector: string, eventType: string, owner: string): number;
166
+ }
167
+ export declare const eventManager: EventManager;