zudojs-cli 0.1.1 → 1.0.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 (431) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +14 -1
  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/react.adapter.js +26 -17
  8. package/dist/src/adapters/frontend/svelte.adapter.js +1 -0
  9. package/dist/src/adapters/frontend/sveltekit.adapter.js +7 -8
  10. package/dist/src/adapters/frontend/vanilla.adapter.js +1 -1
  11. package/dist/src/adapters/frontend/vue.adapter.js +1 -0
  12. package/dist/src/adapters/package-managers/bun.adapter.js +5 -5
  13. package/dist/src/adapters/package-managers/npm.adapter.js +5 -5
  14. package/dist/src/adapters/package-managers/pnpm.adapter.js +5 -5
  15. package/dist/src/adapters/package-managers/yarn.adapter.js +5 -5
  16. package/dist/src/bin/zudojs.js +42 -6
  17. package/dist/src/cliApplication/cliApplication.builtins.d.ts +11 -2
  18. package/dist/src/cliApplication/cliApplication.builtins.js +15 -4
  19. package/dist/src/cliApplication/cliApplication.core.js +20 -5
  20. package/dist/src/cliConstant/cliConstant.value.d.ts +1 -1
  21. package/dist/src/cliConstant/cliConstant.value.js +2 -1
  22. package/dist/src/cliConstant/cliVersion.d.ts +16 -0
  23. package/dist/src/cliConstant/cliVersion.js +57 -0
  24. package/dist/src/cliParser/cliParser.core.js +7 -0
  25. package/dist/src/cliParser/cliParser.shortOption.js +1 -1
  26. package/dist/src/commands/add.command.js +27 -24
  27. package/dist/src/commands/build.command.js +13 -7
  28. package/dist/src/commands/create.command.js +177 -84
  29. package/dist/src/commands/dev.command.js +62 -27
  30. package/dist/src/commands/doctor.command.js +45 -23
  31. package/dist/src/commands/generate.command.js +103 -34
  32. package/dist/src/constants/index.d.ts +3 -1
  33. package/dist/src/constants/index.js +3 -1
  34. package/dist/src/generators/command/command.generator.d.ts +1 -0
  35. package/dist/src/generators/command/command.generator.js +10 -4
  36. package/dist/src/generators/controller/controller.generator.d.ts +1 -0
  37. package/dist/src/generators/controller/controller.generator.js +12 -9
  38. package/dist/src/generators/dto/dto.generator.d.ts +1 -0
  39. package/dist/src/generators/dto/dto.generator.js +9 -3
  40. package/dist/src/generators/event/event.generator.d.ts +1 -0
  41. package/dist/src/generators/event/event.generator.js +10 -4
  42. package/dist/src/generators/frontend/frontendGenerator.core.js +4 -28
  43. package/dist/src/generators/frontend/frontendPipeline.d.ts +26 -0
  44. package/dist/src/generators/frontend/frontendPipeline.js +93 -0
  45. package/dist/src/generators/fullstack/fullstackComposer.core.d.ts +1 -2
  46. package/dist/src/generators/fullstack/fullstackComposer.core.js +68 -62
  47. package/dist/src/generators/infrastructure/infrastructure.generator.d.ts +11 -0
  48. package/dist/src/generators/infrastructure/infrastructure.generator.js +101 -61
  49. package/dist/src/generators/integration/integrationGenerator.core.d.ts +6 -0
  50. package/dist/src/generators/integration/integrationGenerator.core.js +35 -6
  51. package/dist/src/generators/job/job.generator.d.ts +1 -0
  52. package/dist/src/generators/job/job.generator.js +9 -3
  53. package/dist/src/generators/middleware/middleware.generator.d.ts +1 -0
  54. package/dist/src/generators/middleware/middleware.generator.js +10 -4
  55. package/dist/src/generators/model/model.generator.d.ts +1 -0
  56. package/dist/src/generators/model/model.generator.js +9 -3
  57. package/dist/src/generators/module/module.generator.d.ts +1 -0
  58. package/dist/src/generators/module/module.generator.js +11 -24
  59. package/dist/src/generators/project/project.generator.js +2 -23
  60. package/dist/src/generators/query/query.generator.d.ts +1 -0
  61. package/dist/src/generators/query/query.generator.js +10 -4
  62. package/dist/src/generators/repository/repository.generator.d.ts +1 -0
  63. package/dist/src/generators/repository/repository.generator.js +12 -9
  64. package/dist/src/generators/route/route.generator.d.ts +1 -0
  65. package/dist/src/generators/route/route.generator.js +11 -5
  66. package/dist/src/generators/service/service.generator.d.ts +1 -0
  67. package/dist/src/generators/service/service.generator.js +12 -9
  68. package/dist/src/generators/validator/validator.generator.d.ts +1 -0
  69. package/dist/src/generators/validator/validator.generator.js +9 -3
  70. package/dist/src/installers/dependency.installer.js +6 -2
  71. package/dist/src/manifest/manifestManager.core.d.ts +3 -0
  72. package/dist/src/prompts/backend/index.d.ts +1 -0
  73. package/dist/src/prompts/backend/index.js +1 -0
  74. package/dist/src/prompts/backend/services.prompt.d.ts +7 -0
  75. package/dist/src/prompts/backend/services.prompt.js +39 -0
  76. package/dist/src/prompts/index.d.ts +0 -1
  77. package/dist/src/prompts/index.js +0 -1
  78. package/dist/src/rollback/rollbackManager.core.js +0 -1
  79. package/dist/src/runners/process/processRunner.core.d.ts +4 -0
  80. package/dist/src/runners/process/processRunner.core.js +17 -3
  81. package/dist/src/scaffolders/framework.scaffolder.js +9 -6
  82. package/dist/src/scaffolders/scaffolder.helper.js +7 -2
  83. package/dist/src/scripts/postinstall.cjs +24 -3
  84. package/dist/src/templates/microservice/index.d.ts +1 -1
  85. package/dist/src/templates/microservice/index.js +1 -1
  86. package/dist/src/templates/microservice/microservice.template.d.ts +15 -1
  87. package/dist/src/templates/microservice/microservice.template.js +165 -183
  88. package/dist/src/templates/modular-monolith/modularMonolith.template.js +54 -106
  89. package/dist/src/templates/monolith/monolith.template.d.ts +1 -0
  90. package/dist/src/templates/monolith/monolith.template.js +50 -94
  91. package/dist/src/templates/shared/appRuntime.template.d.ts +71 -0
  92. package/dist/src/templates/shared/appRuntime.template.js +209 -0
  93. package/dist/src/templates/shared/index.d.ts +5 -0
  94. package/dist/src/templates/shared/index.js +5 -0
  95. package/dist/src/utils/index.d.ts +3 -3
  96. package/dist/src/utils/index.js +3 -3
  97. package/dist/src/utils/utils.exec.d.ts +19 -1
  98. package/dist/src/utils/utils.exec.js +37 -3
  99. package/dist/src/utils/utils.fileSystem.d.ts +6 -0
  100. package/dist/src/utils/utils.fileSystem.js +19 -0
  101. package/dist/src/utils/utils.name.d.ts +26 -0
  102. package/dist/src/utils/utils.name.js +51 -1
  103. package/package.json +29 -22
  104. package/src/scripts/postinstall.cjs +24 -3
  105. package/dist/.tsbuildinfo +0 -1
  106. package/dist/src/adapters/databases/index.d.ts.map +0 -1
  107. package/dist/src/adapters/databases/index.js.map +0 -1
  108. package/dist/src/adapters/databases/mysql.adapter.d.ts.map +0 -1
  109. package/dist/src/adapters/databases/mysql.adapter.js.map +0 -1
  110. package/dist/src/adapters/databases/postgres.adapter.d.ts.map +0 -1
  111. package/dist/src/adapters/databases/postgres.adapter.js.map +0 -1
  112. package/dist/src/adapters/databases/sqlite.adapter.d.ts.map +0 -1
  113. package/dist/src/adapters/databases/sqlite.adapter.js.map +0 -1
  114. package/dist/src/adapters/frontend/angular.adapter.d.ts.map +0 -1
  115. package/dist/src/adapters/frontend/angular.adapter.js.map +0 -1
  116. package/dist/src/adapters/frontend/astro.adapter.d.ts.map +0 -1
  117. package/dist/src/adapters/frontend/astro.adapter.js.map +0 -1
  118. package/dist/src/adapters/frontend/flutter.adapter.d.ts.map +0 -1
  119. package/dist/src/adapters/frontend/flutter.adapter.js.map +0 -1
  120. package/dist/src/adapters/frontend/frontendAdapter.type.d.ts.map +0 -1
  121. package/dist/src/adapters/frontend/frontendAdapter.type.js.map +0 -1
  122. package/dist/src/adapters/frontend/index.d.ts.map +0 -1
  123. package/dist/src/adapters/frontend/index.js.map +0 -1
  124. package/dist/src/adapters/frontend/next.adapter.d.ts.map +0 -1
  125. package/dist/src/adapters/frontend/next.adapter.js.map +0 -1
  126. package/dist/src/adapters/frontend/nuxt.adapter.d.ts.map +0 -1
  127. package/dist/src/adapters/frontend/nuxt.adapter.js.map +0 -1
  128. package/dist/src/adapters/frontend/react-native.adapter.d.ts.map +0 -1
  129. package/dist/src/adapters/frontend/react-native.adapter.js.map +0 -1
  130. package/dist/src/adapters/frontend/react.adapter.d.ts.map +0 -1
  131. package/dist/src/adapters/frontend/react.adapter.js.map +0 -1
  132. package/dist/src/adapters/frontend/svelte.adapter.d.ts.map +0 -1
  133. package/dist/src/adapters/frontend/svelte.adapter.js.map +0 -1
  134. package/dist/src/adapters/frontend/sveltekit.adapter.d.ts.map +0 -1
  135. package/dist/src/adapters/frontend/sveltekit.adapter.js.map +0 -1
  136. package/dist/src/adapters/frontend/vanilla.adapter.d.ts.map +0 -1
  137. package/dist/src/adapters/frontend/vanilla.adapter.js.map +0 -1
  138. package/dist/src/adapters/frontend/vue.adapter.d.ts.map +0 -1
  139. package/dist/src/adapters/frontend/vue.adapter.js.map +0 -1
  140. package/dist/src/adapters/package-managers/bun.adapter.d.ts.map +0 -1
  141. package/dist/src/adapters/package-managers/bun.adapter.js.map +0 -1
  142. package/dist/src/adapters/package-managers/index.d.ts.map +0 -1
  143. package/dist/src/adapters/package-managers/index.js.map +0 -1
  144. package/dist/src/adapters/package-managers/npm.adapter.d.ts.map +0 -1
  145. package/dist/src/adapters/package-managers/npm.adapter.js.map +0 -1
  146. package/dist/src/adapters/package-managers/packageManager.type.d.ts.map +0 -1
  147. package/dist/src/adapters/package-managers/packageManager.type.js.map +0 -1
  148. package/dist/src/adapters/package-managers/pnpm.adapter.d.ts.map +0 -1
  149. package/dist/src/adapters/package-managers/pnpm.adapter.js.map +0 -1
  150. package/dist/src/adapters/package-managers/yarn.adapter.d.ts.map +0 -1
  151. package/dist/src/adapters/package-managers/yarn.adapter.js.map +0 -1
  152. package/dist/src/bin/zudojs.d.ts.map +0 -1
  153. package/dist/src/bin/zudojs.js.map +0 -1
  154. package/dist/src/cliApplication/cliApplication.builtins.d.ts.map +0 -1
  155. package/dist/src/cliApplication/cliApplication.builtins.js.map +0 -1
  156. package/dist/src/cliApplication/cliApplication.core.d.ts.map +0 -1
  157. package/dist/src/cliApplication/cliApplication.core.js.map +0 -1
  158. package/dist/src/cliApplication/cliApplication.writer.d.ts.map +0 -1
  159. package/dist/src/cliApplication/cliApplication.writer.js.map +0 -1
  160. package/dist/src/cliApplication/index.d.ts.map +0 -1
  161. package/dist/src/cliApplication/index.js.map +0 -1
  162. package/dist/src/cliCommand/cliCommand.builder.d.ts.map +0 -1
  163. package/dist/src/cliCommand/cliCommand.builder.js.map +0 -1
  164. package/dist/src/cliCommand/cliCommand.factory.d.ts.map +0 -1
  165. package/dist/src/cliCommand/cliCommand.factory.js.map +0 -1
  166. package/dist/src/cliCommand/cliCommand.registry.d.ts.map +0 -1
  167. package/dist/src/cliCommand/cliCommand.registry.js.map +0 -1
  168. package/dist/src/cliCommand/cliCommand.validator.d.ts.map +0 -1
  169. package/dist/src/cliCommand/cliCommand.validator.js.map +0 -1
  170. package/dist/src/cliCommand/index.d.ts.map +0 -1
  171. package/dist/src/cliCommand/index.js.map +0 -1
  172. package/dist/src/cliConstant/cliConstant.value.d.ts.map +0 -1
  173. package/dist/src/cliConstant/cliConstant.value.js.map +0 -1
  174. package/dist/src/cliConstant/index.d.ts.map +0 -1
  175. package/dist/src/cliConstant/index.js.map +0 -1
  176. package/dist/src/cliError/cliError.argument.d.ts.map +0 -1
  177. package/dist/src/cliError/cliError.argument.js.map +0 -1
  178. package/dist/src/cliError/cliError.base.d.ts.map +0 -1
  179. package/dist/src/cliError/cliError.base.js.map +0 -1
  180. package/dist/src/cliError/cliError.command.d.ts.map +0 -1
  181. package/dist/src/cliError/cliError.command.js.map +0 -1
  182. package/dist/src/cliError/cliError.execution.d.ts.map +0 -1
  183. package/dist/src/cliError/cliError.execution.js.map +0 -1
  184. package/dist/src/cliError/cliError.option.d.ts.map +0 -1
  185. package/dist/src/cliError/cliError.option.js.map +0 -1
  186. package/dist/src/cliError/index.d.ts.map +0 -1
  187. package/dist/src/cliError/index.js.map +0 -1
  188. package/dist/src/cliParser/cliParser.core.d.ts.map +0 -1
  189. package/dist/src/cliParser/cliParser.core.js.map +0 -1
  190. package/dist/src/cliParser/cliParser.helper.d.ts.map +0 -1
  191. package/dist/src/cliParser/cliParser.helper.js.map +0 -1
  192. package/dist/src/cliParser/cliParser.longOption.d.ts.map +0 -1
  193. package/dist/src/cliParser/cliParser.longOption.js.map +0 -1
  194. package/dist/src/cliParser/cliParser.shortOption.d.ts.map +0 -1
  195. package/dist/src/cliParser/cliParser.shortOption.js.map +0 -1
  196. package/dist/src/cliParser/index.d.ts.map +0 -1
  197. package/dist/src/cliParser/index.js.map +0 -1
  198. package/dist/src/cliType/cliType.type.d.ts.map +0 -1
  199. package/dist/src/cliType/cliType.type.js.map +0 -1
  200. package/dist/src/cliType/index.d.ts.map +0 -1
  201. package/dist/src/cliType/index.js.map +0 -1
  202. package/dist/src/cliVersion/cliVersion.core.d.ts.map +0 -1
  203. package/dist/src/cliVersion/cliVersion.core.js.map +0 -1
  204. package/dist/src/cliVersion/index.d.ts.map +0 -1
  205. package/dist/src/cliVersion/index.js.map +0 -1
  206. package/dist/src/commands/add.command.d.ts.map +0 -1
  207. package/dist/src/commands/add.command.js.map +0 -1
  208. package/dist/src/commands/build.command.d.ts.map +0 -1
  209. package/dist/src/commands/build.command.js.map +0 -1
  210. package/dist/src/commands/create.command.d.ts.map +0 -1
  211. package/dist/src/commands/create.command.js.map +0 -1
  212. package/dist/src/commands/dev.command.d.ts.map +0 -1
  213. package/dist/src/commands/dev.command.js.map +0 -1
  214. package/dist/src/commands/doctor.command.d.ts.map +0 -1
  215. package/dist/src/commands/doctor.command.js.map +0 -1
  216. package/dist/src/commands/generate.command.d.ts.map +0 -1
  217. package/dist/src/commands/generate.command.js.map +0 -1
  218. package/dist/src/commands/index.d.ts.map +0 -1
  219. package/dist/src/commands/index.js.map +0 -1
  220. package/dist/src/commands/info.command.d.ts.map +0 -1
  221. package/dist/src/commands/info.command.js.map +0 -1
  222. package/dist/src/constants/index.d.ts.map +0 -1
  223. package/dist/src/constants/index.js.map +0 -1
  224. package/dist/src/errors/index.d.ts.map +0 -1
  225. package/dist/src/errors/index.js.map +0 -1
  226. package/dist/src/generators/backend/backend.generator.d.ts.map +0 -1
  227. package/dist/src/generators/backend/backend.generator.js.map +0 -1
  228. package/dist/src/generators/backend/index.d.ts.map +0 -1
  229. package/dist/src/generators/backend/index.js.map +0 -1
  230. package/dist/src/generators/command/command.generator.d.ts.map +0 -1
  231. package/dist/src/generators/command/command.generator.js.map +0 -1
  232. package/dist/src/generators/controller/controller.generator.d.ts.map +0 -1
  233. package/dist/src/generators/controller/controller.generator.js.map +0 -1
  234. package/dist/src/generators/dto/dto.generator.d.ts.map +0 -1
  235. package/dist/src/generators/dto/dto.generator.js.map +0 -1
  236. package/dist/src/generators/dto/index.d.ts.map +0 -1
  237. package/dist/src/generators/dto/index.js.map +0 -1
  238. package/dist/src/generators/event/event.generator.d.ts.map +0 -1
  239. package/dist/src/generators/event/event.generator.js.map +0 -1
  240. package/dist/src/generators/event/index.d.ts.map +0 -1
  241. package/dist/src/generators/event/index.js.map +0 -1
  242. package/dist/src/generators/frontend/frontendGenerator.core.d.ts.map +0 -1
  243. package/dist/src/generators/frontend/frontendGenerator.core.js.map +0 -1
  244. package/dist/src/generators/frontend/index.d.ts.map +0 -1
  245. package/dist/src/generators/frontend/index.js.map +0 -1
  246. package/dist/src/generators/fullstack/fullstackComposer.core.d.ts.map +0 -1
  247. package/dist/src/generators/fullstack/fullstackComposer.core.js.map +0 -1
  248. package/dist/src/generators/fullstack/index.d.ts.map +0 -1
  249. package/dist/src/generators/fullstack/index.js.map +0 -1
  250. package/dist/src/generators/index.d.ts.map +0 -1
  251. package/dist/src/generators/index.js.map +0 -1
  252. package/dist/src/generators/infrastructure/index.d.ts.map +0 -1
  253. package/dist/src/generators/infrastructure/index.js.map +0 -1
  254. package/dist/src/generators/infrastructure/infrastructure.generator.d.ts.map +0 -1
  255. package/dist/src/generators/infrastructure/infrastructure.generator.js.map +0 -1
  256. package/dist/src/generators/integration/index.d.ts.map +0 -1
  257. package/dist/src/generators/integration/index.js.map +0 -1
  258. package/dist/src/generators/integration/integrationGenerator.core.d.ts.map +0 -1
  259. package/dist/src/generators/integration/integrationGenerator.core.js.map +0 -1
  260. package/dist/src/generators/job/index.d.ts.map +0 -1
  261. package/dist/src/generators/job/index.js.map +0 -1
  262. package/dist/src/generators/job/job.generator.d.ts.map +0 -1
  263. package/dist/src/generators/job/job.generator.js.map +0 -1
  264. package/dist/src/generators/middleware/index.d.ts.map +0 -1
  265. package/dist/src/generators/middleware/index.js.map +0 -1
  266. package/dist/src/generators/middleware/middleware.generator.d.ts.map +0 -1
  267. package/dist/src/generators/middleware/middleware.generator.js.map +0 -1
  268. package/dist/src/generators/model/index.d.ts.map +0 -1
  269. package/dist/src/generators/model/index.js.map +0 -1
  270. package/dist/src/generators/model/model.generator.d.ts.map +0 -1
  271. package/dist/src/generators/model/model.generator.js.map +0 -1
  272. package/dist/src/generators/module/module.generator.d.ts.map +0 -1
  273. package/dist/src/generators/module/module.generator.js.map +0 -1
  274. package/dist/src/generators/project/project.generator.d.ts.map +0 -1
  275. package/dist/src/generators/project/project.generator.js.map +0 -1
  276. package/dist/src/generators/query/query.generator.d.ts.map +0 -1
  277. package/dist/src/generators/query/query.generator.js.map +0 -1
  278. package/dist/src/generators/repository/repository.generator.d.ts.map +0 -1
  279. package/dist/src/generators/repository/repository.generator.js.map +0 -1
  280. package/dist/src/generators/route/index.d.ts.map +0 -1
  281. package/dist/src/generators/route/index.js.map +0 -1
  282. package/dist/src/generators/route/route.generator.d.ts.map +0 -1
  283. package/dist/src/generators/route/route.generator.js.map +0 -1
  284. package/dist/src/generators/service/service.generator.d.ts.map +0 -1
  285. package/dist/src/generators/service/service.generator.js.map +0 -1
  286. package/dist/src/generators/validator/index.d.ts.map +0 -1
  287. package/dist/src/generators/validator/index.js.map +0 -1
  288. package/dist/src/generators/validator/validator.generator.d.ts.map +0 -1
  289. package/dist/src/generators/validator/validator.generator.js.map +0 -1
  290. package/dist/src/index.d.ts.map +0 -1
  291. package/dist/src/index.js.map +0 -1
  292. package/dist/src/installers/dependency.installer.d.ts.map +0 -1
  293. package/dist/src/installers/dependency.installer.js.map +0 -1
  294. package/dist/src/installers/index.d.ts.map +0 -1
  295. package/dist/src/installers/index.js.map +0 -1
  296. package/dist/src/manifest/index.d.ts.map +0 -1
  297. package/dist/src/manifest/index.js.map +0 -1
  298. package/dist/src/manifest/manifestManager.core.d.ts.map +0 -1
  299. package/dist/src/manifest/manifestManager.core.js.map +0 -1
  300. package/dist/src/prompts/backend/api-style.prompt.d.ts.map +0 -1
  301. package/dist/src/prompts/backend/api-style.prompt.js.map +0 -1
  302. package/dist/src/prompts/backend/backend-architecture.prompt.d.ts.map +0 -1
  303. package/dist/src/prompts/backend/backend-architecture.prompt.js.map +0 -1
  304. package/dist/src/prompts/backend/database.prompt.d.ts.map +0 -1
  305. package/dist/src/prompts/backend/database.prompt.js.map +0 -1
  306. package/dist/src/prompts/backend/index.d.ts.map +0 -1
  307. package/dist/src/prompts/backend/index.js.map +0 -1
  308. package/dist/src/prompts/capabilities/capabilities.prompt.d.ts.map +0 -1
  309. package/dist/src/prompts/capabilities/capabilities.prompt.js.map +0 -1
  310. package/dist/src/prompts/capabilities/index.d.ts.map +0 -1
  311. package/dist/src/prompts/capabilities/index.js.map +0 -1
  312. package/dist/src/prompts/frontend/framework.prompt.d.ts.map +0 -1
  313. package/dist/src/prompts/frontend/framework.prompt.js.map +0 -1
  314. package/dist/src/prompts/frontend/frontend-architecture.prompt.d.ts.map +0 -1
  315. package/dist/src/prompts/frontend/frontend-architecture.prompt.js.map +0 -1
  316. package/dist/src/prompts/frontend/index.d.ts.map +0 -1
  317. package/dist/src/prompts/frontend/index.js.map +0 -1
  318. package/dist/src/prompts/index.d.ts.map +0 -1
  319. package/dist/src/prompts/index.js.map +0 -1
  320. package/dist/src/prompts/project/confirmation.prompt.d.ts.map +0 -1
  321. package/dist/src/prompts/project/confirmation.prompt.js.map +0 -1
  322. package/dist/src/prompts/project/index.d.ts.map +0 -1
  323. package/dist/src/prompts/project/index.js.map +0 -1
  324. package/dist/src/prompts/project/project-name.prompt.d.ts.map +0 -1
  325. package/dist/src/prompts/project/project-name.prompt.js.map +0 -1
  326. package/dist/src/prompts/project/project-type.prompt.d.ts.map +0 -1
  327. package/dist/src/prompts/project/project-type.prompt.js.map +0 -1
  328. package/dist/src/prompts/prompts.createProject.d.ts +0 -33
  329. package/dist/src/prompts/prompts.createProject.d.ts.map +0 -1
  330. package/dist/src/prompts/prompts.createProject.js +0 -143
  331. package/dist/src/prompts/prompts.createProject.js.map +0 -1
  332. package/dist/src/prompts/workspace/index.d.ts.map +0 -1
  333. package/dist/src/prompts/workspace/index.js.map +0 -1
  334. package/dist/src/prompts/workspace/package-manager.prompt.d.ts.map +0 -1
  335. package/dist/src/prompts/workspace/package-manager.prompt.js.map +0 -1
  336. package/dist/src/registries/adapter/frontendAdapterRegistry.core.d.ts.map +0 -1
  337. package/dist/src/registries/adapter/frontendAdapterRegistry.core.js.map +0 -1
  338. package/dist/src/registries/adapter/packageManagerRegistry.core.d.ts.map +0 -1
  339. package/dist/src/registries/adapter/packageManagerRegistry.core.js.map +0 -1
  340. package/dist/src/registries/dependency/dependencyRegistry.core.d.ts.map +0 -1
  341. package/dist/src/registries/dependency/dependencyRegistry.core.js.map +0 -1
  342. package/dist/src/registries/dependency/index.d.ts.map +0 -1
  343. package/dist/src/registries/dependency/index.js.map +0 -1
  344. package/dist/src/registries/generator/generatorRegistry.core.d.ts.map +0 -1
  345. package/dist/src/registries/generator/generatorRegistry.core.js.map +0 -1
  346. package/dist/src/registries/generator/index.d.ts.map +0 -1
  347. package/dist/src/registries/generator/index.js.map +0 -1
  348. package/dist/src/registries/index.d.ts.map +0 -1
  349. package/dist/src/registries/index.js.map +0 -1
  350. package/dist/src/resolvers/architecture.resolver.d.ts.map +0 -1
  351. package/dist/src/resolvers/architecture.resolver.js.map +0 -1
  352. package/dist/src/resolvers/capability/capabilityResolver.core.d.ts.map +0 -1
  353. package/dist/src/resolvers/capability/capabilityResolver.core.js.map +0 -1
  354. package/dist/src/resolvers/capability/index.d.ts.map +0 -1
  355. package/dist/src/resolvers/capability/index.js.map +0 -1
  356. package/dist/src/resolvers/configuration/configurationResolver.core.d.ts.map +0 -1
  357. package/dist/src/resolvers/configuration/configurationResolver.core.js.map +0 -1
  358. package/dist/src/resolvers/configuration/index.d.ts.map +0 -1
  359. package/dist/src/resolvers/configuration/index.js.map +0 -1
  360. package/dist/src/resolvers/dependency/dependencyResolver.core.d.ts.map +0 -1
  361. package/dist/src/resolvers/dependency/dependencyResolver.core.js.map +0 -1
  362. package/dist/src/resolvers/dependency/index.d.ts.map +0 -1
  363. package/dist/src/resolvers/dependency/index.js.map +0 -1
  364. package/dist/src/resolvers/index.d.ts.map +0 -1
  365. package/dist/src/resolvers/index.js.map +0 -1
  366. package/dist/src/resolvers/project.resolver.d.ts.map +0 -1
  367. package/dist/src/resolvers/project.resolver.js.map +0 -1
  368. package/dist/src/rollback/index.d.ts.map +0 -1
  369. package/dist/src/rollback/index.js.map +0 -1
  370. package/dist/src/rollback/rollbackManager.core.d.ts.map +0 -1
  371. package/dist/src/rollback/rollbackManager.core.js.map +0 -1
  372. package/dist/src/runners/package-manager/index.d.ts.map +0 -1
  373. package/dist/src/runners/package-manager/index.js.map +0 -1
  374. package/dist/src/runners/package-manager/packageManagerRunner.core.d.ts.map +0 -1
  375. package/dist/src/runners/package-manager/packageManagerRunner.core.js.map +0 -1
  376. package/dist/src/runners/process/index.d.ts.map +0 -1
  377. package/dist/src/runners/process/index.js.map +0 -1
  378. package/dist/src/runners/process/processRunner.core.d.ts.map +0 -1
  379. package/dist/src/runners/process/processRunner.core.js.map +0 -1
  380. package/dist/src/runners/task/index.d.ts.map +0 -1
  381. package/dist/src/runners/task/index.js.map +0 -1
  382. package/dist/src/runners/task/taskRunner.core.d.ts.map +0 -1
  383. package/dist/src/runners/task/taskRunner.core.js.map +0 -1
  384. package/dist/src/scaffolders/framework.scaffolder.d.ts.map +0 -1
  385. package/dist/src/scaffolders/framework.scaffolder.js.map +0 -1
  386. package/dist/src/scaffolders/index.d.ts.map +0 -1
  387. package/dist/src/scaffolders/index.js.map +0 -1
  388. package/dist/src/scaffolders/scaffolder.helper.d.ts.map +0 -1
  389. package/dist/src/scaffolders/scaffolder.helper.js.map +0 -1
  390. package/dist/src/templates/microservice/index.d.ts.map +0 -1
  391. package/dist/src/templates/microservice/index.js.map +0 -1
  392. package/dist/src/templates/microservice/microservice.template.d.ts.map +0 -1
  393. package/dist/src/templates/microservice/microservice.template.js.map +0 -1
  394. package/dist/src/templates/modular-monolith/index.d.ts.map +0 -1
  395. package/dist/src/templates/modular-monolith/index.js.map +0 -1
  396. package/dist/src/templates/modular-monolith/modularMonolith.template.d.ts.map +0 -1
  397. package/dist/src/templates/modular-monolith/modularMonolith.template.js.map +0 -1
  398. package/dist/src/templates/monolith/index.d.ts.map +0 -1
  399. package/dist/src/templates/monolith/index.js.map +0 -1
  400. package/dist/src/templates/monolith/monolith.template.d.ts.map +0 -1
  401. package/dist/src/templates/monolith/monolith.template.js.map +0 -1
  402. package/dist/src/types/index.d.ts.map +0 -1
  403. package/dist/src/types/index.js.map +0 -1
  404. package/dist/src/types/projectConfiguration.type.d.ts.map +0 -1
  405. package/dist/src/types/projectConfiguration.type.js.map +0 -1
  406. package/dist/src/types/scaffold.type.d.ts.map +0 -1
  407. package/dist/src/types/scaffold.type.js.map +0 -1
  408. package/dist/src/utils/index.d.ts.map +0 -1
  409. package/dist/src/utils/index.js.map +0 -1
  410. package/dist/src/utils/utils.detect.d.ts.map +0 -1
  411. package/dist/src/utils/utils.detect.js.map +0 -1
  412. package/dist/src/utils/utils.exec.d.ts.map +0 -1
  413. package/dist/src/utils/utils.exec.js.map +0 -1
  414. package/dist/src/utils/utils.fileSystem.d.ts.map +0 -1
  415. package/dist/src/utils/utils.fileSystem.js.map +0 -1
  416. package/dist/src/utils/utils.name.d.ts.map +0 -1
  417. package/dist/src/utils/utils.name.js.map +0 -1
  418. package/dist/src/validators/compatibility/compatibilityValidator.core.d.ts.map +0 -1
  419. package/dist/src/validators/compatibility/compatibilityValidator.core.js.map +0 -1
  420. package/dist/src/validators/compatibility/index.d.ts.map +0 -1
  421. package/dist/src/validators/compatibility/index.js.map +0 -1
  422. package/dist/src/validators/environment/environmentValidator.core.d.ts.map +0 -1
  423. package/dist/src/validators/environment/environmentValidator.core.js.map +0 -1
  424. package/dist/src/validators/environment/index.d.ts.map +0 -1
  425. package/dist/src/validators/environment/index.js.map +0 -1
  426. package/dist/src/validators/index.d.ts.map +0 -1
  427. package/dist/src/validators/index.js.map +0 -1
  428. package/dist/src/validators/project/index.d.ts.map +0 -1
  429. package/dist/src/validators/project/index.js.map +0 -1
  430. package/dist/src/validators/project/projectValidator.core.d.ts.map +0 -1
  431. package/dist/src/validators/project/projectValidator.core.js.map +0 -1
