@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.
Files changed (263) hide show
  1. package/README.md +92 -0
  2. package/dist/cli/CLI.d.ts +10 -0
  3. package/dist/cli/CLI.d.ts.map +1 -0
  4. package/dist/cli/CLI.js +340 -0
  5. package/dist/cli/CLI.js.map +1 -0
  6. package/dist/cli/index.d.ts +2 -0
  7. package/dist/cli/index.d.ts.map +1 -0
  8. package/dist/cli/index.js +7 -0
  9. package/dist/cli/index.js.map +1 -0
  10. package/dist/core/discovery/ComponentFinder.d.ts +43 -0
  11. package/dist/core/discovery/ComponentFinder.d.ts.map +1 -0
  12. package/dist/core/discovery/ComponentFinder.js +421 -0
  13. package/dist/core/discovery/ComponentFinder.js.map +1 -0
  14. package/dist/core/discovery/FileStructureAnalyzer.d.ts +15 -0
  15. package/dist/core/discovery/FileStructureAnalyzer.d.ts.map +1 -0
  16. package/dist/core/discovery/FileStructureAnalyzer.js +35 -0
  17. package/dist/core/discovery/FileStructureAnalyzer.js.map +1 -0
  18. package/dist/core/discovery/MetadataExtractor.d.ts +15 -0
  19. package/dist/core/discovery/MetadataExtractor.d.ts.map +1 -0
  20. package/dist/core/discovery/MetadataExtractor.js +47 -0
  21. package/dist/core/discovery/MetadataExtractor.js.map +1 -0
  22. package/dist/core/discovery/index.d.ts +2 -0
  23. package/dist/core/discovery/index.d.ts.map +1 -0
  24. package/dist/core/discovery/index.js +2 -0
  25. package/dist/core/discovery/index.js.map +1 -0
  26. package/dist/core/enrichment/APIDataGenerator.d.ts +77 -0
  27. package/dist/core/enrichment/APIDataGenerator.d.ts.map +1 -0
  28. package/dist/core/enrichment/APIDataGenerator.js +663 -0
  29. package/dist/core/enrichment/APIDataGenerator.js.map +1 -0
  30. package/dist/core/enrichment/index.d.ts +2 -0
  31. package/dist/core/enrichment/index.d.ts.map +1 -0
  32. package/dist/core/enrichment/index.js +6 -0
  33. package/dist/core/enrichment/index.js.map +1 -0
  34. package/dist/core/extraction/ExtractionCoordinator.d.ts +53 -0
  35. package/dist/core/extraction/ExtractionCoordinator.d.ts.map +1 -0
  36. package/dist/core/extraction/ExtractionCoordinator.js +352 -0
  37. package/dist/core/extraction/ExtractionCoordinator.js.map +1 -0
  38. package/dist/core/extraction/index.d.ts +2 -0
  39. package/dist/core/extraction/index.d.ts.map +1 -0
  40. package/dist/core/extraction/index.js +2 -0
  41. package/dist/core/extraction/index.js.map +1 -0
  42. package/dist/core/generation/GenerationCoordinator.d.ts +51 -0
  43. package/dist/core/generation/GenerationCoordinator.d.ts.map +1 -0
  44. package/dist/core/generation/GenerationCoordinator.js +206 -0
  45. package/dist/core/generation/GenerationCoordinator.js.map +1 -0
  46. package/dist/core/generation/index.d.ts +2 -0
  47. package/dist/core/generation/index.d.ts.map +1 -0
  48. package/dist/core/generation/index.js +2 -0
  49. package/dist/core/generation/index.js.map +1 -0
  50. package/dist/core/index.d.ts +7 -0
  51. package/dist/core/index.d.ts.map +1 -0
  52. package/dist/core/index.js +16 -0
  53. package/dist/core/index.js.map +1 -0
  54. package/dist/core/pipeline/ErrorHandler.d.ts +129 -0
  55. package/dist/core/pipeline/ErrorHandler.d.ts.map +1 -0
  56. package/dist/core/pipeline/ErrorHandler.js +321 -0
  57. package/dist/core/pipeline/ErrorHandler.js.map +1 -0
  58. package/dist/core/pipeline/PipelineOrchestrator.d.ts +45 -0
  59. package/dist/core/pipeline/PipelineOrchestrator.d.ts.map +1 -0
  60. package/dist/core/pipeline/PipelineOrchestrator.js +216 -0
  61. package/dist/core/pipeline/PipelineOrchestrator.js.map +1 -0
  62. package/dist/core/pipeline/index.d.ts +1 -0
  63. package/dist/core/pipeline/index.d.ts.map +1 -0
  64. package/dist/core/pipeline/index.js +2 -0
  65. package/dist/core/pipeline/index.js.map +1 -0
  66. package/dist/extractors/BaseExtractor.d.ts +33 -0
  67. package/dist/extractors/BaseExtractor.d.ts.map +1 -0
  68. package/dist/extractors/BaseExtractor.js +68 -0
  69. package/dist/extractors/BaseExtractor.js.map +1 -0
  70. package/dist/extractors/ExtractorFactory.d.ts +35 -0
  71. package/dist/extractors/ExtractorFactory.d.ts.map +1 -0
  72. package/dist/extractors/ExtractorFactory.js +88 -0
  73. package/dist/extractors/ExtractorFactory.js.map +1 -0
  74. package/dist/extractors/documentation/index.d.ts +1 -0
  75. package/dist/extractors/documentation/index.d.ts.map +1 -0
  76. package/dist/extractors/documentation/index.js +2 -0
  77. package/dist/extractors/documentation/index.js.map +1 -0
  78. package/dist/extractors/index.d.ts +1 -0
  79. package/dist/extractors/index.d.ts.map +1 -0
  80. package/dist/extractors/index.js +2 -0
  81. package/dist/extractors/index.js.map +1 -0
  82. package/dist/extractors/typescript/ExamplesExtractor.d.ts +32 -0
  83. package/dist/extractors/typescript/ExamplesExtractor.d.ts.map +1 -0
  84. package/dist/extractors/typescript/ExamplesExtractor.js +209 -0
  85. package/dist/extractors/typescript/ExamplesExtractor.js.map +1 -0
  86. package/dist/extractors/typescript/InheritanceExtractor.d.ts +45 -0
  87. package/dist/extractors/typescript/InheritanceExtractor.d.ts.map +1 -0
  88. package/dist/extractors/typescript/InheritanceExtractor.js +368 -0
  89. package/dist/extractors/typescript/InheritanceExtractor.js.map +1 -0
  90. package/dist/extractors/typescript/LocalTypesExtractor.d.ts +20 -0
  91. package/dist/extractors/typescript/LocalTypesExtractor.d.ts.map +1 -0
  92. package/dist/extractors/typescript/LocalTypesExtractor.js +100 -0
  93. package/dist/extractors/typescript/LocalTypesExtractor.js.map +1 -0
  94. package/dist/extractors/typescript/PropsExtractor.d.ts +142 -0
  95. package/dist/extractors/typescript/PropsExtractor.d.ts.map +1 -0
  96. package/dist/extractors/typescript/PropsExtractor.js +709 -0
  97. package/dist/extractors/typescript/PropsExtractor.js.map +1 -0
  98. package/dist/extractors/typescript/TypeScriptBaseExtractor.d.ts +74 -0
  99. package/dist/extractors/typescript/TypeScriptBaseExtractor.d.ts.map +1 -0
  100. package/dist/extractors/typescript/TypeScriptBaseExtractor.js +249 -0
  101. package/dist/extractors/typescript/TypeScriptBaseExtractor.js.map +1 -0
  102. package/dist/extractors/typescript/index.d.ts +1 -0
  103. package/dist/extractors/typescript/index.d.ts.map +1 -0
  104. package/dist/extractors/typescript/index.js +2 -0
  105. package/dist/extractors/typescript/index.js.map +1 -0
  106. package/dist/extractors/variants/TailwindVariantsParser.d.ts +16 -0
  107. package/dist/extractors/variants/TailwindVariantsParser.d.ts.map +1 -0
  108. package/dist/extractors/variants/TailwindVariantsParser.js +53 -0
  109. package/dist/extractors/variants/TailwindVariantsParser.js.map +1 -0
  110. package/dist/extractors/variants/VariantsExtractor.d.ts +45 -0
  111. package/dist/extractors/variants/VariantsExtractor.d.ts.map +1 -0
  112. package/dist/extractors/variants/VariantsExtractor.js +340 -0
  113. package/dist/extractors/variants/VariantsExtractor.js.map +1 -0
  114. package/dist/extractors/variants/index.d.ts +2 -0
  115. package/dist/extractors/variants/index.d.ts.map +1 -0
  116. package/dist/extractors/variants/index.js +2 -0
  117. package/dist/extractors/variants/index.js.map +1 -0
  118. package/dist/generators/api/APIFileGenerator.d.ts +32 -0
  119. package/dist/generators/api/APIFileGenerator.d.ts.map +1 -0
  120. package/dist/generators/api/APIFileGenerator.js +450 -0
  121. package/dist/generators/api/APIFileGenerator.js.map +1 -0
  122. package/dist/generators/api/TypeDefinitionGenerator.d.ts +1 -0
  123. package/dist/generators/api/TypeDefinitionGenerator.d.ts.map +1 -0
  124. package/dist/generators/api/TypeDefinitionGenerator.js +2 -0
  125. package/dist/generators/api/TypeDefinitionGenerator.js.map +1 -0
  126. package/dist/generators/api/index.d.ts +2 -0
  127. package/dist/generators/api/index.d.ts.map +1 -0
  128. package/dist/generators/api/index.js +2 -0
  129. package/dist/generators/api/index.js.map +1 -0
  130. package/dist/generators/index.d.ts +5 -0
  131. package/dist/generators/index.d.ts.map +1 -0
  132. package/dist/generators/index.js +4 -0
  133. package/dist/generators/index.js.map +1 -0
  134. package/dist/generators/llm/LLMDocumentationGenerator.d.ts +34 -0
  135. package/dist/generators/llm/LLMDocumentationGenerator.d.ts.map +1 -0
  136. package/dist/generators/llm/LLMDocumentationGenerator.js +480 -0
  137. package/dist/generators/llm/LLMDocumentationGenerator.js.map +1 -0
  138. package/dist/generators/llm/LLMFormatter.d.ts +4 -0
  139. package/dist/generators/llm/LLMFormatter.d.ts.map +1 -0
  140. package/dist/generators/llm/LLMFormatter.js +8 -0
  141. package/dist/generators/llm/LLMFormatter.js.map +1 -0
  142. package/dist/generators/llm/LlmsFullAssembler.d.ts +20 -0
  143. package/dist/generators/llm/LlmsFullAssembler.d.ts.map +1 -0
  144. package/dist/generators/llm/LlmsFullAssembler.js +63 -0
  145. package/dist/generators/llm/LlmsFullAssembler.js.map +1 -0
  146. package/dist/generators/llm/index.d.ts +1 -0
  147. package/dist/generators/llm/index.d.ts.map +1 -0
  148. package/dist/generators/llm/index.js +2 -0
  149. package/dist/generators/llm/index.js.map +1 -0
  150. package/dist/generators/mcp/MCPCatalogAssembler.d.ts +27 -0
  151. package/dist/generators/mcp/MCPCatalogAssembler.d.ts.map +1 -0
  152. package/dist/generators/mcp/MCPCatalogAssembler.js +147 -0
  153. package/dist/generators/mcp/MCPCatalogAssembler.js.map +1 -0
  154. package/dist/generators/mcp/MCPCatalogGenerator.d.ts +55 -0
  155. package/dist/generators/mcp/MCPCatalogGenerator.d.ts.map +1 -0
  156. package/dist/generators/mcp/MCPCatalogGenerator.js +153 -0
  157. package/dist/generators/mcp/MCPCatalogGenerator.js.map +1 -0
  158. package/dist/generators/svelte/PageGenerator.d.ts +82 -0
  159. package/dist/generators/svelte/PageGenerator.d.ts.map +1 -0
  160. package/dist/generators/svelte/PageGenerator.js +557 -0
  161. package/dist/generators/svelte/PageGenerator.js.map +1 -0
  162. package/dist/generators/svelte/PlaygroundPresets.d.ts +2 -0
  163. package/dist/generators/svelte/PlaygroundPresets.d.ts.map +1 -0
  164. package/dist/generators/svelte/PlaygroundPresets.js +4 -0
  165. package/dist/generators/svelte/PlaygroundPresets.js.map +1 -0
  166. package/dist/generators/svelte/SectionMerger.d.ts +38 -0
  167. package/dist/generators/svelte/SectionMerger.d.ts.map +1 -0
  168. package/dist/generators/svelte/SectionMerger.js +154 -0
  169. package/dist/generators/svelte/SectionMerger.js.map +1 -0
  170. package/dist/generators/svelte/TemplateEngine.d.ts +91 -0
  171. package/dist/generators/svelte/TemplateEngine.d.ts.map +1 -0
  172. package/dist/generators/svelte/TemplateEngine.js +500 -0
  173. package/dist/generators/svelte/TemplateEngine.js.map +1 -0
  174. package/dist/generators/svelte/index.d.ts +8 -0
  175. package/dist/generators/svelte/index.d.ts.map +1 -0
  176. package/dist/generators/svelte/index.js +11 -0
  177. package/dist/generators/svelte/index.js.map +1 -0
  178. package/dist/generators/svelte/renderers/ApiRenderer.d.ts +17 -0
  179. package/dist/generators/svelte/renderers/ApiRenderer.d.ts.map +1 -0
  180. package/dist/generators/svelte/renderers/ApiRenderer.js +44 -0
  181. package/dist/generators/svelte/renderers/ApiRenderer.js.map +1 -0
  182. package/dist/generators/svelte/renderers/ExampleRenderer.d.ts +33 -0
  183. package/dist/generators/svelte/renderers/ExampleRenderer.d.ts.map +1 -0
  184. package/dist/generators/svelte/renderers/ExampleRenderer.js +137 -0
  185. package/dist/generators/svelte/renderers/ExampleRenderer.js.map +1 -0
  186. package/dist/generators/svelte/renderers/OverviewRenderer.d.ts +9 -0
  187. package/dist/generators/svelte/renderers/OverviewRenderer.d.ts.map +1 -0
  188. package/dist/generators/svelte/renderers/OverviewRenderer.js +45 -0
  189. package/dist/generators/svelte/renderers/OverviewRenderer.js.map +1 -0
  190. package/dist/generators/svelte/renderers/PlaygroundRenderer.d.ts +35 -0
  191. package/dist/generators/svelte/renderers/PlaygroundRenderer.d.ts.map +1 -0
  192. package/dist/generators/svelte/renderers/PlaygroundRenderer.js +319 -0
  193. package/dist/generators/svelte/renderers/PlaygroundRenderer.js.map +1 -0
  194. package/dist/generators/svelte/renderers/TypesRenderer.d.ts +9 -0
  195. package/dist/generators/svelte/renderers/TypesRenderer.d.ts.map +1 -0
  196. package/dist/generators/svelte/renderers/TypesRenderer.js +23 -0
  197. package/dist/generators/svelte/renderers/TypesRenderer.js.map +1 -0
  198. package/dist/generators/svelte/renderers/UsageRenderer.d.ts +14 -0
  199. package/dist/generators/svelte/renderers/UsageRenderer.d.ts.map +1 -0
  200. package/dist/generators/svelte/renderers/UsageRenderer.js +91 -0
  201. package/dist/generators/svelte/renderers/UsageRenderer.js.map +1 -0
  202. package/dist/generators/svelte/renderers/VariantsRenderer.d.ts +43 -0
  203. package/dist/generators/svelte/renderers/VariantsRenderer.d.ts.map +1 -0
  204. package/dist/generators/svelte/renderers/VariantsRenderer.js +277 -0
  205. package/dist/generators/svelte/renderers/VariantsRenderer.js.map +1 -0
  206. package/dist/generators/svelte/renderers/index.d.ts +8 -0
  207. package/dist/generators/svelte/renderers/index.d.ts.map +1 -0
  208. package/dist/generators/svelte/renderers/index.js +8 -0
  209. package/dist/generators/svelte/renderers/index.js.map +1 -0
  210. package/dist/generators/svelte/types.d.ts +13 -0
  211. package/dist/generators/svelte/types.d.ts.map +1 -0
  212. package/dist/generators/svelte/types.js +2 -0
  213. package/dist/generators/svelte/types.js.map +1 -0
  214. package/dist/index.d.ts +5 -0
  215. package/dist/index.d.ts.map +1 -0
  216. package/dist/index.js +4 -0
  217. package/dist/index.js.map +1 -0
  218. package/dist/parsers/SvelteDocsParser.d.ts +44 -0
  219. package/dist/parsers/SvelteDocsParser.d.ts.map +1 -0
  220. package/dist/parsers/SvelteDocsParser.js +141 -0
  221. package/dist/parsers/SvelteDocsParser.js.map +1 -0
  222. package/dist/parsers/index.d.ts +2 -0
  223. package/dist/parsers/index.d.ts.map +1 -0
  224. package/dist/parsers/index.js +6 -0
  225. package/dist/parsers/index.js.map +1 -0
  226. package/dist/schema/ConfigurationBuilder.d.ts +55 -0
  227. package/dist/schema/ConfigurationBuilder.d.ts.map +1 -0
  228. package/dist/schema/ConfigurationBuilder.js +447 -0
  229. package/dist/schema/ConfigurationBuilder.js.map +1 -0
  230. package/dist/schema/index.d.ts +1 -0
  231. package/dist/schema/index.d.ts.map +1 -0
  232. package/dist/schema/index.js +2 -0
  233. package/dist/schema/index.js.map +1 -0
  234. package/dist/tsconfig.tsbuildinfo +1 -0
  235. package/dist/types/configuration.d.ts +255 -0
  236. package/dist/types/configuration.d.ts.map +1 -0
  237. package/dist/types/configuration.js +2 -0
  238. package/dist/types/configuration.js.map +1 -0
  239. package/dist/types/core.d.ts +96 -0
  240. package/dist/types/core.d.ts.map +1 -0
  241. package/dist/types/core.js +2 -0
  242. package/dist/types/core.js.map +1 -0
  243. package/dist/types/docs-config.d.ts +5 -0
  244. package/dist/types/docs-config.d.ts.map +1 -0
  245. package/dist/types/docs-config.js +51 -0
  246. package/dist/types/docs-config.js.map +1 -0
  247. package/dist/types/index.d.ts +6 -0
  248. package/dist/types/index.d.ts.map +1 -0
  249. package/dist/types/index.js +9 -0
  250. package/dist/types/index.js.map +1 -0
  251. package/dist/types/validation.d.ts +321 -0
  252. package/dist/types/validation.d.ts.map +1 -0
  253. package/dist/types/validation.js +2 -0
  254. package/dist/types/validation.js.map +1 -0
  255. package/dist/utils/DeploymentManager.d.ts +80 -0
  256. package/dist/utils/DeploymentManager.d.ts.map +1 -0
  257. package/dist/utils/DeploymentManager.js +360 -0
  258. package/dist/utils/DeploymentManager.js.map +1 -0
  259. package/dist/utils/index.d.ts +1 -0
  260. package/dist/utils/index.d.ts.map +1 -0
  261. package/dist/utils/index.js +2 -0
  262. package/dist/utils/index.js.map +1 -0
  263. package/package.json +74 -0
