@bernierllc/backoff-retry 0.1.1 → 0.3.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 (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 +15 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @bernierllc/backoff-retry
2
2
 
3
+ ## 0.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - f22e382: refactor: use core retry-policy, retry-state, retry-metrics packages for all retry logic
8
+
9
+ ## 0.2.0
10
+
11
+ ### Minor Changes
12
+
13
+ - 00c3e32: refactor: use core retry-policy, retry-state, retry-metrics packages for all retry logic
14
+ - 043d97d: refactor: use core retry-policy, retry-state, retry-metrics packages for all retry logic
15
+
3
16
  ## 0.1.1
4
17
 
5
18
  ### Patch Changes
package/README.md CHANGED
@@ -76,6 +76,13 @@ RETRY_STORAGE_TYPE=redis
76
76
 
77
77
  # Redis connection URL (if using Redis storage)
78
78
  REDIS_URL=redis://localhost:6379
79
+
80
+ # Enhancement configuration
81
+ NEVERADMIN_API_KEY=your_admin_api_key
82
+ NEVERHUB_API_KEY=your_hub_api_key
83
+ NOTIFICATION_EMAIL=admin@example.com,ops@example.com
84
+ SLACK_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK
85
+ PAGERDUTY_KEY=your_pagerduty_key
79
86
  ```
80
87
 
81
88
  ### Custom Configuration
@@ -98,6 +105,24 @@ const retryManager = createRetryManager({
98
105
  maxDelayMs: 10000,
99
106
  backoffFactor: 2,
100
107
  jitter: true
108
+ },
109
+ enhancements: {
110
+ storage: {
111
+ enabled: true,
112
+ type: 'memory',
113
+ autoUpgrade: true,
114
+ thresholdNotifications: true,
115
+ memoryThreshold: 80
116
+ },
117
+ notifications: {
118
+ enabled: true,
119
+ email: ['admin@example.com'],
120
+ thresholds: {
121
+ memoryUsage: 80,
122
+ retryFailures: 10,
123
+ performanceDegradation: 20
124
+ }
125
+ }
101
126
  }
102
127
  });
103
128
  ```
@@ -198,6 +223,91 @@ const redisClient = createClient({ url: 'redis://localhost:6379' });
198
223
  const storage = new RedisStorageAdapter(redisClient, 'retry:');
199
224
  ```
200
225
 
226
+ ## Enhancement System
227
+
228
+ The package includes an opt-in enhancement system that provides advanced features with automatic upgrades and admin notifications:
229
+
230
+ ### Available Enhancements
231
+
232
+ - **Storage Enhancements**: Auto-upgrade from memory to Redis/PostgreSQL/MongoDB
233
+ - **Memory Protection**: Advanced analytics, leak detection, predictive forecasting
234
+ - **NeverAdmin Integration**: Dashboard widgets, real-time metrics, configuration management
235
+ - **NeverHub Integration**: Event streaming, webhook management, cross-service sync
236
+ - **Machine Learning**: Predictive retry optimization, error classification
237
+ - **Performance**: Multi-level caching, concurrency management, load balancing
238
+ - **Security**: Encryption, rate limiting, audit logging, access control
239
+ - **Notifications**: Email, Slack, PagerDuty, webhook notifications
240
+
241
+ ### Basic Enhancement Setup
242
+
243
+ ```typescript
244
+ const retryManager = createRetryManager({
245
+ enhancements: {
246
+ storage: {
247
+ enabled: true,
248
+ type: 'memory',
249
+ autoUpgrade: true, // Automatically upgrade when Redis/DB available
250
+ thresholdNotifications: true,
251
+ memoryThreshold: 80 // Notify when 80% memory usage reached
252
+ },
253
+ notifications: {
254
+ enabled: true,
255
+ email: ['admin@example.com'],
256
+ thresholds: {
257
+ memoryUsage: 80,
258
+ retryFailures: 10,
259
+ performanceDegradation: 20
260
+ }
261
+ }
262
+ }
263
+ });
264
+ ```
265
+
266
+ ### Environment-Based Auto-Configuration
267
+
268
+ The enhancement system automatically detects and enables features based on environment variables:
269
+
270
+ ```bash
271
+ # Auto-enable Redis storage
272
+ REDIS_URL=redis://localhost:6379
273
+
274
+ # Auto-enable NeverAdmin integration
275
+ NEVERADMIN_API_KEY=your_key
276
+ NEVERADMIN_DASHBOARD_URL=https://admin.example.com
277
+
278
+ # Auto-enable NeverHub integration
279
+ NEVERHUB_API_KEY=your_key
280
+ NEVERHUB_URL=https://hub.example.com
281
+
282
+ # Auto-enable notifications
283
+ NOTIFICATION_EMAIL=admin@example.com,ops@example.com
284
+ SLACK_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK
285
+ PAGERDUTY_KEY=your_pagerduty_key
286
+ ```
287
+
288
+ ### Dynamic Enhancement Management
289
+
290
+ ```typescript
291
+ // Check if enhancement is available
292
+ if (retryManager.isEnhancementAvailable('neverAdmin')) {
293
+ console.log('NeverAdmin integration is enabled');
294
+ }
295
+
296
+ // Enable enhancement dynamically
297
+ retryManager.enableEnhancement('ml', {
298
+ predictiveRetry: true,
299
+ errorClassification: true
300
+ });
301
+
302
+ // Get enhancement recommendations
303
+ const recommendations = retryManager.getEnhancementRecommendations();
304
+ console.log('Recommendations:', recommendations);
305
+
306
+ // Get enhancement metrics
307
+ const enhancementMetrics = retryManager.getEnhancementManager().getMetrics();
308
+ console.log('Performance score:', enhancementMetrics.performanceScore);
309
+ ```
310
+
201
311
  ## Memory Protection
202
312
 
203
313
  The package includes built-in memory protection to prevent runaway memory usage:
@@ -0,0 +1,205 @@
1
+ import { EventEmitter } from 'events';
2
+ export interface EnhancementConfig {
3
+ storage?: {
4
+ enabled: boolean;
5
+ type: 'memory' | 'redis' | 'postgresql' | 'mongodb';
6
+ config?: any;
7
+ autoUpgrade: boolean;
8
+ thresholdNotifications: boolean;
9
+ memoryThreshold: number;
10
+ };
11
+ memoryProtection?: {
12
+ enabled: boolean;
13
+ advancedAnalytics: boolean;
14
+ predictiveForecasting: boolean;
15
+ leakDetection: boolean;
16
+ autoAdjustment: boolean;
17
+ systemResourceMonitoring: boolean;
18
+ };
19
+ neverAdmin?: {
20
+ enabled: boolean;
21
+ dashboardUrl?: string;
22
+ apiKey?: string;
23
+ autoMetrics: boolean;
24
+ realTimeUpdates: boolean;
25
+ };
26
+ neverHub?: {
27
+ enabled: boolean;
28
+ eventStreaming: boolean;
29
+ webhookManagement: boolean;
30
+ crossServiceSync: boolean;
31
+ hubUrl?: string;
32
+ apiKey?: string;
33
+ };
34
+ ml?: {
35
+ enabled: boolean;
36
+ predictiveRetry: boolean;
37
+ errorClassification: boolean;
38
+ performanceOptimization: boolean;
39
+ modelPath?: string;
40
+ };
41
+ performance?: {
42
+ enabled: boolean;
43
+ caching: boolean;
44
+ concurrencyManagement: boolean;
45
+ loadBalancing: boolean;
46
+ cacheLevels: 'l1' | 'l2' | 'l3' | 'all';
47
+ };
48
+ security?: {
49
+ enabled: boolean;
50
+ encryption: boolean;
51
+ rateLimiting: boolean;
52
+ auditLogging: boolean;
53
+ accessControl: boolean;
54
+ };
55
+ notifications?: {
56
+ enabled: boolean;
57
+ email?: string[];
58
+ webhook?: string;
59
+ slack?: string;
60
+ pagerDuty?: string;
61
+ thresholds: {
62
+ memoryUsage: number;
63
+ retryFailures: number;
64
+ performanceDegradation: number;
65
+ };
66
+ };
67
+ }
68
+ export interface EnhancementEvent {
69
+ type: 'threshold_reached' | 'auto_upgrade' | 'performance_alert' | 'security_alert';
70
+ severity: 'info' | 'warning' | 'error' | 'critical';
71
+ message: string;
72
+ data?: any;
73
+ timestamp: Date;
74
+ }
75
+ export interface EnhancementMetrics {
76
+ currentUsage: number;
77
+ maxUsage: number;
78
+ usagePercentage: number;
79
+ activeEnhancements: string[];
80
+ performanceScore: number;
81
+ recommendations: string[];
82
+ }
83
+ /**
84
+ * Enhancement Manager for opt-in features with automatic upgrades
85
+ */
86
+ export declare class EnhancementManager extends EventEmitter {
87
+ private config;
88
+ private activeEnhancements;
89
+ private metrics;
90
+ private notificationQueue;
91
+ constructor(config?: Partial<EnhancementConfig>);
92
+ /**
93
+ * Check if an enhancement is available and enabled
94
+ */
95
+ isEnhancementAvailable(type: keyof EnhancementConfig): boolean;
96
+ /**
97
+ * Get enhancement configuration
98
+ */
99
+ getEnhancementConfig<T extends keyof EnhancementConfig>(type: T): EnhancementConfig[T];
100
+ /**
101
+ * Enable an enhancement
102
+ */
103
+ enableEnhancement(type: keyof EnhancementConfig, config?: any): void;
104
+ /**
105
+ * Disable an enhancement
106
+ */
107
+ disableEnhancement(type: keyof EnhancementConfig): void;
108
+ /**
109
+ * Check if storage should auto-upgrade
110
+ */
111
+ shouldAutoUpgradeStorage(currentUsage: number, maxUsage: number): boolean;
112
+ /**
113
+ * Get recommended storage upgrade
114
+ */
115
+ getRecommendedStorageUpgrade(): string | null;
116
+ /**
117
+ * Send notification to administrators
118
+ */
119
+ sendNotification(event: EnhancementEvent): Promise<void>;
120
+ /**
121
+ * Update metrics and check thresholds
122
+ */
123
+ updateMetrics(metrics: Partial<EnhancementMetrics>): void;
124
+ /**
125
+ * Get current metrics
126
+ */
127
+ getMetrics(): EnhancementMetrics;
128
+ /**
129
+ * Get active enhancements
130
+ */
131
+ getActiveEnhancements(): string[];
132
+ /**
133
+ * Get enhancement recommendations
134
+ */
135
+ getRecommendations(): string[];
136
+ /**
137
+ * Initialize enhancements based on configuration
138
+ */
139
+ private initializeEnhancements;
140
+ /**
141
+ * Check thresholds and send notifications
142
+ */
143
+ private checkThresholds;
144
+ /**
145
+ * Check for auto-upgrade opportunities
146
+ */
147
+ private checkAutoUpgradeOpportunities;
148
+ /**
149
+ * Initialize storage enhancement
150
+ */
151
+ private initializeStorageEnhancement;
152
+ /**
153
+ * Initialize memory protection enhancement
154
+ */
155
+ private initializeMemoryProtectionEnhancement;
156
+ /**
157
+ * Initialize NeverAdmin enhancement
158
+ */
159
+ private initializeNeverAdminEnhancement;
160
+ /**
161
+ * Initialize NeverHub enhancement
162
+ */
163
+ private initializeNeverHubEnhancement;
164
+ /**
165
+ * Initialize ML enhancement
166
+ */
167
+ private initializeMLEnhancement;
168
+ /**
169
+ * Initialize performance enhancement
170
+ */
171
+ private initializePerformanceEnhancement;
172
+ /**
173
+ * Initialize security enhancement
174
+ */
175
+ private initializeSecurityEnhancement;
176
+ /**
177
+ * Merge configuration with defaults
178
+ */
179
+ private mergeWithDefaults;
180
+ /**
181
+ * Initialize metrics
182
+ */
183
+ private initializeMetrics;
184
+ /**
185
+ * Send email notification
186
+ */
187
+ private sendEmailNotification;
188
+ /**
189
+ * Send webhook notification
190
+ */
191
+ private sendWebhookNotification;
192
+ /**
193
+ * Send Slack notification
194
+ */
195
+ private sendSlackNotification;
196
+ /**
197
+ * Send PagerDuty notification
198
+ */
199
+ private sendPagerDutyNotification;
200
+ }
201
+ /**
202
+ * Factory function to create enhancement manager
203
+ */
204
+ export declare function createEnhancementManager(config?: Partial<EnhancementConfig>): EnhancementManager;
205
+ //# sourceMappingURL=enhancement-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhancement-manager.d.ts","sourceRoot":"","sources":["../src/enhancement-manager.ts"],"names":[],"mappings":"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"}