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
@@ -0,0 +1,28 @@
1
+ /**
2
+ * zudojs-cli — CLI Logger
3
+ *
4
+ * A `Logger` whose output is plain terminal text.
5
+ *
6
+ * The CLI used `createDefaultLogger()` from `@zudojs/logger`, whose console
7
+ * transport prints the whole serialised log record. Every line a command
8
+ * wrote to the user came out as a multi-line object literal with a
9
+ * timestamp, a level, a logger name and an empty metadata block wrapped
10
+ * around the message. This logger keeps the `Logger` contract (commands
11
+ * still receive `context.logger`) and writes one line per call: info to
12
+ * stdout, warnings and errors to stderr.
13
+ *
14
+ * @module cliApplication/logger
15
+ */
16
+ import { type Logger, type LoggerEntry } from "@zudojs/logger";
17
+ export interface CLILoggerOptions {
18
+ /** Emit debug and trace lines too. Defaults to `ZUDOJS_DEBUG` being set. */
19
+ readonly verbose?: boolean;
20
+ /** Line writers, overridable for tests. */
21
+ readonly stdout?: (line: string) => void;
22
+ readonly stderr?: (line: string) => void;
23
+ }
24
+ /** Renders one entry as the single line the user sees. */
25
+ export declare function formatCLILogLine(entry: LoggerEntry): string;
26
+ /** Creates the logger handed to every command as `context.logger`. */
27
+ export declare function createCLILogger(options?: CLILoggerOptions): Logger;
28
+ //# sourceMappingURL=cliApplication.logger.d.ts.map
@@ -0,0 +1,68 @@
1
+ /**
2
+ * zudojs-cli — CLI Logger
3
+ *
4
+ * A `Logger` whose output is plain terminal text.
5
+ *
6
+ * The CLI used `createDefaultLogger()` from `@zudojs/logger`, whose console
7
+ * transport prints the whole serialised log record. Every line a command
8
+ * wrote to the user came out as a multi-line object literal with a
9
+ * timestamp, a level, a logger name and an empty metadata block wrapped
10
+ * around the message. This logger keeps the `Logger` contract (commands
11
+ * still receive `context.logger`) and writes one line per call: info to
12
+ * stdout, warnings and errors to stderr.
13
+ *
14
+ * @module cliApplication/logger
15
+ */
16
+ import { createLogger, LoggerLevel, } from "@zudojs/logger";
17
+ /** Renders one entry as the single line the user sees. */
18
+ export function formatCLILogLine(entry) {
19
+ switch (entry.levelName) {
20
+ case "fatal":
21
+ case "error":
22
+ return `Error: ${entry.message}`;
23
+ case "warn":
24
+ return `Warning: ${entry.message}`;
25
+ case "debug":
26
+ case "trace":
27
+ return `[${entry.levelName}] ${entry.message}`;
28
+ default:
29
+ return entry.message;
30
+ }
31
+ }
32
+ /** Creates the logger handed to every command as `context.logger`. */
33
+ export function createCLILogger(options = {}) {
34
+ const verbose = options.verbose ??
35
+ (process.env["ZUDOJS_DEBUG"] !== undefined &&
36
+ process.env["ZUDOJS_DEBUG"] !== "" &&
37
+ process.env["ZUDOJS_DEBUG"] !== "0");
38
+ const stdout = options.stdout ?? ((line) => process.stdout.write(`${line}\n`));
39
+ const stderr = options.stderr ?? ((line) => process.stderr.write(`${line}\n`));
40
+ return createLogger({
41
+ name: "zudojs",
42
+ level: verbose ? LoggerLevel.TRACE : LoggerLevel.INFO,
43
+ // Writes must complete before a command returns; `process.exit` follows
44
+ // an error immediately.
45
+ asynchronous: false,
46
+ formatter: (entry) => formatCLILogLine(entry),
47
+ transports: [
48
+ {
49
+ name: "cli-stdio",
50
+ enabled: true,
51
+ write(entry) {
52
+ // The formatter's output arrives as the entry message.
53
+ const line = entry.message;
54
+ switch (entry.levelName) {
55
+ case "fatal":
56
+ case "error":
57
+ case "warn":
58
+ stderr(line);
59
+ break;
60
+ default:
61
+ stdout(line);
62
+ }
63
+ },
64
+ },
65
+ ],
66
+ });
67
+ }
68
+ //# sourceMappingURL=cliApplication.logger.js.map
@@ -1,9 +1,7 @@
1
1
  /**
2
2
  * zudojs-cli — CLI Application
3
- *
4
- * Main application class, factory, built-in commands, and signal handling.
5
3
  */
