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.
- package/README.md +574 -11
- package/dist/core/ConversionResult.d.ts +22 -0
- package/dist/core/ConversionResult.d.ts.map +1 -1
- package/dist/core/ConversionResult.js +44 -30
- package/dist/core/ConversionResult.js.map +1 -1
- package/dist/core/Converter.d.ts +40 -10
- package/dist/core/Converter.d.ts.map +1 -1
- package/dist/core/Converter.js +137 -29
- package/dist/core/Converter.js.map +1 -1
- package/dist/core/Mapper.d.ts +12 -0
- package/dist/core/Mapper.d.ts.map +1 -1
- package/dist/core/Mapper.js +155 -3
- package/dist/core/Mapper.js.map +1 -1
- package/dist/core/Pipeline.d.ts +42 -0
- package/dist/core/Pipeline.d.ts.map +1 -0
- package/dist/core/Pipeline.js +134 -0
- package/dist/core/Pipeline.js.map +1 -0
- package/dist/core/pipeline/PipelineBuilder.d.ts +67 -0
- package/dist/core/pipeline/PipelineBuilder.d.ts.map +1 -0
- package/dist/core/pipeline/PipelineBuilder.js +109 -0
- package/dist/core/pipeline/PipelineBuilder.js.map +1 -0
- package/dist/core/pipeline/PipelineSteps.d.ts +74 -0
- package/dist/core/pipeline/PipelineSteps.d.ts.map +1 -0
- package/dist/core/pipeline/PipelineSteps.js +298 -0
- package/dist/core/pipeline/PipelineSteps.js.map +1 -0
- package/dist/errors/ErrorCollector.d.ts +119 -0
- package/dist/errors/ErrorCollector.d.ts.map +1 -0
- package/dist/errors/ErrorCollector.js +197 -0
- package/dist/errors/ErrorCollector.js.map +1 -0
- package/dist/errors/ErrorContext.d.ts +168 -0
- package/dist/errors/ErrorContext.d.ts.map +1 -0
- package/dist/errors/ErrorContext.js +356 -0
- package/dist/errors/ErrorContext.js.map +1 -0
- package/dist/errors/ErrorRecovery.d.ts +91 -0
- package/dist/errors/ErrorRecovery.d.ts.map +1 -0
- package/dist/errors/ErrorRecovery.js +321 -0
- package/dist/errors/ErrorRecovery.js.map +1 -0
- package/dist/errors/ErrorReporter.d.ts +58 -0
- package/dist/errors/ErrorReporter.d.ts.map +1 -0
- package/dist/errors/ErrorReporter.js +262 -0
- package/dist/errors/ErrorReporter.js.map +1 -0
- package/dist/errors/ErrorTypes.d.ts +103 -0
- package/dist/errors/ErrorTypes.d.ts.map +1 -0
- package/dist/errors/ErrorTypes.js +125 -0
- package/dist/errors/ErrorTypes.js.map +1 -0
- package/dist/errors/SpecificErrors.d.ts +45 -0
- package/dist/errors/SpecificErrors.d.ts.map +1 -0
- package/dist/errors/SpecificErrors.js +124 -0
- package/dist/errors/SpecificErrors.js.map +1 -0
- package/dist/errors/SuggestionEngine.d.ts +63 -0
- package/dist/errors/SuggestionEngine.d.ts.map +1 -0
- package/dist/errors/SuggestionEngine.js +328 -0
- package/dist/errors/SuggestionEngine.js.map +1 -0
- package/dist/errors/index.d.ts +12 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +39 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +8 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/validators/ValidatorRegistry.d.ts +55 -0
- package/dist/validators/ValidatorRegistry.d.ts.map +1 -0
- package/dist/validators/ValidatorRegistry.js +140 -0
- package/dist/validators/ValidatorRegistry.js.map +1 -0
- package/dist/validators/built-in.d.ts +93 -0
- package/dist/validators/built-in.d.ts.map +1 -0
- package/dist/validators/built-in.js +290 -0
- package/dist/validators/built-in.js.map +1 -0
- package/dist/validators/index.d.ts +4 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/dist/validators/index.js +24 -0
- package/dist/validators/index.js.map +1 -0
- 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"}
|