@@ -17,77 +17,111 @@
17
17
  * ├── infrastructure/
18
18
  * ├── package.json
19
19
  * ├── pnpm-workspace.yaml
20
- * ├── docker-compose.yml
21
20
  * ├── zudojs.config.ts
21
+ * ├── docker-compose.yml
22
22
  * └── README.md
23
23
  * ```
24
24
  */
25
+ import { ZUDOJS_PACKAGES_VERSION } from "../../constants/index.js";
26
+ import { normalizeName } from "../../utils/utils.name.js";
27
+ import { RUNTIME_APP_DEPENDENCIES, moduleSpec, renderAppFile, renderModuleFile, renderServerFile, renderZudojsConfig, } from "../shared/index.js";
28
+ /** Default service names used when none are provided. */
29
+ export const DEFAULT_MICROSERVICE_SERVICES = [
30
+ "identity",
31
+ "enrollment",
32
+ "assessment",
33
+ "notification",
34
+ ];
35
+ /**
36
+ * The gateway app is always generated at `apps/gateway`, so "gateway" is a
37
+ * reserved name: a service called `gateway` would produce a second, competing
38
+ * gateway at `apps/services/gateway`.
39
+ */
40
+ export const RESERVED_MICROSERVICE_APP_NAMES = ["gateway"];
41
+ /**
42
+ * Normalizes a requested service list into the service apps generated under
43
+ * `apps/services/`. Reserved names and duplicates are dropped; an empty list
44
+ * falls back to DEFAULT_MICROSERVICE_SERVICES.
45
+ */
46
+ export function resolveMicroserviceServices(requested) {
47
+ const normalized = requested
48
+ .map((service) => normalizeName(service))
49
+ .filter((service) => service.length > 0 &&
50
+ !RESERVED_MICROSERVICE_APP_NAMES.some((reserved) => reserved === service));
51
+ const unique = [...new Set(normalized)];
52
+ return unique.length > 0 ? unique : [...DEFAULT_MICROSERVICE_SERVICES];
53
+ }
25
54
  export function generateMicroserviceFiles(options) {
26
55
  const nameSlug = options.projectName
27
56
  .replace(/[^a-z0-9-]+/gi, "-")
28
57
  .toLowerCase();
29
- const services = options.services.length > 0
30
- ? options.services
31
- : ["identity", "enrollment", "assessment", "notification"];
58
+ const services = resolveMicroserviceServices(options.services);
32
59
  const files = {};
33
60
  // Root package.json (workspace root)
61
+ const rootScripts = {
62
+ dev: options.packageManager === "npm"
63
+ ? "npm run dev --workspaces --if-present"
64
+ : options.packageManager === "yarn"
65
+ ? "yarn workspaces run dev"
66
+ : options.packageManager === "bun"
67
+ ? "bun run --filter '*' dev"
68
+ : "pnpm -r run dev",
69
+ build: options.packageManager === "npm"
70
+ ? "npm run build --workspaces --if-present"
71
+ : options.packageManager === "yarn"
72
+ ? "yarn workspaces run build"
73
+ : options.packageManager === "bun"
74
+ ? "bun run --filter '*' build"
75
+ : "pnpm -r run build",
76
+ typecheck: options.packageManager === "npm"
77
+ ? "npm run typecheck --workspaces --if-present"
78
+ : options.packageManager === "yarn"
79
+ ? "yarn workspaces run typecheck"
80
+ : options.packageManager === "bun"
81
+ ? "bun run --filter '*' typecheck"
82
+ : "pnpm -r run typecheck",
83
+ };
84
+ const workspaceGlobs = ["apps/gateway", "apps/services/*"];
34
85
  files["package.json"] =
35
86
  JSON.stringify({
36
87
  name: nameSlug,
37
88
  version: "0.1.0",
38
89
  private: true,
90
+ type: "module",
39
91
  description: `Microservice architecture built with Zudojs framework`,
40
- scripts: {
41
- dev: "pnpm -r run dev",
42
- build: "pnpm -r run build",
43
- typecheck: "pnpm -r run typecheck",
92
+ zudojs: {
93
+ projectType: "backend",
94
+ architecture: "microservice",
95
+ features: [],
44
96
  },
97
+ ...(options.packageManager === "pnpm"
98
+ ? {}
99
+ : { workspaces: workspaceGlobs }),
100
+ scripts: rootScripts,
45
101
  devDependencies: {
46
102
  tsx: "^4.7.0",
47
103
  typescript: "^5.7.0",
48
104
  },
49
105
  }, null, 2) + "\n";
50
- files["pnpm-workspace.yaml"] = `packages:
51
- - gateway
52
- - services/*
53
- `;
54
- files["zudojs.config.ts"] = `import { defineConfig } from "@zudojs/config";
55
-
56
- export default defineConfig({
57
- application: {
58
- name: "${nameSlug}",
59
- },
60
-
61
- architecture: "microservice",
62
-
63
- runtime: {
64
- port: 3000,
65
- env: process.env.NODE_ENV ?? "development",
66
- },
67
-
68
- http: {
69
- enabled: true,
70
- },
71
-
72
- cqrs: {
73
- enabled: true,
74
- },
75
- });
106
+ if (options.packageManager === "pnpm") {
107
+ files["pnpm-workspace.yaml"] = `packages:
108
+ ${workspaceGlobs.map((g) => ` - "${g}"`).join("\n")}
76
109
  `;
77
- // Docker Compose
110
+ }
111
+ // Docker Compose — gateway on 3000, service i on 3001+i.
78
112
  let composeServices = "";
79
113
  for (let i = 0; i < services.length; i++) {
80
114
  const svc = services[i];
81
- const port = 3000 + i;
115
+ const port = 3001 + i;
82
116
  composeServices += ` ${svc}:
83
117
  build:
84
118
  context: .
85
119
  dockerfile: apps/services/${svc}/Dockerfile
86
120
  ports:
87
- - "${port}:3000"
121
+ - "${port}:${port}"
88
122
  environment:
89
123
  - NODE_ENV=development
90
- - PORT=3000
124
+ - PORT=${port}
91
125
  depends_on: []
92
126
  `;
93
127
  }
@@ -105,13 +139,19 @@ ${composeServices}
105
139
  volumes:
106
140
  ${services.map((s) => `${s}-data:`).join("\n ")}
107
141
  `;
142
+ files["zudojs.config.ts"] = renderZudojsConfig({
143
+ projectName: nameSlug,
144
+ projectType: "backend",
145
+ architecture: "microservice",
146
+ });
108
147
  files[".env.example"] = `NODE_ENV=development
109
148
  PORT=3000
110
149
  `;
111
150
  files[".gitignore"] = `node_modules/
112
151
  dist/
113
152
  .env
114
- *.log.data/
153
+ *.log
154
+ .data/
115
155
  `;
116
156
  files["README.md"] = `# ${options.projectName}
117
157
 
@@ -119,13 +159,14 @@ A microservice architecture built with the Zudojs framework.
119
159
 
120
160
  ## Services
121
161
 
122
- ${services.map((s, i) => `- **${s}** - Port ${3000 + i}`).join("\n")}
162
+ - **gateway** - Port 3000
163
+ ${services.map((s, i) => `- **${s}** - Port ${3001 + i}`).join("\n")}
123
164
 
124
165
  ## Getting Started
125
166
 
126
167
  \`\`\`bash
127
- pnpm install
128
- pnpm dev
168
+ ${options.packageManager === "npm" ? "npm install" : options.packageManager === "yarn" ? "yarn install" : options.packageManager === "bun" ? "bun install" : "pnpm install"}
169
+ ${options.packageManager === "npm" ? "npm run dev" : options.packageManager === "yarn" ? "yarn dev" : options.packageManager === "bun" ? "bun run dev" : "pnpm dev"}
129
170
  \`\`\`
130
171
 
131
172
  ## Docker
@@ -140,35 +181,21 @@ MIT
140
181
  `;
141
182
  // Shared types
142
183
  files["src/types/index.ts"] = ``;
143
- // Gateway service
144
- const gatewayDeps = ["@zudojs/http", "@zudojs/config", "@zudojs/logger"];
145
- files["apps/gateway/package.json"] =
146
- JSON.stringify({
147
- name: "@zudojsjs/gateway",
148
- version: "0.1.0",
149
- private: true,
150
- type: "module",
151
- scripts: {
152
- dev: "node --import tsx watch src/server.ts",
153
- start: "node dist/server.js",
154
- build: "tsc",
155
- typecheck: "tsc --noEmit",
156
- },
157
- dependencies: Object.fromEntries(gatewayDeps.map((d) => [d, "workspace:*"])),
158
- devDependencies: {
159
- tsx: "^4.7.0",
160
- typescript: "^5.7.0",
161
- "@types/node": "^22.0.0",
162
- },
163
- }, null, 2) + "\n";
164
- files["apps/gateway/tsconfig.json"] = `{
184
+ // Install command used inside Dockerfiles (no lockfile is generated, so
185
+ // never use `npm ci`; enable corepack for pnpm/yarn on bare node images).
186
+ const dockerInstall = options.packageManager === "pnpm"
187
+ ? "corepack enable && pnpm install"
188
+ : options.packageManager === "yarn"
189
+ ? "corepack enable && yarn install"
190
+ : "npm install";
191
+ const appTsconfig = `{
165
192
  "compilerOptions": {
166
193
  "target": "ES2024",
167
194
  "module": "Node16",
168
195
  "moduleResolution": "Node16",
169
- "allowImportingTsExtensions": true,
196
+ "outDir": "dist",
197
+ "rootDir": "src",
170
198
  "strict": true,
171
- "noEmit": true,
172
199
  "skipLibCheck": true,
173
200
  "esModuleInterop": true,
174
201
  "lib": ["ES2024"],
@@ -177,10 +204,37 @@ MIT
177
204
  "include": ["src/**/*"]
