arkos 2.0.0-next.2 → 2.0.0-next.21

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 (613) hide show
  1. package/README.md +146 -145
  2. package/cli.js +11 -13
  3. package/dist/esm/app.js +17 -16
  4. package/dist/esm/app.js.map +1 -1
  5. package/dist/esm/components/arkos-gateway/arkos-gateway.js +338 -0
  6. package/dist/esm/components/arkos-gateway/arkos-gateway.js.map +1 -0
  7. package/dist/esm/components/arkos-gateway/socket-extensions.js +168 -0
  8. package/dist/esm/components/arkos-gateway/socket-extensions.js.map +1 -0
  9. package/dist/esm/components/arkos-gateway/types.js +3 -0
  10. package/dist/esm/components/arkos-gateway/types.js.map +1 -0
  11. package/dist/esm/components/arkos-gateway/utils/helpers.js +105 -0
  12. package/dist/esm/components/arkos-gateway/utils/helpers.js.map +1 -0
  13. package/dist/esm/components/arkos-gateway/utils/memory-gateway-store.js +45 -0
  14. package/dist/esm/components/arkos-gateway/utils/memory-gateway-store.js.map +1 -0
  15. package/dist/esm/components/arkos-gateway/utils/multi-tier-arkos-gateway-store.js +40 -0
  16. package/dist/esm/components/arkos-gateway/utils/multi-tier-arkos-gateway-store.js.map +1 -0
  17. package/dist/esm/components/arkos-gateway/utils/rate-limiter.js +13 -0
  18. package/dist/esm/components/arkos-gateway/utils/rate-limiter.js.map +1 -0
  19. package/dist/esm/components/arkos-loadable-registry/index.js +1 -3
  20. package/dist/esm/components/arkos-loadable-registry/index.js.map +1 -1
  21. package/dist/esm/components/arkos-policy/index.js +3 -1
  22. package/dist/esm/components/arkos-policy/index.js.map +1 -1
  23. package/dist/esm/components/arkos-route-hook/index.js +2 -1
  24. package/dist/esm/components/arkos-route-hook/index.js.map +1 -1
  25. package/dist/esm/components/arkos-route-hook/reader.js.map +1 -1
  26. package/dist/esm/components/arkos-route-hook/types.js.map +1 -1
  27. package/dist/esm/exports/error-handler/index.js +1 -0
  28. package/dist/esm/exports/error-handler/index.js.map +1 -1
  29. package/dist/esm/exports/index.js +3 -3
  30. package/dist/esm/exports/index.js.map +1 -1
  31. package/dist/esm/exports/middlewares/index.js +1 -1
  32. package/dist/esm/exports/middlewares/index.js.map +1 -1
  33. package/dist/esm/exports/services/index.js +2 -2
  34. package/dist/esm/exports/services/index.js.map +1 -1
  35. package/dist/esm/exports/websockets.js +5 -0
  36. package/dist/esm/exports/websockets.js.map +1 -0
  37. package/dist/esm/generated.js.map +1 -1
  38. package/dist/esm/modules/auth/auth.controller.js +214 -222
  39. package/dist/esm/modules/auth/auth.controller.js.map +1 -1
  40. package/dist/esm/modules/auth/auth.router.js +26 -9
  41. package/dist/esm/modules/auth/auth.router.js.map +1 -1
  42. package/dist/esm/modules/auth/auth.service.js +90 -102
  43. package/dist/esm/modules/auth/auth.service.js.map +1 -1
  44. package/dist/esm/modules/auth/utils/auth-error-objects.js +2 -2
  45. package/dist/esm/modules/auth/utils/auth-error-objects.js.map +1 -1
  46. package/dist/esm/modules/auth/utils/auth-hooks-manager.js +148 -0
  47. package/dist/esm/modules/auth/utils/auth-hooks-manager.js.map +1 -0
  48. package/dist/esm/modules/auth/utils/auth-openapi-generator.js +367 -0
  49. package/dist/esm/modules/auth/utils/auth-openapi-generator.js.map +1 -0
  50. package/dist/esm/modules/auth/utils/auth-prisma-json-schema-generator.js +97 -0
  51. package/dist/esm/modules/auth/utils/auth-prisma-json-schema-generator.js.map +1 -0
  52. package/dist/esm/modules/auth/utils/docs-links.js +6 -0
  53. package/dist/esm/modules/auth/utils/docs-links.js.map +1 -0
  54. package/dist/esm/modules/auth/utils/services/auth-action.service.js +20 -16
  55. package/dist/esm/modules/auth/utils/services/auth-action.service.js.map +1 -1
  56. package/dist/esm/modules/base/base.controller.js +182 -162
  57. package/dist/esm/modules/base/base.controller.js.map +1 -1
  58. package/dist/esm/modules/base/base.middlewares.js +31 -48
  59. package/dist/esm/modules/base/base.middlewares.js.map +1 -1
  60. package/dist/esm/modules/base/base.router.js +23 -9
  61. package/dist/esm/modules/base/base.router.js.map +1 -1
  62. package/dist/esm/modules/base/base.service.js +33 -138
  63. package/dist/esm/modules/base/base.service.js.map +1 -1
  64. package/dist/esm/modules/base/types/base.service.types.js.map +1 -1
  65. package/dist/esm/modules/base/utils/error-prettifier.js +26 -30
  66. package/dist/esm/modules/base/utils/error-prettifier.js.map +1 -1
  67. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +26 -5
  68. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
  69. package/dist/esm/modules/base/utils/model-openapi-generator.js +438 -0
  70. package/dist/esm/modules/base/utils/model-openapi-generator.js.map +1 -0
  71. package/dist/esm/modules/email/email.service.js +17 -10
  72. package/dist/esm/modules/email/email.service.js.map +1 -1
  73. package/dist/esm/modules/error-handler/error-handler.controller.js +24 -113
  74. package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -1
  75. package/dist/esm/modules/error-handler/utils/app-error.js +5 -2
  76. package/dist/esm/modules/error-handler/utils/app-error.js.map +1 -1
  77. package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -1
  78. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +9 -103
  79. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
  80. package/dist/esm/modules/error-handler/utils/errors.js +127 -0
  81. package/dist/esm/modules/error-handler/utils/errors.js.map +1 -0
  82. package/dist/esm/modules/error-handler/utils/get-handled-error.js +68 -0
  83. package/dist/esm/modules/error-handler/utils/get-handled-error.js.map +1 -0
  84. package/dist/esm/modules/error-handler/utils/multer-error-handler.js +34 -0
  85. package/dist/esm/modules/error-handler/utils/multer-error-handler.js.map +1 -0
  86. package/dist/esm/modules/file-upload/file-upload.controller.js +208 -214
  87. package/dist/esm/modules/file-upload/file-upload.controller.js.map +1 -1
  88. package/dist/esm/modules/file-upload/file-upload.router.js +35 -12
  89. package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -1
  90. package/dist/esm/modules/file-upload/file-upload.service.js +13 -8
  91. package/dist/esm/modules/file-upload/file-upload.service.js.map +1 -1
  92. package/dist/esm/modules/file-upload/utils/file-upload-json-schema-generator.js +346 -0
  93. package/dist/esm/modules/file-upload/utils/file-upload-json-schema-generator.js.map +1 -0
  94. package/dist/esm/modules/swagger/swagger.router.js +39 -22
  95. package/dist/esm/modules/swagger/swagger.router.js.map +1 -1
  96. package/dist/esm/modules/swagger/utils/get-open-api-login-html.js +305 -0
  97. package/dist/esm/modules/swagger/utils/get-open-api-login-html.js.map +1 -0
  98. package/dist/esm/modules/swagger/utils/helpers/class-validator-to-json-schema.js.map +1 -1
  99. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js +6 -7
  100. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +1 -1
  101. package/dist/esm/modules/swagger/utils/helpers/openapi-schema-converter.js +6 -3
  102. package/dist/esm/modules/swagger/utils/helpers/openapi-schema-converter.js.map +1 -1
  103. package/dist/esm/server.js +1 -1
  104. package/dist/esm/server.js.map +1 -1
  105. package/dist/esm/types/arkos-config/utils.js +2 -0
  106. package/dist/esm/types/arkos-config/utils.js.map +1 -0
  107. package/dist/esm/types/arkos-prisma-input.js.map +1 -1
  108. package/dist/esm/types/arkos.js.map +1 -1
  109. package/dist/esm/types/auth.js.map +1 -1
  110. package/dist/esm/types/index.js.map +1 -1
  111. package/dist/esm/types/new-arkos-config.js.map +1 -1
  112. package/dist/esm/types/router-config.js.map +1 -1
  113. package/dist/esm/types/upload.js +2 -0
  114. package/dist/esm/types/upload.js.map +1 -0
  115. package/dist/esm/types/validation/validation-manager.js +49 -0
  116. package/dist/esm/types/validation/validation-manager.js.map +1 -0
  117. package/dist/esm/types/validation/validator.js +2 -0
  118. package/dist/esm/types/validation/validator.js.map +1 -0
  119. package/dist/esm/utils/arkos-router/arkos-router-openapi-manager.js +68 -34
  120. package/dist/esm/utils/arkos-router/arkos-router-openapi-manager.js.map +1 -1
  121. package/dist/esm/utils/arkos-router/index.js +37 -130
  122. package/dist/esm/utils/arkos-router/index.js.map +1 -1
  123. package/dist/esm/utils/arkos-router/route-config-registry.js +2 -3
  124. package/dist/esm/utils/arkos-router/route-config-registry.js.map +1 -1
  125. package/dist/esm/utils/arkos-router/types/index.js.map +1 -1
  126. package/dist/esm/utils/arkos-router/types/openapi-config.js.map +1 -1
  127. package/dist/esm/utils/arkos-router/types/upload-config.js.map +1 -1
  128. package/dist/esm/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js +188 -0
  129. package/dist/esm/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js.map +1 -0
  130. package/dist/esm/utils/arkos-router/utils/helpers/index.js +88 -29
  131. package/dist/esm/utils/arkos-router/utils/helpers/index.js.map +1 -1
  132. package/dist/esm/utils/arkos-router/utils/helpers/upload-manager.js +364 -89
  133. package/dist/esm/utils/arkos-router/utils/helpers/upload-manager.js.map +1 -1
  134. package/dist/esm/utils/bundler.js +6 -6
  135. package/dist/esm/utils/bundler.js.map +1 -1
  136. package/dist/esm/utils/cli/build.js +16 -7
  137. package/dist/esm/utils/cli/build.js.map +1 -1
  138. package/dist/esm/utils/cli/dev.js +18 -28
  139. package/dist/esm/utils/cli/dev.js.map +1 -1
  140. package/dist/esm/utils/cli/export-auth-action.js +5 -4
  141. package/dist/esm/utils/cli/export-auth-action.js.map +1 -1
  142. package/dist/esm/utils/cli/generate.js +70 -56
  143. package/dist/esm/utils/cli/generate.js.map +1 -1
  144. package/dist/esm/utils/cli/index.js +54 -50
  145. package/dist/esm/utils/cli/index.js.map +1 -1
  146. package/dist/esm/utils/cli/prisma-generate.js +8 -37
  147. package/dist/esm/utils/cli/prisma-generate.js.map +1 -1
  148. package/dist/esm/utils/cli/start.js +25 -14
  149. package/dist/esm/utils/cli/start.js.map +1 -1
  150. package/dist/esm/utils/cli/utils/cli.helpers.js +1 -1
  151. package/dist/esm/utils/cli/utils/runtime-cli-commander.js +7 -4
  152. package/dist/esm/utils/cli/utils/runtime-cli-commander.js.map +1 -1
  153. package/dist/esm/utils/cli/utils/smart-fs-watcher.js +3 -0
  154. package/dist/esm/utils/cli/utils/smart-fs-watcher.js.map +1 -1
  155. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +307 -11
  156. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +1 -1
  157. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +16 -7
  158. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +1 -1
  159. package/dist/esm/utils/cli/utils/template-generator/templates/generate-multiple-components.js +117 -65
  160. package/dist/esm/utils/cli/utils/template-generator/templates/generate-multiple-components.js.map +1 -1
  161. package/dist/esm/utils/cli/utils/template-generator/templates/policy-template.js +6 -8
  162. package/dist/esm/utils/cli/utils/template-generator/templates/policy-template.js.map +1 -1
  163. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js +13 -2
  164. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js.map +1 -1
  165. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js +2 -2
  166. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js.map +1 -1
  167. package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js +213 -19
  168. package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +1 -1
  169. package/dist/esm/utils/cli/utils/template-generators.js +31 -18
  170. package/dist/esm/utils/cli/utils/template-generators.js.map +1 -1
  171. package/dist/esm/utils/define-config.js +14 -0
  172. package/dist/esm/utils/define-config.js.map +1 -1
  173. package/dist/esm/utils/docs-links.js +2 -0
  174. package/dist/esm/utils/docs-links.js.map +1 -0
  175. package/dist/esm/utils/dotenv.helpers.js +0 -6
  176. package/dist/esm/utils/dotenv.helpers.js.map +1 -1
  177. package/dist/esm/utils/dynamic-loader.js +2 -1
  178. package/dist/esm/utils/dynamic-loader.js.map +1 -1
  179. package/dist/esm/utils/features/api.features.js +46 -27
  180. package/dist/esm/utils/features/api.features.js.map +1 -1
  181. package/dist/esm/utils/features/port-and-host-allocator.js +4 -3
  182. package/dist/esm/utils/features/port-and-host-allocator.js.map +1 -1
  183. package/dist/esm/utils/helpers/api.features.helpers.js +20 -0
  184. package/dist/esm/utils/helpers/api.features.helpers.js.map +1 -1
  185. package/dist/esm/utils/helpers/arkos-config.helpers.js +20 -2
  186. package/dist/esm/utils/helpers/arkos-config.helpers.js.map +1 -1
  187. package/dist/esm/utils/helpers/exit-error.js +1 -0
  188. package/dist/esm/utils/helpers/exit-error.js.map +1 -1
  189. package/dist/esm/utils/helpers/fs.helpers.js +26 -33
  190. package/dist/esm/utils/helpers/fs.helpers.js.map +1 -1
  191. package/dist/esm/utils/helpers/global.helpers.js +1 -1
  192. package/dist/esm/utils/helpers/global.helpers.js.map +1 -1
  193. package/dist/esm/utils/helpers/prisma.helpers.js +10 -7
  194. package/dist/esm/utils/helpers/prisma.helpers.js.map +1 -1
  195. package/dist/esm/utils/helpers/query-parser.helpers.js +7 -22
  196. package/dist/esm/utils/helpers/query-parser.helpers.js.map +1 -1
  197. package/dist/esm/utils/helpers/routers.helpers.js +2 -2
  198. package/dist/esm/utils/helpers/routers.helpers.js.map +1 -1
  199. package/dist/esm/utils/helpers/url-helpers.js +11 -0
  200. package/dist/esm/utils/helpers/url-helpers.js.map +1 -0
  201. package/dist/esm/utils/initialize-app.js +41 -17
  202. package/dist/esm/utils/initialize-app.js.map +1 -1
  203. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +154 -226
  204. package/dist/esm/utils/prisma/prisma-json-schema-generator.js.map +1 -1
  205. package/dist/esm/utils/prisma/prisma-schema-parser.js +37 -11
  206. package/dist/esm/utils/prisma/prisma-schema-parser.js.map +1 -1
  207. package/dist/esm/utils/prisma/types.js.map +1 -1
  208. package/dist/esm/utils/remove-dir.js +1 -1
  209. package/dist/esm/utils/remove-dir.js.map +1 -1
  210. package/dist/esm/utils/setup-app.js +59 -42
  211. package/dist/esm/utils/setup-app.js.map +1 -1
  212. package/dist/esm/utils/validate-schema.js +23 -21
  213. package/dist/esm/utils/validate-schema.js.map +1 -1
  214. package/dist/types/app.d.ts +10 -7
  215. package/dist/types/components/arkos-gateway/arkos-gateway.d.ts +121 -0
  216. package/dist/types/components/arkos-gateway/socket-extensions.d.ts +79 -0
  217. package/dist/types/components/arkos-gateway/types.d.ts +364 -0
  218. package/dist/types/components/arkos-gateway/utils/helpers.d.ts +9 -0
  219. package/dist/types/components/arkos-gateway/utils/memory-gateway-store.d.ts +14 -0
  220. package/dist/types/components/arkos-gateway/utils/multi-tier-arkos-gateway-store.d.ts +20 -0
  221. package/dist/types/components/arkos-gateway/utils/rate-limiter.d.ts +11 -0
  222. package/dist/types/components/arkos-route-hook/index.d.ts +11 -5
  223. package/dist/types/components/arkos-route-hook/reader.d.ts +4 -7
  224. package/dist/types/components/arkos-route-hook/types.d.ts +9 -5
  225. package/dist/types/exports/error-handler/index.d.ts +1 -0
  226. package/dist/types/exports/index.d.ts +5 -5
  227. package/dist/types/exports/middlewares/index.d.ts +1 -1
  228. package/dist/types/exports/services/index.d.ts +3 -3
  229. package/dist/types/exports/websockets.d.ts +5 -0
  230. package/dist/types/modules/auth/auth.service.d.ts +80 -51
  231. package/dist/types/modules/auth/utils/auth-hooks-manager.d.ts +63 -0
  232. package/dist/types/modules/auth/utils/auth-openapi-generator.d.ts +9 -0
  233. package/dist/types/modules/auth/utils/auth-prisma-json-schema-generator.d.ts +13 -0
  234. package/dist/types/modules/auth/utils/docs-links.d.ts +3 -0
  235. package/dist/types/modules/auth/utils/services/auth-action.service.d.ts +2 -2
  236. package/dist/types/modules/base/base.controller.d.ts +4 -4
  237. package/dist/types/modules/base/base.middlewares.d.ts +1 -7
  238. package/dist/types/modules/base/base.service.d.ts +8 -17
  239. package/dist/types/modules/base/types/base.service.types.d.ts +11 -0
  240. package/dist/types/modules/base/utils/helpers/base.service.helpers.d.ts +1 -1
  241. package/dist/types/modules/base/utils/model-openapi-generator.d.ts +12 -0
  242. package/dist/types/modules/email/email.service.d.ts +1 -1
  243. package/dist/types/modules/error-handler/utils/app-error.d.ts +0 -2
  244. package/dist/types/modules/error-handler/utils/catch-async.d.ts +2 -2
  245. package/dist/types/modules/error-handler/utils/error-handler.helpers.d.ts +1 -27
  246. package/dist/types/modules/error-handler/utils/errors.d.ts +176 -0
  247. package/dist/types/modules/error-handler/utils/get-handled-error.d.ts +1 -0
  248. package/dist/types/modules/error-handler/utils/multer-error-handler.d.ts +7 -0
  249. package/dist/types/modules/file-upload/file-upload.controller.d.ts +7 -2
  250. package/dist/types/modules/file-upload/utils/file-upload-json-schema-generator.d.ts +12 -0
  251. package/dist/types/modules/swagger/swagger.router.d.ts +1 -2
  252. package/dist/types/modules/swagger/utils/get-open-api-login-html.d.ts +1 -0
  253. package/dist/types/modules/swagger/utils/helpers/get-swagger-default-configs.d.ts +48 -3
  254. package/dist/types/modules/swagger/utils/helpers/openapi-schema-converter.d.ts +6 -1
  255. package/dist/types/types/arkos-config/utils.d.ts +68 -0
  256. package/dist/types/types/arkos-prisma-input.d.ts +4 -3
  257. package/dist/types/types/arkos.d.ts +5 -15
  258. package/dist/types/types/auth.d.ts +4 -4
  259. package/dist/types/types/index.d.ts +10 -58
  260. package/dist/types/types/new-arkos-config.d.ts +326 -36
  261. package/dist/types/types/router-config.d.ts +0 -63
  262. package/dist/types/types/upload.d.ts +10 -0
  263. package/dist/types/types/validation/validation-manager.d.ts +27 -0
  264. package/dist/types/types/validation/validator.d.ts +2 -0
  265. package/dist/types/utils/arkos-router/arkos-router-openapi-manager.d.ts +14 -1
  266. package/dist/types/utils/arkos-router/index.d.ts +83 -8
  267. package/dist/types/utils/arkos-router/types/index.d.ts +74 -23
  268. package/dist/types/utils/arkos-router/types/openapi-config.d.ts +3 -2
  269. package/dist/types/utils/arkos-router/types/upload-config.d.ts +65 -8
  270. package/dist/types/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.d.ts +6 -0
  271. package/dist/types/utils/arkos-router/utils/helpers/index.d.ts +4 -6
  272. package/dist/types/utils/arkos-router/utils/helpers/upload-manager.d.ts +1 -36
  273. package/dist/types/utils/bundler.d.ts +1 -1
  274. package/dist/types/utils/cli/build.d.ts +1 -1
  275. package/dist/types/utils/cli/generate.d.ts +15 -6
  276. package/dist/types/utils/cli/start.d.ts +3 -1
  277. package/dist/types/utils/cli/utils/template-generator/templates/class-validator-dto-generator.d.ts +11 -0
  278. package/dist/types/utils/cli/utils/template-generator/templates/zod-schema-generator.d.ts +4 -0
  279. package/dist/types/utils/define-config.d.ts +1 -1
  280. package/dist/types/utils/docs-links.d.ts +1 -0
  281. package/dist/types/utils/dynamic-loader.d.ts +2 -2
  282. package/dist/types/utils/features/api.features.d.ts +1 -2
  283. package/dist/types/utils/helpers/arkos-config.helpers.d.ts +7 -0
  284. package/dist/types/utils/helpers/fs.helpers.d.ts +1 -16
  285. package/dist/types/utils/helpers/global.helpers.d.ts +1 -0
  286. package/dist/types/utils/helpers/prisma.helpers.d.ts +1 -1
  287. package/dist/types/utils/helpers/query-parser.helpers.d.ts +1 -1
  288. package/dist/types/utils/helpers/url-helpers.d.ts +1 -0
  289. package/dist/types/utils/initialize-app.d.ts +1 -0
  290. package/dist/types/utils/prisma/prisma-json-schema-generator.d.ts +12 -30
  291. package/dist/types/utils/prisma/prisma-schema-parser.d.ts +4 -0
  292. package/dist/types/utils/prisma/types.d.ts +3 -2
  293. package/package.json +117 -84
  294. package/dist/cjs/app.js +0 -79
  295. package/dist/cjs/app.js.map +0 -1
  296. package/dist/cjs/components/arkos-loadable-registry/index.js +0 -28
  297. package/dist/cjs/components/arkos-loadable-registry/index.js.map +0 -1
  298. package/dist/cjs/components/arkos-loadable-translator/index.js +0 -144
  299. package/dist/cjs/components/arkos-loadable-translator/index.js.map +0 -1
  300. package/dist/cjs/components/arkos-policy/index.js +0 -36
  301. package/dist/cjs/components/arkos-policy/index.js.map +0 -1
  302. package/dist/cjs/components/arkos-policy/types.js +0 -3
  303. package/dist/cjs/components/arkos-policy/types.js.map +0 -1
  304. package/dist/cjs/components/arkos-route-hook/index.js +0 -50
  305. package/dist/cjs/components/arkos-route-hook/index.js.map +0 -1
  306. package/dist/cjs/components/arkos-route-hook/reader.js +0 -47
  307. package/dist/cjs/components/arkos-route-hook/reader.js.map +0 -1
  308. package/dist/cjs/components/arkos-route-hook/types.js +0 -3
  309. package/dist/cjs/components/arkos-route-hook/types.js.map +0 -1
  310. package/dist/cjs/components/arkos-service-hook/index.js +0 -35
  311. package/dist/cjs/components/arkos-service-hook/index.js.map +0 -1
  312. package/dist/cjs/components/arkos-service-hook/reader.js +0 -30
  313. package/dist/cjs/components/arkos-service-hook/reader.js.map +0 -1
  314. package/dist/cjs/components/arkos-service-hook/types.js +0 -3
  315. package/dist/cjs/components/arkos-service-hook/types.js.map +0 -1
  316. package/dist/cjs/exports/auth/index.js +0 -6
  317. package/dist/cjs/exports/auth/index.js.map +0 -1
  318. package/dist/cjs/exports/config.js +0 -6
  319. package/dist/cjs/exports/config.js.map +0 -1
  320. package/dist/cjs/exports/controllers/index.js +0 -42
  321. package/dist/cjs/exports/controllers/index.js.map +0 -1
  322. package/dist/cjs/exports/error-handler/index.js +0 -11
  323. package/dist/cjs/exports/error-handler/index.js.map +0 -1
  324. package/dist/cjs/exports/index.js +0 -23
  325. package/dist/cjs/exports/index.js.map +0 -1
  326. package/dist/cjs/exports/middlewares/index.js +0 -7
  327. package/dist/cjs/exports/middlewares/index.js.map +0 -1
  328. package/dist/cjs/exports/prisma/index.js +0 -13
  329. package/dist/cjs/exports/prisma/index.js.map +0 -1
  330. package/dist/cjs/exports/services/index.js +0 -53
  331. package/dist/cjs/exports/services/index.js.map +0 -1
  332. package/dist/cjs/exports/utils/index.js +0 -26
  333. package/dist/cjs/exports/utils/index.js.map +0 -1
  334. package/dist/cjs/exports/validation/index.js +0 -11
  335. package/dist/cjs/exports/validation/index.js.map +0 -1
  336. package/dist/cjs/generated.js +0 -7
  337. package/dist/cjs/generated.js.map +0 -1
  338. package/dist/cjs/modules/auth/auth.controller.js +0 -254
  339. package/dist/cjs/modules/auth/auth.controller.js.map +0 -1
  340. package/dist/cjs/modules/auth/auth.router.js +0 -113
  341. package/dist/cjs/modules/auth/auth.router.js.map +0 -1
  342. package/dist/cjs/modules/auth/auth.service.js +0 -277
  343. package/dist/cjs/modules/auth/auth.service.js.map +0 -1
  344. package/dist/cjs/modules/auth/utils/auth-error-objects.js +0 -10
  345. package/dist/cjs/modules/auth/utils/auth-error-objects.js.map +0 -1
  346. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +0 -83
  347. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js.map +0 -1
  348. package/dist/cjs/modules/auth/utils/services/auth-action.service.js +0 -150
  349. package/dist/cjs/modules/auth/utils/services/auth-action.service.js.map +0 -1
  350. package/dist/cjs/modules/base/base.controller.js +0 -275
  351. package/dist/cjs/modules/base/base.controller.js.map +0 -1
  352. package/dist/cjs/modules/base/base.middlewares.js +0 -231
  353. package/dist/cjs/modules/base/base.middlewares.js.map +0 -1
  354. package/dist/cjs/modules/base/base.router.js +0 -112
  355. package/dist/cjs/modules/base/base.router.js.map +0 -1
  356. package/dist/cjs/modules/base/base.service.js +0 -432
  357. package/dist/cjs/modules/base/base.service.js.map +0 -1
  358. package/dist/cjs/modules/base/types/base.service.types.js +0 -3
  359. package/dist/cjs/modules/base/types/base.service.types.js.map +0 -1
  360. package/dist/cjs/modules/base/utils/error-prettifier.js +0 -188
  361. package/dist/cjs/modules/base/utils/error-prettifier.js.map +0 -1
  362. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +0 -49
  363. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js.map +0 -1
  364. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +0 -13
  365. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +0 -1
  366. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +0 -222
  367. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js.map +0 -1
  368. package/dist/cjs/modules/base/utils/router-validator.js +0 -13
  369. package/dist/cjs/modules/base/utils/router-validator.js.map +0 -1
  370. package/dist/cjs/modules/base/utils/service-hooks-manager.js +0 -19
  371. package/dist/cjs/modules/base/utils/service-hooks-manager.js.map +0 -1
  372. package/dist/cjs/modules/debugger/debugger.service.js +0 -59
  373. package/dist/cjs/modules/debugger/debugger.service.js.map +0 -1
  374. package/dist/cjs/modules/email/email.service.js +0 -106
  375. package/dist/cjs/modules/email/email.service.js.map +0 -1
  376. package/dist/cjs/modules/error-handler/error-handler.controller.js +0 -192
  377. package/dist/cjs/modules/error-handler/error-handler.controller.js.map +0 -1
  378. package/dist/cjs/modules/error-handler/utils/app-error.js +0 -28
  379. package/dist/cjs/modules/error-handler/utils/app-error.js.map +0 -1
  380. package/dist/cjs/modules/error-handler/utils/catch-async.js +0 -21
  381. package/dist/cjs/modules/error-handler/utils/catch-async.js.map +0 -1
  382. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +0 -218
  383. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +0 -1
  384. package/dist/cjs/modules/file-upload/file-upload.controller.js +0 -256
  385. package/dist/cjs/modules/file-upload/file-upload.controller.js.map +0 -1
  386. package/dist/cjs/modules/file-upload/file-upload.router.js +0 -80
  387. package/dist/cjs/modules/file-upload/file-upload.router.js.map +0 -1
  388. package/dist/cjs/modules/file-upload/file-upload.service.js +0 -343
  389. package/dist/cjs/modules/file-upload/file-upload.service.js.map +0 -1
  390. package/dist/cjs/modules/file-upload/utils/helpers/file-extensions.js +0 -134
  391. package/dist/cjs/modules/file-upload/utils/helpers/file-extensions.js.map +0 -1
  392. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +0 -100
  393. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js.map +0 -1
  394. package/dist/cjs/modules/swagger/swagger.router.js +0 -65
  395. package/dist/cjs/modules/swagger/swagger.router.js.map +0 -1
  396. package/dist/cjs/modules/swagger/utils/built-in-route-path-object-manager.js +0 -7
  397. package/dist/cjs/modules/swagger/utils/built-in-route-path-object-manager.js.map +0 -1
  398. package/dist/cjs/modules/swagger/utils/helpers/class-validator-to-json-schema.js +0 -53
  399. package/dist/cjs/modules/swagger/utils/helpers/class-validator-to-json-schema.js.map +0 -1
  400. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +0 -473
  401. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +0 -1
  402. package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +0 -491
  403. package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js.map +0 -1
  404. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +0 -73
  405. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +0 -1
  406. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +0 -37
  407. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +0 -1
  408. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +0 -61
  409. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +0 -1
  410. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +0 -31
  411. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +0 -1
  412. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +0 -49
  413. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js.map +0 -1
  414. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +0 -39
  415. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +0 -1
  416. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +0 -468
  417. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +0 -1
  418. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +0 -260
  419. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +0 -1
  420. package/dist/cjs/modules/swagger/utils/helpers/openapi-schema-converter.js +0 -331
  421. package/dist/cjs/modules/swagger/utils/helpers/openapi-schema-converter.js.map +0 -1
  422. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +0 -109
  423. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +0 -1
  424. package/dist/cjs/package.json +0 -3
  425. package/dist/cjs/server.js +0 -60
  426. package/dist/cjs/server.js.map +0 -1
  427. package/dist/cjs/types/arkos-prisma-input.js +0 -3
  428. package/dist/cjs/types/arkos-prisma-input.js.map +0 -1
  429. package/dist/cjs/types/arkos.js +0 -3
  430. package/dist/cjs/types/arkos.js.map +0 -1
  431. package/dist/cjs/types/auth.js +0 -3
  432. package/dist/cjs/types/auth.js.map +0 -1
  433. package/dist/cjs/types/index.js +0 -3
  434. package/dist/cjs/types/index.js.map +0 -1
  435. package/dist/cjs/types/new-arkos-config.js +0 -3
  436. package/dist/cjs/types/new-arkos-config.js.map +0 -1
  437. package/dist/cjs/types/router-config.js +0 -3
  438. package/dist/cjs/types/router-config.js.map +0 -1
  439. package/dist/cjs/utils/arkos-env.js +0 -9
  440. package/dist/cjs/utils/arkos-env.js.map +0 -1
  441. package/dist/cjs/utils/arkos-router/arkos-router-openapi-manager.js +0 -126
  442. package/dist/cjs/utils/arkos-router/arkos-router-openapi-manager.js.map +0 -1
  443. package/dist/cjs/utils/arkos-router/index.js +0 -253
  444. package/dist/cjs/utils/arkos-router/index.js.map +0 -1
  445. package/dist/cjs/utils/arkos-router/route-config-registry.js +0 -16
  446. package/dist/cjs/utils/arkos-router/route-config-registry.js.map +0 -1
  447. package/dist/cjs/utils/arkos-router/route-config-validator.js +0 -56
  448. package/dist/cjs/utils/arkos-router/route-config-validator.js.map +0 -1
  449. package/dist/cjs/utils/arkos-router/types/body-parser-config.js +0 -3
  450. package/dist/cjs/utils/arkos-router/types/body-parser-config.js.map +0 -1
  451. package/dist/cjs/utils/arkos-router/types/index.js +0 -3
  452. package/dist/cjs/utils/arkos-router/types/index.js.map +0 -1
  453. package/dist/cjs/utils/arkos-router/types/openapi-config.js +0 -3
  454. package/dist/cjs/utils/arkos-router/types/openapi-config.js.map +0 -1
  455. package/dist/cjs/utils/arkos-router/types/upload-config.js +0 -3
  456. package/dist/cjs/utils/arkos-router/types/upload-config.js.map +0 -1
  457. package/dist/cjs/utils/arkos-router/utils/helpers/index.js +0 -163
  458. package/dist/cjs/utils/arkos-router/utils/helpers/index.js.map +0 -1
  459. package/dist/cjs/utils/arkos-router/utils/helpers/upload-manager.js +0 -283
  460. package/dist/cjs/utils/arkos-router/utils/helpers/upload-manager.js.map +0 -1
  461. package/dist/cjs/utils/bundler.js +0 -163
  462. package/dist/cjs/utils/bundler.js.map +0 -1
  463. package/dist/cjs/utils/cli/build.js +0 -199
  464. package/dist/cjs/utils/cli/build.js.map +0 -1
  465. package/dist/cjs/utils/cli/dev.js +0 -128
  466. package/dist/cjs/utils/cli/dev.js.map +0 -1
  467. package/dist/cjs/utils/cli/export-auth-action.js +0 -79
  468. package/dist/cjs/utils/cli/export-auth-action.js.map +0 -1
  469. package/dist/cjs/utils/cli/generate.js +0 -229
  470. package/dist/cjs/utils/cli/generate.js.map +0 -1
  471. package/dist/cjs/utils/cli/index.js +0 -191
  472. package/dist/cjs/utils/cli/index.js.map +0 -1
  473. package/dist/cjs/utils/cli/prisma-generate.js +0 -112
  474. package/dist/cjs/utils/cli/prisma-generate.js.map +0 -1
  475. package/dist/cjs/utils/cli/start.js +0 -72
  476. package/dist/cjs/utils/cli/start.js.map +0 -1
  477. package/dist/cjs/utils/cli/utils/cli.helpers.js +0 -24
  478. package/dist/cjs/utils/cli/utils/cli.helpers.js.map +0 -1
  479. package/dist/cjs/utils/cli/utils/runtime-cli-commander.js +0 -115
  480. package/dist/cjs/utils/cli/utils/runtime-cli-commander.js.map +0 -1
  481. package/dist/cjs/utils/cli/utils/smart-fs-watcher.js +0 -73
  482. package/dist/cjs/utils/cli/utils/smart-fs-watcher.js.map +0 -1
  483. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +0 -550
  484. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +0 -1
  485. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -52
  486. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -1
  487. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-multiple-components.js +0 -139
  488. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-multiple-components.js.map +0 -1
  489. package/dist/cjs/utils/cli/utils/template-generator/templates/policy-template.js +0 -53
  490. package/dist/cjs/utils/cli/utils/template-generator/templates/policy-template.js.map +0 -1
  491. package/dist/cjs/utils/cli/utils/template-generator/templates/route-hook.template.js +0 -39
  492. package/dist/cjs/utils/cli/utils/template-generator/templates/route-hook.template.js.map +0 -1
  493. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js +0 -19
  494. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js.map +0 -1
  495. package/dist/cjs/utils/cli/utils/template-generator/templates/service-hook.template.js +0 -32
  496. package/dist/cjs/utils/cli/utils/template-generator/templates/service-hook.template.js.map +0 -1
  497. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js +0 -50
  498. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js.map +0 -1
  499. package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js +0 -351
  500. package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +0 -1
  501. package/dist/cjs/utils/cli/utils/template-generators.js +0 -52
  502. package/dist/cjs/utils/cli/utils/template-generators.js.map +0 -1
  503. package/dist/cjs/utils/cli/utils/watermark-stamper.js +0 -26
  504. package/dist/cjs/utils/cli/utils/watermark-stamper.js.map +0 -1
  505. package/dist/cjs/utils/define-config.js +0 -46
  506. package/dist/cjs/utils/define-config.js.map +0 -1
  507. package/dist/cjs/utils/dotenv.helpers.js +0 -52
  508. package/dist/cjs/utils/dotenv.helpers.js.map +0 -1
  509. package/dist/cjs/utils/dynamic-loader.js +0 -22
  510. package/dist/cjs/utils/dynamic-loader.js.map +0 -1
  511. package/dist/cjs/utils/expand-env.js +0 -72
  512. package/dist/cjs/utils/expand-env.js.map +0 -1
  513. package/dist/cjs/utils/features/api.features.js +0 -201
  514. package/dist/cjs/utils/features/api.features.js.map +0 -1
  515. package/dist/cjs/utils/features/port-and-host-allocator.js +0 -129
  516. package/dist/cjs/utils/features/port-and-host-allocator.js.map +0 -1
  517. package/dist/cjs/utils/helpers/api.features.helpers.js +0 -327
  518. package/dist/cjs/utils/helpers/api.features.helpers.js.map +0 -1
  519. package/dist/cjs/utils/helpers/arkos-config.helpers.js +0 -86
  520. package/dist/cjs/utils/helpers/arkos-config.helpers.js.map +0 -1
  521. package/dist/cjs/utils/helpers/change-case.helpers.js +0 -177
  522. package/dist/cjs/utils/helpers/change-case.helpers.js.map +0 -1
  523. package/dist/cjs/utils/helpers/deepmerge.helper.js +0 -115
  524. package/dist/cjs/utils/helpers/deepmerge.helper.js.map +0 -1
  525. package/dist/cjs/utils/helpers/exit-error.js +0 -12
  526. package/dist/cjs/utils/helpers/exit-error.js.map +0 -1
  527. package/dist/cjs/utils/helpers/fs.helpers.js +0 -60
  528. package/dist/cjs/utils/helpers/fs.helpers.js.map +0 -1
  529. package/dist/cjs/utils/helpers/global.helpers.js +0 -105
  530. package/dist/cjs/utils/helpers/global.helpers.js.map +0 -1
  531. package/dist/cjs/utils/helpers/prisma.helpers.js +0 -53
  532. package/dist/cjs/utils/helpers/prisma.helpers.js.map +0 -1
  533. package/dist/cjs/utils/helpers/query-parser.helpers.js +0 -69
  534. package/dist/cjs/utils/helpers/query-parser.helpers.js.map +0 -1
  535. package/dist/cjs/utils/helpers/routers.helpers.js +0 -36
  536. package/dist/cjs/utils/helpers/routers.helpers.js.map +0 -1
  537. package/dist/cjs/utils/helpers/text.helpers.js +0 -28
  538. package/dist/cjs/utils/helpers/text.helpers.js.map +0 -1
  539. package/dist/cjs/utils/initialize-app.js +0 -55
  540. package/dist/cjs/utils/initialize-app.js.map +0 -1
  541. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +0 -437
  542. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js.map +0 -1
  543. package/dist/cjs/utils/prisma/prisma-schema-parser.js +0 -360
  544. package/dist/cjs/utils/prisma/prisma-schema-parser.js.map +0 -1
  545. package/dist/cjs/utils/prisma/types.js +0 -3
  546. package/dist/cjs/utils/prisma/types.js.map +0 -1
  547. package/dist/cjs/utils/remove-dir.js +0 -14
  548. package/dist/cjs/utils/remove-dir.js.map +0 -1
  549. package/dist/cjs/utils/setup-app.js +0 -119
  550. package/dist/cjs/utils/setup-app.js.map +0 -1
  551. package/dist/cjs/utils/sheu.js +0 -131
  552. package/dist/cjs/utils/sheu.js.map +0 -1
  553. package/dist/cjs/utils/validate-dto.js +0 -19
  554. package/dist/cjs/utils/validate-dto.js.map +0 -1
  555. package/dist/cjs/utils/validate-schema.js +0 -75
  556. package/dist/cjs/utils/validate-schema.js.map +0 -1
  557. package/dist/esm/components/arkos-loadable-translator/index.js +0 -138
  558. package/dist/esm/components/arkos-loadable-translator/index.js.map +0 -1
  559. package/dist/esm/components/arkos-service-hook/index.js +0 -32
  560. package/dist/esm/components/arkos-service-hook/index.js.map +0 -1
  561. package/dist/esm/components/arkos-service-hook/reader.js +0 -24
  562. package/dist/esm/components/arkos-service-hook/reader.js.map +0 -1
  563. package/dist/esm/components/arkos-service-hook/types.js +0 -2
  564. package/dist/esm/components/arkos-service-hook/types.js.map +0 -1
  565. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +0 -10
  566. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +0 -1
  567. package/dist/esm/modules/base/utils/service-hooks-manager.js +0 -17
  568. package/dist/esm/modules/base/utils/service-hooks-manager.js.map +0 -1
  569. package/dist/esm/modules/swagger/utils/built-in-route-path-object-manager.js +0 -5
  570. package/dist/esm/modules/swagger/utils/built-in-route-path-object-manager.js.map +0 -1
  571. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +0 -469
  572. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +0 -1
  573. package/dist/esm/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +0 -485
  574. package/dist/esm/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js.map +0 -1
  575. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +0 -34
  576. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +0 -1
  577. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +0 -55
  578. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +0 -1
  579. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +0 -25
  580. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +0 -1
  581. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +0 -46
  582. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js.map +0 -1
  583. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +0 -33
  584. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +0 -1
  585. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +0 -462
  586. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +0 -1
  587. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +0 -255
  588. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +0 -1
  589. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +0 -98
  590. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +0 -1
  591. package/dist/esm/utils/cli/utils/template-generator/templates/route-hook.template.js +0 -36
  592. package/dist/esm/utils/cli/utils/template-generator/templates/route-hook.template.js.map +0 -1
  593. package/dist/esm/utils/cli/utils/template-generator/templates/service-hook.template.js +0 -29
  594. package/dist/esm/utils/cli/utils/template-generator/templates/service-hook.template.js.map +0 -1
  595. package/dist/types/components/arkos-loadable-translator/index.d.ts +0 -53
  596. package/dist/types/components/arkos-service-hook/index.d.ts +0 -41
  597. package/dist/types/components/arkos-service-hook/reader.d.ts +0 -35
  598. package/dist/types/components/arkos-service-hook/types.d.ts +0 -240
  599. package/dist/types/modules/base/utils/helpers/base.router.helpers.d.ts +0 -3
  600. package/dist/types/modules/base/utils/service-hooks-manager.d.ts +0 -10
  601. package/dist/types/modules/swagger/utils/built-in-route-path-object-manager.d.ts +0 -4
  602. package/dist/types/modules/swagger/utils/helpers/get-authentication-json-schema-paths.d.ts +0 -5
  603. package/dist/types/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.d.ts +0 -3
  604. package/dist/types/modules/swagger/utils/helpers/get-system-json-schema-paths.d.ts +0 -2
  605. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.d.ts +0 -1
  606. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.d.ts +0 -1
  607. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.d.ts +0 -4
  608. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.d.ts +0 -1
  609. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.d.ts +0 -2
  610. package/dist/types/modules/swagger/utils/helpers/missing-json-schemas-generator.d.ts +0 -76
  611. package/dist/types/modules/swagger/utils/helpers/swagger.router.helpers.d.ts +0 -19
  612. package/dist/types/utils/cli/utils/template-generator/templates/route-hook.template.d.ts +0 -2
  613. package/dist/types/utils/cli/utils/template-generator/templates/service-hook.template.d.ts +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"class-validator-dto-generator.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/class-validator-dto-generator.ts"],"names":[],"mappings":"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","sourcesContent":["import prismaSchemaParser from \"../../../../prisma/prisma-schema-parser\";\nimport { PrismaField, PrismaModel } from \"../../../../prisma/types\";\nimport { getUserFileExtension } from \"../../../../helpers/fs.helpers\";\nimport { TemplateOptions } from \"../../template-generators\";\n\nexport class ClassValidatorDtoGenerator {\n private ensureCorrectOptions(options: TemplateOptions) {\n const { modelName } = options;\n if (!modelName) throw new Error(\"Module name is required for DTO template\");\n const model = prismaSchemaParser.models.find(\n (m) => m.name.toLowerCase() === modelName.pascal.toLowerCase()\n );\n if (!model)\n throw new Error(`Model ${modelName.pascal} not found in Prisma schema`);\n return model;\n }\n\n generateCreateDto(options: TemplateOptions): string {\n const { modelName } = options;\n const model = this.ensureCorrectOptions(options);\n\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n const restrictedFields = [\n \"id\",\n \"createdAt\",\n \"updatedAt\",\n \"deletedAt\",\n \"created_at\",\n \"updated_at\",\n \"deleted_at\",\n ];\n const isUserModule = modelName!.kebab === \"user\";\n const enumsUsed = new Set<string>();\n const validatorsUsed = new Set<string>();\n const transformersUsed = new Set<string>();\n const nestedDtoClasses: string[] = [];\n\n let dtoFields: string[] = [];\n\n for (const field of model.fields) {\n if (field.isId || restrictedFields.includes(field.name)) {\n continue;\n }\n\n const isForeignKey = model.fields.some(\n (f) => f.foreignKeyField === field.name\n );\n if (isForeignKey) {\n continue;\n }\n\n if (field.isRelation) {\n if (field.isArray) continue;\n\n const referencedModel = prismaSchemaParser.models.find(\n (m) => m.name === field.type\n );\n\n if (referencedModel) {\n const isOptional =\n field.isOptional || field.defaultValue !== undefined;\n const optionalDecorator = \" @IsOptional()\\n\";\n const typeModifier = isTypeScript ? (isOptional ? \"?\" : \"!\") : \"\";\n\n if (isOptional) validatorsUsed.add(\"IsOptional\");\n\n if (field.type === \"String\") validatorsUsed.add(\"IsNotEmpty\");\n validatorsUsed.add(\"ValidateNested\");\n transformersUsed.add(\"Type\");\n\n const relationDtoName = `${referencedModel.name}ForCreate${modelName!.pascal}Dto`;\n\n const nestedDtoClass = this.generateNestedDtoClass(\n field,\n referencedModel,\n relationDtoName,\n validatorsUsed,\n enumsUsed,\n isTypeScript\n );\n\n if (!dtoFields.find((dtoField) => dtoField.includes(relationDtoName)))\n nestedDtoClasses.push(nestedDtoClass);\n\n dtoFields.push(\n `${optionalDecorator} @ValidateNested()\\n @Type(() => ${relationDtoName})\\n ${field.name}${typeModifier}: ${relationDtoName};`\n );\n }\n continue;\n }\n\n if (prismaSchemaParser.isEnum(field.type)) {\n enumsUsed.add(field.type);\n }\n\n const { decorators, type } = this.generateClassValidatorField(\n field,\n isUserModule,\n validatorsUsed\n );\n const isOptional = field.isOptional || field.defaultValue !== undefined;\n const typeModifier = isTypeScript ? (isOptional ? \"?\" : \"!\") : \"\";\n dtoFields.push(`${decorators} ${field.name}${typeModifier}: ${type};`);\n }\n\n const enumImports =\n enumsUsed.size > 0\n ? `import { ${Array.from(enumsUsed).join(\", \")} } from \"@prisma/client\";\\n`\n : \"\";\n\n const validatorImports =\n validatorsUsed.size > 0\n ? `import { ${Array.from(validatorsUsed).join(\", \")} } from \"class-validator\";\\n`\n : \"\";\n\n const transformerImports =\n transformersUsed.size > 0\n ? `import { ${Array.from(transformersUsed).join(\", \")} } from \"class-transformer\";\\n`\n : \"\";\n\n const nestedDtoSection =\n nestedDtoClasses.length > 0 ? `\\n${nestedDtoClasses.join(\"\\n\\n\")}\\n` : \"\";\n\n return `${validatorImports}${transformerImports}${enumImports}${nestedDtoSection}\nexport default class Create${modelName!.pascal}Dto {\n${dtoFields.join(\"\\n\\n\")}\n}`;\n }\n\n generateUpdateDto(options: TemplateOptions): string {\n const { modelName } = options;\n const model = this.ensureCorrectOptions(options);\n\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n const restrictedFields = [\"id\", \"createdAt\", \"updatedAt\", \"deletedAt\"];\n const isUserModule = modelName!.kebab === \"user\";\n const enumsUsed = new Set<string>();\n const validatorsUsed = new Set<string>();\n const transformersUsed = new Set<string>();\n const nestedDtoClasses: string[] = [];\n\n let dtoFields: string[] = [];\n\n for (const field of model.fields) {\n if (field.isId || restrictedFields.includes(field.name)) {\n continue;\n }\n\n const isForeignKey = model.fields.some(\n (f) => f.foreignKeyField === field.name\n );\n if (isForeignKey) {\n continue;\n }\n\n if (field.isRelation) {\n if (field.isArray) continue;\n\n const referencedModel = prismaSchemaParser.models.find(\n (m) => m.name === field.type\n );\n\n if (referencedModel) {\n validatorsUsed.add(\"IsOptional\");\n validatorsUsed.add(\"ValidateNested\");\n if (field.type === \"String\") validatorsUsed.add(\"IsNotEmpty\");\n transformersUsed.add(\"Type\");\n\n const relationDtoName = `${referencedModel.name}ForUpdate${modelName!.pascal}Dto`;\n\n const nestedDtoClass = this.generateNestedDtoClass(\n field,\n referencedModel,\n relationDtoName,\n validatorsUsed,\n enumsUsed,\n isTypeScript\n );\n\n if (!dtoFields.find((dtoField) => dtoField.includes(relationDtoName)))\n nestedDtoClasses.push(nestedDtoClass);\n\n const typeModifier = isTypeScript ? \"?\" : \"\";\n dtoFields.push(\n ` @IsOptional()\\n @ValidateNested()\\n @Type(() => ${relationDtoName})\\n ${field.name}${typeModifier}: ${relationDtoName};`\n );\n }\n continue;\n }\n\n if (prismaSchemaParser.isEnum(field.type)) {\n enumsUsed.add(field.type);\n }\n\n const { decorators, type } = this.generateClassValidatorFieldForUpdate(\n field,\n isUserModule,\n validatorsUsed\n );\n const typeModifier = isTypeScript ? \"?\" : \"\";\n dtoFields.push(`${decorators} ${field.name}${typeModifier}: ${type};`);\n }\n\n const enumImports =\n enumsUsed.size > 0\n ? `import { ${Array.from(enumsUsed).join(\", \")} } from \"@prisma/client\";\\n`\n : \"\";\n\n const validatorImports =\n validatorsUsed.size > 0\n ? `import { ${Array.from(validatorsUsed).join(\", \")} } from \"class-validator\";\\n`\n : \"\";\n\n const transformerImports =\n transformersUsed.size > 0\n ? `import { ${Array.from(transformersUsed).join(\", \")} } from \"class-transformer\";\\n`\n : \"\";\n\n const nestedDtoSection =\n nestedDtoClasses.length > 0 ? `\\n${nestedDtoClasses.join(\"\\n\\n\")}\\n` : \"\";\n\n return `${validatorImports}${transformerImports}${enumImports}${nestedDtoSection}\nexport default class Update${modelName!.pascal}Dto {\n${dtoFields.join(\"\\n\\n\")}\n}`;\n }\n\n generateBaseDto(options: TemplateOptions): string {\n const { modelName } = options;\n const model = this.ensureCorrectOptions(options);\n\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n const isUserModule = modelName!.kebab === \"user\";\n const enumsUsed = new Set<string>();\n const validatorsUsed = new Set<string>();\n const transformersUsed = new Set<string>();\n\n let dtoFields: string[] = [];\n\n for (const field of model.fields) {\n if (isUserModule && field.name === \"password\") {\n continue;\n }\n\n if (field.isRelation) {\n continue;\n }\n\n if (prismaSchemaParser.isEnum(field.type)) {\n enumsUsed.add(field.type);\n }\n\n const { decorators, type } = this.generateClassValidatorField(\n field,\n isUserModule,\n validatorsUsed\n );\n const isOptional = field.isOptional;\n const typeModifier = isTypeScript ? (isOptional ? \"?\" : \"!\") : \"\";\n dtoFields.push(`${decorators} ${field.name}${typeModifier}: ${type};`);\n }\n\n const enumImports =\n enumsUsed.size > 0\n ? `import { ${Array.from(enumsUsed).join(\", \")} } from \"@prisma/client\";\\n`\n : \"\";\n\n const validatorImports =\n validatorsUsed.size > 0\n ? `import { ${Array.from(validatorsUsed).join(\", \")} } from \"class-validator\";\\n`\n : \"\";\n\n const transformerImports =\n transformersUsed.size > 0\n ? `import { ${Array.from(transformersUsed).join(\", \")} } from \"class-transformer\";\\n`\n : \"\";\n\n return `${validatorImports}${transformerImports}${enumImports}\nexport default class ${modelName!.pascal}Dto {\n${dtoFields.join(\"\\n\\n\")}\n}`;\n }\n\n generateQueryDto(options: TemplateOptions): string {\n const { modelName } = options;\n const model = this.ensureCorrectOptions(options);\n\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n const isUserModule = modelName!.kebab === \"user\";\n const enumsUsed = new Set<string>();\n const validatorsUsed = new Set<string>();\n const transformersUsed = new Set<string>();\n const filterClassesNeeded = new Set<string>();\n const nestedDtoClasses: string[] = [];\n const restrictedFields = [\"id\"];\n const timestampFields = [\n \"createdAt\",\n \"updatedAt\",\n \"deletedAt\",\n \"created_at\",\n \"updated_at\",\n \"deleted_at\",\n ];\n\n validatorsUsed.add(\"IsOptional\");\n validatorsUsed.add(\"IsString\");\n validatorsUsed.add(\"IsNumber\");\n validatorsUsed.add(\"ValidateNested\");\n validatorsUsed.add(\"Max\");\n validatorsUsed.add(\"IsNotEmpty\");\n transformersUsed.add(\"Type\");\n transformersUsed.add(\"Transform\");\n\n let dtoFields: string[] = [];\n let timestampDtoFields: string[] = [];\n const typeModifier = isTypeScript ? \"?\" : \"\";\n\n dtoFields.push(\n ` @IsOptional()\\n @IsNumber()\\n @Transform(({ value }) => (value ? Number(value) : undefined))\\n page${typeModifier}: number;`\n );\n dtoFields.push(\n ` @IsOptional()\\n @IsNumber()\\n @Max(100)\\n @Transform(({ value }) => (value ? Number(value) : undefined))\\n limit${typeModifier}: number;`\n );\n dtoFields.push(\n ` @IsOptional()\\n @IsNotEmpty()\\n @IsString()\\n @Type(() => String)\\n sort${typeModifier}: string;`\n );\n dtoFields.push(\n ` @IsOptional()\\n @IsNotEmpty()\\n @IsString()\\n @Type(() => String)\\n fields${typeModifier}: string;`\n );\n\n for (const field of model.fields) {\n if (isUserModule && field.name === \"password\") continue;\n if (restrictedFields.includes(field.name)) continue;\n\n const isForeignKey = model.fields.some(\n (f) => f.foreignKeyField === field.name\n );\n if (isForeignKey) continue;\n\n if (field.isRelation) {\n if (field.isArray) continue;\n\n const referencedModel = prismaSchemaParser.models.find(\n (m) => m.name === field.type\n );\n\n if (referencedModel) {\n validatorsUsed.add(\"ValidateNested\");\n transformersUsed.add(\"Type\");\n\n const relationDtoName = `${referencedModel.name}ForQuery${modelName!.pascal}Dto`;\n\n const nestedDtoClass = this.generateNestedDtoClass(\n field,\n referencedModel,\n relationDtoName,\n validatorsUsed,\n enumsUsed,\n isTypeScript\n );\n\n if (\n !dtoFields.find((dtoField) => dtoField.includes(relationDtoName)) &&\n !timestampDtoFields.find((dtoField) =>\n dtoField.includes(relationDtoName)\n )\n ) {\n nestedDtoClasses.push(nestedDtoClass);\n }\n\n const fieldDef = ` @IsOptional()\\n @ValidateNested()\\n @Type(() => ${relationDtoName})\\n ${field.name}${typeModifier}: ${relationDtoName};`;\n\n if (timestampFields.includes(field.name)) {\n timestampDtoFields.push(fieldDef);\n } else {\n dtoFields.push(fieldDef);\n }\n }\n continue;\n }\n\n if (prismaSchemaParser.isEnum(field.type)) {\n enumsUsed.add(field.type);\n validatorsUsed.add(\"IsEnum\");\n\n const enumType = field.type;\n const fieldDef = ` @IsOptional()\\n @IsEnum(${enumType})\\n ${field.name}${typeModifier}: ${enumType};`;\n\n if (timestampFields.includes(field.name)) {\n timestampDtoFields.push(fieldDef);\n } else {\n dtoFields.push(fieldDef);\n }\n continue;\n }\n\n if (field.type === \"Boolean\") {\n validatorsUsed.add(\"IsBoolean\");\n\n const fieldDef = ` @IsOptional()\\n @IsBoolean()\\n ${field.name}${typeModifier}: boolean;`;\n\n if (timestampFields.includes(field.name)) {\n timestampDtoFields.push(fieldDef);\n } else {\n dtoFields.push(fieldDef);\n }\n continue;\n }\n\n const filterType = this.getFilterTypeForField(field, enumsUsed);\n if (filterType) {\n filterClassesNeeded.add(filterType);\n const fieldDef = ` @IsOptional()\\n @ValidateNested()\\n @Type(() => ${filterType})\\n ${field.name}${typeModifier}: ${filterType};`;\n\n if (timestampFields.includes(field.name)) {\n timestampDtoFields.push(fieldDef);\n } else {\n dtoFields.push(fieldDef);\n }\n }\n }\n\n if (filterClassesNeeded.has(\"StringFilter\")) {\n validatorsUsed.add(\"IsString\");\n }\n if (filterClassesNeeded.has(\"NumberFilter\")) {\n validatorsUsed.add(\"IsNumber\");\n }\n if (filterClassesNeeded.has(\"DateTimeFilter\")) {\n validatorsUsed.add(\"IsString\");\n }\n\n const enumImports =\n enumsUsed.size > 0\n ? `import { ${Array.from(enumsUsed).join(\", \")} } from \"@prisma/client\";\\n`\n : \"\";\n\n const validatorImports =\n validatorsUsed.size > 0\n ? `import { ${Array.from(validatorsUsed).join(\", \")} } from \"class-validator\";\\n`\n : \"\";\n\n const transformerImports =\n transformersUsed.size > 0\n ? `import { ${Array.from(transformersUsed).join(\", \")} } from \"class-transformer\";\\n`\n : \"\";\n\n const filterClasses = this.generateFilterClasses(\n filterClassesNeeded,\n enumsUsed,\n validatorsUsed,\n isTypeScript\n );\n\n const filterClassesSection = filterClasses ? `\\n${filterClasses}\\n` : \"\";\n\n const nestedDtoSection =\n nestedDtoClasses.length > 0 ? `\\n${nestedDtoClasses.join(\"\\n\\n\")}\\n` : \"\";\n\n const allFields = [...dtoFields, ...timestampDtoFields];\n\n return `${validatorImports}${transformerImports}${enumImports}${filterClassesSection}${nestedDtoSection}\nexport default class ${modelName!.pascal}QueryDto {\n${allFields.join(\"\\n\\n\")}\n}`;\n }\n\n private getFilterTypeForField(\n field: PrismaField,\n enumsUsed: Set<string>\n ): string | null {\n if (prismaSchemaParser.isEnum(field.type)) {\n enumsUsed.add(field.type);\n return `${field.type}Filter`;\n }\n\n switch (field.type) {\n case \"String\":\n return \"StringFilter\";\n case \"Int\":\n case \"Float\":\n case \"Decimal\":\n case \"BigInt\":\n return \"NumberFilter\";\n case \"DateTime\":\n return \"DateTimeFilter\";\n default:\n return null;\n }\n }\n\n private generateFilterClasses(\n filterClassesNeeded: Set<string>,\n _: Set<string>,\n _1: Set<string>,\n isTypeScript: boolean\n ): string {\n const classes: string[] = [];\n const typeModifier = isTypeScript ? \"?\" : \"\";\n\n if (filterClassesNeeded.has(\"StringFilter\")) {\n classes.push(`class StringFilter {\n @IsOptional()\n @IsString()\n @Type(() => String)\n icontains${typeModifier}: string;\n}`);\n }\n\n if (filterClassesNeeded.has(\"NumberFilter\")) {\n classes.push(`class NumberFilter {\n @IsOptional()\n @IsNumber()\n @Transform(({ value }) => (value ? Number(value) : undefined))\n equals${typeModifier}: number;\n\n @IsOptional()\n @IsNumber()\n @Transform(({ value }) => (value ? Number(value) : undefined))\n gte${typeModifier}: number;\n\n @IsOptional()\n @IsNumber()\n @Transform(({ value }) => (value ? Number(value) : undefined))\n lte${typeModifier}: number;\n}`);\n }\n\n if (filterClassesNeeded.has(\"DateTimeFilter\")) {\n classes.push(`class DateTimeFilter {\n @IsOptional()\n @IsString()\n @Type(() => String)\n equals${typeModifier}: string;\n\n @IsOptional()\n @IsString()\n @Type(() => String)\n gte${typeModifier}: string;\n\n @IsOptional()\n @IsString()\n @Type(() => String)\n lte${typeModifier}: string;\n}`);\n }\n\n return classes.join(\"\\n\\n\");\n }\n\n private generateNestedDtoClass(\n field: PrismaField,\n referencedModel: PrismaModel,\n dtoName: string,\n validatorsUsed: Set<string>,\n enumsUsed: Set<string>,\n isTypeScript: boolean\n ): string {\n const fields: string[] = [];\n\n const refFieldName = field.foreignReferenceField || \"id\";\n const refFieldAsPrismaField = referencedModel.fields.find(\n (f) => f.name === refFieldName\n );\n\n if (refFieldAsPrismaField) {\n if (prismaSchemaParser.isEnum(refFieldAsPrismaField.type))\n enumsUsed.add(refFieldAsPrismaField.type);\n\n const { decorators, type } = this.generateClassValidatorField(\n refFieldAsPrismaField,\n false,\n validatorsUsed\n );\n const typeModifier = isTypeScript ? \"!\" : \"\";\n fields.push(\n `${decorators} ${refFieldAsPrismaField.name}${typeModifier}: ${type};`\n );\n }\n\n return `class ${dtoName} {\n${fields.join(\"\\n\\n\")}\n}`;\n }\n\n private generateClassValidatorField(\n field: PrismaField,\n isUserModule: boolean,\n validatorsUsed: Set<string>\n ): { decorators: string; type: string } {\n let decorators: string[] = [];\n let type = this.mapPrismaTypeToTS(field.type);\n\n const isOptional = field.isOptional || field.defaultValue !== undefined;\n if (isOptional) {\n decorators.push(\"@IsOptional()\");\n validatorsUsed.add(\"IsOptional\");\n }\n\n if (field.type === \"String\") {\n if (field.isArray) decorators.push(\"@IsNotEmpty({ each: true })\");\n else decorators.push(\"@IsNotEmpty()\");\n validatorsUsed.add(\"IsNotEmpty\");\n }\n\n if (field.isArray) {\n decorators.push(\"@IsArray()\");\n validatorsUsed.add(\"IsArray\");\n type = `${type}[]`;\n }\n\n if (prismaSchemaParser.isEnum(field.type)) {\n decorators.push(\n `@IsEnum(${field.type}${field.isArray ? \", { each: true }\" : \"\"})`\n );\n validatorsUsed.add(\"IsEnum\");\n type = field.isArray ? `${field.type}[]` : field.type;\n } else {\n const fieldValidators = this.getValidatorsForType(field, isUserModule);\n decorators.push(...fieldValidators);\n fieldValidators.forEach((decorator) => {\n const validatorName = decorator.match(/@(\\w+)/)?.[1];\n if (validatorName) validatorsUsed.add(validatorName);\n });\n }\n\n return {\n decorators:\n decorators.map((d) => ` ${d}`).join(\"\\n\") +\n (decorators.length > 0 ? \"\\n\" : \"\"),\n type,\n };\n }\n\n private generateClassValidatorFieldForUpdate(\n field: PrismaField,\n isUserModule: boolean,\n validatorsUsed: Set<string>\n ): { decorators: string; type: string } {\n let decorators: string[] = [];\n let type = this.mapPrismaTypeToTS(field.type);\n\n decorators.push(\"@IsOptional()\");\n validatorsUsed.add(\"IsOptional\");\n\n if (field.type === \"String\") {\n if (field.isArray) decorators.push(\"@IsNotEmpty({ each: true })\");\n else decorators.push(\"@IsNotEmpty()\");\n validatorsUsed.add(\"IsNotEmpty\");\n }\n\n if (field.isArray) {\n decorators.push(\"@IsArray()\");\n validatorsUsed.add(\"IsArray\");\n type = `${type}[]`;\n }\n\n if (prismaSchemaParser.isEnum(field.type)) {\n decorators.push(\n `@IsEnum(${field.type}${field.isArray ? \", { each: true }\" : \"\"})`\n );\n validatorsUsed.add(\"IsEnum\");\n type = field.isArray ? `${field.type}[]` : field.type;\n } else {\n const fieldValidators = this.getValidatorsForType(field, isUserModule);\n decorators.push(...fieldValidators);\n fieldValidators.forEach((decorator) => {\n const validatorName = decorator.match(/@(\\w+)/)?.[1];\n if (validatorName) validatorsUsed.add(validatorName);\n });\n }\n\n return {\n decorators:\n decorators.map((d) => ` ${d}`).join(\"\\n\") +\n (decorators.length > 0 ? \"\\n\" : \"\"),\n type,\n };\n }\n\n private getValidatorsForType(\n field: PrismaField,\n isUserModule: boolean\n ): string[] {\n const validators: string[] = [];\n const arrayEach = field.isArray ? \"{ each: true }\" : \"\";\n\n if (isUserModule) {\n if (field.name === \"email\") {\n return [\"@IsEmail()\"];\n } else if (field.name === \"password\") {\n return [\n \"@IsString()\",\n \"@MinLength(8)\",\n '@Matches(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)/, { message: \"Password must contain at least one uppercase letter, one lowercase letter, and one number\" })',\n ];\n }\n }\n\n switch (field.type) {\n case \"String\":\n validators.push(`@IsString(${arrayEach})`);\n break;\n case \"Int\":\n case \"Float\":\n case \"Decimal\":\n validators.push(`@IsNumber(${arrayEach})`);\n break;\n case \"Boolean\":\n validators.push(`@IsBoolean(${arrayEach})`);\n break;\n case \"DateTime\":\n validators.push(`@IsDate(${arrayEach})`);\n break;\n case \"BigInt\":\n validators.push(`@IsNumber(${arrayEach})`);\n break;\n case \"Json\":\n validators.push(`@IsObject(${arrayEach})`);\n break;\n case \"Bytes\":\n break;\n default:\n break;\n }\n\n return validators;\n }\n\n private mapPrismaTypeToTS(prismaType: string): string {\n switch (prismaType) {\n case \"String\":\n return \"string\";\n case \"Int\":\n case \"Float\":\n case \"Decimal\":\n return \"number\";\n case \"Boolean\":\n return \"boolean\";\n case \"DateTime\":\n return \"Date\";\n case \"Json\":\n return \"any\";\n case \"Bytes\":\n return \"Buffer\";\n case \"BigInt\":\n return \"bigint\";\n default:\n return prismaSchemaParser.isEnum(prismaType) ? prismaType : \"any\";\n }\n }\n}\n\nconst classValidatorDtoGenerator = new ClassValidatorDtoGenerator();\n\nexport default classValidatorDtoGenerator;\n"]}
