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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Zudojs Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -51,22 +51,45 @@ zudojs generate module users
51
51
 
52
52
  # Add a feature
53
53
  zudojs add database
54
+
55
+ # Build the project
56
+ zudojs build
54
57
  ```
55
58
 
59
+ `zudojs build` and `zudojs doctor` exit with a non-zero status when they fail,
60
+ so they can be used as CI gates.
61
+
62
+ ### Update check
63
+
64
+ `zudojs info` asks npm whether a newer `zudojs-cli` exists and prints the
65
+ version if so. Set `ZUDOJS_NO_UPDATE_CHECK=1` to turn it off; it is skipped
66
+ automatically when `CI` is set or npm is offline. Nothing runs at install
67
+ time.
68
+
69
+ ### What a new project contains
70
+
71
+ `zudojs create` records the project's type, architecture, package manager and
72
+ capabilities in `.zudojs/manifest.json` (machine-managed) and in the `zudojs`
73
+ block of `package.json`. Every follow-up command reads those; no
74
+ `zudojs.config.ts` is written. Framework packages are added as `^1.0.0`
75
+ ranges, and projects created for pnpm carry a `pnpm-workspace.yaml` that
76
+ allows esbuild's build script, which pnpm 10+ would otherwise refuse to run.
77
+
56
78
  ## Commands
57
79
 
58
80
  | Command | Description |
59
81
  | ---------- | ------------------------------------------------------------------------ |
60
82
  | `create` | Scaffold a new project (backend, frontend, or fullstack) |
61
83
  | `generate` | Generate files (service, module, command, query, controller, repository) |
62
- | `add` | Add feature packages (database, queue, messaging, etc.) |
63
- | `dev` | Start development servers |
84
+ | `add` | Add feature packages (database, queue, messaging, etc.); `--service` targets one microservice app |
85
+ | `dev` | Start development servers through the project's package manager (`pnpm run dev`, …) |
86
+ | `build` | Build the project with its detected package manager |
64
87
  | `doctor` | Run project diagnostics |
65
88
  | `info` | Show project information |
66
89
 
67
90
  ## Supported Frameworks
68
91
 
69
- - **Backend:** Node.js, Express, Fastify
92
+ - **Backend:** Node.js (Zudojs runtime)
70
93
  - **Frontend:** React, Next.js, Vue, Nuxt, Angular, Svelte, SvelteKit, Astro, Vanilla, Flutter, React Native
71
94
  - **Architectures:** Monolith, Modular Monolith, Microservice
72
95
 
@@ -17,18 +17,4 @@ export declare class PostgresAdapter implements DatabaseAdapter {
17
17
  getDependencies(): readonly string[];
18
18
  getEnvironmentVariables(): Record<string, string>;
19
19
  }
20
- export declare class MySqlAdapter implements DatabaseAdapter {
21
- readonly name = "mysql";
22
- readonly driver = "mysql";
23
- getConnectionString(dbName: string): string;
24
- getDependencies(): readonly string[];
25
- getEnvironmentVariables(): Record<string, string>;
26
- }
27
- export declare class SqliteAdapter implements DatabaseAdapter {
28
- readonly name = "sqlite";
29
- readonly driver = "sqlite";
30
- getConnectionString(dbName: string): string;
31
- getDependencies(): readonly string[];
32
- getEnvironmentVariables(): Record<string, string>;
33
- }
34
20
  //# sourceMappingURL=postgres.adapter.d.ts.map
@@ -18,34 +18,4 @@ export class PostgresAdapter {
18
18
  };
19
19
  }
20
20
  }
21
- export class MySqlAdapter {
22
- name = "mysql";
23
- driver = "mysql";
24
- getConnectionString(dbName) {
25
- return `mysql://localhost:3306/${dbName}`;
26
- }
27
- getDependencies() {
28
- return ["@zudojs/database"];
29
- }
30
- getEnvironmentVariables() {
31
- return {
32
- DATABASE_URL: "mysql://localhost:3306/mydb",
33
- };
34
- }
35
- }
36
- export class SqliteAdapter {
37
- name = "sqlite";
38
- driver = "sqlite";
39
- getConnectionString(dbName) {
40
- return `sqlite:${dbName}.db`;
41
- }
42
- getDependencies() {
43
- return ["@zudojs/database"];
44
- }
45
- getEnvironmentVariables() {
46
- return {
47
- DATABASE_URL: "sqlite:mydb.db",
48
- };
49
- }
50
- }
51
21
  //# sourceMappingURL=postgres.adapter.js.map