178
205
  }
179
206
  `;
207
+ const appDevDeps = {
208
+ tsx: "^4.7.0",
209
+ typescript: "^5.7.0",
210
+ "@types/node": "^24.0.0",
211
+ };
212
+ // Gateway service
213
+ const gatewayDeps = [
214
+ ...RUNTIME_APP_DEPENDENCIES,
215
+ "@zudojs/http",
216
+ "@zudojs/config",
217
+ ];
218
+ files["apps/gateway/package.json"] =
219
+ JSON.stringify({
220
+ name: `${nameSlug}-gateway`,
221
+ version: "0.1.0",
222
+ private: true,
223
+ type: "module",
224
+ scripts: {
225
+ dev: "tsx watch src/server.ts",
226
+ start: "node dist/server.js",
227
+ build: "tsc",
228
+ typecheck: "tsc --noEmit",
229
+ },
230
+ dependencies: Object.fromEntries([...new Set(gatewayDeps)].map((d) => [d, ZUDOJS_PACKAGES_VERSION])),
231
+ devDependencies: appDevDeps,
232
+ }, null, 2) + "\n";
233
+ files["apps/gateway/tsconfig.json"] = appTsconfig;
180
234
  files["apps/gateway/Dockerfile"] = `FROM node:24-alpine AS builder
