arkos 2.0.0-next.16 → 2.0.0-next.18

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 (434) hide show
  1. package/README.md +33 -31
  2. package/cli.js +1 -8
  3. package/dist/esm/app.js +5 -12
  4. package/dist/esm/app.js.map +1 -1
  5. package/dist/esm/components/arkos-gateway/arkos-gateway.js +337 -0
  6. package/dist/esm/components/arkos-gateway/arkos-gateway.js.map +1 -0
  7. package/dist/esm/components/arkos-gateway/socket-extensions.js +161 -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 +47 -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 +39 -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-policy/index.js.map +1 -1
  20. package/dist/esm/components/arkos-route-hook/index.js +2 -1
  21. package/dist/esm/components/arkos-route-hook/index.js.map +1 -1
  22. package/dist/esm/components/arkos-route-hook/reader.js.map +1 -1
  23. package/dist/esm/components/arkos-route-hook/types.js.map +1 -1
  24. package/dist/esm/exports/index.js +2 -2
  25. package/dist/esm/exports/index.js.map +1 -1
  26. package/dist/esm/exports/services/index.js +2 -2
  27. package/dist/esm/exports/services/index.js.map +1 -1
  28. package/dist/esm/exports/websockets.js +5 -0
  29. package/dist/esm/exports/websockets.js.map +1 -0
  30. package/dist/esm/generated.js.map +1 -1
  31. package/dist/esm/modules/auth/auth.controller.js +2 -2
  32. package/dist/esm/modules/auth/auth.controller.js.map +1 -1
  33. package/dist/esm/modules/auth/auth.service.js +83 -204
  34. package/dist/esm/modules/auth/auth.service.js.map +1 -1
  35. package/dist/esm/modules/auth/utils/auth-error-objects.js +2 -2
  36. package/dist/esm/modules/auth/utils/auth-error-objects.js.map +1 -1
  37. package/dist/esm/modules/auth/utils/auth-hooks-manager.js +148 -0
  38. package/dist/esm/modules/auth/utils/auth-hooks-manager.js.map +1 -0
  39. package/dist/esm/modules/auth/utils/docs-links.js +6 -0
  40. package/dist/esm/modules/auth/utils/docs-links.js.map +1 -0
  41. package/dist/esm/modules/auth/utils/services/auth-action.service.js +6 -4
  42. package/dist/esm/modules/auth/utils/services/auth-action.service.js.map +1 -1
  43. package/dist/esm/modules/base/base.controller.js +11 -5
  44. package/dist/esm/modules/base/base.controller.js.map +1 -1
  45. package/dist/esm/modules/base/base.middlewares.js +12 -21
  46. package/dist/esm/modules/base/base.middlewares.js.map +1 -1
  47. package/dist/esm/modules/base/base.service.js +16 -128
  48. package/dist/esm/modules/base/base.service.js.map +1 -1
  49. package/dist/esm/modules/base/types/base.service.types.js.map +1 -1
  50. package/dist/esm/modules/email/email.service.js +14 -7
  51. package/dist/esm/modules/email/email.service.js.map +1 -1
  52. package/dist/esm/modules/error-handler/error-handler.controller.js +6 -66
  53. package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -1
  54. package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -1
  55. package/dist/esm/modules/error-handler/utils/get-handled-error.js +68 -0
  56. package/dist/esm/modules/error-handler/utils/get-handled-error.js.map +1 -0
  57. package/dist/esm/modules/file-upload/file-upload.router.js +9 -2
  58. package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -1
  59. package/dist/esm/modules/file-upload/file-upload.service.js +1 -1
  60. package/dist/esm/modules/file-upload/file-upload.service.js.map +1 -1
  61. package/dist/esm/modules/swagger/swagger.router.js +11 -10
  62. package/dist/esm/modules/swagger/swagger.router.js.map +1 -1
  63. package/dist/esm/modules/swagger/utils/get-open-api-login-html.js +3 -1
  64. package/dist/esm/modules/swagger/utils/get-open-api-login-html.js.map +1 -1
  65. package/dist/esm/modules/swagger/utils/helpers/class-validator-to-json-schema.js.map +1 -1
  66. package/dist/esm/modules/swagger/utils/helpers/openapi-schema-converter.js +4 -2
  67. package/dist/esm/modules/swagger/utils/helpers/openapi-schema-converter.js.map +1 -1
  68. package/dist/esm/server.js +1 -1
  69. package/dist/esm/server.js.map +1 -1
  70. package/dist/esm/types/arkos.js.map +1 -1
  71. package/dist/esm/types/index.js.map +1 -1
  72. package/dist/esm/types/new-arkos-config.js.map +1 -1
  73. package/dist/esm/types/upload.js +2 -0
  74. package/dist/esm/types/upload.js.map +1 -0
  75. package/dist/esm/types/validation/validation-manager.js +50 -0
  76. package/dist/esm/types/validation/validation-manager.js.map +1 -0
  77. package/dist/esm/types/validation/validator.js +2 -0
  78. package/dist/esm/types/validation/validator.js.map +1 -0
  79. package/dist/esm/utils/arkos-router/arkos-router-openapi-manager.js +9 -33
  80. package/dist/esm/utils/arkos-router/arkos-router-openapi-manager.js.map +1 -1
  81. package/dist/esm/utils/arkos-router/index.js +15 -3
  82. package/dist/esm/utils/arkos-router/index.js.map +1 -1
  83. package/dist/esm/utils/arkos-router/types/index.js.map +1 -1
  84. package/dist/esm/utils/arkos-router/types/upload-config.js.map +1 -1
  85. package/dist/esm/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js +45 -9
  86. package/dist/esm/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js.map +1 -1
  87. package/dist/esm/utils/arkos-router/utils/helpers/upload-manager.js +26 -6
  88. package/dist/esm/utils/arkos-router/utils/helpers/upload-manager.js.map +1 -1
  89. package/dist/esm/utils/cli/build.js +11 -2
  90. package/dist/esm/utils/cli/build.js.map +1 -1
  91. package/dist/esm/utils/cli/dev.js +4 -6
  92. package/dist/esm/utils/cli/dev.js.map +1 -1
  93. package/dist/esm/utils/cli/generate.js +0 -90
  94. package/dist/esm/utils/cli/generate.js.map +1 -1
  95. package/dist/esm/utils/cli/index.js +10 -74
  96. package/dist/esm/utils/cli/index.js.map +1 -1
  97. package/dist/esm/utils/cli/start.js +20 -11
  98. package/dist/esm/utils/cli/start.js.map +1 -1
  99. package/dist/esm/utils/cli/utils/cli.helpers.js +1 -1
  100. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +53 -17
  101. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +1 -1
  102. package/dist/esm/utils/cli/utils/template-generator/templates/generate-multiple-components.js +3 -54
  103. package/dist/esm/utils/cli/utils/template-generator/templates/generate-multiple-components.js.map +1 -1
  104. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js +11 -4
  105. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js.map +1 -1
  106. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js +2 -2
  107. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js.map +1 -1
  108. package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js +18 -18
  109. package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +1 -1
  110. package/dist/esm/utils/cli/utils/template-generators.js +27 -24
  111. package/dist/esm/utils/cli/utils/template-generators.js.map +1 -1
  112. package/dist/esm/utils/docs-links.js +2 -0
  113. package/dist/esm/utils/docs-links.js.map +1 -0
  114. package/dist/esm/utils/features/api.features.js.map +1 -1
  115. package/dist/esm/utils/helpers/arkos-config.helpers.js.map +1 -1
  116. package/dist/esm/utils/helpers/exit-error.js +1 -1
  117. package/dist/esm/utils/helpers/exit-error.js.map +1 -1
  118. package/dist/esm/utils/initialize-app.js +3 -3
  119. package/dist/esm/utils/initialize-app.js.map +1 -1
  120. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +19 -18
  121. package/dist/esm/utils/prisma/prisma-json-schema-generator.js.map +1 -1
  122. package/dist/esm/utils/remove-dir.js +1 -1
  123. package/dist/esm/utils/remove-dir.js.map +1 -1
  124. package/dist/esm/utils/setup-app.js.map +1 -1
  125. package/dist/types/app.d.ts +4 -0
  126. package/dist/types/components/arkos-gateway/arkos-gateway.d.ts +121 -0
  127. package/dist/types/components/arkos-gateway/socket-extensions.d.ts +79 -0
  128. package/dist/types/components/arkos-gateway/types.d.ts +364 -0
  129. package/dist/types/components/arkos-gateway/utils/helpers.d.ts +9 -0
  130. package/dist/types/components/arkos-gateway/utils/memory-gateway-store.d.ts +14 -0
  131. package/dist/types/components/arkos-gateway/utils/multi-tier-arkos-gateway-store.d.ts +20 -0
  132. package/dist/types/components/arkos-gateway/utils/rate-limiter.d.ts +11 -0
  133. package/dist/types/components/arkos-route-hook/index.d.ts +11 -5
  134. package/dist/types/components/arkos-route-hook/reader.d.ts +2 -2
  135. package/dist/types/components/arkos-route-hook/types.d.ts +5 -1
  136. package/dist/types/exports/index.d.ts +3 -2
  137. package/dist/types/exports/services/index.d.ts +3 -3
  138. package/dist/types/exports/websockets.d.ts +5 -0
  139. package/dist/types/modules/auth/auth.service.d.ts +12 -36
  140. package/dist/types/modules/auth/utils/auth-hooks-manager.d.ts +63 -0
  141. package/dist/types/modules/auth/utils/docs-links.d.ts +3 -0
  142. package/dist/types/modules/auth/utils/services/auth-action.service.d.ts +2 -2
  143. package/dist/types/modules/base/base.controller.d.ts +2 -2
  144. package/dist/types/modules/base/base.service.d.ts +5 -15
  145. package/dist/types/modules/base/types/base.service.types.d.ts +11 -0
  146. package/dist/types/modules/error-handler/utils/catch-async.d.ts +2 -2
  147. package/dist/types/modules/error-handler/utils/get-handled-error.d.ts +1 -0
  148. package/dist/types/modules/swagger/utils/helpers/openapi-schema-converter.d.ts +6 -1
  149. package/dist/types/types/arkos.d.ts +2 -15
  150. package/dist/types/types/index.d.ts +6 -5
  151. package/dist/types/types/new-arkos-config.d.ts +1 -1
  152. package/dist/types/types/upload.d.ts +10 -0
  153. package/dist/types/types/validation/validation-manager.d.ts +27 -0
  154. package/dist/types/types/validation/validator.d.ts +2 -0
  155. package/dist/types/utils/arkos-router/index.d.ts +7 -0
  156. package/dist/types/utils/arkos-router/types/index.d.ts +35 -21
  157. package/dist/types/utils/arkos-router/types/upload-config.d.ts +2 -1
  158. package/dist/types/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.d.ts +6 -7
  159. package/dist/types/utils/arkos-router/utils/helpers/upload-manager.d.ts +1 -0
  160. package/dist/types/utils/cli/build.d.ts +1 -1
  161. package/dist/types/utils/cli/generate.d.ts +11 -10
  162. package/dist/types/utils/cli/start.d.ts +2 -0
  163. package/dist/types/utils/cli/utils/template-generator/templates/class-validator-dto-generator.d.ts +7 -0
  164. package/dist/types/utils/docs-links.d.ts +1 -0
  165. package/dist/types/utils/features/api.features.d.ts +1 -2
  166. package/dist/types/utils/helpers/arkos-config.helpers.d.ts +5 -0
  167. package/package.json +61 -30
  168. package/dist/cjs/app.js +0 -121
  169. package/dist/cjs/app.js.map +0 -1
  170. package/dist/cjs/components/arkos-loadable-registry/index.js +0 -28
  171. package/dist/cjs/components/arkos-loadable-registry/index.js.map +0 -1
  172. package/dist/cjs/components/arkos-loadable-translator/index.js +0 -144
  173. package/dist/cjs/components/arkos-loadable-translator/index.js.map +0 -1
  174. package/dist/cjs/components/arkos-policy/index.js +0 -38
  175. package/dist/cjs/components/arkos-policy/index.js.map +0 -1
  176. package/dist/cjs/components/arkos-policy/types.js +0 -3
  177. package/dist/cjs/components/arkos-policy/types.js.map +0 -1
  178. package/dist/cjs/components/arkos-route-hook/index.js +0 -50
  179. package/dist/cjs/components/arkos-route-hook/index.js.map +0 -1
  180. package/dist/cjs/components/arkos-route-hook/reader.js +0 -47
  181. package/dist/cjs/components/arkos-route-hook/reader.js.map +0 -1
  182. package/dist/cjs/components/arkos-route-hook/types.js +0 -3
  183. package/dist/cjs/components/arkos-route-hook/types.js.map +0 -1
  184. package/dist/cjs/components/arkos-service-hook/index.js +0 -35
  185. package/dist/cjs/components/arkos-service-hook/index.js.map +0 -1
  186. package/dist/cjs/components/arkos-service-hook/reader.js +0 -30
  187. package/dist/cjs/components/arkos-service-hook/reader.js.map +0 -1
  188. package/dist/cjs/components/arkos-service-hook/types.js +0 -3
  189. package/dist/cjs/components/arkos-service-hook/types.js.map +0 -1
  190. package/dist/cjs/exports/auth/index.js +0 -6
  191. package/dist/cjs/exports/auth/index.js.map +0 -1
  192. package/dist/cjs/exports/config.js +0 -6
  193. package/dist/cjs/exports/config.js.map +0 -1
  194. package/dist/cjs/exports/controllers/index.js +0 -42
  195. package/dist/cjs/exports/controllers/index.js.map +0 -1
  196. package/dist/cjs/exports/error-handler/index.js +0 -26
  197. package/dist/cjs/exports/error-handler/index.js.map +0 -1
  198. package/dist/cjs/exports/index.js +0 -23
  199. package/dist/cjs/exports/index.js.map +0 -1
  200. package/dist/cjs/exports/middlewares/index.js +0 -7
  201. package/dist/cjs/exports/middlewares/index.js.map +0 -1
  202. package/dist/cjs/exports/prisma/index.js +0 -13
  203. package/dist/cjs/exports/prisma/index.js.map +0 -1
  204. package/dist/cjs/exports/services/index.js +0 -53
  205. package/dist/cjs/exports/services/index.js.map +0 -1
  206. package/dist/cjs/exports/utils/index.js +0 -26
  207. package/dist/cjs/exports/utils/index.js.map +0 -1
  208. package/dist/cjs/exports/validation/index.js +0 -11
  209. package/dist/cjs/exports/validation/index.js.map +0 -1
  210. package/dist/cjs/generated.js +0 -7
  211. package/dist/cjs/generated.js.map +0 -1
  212. package/dist/cjs/modules/auth/auth.controller.js +0 -254
  213. package/dist/cjs/modules/auth/auth.controller.js.map +0 -1
  214. package/dist/cjs/modules/auth/auth.router.js +0 -130
  215. package/dist/cjs/modules/auth/auth.router.js.map +0 -1
  216. package/dist/cjs/modules/auth/auth.service.js +0 -433
  217. package/dist/cjs/modules/auth/auth.service.js.map +0 -1
  218. package/dist/cjs/modules/auth/utils/auth-error-objects.js +0 -10
  219. package/dist/cjs/modules/auth/utils/auth-error-objects.js.map +0 -1
  220. package/dist/cjs/modules/auth/utils/auth-openapi-generator.js +0 -372
  221. package/dist/cjs/modules/auth/utils/auth-openapi-generator.js.map +0 -1
  222. package/dist/cjs/modules/auth/utils/auth-prisma-json-schema-generator.js +0 -101
  223. package/dist/cjs/modules/auth/utils/auth-prisma-json-schema-generator.js.map +0 -1
  224. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +0 -83
  225. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js.map +0 -1
  226. package/dist/cjs/modules/auth/utils/services/auth-action.service.js +0 -154
  227. package/dist/cjs/modules/auth/utils/services/auth-action.service.js.map +0 -1
  228. package/dist/cjs/modules/base/base.controller.js +0 -287
  229. package/dist/cjs/modules/base/base.controller.js.map +0 -1
  230. package/dist/cjs/modules/base/base.middlewares.js +0 -238
  231. package/dist/cjs/modules/base/base.middlewares.js.map +0 -1
  232. package/dist/cjs/modules/base/base.router.js +0 -126
  233. package/dist/cjs/modules/base/base.router.js.map +0 -1
  234. package/dist/cjs/modules/base/base.service.js +0 -436
  235. package/dist/cjs/modules/base/base.service.js.map +0 -1
  236. package/dist/cjs/modules/base/types/base.service.types.js +0 -3
  237. package/dist/cjs/modules/base/types/base.service.types.js.map +0 -1
  238. package/dist/cjs/modules/base/utils/error-prettifier.js +0 -188
  239. package/dist/cjs/modules/base/utils/error-prettifier.js.map +0 -1
  240. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +0 -49
  241. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js.map +0 -1
  242. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +0 -243
  243. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js.map +0 -1
  244. package/dist/cjs/modules/base/utils/model-openapi-generator.js +0 -443
  245. package/dist/cjs/modules/base/utils/model-openapi-generator.js.map +0 -1
  246. package/dist/cjs/modules/base/utils/router-validator.js +0 -13
  247. package/dist/cjs/modules/base/utils/router-validator.js.map +0 -1
  248. package/dist/cjs/modules/base/utils/service-hooks-manager.js +0 -19
  249. package/dist/cjs/modules/base/utils/service-hooks-manager.js.map +0 -1
  250. package/dist/cjs/modules/debugger/debugger.service.js +0 -59
  251. package/dist/cjs/modules/debugger/debugger.service.js.map +0 -1
  252. package/dist/cjs/modules/email/email.service.js +0 -106
  253. package/dist/cjs/modules/email/email.service.js.map +0 -1
  254. package/dist/cjs/modules/error-handler/error-handler.controller.js +0 -166
  255. package/dist/cjs/modules/error-handler/error-handler.controller.js.map +0 -1
  256. package/dist/cjs/modules/error-handler/utils/app-error.js +0 -27
  257. package/dist/cjs/modules/error-handler/utils/app-error.js.map +0 -1
  258. package/dist/cjs/modules/error-handler/utils/catch-async.js +0 -21
  259. package/dist/cjs/modules/error-handler/utils/catch-async.js.map +0 -1
  260. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +0 -104
  261. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +0 -1
  262. package/dist/cjs/modules/error-handler/utils/errors.js +0 -158
  263. package/dist/cjs/modules/error-handler/utils/errors.js.map +0 -1
  264. package/dist/cjs/modules/error-handler/utils/multer-error-handler.js +0 -39
  265. package/dist/cjs/modules/error-handler/utils/multer-error-handler.js.map +0 -1
  266. package/dist/cjs/modules/file-upload/file-upload.controller.js +0 -252
  267. package/dist/cjs/modules/file-upload/file-upload.controller.js.map +0 -1
  268. package/dist/cjs/modules/file-upload/file-upload.router.js +0 -96
  269. package/dist/cjs/modules/file-upload/file-upload.router.js.map +0 -1
  270. package/dist/cjs/modules/file-upload/file-upload.service.js +0 -343
  271. package/dist/cjs/modules/file-upload/file-upload.service.js.map +0 -1
  272. package/dist/cjs/modules/file-upload/utils/file-upload-json-schema-generator.js +0 -351
  273. package/dist/cjs/modules/file-upload/utils/file-upload-json-schema-generator.js.map +0 -1
  274. package/dist/cjs/modules/file-upload/utils/helpers/file-extensions.js +0 -134
  275. package/dist/cjs/modules/file-upload/utils/helpers/file-extensions.js.map +0 -1
  276. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +0 -100
  277. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js.map +0 -1
  278. package/dist/cjs/modules/swagger/swagger.router.js +0 -81
  279. package/dist/cjs/modules/swagger/swagger.router.js.map +0 -1
  280. package/dist/cjs/modules/swagger/utils/get-open-api-login-html.js +0 -306
  281. package/dist/cjs/modules/swagger/utils/get-open-api-login-html.js.map +0 -1
  282. package/dist/cjs/modules/swagger/utils/helpers/class-validator-to-json-schema.js +0 -53
  283. package/dist/cjs/modules/swagger/utils/helpers/class-validator-to-json-schema.js.map +0 -1
  284. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +0 -72
  285. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +0 -1
  286. package/dist/cjs/modules/swagger/utils/helpers/openapi-schema-converter.js +0 -331
  287. package/dist/cjs/modules/swagger/utils/helpers/openapi-schema-converter.js.map +0 -1
  288. package/dist/cjs/package.json +0 -3
  289. package/dist/cjs/server.js +0 -60
  290. package/dist/cjs/server.js.map +0 -1
  291. package/dist/cjs/types/arkos-config/utils.js +0 -3
  292. package/dist/cjs/types/arkos-config/utils.js.map +0 -1
  293. package/dist/cjs/types/arkos-prisma-input.js +0 -3
  294. package/dist/cjs/types/arkos-prisma-input.js.map +0 -1
  295. package/dist/cjs/types/arkos.js +0 -3
  296. package/dist/cjs/types/arkos.js.map +0 -1
  297. package/dist/cjs/types/auth.js +0 -3
  298. package/dist/cjs/types/auth.js.map +0 -1
  299. package/dist/cjs/types/index.js +0 -3
  300. package/dist/cjs/types/index.js.map +0 -1
  301. package/dist/cjs/types/new-arkos-config.js +0 -3
  302. package/dist/cjs/types/new-arkos-config.js.map +0 -1
  303. package/dist/cjs/types/router-config.js +0 -3
  304. package/dist/cjs/types/router-config.js.map +0 -1
  305. package/dist/cjs/utils/arkos-env.js +0 -9
  306. package/dist/cjs/utils/arkos-env.js.map +0 -1
  307. package/dist/cjs/utils/arkos-router/arkos-router-openapi-manager.js +0 -184
  308. package/dist/cjs/utils/arkos-router/arkos-router-openapi-manager.js.map +0 -1
  309. package/dist/cjs/utils/arkos-router/index.js +0 -153
  310. package/dist/cjs/utils/arkos-router/index.js.map +0 -1
  311. package/dist/cjs/utils/arkos-router/route-config-registry.js +0 -16
  312. package/dist/cjs/utils/arkos-router/route-config-registry.js.map +0 -1
  313. package/dist/cjs/utils/arkos-router/route-config-validator.js +0 -56
  314. package/dist/cjs/utils/arkos-router/route-config-validator.js.map +0 -1
  315. package/dist/cjs/utils/arkos-router/types/body-parser-config.js +0 -3
  316. package/dist/cjs/utils/arkos-router/types/body-parser-config.js.map +0 -1
  317. package/dist/cjs/utils/arkos-router/types/index.js +0 -3
  318. package/dist/cjs/utils/arkos-router/types/index.js.map +0 -1
  319. package/dist/cjs/utils/arkos-router/types/openapi-config.js +0 -3
  320. package/dist/cjs/utils/arkos-router/types/openapi-config.js.map +0 -1
  321. package/dist/cjs/utils/arkos-router/types/upload-config.js +0 -3
  322. package/dist/cjs/utils/arkos-router/types/upload-config.js.map +0 -1
  323. package/dist/cjs/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js +0 -158
  324. package/dist/cjs/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js.map +0 -1
  325. package/dist/cjs/utils/arkos-router/utils/helpers/index.js +0 -179
  326. package/dist/cjs/utils/arkos-router/utils/helpers/index.js.map +0 -1
  327. package/dist/cjs/utils/arkos-router/utils/helpers/upload-manager.js +0 -540
  328. package/dist/cjs/utils/arkos-router/utils/helpers/upload-manager.js.map +0 -1
  329. package/dist/cjs/utils/bundler.js +0 -163
  330. package/dist/cjs/utils/bundler.js.map +0 -1
  331. package/dist/cjs/utils/cli/build.js +0 -199
  332. package/dist/cjs/utils/cli/build.js.map +0 -1
  333. package/dist/cjs/utils/cli/dev.js +0 -133
  334. package/dist/cjs/utils/cli/dev.js.map +0 -1
  335. package/dist/cjs/utils/cli/export-auth-action.js +0 -80
  336. package/dist/cjs/utils/cli/export-auth-action.js.map +0 -1
  337. package/dist/cjs/utils/cli/generate.js +0 -333
  338. package/dist/cjs/utils/cli/generate.js.map +0 -1
  339. package/dist/cjs/utils/cli/index.js +0 -259
  340. package/dist/cjs/utils/cli/index.js.map +0 -1
  341. package/dist/cjs/utils/cli/prisma-generate.js +0 -112
  342. package/dist/cjs/utils/cli/prisma-generate.js.map +0 -1
  343. package/dist/cjs/utils/cli/start.js +0 -74
  344. package/dist/cjs/utils/cli/start.js.map +0 -1
  345. package/dist/cjs/utils/cli/utils/cli.helpers.js +0 -24
  346. package/dist/cjs/utils/cli/utils/cli.helpers.js.map +0 -1
  347. package/dist/cjs/utils/cli/utils/runtime-cli-commander.js +0 -118
  348. package/dist/cjs/utils/cli/utils/runtime-cli-commander.js.map +0 -1
  349. package/dist/cjs/utils/cli/utils/smart-fs-watcher.js +0 -73
  350. package/dist/cjs/utils/cli/utils/smart-fs-watcher.js.map +0 -1
  351. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +0 -810
  352. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +0 -1
  353. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -64
  354. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -1
  355. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-multiple-components.js +0 -242
  356. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-multiple-components.js.map +0 -1
  357. package/dist/cjs/utils/cli/utils/template-generator/templates/policy-template.js +0 -51
  358. package/dist/cjs/utils/cli/utils/template-generator/templates/policy-template.js.map +0 -1
  359. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js +0 -23
  360. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js.map +0 -1
  361. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js +0 -50
  362. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js.map +0 -1
  363. package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js +0 -545
  364. package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +0 -1
  365. package/dist/cjs/utils/cli/utils/template-generators.js +0 -62
  366. package/dist/cjs/utils/cli/utils/template-generators.js.map +0 -1
  367. package/dist/cjs/utils/cli/utils/watermark-stamper.js +0 -26
  368. package/dist/cjs/utils/cli/utils/watermark-stamper.js.map +0 -1
  369. package/dist/cjs/utils/define-config.js +0 -60
  370. package/dist/cjs/utils/define-config.js.map +0 -1
  371. package/dist/cjs/utils/dotenv.helpers.js +0 -46
  372. package/dist/cjs/utils/dotenv.helpers.js.map +0 -1
  373. package/dist/cjs/utils/dynamic-loader.js +0 -22
  374. package/dist/cjs/utils/dynamic-loader.js.map +0 -1
  375. package/dist/cjs/utils/expand-env.js +0 -72
  376. package/dist/cjs/utils/expand-env.js.map +0 -1
  377. package/dist/cjs/utils/features/api.features.js +0 -216
  378. package/dist/cjs/utils/features/api.features.js.map +0 -1
  379. package/dist/cjs/utils/features/port-and-host-allocator.js +0 -129
  380. package/dist/cjs/utils/features/port-and-host-allocator.js.map +0 -1
  381. package/dist/cjs/utils/helpers/api.features.helpers.js +0 -347
  382. package/dist/cjs/utils/helpers/api.features.helpers.js.map +0 -1
  383. package/dist/cjs/utils/helpers/arkos-config.helpers.js +0 -106
  384. package/dist/cjs/utils/helpers/arkos-config.helpers.js.map +0 -1
  385. package/dist/cjs/utils/helpers/change-case.helpers.js +0 -177
  386. package/dist/cjs/utils/helpers/change-case.helpers.js.map +0 -1
  387. package/dist/cjs/utils/helpers/deepmerge.helper.js +0 -115
  388. package/dist/cjs/utils/helpers/deepmerge.helper.js.map +0 -1
  389. package/dist/cjs/utils/helpers/exit-error.js +0 -13
  390. package/dist/cjs/utils/helpers/exit-error.js.map +0 -1
  391. package/dist/cjs/utils/helpers/fs.helpers.js +0 -52
  392. package/dist/cjs/utils/helpers/fs.helpers.js.map +0 -1
  393. package/dist/cjs/utils/helpers/global.helpers.js +0 -106
  394. package/dist/cjs/utils/helpers/global.helpers.js.map +0 -1
  395. package/dist/cjs/utils/helpers/prisma.helpers.js +0 -56
  396. package/dist/cjs/utils/helpers/prisma.helpers.js.map +0 -1
  397. package/dist/cjs/utils/helpers/query-parser.helpers.js +0 -69
  398. package/dist/cjs/utils/helpers/query-parser.helpers.js.map +0 -1
  399. package/dist/cjs/utils/helpers/routers.helpers.js +0 -36
  400. package/dist/cjs/utils/helpers/routers.helpers.js.map +0 -1
  401. package/dist/cjs/utils/helpers/text.helpers.js +0 -28
  402. package/dist/cjs/utils/helpers/text.helpers.js.map +0 -1
  403. package/dist/cjs/utils/helpers/url-helpers.js +0 -14
  404. package/dist/cjs/utils/helpers/url-helpers.js.map +0 -1
  405. package/dist/cjs/utils/initialize-app.js +0 -80
  406. package/dist/cjs/utils/initialize-app.js.map +0 -1
  407. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +0 -366
  408. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js.map +0 -1
  409. package/dist/cjs/utils/prisma/prisma-schema-parser.js +0 -380
  410. package/dist/cjs/utils/prisma/prisma-schema-parser.js.map +0 -1
  411. package/dist/cjs/utils/prisma/types.js +0 -3
  412. package/dist/cjs/utils/prisma/types.js.map +0 -1
  413. package/dist/cjs/utils/remove-dir.js +0 -14
  414. package/dist/cjs/utils/remove-dir.js.map +0 -1
  415. package/dist/cjs/utils/setup-app.js +0 -136
  416. package/dist/cjs/utils/setup-app.js.map +0 -1
  417. package/dist/cjs/utils/sheu.js +0 -131
  418. package/dist/cjs/utils/sheu.js.map +0 -1
  419. package/dist/cjs/utils/validate-dto.js +0 -19
  420. package/dist/cjs/utils/validate-dto.js.map +0 -1
  421. package/dist/cjs/utils/validate-schema.js +0 -75
  422. package/dist/cjs/utils/validate-schema.js.map +0 -1
  423. package/dist/esm/components/arkos-service-hook/index.js +0 -32
  424. package/dist/esm/components/arkos-service-hook/index.js.map +0 -1
  425. package/dist/esm/components/arkos-service-hook/reader.js +0 -24
  426. package/dist/esm/components/arkos-service-hook/reader.js.map +0 -1
  427. package/dist/esm/components/arkos-service-hook/types.js +0 -2
  428. package/dist/esm/components/arkos-service-hook/types.js.map +0 -1
  429. package/dist/esm/modules/base/utils/service-hooks-manager.js +0 -17
  430. package/dist/esm/modules/base/utils/service-hooks-manager.js.map +0 -1
  431. package/dist/types/components/arkos-service-hook/index.d.ts +0 -41
  432. package/dist/types/components/arkos-service-hook/reader.d.ts +0 -35
  433. package/dist/types/components/arkos-service-hook/types.d.ts +0 -240
  434. package/dist/types/modules/base/utils/service-hooks-manager.d.ts +0 -10