@@ -4,6 +4,7 @@
4
4
  * @module adapters/frontend/angular
5
5
  */
6
6
  import { writeFileTree } from "../../utils/utils.fileSystem.js";
7
+ import { normalizeName } from "../../utils/utils.name.js";
7
8
  import { scaffoldWithFallback } from "../../scaffolders/scaffolder.helper.js";
8
9
  /**
9
10
  * Angular adapter with standalone support.
@@ -19,11 +20,16 @@ export class AngularAdapter {
19
20
  }
20
21
  async scaffold(context) {
21
22
  const files = this.getBaseFiles(context);
23
+ // Angular CLI requires a valid project name; "." is not one. Pass the
24
+ // real name and scaffold into the current directory via --directory.
25
+ const projectName = normalizeName(context.project.name) || "zudojs-app";
22
26
  await scaffoldWithFallback({
23
27
  command: "npx",
24
28
  args: [
25
29
  "@angular/cli@latest",
26
30
  "new",
31
+ projectName,
32
+ "--directory",
27
33
  ".",
28
34
  "--skip-git",
29
35
  "--skip-install",
@@ -25,12 +25,12 @@ export class AstroAdapter {
25
25
  "create",
26
26
  "astro@latest",
27
27
  ".",
28
+ "--",
28
29
  "--template",
29
30
  "minimal",
30
31
  "--no-install",
31
32
  "--no-git",
32
- "--typescript",
33
- "strict",
33
+ "--yes",
34
34
  ],
35
35
  targetPath: context.projectPath,
36
36
  fallbackFiles: files,
@@ -17,6 +17,12 @@ export interface FrontendGenerationContext {
17
17
  readonly architecture: "zudojs-standard" | "feature-based" | "minimal" | "framework-default";
18
18
  readonly packageManager: "pnpm" | "npm" | "yarn" | "bun";
19
19
  readonly features: FrontendFeatures;
20
+ /**
21
+ * Record resolved dependencies in package.json instead of installing
22
+ * them. Set by `zudojs create --no-install`, which the frontend pipeline
23
+ * used to ignore: it ran the package manager regardless of the flag.
24
+ */
25
+ readonly skipInstall?: boolean;
20
26
  }