181
235
  WORKDIR /app
182
- COPY apps/gateway/package*.json ./
183
- RUN npm ci
236
+ COPY apps/gateway/package.json ./
237
+ RUN ${dockerInstall}
184
238
  COPY apps/gateway/tsconfig.json ./
185
239
  COPY apps/gateway/src ./src
186
240
  RUN npx tsc
@@ -188,106 +242,61 @@ RUN npx tsc
188
242
  FROM node:24-alpine AS runtime
189
243
  WORKDIR /app
190
244
  COPY --from=builder /app/dist ./dist
245
+ COPY --from=builder /app/node_modules ./node_modules
246
+ COPY --from=builder /app/package.json ./
191
247
  EXPOSE 3000
192
248
  CMD ["node", "dist/server.js"]
193
249
  `;
194
250
  files["apps/gateway/src/index.ts"] =
195
- `export { createGateway } from "./app.js";
196
- `;
197
- files["apps/gateway/src/app.ts"] = `import { logger } from "@zudojs/logger";
198
-
199
- export async function createGateway() {
200
- const log = logger.child({ service: "gateway" });
201
- log.info("Gateway starting...");
202
-
203
- return {
204
- listen: async () => {
205
- log.info("Gateway listening on port 3000");
206
- },
207
- stop: async () => {
208
- log.info("Gateway shutting down...");
209
- },
210
- };
211
- }
212
- `;
213
- files["apps/gateway/src/server.ts"] =
214
- `import { createGateway } from "./app.js";
215
- import { createRuntime } from "@zudojs/runtime";
216
-
217
- const app = await createGateway();
218
-
219
- const runtime = createRuntime({
220
- onShutdown: async () => {
221
- await app.stop();
222
- },
223
- });
224
-
225
- await runtime.start();
226
- await app.listen();
227
-
228
- process.on("SIGTERM", async () => {
229
- await runtime.stop();
230
- process.exit(0);
231
- });
251
+ `export { createApp } from "./app.js";
232
252
  `;
