@urbicon-ui/docs-gen 6.1.4
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 +92 -0
- package/dist/cli/CLI.d.ts +10 -0
- package/dist/cli/CLI.d.ts.map +1 -0
- package/dist/cli/CLI.js +340 -0
- package/dist/cli/CLI.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +7 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/discovery/ComponentFinder.d.ts +43 -0
- package/dist/core/discovery/ComponentFinder.d.ts.map +1 -0
- package/dist/core/discovery/ComponentFinder.js +421 -0
- package/dist/core/discovery/ComponentFinder.js.map +1 -0
- package/dist/core/discovery/FileStructureAnalyzer.d.ts +15 -0
- package/dist/core/discovery/FileStructureAnalyzer.d.ts.map +1 -0
- package/dist/core/discovery/FileStructureAnalyzer.js +35 -0
- package/dist/core/discovery/FileStructureAnalyzer.js.map +1 -0
- package/dist/core/discovery/MetadataExtractor.d.ts +15 -0
- package/dist/core/discovery/MetadataExtractor.d.ts.map +1 -0
- package/dist/core/discovery/MetadataExtractor.js +47 -0
- package/dist/core/discovery/MetadataExtractor.js.map +1 -0
- package/dist/core/discovery/index.d.ts +2 -0
- package/dist/core/discovery/index.d.ts.map +1 -0
- package/dist/core/discovery/index.js +2 -0
- package/dist/core/discovery/index.js.map +1 -0
- package/dist/core/enrichment/APIDataGenerator.d.ts +77 -0
- package/dist/core/enrichment/APIDataGenerator.d.ts.map +1 -0
- package/dist/core/enrichment/APIDataGenerator.js +663 -0
- package/dist/core/enrichment/APIDataGenerator.js.map +1 -0
- package/dist/core/enrichment/index.d.ts +2 -0
- package/dist/core/enrichment/index.d.ts.map +1 -0
- package/dist/core/enrichment/index.js +6 -0
- package/dist/core/enrichment/index.js.map +1 -0
- package/dist/core/extraction/ExtractionCoordinator.d.ts +53 -0
- package/dist/core/extraction/ExtractionCoordinator.d.ts.map +1 -0
- package/dist/core/extraction/ExtractionCoordinator.js +352 -0
- package/dist/core/extraction/ExtractionCoordinator.js.map +1 -0
- package/dist/core/extraction/index.d.ts +2 -0
- package/dist/core/extraction/index.d.ts.map +1 -0
- package/dist/core/extraction/index.js +2 -0
- package/dist/core/extraction/index.js.map +1 -0
- package/dist/core/generation/GenerationCoordinator.d.ts +51 -0
- package/dist/core/generation/GenerationCoordinator.d.ts.map +1 -0
- package/dist/core/generation/GenerationCoordinator.js +206 -0
- package/dist/core/generation/GenerationCoordinator.js.map +1 -0
- package/dist/core/generation/index.d.ts +2 -0
- package/dist/core/generation/index.d.ts.map +1 -0
- package/dist/core/generation/index.js +2 -0
- package/dist/core/generation/index.js.map +1 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +16 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/pipeline/ErrorHandler.d.ts +129 -0
- package/dist/core/pipeline/ErrorHandler.d.ts.map +1 -0
- package/dist/core/pipeline/ErrorHandler.js +321 -0
- package/dist/core/pipeline/ErrorHandler.js.map +1 -0
- package/dist/core/pipeline/PipelineOrchestrator.d.ts +45 -0
- package/dist/core/pipeline/PipelineOrchestrator.d.ts.map +1 -0
- package/dist/core/pipeline/PipelineOrchestrator.js +216 -0
- package/dist/core/pipeline/PipelineOrchestrator.js.map +1 -0
- package/dist/core/pipeline/index.d.ts +1 -0
- package/dist/core/pipeline/index.d.ts.map +1 -0
- package/dist/core/pipeline/index.js +2 -0
- package/dist/core/pipeline/index.js.map +1 -0
- package/dist/extractors/BaseExtractor.d.ts +33 -0
- package/dist/extractors/BaseExtractor.d.ts.map +1 -0
- package/dist/extractors/BaseExtractor.js +68 -0
- package/dist/extractors/BaseExtractor.js.map +1 -0
- package/dist/extractors/ExtractorFactory.d.ts +35 -0
- package/dist/extractors/ExtractorFactory.d.ts.map +1 -0
- package/dist/extractors/ExtractorFactory.js +88 -0
- package/dist/extractors/ExtractorFactory.js.map +1 -0
- package/dist/extractors/documentation/index.d.ts +1 -0
- package/dist/extractors/documentation/index.d.ts.map +1 -0
- package/dist/extractors/documentation/index.js +2 -0
- package/dist/extractors/documentation/index.js.map +1 -0
- package/dist/extractors/index.d.ts +1 -0
- package/dist/extractors/index.d.ts.map +1 -0
- package/dist/extractors/index.js +2 -0
- package/dist/extractors/index.js.map +1 -0
- package/dist/extractors/typescript/ExamplesExtractor.d.ts +32 -0
- package/dist/extractors/typescript/ExamplesExtractor.d.ts.map +1 -0
- package/dist/extractors/typescript/ExamplesExtractor.js +209 -0
- package/dist/extractors/typescript/ExamplesExtractor.js.map +1 -0
- package/dist/extractors/typescript/InheritanceExtractor.d.ts +45 -0
- package/dist/extractors/typescript/InheritanceExtractor.d.ts.map +1 -0
- package/dist/extractors/typescript/InheritanceExtractor.js +368 -0
- package/dist/extractors/typescript/InheritanceExtractor.js.map +1 -0
- package/dist/extractors/typescript/LocalTypesExtractor.d.ts +20 -0
- package/dist/extractors/typescript/LocalTypesExtractor.d.ts.map +1 -0
- package/dist/extractors/typescript/LocalTypesExtractor.js +100 -0
- package/dist/extractors/typescript/LocalTypesExtractor.js.map +1 -0
- package/dist/extractors/typescript/PropsExtractor.d.ts +142 -0
- package/dist/extractors/typescript/PropsExtractor.d.ts.map +1 -0
- package/dist/extractors/typescript/PropsExtractor.js +709 -0
- package/dist/extractors/typescript/PropsExtractor.js.map +1 -0
- package/dist/extractors/typescript/TypeScriptBaseExtractor.d.ts +74 -0
- package/dist/extractors/typescript/TypeScriptBaseExtractor.d.ts.map +1 -0
- package/dist/extractors/typescript/TypeScriptBaseExtractor.js +249 -0
- package/dist/extractors/typescript/TypeScriptBaseExtractor.js.map +1 -0
- package/dist/extractors/typescript/index.d.ts +1 -0
- package/dist/extractors/typescript/index.d.ts.map +1 -0
- package/dist/extractors/typescript/index.js +2 -0
- package/dist/extractors/typescript/index.js.map +1 -0
- package/dist/extractors/variants/TailwindVariantsParser.d.ts +16 -0
- package/dist/extractors/variants/TailwindVariantsParser.d.ts.map +1 -0
- package/dist/extractors/variants/TailwindVariantsParser.js +53 -0
- package/dist/extractors/variants/TailwindVariantsParser.js.map +1 -0
- package/dist/extractors/variants/VariantsExtractor.d.ts +45 -0
- package/dist/extractors/variants/VariantsExtractor.d.ts.map +1 -0
- package/dist/extractors/variants/VariantsExtractor.js +340 -0
- package/dist/extractors/variants/VariantsExtractor.js.map +1 -0
- package/dist/extractors/variants/index.d.ts +2 -0
- package/dist/extractors/variants/index.d.ts.map +1 -0
- package/dist/extractors/variants/index.js +2 -0
- package/dist/extractors/variants/index.js.map +1 -0
- package/dist/generators/api/APIFileGenerator.d.ts +32 -0
- package/dist/generators/api/APIFileGenerator.d.ts.map +1 -0
- package/dist/generators/api/APIFileGenerator.js +450 -0
- package/dist/generators/api/APIFileGenerator.js.map +1 -0
- package/dist/generators/api/TypeDefinitionGenerator.d.ts +1 -0
- package/dist/generators/api/TypeDefinitionGenerator.d.ts.map +1 -0
- package/dist/generators/api/TypeDefinitionGenerator.js +2 -0
- package/dist/generators/api/TypeDefinitionGenerator.js.map +1 -0
- package/dist/generators/api/index.d.ts +2 -0
- package/dist/generators/api/index.d.ts.map +1 -0
- package/dist/generators/api/index.js +2 -0
- package/dist/generators/api/index.js.map +1 -0
- package/dist/generators/index.d.ts +5 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +4 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/llm/LLMDocumentationGenerator.d.ts +34 -0
- package/dist/generators/llm/LLMDocumentationGenerator.d.ts.map +1 -0
- package/dist/generators/llm/LLMDocumentationGenerator.js +480 -0
- package/dist/generators/llm/LLMDocumentationGenerator.js.map +1 -0
- package/dist/generators/llm/LLMFormatter.d.ts +4 -0
- package/dist/generators/llm/LLMFormatter.d.ts.map +1 -0
- package/dist/generators/llm/LLMFormatter.js +8 -0
- package/dist/generators/llm/LLMFormatter.js.map +1 -0
- package/dist/generators/llm/LlmsFullAssembler.d.ts +20 -0
- package/dist/generators/llm/LlmsFullAssembler.d.ts.map +1 -0
- package/dist/generators/llm/LlmsFullAssembler.js +63 -0
- package/dist/generators/llm/LlmsFullAssembler.js.map +1 -0
- package/dist/generators/llm/index.d.ts +1 -0
- package/dist/generators/llm/index.d.ts.map +1 -0
- package/dist/generators/llm/index.js +2 -0
- package/dist/generators/llm/index.js.map +1 -0
- package/dist/generators/mcp/MCPCatalogAssembler.d.ts +27 -0
- package/dist/generators/mcp/MCPCatalogAssembler.d.ts.map +1 -0
- package/dist/generators/mcp/MCPCatalogAssembler.js +147 -0
- package/dist/generators/mcp/MCPCatalogAssembler.js.map +1 -0
- package/dist/generators/mcp/MCPCatalogGenerator.d.ts +55 -0
- package/dist/generators/mcp/MCPCatalogGenerator.d.ts.map +1 -0
- package/dist/generators/mcp/MCPCatalogGenerator.js +153 -0
- package/dist/generators/mcp/MCPCatalogGenerator.js.map +1 -0
- package/dist/generators/svelte/PageGenerator.d.ts +82 -0
- package/dist/generators/svelte/PageGenerator.d.ts.map +1 -0
- package/dist/generators/svelte/PageGenerator.js +557 -0
- package/dist/generators/svelte/PageGenerator.js.map +1 -0
- package/dist/generators/svelte/PlaygroundPresets.d.ts +2 -0
- package/dist/generators/svelte/PlaygroundPresets.d.ts.map +1 -0
- package/dist/generators/svelte/PlaygroundPresets.js +4 -0
- package/dist/generators/svelte/PlaygroundPresets.js.map +1 -0
- package/dist/generators/svelte/SectionMerger.d.ts +38 -0
- package/dist/generators/svelte/SectionMerger.d.ts.map +1 -0
- package/dist/generators/svelte/SectionMerger.js +154 -0
- package/dist/generators/svelte/SectionMerger.js.map +1 -0
- package/dist/generators/svelte/TemplateEngine.d.ts +91 -0
- package/dist/generators/svelte/TemplateEngine.d.ts.map +1 -0
- package/dist/generators/svelte/TemplateEngine.js +500 -0
- package/dist/generators/svelte/TemplateEngine.js.map +1 -0
- package/dist/generators/svelte/index.d.ts +8 -0
- package/dist/generators/svelte/index.d.ts.map +1 -0
- package/dist/generators/svelte/index.js +11 -0
- package/dist/generators/svelte/index.js.map +1 -0
- package/dist/generators/svelte/renderers/ApiRenderer.d.ts +17 -0
- package/dist/generators/svelte/renderers/ApiRenderer.d.ts.map +1 -0
- package/dist/generators/svelte/renderers/ApiRenderer.js +44 -0
- package/dist/generators/svelte/renderers/ApiRenderer.js.map +1 -0
- package/dist/generators/svelte/renderers/ExampleRenderer.d.ts +33 -0
- package/dist/generators/svelte/renderers/ExampleRenderer.d.ts.map +1 -0
- package/dist/generators/svelte/renderers/ExampleRenderer.js +137 -0
- package/dist/generators/svelte/renderers/ExampleRenderer.js.map +1 -0
- package/dist/generators/svelte/renderers/OverviewRenderer.d.ts +9 -0
- package/dist/generators/svelte/renderers/OverviewRenderer.d.ts.map +1 -0
- package/dist/generators/svelte/renderers/OverviewRenderer.js +45 -0
- package/dist/generators/svelte/renderers/OverviewRenderer.js.map +1 -0
- package/dist/generators/svelte/renderers/PlaygroundRenderer.d.ts +35 -0
- package/dist/generators/svelte/renderers/PlaygroundRenderer.d.ts.map +1 -0
- package/dist/generators/svelte/renderers/PlaygroundRenderer.js +319 -0
- package/dist/generators/svelte/renderers/PlaygroundRenderer.js.map +1 -0
- package/dist/generators/svelte/renderers/TypesRenderer.d.ts +9 -0
- package/dist/generators/svelte/renderers/TypesRenderer.d.ts.map +1 -0
- package/dist/generators/svelte/renderers/TypesRenderer.js +23 -0
- package/dist/generators/svelte/renderers/TypesRenderer.js.map +1 -0
- package/dist/generators/svelte/renderers/UsageRenderer.d.ts +14 -0
- package/dist/generators/svelte/renderers/UsageRenderer.d.ts.map +1 -0
- package/dist/generators/svelte/renderers/UsageRenderer.js +91 -0
- package/dist/generators/svelte/renderers/UsageRenderer.js.map +1 -0
- package/dist/generators/svelte/renderers/VariantsRenderer.d.ts +43 -0
- package/dist/generators/svelte/renderers/VariantsRenderer.d.ts.map +1 -0
- package/dist/generators/svelte/renderers/VariantsRenderer.js +277 -0
- package/dist/generators/svelte/renderers/VariantsRenderer.js.map +1 -0
- package/dist/generators/svelte/renderers/index.d.ts +8 -0
- package/dist/generators/svelte/renderers/index.d.ts.map +1 -0
- package/dist/generators/svelte/renderers/index.js +8 -0
- package/dist/generators/svelte/renderers/index.js.map +1 -0
- package/dist/generators/svelte/types.d.ts +13 -0
- package/dist/generators/svelte/types.d.ts.map +1 -0
- package/dist/generators/svelte/types.js +2 -0
- package/dist/generators/svelte/types.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/SvelteDocsParser.d.ts +44 -0
- package/dist/parsers/SvelteDocsParser.d.ts.map +1 -0
- package/dist/parsers/SvelteDocsParser.js +141 -0
- package/dist/parsers/SvelteDocsParser.js.map +1 -0
- package/dist/parsers/index.d.ts +2 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +6 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/schema/ConfigurationBuilder.d.ts +55 -0
- package/dist/schema/ConfigurationBuilder.d.ts.map +1 -0
- package/dist/schema/ConfigurationBuilder.js +447 -0
- package/dist/schema/ConfigurationBuilder.js.map +1 -0
- package/dist/schema/index.d.ts +1 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +2 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/configuration.d.ts +255 -0
- package/dist/types/configuration.d.ts.map +1 -0
- package/dist/types/configuration.js +2 -0
- package/dist/types/configuration.js.map +1 -0
- package/dist/types/core.d.ts +96 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/core.js +2 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/docs-config.d.ts +5 -0
- package/dist/types/docs-config.d.ts.map +1 -0
- package/dist/types/docs-config.js +51 -0
- package/dist/types/docs-config.js.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +9 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/validation.d.ts +321 -0
- package/dist/types/validation.d.ts.map +1 -0
- package/dist/types/validation.js +2 -0
- package/dist/types/validation.js.map +1 -0
- package/dist/utils/DeploymentManager.d.ts +80 -0
- package/dist/utils/DeploymentManager.d.ts.map +1 -0
- package/dist/utils/DeploymentManager.js +360 -0
- package/dist/utils/DeploymentManager.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized error handling for the documentation pipeline
|
|
3
|
+
*/
|
|
4
|
+
export class ErrorHandler {
|
|
5
|
+
options;
|
|
6
|
+
errors = [];
|
|
7
|
+
warnings = [];
|
|
8
|
+
context = {};
|
|
9
|
+
constructor(options = {}) {
|
|
10
|
+
this.options = options;
|
|
11
|
+
this.options = {
|
|
12
|
+
failFast: false,
|
|
13
|
+
maxErrors: 100,
|
|
14
|
+
logLevel: 'info',
|
|
15
|
+
...options
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
// ==========================================
|
|
19
|
+
// ERROR REPORTING
|
|
20
|
+
// ==========================================
|
|
21
|
+
/**
|
|
22
|
+
* Report an error during pipeline execution
|
|
23
|
+
*/
|
|
24
|
+
reportError(error) {
|
|
25
|
+
this.errors.push({
|
|
26
|
+
...error,
|
|
27
|
+
timestamp: new Date().toISOString(),
|
|
28
|
+
context: { ...this.context }
|
|
29
|
+
});
|
|
30
|
+
this.logError(error);
|
|
31
|
+
// Check if we should fail fast
|
|
32
|
+
if (this.options.failFast) {
|
|
33
|
+
throw new PipelineException(error.message, error);
|
|
34
|
+
}
|
|
35
|
+
// Check if we've exceeded max errors
|
|
36
|
+
if (this.errors.length >= this.options.maxErrors) {
|
|
37
|
+
throw new PipelineException(`Maximum error count exceeded (${this.options.maxErrors})`, this.errors[this.errors.length - 1]);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Report a warning during pipeline execution
|
|
42
|
+
*/
|
|
43
|
+
reportWarning(warning) {
|
|
44
|
+
this.warnings.push({
|
|
45
|
+
...warning,
|
|
46
|
+
timestamp: new Date().toISOString(),
|
|
47
|
+
context: { ...this.context }
|
|
48
|
+
});
|
|
49
|
+
this.logWarning(warning);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Convert extraction errors to pipeline errors
|
|
53
|
+
*/
|
|
54
|
+
handleExtractionError(extractionError, component, phase) {
|
|
55
|
+
const pipelineError = {
|
|
56
|
+
type: 'extraction_error',
|
|
57
|
+
message: extractionError.message,
|
|
58
|
+
originalError: extractionError,
|
|
59
|
+
severity: 'error',
|
|
60
|
+
recoverable: true
|
|
61
|
+
};
|
|
62
|
+
if (phase)
|
|
63
|
+
pipelineError.phase = phase;
|
|
64
|
+
else
|
|
65
|
+
pipelineError.phase = 'extraction';
|
|
66
|
+
if (component?.name)
|
|
67
|
+
pipelineError.component = component.name;
|
|
68
|
+
if (extractionError.location)
|
|
69
|
+
pipelineError.location = extractionError.location;
|
|
70
|
+
this.reportError(pipelineError);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Convert extraction warnings to pipeline warnings
|
|
74
|
+
*/
|
|
75
|
+
handleExtractionWarning(extractionWarning, component, phase) {
|
|
76
|
+
const pipelineWarning = {
|
|
77
|
+
type: 'extraction_warning',
|
|
78
|
+
message: extractionWarning.message,
|
|
79
|
+
severity: 'warning'
|
|
80
|
+
};
|
|
81
|
+
if (phase)
|
|
82
|
+
pipelineWarning.phase = phase;
|
|
83
|
+
else
|
|
84
|
+
pipelineWarning.phase = 'extraction';
|
|
85
|
+
if (component?.name)
|
|
86
|
+
pipelineWarning.component = component.name;
|
|
87
|
+
if (extractionWarning.suggestion)
|
|
88
|
+
pipelineWarning.suggestion = extractionWarning.suggestion;
|
|
89
|
+
this.reportWarning(pipelineWarning);
|
|
90
|
+
}
|
|
91
|
+
// ==========================================
|
|
92
|
+
// CONTEXT MANAGEMENT
|
|
93
|
+
// ==========================================
|
|
94
|
+
/**
|
|
95
|
+
* Set context for error reporting
|
|
96
|
+
*/
|
|
97
|
+
setContext(context) {
|
|
98
|
+
this.context = { ...this.context, ...context };
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Clear context
|
|
102
|
+
*/
|
|
103
|
+
clearContext() {
|
|
104
|
+
this.context = {};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Execute code with temporary context
|
|
108
|
+
*/
|
|
109
|
+
async withContext(context, fn) {
|
|
110
|
+
const previousContext = { ...this.context };
|
|
111
|
+
this.setContext(context);
|
|
112
|
+
try {
|
|
113
|
+
return await fn();
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
this.context = previousContext;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// ==========================================
|
|
120
|
+
// ERROR RECOVERY
|
|
121
|
+
// ==========================================
|
|
122
|
+
async attemptRecovery(_error) {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
// ==========================================
|
|
126
|
+
// REPORTING & SUMMARY
|
|
127
|
+
// ==========================================
|
|
128
|
+
/**
|
|
129
|
+
* Get error summary
|
|
130
|
+
*/
|
|
131
|
+
getSummary() {
|
|
132
|
+
const errorsByType = this.groupErrorsByType();
|
|
133
|
+
const errorsByComponent = this.groupErrorsByComponent();
|
|
134
|
+
const errorsByPhase = this.groupErrorsByPhase();
|
|
135
|
+
return {
|
|
136
|
+
totalErrors: this.errors.length,
|
|
137
|
+
totalWarnings: this.warnings.length,
|
|
138
|
+
criticalErrors: this.errors.filter((e) => e.severity === 'critical').length,
|
|
139
|
+
recoverableErrors: this.errors.filter((e) => e.recoverable).length,
|
|
140
|
+
errorsByType,
|
|
141
|
+
errorsByComponent,
|
|
142
|
+
errorsByPhase,
|
|
143
|
+
hasBlockingErrors: this.errors.some((e) => e.severity === 'critical' || !e.recoverable)
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Check if pipeline can continue
|
|
148
|
+
*/
|
|
149
|
+
canContinue() {
|
|
150
|
+
const summary = this.getSummary();
|
|
151
|
+
return !summary.hasBlockingErrors;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Generate detailed error report
|
|
155
|
+
*/
|
|
156
|
+
generateReport() {
|
|
157
|
+
const summary = this.getSummary();
|
|
158
|
+
const lines = [];
|
|
159
|
+
lines.push('📊 Pipeline Error Report');
|
|
160
|
+
lines.push('========================');
|
|
161
|
+
lines.push('');
|
|
162
|
+
if (summary.totalErrors === 0 && summary.totalWarnings === 0) {
|
|
163
|
+
lines.push('✅ No errors or warnings reported');
|
|
164
|
+
return lines.join('\n');
|
|
165
|
+
}
|
|
166
|
+
lines.push(`📊 Summary:`);
|
|
167
|
+
lines.push(` • Errors: ${summary.totalErrors} (${summary.criticalErrors} critical)`);
|
|
168
|
+
lines.push(` • Warnings: ${summary.totalWarnings}`);
|
|
169
|
+
lines.push(` • Recoverable: ${summary.recoverableErrors}`);
|
|
170
|
+
lines.push('');
|
|
171
|
+
if (summary.totalErrors > 0) {
|
|
172
|
+
lines.push('❌ Errors by Type:');
|
|
173
|
+
Object.entries(summary.errorsByType).forEach(([type, count]) => {
|
|
174
|
+
lines.push(` • ${type}: ${count}`);
|
|
175
|
+
});
|
|
176
|
+
lines.push('');
|
|
177
|
+
lines.push('❌ Errors by Component:');
|
|
178
|
+
Object.entries(summary.errorsByComponent).forEach(([component, count]) => {
|
|
179
|
+
lines.push(` • ${component || 'unknown'}: ${count}`);
|
|
180
|
+
});
|
|
181
|
+
lines.push('');
|
|
182
|
+
lines.push('❌ Recent Errors:');
|
|
183
|
+
this.errors.slice(-5).forEach((error) => {
|
|
184
|
+
lines.push(` • [${error.phase}] ${error.component || 'unknown'}: ${error.message}`);
|
|
185
|
+
});
|
|
186
|
+
lines.push('');
|
|
187
|
+
}
|
|
188
|
+
if (summary.totalWarnings > 0) {
|
|
189
|
+
lines.push('⚠️ Recent Warnings:');
|
|
190
|
+
this.warnings.slice(-5).forEach((warning) => {
|
|
191
|
+
lines.push(` • [${warning.phase}] ${warning.component || 'unknown'}: ${warning.message}`);
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
return lines.join('\n');
|
|
195
|
+
}
|
|
196
|
+
// ==========================================
|
|
197
|
+
// PRIVATE METHODS
|
|
198
|
+
// ==========================================
|
|
199
|
+
logError(error) {
|
|
200
|
+
const prefix = error.component ? `[${error.component}]` : '[Pipeline]';
|
|
201
|
+
const phaseInfo = error.phase ? ` (${error.phase})` : '';
|
|
202
|
+
console.error(`❌ ${prefix}${phaseInfo} ${error.message}`);
|
|
203
|
+
if (error.location && this.options.logLevel === 'debug') {
|
|
204
|
+
console.error(` 📍 ${error.location.file}:${error.location.line}:${error.location.column}`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
logWarning(warning) {
|
|
208
|
+
const prefix = warning.component ? `[${warning.component}]` : '[Pipeline]';
|
|
209
|
+
const phaseInfo = warning.phase ? ` (${warning.phase})` : '';
|
|
210
|
+
console.warn(`⚠️ ${prefix}${phaseInfo} ${warning.message}`);
|
|
211
|
+
if (warning.suggestion && this.options.logLevel !== 'error') {
|
|
212
|
+
console.warn(` 💡 ${warning.suggestion}`);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
groupErrorsByType() {
|
|
216
|
+
const groups = {};
|
|
217
|
+
this.errors.forEach((error) => {
|
|
218
|
+
groups[error.type] = (groups[error.type] || 0) + 1;
|
|
219
|
+
});
|
|
220
|
+
return groups;
|
|
221
|
+
}
|
|
222
|
+
groupErrorsByComponent() {
|
|
223
|
+
const groups = {};
|
|
224
|
+
this.errors.forEach((error) => {
|
|
225
|
+
const component = error.component || 'unknown';
|
|
226
|
+
groups[component] = (groups[component] || 0) + 1;
|
|
227
|
+
});
|
|
228
|
+
return groups;
|
|
229
|
+
}
|
|
230
|
+
groupErrorsByPhase() {
|
|
231
|
+
const groups = {};
|
|
232
|
+
this.errors.forEach((error) => {
|
|
233
|
+
const phase = error.phase || 'unknown';
|
|
234
|
+
groups[phase] = (groups[phase] || 0) + 1;
|
|
235
|
+
});
|
|
236
|
+
return groups;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Reset error state (useful for watch mode)
|
|
240
|
+
*/
|
|
241
|
+
reset() {
|
|
242
|
+
this.errors = [];
|
|
243
|
+
this.warnings = [];
|
|
244
|
+
this.context = {};
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Custom exception for pipeline failures
|
|
249
|
+
*/
|
|
250
|
+
export class PipelineException extends Error {
|
|
251
|
+
pipelineError;
|
|
252
|
+
constructor(message, pipelineError) {
|
|
253
|
+
super(message);
|
|
254
|
+
this.pipelineError = pipelineError;
|
|
255
|
+
this.name = 'PipelineException';
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// ==========================================
|
|
259
|
+
// UTILITY FUNCTIONS
|
|
260
|
+
// ==========================================
|
|
261
|
+
/**
|
|
262
|
+
* Create a standard pipeline error
|
|
263
|
+
*/
|
|
264
|
+
export function createError(type, message, options = {}) {
|
|
265
|
+
return {
|
|
266
|
+
type,
|
|
267
|
+
message,
|
|
268
|
+
severity: 'error',
|
|
269
|
+
recoverable: true,
|
|
270
|
+
...options
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Create a standard pipeline warning
|
|
275
|
+
*/
|
|
276
|
+
export function createWarning(type, message, options = {}) {
|
|
277
|
+
return {
|
|
278
|
+
type,
|
|
279
|
+
message,
|
|
280
|
+
severity: 'warning',
|
|
281
|
+
...options
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Wrap async operations with error handling
|
|
286
|
+
*/
|
|
287
|
+
export async function withErrorHandling(operation, errorHandler, context = {}) {
|
|
288
|
+
return errorHandler.withContext(context, async () => {
|
|
289
|
+
try {
|
|
290
|
+
return await operation();
|
|
291
|
+
}
|
|
292
|
+
catch (error) {
|
|
293
|
+
const opts = { originalError: error, recoverable: true };
|
|
294
|
+
if (context.phase)
|
|
295
|
+
opts.phase = context.phase;
|
|
296
|
+
if (context.packageName)
|
|
297
|
+
opts.component = context.packageName;
|
|
298
|
+
const pipelineError = createError('operation_failed', error instanceof Error ? error.message : String(error), opts);
|
|
299
|
+
errorHandler.reportError(pipelineError);
|
|
300
|
+
// Try to recover
|
|
301
|
+
const recovered = await errorHandler.attemptRecovery(pipelineError);
|
|
302
|
+
if (!recovered) {
|
|
303
|
+
return null;
|
|
304
|
+
}
|
|
305
|
+
// Retry if recovery succeeded
|
|
306
|
+
try {
|
|
307
|
+
return await operation();
|
|
308
|
+
}
|
|
309
|
+
catch (retryError) {
|
|
310
|
+
const retryOpts = { recoverable: false };
|
|
311
|
+
if (context.phase)
|
|
312
|
+
retryOpts.phase = context.phase;
|
|
313
|
+
if (context.packageName)
|
|
314
|
+
retryOpts.component = context.packageName;
|
|
315
|
+
errorHandler.reportError(createError('recovery_retry_failed', `Retry after recovery failed: ${retryError instanceof Error ? retryError.message : String(retryError)}`, retryOpts));
|
|
316
|
+
return null;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
//# sourceMappingURL=ErrorHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorHandler.js","sourceRoot":"","sources":["../../../src/core/pipeline/ErrorHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { GenerationResult, GeneratorConfig } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Main orchestrator for the documentation generation pipeline.
|
|
4
|
+
* Coordinates all phases: Discovery → Extraction → Enrichment → Generation
|
|
5
|
+
*/
|
|
6
|
+
export declare class PipelineOrchestrator {
|
|
7
|
+
private config;
|
|
8
|
+
private startTime;
|
|
9
|
+
private errorHandler;
|
|
10
|
+
constructor(config: GeneratorConfig);
|
|
11
|
+
/**
|
|
12
|
+
* Execute the complete documentation generation pipeline
|
|
13
|
+
*/
|
|
14
|
+
execute(): Promise<GenerationResult>;
|
|
15
|
+
/**
|
|
16
|
+
* Phase 1: Discovery - Find all components and their files
|
|
17
|
+
*/
|
|
18
|
+
private discoveryPhase;
|
|
19
|
+
/**
|
|
20
|
+
* Phase 2: Extraction - Extract props, variants, inheritance, docs
|
|
21
|
+
*/
|
|
22
|
+
private extractionPhase;
|
|
23
|
+
/**
|
|
24
|
+
* Phase 3: Enrichment - Add cross-references, validate examples, generate API data
|
|
25
|
+
*/
|
|
26
|
+
private enrichmentPhase;
|
|
27
|
+
/**
|
|
28
|
+
* Phase 4: Generation - Generate API file, then LLM docs
|
|
29
|
+
* CRITICAL: API must be generated FIRST, then consumed by LLM
|
|
30
|
+
*/
|
|
31
|
+
private generationPhase;
|
|
32
|
+
/**
|
|
33
|
+
* Create error result for failed pipeline execution
|
|
34
|
+
*/
|
|
35
|
+
private createErrorResult;
|
|
36
|
+
/**
|
|
37
|
+
* Get current configuration
|
|
38
|
+
*/
|
|
39
|
+
getConfig(): GeneratorConfig;
|
|
40
|
+
/**
|
|
41
|
+
* Update configuration (useful for watch mode)
|
|
42
|
+
*/
|
|
43
|
+
updateConfig(newConfig: GeneratorConfig): void;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=PipelineOrchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PipelineOrchestrator.d.ts","sourceRoot":"","sources":["../../../src/core/pipeline/PipelineOrchestrator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAIV,gBAAgB,EAChB,eAAe,EAChB,MAAM,aAAa,CAAC;AASrB;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,YAAY,CAAe;gBAEvB,MAAM,EAAE,eAAe;IASnC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAwF1C;;OAEG;YACW,cAAc;IAqC5B;;OAEG;YACW,eAAe;IAuB7B;;OAEG;YACW,eAAe;IAyC7B;;;OAGG;YACW,eAAe;IA2B7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqBzB;;OAEG;IACH,SAAS,IAAI,eAAe;IAI5B;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;CAG/C"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { ErrorHandler, ExtractionCoordinator, GenerationCoordinator, PipelineException, withErrorHandling } from '..';
|
|
2
|
+
/**
|
|
3
|
+
* Main orchestrator for the documentation generation pipeline.
|
|
4
|
+
* Coordinates all phases: Discovery → Extraction → Enrichment → Generation
|
|
5
|
+
*/
|
|
6
|
+
export class PipelineOrchestrator {
|
|
7
|
+
config;
|
|
8
|
+
startTime = 0;
|
|
9
|
+
errorHandler;
|
|
10
|
+
constructor(config) {
|
|
11
|
+
this.config = config;
|
|
12
|
+
this.errorHandler = new ErrorHandler({
|
|
13
|
+
failFast: !config.processing?.parallel?.enabled,
|
|
14
|
+
maxErrors: 50,
|
|
15
|
+
logLevel: config.debug?.level || 'info'
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Execute the complete documentation generation pipeline
|
|
20
|
+
*/
|
|
21
|
+
async execute() {
|
|
22
|
+
this.startTime = Date.now();
|
|
23
|
+
this.errorHandler.reset();
|
|
24
|
+
try {
|
|
25
|
+
console.log('🚀 Starting documentation generation pipeline...');
|
|
26
|
+
// Phase 1: Discovery
|
|
27
|
+
const manifests = await withErrorHandling(() => this.discoveryPhase(), this.errorHandler, {
|
|
28
|
+
phase: 'discovery'
|
|
29
|
+
});
|
|
30
|
+
if (!manifests || manifests.length === 0) {
|
|
31
|
+
throw new PipelineException('No components discovered');
|
|
32
|
+
}
|
|
33
|
+
// Phase 2: Extraction
|
|
34
|
+
const richComponents = await withErrorHandling(() => this.extractionPhase(manifests), this.errorHandler, { phase: 'extraction' });
|
|
35
|
+
if (!richComponents) {
|
|
36
|
+
throw new PipelineException('Component extraction failed');
|
|
37
|
+
}
|
|
38
|
+
// Phase 3: Enrichment
|
|
39
|
+
const enrichmentResult = await withErrorHandling(() => this.enrichmentPhase(richComponents), this.errorHandler, { phase: 'enrichment' });
|
|
40
|
+
if (!enrichmentResult) {
|
|
41
|
+
throw new PipelineException('Component enrichment failed');
|
|
42
|
+
}
|
|
43
|
+
// Phase 4: Generation (API first, then others)
|
|
44
|
+
const result = await withErrorHandling(() => this.generationPhase(enrichmentResult.enrichedComponents, enrichmentResult.apiData), this.errorHandler, { phase: 'generation' });
|
|
45
|
+
if (!result) {
|
|
46
|
+
throw new PipelineException('Documentation generation failed');
|
|
47
|
+
}
|
|
48
|
+
// Check if we can continue despite errors
|
|
49
|
+
if (!this.errorHandler.canContinue()) {
|
|
50
|
+
console.error('❌ Pipeline completed with blocking errors');
|
|
51
|
+
console.error(this.errorHandler.generateReport());
|
|
52
|
+
return this.createErrorResult(new Error('Pipeline had blocking errors'));
|
|
53
|
+
}
|
|
54
|
+
const summary = this.errorHandler.getSummary();
|
|
55
|
+
if (summary.totalErrors > 0 || summary.totalWarnings > 0) {
|
|
56
|
+
console.warn(`⚠️ Pipeline completed with ${summary.totalErrors} errors and ${summary.totalWarnings} warnings`);
|
|
57
|
+
if (this.config.debug?.enabled) {
|
|
58
|
+
console.warn(this.errorHandler.generateReport());
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
console.log('✅ Pipeline completed successfully');
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
...result,
|
|
66
|
+
errors: result.errors.concat(summary.totalErrors > 0
|
|
67
|
+
? [
|
|
68
|
+
{
|
|
69
|
+
type: 'pipeline_warnings',
|
|
70
|
+
message: `Pipeline completed with ${summary.totalErrors} errors and ${summary.totalWarnings} warnings`
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
: [])
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
console.error('❌ Pipeline failed:', error);
|
|
78
|
+
console.error(this.errorHandler.generateReport());
|
|
79
|
+
return this.createErrorResult(error);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Phase 1: Discovery - Find all components and their files
|
|
84
|
+
*/
|
|
85
|
+
async discoveryPhase() {
|
|
86
|
+
console.log('📍 Phase 1: Discovery');
|
|
87
|
+
const { ComponentFinder } = await import('../discovery/ComponentFinder');
|
|
88
|
+
const componentFinder = new ComponentFinder();
|
|
89
|
+
const allManifests = [];
|
|
90
|
+
for (const packageConfig of this.config.input.packages) {
|
|
91
|
+
console.log(` 📦 Processing package: ${packageConfig.name}`);
|
|
92
|
+
try {
|
|
93
|
+
const manifests = await componentFinder.findComponents(packageConfig);
|
|
94
|
+
allManifests.push(...manifests);
|
|
95
|
+
console.log(` ✅ Found ${manifests.length} components in ${packageConfig.name}`);
|
|
96
|
+
// Validate each manifest
|
|
97
|
+
for (const manifest of manifests) {
|
|
98
|
+
const validation = await componentFinder.validateManifest(manifest);
|
|
99
|
+
if (!validation.success) {
|
|
100
|
+
console.warn(` ⚠️ Validation issues for ${manifest.component.name}:`, validation.errors.map((e) => e.message).join(', '));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
console.error(` ❌ Failed to process package ${packageConfig.name}:`, error);
|
|
106
|
+
// Continue with other packages
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
console.log(` 📊 Discovery complete: ${allManifests.length} total components`);
|
|
110
|
+
return allManifests;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Phase 2: Extraction - Extract props, variants, inheritance, docs
|
|
114
|
+
*/
|
|
115
|
+
async extractionPhase(manifests) {
|
|
116
|
+
console.log('📍 Phase 2: Extraction');
|
|
117
|
+
const extractionCoordinator = new ExtractionCoordinator(this.config.processing, this.errorHandler);
|
|
118
|
+
const richComponents = await extractionCoordinator.extractAllComponents(manifests);
|
|
119
|
+
// Display statistics
|
|
120
|
+
const stats = extractionCoordinator.generateExtractionStats(richComponents);
|
|
121
|
+
console.log(` 📊 Extraction statistics:`);
|
|
122
|
+
console.log(` Components: ${stats.totalComponents}`);
|
|
123
|
+
console.log(` Props: ${stats.totalProps} (avg: ${stats.averagePropsPerComponent}/component)`);
|
|
124
|
+
console.log(` Variants: ${stats.totalVariants}`);
|
|
125
|
+
console.log(` With Documentation: ${stats.componentsWithDocumentation}`);
|
|
126
|
+
return richComponents;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Phase 3: Enrichment - Add cross-references, validate examples, generate API data
|
|
130
|
+
*/
|
|
131
|
+
async enrichmentPhase(richComponents) {
|
|
132
|
+
console.log('📍 Phase 3: Enrichment');
|
|
133
|
+
// Could be moved into EnrichmentCoordinator, but it is already fairly clean
|
|
134
|
+
const { APIDataGenerator } = await import('../enrichment/APIDataGenerator');
|
|
135
|
+
// Create enriched components with basic stats for now
|
|
136
|
+
const enrichedComponents = richComponents.map((component) => ({
|
|
137
|
+
...component,
|
|
138
|
+
crossReferences: [],
|
|
139
|
+
examples: [],
|
|
140
|
+
stats: {
|
|
141
|
+
totalProps: component.props.length,
|
|
142
|
+
directProps: component.props.filter((p) => p.source.type === 'direct').length,
|
|
143
|
+
variantProps: component.variants.length,
|
|
144
|
+
inheritedProps: component.props.filter((p) => p.source.type === 'inherited').length
|
|
145
|
+
}
|
|
146
|
+
}));
|
|
147
|
+
// Generate API data using APIDataGenerator
|
|
148
|
+
console.log(' 📊 Generating API data...');
|
|
149
|
+
const apiDataGenerator = new APIDataGenerator();
|
|
150
|
+
const apiData = await apiDataGenerator.generate(richComponents, {
|
|
151
|
+
routeBasePath: '/components'
|
|
152
|
+
});
|
|
153
|
+
console.log(` ✅ Enrichment complete: ${enrichedComponents.length} components, ${apiData.metadata.totalProps} total props`);
|
|
154
|
+
// Harmonize stats: prefer API data (single source of truth)
|
|
155
|
+
const enrichedWithApiStats = enrichedComponents.map((c) => {
|
|
156
|
+
const api = apiData.components[c.name];
|
|
157
|
+
return api ? { ...c, stats: api.stats } : c;
|
|
158
|
+
});
|
|
159
|
+
return { enrichedComponents: enrichedWithApiStats, apiData };
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Phase 4: Generation - Generate API file, then LLM docs
|
|
163
|
+
* CRITICAL: API must be generated FIRST, then consumed by LLM
|
|
164
|
+
*/
|
|
165
|
+
async generationPhase(enrichedComponents, apiData) {
|
|
166
|
+
console.log('📍 Phase 4: Generation');
|
|
167
|
+
// Dedicated coordinator handles the entire generation logic
|
|
168
|
+
const generationCoordinator = new GenerationCoordinator(this.config.output, this.errorHandler);
|
|
169
|
+
// Validate configuration
|
|
170
|
+
const configValidation = generationCoordinator.validateConfiguration();
|
|
171
|
+
if (!configValidation.valid) {
|
|
172
|
+
console.warn('⚠️ Generation configuration issues:', configValidation.errors);
|
|
173
|
+
}
|
|
174
|
+
// Display the generation plan (for debugging)
|
|
175
|
+
const plan = generationCoordinator.getGenerationPlan();
|
|
176
|
+
console.log(` 📋 Generation plan: ${plan.totalOutputs} outputs, ${plan.phases.filter((p) => p.enabled).length} active phases`);
|
|
177
|
+
// Run all generations
|
|
178
|
+
const result = await generationCoordinator.generateAll(enrichedComponents, apiData);
|
|
179
|
+
return result;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Create error result for failed pipeline execution
|
|
183
|
+
*/
|
|
184
|
+
createErrorResult(error) {
|
|
185
|
+
const duration = Date.now() - this.startTime;
|
|
186
|
+
return {
|
|
187
|
+
success: false,
|
|
188
|
+
outputs: [],
|
|
189
|
+
errors: [
|
|
190
|
+
{
|
|
191
|
+
type: 'pipeline_error',
|
|
192
|
+
message: error instanceof Error ? error.message : String(error)
|
|
193
|
+
}
|
|
194
|
+
],
|
|
195
|
+
stats: {
|
|
196
|
+
totalComponents: 0,
|
|
197
|
+
totalProps: 0,
|
|
198
|
+
apiDataSize: 0
|
|
199
|
+
},
|
|
200
|
+
duration
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Get current configuration
|
|
205
|
+
*/
|
|
206
|
+
getConfig() {
|
|
207
|
+
return this.config;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Update configuration (useful for watch mode)
|
|
211
|
+
*/
|
|
212
|
+
updateConfig(newConfig) {
|
|
213
|
+
this.config = newConfig;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=PipelineOrchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PipelineOrchestrator.js","sourceRoot":"","sources":["../../../src/core/pipeline/PipelineOrchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/pipeline/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/pipeline/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ExtractionResult, ExtractionWarning } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Generic base class for all extractors (TypeScript and non-TypeScript)
|
|
4
|
+
*/
|
|
5
|
+
export declare abstract class BaseExtractor<TInput = unknown, TOutput = unknown> {
|
|
6
|
+
protected config: unknown;
|
|
7
|
+
constructor(config?: unknown);
|
|
8
|
+
/**
|
|
9
|
+
* Main extraction method - must be implemented by subclasses
|
|
10
|
+
*/
|
|
11
|
+
abstract extract(input: TInput): Promise<ExtractionResult<TOutput>>;
|
|
12
|
+
/**
|
|
13
|
+
* Validate input before extraction - can be overridden
|
|
14
|
+
*/
|
|
15
|
+
protected validateInput(input: TInput): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Handle extraction errors - can be overridden for custom error handling
|
|
18
|
+
*/
|
|
19
|
+
protected handleError(error: unknown, context?: unknown): ExtractionResult<TOutput>;
|
|
20
|
+
/**
|
|
21
|
+
* Create a successful extraction result
|
|
22
|
+
*/
|
|
23
|
+
protected createSuccessResult(data: TOutput, warnings?: ExtractionWarning[], sourceFile?: string, duration?: number): ExtractionResult<TOutput>;
|
|
24
|
+
/**
|
|
25
|
+
* Add warning to extraction result
|
|
26
|
+
*/
|
|
27
|
+
protected addWarning(type: string, message: string, suggestion?: string): ExtractionWarning;
|
|
28
|
+
/**
|
|
29
|
+
* Clear any caches (useful for watch mode)
|
|
30
|
+
*/
|
|
31
|
+
clearCache(): void;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=BaseExtractor.d.ts.map
|