21
27
  /**
22
28
  * Optional frontend features.
@@ -32,6 +32,7 @@ export class ReactAdapter {
32
32
  "create",
33
33
  "vite@latest",
34
34
  ".",
35
+ "--",
35
36
  "--template",
36
37
  context.language === "javascript" ? "react" : "react-ts",
37
38
  ],
@@ -76,6 +77,7 @@ export class ReactAdapter {
76
77
  }
77
78
  getBaseFiles(context) {
78
79
  const useTypeScript = context.language === "typescript";
80
+ const ext = useTypeScript ? "tsx" : "jsx";
79
81
  return {
80
82
  "package.json": JSON.stringify({
81
83
  name: context.project.name,
@@ -84,7 +86,8 @@ export class ReactAdapter {
84
86
  type: "module",
85
87
  scripts: {
86
88
  dev: "vite",
87
- build: "tsc && vite build",
89
+ // Vite performs the build; tsc only typechecks (noEmit).
90
+ build: useTypeScript ? "tsc --noEmit && vite build" : "vite build",
88
91
  preview: "vite preview",
89
92
  },
90
93
  dependencies: {
@@ -104,18 +107,24 @@ export default defineConfig({
104
107
  plugins: [react()],
105
108
  });
106
109
  `,
107
- "tsconfig.json": JSON.stringify({
108
- compilerOptions: {
109
- target: "ES2020",
110
- useDefineForClassFields: true,
111
- lib: ["ES2020", "DOM", "DOM.Iterable"],
112
- module: "ESNext",
113
- skipLibCheck: true,
114
- moduleResolution: "bundler",
115
- allowImportingTsExtensions: true,
116
- resolveJsonModule: true,
117
- },
118
- }, null, 2),
110
+ ...(useTypeScript
111
+ ? {
112
+ "tsconfig.json": JSON.stringify({
113
+ compilerOptions: {
114
+ target: "ES2020",
115
+ useDefineForClassFields: true,
116
+ lib: ["ES2020", "DOM", "DOM.Iterable"],
117
+ module: "ESNext",
118
+ skipLibCheck: true,
119
+ moduleResolution: "bundler",
120
+ allowImportingTsExtensions: true,
121
+ resolveJsonModule: true,
122
+ jsx: "react-jsx",
123
+ noEmit: true,
124
+ },
125
+ }, null, 2),
126
+ }
127
+ : {}),
119
128
  "index.html": `<!DOCTYPE html>
120
129
  <html lang="en">
121
130
  <head>
@@ -125,21 +134,21 @@ export default defineConfig({
125
134
  </head>
126
135
  <body>
127
136
  <div id="root"></div>
128
- <script type="module" src="/src/main.tsx"></script>
137
+ <script type="module" src="/src/main.${ext}"></script>
129
138
  </body>
130
139
  </html>
131
140
  `,
132
- "src/main.tsx": `import { StrictMode } from "react";
141
+ [`src/main.${ext}`]: `import { StrictMode } from "react";
133
142
  import { createRoot } from "react-dom/client";
134
143
  import App from "./App";
135
144
 
136
- createRoot(document.getElementById("root")!).render(
145
+ createRoot(document.getElementById("root")${useTypeScript ? "!" : ""}).render(
137
146
  <StrictMode>
138
147
  <App />
139
148
  </StrictMode>,
140
149
  );
141
150
  `,
142
- "src/App.tsx": `export default function App() {
151
+ [`src/App.${ext}`]: `export default function App() {
143
152
  return (
144
153
  <div>
145
154
  <h1>Hello from Zudojs</h1>
@@ -25,6 +25,7 @@ export class SvelteAdapter {
25
25
  "create",
26
26
  "vite@latest",
27
27
  ".",
28
+ "--",
28
29
  "--template",
29
30
  context.language === "javascript" ? "svelte" : "svelte-ts",
30
31
  ],
@@ -20,17 +20,16 @@ export class SvelteKitAdapter {
20
20
  async scaffold(context) {
21
21
  const files = this.getBaseFiles(context);
22
22
  await scaffoldWithFallback({
23
- command: "npm",
23
+ command: "npx",
24
24
  args: [
25
+ "sv",
25
26
  "create",
26
- "svelte@latest",
27
27
  ".",
28
- "--typescript",
29
- "--no-eslint",
30
- "--no-prettier",
31
- "--no-playwright",
32
- "--no-vitest",
33
- "--no-git",
28
+ "--template",
29
+ "minimal",
30
+ "--types",
31
+ "ts",
32
+ "--no-add-ons",
34
33
  "--no-install",
35
34
  ],
36
35
  targetPath: context.projectPath,
@@ -21,7 +21,7 @@ export class VanillaAdapter {
21
21
  const files = this.getBaseFiles(context);
22
22
  await scaffoldWithFallback({
23
23
  command: "npm",
24
- args: ["create", "vite@latest", ".", "--template", "vanilla-ts"],
24
+ args: ["create", "vite@latest", ".", "--", "--template", "vanilla-ts"],
25
25
  targetPath: context.projectPath,
26
26
  fallbackFiles: files,
27
27
  });
@@ -25,6 +25,7 @@ export class VueAdapter {
25
25
  "create",
26
26
  "vite@latest",
27
27
  ".",
28
+ "--",
28
29
  "--template",
29
30
  context.language === "javascript" ? "vue" : "vue-ts",
30
31
  ],
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @module adapters/package-managers/bun
5
5
  */
6
- import { execCommand } from "../../utils/utils.exec.js";
6
+ import { execCommand, runStreaming } from "../../utils/utils.exec.js";
7
7
  /**
8
8
  * bun adapter implementation.
9
9
  */
@@ -19,20 +19,20 @@ export class BunAdapter {
19
19
  }
20
20
  }
21
21
  async install(projectPath) {
22
- await execCommand("bun", ["install"], projectPath);
22
+ await runStreaming("bun", ["install"], projectPath);
23
23
  }
24
24
  async add(projectPath, packages) {
25
25
  if (packages.length === 0)
26
26
  return;
27
- await execCommand("bun", ["add", ...packages], projectPath);
27
+ await runStreaming("bun", ["add", ...packages], projectPath);
28
28
  }
29
29
  async addDev(projectPath, packages) {
30
30
  if (packages.length === 0)
31
31
  return;
32
- await execCommand("bun", ["add", "-d", ...packages], projectPath);
32
+ await runStreaming("bun", ["add", "-d", ...packages], projectPath);
33
33
  }