253
+ const gatewayModule = moduleSpec("gateway", "./modules/index.js");
254
+ files["apps/gateway/src/app.ts"] = renderAppFile({
255
+ applicationName: `${nameSlug}-gateway`,
256
+ modules: [gatewayModule],
257
+ port: 3000,
258
+ });
259
+ files["apps/gateway/src/modules/gateway.module.ts"] = renderModuleFile({
260
+ module: gatewayModule,
261
+ });
262
+ files["apps/gateway/src/modules/index.ts"] =
263
+ `export { ${gatewayModule.className} } from "./gateway.module.js";\n`;
264
+ files["apps/gateway/src/server.ts"] = renderServerFile();
233
265
  // Generate each service
234
266
  const serviceDeps = [
235
- "@zudojs/core",
236
- "@zudojs/container",
267
+ ...RUNTIME_APP_DEPENDENCIES,
237
268
  "@zudojs/config",
238
- "@zudojs/logger",
239
269
  "@zudojs/errors",
240
- "@zudojs/constants",
241
270
  "@zudojs/http",
242
271
  ];
243
272
  if (options.enableCQRS) {
244
- serviceDeps.push("@zudojs/cqrs", "@zudojs/events");
273
+ serviceDeps.push("@zudojs/cqrs");
245
274
  }
