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,298 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PipelineSteps = void 0;
|
|
4
|
+
const types_1 = require("../../types");
|
|
5
|
+
const parsers_1 = require("../../parsers");
|
|
6
|
+
const Mapper_1 = require("../Mapper");
|
|
7
|
+
/**
|
|
8
|
+
* Collection of standard pipeline steps
|
|
9
|
+
*/
|
|
10
|
+
var PipelineSteps;
|
|
11
|
+
(function (PipelineSteps) {
|
|
12
|
+
/**
|
|
13
|
+
* Parse step - handles file input and data parsing
|
|
14
|
+
*/
|
|
15
|
+
class ParseStep {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.name = 'parse';
|
|
18
|
+
}
|
|
19
|
+
async execute(input, context) {
|
|
20
|
+
try {
|
|
21
|
+
// If input is a string, treat it as a file path
|
|
22
|
+
if (typeof input === 'string') {
|
|
23
|
+
// Read file content
|
|
24
|
+
const fs = require('fs').promises;
|
|
25
|
+
const content = await fs.readFile(input, 'utf-8');
|
|
26
|
+
// Get appropriate parser and parse content
|
|
27
|
+
const parser = parsers_1.parserRegistry.getBestParser(input, content);
|
|
28
|
+
const parsedData = parser.parse(content);
|
|
29
|
+
context.metadata.inputType = 'file';
|
|
30
|
+
context.metadata.filePath = input;
|
|
31
|
+
return parsedData;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
// Input is already an object
|
|
35
|
+
context.metadata.inputType = 'object';
|
|
36
|
+
return input;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
const parseError = new types_1.ParseError(`Failed to parse input: ${error instanceof Error ? error.message : 'Unknown error'}`, { context: { input } });
|
|
41
|
+
context.errors.push(parseError);
|
|
42
|
+
return input; // Return original input on parse failure
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
PipelineSteps.ParseStep = ParseStep;
|
|
47
|
+
/**
|
|
48
|
+
* Before hooks step - runs before hooks on source data
|
|
49
|
+
*/
|
|
50
|
+
class BeforeHooksStep {
|
|
51
|
+
constructor(hooks) {
|
|
52
|
+
this.hooks = hooks;
|
|
53
|
+
this.name = 'before-hooks';
|
|
54
|
+
}
|
|
55
|
+
async execute(input, context) {
|
|
56
|
+
let processedData = input;
|
|
57
|
+
for (const hook of this.hooks) {
|
|
58
|
+
try {
|
|
59
|
+
const result = await hook(processedData, {
|
|
60
|
+
source: context.source,
|
|
61
|
+
target: context.target,
|
|
62
|
+
path: '',
|
|
63
|
+
converter: context.converter,
|
|
64
|
+
metadata: context.metadata,
|
|
65
|
+
});
|
|
66
|
+
if (result !== undefined) {
|
|
67
|
+
processedData = result;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
const hookError = new types_1.GenericConfigForgeError(`Before hook failed: ${error instanceof Error ? error.message : 'Unknown error'}`, { context: { hook: hook.name } });
|
|
72
|
+
context.errors.push(hookError);
|
|
73
|
+
// Continue with other hooks unless in strict mode
|
|
74
|
+
if (context.options.strict) {
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Update source in context
|
|
80
|
+
context.source = processedData;
|
|
81
|
+
return processedData;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
PipelineSteps.BeforeHooksStep = BeforeHooksStep;
|
|
85
|
+
/**
|
|
86
|
+
* Map step - executes field mappings using the Mapper
|
|
87
|
+
*/
|
|
88
|
+
class MapStep {
|
|
89
|
+
constructor(mappings) {
|
|
90
|
+
this.mappings = mappings;
|
|
91
|
+
this.name = 'map';
|
|
92
|
+
}
|
|
93
|
+
async execute(input, context) {
|
|
94
|
+
try {
|
|
95
|
+
const mapper = new Mapper_1.Mapper([...this.mappings]);
|
|
96
|
+
const result = await mapper.execute(input);
|
|
97
|
+
// Update statistics
|
|
98
|
+
context.stats.fieldsMapped = this.mappings.length;
|
|
99
|
+
context.stats.transformsApplied = this.mappings.filter(m => m.transform).length;
|
|
100
|
+
// Update target in context
|
|
101
|
+
context.target = result;
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
const mapError = new types_1.MappingError(`Mapping failed: ${error instanceof Error ? error.message : 'Unknown error'}`, { context: { mappings: this.mappings.length } });
|
|
106
|
+
context.errors.push(mapError);
|
|
107
|
+
// Return empty object on mapping failure
|
|
108
|
+
context.target = {};
|
|
109
|
+
return {};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
PipelineSteps.MapStep = MapStep;
|
|
114
|
+
/**
|
|
115
|
+
* Defaults step - applies default values to missing fields
|
|
116
|
+
*/
|
|
117
|
+
class DefaultsStep {
|
|
118
|
+
constructor(defaults) {
|
|
119
|
+
this.defaults = defaults;
|
|
120
|
+
this.name = 'defaults';
|
|
121
|
+
}
|
|
122
|
+
async execute(input, context) {
|
|
123
|
+
try {
|
|
124
|
+
const result = { ...input };
|
|
125
|
+
let defaultsApplied = 0;
|
|
126
|
+
for (const [path, value] of Object.entries(this.defaults)) {
|
|
127
|
+
// Only apply default if the field is undefined or null
|
|
128
|
+
if (this.getNestedValue(result, path) == null) {
|
|
129
|
+
const defaultValue = typeof value === 'function' ? value() : value;
|
|
130
|
+
this.setNestedValue(result, path, defaultValue);
|
|
131
|
+
defaultsApplied++;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Update statistics
|
|
135
|
+
context.stats.fieldsWithDefaults = defaultsApplied;
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
const defaultError = new types_1.GenericConfigForgeError(`Defaults application failed: ${error instanceof Error ? error.message : 'Unknown error'}`, { context: { defaults: Object.keys(this.defaults) } });
|
|
140
|
+
context.errors.push(defaultError);
|
|
141
|
+
return input; // Return original input on failure
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
getNestedValue(obj, path) {
|
|
145
|
+
return path.split('.').reduce((current, key) => current?.[key], obj);
|
|
146
|
+
}
|
|
147
|
+
setNestedValue(obj, path, value) {
|
|
148
|
+
const keys = path.split('.');
|
|
149
|
+
const lastKey = keys.pop();
|
|
150
|
+
const target = keys.reduce((current, key) => {
|
|
151
|
+
if (!(key in current)) {
|
|
152
|
+
current[key] = {};
|
|
153
|
+
}
|
|
154
|
+
return current[key];
|
|
155
|
+
}, obj);
|
|
156
|
+
target[lastKey] = value;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
PipelineSteps.DefaultsStep = DefaultsStep;
|
|
160
|
+
/**
|
|
161
|
+
* After hooks step - runs after hooks on target data
|
|
162
|
+
*/
|
|
163
|
+
class AfterHooksStep {
|
|
164
|
+
constructor(hooks) {
|
|
165
|
+
this.hooks = hooks;
|
|
166
|
+
this.name = 'after-hooks';
|
|
167
|
+
}
|
|
168
|
+
async execute(input, context) {
|
|
169
|
+
let processedData = input;
|
|
170
|
+
for (const hook of this.hooks) {
|
|
171
|
+
try {
|
|
172
|
+
const result = await hook(processedData, {
|
|
173
|
+
source: context.source,
|
|
174
|
+
target: context.target,
|
|
175
|
+
path: '',
|
|
176
|
+
converter: context.converter,
|
|
177
|
+
metadata: context.metadata,
|
|
178
|
+
});
|
|
179
|
+
if (result !== undefined) {
|
|
180
|
+
processedData = result;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
const hookError = new types_1.GenericConfigForgeError(`After hook failed: ${error instanceof Error ? error.message : 'Unknown error'}`, { context: { hook: hook.name } });
|
|
185
|
+
context.errors.push(hookError);
|
|
186
|
+
// Continue with other hooks unless in strict mode
|
|
187
|
+
if (context.options.strict) {
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// Update target in context
|
|
193
|
+
context.target = processedData;
|
|
194
|
+
return processedData;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
PipelineSteps.AfterHooksStep = AfterHooksStep;
|
|
198
|
+
/**
|
|
199
|
+
* Validate step - runs validation rules on the target data
|
|
200
|
+
*/
|
|
201
|
+
class ValidateStep {
|
|
202
|
+
constructor(validators) {
|
|
203
|
+
this.validators = validators;
|
|
204
|
+
this.name = 'validate';
|
|
205
|
+
}
|
|
206
|
+
async execute(input, context) {
|
|
207
|
+
for (const { path, validator } of this.validators) {
|
|
208
|
+
try {
|
|
209
|
+
const value = this.getNestedValue(input, path);
|
|
210
|
+
const result = await validator(value, {
|
|
211
|
+
source: context.source,
|
|
212
|
+
target: context.target,
|
|
213
|
+
path,
|
|
214
|
+
converter: context.converter,
|
|
215
|
+
allErrors: context.errors,
|
|
216
|
+
});
|
|
217
|
+
if (result !== true && result !== undefined) {
|
|
218
|
+
const validationError = new types_1.ValidationError(typeof result === 'string'
|
|
219
|
+
? result
|
|
220
|
+
: `Validation failed for ${path}`, { path, context: { value } });
|
|
221
|
+
context.errors.push(validationError);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
const validationError = new types_1.ValidationError(`Validation error for ${path}: ${error instanceof Error ? error.message : 'Unknown error'}`, { path, context: { validator: validator.name } });
|
|
226
|
+
context.errors.push(validationError);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
// Update validation statistics
|
|
230
|
+
context.stats.validationErrors = context.errors.filter(e => e instanceof types_1.ValidationError).length;
|
|
231
|
+
return input; // Validation doesn't modify the data
|
|
232
|
+
}
|
|
233
|
+
getNestedValue(obj, path) {
|
|
234
|
+
return path.split('.').reduce((current, key) => current?.[key], obj);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
PipelineSteps.ValidateStep = ValidateStep;
|
|
238
|
+
/**
|
|
239
|
+
* Statistics step - calculates final conversion statistics
|
|
240
|
+
*/
|
|
241
|
+
class StatisticsStep {
|
|
242
|
+
constructor() {
|
|
243
|
+
this.name = 'statistics';
|
|
244
|
+
}
|
|
245
|
+
async execute(input, context) {
|
|
246
|
+
// Count fields in source data
|
|
247
|
+
context.stats.fieldsProcessed = this.countFields(context.source);
|
|
248
|
+
// Find unmapped fields
|
|
249
|
+
const unmapped = this.findUnmappedFields(context.source, context.metadata.mappings || []);
|
|
250
|
+
context.stats.fieldsUnmapped = unmapped.length;
|
|
251
|
+
// Add unmapped fields to context for result
|
|
252
|
+
context.metadata.unmappedFields = unmapped;
|
|
253
|
+
return input;
|
|
254
|
+
}
|
|
255
|
+
countFields(obj, count = 0) {
|
|
256
|
+
if (obj && typeof obj === 'object') {
|
|
257
|
+
if (Array.isArray(obj)) {
|
|
258
|
+
return obj.reduce((acc, item) => acc + this.countFields(item), count);
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
return Object.keys(obj).reduce((acc, key) => acc + 1 + this.countFields(obj[key]), count);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return count;
|
|
265
|
+
}
|
|
266
|
+
findUnmappedFields(source, mappings) {
|
|
267
|
+
const unmapped = [];
|
|
268
|
+
const mappedPaths = new Set(mappings.map(m => m.source.split('[')[0]));
|
|
269
|
+
const traverse = (obj, currentPath) => {
|
|
270
|
+
if (obj && typeof obj === 'object') {
|
|
271
|
+
if (Array.isArray(obj)) {
|
|
272
|
+
obj.forEach((item, index) => {
|
|
273
|
+
const arrayPath = `${currentPath}[${index}]`;
|
|
274
|
+
if (!mappedPaths.has(currentPath) &&
|
|
275
|
+
!mappedPaths.has(arrayPath)) {
|
|
276
|
+
unmapped.push(arrayPath);
|
|
277
|
+
}
|
|
278
|
+
traverse(item, arrayPath);
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
Object.keys(obj).forEach(key => {
|
|
283
|
+
const newPath = currentPath ? `${currentPath}.${key}` : key;
|
|
284
|
+
if (!mappedPaths.has(newPath)) {
|
|
285
|
+
unmapped.push(newPath);
|
|
286
|
+
}
|
|
287
|
+
traverse(obj[key], newPath);
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
traverse(source, '');
|
|
293
|
+
return unmapped;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
PipelineSteps.StatisticsStep = StatisticsStep;
|
|
297
|
+
})(PipelineSteps || (exports.PipelineSteps = PipelineSteps = {}));
|
|
298
|
+
//# sourceMappingURL=PipelineSteps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PipelineSteps.js","sourceRoot":"","sources":["../../../src/core/pipeline/PipelineSteps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { ConfigForgeError, Warning } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Collects and manages errors and warnings during conversion process
|
|
4
|
+
*/
|
|
5
|
+
export declare class ErrorCollector {
|
|
6
|
+
private errors;
|
|
7
|
+
private warnings;
|
|
8
|
+
private context;
|
|
9
|
+
constructor(initialContext?: Record<string, any>);
|
|
10
|
+
/**
|
|
11
|
+
* Add an error to the collection
|
|
12
|
+
*/
|
|
13
|
+
addError(error: ConfigForgeError): void;
|
|
14
|
+
/**
|
|
15
|
+
* Add multiple errors to the collection
|
|
16
|
+
*/
|
|
17
|
+
addErrors(errors: ConfigForgeError[]): void;
|
|
18
|
+
/**
|
|
19
|
+
* Add a warning to the collection
|
|
20
|
+
*/
|
|
21
|
+
addWarning(warning: Warning): void;
|
|
22
|
+
/**
|
|
23
|
+
* Add multiple warnings to the collection
|
|
24
|
+
*/
|
|
25
|
+
addWarnings(warnings: Warning[]): void;
|
|
26
|
+
/**
|
|
27
|
+
* Create and add an error from basic information
|
|
28
|
+
*/
|
|
29
|
+
createError(ErrorClass: new (...args: any[]) => ConfigForgeError, message: string, ...args: any[]): void;
|
|
30
|
+
/**
|
|
31
|
+
* Create and add a warning from basic information
|
|
32
|
+
*/
|
|
33
|
+
createWarning(type: Warning['type'], field: string, message: string, suggestion?: string): void;
|
|
34
|
+
/**
|
|
35
|
+
* Set context information for subsequent errors
|
|
36
|
+
*/
|
|
37
|
+
setContext(context: Record<string, any>): void;
|
|
38
|
+
/**
|
|
39
|
+
* Clear context information
|
|
40
|
+
*/
|
|
41
|
+
clearContext(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Get all collected errors
|
|
44
|
+
*/
|
|
45
|
+
getErrors(): ConfigForgeError[];
|
|
46
|
+
/**
|
|
47
|
+
* Get all collected warnings
|
|
48
|
+
*/
|
|
49
|
+
getWarnings(): Warning[];
|
|
50
|
+
/**
|
|
51
|
+
* Get errors by type/code
|
|
52
|
+
*/
|
|
53
|
+
getErrorsByCode(code: string): ConfigForgeError[];
|
|
54
|
+
/**
|
|
55
|
+
* Get warnings by type
|
|
56
|
+
*/
|
|
57
|
+
getWarningsByType(type: Warning['type']): Warning[];
|
|
58
|
+
/**
|
|
59
|
+
* Check if there are any errors
|
|
60
|
+
*/
|
|
61
|
+
hasErrors(): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Check if there are any warnings
|
|
64
|
+
*/
|
|
65
|
+
hasWarnings(): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Check if there are any critical errors (non-validation errors)
|
|
68
|
+
*/
|
|
69
|
+
hasCriticalErrors(): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Get error count
|
|
72
|
+
*/
|
|
73
|
+
getErrorCount(): number;
|
|
74
|
+
/**
|
|
75
|
+
* Get warning count
|
|
76
|
+
*/
|
|
77
|
+
getWarningCount(): number;
|
|
78
|
+
/**
|
|
79
|
+
* Clear all errors and warnings
|
|
80
|
+
*/
|
|
81
|
+
clear(): void;
|
|
82
|
+
/**
|
|
83
|
+
* Clear only errors
|
|
84
|
+
*/
|
|
85
|
+
clearErrors(): void;
|
|
86
|
+
/**
|
|
87
|
+
* Clear only warnings
|
|
88
|
+
*/
|
|
89
|
+
clearWarnings(): void;
|
|
90
|
+
/**
|
|
91
|
+
* Merge another ErrorCollector into this one
|
|
92
|
+
*/
|
|
93
|
+
merge(other: ErrorCollector): void;
|
|
94
|
+
/**
|
|
95
|
+
* Get a summary of all issues
|
|
96
|
+
*/
|
|
97
|
+
getSummary(): {
|
|
98
|
+
errorCount: number;
|
|
99
|
+
warningCount: number;
|
|
100
|
+
criticalErrorCount: number;
|
|
101
|
+
errorsByCode: Record<string, number>;
|
|
102
|
+
warningsByType: Record<string, number>;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Convert to a simple object for serialization
|
|
106
|
+
*/
|
|
107
|
+
toJSON(): {
|
|
108
|
+
errors: Array<{
|
|
109
|
+
code: string;
|
|
110
|
+
message: string;
|
|
111
|
+
path?: string;
|
|
112
|
+
suggestion?: string;
|
|
113
|
+
context?: any;
|
|
114
|
+
}>;
|
|
115
|
+
warnings: Warning[];
|
|
116
|
+
summary: ReturnType<ErrorCollector['getSummary']>;
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=ErrorCollector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorCollector.d.ts","sourceRoot":"","sources":["../../src/errors/ErrorCollector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAErD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,OAAO,CAA2B;gBAE9B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAMhD;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IASvC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI;IAI3C;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAItC;;OAEG;IACH,WAAW,CACT,UAAU,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,gBAAgB,EACpD,OAAO,EAAE,MAAM,EACf,GAAG,IAAI,EAAE,GAAG,EAAE,GACb,IAAI;IAKP;;OAEG;IACH,aAAa,CACX,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI;IAcP;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAI9C;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,SAAS,IAAI,gBAAgB,EAAE;IAI/B;;OAEG;IACH,WAAW,IAAI,OAAO,EAAE;IAIxB;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAIjD;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,EAAE;IAInD;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,aAAa,IAAI,IAAI;IAIrB;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAKlC;;OAEG;IACH,UAAU,IAAI;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACxC;IAsBD;;OAEG;IACH,MAAM,IAAI;QACR,MAAM,EAAE,KAAK,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,MAAM,CAAC;YAChB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,OAAO,CAAC,EAAE,GAAG,CAAC;SACf,CAAC,CAAC;QACH,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;KACnD;CAaF"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ErrorCollector = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Collects and manages errors and warnings during conversion process
|
|
6
|
+
*/
|
|
7
|
+
class ErrorCollector {
|
|
8
|
+
constructor(initialContext) {
|
|
9
|
+
this.errors = [];
|
|
10
|
+
this.warnings = [];
|
|
11
|
+
this.context = {};
|
|
12
|
+
if (initialContext) {
|
|
13
|
+
this.context = { ...initialContext };
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Add an error to the collection
|
|
18
|
+
*/
|
|
19
|
+
addError(error) {
|
|
20
|
+
// Enhance error with current context if not already set
|
|
21
|
+
if (!error.context && Object.keys(this.context).length > 0) {
|
|
22
|
+
error.context = { ...this.context };
|
|
23
|
+
}
|
|
24
|
+
this.errors.push(error);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Add multiple errors to the collection
|
|
28
|
+
*/
|
|
29
|
+
addErrors(errors) {
|
|
30
|
+
errors.forEach(error => this.addError(error));
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Add a warning to the collection
|
|
34
|
+
*/
|
|
35
|
+
addWarning(warning) {
|
|
36
|
+
this.warnings.push(warning);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Add multiple warnings to the collection
|
|
40
|
+
*/
|
|
41
|
+
addWarnings(warnings) {
|
|
42
|
+
this.warnings.push(...warnings);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Create and add an error from basic information
|
|
46
|
+
*/
|
|
47
|
+
createError(ErrorClass, message, ...args) {
|
|
48
|
+
const error = new ErrorClass(message, ...args);
|
|
49
|
+
this.addError(error);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Create and add a warning from basic information
|
|
53
|
+
*/
|
|
54
|
+
createWarning(type, field, message, suggestion) {
|
|
55
|
+
const warning = {
|
|
56
|
+
type,
|
|
57
|
+
field,
|
|
58
|
+
message,
|
|
59
|
+
};
|
|
60
|
+
if (suggestion !== undefined) {
|
|
61
|
+
warning.suggestion = suggestion;
|
|
62
|
+
}
|
|
63
|
+
this.addWarning(warning);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Set context information for subsequent errors
|
|
67
|
+
*/
|
|
68
|
+
setContext(context) {
|
|
69
|
+
this.context = { ...this.context, ...context };
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Clear context information
|
|
73
|
+
*/
|
|
74
|
+
clearContext() {
|
|
75
|
+
this.context = {};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get all collected errors
|
|
79
|
+
*/
|
|
80
|
+
getErrors() {
|
|
81
|
+
return [...this.errors];
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get all collected warnings
|
|
85
|
+
*/
|
|
86
|
+
getWarnings() {
|
|
87
|
+
return [...this.warnings];
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get errors by type/code
|
|
91
|
+
*/
|
|
92
|
+
getErrorsByCode(code) {
|
|
93
|
+
return this.errors.filter(error => error.code === code);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get warnings by type
|
|
97
|
+
*/
|
|
98
|
+
getWarningsByType(type) {
|
|
99
|
+
return this.warnings.filter(warning => warning.type === type);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Check if there are any errors
|
|
103
|
+
*/
|
|
104
|
+
hasErrors() {
|
|
105
|
+
return this.errors.length > 0;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Check if there are any warnings
|
|
109
|
+
*/
|
|
110
|
+
hasWarnings() {
|
|
111
|
+
return this.warnings.length > 0;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Check if there are any critical errors (non-validation errors)
|
|
115
|
+
*/
|
|
116
|
+
hasCriticalErrors() {
|
|
117
|
+
return this.errors.some(error => error.code !== 'VALIDATION_ERROR');
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Get error count
|
|
121
|
+
*/
|
|
122
|
+
getErrorCount() {
|
|
123
|
+
return this.errors.length;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get warning count
|
|
127
|
+
*/
|
|
128
|
+
getWarningCount() {
|
|
129
|
+
return this.warnings.length;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Clear all errors and warnings
|
|
133
|
+
*/
|
|
134
|
+
clear() {
|
|
135
|
+
this.errors = [];
|
|
136
|
+
this.warnings = [];
|
|
137
|
+
this.context = {};
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Clear only errors
|
|
141
|
+
*/
|
|
142
|
+
clearErrors() {
|
|
143
|
+
this.errors = [];
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Clear only warnings
|
|
147
|
+
*/
|
|
148
|
+
clearWarnings() {
|
|
149
|
+
this.warnings = [];
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Merge another ErrorCollector into this one
|
|
153
|
+
*/
|
|
154
|
+
merge(other) {
|
|
155
|
+
this.addErrors(other.getErrors());
|
|
156
|
+
this.addWarnings(other.getWarnings());
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Get a summary of all issues
|
|
160
|
+
*/
|
|
161
|
+
getSummary() {
|
|
162
|
+
const errorsByCode = {};
|
|
163
|
+
const warningsByType = {};
|
|
164
|
+
this.errors.forEach(error => {
|
|
165
|
+
errorsByCode[error.code] = (errorsByCode[error.code] || 0) + 1;
|
|
166
|
+
});
|
|
167
|
+
this.warnings.forEach(warning => {
|
|
168
|
+
warningsByType[warning.type] = (warningsByType[warning.type] || 0) + 1;
|
|
169
|
+
});
|
|
170
|
+
return {
|
|
171
|
+
errorCount: this.errors.length,
|
|
172
|
+
warningCount: this.warnings.length,
|
|
173
|
+
criticalErrorCount: this.errors.filter(e => e.code !== 'VALIDATION_ERROR')
|
|
174
|
+
.length,
|
|
175
|
+
errorsByCode,
|
|
176
|
+
warningsByType,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Convert to a simple object for serialization
|
|
181
|
+
*/
|
|
182
|
+
toJSON() {
|
|
183
|
+
return {
|
|
184
|
+
errors: this.errors.map(error => ({
|
|
185
|
+
code: error.code,
|
|
186
|
+
message: error.message,
|
|
187
|
+
...(error.path && { path: error.path }),
|
|
188
|
+
...(error.suggestion && { suggestion: error.suggestion }),
|
|
189
|
+
...(error.context && { context: error.context }),
|
|
190
|
+
})),
|
|
191
|
+
warnings: [...this.warnings],
|
|
192
|
+
summary: this.getSummary(),
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
exports.ErrorCollector = ErrorCollector;
|
|
197
|
+
//# sourceMappingURL=ErrorCollector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorCollector.js","sourceRoot":"","sources":["../../src/errors/ErrorCollector.ts"],"names":[],"mappings":"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"}
|