zudojs-cli 2.1.2 → 2.2.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 (572) hide show
  1. package/README.md +6 -3
  2. package/dist/src/adapters/databases/databaseAdapter.resolver.d.ts +0 -1
  3. package/dist/src/adapters/databases/databaseAdapter.resolver.js +0 -1
  4. package/dist/src/adapters/databases/index.d.ts +0 -1
  5. package/dist/src/adapters/databases/index.js +0 -1
  6. package/dist/src/adapters/databases/mysql.adapter.d.ts +0 -1
  7. package/dist/src/adapters/databases/mysql.adapter.js +0 -1
  8. package/dist/src/adapters/databases/postgres.adapter.d.ts +0 -1
  9. package/dist/src/adapters/databases/postgres.adapter.js +0 -1
  10. package/dist/src/adapters/databases/sqlite.adapter.d.ts +0 -1
  11. package/dist/src/adapters/databases/sqlite.adapter.js +0 -1
  12. package/dist/src/adapters/frontend/angular.adapter.d.ts +0 -1
  13. package/dist/src/adapters/frontend/angular.adapter.js +0 -1
  14. package/dist/src/adapters/frontend/astro.adapter.d.ts +0 -1
  15. package/dist/src/adapters/frontend/astro.adapter.js +0 -1
  16. package/dist/src/adapters/frontend/fallback/fallback.helper.d.ts +0 -1
  17. package/dist/src/adapters/frontend/fallback/fallback.helper.js +0 -1
  18. package/dist/src/adapters/frontend/fallback/framework/angular/angular.fallback.d.ts +0 -1
  19. package/dist/src/adapters/frontend/fallback/framework/angular/angular.fallback.js +0 -1
  20. package/dist/src/adapters/frontend/fallback/framework/angular/angularWorkspace.fallback.d.ts +0 -1
  21. package/dist/src/adapters/frontend/fallback/framework/angular/angularWorkspace.fallback.js +0 -1
  22. package/dist/src/adapters/frontend/fallback/framework/angular/index.d.ts +0 -1
  23. package/dist/src/adapters/frontend/fallback/framework/angular/index.js +0 -1
  24. package/dist/src/adapters/frontend/fallback/framework/astro.fallback.d.ts +0 -1
  25. package/dist/src/adapters/frontend/fallback/framework/astro.fallback.js +0 -1
  26. package/dist/src/adapters/frontend/fallback/framework/index.d.ts +0 -1
  27. package/dist/src/adapters/frontend/fallback/framework/index.js +0 -1
  28. package/dist/src/adapters/frontend/fallback/framework/next.fallback.d.ts +0 -1
  29. package/dist/src/adapters/frontend/fallback/framework/next.fallback.js +0 -1
  30. package/dist/src/adapters/frontend/fallback/framework/nuxt.fallback.d.ts +0 -1
  31. package/dist/src/adapters/frontend/fallback/framework/nuxt.fallback.js +0 -1
  32. package/dist/src/adapters/frontend/fallback/framework/sveltekit.fallback.d.ts +0 -1
  33. package/dist/src/adapters/frontend/fallback/framework/sveltekit.fallback.js +0 -1
  34. package/dist/src/adapters/frontend/fallback/index.d.ts +0 -1
  35. package/dist/src/adapters/frontend/fallback/index.js +0 -1
  36. package/dist/src/adapters/frontend/fallback/vite/index.d.ts +0 -1
  37. package/dist/src/adapters/frontend/fallback/vite/index.js +0 -1
  38. package/dist/src/adapters/frontend/fallback/vite/react.fallback.d.ts +0 -1
  39. package/dist/src/adapters/frontend/fallback/vite/react.fallback.js +0 -1
  40. package/dist/src/adapters/frontend/fallback/vite/svelte.fallback.d.ts +0 -1
  41. package/dist/src/adapters/frontend/fallback/vite/svelte.fallback.js +0 -1
  42. package/dist/src/adapters/frontend/fallback/vite/vanilla.fallback.d.ts +0 -1
  43. package/dist/src/adapters/frontend/fallback/vite/vanilla.fallback.js +0 -1
  44. package/dist/src/adapters/frontend/fallback/vite/vue.fallback.d.ts +0 -1
  45. package/dist/src/adapters/frontend/fallback/vite/vue.fallback.js +0 -1
  46. package/dist/src/adapters/frontend/flutter.adapter.d.ts +0 -1
  47. package/dist/src/adapters/frontend/flutter.adapter.js +0 -1
  48. package/dist/src/adapters/frontend/frontendAdapter.type.d.ts +0 -1
  49. package/dist/src/adapters/frontend/frontendAdapter.type.js +0 -1
  50. package/dist/src/adapters/frontend/index.d.ts +0 -1
  51. package/dist/src/adapters/frontend/index.js +0 -1
  52. package/dist/src/adapters/frontend/next.adapter.d.ts +0 -1
  53. package/dist/src/adapters/frontend/next.adapter.js +0 -1
  54. package/dist/src/adapters/frontend/nuxt.adapter.d.ts +0 -1
  55. package/dist/src/adapters/frontend/nuxt.adapter.js +0 -1
  56. package/dist/src/adapters/frontend/react-native.adapter.d.ts +0 -1
  57. package/dist/src/adapters/frontend/react-native.adapter.js +0 -1
  58. package/dist/src/adapters/frontend/react.adapter.d.ts +0 -1
  59. package/dist/src/adapters/frontend/react.adapter.js +0 -1
  60. package/dist/src/adapters/frontend/svelte.adapter.d.ts +0 -1
  61. package/dist/src/adapters/frontend/svelte.adapter.js +0 -1
  62. package/dist/src/adapters/frontend/sveltekit.adapter.d.ts +0 -1
  63. package/dist/src/adapters/frontend/sveltekit.adapter.js +0 -1
  64. package/dist/src/adapters/frontend/vanilla.adapter.d.ts +0 -1
  65. package/dist/src/adapters/frontend/vanilla.adapter.js +0 -1
  66. package/dist/src/adapters/frontend/vue.adapter.d.ts +0 -1
  67. package/dist/src/adapters/frontend/vue.adapter.js +0 -1
  68. package/dist/src/adapters/package-managers/bun.adapter.d.ts +0 -1
  69. package/dist/src/adapters/package-managers/bun.adapter.js +0 -1
  70. package/dist/src/adapters/package-managers/index.d.ts +0 -1
  71. package/dist/src/adapters/package-managers/index.js +0 -1
  72. package/dist/src/adapters/package-managers/npm.adapter.d.ts +0 -1
  73. package/dist/src/adapters/package-managers/npm.adapter.js +0 -1
  74. package/dist/src/adapters/package-managers/packageManager.type.d.ts +0 -1
  75. package/dist/src/adapters/package-managers/packageManager.type.js +0 -1
  76. package/dist/src/adapters/package-managers/pnpm.adapter.d.ts +0 -1
  77. package/dist/src/adapters/package-managers/pnpm.adapter.js +0 -1
  78. package/dist/src/adapters/package-managers/yarn.adapter.d.ts +0 -1
  79. package/dist/src/adapters/package-managers/yarn.adapter.js +0 -1
  80. package/dist/src/bin/bin.menu.d.ts +0 -1
  81. package/dist/src/bin/bin.menu.js +0 -1
  82. package/dist/src/bin/bin.runner.d.ts +0 -1
  83. package/dist/src/bin/bin.runner.js +0 -1
  84. package/dist/src/bin/index.d.ts +0 -1
  85. package/dist/src/bin/index.js +0 -1
  86. package/dist/src/bin/zudojs.d.ts +0 -1
  87. package/dist/src/bin/zudojs.js +1 -2
  88. package/dist/src/cliApplication/cliApplication.builtins.d.ts +0 -1
  89. package/dist/src/cliApplication/cliApplication.builtins.js +0 -1
  90. package/dist/src/cliApplication/cliApplication.core.d.ts +0 -1
  91. package/dist/src/cliApplication/cliApplication.core.js +0 -1
  92. package/dist/src/cliApplication/cliApplication.help.d.ts +0 -1
  93. package/dist/src/cliApplication/cliApplication.help.js +0 -1
  94. package/dist/src/cliApplication/cliApplication.logger.d.ts +0 -1
  95. package/dist/src/cliApplication/cliApplication.logger.js +0 -1
  96. package/dist/src/cliApplication/cliApplication.writer.d.ts +0 -1
  97. package/dist/src/cliApplication/cliApplication.writer.js +0 -1
  98. package/dist/src/cliApplication/index.d.ts +0 -1
  99. package/dist/src/cliApplication/index.js +0 -1
  100. package/dist/src/cliApplication/invocation/index.d.ts +0 -1
  101. package/dist/src/cliApplication/invocation/index.js +0 -1
  102. package/dist/src/cliApplication/invocation/invocation.hint.d.ts +0 -7
  103. package/dist/src/cliApplication/invocation/invocation.hint.js +14 -1
  104. package/dist/src/cliApplication/invocation/invocation.locate.d.ts +0 -1
  105. package/dist/src/cliApplication/invocation/invocation.locate.js +0 -1
  106. package/dist/src/cliApplication/invocation/invocation.name.d.ts +0 -1
  107. package/dist/src/cliApplication/invocation/invocation.name.js +0 -1
  108. package/dist/src/cliApplication/invocation/invocation.sanitize.d.ts +0 -1
  109. package/dist/src/cliApplication/invocation/invocation.sanitize.js +0 -1
  110. package/dist/src/cliCommand/cliCommand.builder.d.ts +0 -1
  111. package/dist/src/cliCommand/cliCommand.builder.js +0 -1
  112. package/dist/src/cliCommand/cliCommand.factory.d.ts +0 -1
  113. package/dist/src/cliCommand/cliCommand.factory.js +0 -1
  114. package/dist/src/cliCommand/cliCommand.registry.d.ts +0 -1
  115. package/dist/src/cliCommand/cliCommand.registry.js +0 -1
  116. package/dist/src/cliCommand/cliCommand.validator.d.ts +0 -1
  117. package/dist/src/cliCommand/cliCommand.validator.js +0 -1
  118. package/dist/src/cliCommand/index.d.ts +0 -1
  119. package/dist/src/cliCommand/index.js +0 -1
  120. package/dist/src/cliConstant/cliConstant.value.d.ts +0 -1
  121. package/dist/src/cliConstant/cliConstant.value.js +0 -1
  122. package/dist/src/cliConstant/cliVersion.d.ts +0 -1
  123. package/dist/src/cliConstant/cliVersion.js +0 -1
  124. package/dist/src/cliConstant/index.d.ts +0 -1
  125. package/dist/src/cliConstant/index.js +0 -1
  126. package/dist/src/cliError/cliError.argument.d.ts +0 -1
  127. package/dist/src/cliError/cliError.argument.js +0 -1
  128. package/dist/src/cliError/cliError.base.d.ts +0 -1
  129. package/dist/src/cliError/cliError.base.js +0 -1
  130. package/dist/src/cliError/cliError.command.d.ts +0 -1
  131. package/dist/src/cliError/cliError.command.js +0 -1
  132. package/dist/src/cliError/cliError.execution.d.ts +0 -1
  133. package/dist/src/cliError/cliError.execution.js +0 -1
  134. package/dist/src/cliError/cliError.option.d.ts +0 -1
  135. package/dist/src/cliError/cliError.option.js +0 -1
  136. package/dist/src/cliError/index.d.ts +0 -1
  137. package/dist/src/cliError/index.js +0 -1
  138. package/dist/src/cliParser/cliParser.core.d.ts +0 -1
  139. package/dist/src/cliParser/cliParser.core.js +0 -1
  140. package/dist/src/cliParser/cliParser.helper.d.ts +0 -1
  141. package/dist/src/cliParser/cliParser.helper.js +0 -1
  142. package/dist/src/cliParser/cliParser.longOption.d.ts +0 -1
  143. package/dist/src/cliParser/cliParser.longOption.js +0 -1
  144. package/dist/src/cliParser/cliParser.shortOption.d.ts +0 -1
  145. package/dist/src/cliParser/cliParser.shortOption.js +0 -1
  146. package/dist/src/cliParser/index.d.ts +0 -1
  147. package/dist/src/cliParser/index.js +0 -1
  148. package/dist/src/cliType/cliType.type.d.ts +0 -1
  149. package/dist/src/cliType/cliType.type.js +0 -1
  150. package/dist/src/cliType/index.d.ts +0 -1
  151. package/dist/src/cliType/index.js +0 -1
  152. package/dist/src/cliVersion/cliVersion.core.d.ts +0 -1
  153. package/dist/src/cliVersion/cliVersion.core.js +0 -1
  154. package/dist/src/cliVersion/cliVersion.update.d.ts +0 -1
  155. package/dist/src/cliVersion/cliVersion.update.js +0 -1
  156. package/dist/src/cliVersion/index.d.ts +0 -1
  157. package/dist/src/cliVersion/index.js +0 -1
  158. package/dist/src/commands/add.command.d.ts +0 -1
  159. package/dist/src/commands/add.command.js +1 -2
  160. package/dist/src/commands/build.command.d.ts +0 -1
  161. package/dist/src/commands/build.command.js +0 -1
  162. package/dist/src/commands/commandError.helper.d.ts +0 -1
  163. package/dist/src/commands/commandError.helper.js +0 -1
  164. package/dist/src/commands/create.command.d.ts +0 -1
  165. package/dist/src/commands/create.command.js +0 -1
  166. package/dist/src/commands/dev/dev.plan.d.ts +39 -0
  167. package/dist/src/commands/dev/dev.plan.js +83 -0
  168. package/dist/src/commands/dev/index.d.ts +4 -0
  169. package/dist/src/commands/dev/index.js +4 -0
  170. package/dist/src/commands/dev.command.d.ts +4 -30
  171. package/dist/src/commands/dev.command.js +10 -80
  172. package/dist/src/commands/doctor.command.d.ts +0 -1
  173. package/dist/src/commands/doctor.command.js +0 -1
  174. package/dist/src/commands/generate.command.d.ts +0 -1
  175. package/dist/src/commands/generate.command.js +30 -10
  176. package/dist/src/commands/index.d.ts +0 -1
  177. package/dist/src/commands/index.js +0 -1
  178. package/dist/src/commands/info.command.d.ts +0 -1
  179. package/dist/src/commands/info.command.js +0 -1
  180. package/dist/src/constants/index.d.ts +0 -1
  181. package/dist/src/constants/index.js +0 -1
  182. package/dist/src/constants/zudojsVersions.generated.d.ts +0 -1
  183. package/dist/src/constants/zudojsVersions.generated.js +38 -39
  184. package/dist/src/constants/zudojsVersions.helper.d.ts +0 -1
  185. package/dist/src/constants/zudojsVersions.helper.js +0 -1
  186. package/dist/src/errors/index.d.ts +0 -1
  187. package/dist/src/errors/index.js +0 -1
  188. package/dist/src/generators/backend/backend.generator.d.ts +0 -1
  189. package/dist/src/generators/backend/backend.generator.js +0 -1
  190. package/dist/src/generators/backend/index.d.ts +0 -1
  191. package/dist/src/generators/backend/index.js +0 -1
  192. package/dist/src/generators/command/command.generator.d.ts +0 -1
  193. package/dist/src/generators/command/command.generator.js +0 -1
  194. package/dist/src/generators/command/command.template.d.ts +0 -1
  195. package/dist/src/generators/command/command.template.js +0 -1
  196. package/dist/src/generators/command/index.d.ts +0 -1
  197. package/dist/src/generators/command/index.js +0 -1
  198. package/dist/src/generators/event/event.generator.d.ts +0 -1
  199. package/dist/src/generators/event/event.generator.js +0 -1
  200. package/dist/src/generators/event/index.d.ts +0 -1
  201. package/dist/src/generators/event/index.js +0 -1
  202. package/dist/src/generators/frontend/frontendGenerator.core.d.ts +0 -1
  203. package/dist/src/generators/frontend/frontendGenerator.core.js +0 -1
  204. package/dist/src/generators/frontend/frontendPipeline.d.ts +0 -1
  205. package/dist/src/generators/frontend/frontendPipeline.js +0 -1
  206. package/dist/src/generators/frontend/index.d.ts +0 -1
  207. package/dist/src/generators/frontend/index.js +0 -1
  208. package/dist/src/generators/fullstack/fullstackBackend.layout.d.ts +0 -1
  209. package/dist/src/generators/fullstack/fullstackBackend.layout.js +0 -1
  210. package/dist/src/generators/fullstack/fullstackComposer.core.d.ts +0 -1
  211. package/dist/src/generators/fullstack/fullstackComposer.core.js +0 -1
  212. package/dist/src/generators/fullstack/index.d.ts +0 -1
  213. package/dist/src/generators/fullstack/index.js +0 -1
  214. package/dist/src/generators/index.d.ts +0 -1
  215. package/dist/src/generators/index.js +0 -1
  216. package/dist/src/generators/infrastructure/index.d.ts +0 -1
  217. package/dist/src/generators/infrastructure/index.js +0 -1
  218. package/dist/src/generators/infrastructure/infrastructure.generator.d.ts +0 -1
  219. package/dist/src/generators/infrastructure/infrastructure.generator.js +0 -1
  220. package/dist/src/generators/integration/index.d.ts +0 -1
  221. package/dist/src/generators/integration/index.js +0 -1
  222. package/dist/src/generators/integration/integrationGenerator.core.d.ts +0 -1
  223. package/dist/src/generators/integration/integrationGenerator.core.js +0 -1
  224. package/dist/src/generators/job/index.d.ts +0 -1
  225. package/dist/src/generators/job/index.js +0 -1
  226. package/dist/src/generators/job/job.generator.d.ts +0 -1
  227. package/dist/src/generators/job/job.generator.js +0 -1
  228. package/dist/src/generators/middleware/index.d.ts +2 -2
  229. package/dist/src/generators/middleware/index.js +2 -2
  230. package/dist/src/generators/middleware/middleware.generator.d.ts +28 -2
  231. package/dist/src/generators/middleware/middleware.generator.js +60 -16
  232. package/dist/src/generators/middleware/middleware.template.d.ts +20 -0
  233. package/dist/src/generators/middleware/middleware.template.js +34 -0
  234. package/dist/src/generators/model/index.d.ts +0 -1
  235. package/dist/src/generators/model/index.js +0 -1
  236. package/dist/src/generators/model/model.generator.d.ts +0 -1
  237. package/dist/src/generators/model/model.generator.js +0 -1
  238. package/dist/src/generators/module/index.d.ts +0 -1
  239. package/dist/src/generators/module/index.js +0 -1
  240. package/dist/src/generators/module/module.generator.d.ts +0 -1
  241. package/dist/src/generators/module/module.generator.js +27 -11
  242. package/dist/src/generators/module/module.registration.d.ts +4 -3
  243. package/dist/src/generators/module/module.registration.js +5 -4
  244. package/dist/src/generators/project/project.generator.d.ts +0 -1
  245. package/dist/src/generators/project/project.generator.js +0 -1
  246. package/dist/src/generators/query/index.d.ts +0 -1
  247. package/dist/src/generators/query/index.js +0 -1
  248. package/dist/src/generators/query/query.generator.d.ts +0 -1
  249. package/dist/src/generators/query/query.generator.js +0 -1
  250. package/dist/src/generators/query/query.template.d.ts +0 -1
  251. package/dist/src/generators/query/query.template.js +0 -1
  252. package/dist/src/generators/resource/index.d.ts +0 -1
  253. package/dist/src/generators/resource/index.js +0 -1
  254. package/dist/src/generators/resource/resource.checks.d.ts +31 -0
  255. package/dist/src/generators/resource/resource.checks.js +52 -0
  256. package/dist/src/generators/resource/resource.generator.d.ts +5 -3
  257. package/dist/src/generators/resource/resource.generator.js +23 -36
  258. package/dist/src/generators/resource/resource.layout.d.ts +0 -1
  259. package/dist/src/generators/resource/resource.layout.js +0 -1
  260. package/dist/src/generators/resource/resource.plan.d.ts +0 -1
  261. package/dist/src/generators/resource/resource.plan.js +0 -1
  262. package/dist/src/generators/resource/resource.run.d.ts +12 -2
  263. package/dist/src/generators/resource/resource.run.js +33 -9
  264. package/dist/src/generators/validator/index.d.ts +0 -1
  265. package/dist/src/generators/validator/index.js +0 -1
  266. package/dist/src/generators/validator/validator.generator.d.ts +6 -2
  267. package/dist/src/generators/validator/validator.generator.js +31 -10
  268. package/dist/src/index.d.ts +0 -1
  269. package/dist/src/index.js +0 -1
  270. package/dist/src/installers/dependency.installer.d.ts +0 -1
  271. package/dist/src/installers/dependency.installer.js +0 -1
  272. package/dist/src/installers/index.d.ts +0 -1
  273. package/dist/src/installers/index.js +0 -1
  274. package/dist/src/manifest/index.d.ts +0 -1
  275. package/dist/src/manifest/index.js +0 -1
  276. package/dist/src/manifest/manifestFile.helper.d.ts +0 -1
  277. package/dist/src/manifest/manifestFile.helper.js +0 -1
  278. package/dist/src/manifest/manifestManager.core.d.ts +0 -1
  279. package/dist/src/manifest/manifestManager.core.js +0 -1
  280. package/dist/src/prompts/backend/api-style.prompt.d.ts +0 -1
  281. package/dist/src/prompts/backend/api-style.prompt.js +0 -1
  282. package/dist/src/prompts/backend/backend-architecture.prompt.d.ts +0 -1
  283. package/dist/src/prompts/backend/backend-architecture.prompt.js +0 -1
  284. package/dist/src/prompts/backend/database.prompt.d.ts +0 -1
  285. package/dist/src/prompts/backend/database.prompt.js +0 -1
  286. package/dist/src/prompts/backend/index.d.ts +0 -1
  287. package/dist/src/prompts/backend/index.js +0 -1
  288. package/dist/src/prompts/backend/services.prompt.d.ts +0 -1
  289. package/dist/src/prompts/backend/services.prompt.js +0 -1
  290. package/dist/src/prompts/cancel.prompt.d.ts +0 -1
  291. package/dist/src/prompts/cancel.prompt.js +0 -1
  292. package/dist/src/prompts/capabilities/capabilities.prompt.d.ts +0 -1
  293. package/dist/src/prompts/capabilities/capabilities.prompt.js +0 -1
  294. package/dist/src/prompts/capabilities/index.d.ts +0 -1
  295. package/dist/src/prompts/capabilities/index.js +0 -1
  296. package/dist/src/prompts/frontend/framework.prompt.d.ts +0 -1
  297. package/dist/src/prompts/frontend/framework.prompt.js +0 -1
  298. package/dist/src/prompts/frontend/frontend-architecture.prompt.d.ts +0 -1
  299. package/dist/src/prompts/frontend/frontend-architecture.prompt.js +0 -1
  300. package/dist/src/prompts/frontend/index.d.ts +0 -1
  301. package/dist/src/prompts/frontend/index.js +0 -1
  302. package/dist/src/prompts/index.d.ts +0 -1
  303. package/dist/src/prompts/index.js +0 -1
  304. package/dist/src/prompts/menu/index.d.ts +0 -1
  305. package/dist/src/prompts/menu/index.js +0 -1
  306. package/dist/src/prompts/menu/menu.adapter.d.ts +0 -1
  307. package/dist/src/prompts/menu/menu.adapter.js +0 -1
  308. package/dist/src/prompts/menu/menu.constant.d.ts +0 -1
  309. package/dist/src/prompts/menu/menu.constant.js +0 -1
  310. package/dist/src/prompts/menu/menu.flow.d.ts +0 -1
  311. package/dist/src/prompts/menu/menu.flow.js +0 -1
  312. package/dist/src/prompts/menu/menu.select.d.ts +0 -1
  313. package/dist/src/prompts/menu/menu.select.js +0 -1
  314. package/dist/src/prompts/menu/menu.type.d.ts +0 -1
  315. package/dist/src/prompts/menu/menu.type.js +0 -1
  316. package/dist/src/prompts/project/confirmation.prompt.d.ts +0 -1
  317. package/dist/src/prompts/project/confirmation.prompt.js +0 -1
  318. package/dist/src/prompts/project/index.d.ts +0 -1
  319. package/dist/src/prompts/project/index.js +0 -1
  320. package/dist/src/prompts/project/project-name.prompt.d.ts +0 -1
  321. package/dist/src/prompts/project/project-name.prompt.js +0 -1
  322. package/dist/src/prompts/project/project-type.prompt.d.ts +0 -1
  323. package/dist/src/prompts/project/project-type.prompt.js +0 -1
  324. package/dist/src/prompts/workspace/index.d.ts +0 -1
  325. package/dist/src/prompts/workspace/index.js +0 -1
  326. package/dist/src/prompts/workspace/package-manager.prompt.d.ts +0 -1
  327. package/dist/src/prompts/workspace/package-manager.prompt.js +0 -1
  328. package/dist/src/recipes/apply/index.d.ts +0 -1
  329. package/dist/src/recipes/apply/index.js +0 -1
  330. package/dist/src/recipes/apply/recipeApply.app.d.ts +0 -1
  331. package/dist/src/recipes/apply/recipeApply.app.js +0 -1
  332. package/dist/src/recipes/apply/recipeApply.context.d.ts +0 -1
  333. package/dist/src/recipes/apply/recipeApply.context.js +0 -1
  334. package/dist/src/recipes/apply/recipeApply.files.d.ts +0 -1
  335. package/dist/src/recipes/apply/recipeApply.files.js +0 -1
  336. package/dist/src/recipes/apply/recipeApply.project.d.ts +13 -3
  337. package/dist/src/recipes/apply/recipeApply.project.js +56 -3
  338. package/dist/src/recipes/apply/recipeApply.report.d.ts +0 -1
  339. package/dist/src/recipes/apply/recipeApply.report.js +0 -1
  340. package/dist/src/recipes/catalog/database/database.files.d.ts +0 -1
  341. package/dist/src/recipes/catalog/database/database.files.js +0 -1
  342. package/dist/src/recipes/catalog/database/database.recipe.d.ts +0 -1
  343. package/dist/src/recipes/catalog/database/database.recipe.js +11 -2
  344. package/dist/src/recipes/catalog/database/index.d.ts +0 -1
  345. package/dist/src/recipes/catalog/database/index.js +0 -1
  346. package/dist/src/recipes/catalog/email.recipe.d.ts +0 -1
  347. package/dist/src/recipes/catalog/email.recipe.js +0 -1
  348. package/dist/src/recipes/catalog/index.d.ts +0 -1
  349. package/dist/src/recipes/catalog/index.js +0 -1
  350. package/dist/src/recipes/catalog/openapi.recipe.d.ts +0 -1
  351. package/dist/src/recipes/catalog/openapi.recipe.js +0 -1
  352. package/dist/src/recipes/catalog/platform/cache.recipe.d.ts +0 -1
  353. package/dist/src/recipes/catalog/platform/cache.recipe.js +0 -1
  354. package/dist/src/recipes/catalog/platform/index.d.ts +0 -1
  355. package/dist/src/recipes/catalog/platform/index.js +0 -1
  356. package/dist/src/recipes/catalog/platform/messaging.recipe.d.ts +0 -1
  357. package/dist/src/recipes/catalog/platform/messaging.recipe.js +0 -1
  358. package/dist/src/recipes/catalog/platform/observability.recipe.d.ts +0 -1
  359. package/dist/src/recipes/catalog/platform/observability.recipe.js +0 -1
  360. package/dist/src/recipes/catalog/platform/queue.recipe.d.ts +0 -1
  361. package/dist/src/recipes/catalog/platform/queue.recipe.js +0 -1
  362. package/dist/src/recipes/catalog/platform/scheduler.recipe.d.ts +0 -1
  363. package/dist/src/recipes/catalog/platform/scheduler.recipe.js +0 -1
  364. package/dist/src/recipes/catalog/redis.recipe.d.ts +0 -1
  365. package/dist/src/recipes/catalog/redis.recipe.js +0 -1
  366. package/dist/src/recipes/catalog/storage.recipe.d.ts +0 -1
  367. package/dist/src/recipes/catalog/storage.recipe.js +0 -1
  368. package/dist/src/recipes/catalog/websockets.recipe.d.ts +0 -1
  369. package/dist/src/recipes/catalog/websockets.recipe.js +0 -1
  370. package/dist/src/recipes/docker/docker.compose.d.ts +0 -1
  371. package/dist/src/recipes/docker/docker.compose.js +0 -1
  372. package/dist/src/recipes/docker/docker.recipe.d.ts +0 -1
  373. package/dist/src/recipes/docker/docker.recipe.js +0 -1
  374. package/dist/src/recipes/docker/docker.refresh.d.ts +0 -1
  375. package/dist/src/recipes/docker/docker.refresh.js +0 -1
  376. package/dist/src/recipes/docker/index.d.ts +0 -1
  377. package/dist/src/recipes/docker/index.js +0 -1
  378. package/dist/src/recipes/index.d.ts +0 -1
  379. package/dist/src/recipes/index.js +0 -1
  380. package/dist/src/recipes/recipe.registry.d.ts +0 -1
  381. package/dist/src/recipes/recipe.registry.js +0 -1
  382. package/dist/src/recipes/recipe.type.d.ts +6 -1
  383. package/dist/src/recipes/recipe.type.js +0 -1
  384. package/dist/src/registries/adapter/frontendAdapterRegistry.core.d.ts +0 -1
  385. package/dist/src/registries/adapter/frontendAdapterRegistry.core.js +0 -1
  386. package/dist/src/registries/adapter/packageManagerRegistry.core.d.ts +0 -1
  387. package/dist/src/registries/adapter/packageManagerRegistry.core.js +0 -1
  388. package/dist/src/registries/dependency/dependencyRegistry.core.d.ts +0 -1
  389. package/dist/src/registries/dependency/dependencyRegistry.core.js +0 -1
  390. package/dist/src/registries/dependency/index.d.ts +0 -1
  391. package/dist/src/registries/dependency/index.js +0 -1
  392. package/dist/src/registries/generator/generatorRegistry.core.d.ts +0 -1
  393. package/dist/src/registries/generator/generatorRegistry.core.js +0 -1
  394. package/dist/src/registries/generator/index.d.ts +0 -1
  395. package/dist/src/registries/generator/index.js +0 -1
  396. package/dist/src/registries/index.d.ts +0 -1
  397. package/dist/src/registries/index.js +0 -1
  398. package/dist/src/resolvers/architecture.resolver.d.ts +0 -1
  399. package/dist/src/resolvers/architecture.resolver.js +13 -3
  400. package/dist/src/resolvers/capability/capabilityResolver.core.d.ts +0 -1
  401. package/dist/src/resolvers/capability/capabilityResolver.core.js +0 -1
  402. package/dist/src/resolvers/capability/index.d.ts +0 -1
  403. package/dist/src/resolvers/capability/index.js +0 -1
  404. package/dist/src/resolvers/configuration/configurationResolver.core.d.ts +0 -1
  405. package/dist/src/resolvers/configuration/configurationResolver.core.js +0 -1
  406. package/dist/src/resolvers/configuration/index.d.ts +0 -1
  407. package/dist/src/resolvers/configuration/index.js +0 -1
  408. package/dist/src/resolvers/dependency/dependencyResolver.core.d.ts +0 -1
  409. package/dist/src/resolvers/dependency/dependencyResolver.core.js +0 -1
  410. package/dist/src/resolvers/dependency/dependencyVersions.constant.d.ts +0 -1
  411. package/dist/src/resolvers/dependency/dependencyVersions.constant.js +0 -1
  412. package/dist/src/resolvers/dependency/index.d.ts +0 -1
  413. package/dist/src/resolvers/dependency/index.js +0 -1
  414. package/dist/src/resolvers/index.d.ts +0 -1
  415. package/dist/src/resolvers/index.js +0 -1
  416. package/dist/src/resolvers/layout/index.d.ts +0 -1
  417. package/dist/src/resolvers/layout/index.js +0 -1
  418. package/dist/src/resolvers/layout/projectLayout.core.d.ts +0 -1
  419. package/dist/src/resolvers/layout/projectLayout.core.js +0 -1
  420. package/dist/src/resolvers/project.resolver.d.ts +0 -1
  421. package/dist/src/resolvers/project.resolver.js +0 -1
  422. package/dist/src/rollback/index.d.ts +0 -1
  423. package/dist/src/rollback/index.js +0 -1
  424. package/dist/src/rollback/rollbackManager.core.d.ts +0 -1
  425. package/dist/src/rollback/rollbackManager.core.js +0 -1
  426. package/dist/src/runners/package-manager/index.d.ts +0 -1
  427. package/dist/src/runners/package-manager/index.js +0 -1
  428. package/dist/src/runners/package-manager/packageManagerRunner.core.d.ts +0 -1
  429. package/dist/src/runners/package-manager/packageManagerRunner.core.js +0 -1
  430. package/dist/src/runners/process/index.d.ts +0 -1
  431. package/dist/src/runners/process/index.js +0 -1
  432. package/dist/src/runners/process/processRunner.core.d.ts +0 -1
  433. package/dist/src/runners/process/processRunner.core.js +0 -1
  434. package/dist/src/runners/task/index.d.ts +0 -1
  435. package/dist/src/runners/task/index.js +0 -1
  436. package/dist/src/runners/task/taskRunner.core.d.ts +0 -1
  437. package/dist/src/runners/task/taskRunner.core.js +0 -1
  438. package/dist/src/scaffolders/framework.scaffolder.d.ts +0 -1
  439. package/dist/src/scaffolders/framework.scaffolder.js +0 -1
  440. package/dist/src/scaffolders/index.d.ts +0 -1
  441. package/dist/src/scaffolders/index.js +0 -1
  442. package/dist/src/scaffolders/scaffolder.helper.d.ts +0 -1
  443. package/dist/src/scaffolders/scaffolder.helper.js +0 -1
  444. package/dist/src/templates/backendApp/backendApp.core.d.ts +0 -1
  445. package/dist/src/templates/backendApp/backendApp.core.js +0 -1
  446. package/dist/src/templates/backendApp/backendApp.modules.d.ts +0 -1
  447. package/dist/src/templates/backendApp/backendApp.modules.js +0 -1
  448. package/dist/src/templates/backendApp/backendApp.project.d.ts +19 -3
  449. package/dist/src/templates/backendApp/backendApp.project.js +41 -3
  450. package/dist/src/templates/backendApp/index.d.ts +0 -1
  451. package/dist/src/templates/backendApp/index.js +0 -1
  452. package/dist/src/templates/backendApp/parts/config.template.d.ts +0 -1
  453. package/dist/src/templates/backendApp/parts/config.template.js +13 -6
  454. package/dist/src/templates/backendApp/parts/httpUtils.template.d.ts +2 -2
  455. package/dist/src/templates/backendApp/parts/httpUtils.template.js +20 -6
  456. package/dist/src/templates/backendApp/parts/index.d.ts +0 -1
  457. package/dist/src/templates/backendApp/parts/index.js +0 -1
  458. package/dist/src/templates/backendApp/parts/integrations.template.d.ts +0 -1
  459. package/dist/src/templates/backendApp/parts/integrations.template.js +0 -1
  460. package/dist/src/templates/backendApp/parts/wiring.template.d.ts +3 -2
  461. package/dist/src/templates/backendApp/parts/wiring.template.js +13 -3
  462. package/dist/src/templates/microservice/index.d.ts +0 -1
  463. package/dist/src/templates/microservice/index.js +0 -1
  464. package/dist/src/templates/microservice/microservice.template.d.ts +0 -1
  465. package/dist/src/templates/microservice/microservice.template.js +6 -27
  466. package/dist/src/templates/modular-monolith/index.d.ts +0 -1
  467. package/dist/src/templates/modular-monolith/index.js +0 -1
  468. package/dist/src/templates/modular-monolith/modularMonolith.template.d.ts +0 -1
  469. package/dist/src/templates/modular-monolith/modularMonolith.template.js +3 -10
  470. package/dist/src/templates/monolith/index.d.ts +0 -1
  471. package/dist/src/templates/monolith/index.js +0 -1
  472. package/dist/src/templates/monolith/monolith.template.d.ts +0 -1
  473. package/dist/src/templates/monolith/monolith.template.js +3 -11
  474. package/dist/src/templates/resource/index.d.ts +0 -1
  475. package/dist/src/templates/resource/index.js +0 -1
  476. package/dist/src/templates/resource/layers/index.d.ts +4 -4
  477. package/dist/src/templates/resource/layers/index.js +4 -4
  478. package/dist/src/templates/resource/layers/resourceData.template.d.ts +8 -4
  479. package/dist/src/templates/resource/layers/resourceData.template.js +30 -72
  480. package/dist/src/templates/resource/layers/resourceHttp/index.d.ts +6 -0
  481. package/dist/src/templates/resource/layers/resourceHttp/index.js +6 -0
  482. package/dist/src/templates/resource/layers/resourceHttp/resourceController.template.d.ts +10 -0
  483. package/dist/src/templates/resource/layers/resourceHttp/resourceController.template.js +55 -0
  484. package/dist/src/templates/resource/layers/resourceHttp/resourceRoutes.template.d.ts +6 -0
  485. package/dist/src/templates/resource/layers/resourceHttp/resourceRoutes.template.js +77 -0
  486. package/dist/src/templates/resource/layers/resourceHttp/resourceTest.template.d.ts +11 -0
  487. package/dist/src/templates/resource/layers/resourceHttp/resourceTest.template.js +84 -0
  488. package/dist/src/templates/resource/layers/resourceMemory.template.d.ts +6 -0
  489. package/dist/src/templates/resource/layers/resourceMemory.template.js +87 -0
  490. package/dist/src/templates/resource/layers/resourcePrisma.template.d.ts +0 -1
  491. package/dist/src/templates/resource/layers/resourcePrisma.template.js +10 -9
  492. package/dist/src/templates/resource/layers/resourceService.template.d.ts +1 -8
  493. package/dist/src/templates/resource/layers/resourceService.template.js +9 -54
  494. package/dist/src/templates/resource/resource.files.d.ts +0 -1
  495. package/dist/src/templates/resource/resource.files.js +7 -6
  496. package/dist/src/templates/resource/resource.names.d.ts +0 -1
  497. package/dist/src/templates/resource/resource.names.js +0 -1
  498. package/dist/src/templates/resource/resource.type.d.ts +0 -1
  499. package/dist/src/templates/resource/resource.type.js +0 -1
  500. package/dist/src/templates/shared/appRuntime.template.d.ts +0 -1
  501. package/dist/src/templates/shared/appRuntime.template.js +6 -5
  502. package/dist/src/templates/shared/capability.template.d.ts +0 -1
  503. package/dist/src/templates/shared/capability.template.js +0 -1
  504. package/dist/src/templates/shared/dockerfile/dockerfile.install.d.ts +0 -1
  505. package/dist/src/templates/shared/dockerfile/dockerfile.install.js +0 -1
  506. package/dist/src/templates/shared/dockerfile/dockerfile.template.d.ts +0 -1
  507. package/dist/src/templates/shared/dockerfile/dockerfile.template.js +15 -5
  508. package/dist/src/templates/shared/dockerfile/index.d.ts +0 -1
  509. package/dist/src/templates/shared/dockerfile/index.js +0 -1
  510. package/dist/src/templates/shared/index.d.ts +1 -1
  511. package/dist/src/templates/shared/index.js +1 -1
  512. package/dist/src/templates/shared/pnpm.template.d.ts +0 -1
  513. package/dist/src/templates/shared/pnpm.template.js +0 -1
  514. package/dist/src/templates/shared/server.parts.d.ts +28 -0
  515. package/dist/src/templates/shared/server.parts.js +59 -0
  516. package/dist/src/templates/shared/server.template.d.ts +17 -16
  517. package/dist/src/templates/shared/server.template.js +42 -57
  518. package/dist/src/types/index.d.ts +0 -1
  519. package/dist/src/types/index.js +0 -1
  520. package/dist/src/types/projectConfiguration.type.d.ts +0 -1
  521. package/dist/src/types/projectConfiguration.type.js +0 -1
  522. package/dist/src/types/scaffold.type.d.ts +0 -1
  523. package/dist/src/types/scaffold.type.js +0 -1
  524. package/dist/src/utils/index.d.ts +0 -1
  525. package/dist/src/utils/index.js +0 -1
  526. package/dist/src/utils/utils.detect.d.ts +0 -1
  527. package/dist/src/utils/utils.detect.js +0 -1
  528. package/dist/src/utils/utils.exec.d.ts +0 -1
  529. package/dist/src/utils/utils.exec.js +0 -1
  530. package/dist/src/utils/utils.fileSystem.d.ts +0 -1
  531. package/dist/src/utils/utils.fileSystem.js +0 -1
  532. package/dist/src/utils/utils.name.d.ts +0 -1
  533. package/dist/src/utils/utils.name.js +0 -1
  534. package/dist/src/utils/utils.writeGuard.d.ts +0 -1
  535. package/dist/src/utils/utils.writeGuard.js +0 -1
  536. package/dist/src/validators/compatibility/compatibilityValidator.core.d.ts +0 -1
  537. package/dist/src/validators/compatibility/compatibilityValidator.core.js +0 -1
  538. package/dist/src/validators/compatibility/index.d.ts +0 -1
  539. package/dist/src/validators/compatibility/index.js +0 -1
  540. package/dist/src/validators/environment/environmentValidator.core.d.ts +0 -1
  541. package/dist/src/validators/environment/environmentValidator.core.js +0 -1
  542. package/dist/src/validators/environment/index.d.ts +0 -1
  543. package/dist/src/validators/environment/index.js +0 -1
  544. package/dist/src/validators/index.d.ts +0 -1
  545. package/dist/src/validators/index.js +0 -1
  546. package/dist/src/validators/project/index.d.ts +0 -1
  547. package/dist/src/validators/project/index.js +0 -1
  548. package/dist/src/validators/project/projectValidator.core.d.ts +0 -1
  549. package/dist/src/validators/project/projectValidator.core.js +0 -1
  550. package/dist/src/wiring/index.d.ts +0 -1
  551. package/dist/src/wiring/index.js +0 -1
  552. package/dist/src/wiring/wiring.dependencies.d.ts +0 -1
  553. package/dist/src/wiring/wiring.dependencies.js +0 -1
  554. package/dist/src/wiring/wiring.edits.d.ts +0 -1
  555. package/dist/src/wiring/wiring.edits.js +0 -1
  556. package/dist/src/wiring/wiring.markers.d.ts +7 -5
  557. package/dist/src/wiring/wiring.markers.js +8 -7
  558. package/package.json +6 -6
  559. package/dist/src/generators/controller/controller.generator.d.ts +0 -11
  560. package/dist/src/generators/controller/controller.generator.js +0 -47
  561. package/dist/src/generators/dto/dto.generator.d.ts +0 -12
  562. package/dist/src/generators/dto/dto.generator.js +0 -27
  563. package/dist/src/generators/dto/index.d.ts +0 -5
  564. package/dist/src/generators/dto/index.js +0 -5
  565. package/dist/src/generators/repository/repository.generator.d.ts +0 -10
  566. package/dist/src/generators/repository/repository.generator.js +0 -80
  567. package/dist/src/generators/route/index.d.ts +0 -5
  568. package/dist/src/generators/route/index.js +0 -5
  569. package/dist/src/generators/route/route.generator.d.ts +0 -12
  570. package/dist/src/generators/route/route.generator.js +0 -31
  571. package/dist/src/templates/resource/layers/resourceRoutes.template.d.ts +0 -13
  572. package/dist/src/templates/resource/layers/resourceRoutes.template.js +0 -129