@@ -1 +0,0 @@
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":";;;;;;AAAA,mGAAyE;AAEzE,+DAAsE;AAEtE,mFAA0E;AAE1E,MAAa,0BAA0B;IAC7B,oBAAoB,CAAC,OAAwB;QACnD,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG,8BAAkB,CAAC,MAAM,CAAC,IAAI,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,CAC/D,CAAC;QACF,IAAI,CAAC,KAAK;YACR,MAAM,IAAI,KAAK,CAAC,SAAS,SAAS,CAAC,MAAM,6BAA6B,CAAC,CAAC;QAC1E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,iBAAiB,CAAC,OAAwB;QACxC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAEjD,MAAM,GAAG,GAAG,IAAA,iCAAoB,GAAE,CAAC;QACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;QAClC,MAAM,gBAAgB,GAAG;YACvB,IAAI;YACJ,WAAW;YACX,WAAW;YACX,WAAW;YACX,YAAY;YACZ,YAAY;YACZ,YAAY;SACb,CAAC;QACF,MAAM,YAAY,GAAG,SAAU,CAAC,KAAK,KAAK,MAAM,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QACzC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC3C,MAAM,gBAAgB,GAAa,EAAE,CAAC;QAEtC,IAAI,SAAS,GAAa,EAAE,CAAC;QAE7B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,IAAI,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxD,SAAS;YACX,CAAC;YAED,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,KAAK,CAAC,IAAI,CACxC,CAAC;YACF,IAAI,YAAY,EAAE,CAAC;gBACjB,SAAS;YACX,CAAC;YAED,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;gBAC1B,MAAM,aAAa,GAAG,8BAAkB,CAAC,cAAc,CAAC,IAAI,CAC1D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAC5B,CAAC;gBACH,MAAM,gBAAgB,GAAG,GAAG,KAAK,CAAC,IAAI,YAAY,SAAU,CAAC,MAAM,KAAK,CAAC;gBAEzE,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBACrC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAE7B,IACE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAAC,EACtE,CAAC;oBACD,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBAClD,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,2BAA2B,CAC3D,CAAC,EACD,KAAK,EACL,cAAc,CACf,CAAC;wBACF,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC3D,OAAO,GAAG,UAAU,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK,IAAI,GAAG,CAAC;oBACpD,CAAC,CAAC,CAAC;oBACH,gBAAgB,CAAC,IAAI,CACnB,SAAS,gBAAgB,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAC/D,CAAC;gBACJ,CAAC;gBAED,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC;gBACxE,IAAI,UAAU;oBAAE,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACjD,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3D,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;oBAC3B,CAAC,CAAC,GAAG,gBAAgB,IAAI;oBACzB,CAAC,CAAC,gBAAgB,CAAC;gBAErB,IAAI,KAAK,CAAC,OAAO;oBAAE,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAEjD,SAAS,CAAC,IAAI,CACZ,GAAG,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,qBAAqB,OAAO,oBAAoB,gBAAgB,QAAQ,KAAK,CAAC,IAAI,GAAG,GAAG,KAAK,OAAO,GAAG,CAC/J,CAAC;gBACF,SAAS;YACX,CAAC;YAED,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,IAAI,KAAK,CAAC,OAAO;oBAAE,SAAS;gBAE5B,MAAM,eAAe,GAAG,8BAAkB,CAAC,MAAM,CAAC,IAAI,CACpD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAC7B,CAAC;gBAEF,IAAI,eAAe,EAAE,CAAC;oBACpB,MAAM,UAAU,GACd,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC;oBACvD,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;oBAC9C,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAElE,IAAI,UAAU;wBAAE,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAEjD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;wBAAE,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAC9D,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBACrC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAE7B,MAAM,eAAe,GAAG,GAAG,eAAe,CAAC,IAAI,YAAY,SAAU,CAAC,MAAM,KAAK,CAAC;oBAElF,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAChD,KAAK,EACL,eAAe,EACf,eAAe,EACf,cAAc,EACd,SAAS,EACT,YAAY,CACb,CAAC;oBAEF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;wBACnE,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBAExC,SAAS,CAAC,IAAI,CACZ,GAAG,iBAAiB,sCAAsC,eAAe,QAAQ,KAAK,CAAC,IAAI,GAAG,YAAY,KAAK,eAAe,GAAG,CAClI,CAAC;gBACJ,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,8BAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAED,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,2BAA2B,CAC3D,KAAK,EACL,YAAY,EACZ,cAAc,CACf,CAAC;YACF,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC;YACxE,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,KAAK,KAAK,CAAC,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,WAAW,GACf,SAAS,CAAC,IAAI,GAAG,CAAC;YAChB,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B;YAC3E,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,gBAAgB,GACpB,cAAc,CAAC,IAAI,GAAG,CAAC;YACrB,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B;YACjF,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,kBAAkB,GACtB,gBAAgB,CAAC,IAAI,GAAG,CAAC;YACvB,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gCAAgC;YACrF,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,gBAAgB,GACpB,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5E,OAAO,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,WAAW,GAAG,gBAAgB;6BACvD,SAAU,CAAC,MAAM;EAC5C,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;EACtB,CAAC;IACD,CAAC;IAED,iBAAiB,CAAC,OAAwB;QACxC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAEjD,MAAM,GAAG,GAAG,IAAA,iCAAoB,GAAE,CAAC;QACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;QAClC,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QACvE,MAAM,YAAY,GAAG,SAAU,CAAC,KAAK,KAAK,MAAM,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QACzC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC3C,MAAM,gBAAgB,GAAa,EAAE,CAAC;QAEtC,IAAI,SAAS,GAAa,EAAE,CAAC;QAE7B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,IAAI,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxD,SAAS;YACX,CAAC;YAED,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,KAAK,CAAC,IAAI,CACxC,CAAC;YACF,IAAI,YAAY,EAAE,CAAC;gBACjB,SAAS;YACX,CAAC;YAED,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;gBAC1B,MAAM,aAAa,GAAG,8BAAkB,CAAC,cAAc,CAAC,IAAI,CAC1D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAC5B,CAAC;gBACH,MAAM,gBAAgB,GAAG,GAAG,KAAK,CAAC,IAAI,YAAY,SAAU,CAAC,MAAM,KAAK,CAAC;gBAEzE,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBACrC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACjC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAE7B,IACE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAAC,EACtE,CAAC;oBACD,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBAClD,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GACxB,IAAI,CAAC,oCAAoC,CACvC,CAAC,EACD,KAAK,EACL,cAAc,CACf,CAAC;wBACJ,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;wBACpC,OAAO,GAAG,UAAU,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK,IAAI,GAAG,CAAC;oBACpD,CAAC,CAAC,CAAC;oBACH,gBAAgB,CAAC,IAAI,CACnB,SAAS,gBAAgB,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAC/D,CAAC;gBACJ,CAAC;gBAED,IAAI,KAAK,CAAC,OAAO;oBAAE,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAEjD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;oBAC3B,CAAC,CAAC,GAAG,gBAAgB,IAAI;oBACzB,CAAC,CAAC,gBAAgB,CAAC;gBAErB,SAAS,CAAC,IAAI,CACZ,oBAAoB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,qBAAqB,OAAO,oBAAoB,gBAAgB,QAAQ,KAAK,CAAC,IAAI,MAAM,OAAO,GAAG,CAC5J,CAAC;gBACF,SAAS;YACX,CAAC;YAED,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,IAAI,KAAK,CAAC,OAAO;oBAAE,SAAS;gBAE5B,MAAM,eAAe,GAAG,8BAAkB,CAAC,MAAM,CAAC,IAAI,CACpD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAC7B,CAAC;gBAEF,IAAI,eAAe,EAAE,CAAC;oBACpB,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBACjC,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBACrC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;wBAAE,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAC9D,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAE7B,MAAM,eAAe,GAAG,GAAG,eAAe,CAAC,IAAI,YAAY,SAAU,CAAC,MAAM,KAAK,CAAC;oBAElF,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAChD,KAAK,EACL,eAAe,EACf,eAAe,EACf,cAAc,EACd,SAAS,EACT,YAAY,CACb,CAAC;oBAEF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;wBACnE,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBAExC,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC7C,SAAS,CAAC,IAAI,CACZ,uDAAuD,eAAe,QAAQ,KAAK,CAAC,IAAI,GAAG,YAAY,KAAK,eAAe,GAAG,CAC/H,CAAC;gBACJ,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,8BAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAED,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,oCAAoC,CACpE,KAAK,EACL,YAAY,EACZ,cAAc,CACf,CAAC;YACF,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,KAAK,KAAK,CAAC,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,WAAW,GACf,SAAS,CAAC,IAAI,GAAG,CAAC;YAChB,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B;YAC3E,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,gBAAgB,GACpB,cAAc,CAAC,IAAI,GAAG,CAAC;YACrB,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B;YACjF,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,kBAAkB,GACtB,gBAAgB,CAAC,IAAI,GAAG,CAAC;YACvB,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gCAAgC;YACrF,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,gBAAgB,GACpB,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5E,OAAO,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,WAAW,GAAG,gBAAgB;6BACvD,SAAU,CAAC,MAAM;EAC5C,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;EACtB,CAAC;IACD,CAAC;IAED,eAAe,CAAC,OAAwB;QACtC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAEjD,MAAM,GAAG,GAAG,IAAA,iCAAoB,GAAE,CAAC;QACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;QAClC,MAAM,YAAY,GAAG,SAAU,CAAC,KAAK,KAAK,MAAM,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QACzC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;QAE3C,IAAI,SAAS,GAAa,EAAE,CAAC;QAE7B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,IAAI,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC9C,SAAS;YACX,CAAC;YAED,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,SAAS;YACX,CAAC;YAED,IAAI,8BAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAED,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,2BAA2B,CAC3D,KAAK,EACL,YAAY,EACZ,cAAc,CACf,CAAC;YACF,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;YACpC,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,KAAK,KAAK,CAAC,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,WAAW,GACf,SAAS,CAAC,IAAI,GAAG,CAAC;YAChB,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B;YAC3E,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,gBAAgB,GACpB,cAAc,CAAC,IAAI,GAAG,CAAC;YACrB,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B;YACjF,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,kBAAkB,GACtB,gBAAgB,CAAC,IAAI,GAAG,CAAC;YACvB,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gCAAgC;YACrF,CAAC,CAAC,EAAE,CAAC;QAET,OAAO,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,WAAW;uBAC1C,SAAU,CAAC,MAAM;EACtC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;EACtB,CAAC;IACD,CAAC;IAED,gBAAgB,CAAC,OAAwB;QACvC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAEjD,MAAM,GAAG,GAAG,IAAA,iCAAoB,GAAE,CAAC;QACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;QAClC,MAAM,YAAY,GAAG,SAAU,CAAC,KAAK,KAAK,MAAM,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QACzC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC3C,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9C,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,eAAe,GAAG;YACtB,WAAW;YACX,WAAW;YACX,WAAW;YACX,YAAY;YACZ,YAAY;YACZ,YAAY;SACb,CAAC;QAEF,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACjC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/B,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/B,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACrC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACjC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7B,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAElC,IAAI,SAAS,GAAa,EAAE,CAAC;QAC7B,IAAI,kBAAkB,GAAa,EAAE,CAAC;QACtC,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAE7C,SAAS,CAAC,IAAI,CACZ,2GAA2G,YAAY,WAAW,CACnI,CAAC;QACF,SAAS,CAAC,IAAI,CACZ,yHAAyH,YAAY,WAAW,CACjJ,CAAC;QACF,SAAS,CAAC,IAAI,CACZ,iFAAiF,YAAY,WAAW,CACzG,CAAC;QACF,SAAS,CAAC,IAAI,CACZ,mFAAmF,YAAY,WAAW,CAC3G,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,IAAI,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;gBAAE,SAAS;YACxD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,SAAS;YAEpD,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,KAAK,CAAC,IAAI,CACxC,CAAC;YACF,IAAI,YAAY;gBAAE,SAAS;YAE3B,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,IAAI,KAAK,CAAC,OAAO;oBAAE,SAAS;gBAE5B,MAAM,eAAe,GAAG,8BAAkB,CAAC,MAAM,CAAC,IAAI,CACpD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAC7B,CAAC;gBAEF,IAAI,eAAe,EAAE,CAAC;oBACpB,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBACrC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAE7B,MAAM,eAAe,GAAG,GAAG,eAAe,CAAC,IAAI,WAAW,SAAU,CAAC,MAAM,KAAK,CAAC;oBAEjF,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAChD,KAAK,EACL,eAAe,EACf,eAAe,EACf,cAAc,EACd,SAAS,EACT,YAAY,CACb,CAAC;oBAEF,IACE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;wBACjE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CACpC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CACnC,EACD,CAAC;wBACD,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBACxC,CAAC;oBAED,MAAM,QAAQ,GAAG,uDAAuD,eAAe,QAAQ,KAAK,CAAC,IAAI,GAAG,YAAY,KAAK,eAAe,GAAG,CAAC;oBAEhJ,IAAI,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;wBACzC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACpC,CAAC;yBAAM,CAAC;wBACN,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC3B,CAAC;gBACH,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,8BAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC1B,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAE7B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;gBAC5B,MAAM,QAAQ,GAAG,8BAA8B,QAAQ,QAAQ,KAAK,CAAC,IAAI,GAAG,YAAY,KAAK,QAAQ,GAAG,CAAC;gBAEzG,IAAI,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC3B,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7B,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAEhC,MAAM,QAAQ,GAAG,sCAAsC,KAAK,CAAC,IAAI,GAAG,YAAY,YAAY,CAAC;gBAE7F,IAAI,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC3B,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAChE,IAAI,UAAU,EAAE,CAAC;gBACf,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACpC,MAAM,QAAQ,GAAG,uDAAuD,UAAU,QAAQ,KAAK,CAAC,IAAI,GAAG,YAAY,KAAK,UAAU,GAAG,CAAC;gBAEtI,IAAI,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC5C,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC5C,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,mBAAmB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC9C,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,WAAW,GACf,SAAS,CAAC,IAAI,GAAG,CAAC;YAChB,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B;YAC3E,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,gBAAgB,GACpB,cAAc,CAAC,IAAI,GAAG,CAAC;YACrB,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B;YACjF,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,kBAAkB,GACtB,gBAAgB,CAAC,IAAI,GAAG,CAAC;YACvB,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gCAAgC;YACrF,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAC9C,mBAAmB,EACnB,SAAS,EACT,cAAc,EACd,YAAY,CACb,CAAC;QAEF,MAAM,oBAAoB,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,aAAa,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAEzE,MAAM,gBAAgB,GACpB,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5E,MAAM,SAAS,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,kBAAkB,CAAC,CAAC;QAExD,OAAO,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,WAAW,GAAG,oBAAoB,GAAG,gBAAgB;uBACpF,SAAU,CAAC,MAAM;EACtC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;EACtB,CAAC;IACD,CAAC;IAEO,qBAAqB,CAC3B,KAAkB,EAClB,SAAsB;QAEtB,IAAI,8BAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1B,OAAO,GAAG,KAAK,CAAC,IAAI,QAAQ,CAAC;QAC/B,CAAC;QAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,QAAQ;gBACX,OAAO,cAAc,CAAC;YACxB,KAAK,KAAK,CAAC;YACX,KAAK,OAAO,CAAC;YACb,KAAK,SAAS,CAAC;YACf,KAAK,QAAQ;gBACX,OAAO,cAAc,CAAC;YACxB,KAAK,UAAU;gBACb,OAAO,gBAAgB,CAAC;YAC1B;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAEO,qBAAqB,CAC3B,mBAAgC,EAChC,CAAc,EACd,EAAe,EACf,YAAqB;QAErB,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAE7C,IAAI,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC;;;;aAIN,YAAY;EACvB,CAAC,CAAC;QACA,CAAC;QAED,IAAI,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC;;;;UAIT,YAAY;;;;;OAKf,YAAY;;;;;OAKZ,YAAY;EACjB,CAAC,CAAC;QACA,CAAC;QAED,IAAI,mBAAmB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC;;;;UAIT,YAAY;;;;;OAKf,YAAY;;;;;OAKZ,YAAY;EACjB,CAAC,CAAC;QACA,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAEO,sBAAsB,CAC5B,KAAkB,EAClB,eAA4B,EAC5B,OAAe,EACf,cAA2B,EAC3B,SAAsB,EACtB,YAAqB;QAErB,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,MAAM,YAAY,GAAG,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC;QACzD,MAAM,qBAAqB,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CACvD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAC/B,CAAC;QAEF,IAAI,qBAAqB,EAAE,CAAC;YAC1B,IAAI,8BAAkB,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC;gBACvD,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAE5C,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,2BAA2B,CAC3D,qBAAqB,EACrB,KAAK,EACL,cAAc,CACf,CAAC;YACF,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,MAAM,CAAC,IAAI,CACT,GAAG,UAAU,KAAK,qBAAqB,CAAC,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CACxE,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,OAAO;EACzB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;EACnB,CAAC;IACD,CAAC;IAEO,2BAA2B,CACjC,KAAkB,EAClB,YAAqB,EACrB,cAA2B;QAE3B,IAAI,UAAU,GAAa,EAAE,CAAC;QAC9B,IAAI,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE9C,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC;QACxE,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACjC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,OAAO;gBAAE,UAAU,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;;gBAC7D,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACtC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9B,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9B,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC;QACrB,CAAC;QAED,IAAI,8BAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,UAAU,CAAC,IAAI,CACb,WAAW,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,CACnE,CAAC;YACF,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YACvE,UAAU,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;YACpC,eAAe,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;gBACpC,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,aAAa;oBAAE,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,UAAU,EACR,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC1C,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,IAAI;SACL,CAAC;IACJ,CAAC;IAEO,oCAAoC,CAC1C,KAAkB,EAClB,YAAqB,EACrB,cAA2B;QAE3B,IAAI,UAAU,GAAa,EAAE,CAAC;QAC9B,IAAI,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE9C,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACjC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAEjC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,OAAO;gBAAE,UAAU,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;;gBAC7D,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACtC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9B,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9B,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC;QACrB,CAAC;QAED,IAAI,8BAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,UAAU,CAAC,IAAI,CACb,WAAW,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,CACnE,CAAC;YACF,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YACvE,UAAU,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;YACpC,eAAe,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;gBACpC,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,aAAa;oBAAE,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,UAAU,EACR,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC1C,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,IAAI;SACL,CAAC;IACJ,CAAC;IAEO,oBAAoB,CAC1B,KAAkB,EAClB,YAAqB;QAErB,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QAExD,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC3B,OAAO,CAAC,YAAY,CAAC,CAAC;YACxB,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACrC,OAAO;oBACL,aAAa;oBACb,eAAe;oBACf,wJAAwJ;iBACzJ,CAAC;YACJ,CAAC;QACH,CAAC;QAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,QAAQ;gBACX,UAAU,CAAC,IAAI,CAAC,aAAa,SAAS,GAAG,CAAC,CAAC;gBAC3C,MAAM;YACR,KAAK,KAAK,CAAC;YACX,KAAK,OAAO,CAAC;YACb,KAAK,SAAS;gBACZ,UAAU,CAAC,IAAI,CAAC,aAAa,SAAS,GAAG,CAAC,CAAC;gBAC3C,MAAM;YACR,KAAK,SAAS;gBACZ,UAAU,CAAC,IAAI,CAAC,cAAc,SAAS,GAAG,CAAC,CAAC;gBAC5C,MAAM;YACR,KAAK,UAAU;gBACb,UAAU,CAAC,IAAI,CAAC,WAAW,SAAS,GAAG,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,QAAQ;gBACX,UAAU,CAAC,IAAI,CAAC,aAAa,SAAS,GAAG,CAAC,CAAC;gBAC3C,MAAM;YACR,KAAK,MAAM;gBACT,UAAU,CAAC,IAAI,CAAC,aAAa,SAAS,GAAG,CAAC,CAAC;gBAC3C,MAAM;YACR,KAAK,OAAO;gBACV,MAAM;YACR;gBACE,MAAM;QACV,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,iBAAiB,CAAC,UAAkB;QAC1C,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,QAAQ;gBACX,OAAO,QAAQ,CAAC;YAClB,KAAK,KAAK,CAAC;YACX,KAAK,OAAO,CAAC;YACb,KAAK,SAAS;gBACZ,OAAO,QAAQ,CAAC;YAClB,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAC;YACnB,KAAK,UAAU;gBACb,OAAO,MAAM,CAAC;YAChB,KAAK,MAAM;gBACT,OAAO,KAAK,CAAC;YACf,KAAK,OAAO;gBACV,OAAO,QAAQ,CAAC;YAClB,KAAK,QAAQ;gBACX,OAAO,QAAQ,CAAC;YAClB;gBACE,IACE,8BAAkB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;oBAEpE,OAAO,UAAU,CAAC;gBACpB,OAAO,8BAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;QACtE,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,CAAkB;QACjC,MAAM,GAAG,GAAG,IAAA,iCAAoB,GAAE,CAAC;QACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;QAClC,MAAM,gBAAgB,GAAG,IAAA,qCAAc,GAAE,EAAE,cAAc,EAAE,KAAK;YAC9D,EAAE,gBAAgB,IAAI,CAAC,UAAU,CAAC,CAAC;QAErC,MAAM,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAa,EAAE,EAAE;YAC5D,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YAC1E,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,MAAM,cAAc,GAClB,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAC;YACjE,OAAO,kBAAkB,cAAc,OAAO,WAAW,GAAG,YAAY,WAAW,CAAC;QACtF,CAAC,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;YAC7B,YAAY;YACZ,YAAY;YACZ,UAAU;YACV,WAAW;YACX,SAAS;SACV,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CACpC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CACtE,CAAC;QACF,IAAI,QAAQ;YAAE,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE5C,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAE7C,OAAO,YAAY,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAG1D,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;;;;;;;;YAQjB,YAAY;;CAEvB,CAAC;IACA,CAAC;IAED,iBAAiB,CAAC,CAAkB;QAClC,MAAM,GAAG,GAAG,IAAA,iCAAoB,GAAE,CAAC;QACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;QAElC,MAAM,SAAS,GAAG,8BAAkB,CAAC,MAAM,CAAC,IAAI,CAC9C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CACvC,CAAC;QACF,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAEzE,MAAM,gBAAgB,GAAG;YACvB,IAAI;YACJ,WAAW;YACX,WAAW;YACX,WAAW;YACX,OAAO;YACP,MAAM;YACN,UAAU;YACV,SAAS;YACT,aAAa;YACb,mBAAmB;YACnB,sBAAsB;YACtB,aAAa;SACd,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QACzC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC3C,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,KAAK,CAAC,IAAI,CACxC,CAAC;YACF,IAAI,KAAK,CAAC,IAAI,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY;gBACrE,SAAS;YAEX,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,IAAI,KAAK,CAAC,OAAO;oBAAE,SAAS;gBAC5B,MAAM,eAAe,GAAG,8BAAkB,CAAC,MAAM,CAAC,IAAI,CACpD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAC7B,CAAC;gBACF,IAAI,eAAe,EAAE,CAAC;oBACpB,MAAM,UAAU,GACd,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC;oBACvD,IAAI,UAAU;wBAAE,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBACjD,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBACrC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC7B,MAAM,eAAe,GAAG,GAAG,eAAe,CAAC,IAAI,cAAc,CAAC;oBAC9D,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAChD,KAAK,EACL,eAAe,EACf,eAAe,EACf,cAAc,EACd,SAAS,EACT,YAAY,CACb,CAAC;oBACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;wBACrD,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBACxC,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClE,SAAS,CAAC,IAAI,CACZ,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,oCAAoC,eAAe,QAAQ,KAAK,CAAC,IAAI,GAAG,YAAY,KAAK,eAAe,GAAG,CACtJ,CAAC;gBACJ,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,8BAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAErE,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC9B,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACjC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAC/B,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAChC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC9B,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,SAAS,CAAC,IAAI,CACZ,uOAAuO,KAAK,CAAC,IAAI,GAAG,YAAY,WAAW,CAC5Q,CAAC;gBACF,SAAS;YACX,CAAC;YAED,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,2BAA2B,CAC3D,KAAK,EACL,IAAI,EACJ,cAAc,CACf,CAAC;YACF,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC;YACxE,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,KAAK,KAAK,CAAC,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,WAAW,GACf,SAAS,CAAC,IAAI,GAAG,CAAC;YAChB,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B;YAC3E,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,gBAAgB,GACpB,cAAc,CAAC,IAAI,GAAG,CAAC;YACrB,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B;YACjF,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,kBAAkB,GACtB,gBAAgB,CAAC,IAAI,GAAG,CAAC;YACvB,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gCAAgC;YACrF,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,gBAAgB,GACpB,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5E,OAAO,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,WAAW,GAAG,gBAAgB;;EAElF,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;;CAEvB,CAAC;IACA,CAAC;IAED,mBAAmB,CAAC,CAAkB;QACpC,MAAM,GAAG,GAAG,IAAA,iCAAoB,GAAE,CAAC;QACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;QAElC,MAAM,SAAS,GAAG,8BAAkB,CAAC,MAAM,CAAC,IAAI,CAC9C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CACvC,CAAC;QACF,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAEzE,MAAM,gBAAgB,GAAG;YACvB,IAAI;YACJ,WAAW;YACX,WAAW;YACX,WAAW;YACX,OAAO;YACP,MAAM;YACN,UAAU;YACV,SAAS;YACT,aAAa;YACb,mBAAmB;YACnB,sBAAsB;YACtB,aAAa;YACb,UAAU;SACX,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QACzC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC3C,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,KAAK,CAAC,IAAI,CACxC,CAAC;YACF,IAAI,KAAK,CAAC,IAAI,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY;gBACrE,SAAS;YAEX,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,IAAI,KAAK,CAAC,OAAO;oBAAE,SAAS;gBAC5B,MAAM,eAAe,GAAG,8BAAkB,CAAC,MAAM,CAAC,IAAI,CACpD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAC7B,CAAC;gBACF,IAAI,eAAe,EAAE,CAAC;oBACpB,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBACjC,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBACrC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC7B,MAAM,eAAe,GAAG,GAAG,eAAe,CAAC,IAAI,gBAAgB,CAAC;oBAChE,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAChD,KAAK,EACL,eAAe,EACf,eAAe,EACf,cAAc,EACd,SAAS,EACT,YAAY,CACb,CAAC;oBACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;wBACrD,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBACxC,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC7C,SAAS,CAAC,IAAI,CACZ,uDAAuD,eAAe,QAAQ,KAAK,CAAC,IAAI,GAAG,YAAY,KAAK,eAAe,GAAG,CAC/H,CAAC;gBACJ,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,8BAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAErE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,oCAAoC,CACpE,KAAK,EACL,IAAI,EACJ,cAAc,CACf,CAAC;YACF,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,KAAK,KAAK,CAAC,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,WAAW,GACf,SAAS,CAAC,IAAI,GAAG,CAAC;YAChB,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B;YAC3E,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,gBAAgB,GACpB,cAAc,CAAC,IAAI,GAAG,CAAC;YACrB,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B;YACjF,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,kBAAkB,GACtB,gBAAgB,CAAC,IAAI,GAAG,CAAC;YACvB,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gCAAgC;YACrF,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,gBAAgB,GACpB,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5E,OAAO,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,WAAW,GAAG,gBAAgB;;EAElF,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;;CAEvB,CAAC;IACA,CAAC;IAED,yBAAyB,CAAC,CAAkB;QAC1C,MAAM,GAAG,GAAG,IAAA,iCAAoB,GAAE,CAAC;QACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;QAClC,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAE7C,OAAO;;;;;mBAKQ,YAAY;;;;;;;;eAQhB,YAAY;;CAE1B,CAAC;IACA,CAAC;CACF;AA7lCD,gEA6lCC;AAED,MAAM,0BAA0B,GAAG,IAAI,0BAA0B,EAAE,CAAC;AAEpE,kBAAe,0BAA0B,CAAC","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 );\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 );\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.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 );\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 );\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 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 );\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 );\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 );\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 );\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,64 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.generateControllerTemplate = generateControllerTemplate;
7
- const prisma_schema_parser_1 = __importDefault(require("../../../../prisma/prisma-schema-parser.js"));
8
- const change_case_helpers_1 = require("../../../../helpers/change-case.helpers.js");
9
- function generateControllerTemplate(options) {
10
- const { modelName, imports } = options;
11
- if (!modelName)
12
- throw new Error("Module name is required for controller template");
13
- const camelName = modelName.camel;
14
- let controllerType;
15
- let controllerName;
16
- let controllerImport;
17
- const models = prisma_schema_parser_1.default
18
- .getModelsAsArrayOfStrings()
19
- .map((val) => (0, change_case_helpers_1.kebabCase)(val));
20
- if (camelName === "fileUpload") {
21
- controllerType = "fileUpload";
22
- controllerName = "FileUploadController";
23
- controllerImport = imports?.fileUploadController || "arkos/controllers";
24
- }
25
- else if (camelName === "auth") {
26
- controllerType = "auth";
27
- controllerName = "AuthController";
28
- controllerImport = imports?.authController || "arkos/controllers";
29
- }
30
- else if (camelName === "email") {
31
- controllerType = "email";
32
- controllerName = "EmailController";
33
- controllerImport = imports?.emailController || "arkos/controllers";
34
- }
35
- else if (models.includes(modelName.kebab)) {
36
- controllerType = "base";
37
- controllerName = "BaseController";
38
- controllerImport = imports?.baseController || "arkos/controllers";
39
- }
40
- else {
41
- controllerType = "custom";
42
- controllerName = "BaseController";
43
- controllerImport = imports?.baseController || "arkos/controllers";
44
- }
45
- const controllerClassImport = `import { ${controllerName} } from "${controllerImport}";`;
46
- if (["email", "auth", "fileUpload"].includes(camelName) ||
47
- !models.includes(modelName.kebab))
48
- return `class ${modelName.pascal}Controller {}
49
-
50
- const ${modelName.camel}Controller = new ${modelName.pascal}Controller(${controllerType === "base" ? `"${modelName.kebab}"` : ""});
51
-
52
- export default ${modelName.camel}Controller;
53
- `;
54
- else
55
- return `${controllerClassImport}
56
-
57
- export class ${modelName.pascal}Controller extends ${controllerName} {}
58
-
59
- const ${modelName.camel}Controller = new ${modelName.pascal}Controller(${controllerType === "base" ? `"${modelName.kebab}"` : ""});
60
-
61
- export default ${modelName.camel}Controller;
62
- `;
63
- }
64
- //# sourceMappingURL=generate-controller-template.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-controller-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/generate-controller-template.ts"],"names":[],"mappings":";;;;;AAIA,gEA0DC;AA7DD,mGAAyE;AACzE,iFAAoE;AAEpE,SAAgB,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,8BAAkB;SAC9B,yBAAyB,EAAE;SAC3B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,+BAAS,EAAC,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,242 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.default = generateMultipleComponents;
7
- const path_1 = __importDefault(require("path"));
8
- const change_case_helpers_1 = require("../../../../helpers/change-case.helpers.js");
9
- const exit_error_1 = __importDefault(require("../../../../helpers/exit-error.js"));
10
- const sheu_1 = __importDefault(require("../../../../sheu.js"));
11
- const generate_1 = require("../../../generate.js");
12
- const authOnlyComponents = new Set([
13
- "login-schema",
14
- "signup-schema",
15
- "update-me-schema",
16
- "update-password-schema",
17
- "login-dto",
18
- "signup-dto",
19
- "update-me-dto",
20
- "update-password-dto",
21
- ]);
22
- const prismaOnlyComponents = new Set([
23
- "model",
24
- "schema",
25
- "create-schema",
26
- "update-schema",
27
- "query-schema",
28
- "dto",
29
- "create-dto",
30
- "update-dto",
31
- "query-dto",
32
- ]);
33
- async function generateMultipleComponents(options) {
34
- const moduleInput = options.module || options.model;
35
- if (!moduleInput)
36
- throw (0, exit_error_1.default)("Module name is required. Use -m or --module flag.");
37
- if (options.path && path_1.default.extname(options.path) !== "")
38
- throw (0, exit_error_1.default)("--path or -p must be a directory when generating multiple components or modules.");
39
- const moduleNames = moduleInput
40
- .split(",")
41
- .map((m) => m.trim())
42
- .filter(Boolean);
43
- const componentMap = {
44
- s: generate_1.generateCommand.service,
45
- service: generate_1.generateCommand.service,
46
- c: generate_1.generateCommand.controller,
47
- controller: generate_1.generateCommand.controller,
48
- r: generate_1.generateCommand.router,
49
- router: generate_1.generateCommand.router,
50
- rh: generate_1.generateCommand.routeHook,
51
- routeHook: generate_1.generateCommand.routeHook,
52
- sh: generate_1.generateCommand.serviceHook,
53
- serviceHook: generate_1.generateCommand.serviceHook,
54
- sc: generate_1.generateCommand.baseSchema,
55
- schema: generate_1.generateCommand.baseSchema,
56
- cs: generate_1.generateCommand.createSchema,
57
- "create-schema": generate_1.generateCommand.createSchema,
58
- us: generate_1.generateCommand.updateSchema,
59
- "update-schema": generate_1.generateCommand.updateSchema,
60
- qs: generate_1.generateCommand.querySchema,
61
- "query-schema": generate_1.generateCommand.querySchema,
62
- d: generate_1.generateCommand.baseDto,
63
- dto: generate_1.generateCommand.baseDto,
64
- cd: generate_1.generateCommand.createDto,
65
- "create-dto": generate_1.generateCommand.createDto,
66
- ud: generate_1.generateCommand.updateDto,
67
- "update-dto": generate_1.generateCommand.updateDto,
68
- qd: generate_1.generateCommand.queryDto,
69
- "query-dto": generate_1.generateCommand.queryDto,
70
- m: generate_1.generateCommand.prismaModel,
71
- model: generate_1.generateCommand.prismaModel,
72
- p: generate_1.generateCommand.policy,
73
- policy: generate_1.generateCommand.policy,
74
- ls: generate_1.generateCommand.loginSchema,
75
- "login-schema": generate_1.generateCommand.loginSchema,
76
- ss: generate_1.generateCommand.signupSchema,
77
- "signup-schema": generate_1.generateCommand.signupSchema,
78
- ums: generate_1.generateCommand.updateMeSchema,
79
- "update-me-schema": generate_1.generateCommand.updateMeSchema,
80
- ups: generate_1.generateCommand.updatePasswordSchema,
81
- "update-password-schema": generate_1.generateCommand.updatePasswordSchema,
82
- ld: generate_1.generateCommand.loginDto,
83
- "login-dto": generate_1.generateCommand.loginDto,
84
- sd: generate_1.generateCommand.signupDto,
85
- "signup-dto": generate_1.generateCommand.signupDto,
86
- umd: generate_1.generateCommand.updateMeDto,
87
- "update-me-dto": generate_1.generateCommand.updateMeDto,
88
- upd: generate_1.generateCommand.updatePasswordDto,
89
- "update-password-dto": generate_1.generateCommand.updatePasswordDto,
90
- };
91
- const allComponents = [
92
- "model",
93
- "schema",
94
- "create-schema",
95
- "update-schema",
96
- "query-schema",
97
- "dto",
98
- "create-dto",
99
- "update-dto",
100
- "query-dto",
101
- "query-options",
102
- "service",
103
- "controller",
104
- "router",
105
- "interceptors",
106
- "hooks",
107
- "auth-configs",
108
- "policy",
109
- ];
110
- const allAuthComponents = [
111
- "login-schema",
112
- "signup-schema",
113
- "update-me-schema",
114
- "update-password-schema",
115
- "login-dto",
116
- "signup-dto",
117
- "update-me-dto",
118
- "update-password-dto",
119
- "query-options",
120
- "interceptors",
121
- "hooks",
122
- "router",
123
- "policy",
124
- ];
125
- const defaultPaths = {
126
- "create-schema": "src/modules/{{module-name}}/schemas",
127
- "update-schema": "src/modules/{{module-name}}/schemas",
128
- "query-schema": "src/modules/{{module-name}}/schemas",
129
- schema: "src/modules/{{module-name}}/schemas",
130
- "create-dto": "src/modules/{{module-name}}/dtos",
131
- "update-dto": "src/modules/{{module-name}}/dtos",
132
- "query-dto": "src/modules/{{module-name}}/dtos",
133
- dto: "src/modules/{{module-name}}/dtos",
134
- model: "prisma/schema",
135
- "login-schema": "src/modules/auth/schemas",
136
- "signup-schema": "src/modules/auth/schemas",
137
- "update-me-schema": "src/modules/auth/schemas",
138
- "update-password-schema": "src/modules/auth/schemas",
139
- "login-dto": "src/modules/auth/dtos",
140
- "signup-dto": "src/modules/auth/dtos",
141
- "update-me-dto": "src/modules/auth/dtos",
142
- "update-password-dto": "src/modules/auth/dtos",
143
- };
144
- let requestedComponents = [];
145
- if (options.all) {
146
- }
147
- else if (options.names) {
148
- const requested = options.names
149
- .split(",")
150
- .map((c) => c.trim())
151
- .filter(Boolean);
152
- for (const comp of requested) {
153
- if (componentMap[comp]) {
154
- const fullName = Object.keys(componentMap).find((k) => componentMap[k] === componentMap[comp] && k.length > 2) || comp;
155
- if (!requestedComponents.includes(fullName)) {
156
- requestedComponents.push(fullName);
157
- }
158
- }
159
- else {
160
- sheu_1.default.warn(`Unknown component: "${comp}" - skipping`);
161
- }
162
- }
163
- if (requestedComponents.length === 0)
164
- throw new Error("No valid components specified.");
165
- }
166
- else {
167
- throw new Error("Please specify either --all or --names flag.\n" +
168
- "Examples:\n" +
169
- " arkos g components -m user --all\n" +
170
- " arkos g components -m user,post,auth --names s,sc,m");
171
- }
172
- const isMultipleModules = moduleNames.length > 1;
173
- let totalSuccess = 0;
174
- let totalFail = 0;
175
- if (isMultipleModules) {
176
- console.log("");
177
- sheu_1.default.info(`Generating components for modules: ${moduleNames.join(", ")}\n`);
178
- }
179
- for (const moduleName of moduleNames) {
180
- const isAuth = (0, change_case_helpers_1.kebabCase)(moduleName) === "auth";
181
- const names = {
182
- pascal: (0, change_case_helpers_1.pascalCase)(moduleName),
183
- camel: (0, change_case_helpers_1.camelCase)(moduleName),
184
- kebab: (0, change_case_helpers_1.kebabCase)(moduleName),
185
- };
186
- const readableName = names.kebab.replaceAll("-", " ");
187
- let componentsToGenerate;
188
- if (options.all) {
189
- componentsToGenerate = isAuth ? allAuthComponents : allComponents;
190
- }
191
- else {
192
- componentsToGenerate = requestedComponents.filter((comp) => {
193
- if (authOnlyComponents.has(comp) && !isAuth) {
194
- sheu_1.default.warn(`Skipping "${comp}" for module "${moduleName}" — only valid for auth`);
195
- return false;
196
- }
197
- if (prismaOnlyComponents.has(comp) && isAuth) {
198
- sheu_1.default.warn(`Skipping "${comp}" for module "${moduleName}" — not valid for auth`);
199
- return false;
200
- }
201
- return true;
202
- });
203
- }
204
- if (isMultipleModules) {
205
- console.log("");
206
- sheu_1.default.info(`Module ${readableName}`);
207
- }
208
- else {
209
- console.log("");
210
- sheu_1.default.info(`Generating components for ${readableName}`);
211
- if (!options.all)
212
- sheu_1.default.info(`Components: ${componentsToGenerate.join(", ")}\n`);
213
- }
214
- let successCount = 0;
215
- let failCount = 0;
216
- for (const componentName of componentsToGenerate) {
217
- try {
218
- await componentMap[componentName]({
219
- ...options,
220
- module: moduleName,
221
- model: undefined,
222
- path: options.path || defaultPaths[componentName],
223
- shouldExit: false,
224
- shouldPrintError: false,
225
- isBulk: true,
226
- });
227
- successCount++;
228
- }
229
- catch (error) {
230
- sheu_1.default.error(`Failed to generate ${componentName} for ${readableName}: ${error?.message}`);
231
- failCount++;
232
- }
233
- }
234
- totalSuccess += successCount;
235
- totalFail += failCount;
236
- }
237
- console.info("");
238
- sheu_1.default.done(`Components generation complete for: ${moduleNames.map((m) => m.replaceAll("-", " ")).join(", ")}`);
239
- if (totalFail > 0)
240
- process.exit(1);
241
- }
242
- //# sourceMappingURL=generate-multiple-components.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-multiple-components.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/generate-multiple-components.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"path\";\nimport {\n camelCase,\n kebabCase,\n pascalCase,\n} from \"../../../../helpers/change-case.helpers\";\nimport ExitError from \"../../../../helpers/exit-error\";\nimport sheu from \"../../../../sheu\";\nimport { generateCommand, GenerateOptions } from \"../../../generate\";\n\nexport type MultipleComponentsGenerateOptions = GenerateOptions & {\n all?: boolean;\n names?: string;\n};\n\nconst authOnlyComponents = new Set([\n \"login-schema\",\n \"signup-schema\",\n \"update-me-schema\",\n \"update-password-schema\",\n \"login-dto\",\n \"signup-dto\",\n \"update-me-dto\",\n \"update-password-dto\",\n]);\n\nconst prismaOnlyComponents = new Set([\n \"model\",\n \"schema\",\n \"create-schema\",\n \"update-schema\",\n \"query-schema\",\n \"dto\",\n \"create-dto\",\n \"update-dto\",\n \"query-dto\",\n]);\n\nexport default async function generateMultipleComponents(\n options: MultipleComponentsGenerateOptions\n) {\n const moduleInput = options.module || options.model;\n\n if (!moduleInput)\n throw ExitError(\"Module name is required. Use -m or --module flag.\");\n\n if (options.path && path.extname(options.path) !== \"\")\n throw ExitError(\n \"--path or -p must be a directory when generating multiple components or modules.\"\n );\n\n const moduleNames = moduleInput\n .split(\",\")\n .map((m: string) => m.trim())\n .filter(Boolean);\n\n const componentMap: Record<string, Function> = {\n s: generateCommand.service,\n service: generateCommand.service,\n c: generateCommand.controller,\n controller: generateCommand.controller,\n r: generateCommand.router,\n router: generateCommand.router,\n rh: generateCommand.routeHook,\n routeHook: generateCommand.routeHook,\n sh: generateCommand.serviceHook,\n serviceHook: generateCommand.serviceHook,\n sc: generateCommand.baseSchema,\n schema: generateCommand.baseSchema,\n cs: generateCommand.createSchema,\n \"create-schema\": generateCommand.createSchema,\n us: generateCommand.updateSchema,\n \"update-schema\": generateCommand.updateSchema,\n qs: generateCommand.querySchema,\n \"query-schema\": generateCommand.querySchema,\n d: generateCommand.baseDto,\n dto: generateCommand.baseDto,\n cd: generateCommand.createDto,\n \"create-dto\": generateCommand.createDto,\n ud: generateCommand.updateDto,\n \"update-dto\": generateCommand.updateDto,\n qd: generateCommand.queryDto,\n \"query-dto\": generateCommand.queryDto,\n m: generateCommand.prismaModel,\n model: generateCommand.prismaModel,\n p: generateCommand.policy,\n policy: generateCommand.policy,\n ls: generateCommand.loginSchema,\n \"login-schema\": generateCommand.loginSchema,\n ss: generateCommand.signupSchema,\n \"signup-schema\": generateCommand.signupSchema,\n ums: generateCommand.updateMeSchema,\n \"update-me-schema\": generateCommand.updateMeSchema,\n ups: generateCommand.updatePasswordSchema,\n \"update-password-schema\": generateCommand.updatePasswordSchema,\n ld: generateCommand.loginDto,\n \"login-dto\": generateCommand.loginDto,\n sd: generateCommand.signupDto,\n \"signup-dto\": generateCommand.signupDto,\n umd: generateCommand.updateMeDto,\n \"update-me-dto\": generateCommand.updateMeDto,\n upd: generateCommand.updatePasswordDto,\n \"update-password-dto\": generateCommand.updatePasswordDto,\n };\n\n const allComponents = [\n \"model\",\n \"schema\",\n \"create-schema\",\n \"update-schema\",\n \"query-schema\",\n \"dto\",\n \"create-dto\",\n \"update-dto\",\n \"query-dto\",\n \"query-options\",\n \"service\",\n \"controller\",\n \"router\",\n \"interceptors\",\n \"hooks\",\n \"auth-configs\",\n \"policy\",\n ];\n\n const allAuthComponents = [\n \"login-schema\",\n \"signup-schema\",\n \"update-me-schema\",\n \"update-password-schema\",\n \"login-dto\",\n \"signup-dto\",\n \"update-me-dto\",\n \"update-password-dto\",\n \"query-options\",\n \"interceptors\",\n \"hooks\",\n \"router\",\n \"policy\",\n ];\n\n const defaultPaths: Record<string, string> = {\n \"create-schema\": \"src/modules/{{module-name}}/schemas\",\n \"update-schema\": \"src/modules/{{module-name}}/schemas\",\n \"query-schema\": \"src/modules/{{module-name}}/schemas\",\n schema: \"src/modules/{{module-name}}/schemas\",\n \"create-dto\": \"src/modules/{{module-name}}/dtos\",\n \"update-dto\": \"src/modules/{{module-name}}/dtos\",\n \"query-dto\": \"src/modules/{{module-name}}/dtos\",\n dto: \"src/modules/{{module-name}}/dtos\",\n model: \"prisma/schema\",\n \"login-schema\": \"src/modules/auth/schemas\",\n \"signup-schema\": \"src/modules/auth/schemas\",\n \"update-me-schema\": \"src/modules/auth/schemas\",\n \"update-password-schema\": \"src/modules/auth/schemas\",\n \"login-dto\": \"src/modules/auth/dtos\",\n \"signup-dto\": \"src/modules/auth/dtos\",\n \"update-me-dto\": \"src/modules/auth/dtos\",\n \"update-password-dto\": \"src/modules/auth/dtos\",\n };\n\n // Resolve which components to generate from --names or --all\n // (done once, applied per module with filtering)\n let requestedComponents: string[] = [];\n\n if (options.all) {\n // will be resolved per module below\n } else if (options.names) {\n const requested = options.names\n .split(\",\")\n .map((c: string) => c.trim())\n .filter(Boolean);\n\n for (const comp of requested) {\n if (componentMap[comp]) {\n const fullName =\n Object.keys(componentMap).find(\n (k) => componentMap[k] === componentMap[comp] && k.length > 2\n ) || comp;\n if (!requestedComponents.includes(fullName)) {\n requestedComponents.push(fullName);\n }\n } else {\n sheu.warn(`Unknown component: \"${comp}\" - skipping`);\n }\n }\n\n if (requestedComponents.length === 0)\n throw new Error(\"No valid components specified.\");\n } else {\n throw new Error(\n \"Please specify either --all or --names flag.\\n\" +\n \"Examples:\\n\" +\n \" arkos g components -m user --all\\n\" +\n \" arkos g components -m user,post,auth --names s,sc,m\"\n );\n }\n\n const isMultipleModules = moduleNames.length > 1;\n let totalSuccess = 0;\n let totalFail = 0;\n\n if (isMultipleModules) {\n console.log(\"\");\n sheu.info(`Generating components for modules: ${moduleNames.join(\", \")}\\n`);\n }\n\n for (const moduleName of moduleNames) {\n const isAuth = kebabCase(moduleName) === \"auth\";\n const names = {\n pascal: pascalCase(moduleName),\n camel: camelCase(moduleName),\n kebab: kebabCase(moduleName),\n };\n const readableName = names.kebab.replaceAll(\"-\", \" \");\n\n // Resolve components for this specific module\n let componentsToGenerate: string[];\n\n if (options.all) {\n componentsToGenerate = isAuth ? allAuthComponents : allComponents;\n } else {\n // Filter requested components — skip auth-only for non-auth, skip prisma-only for auth\n componentsToGenerate = requestedComponents.filter((comp) => {\n if (authOnlyComponents.has(comp) && !isAuth) {\n sheu.warn(\n `Skipping \"${comp}\" for module \"${moduleName}\" — only valid for auth`\n );\n return false;\n }\n if (prismaOnlyComponents.has(comp) && isAuth) {\n sheu.warn(\n `Skipping \"${comp}\" for module \"${moduleName}\" — not valid for auth`\n );\n return false;\n }\n return true;\n });\n }\n\n if (isMultipleModules) {\n console.log(\"\");\n sheu.info(`Module ${readableName}`);\n } else {\n console.log(\"\");\n sheu.info(`Generating components for ${readableName}`);\n if (!options.all)\n sheu.info(`Components: ${componentsToGenerate.join(\", \")}\\n`);\n }\n\n let successCount = 0;\n let failCount = 0;\n\n for (const componentName of componentsToGenerate) {\n try {\n await componentMap[componentName]({\n ...options,\n module: moduleName,\n model: undefined,\n path: options.path || defaultPaths[componentName],\n shouldExit: false,\n shouldPrintError: false,\n isBulk: true,\n });\n successCount++;\n } catch (error: any) {\n sheu.error(\n `Failed to generate ${componentName} for ${readableName}: ${error?.message}`\n );\n failCount++;\n }\n }\n\n totalSuccess += successCount;\n totalFail += failCount;\n }\n\n console.info(\"\");\n sheu.done(\n `Components generation complete for: ${moduleNames.map((m) => m.replaceAll(\"-\", \" \")).join(\", \")}`\n );\n\n if (totalFail > 0) process.exit(1);\n}\n"]}
@@ -1,51 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.generatePolicyTemplate = generatePolicyTemplate;
7
- const arkos_config_helpers_1 = require("../../../../helpers/arkos-config.helpers.js");
8
- const change_case_helpers_1 = require("../../../../helpers/change-case.helpers.js");
9
- const prisma_schema_parser_1 = __importDefault(require("../../../../prisma/prisma-schema-parser.js"));
10
- function generatePolicyTemplate(options) {
11
- const { modelName } = options;
12
- const arkosConfig = (0, arkos_config_helpers_1.getArkosConfig)();
13
- if (!modelName)
14
- throw new Error("Module name is required for policy template");
15
- const modelNameCapitalized = modelName.kebab
16
- .replaceAll("-", " ")
17
- .split(" ")
18
- .map((w) => w.charAt(0).toUpperCase() + w.slice(1))
19
- .join(" ");
20
- const modelNameSpaced = modelName.kebab.replaceAll("-", " ");
21
- const models = prisma_schema_parser_1.default
22
- .getModelsAsArrayOfStrings()
23
- .map((m) => (0, change_case_helpers_1.kebabCase)(m.toLowerCase()));
24
- const isPrismaModel = models.includes(modelName.kebab.toLowerCase());
25
- const crudRules = isPrismaModel
26
- ? `
27
- .rule("Create", {
28
- ${arkosConfig?.authentication?.mode === "static" ? "roles: [],\n" : ""}name: "Create ${modelNameCapitalized}",
29
- description: "Permission to create new ${modelNameSpaced} records",
30
- })
31
- .rule("View", {
32
- ${arkosConfig?.authentication?.mode === "static" ? "roles: [],\n" : ""}name: "View ${modelNameCapitalized}",
33
- description: "Permission to view ${modelNameSpaced} records",
34
- })
35
- .rule("Update", {
36
- ${arkosConfig?.authentication?.mode === "static" ? "roles: [],\n" : ""}name: "Update ${modelNameCapitalized}",
37
- description: "Permission to update existing ${modelNameSpaced} records",
38
- })
39
- .rule("Delete", {
40
- ${arkosConfig?.authentication?.mode === "static" ? "roles: [],\n" : ""}name: "Delete ${modelNameCapitalized}",
41
- description: "Permission to delete ${modelNameSpaced} records",
42
- })`
43
- : "";
44
- return `import { ArkosPolicy } from "arkos";
45
-
46
- const ${modelName.camel}Policy = ArkosPolicy("${modelName.kebab}")${crudRules};
47
-
48
- export default ${modelName.camel}Policy;
49
- `;
50
- }
51
- //# sourceMappingURL=policy-template.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"policy-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/policy-template.ts"],"names":[],"mappings":";;;;;AAKA,wDA+CC;AApDD,mFAA0E;AAC1E,iFAAoE;AACpE,mGAAyE;AAGzE,SAAgB,sBAAsB,CAAC,OAAwB;IAC7D,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC9B,MAAM,WAAW,GAAG,IAAA,qCAAc,GAAE,CAAC;IAErC,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAEjE,MAAM,oBAAoB,GAAG,SAAS,CAAC,KAAK;SACzC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;SACpB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClD,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAE7D,MAAM,MAAM,GAAG,8BAAkB;SAC9B,yBAAyB,EAAE;SAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,+BAAS,EAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAE1C,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAErE,MAAM,SAAS,GAAG,aAAa;QAC7B,CAAC,CAAC;;MAEA,WAAW,EAAE,cAAc,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,iBAAiB,oBAAoB;6CAClE,eAAe;;;MAGtD,WAAW,EAAE,cAAc,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,eAAe,oBAAoB;uCACtE,eAAe;;;MAGhD,WAAW,EAAE,cAAc,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,iBAAiB,oBAAoB;kDAC7D,eAAe;;;MAG3D,WAAW,EAAE,cAAc,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,iBAAiB,oBAAoB;yCACtE,eAAe;KACnD;QACD,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;QAED,SAAS,CAAC,KAAK,yBAAyB,SAAS,CAAC,KAAK,KAAK,SAAS;;iBAE5D,SAAS,CAAC,KAAK;CAC/B,CAAC;AACF,CAAC","sourcesContent":["import { getArkosConfig } from \"../../../../helpers/arkos-config.helpers\";\nimport { kebabCase } from \"../../../../helpers/change-case.helpers\";\nimport prismaSchemaParser from \"../../../../prisma/prisma-schema-parser\";\nimport { TemplateOptions } from \"../../template-generators\";\n\nexport function generatePolicyTemplate(options: TemplateOptions): string {\n const { modelName } = options;\n const arkosConfig = getArkosConfig();\n\n if (!modelName)\n throw new Error(\"Module name is required for policy template\");\n\n const modelNameCapitalized = modelName.kebab\n .replaceAll(\"-\", \" \")\n .split(\" \")\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n .join(\" \");\n\n const modelNameSpaced = modelName.kebab.replaceAll(\"-\", \" \");\n\n const models = prismaSchemaParser\n .getModelsAsArrayOfStrings()\n .map((m) => kebabCase(m.toLowerCase()));\n\n const isPrismaModel = models.includes(modelName.kebab.toLowerCase());\n\n const crudRules = isPrismaModel\n ? `\n .rule(\"Create\", {\n ${arkosConfig?.authentication?.mode === \"static\" ? \"roles: [],\\n\" : \"\"}name: \"Create ${modelNameCapitalized}\",\n description: \"Permission to create new ${modelNameSpaced} records\",\n })\n .rule(\"View\", {\n ${arkosConfig?.authentication?.mode === \"static\" ? \"roles: [],\\n\" : \"\"}name: \"View ${modelNameCapitalized}\",\n description: \"Permission to view ${modelNameSpaced} records\",\n })\n .rule(\"Update\", {\n ${arkosConfig?.authentication?.mode === \"static\" ? \"roles: [],\\n\" : \"\"}name: \"Update ${modelNameCapitalized}\",\n description: \"Permission to update existing ${modelNameSpaced} records\",\n })\n .rule(\"Delete\", {\n ${arkosConfig?.authentication?.mode === \"static\" ? \"roles: [],\\n\" : \"\"}name: \"Delete ${modelNameCapitalized}\",\n description: \"Permission to delete ${modelNameSpaced} records\",\n })`\n : \"\";\n\n return `import { ArkosPolicy } from \"arkos\";\n\nconst ${modelName.camel}Policy = ArkosPolicy(\"${modelName.kebab}\")${crudRules};\n\nexport default ${modelName.camel}Policy;\n`;\n}\n"]}
@@ -1,23 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.generateRouterTemplate = generateRouterTemplate;
7
- const pluralize_1 = __importDefault(require("pluralize"));
8
- const text_helpers_1 = require("../../../../helpers/text.helpers.js");
9
- function generateRouterTemplate(options) {
10
- const { modelName } = options;
11
- if (!modelName)
12
- throw new Error("Module name is required for router template");
13
- return `import { ArkosRouter } from 'arkos';${modelName.kebab === "file-upload" ? "\nimport config from '@/arkos.config'" : ""}
14
-
15
- const ${modelName.camel}Router = ArkosRouter({
16
- prefix: "${modelName.kebab === "auth" ? "auth" : modelName.kebab === "file-upload" ? `config?.fileUpload?.baseUploadRoute!` : (0, pluralize_1.default)(modelName.kebab)}",
17
- openapi: { tags: ["${(0, pluralize_1.default)((0, text_helpers_1.capitalize)(modelName.kebab.replaceAll("-", " ")))}"] }
18
- })
19
-
20
- export default ${modelName.camel}Router
21
- `;
22
- }
23
- //# sourceMappingURL=router-template.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"router-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/router-template.ts"],"names":[],"mappings":";;;;;AAIA,wDAeC;AAnBD,0DAAkC;AAElC,mEAA8D;AAE9D,SAAgB,sBAAsB,CAAC,OAAwB;IAC7D,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAE9B,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAEjE,OAAO,uCAAuC,SAAS,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,EAAE;;QAExH,SAAS,CAAC,KAAK;WACZ,SAAS,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,IAAA,mBAAS,EAAC,SAAS,CAAC,KAAK,CAAC;uBACjI,IAAA,mBAAS,EAAC,IAAA,yBAAU,EAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;;;iBAGjE,SAAS,CAAC,KAAK;CAC/B,CAAC;AACF,CAAC","sourcesContent":["import pluralize from \"pluralize\";\nimport { TemplateOptions } from \"../../template-generators\";\nimport { capitalize } from \"../../../../helpers/text.helpers\";\n\nexport function generateRouterTemplate(options: TemplateOptions): string {\n const { modelName } = options;\n\n if (!modelName)\n throw new Error(\"Module name is required for router template\");\n\n return `import { ArkosRouter } from 'arkos';${modelName.kebab === \"file-upload\" ? \"\\nimport config from '@/arkos.config'\" : \"\"}\n\nconst ${modelName.camel}Router = ArkosRouter({ \nprefix: \"${modelName.kebab === \"auth\" ? \"auth\" : modelName.kebab === \"file-upload\" ? `config?.fileUpload?.baseUploadRoute!` : pluralize(modelName.kebab)}\",\n openapi: { tags: [\"${pluralize(capitalize(modelName.kebab.replaceAll(\"-\", \" \")))}\"] }\n})\n\nexport default ${modelName.camel}Router\n`;\n}\n"]}