@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 @@
|
|
|
1
|
+
{"version":3,"file":"BaseExtractor.d.ts","sourceRoot":"","sources":["../../src/extractors/BaseExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAErF;;GAEG;AACH,8BAAsB,aAAa,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IACrE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;gBAEd,MAAM,CAAC,EAAE,OAAO;IAI5B;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEnE;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI/C;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAqBnF;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAC3B,IAAI,EAAE,OAAO,EACb,QAAQ,GAAE,iBAAiB,EAAO,EAClC,UAAU,GAAE,MAAkB,EAC9B,QAAQ,GAAE,MAAU,GACnB,gBAAgB,CAAC,OAAO,CAAC;IAe5B;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,iBAAiB;IAK3F;;OAEG;IACH,UAAU,IAAI,IAAI;CAGnB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic base class for all extractors (TypeScript and non-TypeScript)
|
|
3
|
+
*/
|
|
4
|
+
export class BaseExtractor {
|
|
5
|
+
config;
|
|
6
|
+
constructor(config) {
|
|
7
|
+
this.config = config;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Validate input before extraction - can be overridden
|
|
11
|
+
*/
|
|
12
|
+
validateInput(input) {
|
|
13
|
+
return input !== null && input !== undefined;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Handle extraction errors - can be overridden for custom error handling
|
|
17
|
+
*/
|
|
18
|
+
handleError(error, context) {
|
|
19
|
+
const extractionError = {
|
|
20
|
+
type: 'extraction_failed',
|
|
21
|
+
message: error instanceof Error ? error.message : String(error),
|
|
22
|
+
context
|
|
23
|
+
};
|
|
24
|
+
return {
|
|
25
|
+
success: false,
|
|
26
|
+
data: undefined,
|
|
27
|
+
errors: [extractionError],
|
|
28
|
+
warnings: [],
|
|
29
|
+
metadata: {
|
|
30
|
+
duration: 0,
|
|
31
|
+
extractorVersion: '2.0.0',
|
|
32
|
+
sourceFile: context?.sourceFile || 'unknown',
|
|
33
|
+
timestamp: new Date().toISOString()
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Create a successful extraction result
|
|
39
|
+
*/
|
|
40
|
+
createSuccessResult(data, warnings = [], sourceFile = 'unknown', duration = 0) {
|
|
41
|
+
return {
|
|
42
|
+
success: true,
|
|
43
|
+
data,
|
|
44
|
+
errors: [],
|
|
45
|
+
warnings,
|
|
46
|
+
metadata: {
|
|
47
|
+
duration,
|
|
48
|
+
extractorVersion: '2.0.0',
|
|
49
|
+
sourceFile,
|
|
50
|
+
timestamp: new Date().toISOString()
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Add warning to extraction result
|
|
56
|
+
*/
|
|
57
|
+
addWarning(type, message, suggestion) {
|
|
58
|
+
const warning = { type, message };
|
|
59
|
+
return suggestion ? { ...warning, suggestion } : warning;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Clear any caches (useful for watch mode)
|
|
63
|
+
*/
|
|
64
|
+
clearCache() {
|
|
65
|
+
// Override in subclasses if needed
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=BaseExtractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseExtractor.js","sourceRoot":"","sources":["../../src/extractors/BaseExtractor.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAgB,aAAa;IACvB,MAAM,CAAU;IAE1B,YAAY,MAAgB;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAOD;;OAEG;IACO,aAAa,CAAC,KAAa;QACnC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;IAC/C,CAAC;IAED;;OAEG;IACO,WAAW,CAAC,KAAc,EAAE,OAAiB;QACrD,MAAM,eAAe,GAAoB;YACvC,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC/D,OAAO;SACR,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,SAA+B;YACrC,MAAM,EAAE,CAAC,eAAe,CAAC;YACzB,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE;gBACR,QAAQ,EAAE,CAAC;gBACX,gBAAgB,EAAE,OAAO;gBACzB,UAAU,EAAG,OAA+C,EAAE,UAAU,IAAI,SAAS;gBACrF,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,mBAAmB,CAC3B,IAAa,EACb,WAAgC,EAAE,EAClC,aAAqB,SAAS,EAC9B,WAAmB,CAAC;QAEpB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI;YACJ,MAAM,EAAE,EAAE;YACV,QAAQ;YACR,QAAQ,EAAE;gBACR,QAAQ;gBACR,gBAAgB,EAAE,OAAO;gBACzB,UAAU;gBACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,UAAU,CAAC,IAAY,EAAE,OAAe,EAAE,UAAmB;QACrE,MAAM,OAAO,GAAsB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACrD,OAAO,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,UAAU;QACR,mCAAmC;IACrC,CAAC;CACF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { TypeScriptExtractionConfig } from '../types';
|
|
2
|
+
import type { BaseExtractor } from './BaseExtractor';
|
|
3
|
+
/**
|
|
4
|
+
* Universal factory that manages both TypeScript and non-TypeScript extractors
|
|
5
|
+
*/
|
|
6
|
+
export declare class ExtractorFactory {
|
|
7
|
+
private static instance;
|
|
8
|
+
private extractorCache;
|
|
9
|
+
private tsConfig;
|
|
10
|
+
private constructor();
|
|
11
|
+
static getInstance(tsConfig?: TypeScriptExtractionConfig): ExtractorFactory;
|
|
12
|
+
/**
|
|
13
|
+
* Create or get cached PropsExtractor (TypeScript-based)
|
|
14
|
+
*/
|
|
15
|
+
createPropsExtractor(): Promise<BaseExtractor<unknown, unknown>>;
|
|
16
|
+
/**
|
|
17
|
+
* Create or get cached InheritanceExtractor (TypeScript-based)
|
|
18
|
+
*/
|
|
19
|
+
createInheritanceExtractor(): Promise<BaseExtractor<unknown, unknown>>;
|
|
20
|
+
/**
|
|
21
|
+
* Create or get cached VariantsExtractor (TypeScript-based)
|
|
22
|
+
*/
|
|
23
|
+
createVariantsExtractor(): Promise<BaseExtractor<unknown, unknown>>;
|
|
24
|
+
/**
|
|
25
|
+
* Clear all cached extractors
|
|
26
|
+
*/
|
|
27
|
+
clearCache(): void;
|
|
28
|
+
/**
|
|
29
|
+
* Update TypeScript configuration for TypeScript-based extractors
|
|
30
|
+
*/
|
|
31
|
+
updateTsConfig(newTsConfig?: TypeScriptExtractionConfig): void;
|
|
32
|
+
createExamplesExtractor(): Promise<BaseExtractor<unknown, unknown>>;
|
|
33
|
+
createLocalTypesExtractor(): Promise<BaseExtractor<unknown, unknown>>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=ExtractorFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExtractorFactory.d.ts","sourceRoot":"","sources":["../../src/extractors/ExtractorFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAC1C,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,QAAQ,CAAyC;IAEzD,OAAO;IAIP,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,0BAA0B,GAAG,gBAAgB;IAO3E;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAYtE;;OAEG;IACG,0BAA0B,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAc5E;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAczE;;OAEG;IACH,UAAU,IAAI,IAAI;IAOlB;;OAEG;IACH,cAAc,CAAC,WAAW,CAAC,EAAE,0BAA0B,GAAG,IAAI;IAKxD,uBAAuB,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAYnE,yBAAyB,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CAW5E"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Universal factory that manages both TypeScript and non-TypeScript extractors
|
|
3
|
+
*/
|
|
4
|
+
export class ExtractorFactory {
|
|
5
|
+
static instance;
|
|
6
|
+
extractorCache = new Map();
|
|
7
|
+
tsConfig;
|
|
8
|
+
constructor(tsConfig) {
|
|
9
|
+
this.tsConfig = tsConfig;
|
|
10
|
+
}
|
|
11
|
+
static getInstance(tsConfig) {
|
|
12
|
+
if (!ExtractorFactory.instance) {
|
|
13
|
+
ExtractorFactory.instance = new ExtractorFactory(tsConfig);
|
|
14
|
+
}
|
|
15
|
+
return ExtractorFactory.instance;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create or get cached PropsExtractor (TypeScript-based)
|
|
19
|
+
*/
|
|
20
|
+
async createPropsExtractor() {
|
|
21
|
+
const cacheKey = 'props';
|
|
22
|
+
if (!this.extractorCache.has(cacheKey)) {
|
|
23
|
+
const { PropsExtractor } = await import('./typescript/PropsExtractor');
|
|
24
|
+
const extractor = new PropsExtractor(this.tsConfig);
|
|
25
|
+
this.extractorCache.set(cacheKey, extractor);
|
|
26
|
+
}
|
|
27
|
+
return this.extractorCache.get(cacheKey);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Create or get cached InheritanceExtractor (TypeScript-based)
|
|
31
|
+
*/
|
|
32
|
+
async createInheritanceExtractor() {
|
|
33
|
+
const cacheKey = 'inheritance';
|
|
34
|
+
if (!this.extractorCache.has(cacheKey)) {
|
|
35
|
+
const { InheritanceExtractor } = await import('./typescript/InheritanceExtractor');
|
|
36
|
+
const extractor = new InheritanceExtractor(this.tsConfig);
|
|
37
|
+
this.extractorCache.set(cacheKey, extractor);
|
|
38
|
+
}
|
|
39
|
+
return this.extractorCache.get(cacheKey);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create or get cached VariantsExtractor (TypeScript-based)
|
|
43
|
+
*/
|
|
44
|
+
async createVariantsExtractor() {
|
|
45
|
+
const cacheKey = 'variants';
|
|
46
|
+
if (!this.extractorCache.has(cacheKey)) {
|
|
47
|
+
const { VariantsExtractor } = await import('./variants/VariantsExtractor');
|
|
48
|
+
const extractor = new VariantsExtractor(this.tsConfig);
|
|
49
|
+
this.extractorCache.set(cacheKey, extractor);
|
|
50
|
+
}
|
|
51
|
+
return this.extractorCache.get(cacheKey);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Clear all cached extractors
|
|
55
|
+
*/
|
|
56
|
+
clearCache() {
|
|
57
|
+
this.extractorCache.forEach((extractor) => {
|
|
58
|
+
extractor.clearCache();
|
|
59
|
+
});
|
|
60
|
+
this.extractorCache.clear();
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Update TypeScript configuration for TypeScript-based extractors
|
|
64
|
+
*/
|
|
65
|
+
updateTsConfig(newTsConfig) {
|
|
66
|
+
this.tsConfig = newTsConfig;
|
|
67
|
+
this.clearCache(); // Force recreation with new config
|
|
68
|
+
}
|
|
69
|
+
async createExamplesExtractor() {
|
|
70
|
+
const key = 'examples';
|
|
71
|
+
if (!this.extractorCache.has(key)) {
|
|
72
|
+
const mod = await import('./typescript/ExamplesExtractor');
|
|
73
|
+
const extractor = new mod.ExamplesExtractor(this.tsConfig);
|
|
74
|
+
this.extractorCache.set(key, extractor);
|
|
75
|
+
}
|
|
76
|
+
return this.extractorCache.get(key);
|
|
77
|
+
}
|
|
78
|
+
async createLocalTypesExtractor() {
|
|
79
|
+
const cacheKey = 'localTypes';
|
|
80
|
+
if (!this.extractorCache.has(cacheKey)) {
|
|
81
|
+
const { LocalTypesExtractor } = await import('./typescript/LocalTypesExtractor');
|
|
82
|
+
const extractor = new LocalTypesExtractor(this.tsConfig);
|
|
83
|
+
this.extractorCache.set(cacheKey, extractor);
|
|
84
|
+
}
|
|
85
|
+
return this.extractorCache.get(cacheKey);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=ExtractorFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExtractorFactory.js","sourceRoot":"","sources":["../../src/extractors/ExtractorFactory.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/extractors/documentation/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extractors/documentation/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extractors/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extractors/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ExtractionResult } from '../../types/validation';
|
|
2
|
+
import { TypeScriptBaseExtractor } from './TypeScriptBaseExtractor';
|
|
3
|
+
interface ExamplesExtractionInput {
|
|
4
|
+
filePath: string;
|
|
5
|
+
componentName: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Extracts interface-level @example snippets from the <Component>Props JSDoc using TS AST,
|
|
9
|
+
* avoiding fragile regex parsing in later pipeline stages.
|
|
10
|
+
*/
|
|
11
|
+
export declare class ExamplesExtractor extends TypeScriptBaseExtractor<ExamplesExtractionInput, string[]> {
|
|
12
|
+
extract(input: ExamplesExtractionInput): Promise<ExtractionResult<string[]>>;
|
|
13
|
+
/**
|
|
14
|
+
* Full-text ranges of sibling components' Props declarations (incl. their leading
|
|
15
|
+
* JSDoc trivia). A sibling is another `export { default as X } from './X.svelte'`
|
|
16
|
+
* of the same file — in a multi-component index.ts (e.g. the Guide surfaces) the
|
|
17
|
+
* head-scan must not attribute a sibling's `@example` blocks to this component.
|
|
18
|
+
* Helper interfaces like `MenuSpecificProps` (no matching `.svelte` export) are
|
|
19
|
+
* deliberately NOT excluded: their head JSDoc is the documented authoring spot
|
|
20
|
+
* for the primary component's examples.
|
|
21
|
+
*/
|
|
22
|
+
private collectSiblingPropsRanges;
|
|
23
|
+
private getTagCommentText;
|
|
24
|
+
private extractFencedExamples;
|
|
25
|
+
private extractFallbackExamples;
|
|
26
|
+
private normalizeExampleFromTag;
|
|
27
|
+
private extractExamplesFromHead;
|
|
28
|
+
private sanitizeExampleCode;
|
|
29
|
+
private dedupeExamples;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=ExamplesExtractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExamplesExtractor.d.ts","sourceRoot":"","sources":["../../../src/extractors/typescript/ExamplesExtractor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,uBAAuB,CAAC,uBAAuB,EAAE,MAAM,EAAE,CAAC;IACzF,OAAO,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;IA8DlF;;;;;;;;OAQG;IACH,OAAO,CAAC,yBAAyB;IAkCjC,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,uBAAuB;IAkC/B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,cAAc;CAYvB"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import * as ts from 'typescript';
|
|
2
|
+
import { TypeScriptBaseExtractor } from './TypeScriptBaseExtractor';
|
|
3
|
+
/**
|
|
4
|
+
* Extracts interface-level @example snippets from the <Component>Props JSDoc using TS AST,
|
|
5
|
+
* avoiding fragile regex parsing in later pipeline stages.
|
|
6
|
+
*/
|
|
7
|
+
export class ExamplesExtractor extends TypeScriptBaseExtractor {
|
|
8
|
+
async extract(input) {
|
|
9
|
+
const start = Date.now();
|
|
10
|
+
try {
|
|
11
|
+
if (!input?.filePath || !input?.componentName) {
|
|
12
|
+
return this.createSuccessResult([], [], input?.filePath ?? 'unknown', 0);
|
|
13
|
+
}
|
|
14
|
+
const sourceFile = await this.getSourceFile(input.filePath);
|
|
15
|
+
if (!sourceFile) {
|
|
16
|
+
return this.createSuccessResult([], [], input.filePath, 0);
|
|
17
|
+
}
|
|
18
|
+
const ifaceName = `${input.componentName}Props`;
|
|
19
|
+
const iface = this.findInterface(sourceFile, ifaceName);
|
|
20
|
+
const typeAlias = !iface ? this.findTypeAlias(sourceFile, ifaceName) : null;
|
|
21
|
+
const propsNode = iface ?? typeAlias;
|
|
22
|
+
let examples = [];
|
|
23
|
+
if (propsNode) {
|
|
24
|
+
// First, try to read explicit @example tags
|
|
25
|
+
const tags = ts.getJSDocTags(propsNode) || [];
|
|
26
|
+
for (const tag of tags) {
|
|
27
|
+
if (tag.tagName?.getText() === 'example') {
|
|
28
|
+
const raw = this.getTagCommentText(tag) || '';
|
|
29
|
+
const cleaned = this.normalizeExampleFromTag(raw);
|
|
30
|
+
if (cleaned)
|
|
31
|
+
examples.push(cleaned);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// If none found, fallback to scanning the full JSDoc comment attached to the interface
|
|
35
|
+
if (examples.length === 0) {
|
|
36
|
+
const jsDocs = (ts.getJSDocCommentsAndTags(propsNode) || []).filter((n) => ts.isJSDoc(n));
|
|
37
|
+
for (const doc of jsDocs) {
|
|
38
|
+
const text = this.getCommentText(doc.comment ?? '') || '';
|
|
39
|
+
const fromFences = this.extractFencedExamples(text);
|
|
40
|
+
if (fromFences.length > 0)
|
|
41
|
+
examples.push(...fromFences);
|
|
42
|
+
const fromFallback = this.extractFallbackExamples(text);
|
|
43
|
+
if (fromFallback.length > 0)
|
|
44
|
+
examples.push(...fromFallback);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Still nothing? Scan the file head (content before the interface) for top-level
|
|
48
|
+
// JSDoc blocks containing @example (common authoring pattern for component props docs)
|
|
49
|
+
if (examples.length === 0) {
|
|
50
|
+
const fromHead = this.extractExamplesFromHead(sourceFile, propsNode);
|
|
51
|
+
if (fromHead.length > 0)
|
|
52
|
+
examples.push(...fromHead);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Deduplicate and trim
|
|
56
|
+
examples = this.dedupeExamples(examples);
|
|
57
|
+
return this.createSuccessResult(examples, [], input.filePath, Date.now() - start);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
return this.handleError(error, { component: input?.componentName, file: input?.filePath });
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Full-text ranges of sibling components' Props declarations (incl. their leading
|
|
65
|
+
* JSDoc trivia). A sibling is another `export { default as X } from './X.svelte'`
|
|
66
|
+
* of the same file — in a multi-component index.ts (e.g. the Guide surfaces) the
|
|
67
|
+
* head-scan must not attribute a sibling's `@example` blocks to this component.
|
|
68
|
+
* Helper interfaces like `MenuSpecificProps` (no matching `.svelte` export) are
|
|
69
|
+
* deliberately NOT excluded: their head JSDoc is the documented authoring spot
|
|
70
|
+
* for the primary component's examples.
|
|
71
|
+
*/
|
|
72
|
+
collectSiblingPropsRanges(sourceFile, propsNode) {
|
|
73
|
+
const svelteExports = new Set();
|
|
74
|
+
for (const statement of sourceFile.statements) {
|
|
75
|
+
if (ts.isExportDeclaration(statement) &&
|
|
76
|
+
statement.exportClause &&
|
|
77
|
+
ts.isNamedExports(statement.exportClause) &&
|
|
78
|
+
statement.moduleSpecifier &&
|
|
79
|
+
ts.isStringLiteral(statement.moduleSpecifier) &&
|
|
80
|
+
statement.moduleSpecifier.text.endsWith('.svelte')) {
|
|
81
|
+
for (const element of statement.exportClause.elements) {
|
|
82
|
+
if (element.propertyName?.text === 'default')
|
|
83
|
+
svelteExports.add(element.name.text);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
const ranges = [];
|
|
88
|
+
for (const statement of sourceFile.statements) {
|
|
89
|
+
if (statement === propsNode)
|
|
90
|
+
continue;
|
|
91
|
+
if ((ts.isInterfaceDeclaration(statement) || ts.isTypeAliasDeclaration(statement)) &&
|
|
92
|
+
statement.name.text.endsWith('Props') &&
|
|
93
|
+
svelteExports.has(statement.name.text.slice(0, -'Props'.length))) {
|
|
94
|
+
ranges.push({ start: statement.getFullStart(), end: statement.getEnd() });
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return ranges;
|
|
98
|
+
}
|
|
99
|
+
getTagCommentText(tag) {
|
|
100
|
+
// TypeScript does not expose a typed API for tag.comment text slices directly,
|
|
101
|
+
// but JSDocTag has a 'comment' field we can stringify.
|
|
102
|
+
const tagWithComment = tag;
|
|
103
|
+
const comment = tagWithComment?.comment;
|
|
104
|
+
if (comment == null)
|
|
105
|
+
return undefined;
|
|
106
|
+
if (typeof comment === 'string')
|
|
107
|
+
return comment;
|
|
108
|
+
if (Array.isArray(comment))
|
|
109
|
+
return comment
|
|
110
|
+
.map((p) => (typeof p === 'string' ? p : (p?.text ?? '')))
|
|
111
|
+
.join('');
|
|
112
|
+
return String(comment ?? '');
|
|
113
|
+
}
|
|
114
|
+
extractFencedExamples(text) {
|
|
115
|
+
const out = [];
|
|
116
|
+
const fenceRe = /```(?:\w+)?\n([\s\S]*?)```/g;
|
|
117
|
+
for (const m of text.matchAll(fenceRe)) {
|
|
118
|
+
const block = this.sanitizeExampleCode(m[1] || '');
|
|
119
|
+
if (block)
|
|
120
|
+
out.push(block);
|
|
121
|
+
}
|
|
122
|
+
return out;
|
|
123
|
+
}
|
|
124
|
+
extractFallbackExamples(text) {
|
|
125
|
+
// Split by @example markers and take the part until the next tag or end
|
|
126
|
+
const parts = text.split(/@example/g).slice(1);
|
|
127
|
+
const out = [];
|
|
128
|
+
for (const part of parts) {
|
|
129
|
+
const body = part.split('@')[0] || '';
|
|
130
|
+
const cleaned = this.sanitizeExampleCode(body);
|
|
131
|
+
if (cleaned)
|
|
132
|
+
out.push(cleaned);
|
|
133
|
+
}
|
|
134
|
+
return out;
|
|
135
|
+
}
|
|
136
|
+
normalizeExampleFromTag(text) {
|
|
137
|
+
const fenced = this.extractFencedExamples(text);
|
|
138
|
+
if (fenced.length > 0) {
|
|
139
|
+
const first = fenced[0];
|
|
140
|
+
if (first)
|
|
141
|
+
return first;
|
|
142
|
+
}
|
|
143
|
+
return this.sanitizeExampleCode(text || '');
|
|
144
|
+
}
|
|
145
|
+
extractExamplesFromHead(sourceFile, iface) {
|
|
146
|
+
try {
|
|
147
|
+
const text = sourceFile.getFullText();
|
|
148
|
+
const end = iface.getStart();
|
|
149
|
+
let head = text.slice(0, end);
|
|
150
|
+
// Blank out sibling components' Props declarations (incl. their JSDoc trivia)
|
|
151
|
+
// so their @example blocks are never attributed to this component.
|
|
152
|
+
for (const range of this.collectSiblingPropsRanges(sourceFile, iface)) {
|
|
153
|
+
if (range.start >= head.length)
|
|
154
|
+
continue;
|
|
155
|
+
const sliceEnd = Math.min(range.end, head.length);
|
|
156
|
+
head =
|
|
157
|
+
head.slice(0, range.start) + ' '.repeat(sliceEnd - range.start) + head.slice(sliceEnd);
|
|
158
|
+
}
|
|
159
|
+
// Look for @example fenced blocks in the head
|
|
160
|
+
const out = [];
|
|
161
|
+
const fenceRe = /@example[\s\S]*?```(?:\w+)?\n([\s\S]*?)```/g;
|
|
162
|
+
for (const m of head.matchAll(fenceRe)) {
|
|
163
|
+
const cleaned = this.sanitizeExampleCode(m[1] || '');
|
|
164
|
+
if (cleaned)
|
|
165
|
+
out.push(cleaned);
|
|
166
|
+
}
|
|
167
|
+
if (out.length > 0)
|
|
168
|
+
return out;
|
|
169
|
+
// Fallback inside head: split by @example and take until next @ or end of block
|
|
170
|
+
const parts = head.split(/@example/g).slice(1);
|
|
171
|
+
for (const part of parts) {
|
|
172
|
+
const snippet = part.split('@')[0] || '';
|
|
173
|
+
const cleaned = this.sanitizeExampleCode(snippet);
|
|
174
|
+
if (cleaned)
|
|
175
|
+
out.push(cleaned);
|
|
176
|
+
}
|
|
177
|
+
return out;
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
return [];
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
sanitizeExampleCode(code) {
|
|
184
|
+
if (!code)
|
|
185
|
+
return '';
|
|
186
|
+
const lines = String(code)
|
|
187
|
+
.split(/\r?\n/)
|
|
188
|
+
.map((l) => l.replace(/^\s*\*\s?/, ''));
|
|
189
|
+
// strip leading/trailing empties
|
|
190
|
+
while (lines.length > 0 && lines[0]?.trim() === '')
|
|
191
|
+
lines.shift();
|
|
192
|
+
while (lines.length > 0 && lines[lines.length - 1]?.trim() === '')
|
|
193
|
+
lines.pop();
|
|
194
|
+
return lines.join('\n');
|
|
195
|
+
}
|
|
196
|
+
dedupeExamples(examples) {
|
|
197
|
+
const seen = new Set();
|
|
198
|
+
const out = [];
|
|
199
|
+
for (const ex of examples) {
|
|
200
|
+
const key = ex.replace(/\s+/g, '').toLowerCase();
|
|
201
|
+
if (!seen.has(key)) {
|
|
202
|
+
seen.add(key);
|
|
203
|
+
out.push(ex);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return out;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=ExamplesExtractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExamplesExtractor.js","sourceRoot":"","sources":["../../../src/extractors/typescript/ExamplesExtractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ExtractionResult, InheritanceExtractionConfig, InheritanceInfo, KnownInterfaceConfig } from '../../types';
|
|
2
|
+
import { TypeScriptBaseExtractor } from './TypeScriptBaseExtractor';
|
|
3
|
+
interface InheritanceExtractionInput {
|
|
4
|
+
filePath: string;
|
|
5
|
+
componentName: string;
|
|
6
|
+
interfaceName?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Resolves interface inheritance, including HTML attributes, external types, and Omit patterns
|
|
10
|
+
*/
|
|
11
|
+
export declare class InheritanceExtractor extends TypeScriptBaseExtractor<InheritanceExtractionInput, InheritanceInfo[]> {
|
|
12
|
+
config: InheritanceExtractionConfig;
|
|
13
|
+
private knownInterfaces;
|
|
14
|
+
constructor(tsConfig?: Record<string, unknown>);
|
|
15
|
+
/**
|
|
16
|
+
* Extract inheritance information from component interface
|
|
17
|
+
*/
|
|
18
|
+
extract(input: InheritanceExtractionInput): Promise<ExtractionResult<InheritanceInfo[]>>;
|
|
19
|
+
private extractInheritanceFromInterface;
|
|
20
|
+
private processHeritageType;
|
|
21
|
+
private handleOmitPattern;
|
|
22
|
+
private handleHTMLAttributes;
|
|
23
|
+
private handleKnownInterface;
|
|
24
|
+
private handleLocalInterface;
|
|
25
|
+
private handleExternalType;
|
|
26
|
+
private isOmitPattern;
|
|
27
|
+
private isHTMLAttributes;
|
|
28
|
+
private isKnownInterface;
|
|
29
|
+
private extractElementType;
|
|
30
|
+
private parseOmittedKeys;
|
|
31
|
+
private getPackageForType;
|
|
32
|
+
private getUrlForType;
|
|
33
|
+
private extractPropFromMember;
|
|
34
|
+
private addDefaultKnownInterfaces;
|
|
35
|
+
/**
|
|
36
|
+
* Add a known interface configuration
|
|
37
|
+
*/
|
|
38
|
+
addKnownInterface(config: KnownInterfaceConfig): void;
|
|
39
|
+
/**
|
|
40
|
+
* Clear any caches
|
|
41
|
+
*/
|
|
42
|
+
clearCache(): void;
|
|
43
|
+
}
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=InheritanceExtractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InheritanceExtractor.d.ts","sourceRoot":"","sources":["../../../src/extractors/typescript/InheritanceExtractor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,2BAA2B,EAC3B,eAAe,EACf,oBAAoB,EAErB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,UAAU,0BAA0B;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,uBAAuB,CAC/D,0BAA0B,EAC1B,eAAe,EAAE,CAClB;IACQ,MAAM,EAAE,2BAA2B,CAAC;IAC3C,OAAO,CAAC,eAAe,CAAoC;gBAE/C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAwB9C;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,CAAC;YA8ChF,+BAA+B;YA6B/B,mBAAmB;IA6CjC,OAAO,CAAC,iBAAiB;IA+CzB,OAAO,CAAC,oBAAoB;IA6B5B,OAAO,CAAC,oBAAoB;YA2Bd,oBAAoB;IA2ClC,OAAO,CAAC,kBAAkB;IAqC1B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,yBAAyB;IAuCjC;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI;IAIrD;;OAEG;IACH,UAAU,IAAI,IAAI;CAGnB"}
|