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,260 @@
1
+ import type { MediatorAware, ProtectionMediator } from "../core/mediator/types";
2
+ /**
3
+ * Options for the security overlay
4
+ */
5
+ export interface OverlayOptions {
6
+ /**
7
+ * Title to display in the overlay
8
+ */
9
+ title?: string;
10
+ /**
11
+ * Main message to display
12
+ */
13
+ message?: string;
14
+ /**
15
+ * Secondary message to display
16
+ */
17
+ secondaryMessage?: string;
18
+ /**
19
+ * Text color for the overlay
20
+ */
21
+ textColor?: string;
22
+ /**
23
+ * Background color for the overlay
24
+ */
25
+ backgroundColor?: string;
26
+ /**
27
+ * Z-index for the overlay (default: 2147483647)
28
+ */
29
+ zIndex?: string;
30
+ /**
31
+ * Whether to show a close button
32
+ */
33
+ showCloseButton?: boolean;
34
+ /**
35
+ * Text for the close button
36
+ */
37
+ closeButtonText?: string;
38
+ /**
39
+ * Callback when close button is clicked
40
+ */
41
+ onCloseButtonClick?: () => void;
42
+ /**
43
+ * Duration in milliseconds to show the overlay (0 for indefinite)
44
+ */
45
+ duration?: number;
46
+ /**
47
+ * Additional custom styles for the overlay
48
+ */
49
+ customStyles?: Record<string, string>;
50
+ /**
51
+ * Additional custom styles for the text
52
+ */
53
+ textStyles?: Record<string, string>;
54
+ /**
55
+ * Font size (ScreenshotStrategy - refactor)
56
+ */
57
+ fontSize?: string;
58
+ /**
59
+ * Additional HTML content to display in the overlay
60
+ */
61
+ additionalContent?: string;
62
+ /**
63
+ * Whether to block events (create an event blocker)
64
+ */
65
+ blockEvents?: boolean;
66
+ /**
67
+ * Whether to automatically restore the overlay if it's removed from the DOM
68
+ * @default true
69
+ */
70
+ autoRestore?: boolean;
71
+ }
72
+ /**
73
+ * Utility class to manage security overlays
74
+ */
75
+ export declare class SecurityOverlayManager implements MediatorAware {
76
+ readonly COMPONENT_NAME = "SecurityOverlayManager";
77
+ private mediator;
78
+ private debugMode;
79
+ private logger;
80
+ private domObserver;
81
+ private overlays;
82
+ private activeOverlayId;
83
+ private overlayQueue;
84
+ private onElementsRemovedCallbacks;
85
+ /**
86
+ * Create a new SecurityOverlayManager
87
+ * @param debugMode Enable debug mode for troubleshooting
88
+ */
89
+ constructor(debugMode?: boolean);
90
+ /**
91
+ * Set the mediator to communicate with the other components
92
+ * @param mediator The protection mediator
93
+ */
94
+ setMediator(mediator: ProtectionMediator): void;
95
+ /**
96
+ * Check if an overlay with the same owner and type already exists
97
+ * @param owner The owner to check
98
+ * @param overlayType The overlay type to check
99
+ * @returns True if a matching overlay exists
100
+ */
101
+ private hasOverlayByOwnerAndType;
102
+ /**
103
+ * Handle overlay shown event
104
+ * @param event The protection event
105
+ */
106
+ private handleOverlayShown;
107
+ /**
108
+ * Handle overlay removed event
109
+ * @param event The protection event
110
+ */
111
+ private handleOverlayRemoved;
112
+ /**
113
+ * Handle overlay restored event
114
+ * @param event The protection event
115
+ */
116
+ private handleOverlayRestored;
117
+ /**
118
+ * Register a new overlay
119
+ * @param owner The strategy or component that owns this overlay
120
+ * @param overlayType The type of overlay (e.g., "screenshot", "devtools")
121
+ * @param options Options for the overlay
122
+ * @param priority Priority for display order (higher displays on top)
123
+ * @returns The ID of the registered overlay
124
+ */
125
+ registerOverlay(owner: string, overlayType: string, options: OverlayOptions, priority?: number): string;
126
+ /**
127
+ * Add an overlay to the queue
128
+ * @param overlayId ID of the overlay to add to queue
129
+ */
130
+ private addToQueue;
131
+ /**
132
+ * Show a specific overlay by ID
133
+ * @param overlayId ID of the overlay to show
134
+ * @returns True if the overlay was shown successfully
135
+ */
136
+ private showOverlayById;
137
+ /**
138
+ * Hide a specific overlay by ID without removing it from storage
139
+ * @param overlayId ID of the overlay to hide
140
+ * @param processQueue Whether to process the queue after hiding
141
+ * @returns True if the overlay was hidden successfully
142
+ */
143
+ private hideOverlayById;
144
+ /**
145
+ * Create overlay and blocker elements
146
+ * @param overlay The stored overlay information
147
+ * @returns Object containing the created elements
148
+ */
149
+ private createOverlayElements;
150
+ /**
151
+ * Remove a specific overlay by ID
152
+ * @param overlayId ID of the overlay to remove
153
+ * @returns True if the overlay was removed successfully
154
+ */
155
+ removeOverlayById(overlayId: string): boolean;
156
+ /**
157
+ * Remove all overlays for a specific owner
158
+ * @param owner The owner to remove overlays for
159
+ * @returns The number of overlays removed
160
+ */
161
+ removeOverlaysByOwner(owner: string): number;
162
+ /**
163
+ * Check and restore overlays for a specific owner
164
+ * @param owner The owner to check overlays for
165
+ * @returns The number of overlays restored
166
+ */
167
+ checkAndRestoreOverlaysByOwner(owner: string): number;
168
+ /**
169
+ * Create an overlay element
170
+ * @param options Options for the overlay
171
+ * @param owner The owner of the overlay (for data attribute)
172
+ * @returns The created overlay element
173
+ */
174
+ private createOverlay;
175
+ /**
176
+ * Create an event blocker that prevents interaction with the page
177
+ * @returns The created event blocker element
178
+ */
179
+ private createEventBlocker;
180
+ /**
181
+ * Set up DOM observer to detect when overlay elements are removed
182
+ * @param overlay The overlay to observe
183
+ */
184
+ private setupObserver;
185
+ /**
186
+ * Remove global event listeners that were added to document and window
187
+ */
188
+ private removeGlobalEventListeners;
189
+ /**
190
+ * Notify all callbacks when elements are removed
191
+ * @param removedElements The elements that were removed
192
+ */
193
+ private notifyElementsRemovedCallbacks;
194
+ /**
195
+ * Add a callback to be called when overlay elements are removed
196
+ * @param callback Callback function
197
+ */
198
+ addElementsRemovedCallback(callback: (removedElements: HTMLElement[]) => void): void;
199
+ /**
200
+ * Remove a callback
201
+ * @param callback Callback function to remove
202
+ */
203
+ removeElementsRemovedCallback(callback: (removedElements: HTMLElement[]) => void): void;
204
+ /**
205
+ * Get all overlays for a specific owner
206
+ * @param owner The owner to get overlays for
207
+ * @returns Array of overlay IDs
208
+ */
209
+ getOverlaysByOwner(owner: string): string[];
210
+ /**
211
+ * Get all active overlays
212
+ * @returns Array of active overlay IDs
213
+ */
214
+ getActiveOverlays(): string[];
215
+ /**
216
+ * Check if an overlay exists
217
+ * @param overlayId The overlay ID
218
+ * @returns True if the overlay exists
219
+ */
220
+ hasOverlay(overlayId: string): boolean;
221
+ /**
222
+ * Get the currently active overlay ID
223
+ * @returns The active overlay ID or null if none is active
224
+ */
225
+ getActiveOverlayId(): string | null;
226
+ /**
227
+ * Get the overlay queue
228
+ * @returns Array of overlay IDs in the queue
229
+ */
230
+ getOverlayQueue(): string[];
231
+ /**
232
+ * Clear all overlays
233
+ * @returns The number of overlays removed
234
+ */
235
+ clearAllOverlays(): number;
236
+ /**
237
+ * Set debug mode
238
+ * @param enabled Whether debug mode should be enabled
239
+ */
240
+ setDebugMode(enabled: boolean): void;
241
+ /**
242
+ * Get debug information about registered overlays
243
+ * @returns Object with debug information
244
+ */
245
+ getDebugInfo(): {
246
+ totalOverlays: number;
247
+ overlaysByOwner: Record<string, number>;
248
+ overlaysByType: Record<string, number>;
249
+ activeOverlayId: string | null;
250
+ queueLength: number;
251
+ overlayDetails: Array<{
252
+ id: string;
253
+ owner: string;
254
+ type: string;
255
+ isVisible: boolean;
256
+ priority: number;
257
+ createdAt: number;
258
+ }>;
259
+ };
260
+ }