34
34
  async run(projectPath, script) {
35
- await execCommand("bun", ["run", script], projectPath);
35
+ await runStreaming("bun", ["run", script], projectPath);
36
36
  }
37
37
  getInstallCommand() {
38
38
  return "bun install";
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @module adapters/package-managers/npm
5
5
  */
6
- import { execCommand } from "../../utils/utils.exec.js";
6
+ import { execCommand, runStreaming } from "../../utils/utils.exec.js";
7
7
  /**
8
8
  * npm adapter implementation.
9
9
  */
@@ -19,20 +19,20 @@ export class NpmAdapter {
19
19
  }
20
20
  }
21
21
  async install(projectPath) {
22
- await execCommand("npm", ["install"], projectPath);
22
+ await runStreaming("npm", ["install"], projectPath);
23
23
  }
24
24
  async add(projectPath, packages) {
25
25
  if (packages.length === 0)
26
26
  return;
27
- await execCommand("npm", ["install", ...packages], projectPath);
27
+ await runStreaming("npm", ["install", ...packages], projectPath);
28
28
  }
29
29
  async addDev(projectPath, packages) {
30
30
  if (packages.length === 0)
31
31
  return;
32
- await execCommand("npm", ["install", "-D", ...packages], projectPath);
32
+ await runStreaming("npm", ["install", "-D", ...packages], projectPath);
33
33
  }
34
34
  async run(projectPath, script) {
35
- await execCommand("npm", ["run", script], projectPath);
35
+ await runStreaming("npm", ["run", script], projectPath);
36
36
  }
37
37
  getInstallCommand() {
38
38
  return "npm install";
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @module adapters/package-managers/pnpm
5
5
  */
6
- import { execCommand } from "../../utils/utils.exec.js";
6
+ import { execCommand, runStreaming } from "../../utils/utils.exec.js";
7
7
  /**
8
8
  * pnpm adapter implementation.
9
9
  */
@@ -19,20 +19,20 @@ export class PnpmAdapter {
19
19
  }
20
20
  }
21
21
  async install(projectPath) {
22
- await execCommand("pnpm", ["install"], projectPath);
22
+ await runStreaming("pnpm", ["install"], projectPath);
23
23
  }
24
24
  async add(projectPath, packages) {
25
25
  if (packages.length === 0)
26
26
  return;
27
- await execCommand("pnpm", ["add", ...packages], projectPath);
27
+ await runStreaming("pnpm", ["add", ...packages], projectPath);
28
28
  }
29
29
  async addDev(projectPath, packages) {
30
30
  if (packages.length === 0)
31
31
  return;
32
- await execCommand("pnpm", ["add", "-D", ...packages], projectPath);
32
+ await runStreaming("pnpm", ["add", "-D", ...packages], projectPath);
33
33
  }
34
34
  async run(projectPath, script) {
35
- await execCommand("pnpm", ["run", script], projectPath);
35
+ await runStreaming("pnpm", ["run", script], projectPath);
36
36
  }
37
37
  getInstallCommand() {
38
38
  return "pnpm install";
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @module adapters/package-managers/yarn
5
5
  */
6
- import { execCommand } from "../../utils/utils.exec.js";
6
+ import { execCommand, runStreaming } from "../../utils/utils.exec.js";
7
7
  /**
8
8
  * yarn adapter implementation.
9
9
  */
@@ -19,20 +19,20 @@ export class YarnAdapter {
19
19
  }
20
20
  }
21
21
  async install(projectPath) {
22
- await execCommand("yarn", ["install"], projectPath);
22
+ await runStreaming("yarn", ["install"], projectPath);
23
23
  }
24
24
  async add(projectPath, packages) {
25
25
  if (packages.length === 0)
26
26
  return;
27
- await execCommand("yarn", ["add", ...packages], projectPath);
27
+ await runStreaming("yarn", ["add", ...packages], projectPath);
28
28
  }
29
29
  async addDev(projectPath, packages) {
30
30
  if (packages.length === 0)
31
31
  return;
32
- await execCommand("yarn", ["add", "-D", ...packages], projectPath);
32
+ await runStreaming("yarn", ["add", "-D", ...packages], projectPath);
33
33
  }
