zudojs-cli 0.1.2 → 1.1.0

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 (469) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +26 -3
  3. package/dist/src/adapters/databases/postgres.adapter.d.ts +0 -14
  4. package/dist/src/adapters/databases/postgres.adapter.js +0 -30
  5. package/dist/src/adapters/frontend/angular.adapter.js +6 -0
  6. package/dist/src/adapters/frontend/astro.adapter.js +2 -2
  7. package/dist/src/adapters/frontend/frontendAdapter.type.d.ts +6 -0
  8. package/dist/src/adapters/frontend/react.adapter.js +26 -17
  9. package/dist/src/adapters/frontend/svelte.adapter.js +1 -0
  10. package/dist/src/adapters/frontend/sveltekit.adapter.js +7 -8
  11. package/dist/src/adapters/frontend/vanilla.adapter.js +1 -1
  12. package/dist/src/adapters/frontend/vue.adapter.js +1 -0
  13. package/dist/src/adapters/package-managers/bun.adapter.js +5 -5
  14. package/dist/src/adapters/package-managers/npm.adapter.js +5 -5
  15. package/dist/src/adapters/package-managers/pnpm.adapter.js +5 -5
  16. package/dist/src/adapters/package-managers/yarn.adapter.js +5 -5
  17. package/dist/src/bin/zudojs.js +23 -11
  18. package/dist/src/cliApplication/cliApplication.builtins.d.ts +11 -2
  19. package/dist/src/cliApplication/cliApplication.builtins.js +15 -4
  20. package/dist/src/cliApplication/cliApplication.core.js +22 -7
  21. package/dist/src/cliApplication/cliApplication.logger.d.ts +28 -0
  22. package/dist/src/cliApplication/cliApplication.logger.js +68 -0
  23. package/dist/src/cliApplication/index.d.ts +1 -3
  24. package/dist/src/cliApplication/index.js +1 -3
  25. package/dist/src/cliConstant/cliConstant.value.d.ts +1 -1
  26. package/dist/src/cliConstant/cliConstant.value.js +2 -1
  27. package/dist/src/cliConstant/cliVersion.d.ts +16 -0
  28. package/dist/src/cliConstant/cliVersion.js +57 -0
  29. package/dist/src/cliParser/cliParser.core.js +7 -0
  30. package/dist/src/cliParser/cliParser.shortOption.js +1 -1
  31. package/dist/src/cliVersion/cliVersion.update.d.ts +38 -0
  32. package/dist/src/cliVersion/cliVersion.update.js +63 -0
  33. package/dist/src/cliVersion/index.d.ts +2 -1
  34. package/dist/src/cliVersion/index.js +2 -1
  35. package/dist/src/commands/add.command.d.ts +29 -0
  36. package/dist/src/commands/add.command.js +95 -107
  37. package/dist/src/commands/build.command.d.ts +8 -0
  38. package/dist/src/commands/build.command.js +24 -24
  39. package/dist/src/commands/create.command.js +176 -55
  40. package/dist/src/commands/dev.command.d.ts +30 -2
  41. package/dist/src/commands/dev.command.js +106 -150
  42. package/dist/src/commands/doctor.command.d.ts +18 -0
  43. package/dist/src/commands/doctor.command.js +160 -110
  44. package/dist/src/commands/generate.command.d.ts +2 -1
  45. package/dist/src/commands/generate.command.js +91 -41
  46. package/dist/src/commands/info.command.js +61 -30
  47. package/dist/src/constants/index.d.ts +19 -1
  48. package/dist/src/constants/index.js +32 -1
  49. package/dist/src/generators/command/command.generator.d.ts +1 -0
  50. package/dist/src/generators/command/command.generator.js +10 -4
  51. package/dist/src/generators/controller/controller.generator.d.ts +1 -0
  52. package/dist/src/generators/controller/controller.generator.js +12 -9
  53. package/dist/src/generators/dto/dto.generator.d.ts +1 -0
  54. package/dist/src/generators/dto/dto.generator.js +9 -3
  55. package/dist/src/generators/event/event.generator.d.ts +1 -0
  56. package/dist/src/generators/event/event.generator.js +10 -4
  57. package/dist/src/generators/frontend/frontendGenerator.core.d.ts +2 -0
  58. package/dist/src/generators/frontend/frontendGenerator.core.js +14 -27
  59. package/dist/src/generators/frontend/frontendPipeline.d.ts +26 -0
  60. package/dist/src/generators/frontend/frontendPipeline.js +136 -0
  61. package/dist/src/generators/fullstack/fullstackComposer.core.d.ts +3 -2
  62. package/dist/src/generators/fullstack/fullstackComposer.core.js +58 -43
  63. package/dist/src/generators/infrastructure/infrastructure.generator.d.ts +11 -0
  64. package/dist/src/generators/infrastructure/infrastructure.generator.js +101 -61
  65. package/dist/src/generators/integration/integrationGenerator.core.d.ts +6 -0
  66. package/dist/src/generators/integration/integrationGenerator.core.js +35 -6
  67. package/dist/src/generators/job/job.generator.d.ts +1 -0
  68. package/dist/src/generators/job/job.generator.js +9 -3
  69. package/dist/src/generators/middleware/middleware.generator.d.ts +1 -0
  70. package/dist/src/generators/middleware/middleware.generator.js +10 -4
  71. package/dist/src/generators/model/model.generator.d.ts +1 -0
  72. package/dist/src/generators/model/model.generator.js +9 -3
  73. package/dist/src/generators/module/module.generator.d.ts +1 -0
  74. package/dist/src/generators/module/module.generator.js +11 -24
  75. package/dist/src/generators/project/project.generator.js +2 -23
  76. package/dist/src/generators/query/query.generator.d.ts +1 -0
  77. package/dist/src/generators/query/query.generator.js +10 -4
  78. package/dist/src/generators/repository/repository.generator.d.ts +1 -0
  79. package/dist/src/generators/repository/repository.generator.js +12 -9
  80. package/dist/src/generators/route/route.generator.d.ts +1 -0
  81. package/dist/src/generators/route/route.generator.js +11 -5
  82. package/dist/src/generators/service/service.generator.d.ts +1 -0
  83. package/dist/src/generators/service/service.generator.js +12 -9
  84. package/dist/src/generators/validator/validator.generator.d.ts +1 -0
  85. package/dist/src/generators/validator/validator.generator.js +9 -3
  86. package/dist/src/index.d.ts +3 -2
  87. package/dist/src/index.js +3 -2
  88. package/dist/src/installers/dependency.installer.d.ts +9 -0
  89. package/dist/src/installers/dependency.installer.js +27 -2
  90. package/dist/src/installers/index.d.ts +1 -3
  91. package/dist/src/installers/index.js +1 -3
  92. package/dist/src/manifest/manifestManager.core.d.ts +3 -0
  93. package/dist/src/prompts/backend/index.d.ts +1 -0
  94. package/dist/src/prompts/backend/index.js +1 -0
  95. package/dist/src/prompts/backend/services.prompt.d.ts +7 -0
  96. package/dist/src/prompts/backend/services.prompt.js +39 -0
  97. package/dist/src/prompts/index.d.ts +0 -1
  98. package/dist/src/prompts/index.js +0 -1
  99. package/dist/src/resolvers/architecture.resolver.d.ts +11 -1
  100. package/dist/src/resolvers/architecture.resolver.js +12 -13
  101. package/dist/src/resolvers/configuration/configurationResolver.core.d.ts +10 -1
  102. package/dist/src/resolvers/configuration/configurationResolver.core.js +68 -29
  103. package/dist/src/resolvers/index.d.ts +1 -0
  104. package/dist/src/resolvers/index.js +1 -0
  105. package/dist/src/resolvers/layout/index.d.ts +5 -0
  106. package/dist/src/resolvers/layout/index.js +5 -0
  107. package/dist/src/resolvers/layout/projectLayout.core.d.ts +60 -0
  108. package/dist/src/resolvers/layout/projectLayout.core.js +236 -0
  109. package/dist/src/resolvers/project.resolver.d.ts +5 -0
  110. package/dist/src/resolvers/project.resolver.js +10 -6
  111. package/dist/src/rollback/rollbackManager.core.js +0 -1
  112. package/dist/src/runners/process/processRunner.core.d.ts +4 -0
  113. package/dist/src/runners/process/processRunner.core.js +17 -3
  114. package/dist/src/scaffolders/framework.scaffolder.js +9 -6
  115. package/dist/src/scaffolders/scaffolder.helper.js +7 -2
  116. package/dist/src/templates/microservice/index.d.ts +1 -1
  117. package/dist/src/templates/microservice/index.js +1 -1
  118. package/dist/src/templates/microservice/microservice.template.d.ts +14 -0
  119. package/dist/src/templates/microservice/microservice.template.js +140 -162
  120. package/dist/src/templates/modular-monolith/modularMonolith.template.d.ts +0 -1
  121. package/dist/src/templates/modular-monolith/modularMonolith.template.js +43 -77
  122. package/dist/src/templates/monolith/monolith.template.d.ts +1 -1
  123. package/dist/src/templates/monolith/monolith.template.js +46 -69
  124. package/dist/src/templates/shared/appRuntime.template.d.ts +60 -0
  125. package/dist/src/templates/shared/appRuntime.template.js +189 -0
  126. package/dist/src/templates/shared/index.d.ts +6 -0
  127. package/dist/src/templates/shared/index.js +6 -0
  128. package/dist/src/templates/shared/pnpm.template.d.ts +27 -0
  129. package/dist/src/templates/shared/pnpm.template.js +57 -0
  130. package/dist/src/utils/index.d.ts +3 -3
  131. package/dist/src/utils/index.js +3 -3
  132. package/dist/src/utils/utils.detect.d.ts +9 -0
  133. package/dist/src/utils/utils.detect.js +11 -11
  134. package/dist/src/utils/utils.exec.d.ts +35 -1
  135. package/dist/src/utils/utils.exec.js +99 -4
  136. package/dist/src/utils/utils.fileSystem.d.ts +6 -0
  137. package/dist/src/utils/utils.fileSystem.js +19 -0
  138. package/dist/src/utils/utils.name.d.ts +26 -0
  139. package/dist/src/utils/utils.name.js +51 -1
  140. package/package.json +32 -23
  141. package/dist/.tsbuildinfo +0 -1
  142. package/dist/src/adapters/databases/index.d.ts.map +0 -1
  143. package/dist/src/adapters/databases/index.js.map +0 -1
  144. package/dist/src/adapters/databases/mysql.adapter.d.ts.map +0 -1
  145. package/dist/src/adapters/databases/mysql.adapter.js.map +0 -1
  146. package/dist/src/adapters/databases/postgres.adapter.d.ts.map +0 -1
  147. package/dist/src/adapters/databases/postgres.adapter.js.map +0 -1
  148. package/dist/src/adapters/databases/sqlite.adapter.d.ts.map +0 -1
  149. package/dist/src/adapters/databases/sqlite.adapter.js.map +0 -1
  150. package/dist/src/adapters/frontend/angular.adapter.d.ts.map +0 -1
  151. package/dist/src/adapters/frontend/angular.adapter.js.map +0 -1
  152. package/dist/src/adapters/frontend/astro.adapter.d.ts.map +0 -1
  153. package/dist/src/adapters/frontend/astro.adapter.js.map +0 -1
  154. package/dist/src/adapters/frontend/flutter.adapter.d.ts.map +0 -1
  155. package/dist/src/adapters/frontend/flutter.adapter.js.map +0 -1
  156. package/dist/src/adapters/frontend/frontendAdapter.type.d.ts.map +0 -1
  157. package/dist/src/adapters/frontend/frontendAdapter.type.js.map +0 -1
  158. package/dist/src/adapters/frontend/index.d.ts.map +0 -1
  159. package/dist/src/adapters/frontend/index.js.map +0 -1
  160. package/dist/src/adapters/frontend/next.adapter.d.ts.map +0 -1
  161. package/dist/src/adapters/frontend/next.adapter.js.map +0 -1
  162. package/dist/src/adapters/frontend/nuxt.adapter.d.ts.map +0 -1
  163. package/dist/src/adapters/frontend/nuxt.adapter.js.map +0 -1
  164. package/dist/src/adapters/frontend/react-native.adapter.d.ts.map +0 -1
  165. package/dist/src/adapters/frontend/react-native.adapter.js.map +0 -1
  166. package/dist/src/adapters/frontend/react.adapter.d.ts.map +0 -1
  167. package/dist/src/adapters/frontend/react.adapter.js.map +0 -1
  168. package/dist/src/adapters/frontend/svelte.adapter.d.ts.map +0 -1
  169. package/dist/src/adapters/frontend/svelte.adapter.js.map +0 -1
  170. package/dist/src/adapters/frontend/sveltekit.adapter.d.ts.map +0 -1
  171. package/dist/src/adapters/frontend/sveltekit.adapter.js.map +0 -1
  172. package/dist/src/adapters/frontend/vanilla.adapter.d.ts.map +0 -1
  173. package/dist/src/adapters/frontend/vanilla.adapter.js.map +0 -1
  174. package/dist/src/adapters/frontend/vue.adapter.d.ts.map +0 -1
  175. package/dist/src/adapters/frontend/vue.adapter.js.map +0 -1
  176. package/dist/src/adapters/package-managers/bun.adapter.d.ts.map +0 -1
  177. package/dist/src/adapters/package-managers/bun.adapter.js.map +0 -1
  178. package/dist/src/adapters/package-managers/index.d.ts.map +0 -1
  179. package/dist/src/adapters/package-managers/index.js.map +0 -1
  180. package/dist/src/adapters/package-managers/npm.adapter.d.ts.map +0 -1
  181. package/dist/src/adapters/package-managers/npm.adapter.js.map +0 -1
  182. package/dist/src/adapters/package-managers/packageManager.type.d.ts.map +0 -1
  183. package/dist/src/adapters/package-managers/packageManager.type.js.map +0 -1
  184. package/dist/src/adapters/package-managers/pnpm.adapter.d.ts.map +0 -1
  185. package/dist/src/adapters/package-managers/pnpm.adapter.js.map +0 -1
  186. package/dist/src/adapters/package-managers/yarn.adapter.d.ts.map +0 -1
  187. package/dist/src/adapters/package-managers/yarn.adapter.js.map +0 -1
  188. package/dist/src/bin/zudojs.d.ts.map +0 -1
  189. package/dist/src/bin/zudojs.js.map +0 -1
  190. package/dist/src/cliApplication/cliApplication.builtins.d.ts.map +0 -1
  191. package/dist/src/cliApplication/cliApplication.builtins.js.map +0 -1
  192. package/dist/src/cliApplication/cliApplication.core.d.ts.map +0 -1
  193. package/dist/src/cliApplication/cliApplication.core.js.map +0 -1
  194. package/dist/src/cliApplication/cliApplication.writer.d.ts.map +0 -1
  195. package/dist/src/cliApplication/cliApplication.writer.js.map +0 -1
  196. package/dist/src/cliApplication/index.d.ts.map +0 -1
  197. package/dist/src/cliApplication/index.js.map +0 -1
  198. package/dist/src/cliCommand/cliCommand.builder.d.ts.map +0 -1
  199. package/dist/src/cliCommand/cliCommand.builder.js.map +0 -1
  200. package/dist/src/cliCommand/cliCommand.factory.d.ts.map +0 -1
  201. package/dist/src/cliCommand/cliCommand.factory.js.map +0 -1
  202. package/dist/src/cliCommand/cliCommand.registry.d.ts.map +0 -1
  203. package/dist/src/cliCommand/cliCommand.registry.js.map +0 -1
  204. package/dist/src/cliCommand/cliCommand.validator.d.ts.map +0 -1
  205. package/dist/src/cliCommand/cliCommand.validator.js.map +0 -1
  206. package/dist/src/cliCommand/index.d.ts.map +0 -1
  207. package/dist/src/cliCommand/index.js.map +0 -1
  208. package/dist/src/cliConstant/cliConstant.value.d.ts.map +0 -1
  209. package/dist/src/cliConstant/cliConstant.value.js.map +0 -1
  210. package/dist/src/cliConstant/index.d.ts.map +0 -1
  211. package/dist/src/cliConstant/index.js.map +0 -1
  212. package/dist/src/cliError/cliError.argument.d.ts.map +0 -1
  213. package/dist/src/cliError/cliError.argument.js.map +0 -1
  214. package/dist/src/cliError/cliError.base.d.ts.map +0 -1
  215. package/dist/src/cliError/cliError.base.js.map +0 -1
  216. package/dist/src/cliError/cliError.command.d.ts.map +0 -1
  217. package/dist/src/cliError/cliError.command.js.map +0 -1
  218. package/dist/src/cliError/cliError.execution.d.ts.map +0 -1
  219. package/dist/src/cliError/cliError.execution.js.map +0 -1
  220. package/dist/src/cliError/cliError.option.d.ts.map +0 -1
  221. package/dist/src/cliError/cliError.option.js.map +0 -1
  222. package/dist/src/cliError/index.d.ts.map +0 -1
  223. package/dist/src/cliError/index.js.map +0 -1
  224. package/dist/src/cliParser/cliParser.core.d.ts.map +0 -1
  225. package/dist/src/cliParser/cliParser.core.js.map +0 -1
  226. package/dist/src/cliParser/cliParser.helper.d.ts.map +0 -1
  227. package/dist/src/cliParser/cliParser.helper.js.map +0 -1
  228. package/dist/src/cliParser/cliParser.longOption.d.ts.map +0 -1
  229. package/dist/src/cliParser/cliParser.longOption.js.map +0 -1
  230. package/dist/src/cliParser/cliParser.shortOption.d.ts.map +0 -1
  231. package/dist/src/cliParser/cliParser.shortOption.js.map +0 -1
  232. package/dist/src/cliParser/index.d.ts.map +0 -1
  233. package/dist/src/cliParser/index.js.map +0 -1
  234. package/dist/src/cliType/cliType.type.d.ts.map +0 -1
  235. package/dist/src/cliType/cliType.type.js.map +0 -1
  236. package/dist/src/cliType/index.d.ts.map +0 -1
  237. package/dist/src/cliType/index.js.map +0 -1
  238. package/dist/src/cliVersion/cliVersion.core.d.ts.map +0 -1
  239. package/dist/src/cliVersion/cliVersion.core.js.map +0 -1
  240. package/dist/src/cliVersion/index.d.ts.map +0 -1
  241. package/dist/src/cliVersion/index.js.map +0 -1
  242. package/dist/src/commands/add.command.d.ts.map +0 -1
  243. package/dist/src/commands/add.command.js.map +0 -1
  244. package/dist/src/commands/build.command.d.ts.map +0 -1
  245. package/dist/src/commands/build.command.js.map +0 -1
  246. package/dist/src/commands/create.command.d.ts.map +0 -1
  247. package/dist/src/commands/create.command.js.map +0 -1
  248. package/dist/src/commands/dev.command.d.ts.map +0 -1
  249. package/dist/src/commands/dev.command.js.map +0 -1
  250. package/dist/src/commands/doctor.command.d.ts.map +0 -1
  251. package/dist/src/commands/doctor.command.js.map +0 -1
  252. package/dist/src/commands/generate.command.d.ts.map +0 -1
  253. package/dist/src/commands/generate.command.js.map +0 -1
  254. package/dist/src/commands/index.d.ts.map +0 -1
  255. package/dist/src/commands/index.js.map +0 -1
  256. package/dist/src/commands/info.command.d.ts.map +0 -1
  257. package/dist/src/commands/info.command.js.map +0 -1
  258. package/dist/src/constants/index.d.ts.map +0 -1
  259. package/dist/src/constants/index.js.map +0 -1
  260. package/dist/src/errors/index.d.ts.map +0 -1
  261. package/dist/src/errors/index.js.map +0 -1
  262. package/dist/src/generators/backend/backend.generator.d.ts.map +0 -1
  263. package/dist/src/generators/backend/backend.generator.js.map +0 -1
  264. package/dist/src/generators/backend/index.d.ts.map +0 -1
  265. package/dist/src/generators/backend/index.js.map +0 -1
  266. package/dist/src/generators/command/command.generator.d.ts.map +0 -1
  267. package/dist/src/generators/command/command.generator.js.map +0 -1
  268. package/dist/src/generators/controller/controller.generator.d.ts.map +0 -1
  269. package/dist/src/generators/controller/controller.generator.js.map +0 -1
  270. package/dist/src/generators/dto/dto.generator.d.ts.map +0 -1
  271. package/dist/src/generators/dto/dto.generator.js.map +0 -1
  272. package/dist/src/generators/dto/index.d.ts.map +0 -1
  273. package/dist/src/generators/dto/index.js.map +0 -1
  274. package/dist/src/generators/event/event.generator.d.ts.map +0 -1
  275. package/dist/src/generators/event/event.generator.js.map +0 -1
  276. package/dist/src/generators/event/index.d.ts.map +0 -1
  277. package/dist/src/generators/event/index.js.map +0 -1
  278. package/dist/src/generators/frontend/frontendGenerator.core.d.ts.map +0 -1
  279. package/dist/src/generators/frontend/frontendGenerator.core.js.map +0 -1
  280. package/dist/src/generators/frontend/index.d.ts.map +0 -1
  281. package/dist/src/generators/frontend/index.js.map +0 -1
  282. package/dist/src/generators/fullstack/fullstackComposer.core.d.ts.map +0 -1
  283. package/dist/src/generators/fullstack/fullstackComposer.core.js.map +0 -1
  284. package/dist/src/generators/fullstack/index.d.ts.map +0 -1
  285. package/dist/src/generators/fullstack/index.js.map +0 -1
  286. package/dist/src/generators/index.d.ts.map +0 -1
  287. package/dist/src/generators/index.js.map +0 -1
  288. package/dist/src/generators/infrastructure/index.d.ts.map +0 -1
  289. package/dist/src/generators/infrastructure/index.js.map +0 -1
  290. package/dist/src/generators/infrastructure/infrastructure.generator.d.ts.map +0 -1
  291. package/dist/src/generators/infrastructure/infrastructure.generator.js.map +0 -1
  292. package/dist/src/generators/integration/index.d.ts.map +0 -1
  293. package/dist/src/generators/integration/index.js.map +0 -1
  294. package/dist/src/generators/integration/integrationGenerator.core.d.ts.map +0 -1
  295. package/dist/src/generators/integration/integrationGenerator.core.js.map +0 -1
  296. package/dist/src/generators/job/index.d.ts.map +0 -1
  297. package/dist/src/generators/job/index.js.map +0 -1
  298. package/dist/src/generators/job/job.generator.d.ts.map +0 -1
  299. package/dist/src/generators/job/job.generator.js.map +0 -1
  300. package/dist/src/generators/middleware/index.d.ts.map +0 -1
  301. package/dist/src/generators/middleware/index.js.map +0 -1
  302. package/dist/src/generators/middleware/middleware.generator.d.ts.map +0 -1
  303. package/dist/src/generators/middleware/middleware.generator.js.map +0 -1
  304. package/dist/src/generators/model/index.d.ts.map +0 -1
  305. package/dist/src/generators/model/index.js.map +0 -1
  306. package/dist/src/generators/model/model.generator.d.ts.map +0 -1
  307. package/dist/src/generators/model/model.generator.js.map +0 -1
  308. package/dist/src/generators/module/module.generator.d.ts.map +0 -1
  309. package/dist/src/generators/module/module.generator.js.map +0 -1
  310. package/dist/src/generators/project/project.generator.d.ts.map +0 -1
  311. package/dist/src/generators/project/project.generator.js.map +0 -1
  312. package/dist/src/generators/query/query.generator.d.ts.map +0 -1
  313. package/dist/src/generators/query/query.generator.js.map +0 -1
  314. package/dist/src/generators/repository/repository.generator.d.ts.map +0 -1
  315. package/dist/src/generators/repository/repository.generator.js.map +0 -1
  316. package/dist/src/generators/route/index.d.ts.map +0 -1
  317. package/dist/src/generators/route/index.js.map +0 -1
  318. package/dist/src/generators/route/route.generator.d.ts.map +0 -1
  319. package/dist/src/generators/route/route.generator.js.map +0 -1
  320. package/dist/src/generators/service/service.generator.d.ts.map +0 -1
  321. package/dist/src/generators/service/service.generator.js.map +0 -1
  322. package/dist/src/generators/validator/index.d.ts.map +0 -1
  323. package/dist/src/generators/validator/index.js.map +0 -1
  324. package/dist/src/generators/validator/validator.generator.d.ts.map +0 -1
  325. package/dist/src/generators/validator/validator.generator.js.map +0 -1
  326. package/dist/src/index.d.ts.map +0 -1
  327. package/dist/src/index.js.map +0 -1
  328. package/dist/src/installers/dependency.installer.d.ts.map +0 -1
  329. package/dist/src/installers/dependency.installer.js.map +0 -1
  330. package/dist/src/installers/index.d.ts.map +0 -1
  331. package/dist/src/installers/index.js.map +0 -1
  332. package/dist/src/manifest/index.d.ts.map +0 -1
  333. package/dist/src/manifest/index.js.map +0 -1
  334. package/dist/src/manifest/manifestManager.core.d.ts.map +0 -1
  335. package/dist/src/manifest/manifestManager.core.js.map +0 -1
  336. package/dist/src/prompts/backend/api-style.prompt.d.ts.map +0 -1
  337. package/dist/src/prompts/backend/api-style.prompt.js.map +0 -1
  338. package/dist/src/prompts/backend/backend-architecture.prompt.d.ts.map +0 -1
  339. package/dist/src/prompts/backend/backend-architecture.prompt.js.map +0 -1
  340. package/dist/src/prompts/backend/database.prompt.d.ts.map +0 -1
  341. package/dist/src/prompts/backend/database.prompt.js.map +0 -1
  342. package/dist/src/prompts/backend/index.d.ts.map +0 -1
  343. package/dist/src/prompts/backend/index.js.map +0 -1
  344. package/dist/src/prompts/capabilities/capabilities.prompt.d.ts.map +0 -1
  345. package/dist/src/prompts/capabilities/capabilities.prompt.js.map +0 -1
  346. package/dist/src/prompts/capabilities/index.d.ts.map +0 -1
  347. package/dist/src/prompts/capabilities/index.js.map +0 -1
  348. package/dist/src/prompts/frontend/framework.prompt.d.ts.map +0 -1
  349. package/dist/src/prompts/frontend/framework.prompt.js.map +0 -1
  350. package/dist/src/prompts/frontend/frontend-architecture.prompt.d.ts.map +0 -1
  351. package/dist/src/prompts/frontend/frontend-architecture.prompt.js.map +0 -1
  352. package/dist/src/prompts/frontend/index.d.ts.map +0 -1
  353. package/dist/src/prompts/frontend/index.js.map +0 -1
  354. package/dist/src/prompts/index.d.ts.map +0 -1
  355. package/dist/src/prompts/index.js.map +0 -1
  356. package/dist/src/prompts/project/confirmation.prompt.d.ts.map +0 -1
  357. package/dist/src/prompts/project/confirmation.prompt.js.map +0 -1
  358. package/dist/src/prompts/project/index.d.ts.map +0 -1
  359. package/dist/src/prompts/project/index.js.map +0 -1
  360. package/dist/src/prompts/project/project-name.prompt.d.ts.map +0 -1
  361. package/dist/src/prompts/project/project-name.prompt.js.map +0 -1
  362. package/dist/src/prompts/project/project-type.prompt.d.ts.map +0 -1
  363. package/dist/src/prompts/project/project-type.prompt.js.map +0 -1
  364. package/dist/src/prompts/prompts.createProject.d.ts +0 -33
  365. package/dist/src/prompts/prompts.createProject.d.ts.map +0 -1
  366. package/dist/src/prompts/prompts.createProject.js +0 -150
  367. package/dist/src/prompts/prompts.createProject.js.map +0 -1
  368. package/dist/src/prompts/workspace/index.d.ts.map +0 -1
  369. package/dist/src/prompts/workspace/index.js.map +0 -1
  370. package/dist/src/prompts/workspace/package-manager.prompt.d.ts.map +0 -1
  371. package/dist/src/prompts/workspace/package-manager.prompt.js.map +0 -1
  372. package/dist/src/registries/adapter/frontendAdapterRegistry.core.d.ts.map +0 -1
  373. package/dist/src/registries/adapter/frontendAdapterRegistry.core.js.map +0 -1
  374. package/dist/src/registries/adapter/packageManagerRegistry.core.d.ts.map +0 -1
  375. package/dist/src/registries/adapter/packageManagerRegistry.core.js.map +0 -1
  376. package/dist/src/registries/dependency/dependencyRegistry.core.d.ts.map +0 -1
  377. package/dist/src/registries/dependency/dependencyRegistry.core.js.map +0 -1
  378. package/dist/src/registries/dependency/index.d.ts.map +0 -1
  379. package/dist/src/registries/dependency/index.js.map +0 -1
  380. package/dist/src/registries/generator/generatorRegistry.core.d.ts.map +0 -1
  381. package/dist/src/registries/generator/generatorRegistry.core.js.map +0 -1
  382. package/dist/src/registries/generator/index.d.ts.map +0 -1
  383. package/dist/src/registries/generator/index.js.map +0 -1
  384. package/dist/src/registries/index.d.ts.map +0 -1
  385. package/dist/src/registries/index.js.map +0 -1
  386. package/dist/src/resolvers/architecture.resolver.d.ts.map +0 -1
  387. package/dist/src/resolvers/architecture.resolver.js.map +0 -1
  388. package/dist/src/resolvers/capability/capabilityResolver.core.d.ts.map +0 -1
  389. package/dist/src/resolvers/capability/capabilityResolver.core.js.map +0 -1
  390. package/dist/src/resolvers/capability/index.d.ts.map +0 -1
  391. package/dist/src/resolvers/capability/index.js.map +0 -1
  392. package/dist/src/resolvers/configuration/configurationResolver.core.d.ts.map +0 -1
  393. package/dist/src/resolvers/configuration/configurationResolver.core.js.map +0 -1
  394. package/dist/src/resolvers/configuration/index.d.ts.map +0 -1
  395. package/dist/src/resolvers/configuration/index.js.map +0 -1
  396. package/dist/src/resolvers/dependency/dependencyResolver.core.d.ts.map +0 -1
  397. package/dist/src/resolvers/dependency/dependencyResolver.core.js.map +0 -1
  398. package/dist/src/resolvers/dependency/index.d.ts.map +0 -1
  399. package/dist/src/resolvers/dependency/index.js.map +0 -1
  400. package/dist/src/resolvers/index.d.ts.map +0 -1
  401. package/dist/src/resolvers/index.js.map +0 -1
  402. package/dist/src/resolvers/project.resolver.d.ts.map +0 -1
  403. package/dist/src/resolvers/project.resolver.js.map +0 -1
  404. package/dist/src/rollback/index.d.ts.map +0 -1
  405. package/dist/src/rollback/index.js.map +0 -1
  406. package/dist/src/rollback/rollbackManager.core.d.ts.map +0 -1
  407. package/dist/src/rollback/rollbackManager.core.js.map +0 -1
  408. package/dist/src/runners/package-manager/index.d.ts.map +0 -1
  409. package/dist/src/runners/package-manager/index.js.map +0 -1
  410. package/dist/src/runners/package-manager/packageManagerRunner.core.d.ts.map +0 -1
  411. package/dist/src/runners/package-manager/packageManagerRunner.core.js.map +0 -1
  412. package/dist/src/runners/process/index.d.ts.map +0 -1
  413. package/dist/src/runners/process/index.js.map +0 -1
  414. package/dist/src/runners/process/processRunner.core.d.ts.map +0 -1
  415. package/dist/src/runners/process/processRunner.core.js.map +0 -1
  416. package/dist/src/runners/task/index.d.ts.map +0 -1
  417. package/dist/src/runners/task/index.js.map +0 -1
  418. package/dist/src/runners/task/taskRunner.core.d.ts.map +0 -1
  419. package/dist/src/runners/task/taskRunner.core.js.map +0 -1
  420. package/dist/src/scaffolders/framework.scaffolder.d.ts.map +0 -1
  421. package/dist/src/scaffolders/framework.scaffolder.js.map +0 -1
  422. package/dist/src/scaffolders/index.d.ts.map +0 -1
  423. package/dist/src/scaffolders/index.js.map +0 -1
  424. package/dist/src/scaffolders/scaffolder.helper.d.ts.map +0 -1
  425. package/dist/src/scaffolders/scaffolder.helper.js.map +0 -1
  426. package/dist/src/scripts/postinstall.cjs +0 -56
  427. package/dist/src/templates/microservice/index.d.ts.map +0 -1
  428. package/dist/src/templates/microservice/index.js.map +0 -1
  429. package/dist/src/templates/microservice/microservice.template.d.ts.map +0 -1
  430. package/dist/src/templates/microservice/microservice.template.js.map +0 -1
  431. package/dist/src/templates/modular-monolith/index.d.ts.map +0 -1
  432. package/dist/src/templates/modular-monolith/index.js.map +0 -1
  433. package/dist/src/templates/modular-monolith/modularMonolith.template.d.ts.map +0 -1
  434. package/dist/src/templates/modular-monolith/modularMonolith.template.js.map +0 -1
  435. package/dist/src/templates/monolith/index.d.ts.map +0 -1
  436. package/dist/src/templates/monolith/index.js.map +0 -1
  437. package/dist/src/templates/monolith/monolith.template.d.ts.map +0 -1
  438. package/dist/src/templates/monolith/monolith.template.js.map +0 -1
  439. package/dist/src/types/index.d.ts.map +0 -1
  440. package/dist/src/types/index.js.map +0 -1
  441. package/dist/src/types/projectConfiguration.type.d.ts.map +0 -1
  442. package/dist/src/types/projectConfiguration.type.js.map +0 -1
  443. package/dist/src/types/scaffold.type.d.ts.map +0 -1
  444. package/dist/src/types/scaffold.type.js.map +0 -1
  445. package/dist/src/utils/index.d.ts.map +0 -1
  446. package/dist/src/utils/index.js.map +0 -1
  447. package/dist/src/utils/utils.detect.d.ts.map +0 -1
  448. package/dist/src/utils/utils.detect.js.map +0 -1
  449. package/dist/src/utils/utils.exec.d.ts.map +0 -1
  450. package/dist/src/utils/utils.exec.js.map +0 -1
  451. package/dist/src/utils/utils.fileSystem.d.ts.map +0 -1
  452. package/dist/src/utils/utils.fileSystem.js.map +0 -1
  453. package/dist/src/utils/utils.name.d.ts.map +0 -1
  454. package/dist/src/utils/utils.name.js.map +0 -1
  455. package/dist/src/validators/compatibility/compatibilityValidator.core.d.ts.map +0 -1
  456. package/dist/src/validators/compatibility/compatibilityValidator.core.js.map +0 -1
  457. package/dist/src/validators/compatibility/index.d.ts.map +0 -1
  458. package/dist/src/validators/compatibility/index.js.map +0 -1
  459. package/dist/src/validators/environment/environmentValidator.core.d.ts.map +0 -1
  460. package/dist/src/validators/environment/environmentValidator.core.js.map +0 -1
  461. package/dist/src/validators/environment/index.d.ts.map +0 -1
  462. package/dist/src/validators/environment/index.js.map +0 -1
  463. package/dist/src/validators/index.d.ts.map +0 -1
  464. package/dist/src/validators/index.js.map +0 -1
  465. package/dist/src/validators/project/index.d.ts.map +0 -1
  466. package/dist/src/validators/project/index.js.map +0 -1
  467. package/dist/src/validators/project/projectValidator.core.d.ts.map +0 -1
  468. package/dist/src/validators/project/projectValidator.core.js.map +0 -1
  469. package/src/scripts/postinstall.cjs +0 -56