1
+ {"version":3,"file":"class-validator-dto-generator.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/class-validator-dto-generator.ts"],"names":[],"mappings":"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","sourcesContent":["import prismaSchemaParser from \"../../../../prisma/prisma-schema-parser\";\nimport { PrismaField, PrismaModel } from \"../../../../prisma/types\";\nimport { getUserFileExtension } from \"../../../../helpers/fs.helpers\";\nimport { TemplateOptions } from \"../../template-generators\";\nimport { getArkosConfig } from \"../../../../helpers/arkos-config.helpers\";\n\nexport class ClassValidatorDtoGenerator {\n private ensureCorrectOptions(options: TemplateOptions) {\n const { modelName } = options;\n if (!modelName) throw new Error(\"Module name is required for DTO template\");\n const model = prismaSchemaParser.models.find(\n (m) => m.name.toLowerCase() === modelName.pascal.toLowerCase()\n );\n if (!model)\n throw new Error(`Model ${modelName.pascal} not found in Prisma schema`);\n return model;\n }\n\n generateCreateDto(options: TemplateOptions): string {\n const { modelName } = options;\n const model = this.ensureCorrectOptions(options);\n\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n const restrictedFields = [\n \"id\",\n \"createdAt\",\n \"updatedAt\",\n \"deletedAt\",\n \"created_at\",\n \"updated_at\",\n \"deleted_at\",\n ];\n const isUserModule = modelName!.kebab === \"user\";\n const enumsUsed = new Set<string>();\n const validatorsUsed = new Set<string>();\n const transformersUsed = new Set<string>();\n const nestedDtoClasses: string[] = [];\n\n let dtoFields: string[] = [];\n\n for (const field of model.fields) {\n if (field.isId || restrictedFields.includes(field.name)) {\n continue;\n }\n\n const isForeignKey = model.fields.some(\n (f) => f.foreignKeyField === field.name\n );\n if (isForeignKey) {\n continue;\n }\n\n if (field.isCompositeType) {\n const compositeType = prismaSchemaParser.compositeTypes.find(\n (t) => t.name === field.type\n )!;\n const compositeDtoName = `${field.type}ForCreate${modelName!.pascal}Dto`;\n\n validatorsUsed.add(\"ValidateNested\");\n transformersUsed.add(\"Type\");\n\n if (\n !nestedDtoClasses.find((c) => c.includes(`class ${compositeDtoName}`))\n ) {\n const nestedFields = compositeType.fields.map((f) => {\n const { decorators, type } = this.generateClassValidatorField(\n f,\n false,\n validatorsUsed,\n transformersUsed\n );\n const mod = isTypeScript ? (f.isOptional ? \"?\" : \"!\") : \"\";\n return `${decorators} ${f.name}${mod}: ${type};`;\n });\n nestedDtoClasses.push(\n `class ${compositeDtoName} {\\n${nestedFields.join(\"\\n\\n\")}\\n}`\n );\n }\n\n const isOptional = field.isOptional || field.defaultValue !== undefined;\n if (isOptional) validatorsUsed.add(\"IsOptional\");\n const optDecorator = isOptional ? \" @IsOptional()\\n\" : \"\";\n const mod = isTypeScript ? (isOptional ? \"?\" : \"!\") : \"\";\n const eachOpt = field.isArray ? \"{ each: true }\" : \"\";\n const typeStr = field.isArray\n ? `${compositeDtoName}[]`\n : compositeDtoName;\n\n if (field.isArray) validatorsUsed.add(\"IsArray\");\n\n dtoFields.push(\n `${optDecorator}${field.isArray ? \" @IsArray()\\n\" : \"\"} @ValidateNested(${eachOpt})\\n @Type(() => ${compositeDtoName})\\n ${field.name}${mod}: ${typeStr};`\n );\n continue;\n }\n\n if (field.isRelation) {\n if (field.isArray) continue;\n\n const referencedModel = prismaSchemaParser.models.find(\n (m) => m.name === field.type\n );\n\n if (referencedModel) {\n const isOptional =\n field.isOptional || field.defaultValue !== undefined;\n const optionalDecorator = \" @IsOptional()\\n\";\n const typeModifier = isTypeScript ? (isOptional ? \"?\" : \"!\") : \"\";\n\n if (isOptional) validatorsUsed.add(\"IsOptional\");\n\n if (field.type === \"String\") validatorsUsed.add(\"IsNotEmpty\");\n validatorsUsed.add(\"ValidateNested\");\n transformersUsed.add(\"Type\");\n\n const relationDtoName = `${referencedModel.name}ForCreate${modelName!.pascal}Dto`;\n\n const nestedDtoClass = this.generateNestedDtoClass(\n field,\n referencedModel,\n relationDtoName,\n validatorsUsed,\n enumsUsed,\n isTypeScript,\n transformersUsed\n );\n\n if (!dtoFields.find((dtoField) => dtoField.includes(relationDtoName)))\n nestedDtoClasses.push(nestedDtoClass);\n\n dtoFields.push(\n `${optionalDecorator} @ValidateNested()\\n @Type(() => ${relationDtoName})\\n ${field.name}${typeModifier}: ${relationDtoName};`\n );\n }\n continue;\n }\n\n if (prismaSchemaParser.isEnum(field.type)) {\n enumsUsed.add(field.type);\n }\n\n const { decorators, type } = this.generateClassValidatorField(\n field,\n isUserModule,\n validatorsUsed,\n transformersUsed\n );\n const isOptional = field.isOptional || field.defaultValue !== undefined;\n const typeModifier = isTypeScript ? (isOptional ? \"?\" : \"!\") : \"\";\n dtoFields.push(`${decorators} ${field.name}${typeModifier}: ${type};`);\n }\n\n const enumImports =\n enumsUsed.size > 0\n ? `import { ${Array.from(enumsUsed).join(\", \")} } from \"@prisma/client\";\\n`\n : \"\";\n\n const validatorImports =\n validatorsUsed.size > 0\n ? `import { ${Array.from(validatorsUsed).join(\", \")} } from \"class-validator\";\\n`\n : \"\";\n\n const transformerImports =\n transformersUsed.size > 0\n ? `import { ${Array.from(transformersUsed).join(\", \")} } from \"class-transformer\";\\n`\n : \"\";\n\n const nestedDtoSection =\n nestedDtoClasses.length > 0 ? `\\n${nestedDtoClasses.join(\"\\n\\n\")}\\n` : \"\";\n\n return `${validatorImports}${transformerImports}${enumImports}${nestedDtoSection}\nexport default class Create${modelName!.pascal}Dto {\n${dtoFields.join(\"\\n\\n\")}\n}`;\n }\n\n generateUpdateDto(options: TemplateOptions): string {\n const { modelName } = options;\n const model = this.ensureCorrectOptions(options);\n\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n const restrictedFields = [\"id\", \"createdAt\", \"updatedAt\", \"deletedAt\"];\n const isUserModule = modelName!.kebab === \"user\";\n const enumsUsed = new Set<string>();\n const validatorsUsed = new Set<string>();\n const transformersUsed = new Set<string>();\n const nestedDtoClasses: string[] = [];\n\n let dtoFields: string[] = [];\n\n for (const field of model.fields) {\n if (field.isId || restrictedFields.includes(field.name)) {\n continue;\n }\n\n const isForeignKey = model.fields.some(\n (f) => f.foreignKeyField === field.name\n );\n if (isForeignKey) {\n continue;\n }\n\n if (field.isCompositeType) {\n const compositeType = prismaSchemaParser.compositeTypes.find(\n (t) => t.name === field.type\n )!;\n const compositeDtoName = `${field.type}ForUpdate${modelName!.pascal}Dto`;\n\n validatorsUsed.add(\"ValidateNested\");\n validatorsUsed.add(\"IsOptional\");\n transformersUsed.add(\"Type\");\n\n if (\n !nestedDtoClasses.find((c) => c.includes(`class ${compositeDtoName}`))\n ) {\n const nestedFields = compositeType.fields.map((f) => {\n const { decorators, type } =\n this.generateClassValidatorFieldForUpdate(\n f,\n false,\n validatorsUsed,\n transformersUsed\n );\n const mod = isTypeScript ? \"?\" : \"\";\n return `${decorators} ${f.name}${mod}: ${type};`;\n });\n nestedDtoClasses.push(\n `class ${compositeDtoName} {\\n${nestedFields.join(\"\\n\\n\")}\\n}`\n );\n }\n\n if (field.isArray) validatorsUsed.add(\"IsArray\");\n\n const eachOpt = field.isArray ? \"{ each: true }\" : \"\";\n const typeStr = field.isArray\n ? `${compositeDtoName}[]`\n : compositeDtoName;\n\n dtoFields.push(\n ` @IsOptional()\\n${field.isArray ? \" @IsArray()\\n\" : \"\"} @ValidateNested(${eachOpt})\\n @Type(() => ${compositeDtoName})\\n ${field.name}?: ${typeStr};`\n );\n continue;\n }\n\n if (field.isRelation) {\n if (field.isArray) continue;\n\n const referencedModel = prismaSchemaParser.models.find(\n (m) => m.name === field.type\n );\n\n if (referencedModel) {\n validatorsUsed.add(\"IsOptional\");\n validatorsUsed.add(\"ValidateNested\");\n if (field.type === \"String\") validatorsUsed.add(\"IsNotEmpty\");\n transformersUsed.add(\"Type\");\n\n const relationDtoName = `${referencedModel.name}ForUpdate${modelName!.pascal}Dto`;\n\n const nestedDtoClass = this.generateNestedDtoClass(\n field,\n referencedModel,\n relationDtoName,\n validatorsUsed,\n enumsUsed,\n isTypeScript,\n transformersUsed\n );\n\n if (!dtoFields.find((dtoField) => dtoField.includes(relationDtoName)))\n nestedDtoClasses.push(nestedDtoClass);\n\n const typeModifier = isTypeScript ? \"?\" : \"\";\n dtoFields.push(\n ` @IsOptional()\\n @ValidateNested()\\n @Type(() => ${relationDtoName})\\n ${field.name}${typeModifier}: ${relationDtoName};`\n );\n }\n continue;\n }\n\n if (prismaSchemaParser.isEnum(field.type)) {\n enumsUsed.add(field.type);\n }\n\n const { decorators, type } = this.generateClassValidatorFieldForUpdate(\n field,\n isUserModule,\n validatorsUsed,\n transformersUsed\n );\n const typeModifier = isTypeScript ? \"?\" : \"\";\n dtoFields.push(`${decorators} ${field.name}${typeModifier}: ${type};`);\n }\n\n const enumImports =\n enumsUsed.size > 0\n ? `import { ${Array.from(enumsUsed).join(\", \")} } from \"@prisma/client\";\\n`\n : \"\";\n\n const validatorImports =\n validatorsUsed.size > 0\n ? `import { ${Array.from(validatorsUsed).join(\", \")} } from \"class-validator\";\\n`\n : \"\";\n\n const transformerImports =\n transformersUsed.size > 0\n ? `import { ${Array.from(transformersUsed).join(\", \")} } from \"class-transformer\";\\n`\n : \"\";\n\n const nestedDtoSection =\n nestedDtoClasses.length > 0 ? `\\n${nestedDtoClasses.join(\"\\n\\n\")}\\n` : \"\";\n\n return `${validatorImports}${transformerImports}${enumImports}${nestedDtoSection}\nexport default class Update${modelName!.pascal}Dto {\n${dtoFields.join(\"\\n\\n\")}\n}`;\n }\n\n generateBaseDto(options: TemplateOptions): string {\n const { modelName } = options;\n const model = this.ensureCorrectOptions(options);\n\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n const isUserModule = modelName!.kebab === \"user\";\n const enumsUsed = new Set<string>();\n const validatorsUsed = new Set<string>();\n const transformersUsed = new Set<string>();\n\n let dtoFields: string[] = [];\n\n for (const field of model.fields) {\n if (isUserModule && field.name === \"password\") {\n continue;\n }\n\n if (field.isRelation) {\n continue;\n }\n\n if (prismaSchemaParser.isEnum(field.type)) {\n enumsUsed.add(field.type);\n }\n\n const { decorators, type } = this.generateClassValidatorField(\n field,\n isUserModule,\n validatorsUsed,\n transformersUsed\n );\n const isOptional = field.isOptional;\n const typeModifier = isTypeScript ? (isOptional ? \"?\" : \"!\") : \"\";\n dtoFields.push(`${decorators} ${field.name}${typeModifier}: ${type};`);\n }\n\n const enumImports =\n enumsUsed.size > 0\n ? `import { ${Array.from(enumsUsed).join(\", \")} } from \"@prisma/client\";\\n`\n : \"\";\n\n const validatorImports =\n validatorsUsed.size > 0\n ? `import { ${Array.from(validatorsUsed).join(\", \")} } from \"class-validator\";\\n`\n : \"\";\n\n const transformerImports =\n transformersUsed.size > 0\n ? `import { ${Array.from(transformersUsed).join(\", \")} } from \"class-transformer\";\\n`\n : \"\";\n\n return `${validatorImports}${transformerImports}${enumImports}\nexport default class ${modelName!.pascal}Dto {\n${dtoFields.join(\"\\n\\n\")}\n}`;\n }\n\n generateQueryDto(options: TemplateOptions): string {\n const { modelName } = options;\n const model = this.ensureCorrectOptions(options);\n\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n const isUserModule = modelName!.kebab === \"user\";\n const enumsUsed = new Set<string>();\n const validatorsUsed = new Set<string>();\n const transformersUsed = new Set<string>();\n const filterClassesNeeded = new Set<string>();\n const nestedDtoClasses: string[] = [];\n const restrictedFields = [\"id\"];\n const timestampFields = [\n \"createdAt\",\n \"updatedAt\",\n \"deletedAt\",\n \"created_at\",\n \"updated_at\",\n \"deleted_at\",\n ];\n\n validatorsUsed.add(\"IsOptional\");\n validatorsUsed.add(\"IsString\");\n validatorsUsed.add(\"IsNumber\");\n validatorsUsed.add(\"ValidateNested\");\n validatorsUsed.add(\"Max\");\n validatorsUsed.add(\"IsNotEmpty\");\n transformersUsed.add(\"Type\");\n transformersUsed.add(\"Transform\");\n\n let dtoFields: string[] = [];\n let timestampDtoFields: string[] = [];\n const typeModifier = isTypeScript ? \"?\" : \"\";\n\n dtoFields.push(\n ` @IsOptional()\\n @IsNumber()\\n @Transform(({ value }) => (value ? Number(value) : undefined))\\n page${typeModifier}: number;`\n );\n dtoFields.push(\n ` @IsOptional()\\n @IsNumber()\\n @Max(100)\\n @Transform(({ value }) => (value ? Number(value) : undefined))\\n limit${typeModifier}: number;`\n );\n dtoFields.push(\n ` @IsOptional()\\n @IsNotEmpty()\\n @IsString()\\n @Type(() => String)\\n sort${typeModifier}: string;`\n );\n dtoFields.push(\n ` @IsOptional()\\n @IsNotEmpty()\\n @IsString()\\n @Type(() => String)\\n fields${typeModifier}: string;`\n );\n\n for (const field of model.fields) {\n if (isUserModule && field.name === \"password\") continue;\n if (restrictedFields.includes(field.name)) continue;\n\n const isForeignKey = model.fields.some(\n (f) => f.foreignKeyField === field.name\n );\n if (isForeignKey) continue;\n\n if (field.isRelation) {\n if (field.isArray) continue;\n\n const referencedModel = prismaSchemaParser.models.find(\n (m) => m.name === field.type\n );\n\n if (referencedModel) {\n validatorsUsed.add(\"ValidateNested\");\n transformersUsed.add(\"Type\");\n\n const relationDtoName = `${referencedModel.name}ForQuery${modelName!.pascal}Dto`;\n\n const nestedDtoClass = this.generateNestedDtoClass(\n field,\n referencedModel,\n relationDtoName,\n validatorsUsed,\n enumsUsed,\n isTypeScript,\n transformersUsed\n );\n\n if (\n !dtoFields.find((dtoField) => dtoField.includes(relationDtoName)) &&\n !timestampDtoFields.find((dtoField) =>\n dtoField.includes(relationDtoName)\n )\n ) {\n nestedDtoClasses.push(nestedDtoClass);\n }\n\n const fieldDef = ` @IsOptional()\\n @ValidateNested()\\n @Type(() => ${relationDtoName})\\n ${field.name}${typeModifier}: ${relationDtoName};`;\n\n if (timestampFields.includes(field.name)) {\n timestampDtoFields.push(fieldDef);\n } else {\n dtoFields.push(fieldDef);\n }\n }\n continue;\n }\n\n if (prismaSchemaParser.isEnum(field.type)) {\n enumsUsed.add(field.type);\n validatorsUsed.add(\"IsEnum\");\n\n const enumType = field.type;\n const fieldDef = ` @IsOptional()\\n @IsEnum(${enumType})\\n ${field.name}${typeModifier}: ${enumType};`;\n\n if (timestampFields.includes(field.name)) {\n timestampDtoFields.push(fieldDef);\n } else {\n dtoFields.push(fieldDef);\n }\n continue;\n }\n\n if (field.type === \"Boolean\") {\n validatorsUsed.add(\"IsBoolean\");\n transformersUsed.add(\"Transform\");\n\n const fieldDef = ` @IsOptional()\\n @Transform(({ value }) => value === true || value === \"true\" || value === 1 || value === \"1\")\\n @IsBoolean()\\n ${field.name}${typeModifier}: boolean;`;\n\n if (timestampFields.includes(field.name)) {\n timestampDtoFields.push(fieldDef);\n } else {\n dtoFields.push(fieldDef);\n }\n continue;\n }\n\n const filterType = this.getFilterTypeForField(field, enumsUsed);\n if (filterType) {\n filterClassesNeeded.add(filterType);\n const fieldDef = ` @IsOptional()\\n @ValidateNested()\\n @Type(() => ${filterType})\\n ${field.name}${typeModifier}: ${filterType};`;\n\n if (timestampFields.includes(field.name)) {\n timestampDtoFields.push(fieldDef);\n } else {\n dtoFields.push(fieldDef);\n }\n }\n }\n\n if (filterClassesNeeded.has(\"StringFilter\")) {\n validatorsUsed.add(\"IsString\");\n }\n if (filterClassesNeeded.has(\"NumberFilter\")) {\n validatorsUsed.add(\"IsNumber\");\n }\n if (filterClassesNeeded.has(\"DateTimeFilter\")) {\n validatorsUsed.add(\"IsString\");\n }\n\n const enumImports =\n enumsUsed.size > 0\n ? `import { ${Array.from(enumsUsed).join(\", \")} } from \"@prisma/client\";\\n`\n : \"\";\n\n const validatorImports =\n validatorsUsed.size > 0\n ? `import { ${Array.from(validatorsUsed).join(\", \")} } from \"class-validator\";\\n`\n : \"\";\n\n const transformerImports =\n transformersUsed.size > 0\n ? `import { ${Array.from(transformersUsed).join(\", \")} } from \"class-transformer\";\\n`\n : \"\";\n\n const filterClasses = this.generateFilterClasses(\n filterClassesNeeded,\n enumsUsed,\n validatorsUsed,\n isTypeScript\n );\n\n const filterClassesSection = filterClasses ? `\\n${filterClasses}\\n` : \"\";\n\n const nestedDtoSection =\n nestedDtoClasses.length > 0 ? `\\n${nestedDtoClasses.join(\"\\n\\n\")}\\n` : \"\";\n\n const allFields = [...dtoFields, ...timestampDtoFields];\n\n return `${validatorImports}${transformerImports}${enumImports}${filterClassesSection}${nestedDtoSection}\nexport default class ${modelName!.pascal}QueryDto {\n${allFields.join(\"\\n\\n\")}\n}`;\n }\n\n private getFilterTypeForField(\n field: PrismaField,\n enumsUsed: Set<string>\n ): string | null {\n if (prismaSchemaParser.isEnum(field.type)) {\n enumsUsed.add(field.type);\n return `${field.type}Filter`;\n }\n\n switch (field.type) {\n case \"String\":\n return \"StringFilter\";\n case \"Int\":\n case \"Float\":\n case \"Decimal\":\n case \"BigInt\":\n return \"NumberFilter\";\n case \"DateTime\":\n return \"DateTimeFilter\";\n default:\n return null;\n }\n }\n\n private generateFilterClasses(\n filterClassesNeeded: Set<string>,\n _: Set<string>,\n _1: Set<string>,\n isTypeScript: boolean\n ): string {\n const classes: string[] = [];\n const typeModifier = isTypeScript ? \"?\" : \"\";\n\n if (filterClassesNeeded.has(\"StringFilter\")) {\n classes.push(`class StringFilter {\n @IsOptional()\n @IsString()\n @Type(() => String)\n icontains${typeModifier}: string;\n}`);\n }\n\n if (filterClassesNeeded.has(\"NumberFilter\")) {\n classes.push(`class NumberFilter {\n @IsOptional()\n @IsNumber()\n @Transform(({ value }) => (value ? Number(value) : undefined))\n equals${typeModifier}: number;\n\n @IsOptional()\n @IsNumber()\n @Transform(({ value }) => (value ? Number(value) : undefined))\n gte${typeModifier}: number;\n\n @IsOptional()\n @IsNumber()\n @Transform(({ value }) => (value ? Number(value) : undefined))\n lte${typeModifier}: number;\n}`);\n }\n\n if (filterClassesNeeded.has(\"DateTimeFilter\")) {\n classes.push(`class DateTimeFilter {\n @IsOptional()\n @IsString()\n @Type(() => String)\n equals${typeModifier}: string;\n\n @IsOptional()\n @IsString()\n @Type(() => String)\n gte${typeModifier}: string;\n\n @IsOptional()\n @IsString()\n @Type(() => String)\n lte${typeModifier}: string;\n}`);\n }\n\n return classes.join(\"\\n\\n\");\n }\n\n private generateNestedDtoClass(\n field: PrismaField,\n referencedModel: PrismaModel,\n dtoName: string,\n validatorsUsed: Set<string>,\n enumsUsed: Set<string>,\n isTypeScript: boolean,\n transformersUsed: Set<string>\n ): string {\n const fields: string[] = [];\n\n const refFieldName = field.foreignReferenceField || \"id\";\n const refFieldAsPrismaField = referencedModel.fields.find(\n (f) => f.name === refFieldName\n );\n\n if (refFieldAsPrismaField) {\n if (prismaSchemaParser.isEnum(refFieldAsPrismaField.type))\n enumsUsed.add(refFieldAsPrismaField.type);\n\n const { decorators, type } = this.generateClassValidatorField(\n refFieldAsPrismaField,\n false,\n validatorsUsed,\n transformersUsed\n );\n const typeModifier = isTypeScript ? \"!\" : \"\";\n fields.push(\n `${decorators} ${refFieldAsPrismaField.name}${typeModifier}: ${type};`\n );\n }\n\n return `class ${dtoName} {\n${fields.join(\"\\n\\n\")}\n}`;\n }\n\n /**\n * Builds a @Transform decorator that coerces raw incoming values\n * (e.g. strings from multipart/form-data or query params) into the\n * correct native type before class-validator runs its checks.\n * Mirrors the z.coerce.* behavior used in the Zod schema generator.\n */\n private generateTransformDecorator(field: PrismaField): string | null {\n const isArray = field.isArray;\n\n switch (field.type) {\n case \"Int\":\n case \"Float\":\n case \"Decimal\":\n return isArray\n ? `@Transform(({ value }) => (Array.isArray(value) ? value.map((v: any) => (v !== undefined && v !== null && v !== \"\" ? Number(v) : v)) : value))`\n : `@Transform(({ value }) => (value !== undefined && value !== null && value !== \"\" ? Number(value) : value))`;\n\n case \"BigInt\":\n return isArray\n ? `@Transform(({ value }) => (Array.isArray(value) ? value.map((v: any) => (v !== undefined && v !== null && v !== \"\" ? BigInt(v) : v)) : value))`\n : `@Transform(({ value }) => (value !== undefined && value !== null && value !== \"\" ? BigInt(value) : value))`;\n\n case \"Boolean\":\n return isArray\n ? `@Transform(({ value }) => (Array.isArray(value) ? value.map((v: any) => v === true || v === \"true\" || v === 1 || v === \"1\") : value))`\n : `@Transform(({ value }) => value === true || value === \"true\" || value === 1 || value === \"1\")`;\n\n case \"DateTime\":\n return isArray\n ? `@Transform(({ value }) => (Array.isArray(value) ? value.map((v: any) => (v ? new Date(v) : v)) : value))`\n : `@Transform(({ value }) => (value ? new Date(value) : value))`;\n\n default:\n return null;\n }\n }\n\n private generateClassValidatorField(\n field: PrismaField,\n isUserModule: boolean,\n validatorsUsed: Set<string>,\n transformersUsed: Set<string>\n ): { decorators: string; type: string } {\n let decorators: string[] = [];\n let type = this.mapPrismaTypeToTS(field.type);\n\n const isOptional = field.isOptional || field.defaultValue !== undefined;\n if (isOptional) {\n decorators.push(\"@IsOptional()\");\n validatorsUsed.add(\"IsOptional\");\n }\n\n if (field.type === \"String\") {\n if (field.isArray) decorators.push(\"@IsNotEmpty({ each: true })\");\n else decorators.push(\"@IsNotEmpty()\");\n validatorsUsed.add(\"IsNotEmpty\");\n }\n\n if (field.isArray) {\n decorators.push(\"@IsArray()\");\n validatorsUsed.add(\"IsArray\");\n type = `${type}[]`;\n }\n\n if (prismaSchemaParser.isEnum(field.type)) {\n decorators.push(\n `@IsEnum(${field.type}${field.isArray ? \", { each: true }\" : \"\"})`\n );\n validatorsUsed.add(\"IsEnum\");\n type = field.isArray ? `${field.type}[]` : field.type;\n } else {\n const transformDecorator = this.generateTransformDecorator(field);\n if (transformDecorator) {\n decorators.push(transformDecorator);\n transformersUsed.add(\"Transform\");\n }\n\n const fieldValidators = this.getValidatorsForType(field, isUserModule);\n decorators.push(...fieldValidators);\n fieldValidators.forEach((decorator) => {\n const validatorName = decorator.match(/@(\\w+)/)?.[1];\n if (validatorName) validatorsUsed.add(validatorName);\n });\n }\n\n return {\n decorators:\n decorators.map((d) => ` ${d}`).join(\"\\n\") +\n (decorators.length > 0 ? \"\\n\" : \"\"),\n type,\n };\n }\n\n private generateClassValidatorFieldForUpdate(\n field: PrismaField,\n isUserModule: boolean,\n validatorsUsed: Set<string>,\n transformersUsed: Set<string>\n ): { decorators: string; type: string } {\n let decorators: string[] = [];\n let type = this.mapPrismaTypeToTS(field.type);\n\n decorators.push(\"@IsOptional()\");\n validatorsUsed.add(\"IsOptional\");\n\n if (field.type === \"String\") {\n if (field.isArray) decorators.push(\"@IsNotEmpty({ each: true })\");\n else decorators.push(\"@IsNotEmpty()\");\n validatorsUsed.add(\"IsNotEmpty\");\n }\n\n if (field.isArray) {\n decorators.push(\"@IsArray()\");\n validatorsUsed.add(\"IsArray\");\n type = `${type}[]`;\n }\n\n if (prismaSchemaParser.isEnum(field.type)) {\n decorators.push(\n `@IsEnum(${field.type}${field.isArray ? \", { each: true }\" : \"\"})`\n );\n validatorsUsed.add(\"IsEnum\");\n type = field.isArray ? `${field.type}[]` : field.type;\n } else {\n const transformDecorator = this.generateTransformDecorator(field);\n if (transformDecorator) {\n decorators.push(transformDecorator);\n transformersUsed.add(\"Transform\");\n }\n\n const fieldValidators = this.getValidatorsForType(field, isUserModule);\n decorators.push(...fieldValidators);\n fieldValidators.forEach((decorator) => {\n const validatorName = decorator.match(/@(\\w+)/)?.[1];\n if (validatorName) validatorsUsed.add(validatorName);\n });\n }\n\n return {\n decorators:\n decorators.map((d) => ` ${d}`).join(\"\\n\") +\n (decorators.length > 0 ? \"\\n\" : \"\"),\n type,\n };\n }\n\n private getValidatorsForType(\n field: PrismaField,\n isUserModule: boolean\n ): string[] {\n const validators: string[] = [];\n const arrayEach = field.isArray ? \"{ each: true }\" : \"\";\n\n if (isUserModule) {\n if (field.name === \"email\") {\n return [\"@IsEmail()\"];\n } else if (field.name === \"password\") {\n return [\n \"@IsString()\",\n \"@MinLength(8)\",\n '@Matches(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)/, { message: \"Password must contain at least one uppercase letter, one lowercase letter, and one number\" })',\n ];\n }\n }\n\n switch (field.type) {\n case \"String\":\n validators.push(`@IsString(${arrayEach})`);\n break;\n case \"Int\":\n case \"Float\":\n case \"Decimal\":\n validators.push(`@IsNumber(${arrayEach})`);\n break;\n case \"Boolean\":\n validators.push(`@IsBoolean(${arrayEach})`);\n break;\n case \"DateTime\":\n validators.push(`@IsDate(${arrayEach})`);\n break;\n case \"BigInt\":\n validators.push(`@IsNumber(${arrayEach})`);\n break;\n case \"Json\":\n validators.push(`@IsObject(${arrayEach})`);\n break;\n case \"Bytes\":\n break;\n default:\n break;\n }\n\n return validators;\n }\n\n private mapPrismaTypeToTS(prismaType: string): string {\n switch (prismaType) {\n case \"String\":\n return \"string\";\n case \"Int\":\n case \"Float\":\n case \"Decimal\":\n return \"number\";\n case \"Boolean\":\n return \"boolean\";\n case \"DateTime\":\n return \"Date\";\n case \"Json\":\n return \"any\";\n case \"Bytes\":\n return \"Buffer\";\n case \"BigInt\":\n return \"bigint\";\n default:\n if (\n prismaSchemaParser.compositeTypes.some((t) => t.name === prismaType)\n )\n return prismaType;\n return prismaSchemaParser.isEnum(prismaType) ? prismaType : \"any\";\n }\n }\n\n generateLoginDto(_: TemplateOptions): string {\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n const allowedUsernames = getArkosConfig()?.authentication?.login\n ?.allowedUsernames || [\"username\"];\n\n const usernameFields = allowedUsernames.map((field: string) => {\n const displayName = field.includes(\".\") ? field.split(\".\").pop()! : field;\n const typeModifier = isTypeScript ? \"?\" : \"\";\n const emailDecorator =\n displayName === \"email\" ? \"\\n @IsEmail()\" : \"\\n @IsString()\";\n return ` @IsOptional()${emailDecorator}\\n ${displayName}${typeModifier}: string;`;\n });\n\n const validatorsUsed = new Set([\n \"IsOptional\",\n \"IsNotEmpty\",\n \"IsString\",\n \"MinLength\",\n \"Matches\",\n ]);\n const hasEmail = allowedUsernames.some(\n (f: string) => (f.includes(\".\") ? f.split(\".\").pop() : f) === \"email\"\n );\n if (hasEmail) validatorsUsed.add(\"IsEmail\");\n\n const typeModifier = isTypeScript ? \"!\" : \"\";\n\n return `import { ${Array.from(validatorsUsed).join(\", \")} } from \"class-validator\";\n\nexport default class LoginDto {\n${usernameFields.join(\"\\n\\n\")}\n\n @IsNotEmpty()\n @IsString()\n @MinLength(8)\n @Matches(/[a-z]/, { message: \"Must contain lowercase\" })\n @Matches(/[A-Z]/, { message: \"Must contain uppercase\" })\n @Matches(/[0-9]/, { message: \"Must contain number\" })\n password${typeModifier}: string;\n}\n`;\n }\n\n generateSignupDto(_: TemplateOptions): string {\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n\n const userModel = prismaSchemaParser.models.find(\n (m) => m.name.toLowerCase() === \"user\"\n );\n if (!userModel) throw new Error(\"User model not found in Prisma schema\");\n\n const restrictedFields = [\n \"id\",\n \"createdAt\",\n \"updatedAt\",\n \"deletedAt\",\n \"roles\",\n \"role\",\n \"isActive\",\n \"isStaff\",\n \"isSuperUser\",\n \"passwordChangedAt\",\n \"deletedSelfAccountAt\",\n \"lastLoginAt\",\n ];\n\n const enumsUsed = new Set<string>();\n const validatorsUsed = new Set<string>();\n const transformersUsed = new Set<string>();\n const nestedDtoClasses: string[] = [];\n const dtoFields: string[] = [];\n\n for (const field of userModel.fields) {\n const isForeignKey = userModel.fields.some(\n (f) => f.foreignKeyField === field.name\n );\n if (field.isId || restrictedFields.includes(field.name) || isForeignKey)\n continue;\n\n if (field.isRelation) {\n if (field.isArray) continue;\n const referencedModel = prismaSchemaParser.models.find(\n (m) => m.name === field.type\n );\n if (referencedModel) {\n const isOptional =\n field.isOptional || field.defaultValue !== undefined;\n if (isOptional) validatorsUsed.add(\"IsOptional\");\n validatorsUsed.add(\"ValidateNested\");\n transformersUsed.add(\"Type\");\n const relationDtoName = `${referencedModel.name}ForSignupDto`;\n const nestedDtoClass = this.generateNestedDtoClass(\n field,\n referencedModel,\n relationDtoName,\n validatorsUsed,\n enumsUsed,\n isTypeScript,\n transformersUsed\n );\n if (!dtoFields.find((d) => d.includes(relationDtoName)))\n nestedDtoClasses.push(nestedDtoClass);\n const typeModifier = isTypeScript ? (isOptional ? \"?\" : \"!\") : \"\";\n dtoFields.push(\n ` ${isOptional ? \"@IsOptional()\\n \" : \"\"}@ValidateNested()\\n @Type(() => ${relationDtoName})\\n ${field.name}${typeModifier}: ${relationDtoName};`\n );\n }\n continue;\n }\n\n if (prismaSchemaParser.isEnum(field.type)) enumsUsed.add(field.type);\n\n if (field.name === \"password\") {\n validatorsUsed.add(\"IsNotEmpty\");\n validatorsUsed.add(\"IsString\");\n validatorsUsed.add(\"MinLength\");\n validatorsUsed.add(\"Matches\");\n const typeModifier = isTypeScript ? \"!\" : \"\";\n dtoFields.push(\n ` @IsNotEmpty()\\n @IsString()\\n @MinLength(8)\\n @Matches(/[a-z]/, { message: \"Must contain lowercase\" })\\n @Matches(/[A-Z]/, { message: \"Must contain uppercase\" })\\n @Matches(/[0-9]/, { message: \"Must contain number\" })\\n ${field.name}${typeModifier}: string;`\n );\n continue;\n }\n\n const { decorators, type } = this.generateClassValidatorField(\n field,\n true,\n validatorsUsed,\n transformersUsed\n );\n const isOptional = field.isOptional || field.defaultValue !== undefined;\n const typeModifier = isTypeScript ? (isOptional ? \"?\" : \"!\") : \"\";\n dtoFields.push(`${decorators} ${field.name}${typeModifier}: ${type};`);\n }\n\n const enumImports =\n enumsUsed.size > 0\n ? `import { ${Array.from(enumsUsed).join(\", \")} } from \"@prisma/client\";\\n`\n : \"\";\n const validatorImports =\n validatorsUsed.size > 0\n ? `import { ${Array.from(validatorsUsed).join(\", \")} } from \"class-validator\";\\n`\n : \"\";\n const transformerImports =\n transformersUsed.size > 0\n ? `import { ${Array.from(transformersUsed).join(\", \")} } from \"class-transformer\";\\n`\n : \"\";\n const nestedDtoSection =\n nestedDtoClasses.length > 0 ? `\\n${nestedDtoClasses.join(\"\\n\\n\")}\\n` : \"\";\n\n return `${validatorImports}${transformerImports}${enumImports}${nestedDtoSection}\nexport default class SignupDto {\n${dtoFields.join(\"\\n\\n\")}\n}\n`;\n }\n\n generateUpdateMeDto(_: TemplateOptions): string {\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n\n const userModel = prismaSchemaParser.models.find(\n (m) => m.name.toLowerCase() === \"user\"\n );\n if (!userModel) throw new Error(\"User model not found in Prisma schema\");\n\n const restrictedFields = [\n \"id\",\n \"createdAt\",\n \"updatedAt\",\n \"deletedAt\",\n \"roles\",\n \"role\",\n \"isActive\",\n \"isStaff\",\n \"isSuperUser\",\n \"passwordChangedAt\",\n \"deletedSelfAccountAt\",\n \"lastLoginAt\",\n \"password\",\n ];\n\n const enumsUsed = new Set<string>();\n const validatorsUsed = new Set<string>();\n const transformersUsed = new Set<string>();\n const nestedDtoClasses: string[] = [];\n const dtoFields: string[] = [];\n\n for (const field of userModel.fields) {\n const isForeignKey = userModel.fields.some(\n (f) => f.foreignKeyField === field.name\n );\n if (field.isId || restrictedFields.includes(field.name) || isForeignKey)\n continue;\n\n if (field.isRelation) {\n if (field.isArray) continue;\n const referencedModel = prismaSchemaParser.models.find(\n (m) => m.name === field.type\n );\n if (referencedModel) {\n validatorsUsed.add(\"IsOptional\");\n validatorsUsed.add(\"ValidateNested\");\n transformersUsed.add(\"Type\");\n const relationDtoName = `${referencedModel.name}ForUpdateMeDto`;\n const nestedDtoClass = this.generateNestedDtoClass(\n field,\n referencedModel,\n relationDtoName,\n validatorsUsed,\n enumsUsed,\n isTypeScript,\n transformersUsed\n );\n if (!dtoFields.find((d) => d.includes(relationDtoName)))\n nestedDtoClasses.push(nestedDtoClass);\n const typeModifier = isTypeScript ? \"?\" : \"\";\n dtoFields.push(\n ` @IsOptional()\\n @ValidateNested()\\n @Type(() => ${relationDtoName})\\n ${field.name}${typeModifier}: ${relationDtoName};`\n );\n }\n continue;\n }\n\n if (prismaSchemaParser.isEnum(field.type)) enumsUsed.add(field.type);\n\n const { decorators, type } = this.generateClassValidatorFieldForUpdate(\n field,\n true,\n validatorsUsed,\n transformersUsed\n );\n const typeModifier = isTypeScript ? \"?\" : \"\";\n dtoFields.push(`${decorators} ${field.name}${typeModifier}: ${type};`);\n }\n\n const enumImports =\n enumsUsed.size > 0\n ? `import { ${Array.from(enumsUsed).join(\", \")} } from \"@prisma/client\";\\n`\n : \"\";\n const validatorImports =\n validatorsUsed.size > 0\n ? `import { ${Array.from(validatorsUsed).join(\", \")} } from \"class-validator\";\\n`\n : \"\";\n const transformerImports =\n transformersUsed.size > 0\n ? `import { ${Array.from(transformersUsed).join(\", \")} } from \"class-transformer\";\\n`\n : \"\";\n const nestedDtoSection =\n nestedDtoClasses.length > 0 ? `\\n${nestedDtoClasses.join(\"\\n\\n\")}\\n` : \"\";\n\n return `${validatorImports}${transformerImports}${enumImports}${nestedDtoSection}\nexport default class UpdateMeDto {\n${dtoFields.join(\"\\n\\n\")}\n}\n`;\n }\n\n generateUpdatePasswordDto(_: TemplateOptions): string {\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n const typeModifier = isTypeScript ? \"!\" : \"\";\n\n return `import { IsNotEmpty, IsString, MinLength, Matches } from \"class-validator\";\n\nexport default class UpdatePasswordDto {\n @IsNotEmpty()\n @IsString()\n currentPassword${typeModifier}: string;\n\n @IsNotEmpty()\n @IsString()\n @MinLength(8)\n @Matches(/[a-z]/, { message: \"Must contain lowercase\" })\n @Matches(/[A-Z]/, { message: \"Must contain uppercase\" })\n @Matches(/[0-9]/, { message: \"Must contain number\" })\n newPassword${typeModifier}: string;\n}\n`;\n }\n}\n\nconst classValidatorDtoGenerator = new ClassValidatorDtoGenerator();\n\nexport default classValidatorDtoGenerator;\n"]}
@@ -1,13 +1,17 @@
1
- import { kebabPrismaModels } from "../../../generate.js";
1
+ import prismaSchemaParser from "../../../../prisma/prisma-schema-parser.js";
2
+ import { kebabCase } from "../../../../helpers/change-case.helpers.js";
2
3
  export function generateControllerTemplate(options) {
3
4
  const { modelName, imports } = options;
4
5
  if (!modelName)
5
6
  throw new Error("Module name is required for controller template");
6
- const camelName = modelName.camel.toLowerCase();
7
+ const camelName = modelName.camel;
7
8
  let controllerType;
8
9
  let controllerName;
9
10
  let controllerImport;
10
- if (camelName === "fileupload") {
11
+ const models = prismaSchemaParser
12
+ .getModelsAsArrayOfStrings()
13
+ .map((val) => kebabCase(val));
14
+ if (camelName === "fileUpload") {
11
15
  controllerType = "fileUpload";
12
16
  controllerName = "FileUploadController";
13
17
  controllerImport = imports?.fileUploadController || "arkos/controllers";
@@ -22,15 +26,20 @@ export function generateControllerTemplate(options) {
22
26
  controllerName = "EmailController";
23
27
  controllerImport = imports?.emailController || "arkos/controllers";
24
28
  }
25
- else {
29
+ else if (models.includes(modelName.kebab)) {
26
30
  controllerType = "base";
27
31
  controllerName = "BaseController";
28
32
  controllerImport = imports?.baseController || "arkos/controllers";
29
33
  }
34
+ else {
35
+ controllerType = "custom";
36
+ controllerName = "BaseController";
37
+ controllerImport = imports?.baseController || "arkos/controllers";
38
+ }
30
39
  const controllerClassImport = `import { ${controllerName} } from "${controllerImport}";`;
31
- if (["email", "auth"].includes(camelName) ||
32
- !kebabPrismaModels.includes(modelName.kebab))
33
- return `export class ${modelName.pascal}Controller {}
40
+ if (["email", "auth", "fileUpload"].includes(camelName) ||
41
+ !models.includes(modelName.kebab))
42
+ return `class ${modelName.pascal}Controller {}
34
43
 
35
44
  const ${modelName.camel}Controller = new ${modelName.pascal}Controller(${controllerType === "base" ? `"${modelName.kebab}"` : ""});
36
45
 
@@ -1 +1 @@
1
- {"version":3,"file":"generate-controller-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/generate-controller-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,MAAM,UAAU,0BAA0B,CAAC,OAAwB;IACjE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAEvC,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAErE,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAChD,IAAI,cAAwD,CAAC;IAC7D,IAAI,cAAsB,CAAC;IAC3B,IAAI,gBAAwB,CAAC;IAE7B,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QAC/B,cAAc,GAAG,YAAY,CAAC;QAC9B,cAAc,GAAG,sBAAsB,CAAC;QACxC,gBAAgB,GAAG,OAAO,EAAE,oBAAoB,IAAI,mBAAmB,CAAC;IAC1E,CAAC;SAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QAChC,cAAc,GAAG,MAAM,CAAC;QACxB,cAAc,GAAG,gBAAgB,CAAC;QAClC,gBAAgB,GAAG,OAAO,EAAE,cAAc,IAAI,mBAAmB,CAAC;IACpE,CAAC;SAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QACjC,cAAc,GAAG,OAAO,CAAC;QACzB,cAAc,GAAG,iBAAiB,CAAC;QACnC,gBAAgB,GAAG,OAAO,EAAE,eAAe,IAAI,mBAAmB,CAAC;IACrE,CAAC;SAAM,CAAC;QACN,cAAc,GAAG,MAAM,CAAC;QACxB,cAAc,GAAG,gBAAgB,CAAC;QAClC,gBAAgB,GAAG,OAAO,EAAE,cAAc,IAAI,mBAAmB,CAAC;IACpE,CAAC;IAED,MAAM,qBAAqB,GAAG,YAAY,cAAc,YAAY,gBAAgB,IAAI,CAAC;IAEzF,IACE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;QACrC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;QAE5C,OAAO,gBAAgB,SAAS,CAAC,MAAM;;QAEnC,SAAS,CAAC,KAAK,oBAAoB,SAAS,CAAC,MAAM,cAAc,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;;iBAE/G,SAAS,CAAC,KAAK;CAC/B,CAAC;;QAEE,OAAO,GAAG,qBAAqB;;eAEpB,SAAS,CAAC,MAAM,sBAAsB,cAAc;;QAE3D,SAAS,CAAC,KAAK,oBAAoB,SAAS,CAAC,MAAM,cAAc,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;;iBAE/G,SAAS,CAAC,KAAK;CAC/B,CAAC;AACF,CAAC","sourcesContent":["import { kebabPrismaModels } from \"../../../generate\";\nimport { TemplateOptions } from \"../../template-generators\";\n\nexport function generateControllerTemplate(options: TemplateOptions): string {\n const { modelName, imports } = options;\n\n if (!modelName)\n throw new Error(\"Module name is required for controller template\");\n\n const camelName = modelName.camel.toLowerCase();\n let controllerType: \"fileUpload\" | \"auth\" | \"email\" | \"base\";\n let controllerName: string;\n let controllerImport: string;\n\n if (camelName === \"fileupload\") {\n controllerType = \"fileUpload\";\n controllerName = \"FileUploadController\";\n controllerImport = imports?.fileUploadController || \"arkos/controllers\";\n } else if (camelName === \"auth\") {\n controllerType = \"auth\";\n controllerName = \"AuthController\";\n controllerImport = imports?.authController || \"arkos/controllers\";\n } else if (camelName === \"email\") {\n controllerType = \"email\";\n controllerName = \"EmailController\";\n controllerImport = imports?.emailController || \"arkos/controllers\";\n } else {\n controllerType = \"base\";\n controllerName = \"BaseController\";\n controllerImport = imports?.baseController || \"arkos/controllers\";\n }\n\n const controllerClassImport = `import { ${controllerName} } from \"${controllerImport}\";`;\n\n if (\n [\"email\", \"auth\"].includes(camelName) ||\n !kebabPrismaModels.includes(modelName.kebab)\n )\n return `export class ${modelName.pascal}Controller {}\n\nconst ${modelName.camel}Controller = new ${modelName.pascal}Controller(${controllerType === \"base\" ? `\"${modelName.kebab}\"` : \"\"});\n\nexport default ${modelName.camel}Controller;\n`;\n else\n return `${controllerClassImport}\n \nexport class ${modelName.pascal}Controller extends ${controllerName} {}\n\nconst ${modelName.camel}Controller = new ${modelName.pascal}Controller(${controllerType === \"base\" ? `\"${modelName.kebab}\"` : \"\"});\n\nexport default ${modelName.camel}Controller;\n`;\n}\n"]}
1
+ {"version":3,"file":"generate-controller-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/generate-controller-template.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,MAAM,UAAU,0BAA0B,CAAC,OAAwB;IACjE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAEvC,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAErE,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC;IAClC,IAAI,cAAmE,CAAC;IACxE,IAAI,cAAsB,CAAC;IAC3B,IAAI,gBAAwB,CAAC;IAE7B,MAAM,MAAM,GAAG,kBAAkB;SAC9B,yBAAyB,EAAE;SAC3B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAEhC,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QAC/B,cAAc,GAAG,YAAY,CAAC;QAC9B,cAAc,GAAG,sBAAsB,CAAC;QACxC,gBAAgB,GAAG,OAAO,EAAE,oBAAoB,IAAI,mBAAmB,CAAC;IAC1E,CAAC;SAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QAChC,cAAc,GAAG,MAAM,CAAC;QACxB,cAAc,GAAG,gBAAgB,CAAC;QAClC,gBAAgB,GAAG,OAAO,EAAE,cAAc,IAAI,mBAAmB,CAAC;IACpE,CAAC;SAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QACjC,cAAc,GAAG,OAAO,CAAC;QACzB,cAAc,GAAG,iBAAiB,CAAC;QACnC,gBAAgB,GAAG,OAAO,EAAE,eAAe,IAAI,mBAAmB,CAAC;IACrE,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,cAAc,GAAG,MAAM,CAAC;QACxB,cAAc,GAAG,gBAAgB,CAAC;QAClC,gBAAgB,GAAG,OAAO,EAAE,cAAc,IAAI,mBAAmB,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,cAAc,GAAG,QAAQ,CAAC;QAC1B,cAAc,GAAG,gBAAgB,CAAC;QAClC,gBAAgB,GAAG,OAAO,EAAE,cAAc,IAAI,mBAAmB,CAAC;IACpE,CAAC;IAED,MAAM,qBAAqB,GAAG,YAAY,cAAc,YAAY,gBAAgB,IAAI,CAAC;IAEzF,IACE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;QACnD,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;QAEjC,OAAO,SAAS,SAAS,CAAC,MAAM;;QAE5B,SAAS,CAAC,KAAK,oBAAoB,SAAS,CAAC,MAAM,cAAc,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;;iBAE/G,SAAS,CAAC,KAAK;CAC/B,CAAC;;QAEE,OAAO,GAAG,qBAAqB;;eAEpB,SAAS,CAAC,MAAM,sBAAsB,cAAc;;QAE3D,SAAS,CAAC,KAAK,oBAAoB,SAAS,CAAC,MAAM,cAAc,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;;iBAE/G,SAAS,CAAC,KAAK;CAC/B,CAAC;AACF,CAAC","sourcesContent":["import { TemplateOptions } from \"../../template-generators\";\nimport prismaSchemaParser from \"../../../../prisma/prisma-schema-parser\";\nimport { kebabCase } from \"../../../../helpers/change-case.helpers\";\n\nexport function generateControllerTemplate(options: TemplateOptions): string {\n const { modelName, imports } = options;\n\n if (!modelName)\n throw new Error(\"Module name is required for controller template\");\n\n const camelName = modelName.camel;\n let controllerType: \"fileUpload\" | \"auth\" | \"email\" | \"base\" | \"custom\";\n let controllerName: string;\n let controllerImport: string;\n\n const models = prismaSchemaParser\n .getModelsAsArrayOfStrings()\n .map((val) => kebabCase(val));\n\n if (camelName === \"fileUpload\") {\n controllerType = \"fileUpload\";\n controllerName = \"FileUploadController\";\n controllerImport = imports?.fileUploadController || \"arkos/controllers\";\n } else if (camelName === \"auth\") {\n controllerType = \"auth\";\n controllerName = \"AuthController\";\n controllerImport = imports?.authController || \"arkos/controllers\";\n } else if (camelName === \"email\") {\n controllerType = \"email\";\n controllerName = \"EmailController\";\n controllerImport = imports?.emailController || \"arkos/controllers\";\n } else if (models.includes(modelName.kebab)) {\n controllerType = \"base\";\n controllerName = \"BaseController\";\n controllerImport = imports?.baseController || \"arkos/controllers\";\n } else {\n controllerType = \"custom\";\n controllerName = \"BaseController\";\n controllerImport = imports?.baseController || \"arkos/controllers\";\n }\n\n const controllerClassImport = `import { ${controllerName} } from \"${controllerImport}\";`;\n\n if (\n [\"email\", \"auth\", \"fileUpload\"].includes(camelName) ||\n !models.includes(modelName.kebab)\n )\n return `class ${modelName.pascal}Controller {}\n\nconst ${modelName.camel}Controller = new ${modelName.pascal}Controller(${controllerType === \"base\" ? `\"${modelName.kebab}\"` : \"\"});\n\nexport default ${modelName.camel}Controller;\n`;\n else\n return `${controllerClassImport}\n \nexport class ${modelName.pascal}Controller extends ${controllerName} {}\n\nconst ${modelName.camel}Controller = new ${modelName.pascal}Controller(${controllerType === \"base\" ? `\"${modelName.kebab}\"` : \"\"});\n\nexport default ${modelName.camel}Controller;\n`;\n}\n"]}
@@ -1,10 +1,31 @@
1
+ import path from "path";
1
2
  import { camelCase, kebabCase, pascalCase, } from "../../../../helpers/change-case.helpers.js";
3
+ import ExitError from "../../../../helpers/exit-error.js";
2
4
  import sheu from "../../../../sheu.js";
3
5
  import { generateCommand } from "../../../generate.js";
6
+ const authOnlyComponents = new Set([
7
+ "login-dto",
8
+ "signup-dto",
9
+ "update-me-dto",
10
+ "update-password-dto",
11
+ ]);
12
+ const prismaOnlyComponents = new Set([
13
+ "model",
14
+ "dto",
15
+ "create-dto",
16
+ "update-dto",
17
+ "query-dto",
18
+ ]);
4
19
  export default async function generateMultipleComponents(options) {
5
- const moduleName = options.module || options.model;
6
- if (!moduleName)
7
- throw new Error("Module name is required. Use -m or --module flag.");
20
+ const moduleInput = options.module || options.model;
21
+ if (!moduleInput)
22
+ throw ExitError("Module name is required. Use -m or --module flag.");
23
+ if (options.path && path.extname(options.path) !== "")
24
+ throw ExitError("--path or -p must be a directory when generating multiple components or modules.");
25
+ const moduleNames = moduleInput
26
+ .split(",")
27
+ .map((m) => m.trim())
28
+ .filter(Boolean);
8
29
  const componentMap = {
9
30
  s: generateCommand.service,
10
31
  service: generateCommand.service,
@@ -12,20 +33,6 @@ export default async function generateMultipleComponents(options) {
12
33
  controller: generateCommand.controller,
13
34
  r: generateCommand.router,
14
35
  router: generateCommand.router,
15
- rh: generateCommand.routeHook,
16
- routeHook: generateCommand.routeHook,
17
- sh: generateCommand.serviceHook,
18
- serviceHook: generateCommand.serviceHook,
19
- p: generateCommand.policy,
20
- policy: generateCommand.policy,
21
- sc: generateCommand.baseSchema,
22
- schema: generateCommand.baseSchema,
23
- cs: generateCommand.createSchema,
24
- "create-schema": generateCommand.createSchema,
25
- us: generateCommand.updateSchema,
26
- "update-schema": generateCommand.updateSchema,
27
- qs: generateCommand.querySchema,
28
- "query-schema": generateCommand.querySchema,
29
36
  d: generateCommand.baseDto,
30
37
  dto: generateCommand.baseDto,
31
38
  cd: generateCommand.createDto,
@@ -36,47 +43,49 @@ export default async function generateMultipleComponents(options) {
36
43
  "query-dto": generateCommand.queryDto,
37
44
  m: generateCommand.prismaModel,
38
45
  model: generateCommand.prismaModel,
46
+ p: generateCommand.policy,
47
+ policy: generateCommand.policy,
48
+ ld: generateCommand.loginDto,
49
+ "login-dto": generateCommand.loginDto,
50
+ sd: generateCommand.signupDto,
51
+ "signup-dto": generateCommand.signupDto,
52
+ umd: generateCommand.updateMeDto,
53
+ "update-me-dto": generateCommand.updateMeDto,
54
+ upd: generateCommand.updatePasswordDto,
55
+ "update-password-dto": generateCommand.updatePasswordDto,
39
56
  };
40
57
  const allComponents = [
41
58
  "model",
42
- "schema",
43
- "create-schema",
44
- "update-schema",
45
- "query-schema",
46
59
  "dto",
47
60
  "create-dto",
48
61
  "update-dto",
49
62
  "query-dto",
50
- "query-options",
51
63
  "service",
52
64
  "controller",
53
65
  "router",
54
- "interceptors",
55
- "hooks",
56
- "auth-configs",
66
+ "policy",
67
+ ];
68
+ const allAuthComponents = [
69
+ "login-dto",
70
+ "signup-dto",
71
+ "update-me-dto",
72
+ "update-password-dto",
73
+ "router",
74
+ "policy",
57
75
  ];
58
76
  const defaultPaths = {
59
- "create-schema": "src/modules/{{module-name}}/schemas",
60
- "update-schema": "src/modules/{{module-name}}/schemas",
61
- "query-schema": "src/modules/{{module-name}}/schemas",
62
- schema: "src/modules/{{module-name}}/schemas",
63
77
  "create-dto": "src/modules/{{module-name}}/dtos",
64
78
  "update-dto": "src/modules/{{module-name}}/dtos",
65
79
  "query-dto": "src/modules/{{module-name}}/dtos",
66
80
  dto: "src/modules/{{module-name}}/dtos",
67
81
  model: "prisma/schema",
82
+ "login-dto": "src/modules/auth/dtos",
83
+ "signup-dto": "src/modules/auth/dtos",
84
+ "update-me-dto": "src/modules/auth/dtos",
85
+ "update-password-dto": "src/modules/auth/dtos",
68
86
  };
69
- const names = {
70
- pascal: pascalCase(moduleName),
71
- camel: camelCase(moduleName),
72
- kebab: kebabCase(moduleName),
73
- };
74
- const readableName = names.kebab.replaceAll("-", " ");
75
- let componentsToGenerate = [];
87
+ let requestedComponents = [];
76
88
  if (options.all) {
77
- componentsToGenerate = allComponents;
78
- console.log("");
79
- sheu.info(`Generating all components for ${readableName}\n`);
80
89
  }
81
90
  else if (options.names) {
82
91
  const requested = options.names
@@ -86,48 +95,91 @@ export default async function generateMultipleComponents(options) {
86
95
  for (const comp of requested) {
87
96
  if (componentMap[comp]) {
88
97
  const fullName = Object.keys(componentMap).find((k) => componentMap[k] === componentMap[comp] && k.length > 2) || comp;
89
- if (!componentsToGenerate.includes(fullName)) {
90
- componentsToGenerate.push(fullName);
98
+ if (!requestedComponents.includes(fullName)) {
99
+ requestedComponents.push(fullName);
91
100
  }
92
101
  }
93
102
  else {
94
103
  sheu.warn(`Unknown component: "${comp}" - skipping`);
95
104
  }
96
105
  }
97
- if (componentsToGenerate.length === 0)
106
+ if (requestedComponents.length === 0)
98
107
  throw new Error("No valid components specified.");
99
- sheu.info(`Generating components for ${readableName}`);
100
- sheu.info(`Components: ${componentsToGenerate.join(", ")}\n`);
101
108
  }
102
109
  else {
103
- throw new Error("Please specify either --all or --components flag.\n" +
110
+ throw new Error("Please specify either --all or --names flag.\n" +
104
111
  "Examples:\n" +
105
- " arkos g module -m user --all\n" +
106
- " arkos g module -m user -c s,sc,m");
112
+ " arkos g components -m user --all\n" +
113
+ " arkos g components -m user,post,auth --names s,sc,m");
114
+ }
115
+ const isMultipleModules = moduleNames.length > 1;
116
+ let totalSuccess = 0;
117
+ let totalFail = 0;
118
+ if (isMultipleModules) {
119
+ console.info("");
120
+ sheu.info(`Generating components for modules: ${moduleNames.join(", ")}\n`);
107
121
  }
108
- let successCount = 0;
109
- let failCount = 0;
110
- for (const componentName of componentsToGenerate) {
111
- try {
112
- await componentMap[componentName]({
113
- ...options,
114
- module: moduleName,
115
- path: defaultPaths[componentName],
116
- shouldExit: false,
117
- shouldPrintError: false,
118
- isBulk: true,
122
+ for (const moduleName of moduleNames) {
123
+ const isAuth = kebabCase(moduleName) === "auth";
124
+ const names = {
125
+ pascal: pascalCase(moduleName),
126
+ camel: camelCase(moduleName),
127
+ kebab: kebabCase(moduleName),
128
+ };
129
+ const readableName = names.kebab.replaceAll("-", " ");
130
+ let componentsToGenerate;
131
+ if (options.all) {
132
+ componentsToGenerate = isAuth ? allAuthComponents : allComponents;
133
+ }
134
+ else {
135
+ componentsToGenerate = requestedComponents.filter((comp) => {
136
+ if (authOnlyComponents.has(comp) && !isAuth) {
137
+ sheu.warn(`Skipping "${comp}" for module "${moduleName}" — only valid for auth`);
138
+ return false;
139
+ }
140
+ if (prismaOnlyComponents.has(comp) && isAuth) {
141
+ sheu.warn(`Skipping "${comp}" for module "${moduleName}" — not valid for auth`);
142
+ return false;
143
+ }
144
+ return true;
119
145
  });
120
- successCount++;
121
146
  }
122
- catch (error) {
123
- sheu.error(`Failed to generate ${componentName} because ${error?.message}`);
124
- failCount++;
147
+ if (isMultipleModules) {
148
+ console.info("");
149
+ sheu.info(`Module ${readableName}`);
150
+ }
151
+ else {
152
+ console.info("");
153
+ sheu.info(`Generating components for ${readableName}`);
154
+ if (!options.all)
155
+ sheu.info(`Components: ${componentsToGenerate.join(", ")}\n`);
125
156
  }
157
+ let successCount = 0;
158
+ let failCount = 0;
159
+ for (const componentName of componentsToGenerate) {
160
+ try {
161
+ await componentMap[componentName]({
162
+ ...options,
163
+ module: moduleName,
164
+ model: undefined,
165
+ path: options.path || defaultPaths[componentName],
166
+ shouldExit: false,
167
+ shouldPrintError: false,
168
+ isBulk: true,
169
+ });
170
+ successCount++;
171
+ }
172
+ catch (error) {
173
+ sheu.error(`Failed to generate ${componentName} for ${readableName}: ${error?.message}`);
174
+ failCount++;
175
+ }
176
+ }
177
+ totalSuccess += successCount;
178
+ totalFail += failCount;
126
179
  }
127
180
  console.info("");
128
- sheu.done(`Components generation complete ${moduleName.replaceAll("-", " ")}`);
129
- if (failCount > 0) {
181
+ sheu.done(`Components generation complete for: ${moduleNames.map((m) => m.replaceAll("-", " ")).join(", ")}`);
182
+ if (totalFail > 0)
130
183
  process.exit(1);
131
- }
132
184
  }
133
185
  //# sourceMappingURL=generate-multiple-components.js.map