@dimzxzzx07/file-watcher 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 (100) hide show
  1. package/.env +13 -0
  2. package/.eslintrc.json +128 -0
  3. package/.prettierrc +18 -0
  4. package/Dimzxzzx07.png +0 -0
  5. package/README.md +1024 -0
  6. package/dist/core/BackupManager.d.ts +25 -0
  7. package/dist/core/BackupManager.d.ts.map +1 -0
  8. package/dist/core/BackupManager.js +290 -0
  9. package/dist/core/BackupManager.js.map +1 -0
  10. package/dist/core/IntegrityValidator.d.ts +18 -0
  11. package/dist/core/IntegrityValidator.d.ts.map +1 -0
  12. package/dist/core/IntegrityValidator.js +212 -0
  13. package/dist/core/IntegrityValidator.js.map +1 -0
  14. package/dist/core/SecurityManager.d.ts +40 -0
  15. package/dist/core/SecurityManager.d.ts.map +1 -0
  16. package/dist/core/SecurityManager.js +320 -0
  17. package/dist/core/SecurityManager.js.map +1 -0
  18. package/dist/core/WatcherEngine.d.ts +44 -0
  19. package/dist/core/WatcherEngine.d.ts.map +1 -0
  20. package/dist/core/WatcherEngine.js +470 -0
  21. package/dist/core/WatcherEngine.js.map +1 -0
  22. package/dist/crypto/HashGenerator.d.ts +26 -0
  23. package/dist/crypto/HashGenerator.d.ts.map +1 -0
  24. package/dist/crypto/HashGenerator.js +220 -0
  25. package/dist/crypto/HashGenerator.js.map +1 -0
  26. package/dist/crypto/KeyManager.d.ts +30 -0
  27. package/dist/crypto/KeyManager.d.ts.map +1 -0
  28. package/dist/crypto/KeyManager.js +235 -0
  29. package/dist/crypto/KeyManager.js.map +1 -0
  30. package/dist/crypto/SignatureValidator.d.ts +11 -0
  31. package/dist/crypto/SignatureValidator.d.ts.map +1 -0
  32. package/dist/crypto/SignatureValidator.js +102 -0
  33. package/dist/crypto/SignatureValidator.js.map +1 -0
  34. package/dist/detectors/AnomalyDetector.d.ts +24 -0
  35. package/dist/detectors/AnomalyDetector.d.ts.map +1 -0
  36. package/dist/detectors/AnomalyDetector.js +209 -0
  37. package/dist/detectors/AnomalyDetector.js.map +1 -0
  38. package/dist/detectors/InjectionDetector.d.ts +14 -0
  39. package/dist/detectors/InjectionDetector.d.ts.map +1 -0
  40. package/dist/detectors/InjectionDetector.js +204 -0
  41. package/dist/detectors/InjectionDetector.js.map +1 -0
  42. package/dist/detectors/PatternMatcher.d.ts +28 -0
  43. package/dist/detectors/PatternMatcher.d.ts.map +1 -0
  44. package/dist/detectors/PatternMatcher.js +283 -0
  45. package/dist/detectors/PatternMatcher.js.map +1 -0
  46. package/dist/guards/FileGuard.d.ts +35 -0
  47. package/dist/guards/FileGuard.d.ts.map +1 -0
  48. package/dist/guards/FileGuard.js +357 -0
  49. package/dist/guards/FileGuard.js.map +1 -0
  50. package/dist/guards/MemoryGuard.d.ts +28 -0
  51. package/dist/guards/MemoryGuard.d.ts.map +1 -0
  52. package/dist/guards/MemoryGuard.js +256 -0
  53. package/dist/guards/MemoryGuard.js.map +1 -0
  54. package/dist/guards/ProcessGuard.d.ts +25 -0
  55. package/dist/guards/ProcessGuard.d.ts.map +1 -0
  56. package/dist/guards/ProcessGuard.js +221 -0
  57. package/dist/guards/ProcessGuard.js.map +1 -0
  58. package/dist/index.d.ts +19 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +186 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/types/index.d.ts +69 -0
  63. package/dist/types/index.d.ts.map +1 -0
  64. package/dist/types/index.js +3 -0
  65. package/dist/types/index.js.map +1 -0
  66. package/dist/utils/Constants.d.ts +407 -0
  67. package/dist/utils/Constants.d.ts.map +1 -0
  68. package/dist/utils/Constants.js +505 -0
  69. package/dist/utils/Constants.js.map +1 -0
  70. package/dist/utils/Logger.d.ts +45 -0
  71. package/dist/utils/Logger.d.ts.map +1 -0
  72. package/dist/utils/Logger.js +285 -0
  73. package/dist/utils/Logger.js.map +1 -0
  74. package/dist/utils/Validator.d.ts +27 -0
  75. package/dist/utils/Validator.d.ts.map +1 -0
  76. package/dist/utils/Validator.js +245 -0
  77. package/dist/utils/Validator.js.map +1 -0
  78. package/favicon.png +0 -0
  79. package/jest.config.js +69 -0
  80. package/package.json +69 -0
  81. package/src/core/BackupManager.ts +305 -0
  82. package/src/core/IntegrityValidator.ts +200 -0
  83. package/src/core/SecurityManager.ts +348 -0
  84. package/src/core/WatcherEngine.ts +537 -0
  85. package/src/crypto/HashGenerator.ts +234 -0
  86. package/src/crypto/KeyManager.ts +249 -0
  87. package/src/crypto/SignatureValidator.ts +76 -0
  88. package/src/detectors/AnomalyDetector.ts +247 -0
  89. package/src/detectors/InjectionDetector.ts +233 -0
  90. package/src/detectors/PatternMatcher.ts +319 -0
  91. package/src/guards/FileGuard.ts +385 -0
  92. package/src/guards/MemoryGuard.ts +263 -0
  93. package/src/guards/ProcessGuard.ts +219 -0
  94. package/src/index.ts +189 -0
  95. package/src/types/index.ts +72 -0
  96. package/src/utils/Constants.ts +532 -0
  97. package/src/utils/Logger.ts +279 -0
  98. package/src/utils/Validator.ts +248 -0
  99. package/tests/setup.ts +80 -0
  100. package/tsconfig.json +42 -0