@@ -0,0 +1,27 @@
1
+ export interface MCPCatalogAssemblerConfig {
2
+ staticDirs: string[];
3
+ recipesDir: string;
4
+ outputPath: string;
5
+ version: string;
6
+ }
7
+ /**
8
+ * Assembles the final component-catalog.json from per-package _catalog.json
9
+ * files and extracted recipe data.
10
+ */
11
+ export declare class MCPCatalogAssembler {
12
+ private config;
13
+ constructor(config: MCPCatalogAssemblerConfig);
14
+ assemble(): Promise<{
15
+ outputPath: string;
16
+ componentCount: number;
17
+ recipeCount: number;
18
+ }>;
19
+ private collectComponents;
20
+ private extractRecipes;
21
+ private extractRecipeFromMeta;
22
+ private extractRecipeCode;
23
+ private extractString;
24
+ private extractArray;
25
+ private slugToTitle;
26
+ }
27
+ //# sourceMappingURL=MCPCatalogAssembler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MCPCatalogAssembler.d.ts","sourceRoot":"","sources":["../../../src/generators/mcp/MCPCatalogAssembler.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAA4B;gBAE9B,MAAM,EAAE,yBAAyB;IAIvC,QAAQ,IAAI,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;YA4BhF,iBAAiB;YAuBjB,cAAc;YAwBd,qBAAqB;IA0BnC,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,WAAW;CAMpB"}
@@ -0,0 +1,147 @@
1
+ import * as fs from 'node:fs/promises';
2
+ import * as path from 'node:path';
3
+ import { glob } from 'glob';
4
+ /** Head of a `const recipeCode =` declaration — locates the live-preview code in a recipe page. */
5
+ const RECIPE_CODE_START_RE = /const\s+recipeCode\s*=\s*\n?\s*/;
6
+ /** Template-literal concatenation seam (`` ` `` + `` ` ``) inside a recipeCode block. */
7
+ const RECIPE_CODE_CONCAT_RE = /`\s*\+\s*\n?\s*`/;
8
+ /**
9
+ * Assembles the final component-catalog.json from per-package _catalog.json
10
+ * files and extracted recipe data.
11
+ */
12
+ export class MCPCatalogAssembler {
13
+ config;
14
+ constructor(config) {
15
+ this.config = config;
16
+ }
17
+ async assemble() {
18
+ const components = await this.collectComponents();
19
+ const recipes = await this.extractRecipes();
20
+ const allTags = [...new Set(components.flatMap((c) => c.tags))].sort();
21
+ const catalog = {
22
+ generated: new Date().toISOString(),
23
+ version: this.config.version,
24
+ components,
25
+ recipes,
26
+ tags: allTags
27
+ };
28
+ await fs.mkdir(path.dirname(this.config.outputPath), { recursive: true });
29
+ await fs.writeFile(this.config.outputPath, JSON.stringify(catalog, null, 2), 'utf-8');
30
+ console.log(`📦 MCP catalog assembled: ${components.length} components, ${recipes.length} recipes → ${this.config.outputPath}`);
31
+ return {
32
+ outputPath: this.config.outputPath,
33
+ componentCount: components.length,
34
+ recipeCount: recipes.length
35
+ };
36
+ }
37
+ async collectComponents() {
38
+ const allEntries = [];
39
+ for (const dir of this.config.staticDirs) {
40
+ // glob() returns [] for a missing directory (it does not throw), so a
41
+ // target that hasn't been generated is tolerated. But a _catalog.json
42
+ // that exists yet is unreadable or malformed is a real build fault — let
43
+ // it throw rather than silently ship a catalog with a whole package's
44
+ // components missing (the failure mode that hid stale auth metadata).
45
+ const catalogFiles = await glob(path.join(dir, '**/_catalog.json'), { absolute: true });
46
+ for (const file of catalogFiles) {
47
+ const content = await fs.readFile(file, 'utf-8');
48
+ const entries = JSON.parse(content);
49
+ allEntries.push(...entries);
50
+ }
51
+ }
52
+ // Sort alphabetically by name
53
+ allEntries.sort((a, b) => a.name.localeCompare(b.name));
54
+ return allEntries;
55
+ }
56
+ async extractRecipes() {
57
+ const recipes = [];
58
+ try {
59
+ const metaFiles = await glob(path.join(this.config.recipesDir, '*/meta.ts'), {
60
+ absolute: true
61
+ });
62
+ for (const metaPath of metaFiles) {
63
+ try {
64
+ const recipe = await this.extractRecipeFromMeta(metaPath);
65
+ if (recipe)
66
+ recipes.push(recipe);
67
+ }
68
+ catch {
69
+ console.warn(`⚠️ Could not extract recipe from ${metaPath}`);
70
+ }
71
+ }
72
+ }
73
+ catch {
74
+ console.warn('⚠️ Could not read recipes directory');
75
+ }
76
+ recipes.sort((a, b) => a.id.localeCompare(b.id));
77
+ return recipes;
78
+ }
79
+ async extractRecipeFromMeta(metaPath) {
80
+ const recipeDir = path.dirname(metaPath);
81
+ const id = path.basename(recipeDir);
82
+ // Read structured metadata from meta.ts
83
+ const metaContent = await fs.readFile(metaPath, 'utf-8');
84
+ const title = this.extractString(metaContent, 'title') || this.slugToTitle(id);
85
+ const description = this.extractString(metaContent, 'description') || '';
86
+ const components = this.extractArray(metaContent, 'components');
87
+ const features = this.extractArray(metaContent, 'features');
88
+ // Read recipeCode from +page.svelte (still embedded for live preview)
89
+ const pagePath = path.join(recipeDir, '+page.svelte');
90
+ let code = '';
91
+ try {
92
+ const pageContent = await fs.readFile(pagePath, 'utf-8');
93
+ code = this.extractRecipeCode(pageContent);
94
+ }
95
+ catch {
96
+ // No page = no code
97
+ }
98
+ if (!code)
99
+ return null;
100
+ return { id, title, description, components, code, features };
101
+ }
102
+ extractRecipeCode(content) {
103
+ const startMatch = content.match(RECIPE_CODE_START_RE);
104
+ if (!startMatch)
105
+ return '';
106
+ const startIdx = (startMatch.index ?? 0) + startMatch[0].length;
107
+ const rest = content.slice(startIdx);
108
+ let depth = 0;
109
+ let endIdx = -1;
110
+ for (let i = 0; i < rest.length; i++) {
111
+ if (rest[i] === '`') {
112
+ depth = depth === 0 ? 1 : 0;
113
+ }
114
+ if (depth === 0 && rest[i] === ';') {
115
+ endIdx = i;
116
+ break;
117
+ }
118
+ }
119
+ if (endIdx === -1)
120
+ return '';
121
+ const raw = rest.slice(0, endIdx);
122
+ const parts = raw.split(RECIPE_CODE_CONCAT_RE);
123
+ return parts.map((p) => p.replace(/^\s*`|`\s*$/g, '')).join('');
124
+ }
125
+ extractString(content, key) {
126
+ const match = content.match(new RegExp(`${key}:\\s*\\n?\\s*['"]([\\s\\S]*?)['"]\\s*[,}]`));
127
+ if (!match?.[1])
128
+ return '';
129
+ return match[1].replace(/'\s*\+\s*\n?\s*'/g, '').trim();
130
+ }
131
+ extractArray(content, key) {
132
+ const match = content.match(new RegExp(`${key}:\\s*\\[([^\\]]+)\\]`, 's'));
133
+ if (!match?.[1])
134
+ return [];
135
+ return match[1]
136
+ .split(',')
137
+ .map((s) => s.trim().replace(/^['"]|['"]$/g, ''))
138
+ .filter((s) => s.length > 0);
139
+ }
140
+ slugToTitle(slug) {
141
+ return slug
142
+ .split('-')
143
+ .map((w) => w.charAt(0).toUpperCase() + w.slice(1))
144
+ .join(' ');
145
+ }
146
+ }
147
+ //# sourceMappingURL=MCPCatalogAssembler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MCPCatalogAssembler.js","sourceRoot":"","sources":["../../../src/generators/mcp/MCPCatalogAssembler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import type { APIData, EnrichedComponentInfo } from '../../types';
2
+ export interface ComponentCatalogEntry {
3
+ name: string;
4
+ slug: string;
5
+ package: string;
6
+ group: 'primitives' | 'components' | 'core';
7
+ description: string;
8
+ tags: string[];
9
+ import: string;
10
+ llmTxtPath: string;
11
+ variants: {
12
+ name: string;
13
+ values: string[];
14
+ default?: string;
15
+ }[];
16
+ keyProps: string[];
17
+ /** Non-primitive prop types (objects, arrays, unions) — omits string/boolean/number */
18
+ keyPropTypes: Record<string, string>;
19
+ slots: string[];
20
+ hasExamples: boolean;
21
+ relatedComponents: string[];
22
+ }
23
+ export interface RecipeEntry {
24
+ id: string;
25
+ title: string;
26
+ description: string;
27
+ components: string[];
28
+ code: string;
29
+ features: string[];
30
+ }
31
+ export interface ComponentCatalog {
32
+ generated: string;
33
+ version: string;
34
+ components: ComponentCatalogEntry[];
35
+ recipes: RecipeEntry[];
36
+ tags: string[];
37
+ }
38
+ /**
39
+ * Generates per-package catalog entries as JSON for MCP server consumption.
40
+ * The output is a partial catalog that gets assembled into the final
41
+ * component-catalog.json by MCPCatalogAssembler.
42
+ */
43
+ export declare class MCPCatalogGenerator {
44
+ private packageName;
45
+ private llmOutputPath;
46
+ constructor(packageName: string, llmOutputPath: string);
47
+ generate(enrichedComponents: EnrichedComponentInfo[], apiData: APIData): Promise<{
48
+ path: string;
49
+ count: number;
50
+ }>;
51
+ private buildEntry;
52
+ private extractSlots;
53
+ private toSlug;
54
+ }
55
+ //# sourceMappingURL=MCPCatalogGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MCPCatalogGenerator.d.ts","sourceRoot":"","sources":["../../../src/generators/mcp/MCPCatalogGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAoB,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpF,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,GAAG,YAAY,GAAG,MAAM,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,uFAAuF;IACvF,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,qBAAqB,EAAE,CAAC;IACpC,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAyBD;;;;GAIG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;gBAElB,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IAKhD,QAAQ,CACZ,kBAAkB,EAAE,qBAAqB,EAAE,EAC3C,OAAO,EAAE,OAAO,GACf,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAoB3C,OAAO,CAAC,UAAU;IA8ElB,OAAO,CAAC,YAAY;IA+BpB,OAAO,CAAC,MAAM;CAOf"}
@@ -0,0 +1,153 @@
1
+ import * as fs from 'node:fs/promises';
2
+ import * as path from 'node:path';
3
+ /** Internal docs-infrastructure components — excluded from the public catalog */
4
+ const INTERNAL_COMPONENTS = new Set([
5
+ 'ApiReference',
6
+ 'CodeExample',
7
+ 'CodePanel',
8
+ 'DocsLayout',
9
+ 'InfoCard',
10
+ 'PlaygroundConfigurator',
11
+ 'Section',
12
+ 'TableOfContents',
13
+ 'TypesReference'
14
+ ]);
15
+ /**
16
+ * Package → origin tag. Components from these packages carry an extra discovery
17
+ * tag (alongside their functional tag) so the whole surface is filterable in one
18
+ * query, e.g. `find_components({ tags: ['auth'] })`. Keep in sync with the
19
+ * `find_components` tool description.
20
+ */
21
+ const ORIGIN_TAGS = {
22
+ '@urbicon-ui/auth': 'auth'
23
+ };
24
+ /**
25
+ * Generates per-package catalog entries as JSON for MCP server consumption.
26
+ * The output is a partial catalog that gets assembled into the final
27
+ * component-catalog.json by MCPCatalogAssembler.
28
+ */
29
+ export class MCPCatalogGenerator {
30
+ packageName;
31
+ llmOutputPath;
32
+ constructor(packageName, llmOutputPath) {
33
+ this.packageName = packageName;
34
+ this.llmOutputPath = llmOutputPath;
35
+ }
36
+ async generate(enrichedComponents, apiData) {
37
+ const entries = [];
38
+ for (const component of enrichedComponents) {
39
+ if (INTERNAL_COMPONENTS.has(component.name))
40
+ continue;
41
+ const compApi = apiData.components[component.name];
42
+ if (!compApi)
43
+ continue;
44
+ const entry = this.buildEntry(component, compApi);
45
+ entries.push(entry);
46
+ }
47
+ const outputPath = path.join(this.llmOutputPath, '_catalog.json');
48
+ await fs.mkdir(path.dirname(outputPath), { recursive: true });
49
+ await fs.writeFile(outputPath, JSON.stringify(entries, null, 2), 'utf-8');
50
+ return { path: outputPath, count: entries.length };
51
+ }
52
+ buildEntry(component, compApi) {
53
+ const group = (compApi.group || 'primitives');
54
+ const slug = this.toSlug(component.name);
55
+ const llmTxtPath = group ? `${group}/${slug}/llm.txt` : `${slug}/llm.txt`;
56
+ // Origin tag: every `@urbicon-ui/auth` component is discoverable via the
57
+ // `auth` tag (`find_components({ tags: ['auth'] })`) on top of its functional
58
+ // tag (form/feedback/data). Derived from the package — not duplicated into
59
+ // each component's JSDoc — so future auth components inherit it automatically.
60
+ // Appended (not prepended) so `tags[0]` stays the functional tag that drives
61
+ // catalog grouping (format-catalog.ts); the filter checks every tag, not the
62
+ // first, so position doesn't affect discoverability.
63
+ const originTag = ORIGIN_TAGS[this.packageName];
64
+ const jsdocTags = component.tags || [];
65
+ const tags = originTag && !jsdocTags.includes(originTag) ? [...jsdocTags, originTag] : jsdocTags;
66
+ const variants = compApi.variants.map((v) => ({
67
+ name: v.name,
68
+ values: v.values,
69
+ ...(v.defaultValue ? { default: v.defaultValue } : {})
70
+ }));
71
+ // Key props: top 8 most important direct props (not variant-source, not inherited)
72
+ const directProps = compApi.props.filter((p) => p.source.type === 'direct' || p.source.type === 'variant');
73
+ const keyProps = directProps.slice(0, 8).map((p) => p.name);
74
+ // Non-primitive prop types — helps LLMs understand complex APIs without extra calls
75
+ const PRIMITIVE_TYPES = new Set([
76
+ 'string',
77
+ 'boolean',
78
+ 'number',
79
+ 'undefined',
80
+ 'null',
81
+ 'Snippet',
82
+ 'MintProp'
83
+ ]);
84
+ const keyPropTypes = {};
85
+ for (const p of directProps) {
86
+ if (p.name.startsWith('...'))
87
+ continue;
88
+ if (p.name === 'class' || p.name === 'unstyled' || p.name === 'slotClasses')
89
+ continue;
90
+ const baseType = p.type.replace(/\s*\|?\s*undefined$/, '').trim();
91
+ if (!baseType || PRIMITIVE_TYPES.has(baseType))
92
+ continue;
93
+ // Keep compound types, arrays, generics, unions with non-primitives
94
+ if (/^(string|boolean|number)(\s*\|\s*(string|boolean|number))*$/.test(baseType))
95
+ continue;
96
+ keyPropTypes[p.name] = baseType;
97
+ }
98
+ const slots = this.extractSlots(compApi);
99
+ const relatedComponents = (component.relatedComponents || []).filter((r) => r !== component.name);
100
+ return {
101
+ name: component.name,
102
+ slug,
103
+ package: this.packageName,
104
+ group,
105
+ description: component.description || '',
106
+ tags,
107
+ import: `import { ${component.name} } from '${this.packageName}';`,
108
+ llmTxtPath,
109
+ variants,
110
+ keyProps,
111
+ keyPropTypes,
112
+ slots,
113
+ hasExamples: compApi.examples.length > 0,
114
+ relatedComponents
115
+ };
116
+ }
117
+ extractSlots(compApi) {
118
+ const slotNames = new Set();
119
+ for (const v of compApi.variants) {
120
+ if (v.name === 'slot' || v.name === 'slots') {
121
+ for (const val of v.values) {
122
+ if (val.trim())
123
+ slotNames.add(val);
124
+ }
125
+ }
126
+ }
127
+ for (const prop of compApi.props) {
128
+ if (prop.name === 'slotClasses' && prop.type) {
129
+ const match = prop.type.match(/Record<['"]([\w\s|']+)['"],/);
130
+ if (match?.[1]) {
131
+ const keys = match[1]
132
+ .split(/[|']/)
133
+ .filter(Boolean)
134
+ .map((s) => s.trim());
135
+ keys
136
+ .filter((k) => k)
137
+ .forEach((k) => {
138
+ slotNames.add(k);
139
+ });
140
+ }
141
+ }
142
+ }
143
+ return Array.from(slotNames);
144
+ }
145
+ toSlug(input) {
146
+ return input
147
+ .replace(/([a-z0-9])([A-Z])/g, '$1-$2')
148
+ .replace(/_/g, '-')
149
+ .replace(/\s+/g, '-')
150
+ .toLowerCase();
151
+ }
152
+ }
153
+ //# sourceMappingURL=MCPCatalogGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MCPCatalogGenerator.js","sourceRoot":"","sources":["../../../src/generators/mcp/MCPCatalogGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import type { APIData, EnrichedComponentInfo, GeneratedOutput, SvelteOutputConfig } from '@/types';
2
+ /**
3
+ * Generates Svelte documentation pages from API data and enriched component information
4
+ * This is the main generator for Session 5 - creates pages that match the existing docs structure
5
+ */
6
+ export declare class SveltePageGenerator {
7
+ private config;
8
+ private overviewRenderer;
9
+ private playgroundRenderer;
10
+ private exampleRenderer;
11
+ private variantsRenderer;
12
+ private apiRenderer;
13
+ private typesRenderer;
14
+ private usageRenderer;
15
+ private templateEngine;
16
+ private svelteDocsParser;
17
+ private sectionMerger;
18
+ constructor(config: SvelteOutputConfig);
19
+ private toSlug;
20
+ /**
21
+ * Generate Svelte documentation pages for all components
22
+ */
23
+ generate(enrichedComponents: EnrichedComponentInfo[], apiData: APIData): Promise<GeneratedOutput>;
24
+ /**
25
+ * Generate the main index page with component overview
26
+ */
27
+ private generateIndexPage;
28
+ /**
29
+ * Generate the main component page
30
+ */
31
+ private generateComponentPage;
32
+ /**
33
+ * Generate navigation data for the documentation
34
+ */
35
+ private generateNavigationData;
36
+ /**
37
+ * Generate sections from component documentation using hybrid approach:
38
+ * 1. Parse docs.svelte for docsConfig and custom sections
39
+ * 2. Generate auto-sections based on config
40
+ * 3. Merge auto + custom sections intelligently
41
+ */
42
+ private generateSections;
43
+ /**
44
+ * Generate auto-sections based on SvelteDocsConfig
45
+ */
46
+ private generateAutoSections;
47
+ /**
48
+ * Map section ID to section type for rendering
49
+ */
50
+ private mapToSectionType;
51
+ /**
52
+ * Collect and merge script data from all sections
53
+ */
54
+ private collectScriptData;
55
+ /**
56
+ * Group components by specified strategy
57
+ */
58
+ private groupComponents;
59
+ /**
60
+ * Build navigation tree for ToC
61
+ */
62
+ private buildNavigationTree;
63
+ /**
64
+ * Generate navigation for a single page
65
+ */
66
+ private generatePageNavigation;
67
+ /**
68
+ * Heuristically extract Section anchors from docs.svelte for ToC without full parsing.
69
+ * Looks for `<Section id="..." title="...">` occurrences and returns id/title pairs.
70
+ */
71
+ private extractCustomSectionsForNavigation;
72
+ private slugToTitle;
73
+ /**
74
+ * Determine if usage notes should be included
75
+ */
76
+ private shouldIncludeUsageNotes;
77
+ /**
78
+ * Calculate total size of generated files
79
+ */
80
+ private calculateTotalSize;
81
+ }
82
+ //# sourceMappingURL=PageGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageGenerator.d.ts","sourceRoot":"","sources":["../../../src/generators/svelte/PageGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,OAAO,EAEP,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,MAAM,SAAS,CAAC;AAOjB;;;GAGG;AACH,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,aAAa,CAAgB;gBAEzB,MAAM,EAAE,kBAAkB;IAetC,OAAO,CAAC,MAAM;IAQd;;OAEG;IACG,QAAQ,CACb,kBAAkB,EAAE,qBAAqB,EAAE,EAC3C,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,eAAe,CAAC;IAuD3B;;OAEG;YACW,iBAAiB;IA2C/B;;OAEG;YACW,qBAAqB;IAgGnC;;OAEG;YACW,sBAAsB;IAkCpC;;;;;OAKG;YACW,gBAAgB;IA8D9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoH5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAmBxB;;OAEG;IACF,OAAO,CAAC,iBAAiB;IAqD1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAoCvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyC3B;;OAEG;IACF,OAAO,CAAC,sBAAsB;IAQ9B;;;OAGG;YACW,kCAAkC;IAiChD,OAAO,CAAC,WAAW;IAOpB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAe/B;;OAEG;YACW,kBAAkB;CAchC"}