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,321 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ErrorRecoveryManager = void 0;
4
+ const types_1 = require("../types");
5
+ const ErrorTypes_1 = require("./ErrorTypes");
6
+ /**
7
+ * Error recovery manager
8
+ */
9
+ class ErrorRecoveryManager {
10
+ constructor() {
11
+ this.strategies = [];
12
+ this.recoveryHistory = [];
13
+ this.registerDefaultStrategies();
14
+ }
15
+ /**
16
+ * Register a recovery strategy
17
+ */
18
+ registerStrategy(strategy) {
19
+ this.strategies.push(strategy);
20
+ this.strategies.sort((a, b) => b.priority - a.priority);
21
+ }
22
+ /**
23
+ * Attempt to recover from an error
24
+ */
25
+ async attemptRecovery(error, context) {
26
+ const strategy = this.findBestStrategy(error);
27
+ if (!strategy) {
28
+ return null;
29
+ }
30
+ const startTime = Date.now();
31
+ try {
32
+ const result = await strategy.recover(error, context);
33
+ const duration = Date.now() - startTime;
34
+ const attempt = {
35
+ strategy: strategy.name,
36
+ error,
37
+ result,
38
+ timestamp: new Date(),
39
+ duration,
40
+ };
41
+ this.recoveryHistory.push(attempt);
42
+ return attempt;
43
+ }
44
+ catch (recoveryError) {
45
+ const duration = Date.now() - startTime;
46
+ const attempt = {
47
+ strategy: strategy.name,
48
+ error,
49
+ result: {
50
+ success: false,
51
+ message: `Recovery strategy failed: ${recoveryError instanceof Error ? recoveryError.message : 'Unknown error'}`,
52
+ },
53
+ timestamp: new Date(),
54
+ duration,
55
+ };
56
+ this.recoveryHistory.push(attempt);
57
+ return attempt;
58
+ }
59
+ }
60
+ /**
61
+ * Attempt to recover from multiple errors
62
+ */
63
+ async attemptBatchRecovery(errors, context) {
64
+ const attempts = [];
65
+ for (const error of errors) {
66
+ const attempt = await this.attemptRecovery(error, context);
67
+ if (attempt) {
68
+ attempts.push(attempt);
69
+ }
70
+ }
71
+ return attempts;
72
+ }
73
+ /**
74
+ * Get recovery suggestions for an error
75
+ */
76
+ getRecoverySuggestions(error) {
77
+ const suggestions = [];
78
+ // Check if error already has suggestions
79
+ if (error instanceof ErrorTypes_1.RecoverableError) {
80
+ suggestions.push(...error.suggestions);
81
+ }
82
+ // Generate suggestions based on error type
83
+ suggestions.push(...this.generateSuggestionsForError(error));
84
+ return suggestions;
85
+ }
86
+ /**
87
+ * Get recovery history
88
+ */
89
+ getRecoveryHistory() {
90
+ return [...this.recoveryHistory];
91
+ }
92
+ /**
93
+ * Clear recovery history
94
+ */
95
+ clearHistory() {
96
+ this.recoveryHistory = [];
97
+ }
98
+ /**
99
+ * Get recovery statistics
100
+ */
101
+ getRecoveryStats() {
102
+ const totalAttempts = this.recoveryHistory.length;
103
+ const successfulRecoveries = this.recoveryHistory.filter(a => a.result.success).length;
104
+ const failedRecoveries = totalAttempts - successfulRecoveries;
105
+ const averageDuration = totalAttempts > 0
106
+ ? this.recoveryHistory.reduce((sum, a) => sum + a.duration, 0) /
107
+ totalAttempts
108
+ : 0;
109
+ const strategiesUsed = {};
110
+ this.recoveryHistory.forEach(attempt => {
111
+ strategiesUsed[attempt.strategy] =
112
+ (strategiesUsed[attempt.strategy] || 0) + 1;
113
+ });
114
+ return {
115
+ totalAttempts,
116
+ successfulRecoveries,
117
+ failedRecoveries,
118
+ averageDuration,
119
+ strategiesUsed,
120
+ };
121
+ }
122
+ findBestStrategy(error) {
123
+ return this.strategies.find(strategy => strategy.canRecover(error)) || null;
124
+ }
125
+ generateSuggestionsForError(error) {
126
+ const suggestions = [];
127
+ switch (error.code) {
128
+ case 'PARSE_ERROR':
129
+ suggestions.push({
130
+ action: 'Check file format',
131
+ description: 'Verify that the input file is valid JSON or YAML',
132
+ automated: false,
133
+ });
134
+ suggestions.push({
135
+ action: 'Use fallback parser',
136
+ description: 'Try parsing with a more lenient parser',
137
+ automated: true,
138
+ });
139
+ break;
140
+ case 'MAPPING_ERROR':
141
+ suggestions.push({
142
+ action: 'Check field paths',
143
+ description: 'Verify that source and target field paths are correct',
144
+ automated: false,
145
+ });
146
+ suggestions.push({
147
+ action: 'Use default values',
148
+ description: 'Apply default values for missing fields',
149
+ automated: true,
150
+ });
151
+ break;
152
+ case 'VALIDATION_ERROR':
153
+ suggestions.push({
154
+ action: 'Review validation rules',
155
+ description: 'Check if validation rules are appropriate for the data',
156
+ automated: false,
157
+ });
158
+ suggestions.push({
159
+ action: 'Skip validation',
160
+ description: 'Continue processing without validation',
161
+ automated: true,
162
+ });
163
+ break;
164
+ case 'TYPE_CONVERSION_ERROR':
165
+ suggestions.push({
166
+ action: 'Add type conversion',
167
+ description: 'Use a transform function to convert the value to the expected type',
168
+ automated: false,
169
+ });
170
+ suggestions.push({
171
+ action: 'Use string representation',
172
+ description: 'Convert value to string as fallback',
173
+ automated: true,
174
+ });
175
+ break;
176
+ }
177
+ return suggestions;
178
+ }
179
+ registerDefaultStrategies() {
180
+ // Parse error recovery
181
+ this.registerStrategy({
182
+ name: 'ParseErrorRecovery',
183
+ priority: 100,
184
+ canRecover: error => error instanceof types_1.ParseError,
185
+ recover: async (_error, context) => {
186
+ // Try to parse as plain text or use fallback structure
187
+ try {
188
+ const fallbackData = context.options?.fallbackValues || {};
189
+ return {
190
+ success: true,
191
+ recoveredData: fallbackData,
192
+ message: 'Used fallback data structure',
193
+ suggestions: [
194
+ {
195
+ action: 'Validate input format',
196
+ description: 'Ensure input is valid JSON or YAML',
197
+ automated: false,
198
+ },
199
+ ],
200
+ };
201
+ }
202
+ catch {
203
+ return {
204
+ success: false,
205
+ message: 'Could not recover from parse error',
206
+ };
207
+ }
208
+ },
209
+ });
210
+ // Mapping error recovery
211
+ this.registerStrategy({
212
+ name: 'MappingErrorRecovery',
213
+ priority: 90,
214
+ canRecover: error => error instanceof types_1.MappingError,
215
+ recover: async (error, context) => {
216
+ if (context.options?.skipOnError) {
217
+ return {
218
+ success: true,
219
+ recoveredData: context.targetData || {},
220
+ message: 'Skipped failed mapping',
221
+ suggestions: [
222
+ {
223
+ action: 'Check field path',
224
+ description: `Verify the field path: ${error.path}`,
225
+ automated: false,
226
+ },
227
+ ],
228
+ };
229
+ }
230
+ return {
231
+ success: false,
232
+ message: 'Cannot recover from mapping error without skip option',
233
+ };
234
+ },
235
+ });
236
+ // Validation error recovery
237
+ this.registerStrategy({
238
+ name: 'ValidationErrorRecovery',
239
+ priority: 80,
240
+ canRecover: error => error instanceof types_1.ValidationError,
241
+ recover: async (error, context) => {
242
+ if (context.options?.skipOnError) {
243
+ return {
244
+ success: true,
245
+ recoveredData: context.targetData,
246
+ message: 'Continued processing despite validation error',
247
+ suggestions: [
248
+ {
249
+ action: 'Review validation rule',
250
+ description: `Check validation rule for field: ${error.path}`,
251
+ automated: false,
252
+ },
253
+ ],
254
+ };
255
+ }
256
+ return {
257
+ success: false,
258
+ message: 'Cannot recover from validation error without skip option',
259
+ };
260
+ },
261
+ });
262
+ // Type conversion error recovery
263
+ this.registerStrategy({
264
+ name: 'TypeConversionRecovery',
265
+ priority: 70,
266
+ canRecover: error => error instanceof ErrorTypes_1.TypeConversionError,
267
+ recover: async (error, _context) => {
268
+ try {
269
+ // Try to convert to string as fallback
270
+ const value = error.context?.value;
271
+ const stringValue = value != null ? String(value) : '';
272
+ return {
273
+ success: true,
274
+ recoveredData: stringValue,
275
+ message: 'Converted value to string as fallback',
276
+ suggestions: [
277
+ {
278
+ action: 'Add type conversion transform',
279
+ description: 'Use a transform function to properly convert the value type',
280
+ automated: false,
281
+ },
282
+ ],
283
+ };
284
+ }
285
+ catch {
286
+ return {
287
+ success: false,
288
+ message: 'Could not convert value to string',
289
+ };
290
+ }
291
+ },
292
+ });
293
+ // Hook error recovery
294
+ this.registerStrategy({
295
+ name: 'HookErrorRecovery',
296
+ priority: 60,
297
+ canRecover: error => error instanceof ErrorTypes_1.HookError,
298
+ recover: async (error, context) => {
299
+ // Continue with original data if hook fails
300
+ const hookError = error;
301
+ const data = hookError.hookType === 'before'
302
+ ? context.sourceData
303
+ : context.targetData;
304
+ return {
305
+ success: true,
306
+ recoveredData: data,
307
+ message: `Skipped failed ${hookError.hookType} hook: ${hookError.hookName}`,
308
+ suggestions: [
309
+ {
310
+ action: 'Debug hook function',
311
+ description: `Check the implementation of ${hookError.hookName} hook`,
312
+ automated: false,
313
+ },
314
+ ],
315
+ };
316
+ },
317
+ });
318
+ }
319
+ }
320
+ exports.ErrorRecoveryManager = ErrorRecoveryManager;
321
+ //# sourceMappingURL=ErrorRecovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorRecovery.js","sourceRoot":"","sources":["../../src/errors/ErrorRecovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { ConfigForgeError, Warning } from '../types';
2
+ import { ErrorCollector } from './ErrorCollector';
3
+ /**
4
+ * Formats and reports errors and warnings in various formats
5
+ */
6
+ export declare class ErrorReporter {
7
+ private collector;
8
+ constructor(collector: ErrorCollector);
9
+ /**
10
+ * Generate a detailed text report
11
+ */
12
+ generateTextReport(options?: {
13
+ includeContext?: boolean;
14
+ includeSuggestions?: boolean;
15
+ maxContextLines?: number;
16
+ }): string;
17
+ /**
18
+ * Generate a JSON report
19
+ */
20
+ generateJSONReport(): string;
21
+ /**
22
+ * Generate a compact summary report
23
+ */
24
+ generateSummaryReport(): string;
25
+ /**
26
+ * Generate a colored console report (with ANSI colors)
27
+ */
28
+ generateColoredReport(): string;
29
+ /**
30
+ * Print report to console
31
+ */
32
+ printToConsole(colored?: boolean): void;
33
+ /**
34
+ * Get errors grouped by type
35
+ */
36
+ getErrorsByType(): Record<string, ConfigForgeError[]>;
37
+ /**
38
+ * Get warnings grouped by type
39
+ */
40
+ getWarningsByType(): Record<string, Warning[]>;
41
+ /**
42
+ * Check if there are any blocking errors (non-warnings)
43
+ */
44
+ hasBlockingErrors(): boolean;
45
+ /**
46
+ * Get the most common error type
47
+ */
48
+ getMostCommonErrorType(): string | null;
49
+ /**
50
+ * Format context object for display
51
+ */
52
+ private formatContext;
53
+ /**
54
+ * Export report to file (returns content, actual file writing should be done by caller)
55
+ */
56
+ exportReport(format?: 'text' | 'json' | 'summary'): string;
57
+ }
58
+ //# sourceMappingURL=ErrorReporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorReporter.d.ts","sourceRoot":"","sources":["../../src/errors/ErrorReporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAiB;gBAEtB,SAAS,EAAE,cAAc;IAIrC;;OAEG;IACH,kBAAkB,CAChB,OAAO,GAAE;QACP,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;KACrB,GACL,MAAM;IA8FT;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAI5B;;OAEG;IACH,qBAAqB,IAAI,MAAM;IA2B/B;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAuF/B;;OAEG;IACH,cAAc,CAAC,OAAO,GAAE,OAAc,GAAG,IAAI;IAO7C;;OAEG;IACH,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAcrD;;OAEG;IACH,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;IAc9C;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;OAEG;IACH,sBAAsB,IAAI,MAAM,GAAG,IAAI;IAWvC;;OAEG;IACH,OAAO,CAAC,aAAa;IAmBrB;;OAEG;IACH,YAAY,CAAC,MAAM,GAAE,MAAM,GAAG,MAAM,GAAG,SAAkB,GAAG,MAAM;CAWnE"}
@@ -0,0 +1,262 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ErrorReporter = void 0;
4
+ /**
5
+ * Formats and reports errors and warnings in various formats
6
+ */
7
+ class ErrorReporter {
8
+ constructor(collector) {
9
+ this.collector = collector;
10
+ }
11
+ /**
12
+ * Generate a detailed text report
13
+ */
14
+ generateTextReport(options = {}) {
15
+ const { includeContext = true, includeSuggestions = true, maxContextLines = 5, } = options;
16
+ const lines = [];
17
+ const errors = this.collector.getErrors();
18
+ const warnings = this.collector.getWarnings();
19
+ // Header
20
+ lines.push('ConfigForge Conversion Report');
21
+ lines.push('='.repeat(50));
22
+ lines.push('');
23
+ // Summary
24
+ const summary = this.collector.getSummary();
25
+ lines.push(`Summary: ${summary.errorCount} errors, ${summary.warningCount} warnings`);
26
+ if (summary.criticalErrorCount > 0) {
27
+ lines.push(`Critical errors: ${summary.criticalErrorCount}`);
28
+ }
29
+ lines.push('');
30
+ // Errors section
31
+ if (errors.length > 0) {
32
+ lines.push('ERRORS:');
33
+ lines.push('-'.repeat(20));
34
+ errors.forEach((error, index) => {
35
+ lines.push(`${index + 1}. [${error.code}] ${error.message}`);
36
+ if (error.path) {
37
+ lines.push(` Path: ${error.path}`);
38
+ }
39
+ if (includeSuggestions && error.suggestion) {
40
+ lines.push(` Suggestion: ${error.suggestion}`);
41
+ }
42
+ if (includeContext && error.context) {
43
+ lines.push(` Context: ${this.formatContext(error.context, maxContextLines)}`);
44
+ }
45
+ lines.push('');
46
+ });
47
+ }
48
+ // Warnings section
49
+ if (warnings.length > 0) {
50
+ lines.push('WARNINGS:');
51
+ lines.push('-'.repeat(20));
52
+ warnings.forEach((warning, index) => {
53
+ lines.push(`${index + 1}. [${warning.type.toUpperCase()}] ${warning.message}`);
54
+ lines.push(` Field: ${warning.field}`);
55
+ if (includeSuggestions && warning.suggestion) {
56
+ lines.push(` Suggestion: ${warning.suggestion}`);
57
+ }
58
+ lines.push('');
59
+ });
60
+ }
61
+ // Error breakdown
62
+ if (Object.keys(summary.errorsByCode).length > 0) {
63
+ lines.push('Error Breakdown:');
64
+ Object.entries(summary.errorsByCode).forEach(([code, count]) => {
65
+ lines.push(` ${code}: ${count}`);
66
+ });
67
+ lines.push('');
68
+ }
69
+ // Warning breakdown
70
+ if (Object.keys(summary.warningsByType).length > 0) {
71
+ lines.push('Warning Breakdown:');
72
+ Object.entries(summary.warningsByType).forEach(([type, count]) => {
73
+ lines.push(` ${type}: ${count}`);
74
+ });
75
+ lines.push('');
76
+ }
77
+ return lines.join('\n');
78
+ }
79
+ /**
80
+ * Generate a JSON report
81
+ */
82
+ generateJSONReport() {
83
+ return JSON.stringify(this.collector.toJSON(), null, 2);
84
+ }
85
+ /**
86
+ * Generate a compact summary report
87
+ */
88
+ generateSummaryReport() {
89
+ const summary = this.collector.getSummary();
90
+ const lines = [];
91
+ if (summary.errorCount === 0 && summary.warningCount === 0) {
92
+ return '✅ No errors or warnings found.';
93
+ }
94
+ if (summary.errorCount > 0) {
95
+ lines.push(`❌ ${summary.errorCount} error${summary.errorCount > 1 ? 's' : ''}`);
96
+ if (summary.criticalErrorCount > 0) {
97
+ lines.push(` (${summary.criticalErrorCount} critical)`);
98
+ }
99
+ }
100
+ if (summary.warningCount > 0) {
101
+ lines.push(`⚠️ ${summary.warningCount} warning${summary.warningCount > 1 ? 's' : ''}`);
102
+ }
103
+ return lines.join('\n');
104
+ }
105
+ /**
106
+ * Generate a colored console report (with ANSI colors)
107
+ */
108
+ generateColoredReport() {
109
+ const errors = this.collector.getErrors();
110
+ const warnings = this.collector.getWarnings();
111
+ const lines = [];
112
+ // ANSI color codes
113
+ const colors = {
114
+ red: '\x1b[31m',
115
+ yellow: '\x1b[33m',
116
+ green: '\x1b[32m',
117
+ blue: '\x1b[34m',
118
+ gray: '\x1b[90m',
119
+ reset: '\x1b[0m',
120
+ bold: '\x1b[1m',
121
+ };
122
+ // Header
123
+ lines.push(`${colors.bold}ConfigForge Conversion Report${colors.reset}`);
124
+ lines.push('='.repeat(50));
125
+ lines.push('');
126
+ // Summary with colors
127
+ const summary = this.collector.getSummary();
128
+ if (summary.errorCount === 0 && summary.warningCount === 0) {
129
+ lines.push(`${colors.green}✅ No errors or warnings found.${colors.reset}`);
130
+ return lines.join('\n');
131
+ }
132
+ let summaryLine = 'Summary: ';
133
+ if (summary.errorCount > 0) {
134
+ summaryLine += `${colors.red}${summary.errorCount} error${summary.errorCount > 1 ? 's' : ''}${colors.reset}`;
135
+ }
136
+ if (summary.warningCount > 0) {
137
+ if (summary.errorCount > 0)
138
+ summaryLine += ', ';
139
+ summaryLine += `${colors.yellow}${summary.warningCount} warning${summary.warningCount > 1 ? 's' : ''}${colors.reset}`;
140
+ }
141
+ lines.push(summaryLine);
142
+ lines.push('');
143
+ // Errors with colors
144
+ if (errors.length > 0) {
145
+ lines.push(`${colors.red}${colors.bold}ERRORS:${colors.reset}`);
146
+ lines.push(`${colors.red}-`.repeat(20) + colors.reset);
147
+ errors.forEach((error, index) => {
148
+ lines.push(`${colors.red}${index + 1}. [${error.code}] ${error.message}${colors.reset}`);
149
+ if (error.path) {
150
+ lines.push(`${colors.gray} Path: ${error.path}${colors.reset}`);
151
+ }
152
+ if (error.suggestion) {
153
+ lines.push(`${colors.blue} 💡 ${error.suggestion}${colors.reset}`);
154
+ }
155
+ lines.push('');
156
+ });
157
+ }
158
+ // Warnings with colors
159
+ if (warnings.length > 0) {
160
+ lines.push(`${colors.yellow}${colors.bold}WARNINGS:${colors.reset}`);
161
+ lines.push(`${colors.yellow}-`.repeat(20) + colors.reset);
162
+ warnings.forEach((warning, index) => {
163
+ lines.push(`${colors.yellow}${index + 1}. [${warning.type.toUpperCase()}] ${warning.message}${colors.reset}`);
164
+ lines.push(`${colors.gray} Field: ${warning.field}${colors.reset}`);
165
+ if (warning.suggestion) {
166
+ lines.push(`${colors.blue} 💡 ${warning.suggestion}${colors.reset}`);
167
+ }
168
+ lines.push('');
169
+ });
170
+ }
171
+ return lines.join('\n');
172
+ }
173
+ /**
174
+ * Print report to console
175
+ */
176
+ printToConsole(colored = true) {
177
+ const report = colored
178
+ ? this.generateColoredReport()
179
+ : this.generateTextReport();
180
+ console.log(report);
181
+ }
182
+ /**
183
+ * Get errors grouped by type
184
+ */
185
+ getErrorsByType() {
186
+ const errors = this.collector.getErrors();
187
+ const grouped = {};
188
+ errors.forEach(error => {
189
+ if (!grouped[error.code]) {
190
+ grouped[error.code] = [];
191
+ }
192
+ grouped[error.code].push(error);
193
+ });
194
+ return grouped;
195
+ }
196
+ /**
197
+ * Get warnings grouped by type
198
+ */
199
+ getWarningsByType() {
200
+ const warnings = this.collector.getWarnings();
201
+ const grouped = {};
202
+ warnings.forEach(warning => {
203
+ if (!grouped[warning.type]) {
204
+ grouped[warning.type] = [];
205
+ }
206
+ grouped[warning.type].push(warning);
207
+ });
208
+ return grouped;
209
+ }
210
+ /**
211
+ * Check if there are any blocking errors (non-warnings)
212
+ */
213
+ hasBlockingErrors() {
214
+ return this.collector.hasCriticalErrors();
215
+ }
216
+ /**
217
+ * Get the most common error type
218
+ */
219
+ getMostCommonErrorType() {
220
+ const summary = this.collector.getSummary();
221
+ const errorsByCode = summary.errorsByCode;
222
+ if (Object.keys(errorsByCode).length === 0) {
223
+ return null;
224
+ }
225
+ return Object.entries(errorsByCode).sort(([, a], [, b]) => b - a)[0][0];
226
+ }
227
+ /**
228
+ * Format context object for display
229
+ */
230
+ formatContext(context, maxLines = 5) {
231
+ if (!context || typeof context !== 'object') {
232
+ return String(context);
233
+ }
234
+ try {
235
+ const formatted = JSON.stringify(context, null, 2);
236
+ const lines = formatted.split('\n');
237
+ if (lines.length <= maxLines) {
238
+ return formatted;
239
+ }
240
+ return lines.slice(0, maxLines).join('\n') + '\n ... (truncated)';
241
+ }
242
+ catch {
243
+ return '[Complex object - cannot display]';
244
+ }
245
+ }
246
+ /**
247
+ * Export report to file (returns content, actual file writing should be done by caller)
248
+ */
249
+ exportReport(format = 'text') {
250
+ switch (format) {
251
+ case 'json':
252
+ return this.generateJSONReport();
253
+ case 'summary':
254
+ return this.generateSummaryReport();
255
+ case 'text':
256
+ default:
257
+ return this.generateTextReport();
258
+ }
259
+ }
260
+ }
261
+ exports.ErrorReporter = ErrorReporter;
262
+ //# sourceMappingURL=ErrorReporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorReporter.js","sourceRoot":"","sources":["../../src/errors/ErrorReporter.ts"],"names":[],"mappings":"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"}