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,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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"}