configforge 1.0.0-beta.1 → 1.0.0-beta.10

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 (77) hide show
  1. package/README.md +574 -11
  2. package/dist/core/ConversionResult.d.ts +22 -0
  3. package/dist/core/ConversionResult.d.ts.map +1 -1
  4. package/dist/core/ConversionResult.js +44 -30
  5. package/dist/core/ConversionResult.js.map +1 -1
  6. package/dist/core/Converter.d.ts +40 -10
  7. package/dist/core/Converter.d.ts.map +1 -1
  8. package/dist/core/Converter.js +137 -29
  9. package/dist/core/Converter.js.map +1 -1
  10. package/dist/core/Mapper.d.ts +12 -0
  11. package/dist/core/Mapper.d.ts.map +1 -1
  12. package/dist/core/Mapper.js +155 -3
  13. package/dist/core/Mapper.js.map +1 -1
  14. package/dist/core/Pipeline.d.ts +42 -0
  15. package/dist/core/Pipeline.d.ts.map +1 -0
  16. package/dist/core/Pipeline.js +134 -0
  17. package/dist/core/Pipeline.js.map +1 -0
  18. package/dist/core/pipeline/PipelineBuilder.d.ts +67 -0
  19. package/dist/core/pipeline/PipelineBuilder.d.ts.map +1 -0
  20. package/dist/core/pipeline/PipelineBuilder.js +109 -0
  21. package/dist/core/pipeline/PipelineBuilder.js.map +1 -0
  22. package/dist/core/pipeline/PipelineSteps.d.ts +74 -0
  23. package/dist/core/pipeline/PipelineSteps.d.ts.map +1 -0
  24. package/dist/core/pipeline/PipelineSteps.js +298 -0
  25. package/dist/core/pipeline/PipelineSteps.js.map +1 -0
  26. package/dist/errors/ErrorCollector.d.ts +119 -0
  27. package/dist/errors/ErrorCollector.d.ts.map +1 -0
  28. package/dist/errors/ErrorCollector.js +197 -0
  29. package/dist/errors/ErrorCollector.js.map +1 -0
  30. package/dist/errors/ErrorContext.d.ts +168 -0
  31. package/dist/errors/ErrorContext.d.ts.map +1 -0
  32. package/dist/errors/ErrorContext.js +356 -0
  33. package/dist/errors/ErrorContext.js.map +1 -0
  34. package/dist/errors/ErrorRecovery.d.ts +91 -0
  35. package/dist/errors/ErrorRecovery.d.ts.map +1 -0
  36. package/dist/errors/ErrorRecovery.js +321 -0
  37. package/dist/errors/ErrorRecovery.js.map +1 -0
  38. package/dist/errors/ErrorReporter.d.ts +58 -0
  39. package/dist/errors/ErrorReporter.d.ts.map +1 -0
  40. package/dist/errors/ErrorReporter.js +262 -0
  41. package/dist/errors/ErrorReporter.js.map +1 -0
  42. package/dist/errors/ErrorTypes.d.ts +103 -0
  43. package/dist/errors/ErrorTypes.d.ts.map +1 -0
  44. package/dist/errors/ErrorTypes.js +125 -0
  45. package/dist/errors/ErrorTypes.js.map +1 -0
  46. package/dist/errors/SpecificErrors.d.ts +45 -0
  47. package/dist/errors/SpecificErrors.d.ts.map +1 -0
  48. package/dist/errors/SpecificErrors.js +124 -0
  49. package/dist/errors/SpecificErrors.js.map +1 -0
  50. package/dist/errors/SuggestionEngine.d.ts +63 -0
  51. package/dist/errors/SuggestionEngine.d.ts.map +1 -0
  52. package/dist/errors/SuggestionEngine.js +328 -0
  53. package/dist/errors/SuggestionEngine.js.map +1 -0
  54. package/dist/errors/index.d.ts +12 -0
  55. package/dist/errors/index.d.ts.map +1 -0
  56. package/dist/errors/index.js +39 -0
  57. package/dist/errors/index.js.map +1 -0
  58. package/dist/index.d.ts +3 -0
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +7 -2
  61. package/dist/index.js.map +1 -1
  62. package/dist/types/index.d.ts +8 -1
  63. package/dist/types/index.d.ts.map +1 -1
  64. package/dist/types/index.js.map +1 -1
  65. package/dist/validators/ValidatorRegistry.d.ts +55 -0
  66. package/dist/validators/ValidatorRegistry.d.ts.map +1 -0
  67. package/dist/validators/ValidatorRegistry.js +140 -0
  68. package/dist/validators/ValidatorRegistry.js.map +1 -0
  69. package/dist/validators/built-in.d.ts +93 -0
  70. package/dist/validators/built-in.d.ts.map +1 -0
  71. package/dist/validators/built-in.js +290 -0
  72. package/dist/validators/built-in.js.map +1 -0
  73. package/dist/validators/index.d.ts +4 -0
  74. package/dist/validators/index.d.ts.map +1 -0
  75. package/dist/validators/index.js +24 -0
  76. package/dist/validators/index.js.map +1 -0
  77. package/package.json +1 -1