34
34
  async run(projectPath, script) {
35
- await execCommand("yarn", [script], projectPath);
35
+ await runStreaming("yarn", [script], projectPath);
36
36
  }
37
37
  getInstallCommand() {
38
38
  return "yarn install";
@@ -5,8 +5,8 @@
5
5
  * @module bin/zudojs
6
6
  */
7
7
  import { createCLI } from "../cliApplication/index.js";
8
- import { CLI_DEFAULTS } from "../cliConstant/cliConstant.value.js";
9
8
  import { createCommand } from "../cliCommand/index.js";
9
+ import { CLI_VERSION, FEATURE_PACKAGES } from "../constants/index.js";
10
10
  import { runCreateCommand } from "../commands/create.command.js";
11
11
  import { runDevCommand } from "../commands/dev.command.js";
12
12
  import { runGenerateCommand } from "../commands/generate.command.js";
@@ -16,7 +16,9 @@ import { runDoctorCommand } from "../commands/doctor.command.js";
16
16
  import { runInfoCommand } from "../commands/info.command.js";
17
17
  const app = createCLI({
18
18
  name: "Zudojs",
19
- version: "0.1.0",
19
+ // Read from the CLI's own package.json, so `zudojs --version` cannot
20
+ // drift from the published version.
21
+ version: CLI_VERSION,
20
22
  description: "Command-line interface for the Zudojs framework.",
21
23
  });
22
24
  app.register(createCommand({
@@ -73,7 +75,7 @@ app.register(createCommand({
73
75
  },
74
76
  {
75
77
  name: "frontend-architecture",
76
- short: "fa",
78
+ short: "F",
77
79
  description: "Frontend architecture (zudojs-standard, feature-based, minimal, framework-default)",
78
80
  type: "string",
79
81
  defaultValue: "zudojs-standard",
@@ -98,10 +100,13 @@ app.register(createCommand({
98
100
  defaultValue: false,
99
101
  },
100
102
  {
103
+ // No default: the flag default used to be "gateway,api", which made a
104
+ // non-interactive `--architecture microservice` generate
105
+ // apps/services/gateway alongside the always-generated apps/gateway.
106
+ // With no default the microservice template picks its own service set.
101
107
  name: "services",
102
108
  description: "Comma-separated service names (microservice architecture only)",
103
109
  type: "string",
104
- defaultValue: "gateway,api",
105
110
  },
106
111
  ],
107
112
  execute: async (context) => {
@@ -182,15 +187,15 @@ app.register(createCommand({
182
187
  arguments: [
183
188
  {
184
189
  name: "feature",
185
- description: "The feature to add (database, queue, messaging, openapi, observability, security)",
190
+ description: `The feature to add (${Object.keys(FEATURE_PACKAGES).join(", ")})`,
186
191
  required: true,
187
192
  },
188
193
  ],
189
194
  options: [
190
195
  {
191
- name: "adapter",
192
- short: "a",
193
- description: "Specific adapter to use",
196
+ name: "service",
197
+ short: "s",
198
+ description: "Add the feature to one app of a microservice project (gateway or a service name)",
194
199
  type: "string",
195
200
  },
196
201
  {
@@ -226,8 +231,15 @@ app.register(createCommand({
226
231
  await runInfoCommand(context);
227
232
  },
228
233
  }));
229
- const exitCode = await app.run(process.argv.slice(2));
230
- if (exitCode !== 0) {
231
- process.exit(exitCode);
234
+ try {
235
+ const exitCode = await app.run(process.argv.slice(2));
236
+ if (exitCode !== 0) {
237
+ process.exit(exitCode);
238
+ }
239
+ }
240
+ catch (error) {
241
+ const message = error instanceof Error ? error.message : String(error);
242
+ console.error(`Error: ${message}`);
243
+ process.exit(1);
232
244
  }
233
245
  //# sourceMappingURL=zudojs.js.map
@@ -4,9 +4,18 @@
4
4
  * Help and version request detection and output.
5
5
  */
6
6
  import type { CLIArguments, CLIWriter } from "../cliType/cliType.type.js";
7
- /** Returns whether the args contain a help request. */
7
+ /**
8
+ * Returns whether the args are a help request.
9
+ *
10
+ * Only the first argument is considered so that command-specific flags
11
+ * (e.g. `zudojs create -h ...`) are not swallowed by the global handler.
12
+ */
8
13
  export declare function isHelpRequest(args: CLIArguments): boolean;
9
- /** Returns whether the args contain a version request. */
14
+ /**
15
+ * Returns whether the args are a version request.
16
+ *
17
+ * Only the first argument is considered.
18
+ */
10
19
  export declare function isVersionRequest(args: CLIArguments): boolean;
11
20
  /** Prints the version string. */
12
21
  export declare function printVersion(writer: CLIWriter, version?: string): void;
@@ -4,13 +4,24 @@
4
4
  * Help and version request detection and output.
5
5
  */
6
6
  import { CLI_COMMANDS, CLI_DEFAULTS, } from "../cliConstant/cliConstant.value.js";
7
- /** Returns whether the args contain a help request. */
7
+ /**
8
+ * Returns whether the args are a help request.
9
+ *
10
+ * Only the first argument is considered so that command-specific flags
11
+ * (e.g. `zudojs create -h ...`) are not swallowed by the global handler.
12
+ */
8
13
  export function isHelpRequest(args) {
9
- return args.some((arg) => arg === CLI_COMMANDS.HELP || arg === "-h" || arg === "--help");
14
+ const first = args[0];
15
+ return first === CLI_COMMANDS.HELP || first === "-h" || first === "--help";
10
16
  }
11
- /** Returns whether the args contain a version request. */
17
+ /**
18
+ * Returns whether the args are a version request.
19
+ *
20
+ * Only the first argument is considered.
21
+ */
12
22
  export function isVersionRequest(args) {
13
- return args.some((arg) => arg === CLI_COMMANDS.VERSION || arg === "-v" || arg === "--version");
23
+ const first = args[0];
24
+ return (first === CLI_COMMANDS.VERSION || first === "-v" || first === "--version");
14
25
  }
15
26
  /** Prints the version string. */
16
27
  export function printVersion(writer, version) {
@@ -10,8 +10,8 @@ import { CommandNotFoundError } from "../cliError/cliError.command.js";
10
10
  import { CLICommandRegistry } from "../cliCommand/cliCommand.registry.js";
11
11
  import { executeCommand } from "../cliCommand/cliCommand.factory.js";
12
12
  import { CLIParser, resolveCommand } from "../cliParser/index.js";
13
- import { createDefaultLogger } from "@zudojs/logger";
14
13
  import { createCLIWriter } from "./cliApplication.writer.js";
14
+ import { createCLILogger } from "./cliApplication.logger.js";
15
15
  import { isHelpRequest, isVersionRequest, printVersion, printHelp, } from "./cliApplication.builtins.js";
16
16
  /* -------------------------------------------------------------------------- */
17
17
  /* Application */
@@ -38,7 +38,7 @@ export class ZudojsCLI {
38
38
  this.description = options.description ?? CLI_DEFAULTS.DESCRIPTION;
39
39
  this.cwd = options.cwd ?? process.cwd();
40
40
  this.env = options.env ?? process.env;
41
- this.logger = options.logger ?? createDefaultLogger();
41
+ this.logger = options.logger ?? createCLILogger();
42
42
  this.commands = new CLICommandRegistry();
43
43
  this.parser = new CLIParser();
44
44
  this.writer = createCLIWriter();
@@ -100,12 +100,27 @@ export class ZudojsCLI {
100
100
  }
101
101
  catch (error) {
102
102
  const normalized = normalizeCLIError(error);
103
- const command = this.findCommand(args);
104
- const commandArgs = command
105
- ? this.getCommandArguments(args, command)
106
- : args;
107
- const fallbackContext = this.createContext(commandArgs, command);
108
103
  if (this.hooks.onError) {
104
+ // Building the fallback context must never rethrow: if the original
105
+ // error came from argument parsing, re-parsing would fail again.
106
+ let fallbackContext;
107
+ try {
108
+ const command = this.findCommand(args);
109
+ const commandArgs = command
110
+ ? this.getCommandArguments(args, command)
111
+ : args;
112
+ fallbackContext = this.createContext(commandArgs, command);
113
+ }
114
+ catch {
115
+ fallbackContext = {
116
+ args,
117
+ values: {},
118
+ command: undefined,
119
+ cwd: this.cwd,
120
+ env: this.env,
121
+ logger: this.logger,
122
+ };
123
+ }
109
124
  await this.hooks.onError(normalized, fallbackContext);
110
125
  }
111
126
  this.writer.errorLine(normalized.message);