246
275
  for (const svc of services) {
247
276
  const svcName = svc;
248
277
  const svcIndex = services.indexOf(svcName);
249
- const port = 3000 + svcIndex + 1;
278
+ const port = 3001 + svcIndex;
250
279
  files[`apps/services/${svcName}/package.json`] =
251
280
  JSON.stringify({
252
- name: `@zudojsjs/${nameSlug}-${svcName}`,
281
+ name: `${nameSlug}-${svcName}`,
253
282
  version: "0.1.0",
254
283
  private: true,
255
284
  type: "module",
256
285
  scripts: {
257
- dev: "node --import tsx watch src/server.ts",
286
+ dev: "tsx watch src/server.ts",
258
287
  start: "node dist/server.js",
259
288
  build: "tsc",
260
289
  typecheck: "tsc --noEmit",
261
290
  },
262
- dependencies: Object.fromEntries([...new Set(serviceDeps)].map((d) => [d, "workspace:*"])),
263
- devDependencies: {
264
- tsx: "^4.7.0",
265
- typescript: "^5.7.0",
266
- "@types/node": "^22.0.0",
267
- },
291
+ dependencies: Object.fromEntries([...new Set(serviceDeps)].map((d) => [d, ZUDOJS_PACKAGES_VERSION])),
292
+ devDependencies: appDevDeps,
268
293
  }, null, 2) + "\n";
269
- files[`apps/services/${svcName}/tsconfig.json`] = `{
270
- "compilerOptions": {
271
- "target": "ES2024",
272
- "module": "Node16",
273
- "moduleResolution": "Node16",
274
- "allowImportingTsExtensions": true,
275
- "strict": true,
276
- "noEmit": true,
277
- "skipLibCheck": true,
278
- "esModuleInterop": true,
279
- "lib": ["ES2024"],
280
- "types": ["node"]
281
- },
282
- "include": ["src/**/*"]
283
- }
284
- `;
294
+ files[`apps/services/${svcName}/tsconfig.json`] = appTsconfig;
285
295
  files[`apps/services/${svcName}/Dockerfile`] =
286
296
  `FROM node:24-alpine AS builder
287
297
  WORKDIR /app
288
- COPY apps/services/${svcName}/package*.json ./
289
- RUN npm ci
290
- COPY tsconfig.base.json ../../tsconfig.base.json
298
+ COPY apps/services/${svcName}/package.json ./
299
+ RUN ${dockerInstall}
291
300
  COPY apps/services/${svcName}/tsconfig.json ./
292
301
  COPY apps/services/${svcName}/src ./src
293
302
  RUN npx tsc
@@ -295,10 +304,12 @@ RUN npx tsc
295
304
  FROM node:24-alpine AS runtime
296
305
  WORKDIR /app
297
306
  COPY --from=builder /app/dist ./dist
307
+ COPY --from=builder /app/node_modules ./node_modules
308
+ COPY --from=builder /app/package.json ./
298
309
  EXPOSE ${port}
299
310
  CMD ["node", "dist/server.js"]
300
311
  `;
301
- // Service structure
312
+ // Service structure (modular monolith per service)
302
313
  const svcDirs = [
303
314
  "configs",
304
315
  "constants",
@@ -311,10 +322,12 @@ CMD ["node", "dist/server.js"]
311
322
  "interfaces",
312
323
  "jobs",
313
324
  "loaders",
325
+ "loggers",
314
326
  "middlewares",
315
327
  "models",
316
328
  "repositories",
317
329
  "routes",
330
+ "services",
318
331
  "types",
319
332
  "utils",
320
333
  "validators",
@@ -322,53 +335,22 @@ CMD ["node", "dist/server.js"]
322
335
  files[`apps/services/${svcName}/src/index.ts`] =
323
336
  `export { createApp } from "./app.js";
324
337
  `;
325
- files[`apps/services/${svcName}/src/app.ts`] =
326
- `import { logger } from "@zudojs/logger";
327
- import { createContainer } from "@zudojs/container";
328
-
329
- export async function createApp() {
330
- const log = logger.child({ service: "${svcName}" });
331
- const container = createContainer();
332
-
333
- log.info("${svcName} v0.1.0 starting...");
334
-
335
- return {
336
- container,
337
- listen: async () => {
338
- log.info("Listening on port ${port}");
339
- },
340
- stop: async () => {
341
- log.info("Shutting down...");
342
- },
343
- };
344
- }
345
- `;
346
- files[`apps/services/${svcName}/src/server.ts`] =
347
- `import { createApp } from "./app.js";
348
- import { createRuntime } from "@zudojs/runtime";
349
-
350
- const app = await createApp();
351
-
352
- const runtime = createRuntime({
353
- onShutdown: async () => {
354
- await app.stop();
355
- },
356
- });
357
-
358
- await runtime.start();
359
- await app.listen();
360
-
361
- process.on("SIGTERM", async () => {
362
- await runtime.stop();
363
- process.exit(0);
364
- });
365
- `;
366
- files[`apps/services/${svcName}/src/controllers/index.ts`] = ``;
367
- files[`apps/services/${svcName}/src/services/index.ts`] = ``;
368
- files[`apps/services/${svcName}/src/services/${svcName}/index.ts`] = ``;
338
+ const svcModule = moduleSpec(svcName, "./modules/index.js");
339
+ files[`apps/services/${svcName}/src/app.ts`] = renderAppFile({
340
+ applicationName: `${nameSlug}-${svcName}`,
341
+ modules: [svcModule],
342
+ port,
343
+ });
344
+ files[`apps/services/${svcName}/src/modules/${svcName}.module.ts`] =
345
+ renderModuleFile({ module: svcModule });
346
+ files[`apps/services/${svcName}/src/modules/index.ts`] =
347
+ `export { ${svcModule.className} } from "./${svcName}.module.js";\n`;
348
+ files[`apps/services/${svcName}/src/server.ts`] = renderServerFile();
369
349
  for (const dir of svcDirs) {
370
350
  files[`apps/services/${svcName}/src/${dir}/index.ts`] = "";
371
351
  }
352
+ files[`apps/services/${svcName}/src/commands/index.ts`] = "";
353
+ files[`apps/services/${svcName}/src/queries/index.ts`] = "";
372
354
  }
373
355
  return files;
374
356
  }