6
4
  export { ZudojsCLI, createCLI } from "./cliApplication.core.js";
7
5
  export { createCLIWriter, registerCLIInterruptHandler, } from "./cliApplication.writer.js";
8
- export { isHelpRequest, isVersionRequest, printVersion, printHelp, } from "./cliApplication.builtins.js";
6
+ export { createCLILogger, formatCLILogLine, type CLILoggerOptions, } from "./cliApplication.logger.js";
9
7
  //# sourceMappingURL=index.d.ts.map
@@ -1,9 +1,7 @@
1
1
  /**
2
2
  * zudojs-cli — CLI Application
3
- *
4
- * Main application class, factory, built-in commands, and signal handling.
5
3
  */
6
4
  export { ZudojsCLI, createCLI } from "./cliApplication.core.js";
7
5
  export { createCLIWriter, registerCLIInterruptHandler, } from "./cliApplication.writer.js";
8
- export { isHelpRequest, isVersionRequest, printVersion, printHelp, } from "./cliApplication.builtins.js";
6
+ export { createCLILogger, formatCLILogLine, } from "./cliApplication.logger.js";
9
7
  //# sourceMappingURL=index.js.map
@@ -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
@@ -0,0 +1,57 @@
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
+ import { existsSync, readFileSync } from "node:fs";
15
+ import { dirname, join } from "node:path";
16
+ import { fileURLToPath } from "node:url";
17
+ /** Package name to match, so a parent workspace manifest is never picked up. */
18
+ const PACKAGE_NAME = "zudojs-cli";
19
+ /** Directory levels to walk upward before giving up. */
20
+ const MAX_LOOKUP_DEPTH = 8;
21
+ /**
22
+ * Walks upward from this module looking for the CLI's own `package.json`.
23
+ *
24
+ * The compiled layout (`dist/src/cliConstant/`) sits one level deeper than the
25
+ * source layout (`src/cliConstant/`), so a fixed relative path would be correct
26
+ * in only one of them. Matching on `name` also means a parent workspace
27
+ * manifest cannot be mistaken for ours.
28
+ *
29
+ * @returns The version string declared in the CLI's `package.json`.
30
+ * @throws {Error} If the manifest cannot be located or has no string version.
31
+ */
32
+ function readOwnVersion() {
33
+ let directory = dirname(fileURLToPath(import.meta.url));
34
+ for (let depth = 0; depth < MAX_LOOKUP_DEPTH; depth += 1) {
35
+ const manifestPath = join(directory, "package.json");
36
+ if (existsSync(manifestPath)) {
37
+ const parsed = JSON.parse(readFileSync(manifestPath, "utf8"));
38
+ if (typeof parsed === "object" && parsed !== null) {
39
+ const { name, version } = parsed;
40
+ if (name === PACKAGE_NAME &&
41
+ typeof version === "string" &&
42
+ version.length > 0) {
43
+ return version;
44
+ }
45
+ }
46
+ }
47
+ const parent = dirname(directory);
48
+ if (parent === directory) {
49
+ break;
50
+ }
51
+ directory = parent;
52
+ }
53
+ throw new Error(`${PACKAGE_NAME}: could not resolve its own package.json to read the version.`);
54
+ }
55
+ /** The CLI's version, matching its `package.json`. */
56
+ export const CLI_VERSION = readOwnVersion();
57
+ //# sourceMappingURL=cliVersion.js.map
@@ -57,6 +57,13 @@ export class CLIParser {
57
57
  positional.push(token);
58
58
  index++;
59
59
  }
