zudojs-cli 0.1.2 → 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 +169 -51
  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 +72 -43
  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 -0
  87. package/dist/src/templates/microservice/microservice.template.js +148 -162
  88. package/dist/src/templates/modular-monolith/modularMonolith.template.js +45 -76
  89. package/dist/src/templates/monolith/monolith.template.d.ts +1 -0
  90. package/dist/src/templates/monolith/monolith.template.js +48 -68
  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 -150
  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
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,8 +51,20 @@ 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
+ ### Disabling the update check
63
+
64
+ `zudojs-cli` checks npm for a newer version after a global install. Set
65
+ `ZUDOJS_NO_UPDATE_CHECK=1` to turn it off; it is skipped automatically when
66
+ `CI` is set, when npm is offline, and for non-global installs.
67
+
56
68
  ## Commands
57
69
 
58
70
  | Command | Description |
@@ -61,12 +73,13 @@ zudojs add database
61
73
  | `generate` | Generate files (service, module, command, query, controller, repository) |
62
74
  | `add` | Add feature packages (database, queue, messaging, etc.) |
63
75
  | `dev` | Start development servers |
76
+ | `build` | Build the project with its detected package manager |
64
77
  | `doctor` | Run project diagnostics |
65
78
  | `info` | Show project information |
66
79
 
67
80
  ## Supported Frameworks
68
81
 
69
- - **Backend:** Node.js, Express, Fastify
82
+ - **Backend:** Node.js (Zudojs runtime)
70
83
  - **Frontend:** React, Next.js, Vue, Nuxt, Angular, Svelte, SvelteKit, Astro, Vanilla, Flutter, React Native
71
84
  - **Architectures:** Monolith, Modular Monolith, Microservice
72
85
 
@@ -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,
@@ -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";
@@ -4,6 +4,9 @@
4
4
  *
5
5
  * @module bin/zudojs
6
6
  */
7
+ import { readFileSync } from "node:fs";
8
+ import { dirname, join } from "node:path";
9
+ import { fileURLToPath } from "node:url";
7
10
  import { createCLI } from "../cliApplication/index.js";
8
11
  import { CLI_DEFAULTS } from "../cliConstant/cliConstant.value.js";
9
12
  import { createCommand } from "../cliCommand/index.js";
@@ -14,9 +17,32 @@ import { runAddCommand } from "../commands/add.command.js";
14
17
  import { runBuildCommand } from "../commands/build.command.js";
15
18
  import { runDoctorCommand } from "../commands/doctor.command.js";
16
19
  import { runInfoCommand } from "../commands/info.command.js";
20
+ /**
21
+ * Reads the CLI's real version from its own package.json at runtime so
22
+ * `zudojs --version` can never drift from the published version.
23
+ */
24
+ function readCliVersion() {
25
+ let dir = dirname(fileURLToPath(import.meta.url));
26
+ for (let depth = 0; depth < 6; depth++) {
27
+ try {
28
+ const pkg = JSON.parse(readFileSync(join(dir, "package.json"), "utf-8"));
29
+ if (pkg.name === "zudojs-cli" && pkg.version) {
30
+ return pkg.version;
31
+ }
32
+ }
33
+ catch {
34
+ // keep walking up
35
+ }
36
+ const parent = dirname(dir);
37
+ if (parent === dir)
38
+ break;
39
+ dir = parent;
40
+ }
41
+ return CLI_DEFAULTS.VERSION;
42
+ }
17
43
  const app = createCLI({
18
44
  name: "Zudojs",
19
- version: "0.1.0",
45
+ version: readCliVersion(),
20
46
  description: "Command-line interface for the Zudojs framework.",
21
47
  });
22
48
  app.register(createCommand({
@@ -73,7 +99,7 @@ app.register(createCommand({
73
99
  },
74
100
  {
75
101
  name: "frontend-architecture",
76
- short: "fa",
102
+ short: "F",
77
103
  description: "Frontend architecture (zudojs-standard, feature-based, minimal, framework-default)",
78
104
  type: "string",
79
105
  defaultValue: "zudojs-standard",
@@ -98,10 +124,13 @@ app.register(createCommand({
98
124
  defaultValue: false,
99
125
  },
100
126
  {
127
+ // No default: the flag default used to be "gateway,api", which made a
128
+ // non-interactive `--architecture microservice` generate
129
+ // apps/services/gateway alongside the always-generated apps/gateway.
130
+ // With no default the microservice template picks its own service set.
101
131
  name: "services",
102
132
  description: "Comma-separated service names (microservice architecture only)",
103
133
  type: "string",
104
- defaultValue: "gateway,api",
105
134
  },
106
135
  ],
107
136
  execute: async (context) => {
@@ -226,8 +255,15 @@ app.register(createCommand({
226
255
  await runInfoCommand(context);
227
256
  },
228
257
  }));
229
- const exitCode = await app.run(process.argv.slice(2));
230
- if (exitCode !== 0) {
231
- process.exit(exitCode);
258
+ try {
259
+ const exitCode = await app.run(process.argv.slice(2));
260
+ if (exitCode !== 0) {
261
+ process.exit(exitCode);
262
+ }
263
+ }
264
+ catch (error) {
265
+ const message = error instanceof Error ? error.message : String(error);
266
+ console.error(`Error: ${message}`);
267
+ process.exit(1);
232
268
  }
233
269
  //# 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) {
@@ -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);
@@ -8,7 +8,7 @@ export declare const CLI_NAME = "zudojs";
8
8
  /** Default application configuration. */
9
9
  export declare const CLI_DEFAULTS: {
10
10
  readonly NAME: "zudojs";
11
- readonly VERSION: "0.1.0";
11
+ readonly VERSION: string;
12
12
  readonly DESCRIPTION: "Command-line interface for the Zudojs framework.";
13
13
  readonly COMMAND_PREFIX: "zudojs";
14
14
  readonly DEFAULT_CWD: string;
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * Default values, limits, and magic strings used across the CLI package.
5
5
  */
6
+ import { CLI_VERSION } from "./cliVersion.js";
6
7
  /* -------------------------------------------------------------------------- */
7
8
  /* Application Defaults */
8
9
  /* -------------------------------------------------------------------------- */
@@ -11,7 +12,7 @@ export const CLI_NAME = "zudojs";
11
12
  /** Default application configuration. */
12
13
  export const CLI_DEFAULTS = {
13
14
  NAME: "zudojs",
14
- VERSION: "0.1.0",
15
+ VERSION: CLI_VERSION,
15
16
  DESCRIPTION: "Command-line interface for the Zudojs framework.",
16
17
  COMMAND_PREFIX: "zudojs",
17
18
  DEFAULT_CWD: process.cwd(),
@@ -0,0 +1,16 @@
1
+ /**
2
+ * zudojs-cli — Version resolution
3
+ *
4
+ * The CLI's own version, read from its `package.json` at runtime.
5
+ *
6
+ * It used to be a hand-maintained string literal duplicated in two places
7
+ * (`constants/index.ts` and `cliConstant.value.ts`). Both are stamped into the
8
+ * manifest of every generated project, so a release that bumped `package.json`
9
+ * without editing both copies would silently scaffold projects claiming the
10
+ * previous version. Reading the manifest removes the duplication entirely.
11
+ *
12
+ * @module cliConstant/cliVersion
13
+ */
14
+ /** The CLI's version, matching its `package.json`. */
15
+ export declare const CLI_VERSION: string;
16
+ //# sourceMappingURL=cliVersion.d.ts.map