@specverse/engine-realize 3.5.3

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 (420) hide show
  1. package/assets/examples/09-api/ai-spec.yaml +194 -0
  2. package/assets/examples/09-api/converted.yaml +95 -0
  3. package/assets/examples/09-api/diagram-architecture.mmd +10 -0
  4. package/assets/examples/09-api/diagram-er.mmd +10 -0
  5. package/assets/examples/09-api/documentation.html +104 -0
  6. package/assets/examples/09-api/documentation.md +95 -0
  7. package/assets/examples/09-api/inferred-spec.yaml +420 -0
  8. package/assets/examples/09-api/openapi.json +61 -0
  9. package/assets/examples/10-api/README.md +216 -0
  10. package/assets/examples/10-api/ai-spec.yaml +194 -0
  11. package/assets/examples/10-api/converted.yaml +96 -0
  12. package/assets/examples/10-api/diagram-architecture.mmd +10 -0
  13. package/assets/examples/10-api/diagram-er.mmd +10 -0
  14. package/assets/examples/10-api/documentation.html +104 -0
  15. package/assets/examples/10-api/documentation.md +95 -0
  16. package/assets/examples/10-api/inferred-spec.yaml +7 -0
  17. package/assets/examples/10-api/metadata.yaml +89 -0
  18. package/assets/examples/10-api/openapi.json +61 -0
  19. package/assets/examples/10-api/package-integration-test.js +177 -0
  20. package/assets/examples/10-api/usage-example.js +323 -0
  21. package/assets/examples/10-api/usage-example.ts +363 -0
  22. package/assets/examples/10-api/workflow-test.js +113 -0
  23. package/assets/examples/manifests/01-simple-default-mappings.yaml +36 -0
  24. package/assets/examples/manifests/02-capability-mappings.yaml +55 -0
  25. package/assets/examples/manifests/03-hybrid-mappings.yaml +109 -0
  26. package/assets/examples/manifests/README.md +245 -0
  27. package/assets/examples/manifests/backend-only.yaml +43 -0
  28. package/assets/examples/manifests/blog-api.md +78 -0
  29. package/assets/examples/manifests/blog-api.specly +79 -0
  30. package/assets/examples/manifests/frontend-only.yaml +27 -0
  31. package/assets/examples/manifests/fullstack-app.yaml +44 -0
  32. package/assets/examples/manifests/fullstack-monorepo.yaml +62 -0
  33. package/assets/examples/validate-examples-with-expected-failures.cjs +328 -0
  34. package/assets/examples/validate-examples.cjs +225 -0
  35. package/assets/examples-decomposed/cloud-native-manifest.example.yaml +8 -0
  36. package/assets/examples-decomposed/cloud-native-manifest.md +379 -0
  37. package/assets/examples-decomposed/cloud-native-manifest.specly +60 -0
  38. package/assets/examples-decomposed/docker-compose-manifest.example.yaml +8 -0
  39. package/assets/examples-decomposed/docker-compose-manifest.md +326 -0
  40. package/assets/examples-decomposed/docker-compose-manifest.specly +40 -0
  41. package/assets/examples-decomposed/kubernetes-deployment-manifest.example.yaml +8 -0
  42. package/assets/examples-decomposed/kubernetes-deployment-manifest.md +237 -0
  43. package/assets/examples-decomposed/kubernetes-deployment-manifest.specly +41 -0
  44. package/assets/templates/README.md +559 -0
  45. package/assets/templates/TEMPLATE-ENHANCEMENTS-V33.md +462 -0
  46. package/assets/templates/backend-only/CLAUDE.md +73 -0
  47. package/assets/templates/backend-only/README.md +197 -0
  48. package/assets/templates/backend-only/deployments/README.md +149 -0
  49. package/assets/templates/backend-only/deployments/development.specly +53 -0
  50. package/assets/templates/backend-only/deployments/production.specly +87 -0
  51. package/assets/templates/backend-only/docs/README.md +50 -0
  52. package/assets/templates/backend-only/docs/api/README.md +7 -0
  53. package/assets/templates/backend-only/docs/diagrams/README.md +85 -0
  54. package/assets/templates/backend-only/docs/example-documentation-template.md +269 -0
  55. package/assets/templates/backend-only/docs/guides/README.md +15 -0
  56. package/assets/templates/backend-only/dot.env.example +18 -0
  57. package/assets/templates/backend-only/generated/README.md +56 -0
  58. package/assets/templates/backend-only/generated/code/integration-test.template.js +320 -0
  59. package/assets/templates/backend-only/generated/code/package.json.template +34 -0
  60. package/assets/templates/backend-only/generated/docs/README.md +49 -0
  61. package/assets/templates/backend-only/gitignore +54 -0
  62. package/assets/templates/backend-only/manifests/README.md +72 -0
  63. package/assets/templates/backend-only/manifests/docker-compose.specly +91 -0
  64. package/assets/templates/backend-only/manifests/implementation.yaml +100 -0
  65. package/assets/templates/backend-only/manifests/kubernetes.specly +140 -0
  66. package/assets/templates/backend-only/package.json +59 -0
  67. package/assets/templates/backend-only/scripts/test-all.sh +160 -0
  68. package/assets/templates/backend-only/scripts/test-generated-code.sh +165 -0
  69. package/assets/templates/backend-only/specs/main.specly +67 -0
  70. package/assets/templates/default/CLAUDE.md +141 -0
  71. package/assets/templates/default/README.md +404 -0
  72. package/assets/templates/default/deployments/README.md +149 -0
  73. package/assets/templates/default/deployments/development.specly +53 -0
  74. package/assets/templates/default/deployments/production.specly +87 -0
  75. package/assets/templates/default/docs/README.md +50 -0
  76. package/assets/templates/default/docs/api/README.md +7 -0
  77. package/assets/templates/default/docs/diagrams/README.md +85 -0
  78. package/assets/templates/default/docs/example-documentation-template.md +269 -0
  79. package/assets/templates/default/docs/guides/README.md +15 -0
  80. package/assets/templates/default/dot.env.example +18 -0
  81. package/assets/templates/default/generated/README.md +56 -0
  82. package/assets/templates/default/generated/code/integration-test.template.js +320 -0
  83. package/assets/templates/default/generated/code/package.json.template +34 -0
  84. package/assets/templates/default/generated/docs/README.md +49 -0
  85. package/assets/templates/default/gitignore +54 -0
  86. package/assets/templates/default/manifests/README.md +72 -0
  87. package/assets/templates/default/manifests/docker-compose.specly +91 -0
  88. package/assets/templates/default/manifests/implementation.yaml +176 -0
  89. package/assets/templates/default/manifests/kubernetes.specly +140 -0
  90. package/assets/templates/default/package.json +61 -0
  91. package/assets/templates/default/scripts/test-all.sh +160 -0
  92. package/assets/templates/default/scripts/test-generated-code.sh +165 -0
  93. package/assets/templates/default/specs/main.specly +67 -0
  94. package/assets/templates/frontend-only/CLAUDE.md +75 -0
  95. package/assets/templates/frontend-only/README.md +231 -0
  96. package/assets/templates/frontend-only/deployments/README.md +149 -0
  97. package/assets/templates/frontend-only/deployments/development.specly +53 -0
  98. package/assets/templates/frontend-only/deployments/production.specly +87 -0
  99. package/assets/templates/frontend-only/docs/README.md +50 -0
  100. package/assets/templates/frontend-only/docs/api/README.md +7 -0
  101. package/assets/templates/frontend-only/docs/diagrams/README.md +85 -0
  102. package/assets/templates/frontend-only/docs/example-documentation-template.md +269 -0
  103. package/assets/templates/frontend-only/docs/guides/README.md +15 -0
  104. package/assets/templates/frontend-only/dot.env.example +18 -0
  105. package/assets/templates/frontend-only/generated/README.md +56 -0
  106. package/assets/templates/frontend-only/generated/code/integration-test.template.js +320 -0
  107. package/assets/templates/frontend-only/generated/code/package.json.template +34 -0
  108. package/assets/templates/frontend-only/generated/docs/README.md +49 -0
  109. package/assets/templates/frontend-only/gitignore +54 -0
  110. package/assets/templates/frontend-only/manifests/README.md +72 -0
  111. package/assets/templates/frontend-only/manifests/docker-compose.specly +91 -0
  112. package/assets/templates/frontend-only/manifests/implementation.yaml +58 -0
  113. package/assets/templates/frontend-only/manifests/kubernetes.specly +140 -0
  114. package/assets/templates/frontend-only/package.json +59 -0
  115. package/assets/templates/frontend-only/scripts/test-all.sh +160 -0
  116. package/assets/templates/frontend-only/scripts/test-generated-code.sh +165 -0
  117. package/assets/templates/frontend-only/specs/main.specly +57 -0
  118. package/assets/templates/full-stack/AI-GUIDE.md +60 -0
  119. package/assets/templates/full-stack/CLAUDE.md +141 -0
  120. package/assets/templates/full-stack/README.md +382 -0
  121. package/assets/templates/full-stack/archive/AI-GUIDE-legacy.md +392 -0
  122. package/assets/templates/full-stack/deployments/README.md +149 -0
  123. package/assets/templates/full-stack/deployments/development.specly +53 -0
  124. package/assets/templates/full-stack/deployments/production.specly +87 -0
  125. package/assets/templates/full-stack/docs/README.md +51 -0
  126. package/assets/templates/full-stack/docs/api/README.md +7 -0
  127. package/assets/templates/full-stack/docs/diagrams/README.md +85 -0
  128. package/assets/templates/full-stack/docs/example-documentation-template.md +269 -0
  129. package/assets/templates/full-stack/docs/guides/README.md +15 -0
  130. package/assets/templates/full-stack/generated/README.md +56 -0
  131. package/assets/templates/full-stack/generated/code/integration-test.template.js +320 -0
  132. package/assets/templates/full-stack/generated/code/package.json.template +34 -0
  133. package/assets/templates/full-stack/generated/docs/README.md +49 -0
  134. package/assets/templates/full-stack/gitignore +54 -0
  135. package/assets/templates/full-stack/manifests/README.md +72 -0
  136. package/assets/templates/full-stack/manifests/docker-compose.specly +91 -0
  137. package/assets/templates/full-stack/manifests/implementation.yaml +155 -0
  138. package/assets/templates/full-stack/manifests/kubernetes.specly +140 -0
  139. package/assets/templates/full-stack/package.json +45 -0
  140. package/assets/templates/full-stack/scripts/test-all.sh +160 -0
  141. package/assets/templates/full-stack/scripts/test-generated-code.sh +165 -0
  142. package/assets/templates/full-stack/specs/example-v33.specly +297 -0
  143. package/assets/templates/full-stack/specs/main-simple.specly +73 -0
  144. package/assets/templates/full-stack/specs/main.specly +408 -0
  145. package/dist/engines/code-generator.d.ts +86 -0
  146. package/dist/engines/code-generator.d.ts.map +1 -0
  147. package/dist/engines/code-generator.js +159 -0
  148. package/dist/engines/code-generator.js.map +1 -0
  149. package/dist/engines/engine-registry.d.ts +94 -0
  150. package/dist/engines/engine-registry.d.ts.map +1 -0
  151. package/dist/engines/engine-registry.js +163 -0
  152. package/dist/engines/engine-registry.js.map +1 -0
  153. package/dist/engines/index.d.ts +10 -0
  154. package/dist/engines/index.d.ts.map +1 -0
  155. package/dist/engines/index.js +12 -0
  156. package/dist/engines/index.js.map +1 -0
  157. package/dist/engines/typescript-engine.d.ts +74 -0
  158. package/dist/engines/typescript-engine.d.ts.map +1 -0
  159. package/dist/engines/typescript-engine.js +288 -0
  160. package/dist/engines/typescript-engine.js.map +1 -0
  161. package/dist/generators/index.d.ts +11 -0
  162. package/dist/generators/index.d.ts.map +1 -0
  163. package/dist/generators/index.js +11 -0
  164. package/dist/generators/index.js.map +1 -0
  165. package/dist/index.d.ts +48 -0
  166. package/dist/index.d.ts.map +1 -0
  167. package/dist/index.js +434 -0
  168. package/dist/index.js.map +1 -0
  169. package/dist/library/index.d.ts +12 -0
  170. package/dist/library/index.d.ts.map +1 -0
  171. package/dist/library/index.js +15 -0
  172. package/dist/library/index.js.map +1 -0
  173. package/dist/library/library.d.ts +132 -0
  174. package/dist/library/library.d.ts.map +1 -0
  175. package/dist/library/library.js +343 -0
  176. package/dist/library/library.js.map +1 -0
  177. package/dist/library/loader.d.ts +73 -0
  178. package/dist/library/loader.d.ts.map +1 -0
  179. package/dist/library/loader.js +150 -0
  180. package/dist/library/loader.js.map +1 -0
  181. package/dist/library/resolver.d.ts +104 -0
  182. package/dist/library/resolver.d.ts.map +1 -0
  183. package/dist/library/resolver.js +299 -0
  184. package/dist/library/resolver.js.map +1 -0
  185. package/dist/library/validator.d.ts +65 -0
  186. package/dist/library/validator.d.ts.map +1 -0
  187. package/dist/library/validator.js +203 -0
  188. package/dist/library/validator.js.map +1 -0
  189. package/dist/types/index.d.ts +7 -0
  190. package/dist/types/index.d.ts.map +1 -0
  191. package/dist/types/index.js +7 -0
  192. package/dist/types/index.js.map +1 -0
  193. package/dist/types/instance-factory.d.ts +289 -0
  194. package/dist/types/instance-factory.d.ts.map +1 -0
  195. package/dist/types/instance-factory.js +8 -0
  196. package/dist/types/instance-factory.js.map +1 -0
  197. package/dist/types/unified-mappings.d.ts +163 -0
  198. package/dist/types/unified-mappings.d.ts.map +1 -0
  199. package/dist/types/unified-mappings.js +110 -0
  200. package/dist/types/unified-mappings.js.map +1 -0
  201. package/dist/utils/ai-spec-loader.d.ts +77 -0
  202. package/dist/utils/ai-spec-loader.d.ts.map +1 -0
  203. package/dist/utils/ai-spec-loader.js +138 -0
  204. package/dist/utils/ai-spec-loader.js.map +1 -0
  205. package/dist/utils/index.d.ts +9 -0
  206. package/dist/utils/index.d.ts.map +1 -0
  207. package/dist/utils/index.js +9 -0
  208. package/dist/utils/index.js.map +1 -0
  209. package/dist/utils/manifest-loader.d.ts +107 -0
  210. package/dist/utils/manifest-loader.d.ts.map +1 -0
  211. package/dist/utils/manifest-loader.js +168 -0
  212. package/dist/utils/manifest-loader.js.map +1 -0
  213. package/dist/utils/mapping-migration.d.ts +53 -0
  214. package/dist/utils/mapping-migration.d.ts.map +1 -0
  215. package/dist/utils/mapping-migration.js +194 -0
  216. package/dist/utils/mapping-migration.js.map +1 -0
  217. package/libs/instance-factories/CURVED-INTERFACE.md +278 -0
  218. package/libs/instance-factories/README.md +433 -0
  219. package/libs/instance-factories/applications/generic-app.yaml +52 -0
  220. package/libs/instance-factories/applications/react-app.yaml +186 -0
  221. package/libs/instance-factories/applications/templates/generic/backend-env-generator.ts +31 -0
  222. package/libs/instance-factories/applications/templates/generic/backend-package-json-generator.ts +80 -0
  223. package/libs/instance-factories/applications/templates/generic/backend-tsconfig-generator.ts +69 -0
  224. package/libs/instance-factories/applications/templates/generic/main-generator.ts +308 -0
  225. package/libs/instance-factories/applications/templates/react/_view-components-source.ts +555 -0
  226. package/libs/instance-factories/applications/templates/react/api-client-generator.ts +436 -0
  227. package/libs/instance-factories/applications/templates/react/api-types-generator.ts +153 -0
  228. package/libs/instance-factories/applications/templates/react/app-tsx-generator.ts +94 -0
  229. package/libs/instance-factories/applications/templates/react/env-example-generator.ts +24 -0
  230. package/libs/instance-factories/applications/templates/react/field-helpers-generator.ts +106 -0
  231. package/libs/instance-factories/applications/templates/react/gitignore-generator.ts +38 -0
  232. package/libs/instance-factories/applications/templates/react/index-css-generator.ts +85 -0
  233. package/libs/instance-factories/applications/templates/react/index-html-generator.ts +30 -0
  234. package/libs/instance-factories/applications/templates/react/main-tsx-generator.ts +34 -0
  235. package/libs/instance-factories/applications/templates/react/package-json-generator.ts +54 -0
  236. package/libs/instance-factories/applications/templates/react/pattern-adapter-generator.ts +179 -0
  237. package/libs/instance-factories/applications/templates/react/react-pattern-adapter.tsx +1347 -0
  238. package/libs/instance-factories/applications/templates/react/relationship-field-generator.ts +150 -0
  239. package/libs/instance-factories/applications/templates/react/tailwind-adapter-generator.ts +704 -0
  240. package/libs/instance-factories/applications/templates/react/tailwind-adapter-wrapper-generator.ts +84 -0
  241. package/libs/instance-factories/applications/templates/react/tsconfig-generator.ts +35 -0
  242. package/libs/instance-factories/applications/templates/react/use-api-hooks-generator.ts +121 -0
  243. package/libs/instance-factories/applications/templates/react/view-dashboard-generator.ts +150 -0
  244. package/libs/instance-factories/applications/templates/react/view-detail-generator.ts +150 -0
  245. package/libs/instance-factories/applications/templates/react/view-form-generator.ts +362 -0
  246. package/libs/instance-factories/applications/templates/react/view-list-generator.ts +98 -0
  247. package/libs/instance-factories/applications/templates/react/view-router-generator.ts +89 -0
  248. package/libs/instance-factories/applications/templates/react/vite-config-generator.ts +49 -0
  249. package/libs/instance-factories/archived/fastify-prisma.yaml +104 -0
  250. package/libs/instance-factories/cli/commander-js.yaml +55 -0
  251. package/libs/instance-factories/cli/templates/commander/cli-entry-generator.d.ts +12 -0
  252. package/libs/instance-factories/cli/templates/commander/cli-entry-generator.d.ts.map +1 -0
  253. package/libs/instance-factories/cli/templates/commander/cli-entry-generator.js +115 -0
  254. package/libs/instance-factories/cli/templates/commander/cli-entry-generator.js.map +1 -0
  255. package/libs/instance-factories/cli/templates/commander/cli-entry-generator.ts +145 -0
  256. package/libs/instance-factories/cli/templates/commander/command-generator.d.ts +14 -0
  257. package/libs/instance-factories/cli/templates/commander/command-generator.d.ts.map +1 -0
  258. package/libs/instance-factories/cli/templates/commander/command-generator.js +182 -0
  259. package/libs/instance-factories/cli/templates/commander/command-generator.js.map +1 -0
  260. package/libs/instance-factories/cli/templates/commander/command-generator.ts +992 -0
  261. package/libs/instance-factories/communication/event-emitter.yaml +56 -0
  262. package/libs/instance-factories/communication/rabbitmq-events.yaml +87 -0
  263. package/libs/instance-factories/communication/templates/eventemitter/bus-generator.ts +93 -0
  264. package/libs/instance-factories/communication/templates/eventemitter/publisher-generator.ts +117 -0
  265. package/libs/instance-factories/communication/templates/eventemitter/subscriber-generator.ts +101 -0
  266. package/libs/instance-factories/controllers/fastify.yaml +127 -0
  267. package/libs/instance-factories/controllers/templates/fastify/meta-routes-generator.ts +103 -0
  268. package/libs/instance-factories/controllers/templates/fastify/routes-generator.ts +389 -0
  269. package/libs/instance-factories/controllers/templates/fastify/server-generator.ts +76 -0
  270. package/libs/instance-factories/infrastructure/docker-k8s.yaml +61 -0
  271. package/libs/instance-factories/infrastructure/templates/docker-k8s/infrastructure-generator.ts +46 -0
  272. package/libs/instance-factories/orms/prisma.yaml +89 -0
  273. package/libs/instance-factories/orms/templates/prisma/schema-generator.ts +563 -0
  274. package/libs/instance-factories/orms/templates/prisma/services-generator.ts +408 -0
  275. package/libs/instance-factories/scaffolding/generic-scaffold.yaml +65 -0
  276. package/libs/instance-factories/scaffolding/templates/generic/env-example-generator.ts +73 -0
  277. package/libs/instance-factories/scaffolding/templates/generic/env-generator.ts +85 -0
  278. package/libs/instance-factories/scaffolding/templates/generic/gitignore-generator.ts +69 -0
  279. package/libs/instance-factories/scaffolding/templates/generic/package-json-generator.ts +176 -0
  280. package/libs/instance-factories/scaffolding/templates/generic/readme-generator.ts +207 -0
  281. package/libs/instance-factories/scaffolding/templates/generic/tsconfig-generator.ts +78 -0
  282. package/libs/instance-factories/scaffolding/templates/generic/tsconfig-react-generator.ts +41 -0
  283. package/libs/instance-factories/sdks/python-sdk.yaml +66 -0
  284. package/libs/instance-factories/sdks/templates/python/sdk-generator.ts +50 -0
  285. package/libs/instance-factories/sdks/templates/typescript/sdk-generator.ts +49 -0
  286. package/libs/instance-factories/sdks/typescript-sdk.yaml +59 -0
  287. package/libs/instance-factories/services/prisma-services.yaml +71 -0
  288. package/libs/instance-factories/services/templates/prisma/behavior-generator.ts +303 -0
  289. package/libs/instance-factories/services/templates/prisma/controller-generator.ts +532 -0
  290. package/libs/instance-factories/services/templates/prisma/service-generator.ts +315 -0
  291. package/libs/instance-factories/shared/path-resolver.ts +111 -0
  292. package/libs/instance-factories/storage/mongodb.yaml +79 -0
  293. package/libs/instance-factories/storage/postgresql.yaml +75 -0
  294. package/libs/instance-factories/storage/redis.yaml +79 -0
  295. package/libs/instance-factories/storage/templates/mongodb/config-generator.ts +15 -0
  296. package/libs/instance-factories/storage/templates/mongodb/docker-generator.ts +18 -0
  297. package/libs/instance-factories/storage/templates/postgresql/config-generator.ts +54 -0
  298. package/libs/instance-factories/storage/templates/postgresql/docker-generator.ts +55 -0
  299. package/libs/instance-factories/storage/templates/redis/config-generator.ts +16 -0
  300. package/libs/instance-factories/storage/templates/redis/docker-generator.ts +18 -0
  301. package/libs/instance-factories/test-generation.ts +192 -0
  302. package/libs/instance-factories/testing/templates/vitest/tests-generator.ts +51 -0
  303. package/libs/instance-factories/testing/vitest-tests.yaml +63 -0
  304. package/libs/instance-factories/tools/templates/mcp/mcp-server-generator.ts +136 -0
  305. package/libs/instance-factories/tools/templates/mcp/static/docs/DEPLOYMENT_GUIDE.md +630 -0
  306. package/libs/instance-factories/tools/templates/mcp/static/docs/HYBRID_RESOURCE_SYSTEM.md +330 -0
  307. package/libs/instance-factories/tools/templates/mcp/static/docs/deployments/EXTENSION_DEPLOYMENT.md +552 -0
  308. package/libs/instance-factories/tools/templates/mcp/static/docs/deployments/LOCAL_DEPLOYMENT.md +164 -0
  309. package/libs/instance-factories/tools/templates/mcp/static/docs/deployments/WEB_DEPLOYMENT.md +247 -0
  310. package/libs/instance-factories/tools/templates/mcp/static/package.json +92 -0
  311. package/libs/instance-factories/tools/templates/mcp/static/scripts/build-enterprise.js +284 -0
  312. package/libs/instance-factories/tools/templates/mcp/static/scripts/build-extension.js +139 -0
  313. package/libs/instance-factories/tools/templates/mcp/static/scripts/build-local.js +74 -0
  314. package/libs/instance-factories/tools/templates/mcp/static/scripts/build-web.js +156 -0
  315. package/libs/instance-factories/tools/templates/mcp/static/scripts/copy-canonical-files.js +41 -0
  316. package/libs/instance-factories/tools/templates/mcp/static/scripts/test-deployments.js +259 -0
  317. package/libs/instance-factories/tools/templates/mcp/static/scripts/test-hybrid-resources.js +231 -0
  318. package/libs/instance-factories/tools/templates/mcp/static/scripts/test-hybrid-simple.js +196 -0
  319. package/libs/instance-factories/tools/templates/mcp/static/src/controllers/MCPServerController.ts +293 -0
  320. package/libs/instance-factories/tools/templates/mcp/static/src/events/EventEmitter.ts +90 -0
  321. package/libs/instance-factories/tools/templates/mcp/static/src/index.ts +24 -0
  322. package/libs/instance-factories/tools/templates/mcp/static/src/interfaces/ResourceProvider.ts +15 -0
  323. package/libs/instance-factories/tools/templates/mcp/static/src/models/LibrarySuggestion.ts +106 -0
  324. package/libs/instance-factories/tools/templates/mcp/static/src/models/SpecVerseResource.ts +75 -0
  325. package/libs/instance-factories/tools/templates/mcp/static/src/server/mcp-server.ts +239 -0
  326. package/libs/instance-factories/tools/templates/mcp/static/src/services/CLIProxyService.ts +1501 -0
  327. package/libs/instance-factories/tools/templates/mcp/static/src/services/EmbeddedResourcesAdapter.ts +211 -0
  328. package/libs/instance-factories/tools/templates/mcp/static/src/services/EntityModuleService.ts +308 -0
  329. package/libs/instance-factories/tools/templates/mcp/static/src/services/HybridResourcesProvider.ts +210 -0
  330. package/libs/instance-factories/tools/templates/mcp/static/src/services/LibraryToolsService.ts +356 -0
  331. package/libs/instance-factories/tools/templates/mcp/static/src/services/OrchestratorBridge.ts +524 -0
  332. package/libs/instance-factories/tools/templates/mcp/static/src/services/OrchestratorToolsService.ts +530 -0
  333. package/libs/instance-factories/tools/templates/mcp/static/src/services/PromptToolsService.ts +594 -0
  334. package/libs/instance-factories/tools/templates/mcp/static/src/services/ResourcesProviderService.ts +170 -0
  335. package/libs/instance-factories/tools/templates/mcp/static/src/tests/unit/CLIProxyService.init.test.ts +544 -0
  336. package/libs/instance-factories/tools/templates/mcp/static/src/tests/unit/CLIProxyService.test.ts +189 -0
  337. package/libs/instance-factories/tools/templates/mcp/static/src/tests/unit/ResourcesProviderService.test.ts +89 -0
  338. package/libs/instance-factories/tools/templates/mcp/static/src/types/index.ts +110 -0
  339. package/libs/instance-factories/tools/templates/mcp/static/tsconfig.json +28 -0
  340. package/libs/instance-factories/tools/templates/vscode/static/extension.ts +1195 -0
  341. package/libs/instance-factories/tools/templates/vscode/static/language-configuration.json +34 -0
  342. package/libs/instance-factories/tools/templates/vscode/static/schemas/specverse-v3-schema.json +4279 -0
  343. package/libs/instance-factories/tools/templates/vscode/static/syntaxes/specverse.tmLanguage.json +138 -0
  344. package/libs/instance-factories/tools/templates/vscode/static/themes/README.md +74 -0
  345. package/libs/instance-factories/tools/templates/vscode/static/themes/complete-specverse-colors.json +122 -0
  346. package/libs/instance-factories/tools/templates/vscode/static/themes/specverse-basic-theme.json +65 -0
  347. package/libs/instance-factories/tools/templates/vscode/static/themes/specverse-complete-theme.json +123 -0
  348. package/libs/instance-factories/tools/templates/vscode/static/themes/specverse-theme-colors.json +64 -0
  349. package/libs/instance-factories/tools/templates/vscode/vscode-extension-generator.ts +214 -0
  350. package/libs/instance-factories/validation/templates/zod/validation-generator.ts +46 -0
  351. package/libs/instance-factories/validation/zod.yaml +56 -0
  352. package/libs/instance-factories/views/index.d.ts +13 -0
  353. package/libs/instance-factories/views/index.d.ts.map +1 -0
  354. package/libs/instance-factories/views/index.js +18 -0
  355. package/libs/instance-factories/views/index.js.map +1 -0
  356. package/libs/instance-factories/views/index.ts +45 -0
  357. package/libs/instance-factories/views/react-components.yaml +129 -0
  358. package/libs/instance-factories/views/templates/ARCHITECTURE.md +198 -0
  359. package/libs/instance-factories/views/templates/react/adapters/antd-adapter.ts +869 -0
  360. package/libs/instance-factories/views/templates/react/adapters/mui-adapter.ts +953 -0
  361. package/libs/instance-factories/views/templates/react/adapters/shadcn-adapter.ts +806 -0
  362. package/libs/instance-factories/views/templates/react/app-generator.ts +55 -0
  363. package/libs/instance-factories/views/templates/react/components-generator.ts +391 -0
  364. package/libs/instance-factories/views/templates/react/forms-generator.ts +343 -0
  365. package/libs/instance-factories/views/templates/react/frontend-package-json-generator.ts +54 -0
  366. package/libs/instance-factories/views/templates/react/hooks-generator.ts +122 -0
  367. package/libs/instance-factories/views/templates/react/index-css-generator.ts +209 -0
  368. package/libs/instance-factories/views/templates/react/index-html-generator.ts +34 -0
  369. package/libs/instance-factories/views/templates/react/main-tsx-generator.ts +29 -0
  370. package/libs/instance-factories/views/templates/react/react-component-generator.d.ts +152 -0
  371. package/libs/instance-factories/views/templates/react/react-component-generator.d.ts.map +1 -0
  372. package/libs/instance-factories/views/templates/react/react-component-generator.js +398 -0
  373. package/libs/instance-factories/views/templates/react/react-component-generator.js.map +1 -0
  374. package/libs/instance-factories/views/templates/react/react-component-generator.ts +533 -0
  375. package/libs/instance-factories/views/templates/react/router-generator.ts +197 -0
  376. package/libs/instance-factories/views/templates/react/router-generic-generator.ts +103 -0
  377. package/libs/instance-factories/views/templates/react/spec-json-generator.ts +17 -0
  378. package/libs/instance-factories/views/templates/react/types-generator.ts +76 -0
  379. package/libs/instance-factories/views/templates/react/views-metadata-generator.ts +42 -0
  380. package/libs/instance-factories/views/templates/react/vite-config-generator.ts +38 -0
  381. package/libs/instance-factories/views/templates/runtime/runtime-view-renderer.d.ts.map +1 -0
  382. package/libs/instance-factories/views/templates/runtime/runtime-view-renderer.js.map +1 -0
  383. package/libs/instance-factories/views/templates/runtime/runtime-view-renderer.ts +474 -0
  384. package/libs/instance-factories/views/templates/shared/__tests__/composite-patterns.test.ts +242 -0
  385. package/libs/instance-factories/views/templates/shared/adapter-types.d.ts +77 -0
  386. package/libs/instance-factories/views/templates/shared/adapter-types.d.ts.map +1 -0
  387. package/libs/instance-factories/views/templates/shared/adapter-types.js +47 -0
  388. package/libs/instance-factories/views/templates/shared/adapter-types.js.map +1 -0
  389. package/libs/instance-factories/views/templates/shared/adapter-types.ts +142 -0
  390. package/libs/instance-factories/views/templates/shared/atomic-components-registry.d.ts +63 -0
  391. package/libs/instance-factories/views/templates/shared/atomic-components-registry.d.ts.map +1 -0
  392. package/libs/instance-factories/views/templates/shared/atomic-components-registry.js +822 -0
  393. package/libs/instance-factories/views/templates/shared/atomic-components-registry.js.map +1 -0
  394. package/libs/instance-factories/views/templates/shared/atomic-components-registry.ts +908 -0
  395. package/libs/instance-factories/views/templates/shared/base-generator.d.ts +247 -0
  396. package/libs/instance-factories/views/templates/shared/base-generator.d.ts.map +1 -0
  397. package/libs/instance-factories/views/templates/shared/base-generator.js +363 -0
  398. package/libs/instance-factories/views/templates/shared/base-generator.js.map +1 -0
  399. package/libs/instance-factories/views/templates/shared/base-generator.ts +608 -0
  400. package/libs/instance-factories/views/templates/shared/component-metadata.d.ts +254 -0
  401. package/libs/instance-factories/views/templates/shared/component-metadata.d.ts.map +1 -0
  402. package/libs/instance-factories/views/templates/shared/component-metadata.js +602 -0
  403. package/libs/instance-factories/views/templates/shared/component-metadata.js.map +1 -0
  404. package/libs/instance-factories/views/templates/shared/component-metadata.ts +803 -0
  405. package/libs/instance-factories/views/templates/shared/composite-pattern-types.ts +250 -0
  406. package/libs/instance-factories/views/templates/shared/composite-patterns.ts +535 -0
  407. package/libs/instance-factories/views/templates/shared/index.ts +68 -0
  408. package/libs/instance-factories/views/templates/shared/pattern-validator.ts +279 -0
  409. package/libs/instance-factories/views/templates/shared/property-mapper.d.ts +149 -0
  410. package/libs/instance-factories/views/templates/shared/property-mapper.d.ts.map +1 -0
  411. package/libs/instance-factories/views/templates/shared/property-mapper.js +580 -0
  412. package/libs/instance-factories/views/templates/shared/property-mapper.js.map +1 -0
  413. package/libs/instance-factories/views/templates/shared/property-mapper.ts +700 -0
  414. package/libs/instance-factories/views/templates/shared/syntax-mapper.d.ts +143 -0
  415. package/libs/instance-factories/views/templates/shared/syntax-mapper.d.ts.map +1 -0
  416. package/libs/instance-factories/views/templates/shared/syntax-mapper.js +420 -0
  417. package/libs/instance-factories/views/templates/shared/syntax-mapper.js.map +1 -0
  418. package/libs/instance-factories/views/templates/shared/syntax-mapper.ts +539 -0
  419. package/package.json +42 -0
  420. package/schema/SPECVERSE-SCHEMA.json +4274 -0
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Base Generator - Abstract Class for Framework Generators
3
+ *
4
+ * Provides shared functionality for React, Vue, Svelte, Angular, and Runtime generators.
5
+ * Enforces architectural constraints (nesting depth, state management) while allowing
6
+ * framework-specific implementation details.
7
+ *
8
+ * Architecture:
9
+ * - Shared: Component tree rendering, property mapping, nesting enforcement
10
+ * - Abstract: Syntax generation, file structure, imports (framework-specific)
11
+ * - Constraints: MAX_DEPTH = 3, basic state only, common properties only
12
+ */
13
+ import { PropertyTarget } from './property-mapper.js';
14
+ import { FrameworkTarget } from './syntax-mapper.js';
15
+ import { AtomicComponentDefinition } from './atomic-components-registry.js';
16
+ import type { ComponentAdapter } from './adapter-types.js';
17
+ /**
18
+ * UI Component specification from SpecVerse view definition
19
+ */
20
+ export interface UIComponent {
21
+ type: string;
22
+ properties?: Record<string, any>;
23
+ children?: UIComponent[];
24
+ dataSource?: string;
25
+ condition?: string;
26
+ }
27
+ /**
28
+ * View specification from SpecVerse
29
+ */
30
+ export interface ViewSpec {
31
+ name: string;
32
+ description?: string;
33
+ components: Record<string, UIComponent>;
34
+ state?: Record<string, StateDefinition>;
35
+ events?: Record<string, EventDefinition>;
36
+ }
37
+ /**
38
+ * State variable definition
39
+ */
40
+ export interface StateDefinition {
41
+ type: string;
42
+ initial: any;
43
+ description?: string;
44
+ }
45
+ /**
46
+ * Event handler definition
47
+ */
48
+ export interface EventDefinition {
49
+ params?: string;
50
+ body: string;
51
+ description?: string;
52
+ }
53
+ /**
54
+ * Component rendering context
55
+ */
56
+ export interface RenderContext {
57
+ depth: number;
58
+ path: string[];
59
+ parentComponent?: string;
60
+ dataContext?: string;
61
+ }
62
+ /**
63
+ * Generation result
64
+ */
65
+ export interface GenerationResult {
66
+ code: string;
67
+ imports: string[];
68
+ warnings: string[];
69
+ }
70
+ /**
71
+ * Generator configuration
72
+ */
73
+ export interface GeneratorConfig {
74
+ target: PropertyTarget;
75
+ framework: FrameworkTarget;
76
+ maxDepth?: number;
77
+ enableWarnings?: boolean;
78
+ }
79
+ /**
80
+ * Base generator for all framework implementations
81
+ *
82
+ * Provides shared logic for:
83
+ * - Component tree rendering with depth enforcement
84
+ * - Property mapping via property-mapper
85
+ * - Nesting validation and flattening
86
+ * - State and event management
87
+ *
88
+ * Framework-specific subclasses must implement:
89
+ * - generateImports(): Framework-specific import statements
90
+ * - generateComponent(): Framework-specific component structure
91
+ * - generateState(): Framework-specific state declarations
92
+ * - generateEvents(): Framework-specific event handlers
93
+ */
94
+ export declare abstract class BaseComponentGenerator {
95
+ protected readonly config: GeneratorConfig;
96
+ protected readonly adapter: ComponentAdapter;
97
+ protected readonly MAX_DEPTH: number;
98
+ protected readonly ENABLE_WARNINGS: boolean;
99
+ protected warnings: string[];
100
+ protected imports: Set<string>;
101
+ constructor(adapter: ComponentAdapter, config: GeneratorConfig);
102
+ /**
103
+ * Generate code for a complete view specification
104
+ *
105
+ * @param viewSpec - View specification from SpecVerse
106
+ * @returns Generation result with code, imports, and warnings
107
+ */
108
+ generate(viewSpec: ViewSpec): GenerationResult;
109
+ /**
110
+ * Render all components in the view
111
+ */
112
+ protected generateComponentTree(components: Record<string, UIComponent>): string;
113
+ /**
114
+ * Render a single component with depth tracking and nesting enforcement
115
+ *
116
+ * This is the core shared logic - applies to ALL frameworks
117
+ */
118
+ protected renderComponent(component: UIComponent, context: RenderContext): string;
119
+ /**
120
+ * Map component properties using property-mapper
121
+ */
122
+ protected mapComponentProperties(component: UIComponent, componentDef: AtomicComponentDefinition): Record<string, any>;
123
+ /**
124
+ * Render child components with incremented depth
125
+ */
126
+ protected renderChildren(children: UIComponent[], parentContext: RenderContext): string;
127
+ /**
128
+ * Render conditional component using syntax-mapper
129
+ */
130
+ protected renderConditional(component: UIComponent, mappedProps: Record<string, any>, context: RenderContext): string;
131
+ /**
132
+ * Render list (loop) component using syntax-mapper
133
+ */
134
+ protected renderList(component: UIComponent, mappedProps: Record<string, any>, context: RenderContext): string;
135
+ /**
136
+ * Flatten component when depth exceeded
137
+ *
138
+ * Extracts nested children into sibling components to reduce nesting
139
+ */
140
+ protected renderFlattened(component: UIComponent, context: RenderContext): string;
141
+ /**
142
+ * Delegate to adapter for actual component rendering
143
+ */
144
+ protected renderAdapterComponent(type: string, properties: Record<string, any>, children: string | undefined, context: RenderContext): string;
145
+ /**
146
+ * Get component name for import/usage
147
+ */
148
+ protected getComponentName(type: string): string;
149
+ /**
150
+ * Get item variable name for loop rendering
151
+ */
152
+ protected getItemName(dataSource: string): string;
153
+ /**
154
+ * Get key property for list items
155
+ */
156
+ protected getKeyProperty(component: UIComponent): string;
157
+ /**
158
+ * Format properties for inline rendering
159
+ */
160
+ protected formatProps(properties: Record<string, any>): string;
161
+ /**
162
+ * Add warning message
163
+ */
164
+ protected addWarning(message: string): void;
165
+ /**
166
+ * Reset generator state for new generation
167
+ */
168
+ protected reset(): void;
169
+ /**
170
+ * Add import statement
171
+ */
172
+ protected addImport(importStatement: string): void;
173
+ /**
174
+ * Generate import statements for the framework
175
+ *
176
+ * @param viewSpec - View specification
177
+ * @returns Import statements code
178
+ */
179
+ protected abstract generateImports(viewSpec: ViewSpec): string;
180
+ /**
181
+ * Generate complete component code with framework-specific structure
182
+ *
183
+ * @param parts - Component parts (imports, state, events, components)
184
+ * @returns Complete component code
185
+ */
186
+ protected abstract generateComponent(parts: {
187
+ name: string;
188
+ imports: string;
189
+ state: string;
190
+ events: string;
191
+ components: string;
192
+ }): string;
193
+ /**
194
+ * Generate state declarations using framework-specific syntax
195
+ *
196
+ * @param state - State definitions
197
+ * @returns State declaration code
198
+ */
199
+ protected abstract generateState(state: Record<string, StateDefinition>): string;
200
+ /**
201
+ * Generate event handlers using framework-specific syntax
202
+ *
203
+ * @param events - Event definitions
204
+ * @returns Event handler code
205
+ */
206
+ protected abstract generateEvents(events: Record<string, EventDefinition>): string;
207
+ /**
208
+ * Get file extension for the framework
209
+ *
210
+ * @returns File extension (e.g., '.tsx', '.vue', '.svelte')
211
+ */
212
+ abstract getFileExtension(): string;
213
+ /**
214
+ * Get additional files that need to be generated (e.g., CSS, types)
215
+ *
216
+ * @param viewSpec - View specification
217
+ * @returns Map of filename to content
218
+ */
219
+ abstract getAdditionalFiles(viewSpec: ViewSpec): Record<string, string>;
220
+ }
221
+ /**
222
+ * Validate component nesting depth
223
+ *
224
+ * @param component - Component to validate
225
+ * @param maxDepth - Maximum allowed depth
226
+ * @returns Validation result with depth and issues
227
+ */
228
+ export declare function validateNestingDepth(component: UIComponent, maxDepth?: number): {
229
+ valid: boolean;
230
+ actualDepth: number;
231
+ issues: string[];
232
+ };
233
+ /**
234
+ * Extract all component types used in a view
235
+ *
236
+ * @param components - Component tree
237
+ * @returns Set of component types
238
+ */
239
+ export declare function extractComponentTypes(components: Record<string, UIComponent>): Set<string>;
240
+ /**
241
+ * Count total components in a view
242
+ *
243
+ * @param components - Component tree
244
+ * @returns Component count
245
+ */
246
+ export declare function countComponents(components: Record<string, UIComponent>): number;
247
+ //# sourceMappingURL=base-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-generator.d.ts","sourceRoot":"","sources":["base-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,363 @@
1
+ /**
2
+ * Base Generator - Abstract Class for Framework Generators
3
+ *
4
+ * Provides shared functionality for React, Vue, Svelte, Angular, and Runtime generators.
5
+ * Enforces architectural constraints (nesting depth, state management) while allowing
6
+ * framework-specific implementation details.
7
+ *
8
+ * Architecture:
9
+ * - Shared: Component tree rendering, property mapping, nesting enforcement
10
+ * - Abstract: Syntax generation, file structure, imports (framework-specific)
11
+ * - Constraints: MAX_DEPTH = 3, basic state only, common properties only
12
+ */
13
+ import { mapProperties } from './property-mapper.js';
14
+ import { getSyntaxPattern } from './syntax-mapper.js';
15
+ import { ATOMIC_COMPONENTS_REGISTRY } from './atomic-components-registry.js';
16
+ // ============================================================================
17
+ // Base Generator Abstract Class
18
+ // ============================================================================
19
+ /**
20
+ * Base generator for all framework implementations
21
+ *
22
+ * Provides shared logic for:
23
+ * - Component tree rendering with depth enforcement
24
+ * - Property mapping via property-mapper
25
+ * - Nesting validation and flattening
26
+ * - State and event management
27
+ *
28
+ * Framework-specific subclasses must implement:
29
+ * - generateImports(): Framework-specific import statements
30
+ * - generateComponent(): Framework-specific component structure
31
+ * - generateState(): Framework-specific state declarations
32
+ * - generateEvents(): Framework-specific event handlers
33
+ */
34
+ export class BaseComponentGenerator {
35
+ // Configuration
36
+ config;
37
+ adapter;
38
+ // Architectural constraints
39
+ MAX_DEPTH;
40
+ ENABLE_WARNINGS;
41
+ // Tracking
42
+ warnings = [];
43
+ imports = new Set();
44
+ constructor(adapter, config) {
45
+ this.adapter = adapter;
46
+ this.config = config;
47
+ this.MAX_DEPTH = config.maxDepth ?? 3;
48
+ this.ENABLE_WARNINGS = config.enableWarnings ?? true;
49
+ }
50
+ // ============================================================================
51
+ // Public API
52
+ // ============================================================================
53
+ /**
54
+ * Generate code for a complete view specification
55
+ *
56
+ * @param viewSpec - View specification from SpecVerse
57
+ * @returns Generation result with code, imports, and warnings
58
+ */
59
+ generate(viewSpec) {
60
+ this.reset();
61
+ // Generate imports
62
+ const importStatements = this.generateImports(viewSpec);
63
+ // Generate state declarations
64
+ const stateCode = viewSpec.state
65
+ ? this.generateState(viewSpec.state)
66
+ : '';
67
+ // Generate event handlers
68
+ const eventsCode = viewSpec.events
69
+ ? this.generateEvents(viewSpec.events)
70
+ : '';
71
+ // Generate component tree
72
+ const componentsCode = this.generateComponentTree(viewSpec.components);
73
+ // Generate complete component
74
+ const code = this.generateComponent({
75
+ name: viewSpec.name,
76
+ imports: importStatements,
77
+ state: stateCode,
78
+ events: eventsCode,
79
+ components: componentsCode
80
+ });
81
+ return {
82
+ code,
83
+ imports: Array.from(this.imports),
84
+ warnings: this.warnings
85
+ };
86
+ }
87
+ // ============================================================================
88
+ // Shared Component Rendering (Framework-Agnostic)
89
+ // ============================================================================
90
+ /**
91
+ * Render all components in the view
92
+ */
93
+ generateComponentTree(components) {
94
+ const rendered = Object.entries(components).map(([name, component]) => {
95
+ return this.renderComponent(component, {
96
+ depth: 0,
97
+ path: [name],
98
+ dataContext: undefined
99
+ });
100
+ });
101
+ return rendered.join('\n\n');
102
+ }
103
+ /**
104
+ * Render a single component with depth tracking and nesting enforcement
105
+ *
106
+ * This is the core shared logic - applies to ALL frameworks
107
+ */
108
+ renderComponent(component, context) {
109
+ // Depth enforcement
110
+ if (context.depth > this.MAX_DEPTH) {
111
+ this.addWarning(`Component at path ${context.path.join('.')} exceeds max depth (${this.MAX_DEPTH}). ` +
112
+ `Flattening to maintain readability.`);
113
+ return this.renderFlattened(component, context);
114
+ }
115
+ // Get component definition from registry
116
+ const componentDef = ATOMIC_COMPONENTS_REGISTRY[component.type];
117
+ if (!componentDef) {
118
+ this.addWarning(`Unknown component type: ${component.type}`);
119
+ return `<!-- Unknown component: ${component.type} -->`;
120
+ }
121
+ // Map properties to target framework
122
+ const mappedProps = this.mapComponentProperties(component, componentDef);
123
+ // Handle conditional rendering
124
+ if (component.condition) {
125
+ return this.renderConditional(component, mappedProps, context);
126
+ }
127
+ // Handle list rendering (dataSource)
128
+ if (component.dataSource) {
129
+ return this.renderList(component, mappedProps, context);
130
+ }
131
+ // Handle children
132
+ const children = component.children
133
+ ? this.renderChildren(component.children, context)
134
+ : undefined;
135
+ // Delegate to adapter for framework-specific rendering
136
+ return this.renderAdapterComponent(component.type, mappedProps, children, context);
137
+ }
138
+ /**
139
+ * Map component properties using property-mapper
140
+ */
141
+ mapComponentProperties(component, componentDef) {
142
+ if (!component.properties) {
143
+ return {};
144
+ }
145
+ return mapProperties(component.type, component.properties, this.config.target);
146
+ }
147
+ /**
148
+ * Render child components with incremented depth
149
+ */
150
+ renderChildren(children, parentContext) {
151
+ const childContext = {
152
+ ...parentContext,
153
+ depth: parentContext.depth + 1
154
+ };
155
+ return children
156
+ .map((child, index) => {
157
+ const childPath = [...parentContext.path, `child_${index}`];
158
+ return this.renderComponent(child, {
159
+ ...childContext,
160
+ path: childPath
161
+ });
162
+ })
163
+ .join('\n');
164
+ }
165
+ /**
166
+ * Render conditional component using syntax-mapper
167
+ */
168
+ renderConditional(component, mappedProps, context) {
169
+ const innerComponent = this.renderAdapterComponent(component.type, mappedProps, component.children
170
+ ? this.renderChildren(component.children, context)
171
+ : undefined, context);
172
+ // Use syntax-mapper for framework-specific conditional syntax
173
+ return getSyntaxPattern('conditionalRender', this.config.framework, {
174
+ condition: component.condition,
175
+ Component: this.getComponentName(component.type),
176
+ props: this.formatProps(mappedProps)
177
+ });
178
+ }
179
+ /**
180
+ * Render list (loop) component using syntax-mapper
181
+ */
182
+ renderList(component, mappedProps, context) {
183
+ const itemName = this.getItemName(component.dataSource);
184
+ const keyProperty = this.getKeyProperty(component);
185
+ // Create child context with data variable
186
+ const childContext = {
187
+ ...context,
188
+ depth: context.depth + 1,
189
+ dataContext: itemName
190
+ };
191
+ // Use syntax-mapper for framework-specific loop syntax
192
+ return getSyntaxPattern('loopRender', this.config.framework, {
193
+ array: component.dataSource,
194
+ item: itemName,
195
+ key: keyProperty,
196
+ Component: this.getComponentName(component.type)
197
+ });
198
+ }
199
+ /**
200
+ * Flatten component when depth exceeded
201
+ *
202
+ * Extracts nested children into sibling components to reduce nesting
203
+ */
204
+ renderFlattened(component, context) {
205
+ // Render component without children
206
+ const componentDef = ATOMIC_COMPONENTS_REGISTRY[component.type];
207
+ const mappedProps = this.mapComponentProperties(component, componentDef);
208
+ const flatComponent = this.renderAdapterComponent(component.type, mappedProps, undefined, // No children
209
+ context);
210
+ // Render children as siblings (extracted)
211
+ const flattenedChildren = component.children
212
+ ? component.children.map((child, index) => {
213
+ return this.renderComponent(child, {
214
+ depth: context.depth, // Same depth (sibling)
215
+ path: [...context.path, `flattened_${index}`]
216
+ });
217
+ }).join('\n')
218
+ : '';
219
+ return flatComponent + '\n' + flattenedChildren;
220
+ }
221
+ /**
222
+ * Delegate to adapter for actual component rendering
223
+ */
224
+ renderAdapterComponent(type, properties, children, context) {
225
+ const adapterComponent = this.adapter.components[type];
226
+ if (!adapterComponent) {
227
+ this.addWarning(`Adapter missing component: ${type}`);
228
+ return `<!-- Missing adapter for: ${type} -->`;
229
+ }
230
+ return adapterComponent.render({
231
+ properties,
232
+ children,
233
+ context: {
234
+ depth: context.depth,
235
+ dataContext: context.dataContext
236
+ }
237
+ });
238
+ }
239
+ // ============================================================================
240
+ // Helper Methods
241
+ // ============================================================================
242
+ /**
243
+ * Get component name for import/usage
244
+ */
245
+ getComponentName(type) {
246
+ const componentDef = ATOMIC_COMPONENTS_REGISTRY[type];
247
+ return componentDef?.name || type.charAt(0).toUpperCase() + type.slice(1);
248
+ }
249
+ /**
250
+ * Get item variable name for loop rendering
251
+ */
252
+ getItemName(dataSource) {
253
+ // Convert "users" -> "user", "items" -> "item"
254
+ if (dataSource.endsWith('s')) {
255
+ return dataSource.slice(0, -1);
256
+ }
257
+ return dataSource + 'Item';
258
+ }
259
+ /**
260
+ * Get key property for list items
261
+ */
262
+ getKeyProperty(component) {
263
+ return component.properties?.keyProperty || 'id';
264
+ }
265
+ /**
266
+ * Format properties for inline rendering
267
+ */
268
+ formatProps(properties) {
269
+ return Object.entries(properties)
270
+ .map(([key, value]) => {
271
+ if (typeof value === 'string') {
272
+ return `${key}="${value}"`;
273
+ }
274
+ return `${key}={${JSON.stringify(value)}}`;
275
+ })
276
+ .join(' ');
277
+ }
278
+ /**
279
+ * Add warning message
280
+ */
281
+ addWarning(message) {
282
+ if (this.ENABLE_WARNINGS) {
283
+ this.warnings.push(message);
284
+ }
285
+ }
286
+ /**
287
+ * Reset generator state for new generation
288
+ */
289
+ reset() {
290
+ this.warnings = [];
291
+ this.imports = new Set();
292
+ }
293
+ /**
294
+ * Add import statement
295
+ */
296
+ addImport(importStatement) {
297
+ this.imports.add(importStatement);
298
+ }
299
+ }
300
+ // ============================================================================
301
+ // Utility Functions
302
+ // ============================================================================
303
+ /**
304
+ * Validate component nesting depth
305
+ *
306
+ * @param component - Component to validate
307
+ * @param maxDepth - Maximum allowed depth
308
+ * @returns Validation result with depth and issues
309
+ */
310
+ export function validateNestingDepth(component, maxDepth = 3) {
311
+ const issues = [];
312
+ function calculateDepth(comp, currentDepth) {
313
+ if (!comp.children || comp.children.length === 0) {
314
+ return currentDepth;
315
+ }
316
+ const childDepths = comp.children.map(child => calculateDepth(child, currentDepth + 1));
317
+ return Math.max(...childDepths);
318
+ }
319
+ const actualDepth = calculateDepth(component, 0);
320
+ if (actualDepth > maxDepth) {
321
+ issues.push(`Component nesting depth (${actualDepth}) exceeds maximum (${maxDepth})`);
322
+ }
323
+ return {
324
+ valid: actualDepth <= maxDepth,
325
+ actualDepth,
326
+ issues
327
+ };
328
+ }
329
+ /**
330
+ * Extract all component types used in a view
331
+ *
332
+ * @param components - Component tree
333
+ * @returns Set of component types
334
+ */
335
+ export function extractComponentTypes(components) {
336
+ const types = new Set();
337
+ function walk(component) {
338
+ types.add(component.type);
339
+ if (component.children) {
340
+ component.children.forEach(walk);
341
+ }
342
+ }
343
+ Object.values(components).forEach(walk);
344
+ return types;
345
+ }
346
+ /**
347
+ * Count total components in a view
348
+ *
349
+ * @param components - Component tree
350
+ * @returns Component count
351
+ */
352
+ export function countComponents(components) {
353
+ let count = 0;
354
+ function walk(component) {
355
+ count++;
356
+ if (component.children) {
357
+ component.children.forEach(walk);
358
+ }
359
+ }
360
+ Object.values(components).forEach(walk);
361
+ return count;
362
+ }
363
+ //# sourceMappingURL=base-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-generator.js","sourceRoot":"","sources":["base-generator.ts"],"names":[],"mappings":"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"}