60
+ // Apply documented option defaults for options not provided on the CLI.
61
+ for (const definition of definitions) {
62
+ if (definition.defaultValue !== undefined &&
63
+ !(definition.name in options)) {
64
+ options[definition.name] = definition.defaultValue;
65
+ }
66
+ }
60
67
  const parsedArguments = this.parseArguments(positional, argumentsDefinitions);
61
68
  if (!this.allowUnknownCommands &&
62
69
  !command &&
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { CLI_OPTION_PREFIXES } from "../cliConstant/cliConstant.value.js";
7
7
  import { InvalidOptionError, MissingOptionValueError, } from "../cliError/cliError.option.js";
8
- import { findOption, assignOptionValue } from "./cliParser.longOption.js";
8
+ import { assignOptionValue } from "./cliParser.longOption.js";
9
9
  /** Parses a short option token from the token stream. */
10
10
  export function parseShortOption(tokens, index, definitions, values, allowUnknownOptions) {
11
11
  const token = tokens[index];
@@ -0,0 +1,38 @@
1
+ /**
2
+ * zudojs-cli — Update check
3
+ *
4
+ * Asks the npm registry whether a newer `zudojs-cli` exists.
5
+ *
6
+ * This used to run as a `postinstall` script. npm 11 and pnpm 10 no longer
7
+ * run install scripts of freshly added packages without explicit approval,
8
+ * so the check was skipped with a warning on every install and, worse, the
9
+ * warning made the CLI look broken before it had run once. The check now
10
+ * runs on demand from `zudojs info`, where a network round-trip is expected.
11
+ *
12
+ * @module cliVersion/update
13
+ */
14
+ export interface UpdateCheckOptions {
15
+ /** Milliseconds to wait for the registry before giving up. */
16
+ readonly timeoutMs?: number;
17
+ readonly registryUrl?: string;
18
+ readonly packageName?: string;
19
+ readonly env?: NodeJS.ProcessEnv;
20
+ readonly fetchImpl?: typeof fetch;
21
+ }
22
+ export interface UpdateCheckResult {
23
+ readonly current: string;
24
+ /** The newer published version, or `null` when up to date or unknown. */
25
+ readonly latest: string | null;
26
+ /** Why no answer was obtained, when `latest` is `null`. */
27
+ readonly skipped?: "disabled" | "offline" | "unavailable";
28
+ }
29
+ /**
30
+ * Whether the update check is turned off for this environment.
31
+ *
32
+ * `ZUDOJS_NO_UPDATE_CHECK` disables it explicitly; `CI` and npm's offline
33
+ * mode disable it implicitly.
34
+ */
35
+ export declare function isUpdateCheckDisabled(env?: NodeJS.ProcessEnv): boolean;
36
+ /** Looks up the latest published version and compares it with `current`. */
37
+ export declare function checkForNewerVersion(current: string, options?: UpdateCheckOptions): Promise<UpdateCheckResult>;
38
+ //# sourceMappingURL=cliVersion.update.d.ts.map
@@ -0,0 +1,63 @@
1
+ /**
2
+ * zudojs-cli — Update check
3
+ *
4
+ * Asks the npm registry whether a newer `zudojs-cli` exists.
5
+ *
6
+ * This used to run as a `postinstall` script. npm 11 and pnpm 10 no longer
7
+ * run install scripts of freshly added packages without explicit approval,
8
+ * so the check was skipped with a warning on every install and, worse, the
9
+ * warning made the CLI look broken before it had run once. The check now
10
+ * runs on demand from `zudojs info`, where a network round-trip is expected.
11
+ *
12
+ * @module cliVersion/update
13
+ */
14
+ import { compareVersions, isValidVersion } from "./cliVersion.core.js";
15
+ /**
16
+ * Whether the update check is turned off for this environment.
17
+ *
18
+ * `ZUDOJS_NO_UPDATE_CHECK` disables it explicitly; `CI` and npm's offline
19
+ * mode disable it implicitly.
20
+ */
21
+ export function isUpdateCheckDisabled(env = process.env) {
22
+ const flag = env["ZUDOJS_NO_UPDATE_CHECK"];
23
+ if (flag !== undefined && flag !== "" && flag !== "0")
24
+ return true;
25
+ if (env["CI"] !== undefined && env["CI"] !== "" && env["CI"] !== "false")
26
+ return true;
27
+ if (env["npm_config_offline"] === "true")
28
+ return true;
29
+ return false;
30
+ }
31
+ /** Looks up the latest published version and compares it with `current`. */
32
+ export async function checkForNewerVersion(current, options = {}) {
33
+ if (isUpdateCheckDisabled(options.env)) {
34
+ return { current, latest: null, skipped: "disabled" };
35
+ }
36
+ const packageName = options.packageName ?? "zudojs-cli";
37
+ const registryUrl = options.registryUrl ?? "https://registry.npmjs.org";
38
+ const fetchImpl = options.fetchImpl ?? fetch;
39
+ const controller = new AbortController();
40
+ const timer = setTimeout(() => controller.abort(), options.timeoutMs ?? 3000);
41
+ try {
42
+ const response = await fetchImpl(`${registryUrl}/${encodeURIComponent(packageName)}/latest`, { signal: controller.signal });
43
+ if (!response.ok) {
44
+ return { current, latest: null, skipped: "unavailable" };
45
+ }
46
+ const data = (await response.json());
47
+ const latest = typeof data.version === "string" ? data.version : null;
48
+ if (latest === null ||
49
+ !isValidVersion(latest) ||
50
+ !isValidVersion(current) ||
51
+ compareVersions(latest, current) <= 0) {
52
+ return { current, latest: null };
53
+ }
54
+ return { current, latest };
55
+ }
56
+ catch {
57
+ return { current, latest: null, skipped: "offline" };
58
+ }
59
+ finally {
60
+ clearTimeout(timer);
61
+ }
62
+ }
63
+ //# sourceMappingURL=cliVersion.update.js.map
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * zudojs-cli — CLI Version
3
3
  *
4
- * Semantic version parsing, comparison, and formatting.
4
+ * Semantic version parsing, comparison, formatting, and the update check.
5
5
  */
6
6
  export { getCLIVersion, formatCLIVersion, getVersionString, isValidVersion, compareVersions, parseVersion, isCompatibleVersion, type CLIVersionInfo, } from "./cliVersion.core.js";
7
+ export { checkForNewerVersion, isUpdateCheckDisabled, type UpdateCheckOptions, type UpdateCheckResult, } from "./cliVersion.update.js";
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * zudojs-cli — CLI Version
3
3
  *
4
- * Semantic version parsing, comparison, and formatting.
4
+ * Semantic version parsing, comparison, formatting, and the update check.
5
5
  */
6
6
  export { getCLIVersion, formatCLIVersion, getVersionString, isValidVersion, compareVersions, parseVersion, isCompatibleVersion, } from "./cliVersion.core.js";
7
+ export { checkForNewerVersion, isUpdateCheckDisabled, } from "./cliVersion.update.js";
7
8
  //# sourceMappingURL=index.js.map
@@ -4,5 +4,34 @@
4
4
  * The `zudojs add` command for adding feature packages.
5
5
  */
6
6
  import type { CLIContext } from "../cliType/cliType.type.js";
7
+ import { type ProjectLayout } from "../resolvers/layout/projectLayout.core.js";
8
+ interface PackageJsonShape {
9
+ dependencies?: Record<string, string>;
10
+ devDependencies?: Record<string, string>;
11
+ zudojs?: Record<string, unknown>;
12
+ }
13
+ /**
14
+ * Picks the `package.json` files a feature is added to.
15
+ *
16
+ * The workspace root used to be the only target. In a fullstack project
17
+ * that root holds no application code, so `@zudojs/database` landed where
18
+ * nothing could import it while `apps/api` stayed without it. Features now
19
+ * go to every backend app (`apps/api`, or the gateway and each service of a
20
+ * microservice project); `--service <name>` narrows a microservice project
21
+ * to one app.
22
+ */
23
+ export declare function selectAddTargets(layout: ProjectLayout, service: string | undefined): string[];
24
+ /**
25
+ * The version written for a new `@zudojs/*` dependency.
26
+ *
27
+ * `workspace:*` was written whenever the project was a workspace. Every
28
+ * generated fullstack and microservice project is a workspace, and none of
29
+ * them contains the framework packages, so the next install failed with
30
+ * "not found in workspace". The protocol is now used only when the target
31
+ * already links a framework package that way — i.e. inside the Zudojs
32
+ * monorepo itself.
33
+ */
34
+ export declare function versionForNewDependency(pkg: PackageJsonShape): string;
7
35
  export declare function runAddCommand(context: CLIContext): Promise<void>;
36
+ export {};
8
37
  //# sourceMappingURL=add.command.d.ts.map
@@ -3,138 +3,126 @@
3
3
  *
4
4
  * The `zudojs add` command for adding feature packages.
5
5
  */
6
- import { join, dirname } from "node:path";
6
+ import { join, relative } from "node:path";
7
7
  import { existsSync, readFileSync, writeFileSync } from "node:fs";
8
- import { execCommand } from "../utils/utils.exec.js";
8
+ import { runStreaming } from "../utils/utils.exec.js";
9
+ import { assertSafePathSegment } from "../utils/utils.name.js";
9
10
  import { CLIValidationError, CLIGenerationError } from "../errors/index.js";
10
11
  import { ManifestManager } from "../manifest/manifestManager.core.js";
11
- const FEATURE_PACKAGES = {
12
- database: ["@zudojs/database"],
13
- queue: ["@zudojs/queue"],
14
- messaging: ["@zudojs/messaging"],
15
- openapi: ["@zudojs/openapi"],
16
- observability: ["@zudojs/observability"],
17
- security: ["@zudojs/security"],
18
- cache: ["@zudojs/cache"],
19
- storage: ["@zudojs/storage"],
20
- scheduler: ["@zudojs/queue"],
21
- docs: ["@zudojs/docs"],
22
- };
12
+ import { getInstallCommand } from "../installers/dependency.installer.js";
13
+ import { FEATURE_PACKAGES, ZUDOJS_PACKAGES_VERSION, } from "../constants/index.js";
14
+ import { resolveProjectLayout, } from "../resolvers/layout/projectLayout.core.js";
15
+ /**
16
+ * Picks the `package.json` files a feature is added to.
17
+ *
18
+ * The workspace root used to be the only target. In a fullstack project
19
+ * that root holds no application code, so `@zudojs/database` landed where
20
+ * nothing could import it while `apps/api` stayed without it. Features now
21
+ * go to every backend app (`apps/api`, or the gateway and each service of a
22
+ * microservice project); `--service <name>` narrows a microservice project
23
+ * to one app.
24
+ */
25
+ export function selectAddTargets(layout, service) {
26
+ if (service !== undefined) {
27
+ if (layout.architecture !== "microservice") {
28
+ throw new CLIValidationError("--service only applies to microservice projects.");
29
+ }
30
+ const match = layout.backendDirs.find((dir) => dir.endsWith(`${join("apps", "services", service)}`));
31
+ const gateway = layout.backendDirs.find((dir) => dir.endsWith(join("apps", "gateway")));
32
+ const target = service === "gateway" ? gateway : match;
33
+ if (!target) {
34
+ throw new CLIValidationError(`Unknown service "${service}". Known: ${[
35
+ ...(gateway ? ["gateway"] : []),
36
+ ...layout.services,
37
+ ].join(", ")}`);
38
+ }
39
+ return [join(target, "package.json")];
40
+ }
41
+ return layout.backendDirs.map((dir) => join(dir, "package.json"));
42
+ }
43
+ /**
44
+ * The version written for a new `@zudojs/*` dependency.
45
+ *
46
+ * `workspace:*` was written whenever the project was a workspace. Every
47
+ * generated fullstack and microservice project is a workspace, and none of
48
+ * them contains the framework packages, so the next install failed with
49
+ * "not found in workspace". The protocol is now used only when the target
50
+ * already links a framework package that way — i.e. inside the Zudojs
51
+ * monorepo itself.
52
+ */
53
+ export function versionForNewDependency(pkg) {
54
+ const linksFramework = Object.entries({
55
+ ...pkg.dependencies,
56
+ ...pkg.devDependencies,
57
+ }).some(([name, version]) => name.startsWith("@zudojs/") && version.startsWith("workspace:"));
58
+ return linksFramework ? "workspace:*" : ZUDOJS_PACKAGES_VERSION;
59
+ }
23
60
  export async function runAddCommand(context) {
24
61
  const feature = context.values.feature;
62
+ const service = context.values.service;
63
+ const available = Object.keys(FEATURE_PACKAGES).join(", ");
25
64
  if (!feature) {
26
- throw new CLIValidationError("Feature name is required. Available: database, queue, messaging, openapi, observability, security");
65
+ throw new CLIValidationError(`Feature name is required. Available: ${available}`);
27
66
  }
28
67
  const packages = FEATURE_PACKAGES[feature];
29
68
  if (!packages) {
30
- throw new CLIValidationError(`Unknown feature: "${feature}". Available: ${Object.keys(FEATURE_PACKAGES).join(", ")}`);
69
+ throw new CLIValidationError(`Unknown feature: "${feature}". Available: ${available}`);
70
+ }
71
+ if (service !== undefined) {
72
+ assertSafePathSegment(service, "--service");
73
+ }
74
+ const layout = resolveProjectLayout(context.cwd);
75
+ if (!layout) {
76
+ throw new CLIValidationError("No Zudojs project found in this directory. Run `zudojs create` first.");
77
+ }
78
+ if (layout.projectType === "frontend") {
79
+ throw new CLIValidationError("Features are backend packages; this is a frontend-only project.");
80
+ }
81
+ const targets = selectAddTargets(layout, service);
82
+ if (targets.length === 0) {
83
+ throw new CLIValidationError("No backend app with a package.json was found in this project.");
31
84
  }
32
85
  context.logger.info(`Adding feature: ${feature}`);
33
86
  context.logger.info(`Packages: ${packages.join(", ")}`);
34
87
  try {
35
- const { manager, rootPkg, isWorkspace } = detectPackageManager();
36
- const pkgPath = join(context.cwd, rootPkg);
37
- const version = isWorkspace ? "workspace:*" : readZudojsVersion();
38
- if (!existsSync(pkgPath)) {
39
- throw new CLIGenerationError(`Could not find package.json at ${pkgPath}`);
40
- }
41
- const pkgContent = JSON.parse(readFileSync(pkgPath, "utf-8"));
42
- pkgContent.dependencies ??= {};
43
- pkgContent.zudojs ??= {
44
- features: [],
45
- };
46
- const zudojsConfig = pkgContent.zudojs;
47
- const features = new Set(zudojsConfig.features);
48
- if (!features.has(feature)) {
88
+ for (const pkgPath of targets) {
89
+ if (!existsSync(pkgPath)) {
90
+ throw new CLIGenerationError(`Could not find ${pkgPath}`);
91
+ }
92
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
93
+ const version = versionForNewDependency(pkg);
94
+ pkg.dependencies ??= {};
95
+ pkg.zudojs ??= { features: [] };
96
+ const block = pkg.zudojs;
97
+ const features = new Set(Array.isArray(block.features)
98
+ ? block.features.filter((f) => typeof f === "string")
99
+ : []);
49
100
  features.add(feature);
50
- zudojsConfig.features = [...features];
51
- }
52
- for (const pkg of packages) {
53
- if (!(pkg in pkgContent.dependencies)) {
54
- pkgContent.dependencies[pkg] = version;
101
+ block.features = [...features];
102
+ for (const name of packages) {
103
+ if (!(name in pkg.dependencies)) {
104
+ pkg.dependencies[name] = version;
105
+ }
55
106
  }
107
+ writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + "\n");
108
+ context.logger.info(`Updated ${relative(context.cwd, pkgPath) || "package.json"}`);
56
109
  }
57
- writeFileSync(pkgPath, JSON.stringify(pkgContent, null, 2) + "\n");
58
- context.logger.info(`Updated ${rootPkg} with new dependencies.`);
59
- updateZudojsConfig(context.cwd, feature);
60
- const manifest = new ManifestManager(context.cwd);
61
- const current = await manifest.read();
62
- if (current) {
63
- await manifest.addCapability(feature);
64
- }
110
+ // The manifest records capabilities for the whole project.
111
+ await new ManifestManager(layout.root).addCapability(feature);
65
112
  if (context.values["skip-install"] !== true) {
66
- context.logger.info(`Installing dependencies with ${manager}...`);
67
- await execCommand(manager, ["install"], context.cwd);
113
+ const [file, ...args] = getInstallCommand(layout.packageManager);
114
+ context.logger.info(`Installing dependencies with ${file}...`);
115
+ await runStreaming(file, args, layout.root);
68
116
  }
69
117
  context.logger.info(`Feature "${feature}" added successfully.`);
70
- context.logger.info(`Next steps:`);
71
- context.logger.info(` Configure in src/config/${feature}.config.ts`);
118
+ context.logger.info(`Import from ${packages.map((p) => `"${p}"`).join(", ")} in your modules.`);
72
119
  }
73
120
  catch (error) {
74
121
  if (error instanceof CLIValidationError) {
75
122
  throw error;
76
123
  }
77
124
  const message = error instanceof Error ? error.message : String(error);
78
- context.logger.error(`Failed to add feature: ${feature} - ${message}`);
79
- throw new CLIGenerationError(`Failed to add feature: ${feature}: ${message}`, error);
80
- }
81
- }
82
- function detectPackageManager() {
83
- if (existsSync("pnpm-workspace.yaml")) {
84
- return { manager: "pnpm", rootPkg: "package.json", isWorkspace: true };
85
- }
86
- if (existsSync("yarn.lock")) {
87
- return { manager: "yarn", rootPkg: "package.json", isWorkspace: true };
88
- }
89
- if (existsSync("lerna.json")) {
90
- return { manager: "npm", rootPkg: "package.json", isWorkspace: true };
91
- }
92
- return { manager: "npm", rootPkg: "package.json", isWorkspace: false };
93
- }
94
- function readZudojsVersion() {
95
- try {
96
- const rootPkg = join(process.cwd(), "package.json");
97
- if (existsSync(rootPkg)) {
98
- const pkg = JSON.parse(readFileSync(rootPkg, "utf-8"));
99
- return pkg.version ?? "latest";
100
- }
101
- }
102
- catch {
103
- // ignore
104
- }
105
- return "latest";
106
- }
107
- function updateZudojsConfig(cwd, feature) {
108
- const configPath = join(cwd, "zudojs.config.ts");
109
- if (!existsSync(configPath))
110
- return;
111
- let content = readFileSync(configPath, "utf-8");
112
- const featureMap = {
113
- database: "database",
114
- queue: "queue",
115
- messaging: "events",
116
- openapi: "openapi",
117
- observability: "observability",
118
- security: "security",
119
- cache: "cache",
120
- storage: "storage",
121
- scheduler: "scheduler",
122
- docs: "docs",
123
- };
124
- const configKey = featureMap[feature];
125
- if (!configKey)
126
- return;
127
- const pattern = /(export\s+default\s+defineConfig\(\{[\s\S]*?)\n\}\);/;
128
- const match = content.match(pattern);
129
- if (!match)
130
- return;
131
- const featureBlock = `\n ${configKey}: {\n enabled: true,\n },`;
132
- if (content.includes(`${configKey}:`)) {
133
- content = content.replace(new RegExp(`${configKey}:\\s*\\{[^}]*\\}`), `${configKey}: {\n enabled: true,\n }`);
134
- }
135
- else {
136
- content = content.replace(pattern, `$1${featureBlock}\n});`);
125
+ throw new CLIGenerationError(`Failed to add feature "${feature}": ${message}`, error);
137
126
  }
138
- writeFileSync(configPath, content);
139
127
  }
140
128
  //# sourceMappingURL=add.command.js.map