@nahisaho/musubix-core 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 (214) hide show
  1. package/bin/musubix.js +18 -0
  2. package/dist/__tests__/index.test.d.ts +2 -0
  3. package/dist/__tests__/index.test.d.ts.map +1 -0
  4. package/dist/__tests__/index.test.js +27 -0
  5. package/dist/__tests__/index.test.js.map +1 -0
  6. package/dist/auth/auth-manager.d.ts +320 -0
  7. package/dist/auth/auth-manager.d.ts.map +1 -0
  8. package/dist/auth/auth-manager.js +580 -0
  9. package/dist/auth/auth-manager.js.map +1 -0
  10. package/dist/cli/base.d.ts +58 -0
  11. package/dist/cli/base.d.ts.map +1 -0
  12. package/dist/cli/base.js +93 -0
  13. package/dist/cli/base.js.map +1 -0
  14. package/dist/cli/commands/help.d.ts +17 -0
  15. package/dist/cli/commands/help.d.ts.map +1 -0
  16. package/dist/cli/commands/help.js +228 -0
  17. package/dist/cli/commands/help.js.map +1 -0
  18. package/dist/cli/commands/index.d.ts +14 -0
  19. package/dist/cli/commands/index.d.ts.map +1 -0
  20. package/dist/cli/commands/index.js +25 -0
  21. package/dist/cli/commands/index.js.map +1 -0
  22. package/dist/cli/commands/init.d.ts +38 -0
  23. package/dist/cli/commands/init.d.ts.map +1 -0
  24. package/dist/cli/commands/init.js +258 -0
  25. package/dist/cli/commands/init.js.map +1 -0
  26. package/dist/cli/index.d.ts +9 -0
  27. package/dist/cli/index.d.ts.map +1 -0
  28. package/dist/cli/index.js +9 -0
  29. package/dist/cli/index.js.map +1 -0
  30. package/dist/codegen/coding-standards.d.ts +250 -0
  31. package/dist/codegen/coding-standards.d.ts.map +1 -0
  32. package/dist/codegen/coding-standards.js +976 -0
  33. package/dist/codegen/coding-standards.js.map +1 -0
  34. package/dist/codegen/coverage-reporter.d.ts +264 -0
  35. package/dist/codegen/coverage-reporter.d.ts.map +1 -0
  36. package/dist/codegen/coverage-reporter.js +697 -0
  37. package/dist/codegen/coverage-reporter.js.map +1 -0
  38. package/dist/codegen/dependency-analyzer.d.ts +271 -0
  39. package/dist/codegen/dependency-analyzer.d.ts.map +1 -0
  40. package/dist/codegen/dependency-analyzer.js +661 -0
  41. package/dist/codegen/dependency-analyzer.js.map +1 -0
  42. package/dist/codegen/generator.d.ts +275 -0
  43. package/dist/codegen/generator.d.ts.map +1 -0
  44. package/dist/codegen/generator.js +781 -0
  45. package/dist/codegen/generator.js.map +1 -0
  46. package/dist/codegen/index.d.ts +18 -0
  47. package/dist/codegen/index.d.ts.map +1 -0
  48. package/dist/codegen/index.js +27 -0
  49. package/dist/codegen/index.js.map +1 -0
  50. package/dist/codegen/integration-test-generator.d.ts +312 -0
  51. package/dist/codegen/integration-test-generator.d.ts.map +1 -0
  52. package/dist/codegen/integration-test-generator.js +765 -0
  53. package/dist/codegen/integration-test-generator.js.map +1 -0
  54. package/dist/codegen/pattern-conformance.d.ts +309 -0
  55. package/dist/codegen/pattern-conformance.d.ts.map +1 -0
  56. package/dist/codegen/pattern-conformance.js +590 -0
  57. package/dist/codegen/pattern-conformance.js.map +1 -0
  58. package/dist/codegen/quality-metrics.d.ts +235 -0
  59. package/dist/codegen/quality-metrics.d.ts.map +1 -0
  60. package/dist/codegen/quality-metrics.js +439 -0
  61. package/dist/codegen/quality-metrics.js.map +1 -0
  62. package/dist/codegen/security-scanner.d.ts +179 -0
  63. package/dist/codegen/security-scanner.d.ts.map +1 -0
  64. package/dist/codegen/security-scanner.js +495 -0
  65. package/dist/codegen/security-scanner.js.map +1 -0
  66. package/dist/codegen/static-analyzer.d.ts +188 -0
  67. package/dist/codegen/static-analyzer.d.ts.map +1 -0
  68. package/dist/codegen/static-analyzer.js +490 -0
  69. package/dist/codegen/static-analyzer.js.map +1 -0
  70. package/dist/codegen/unit-test-generator.d.ts +289 -0
  71. package/dist/codegen/unit-test-generator.d.ts.map +1 -0
  72. package/dist/codegen/unit-test-generator.js +634 -0
  73. package/dist/codegen/unit-test-generator.js.map +1 -0
  74. package/dist/design/adr-generator.d.ts +227 -0
  75. package/dist/design/adr-generator.d.ts.map +1 -0
  76. package/dist/design/adr-generator.js +423 -0
  77. package/dist/design/adr-generator.js.map +1 -0
  78. package/dist/design/c4-generator.d.ts +267 -0
  79. package/dist/design/c4-generator.d.ts.map +1 -0
  80. package/dist/design/c4-generator.js +453 -0
  81. package/dist/design/c4-generator.js.map +1 -0
  82. package/dist/design/framework-optimizer.d.ts +190 -0
  83. package/dist/design/framework-optimizer.d.ts.map +1 -0
  84. package/dist/design/framework-optimizer.js +589 -0
  85. package/dist/design/framework-optimizer.js.map +1 -0
  86. package/dist/design/index.d.ts +12 -0
  87. package/dist/design/index.d.ts.map +1 -0
  88. package/dist/design/index.js +13 -0
  89. package/dist/design/index.js.map +1 -0
  90. package/dist/design/pattern-detector.d.ts +270 -0
  91. package/dist/design/pattern-detector.d.ts.map +1 -0
  92. package/dist/design/pattern-detector.js +621 -0
  93. package/dist/design/pattern-detector.js.map +1 -0
  94. package/dist/design/solid-validator.d.ts +188 -0
  95. package/dist/design/solid-validator.d.ts.map +1 -0
  96. package/dist/design/solid-validator.js +579 -0
  97. package/dist/design/solid-validator.js.map +1 -0
  98. package/dist/error/data-persistence.d.ts +311 -0
  99. package/dist/error/data-persistence.d.ts.map +1 -0
  100. package/dist/error/data-persistence.js +586 -0
  101. package/dist/error/data-persistence.js.map +1 -0
  102. package/dist/error/graceful-degradation.d.ts +309 -0
  103. package/dist/error/graceful-degradation.d.ts.map +1 -0
  104. package/dist/error/graceful-degradation.js +510 -0
  105. package/dist/error/graceful-degradation.js.map +1 -0
  106. package/dist/error/index.d.ts +11 -0
  107. package/dist/error/index.d.ts.map +1 -0
  108. package/dist/error/index.js +19 -0
  109. package/dist/error/index.js.map +1 -0
  110. package/dist/explanation/explanation-generator.d.ts +228 -0
  111. package/dist/explanation/explanation-generator.d.ts.map +1 -0
  112. package/dist/explanation/explanation-generator.js +662 -0
  113. package/dist/explanation/explanation-generator.js.map +1 -0
  114. package/dist/explanation/index.d.ts +11 -0
  115. package/dist/explanation/index.d.ts.map +1 -0
  116. package/dist/explanation/index.js +19 -0
  117. package/dist/explanation/index.js.map +1 -0
  118. package/dist/explanation/reasoning-chain.d.ts +314 -0
  119. package/dist/explanation/reasoning-chain.d.ts.map +1 -0
  120. package/dist/explanation/reasoning-chain.js +414 -0
  121. package/dist/explanation/reasoning-chain.js.map +1 -0
  122. package/dist/explanation/visual-explanation.d.ts +315 -0
  123. package/dist/explanation/visual-explanation.d.ts.map +1 -0
  124. package/dist/explanation/visual-explanation.js +667 -0
  125. package/dist/explanation/visual-explanation.js.map +1 -0
  126. package/dist/index.d.ts +33 -0
  127. package/dist/index.d.ts.map +1 -0
  128. package/dist/index.js +47 -0
  129. package/dist/index.js.map +1 -0
  130. package/dist/requirements/decomposer.d.ts +235 -0
  131. package/dist/requirements/decomposer.d.ts.map +1 -0
  132. package/dist/requirements/decomposer.js +587 -0
  133. package/dist/requirements/decomposer.js.map +1 -0
  134. package/dist/requirements/related-finder.d.ts +261 -0
  135. package/dist/requirements/related-finder.d.ts.map +1 -0
  136. package/dist/requirements/related-finder.js +629 -0
  137. package/dist/requirements/related-finder.js.map +1 -0
  138. package/dist/traceability/impact.d.ts +196 -0
  139. package/dist/traceability/impact.d.ts.map +1 -0
  140. package/dist/traceability/impact.js +438 -0
  141. package/dist/traceability/impact.js.map +1 -0
  142. package/dist/traceability/index.d.ts +9 -0
  143. package/dist/traceability/index.d.ts.map +1 -0
  144. package/dist/traceability/index.js +10 -0
  145. package/dist/traceability/index.js.map +1 -0
  146. package/dist/traceability/manager.d.ts +266 -0
  147. package/dist/traceability/manager.d.ts.map +1 -0
  148. package/dist/traceability/manager.js +412 -0
  149. package/dist/traceability/manager.js.map +1 -0
  150. package/dist/types/common.d.ts +294 -0
  151. package/dist/types/common.d.ts.map +1 -0
  152. package/dist/types/common.js +15 -0
  153. package/dist/types/common.js.map +1 -0
  154. package/dist/types/ears.d.ts +158 -0
  155. package/dist/types/ears.d.ts.map +1 -0
  156. package/dist/types/ears.js +33 -0
  157. package/dist/types/ears.js.map +1 -0
  158. package/dist/types/errors.d.ts +176 -0
  159. package/dist/types/errors.d.ts.map +1 -0
  160. package/dist/types/errors.js +55 -0
  161. package/dist/types/errors.js.map +1 -0
  162. package/dist/types/index.d.ts +10 -0
  163. package/dist/types/index.d.ts.map +1 -0
  164. package/dist/types/index.js +10 -0
  165. package/dist/types/index.js.map +1 -0
  166. package/dist/utils/data-protector.d.ts +122 -0
  167. package/dist/utils/data-protector.d.ts.map +1 -0
  168. package/dist/utils/data-protector.js +275 -0
  169. package/dist/utils/data-protector.js.map +1 -0
  170. package/dist/utils/error-handler.d.ts +101 -0
  171. package/dist/utils/error-handler.d.ts.map +1 -0
  172. package/dist/utils/error-handler.js +324 -0
  173. package/dist/utils/error-handler.js.map +1 -0
  174. package/dist/utils/i18n-manager.d.ts +259 -0
  175. package/dist/utils/i18n-manager.d.ts.map +1 -0
  176. package/dist/utils/i18n-manager.js +554 -0
  177. package/dist/utils/i18n-manager.js.map +1 -0
  178. package/dist/utils/index.d.ts +10 -0
  179. package/dist/utils/index.d.ts.map +1 -0
  180. package/dist/utils/index.js +10 -0
  181. package/dist/utils/index.js.map +1 -0
  182. package/dist/utils/logger.d.ts +120 -0
  183. package/dist/utils/logger.d.ts.map +1 -0
  184. package/dist/utils/logger.js +237 -0
  185. package/dist/utils/logger.js.map +1 -0
  186. package/dist/utils/performance-profiler.d.ts +251 -0
  187. package/dist/utils/performance-profiler.d.ts.map +1 -0
  188. package/dist/utils/performance-profiler.js +458 -0
  189. package/dist/utils/performance-profiler.js.map +1 -0
  190. package/dist/utils/scalability-optimizer.d.ts +294 -0
  191. package/dist/utils/scalability-optimizer.d.ts.map +1 -0
  192. package/dist/utils/scalability-optimizer.js +606 -0
  193. package/dist/utils/scalability-optimizer.js.map +1 -0
  194. package/dist/utils/structured-logger.d.ts +294 -0
  195. package/dist/utils/structured-logger.d.ts.map +1 -0
  196. package/dist/utils/structured-logger.js +630 -0
  197. package/dist/utils/structured-logger.js.map +1 -0
  198. package/dist/utils/version-compatibility.d.ts +217 -0
  199. package/dist/utils/version-compatibility.d.ts.map +1 -0
  200. package/dist/utils/version-compatibility.js +443 -0
  201. package/dist/utils/version-compatibility.js.map +1 -0
  202. package/dist/validators/ears-validator.d.ts +182 -0
  203. package/dist/validators/ears-validator.d.ts.map +1 -0
  204. package/dist/validators/ears-validator.js +357 -0
  205. package/dist/validators/ears-validator.js.map +1 -0
  206. package/dist/validators/index.d.ts +8 -0
  207. package/dist/validators/index.d.ts.map +1 -0
  208. package/dist/validators/index.js +9 -0
  209. package/dist/validators/index.js.map +1 -0
  210. package/dist/version.d.ts +8 -0
  211. package/dist/version.d.ts.map +1 -0
  212. package/dist/version.js +8 -0
  213. package/dist/version.js.map +1 -0
  214. package/package.json +100 -0