@@ -12,15 +12,26 @@ import { lockedInstallSteps, workspaceMemberInstallSteps, } from "./dockerfile.i
12
12
  function runnerFor(packageManager) {
13
13
  return packageManager === "npm" || packageManager === "bun" ? "npm" : packageManager;
14
14
  }
15
- /** The runtime stage of a single-package image. */
16
- function runtimeStage(port, dist, from) {
15
+ /**
16
+ * The runtime stage of a single-package image. With Prisma, the schema,
17
+ * migrations and `prisma.config.ts` come along (the CLI is a runtime
18
+ * dependency), so the same image applies migrations.
19
+ */
20
+ function runtimeStage(port, dist, from, prisma = false) {
21
+ const migrations = prisma
22
+ ? `COPY --from=build --chown=node:node ${from}/prisma ./prisma
23
+ COPY --from=build --chown=node:node ${from}/prisma.config.ts ./
24
+ # Apply migrations with this image before starting a new version:
25
+ # docker run --rm --env-file .env <image> npx prisma migrate deploy
26
+ `
27
+ : "";
17
28
  return `FROM node:24-alpine AS runtime
18
29
  ENV NODE_ENV=production
19
30
  WORKDIR /app
20
31
  COPY --from=build --chown=node:node ${from}/package.json ./
21
32
  COPY --from=build --chown=node:node ${from}/node_modules ./node_modules
22
33
  COPY --from=build --chown=node:node ${from}/${dist} ./${dist}
23
- USER node
34
+ ${migrations}USER node
24
35
  EXPOSE ${port}
25
36
  HEALTHCHECK --interval=30s --timeout=5s --start-period=15s CMD ["node", "-e", "fetch('http://127.0.0.1:${port}/health').then((r) => process.exit(r.ok ? 0 : 1), () => process.exit(1))"]
26
37
  CMD ["node", "${dist}/server.js"]
@@ -58,7 +69,7 @@ export function renderAppPackageDockerfile(options) {
58
69
  ...(steps.prune === undefined ? [] : [`RUN ${steps.prune}`]),
59
70
  "",
60
71
  ];
61
- return `${lines.join("\n")}\n${runtimeStage(options.port, "dist", "/app")}`;
72
+ return `${lines.join("\n")}\n${runtimeStage(options.port, "dist", "/app", options.prisma === true)}`;
62
73
  }
63
74
  /**
64
75
  * A Dockerfile for a workspace whose server lives in `appDirectory`. The whole
@@ -92,4 +103,3 @@ HEALTHCHECK --interval=30s --timeout=5s --start-period=15s CMD ["node", "-e", "f
92
103
  CMD ["node", "${dist}/server.js"]
93
104
  `;
94
105
  }
95
- //# sourceMappingURL=dockerfile.template.js.map
@@ -3,4 +3,3 @@
3
3
  */
4
4
  export * from "./dockerfile.template.js";
5
5
  export * from "./dockerfile.install.js";
6
- //# sourceMappingURL=index.d.ts.map
@@ -3,4 +3,3 @@
3
3
  */
4
4
  export * from "./dockerfile.template.js";
5
5
  export * from "./dockerfile.install.js";
6
- //# sourceMappingURL=index.js.map
@@ -5,5 +5,5 @@ export * from "./appRuntime.template.js";
5
5
  export * from "./capability.template.js";
6
6
  export * from "./dockerfile/index.js";
7
7
  export * from "./pnpm.template.js";
8
+ export { renderShutdownBlock } from "./server.parts.js";
8
9
  export * from "./server.template.js";
9
- //# sourceMappingURL=index.d.ts.map
@@ -5,5 +5,5 @@ export * from "./appRuntime.template.js";
5
5
  export * from "./capability.template.js";
6
6
  export * from "./dockerfile/index.js";
7
7
  export * from "./pnpm.template.js";
8
+ export { renderShutdownBlock } from "./server.parts.js";
8
9
  export * from "./server.template.js";
9
- //# sourceMappingURL=index.js.map
@@ -30,4 +30,3 @@ export declare const PNPM_ALLOWED_BUILD_SCRIPTS: readonly ["esbuild", "@swc/core
30
30
  * when it writes the file itself.
31
31
  */
32
32
  export declare function renderPnpmWorkspaceFile(packages?: readonly string[]): string;
33
- //# sourceMappingURL=pnpm.template.d.ts.map
@@ -62,4 +62,3 @@ export function renderPnpmWorkspaceFile(packages = []) {
62
62
  lines.push("");
63
63
  return lines.join("\n");
64
64
  }
65
- //# sourceMappingURL=pnpm.template.js.map
@@ -0,0 +1,28 @@
1
+ /**
2
+ * zudojs-cli — Fragments of the generated `src/server.ts`.
3
+ *
4
+ * The OpenAPI lines (also inserted by `zudojs add openapi`) and the
5
+ * shutdown block. `server.template.ts` assembles them.
6
+ */
7
+ /**
8
+ * The lines `zudojs add openapi` (or `create`) puts in server.ts.
9
+ *
10
+ * The documentation page is served in every environment but production:
11
+ * it lists every route and its schemas, which a public deployment should
12
+ * not hand out by default. `/openapi.json` stays, for clients and tooling.
13
+ */
14
+ export declare function openApiServerLines(title: string): {
15
+ readonly importLine: string;
16
+ readonly mountLine: string;
17
+ };
18
+ /**
19
+ * The SIGINT/SIGTERM handlers and the "Listening on" line.
20
+ *
21
+ * The signal listeners stay registered (`process.on`, not `once`) for the
22
+ * whole shutdown. Under `tsx watch`, Ctrl+C delivers SIGINT twice (from the
23
+ * terminal and forwarded by the watcher); with `once` the second signal
24
+ * found no listener and Node's default action killed the process before
25
+ * the runtime had stopped or logged anything. "Listening on" is logged once
26
+ * the listeners are in place, so a signal sent after it is always handled.
27
+ */
28
+ export declare function renderShutdownBlock(): string;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * zudojs-cli — Fragments of the generated `src/server.ts`.
3
+ *
4
+ * The OpenAPI lines (also inserted by `zudojs add openapi`) and the
5
+ * shutdown block. `server.template.ts` assembles them.
6
+ */
7
+ /** Emits a string as a TypeScript string literal that cannot break out. */
8
+ function literal(value) {
9
+ return JSON.stringify(value);
10
+ }
11
+ /**
12
+ * The lines `zudojs add openapi` (or `create`) puts in server.ts.
13
+ *
14
+ * The documentation page is served in every environment but production:
15
+ * it lists every route and its schemas, which a public deployment should
16
+ * not hand out by default. `/openapi.json` stays, for clients and tooling.
17
+ */
18
+ export function openApiServerLines(title) {
19
+ return {
20
+ importLine: `import { mountOpenAPI } from "@zudojs/http";`,
21
+ mountLine: `mountOpenAPI(router, { info: { title: ${literal(title)}, version: "0.1.0" }, docsPath: config.nodeEnv === "production" ? false : "/docs" });`,
22
+ };
23
+ }
24
+ /**
25
+ * The SIGINT/SIGTERM handlers and the "Listening on" line.
26
+ *
27
+ * The signal listeners stay registered (`process.on`, not `once`) for the
28
+ * whole shutdown. Under `tsx watch`, Ctrl+C delivers SIGINT twice (from the
29
+ * terminal and forwarded by the watcher); with `once` the second signal
30
+ * found no listener and Node's default action killed the process before
31
+ * the runtime had stopped or logged anything. "Listening on" is logged once
32
+ * the listeners are in place, so a signal sent after it is always handled.
33
+ */
34
+ export function renderShutdownBlock() {
35
+ return `let stopping = false;
36
+ for (const signal of ["SIGINT", "SIGTERM"] as const) {
37
+ process.on(signal, () => {
38
+ if (stopping) {
39
+ console.log(\`Received \${signal} again: already shutting down.\`);
40
+ return;
41
+ }
42
+ stopping = true;
43
+ console.log(\`Received \${signal}: shutting down.\`);
44
+ void drainIntegrations(integrations)
45
+ .then(() => server.stop())
46
+ .then(() => runtime.stop())
47
+ .then(() => {
48
+ process.exit(0);
49
+ })
50
+ .catch((error: unknown) => {
51
+ console.error(error);
52
+ process.exit(1);
53
+ });
54
+ });
55
+ }
56
+
57
+ console.log(\`Listening on http://\${config.host}:\${server.address?.port ?? config.port}\`);
58
+ `;
59
+ }
@@ -1,20 +1,27 @@
1
1
  /**
2
2
  * zudojs-cli — Generated `src/server.ts`
3
3
  *
4
- * The entry point loads the configuration, builds a router with
5
- * `createRouter()`, registers every route through `registerRoutes` (from
6
- * the composition root in `container.ts`), mounts the OpenAPI document and
7
- * `/docs` page when the `openapi` capability is on, and serves the router
8
- * with `createHttpServer` + `createNodeHttpAdapter`.
4
+ * The entry point loads the configuration, builds the runtime with
5
+ * `createApp()`, constructs the composition root (`container.ts`) and
6
+ * registers it in the runtime's DI container, builds a router with
7
+ * `createRouter()`, registers every route through `registerRoutes`, mounts
8
+ * the OpenAPI document (and, outside production, the `/docs` page) when the
9
+ * `openapi` capability is on, and serves the router with `createHttpServer`
10
+ * + `createNodeHttpAdapter`.
9
11
  *
10
12
  * Every response passes through the @zudojs/security default headers, a
11
13
  * CORS policy that allows only `CORS_ORIGINS` (none by default) and a
12
- * per-client rate limit (`RATE_LIMIT_MAX` per `RATE_LIMIT_WINDOW_MS`). Exposed
13
- * 4xx errors are answered with their status; anything else is a generic
14
- * 500. On SIGINT/SIGTERM integrations drain, HTTP stops, then the runtime
15
- * stops. `tests/generatedProject.typecheck.test.ts` type-checks the output
16
- * against the current `@zudojs/*` sources.
14
+ * per-client rate limit (`RATE_LIMIT_MAX` per `RATE_LIMIT_WINDOW_MS`; 0
15
+ * turns it off). Exposed errors are answered with their status; anything
16
+ * else is logged with the runtime's logger and answered with a generic 500
17
+ * built inside the pipeline, so it carries the security headers too. It
18
+ * used to rethrow, which left the adapter to answer a bare 500 that nothing
19
+ * logged. On SIGINT/SIGTERM integrations drain, HTTP stops, then the
20
+ * runtime stops (see `server.parts.ts`).
21
+ * `tests/generatedProject.typecheck.test.ts` type-checks the output against
22
+ * the current `@zudojs/*` sources; `tests/cli.round12.server.test.ts` runs it.
17
23
  */
24
+ export { openApiServerLines } from "./server.parts.js";
18
25
  /** Options for {@link renderServerFile}. */
19
26
  export interface ServerFileOptions {
20
27
  /** Title of the OpenAPI document. */
@@ -22,11 +29,5 @@ export interface ServerFileOptions {
22
29
  /** Whether `/openapi.json` and `/docs` are mounted. */
23
30
  readonly openapi: boolean;
24
31
  }
25
- /** The lines `zudojs add openapi` (or `create`) puts in server.ts. */
26
- export declare function openApiServerLines(title: string): {
27
- readonly importLine: string;
28
- readonly mountLine: string;
29
- };
30
32
  /** Renders `src/server.ts`. */
31
33
  export declare function renderServerFile(options: ServerFileOptions): string;
32
- //# sourceMappingURL=server.template.d.ts.map
@@ -1,32 +1,29 @@
1
1
  /**
2
2
  * zudojs-cli — Generated `src/server.ts`
3
3
  *
4
- * The entry point loads the configuration, builds a router with
5
- * `createRouter()`, registers every route through `registerRoutes` (from
6
- * the composition root in `container.ts`), mounts the OpenAPI document and
7
- * `/docs` page when the `openapi` capability is on, and serves the router
8
- * with `createHttpServer` + `createNodeHttpAdapter`.
4
+ * The entry point loads the configuration, builds the runtime with
5
+ * `createApp()`, constructs the composition root (`container.ts`) and
6
+ * registers it in the runtime's DI container, builds a router with
7
+ * `createRouter()`, registers every route through `registerRoutes`, mounts
8
+ * the OpenAPI document (and, outside production, the `/docs` page) when the
9
+ * `openapi` capability is on, and serves the router with `createHttpServer`
10
+ * + `createNodeHttpAdapter`.
9
11
  *
10
12
  * Every response passes through the @zudojs/security default headers, a
11
13
  * CORS policy that allows only `CORS_ORIGINS` (none by default) and a
12
- * per-client rate limit (`RATE_LIMIT_MAX` per `RATE_LIMIT_WINDOW_MS`). Exposed
13
- * 4xx errors are answered with their status; anything else is a generic
14
- * 500. On SIGINT/SIGTERM integrations drain, HTTP stops, then the runtime
15
- * stops. `tests/generatedProject.typecheck.test.ts` type-checks the output
16
- * against the current `@zudojs/*` sources.
14
+ * per-client rate limit (`RATE_LIMIT_MAX` per `RATE_LIMIT_WINDOW_MS`; 0
15
+ * turns it off). Exposed errors are answered with their status; anything
16
+ * else is logged with the runtime's logger and answered with a generic 500
17
+ * built inside the pipeline, so it carries the security headers too. It
18
+ * used to rethrow, which left the adapter to answer a bare 500 that nothing
19
+ * logged. On SIGINT/SIGTERM integrations drain, HTTP stops, then the
20
+ * runtime stops (see `server.parts.ts`).
21
+ * `tests/generatedProject.typecheck.test.ts` type-checks the output against
22
+ * the current `@zudojs/*` sources; `tests/cli.round12.server.test.ts` runs it.
17
23
  */
18
24
  import { MARKERS, renderMarkerBlock } from "../../wiring/index.js";
19
- /** Emits a string as a TypeScript string literal that cannot break out. */
20
- function literal(value) {
21
- return JSON.stringify(value);
22
- }
23
- /** The lines `zudojs add openapi` (or `create`) puts in server.ts. */
24
- export function openApiServerLines(title) {
25
- return {
26
- importLine: `import { mountOpenAPI } from "@zudojs/http";`,
27
- mountLine: `mountOpenAPI(router, { info: { title: ${literal(title)}, version: "0.1.0" } });`,
28
- };
29
- }
25
+ import { openApiServerLines, renderShutdownBlock } from "./server.parts.js";
26
+ export { openApiServerLines } from "./server.parts.js";
30
27
  /** Renders `src/server.ts`. */
31
28
  export function renderServerFile(options) {
32
29
  const openapi = openApiServerLines(options.title);
@@ -47,27 +44,30 @@ ${renderMarkerBlock(MARKERS.serverImports, options.openapi ? [openapi.importLine
47
44
 
48
45
  import { createApp } from "./app.js";
49
46
  import { loadConfig } from "./configs/index.js";
50
- import { createDependencies } from "./container.js";
47
+ import { APP_DEPENDENCIES, createDependencies } from "./container.js";
51
48
  import { checkIntegrations, drainIntegrations, integrations } from "./integrations/index.js";
52
49
  import { registerRoutes } from "./routes/index.js";
53
- import { errorResponse, securityHeaders } from "./utils/http.js";
50
+ import { errorDetails, errorResponse, json, securityHeaders } from "./utils/http.js";
54
51
 
55
52
  const config = await loadConfig();
56
53
  const httpServer = createServer();
57
54
  const runtime = createApp({ config, httpServer });
55
+ const logger = runtime.context.logger;
56
+
57
+ const dependencies = createDependencies({
58
+ health: async () => {
59
+ const checks = await checkIntegrations(integrations);
60
+ const ready =
61
+ runtime.state === "running" && Object.values(checks).every((check) => check === "up");
62
+ return { ready, checks };
63
+ },
64
+ });
65
+ // Modules reach the composition root through the runtime container:
66
+ // context.application.container.resolve(APP_DEPENDENCIES).
67
+ runtime.context.container.registerValue(APP_DEPENDENCIES, dependencies);
58
68
 
59
69
  const router = createRouter();
60
- registerRoutes(
61
- router,
62
- createDependencies({
63
- health: async () => {
64
- const checks = await checkIntegrations(integrations);
65
- const ready =
66
- runtime.state === "running" && Object.values(checks).every((check) => check === "up");
67
- return { ready, checks };
68
- },
69
- }),
70
- );
70
+ registerRoutes(router, dependencies);
71
71
  ${renderMarkerBlock(MARKERS.serverMounts, options.openapi ? [openapi.mountLine] : [])}
72
72
 
73
73
  const dispatch: HttpMiddleware = async (context) => {
@@ -75,8 +75,9 @@ const dispatch: HttpMiddleware = async (context) => {
75
75
  return (await router.dispatch(context.request, { signal: context.signal })).response;
76
76
  } catch (error) {
77
77
  const response = errorResponse(error);
78
- if (response === undefined) throw error;
79
- return response;
78
+ if (response !== undefined && response.status < 500) return response;
79
+ logger.error(\`Unhandled error: \${context.request.method} \${context.request.path}\`, errorDetails(error));
80
+ return response ?? json(500, { error: "Internal Server Error" });
80
81
  }
81
82
  };
82
83
 
@@ -84,7 +85,10 @@ const pipeline = new HttpMiddlewarePipeline({
84
85
  middlewares: [
85
86
  securityHeaders(),
86
87
  createCorsMiddleware({ allowOrigin: config.corsOrigins }),
87
- createRateLimitMiddleware({ windowMs: config.rateLimit.windowMs, max: config.rateLimit.max }),
88
+ // RATE_LIMIT_MAX=0 turns the limit off (load tests, local development).
89
+ ...(config.rateLimit.max > 0
90
+ ? [createRateLimitMiddleware({ windowMs: config.rateLimit.windowMs, max: config.rateLimit.max })]
91
+ : []),
88
92
  ${renderMarkerBlock(MARKERS.serverMiddleware, [], " ")}
89
93
  dispatch,
90
94
  ],
@@ -98,25 +102,6 @@ const server = createHttpServer({
98
102
  });
99
103
 
100
104
  await server.start();
101
- console.log(\`Listening on http://\${config.host}:\${server.address?.port ?? config.port}\`);
102
105
 
103
- let stopping = false;
104
- for (const signal of ["SIGINT", "SIGTERM"] as const) {
105
- process.once(signal, () => {
106
- if (stopping) return;
107
- stopping = true;
108
- void drainIntegrations(integrations)
109
- .then(() => server.stop())
110
- .then(() => runtime.stop())
111
- .then(() => {
112
- process.exit(0);
113
- })
114
- .catch((error: unknown) => {
115
- console.error(error);
116
- process.exit(1);
117
- });
118
- });
119
- }
120
- `;
106
+ ${renderShutdownBlock()}`;
121
107
  }
122
- //# sourceMappingURL=server.template.js.map
@@ -5,4 +5,3 @@
5
5
  */
6
6
  export type { ProjectType, BackendArchitecture, FrontendFramework, FrontendArchitecture, PackageManagerType, DatabaseProvider, ApiStyle, ProjectConfiguration, } from "./projectConfiguration.type.js";
7
7
  export type { ArchitectureType, PackageManager, DatabaseEngine, ScaffoldOptions, ProjectTemplate, GenerateOptions, } from "./scaffold.type.js";
8
- //# sourceMappingURL=index.d.ts.map
@@ -4,4 +4,3 @@
4
4
  * Type definitions for the Zudojs CLI scaffolding system.
5
5
  */
6
6
  export {};
7
- //# sourceMappingURL=index.js.map
@@ -52,4 +52,3 @@ export interface ProjectConfiguration {
52
52
  };
53
53
  readonly features?: readonly string[];
54
54
  }
55
- //# sourceMappingURL=projectConfiguration.type.d.ts.map
@@ -4,4 +4,3 @@
4
4
  * @module types/projectConfiguration
5
5
  */
6
6
  export {};
7
- //# sourceMappingURL=projectConfiguration.type.js.map
@@ -68,4 +68,3 @@ export interface GenerateOptions {
68
68
  * Converts ScaffoldOptions to ProjectConfiguration for runtime use.
69
69
  */
70
70
  export declare function toProjectConfiguration(options: ScaffoldOptions): ProjectConfiguration;
71
- //# sourceMappingURL=scaffold.type.d.ts.map
@@ -30,4 +30,3 @@ export function toProjectConfiguration(options) {
30
30
  features: resolveProjectCapabilities(options),
31
31
  };
32
32
  }
33
- //# sourceMappingURL=scaffold.type.js.map
@@ -8,4 +8,3 @@ export { normalizeName, toPascalCase, toCamelCase } from "./utils.name.js";
8
8
  export { detectArchitecture } from "./utils.detect.js";
9
9
  export { execCommand, runStreaming } from "./utils.exec.js";
10
10
  export { activeWriteCapture, captureWrites, findWriteConflicts, } from "./utils.writeGuard.js";
11
- //# sourceMappingURL=index.d.ts.map
@@ -8,4 +8,3 @@ export { normalizeName, toPascalCase, toCamelCase } from "./utils.name.js";
8
8
  export { detectArchitecture } from "./utils.detect.js";
9
9
  export { execCommand, runStreaming } from "./utils.exec.js";
10
10
  export { activeWriteCapture, captureWrites, findWriteConflicts, } from "./utils.writeGuard.js";
11
- //# sourceMappingURL=index.js.map
@@ -8,4 +8,3 @@
8
8
  * the `zudojs` block in `package.json`.
9
9
  */
10
10
  export declare function detectArchitecture(cwd: string): Promise<string | null>;
11
- //# sourceMappingURL=utils.detect.d.ts.map
@@ -11,4 +11,3 @@ import { resolveProjectLayout } from "../resolvers/layout/projectLayout.core.js"
11
11
  export async function detectArchitecture(cwd) {
12
12
  return resolveProjectLayout(cwd)?.architecture ?? null;
13
13
  }
14
- //# sourceMappingURL=utils.detect.js.map
@@ -59,4 +59,3 @@ export declare function execCommand(file: string, args: readonly string[], cwd:
59
59
  * rather than rejects, since stopping it was the caller's intent.
60
60
  */
61
61
  export declare function runStreaming(file: string, args: readonly string[], cwd: string, options?: ExecOptions): Promise<void>;
62
- //# sourceMappingURL=utils.exec.d.ts.map
@@ -150,4 +150,3 @@ export function runStreaming(file, args, cwd, options = {}) {
150
150
  });
151
151
  });
152
152
  }
153
- //# sourceMappingURL=utils.exec.js.map
@@ -6,4 +6,3 @@ export declare function writeFileTree(basePath: string, files: Readonly<Record<s
6
6
  * existing content is returned unchanged.
7
7
  */
8
8
  export declare function mergeBarrelExport(basePath: string, indexPath: string, exportLine: string): string;
9
- //# sourceMappingURL=utils.fileSystem.d.ts.map
@@ -87,4 +87,3 @@ export function mergeBarrelExport(basePath, indexPath, exportLine) {
87
87
  const separator = existing.length > 0 && !existing.endsWith("\n") ? "\n" : "";
88
88
  return existing + separator + line + "\n";
89
89
  }
90
- //# sourceMappingURL=utils.fileSystem.js.map
@@ -34,4 +34,3 @@ export declare function assertGeneratableName(name: string, kind?: string): stri
34
34
  * outside its base path.
35
35
  */
36
36
  export declare function assertSafePathSegment(value: string, kind?: string): string;
37
- //# sourceMappingURL=utils.name.d.ts.map
@@ -87,4 +87,3 @@ export function assertSafePathSegment(value, kind = "value") {
87
87
  }
88
88
  return value;
89
89
  }
90
- //# sourceMappingURL=utils.name.js.map
@@ -27,4 +27,3 @@ export declare function captureWrites(run: () => Promise<unknown>): Promise<Read
27
27
  * by appending (paths relative to `cwd`).
28
28
  */
29
29
  export declare function findWriteConflicts(cwd: string, files: ReadonlyMap<string, string>): string[];
30
- //# sourceMappingURL=utils.writeGuard.d.ts.map
@@ -66,4 +66,3 @@ export function findWriteConflicts(cwd, files) {
66
66
  }
67
67
  return conflicts;
68
68
  }
69
- //# sourceMappingURL=utils.writeGuard.js.map
@@ -17,4 +17,3 @@ export declare class CompatibilityValidator {
17
17
  private readonly incompatibilities;
18
18
  validate(options: Record<string, string>): CompatibilityResult;
19
19
  }
20
- //# sourceMappingURL=compatibilityValidator.core.d.ts.map
@@ -86,4 +86,3 @@ export class CompatibilityValidator {
86
86
  return { valid, checks };
87
87
  }
88
88
  }
89
- //# sourceMappingURL=compatibilityValidator.core.js.map
@@ -4,4 +4,3 @@
4
4
  * Validates compatibility between selected options.
5
5
  */
6
6
  export { CompatibilityValidator, type CompatibilityCheck, type CompatibilityResult, } from "./compatibilityValidator.core.js";
7
- //# sourceMappingURL=index.d.ts.map
@@ -4,4 +4,3 @@
4
4
  * Validates compatibility between selected options.
5
5
  */
6
6
  export { CompatibilityValidator, } from "./compatibilityValidator.core.js";
7
- //# sourceMappingURL=index.js.map
@@ -42,4 +42,3 @@ export declare class EnvironmentValidator {
42
42
  private checkPackageManager;
43
43
  private checkBinary;
44
44
  }
45
- //# sourceMappingURL=environmentValidator.core.d.ts.map
@@ -82,4 +82,3 @@ export class EnvironmentValidator {
82
82
  }
83
83
  }
84
84
  }
85
- //# sourceMappingURL=environmentValidator.core.js.map
@@ -5,4 +5,3 @@
5
5
  */
6
6
  export type { EnvironmentCheck, EnvironmentValidationResult, } from "./environmentValidator.core.js";
7
7
  export { EnvironmentValidator } from "./environmentValidator.core.js";
8
- //# sourceMappingURL=index.d.ts.map
@@ -4,4 +4,3 @@
4
4
  * @module validators/environment
5
5
  */
6
6
  export { EnvironmentValidator } from "./environmentValidator.core.js";
7
- //# sourceMappingURL=index.js.map
@@ -6,4 +6,3 @@
6
6
  export { EnvironmentValidator, type EnvironmentCheck, type EnvironmentValidationResult, } from "./environment/index.js";
7
7
  export { ProjectValidator, type ProjectCheck, type ProjectValidationResult, } from "./project/index.js";
8
8
  export { CompatibilityValidator, type CompatibilityCheck, type CompatibilityResult, } from "./compatibility/index.js";
9
- //# sourceMappingURL=index.d.ts.map
@@ -6,4 +6,3 @@
6
6
  export { EnvironmentValidator, } from "./environment/index.js";
7
7
  export { ProjectValidator, } from "./project/index.js";
8
8
  export { CompatibilityValidator, } from "./compatibility/index.js";
9
- //# sourceMappingURL=index.js.map
@@ -5,4 +5,3 @@
5
5
  */
6
6
  export type { ProjectCheck, ProjectValidationResult, ProjectValidationOptions, } from "./projectValidator.core.js";
7
7
  export { ProjectValidator } from "./projectValidator.core.js";
8
- //# sourceMappingURL=index.d.ts.map
@@ -4,4 +4,3 @@
4
4
  * @module validators/project
5
5
  */
6
6
  export { ProjectValidator } from "./projectValidator.core.js";
7
- //# sourceMappingURL=index.js.map
@@ -31,4 +31,3 @@ export declare class ProjectValidator {
31
31
  private checkSourceFiles;
32
32
  private checkTypeScript;
33
33
  }
34
- //# sourceMappingURL=projectValidator.core.d.ts.map
@@ -125,4 +125,3 @@ export class ProjectValidator {
125
125
  }
126
126
  }
127
127
  }
128
- //# sourceMappingURL=projectValidator.core.js.map
@@ -7,4 +7,3 @@
7
7
  export * from "./wiring.markers.js";
8
8
  export * from "./wiring.edits.js";
9
9
  export * from "./wiring.dependencies.js";
10
- //# sourceMappingURL=index.d.ts.map
@@ -7,4 +7,3 @@
7
7
  export * from "./wiring.markers.js";
8
8
  export * from "./wiring.edits.js";
9
9
  export * from "./wiring.dependencies.js";
10
- //# sourceMappingURL=index.js.map
@@ -26,4 +26,3 @@ export declare function ensureZudojsDependencies(root: string, files: readonly s
26
26
  export declare function describeAddedDependencies(edits: readonly AddedDependencies[]): string[];
27
27
  /** "1 file" / "3 files". */
28
28
  export declare function fileCount(count: number): string;
29
- //# sourceMappingURL=wiring.dependencies.d.ts.map
@@ -80,4 +80,3 @@ export function describeAddedDependencies(edits) {
80
80
  export function fileCount(count) {
81
81
  return `${count} ${count === 1 ? "file" : "files"}`;
82
82
  }
83
- //# sourceMappingURL=wiring.dependencies.js.map
@@ -48,4 +48,3 @@ export declare function applyMarkerEdits(cwd: string, edits: readonly MarkerEdit
48
48
  * app stopped compiling on the duplicate identifier.
49
49
  */
50
50
  export declare function conflictingImport(cwd: string, file: string, importLine: string): string | undefined;
51
- //# sourceMappingURL=wiring.edits.d.ts.map
@@ -87,4 +87,3 @@ export function conflictingImport(cwd, file, importLine) {
87
87
  .split("\n")
88
88
  .find((line) => line.trim() !== importLine && binds.test(line.trim()));
89
89
  }
90
- //# sourceMappingURL=wiring.edits.js.map