@@ -0,0 +1,168 @@
1
+ import { ConfigForgeError } from '../types';
2
+ /**
3
+ * Enhanced error context information
4
+ */
5
+ export interface EnhancedErrorContext {
6
+ path?: string;
7
+ value?: any;
8
+ expectedType?: string;
9
+ actualType?: string;
10
+ sourceData?: any;
11
+ sourceField?: string;
12
+ sourceValue?: any;
13
+ targetData?: any;
14
+ targetField?: string;
15
+ targetValue?: any;
16
+ converter?: any;
17
+ mapping?: any;
18
+ transform?: any;
19
+ validator?: any;
20
+ pipelineStep?: string;
21
+ stepIndex?: number;
22
+ previousSteps?: string[];
23
+ startTime?: number;
24
+ duration?: number;
25
+ memoryUsage?: NodeJS.MemoryUsage;
26
+ callStack?: string[];
27
+ sourceLocation?: {
28
+ file?: string;
29
+ line?: number;
30
+ column?: number;
31
+ };
32
+ userId?: string;
33
+ sessionId?: string;
34
+ requestId?: string;
35
+ nodeVersion?: string;
36
+ platform?: string;
37
+ environment?: string;
38
+ metadata?: Record<string, any>;
39
+ timestamp?: string;
40
+ }
41
+ /**
42
+ * Error context builder for creating rich error contexts
43
+ */
44
+ export declare class ErrorContextBuilder {
45
+ private context;
46
+ /**
47
+ * Set basic error information
48
+ */
49
+ setBasic(path?: string, value?: any, expectedType?: string): this;
50
+ /**
51
+ * Set source data context
52
+ */
53
+ setSource(sourceData?: any, sourceField?: string, sourceValue?: any): this;
54
+ /**
55
+ * Set target data context
56
+ */
57
+ setTarget(targetData?: any, targetField?: string, targetValue?: any): this;
58
+ /**
59
+ * Set conversion context
60
+ */
61
+ setConversion(converter?: any, mapping?: any, transform?: any, validator?: any): this;
62
+ /**
63
+ * Set pipeline context
64
+ */
65
+ setPipeline(pipelineStep?: string, stepIndex?: number, previousSteps?: string[]): this;
66
+ /**
67
+ * Set performance context
68
+ */
69
+ setPerformance(startTime?: number, duration?: number, memoryUsage?: NodeJS.MemoryUsage): this;
70
+ /**
71
+ * Set stack context
72
+ */
73
+ setStack(callStack?: string[], sourceLocation?: {
74
+ file?: string;
75
+ line?: number;
76
+ column?: number;
77
+ }): this;
78
+ /**
79
+ * Set user context
80
+ */
81
+ setUser(userId?: string, sessionId?: string, requestId?: string): this;
82
+ /**
83
+ * Set environment context
84
+ */
85
+ setEnvironment(nodeVersion?: string, platform?: string, environment?: string): this;
86
+ /**
87
+ * Add metadata
88
+ */
89
+ addMetadata(key: string, value: any): this;
90
+ /**
91
+ * Set multiple metadata entries
92
+ */
93
+ setMetadata(metadata: Record<string, any>): this;
94
+ /**
95
+ * Build the context
96
+ */
97
+ build(): EnhancedErrorContext;
98
+ /**
99
+ * Reset the builder
100
+ */
101
+ reset(): this;
102
+ /**
103
+ * Create a new builder from existing context
104
+ */
105
+ static fromContext(context: EnhancedErrorContext): ErrorContextBuilder;
106
+ }
107
+ /**
108
+ * Error context enhancer for automatically gathering context information
109
+ */
110
+ export declare class ErrorContextEnhancer {
111
+ private static instance;
112
+ private globalContext;
113
+ private constructor();
114
+ /**
115
+ * Get singleton instance
116
+ */
117
+ static getInstance(): ErrorContextEnhancer;
118
+ /**
119
+ * Set global context that will be included in all errors
120
+ */
121
+ setGlobalContext(context: Partial<EnhancedErrorContext>): void;
122
+ /**
123
+ * Enhance an error with additional context
124
+ */
125
+ enhanceError(error: ConfigForgeError, additionalContext?: Partial<EnhancedErrorContext>): ConfigForgeError;
126
+ /**
127
+ * Create error context from current execution state
128
+ */
129
+ createContextFromStack(): EnhancedErrorContext;
130
+ /**
131
+ * Initialize global context with environment information
132
+ */
133
+ private initializeGlobalContext;
134
+ /**
135
+ * Generate unique error ID
136
+ */
137
+ private generateErrorId;
138
+ /**
139
+ * Capture current stack trace
140
+ */
141
+ private captureStackTrace;
142
+ /**
143
+ * Get current memory usage
144
+ */
145
+ private getMemoryUsage;
146
+ }
147
+ /**
148
+ * Utility functions for working with error contexts
149
+ */
150
+ export declare class ErrorContextUtils {
151
+ /**
152
+ * Extract relevant context from an object for error reporting
153
+ */
154
+ static extractRelevantContext(obj: any, path?: string, maxDepth?: number): Record<string, any>;
155
+ /**
156
+ * Format context for human-readable display
157
+ */
158
+ static formatContextForDisplay(context: EnhancedErrorContext): string;
159
+ /**
160
+ * Merge multiple error contexts
161
+ */
162
+ static mergeContexts(...contexts: Partial<EnhancedErrorContext>[]): EnhancedErrorContext;
163
+ /**
164
+ * Sanitize context for logging (remove sensitive data)
165
+ */
166
+ static sanitizeContext(context: EnhancedErrorContext): EnhancedErrorContext;
167
+ }
168
+ //# sourceMappingURL=ErrorContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorContext.d.ts","sourceRoot":"","sources":["../../src/errors/ErrorContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,356 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ErrorContextUtils = exports.ErrorContextEnhancer = exports.ErrorContextBuilder = void 0;
4
+ /**
5
+ * Error context builder for creating rich error contexts
6
+ */
7
+ class ErrorContextBuilder {
8
+ constructor() {
9
+ this.context = {};
10
+ }
11
+ /**
12
+ * Set basic error information
13
+ */
14
+ setBasic(path, value, expectedType) {
15
+ if (path !== undefined)
16
+ this.context.path = path;
17
+ this.context.value = value;
18
+ if (expectedType !== undefined)
19
+ this.context.expectedType = expectedType;
20
+ this.context.actualType = value != null ? typeof value : 'undefined';
21
+ return this;
22
+ }
23
+ /**
24
+ * Set source data context
25
+ */
26
+ setSource(sourceData, sourceField, sourceValue) {
27
+ this.context.sourceData = sourceData;
28
+ if (sourceField !== undefined)
29
+ this.context.sourceField = sourceField;
30
+ this.context.sourceValue = sourceValue;
31
+ return this;
32
+ }
33
+ /**
34
+ * Set target data context
35
+ */
36
+ setTarget(targetData, targetField, targetValue) {
37
+ this.context.targetData = targetData;
38
+ if (targetField !== undefined)
39
+ this.context.targetField = targetField;
40
+ this.context.targetValue = targetValue;
41
+ return this;
42
+ }
43
+ /**
44
+ * Set conversion context
45
+ */
46
+ setConversion(converter, mapping, transform, validator) {
47
+ this.context.converter = converter;
48
+ this.context.mapping = mapping;
49
+ this.context.transform = transform;
50
+ this.context.validator = validator;
51
+ return this;
52
+ }
53
+ /**
54
+ * Set pipeline context
55
+ */
56
+ setPipeline(pipelineStep, stepIndex, previousSteps) {
57
+ if (pipelineStep !== undefined)
58
+ this.context.pipelineStep = pipelineStep;
59
+ if (stepIndex !== undefined)
60
+ this.context.stepIndex = stepIndex;
61
+ if (previousSteps !== undefined)
62
+ this.context.previousSteps = previousSteps;
63
+ return this;
64
+ }
65
+ /**
66
+ * Set performance context
67
+ */
68
+ setPerformance(startTime, duration, memoryUsage) {
69
+ if (startTime !== undefined)
70
+ this.context.startTime = startTime;
71
+ if (duration !== undefined)
72
+ this.context.duration = duration;
73
+ if (memoryUsage !== undefined)
74
+ this.context.memoryUsage = memoryUsage;
75
+ return this;
76
+ }
77
+ /**
78
+ * Set stack context
79
+ */
80
+ setStack(callStack, sourceLocation) {
81
+ if (callStack !== undefined)
82
+ this.context.callStack = callStack;
83
+ if (sourceLocation !== undefined)
84
+ this.context.sourceLocation = sourceLocation;
85
+ return this;
86
+ }
87
+ /**
88
+ * Set user context
89
+ */
90
+ setUser(userId, sessionId, requestId) {
91
+ if (userId !== undefined)
92
+ this.context.userId = userId;
93
+ if (sessionId !== undefined)
94
+ this.context.sessionId = sessionId;
95
+ if (requestId !== undefined)
96
+ this.context.requestId = requestId;
97
+ return this;
98
+ }
99
+ /**
100
+ * Set environment context
101
+ */
102
+ setEnvironment(nodeVersion, platform, environment) {
103
+ if (nodeVersion !== undefined)
104
+ this.context.nodeVersion = nodeVersion;
105
+ if (platform !== undefined)
106
+ this.context.platform = platform;
107
+ if (environment !== undefined)
108
+ this.context.environment = environment;
109
+ return this;
110
+ }
111
+ /**
112
+ * Add metadata
113
+ */
114
+ addMetadata(key, value) {
115
+ if (!this.context.metadata) {
116
+ this.context.metadata = {};
117
+ }
118
+ this.context.metadata[key] = value;
119
+ return this;
120
+ }
121
+ /**
122
+ * Set multiple metadata entries
123
+ */
124
+ setMetadata(metadata) {
125
+ this.context.metadata = { ...this.context.metadata, ...metadata };
126
+ return this;
127
+ }
128
+ /**
129
+ * Build the context
130
+ */
131
+ build() {
132
+ return { ...this.context };
133
+ }
134
+ /**
135
+ * Reset the builder
136
+ */
137
+ reset() {
138
+ this.context = {};
139
+ return this;
140
+ }
141
+ /**
142
+ * Create a new builder from existing context
143
+ */
144
+ static fromContext(context) {
145
+ const builder = new ErrorContextBuilder();
146
+ builder.context = { ...context };
147
+ return builder;
148
+ }
149
+ }
150
+ exports.ErrorContextBuilder = ErrorContextBuilder;
151
+ /**
152
+ * Error context enhancer for automatically gathering context information
153
+ */
154
+ class ErrorContextEnhancer {
155
+ constructor() {
156
+ this.globalContext = {};
157
+ this.initializeGlobalContext();
158
+ }
159
+ /**
160
+ * Get singleton instance
161
+ */
162
+ static getInstance() {
163
+ if (!ErrorContextEnhancer.instance) {
164
+ ErrorContextEnhancer.instance = new ErrorContextEnhancer();
165
+ }
166
+ return ErrorContextEnhancer.instance;
167
+ }
168
+ /**
169
+ * Set global context that will be included in all errors
170
+ */
171
+ setGlobalContext(context) {
172
+ this.globalContext = { ...this.globalContext, ...context };
173
+ }
174
+ /**
175
+ * Enhance an error with additional context
176
+ */
177
+ enhanceError(error, additionalContext) {
178
+ const enhancedContext = {
179
+ ...this.globalContext,
180
+ ...error.context,
181
+ ...additionalContext,
182
+ // Add automatic context
183
+ timestamp: new Date().toISOString(),
184
+ errorId: this.generateErrorId(),
185
+ };
186
+ // Create new error with enhanced context
187
+ const EnhancedErrorClass = error.constructor;
188
+ const enhancedError = new EnhancedErrorClass(error.message, {
189
+ path: error.path,
190
+ context: enhancedContext,
191
+ });
192
+ return enhancedError;
193
+ }
194
+ /**
195
+ * Create error context from current execution state
196
+ */
197
+ createContextFromStack() {
198
+ const stack = this.captureStackTrace();
199
+ const memoryUsage = this.getMemoryUsage();
200
+ const context = {
201
+ callStack: stack,
202
+ nodeVersion: process.version,
203
+ platform: process.platform,
204
+ environment: process.env.NODE_ENV || 'development',
205
+ timestamp: new Date().toISOString(),
206
+ };
207
+ if (memoryUsage !== undefined) {
208
+ context.memoryUsage = memoryUsage;
209
+ }
210
+ return context;
211
+ }
212
+ /**
213
+ * Initialize global context with environment information
214
+ */
215
+ initializeGlobalContext() {
216
+ this.globalContext = {
217
+ nodeVersion: process.version,
218
+ platform: process.platform,
219
+ environment: process.env.NODE_ENV || 'development',
220
+ };
221
+ }
222
+ /**
223
+ * Generate unique error ID
224
+ */
225
+ generateErrorId() {
226
+ return `err_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
227
+ }
228
+ /**
229
+ * Capture current stack trace
230
+ */
231
+ captureStackTrace() {
232
+ const stack = new Error().stack;
233
+ if (!stack)
234
+ return [];
235
+ return stack
236
+ .split('\n')
237
+ .slice(1) // Remove the first line (Error message)
238
+ .map(line => line.trim())
239
+ .filter(line => line.length > 0);
240
+ }
241
+ /**
242
+ * Get current memory usage
243
+ */
244
+ getMemoryUsage() {
245
+ try {
246
+ return process.memoryUsage();
247
+ }
248
+ catch {
249
+ return undefined;
250
+ }
251
+ }
252
+ }
253
+ exports.ErrorContextEnhancer = ErrorContextEnhancer;
254
+ /**
255
+ * Utility functions for working with error contexts
256
+ */
257
+ class ErrorContextUtils {
258
+ /**
259
+ * Extract relevant context from an object for error reporting
260
+ */
261
+ static extractRelevantContext(obj, path, maxDepth = 3) {
262
+ if (maxDepth <= 0 || obj === null || typeof obj !== 'object') {
263
+ return { value: obj, type: typeof obj };
264
+ }
265
+ const context = {};
266
+ if (Array.isArray(obj)) {
267
+ context.type = 'array';
268
+ context.length = obj.length;
269
+ context.sample = obj.slice(0, 3); // First 3 elements as sample
270
+ }
271
+ else {
272
+ context.type = 'object';
273
+ context.keys = Object.keys(obj);
274
+ // Include a few key-value pairs for context
275
+ const sampleKeys = Object.keys(obj).slice(0, 5);
276
+ context.sample = {};
277
+ sampleKeys.forEach(key => {
278
+ const value = obj[key];
279
+ if (typeof value === 'object' && value !== null) {
280
+ context.sample[key] = this.extractRelevantContext(value, path ? `${path}.${key}` : key, maxDepth - 1);
281
+ }
282
+ else {
283
+ context.sample[key] = value;
284
+ }
285
+ });
286
+ }
287
+ return context;
288
+ }
289
+ /**
290
+ * Format context for human-readable display
291
+ */
292
+ static formatContextForDisplay(context) {
293
+ const lines = [];
294
+ if (context.path) {
295
+ lines.push(`Path: ${context.path}`);
296
+ }
297
+ if (context.value !== undefined) {
298
+ lines.push(`Value: ${JSON.stringify(context.value)}`);
299
+ }
300
+ if (context.expectedType && context.actualType) {
301
+ lines.push(`Expected: ${context.expectedType}, Got: ${context.actualType}`);
302
+ }
303
+ if (context.pipelineStep) {
304
+ lines.push(`Pipeline Step: ${context.pipelineStep} (${context.stepIndex})`);
305
+ }
306
+ if (context.duration !== undefined) {
307
+ lines.push(`Duration: ${context.duration}ms`);
308
+ }
309
+ if (context.memoryUsage) {
310
+ const mb = (context.memoryUsage.heapUsed / 1024 / 1024).toFixed(2);
311
+ lines.push(`Memory: ${mb}MB`);
312
+ }
313
+ return lines.join('\n');
314
+ }
315
+ /**
316
+ * Merge multiple error contexts
317
+ */
318
+ static mergeContexts(...contexts) {
319
+ const merged = {};
320
+ contexts.forEach(context => {
321
+ Object.assign(merged, context);
322
+ // Merge metadata separately to avoid overwriting
323
+ if (context.metadata) {
324
+ merged.metadata = { ...merged.metadata, ...context.metadata };
325
+ }
326
+ });
327
+ return merged;
328
+ }
329
+ /**
330
+ * Sanitize context for logging (remove sensitive data)
331
+ */
332
+ static sanitizeContext(context) {
333
+ const sanitized = { ...context };
334
+ // Remove potentially sensitive fields
335
+ delete sanitized.userId;
336
+ delete sanitized.sessionId;
337
+ delete sanitized.requestId;
338
+ // Sanitize metadata
339
+ if (sanitized.metadata) {
340
+ const sanitizedMetadata = { ...sanitized.metadata };
341
+ // Remove common sensitive keys
342
+ const sensitiveKeys = ['password', 'token', 'secret', 'key', 'auth'];
343
+ sensitiveKeys.forEach(key => {
344
+ Object.keys(sanitizedMetadata).forEach(metaKey => {
345
+ if (metaKey.toLowerCase().includes(key)) {
346
+ sanitizedMetadata[metaKey] = '[REDACTED]';
347
+ }
348
+ });
349
+ });
350
+ sanitized.metadata = sanitizedMetadata;
351
+ }
352
+ return sanitized;
353
+ }
354
+ }
355
+ exports.ErrorContextUtils = ErrorContextUtils;
356
+ //# sourceMappingURL=ErrorContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorContext.js","sourceRoot":"","sources":["../../src/errors/ErrorContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ import { ConfigForgeError } from '../types';
2
+ import { ErrorRecoverySuggestion } from './ErrorTypes';
3
+ /**
4
+ * Recovery strategy interface
5
+ */
6
+ export interface RecoveryStrategy {
7
+ name: string;
8
+ canRecover(error: ConfigForgeError): boolean;
9
+ recover(error: ConfigForgeError, context: RecoveryContext): Promise<RecoveryResult>;
10
+ priority: number;
11
+ }
12
+ /**
13
+ * Recovery context
14
+ */
15
+ export interface RecoveryContext {
16
+ sourceData: any;
17
+ targetData?: any;
18
+ converter?: any;
19
+ options?: {
20
+ maxRetries?: number;
21
+ timeout?: number;
22
+ fallbackValues?: Record<string, any>;
23
+ skipOnError?: boolean;
24
+ };
25
+ }
26
+ /**
27
+ * Recovery result
28
+ */
29
+ export interface RecoveryResult {
30
+ success: boolean;
31
+ recoveredData?: any;
32
+ newErrors?: ConfigForgeError[];
33
+ suggestions?: ErrorRecoverySuggestion[];
34
+ message?: string;
35
+ }
36
+ /**
37
+ * Recovery attempt result
38
+ */
39
+ export interface RecoveryAttempt {
40
+ strategy: string;
41
+ error: ConfigForgeError;
42
+ result: RecoveryResult;
43
+ timestamp: Date;
44
+ duration: number;
45
+ }
46
+ /**
47
+ * Error recovery manager
48
+ */
49
+ export declare class ErrorRecoveryManager {
50
+ private strategies;
51
+ private recoveryHistory;
52
+ constructor();
53
+ /**
54
+ * Register a recovery strategy
55
+ */
56
+ registerStrategy(strategy: RecoveryStrategy): void;
57
+ /**
58
+ * Attempt to recover from an error
59
+ */
60
+ attemptRecovery(error: ConfigForgeError, context: RecoveryContext): Promise<RecoveryAttempt | null>;
61
+ /**
62
+ * Attempt to recover from multiple errors
63
+ */
64
+ attemptBatchRecovery(errors: ConfigForgeError[], context: RecoveryContext): Promise<RecoveryAttempt[]>;
65
+ /**
66
+ * Get recovery suggestions for an error
67
+ */
68
+ getRecoverySuggestions(error: ConfigForgeError): ErrorRecoverySuggestion[];
69
+ /**
70
+ * Get recovery history
71
+ */
72
+ getRecoveryHistory(): RecoveryAttempt[];
73
+ /**
74
+ * Clear recovery history
75
+ */
76
+ clearHistory(): void;
77
+ /**
78
+ * Get recovery statistics
79
+ */
80
+ getRecoveryStats(): {
81
+ totalAttempts: number;
82
+ successfulRecoveries: number;
83
+ failedRecoveries: number;
84
+ averageDuration: number;
85
+ strategiesUsed: Record<string, number>;
86
+ };
87
+ private findBestStrategy;
88
+ private generateSuggestionsForError;
89
+ private registerDefaultStrategies;
90
+ }
91
+ //# sourceMappingURL=ErrorRecovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorRecovery.d.ts","sourceRoot":"","sources":["../../src/errors/ErrorRecovery.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAIjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAEL,uBAAuB,EAGxB,MAAM,cAAc,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAC7C,OAAO,CACL,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,GAAG,CAAC;IAChB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACrC,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,eAAe,CAAyB;;IAMhD;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAKlD;;OAEG;IACG,eAAe,CACnB,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IA0ClC;;OAEG;IACG,oBAAoB,CACxB,MAAM,EAAE,gBAAgB,EAAE,EAC1B,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,eAAe,EAAE,CAAC;IAa7B;;OAEG;IACH,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,GAAG,uBAAuB,EAAE;IAc1E;;OAEG;IACH,kBAAkB,IAAI,eAAe,EAAE;IAIvC;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,gBAAgB,IAAI;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACxC;IA2BD,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,2BAA2B;IA+DnC,OAAO,CAAC,yBAAyB;CAoJlC"}