@@ -0,0 +1,510 @@
1
+ /**
2
+ * Graceful Degradation
3
+ *
4
+ * Handles errors gracefully with fallback strategies
5
+ *
6
+ * @packageDocumentation
7
+ * @module error/graceful-degradation
8
+ *
9
+ * @see REQ-ERR-001 - Graceful Degradation
10
+ * @see Article V - Safety Assurance
11
+ */
12
+ /**
13
+ * In-memory cache provider
14
+ */
15
+ export class MemoryCacheProvider {
16
+ cache = new Map();
17
+ async get(key) {
18
+ const entry = this.cache.get(key);
19
+ if (!entry)
20
+ return null;
21
+ if (entry.expires && entry.expires < Date.now()) {
22
+ this.cache.delete(key);
23
+ return null;
24
+ }
25
+ return entry.value;
26
+ }
27
+ async set(key, value, ttl) {
28
+ this.cache.set(key, {
29
+ value,
30
+ expires: ttl ? Date.now() + ttl : 0,
31
+ });
32
+ }
33
+ async delete(key) {
34
+ this.cache.delete(key);
35
+ }
36
+ async clear() {
37
+ this.cache.clear();
38
+ }
39
+ }
40
+ /**
41
+ * In-memory queue provider
42
+ */
43
+ export class MemoryQueueProvider {
44
+ queue = [];
45
+ counter = 0;
46
+ async enqueue(item) {
47
+ const id = `q-${Date.now()}-${++this.counter}`;
48
+ this.queue.push({ id, item });
49
+ return id;
50
+ }
51
+ async dequeue() {
52
+ const entry = this.queue.shift();
53
+ return entry ? entry.item : null;
54
+ }
55
+ async size() {
56
+ return this.queue.length;
57
+ }
58
+ async clear() {
59
+ this.queue = [];
60
+ }
61
+ }
62
+ /**
63
+ * Default configuration
64
+ */
65
+ export const DEFAULT_DEGRADATION_CONFIG = {
66
+ services: [],
67
+ healthCheckInterval: 30000,
68
+ autoRecovery: true,
69
+ maxQueueSize: 1000,
70
+ };
71
+ /**
72
+ * Graceful Degradation Manager
73
+ */
74
+ export class GracefulDegradation {
75
+ config;
76
+ serviceStatus;
77
+ currentLevel = 'full';
78
+ events = [];
79
+ eventCounter = 0;
80
+ healthCheckTimer;
81
+ cache;
82
+ queue;
83
+ constructor(config) {
84
+ this.config = { ...DEFAULT_DEGRADATION_CONFIG, ...config };
85
+ this.serviceStatus = new Map();
86
+ this.cache = config?.cacheProvider ?? new MemoryCacheProvider();
87
+ this.queue = config?.queueProvider ?? new MemoryQueueProvider();
88
+ // Initialize service status
89
+ for (const service of this.config.services) {
90
+ this.serviceStatus.set(service.name, {
91
+ service: service.name,
92
+ status: 'unknown',
93
+ });
94
+ }
95
+ }
96
+ /**
97
+ * Start health monitoring
98
+ */
99
+ start() {
100
+ this.runHealthChecks();
101
+ this.healthCheckTimer = setInterval(() => this.runHealthChecks(), this.config.healthCheckInterval);
102
+ }
103
+ /**
104
+ * Stop health monitoring
105
+ */
106
+ stop() {
107
+ if (this.healthCheckTimer) {
108
+ clearInterval(this.healthCheckTimer);
109
+ this.healthCheckTimer = undefined;
110
+ }
111
+ }
112
+ /**
113
+ * Register a service
114
+ */
115
+ registerService(service) {
116
+ this.config.services.push(service);
117
+ this.serviceStatus.set(service.name, {
118
+ service: service.name,
119
+ status: 'unknown',
120
+ });
121
+ }
122
+ /**
123
+ * Execute operation with graceful degradation
124
+ */
125
+ async execute(serviceName, operation, options) {
126
+ const service = this.config.services.find((s) => s.name === serviceName);
127
+ const status = this.serviceStatus.get(serviceName);
128
+ // Try normal operation if service is healthy
129
+ if (!status || status.status === 'healthy' || status.status === 'unknown') {
130
+ try {
131
+ const value = await this.withTimeout(operation, options?.timeout ?? 30000);
132
+ // Cache successful result
133
+ if (options?.cacheKey) {
134
+ await this.cache.set(options.cacheKey, value, service?.cacheTtl);
135
+ }
136
+ return {
137
+ value,
138
+ degraded: false,
139
+ level: this.currentLevel,
140
+ warnings: [],
141
+ };
142
+ }
143
+ catch (error) {
144
+ // Service failed, try fallback
145
+ return this.executeFallback(serviceName, error, options);
146
+ }
147
+ }
148
+ // Service is not healthy, go straight to fallback
149
+ return this.executeFallback(serviceName, new Error(`Service ${serviceName} is ${status.status}`), options);
150
+ }
151
+ /**
152
+ * Execute fallback strategy
153
+ */
154
+ async executeFallback(serviceName, error, options) {
155
+ const service = this.config.services.find((s) => s.name === serviceName);
156
+ const strategies = service?.fallbackStrategies ?? ['default'];
157
+ const warnings = [`Primary operation failed: ${error.message}`];
158
+ for (const strategy of strategies) {
159
+ try {
160
+ const result = await this.executeStrategy(serviceName, strategy, options);
161
+ if (result !== null) {
162
+ return {
163
+ value: result,
164
+ degraded: true,
165
+ level: this.currentLevel,
166
+ strategy,
167
+ originalError: error,
168
+ warnings,
169
+ };
170
+ }
171
+ }
172
+ catch (e) {
173
+ warnings.push(`Fallback ${strategy} failed: ${e.message}`);
174
+ }
175
+ }
176
+ // All fallbacks failed
177
+ throw new Error(`All fallback strategies failed for ${serviceName}. ` +
178
+ `Warnings: ${warnings.join('; ')}`);
179
+ }
180
+ /**
181
+ * Execute a specific strategy
182
+ */
183
+ async executeStrategy(serviceName, strategy, options) {
184
+ const service = this.config.services.find((s) => s.name === serviceName);
185
+ switch (strategy) {
186
+ case 'cache':
187
+ if (options?.cacheKey) {
188
+ const cached = await this.cache.get(options.cacheKey);
189
+ if (cached !== null)
190
+ return cached;
191
+ }
192
+ return null;
193
+ case 'default':
194
+ if (options?.defaultValue !== undefined) {
195
+ return options.defaultValue;
196
+ }
197
+ return null;
198
+ case 'retry':
199
+ // Retry logic would go here, but we've already failed
200
+ // This is more of a pre-failure strategy
201
+ return null;
202
+ case 'alternative':
203
+ if (service?.alternative) {
204
+ const altService = this.config.services.find((s) => s.name === service.alternative);
205
+ if (altService) {
206
+ // Would execute alternative service here
207
+ // For now, return null
208
+ }
209
+ }
210
+ return null;
211
+ case 'skip':
212
+ // Skip returns null to indicate operation skipped
213
+ return null;
214
+ case 'queue':
215
+ // Queue for later processing
216
+ if (await this.queue.size() < this.config.maxQueueSize) {
217
+ await this.queue.enqueue({
218
+ service: serviceName,
219
+ timestamp: new Date(),
220
+ options,
221
+ });
222
+ }
223
+ return null;
224
+ case 'manual':
225
+ // Require manual intervention
226
+ return null;
227
+ default:
228
+ return null;
229
+ }
230
+ }
231
+ /**
232
+ * Run health checks on all services
233
+ */
234
+ async runHealthChecks() {
235
+ const results = new Map();
236
+ for (const service of this.config.services) {
237
+ const result = await this.checkServiceHealth(service);
238
+ results.set(service.name, result);
239
+ const previousStatus = this.serviceStatus.get(service.name);
240
+ this.serviceStatus.set(service.name, result);
241
+ // Handle status changes
242
+ if (previousStatus?.status !== result.status) {
243
+ if (result.status === 'unavailable' || result.status === 'degraded') {
244
+ this.handleServiceDegradation(service, result, previousStatus?.status);
245
+ }
246
+ else if (result.status === 'healthy' && previousStatus?.status !== 'healthy') {
247
+ this.handleServiceRecovery(service);
248
+ }
249
+ }
250
+ }
251
+ // Recalculate overall degradation level
252
+ this.recalculateLevel();
253
+ return results;
254
+ }
255
+ /**
256
+ * Check health of a single service
257
+ */
258
+ async checkServiceHealth(service) {
259
+ const startTime = Date.now();
260
+ try {
261
+ const healthy = await this.withTimeout(service.healthCheck, 5000);
262
+ const responseTime = Date.now() - startTime;
263
+ return {
264
+ service: service.name,
265
+ status: healthy ? 'healthy' : 'degraded',
266
+ responseTime,
267
+ lastSuccess: healthy ? new Date() : undefined,
268
+ };
269
+ }
270
+ catch (error) {
271
+ return {
272
+ service: service.name,
273
+ status: 'unavailable',
274
+ responseTime: Date.now() - startTime,
275
+ error: error.message,
276
+ };
277
+ }
278
+ }
279
+ /**
280
+ * Handle service degradation
281
+ */
282
+ handleServiceDegradation(service, result, _previousStatus) {
283
+ const previousLevel = this.currentLevel;
284
+ const event = {
285
+ id: `deg-${Date.now()}-${++this.eventCounter}`,
286
+ timestamp: new Date(),
287
+ service: service.name,
288
+ previousLevel,
289
+ newLevel: this.currentLevel,
290
+ reason: result.error ?? `Service ${service.name} is ${result.status}`,
291
+ };
292
+ this.events.push(event);
293
+ this.config.onDegradation?.(event);
294
+ }
295
+ /**
296
+ * Handle service recovery
297
+ */
298
+ handleServiceRecovery(service) {
299
+ this.config.onRecovery?.(service.name, this.currentLevel);
300
+ // Process queued items for this service
301
+ if (this.config.autoRecovery) {
302
+ this.processQueue(service.name).catch(() => { });
303
+ }
304
+ }
305
+ /**
306
+ * Process queued items
307
+ */
308
+ async processQueue(serviceName) {
309
+ let processed = 0;
310
+ const maxProcess = 10;
311
+ while (processed < maxProcess) {
312
+ const item = await this.queue.dequeue();
313
+ if (!item)
314
+ break;
315
+ if (item.service === serviceName) {
316
+ // Would re-execute the queued operation here
317
+ processed++;
318
+ }
319
+ else {
320
+ // Re-queue if not for this service
321
+ await this.queue.enqueue(item);
322
+ }
323
+ }
324
+ }
325
+ /**
326
+ * Recalculate overall degradation level
327
+ */
328
+ recalculateLevel() {
329
+ const statuses = [...this.serviceStatus.values()];
330
+ // Count unavailable required services
331
+ const unavailableRequired = this.config.services.filter((s) => s.required && this.serviceStatus.get(s.name)?.status === 'unavailable');
332
+ // Count total unavailable
333
+ const totalUnavailable = statuses.filter((s) => s.status === 'unavailable').length;
334
+ // Count degraded
335
+ const totalDegraded = statuses.filter((s) => s.status === 'degraded').length;
336
+ // Determine level
337
+ if (unavailableRequired.length > 0) {
338
+ this.currentLevel = 'emergency';
339
+ }
340
+ else if (totalUnavailable > statuses.length / 2) {
341
+ this.currentLevel = 'offline';
342
+ }
343
+ else if (totalUnavailable > 0) {
344
+ this.currentLevel = 'minimal';
345
+ }
346
+ else if (totalDegraded > 0) {
347
+ this.currentLevel = 'reduced';
348
+ }
349
+ else {
350
+ this.currentLevel = 'full';
351
+ }
352
+ }
353
+ /**
354
+ * Get current degradation level
355
+ */
356
+ getLevel() {
357
+ return this.currentLevel;
358
+ }
359
+ /**
360
+ * Get service status
361
+ */
362
+ getServiceStatus(serviceName) {
363
+ return this.serviceStatus.get(serviceName);
364
+ }
365
+ /**
366
+ * Get all service statuses
367
+ */
368
+ getAllStatuses() {
369
+ return new Map(this.serviceStatus);
370
+ }
371
+ /**
372
+ * Get degradation events
373
+ */
374
+ getEvents(limit) {
375
+ const events = [...this.events].sort((a, b) => b.timestamp.getTime() - a.timestamp.getTime());
376
+ return limit ? events.slice(0, limit) : events;
377
+ }
378
+ /**
379
+ * Check if a feature is available at current level
380
+ */
381
+ isFeatureAvailable(requiredLevel) {
382
+ const levels = ['full', 'reduced', 'minimal', 'offline', 'emergency'];
383
+ return levels.indexOf(this.currentLevel) <= levels.indexOf(requiredLevel);
384
+ }
385
+ /**
386
+ * Cache a value
387
+ */
388
+ async cacheValue(key, value, ttl) {
389
+ await this.cache.set(key, value, ttl);
390
+ }
391
+ /**
392
+ * Get cached value
393
+ */
394
+ async getCachedValue(key) {
395
+ return this.cache.get(key);
396
+ }
397
+ /**
398
+ * Clear cache
399
+ */
400
+ async clearCache() {
401
+ await this.cache.clear();
402
+ }
403
+ /**
404
+ * Execute with timeout
405
+ */
406
+ async withTimeout(operation, timeout) {
407
+ return new Promise((resolve, reject) => {
408
+ const timer = setTimeout(() => {
409
+ reject(new Error(`Operation timed out after ${timeout}ms`));
410
+ }, timeout);
411
+ operation()
412
+ .then((result) => {
413
+ clearTimeout(timer);
414
+ resolve(result);
415
+ })
416
+ .catch((error) => {
417
+ clearTimeout(timer);
418
+ reject(error);
419
+ });
420
+ });
421
+ }
422
+ }
423
+ /**
424
+ * Create graceful degradation instance
425
+ */
426
+ export function createGracefulDegradation(config) {
427
+ return new GracefulDegradation(config);
428
+ }
429
+ /**
430
+ * Retry with exponential backoff
431
+ */
432
+ export async function retryWithBackoff(operation, options) {
433
+ const maxAttempts = options?.maxAttempts ?? 3;
434
+ const initialDelay = options?.initialDelay ?? 1000;
435
+ const maxDelay = options?.maxDelay ?? 30000;
436
+ const backoffFactor = options?.backoffFactor ?? 2;
437
+ let lastError;
438
+ let delay = initialDelay;
439
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
440
+ try {
441
+ return await operation();
442
+ }
443
+ catch (error) {
444
+ lastError = error;
445
+ if (attempt < maxAttempts) {
446
+ await new Promise((resolve) => setTimeout(resolve, delay));
447
+ delay = Math.min(delay * backoffFactor, maxDelay);
448
+ }
449
+ }
450
+ }
451
+ throw lastError ?? new Error('Operation failed after retries');
452
+ }
453
+ /**
454
+ * Circuit breaker
455
+ */
456
+ export class CircuitBreaker {
457
+ threshold;
458
+ resetTimeout;
459
+ failures = 0;
460
+ lastFailure;
461
+ state = 'closed';
462
+ constructor(threshold = 5, resetTimeout = 60000) {
463
+ this.threshold = threshold;
464
+ this.resetTimeout = resetTimeout;
465
+ }
466
+ async execute(operation) {
467
+ if (this.state === 'open') {
468
+ if (this.shouldAttemptReset()) {
469
+ this.state = 'half-open';
470
+ }
471
+ else {
472
+ throw new Error('Circuit breaker is open');
473
+ }
474
+ }
475
+ try {
476
+ const result = await operation();
477
+ this.onSuccess();
478
+ return result;
479
+ }
480
+ catch (error) {
481
+ this.onFailure();
482
+ throw error;
483
+ }
484
+ }
485
+ shouldAttemptReset() {
486
+ if (!this.lastFailure)
487
+ return true;
488
+ return Date.now() - this.lastFailure.getTime() > this.resetTimeout;
489
+ }
490
+ onSuccess() {
491
+ this.failures = 0;
492
+ this.state = 'closed';
493
+ }
494
+ onFailure() {
495
+ this.failures++;
496
+ this.lastFailure = new Date();
497
+ if (this.failures >= this.threshold) {
498
+ this.state = 'open';
499
+ }
500
+ }
501
+ getState() {
502
+ return this.state;
503
+ }
504
+ reset() {
505
+ this.failures = 0;
506
+ this.lastFailure = undefined;
507
+ this.state = 'closed';
508
+ }
509
+ }
510
+ //# sourceMappingURL=graceful-degradation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graceful-degradation.js","sourceRoot":"","sources":["../../src/error/graceful-degradation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAqKH;;GAEG;AACH,MAAM,OAAO,mBAAmB;IACtB,KAAK,GAAG,IAAI,GAAG,EAA+C,CAAC;IAEvE,KAAK,CAAC,GAAG,CAAI,GAAW;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAChD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC,KAAU,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,GAAW,EAAE,KAAQ,EAAE,GAAY;QAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAmB;IACtB,KAAK,GAAyC,EAAE,CAAC;IACjD,OAAO,GAAG,CAAC,CAAC;IAEpB,KAAK,CAAC,OAAO,CAAI,IAAO;QACtB,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC,CAAC,CAAE,KAAK,CAAC,IAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAA8B;IACnE,QAAQ,EAAE,EAAE;IACZ,mBAAmB,EAAE,KAAK;IAC1B,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,mBAAmB;IACtB,MAAM,CAA4B;IAClC,aAAa,CAAiC;IAC9C,YAAY,GAAqB,MAAM,CAAC;IACxC,MAAM,GAAuB,EAAE,CAAC;IAChC,YAAY,GAAG,CAAC,CAAC;IACjB,gBAAgB,CAAkB;IAClC,KAAK,CAAgB;IACrB,KAAK,CAAgB;IAE7B,YAAY,MAA2C;QACrD,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,0BAA0B,EAAE,GAAG,MAAM,EAAE,CAAC;QAC3D,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,aAAa,IAAI,IAAI,mBAAmB,EAAE,CAAC;QAChE,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,aAAa,IAAI,IAAI,mBAAmB,EAAE,CAAC;QAEhE,4BAA4B;QAC5B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC3C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;gBACnC,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,WAAW,CACjC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,EAC5B,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAChC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACrC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QACpC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAAsB;QACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;YACnC,OAAO,EAAE,OAAO,CAAC,IAAI;YACrB,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CACX,WAAmB,EACnB,SAA2B,EAC3B,OAIC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAEnD,6CAA6C;QAC7C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC1E,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC;gBAE3E,0BAA0B;gBAC1B,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;oBACtB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACnE,CAAC;gBAED,OAAO;oBACL,KAAK;oBACL,QAAQ,EAAE,KAAK;oBACf,KAAK,EAAE,IAAI,CAAC,YAAY;oBACxB,QAAQ,EAAE,EAAE;iBACb,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,+BAA+B;gBAC/B,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,KAAc,EAAE,OAAO,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAED,kDAAkD;QAClD,OAAO,IAAI,CAAC,eAAe,CACzB,WAAW,EACX,IAAI,KAAK,CAAC,WAAW,WAAW,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,EACvD,OAAO,CACR,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAC3B,WAAmB,EACnB,KAAY,EACZ,OAIC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QACzE,MAAM,UAAU,GAAG,OAAO,EAAE,kBAAkB,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAa,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAE1E,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CACvC,WAAW,EACX,QAAQ,EACR,OAAO,CACR,CAAC;gBAEF,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBACpB,OAAO;wBACL,KAAK,EAAE,MAAM;wBACb,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,IAAI,CAAC,YAAY;wBACxB,QAAQ;wBACR,aAAa,EAAE,KAAK;wBACpB,QAAQ;qBACT,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,QAAQ,CAAC,IAAI,CAAC,YAAY,QAAQ,YAAa,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,MAAM,IAAI,KAAK,CACb,sCAAsC,WAAW,IAAI;YACrD,aAAa,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAC3B,WAAmB,EACnB,QAA0B,EAC1B,OAGC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QAEzE,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,OAAO;gBACV,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;oBACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACzD,IAAI,MAAM,KAAK,IAAI;wBAAE,OAAO,MAAM,CAAC;gBACrC,CAAC;gBACD,OAAO,IAAI,CAAC;YAEd,KAAK,SAAS;gBACZ,IAAI,OAAO,EAAE,YAAY,KAAK,SAAS,EAAE,CAAC;oBACxC,OAAO,OAAO,CAAC,YAAY,CAAC;gBAC9B,CAAC;gBACD,OAAO,IAAI,CAAC;YAEd,KAAK,OAAO;gBACV,sDAAsD;gBACtD,yCAAyC;gBACzC,OAAO,IAAI,CAAC;YAEd,KAAK,aAAa;gBAChB,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;oBACzB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,WAAW,CACtC,CAAC;oBACF,IAAI,UAAU,EAAE,CAAC;wBACf,yCAAyC;wBACzC,uBAAuB;oBACzB,CAAC;gBACH,CAAC;gBACD,OAAO,IAAI,CAAC;YAEd,KAAK,MAAM;gBACT,kDAAkD;gBAClD,OAAO,IAAI,CAAC;YAEd,KAAK,OAAO;gBACV,6BAA6B;gBAC7B,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;oBACvD,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;wBACvB,OAAO,EAAE,WAAW;wBACpB,SAAS,EAAE,IAAI,IAAI,EAAE;wBACrB,OAAO;qBACR,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,IAAI,CAAC;YAEd,KAAK,QAAQ;gBACX,8BAA8B;gBAC9B,OAAO,IAAI,CAAC;YAEd;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,OAAO,GAAG,IAAI,GAAG,EAA6B,CAAC;QAErD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAElC,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAE7C,wBAAwB;YACxB,IAAI,cAAc,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC7C,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oBACpE,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;gBACzE,CAAC;qBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,cAAc,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC/E,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;QACH,CAAC;QAED,wCAAwC;QACxC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAAC,OAAsB;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAClE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE5C,OAAO;gBACL,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;gBACxC,YAAY;gBACZ,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;aAC9C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,MAAM,EAAE,aAAa;gBACrB,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBACpC,KAAK,EAAG,KAAe,CAAC,OAAO;aAChC,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,wBAAwB,CAC9B,OAAsB,EACtB,MAAyB,EACzB,eAA+B;QAE/B,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;QAExC,MAAM,KAAK,GAAqB;YAC9B,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE;YAC9C,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,OAAO,EAAE,OAAO,CAAC,IAAI;YACrB,aAAa;YACb,QAAQ,EAAE,IAAI,CAAC,YAAY;YAC3B,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,WAAW,OAAO,CAAC,IAAI,OAAO,MAAM,CAAC,MAAM,EAAE;SACtE,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,OAAsB;QAClD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAE1D,wCAAwC;QACxC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAC,WAAmB;QAC5C,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,OAAO,SAAS,GAAG,UAAU,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAuB,CAAC;YAC7D,IAAI,CAAC,IAAI;gBAAE,MAAM;YACjB,IAAI,IAAI,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;gBACjC,6CAA6C;gBAC7C,SAAS,EAAE,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,mCAAmC;gBACnC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;QAElD,sCAAsC;QACtC,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CACrD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,aAAa,CAC9E,CAAC;QAEF,0BAA0B;QAC1B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAClC,CAAC,MAAM,CAAC;QAET,iBAAiB;QACjB,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CACnC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAC/B,CAAC,MAAM,CAAC;QAET,kBAAkB;QAClB,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAClC,CAAC;aAAM,IAAI,gBAAgB,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,CAAC;aAAM,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,CAAC;aAAM,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,WAAmB;QAClC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAc;QACtB,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CACxD,CAAC;QACF,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,aAA+B;QAChD,MAAM,MAAM,GAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC1F,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAI,GAAW,EAAE,KAAQ,EAAE,GAAY;QACrD,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAI,GAAW;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CACvB,SAA2B,EAC3B,OAAe;QAEf,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,OAAO,IAAI,CAAC,CAAC,CAAC;YAC9D,CAAC,EAAE,OAAO,CAAC,CAAC;YAEZ,SAAS,EAAE;iBACR,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACf,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAA2C;IAE3C,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAA2B,EAC3B,OAKC;IAED,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,IAAI,CAAC;IACnD,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,KAAK,CAAC;IAC5C,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,CAAC,CAAC;IAElD,IAAI,SAA4B,CAAC;IACjC,IAAI,KAAK,GAAG,YAAY,CAAC;IAEzB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAc,CAAC;YAE3B,IAAI,OAAO,GAAG,WAAW,EAAE,CAAC;gBAC1B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3D,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,aAAa,EAAE,QAAQ,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,cAAc;IAMN;IACA;IANX,QAAQ,GAAG,CAAC,CAAC;IACb,WAAW,CAAQ;IACnB,KAAK,GAAoC,QAAQ,CAAC;IAE1D,YACmB,YAAoB,CAAC,EACrB,eAAuB,KAAK;QAD5B,cAAS,GAAT,SAAS,CAAY;QACrB,iBAAY,GAAZ,YAAY,CAAgB;IAC5C,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAI,SAA2B;QAC1C,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;gBAC9B,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QACnC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;IACrE,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACxB,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAE9B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACtB,CAAC;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACxB,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Error Recovery Module
3
+ *
4
+ * Provides graceful degradation and data persistence
5
+ *
6
+ * @packageDocumentation
7
+ * @module error
8
+ */
9
+ export { GracefulDegradation, createGracefulDegradation, retryWithBackoff, CircuitBreaker, MemoryCacheProvider, MemoryQueueProvider, type DegradationLevel, type ServiceStatus, type FallbackStrategy, type HealthCheckResult, type ServiceConfig, type FallbackAction, type DegradationEvent, type DegradedResult, type GracefulDegradationConfig, type CacheProvider, type QueueProvider, DEFAULT_DEGRADATION_CONFIG, } from './graceful-degradation.js';
10
+ export { DataPersistence, createDataPersistence, WriteAheadLog, MemoryStorageAdapter, FileStorageAdapter, type StorageBackend, type DataState, type Checkpoint, type Transaction, type TransactionOperation, type RecoveryResult, type PersistenceStatistics, type DataPersistenceConfig, type StorageAdapter, DEFAULT_PERSISTENCE_CONFIG, } from './data-persistence.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/error/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEL,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EAGnB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC9B,KAAK,aAAa,EAClB,KAAK,aAAa,EAGlB,0BAA0B,GAC3B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAEL,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAGlB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EAGnB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Error Recovery Module
3
+ *
4
+ * Provides graceful degradation and data persistence
5
+ *
6
+ * @packageDocumentation
7
+ * @module error
8
+ */
9
+ export {
10
+ // Graceful Degradation
11
+ GracefulDegradation, createGracefulDegradation, retryWithBackoff, CircuitBreaker, MemoryCacheProvider, MemoryQueueProvider,
12
+ // Constants
13
+ DEFAULT_DEGRADATION_CONFIG, } from './graceful-degradation.js';
14
+ export {
15
+ // Data Persistence
16
+ DataPersistence, createDataPersistence, WriteAheadLog, MemoryStorageAdapter, FileStorageAdapter,
17
+ // Constants
18
+ DEFAULT_PERSISTENCE_CONFIG, } from './data-persistence.js';
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/error/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO;AACL,uBAAuB;AACvB,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,mBAAmB;AAenB,YAAY;AACZ,0BAA0B,GAC3B,MAAM,2BAA2B,CAAC;AAEnC,OAAO;AACL,mBAAmB;AACnB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,oBAAoB,EACpB,kBAAkB;AAalB,YAAY;AACZ,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC"}