@@ -0,0 +1,72 @@
1
+ export interface SecurityConfig {
2
+ watchDir: string;
3
+ hashAlgorithm: 'sha256' | 'sha384' | 'sha512' | 'blake2b';
4
+ backupDir: string;
5
+ quarantineDir: string;
6
+ maxFileSize: number;
7
+ scanInterval: number;
8
+ realtimeMonitoring: boolean;
9
+ autoRollback: boolean;
10
+ quarantineEnabled: boolean;
11
+ signatureVerification: boolean;
12
+ integrityLevel: 'basic' | 'advanced' | 'paranoid';
13
+ alertThreshold: 'low' | 'medium' | 'high' | 'critical';
14
+ allowedExtensions: string[];
15
+ blockedPatterns: RegExp[];
16
+ trustedSigners: string[];
17
+ }
18
+
19
+ export interface FileMetadata {
20
+ path: string;
21
+ hash: string;
22
+ signature?: string;
23
+ size: number;
24
+ created: Date;
25
+ modified: Date;
26
+ accessed: Date;
27
+ permissions: number;
28
+ owner: string;
29
+ group: string;
30
+ inode: number;
31
+ checksum: string;
32
+ version: number;
33
+ encryptedHash?: string;
34
+ entropy: number;
35
+ magicBytes?: string;
36
+ }
37
+
38
+ export interface IntegrityViolation {
39
+ id: string;
40
+ timestamp: Date;
41
+ filePath: string;
42
+ violationType: 'hash_mismatch' | 'signature_invalid' | 'injection_detected' | 'permission_changed' | 'metadata_modified' | 'quarantine_triggered' | 'self_modification' | 'memory_tamper' | 'process_hijack' | 'unexpected_file';
43
+ severity: 'low' | 'medium' | 'high' | 'critical';
44
+ oldHash?: string;
45
+ newHash?: string;
46
+ details: any;
47
+ actionTaken: 'rollback' | 'quarantine' | 'delete' | 'alert' | 'terminate' | 'ignore';
48
+ backupPath?: string;
49
+ }
50
+
51
+ export interface SecurityAlert {
52
+ id: string;
53
+ timestamp: Date;
54
+ level: 'info' | 'warning' | 'error' | 'critical';
55
+ source: string;
56
+ message: string;
57
+ details: any;
58
+ stackTrace?: string;
59
+ memoryDump?: string;
60
+ }
61
+
62
+ export interface BackupEntry {
63
+ id: string;
64
+ originalPath: string;
65
+ backupPath: string;
66
+ timestamp: Date;
67
+ hash: string;
68
+ encrypted: boolean;
69
+ size: number;
70
+ metadata: FileMetadata;
71
+ version: number;
72
+ }
@@ -0,0 +1,532 @@
1
+ export const VERSION = '2.0.0';
2
+
3
+ export const SECURITY_LEVELS = {
4
+ BASIC: 'basic',
5
+ ADVANCED: 'advanced',
6
+ PARANOID: 'paranoid'
7
+ } as const;
8
+
9
+ export const HASH_ALGORITHMS = {
10
+ SHA256: 'sha256',
11
+ SHA384: 'sha384',
12
+ SHA512: 'sha512',
13
+ BLAKE2B: 'blake2b512'
14
+ } as const;
15
+
16
+ export const ALERT_THRESHOLDS = {
17
+ LOW: 'low',
18
+ MEDIUM: 'medium',
19
+ HIGH: 'high',
20
+ CRITICAL: 'critical'
21
+ } as const;
22
+
23
+ export const VIOLATION_TYPES = {
24
+ HASH_MISMATCH: 'hash_mismatch',
25
+ SIGNATURE_INVALID: 'signature_invalid',
26
+ INJECTION_DETECTED: 'injection_detected',
27
+ PERMISSION_CHANGED: 'permission_changed',
28
+ METADATA_MODIFIED: 'metadata_modified',
29
+ QUARANTINE_TRIGGERED: 'quarantine_triggered',
30
+ SELF_MODIFICATION: 'self_modification',
31
+ MEMORY_TAMPER: 'memory_tamper',
32
+ PROCESS_HIJACK: 'process_hijack',
33
+ UNEXPECTED_FILE: 'unexpected_file',
34
+ BACKUP_CORRUPT: 'backup_corrupt',
35
+ ENCRYPTION_FAILED: 'encryption_failed',
36
+ DECRYPTION_FAILED: 'decryption_failed',
37
+ KEY_COMPROMISED: 'key_compromised',
38
+ INTEGRITY_CHECK_FAILED: 'integrity_check_failed',
39
+ QUARANTINE_VIOLATION: 'quarantine_violation',
40
+ ROLLBACK_FAILED: 'rollback_failed',
41
+ WATCHER_STOPPED: 'watcher_stopped',
42
+ CONFIG_MODIFIED: 'config_modified'
43
+ } as const;
44
+
45
+ export const ACTION_TYPES = {
46
+ ROLLBACK: 'rollback',
47
+ QUARANTINE: 'quarantine',
48
+ DELETE: 'delete',
49
+ ALERT: 'alert',
50
+ TERMINATE: 'terminate',
51
+ IGNORE: 'ignore',
52
+ RESTORE: 'restore',
53
+ ENCRYPT: 'encrypt',
54
+ DECRYPT: 'decrypt',
55
+ LOCK: 'lock',
56
+ UNLOCK: 'unlock',
57
+ BACKUP: 'backup',
58
+ SCAN: 'scan'
59
+ } as const;
60
+
61
+ export const FILE_CATEGORIES = {
62
+ EXECUTABLE: 'executable',
63
+ SCRIPT: 'script',
64
+ CONFIG: 'config',
65
+ DATA: 'data',
66
+ LOG: 'log',
67
+ TEMP: 'temp',
68
+ BACKUP: 'backup',
69
+ SYSTEM: 'system',
70
+ ENCRYPTED: 'encrypted',
71
+ QUARANTINED: 'quarantined',
72
+ ARCHIVE: 'archive',
73
+ DATABASE: 'database',
74
+ CACHE: 'cache',
75
+ LOCK: 'lock',
76
+ PID: 'pid',
77
+ SOCKET: 'socket',
78
+ PIPE: 'pipe',
79
+ DEVICE: 'device'
80
+ } as const;
81
+
82
+ export const PATTERN_TYPES = {
83
+ INJECTION: 'injection',
84
+ OBFUSCATION: 'obfuscation',
85
+ BACKDOOR: 'backdoor',
86
+ MALWARE: 'malware',
87
+ ANTI_DEBUG: 'anti_debug',
88
+ SELF_MODIFY: 'self_modify',
89
+ ENCODED: 'encoded',
90
+ MINIFIED: 'minified',
91
+ COMPRESSED: 'compressed',
92
+ ENCRYPTED: 'encrypted',
93
+ SHELLCODE: 'shellcode',
94
+ ROOTKIT: 'rootkit',
95
+ KEYLOGGER: 'keylogger',
96
+ RANSOMWARE: 'ransomware',
97
+ MINER: 'miner',
98
+ SPYWARE: 'spyware',
99
+ TROJAN: 'trojan',
100
+ WORM: 'worm',
101
+ VIRUS: 'virus'
102
+ } as const;
103
+
104
+ export const SEVERITY_LEVELS = {
105
+ INFO: 'info',
106
+ LOW: 'low',
107
+ MEDIUM: 'medium',
108
+ HIGH: 'high',
109
+ CRITICAL: 'critical',
110
+ EMERGENCY: 'emergency'
111
+ } as const;
112
+
113
+ export const MONITORING_MODES = {
114
+ REALTIME: 'realtime',
115
+ POLLING: 'polling',
116
+ HYBRID: 'hybrid',
117
+ PASSIVE: 'passive'
118
+ } as const;
119
+
120
+ export const ENCRYPTION_ALGORITHMS = {
121
+ AES_256_GCM: 'aes-256-gcm',
122
+ AES_256_CBC: 'aes-256-cbc',
123
+ CHACHA20: 'chacha20',
124
+ RSA_2048: 'rsa-2048',
125
+ RSA_4096: 'rsa-4096',
126
+ ECDSA: 'ecdsa',
127
+ ED25519: 'ed25519'
128
+ } as const;
129
+
130
+ export const KEY_TYPES = {
131
+ MASTER: 'master',
132
+ SESSION: 'session',
133
+ EPHEMERAL: 'ephemeral',
134
+ LONG_TERM: 'long_term',
135
+ BACKUP: 'backup',
136
+ RECOVERY: 'recovery'
137
+ } as const;
138
+
139
+ export const BACKUP_MODES = {
140
+ FULL: 'full',
141
+ INCREMENTAL: 'incremental',
142
+ DIFFERENTIAL: 'differential',
143
+ MIRROR: 'mirror'
144
+ } as const;
145
+
146
+ export const SCAN_MODES = {
147
+ QUICK: 'quick',
148
+ DEEP: 'deep',
149
+ HEURISTIC: 'heuristic',
150
+ SIGNATURE: 'signature',
151
+ BEHAVIORAL: 'behavioral',
152
+ MEMORY: 'memory',
153
+ FILESYSTEM: 'filesystem',
154
+ NETWORK: 'network'
155
+ } as const;
156
+
157
+ export const QUARANTINE_ACTIONS = {
158
+ ISOLATE: 'isolate',
159
+ ENCRYPT: 'encrypt',
160
+ DELETE: 'delete',
161
+ ANALYZE: 'analyze',
162
+ REPORT: 'report'
163
+ } as const;
164
+
165
+ export const INTEGRITY_CHECKS = {
166
+ HASH: 'hash',
167
+ SIGNATURE: 'signature',
168
+ METADATA: 'metadata',
169
+ PERMISSION: 'permission',
170
+ CONTENT: 'content',
171
+ STRUCTURE: 'structure',
172
+ ENTROPY: 'entropy',
173
+ TIMESTAMP: 'timestamp',
174
+ SIZE: 'size'
175
+ } as const;
176
+
177
+ export const ERROR_CODES = {
178
+ FILE_NOT_FOUND: 1000,
179
+ PERMISSION_DENIED: 1001,
180
+ FILE_TOO_LARGE: 1002,
181
+ INVALID_PATH: 1003,
182
+ FILE_LOCKED: 1004,
183
+ QUARANTINE_FAILED: 1005,
184
+ BACKUP_FAILED: 1006,
185
+ RESTORE_FAILED: 1007,
186
+ INTEGRITY_VIOLATION: 2000,
187
+ INJECTION_DETECTED: 2001,
188
+ MALWARE_DETECTED: 2002,
189
+ UNAUTHORIZED_ACCESS: 2003,
190
+ TAMPER_DETECTED: 2004,
191
+ DEBUGGER_DETECTED: 2005,
192
+ MEMORY_CORRUPTION: 2006,
193
+ PROCESS_HIJACK: 2007,
194
+ HASH_MISMATCH: 3000,
195
+ SIGNATURE_INVALID: 3001,
196
+ ENCRYPTION_FAILED: 3002,
197
+ DECRYPTION_FAILED: 3003,
198
+ KEY_NOT_FOUND: 3004,
199
+ KEY_EXPIRED: 3005,
200
+ KEY_REVOKED: 3006,
201
+ INVALID_CONFIG: 4000,
202
+ MISSING_CONFIG: 4001,
203
+ CONFIG_MODIFIED: 4002,
204
+ WATCHER_FAILED: 5000,
205
+ SCAN_FAILED: 5001,
206
+ VALIDATION_FAILED: 5002,
207
+ TIMEOUT: 5003,
208
+ OUT_OF_MEMORY: 5004
209
+ } as const;
210
+
211
+ export const DEFAULT_CONFIG = {
212
+ HASH_ALGORITHM: 'sha512',
213
+ MAX_FILE_SIZE: 10 * 1024 * 1024,
214
+ SCAN_INTERVAL: 60,
215
+ REALTIME_MONITORING: true,
216
+ AUTO_ROLLBACK: true,
217
+ QUARANTINE_ENABLED: true,
218
+ SIGNATURE_VERIFICATION: false,
219
+ INTEGRITY_LEVEL: 'advanced',
220
+ ALERT_THRESHOLD: 'medium',
221
+ ALLOWED_EXTENSIONS: ['.js', '.ts', '.json', '.txt', '.md', '.yml', '.yaml', '.xml', '.html', '.css'],
222
+ BACKUP_RETENTION_DAYS: 30,
223
+ MAX_BACKUPS_PER_FILE: 10,
224
+ QUARANTINE_RETENTION_DAYS: 90,
225
+ LOG_RETENTION_DAYS: 30,
226
+ MAX_LOG_SIZE: 10 * 1024 * 1024,
227
+ ENABLE_MEMORY_GUARD: true,
228
+ ENABLE_PROCESS_GUARD: true,
229
+ ENABLE_FILE_GUARD: true,
230
+ DEBUG_MODE: false
231
+ } as const;
232
+
233
+ export const MIME_TYPES = {
234
+ PLAIN: 'text/plain',
235
+ HTML: 'text/html',
236
+ CSS: 'text/css',
237
+ JAVASCRIPT: 'application/javascript',
238
+ TYPESCRIPT: 'application/typescript',
239
+ JSON: 'application/json',
240
+ XML: 'application/xml',
241
+ YAML: 'application/x-yaml',
242
+ MARKDOWN: 'text/markdown',
243
+ JPEG: 'image/jpeg',
244
+ PNG: 'image/png',
245
+ GIF: 'image/gif',
246
+ WEBP: 'image/webp',
247
+ SVG: 'image/svg+xml',
248
+ ICO: 'image/x-icon',
249
+ PDF: 'application/pdf',
250
+ DOC: 'application/msword',
251
+ DOCX: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
252
+ XLS: 'application/vnd.ms-excel',
253
+ XLSX: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
254
+ ZIP: 'application/zip',
255
+ GZIP: 'application/gzip',
256
+ TAR: 'application/x-tar',
257
+ RAR: 'application/vnd.rar',
258
+ _7Z: 'application/x-7z-compressed',
259
+ EXE: 'application/vnd.microsoft.portable-executable',
260
+ DLL: 'application/x-msdownload',
261
+ SO: 'application/x-sharedlib',
262
+ DMG: 'application/x-apple-diskimage',
263
+ DEB: 'application/vnd.debian.binary-package',
264
+ RPM: 'application/x-rpm',
265
+ MP3: 'audio/mpeg',
266
+ MP4: 'video/mp4',
267
+ WAV: 'audio/wav',
268
+ OGG: 'audio/ogg',
269
+ WEBM: 'video/webm',
270
+ TTF: 'font/ttf',
271
+ OTF: 'font/otf',
272
+ WOFF: 'font/woff',
273
+ WOFF2: 'font/woff2'
274
+ } as const;
275
+
276
+ export const MAGIC_BYTES: Record<string, string> = {
277
+ JPEG: 'ffd8ffe0',
278
+ PNG: '89504e47',
279
+ GIF: '47494638',
280
+ WEBP: '52494646',
281
+ BMP: '424d',
282
+ ICO: '00000100',
283
+ PDF: '25504446',
284
+ DOC: 'd0cf11e0',
285
+ XLS: 'd0cf11e0',
286
+ ZIP: '504b0304',
287
+ GZIP: '1f8b08',
288
+ TAR: '7573746172',
289
+ RAR: '52617221',
290
+ _7Z: '377abcaf',
291
+ ELF: '7f454c46',
292
+ PE: '4d5a',
293
+ MACHO: 'cafebabe',
294
+ MACHO_64: 'cffaedfe',
295
+ CLASS: 'cafebabe',
296
+ JAR: '504b0304',
297
+ SQLITE: '53514c697465',
298
+ JSON: '7b0a',
299
+ XML: '3c3f786d6c',
300
+ HTML: '3c68746d6c',
301
+ SVG: '3c737667'
302
+ } as const;
303
+
304
+ export const SUSPICIOUS_STRINGS = [
305
+ 'eval(',
306
+ 'Function(',
307
+ 'setTimeout(',
308
+ 'setInterval(',
309
+ 'new Function(',
310
+ 'require(',
311
+ 'process.binding',
312
+ 'process.dlopen',
313
+ 'child_process',
314
+ 'exec(',
315
+ 'spawn(',
316
+ 'fork(',
317
+ 'vm.runIn',
318
+ 'vm.create',
319
+ 'String.fromCharCode',
320
+ 'unescape(',
321
+ 'escape(',
322
+ 'decodeURI(',
323
+ 'decodeURIComponent(',
324
+ 'atob(',
325
+ 'btoa(',
326
+ 'Buffer.from(',
327
+ 'new Buffer(',
328
+ '__defineGetter__',
329
+ '__defineSetter__',
330
+ '__lookupGetter__',
331
+ '__lookupSetter__',
332
+ 'Object.defineProperty',
333
+ 'Object.defineProperties',
334
+ 'Reflect.set',
335
+ 'Reflect.defineProperty',
336
+ 'Proxy(',
337
+ 'WeakMap',
338
+ 'WeakSet',
339
+ 'FinalizationRegistry',
340
+ 'WebAssembly',
341
+ 'SharedArrayBuffer',
342
+ 'Atomics.',
343
+ 'globalThis',
344
+ 'this.constructor',
345
+ '__proto__',
346
+ 'Object.setPrototypeOf',
347
+ 'module.constructor',
348
+ 'require.cache',
349
+ 'module.children'
350
+ ] as const;
351
+
352
+ export const SUSPICIOUS_EXTENSIONS = [
353
+ '.exe', '.dll', '.so', '.dylib', '.bin',
354
+ '.sh', '.bash', '.zsh', '.fish', '.ps1',
355
+ '.bat', '.cmd', '.vbs', '.js', '.jse',
356
+ '.vbe', '.wsf', '.wsc', '.wsh', '.msi',
357
+ '.msp', '.mst', '.app', '.deb', '.rpm',
358
+ '.apk', '.ipa', '.dmg', '.pkg', '.jar',
359
+ '.class', '.py', '.pyc', '.pyo', '.rb',
360
+ '.rbw', '.php', '.php3', '.php4', '.php5',
361
+ '.phtml', '.asp', '.aspx', '.cer', '.cfm',
362
+ '.jsp', '.jspx', '.pl', '.pm', '.cgi',
363
+ '.swf', '.flv', '.com', '.scr', '.cpl'
364
+ ] as const;
365
+
366
+ export const ALLOWED_EXTENSIONS = [
367
+ '.txt', '.md', '.json', '.xml', '.yaml', '.yml',
368
+ '.html', '.htm', '.css', '.js', '.ts', '.jsx',
369
+ '.tsx', '.vue', '.svelte', '.php', '.py', '.rb',
370
+ '.java', '.c', '.cpp', '.h', '.hpp', '.cs',
371
+ '.go', '.rs', '.swift', '.kt', '.scala',
372
+ '.pdf', '.doc', '.docx', '.xls', '.xlsx',
373
+ '.ppt', '.pptx', '.jpg', '.jpeg', '.png',
374
+ '.gif', '.bmp', '.ico', '.svg', '.webp',
375
+ '.mp3', '.mp4', '.wav', '.ogg', '.flac',
376
+ '.zip', '.tar', '.gz', '.bz2', '.7z', '.rar'
377
+ ] as const;
378
+
379
+ export const REGEX_PATTERNS = {
380
+ EMAIL: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
381
+ URL: /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/,
382
+ IPV4: /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
383
+ IPV6: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,
384
+ UUID: /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,
385
+ HEX: /^[0-9a-fA-F]+$/,
386
+ BASE64: /^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/,
387
+ PATH_TRAVERSAL: /(?:\.\.\/|\.\.\\)+/,
388
+ NULL_BYTE: /\0/,
389
+ CONTROL_CHARS: /[\x00-\x1F\x7F]/,
390
+ ZERO_WIDTH: /[\u200B-\u200D\uFEFF]/,
391
+ HIDDEN_FILE: /^\.[^.]+/,
392
+ DOUBLE_EXTENSION: /\.[^.]+\.[^.]+$/,
393
+ TEMP_FILE: /\.(tmp|temp|swp|bak|backup)$/i,
394
+ LOCK_FILE: /\.(lock|pid)$/i
395
+ } as const;
396
+
397
+ export const TIMEOUTS = {
398
+ WATCHER_START: 5000,
399
+ FILE_SCAN: 10000,
400
+ BACKUP_CREATE: 5000,
401
+ BACKUP_RESTORE: 5000,
402
+ ENCRYPTION: 3000,
403
+ DECRYPTION: 3000,
404
+ INTEGRITY_CHECK: 2000,
405
+ MEMORY_SCAN: 1000,
406
+ PROCESS_SCAN: 2000,
407
+ NETWORK_SCAN: 5000,
408
+ QUARANTINE: 3000,
409
+ ROLLBACK: 5000,
410
+ SHUTDOWN: 10000
411
+ } as const;
412
+
413
+ export const PATHS = {
414
+ BACKUP_DIR: '.secure_backup',
415
+ QUARANTINE_DIR: '.secure_quarantine',
416
+ LOGS_DIR: 'logs',
417
+ KEYS_DIR: '.keys',
418
+ CACHE_DIR: '.cache',
419
+ TEMP_DIR: '.tmp',
420
+ CONFIG_DIR: '.config',
421
+ REPORTS_DIR: 'reports'
422
+ } as const;
423
+
424
+ export const EVENT_TYPES = {
425
+ FILE_ADDED: 'file:added',
426
+ FILE_CHANGED: 'file:changed',
427
+ FILE_DELETED: 'file:deleted',
428
+ FILE_RESTORED: 'file:restored',
429
+ FILE_QUARANTINED: 'file:quarantined',
430
+ FILE_SCANNED: 'file:scanned',
431
+ SECURITY_ALERT: 'security:alert',
432
+ SECURITY_CRITICAL: 'security:critical',
433
+ SECURITY_VIOLATION: 'security:violation',
434
+ SECURITY_BREACH: 'security:breach',
435
+ INTEGRITY_CHECK: 'integrity:check',
436
+ INTEGRITY_PASS: 'integrity:pass',
437
+ INTEGRITY_FAIL: 'integrity:fail',
438
+ INTEGRITY_VIOLATION: 'integrity:violation',
439
+ SYSTEM_START: 'system:start',
440
+ SYSTEM_STOP: 'system:stop',
441
+ SYSTEM_ERROR: 'system:error',
442
+ SYSTEM_WARNING: 'system:warning',
443
+ SYSTEM_INFO: 'system:info',
444
+ WATCHER_START: 'watcher:start',
445
+ WATCHER_STOP: 'watcher:stop',
446
+ WATCHER_ERROR: 'watcher:error',
447
+ WATCHER_READY: 'watcher:ready',
448
+ BACKUP_CREATED: 'backup:created',
449
+ BACKUP_RESTORED: 'backup:restored',
450
+ BACKUP_FAILED: 'backup:failed',
451
+ BACKUP_VERIFIED: 'backup:verified',
452
+ SCAN_START: 'scan:start',
453
+ SCAN_COMPLETE: 'scan:complete',
454
+ SCAN_ERROR: 'scan:error',
455
+ SCAN_PROGRESS: 'scan:progress'
456
+ } as const;
457
+
458
+ export const LOG_LEVELS = {
459
+ DEBUG: 0,
460
+ INFO: 1,
461
+ WARNING: 2,
462
+ ERROR: 3,
463
+ CRITICAL: 4,
464
+ EMERGENCY: 5
465
+ } as const;
466
+
467
+ export const EXIT_CODES = {
468
+ SUCCESS: 0,
469
+ GENERAL_ERROR: 1,
470
+ INVALID_CONFIG: 2,
471
+ PERMISSION_DENIED: 3,
472
+ SECURITY_VIOLATION: 4,
473
+ MEMORY_ERROR: 5,
474
+ DISK_ERROR: 6,
475
+ NETWORK_ERROR: 7,
476
+ TIMEOUT: 8,
477
+ USER_INTERRUPT: 9,
478
+ FATAL_ERROR: 10
479
+ } as const;
480
+
481
+ export const ENV_VARS = {
482
+ NODE_ENV: 'NODE_ENV',
483
+ WATCH_DIR: 'WATCH_DIR',
484
+ HASH_ALGORITHM: 'HASH_ALGORITHM',
485
+ INTEGRITY_LEVEL: 'INTEGRITY_LEVEL',
486
+ AUTO_ROLLBACK: 'AUTO_ROLLBACK',
487
+ SCAN_INTERVAL: 'SCAN_INTERVAL',
488
+ MAX_FILE_SIZE: 'MAX_FILE_SIZE',
489
+ ALLOWED_EXTENSIONS: 'ALLOWED_EXTENSIONS',
490
+ QUARANTINE_ENABLED: 'QUARANTINE_ENABLED',
491
+ SIGNATURE_VERIFICATION: 'SIGNATURE_VERIFICATION',
492
+ ALERT_THRESHOLD: 'ALERT_THRESHOLD',
493
+ DEBUG_MODE: 'DEBUG_MODE',
494
+ LOG_LEVEL: 'LOG_LEVEL'
495
+ } as const;
496
+
497
+ export const ERROR_MESSAGES = {
498
+ FILE_NOT_FOUND: 'File not found',
499
+ PERMISSION_DENIED: 'Permission denied',
500
+ INVALID_PATH: 'Invalid file path',
501
+ FILE_TOO_LARGE: 'File exceeds maximum size',
502
+ INTEGRITY_VIOLATION: 'File integrity violation detected',
503
+ INJECTION_DETECTED: 'Code injection detected',
504
+ MALWARE_DETECTED: 'Malware detected',
505
+ BACKUP_FAILED: 'Backup operation failed',
506
+ RESTORE_FAILED: 'Restore operation failed',
507
+ ENCRYPTION_FAILED: 'Encryption failed',
508
+ DECRYPTION_FAILED: 'Decryption failed',
509
+ KEY_NOT_FOUND: 'Encryption key not found',
510
+ INVALID_CONFIG: 'Invalid configuration',
511
+ WATCHER_FAILED: 'File watcher failed to start',
512
+ SCAN_FAILED: 'Security scan failed',
513
+ MEMORY_CORRUPTION: 'Memory corruption detected',
514
+ PROCESS_HIJACK: 'Process hijacking attempt detected',
515
+ DEBUGGER_DETECTED: 'Debugger detected',
516
+ QUARANTINE_FAILED: 'Failed to quarantine file',
517
+ ROLLBACK_FAILED: 'Failed to rollback file',
518
+ UNKNOWN_ERROR: 'An unknown error occurred'
519
+ } as const;
520
+
521
+ export const SUCCESS_MESSAGES = {
522
+ WATCHER_STARTED: 'File watcher started successfully',
523
+ WATCHER_STOPPED: 'File watcher stopped successfully',
524
+ FILE_PROTECTED: 'File protected successfully',
525
+ FILE_RESTORED: 'File restored successfully',
526
+ BACKUP_CREATED: 'Backup created successfully',
527
+ SCAN_COMPLETE: 'Security scan completed',
528
+ INTEGRITY_PASS: 'Integrity check passed',
529
+ QUARANTINE_SUCCESS: 'File quarantined successfully',
530
+ ENCRYPTION_SUCCESS: 'File encrypted successfully',
531
+ DECRYPTION_SUCCESS: 'File decrypted successfully'
532
+ } as const;