@@ -1,4 +1,4 @@
1
- import { execCommand } from "../utils/utils.exec.js";
1
+ import { runStreaming } from "../utils/utils.exec.js";
2
2
  export function getInstallCommand(packageManager) {
3
3
  switch (packageManager) {
4
4
  case "pnpm":
@@ -7,6 +7,8 @@ export function getInstallCommand(packageManager) {
7
7
  return ["npm", "install"];
8
8
  case "yarn":
9
9
  return ["yarn", "install"];
10
+ case "bun":
11
+ return ["bun", "install"];
10
12
  default:
11
13
  return ["pnpm", "install"];
12
14
  }
@@ -19,12 +21,35 @@ export function getAddCommand(packageManager, pkg) {
19
21
  return ["npm", "install", pkg];
20
22
  case "yarn":
21
23
  return ["yarn", "add", pkg];
24
+ case "bun":
25
+ return ["bun", "add", pkg];
22
26
  default:
23
27
  return ["pnpm", "add", pkg];
24
28
  }
25
29
  }
30
+ /**
31
+ * The command that runs a `package.json` script with the given manager.
32
+ *
33
+ * Generated projects declare their dev/build tooling (`tsx`, `vite`, `ng`)
34
+ * as devDependencies, so the binaries live in `node_modules/.bin` and are
35
+ * not on the user's PATH. Running the script through the package manager is
36
+ * what puts them there.
37
+ */
38
+ export function getRunScriptCommand(packageManager, script) {
39
+ switch (packageManager) {
40
+ case "npm":
41
+ return ["npm", "run", script];
42
+ case "yarn":
43
+ return ["yarn", "run", script];
44
+ case "bun":
45
+ return ["bun", "run", script];
46
+ case "pnpm":
47
+ default:
48
+ return ["pnpm", "run", script];
49
+ }
50
+ }
26
51
  export async function installDependencies(packageManager, cwd) {
27
52
  const [file, ...args] = getInstallCommand(packageManager);
28
- await execCommand(file, args, cwd);
53
+ await runStreaming(file, args, cwd);
29
54
  }
30
55
  //# sourceMappingURL=dependency.installer.js.map
@@ -1,7 +1,5 @@
1
1
  /**
2
2
  * zudojs-cli — Installers
3
- *
4
- * Dependency installation utilities.
5
3
  */
6
- export { installDependencies, getInstallCommand, } from "./dependency.installer.js";
4
+ export { getInstallCommand, getAddCommand, getRunScriptCommand, installDependencies, } from "./dependency.installer.js";
7
5
  //# sourceMappingURL=index.d.ts.map
@@ -1,7 +1,5 @@
1
1
  /**
2
2
  * zudojs-cli — Installers
3
- *
4
- * Dependency installation utilities.
5
3
  */
6
- export { installDependencies, getInstallCommand, } from "./dependency.installer.js";
4
+ export { getInstallCommand, getAddCommand, getRunScriptCommand, installDependencies, } from "./dependency.installer.js";
7
5
  //# sourceMappingURL=index.js.map
@@ -5,7 +5,10 @@
5
5
  */
6
6
  export interface ZudojsManifest {
7
7
  readonly version: string;
8
+ readonly projectType?: string;
8
9
  readonly architecture: string;
10
+ /** Service names for microservice projects. */
11
+ readonly services?: readonly string[];
9
12
  readonly backend?: {
10
13
  readonly architecture: string;
11
14
  readonly api: string;
@@ -6,4 +6,5 @@
6
6
  export { promptBackendArchitecture } from "./backend-architecture.prompt.js";
7
7
  export { promptDatabase } from "./database.prompt.js";
8
8
  export { promptApiStyle } from "./api-style.prompt.js";
9
+ export { promptServices } from "./services.prompt.js";
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -6,4 +6,5 @@
6
6
  export { promptBackendArchitecture } from "./backend-architecture.prompt.js";
7
7
  export { promptDatabase } from "./database.prompt.js";
8
8
  export { promptApiStyle } from "./api-style.prompt.js";
9
+ export { promptServices } from "./services.prompt.js";
9
10
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ /**
2
+ * zudojs-cli — Services Prompt
3
+ *
4
+ * Prompts for microservice service names (comma-separated).
5
+ */
6
+ export declare function promptServices(overrides?: readonly string[]): Promise<string[]>;
7
+ //# sourceMappingURL=services.prompt.d.ts.map
@@ -0,0 +1,39 @@
1
+ /**
2
+ * zudojs-cli — Services Prompt
3
+ *
4
+ * Prompts for microservice service names (comma-separated).
5
+ */
6
+ import * as p from "@clack/prompts";
7
+ const SERVICE_NAME_PATTERN = /^[a-zA-Z0-9_-]+$/;
8
+ function parseServices(value) {
9
+ return value
10
+ .split(",")
11
+ .map((s) => s.trim())
12
+ .filter(Boolean);
13
+ }
14
+ export async function promptServices(overrides) {
15
+ if (overrides && overrides.length > 0) {
16
+ return [...overrides];
17
+ }
18
+ const value = await p.text({
19
+ message: "Service names (comma-separated)",
20
+ placeholder: "identity,billing,notification",
21
+ validate(input) {
22
+ const services = parseServices(input ?? "");
23
+ if (services.length === 0) {
24
+ return "At least one service name is required.";
25
+ }
26
+ for (const service of services) {
27
+ if (!SERVICE_NAME_PATTERN.test(service)) {
28
+ return `Invalid service name "${service}". Only alphanumeric characters, hyphens, and underscores are allowed.`;
29
+ }
30
+ }
31
+ },
32
+ });
33
+ if (p.isCancel(value)) {
34
+ p.cancel("Operation cancelled.");
35
+ process.exit(0);
36
+ }
37
+ return parseServices(value);
38
+ }
39
+ //# sourceMappingURL=services.prompt.js.map
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * zudojs-cli — Prompts Index
3
3
  */
4
- export { promptCreateProject, type CreateProjectPrompts, type PromptChoice, } from "./prompts.createProject.js";
5
4
  export { promptProjectName } from "./project/project-name.prompt.js";
6
5
  export { promptProjectType } from "./project/project-type.prompt.js";
7
6
  export { promptConfirmation } from "./project/confirmation.prompt.js";
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * zudojs-cli — Prompts Index
3
3
  */
4
- export { promptCreateProject, } from "./prompts.createProject.js";
5
4
  export { promptProjectName } from "./project/project-name.prompt.js";
6
5
  export { promptProjectType } from "./project/project-type.prompt.js";
7
6
  export { promptConfirmation } from "./project/confirmation.prompt.js";
@@ -1,2 +1,12 @@
1
- export declare function detectArchitecture(cwd: string): Promise<"monolith" | "modular-monolith" | "microservice" | null>;
1
+ declare const ARCHITECTURES: readonly ["monolith", "modular-monolith", "microservice"];
2
+ type Architecture = (typeof ARCHITECTURES)[number];
3
+ /**
4
+ * Detects the backend architecture of the project at `cwd`.
5
+ *
6
+ * Reads the manifest (then the legacy config, then package.json) through the
7
+ * shared layout resolver and falls back to directory heuristics for projects
8
+ * that were not created by the CLI.
9
+ */
10
+ export declare function detectArchitecture(cwd: string): Promise<Architecture | null>;
11
+ export {};
2
12
  //# sourceMappingURL=architecture.resolver.d.ts.map
@@ -1,19 +1,18 @@
1
- import { readFile } from "node:fs/promises";
2
1
  import { existsSync } from "node:fs";
3
2
  import { join } from "node:path";
3
+ import { resolveProjectLayout } from "./layout/projectLayout.core.js";
4
+ const ARCHITECTURES = ["monolith", "modular-monolith", "microservice"];
5
+ /**
6
+ * Detects the backend architecture of the project at `cwd`.
7
+ *
8
+ * Reads the manifest (then the legacy config, then package.json) through the
9
+ * shared layout resolver and falls back to directory heuristics for projects
10
+ * that were not created by the CLI.
11
+ */
4
12
  export async function detectArchitecture(cwd) {
5
- const configPath = join(cwd, "zudojs.config.ts");
6
- if (existsSync(configPath)) {
7
- try {
8
- const content = await readFile(configPath, "utf-8");
9
- const match = content.match(/architecture:\s*["'](monolith|modular-monolith|microservice)["']/);
10
- if (match) {
11
- return match[1];
12
- }
13
- }
14
- catch {
15
- // fall through
16
- }
13
+ const recorded = resolveProjectLayout(cwd)?.architecture;
14
+ if (recorded && ARCHITECTURES.includes(recorded)) {
15
+ return recorded;
17
16
  }
18
17
  if (existsSync(join(cwd, "pnpm-workspace.yaml"))) {
19
18
  const gateway = existsSync(join(cwd, "apps/gateway"));
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * zudojs-cli — Configuration Resolver
3
3
  *
4
- * Resolves and validates project configuration from multiple sources.
4
+ * Resolves project configuration from the sources `zudojs create` writes.
5
5
  */
6
6
  export interface ResolvedConfiguration {
7
7
  readonly projectName: string;
@@ -16,7 +16,16 @@ export interface ResolvedConfiguration {
16
16
  readonly features: readonly string[];
17
17
  }
18
18
  export declare class ConfigurationResolver {
19
+ /**
20
+ * Resolves the configuration of the project at `cwd`, or `null` when the
21
+ * directory is not a Zudojs project.
22
+ *
23
+ * Only `zudojs.config.ts` used to be consulted, so every project created
24
+ * since the manifest became the source of truth resolved to `null`.
25
+ */
19
26
  resolve(cwd: string): ResolvedConfiguration | null;
27
+ private readJson;
28
+ private readLegacyConfig;
20
29
  private extractValue;
21
30
  private extractArray;
22
31
  }
@@ -1,50 +1,89 @@
1
1
  /**
2
2
  * zudojs-cli — Configuration Resolver
3
3
  *
4
- * Resolves and validates project configuration from multiple sources.
4
+ * Resolves project configuration from the sources `zudojs create` writes.
5
5
  */
6
6
  import { existsSync, readFileSync } from "node:fs";
7
7
  import { join } from "node:path";
8
+ import { resolveProjectLayout } from "../layout/projectLayout.core.js";
8
9
  export class ConfigurationResolver {
10
+ /**
11
+ * Resolves the configuration of the project at `cwd`, or `null` when the
12
+ * directory is not a Zudojs project.
13
+ *
14
+ * Only `zudojs.config.ts` used to be consulted, so every project created
15
+ * since the manifest became the source of truth resolved to `null`.
16
+ */
9
17
  resolve(cwd) {
10
- const configPath = join(cwd, "zudojs.config.ts");
11
- if (!existsSync(configPath)) {
18
+ const layout = resolveProjectLayout(cwd);
19
+ if (!layout)
20
+ return null;
21
+ const manifest = this.readJson(join(cwd, ".zudojs", "manifest.json"));
22
+ const pkg = this.readJson(join(cwd, "package.json"));
23
+ const legacy = this.readLegacyConfig(cwd);
24
+ const features = manifest?.capabilities ??
25
+ (Array.isArray(pkg?.zudojs?.features)
26
+ ? pkg.zudojs.features.filter((feature) => typeof feature === "string")
27
+ : undefined) ??
28
+ this.extractArray(legacy, "features") ??
29
+ [];
30
+ const frontendArchitecture = manifest?.frontend?.architecture ??
31
+ this.extractValue(legacy, "architecture", "frontend");
32
+ const language = this.extractValue(legacy, "language");
33
+ return {
34
+ projectName: this.extractValue(legacy, "name") ?? pkg?.name ?? "unknown",
35
+ projectType: layout.projectType,
36
+ architecture: layout.architecture,
37
+ packageManager: layout.packageManager,
38
+ database: manifest?.database?.provider ??
39
+ this.extractValue(legacy, "provider") ??
40
+ "postgresql",
41
+ api: manifest?.backend?.api ?? this.extractValue(legacy, "api") ?? "rest",
42
+ ...(layout.frontendFramework !== undefined
43
+ ? { frontend: layout.frontendFramework }
44
+ : {}),
45
+ ...(frontendArchitecture !== undefined ? { frontendArchitecture } : {}),
46
+ ...(language !== undefined ? { language } : {}),
47
+ features,
48
+ };
49
+ }
50
+ readJson(path) {
51
+ if (!existsSync(path))
12
52
  return null;
13
- }
14
53
  try {
15
- const content = readFileSync(configPath, "utf-8");
16
- return {
17
- projectName: this.extractValue(content, "name") ?? "unknown",
18
- projectType: this.extractValue(content, "type") ?? "backend",
19
- architecture: this.extractValue(content, "architecture") ?? "monolith",
20
- packageManager: this.extractValue(content, "packageManager") ?? "pnpm",
21
- database: this.extractValue(content, "provider") ?? "postgresql",
22
- api: this.extractValue(content, "api") ?? "rest",
23
- frontend: this.extractValue(content, "framework"),
24
- frontendArchitecture: this.extractValue(content, "architecture", "frontend"),
25
- language: this.extractValue(content, "language"),
26
- features: this.extractArray(content, "features") ?? [],
27
- };
54
+ return JSON.parse(readFileSync(path, "utf-8"));
28
55
  }
29
56
  catch {
30
57
  return null;
31
58
  }
32
59
  }
33
- extractValue(content, key, section) {
34
- let pattern;
35
- if (section) {
36
- pattern = new RegExp(`${section}[\\s\\S]*?${key}:\\s*["']([^"']+)["']`);
37
- }
38
- else {
39
- pattern = new RegExp(`${key}:\\s*["']([^"']+)["']`);
60
+ readLegacyConfig(cwd) {
61
+ for (const name of ["zudojs.config.ts", "zudojs.config.js"]) {
62
+ const path = join(cwd, name);
63
+ if (!existsSync(path))
64
+ continue;
65
+ try {
66
+ return readFileSync(path, "utf-8");
67
+ }
68
+ catch {
69
+ return "";
70
+ }
40
71
  }
41
- const match = content.match(pattern);
42
- return match?.[1];
72
+ return "";
73
+ }
74
+ extractValue(content, key, section) {
75
+ if (content.length === 0)
76
+ return undefined;
77
+ const pattern = section
78
+ ? new RegExp(`${section}[\\s\\S]*?${key}:\\s*["']([^"']+)["']`)
79
+ : new RegExp(`(?<![\\w])${key}:\\s*["']([^"']+)["']`);
80
+ return content.match(pattern)?.[1];
43
81
  }
44
82
  extractArray(content, key) {
45
- const pattern = new RegExp(`${key}:\\s*\\[([^\\]]+)\\]`);
46
- const match = content.match(pattern);
47
- if (!match || !match[1])
83
+ if (content.length === 0)
84
+ return undefined;
85
+ const match = content.match(new RegExp(`${key}:\\s*\\[([^\\]]+)\\]`));
86
+ if (!match?.[1])
48
87
  return undefined;
49
88
  return match[1]
50
89
  .split(",")
@@ -7,4 +7,5 @@ export { detectArchitecture } from "./architecture.resolver.js";
7
7
  export { resolveProjectPath, findProjectRoot } from "./project.resolver.js";
8
8
  export { CapabilityResolver, type CapabilityDependency, type CapabilityResolutionResult, } from "./capability/index.js";
9
9
  export { ConfigurationResolver, type ResolvedConfiguration, } from "./configuration/index.js";
10
+ export { resolveProjectLayout, detectPackageManager, type ProjectLayout, type ProjectLayoutType, type ProjectLayoutSource, } from "./layout/index.js";
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -7,4 +7,5 @@ export { detectArchitecture } from "./architecture.resolver.js";
7
7
  export { resolveProjectPath, findProjectRoot } from "./project.resolver.js";
8
8
  export { CapabilityResolver, } from "./capability/index.js";
9
9
  export { ConfigurationResolver, } from "./configuration/index.js";
10
+ export { resolveProjectLayout, detectPackageManager, } from "./layout/index.js";
10
11
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,5 @@
1
+ /**
2
+ * zudojs-cli — Project Layout Resolver
3
+ */
4
+ export { resolveProjectLayout, detectPackageManager, type ProjectLayout, type ProjectLayoutType, type ProjectLayoutSource, } from "./projectLayout.core.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,5 @@
1
+ /**
2
+ * zudojs-cli — Project Layout Resolver
3
+ */
4
+ export { resolveProjectLayout, detectPackageManager, } from "./projectLayout.core.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,60 @@
1
+ /**
2
+ * zudojs-cli — Project Layout Resolver
3
+ *
4
+ * One place that answers "what kind of project is this directory, and where
5
+ * do its apps live?". Every follow-up command (`dev`, `add`, `generate`,
6
+ * `doctor`, `info`, `build`) used to answer that question on its own, and
7
+ * each answer was different: `dev` read `zudojs.config.ts` first and only
8
+ * fell back to the manifest, `generate` never looked past the workspace
9
+ * root for a fullstack project, `doctor` required a `tsconfig.json` at the
10
+ * root of a workspace that has none, and `add` wrote into the workspace root
11
+ * `package.json` where no app can import from.
12
+ *
13
+ * Resolution order:
14
+ *
15
+ * 1. `.zudojs/manifest.json` — written by `zudojs create`, machine-managed.
16
+ * 2. `zudojs.config.ts` / `.js` — older projects; read with a regex, never
17
+ * executed.
18
+ * 3. the `zudojs` block in `package.json`.
19
+ *
20
+ * @module resolvers/layout
21
+ */
22
+ import type { PackageManager } from "../../types/index.js";
23
+ /** Project type recorded by `zudojs create`. */
24
+ export type ProjectLayoutType = "backend" | "frontend" | "fullstack";
25
+ /** Where the description of the project came from. */
26
+ export type ProjectLayoutSource = "manifest" | "config" | "package.json";
27
+ /** The resolved shape of a Zudojs project on disk. */
28
+ export interface ProjectLayout {
29
+ /** Absolute project root: the directory holding the manifest or config. */
30
+ readonly root: string;
31
+ readonly projectType: ProjectLayoutType;
32
+ /** Backend architecture (`monolith`, `modular-monolith`, `microservice`). */
33
+ readonly architecture: string;
34
+ readonly packageManager: PackageManager;
35
+ /** Whether the root is a workspace (pnpm-workspace.yaml or `workspaces`). */
36
+ readonly isWorkspace: boolean;
37
+ /**
38
+ * Absolute directories that hold a backend app, each with its own
39
+ * `package.json`. Empty for a frontend-only project. A monolith has one
40
+ * (the root, or `apps/api` in a fullstack workspace); a microservice
41
+ * project has the gateway plus one per service.
42
+ */
43
+ readonly backendDirs: readonly string[];
44
+ /** Absolute directory of the frontend app, when the project has one. */
45
+ readonly frontendDir?: string;
46
+ readonly frontendFramework?: string;
47
+ /** Service names of a microservice project. */
48
+ readonly services: readonly string[];
49
+ readonly source: ProjectLayoutSource;
50
+ }
51
+ /** Detects the package manager from lock files and workspace markers. */
52
+ export declare function detectPackageManager(root: string): PackageManager;
53
+ /**
54
+ * Resolves the layout of the Zudojs project rooted at `cwd`.
55
+ *
56
+ * Returns `null` when the directory is not a Zudojs project: no manifest,
57
+ * no legacy config and no `zudojs` block in `package.json`.
58
+ */
59
+ export declare function resolveProjectLayout(cwd: string): ProjectLayout | null;
60
+ //# sourceMappingURL=projectLayout.core.d.ts.map