@bernierllc/backoff-retry 0.1.1 → 0.3.1

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 (137) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +110 -0
  3. package/dist/enhancement-manager.d.ts +205 -0
  4. package/dist/enhancement-manager.d.ts.map +1 -0
  5. package/dist/enhancement-manager.js +533 -0
  6. package/dist/enhancement-manager.js.map +1 -0
  7. package/dist/index.d.ts +3 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +4 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/memory-protection.js +1 -1
  12. package/dist/memory-protection.js.map +1 -1
  13. package/dist/neveradmin/components/RetryAnalyticsPage.d.ts +15 -0
  14. package/dist/neveradmin/components/RetryAnalyticsPage.d.ts.map +1 -0
  15. package/dist/neveradmin/components/RetryAnalyticsPage.js +28 -0
  16. package/dist/neveradmin/components/RetryAnalyticsPage.js.map +1 -0
  17. package/dist/neveradmin/components/RetryConfigurationPage.d.ts +15 -0
  18. package/dist/neveradmin/components/RetryConfigurationPage.d.ts.map +1 -0
  19. package/dist/neveradmin/components/RetryConfigurationPage.js +28 -0
  20. package/dist/neveradmin/components/RetryConfigurationPage.js.map +1 -0
  21. package/dist/neveradmin/components/RetryEnhancementsPage.d.ts +15 -0
  22. package/dist/neveradmin/components/RetryEnhancementsPage.d.ts.map +1 -0
  23. package/dist/neveradmin/components/RetryEnhancementsPage.js +28 -0
  24. package/dist/neveradmin/components/RetryEnhancementsPage.js.map +1 -0
  25. package/dist/neveradmin/components/RetryOperationsPage.d.ts +15 -0
  26. package/dist/neveradmin/components/RetryOperationsPage.d.ts.map +1 -0
  27. package/dist/neveradmin/components/RetryOperationsPage.js +28 -0
  28. package/dist/neveradmin/components/RetryOperationsPage.js.map +1 -0
  29. package/dist/neveradmin/components/RetryOverviewPage.d.ts +15 -0
  30. package/dist/neveradmin/components/RetryOverviewPage.d.ts.map +1 -0
  31. package/dist/neveradmin/components/RetryOverviewPage.js +28 -0
  32. package/dist/neveradmin/components/RetryOverviewPage.js.map +1 -0
  33. package/dist/neveradmin/components/index.d.ts +7 -0
  34. package/dist/neveradmin/components/index.d.ts.map +1 -0
  35. package/dist/neveradmin/components/index.js +32 -0
  36. package/dist/neveradmin/components/index.js.map +1 -0
  37. package/dist/neveradmin/components/types.d.ts +64 -0
  38. package/dist/neveradmin/components/types.d.ts.map +1 -0
  39. package/dist/neveradmin/components/types.js +10 -0
  40. package/dist/neveradmin/components/types.js.map +1 -0
  41. package/dist/neveradmin/hooks/index.d.ts +5 -0
  42. package/dist/neveradmin/hooks/index.d.ts.map +1 -0
  43. package/dist/neveradmin/hooks/index.js +28 -0
  44. package/dist/neveradmin/hooks/index.js.map +1 -0
  45. package/dist/neveradmin/hooks/useRetryConfiguration.d.ts +23 -0
  46. package/dist/neveradmin/hooks/useRetryConfiguration.d.ts.map +1 -0
  47. package/dist/neveradmin/hooks/useRetryConfiguration.js +162 -0
  48. package/dist/neveradmin/hooks/useRetryConfiguration.js.map +1 -0
  49. package/dist/neveradmin/hooks/useRetryEnhancements.d.ts +39 -0
  50. package/dist/neveradmin/hooks/useRetryEnhancements.d.ts.map +1 -0
  51. package/dist/neveradmin/hooks/useRetryEnhancements.js +197 -0
  52. package/dist/neveradmin/hooks/useRetryEnhancements.js.map +1 -0
  53. package/dist/neveradmin/hooks/useRetryOperations.d.ts +28 -0
  54. package/dist/neveradmin/hooks/useRetryOperations.d.ts.map +1 -0
  55. package/dist/neveradmin/hooks/useRetryOperations.js +166 -0
  56. package/dist/neveradmin/hooks/useRetryOperations.js.map +1 -0
  57. package/dist/neveradmin/hooks/useRetryStats.d.ts +19 -0
  58. package/dist/neveradmin/hooks/useRetryStats.d.ts.map +1 -0
  59. package/dist/neveradmin/hooks/useRetryStats.js +81 -0
  60. package/dist/neveradmin/hooks/useRetryStats.js.map +1 -0
  61. package/dist/neveradmin/index.d.ts +6 -0
  62. package/dist/neveradmin/index.d.ts.map +1 -0
  63. package/dist/neveradmin/index.js +29 -0
  64. package/dist/neveradmin/index.js.map +1 -0
  65. package/dist/neveradmin/registration.d.ts +33 -0
  66. package/dist/neveradmin/registration.d.ts.map +1 -0
  67. package/dist/neveradmin/registration.js +96 -0
  68. package/dist/neveradmin/registration.js.map +1 -0
  69. package/dist/neveradmin/types.d.ts +88 -0
  70. package/dist/neveradmin/types.d.ts.map +1 -0
  71. package/dist/neveradmin/types.js +10 -0
  72. package/dist/neveradmin/types.js.map +1 -0
  73. package/dist/neveradmin/utils/formatting.d.ts +41 -0
  74. package/dist/neveradmin/utils/formatting.d.ts.map +1 -0
  75. package/dist/neveradmin/utils/formatting.js +142 -0
  76. package/dist/neveradmin/utils/formatting.js.map +1 -0
  77. package/dist/neveradmin/utils/index.d.ts +4 -0
  78. package/dist/neveradmin/utils/index.d.ts.map +1 -0
  79. package/dist/neveradmin/utils/index.js +27 -0
  80. package/dist/neveradmin/utils/index.js.map +1 -0
  81. package/dist/neveradmin/utils/permissions.d.ts +74 -0
  82. package/dist/neveradmin/utils/permissions.d.ts.map +1 -0
  83. package/dist/neveradmin/utils/permissions.js +152 -0
  84. package/dist/neveradmin/utils/permissions.js.map +1 -0
  85. package/dist/neveradmin/utils/validation.d.ts +38 -0
  86. package/dist/neveradmin/utils/validation.d.ts.map +1 -0
  87. package/dist/neveradmin/utils/validation.js +142 -0
  88. package/dist/neveradmin/utils/validation.js.map +1 -0
  89. package/dist/retry-manager.d.ts +32 -11
  90. package/dist/retry-manager.d.ts.map +1 -1
  91. package/dist/retry-manager.js +128 -82
  92. package/dist/retry-manager.js.map +1 -1
  93. package/dist/security/index.d.ts +3 -0
  94. package/dist/security/index.d.ts.map +1 -0
  95. package/dist/security/index.js +26 -0
  96. package/dist/security/index.js.map +1 -0
  97. package/dist/security/secure-storage.d.ts +61 -0
  98. package/dist/security/secure-storage.d.ts.map +1 -0
  99. package/dist/security/secure-storage.js +418 -0
  100. package/dist/security/secure-storage.js.map +1 -0
  101. package/dist/security/security-manager.d.ts +172 -0
  102. package/dist/security/security-manager.d.ts.map +1 -0
  103. package/dist/security/security-manager.js +417 -0
  104. package/dist/security/security-manager.js.map +1 -0
  105. package/dist/storage/backend-selector.d.ts +96 -0
  106. package/dist/storage/backend-selector.d.ts.map +1 -0
  107. package/dist/storage/backend-selector.js +466 -0
  108. package/dist/storage/backend-selector.js.map +1 -0
  109. package/dist/storage/index.d.ts +7 -0
  110. package/dist/storage/index.d.ts.map +1 -0
  111. package/dist/storage/index.js +30 -0
  112. package/dist/storage/index.js.map +1 -0
  113. package/dist/storage/memory-storage.d.ts +55 -0
  114. package/dist/storage/memory-storage.d.ts.map +1 -0
  115. package/dist/storage/memory-storage.js +106 -0
  116. package/dist/storage/memory-storage.js.map +1 -0
  117. package/dist/storage/postgresql-storage.d.ts +77 -0
  118. package/dist/storage/postgresql-storage.d.ts.map +1 -0
  119. package/dist/storage/postgresql-storage.js +314 -0
  120. package/dist/storage/postgresql-storage.js.map +1 -0
  121. package/dist/storage/redis-cluster-storage.d.ts +88 -0
  122. package/dist/storage/redis-cluster-storage.d.ts.map +1 -0
  123. package/dist/storage/redis-cluster-storage.js +414 -0
  124. package/dist/storage/redis-cluster-storage.js.map +1 -0
  125. package/dist/storage/redis-storage.d.ts +67 -0
  126. package/dist/storage/redis-storage.d.ts.map +1 -0
  127. package/dist/storage/redis-storage.js +236 -0
  128. package/dist/storage/redis-storage.js.map +1 -0
  129. package/dist/storage/types.d.ts +55 -0
  130. package/dist/storage/types.d.ts.map +1 -0
  131. package/dist/storage/types.js +10 -0
  132. package/dist/storage/types.js.map +1 -0
  133. package/dist/types.d.ts +7 -32
  134. package/dist/types.d.ts.map +1 -1
  135. package/dist/types.js +1 -0
  136. package/dist/types.js.map +1 -1
  137. package/package.json +16 -3
@@ -0,0 +1,418 @@
1
+ "use strict";
2
+ /*
3
+ Copyright (c) 2025 Bernier LLC
4
+
5
+ This file is licensed to the client under a limited-use license.
6
+ The client may use and modify this code *only within the scope of the project it was delivered for*.
7
+ Redistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.SecureStorage = void 0;
11
+ /**
12
+ * Secure storage wrapper that adds encryption, access control, and audit logging
13
+ */
14
+ class SecureStorage {
15
+ constructor(storage, securityManager, defaultAccessControl) {
16
+ this.storage = storage;
17
+ this.securityManager = securityManager;
18
+ this.defaultAccessControl = defaultAccessControl;
19
+ }
20
+ /**
21
+ * Store a retry state with encryption and access control
22
+ */
23
+ async set(key, value, accessControl) {
24
+ const ac = accessControl || this.defaultAccessControl;
25
+ // Check access permissions
26
+ if (!this.securityManager.checkAccess(ac, 'write', key)) {
27
+ throw new Error('Access denied: insufficient permissions to write retry state');
28
+ }
29
+ // Check rate limiting
30
+ const rateLimitId = `${ac.userId || 'anonymous'}_write`;
31
+ if (!this.securityManager.checkRateLimit(rateLimitId)) {
32
+ throw new Error('Rate limit exceeded for write operations');
33
+ }
34
+ try {
35
+ // Encrypt the retry state data
36
+ const encryptedValue = await this.securityManager.encryptData(value);
37
+ // Store the encrypted data
38
+ await this.storage.set(key, { encrypted: true, data: encryptedValue });
39
+ // Log successful operation
40
+ this.securityManager.logAudit({
41
+ userId: ac.userId,
42
+ userRole: ac.userRole,
43
+ action: 'write',
44
+ resource: key,
45
+ success: true,
46
+ details: {
47
+ retryStateId: value.id,
48
+ status: value.status,
49
+ attempt: value.attempt
50
+ }
51
+ });
52
+ }
53
+ catch (error) {
54
+ // Log failed operation
55
+ this.securityManager.logAudit({
56
+ userId: ac.userId,
57
+ userRole: ac.userRole,
58
+ action: 'write',
59
+ resource: key,
60
+ success: false,
61
+ details: { error: error instanceof Error ? error.message : 'Unknown error' }
62
+ });
63
+ throw error;
64
+ }
65
+ }
66
+ /**
67
+ * Get a retry state with decryption and access control
68
+ */
69
+ async get(key, accessControl) {
70
+ const ac = accessControl || this.defaultAccessControl;
71
+ // Check access permissions
72
+ if (!this.securityManager.checkAccess(ac, 'read', key)) {
73
+ throw new Error('Access denied: insufficient permissions to read retry state');
74
+ }
75
+ // Check rate limiting
76
+ const rateLimitId = `${ac.userId || 'anonymous'}_read`;
77
+ if (!this.securityManager.checkRateLimit(rateLimitId)) {
78
+ throw new Error('Rate limit exceeded for read operations');
79
+ }
80
+ try {
81
+ // Get the stored data
82
+ const storedData = await this.storage.get(key);
83
+ if (!storedData) {
84
+ // Log successful read (no data found)
85
+ this.securityManager.logAudit({
86
+ userId: ac.userId,
87
+ userRole: ac.userRole,
88
+ action: 'read',
89
+ resource: key,
90
+ success: true,
91
+ details: { result: 'not_found' }
92
+ });
93
+ return null;
94
+ }
95
+ // Check if data is encrypted
96
+ if (this.isEncryptedData(storedData)) {
97
+ // Decrypt the data
98
+ const decryptedData = await this.securityManager.decryptData(storedData.data);
99
+ // Log successful read
100
+ this.securityManager.logAudit({
101
+ userId: ac.userId,
102
+ userRole: ac.userRole,
103
+ action: 'read',
104
+ resource: key,
105
+ success: true,
106
+ details: {
107
+ retryStateId: decryptedData.id,
108
+ status: decryptedData.status,
109
+ encrypted: true
110
+ }
111
+ });
112
+ return decryptedData;
113
+ }
114
+ else {
115
+ // Data is not encrypted (legacy or plain text)
116
+ this.securityManager.logAudit({
117
+ userId: ac.userId,
118
+ userRole: ac.userRole,
119
+ action: 'read',
120
+ resource: key,
121
+ success: true,
122
+ details: {
123
+ retryStateId: storedData.id,
124
+ status: storedData.status,
125
+ encrypted: false
126
+ }
127
+ });
128
+ return storedData;
129
+ }
130
+ }
131
+ catch (error) {
132
+ // Log failed operation
133
+ this.securityManager.logAudit({
134
+ userId: ac.userId,
135
+ userRole: ac.userRole,
136
+ action: 'read',
137
+ resource: key,
138
+ success: false,
139
+ details: { error: error instanceof Error ? error.message : 'Unknown error' }
140
+ });
141
+ throw error;
142
+ }
143
+ }
144
+ /**
145
+ * Delete a retry state with access control
146
+ */
147
+ async delete(key, accessControl) {
148
+ const ac = accessControl || this.defaultAccessControl;
149
+ // Check access permissions
150
+ if (!this.securityManager.checkAccess(ac, 'delete', key)) {
151
+ throw new Error('Access denied: insufficient permissions to delete retry state');
152
+ }
153
+ // Check rate limiting
154
+ const rateLimitId = `${ac.userId || 'anonymous'}_delete`;
155
+ if (!this.securityManager.checkRateLimit(rateLimitId)) {
156
+ throw new Error('Rate limit exceeded for delete operations');
157
+ }
158
+ try {
159
+ // Delete the data
160
+ await this.storage.delete(key);
161
+ // Log successful operation
162
+ this.securityManager.logAudit({
163
+ userId: ac.userId,
164
+ userRole: ac.userRole,
165
+ action: 'delete',
166
+ resource: key,
167
+ success: true
168
+ });
169
+ }
170
+ catch (error) {
171
+ // Log failed operation
172
+ this.securityManager.logAudit({
173
+ userId: ac.userId,
174
+ userRole: ac.userRole,
175
+ action: 'delete',
176
+ resource: key,
177
+ success: false,
178
+ details: { error: error instanceof Error ? error.message : 'Unknown error' }
179
+ });
180
+ throw error;
181
+ }
182
+ }
183
+ /**
184
+ * List all retry states with access control
185
+ */
186
+ async list(accessControl) {
187
+ const ac = accessControl || this.defaultAccessControl;
188
+ // Check access permissions
189
+ if (!this.securityManager.checkAccess(ac, 'read', 'all')) {
190
+ throw new Error('Access denied: insufficient permissions to list retry states');
191
+ }
192
+ // Check rate limiting
193
+ const rateLimitId = `${ac.userId || 'anonymous'}_list`;
194
+ if (!this.securityManager.checkRateLimit(rateLimitId)) {
195
+ throw new Error('Rate limit exceeded for list operations');
196
+ }
197
+ try {
198
+ // Get all stored data
199
+ const storedDataList = await this.storage.list();
200
+ const decryptedList = [];
201
+ // Process each item
202
+ for (const storedData of storedDataList) {
203
+ try {
204
+ if (this.isEncryptedData(storedData)) {
205
+ // Decrypt the data
206
+ const decryptedData = await this.securityManager.decryptData(storedData.data);
207
+ decryptedList.push(decryptedData);
208
+ }
209
+ else {
210
+ // Data is not encrypted
211
+ decryptedList.push(storedData);
212
+ }
213
+ }
214
+ catch (decryptError) {
215
+ // Log decryption error but continue with other items
216
+ this.securityManager.logAudit({
217
+ userId: ac.userId,
218
+ userRole: ac.userRole,
219
+ action: 'decrypt_error',
220
+ resource: 'list_operation',
221
+ success: false,
222
+ details: {
223
+ error: decryptError instanceof Error ? decryptError.message : 'Unknown error',
224
+ dataType: 'encrypted_retry_state'
225
+ }
226
+ });
227
+ }
228
+ }
229
+ // Log successful operation
230
+ this.securityManager.logAudit({
231
+ userId: ac.userId,
232
+ userRole: ac.userRole,
233
+ action: 'list',
234
+ resource: 'all',
235
+ success: true,
236
+ details: { count: decryptedList.length }
237
+ });
238
+ return decryptedList;
239
+ }
240
+ catch (error) {
241
+ // Log failed operation
242
+ this.securityManager.logAudit({
243
+ userId: ac.userId,
244
+ userRole: ac.userRole,
245
+ action: 'list',
246
+ resource: 'all',
247
+ success: false,
248
+ details: { error: error instanceof Error ? error.message : 'Unknown error' }
249
+ });
250
+ throw error;
251
+ }
252
+ }
253
+ /**
254
+ * Clear all retry states with access control
255
+ */
256
+ async clear(accessControl) {
257
+ const ac = accessControl || this.defaultAccessControl;
258
+ // Check access permissions
259
+ if (!this.securityManager.checkAccess(ac, 'clear', 'all')) {
260
+ throw new Error('Access denied: insufficient permissions to clear all retry states');
261
+ }
262
+ // Check rate limiting
263
+ const rateLimitId = `${ac.userId || 'anonymous'}_clear`;
264
+ if (!this.securityManager.checkRateLimit(rateLimitId)) {
265
+ throw new Error('Rate limit exceeded for clear operations');
266
+ }
267
+ try {
268
+ // Clear all data
269
+ await this.storage.clear();
270
+ // Log successful operation
271
+ this.securityManager.logAudit({
272
+ userId: ac.userId,
273
+ userRole: ac.userRole,
274
+ action: 'clear',
275
+ resource: 'all',
276
+ success: true,
277
+ details: { operation: 'clear_all_retry_states' }
278
+ });
279
+ }
280
+ catch (error) {
281
+ // Log failed operation
282
+ this.securityManager.logAudit({
283
+ userId: ac.userId,
284
+ userRole: ac.userRole,
285
+ action: 'clear',
286
+ resource: 'all',
287
+ success: false,
288
+ details: { error: error instanceof Error ? error.message : 'Unknown error' }
289
+ });
290
+ throw error;
291
+ }
292
+ }
293
+ /**
294
+ * Get storage statistics with access control
295
+ */
296
+ async getStats(accessControl) {
297
+ const ac = accessControl || this.defaultAccessControl;
298
+ // Check access permissions
299
+ if (!this.securityManager.checkAccess(ac, 'read', 'stats')) {
300
+ throw new Error('Access denied: insufficient permissions to read storage statistics');
301
+ }
302
+ try {
303
+ // Get storage statistics
304
+ const stats = await this.storage.getStats();
305
+ // Log successful operation
306
+ this.securityManager.logAudit({
307
+ userId: ac.userId,
308
+ userRole: ac.userRole,
309
+ action: 'read_stats',
310
+ resource: 'storage',
311
+ success: true,
312
+ details: {
313
+ totalKeys: stats.totalKeys,
314
+ totalSize: stats.totalSize
315
+ }
316
+ });
317
+ return stats;
318
+ }
319
+ catch (error) {
320
+ // Log failed operation
321
+ this.securityManager.logAudit({
322
+ userId: ac.userId,
323
+ userRole: ac.userRole,
324
+ action: 'read_stats',
325
+ resource: 'storage',
326
+ success: false,
327
+ details: { error: error instanceof Error ? error.message : 'Unknown error' }
328
+ });
329
+ throw error;
330
+ }
331
+ }
332
+ /**
333
+ * Test connection with access control
334
+ */
335
+ async testConnection(accessControl) {
336
+ const ac = accessControl || this.defaultAccessControl;
337
+ // Check access permissions
338
+ if (!this.securityManager.checkAccess(ac, 'read', 'connection')) {
339
+ throw new Error('Access denied: insufficient permissions to test connection');
340
+ }
341
+ try {
342
+ // Test connection
343
+ const result = await this.storage.testConnection();
344
+ // Log successful operation
345
+ this.securityManager.logAudit({
346
+ userId: ac.userId,
347
+ userRole: ac.userRole,
348
+ action: 'test_connection',
349
+ resource: 'storage',
350
+ success: true,
351
+ details: { result }
352
+ });
353
+ return result;
354
+ }
355
+ catch (error) {
356
+ // Log failed operation
357
+ this.securityManager.logAudit({
358
+ userId: ac.userId,
359
+ userRole: ac.userRole,
360
+ action: 'test_connection',
361
+ resource: 'storage',
362
+ success: false,
363
+ details: { error: error instanceof Error ? error.message : 'Unknown error' }
364
+ });
365
+ throw error;
366
+ }
367
+ }
368
+ /**
369
+ * Close connection
370
+ */
371
+ async close() {
372
+ try {
373
+ await this.storage.close();
374
+ // Log successful operation
375
+ this.securityManager.logAudit({
376
+ action: 'close_connection',
377
+ resource: 'storage',
378
+ success: true
379
+ });
380
+ }
381
+ catch (error) {
382
+ // Log failed operation
383
+ this.securityManager.logAudit({
384
+ action: 'close_connection',
385
+ resource: 'storage',
386
+ success: false,
387
+ details: { error: error instanceof Error ? error.message : 'Unknown error' }
388
+ });
389
+ throw error;
390
+ }
391
+ }
392
+ /**
393
+ * Get security manager instance
394
+ */
395
+ getSecurityManager() {
396
+ return this.securityManager;
397
+ }
398
+ /**
399
+ * Update default access control
400
+ */
401
+ setDefaultAccessControl(accessControl) {
402
+ this.defaultAccessControl = accessControl;
403
+ }
404
+ /**
405
+ * Get security status
406
+ */
407
+ getSecurityStatus() {
408
+ return this.securityManager.getSecurityStatus();
409
+ }
410
+ /**
411
+ * Type guard to check if data is encrypted
412
+ */
413
+ isEncryptedData(data) {
414
+ return 'encrypted' in data && data.encrypted === true && 'data' in data;
415
+ }
416
+ }
417
+ exports.SecureStorage = SecureStorage;
418
+ //# sourceMappingURL=secure-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secure-storage.js","sourceRoot":"","sources":["../../src/security/secure-storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,172 @@
1
+ import { EventEmitter } from 'events';
2
+ /**
3
+ * Security configuration interface
4
+ */
5
+ export interface SecurityConfig {
6
+ encryption?: {
7
+ enabled: boolean;
8
+ algorithm?: 'AES-256-CBC' | 'AES-256-GCM';
9
+ key?: string;
10
+ keyEnvVar?: string;
11
+ };
12
+ accessControl?: {
13
+ enabled: boolean;
14
+ roles?: string[];
15
+ permissions?: Record<string, string[]>;
16
+ defaultRole?: string;
17
+ };
18
+ auditLogging?: {
19
+ enabled: boolean;
20
+ level?: 'basic' | 'detailed' | 'verbose';
21
+ includeSensitiveData?: boolean;
22
+ maxLogSize?: number;
23
+ };
24
+ rateLimiting?: {
25
+ enabled: boolean;
26
+ maxRequestsPerMinute?: number;
27
+ maxRequestsPerHour?: number;
28
+ windowMs?: number;
29
+ };
30
+ }
31
+ /**
32
+ * Default security configuration
33
+ */
34
+ export declare const DEFAULT_SECURITY_CONFIG: SecurityConfig;
35
+ /**
36
+ * Audit log entry interface
37
+ */
38
+ export interface AuditLogEntry {
39
+ id: string;
40
+ timestamp: Date;
41
+ userId?: string;
42
+ userRole?: string;
43
+ action: string;
44
+ resource: string;
45
+ success: boolean;
46
+ details?: Record<string, any>;
47
+ ipAddress?: string;
48
+ userAgent?: string;
49
+ }
50
+ /**
51
+ * Access control interface
52
+ */
53
+ export interface AccessControl {
54
+ userId?: string;
55
+ userRole: string;
56
+ permissions: string[];
57
+ ipAddress?: string;
58
+ userAgent?: string;
59
+ }
60
+ /**
61
+ * Rate limiting interface
62
+ */
63
+ export interface RateLimitInfo {
64
+ userId?: string;
65
+ ipAddress?: string;
66
+ requests: number;
67
+ windowStart: Date;
68
+ limit: number;
69
+ }
70
+ /**
71
+ * Security Manager for handling encryption, access control, and audit logging
72
+ */
73
+ export declare class SecurityManager extends EventEmitter {
74
+ private config;
75
+ private auditLog;
76
+ private rateLimitStore;
77
+ private encryptionKey;
78
+ constructor(config?: Partial<SecurityConfig>);
79
+ /**
80
+ * Validate encryption configuration synchronously
81
+ */
82
+ private validateEncryptionConfig;
83
+ /**
84
+ * Initialize security features
85
+ */
86
+ private initializeSecurity;
87
+ /**
88
+ * Initialize encryption
89
+ */
90
+ private initializeEncryption;
91
+ /**
92
+ * Encrypt retry state data
93
+ */
94
+ encryptData(data: any): Promise<string>;
95
+ /**
96
+ * Decrypt retry state data
97
+ */
98
+ decryptData(encryptedData: string): Promise<any>;
99
+ /**
100
+ * Check access permissions
101
+ */
102
+ checkAccess(accessControl: AccessControl, action: string, resource: string): boolean;
103
+ /**
104
+ * Check rate limiting
105
+ */
106
+ checkRateLimit(identifier: string, limit?: number): boolean;
107
+ /**
108
+ * Log audit entry
109
+ */
110
+ logAudit(entry: Omit<AuditLogEntry, 'id' | 'timestamp'>): void;
111
+ /**
112
+ * Get audit log entries
113
+ */
114
+ getAuditLog(limit?: number, offset?: number): AuditLogEntry[];
115
+ /**
116
+ * Get audit log entries by user
117
+ */
118
+ getAuditLogByUser(userId: string, limit?: number): AuditLogEntry[];
119
+ /**
120
+ * Get audit log entries by action
121
+ */
122
+ getAuditLogByAction(action: string, limit?: number): AuditLogEntry[];
123
+ /**
124
+ * Get audit statistics
125
+ */
126
+ getAuditStats(): Record<string, any>;
127
+ /**
128
+ * Clear audit log
129
+ */
130
+ clearAuditLog(): void;
131
+ /**
132
+ * Get rate limit information
133
+ */
134
+ getRateLimitInfo(identifier: string): RateLimitInfo | null;
135
+ /**
136
+ * Reset rate limit for an identifier
137
+ */
138
+ resetRateLimit(identifier: string): void;
139
+ /**
140
+ * Get security configuration
141
+ */
142
+ getConfig(): SecurityConfig;
143
+ /**
144
+ * Update security configuration
145
+ */
146
+ updateConfig(newConfig: Partial<SecurityConfig>): void;
147
+ /**
148
+ * Check if encryption is enabled
149
+ */
150
+ isEncryptionEnabled(): boolean;
151
+ /**
152
+ * Check if access control is enabled
153
+ */
154
+ isAccessControlEnabled(): boolean;
155
+ /**
156
+ * Check if audit logging is enabled
157
+ */
158
+ isAuditLoggingEnabled(): boolean;
159
+ /**
160
+ * Check if rate limiting is enabled
161
+ */
162
+ isRateLimitingEnabled(): boolean;
163
+ /**
164
+ * Generate unique ID for audit entries
165
+ */
166
+ private generateId;
167
+ /**
168
+ * Get security status
169
+ */
170
+ getSecurityStatus(): Record<string, any>;
171
+ }
172
+ //# sourceMappingURL=security-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-manager.d.ts","sourceRoot":"","sources":["../../src/security/security-manager.ts"],"names":[],"mappings":"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"}