arkos 1.4.10-beta → 1.4.11-beta

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 (281) hide show
  1. package/dist/cjs/app.js +1 -1
  2. package/dist/cjs/app.js.map +1 -1
  3. package/dist/cjs/modules/auth/auth.router.js +39 -4
  4. package/dist/cjs/modules/auth/auth.router.js.map +1 -1
  5. package/dist/cjs/modules/auth/utils/auth-openapi-generator.js +372 -0
  6. package/dist/cjs/modules/auth/utils/auth-openapi-generator.js.map +1 -0
  7. package/dist/cjs/modules/auth/utils/auth-prisma-json-schema-generator.js +102 -0
  8. package/dist/cjs/modules/auth/utils/auth-prisma-json-schema-generator.js.map +1 -0
  9. package/dist/cjs/modules/base/base.middlewares.js +1 -1
  10. package/dist/cjs/modules/base/base.middlewares.js.map +1 -1
  11. package/dist/cjs/modules/base/types/base.service.types.js.map +1 -1
  12. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +46 -14
  13. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  14. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +17 -5
  15. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
  16. package/dist/cjs/modules/base/utils/model-openapi-generator.js +443 -0
  17. package/dist/cjs/modules/base/utils/model-openapi-generator.js.map +1 -0
  18. package/dist/cjs/modules/error-handler/error-handler.controller.js +0 -2
  19. package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
  20. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +0 -106
  21. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
  22. package/dist/cjs/modules/file-upload/file-upload.router.js +19 -0
  23. package/dist/cjs/modules/file-upload/file-upload.router.js.map +1 -1
  24. package/dist/cjs/modules/file-upload/utils/file-upload-json-schema-generator.js +351 -0
  25. package/dist/cjs/modules/file-upload/utils/file-upload-json-schema-generator.js.map +1 -0
  26. package/dist/cjs/modules/swagger/swagger.router.js +35 -16
  27. package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
  28. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +1 -2
  29. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +1 -1
  30. package/dist/cjs/modules/swagger/utils/helpers/openapi-schema-converter.js +68 -31
  31. package/dist/cjs/modules/swagger/utils/helpers/openapi-schema-converter.js.map +1 -1
  32. package/dist/cjs/server.js +0 -6
  33. package/dist/cjs/server.js.map +1 -1
  34. package/dist/cjs/types/arkos-config.js.map +1 -1
  35. package/dist/cjs/types/{arkos-config/utils.js → arkos-prisma-input.bak.js} +1 -1
  36. package/dist/cjs/types/arkos-prisma-input.bak.js.map +1 -0
  37. package/dist/cjs/types/index.js.map +1 -1
  38. package/dist/cjs/utils/arkos-router/arkos-router-openapi-manager.js +3 -12
  39. package/dist/cjs/utils/arkos-router/arkos-router-openapi-manager.js.map +1 -1
  40. package/dist/cjs/utils/arkos-router/index.js +47 -8
  41. package/dist/cjs/utils/arkos-router/index.js.map +1 -1
  42. package/dist/cjs/utils/arkos-router/types/openapi-config.js.map +1 -1
  43. package/dist/cjs/utils/arkos-router/utils/helpers/index.js +15 -2
  44. package/dist/cjs/utils/arkos-router/utils/helpers/index.js.map +1 -1
  45. package/dist/cjs/utils/cli/generate.js +4 -4
  46. package/dist/cjs/utils/cli/generate.js.map +1 -1
  47. package/dist/cjs/utils/cli/index.js +11 -11
  48. package/dist/cjs/utils/cli/index.js.map +1 -1
  49. package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -1
  50. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js +29 -5
  51. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js.map +1 -1
  52. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js +26 -5
  53. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js.map +1 -1
  54. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +52 -0
  55. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +1 -1
  56. package/dist/cjs/utils/cli/utils/template-generator/templates/zod/create-schema-template.js +10 -1
  57. package/dist/cjs/utils/cli/utils/template-generator/templates/zod/create-schema-template.js.map +1 -1
  58. package/dist/cjs/utils/cli/utils/template-generator/templates/zod/update-schema-template.js +9 -2
  59. package/dist/cjs/utils/cli/utils/template-generator/templates/zod/update-schema-template.js.map +1 -1
  60. package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js +26 -1
  61. package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +1 -1
  62. package/dist/cjs/utils/helpers/routers.helpers.js +2 -4
  63. package/dist/cjs/utils/helpers/routers.helpers.js.map +1 -1
  64. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +144 -257
  65. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js.map +1 -1
  66. package/dist/cjs/utils/prisma/prisma-schema-parser.js +15 -2
  67. package/dist/cjs/utils/prisma/prisma-schema-parser.js.map +1 -1
  68. package/dist/cjs/utils/prisma/types.js.map +1 -1
  69. package/dist/esm/app.js +1 -1
  70. package/dist/esm/app.js.map +1 -1
  71. package/dist/esm/modules/auth/auth.router.js +39 -4
  72. package/dist/esm/modules/auth/auth.router.js.map +1 -1
  73. package/dist/esm/modules/auth/utils/auth-openapi-generator.js +367 -0
  74. package/dist/esm/modules/auth/utils/auth-openapi-generator.js.map +1 -0
  75. package/dist/esm/modules/auth/utils/auth-prisma-json-schema-generator.js +97 -0
  76. package/dist/esm/modules/auth/utils/auth-prisma-json-schema-generator.js.map +1 -0
  77. package/dist/esm/modules/base/base.middlewares.js +1 -1
  78. package/dist/esm/modules/base/base.middlewares.js.map +1 -1
  79. package/dist/esm/modules/base/types/base.service.types.js.map +1 -1
  80. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +46 -13
  81. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  82. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +17 -5
  83. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
  84. package/dist/esm/modules/base/utils/model-openapi-generator.js +438 -0
  85. package/dist/esm/modules/base/utils/model-openapi-generator.js.map +1 -0
  86. package/dist/esm/modules/error-handler/error-handler.controller.js +0 -2
  87. package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -1
  88. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +0 -87
  89. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
  90. package/dist/esm/modules/file-upload/file-upload.router.js +19 -0
  91. package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -1
  92. package/dist/esm/modules/file-upload/utils/file-upload-json-schema-generator.js +346 -0
  93. package/dist/esm/modules/file-upload/utils/file-upload-json-schema-generator.js.map +1 -0
  94. package/dist/esm/modules/swagger/swagger.router.js +35 -16
  95. package/dist/esm/modules/swagger/swagger.router.js.map +1 -1
  96. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js +1 -2
  97. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +1 -1
  98. package/dist/esm/modules/swagger/utils/helpers/openapi-schema-converter.js +68 -31
  99. package/dist/esm/modules/swagger/utils/helpers/openapi-schema-converter.js.map +1 -1
  100. package/dist/esm/server.js +0 -5
  101. package/dist/esm/server.js.map +1 -1
  102. package/dist/esm/types/arkos-config.js.map +1 -1
  103. package/dist/esm/types/arkos-prisma-input.bak.js +2 -0
  104. package/dist/esm/types/arkos-prisma-input.bak.js.map +1 -0
  105. package/dist/esm/types/index.js.map +1 -1
  106. package/dist/esm/utils/arkos-router/arkos-router-openapi-manager.js +3 -12
  107. package/dist/esm/utils/arkos-router/arkos-router-openapi-manager.js.map +1 -1
  108. package/dist/esm/utils/arkos-router/index.js +47 -8
  109. package/dist/esm/utils/arkos-router/index.js.map +1 -1
  110. package/dist/esm/utils/arkos-router/types/openapi-config.js.map +1 -1
  111. package/dist/esm/utils/arkos-router/utils/helpers/index.js +15 -2
  112. package/dist/esm/utils/arkos-router/utils/helpers/index.js.map +1 -1
  113. package/dist/esm/utils/cli/generate.js +4 -4
  114. package/dist/esm/utils/cli/generate.js.map +1 -1
  115. package/dist/esm/utils/cli/index.js +11 -11
  116. package/dist/esm/utils/cli/index.js.map +1 -1
  117. package/dist/esm/utils/cli/utils/cli.helpers.js +1 -1
  118. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js +29 -5
  119. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js.map +1 -1
  120. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js +26 -5
  121. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js.map +1 -1
  122. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +52 -0
  123. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +1 -1
  124. package/dist/esm/utils/cli/utils/template-generator/templates/zod/create-schema-template.js +10 -1
  125. package/dist/esm/utils/cli/utils/template-generator/templates/zod/create-schema-template.js.map +1 -1
  126. package/dist/esm/utils/cli/utils/template-generator/templates/zod/update-schema-template.js +9 -2
  127. package/dist/esm/utils/cli/utils/template-generator/templates/zod/update-schema-template.js.map +1 -1
  128. package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js +26 -1
  129. package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +1 -1
  130. package/dist/esm/utils/helpers/routers.helpers.js +2 -4
  131. package/dist/esm/utils/helpers/routers.helpers.js.map +1 -1
  132. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +144 -257
  133. package/dist/esm/utils/prisma/prisma-json-schema-generator.js.map +1 -1
  134. package/dist/esm/utils/prisma/prisma-schema-parser.js +15 -2
  135. package/dist/esm/utils/prisma/prisma-schema-parser.js.map +1 -1
  136. package/dist/esm/utils/prisma/types.js.map +1 -1
  137. package/dist/types/modules/auth/utils/auth-openapi-generator.d.ts +9 -0
  138. package/dist/types/modules/auth/utils/auth-prisma-json-schema-generator.d.ts +13 -0
  139. package/dist/types/modules/base/base.middlewares.d.ts +3 -0
  140. package/dist/types/modules/base/types/base.service.types.d.ts +0 -3
  141. package/dist/types/modules/base/utils/helpers/base.router.helpers.d.ts +0 -1
  142. package/dist/types/modules/base/utils/helpers/base.service.helpers.d.ts +1 -1
  143. package/dist/types/modules/base/utils/model-openapi-generator.d.ts +12 -0
  144. package/dist/types/modules/error-handler/utils/error-handler.helpers.d.ts +0 -19
  145. package/dist/types/modules/file-upload/utils/file-upload-json-schema-generator.d.ts +12 -0
  146. package/dist/types/modules/swagger/utils/helpers/get-swagger-default-configs.d.ts +1 -2
  147. package/dist/types/modules/swagger/utils/helpers/openapi-schema-converter.d.ts +27 -3
  148. package/dist/types/server.d.ts +0 -6
  149. package/dist/types/types/arkos-config.d.ts +1 -1
  150. package/dist/types/types/arkos-prisma-input.bak.d.ts +237 -0
  151. package/dist/types/types/index.d.ts +0 -48
  152. package/dist/types/utils/arkos-router/types/openapi-config.d.ts +3 -2
  153. package/dist/types/utils/helpers/routers.helpers.d.ts +1 -1
  154. package/dist/types/utils/prisma/prisma-json-schema-generator.d.ts +12 -42
  155. package/dist/types/utils/prisma/prisma-schema-parser.d.ts +2 -0
  156. package/dist/types/utils/prisma/types.d.ts +2 -1
  157. package/package.json +3 -1
  158. package/dist/cjs/components/arkos-policy/index.js +0 -38
  159. package/dist/cjs/components/arkos-policy/index.js.map +0 -1
  160. package/dist/cjs/components/arkos-policy/types.js +0 -3
  161. package/dist/cjs/components/arkos-policy/types.js.map +0 -1
  162. package/dist/cjs/exports/config.js +0 -6
  163. package/dist/cjs/exports/config.js.map +0 -1
  164. package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js +0 -80
  165. package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js.map +0 -1
  166. package/dist/cjs/modules/swagger/utils/built-in-route-path-object-manager.js +0 -7
  167. package/dist/cjs/modules/swagger/utils/built-in-route-path-object-manager.js.map +0 -1
  168. package/dist/cjs/modules/swagger/utils/get-open-api-login-html.js +0 -276
  169. package/dist/cjs/modules/swagger/utils/get-open-api-login-html.js.map +0 -1
  170. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +0 -482
  171. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +0 -1
  172. package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +0 -505
  173. package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js.map +0 -1
  174. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +0 -37
  175. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +0 -1
  176. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +0 -50
  177. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +0 -1
  178. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +0 -32
  179. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +0 -1
  180. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +0 -49
  181. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js.map +0 -1
  182. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +0 -34
  183. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +0 -1
  184. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +0 -508
  185. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +0 -1
  186. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +0 -573
  187. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js.map +0 -1
  188. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +0 -261
  189. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +0 -1
  190. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +0 -114
  191. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +0 -1
  192. package/dist/cjs/paths.js +0 -9
  193. package/dist/cjs/paths.js.map +0 -1
  194. package/dist/cjs/types/arkos-config/utils.js.map +0 -1
  195. package/dist/cjs/types/arkos.js +0 -3
  196. package/dist/cjs/types/arkos.js.map +0 -1
  197. package/dist/cjs/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js +0 -152
  198. package/dist/cjs/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js.map +0 -1
  199. package/dist/cjs/utils/cli/utils/template-generator/templates/policy-template.js +0 -53
  200. package/dist/cjs/utils/cli/utils/template-generator/templates/policy-template.js.map +0 -1
  201. package/dist/cjs/utils/helpers/exit-error.js +0 -12
  202. package/dist/cjs/utils/helpers/exit-error.js.map +0 -1
  203. package/dist/cjs/utils/initialize-app.js +0 -56
  204. package/dist/cjs/utils/initialize-app.js.map +0 -1
  205. package/dist/cjs/utils/setup-app.js +0 -119
  206. package/dist/cjs/utils/setup-app.js.map +0 -1
  207. package/dist/esm/components/arkos-policy/index.js +0 -32
  208. package/dist/esm/components/arkos-policy/index.js.map +0 -1
  209. package/dist/esm/components/arkos-policy/types.js +0 -2
  210. package/dist/esm/components/arkos-policy/types.js.map +0 -1
  211. package/dist/esm/exports/config.js +0 -3
  212. package/dist/esm/exports/config.js.map +0 -1
  213. package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js +0 -76
  214. package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js.map +0 -1
  215. package/dist/esm/modules/swagger/utils/built-in-route-path-object-manager.js +0 -5
  216. package/dist/esm/modules/swagger/utils/built-in-route-path-object-manager.js.map +0 -1
  217. package/dist/esm/modules/swagger/utils/get-open-api-login-html.js +0 -273
  218. package/dist/esm/modules/swagger/utils/get-open-api-login-html.js.map +0 -1
  219. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +0 -477
  220. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +0 -1
  221. package/dist/esm/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +0 -499
  222. package/dist/esm/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js.map +0 -1
  223. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +0 -34
  224. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +0 -1
  225. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +0 -44
  226. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +0 -1
  227. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +0 -26
  228. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +0 -1
  229. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +0 -46
  230. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js.map +0 -1
  231. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +0 -28
  232. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +0 -1
  233. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +0 -502
  234. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +0 -1
  235. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +0 -567
  236. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js.map +0 -1
  237. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +0 -256
  238. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +0 -1
  239. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +0 -103
  240. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +0 -1
  241. package/dist/esm/paths.js +0 -3
  242. package/dist/esm/paths.js.map +0 -1
  243. package/dist/esm/types/arkos-config/utils.js +0 -2
  244. package/dist/esm/types/arkos-config/utils.js.map +0 -1
  245. package/dist/esm/types/arkos.js +0 -2
  246. package/dist/esm/types/arkos.js.map +0 -1
  247. package/dist/esm/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js +0 -146
  248. package/dist/esm/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js.map +0 -1
  249. package/dist/esm/utils/cli/utils/template-generator/templates/policy-template.js +0 -47
  250. package/dist/esm/utils/cli/utils/template-generator/templates/policy-template.js.map +0 -1
  251. package/dist/esm/utils/helpers/exit-error.js +0 -6
  252. package/dist/esm/utils/helpers/exit-error.js.map +0 -1
  253. package/dist/esm/utils/initialize-app.js +0 -50
  254. package/dist/esm/utils/initialize-app.js.map +0 -1
  255. package/dist/esm/utils/setup-app.js +0 -113
  256. package/dist/esm/utils/setup-app.js.map +0 -1
  257. package/dist/types/components/arkos-policy/index.d.ts +0 -31
  258. package/dist/types/components/arkos-policy/types.d.ts +0 -21
  259. package/dist/types/exports/config.d.ts +0 -2
  260. package/dist/types/modules/base/utils/helpers/base.controller.helpers.d.ts +0 -4
  261. package/dist/types/modules/swagger/utils/built-in-route-path-object-manager.d.ts +0 -4
  262. package/dist/types/modules/swagger/utils/get-open-api-login-html.d.ts +0 -1
  263. package/dist/types/modules/swagger/utils/helpers/get-authentication-json-schema-paths.d.ts +0 -4
  264. package/dist/types/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.d.ts +0 -3
  265. package/dist/types/modules/swagger/utils/helpers/get-system-json-schema-paths.d.ts +0 -2
  266. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.d.ts +0 -1
  267. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.d.ts +0 -2
  268. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.d.ts +0 -4
  269. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.d.ts +0 -1
  270. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.d.ts +0 -3
  271. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.d.ts +0 -3
  272. package/dist/types/modules/swagger/utils/helpers/missing-json-schemas-generator.d.ts +0 -77
  273. package/dist/types/modules/swagger/utils/helpers/swagger.router.helpers.d.ts +0 -20
  274. package/dist/types/paths.d.ts +0 -1
  275. package/dist/types/types/arkos-config/utils.d.ts +0 -35
  276. package/dist/types/types/arkos.d.ts +0 -31
  277. package/dist/types/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.d.ts +0 -7
  278. package/dist/types/utils/cli/utils/template-generator/templates/policy-template.d.ts +0 -2
  279. package/dist/types/utils/helpers/exit-error.d.ts +0 -1
  280. package/dist/types/utils/initialize-app.d.ts +0 -2
  281. package/dist/types/utils/setup-app.d.ts +0 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-openapi-generator.js","sourceRoot":"","sources":["../../../../../src/modules/auth/utils/auth-openapi-generator.ts"],"names":[],"mappings":"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","sourcesContent":["import { AuthRouterEndpoint } from \"../../../types/router-config\";\nimport { ArkosRouteConfig } from \"../../../exports\";\nimport { ExtendedOperationObject } from \"../../../utils/arkos-router/types/openapi-config\";\nimport { OpenAPIV3 } from \"openapi-types\";\nimport authPrismaJsonSchemaGenerator from \"./auth-prisma-json-schema-generator\";\nimport { getArkosConfig } from \"../../../utils/helpers/arkos-config.helpers\";\n\nclass AuthOpenAPIGenerator {\n getOpenApiConfig(\n endpointRouterConfig: Omit<ArkosRouteConfig, \"path\"> = {},\n endpoint: AuthRouterEndpoint\n ): Partial<ExtendedOperationObject> {\n const existingOpenApi = endpointRouterConfig?.experimental?.openapi || {};\n const hasBodyValidation =\n typeof endpointRouterConfig?.validation !== \"boolean\" &&\n !!endpointRouterConfig?.validation?.body;\n\n switch (endpoint) {\n case \"login\":\n return {\n ...existingOpenApi,\n tags: [\"Authentication\", ...(existingOpenApi?.tags || [])].filter(\n (tag) => tag !== \"Defaults\"\n ),\n summary: existingOpenApi?.summary || \"Login to the system\",\n description:\n existingOpenApi?.description ||\n \"Authenticates a user and returns an access token\",\n operationId: existingOpenApi?.operationId || \"login\",\n ...(!hasBodyValidation && {\n requestBody: existingOpenApi?.requestBody || {\n required: true,\n content: {\n \"application/json\": {\n schema: authPrismaJsonSchemaGenerator.generateLoginSchema(),\n },\n },\n },\n }),\n responses: {\n ...(existingOpenApi?.responses || {}),\n \"200\": existingOpenApi?.responses?.[\"200\"] || {\n description: \"Login successful\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n accessToken: {\n type: \"string\",\n description: \"JWT access token\",\n },\n },\n },\n },\n },\n },\n \"400\": existingOpenApi?.responses?.[\"400\"] || {\n description: \"Invalid input data\",\n },\n \"401\": existingOpenApi?.responses?.[\"401\"] || {\n description: \"Invalid credentials\",\n },\n },\n };\n\n case \"logout\":\n return {\n ...existingOpenApi,\n tags: [\"Authentication\", ...(existingOpenApi?.tags || [])].filter(\n (tag) => tag !== \"Defaults\"\n ),\n summary: existingOpenApi?.summary || \"Logout from the system\",\n description:\n existingOpenApi?.description ||\n \"Invalidates the current user's JWT token\",\n operationId: existingOpenApi?.operationId || \"logout\",\n security: existingOpenApi?.security || [{ BearerAuth: [] }],\n responses: {\n ...(existingOpenApi?.responses || {}),\n \"204\": existingOpenApi?.responses?.[\"204\"] || {\n description: \"Logout successful\",\n },\n \"401\": existingOpenApi?.responses?.[\"401\"] || {\n description: \"Authentication required\",\n },\n },\n };\n\n case \"signup\":\n return {\n ...existingOpenApi,\n tags: [\"Authentication\", ...(existingOpenApi?.tags || [])].filter(\n (tag) => tag !== \"Defaults\"\n ),\n summary: existingOpenApi?.summary || \"Register a new user\",\n description:\n existingOpenApi?.description || \"Creates a new user account\",\n operationId: existingOpenApi?.operationId || \"signup\",\n ...(!hasBodyValidation && {\n requestBody: existingOpenApi?.requestBody || {\n description: \"User registration data\",\n required: true,\n content: {\n \"application/json\": {\n schema: authPrismaJsonSchemaGenerator.generateSignupSchema(),\n },\n },\n },\n }),\n responses: {\n ...(existingOpenApi?.responses || {}),\n \"201\": existingOpenApi?.responses?.[\"201\"] || {\n description: \"User created successfully\",\n content: {\n \"application/json\": {\n schema: authPrismaJsonSchemaGenerator.generateGetMeResponse(),\n },\n },\n },\n \"400\": existingOpenApi?.responses?.[\"400\"] || {\n description: \"Invalid input data\",\n },\n \"409\": existingOpenApi?.responses?.[\"409\"] || {\n description: \"User already exists\",\n },\n },\n };\n\n case \"updatePassword\":\n return {\n ...existingOpenApi,\n tags: [\"Authentication\", ...(existingOpenApi?.tags || [])].filter(\n (tag) => tag !== \"Defaults\"\n ),\n summary: existingOpenApi?.summary || \"Update user password\",\n description:\n existingOpenApi?.description ||\n \"Changes the password for the authenticated user\",\n operationId: existingOpenApi?.operationId || \"updatePassword\",\n security: existingOpenApi?.security || [{ BearerAuth: [] }],\n ...(!hasBodyValidation && {\n requestBody: existingOpenApi?.requestBody || {\n required: true,\n content: {\n \"application/json\": {\n schema:\n authPrismaJsonSchemaGenerator.generateUpdatePasswordSchema(),\n },\n },\n },\n }),\n responses: {\n ...(existingOpenApi?.responses || {}),\n \"200\": existingOpenApi?.responses?.[\"200\"] || {\n description: \"Password updated successfully\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n status: { type: \"string\", example: \"success\" },\n message: {\n type: \"string\",\n example: \"Password updated successfully!\",\n },\n },\n },\n },\n },\n },\n \"400\": existingOpenApi?.responses?.[\"400\"] || {\n description: \"Invalid input data or current password incorrect\",\n },\n \"401\": existingOpenApi?.responses?.[\"401\"] || {\n description: \"Authentication required\",\n },\n },\n };\n\n case \"getMe\":\n return {\n ...existingOpenApi,\n tags: [\"Authentication\", ...(existingOpenApi?.tags || [])].filter(\n (tag) => tag !== \"Defaults\"\n ),\n summary: existingOpenApi?.summary || \"Get current user information\",\n description:\n existingOpenApi?.description ||\n \"Retrieves information about the currently authenticated user\",\n operationId: existingOpenApi?.operationId || \"getMe\",\n security: existingOpenApi?.security || [{ BearerAuth: [] }],\n responses: {\n ...(existingOpenApi?.responses || {}),\n \"200\": existingOpenApi?.responses?.[\"200\"] || {\n description: \"User information retrieved successfully\",\n content: {\n \"application/json\": {\n schema: authPrismaJsonSchemaGenerator.generateGetMeResponse(),\n },\n },\n },\n \"401\": existingOpenApi?.responses?.[\"401\"] || {\n description: \"Authentication required\",\n },\n },\n };\n\n case \"updateMe\":\n return {\n ...existingOpenApi,\n tags: [\"Authentication\", ...(existingOpenApi?.tags || [])].filter(\n (tag) => tag !== \"Defaults\"\n ),\n summary:\n existingOpenApi?.summary || \"Update current user information\",\n description:\n existingOpenApi?.description ||\n \"Updates information for the currently authenticated user\",\n operationId: existingOpenApi?.operationId || \"updateMe\",\n security: existingOpenApi?.security || [{ BearerAuth: [] }],\n ...(!hasBodyValidation && {\n requestBody: existingOpenApi?.requestBody || {\n description: \"User data to update\",\n required: true,\n content: {\n \"application/json\": {\n schema:\n authPrismaJsonSchemaGenerator.generateUpdateMeSchema(),\n },\n },\n },\n }),\n responses: {\n ...(existingOpenApi?.responses || {}),\n \"200\": existingOpenApi?.responses?.[\"200\"] || {\n description: \"User updated successfully\",\n content: {\n \"application/json\": {\n schema: authPrismaJsonSchemaGenerator.generateGetMeResponse(),\n },\n },\n },\n \"400\": existingOpenApi?.responses?.[\"400\"] || {\n description: \"Invalid input data\",\n },\n \"401\": existingOpenApi?.responses?.[\"401\"] || {\n description: \"Authentication required\",\n },\n },\n };\n\n case \"deleteMe\":\n return {\n ...existingOpenApi,\n tags: [\"Authentication\", ...(existingOpenApi?.tags || [])].filter(\n (tag) => tag !== \"Defaults\"\n ),\n summary: existingOpenApi?.summary || \"Delete current user account\",\n description:\n existingOpenApi?.description ||\n \"Marks the current user's account as deleted\",\n operationId: existingOpenApi?.operationId || \"deleteMe\",\n security: existingOpenApi?.security || [{ BearerAuth: [] }],\n responses: {\n ...(existingOpenApi?.responses || {}),\n \"200\": existingOpenApi?.responses?.[\"200\"] || {\n description: \"Account deleted successfully\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n message: {\n type: \"string\",\n example: \"Account deleted successfully\",\n },\n },\n },\n },\n },\n },\n \"401\": existingOpenApi?.responses?.[\"401\"] || {\n description: \"Authentication required\",\n },\n },\n };\n\n case \"findManyAuthAction\":\n return {\n ...existingOpenApi,\n tags: [\"Authentication\", ...(existingOpenApi?.tags || [])].filter(\n (tag) => tag !== \"Defaults\"\n ),\n summary: existingOpenApi?.summary || \"Get all authentication actions\",\n description:\n existingOpenApi?.description ||\n \"Retrieves a list of all available authentication actions and permissions\",\n operationId: existingOpenApi?.operationId || \"findManyAuthAction\",\n security: existingOpenApi?.security || [{ BearerAuth: [] }],\n responses: {\n ...(existingOpenApi?.responses || {}),\n \"200\": existingOpenApi?.responses?.[\"200\"] || {\n description: \"Auth actions retrieved successfully\",\n content: {\n \"application/json\": {\n schema: this.getAuthActionSchema(),\n },\n },\n },\n \"401\": existingOpenApi?.responses?.[\"401\"] || {\n description: \"Authentication required\",\n },\n \"403\": existingOpenApi?.responses?.[\"403\"] || {\n description: \"Insufficient permissions\",\n },\n },\n };\n\n case \"findOneAuthAction\":\n return {\n ...existingOpenApi,\n tags: [\"Authentication\", ...(existingOpenApi?.tags || [])].filter(\n (tag) => tag !== \"Defaults\"\n ),\n summary:\n existingOpenApi?.summary ||\n \"Get authentication actions by resource\",\n description:\n existingOpenApi?.description ||\n \"Retrieves all authentication actions for a specific resource\",\n operationId: existingOpenApi?.operationId || \"findOneAuthAction\",\n security: existingOpenApi?.security || [{ BearerAuth: [] }],\n parameters: [\n ...(existingOpenApi?.parameters || []),\n ...(\n [\n {\n name: \"resourceName\",\n in: \"path\",\n required: true,\n schema: { type: \"string\" },\n description:\n \"Name of the resource to retrieve auth actions for\",\n },\n ] as OpenAPIV3.ParameterObject[]\n ).filter(\n (p) =>\n !(existingOpenApi?.parameters || []).find(\n (ep: any) => ep.name === p.name && ep.in === p.in\n )\n ),\n ],\n responses: {\n ...(existingOpenApi?.responses || {}),\n \"200\": existingOpenApi?.responses?.[\"200\"] || {\n description: \"Auth actions for resource retrieved successfully\",\n content: {\n \"application/json\": {\n schema: this.getAuthActionSchema(),\n },\n },\n },\n \"401\": existingOpenApi?.responses?.[\"401\"] || {\n description: \"Authentication required\",\n },\n \"403\": existingOpenApi?.responses?.[\"403\"] || {\n description: \"Insufficient permissions\",\n },\n \"404\": existingOpenApi?.responses?.[\"404\"] || {\n description: \"Resource not found\",\n },\n },\n };\n\n default:\n return {};\n }\n }\n\n private getAuthActionSchema() {\n const arkosConfig = getArkosConfig();\n const isDynamicMode = arkosConfig?.authentication?.mode === \"dynamic\";\n\n const properties: Record<string, any> = {\n action: {\n type: \"string\",\n description: \"Action name, e.g Create, View, Update, Download, Cancel\",\n },\n resource: {\n type: \"string\",\n description: \"Resource name, e.g user, user-role, product, author\",\n },\n name: {\n type: \"string\",\n description: \"Human-readable name for this permission\",\n nullable: true,\n },\n description: {\n type: \"string\",\n description: \"Detailed description of what this permission allows\",\n nullable: true,\n },\n errorMessage: {\n type: \"string\",\n description: \"Error message returned on forbidden response\",\n nullable: true,\n },\n };\n\n if (!isDynamicMode) {\n properties.roles = {\n type: \"array\",\n description: \"Role names that have this permission, e.g Admin, Manager\",\n items: { type: \"string\" },\n };\n }\n\n return {\n type: \"object\",\n properties,\n required: [\"action\", \"resource\"],\n additionalProperties: false,\n };\n }\n}\n\nconst authOpenAPIGenerator = new AuthOpenAPIGenerator();\n\nexport default authOpenAPIGenerator;\n"]}
@@ -0,0 +1,102 @@
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
+ const arkos_config_helpers_1 = require("../../../utils/helpers/arkos-config.helpers.js");
7
+ const prisma_1 = require("../../../exports/prisma/index.js");
8
+ const prisma_json_schema_generator_1 = __importDefault(require("../../../utils/prisma/prisma-json-schema-generator.js"));
9
+ const dynamic_loader_1 = require("../../../utils/dynamic-loader.js");
10
+ class AuthPrismaJsonSchemaGenerator {
11
+ getUserModel() {
12
+ if (!this.userModel)
13
+ this.userModel = prisma_1.prismaSchemaParser.models.find((m) => m.name.toLowerCase() === "user");
14
+ return this.userModel;
15
+ }
16
+ getPrismaArgs(endpoint) {
17
+ return ((0, dynamic_loader_1.getModuleComponents)("auth")
18
+ ?.prismaQueryOptions?.[endpoint] || {});
19
+ }
20
+ generateGetMeResponse() {
21
+ return prisma_json_schema_generator_1.default.generateResponseSchema(this.getUserModel(), this.getPrismaArgs("getMe"));
22
+ }
23
+ generateUpdatePasswordSchema() {
24
+ return {
25
+ type: "object",
26
+ properties: {
27
+ currentPassword: { type: "string" },
28
+ newPassword: { type: "string", minLength: 8 },
29
+ },
30
+ required: ["currentPassword", "newPassword"],
31
+ };
32
+ }
33
+ generateUpdateMeSchema() {
34
+ const updateSchema = prisma_json_schema_generator_1.default.generateUpdateSchema(this.getUserModel());
35
+ const restrictedFields = [
36
+ "roles",
37
+ "role",
38
+ "isActive",
39
+ "isStaff",
40
+ "isSuperUser",
41
+ "passwordChangedAt",
42
+ "deletedSelfAccountAt",
43
+ "password",
44
+ "lastLoginAt",
45
+ ];
46
+ restrictedFields.forEach((field) => {
47
+ delete updateSchema?.properties?.[field];
48
+ });
49
+ return updateSchema;
50
+ }
51
+ generateSignupSchema() {
52
+ const singupSchema = prisma_json_schema_generator_1.default.generateCreateSchema(this.getUserModel());
53
+ const restrictedFields = [
54
+ "roles",
55
+ "role",
56
+ "isActive",
57
+ "isStaff",
58
+ "isSuperUser",
59
+ "passwordChangedAt",
60
+ "deletedSelfAccountAt",
61
+ "lastLoginAt",
62
+ ];
63
+ restrictedFields.forEach((field) => {
64
+ delete singupSchema?.properties?.[field];
65
+ });
66
+ return singupSchema;
67
+ }
68
+ generateLoginSchema() {
69
+ const allowedUsernames = (0, arkos_config_helpers_1.getArkosConfig)()?.authentication?.login
70
+ ?.allowedUsernames || ["username"];
71
+ const usernameProperties = {};
72
+ allowedUsernames.forEach((field) => {
73
+ const displayName = field.includes(".") ? field.split(".").pop() : field;
74
+ usernameProperties[displayName] = {
75
+ type: "string",
76
+ description: `Username field: ${field}`,
77
+ };
78
+ });
79
+ const baseSchema = {
80
+ type: "object",
81
+ properties: {
82
+ ...usernameProperties,
83
+ password: {
84
+ type: "string",
85
+ minLength: 8,
86
+ },
87
+ },
88
+ required: ["password"],
89
+ };
90
+ return {
91
+ ...baseSchema,
92
+ ...(allowedUsernames.length > 0 && {
93
+ anyOf: allowedUsernames.map((field) => ({
94
+ required: [field.includes(".") ? field.split(".").pop() : field],
95
+ })),
96
+ }),
97
+ };
98
+ }
99
+ }
100
+ const authPrismaJsonSchemaGenerator = new AuthPrismaJsonSchemaGenerator();
101
+ exports.default = authPrismaJsonSchemaGenerator;
102
+ //# sourceMappingURL=auth-prisma-json-schema-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-prisma-json-schema-generator.js","sourceRoot":"","sources":["../../../../../src/modules/auth/utils/auth-prisma-json-schema-generator.ts"],"names":[],"mappings":"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","sourcesContent":["import { OpenAPIV3 } from \"openapi-types\";\nimport { getArkosConfig } from \"../../../utils/helpers/arkos-config.helpers\";\nimport {\n JsonSchema,\n JsonSchemaProperty,\n PrismaModel,\n} from \"../../../utils/prisma/types\";\nimport {\n AuthPrismaQueryOptions,\n prismaSchemaParser,\n} from \"../../../exports/prisma\";\nimport prismaJsonSchemaGenerator from \"../../../utils/prisma/prisma-json-schema-generator\";\nimport { getModuleComponents } from \"../../../utils/dynamic-loader\";\n\nclass AuthPrismaJsonSchemaGenerator {\n private userModel?: PrismaModel;\n\n private getUserModel() {\n if (!this.userModel)\n this.userModel = prismaSchemaParser.models.find(\n (m) => m.name.toLowerCase() === \"user\"\n );\n\n return this.userModel!;\n }\n\n private getPrismaArgs(endpoint: keyof AuthPrismaQueryOptions<any>) {\n return (\n (\n getModuleComponents(\"auth\")\n ?.prismaQueryOptions as AuthPrismaQueryOptions<any>\n )?.[endpoint] || {}\n );\n }\n\n generateGetMeResponse(): JsonSchema {\n return prismaJsonSchemaGenerator.generateResponseSchema(\n this.getUserModel(),\n this.getPrismaArgs(\"getMe\")\n );\n }\n\n generateUpdatePasswordSchema(): JsonSchema {\n return {\n type: \"object\",\n properties: {\n currentPassword: { type: \"string\" },\n newPassword: { type: \"string\", minLength: 8 },\n },\n required: [\"currentPassword\", \"newPassword\"],\n };\n }\n\n generateUpdateMeSchema(): JsonSchema {\n const updateSchema = prismaJsonSchemaGenerator.generateUpdateSchema(\n this.getUserModel()\n );\n\n // Remove sensitive fields that users shouldn't update themselves\n const restrictedFields = [\n \"roles\",\n \"role\",\n \"isActive\",\n \"isStaff\",\n \"isSuperUser\",\n \"passwordChangedAt\",\n \"deletedSelfAccountAt\",\n \"password\",\n \"lastLoginAt\",\n ];\n restrictedFields.forEach((field) => {\n delete updateSchema?.properties?.[field];\n });\n\n return updateSchema;\n }\n\n generateSignupSchema(): JsonSchema {\n const singupSchema = prismaJsonSchemaGenerator.generateCreateSchema(\n this.getUserModel()\n );\n\n const restrictedFields = [\n \"roles\",\n \"role\",\n \"isActive\",\n \"isStaff\",\n \"isSuperUser\",\n \"passwordChangedAt\",\n \"deletedSelfAccountAt\",\n \"lastLoginAt\",\n ];\n restrictedFields.forEach((field) => {\n delete singupSchema?.properties?.[field];\n });\n\n return singupSchema;\n }\n\n generateLoginSchema(): JsonSchema {\n const allowedUsernames = getArkosConfig()?.authentication?.login\n ?.allowedUsernames || [\"username\"];\n\n const usernameProperties: Record<string, OpenAPIV3.SchemaObject> = {};\n\n allowedUsernames.forEach((field: string) => {\n const displayName = field.includes(\".\") ? field.split(\".\").pop()! : field;\n usernameProperties[displayName] = {\n type: \"string\",\n description: `Username field: ${field}`,\n };\n });\n\n const baseSchema: JsonSchemaProperty = {\n type: \"object\",\n properties: {\n ...usernameProperties,\n password: {\n type: \"string\",\n minLength: 8,\n },\n },\n required: [\"password\"],\n };\n\n return {\n ...baseSchema,\n ...(allowedUsernames.length > 0 && {\n anyOf: allowedUsernames.map((field: string) => ({\n required: [field.includes(\".\") ? field.split(\".\").pop()! : field],\n })),\n }),\n };\n }\n}\n\nconst authPrismaJsonSchemaGenerator = new AuthPrismaJsonSchemaGenerator();\n\nexport default authPrismaJsonSchemaGenerator;\n"]}
@@ -184,7 +184,7 @@ function validateRequestInputs(routeConfig) {
184
184
  key != "body" &&
185
185
  openapi.parameters?.some((parameter) => parameter.in === validationToParameterMapping[key]) &&
186
186
  validators[key]) {
187
- throw Error(`When usign validation.${key} you must not define parameters under openapi.parameters as documentation of req.${key} because the ${validatorName} you passed under validation.${key} will be added as jsonSchema into the api documenation, if you wish to define documenation by yourself do not define validation.${key}.`);
187
+ throw Error(`Error in ${routeConfig.path}: when usign validation.${key} you must not define parameters under openapi.parameters as documentation of req.${key} because the ${validatorName} you passed under validation.${key} will be added as jsonSchema into the api documenation, if you wish to define documenation by yourself do not define validation.${key}.`);
188
188
  }
189
189
  if (openapi &&
190
190
  typeof openapi === "object" &&
@@ -1 +1 @@
1
- {"version":3,"file":"base.middlewares.js","sourceRoot":"","sources":["../../../../src/modules/base/base.middlewares.ts"],"names":[],"mappings":"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","sourcesContent":["import { NextFunction, Request, Response } from \"express\";\nimport {\n PrismaQueryOptions,\n ArkosNextFunction,\n ArkosRequest,\n ArkosRequestHandler,\n ArkosResponse,\n AuthPrismaQueryOptions,\n} from \"../../types\";\nimport { getArkosConfig } from \"../../server\";\nimport deepmerge from \"../../utils/helpers/deepmerge.helper\";\nimport { AppError, catchAsync } from \"../../exports/error-handler\";\nimport validateDto from \"../../utils/validate-dto\";\nimport validateSchema from \"../../utils/validate-schema\";\nimport { ZodSchema } from \"zod\";\nimport { ClassConstructor } from \"class-transformer\";\nimport { ValidatorOptions } from \"class-validator\";\nimport { resolvePrismaQueryOptions } from \"./utils/helpers/base.middlewares.helpers\";\nimport { ArkosRouteConfig } from \"../../utils/arkos-router/types\";\nimport { capitalize } from \"../../utils/helpers/text.helpers\";\nimport { isClass, isZodSchema } from \"../../utils/dynamic-loader\";\nimport { pascalCase } from \"../../exports/utils\";\n\nexport function callNext(_: Request, _1: Response, next: NextFunction) {\n next();\n}\n\n/**\n * Deep comparison helper for objects\n */\nfunction deepEqual(a: any, b: any): boolean {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (typeof a !== \"object\" || typeof b !== \"object\") return a === b;\n\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (!keysB.includes(key)) return false;\n if (!deepEqual(a[key], b[key])) return false;\n }\n\n return true;\n}\n\n/**\n * Sends response with backward compatibility support\n * Compares current values against original values to detect middleware changes\n * If values were modified by subsequent middleware, use the modified version\n */\nexport function sendResponse(req: ArkosRequest, res: ArkosResponse) {\n let responseData;\n let responseStatus;\n\n const originalData = (res as any).originalData;\n const originalStatus = (res as any).originalStatus;\n\n const currentReqData = req.responseData;\n const currentReqStatus = req.responseStatus;\n const currentLocalsData = res.locals?.data;\n const currentLocalsStatus = res.locals?.status;\n\n if (\n currentReqData !== undefined &&\n !deepEqual(currentReqData, originalData)\n ) {\n responseData = currentReqData;\n } else if (\n currentLocalsData !== undefined &&\n !deepEqual(currentLocalsData, originalData)\n ) {\n responseData = currentLocalsData;\n } else if (originalData !== undefined) {\n responseData = originalData;\n } else {\n responseData = currentReqData ?? currentLocalsData;\n }\n\n if (currentReqStatus !== undefined && currentReqStatus !== originalStatus) {\n responseStatus = currentReqStatus;\n } else if (\n currentLocalsStatus !== undefined &&\n currentLocalsStatus !== originalStatus\n ) {\n responseStatus = currentLocalsStatus;\n } else if (originalStatus !== undefined) {\n responseStatus = originalStatus;\n } else {\n responseStatus = currentReqStatus ?? currentLocalsStatus;\n }\n\n // Send response\n\n if (Number(responseStatus) === 204) {\n res.status(Number(responseStatus)).send();\n } else if (\n (responseData !== undefined || responseData !== null) &&\n responseStatus\n ) {\n res.status(Number(responseStatus)).json(responseData);\n } else if (\n Number(responseStatus) &&\n (responseData === undefined || responseData === null)\n ) {\n res.status(Number(responseStatus)).send();\n } else {\n res.status(500).json({\n message: \"No status or data attached to the response\",\n });\n }\n}\n\n/**\n * Type representing all possible actions that can be performed on a controller\n * Combines both standard CRUD operations and auth-specific operations\n */\nexport type ControllerActions =\n | keyof PrismaQueryOptions<any>\n | keyof Omit<AuthPrismaQueryOptions<any>, keyof PrismaQueryOptions<any>>;\n\n/**\n * Middleware to add Prisma query options to the request's query parameters.\n *\n * @template T - The type of the Prisma model.\n * @param {PrismaQueryOptions<T> | AuthPrismaQueryOptions<T>} prismaQueryOptions - The Prisma query options to attach.\n * @param {ControllerActions} action - The controller action to apply.\n * @returns A middleware function that attaches the query options to the request.\n */\nexport function addPrismaQueryOptionsToRequest<T extends Record<string, any>>(\n prismaQueryOptions: PrismaQueryOptions<T> | AuthPrismaQueryOptions<T>,\n action: ControllerActions\n) {\n return (req: ArkosRequest, _: ArkosResponse, next: NextFunction) => {\n const configs = getArkosConfig();\n\n const resolvedOptions = resolvePrismaQueryOptions(\n prismaQueryOptions,\n action\n );\n\n const requestQueryOptions = configs?.request?.parameters\n ?.allowDangerousPrismaQueryOptions\n ? JSON.parse((req.query?.prismaQueryOptions as string) || \"{}\")\n : {};\n\n req.prismaQueryOptions = deepmerge(resolvedOptions, requestQueryOptions);\n\n next();\n };\n}\n\n/**\n * Logs request events with colored text such as errors, requests responses.\n *\n */\nexport function handleRequestLogs(\n req: Request,\n res: Response,\n next: NextFunction\n) {\n const startTime = Date.now();\n\n const methodColors = {\n GET: \"\\x1b[36m\", // Cyan\n POST: \"\\x1b[32m\", // Green\n PUT: \"\\x1b[33m\", // Orange/Yellow\n PATCH: \"\\x1b[33m\", // Orange/Yellow\n DELETE: \"\\x1b[31m\", // Red\n HEAD: \"\\x1b[34m\", // Blue\n OPTIONS: \"\\x1b[34m\", // Blue\n };\n\n const getStatusColor = (statusCode: number) => {\n if (statusCode >= 200 && statusCode < 300) return \"\\x1b[32m\";\n if (statusCode >= 300 && statusCode < 400) return \"\\x1b[33m\";\n if (statusCode >= 400 && statusCode < 500) return \"\\x1b[33m\";\n if (statusCode >= 500) return \"\\x1b[31m\";\n return \"\\x1b[0m\";\n };\n\n res.on(\"finish\", () => {\n const duration = Date.now() - startTime;\n\n const now = new Date();\n const time = now.toTimeString().split(\" \")[0];\n\n const methodColor =\n methodColors[req.method as keyof typeof methodColors] || \"\\x1b[0m\";\n const statusColor = getStatusColor(res.statusCode);\n\n console.info(\n `[\\x1b[36mInfo\\x1b[0m] \\x1b[90m${time}\\x1b[0m ${methodColor}${\n req.method\n }\\x1b[0m ${decodeURIComponent(req.originalUrl)} ${statusColor}${\n res.statusCode\n }\\x1b[0m \\x1b[35m${duration}ms\\x1b[0m`\n );\n });\n\n next();\n}\n\nexport function handleRequestBodyValidationAndTransformation<T extends object>(\n schemaOrDtoClass?: ClassConstructor<T>,\n classValidatorValidationOptions?: ValidatorOptions\n): ArkosRequestHandler;\nexport function handleRequestBodyValidationAndTransformation<T extends object>(\n schemaOrDtoClass?: ZodSchema<T>\n): ArkosRequestHandler;\nexport function handleRequestBodyValidationAndTransformation<T extends object>(\n schemaOrDtoClass?: ZodSchema<T> | ClassConstructor<T>,\n classValidatorValidationOptions?: ValidatorOptions\n) {\n return catchAsync(\n async (req: ArkosRequest, _: ArkosResponse, next: ArkosNextFunction) => {\n const validationConfigs = getArkosConfig()?.validation;\n let body = req.body;\n\n if (validationConfigs?.resolver === \"class-validator\" && schemaOrDtoClass)\n req.body = await validateDto(\n schemaOrDtoClass as ClassConstructor<T>,\n body,\n deepmerge(\n {\n whitelist: true,\n ...classValidatorValidationOptions,\n },\n validationConfigs?.validationOptions || {}\n )\n );\n else if (validationConfigs?.resolver === \"zod\" && schemaOrDtoClass)\n req.body = await validateSchema(schemaOrDtoClass as any, body);\n\n next();\n }\n );\n}\n\nexport function validateRequestInputs(routeConfig: ArkosRouteConfig) {\n const arkosConfig = getArkosConfig();\n const validationConfig = arkosConfig.validation;\n const strictValidation = validationConfig?.strict;\n const validators = routeConfig?.validation;\n const openapi = routeConfig?.experimental?.openapi;\n\n const validationToParameterMapping = {\n query: \"query\",\n params: \"path\",\n headers: \"header\",\n cookies: \"cookie\",\n };\n\n if (\n !validationConfig?.resolver &&\n Object.keys(routeConfig.validation || {}).length > 0\n )\n throw Error(\n `Trying to pass validators into route \\\"${routeConfig.path}\\\" config validation option without choosing a validation resolver under arkos config { validation: {} }.`\n );\n\n if ((validators as any) === true)\n throw Error(\n `Invalid value ${validators} passed to validation option, it can only receive false or object of { query, body, params }.`\n );\n\n const validatorFn: (validator: any, data: any, options: any) => Promise<any> =\n validationConfig?.resolver == \"zod\" ? validateSchema : validateDto;\n const validatorsKey: (\"body\" | \"query\" | \"params\")[] = [\n \"body\",\n \"query\",\n \"params\",\n ];\n\n const isValidValidator =\n validationConfig?.resolver == \"zod\" ? isZodSchema : isClass;\n const validatorName =\n validationConfig?.resolver == \"zod\" ? \"zod schema\" : \"class-validator dto\";\n const validatorNameType =\n validationConfig?.resolver == \"zod\" ? \"Schema\" : \"Dto\";\n\n if (typeof validators === \"object\")\n validatorsKey.forEach((key) => {\n if (\n openapi &&\n typeof openapi === \"object\" &&\n key != \"body\" &&\n openapi.parameters?.some(\n (parameter: any) => parameter.in === validationToParameterMapping[key]\n ) &&\n validators[key]\n ) {\n throw Error(\n `When usign validation.${key} you must not define parameters under openapi.parameters as documentation of req.${key} because the ${validatorName} you passed under validation.${key} will be added as jsonSchema into the api documenation, if you wish to define documenation by yourself do not define validation.${key}.`\n );\n }\n\n if (\n openapi &&\n typeof openapi === \"object\" &&\n openapi.requestBody &&\n validators[key] &&\n key === \"body\"\n ) {\n throw Error(\n `When usign validation.${key} you must not define json-schema under openapi.requestBody as documentation for req.${key}, because the ${validatorName} you passed under validation.${key} will be added as json-schema into the api documenation, if you wish to define documenation by yourself do not define validation.${key}.`\n );\n }\n\n if (strictValidation && !(key in validators))\n throw Error(\n `No { validation: { ${key}: ${validatorNameType} } } was found, while using strict validation you will need to pass undefined into ${key} in order to deny any request ${key} input.`\n );\n\n if (\n key in validators &&\n validators?.[key] !== undefined &&\n validators?.[key] !== false &&\n !isValidValidator(validators[key])\n )\n throw Error(\n `Your validation resolver is set to ${arkosConfig.validation!.resolver}, please provide a valid ${validatorName} in order to use in { validation: { ${key}: ${validatorNameType} } } under route ${routeConfig.path}`\n );\n });\n\n return catchAsync(\n async (req: ArkosRequest, _: ArkosResponse, next: ArkosNextFunction) => {\n for (const key of validatorsKey) {\n const reqInput = Object.keys(req[key] || {}).length > 0;\n const validator = (validators as any)?.[key];\n const notAllowedInputError = new AppError(\n `Request ${key} is not allowed on this route`,\n 400,\n `Request${capitalize(key)}NotAllowed`,\n { [key]: req[key] }\n );\n\n if (\n ((typeof validators === \"boolean\" && validators === false) ||\n validator === false) &&\n reqInput\n )\n throw notAllowedInputError;\n\n if (strictValidation && !validator && reqInput)\n throw notAllowedInputError;\n if (validator)\n try {\n req[key] = await validatorFn(\n validator,\n req[key],\n arkosConfig.validation?.validationOptions\n );\n } catch (err: any) {\n throw new AppError(\n `Invalid request ${key}`,\n 400,\n `InvalidRequest${pascalCase(key)}`,\n (err &&\n (validationConfig?.resolver === \"zod\" ? err.format() : err)) ||\n {}\n );\n }\n }\n\n next();\n }\n );\n}\n"]}
1
+ {"version":3,"file":"base.middlewares.js","sourceRoot":"","sources":["../../../../src/modules/base/base.middlewares.ts"],"names":[],"mappings":";;;;;AAuBA,4BAEC;AA4BD,oCA4DC;AAkBD,wEAqBC;AAMD,8CA6CC;AAYD,oGA2BC;AAED,sDAiIC;AA5WD,yCAA8C;AAC9C,4FAA6D;AAC7D,+DAAmE;AACnE,4EAAmD;AACnD,kFAAyD;AAIzD,uFAAqF;AAErF,mEAA8D;AAC9D,+DAAkE;AAClE,+CAAiD;AAEjD,SAAgB,QAAQ,CAAC,CAAU,EAAE,EAAY,EAAE,IAAkB;IACnE,IAAI,EAAE,CAAC;AACT,CAAC;AAKD,SAAS,SAAS,CAAC,CAAM,EAAE,CAAM;IAC/B,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAEnE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE7B,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAEhD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACvC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IAC/C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAOD,SAAgB,YAAY,CAAC,GAAiB,EAAE,GAAkB;IAChE,IAAI,YAAY,CAAC;IACjB,IAAI,cAAc,CAAC;IAEnB,MAAM,YAAY,GAAI,GAAW,CAAC,YAAY,CAAC;IAC/C,MAAM,cAAc,GAAI,GAAW,CAAC,cAAc,CAAC;IAEnD,MAAM,cAAc,GAAG,GAAG,CAAC,YAAY,CAAC;IACxC,MAAM,gBAAgB,GAAG,GAAG,CAAC,cAAc,CAAC;IAC5C,MAAM,iBAAiB,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;IAC3C,MAAM,mBAAmB,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAE/C,IACE,cAAc,KAAK,SAAS;QAC5B,CAAC,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC,EACxC,CAAC;QACD,YAAY,GAAG,cAAc,CAAC;IAChC,CAAC;SAAM,IACL,iBAAiB,KAAK,SAAS;QAC/B,CAAC,SAAS,CAAC,iBAAiB,EAAE,YAAY,CAAC,EAC3C,CAAC;QACD,YAAY,GAAG,iBAAiB,CAAC;IACnC,CAAC;SAAM,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QACtC,YAAY,GAAG,YAAY,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,cAAc,IAAI,iBAAiB,CAAC;IACrD,CAAC;IAED,IAAI,gBAAgB,KAAK,SAAS,IAAI,gBAAgB,KAAK,cAAc,EAAE,CAAC;QAC1E,cAAc,GAAG,gBAAgB,CAAC;IACpC,CAAC;SAAM,IACL,mBAAmB,KAAK,SAAS;QACjC,mBAAmB,KAAK,cAAc,EACtC,CAAC;QACD,cAAc,GAAG,mBAAmB,CAAC;IACvC,CAAC;SAAM,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACxC,cAAc,GAAG,cAAc,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,cAAc,GAAG,gBAAgB,IAAI,mBAAmB,CAAC;IAC3D,CAAC;IAID,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,GAAG,EAAE,CAAC;QACnC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,CAAC;SAAM,IACL,CAAC,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,CAAC;QACrD,cAAc,EACd,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC;SAAM,IACL,MAAM,CAAC,cAAc,CAAC;QACtB,CAAC,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,CAAC,EACrD,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,4CAA4C;SACtD,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAkBD,SAAgB,8BAA8B,CAC5C,kBAAqE,EACrE,MAAyB;IAEzB,OAAO,CAAC,GAAiB,EAAE,CAAgB,EAAE,IAAkB,EAAE,EAAE;QACjE,MAAM,OAAO,GAAG,IAAA,uBAAc,GAAE,CAAC;QAEjC,MAAM,eAAe,GAAG,IAAA,oDAAyB,EAC/C,kBAAkB,EAClB,MAAM,CACP,CAAC;QAEF,MAAM,mBAAmB,GAAG,OAAO,EAAE,OAAO,EAAE,UAAU;YACtD,EAAE,gCAAgC;YAClC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAE,GAAG,CAAC,KAAK,EAAE,kBAA6B,IAAI,IAAI,CAAC;YAC/D,CAAC,CAAC,EAAE,CAAC;QAEP,GAAG,CAAC,kBAAkB,GAAG,IAAA,0BAAS,EAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;QAEzE,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAMD,SAAgB,iBAAiB,CAC/B,GAAY,EACZ,GAAa,EACb,IAAkB;IAElB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,MAAM,YAAY,GAAG;QACnB,GAAG,EAAE,UAAU;QACf,IAAI,EAAE,UAAU;QAChB,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,UAAU;KACpB,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,UAAkB,EAAE,EAAE;QAC5C,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG;YAAE,OAAO,UAAU,CAAC;QAC7D,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG;YAAE,OAAO,UAAU,CAAC;QAC7D,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG;YAAE,OAAO,UAAU,CAAC;QAC7D,IAAI,UAAU,IAAI,GAAG;YAAE,OAAO,UAAU,CAAC;QACzC,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAExC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9C,MAAM,WAAW,GACf,YAAY,CAAC,GAAG,CAAC,MAAmC,CAAC,IAAI,SAAS,CAAC;QACrE,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAEnD,OAAO,CAAC,IAAI,CACV,iCAAiC,IAAI,WAAW,WAAW,GACzD,GAAG,CAAC,MACN,WAAW,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,WAAW,GAC3D,GAAG,CAAC,UACN,mBAAmB,QAAQ,WAAW,CACvC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,EAAE,CAAC;AACT,CAAC;AAYD,SAAgB,4CAA4C,CAC1D,gBAAqD,EACrD,+BAAkD;IAElD,OAAO,IAAA,0BAAU,EACf,KAAK,EAAE,GAAiB,EAAE,CAAgB,EAAE,IAAuB,EAAE,EAAE;QACrE,MAAM,iBAAiB,GAAG,IAAA,uBAAc,GAAE,EAAE,UAAU,CAAC;QACvD,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QAEpB,IAAI,iBAAiB,EAAE,QAAQ,KAAK,iBAAiB,IAAI,gBAAgB;YACvE,GAAG,CAAC,IAAI,GAAG,MAAM,IAAA,sBAAW,EAC1B,gBAAuC,EACvC,IAAI,EACJ,IAAA,0BAAS,EACP;gBACE,SAAS,EAAE,IAAI;gBACf,GAAG,+BAA+B;aACnC,EACD,iBAAiB,EAAE,iBAAiB,IAAI,EAAE,CAC3C,CACF,CAAC;aACC,IAAI,iBAAiB,EAAE,QAAQ,KAAK,KAAK,IAAI,gBAAgB;YAChE,GAAG,CAAC,IAAI,GAAG,MAAM,IAAA,yBAAc,EAAC,gBAAuB,EAAE,IAAI,CAAC,CAAC;QAEjE,IAAI,EAAE,CAAC;IACT,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAgB,qBAAqB,CAAC,WAA6B;IACjE,MAAM,WAAW,GAAG,IAAA,uBAAc,GAAE,CAAC;IACrC,MAAM,gBAAgB,GAAG,WAAW,CAAC,UAAU,CAAC;IAChD,MAAM,gBAAgB,GAAG,gBAAgB,EAAE,MAAM,CAAC;IAClD,MAAM,UAAU,GAAG,WAAW,EAAE,UAAU,CAAC;IAC3C,MAAM,OAAO,GAAG,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC;IAEnD,MAAM,4BAA4B,GAAG;QACnC,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,QAAQ;QACjB,OAAO,EAAE,QAAQ;KAClB,CAAC;IAEF,IACE,CAAC,gBAAgB,EAAE,QAAQ;QAC3B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;QAEpD,MAAM,KAAK,CACT,0CAA0C,WAAW,CAAC,IAAI,2GAA2G,CACtK,CAAC;IAEJ,IAAK,UAAkB,KAAK,IAAI;QAC9B,MAAM,KAAK,CACT,iBAAiB,UAAU,+FAA+F,CAC3H,CAAC;IAEJ,MAAM,WAAW,GACf,gBAAgB,EAAE,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,yBAAc,CAAC,CAAC,CAAC,sBAAW,CAAC;IACrE,MAAM,aAAa,GAAoC;QACrD,MAAM;QACN,OAAO;QACP,QAAQ;KACT,CAAC;IAEF,MAAM,gBAAgB,GACpB,gBAAgB,EAAE,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,4BAAW,CAAC,CAAC,CAAC,wBAAO,CAAC;IAC9D,MAAM,aAAa,GACjB,gBAAgB,EAAE,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC;IAC7E,MAAM,iBAAiB,GACrB,gBAAgB,EAAE,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IAEzD,IAAI,OAAO,UAAU,KAAK,QAAQ;QAChC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5B,IACE,OAAO;gBACP,OAAO,OAAO,KAAK,QAAQ;gBAC3B,GAAG,IAAI,MAAM;gBACb,OAAO,CAAC,UAAU,EAAE,IAAI,CACtB,CAAC,SAAc,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,4BAA4B,CAAC,GAAG,CAAC,CACvE;gBACD,UAAU,CAAC,GAAG,CAAC,EACf,CAAC;gBACD,MAAM,KAAK,CACT,YAAY,WAAW,CAAC,IAAI,2BAA2B,GAAG,oFAAoF,GAAG,gBAAgB,aAAa,gCAAgC,GAAG,mIAAmI,GAAG,GAAG,CAC3V,CAAC;YACJ,CAAC;YAED,IACE,OAAO;gBACP,OAAO,OAAO,KAAK,QAAQ;gBAC3B,OAAO,CAAC,WAAW;gBACnB,UAAU,CAAC,GAAG,CAAC;gBACf,GAAG,KAAK,MAAM,EACd,CAAC;gBACD,MAAM,KAAK,CACT,yBAAyB,GAAG,uFAAuF,GAAG,iBAAiB,aAAa,gCAAgC,GAAG,oIAAoI,GAAG,GAAG,CAClU,CAAC;YACJ,CAAC;YAED,IAAI,gBAAgB,IAAI,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC;gBAC1C,MAAM,KAAK,CACT,sBAAsB,GAAG,KAAK,iBAAiB,sFAAsF,GAAG,iCAAiC,GAAG,SAAS,CACtL,CAAC;YAEJ,IACE,GAAG,IAAI,UAAU;gBACjB,UAAU,EAAE,CAAC,GAAG,CAAC,KAAK,SAAS;gBAC/B,UAAU,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK;gBAC3B,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAElC,MAAM,KAAK,CACT,sCAAsC,WAAW,CAAC,UAAW,CAAC,QAAQ,4BAA4B,aAAa,uCAAuC,GAAG,KAAK,iBAAiB,oBAAoB,WAAW,CAAC,IAAI,EAAE,CACtN,CAAC;QACN,CAAC,CAAC,CAAC;IAEL,OAAO,IAAA,0BAAU,EACf,KAAK,EAAE,GAAiB,EAAE,CAAgB,EAAE,IAAuB,EAAE,EAAE;QACrE,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACxD,MAAM,SAAS,GAAI,UAAkB,EAAE,CAAC,GAAG,CAAC,CAAC;YAC7C,MAAM,oBAAoB,GAAG,IAAI,wBAAQ,CACvC,WAAW,GAAG,+BAA+B,EAC7C,GAAG,EACH,UAAU,IAAA,yBAAU,EAAC,GAAG,CAAC,YAAY,EACrC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CACpB,CAAC;YAEF,IACE,CAAC,CAAC,OAAO,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,KAAK,CAAC;gBACxD,SAAS,KAAK,KAAK,CAAC;gBACtB,QAAQ;gBAER,MAAM,oBAAoB,CAAC;YAE7B,IAAI,gBAAgB,IAAI,CAAC,SAAS,IAAI,QAAQ;gBAC5C,MAAM,oBAAoB,CAAC;YAC7B,IAAI,SAAS;gBACX,IAAI,CAAC;oBACH,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,WAAW,CAC1B,SAAS,EACT,GAAG,CAAC,GAAG,CAAC,EACR,WAAW,CAAC,UAAU,EAAE,iBAAiB,CAC1C,CAAC;gBACJ,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,MAAM,IAAI,wBAAQ,CAChB,mBAAmB,GAAG,EAAE,EACxB,GAAG,EACH,iBAAiB,IAAA,kBAAU,EAAC,GAAG,CAAC,EAAE,EAClC,CAAC,GAAG;wBACF,CAAC,gBAAgB,EAAE,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBAC5D,EAAE,CACL,CAAC;gBACJ,CAAC;QACL,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC,CACF,CAAC;AACJ,CAAC","sourcesContent":["import { NextFunction, Request, Response } from \"express\";\nimport {\n PrismaQueryOptions,\n ArkosNextFunction,\n ArkosRequest,\n ArkosRequestHandler,\n ArkosResponse,\n AuthPrismaQueryOptions,\n} from \"../../types\";\nimport { getArkosConfig } from \"../../server\";\nimport deepmerge from \"../../utils/helpers/deepmerge.helper\";\nimport { AppError, catchAsync } from \"../../exports/error-handler\";\nimport validateDto from \"../../utils/validate-dto\";\nimport validateSchema from \"../../utils/validate-schema\";\nimport { ZodSchema } from \"zod\";\nimport { ClassConstructor } from \"class-transformer\";\nimport { ValidatorOptions } from \"class-validator\";\nimport { resolvePrismaQueryOptions } from \"./utils/helpers/base.middlewares.helpers\";\nimport { ArkosRouteConfig } from \"../../utils/arkos-router/types\";\nimport { capitalize } from \"../../utils/helpers/text.helpers\";\nimport { isClass, isZodSchema } from \"../../utils/dynamic-loader\";\nimport { pascalCase } from \"../../exports/utils\";\n\nexport function callNext(_: Request, _1: Response, next: NextFunction) {\n next();\n}\n\n/**\n * Deep comparison helper for objects\n */\nfunction deepEqual(a: any, b: any): boolean {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (typeof a !== \"object\" || typeof b !== \"object\") return a === b;\n\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (!keysB.includes(key)) return false;\n if (!deepEqual(a[key], b[key])) return false;\n }\n\n return true;\n}\n\n/**\n * Sends response with backward compatibility support\n * Compares current values against original values to detect middleware changes\n * If values were modified by subsequent middleware, use the modified version\n */\nexport function sendResponse(req: ArkosRequest, res: ArkosResponse) {\n let responseData;\n let responseStatus;\n\n const originalData = (res as any).originalData;\n const originalStatus = (res as any).originalStatus;\n\n const currentReqData = req.responseData;\n const currentReqStatus = req.responseStatus;\n const currentLocalsData = res.locals?.data;\n const currentLocalsStatus = res.locals?.status;\n\n if (\n currentReqData !== undefined &&\n !deepEqual(currentReqData, originalData)\n ) {\n responseData = currentReqData;\n } else if (\n currentLocalsData !== undefined &&\n !deepEqual(currentLocalsData, originalData)\n ) {\n responseData = currentLocalsData;\n } else if (originalData !== undefined) {\n responseData = originalData;\n } else {\n responseData = currentReqData ?? currentLocalsData;\n }\n\n if (currentReqStatus !== undefined && currentReqStatus !== originalStatus) {\n responseStatus = currentReqStatus;\n } else if (\n currentLocalsStatus !== undefined &&\n currentLocalsStatus !== originalStatus\n ) {\n responseStatus = currentLocalsStatus;\n } else if (originalStatus !== undefined) {\n responseStatus = originalStatus;\n } else {\n responseStatus = currentReqStatus ?? currentLocalsStatus;\n }\n\n // Send response\n\n if (Number(responseStatus) === 204) {\n res.status(Number(responseStatus)).send();\n } else if (\n (responseData !== undefined || responseData !== null) &&\n responseStatus\n ) {\n res.status(Number(responseStatus)).json(responseData);\n } else if (\n Number(responseStatus) &&\n (responseData === undefined || responseData === null)\n ) {\n res.status(Number(responseStatus)).send();\n } else {\n res.status(500).json({\n message: \"No status or data attached to the response\",\n });\n }\n}\n\n/**\n * Type representing all possible actions that can be performed on a controller\n * Combines both standard CRUD operations and auth-specific operations\n */\nexport type ControllerActions =\n | keyof PrismaQueryOptions<any>\n | keyof Omit<AuthPrismaQueryOptions<any>, keyof PrismaQueryOptions<any>>;\n\n/**\n * Middleware to add Prisma query options to the request's query parameters.\n *\n * @template T - The type of the Prisma model.\n * @param {PrismaQueryOptions<T> | AuthPrismaQueryOptions<T>} prismaQueryOptions - The Prisma query options to attach.\n * @param {ControllerActions} action - The controller action to apply.\n * @returns A middleware function that attaches the query options to the request.\n */\nexport function addPrismaQueryOptionsToRequest<T extends Record<string, any>>(\n prismaQueryOptions: PrismaQueryOptions<T> | AuthPrismaQueryOptions<T>,\n action: ControllerActions\n) {\n return (req: ArkosRequest, _: ArkosResponse, next: NextFunction) => {\n const configs = getArkosConfig();\n\n const resolvedOptions = resolvePrismaQueryOptions(\n prismaQueryOptions,\n action\n );\n\n const requestQueryOptions = configs?.request?.parameters\n ?.allowDangerousPrismaQueryOptions\n ? JSON.parse((req.query?.prismaQueryOptions as string) || \"{}\")\n : {};\n\n req.prismaQueryOptions = deepmerge(resolvedOptions, requestQueryOptions);\n\n next();\n };\n}\n\n/**\n * Logs request events with colored text such as errors, requests responses.\n *\n */\nexport function handleRequestLogs(\n req: Request,\n res: Response,\n next: NextFunction\n) {\n const startTime = Date.now();\n\n const methodColors = {\n GET: \"\\x1b[36m\", // Cyan\n POST: \"\\x1b[32m\", // Green\n PUT: \"\\x1b[33m\", // Orange/Yellow\n PATCH: \"\\x1b[33m\", // Orange/Yellow\n DELETE: \"\\x1b[31m\", // Red\n HEAD: \"\\x1b[34m\", // Blue\n OPTIONS: \"\\x1b[34m\", // Blue\n };\n\n const getStatusColor = (statusCode: number) => {\n if (statusCode >= 200 && statusCode < 300) return \"\\x1b[32m\";\n if (statusCode >= 300 && statusCode < 400) return \"\\x1b[33m\";\n if (statusCode >= 400 && statusCode < 500) return \"\\x1b[33m\";\n if (statusCode >= 500) return \"\\x1b[31m\";\n return \"\\x1b[0m\";\n };\n\n res.on(\"finish\", () => {\n const duration = Date.now() - startTime;\n\n const now = new Date();\n const time = now.toTimeString().split(\" \")[0];\n\n const methodColor =\n methodColors[req.method as keyof typeof methodColors] || \"\\x1b[0m\";\n const statusColor = getStatusColor(res.statusCode);\n\n console.info(\n `[\\x1b[36mInfo\\x1b[0m] \\x1b[90m${time}\\x1b[0m ${methodColor}${\n req.method\n }\\x1b[0m ${decodeURIComponent(req.originalUrl)} ${statusColor}${\n res.statusCode\n }\\x1b[0m \\x1b[35m${duration}ms\\x1b[0m`\n );\n });\n\n next();\n}\n\n/**\n * @deprecated Will be removed in v2.0, please ArkosRouter instead.\n */\nexport function handleRequestBodyValidationAndTransformation<T extends object>(\n schemaOrDtoClass?: ClassConstructor<T>,\n classValidatorValidationOptions?: ValidatorOptions\n): ArkosRequestHandler;\nexport function handleRequestBodyValidationAndTransformation<T extends object>(\n schemaOrDtoClass?: ZodSchema<T>\n): ArkosRequestHandler;\nexport function handleRequestBodyValidationAndTransformation<T extends object>(\n schemaOrDtoClass?: ZodSchema<T> | ClassConstructor<T>,\n classValidatorValidationOptions?: ValidatorOptions\n) {\n return catchAsync(\n async (req: ArkosRequest, _: ArkosResponse, next: ArkosNextFunction) => {\n const validationConfigs = getArkosConfig()?.validation;\n let body = req.body;\n\n if (validationConfigs?.resolver === \"class-validator\" && schemaOrDtoClass)\n req.body = await validateDto(\n schemaOrDtoClass as ClassConstructor<T>,\n body,\n deepmerge(\n {\n whitelist: true,\n ...classValidatorValidationOptions,\n },\n validationConfigs?.validationOptions || {}\n )\n );\n else if (validationConfigs?.resolver === \"zod\" && schemaOrDtoClass)\n req.body = await validateSchema(schemaOrDtoClass as any, body);\n\n next();\n }\n );\n}\n\nexport function validateRequestInputs(routeConfig: ArkosRouteConfig) {\n const arkosConfig = getArkosConfig();\n const validationConfig = arkosConfig.validation;\n const strictValidation = validationConfig?.strict;\n const validators = routeConfig?.validation;\n const openapi = routeConfig?.experimental?.openapi;\n\n const validationToParameterMapping = {\n query: \"query\",\n params: \"path\",\n headers: \"header\",\n cookies: \"cookie\",\n };\n\n if (\n !validationConfig?.resolver &&\n Object.keys(routeConfig.validation || {}).length > 0\n )\n throw Error(\n `Trying to pass validators into route \\\"${routeConfig.path}\\\" config validation option without choosing a validation resolver under arkos config { validation: {} }.`\n );\n\n if ((validators as any) === true)\n throw Error(\n `Invalid value ${validators} passed to validation option, it can only receive false or object of { query, body, params }.`\n );\n\n const validatorFn: (validator: any, data: any, options: any) => Promise<any> =\n validationConfig?.resolver == \"zod\" ? validateSchema : validateDto;\n const validatorsKey: (\"body\" | \"query\" | \"params\")[] = [\n \"body\",\n \"query\",\n \"params\",\n ];\n\n const isValidValidator =\n validationConfig?.resolver == \"zod\" ? isZodSchema : isClass;\n const validatorName =\n validationConfig?.resolver == \"zod\" ? \"zod schema\" : \"class-validator dto\";\n const validatorNameType =\n validationConfig?.resolver == \"zod\" ? \"Schema\" : \"Dto\";\n\n if (typeof validators === \"object\")\n validatorsKey.forEach((key) => {\n if (\n openapi &&\n typeof openapi === \"object\" &&\n key != \"body\" &&\n openapi.parameters?.some(\n (parameter: any) => parameter.in === validationToParameterMapping[key]\n ) &&\n validators[key]\n ) {\n throw Error(\n `Error in ${routeConfig.path}: when usign validation.${key} you must not define parameters under openapi.parameters as documentation of req.${key} because the ${validatorName} you passed under validation.${key} will be added as jsonSchema into the api documenation, if you wish to define documenation by yourself do not define validation.${key}.`\n );\n }\n\n if (\n openapi &&\n typeof openapi === \"object\" &&\n openapi.requestBody &&\n validators[key] &&\n key === \"body\"\n ) {\n throw Error(\n `When usign validation.${key} you must not define json-schema under openapi.requestBody as documentation for req.${key}, because the ${validatorName} you passed under validation.${key} will be added as json-schema into the api documenation, if you wish to define documenation by yourself do not define validation.${key}.`\n );\n }\n\n if (strictValidation && !(key in validators))\n throw Error(\n `No { validation: { ${key}: ${validatorNameType} } } was found, while using strict validation you will need to pass undefined into ${key} in order to deny any request ${key} input.`\n );\n\n if (\n key in validators &&\n validators?.[key] !== undefined &&\n validators?.[key] !== false &&\n !isValidValidator(validators[key])\n )\n throw Error(\n `Your validation resolver is set to ${arkosConfig.validation!.resolver}, please provide a valid ${validatorName} in order to use in { validation: { ${key}: ${validatorNameType} } } under route ${routeConfig.path}`\n );\n });\n\n return catchAsync(\n async (req: ArkosRequest, _: ArkosResponse, next: ArkosNextFunction) => {\n for (const key of validatorsKey) {\n const reqInput = Object.keys(req[key] || {}).length > 0;\n const validator = (validators as any)?.[key];\n const notAllowedInputError = new AppError(\n `Request ${key} is not allowed on this route`,\n 400,\n `Request${capitalize(key)}NotAllowed`,\n { [key]: req[key] }\n );\n\n if (\n ((typeof validators === \"boolean\" && validators === false) ||\n validator === false) &&\n reqInput\n )\n throw notAllowedInputError;\n\n if (strictValidation && !validator && reqInput)\n throw notAllowedInputError;\n if (validator)\n try {\n req[key] = await validatorFn(\n validator,\n req[key],\n arkosConfig.validation?.validationOptions\n );\n } catch (err: any) {\n throw new AppError(\n `Invalid request ${key}`,\n 400,\n `InvalidRequest${pascalCase(key)}`,\n (err &&\n (validationConfig?.resolver === \"zod\" ? err.format() : err)) ||\n {}\n );\n }\n }\n\n next();\n }\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"base.service.types.js","sourceRoot":"","sources":["../../../../../src/modules/base/types/base.service.types.ts"],"names":[],"mappings":"","sourcesContent":["import { User } from \"../../../types\";\n\nexport type ModelDelegate = Record<string, any>;\nexport type ModelGetPayload<G, T = any> = G extends {\n $args: (arg: T) => infer R;\n}\n ? R\n : never;\n\n// Create Operations\nexport type CreateOneData<T extends ModelDelegate> = Parameters<\n T[\"create\"]\n>[0] extends { data: infer D; [x: string]: any }\n ? D\n : any;\n\nexport type CreateOneOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"create\"]>[0],\n \"data\"\n>;\n\nexport type CreateOneResult<T extends ModelDelegate> =\n T[\"create\"] extends (args: { data: any }) => infer R ? R : any;\n\nexport type CreateManyData<T extends ModelDelegate> = Parameters<\n T[\"createMany\"]\n>[0] extends { data: infer D; [x: string]: any }\n ? D\n : any;\n\nexport type CreateManyOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"createMany\"]>[0],\n \"data\"\n>;\n\nexport type CreateManyResult<T extends ModelDelegate> =\n T[\"createMany\"] extends (args: { data: any }) => infer R ? R : any;\n\n// Read Operations\nexport type CountFilters<T extends ModelDelegate> = Parameters<\n T[\"count\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type FindManyFilters<T extends ModelDelegate> = Parameters<\n T[\"findMany\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type FindManyOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"findMany\"]>[0],\n \"where\"\n>;\n\nexport type FindManyResult<\n T extends ModelDelegate,\n TOptions = any,\n> = T[\"findMany\"] extends (args: { where: any } & TOptions) => infer R\n ? R\n : any;\n\nexport type FindByIdOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"findUnique\"]>[0],\n \"where\"\n>;\n\nexport type FindByIdResult<T extends ModelDelegate> =\n T[\"findUnique\"] extends (args: { where: any }) => infer R ? R : any;\n\nexport type FindOneFilters<T extends ModelDelegate> = Parameters<\n T[\"findFirst\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type FindOneOptions<T extends ModelDelegate> =\n | Omit<Parameters<T[\"findFirst\"]>[0], \"where\">\n | Omit<Parameters<T[\"findUnique\"]>[0], \"where\">;\n\nexport type FindOneResult<T extends ModelDelegate> =\n T[\"findFirst\"] extends (args: { where: any }) => infer R\n ? R\n : T[\"findUnique\"] extends (args: { where: any }) => infer R2\n ? R2\n : any;\n\n// Update Operations\nexport type UpdateOneFilters<T extends ModelDelegate> = Parameters<\n T[\"update\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type UpdateOneData<T extends ModelDelegate> = Parameters<\n T[\"update\"]\n>[0] extends { data: infer D; [x: string]: any }\n ? D\n : any;\n\nexport type UpdateOneOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"update\"]>[0],\n \"where\" | \"data\"\n>;\n\nexport type UpdateOneResult<T extends ModelDelegate> =\n T[\"update\"] extends (args: { where: any; data: any }) => infer R ? R : any;\n\nexport type UpdateManyFilters<T extends ModelDelegate> = Parameters<\n T[\"updateMany\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type UpdateManyData<T extends ModelDelegate> = Parameters<\n T[\"updateMany\"]\n>[0] extends { data: infer D; [x: string]: any }\n ? D\n : any;\n\nexport type UpdateManyOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"updateMany\"]>[0],\n \"where\" | \"data\"\n>;\n\nexport type UpdateManyResult<T extends ModelDelegate> =\n T[\"updateMany\"] extends (args: { where: any; data: any }) => infer R\n ? R\n : any;\n\n// Delete Operations\nexport type DeleteOneFilters<T extends ModelDelegate> = Parameters<\n T[\"delete\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type DeleteOneResult<T extends ModelDelegate> = ReturnType<T[\"delete\"]>;\n\nexport type DeleteManyFilters<T extends ModelDelegate> = Parameters<\n T[\"deleteMany\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : Record<string, any>;\n\nexport type DeleteManyResult<T extends ModelDelegate> = ReturnType<\n T[\"deleteMany\"]\n>;\n\n// Service Hooks types\nexport interface ServiceBaseContext {\n /**\n * The authenticated user making the request\n */\n user?: User;\n\n /**\n * The access token from the request for authorization\n */\n accessToken?: string;\n\n /**\n * Array of hook types to skip for this operation.\n * - \"before\": Skip the before hook (e.g., beforeCreateOne)\n * - \"after\": Skip the after hook (e.g., afterCreateOne)\n * - \"error\": Skip the error hook (e.g., onCreateOneError)\n *\n * @example\n * ```typescript\n * // Skip before and error hooks\n * { skip: [\"before\", \"error\"] }\n *\n * // Skip all hooks\n * { skip: [\"before\", \"after\", \"error\"] }\n * ```\n */\n skip?:\n | (\"before\" | \"after\" | \"error\")[]\n | \"before\"\n | \"after\"\n | \"error\"\n | \"all\";\n\n /**\n * Whether to re-throw errors after error hooks have been executed.\n * - `true` (default): Error hooks run, then error is re-thrown\n * - `false`: Error hooks run, then method returns fallback value instead of throwing\n * @default true\n * ```\n */\n throwOnError?: boolean;\n}\n\nexport interface BeforeCreateOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n data: CreateOneData<T>;\n queryOptions?: CreateOneOptions<T>;\n context?: Context;\n}\n\nexport interface AfterCreateOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<CreateOneResult<T>>;\n data: CreateOneData<T>;\n queryOptions?: CreateOneOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeCreateManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n data: CreateManyData<T>;\n queryOptions?: CreateManyOptions<T>;\n context?: Context;\n}\n\nexport interface AfterCreateManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<CreateManyResult<T>>;\n queryOptions?: CreateManyOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeCountHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters?: CountFilters<T>;\n context?: Context;\n}\n\nexport interface AfterCountHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: number;\n filters?: CountFilters<T>;\n context?: Context;\n}\n\nexport interface BeforeFindManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters?: FindManyFilters<T>;\n queryOptions?: FindManyOptions<T>;\n context?: Context;\n}\n\nexport interface AfterFindManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<FindManyResult<T>>;\n filters?: FindManyFilters<T>;\n queryOptions?: FindManyOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeFindOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters: FindOneFilters<T>;\n queryOptions?: FindOneOptions<T>;\n context?: Context;\n}\n\nexport interface AfterFindOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<FindOneResult<T>>;\n filters: FindOneFilters<T>;\n queryOptions?: FindOneOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeUpdateOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters: UpdateOneFilters<T>;\n data: UpdateOneData<T>;\n queryOptions?: UpdateOneOptions<T>;\n context?: Context;\n}\n\nexport interface AfterUpdateOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<UpdateOneResult<T>>;\n filters: UpdateOneFilters<T>;\n data: UpdateOneData<T>;\n queryOptions?: UpdateOneOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeUpdateManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters: UpdateManyFilters<T>;\n data: UpdateManyData<T>;\n queryOptions?: UpdateManyOptions<T>;\n context?: Context;\n}\n\nexport interface AfterUpdateManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<UpdateManyResult<T>>;\n filters: UpdateManyFilters<T>;\n data: UpdateManyData<T>;\n queryOptions?: UpdateManyOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeDeleteOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters: DeleteOneFilters<T>;\n context?: Context;\n}\n\nexport interface AfterDeleteOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<DeleteOneResult<T>>;\n filters: DeleteOneFilters<T>;\n context?: Context;\n}\n\nexport interface BeforeDeleteManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters: DeleteManyFilters<T>;\n context?: Context;\n}\n\nexport interface AfterDeleteManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<DeleteManyResult<T>>;\n filters: DeleteManyFilters<T>;\n context?: Context;\n}\n\nexport interface OnCreateOneErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeCreateOneHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnCreateManyErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeCreateManyHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnCountErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeCountHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnFindManyErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeFindManyHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnFindByIdErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n error: any;\n id: string | number;\n queryOptions?: FindByIdOptions<T>;\n context?: Context;\n}\n\nexport interface OnFindOneErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeFindOneHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnUpdateOneErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeUpdateOneHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnUpdateManyErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeUpdateManyHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnDeleteOneErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeDeleteOneHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnDeleteManyErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeDeleteManyHookArgs<T, Context> {\n error: any;\n}\n"]}
1
+ {"version":3,"file":"base.service.types.js","sourceRoot":"","sources":["../../../../../src/modules/base/types/base.service.types.ts"],"names":[],"mappings":"","sourcesContent":["import { User } from \"../../../types\";\n\nexport type ModelDelegate = Record<string, any>;\n\n// Create Operations\nexport type CreateOneData<T extends ModelDelegate> = Parameters<\n T[\"create\"]\n>[0] extends { data: infer D; [x: string]: any }\n ? D\n : any;\n\nexport type CreateOneOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"create\"]>[0],\n \"data\"\n>;\n\nexport type CreateOneResult<T extends ModelDelegate> =\n T[\"create\"] extends (args: { data: any }) => infer R ? R : any;\n\nexport type CreateManyData<T extends ModelDelegate> = Parameters<\n T[\"createMany\"]\n>[0] extends { data: infer D; [x: string]: any }\n ? D\n : any;\n\nexport type CreateManyOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"createMany\"]>[0],\n \"data\"\n>;\n\nexport type CreateManyResult<T extends ModelDelegate> =\n T[\"createMany\"] extends (args: { data: any }) => infer R ? R : any;\n\n// Read Operations\nexport type CountFilters<T extends ModelDelegate> = Parameters<\n T[\"count\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type FindManyFilters<T extends ModelDelegate> = Parameters<\n T[\"findMany\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type FindManyOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"findMany\"]>[0],\n \"where\"\n>;\n\nexport type FindManyResult<\n T extends ModelDelegate,\n TOptions = any,\n> = T[\"findMany\"] extends (args: { where: any } & TOptions) => infer R\n ? R\n : any;\n\nexport type FindByIdOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"findUnique\"]>[0],\n \"where\"\n>;\n\nexport type FindByIdResult<T extends ModelDelegate> =\n T[\"findUnique\"] extends (args: { where: any }) => infer R ? R : any;\n\nexport type FindOneFilters<T extends ModelDelegate> = Parameters<\n T[\"findFirst\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type FindOneOptions<T extends ModelDelegate> =\n | Omit<Parameters<T[\"findFirst\"]>[0], \"where\">\n | Omit<Parameters<T[\"findUnique\"]>[0], \"where\">;\n\nexport type FindOneResult<T extends ModelDelegate> =\n T[\"findFirst\"] extends (args: { where: any }) => infer R\n ? R\n : T[\"findUnique\"] extends (args: { where: any }) => infer R2\n ? R2\n : any;\n\n// Update Operations\nexport type UpdateOneFilters<T extends ModelDelegate> = Parameters<\n T[\"update\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type UpdateOneData<T extends ModelDelegate> = Parameters<\n T[\"update\"]\n>[0] extends { data: infer D; [x: string]: any }\n ? D\n : any;\n\nexport type UpdateOneOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"update\"]>[0],\n \"where\" | \"data\"\n>;\n\nexport type UpdateOneResult<T extends ModelDelegate> =\n T[\"update\"] extends (args: { where: any; data: any }) => infer R ? R : any;\n\nexport type UpdateManyFilters<T extends ModelDelegate> = Parameters<\n T[\"updateMany\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type UpdateManyData<T extends ModelDelegate> = Parameters<\n T[\"updateMany\"]\n>[0] extends { data: infer D; [x: string]: any }\n ? D\n : any;\n\nexport type UpdateManyOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"updateMany\"]>[0],\n \"where\" | \"data\"\n>;\n\nexport type UpdateManyResult<T extends ModelDelegate> =\n T[\"updateMany\"] extends (args: { where: any; data: any }) => infer R\n ? R\n : any;\n\n// Delete Operations\nexport type DeleteOneFilters<T extends ModelDelegate> = Parameters<\n T[\"delete\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type DeleteOneResult<T extends ModelDelegate> = ReturnType<T[\"delete\"]>;\n\nexport type DeleteManyFilters<T extends ModelDelegate> = Parameters<\n T[\"deleteMany\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : Record<string, any>;\n\nexport type DeleteManyResult<T extends ModelDelegate> = ReturnType<\n T[\"deleteMany\"]\n>;\n\n// Service Hooks types\nexport interface ServiceBaseContext {\n /**\n * The authenticated user making the request\n */\n user?: User;\n\n /**\n * The access token from the request for authorization\n */\n accessToken?: string;\n\n /**\n * Array of hook types to skip for this operation.\n * - \"before\": Skip the before hook (e.g., beforeCreateOne)\n * - \"after\": Skip the after hook (e.g., afterCreateOne)\n * - \"error\": Skip the error hook (e.g., onCreateOneError)\n *\n * @example\n * ```typescript\n * // Skip before and error hooks\n * { skip: [\"before\", \"error\"] }\n *\n * // Skip all hooks\n * { skip: [\"before\", \"after\", \"error\"] }\n * ```\n */\n skip?:\n | (\"before\" | \"after\" | \"error\")[]\n | \"before\"\n | \"after\"\n | \"error\"\n | \"all\";\n\n /**\n * Whether to re-throw errors after error hooks have been executed.\n * - `true` (default): Error hooks run, then error is re-thrown\n * - `false`: Error hooks run, then method returns fallback value instead of throwing\n * @default true\n * ```\n */\n throwOnError?: boolean;\n}\n\nexport interface BeforeCreateOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n data: CreateOneData<T>;\n queryOptions?: CreateOneOptions<T>;\n context?: Context;\n}\n\nexport interface AfterCreateOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<CreateOneResult<T>>;\n data: CreateOneData<T>;\n queryOptions?: CreateOneOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeCreateManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n data: CreateManyData<T>;\n queryOptions?: CreateManyOptions<T>;\n context?: Context;\n}\n\nexport interface AfterCreateManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<CreateManyResult<T>>;\n queryOptions?: CreateManyOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeCountHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters?: CountFilters<T>;\n context?: Context;\n}\n\nexport interface AfterCountHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: number;\n filters?: CountFilters<T>;\n context?: Context;\n}\n\nexport interface BeforeFindManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters?: FindManyFilters<T>;\n queryOptions?: FindManyOptions<T>;\n context?: Context;\n}\n\nexport interface AfterFindManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<FindManyResult<T>>;\n filters?: FindManyFilters<T>;\n queryOptions?: FindManyOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeFindOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters: FindOneFilters<T>;\n queryOptions?: FindOneOptions<T>;\n context?: Context;\n}\n\nexport interface AfterFindOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<FindOneResult<T>>;\n filters: FindOneFilters<T>;\n queryOptions?: FindOneOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeUpdateOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters: UpdateOneFilters<T>;\n data: UpdateOneData<T>;\n queryOptions?: UpdateOneOptions<T>;\n context?: Context;\n}\n\nexport interface AfterUpdateOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<UpdateOneResult<T>>;\n filters: UpdateOneFilters<T>;\n data: UpdateOneData<T>;\n queryOptions?: UpdateOneOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeUpdateManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters: UpdateManyFilters<T>;\n data: UpdateManyData<T>;\n queryOptions?: UpdateManyOptions<T>;\n context?: Context;\n}\n\nexport interface AfterUpdateManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<UpdateManyResult<T>>;\n filters: UpdateManyFilters<T>;\n data: UpdateManyData<T>;\n queryOptions?: UpdateManyOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeDeleteOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters: DeleteOneFilters<T>;\n context?: Context;\n}\n\nexport interface AfterDeleteOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<DeleteOneResult<T>>;\n filters: DeleteOneFilters<T>;\n context?: Context;\n}\n\nexport interface BeforeDeleteManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters: DeleteManyFilters<T>;\n context?: Context;\n}\n\nexport interface AfterDeleteManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<DeleteManyResult<T>>;\n filters: DeleteManyFilters<T>;\n context?: Context;\n}\n\nexport interface OnCreateOneErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeCreateOneHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnCreateManyErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeCreateManyHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnCountErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeCountHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnFindManyErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeFindManyHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnFindByIdErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n error: any;\n id: string | number;\n queryOptions?: FindByIdOptions<T>;\n context?: Context;\n}\n\nexport interface OnFindOneErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeFindOneHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnUpdateOneErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeUpdateOneHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnUpdateManyErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeUpdateManyHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnDeleteOneErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeDeleteOneHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnDeleteManyErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeDeleteManyHookArgs<T, Context> {\n error: any;\n}\n"]}
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.setupRouters = setupRouters;
7
7
  exports.isEndpointDisabled = isEndpointDisabled;
8
- exports.isParentEndpointAllowed = isParentEndpointAllowed;
9
8
  const pluralize_1 = __importDefault(require("pluralize"));
10
9
  const utils_1 = require("../../../../exports/utils/index.js");
11
10
  const dynamic_loader_1 = require("../../../../utils/dynamic-loader.js");
@@ -16,6 +15,7 @@ const router_validator_1 = __importDefault(require("../router-validator.js"));
16
15
  const fs_helpers_1 = require("../../../../utils/helpers/fs.helpers.js");
17
16
  const prisma_schema_parser_1 = __importDefault(require("../../../../utils/prisma/prisma-schema-parser.js"));
18
17
  const debugger_service_1 = __importDefault(require("../../../debugger/debugger.service.js"));
18
+ const model_openapi_generator_1 = __importDefault(require("../model-openapi-generator.js"));
19
19
  function setupRouters(router, arkosConfig) {
20
20
  return prisma_schema_parser_1.default.getModelsAsArrayOfStrings().map(async (model) => {
21
21
  const modelNameInKebab = (0, utils_1.kebabCase)(model);
@@ -48,14 +48,56 @@ function setupRouters(router, arkosConfig) {
48
48
  else
49
49
  throw Error(`ValidationError: The exported router from ${modelNameInKebab}.router.${(0, fs_helpers_1.getUserFileExtension)()} is not a valid express Router.`);
50
50
  }
51
+ const validationMap = {
52
+ createOne: "create",
53
+ updateOne: "update",
54
+ createMany: "createMany",
55
+ updateMany: "updateMany",
56
+ };
57
+ const endpoints = [
58
+ "createOne",
59
+ "findMany",
60
+ "createMany",
61
+ "updateMany",
62
+ "deleteMany",
63
+ "findOne",
64
+ "updateOne",
65
+ "deleteOne",
66
+ ];
67
+ for (const endpoint of endpoints) {
68
+ let endpointConfig = routerConfig[endpoint];
69
+ const validationKey = validationMap[endpoint];
70
+ if (validationKey) {
71
+ const schema = getValidationSchemaOrDto(validationKey);
72
+ if (schema &&
73
+ endpointConfig?.validation !== false &&
74
+ endpointConfig?.validation?.body !== false)
75
+ endpointConfig = {
76
+ ...(endpointConfig || {}),
77
+ validation: {
78
+ ...(endpointConfig?.validation || {}),
79
+ body: schema,
80
+ },
81
+ };
82
+ }
83
+ if (endpointConfig?.experimental?.openapi !== false)
84
+ endpointConfig = {
85
+ ...(endpointConfig || {}),
86
+ experimental: {
87
+ ...(endpointConfig?.experimental || {}),
88
+ openapi: model_openapi_generator_1.default.getOpenApiConfig(endpointConfig, endpoint, modelNameInKebab, prismaQueryOptions),
89
+ },
90
+ };
91
+ routerConfig[endpoint] = endpointConfig;
92
+ }
51
93
  if (!hasCustomImplementation(`/${routeName}`, "post")) {
52
- router.post((0, routers_helpers_1.createRouteConfig)(arkosConfig, "createOne", routeName, "", routerConfig, modelNameInKebab, authConfigs, getValidationSchemaOrDto("create")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "createOne"), ...(0, routers_helpers_1.processMiddleware)(interceptors?.beforeCreateOne), controller.createOne, ...(0, routers_helpers_1.processMiddleware)(interceptors?.afterCreateOne), base_middlewares_1.sendResponse, ...(0, routers_helpers_1.processMiddleware)(interceptors?.onCreateOneError, { type: "error" }));
94
+ router.post((0, routers_helpers_1.createRouteConfig)(arkosConfig, "createOne", routeName, "", routerConfig, modelNameInKebab, authConfigs), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "createOne"), ...(0, routers_helpers_1.processMiddleware)(interceptors?.beforeCreateOne), controller.createOne, ...(0, routers_helpers_1.processMiddleware)(interceptors?.afterCreateOne), base_middlewares_1.sendResponse, ...(0, routers_helpers_1.processMiddleware)(interceptors?.onCreateOneError, { type: "error" }));
53
95
  }
54
96
  if (!hasCustomImplementation(`/${routeName}`, "get")) {
55
97
  router.get((0, routers_helpers_1.createRouteConfig)(arkosConfig, "findMany", routeName, "", routerConfig, modelNameInKebab, authConfigs), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "findMany"), ...(0, routers_helpers_1.processMiddleware)(interceptors?.beforeFindMany), controller.findMany, ...(0, routers_helpers_1.processMiddleware)(interceptors?.afterFindMany), base_middlewares_1.sendResponse, ...(0, routers_helpers_1.processMiddleware)(interceptors?.onFindManyError, { type: "error" }));
56
98
  }
57
99
  if (!hasCustomImplementation(`/${routeName}/many`, "post")) {
58
- router.post((0, routers_helpers_1.createRouteConfig)(arkosConfig, "createMany", routeName, "/many", routerConfig, modelNameInKebab, authConfigs, getValidationSchemaOrDto("createMany")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "createMany"), ...(0, routers_helpers_1.processMiddleware)(interceptors?.beforeCreateMany), controller.createMany, ...(0, routers_helpers_1.processMiddleware)(interceptors?.afterCreateMany), base_middlewares_1.sendResponse, ...(0, routers_helpers_1.processMiddleware)(interceptors?.onCreateManyError, { type: "error" }));
100
+ router.post((0, routers_helpers_1.createRouteConfig)(arkosConfig, "createMany", routeName, "/many", routerConfig, modelNameInKebab, authConfigs), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "createMany"), ...(0, routers_helpers_1.processMiddleware)(interceptors?.beforeCreateMany), controller.createMany, ...(0, routers_helpers_1.processMiddleware)(interceptors?.afterCreateMany), base_middlewares_1.sendResponse, ...(0, routers_helpers_1.processMiddleware)(interceptors?.onCreateManyError, { type: "error" }));
59
101
  }
60
102
  if (!hasCustomImplementation(`/${routeName}/many`, "patch")) {
61
103
  router.patch((0, routers_helpers_1.createRouteConfig)(arkosConfig, "updateMany", routeName, "/many", routerConfig, modelNameInKebab, authConfigs), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "updateMany"), ...(0, routers_helpers_1.processMiddleware)(interceptors?.beforeUpdateMany), controller.updateMany, ...(0, routers_helpers_1.processMiddleware)(interceptors?.afterUpdateMany), base_middlewares_1.sendResponse, ...(0, routers_helpers_1.processMiddleware)(interceptors?.onUpdateManyError, { type: "error" }));
@@ -67,7 +109,7 @@ function setupRouters(router, arkosConfig) {
67
109
  router.get((0, routers_helpers_1.createRouteConfig)(arkosConfig, "findOne", routeName, "/:id", routerConfig, modelNameInKebab, authConfigs), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "findOne"), ...(0, routers_helpers_1.processMiddleware)(interceptors?.beforeFindOne), controller.findOne, ...(0, routers_helpers_1.processMiddleware)(interceptors?.afterFindOne), base_middlewares_1.sendResponse, ...(0, routers_helpers_1.processMiddleware)(interceptors?.onFindOneError, { type: "error" }));
68
110
  }
69
111
  if (!hasCustomImplementation(`/${routeName}/:id`, "patch")) {
70
- router.patch((0, routers_helpers_1.createRouteConfig)(arkosConfig, "updateOne", routeName, "/:id", routerConfig, modelNameInKebab, authConfigs, getValidationSchemaOrDto("update")), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "updateOne"), ...(0, routers_helpers_1.processMiddleware)(interceptors?.beforeUpdateOne), controller.updateOne, ...(0, routers_helpers_1.processMiddleware)(interceptors?.afterUpdateOne), base_middlewares_1.sendResponse, ...(0, routers_helpers_1.processMiddleware)(interceptors?.onUpdateOneError, { type: "error" }));
112
+ router.patch((0, routers_helpers_1.createRouteConfig)(arkosConfig, "updateOne", routeName, "/:id", routerConfig, modelNameInKebab, authConfigs), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "updateOne"), ...(0, routers_helpers_1.processMiddleware)(interceptors?.beforeUpdateOne), controller.updateOne, ...(0, routers_helpers_1.processMiddleware)(interceptors?.afterUpdateOne), base_middlewares_1.sendResponse, ...(0, routers_helpers_1.processMiddleware)(interceptors?.onUpdateOneError, { type: "error" }));
71
113
  }
72
114
  if (!hasCustomImplementation(`/${routeName}/:id`, "delete")) {
73
115
  router.delete((0, routers_helpers_1.createRouteConfig)(arkosConfig, "deleteOne", routeName, "/:id", routerConfig, modelNameInKebab, authConfigs), (0, base_middlewares_1.addPrismaQueryOptionsToRequest)(prismaQueryOptions, "deleteOne"), ...(0, routers_helpers_1.processMiddleware)(interceptors?.beforeDeleteOne), controller.deleteOne, ...(0, routers_helpers_1.processMiddleware)(interceptors?.afterDeleteOne), base_middlewares_1.sendResponse, ...(0, routers_helpers_1.processMiddleware)(interceptors?.onDeleteOneError, { type: "error" }));
@@ -84,14 +126,4 @@ function isEndpointDisabled(routerConfig, endpoint) {
84
126
  return routerConfig.disable[endpoint] === true;
85
127
  return false;
86
128
  }
87
- function isParentEndpointAllowed(routerConfig, endpoint) {
88
- if (!routerConfig?.parent)
89
- return false;
90
- const parentEndpoints = routerConfig.parent.endpoints;
91
- if (parentEndpoints === "*")
92
- return true;
93
- if (Array.isArray(parentEndpoints))
94
- return parentEndpoints.includes(endpoint);
95
- return true;
96
- }
97
129
  //# sourceMappingURL=base.router.helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.router.helpers.js","sourceRoot":"","sources":["../../../../../../src/modules/base/utils/helpers/base.router.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { Router } from \"express\";\nimport pluralize from \"pluralize\";\nimport { ArkosConfig, RouterConfig } from \"../../../../exports\";\nimport { kebabCase } from \"../../../../exports/utils\";\nimport { PrismaQueryOptions } from \"../../../../types\";\nimport {\n AuthRouterEndpoint,\n FileUploadRouterEndpoint,\n RouterEndpoint,\n} from \"../../../../types/router-config\";\nimport { getModuleComponents } from \"../../../../utils/dynamic-loader\";\nimport { BaseController } from \"../../base.controller\";\nimport {\n addPrismaQueryOptionsToRequest,\n sendResponse,\n} from \"../../base.middlewares\";\nimport {\n createRouteConfig,\n processMiddleware,\n} from \"../../../../utils/helpers/routers.helpers\";\nimport routerValidator from \"../router-validator\";\nimport { getUserFileExtension } from \"../../../../utils/helpers/fs.helpers\";\nimport prismaSchemaParser from \"../../../../utils/prisma/prisma-schema-parser\";\nimport debuggerService from \"../../../debugger/debugger.service\";\nimport { IArkosRouter } from \"../../../../utils/arkos-router/types\";\n\nexport function setupRouters(router: IArkosRouter, arkosConfig: ArkosConfig) {\n return prismaSchemaParser.getModelsAsArrayOfStrings().map(async (model) => {\n const modelNameInKebab = kebabCase(model);\n const modelModules = getModuleComponents(modelNameInKebab) || {};\n\n const {\n interceptors,\n authConfigs,\n prismaQueryOptions,\n router: customRouterModule,\n dtos,\n schemas,\n } = modelModules;\n\n const routeName = pluralize.plural(modelNameInKebab);\n const controller = new BaseController(model);\n\n const routerConfig: RouterConfig<any> = customRouterModule?.config || {};\n\n const customRouter = customRouterModule?.default as Router;\n const hasCustomImplementation = (path: string, method: string) => {\n return customRouter?.stack?.some(\n (layer) =>\n (layer.path === `/api/${path}` ||\n layer.path === `api/${path}` ||\n layer.path === `api/${path}/` ||\n layer.path === `/api/${path}/`) &&\n layer.method.toLowerCase() === method.toLowerCase()\n );\n };\n\n const getValidationSchemaOrDto = (\n key: \"create\" | \"update\" | \"createMany\" | \"updateMany\"\n ) => {\n const validationConfigs = arkosConfig?.validation;\n if (validationConfigs?.resolver === \"class-validator\") {\n return (dtos as any)?.[key];\n } else if (validationConfigs?.resolver === \"zod\") {\n return (schemas as any)?.[key];\n }\n return undefined;\n };\n\n if (customRouter && customRouterModule) {\n if (routerValidator.isExpressRouter(customRouter))\n router.use(`/${routeName}`, customRouter);\n else\n throw Error(\n `ValidationError: The exported router from ${modelNameInKebab}.router.${getUserFileExtension()} is not a valid express Router.`\n );\n }\n\n // CREATE ONE\n if (!hasCustomImplementation(`/${routeName}`, \"post\")) {\n router.post(\n createRouteConfig(\n arkosConfig,\n \"createOne\",\n routeName,\n \"\",\n routerConfig,\n modelNameInKebab,\n authConfigs,\n getValidationSchemaOrDto(\"create\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createOne\"\n ),\n ...processMiddleware(interceptors?.beforeCreateOne),\n controller.createOne,\n ...processMiddleware(interceptors?.afterCreateOne),\n sendResponse,\n ...processMiddleware(interceptors?.onCreateOneError, { type: \"error\" })\n );\n }\n\n // FIND MANY\n if (!hasCustomImplementation(`/${routeName}`, \"get\")) {\n router.get(\n createRouteConfig(\n arkosConfig,\n \"findMany\",\n routeName,\n \"\",\n routerConfig,\n modelNameInKebab,\n authConfigs\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findMany\"\n ),\n ...processMiddleware(interceptors?.beforeFindMany),\n controller.findMany,\n ...processMiddleware(interceptors?.afterFindMany),\n sendResponse,\n ...processMiddleware(interceptors?.onFindManyError, { type: \"error\" })\n );\n }\n\n // CREATE MANY\n if (!hasCustomImplementation(`/${routeName}/many`, \"post\")) {\n router.post(\n createRouteConfig(\n arkosConfig,\n \"createMany\",\n routeName,\n \"/many\",\n routerConfig,\n modelNameInKebab,\n authConfigs,\n getValidationSchemaOrDto(\"createMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createMany\"\n ),\n ...processMiddleware(interceptors?.beforeCreateMany),\n controller.createMany,\n ...processMiddleware(interceptors?.afterCreateMany),\n sendResponse,\n ...processMiddleware(interceptors?.onCreateManyError, { type: \"error\" })\n );\n }\n\n // UPDATE MANY\n if (!hasCustomImplementation(`/${routeName}/many`, \"patch\")) {\n router.patch(\n createRouteConfig(\n arkosConfig,\n \"updateMany\",\n routeName,\n \"/many\",\n routerConfig,\n modelNameInKebab,\n authConfigs\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateMany\"\n ),\n ...processMiddleware(interceptors?.beforeUpdateMany),\n controller.updateMany,\n ...processMiddleware(interceptors?.afterUpdateMany),\n sendResponse,\n ...processMiddleware(interceptors?.onUpdateManyError, { type: \"error\" })\n );\n }\n\n // DELETE MANY\n if (!hasCustomImplementation(`/${routeName}/many`, \"delete\")) {\n router.delete(\n createRouteConfig(\n arkosConfig,\n \"deleteMany\",\n routeName,\n \"/many\",\n routerConfig,\n modelNameInKebab,\n authConfigs\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteMany\"\n ),\n ...processMiddleware(interceptors?.beforeDeleteMany),\n controller.deleteMany,\n ...processMiddleware(interceptors?.afterDeleteMany),\n sendResponse,\n ...processMiddleware(interceptors?.onDeleteManyError, { type: \"error\" })\n );\n }\n\n // FIND ONE\n if (!hasCustomImplementation(`/${routeName}/:id`, \"get\")) {\n router.get(\n createRouteConfig(\n arkosConfig,\n \"findOne\",\n routeName,\n \"/:id\",\n routerConfig,\n modelNameInKebab,\n authConfigs\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findOne\"\n ),\n ...processMiddleware(interceptors?.beforeFindOne),\n controller.findOne,\n ...processMiddleware(interceptors?.afterFindOne),\n sendResponse,\n ...processMiddleware(interceptors?.onFindOneError, { type: \"error\" })\n );\n }\n\n // UPDATE ONE\n if (!hasCustomImplementation(`/${routeName}/:id`, \"patch\")) {\n router.patch(\n createRouteConfig(\n arkosConfig,\n \"updateOne\",\n routeName,\n \"/:id\",\n routerConfig,\n modelNameInKebab,\n authConfigs,\n getValidationSchemaOrDto(\"update\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateOne\"\n ),\n ...processMiddleware(interceptors?.beforeUpdateOne),\n controller.updateOne,\n ...processMiddleware(interceptors?.afterUpdateOne),\n sendResponse,\n ...processMiddleware(interceptors?.onUpdateOneError, { type: \"error\" })\n );\n }\n\n // DELETE ONE\n if (!hasCustomImplementation(`/${routeName}/:id`, \"delete\")) {\n router.delete(\n createRouteConfig(\n arkosConfig,\n \"deleteOne\",\n routeName,\n \"/:id\",\n routerConfig,\n modelNameInKebab,\n authConfigs\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteOne\"\n ),\n ...processMiddleware(interceptors?.beforeDeleteOne),\n controller.deleteOne,\n ...processMiddleware(interceptors?.afterDeleteOne),\n sendResponse,\n ...processMiddleware(interceptors?.onDeleteOneError, { type: \"error\" })\n );\n }\n\n debuggerService.logModuleFinalRouter(modelNameInKebab, router as any);\n });\n}\n\nexport function isEndpointDisabled(\n routerConfig: RouterConfig<any>,\n endpoint: RouterEndpoint | AuthRouterEndpoint | FileUploadRouterEndpoint\n): boolean {\n if (!routerConfig?.disable) return false;\n\n if (routerConfig.disable === true) return true;\n\n if (typeof routerConfig.disable === \"object\")\n return routerConfig.disable[endpoint as never] === true;\n\n return false;\n}\n\nexport function isParentEndpointAllowed(\n routerConfig: any,\n endpoint: string\n): boolean {\n if (!routerConfig?.parent) return false;\n\n const parentEndpoints = routerConfig.parent.endpoints;\n if (parentEndpoints === \"*\") return true;\n if (Array.isArray(parentEndpoints)) return parentEndpoints.includes(endpoint);\n\n return true;\n}\n"]}
1
+ {"version":3,"file":"base.router.helpers.js","sourceRoot":"","sources":["../../../../../../src/modules/base/utils/helpers/base.router.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { Router } from \"express\";\nimport pluralize from \"pluralize\";\nimport { ArkosConfig, RouterConfig } from \"../../../../exports\";\nimport { kebabCase } from \"../../../../exports/utils\";\nimport { PrismaQueryOptions } from \"../../../../types\";\nimport {\n AuthRouterEndpoint,\n FileUploadRouterEndpoint,\n RouterEndpoint,\n} from \"../../../../types/router-config\";\nimport { getModuleComponents } from \"../../../../utils/dynamic-loader\";\nimport { BaseController } from \"../../base.controller\";\nimport {\n addPrismaQueryOptionsToRequest,\n sendResponse,\n} from \"../../base.middlewares\";\nimport {\n createRouteConfig,\n processMiddleware,\n} from \"../../../../utils/helpers/routers.helpers\";\nimport routerValidator from \"../router-validator\";\nimport { getUserFileExtension } from \"../../../../utils/helpers/fs.helpers\";\nimport prismaSchemaParser from \"../../../../utils/prisma/prisma-schema-parser\";\nimport debuggerService from \"../../../debugger/debugger.service\";\nimport { IArkosRouter } from \"../../../../utils/arkos-router/types\";\nimport modelOpenAPIGenerator from \"../model-openapi-generator\";\n\nexport function setupRouters(router: IArkosRouter, arkosConfig: ArkosConfig) {\n return prismaSchemaParser.getModelsAsArrayOfStrings().map(async (model) => {\n const modelNameInKebab = kebabCase(model);\n const modelModules = getModuleComponents(modelNameInKebab) || {};\n\n const {\n interceptors,\n authConfigs,\n prismaQueryOptions,\n router: customRouterModule,\n dtos,\n schemas,\n } = modelModules;\n\n const routeName = pluralize.plural(modelNameInKebab);\n const controller = new BaseController(model);\n\n const routerConfig: RouterConfig<any> = customRouterModule?.config || {};\n\n const customRouter = customRouterModule?.default as Router;\n const hasCustomImplementation = (path: string, method: string) => {\n return customRouter?.stack?.some(\n (layer) =>\n (layer.path === `/api/${path}` ||\n layer.path === `api/${path}` ||\n layer.path === `api/${path}/` ||\n layer.path === `/api/${path}/`) &&\n layer.method.toLowerCase() === method.toLowerCase()\n );\n };\n\n const getValidationSchemaOrDto = (\n key: \"create\" | \"update\" | \"createMany\" | \"updateMany\"\n ) => {\n const validationConfigs = arkosConfig?.validation;\n if (validationConfigs?.resolver === \"class-validator\") {\n return (dtos as any)?.[key];\n } else if (validationConfigs?.resolver === \"zod\") {\n return (schemas as any)?.[key];\n }\n return undefined;\n };\n\n if (customRouter && customRouterModule) {\n if (routerValidator.isExpressRouter(customRouter))\n router.use(`/${routeName}`, customRouter);\n else\n throw Error(\n `ValidationError: The exported router from ${modelNameInKebab}.router.${getUserFileExtension()} is not a valid express Router.`\n );\n }\n\n const validationMap: Record<\n string,\n \"create\" | \"update\" | \"createMany\" | \"updateMany\"\n > = {\n createOne: \"create\",\n updateOne: \"update\",\n createMany: \"createMany\",\n updateMany: \"updateMany\",\n };\n\n const endpoints: RouterEndpoint[] = [\n \"createOne\",\n \"findMany\",\n \"createMany\",\n \"updateMany\",\n \"deleteMany\",\n \"findOne\",\n \"updateOne\",\n \"deleteOne\",\n ];\n\n for (const endpoint of endpoints) {\n let endpointConfig = (routerConfig as any)[endpoint];\n\n const validationKey = validationMap[endpoint];\n if (validationKey) {\n const schema = getValidationSchemaOrDto(validationKey);\n if (\n schema &&\n endpointConfig?.validation !== false &&\n endpointConfig?.validation?.body !== false\n )\n endpointConfig = {\n ...(endpointConfig || {}),\n validation: {\n ...(endpointConfig?.validation || {}),\n body: schema,\n },\n };\n }\n\n if (endpointConfig?.experimental?.openapi !== false)\n endpointConfig = {\n ...(endpointConfig || {}),\n experimental: {\n ...(endpointConfig?.experimental || {}),\n openapi: modelOpenAPIGenerator.getOpenApiConfig(\n endpointConfig,\n endpoint,\n modelNameInKebab,\n prismaQueryOptions as PrismaQueryOptions<any>\n ),\n },\n };\n\n (routerConfig as any)[endpoint] = endpointConfig;\n }\n\n // CREATE ONE\n if (!hasCustomImplementation(`/${routeName}`, \"post\")) {\n router.post(\n createRouteConfig(\n arkosConfig,\n \"createOne\",\n routeName,\n \"\",\n routerConfig,\n modelNameInKebab,\n authConfigs\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createOne\"\n ),\n ...processMiddleware(interceptors?.beforeCreateOne),\n controller.createOne,\n ...processMiddleware(interceptors?.afterCreateOne),\n sendResponse,\n ...processMiddleware(interceptors?.onCreateOneError, { type: \"error\" })\n );\n }\n\n // FIND MANY\n if (!hasCustomImplementation(`/${routeName}`, \"get\")) {\n router.get(\n createRouteConfig(\n arkosConfig,\n \"findMany\",\n routeName,\n \"\",\n routerConfig,\n modelNameInKebab,\n authConfigs\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findMany\"\n ),\n ...processMiddleware(interceptors?.beforeFindMany),\n controller.findMany,\n ...processMiddleware(interceptors?.afterFindMany),\n sendResponse,\n ...processMiddleware(interceptors?.onFindManyError, { type: \"error\" })\n );\n }\n\n // CREATE MANY\n if (!hasCustomImplementation(`/${routeName}/many`, \"post\")) {\n router.post(\n createRouteConfig(\n arkosConfig,\n \"createMany\",\n routeName,\n \"/many\",\n routerConfig,\n modelNameInKebab,\n authConfigs\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createMany\"\n ),\n ...processMiddleware(interceptors?.beforeCreateMany),\n controller.createMany,\n ...processMiddleware(interceptors?.afterCreateMany),\n sendResponse,\n ...processMiddleware(interceptors?.onCreateManyError, { type: \"error\" })\n );\n }\n\n // UPDATE MANY\n if (!hasCustomImplementation(`/${routeName}/many`, \"patch\")) {\n router.patch(\n createRouteConfig(\n arkosConfig,\n \"updateMany\",\n routeName,\n \"/many\",\n routerConfig,\n modelNameInKebab,\n authConfigs\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateMany\"\n ),\n ...processMiddleware(interceptors?.beforeUpdateMany),\n controller.updateMany,\n ...processMiddleware(interceptors?.afterUpdateMany),\n sendResponse,\n ...processMiddleware(interceptors?.onUpdateManyError, { type: \"error\" })\n );\n }\n\n // DELETE MANY\n if (!hasCustomImplementation(`/${routeName}/many`, \"delete\")) {\n router.delete(\n createRouteConfig(\n arkosConfig,\n \"deleteMany\",\n routeName,\n \"/many\",\n routerConfig,\n modelNameInKebab,\n authConfigs\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteMany\"\n ),\n ...processMiddleware(interceptors?.beforeDeleteMany),\n controller.deleteMany,\n ...processMiddleware(interceptors?.afterDeleteMany),\n sendResponse,\n ...processMiddleware(interceptors?.onDeleteManyError, { type: \"error\" })\n );\n }\n\n // FIND ONE\n if (!hasCustomImplementation(`/${routeName}/:id`, \"get\")) {\n router.get(\n createRouteConfig(\n arkosConfig,\n \"findOne\",\n routeName,\n \"/:id\",\n routerConfig,\n modelNameInKebab,\n authConfigs\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findOne\"\n ),\n ...processMiddleware(interceptors?.beforeFindOne),\n controller.findOne,\n ...processMiddleware(interceptors?.afterFindOne),\n sendResponse,\n ...processMiddleware(interceptors?.onFindOneError, { type: \"error\" })\n );\n }\n\n // UPDATE ONE\n if (!hasCustomImplementation(`/${routeName}/:id`, \"patch\")) {\n router.patch(\n createRouteConfig(\n arkosConfig,\n \"updateOne\",\n routeName,\n \"/:id\",\n routerConfig,\n modelNameInKebab,\n authConfigs\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateOne\"\n ),\n ...processMiddleware(interceptors?.beforeUpdateOne),\n controller.updateOne,\n ...processMiddleware(interceptors?.afterUpdateOne),\n sendResponse,\n ...processMiddleware(interceptors?.onUpdateOneError, { type: \"error\" })\n );\n }\n\n // DELETE ONE\n if (!hasCustomImplementation(`/${routeName}/:id`, \"delete\")) {\n router.delete(\n createRouteConfig(\n arkosConfig,\n \"deleteOne\",\n routeName,\n \"/:id\",\n routerConfig,\n modelNameInKebab,\n authConfigs\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteOne\"\n ),\n ...processMiddleware(interceptors?.beforeDeleteOne),\n controller.deleteOne,\n ...processMiddleware(interceptors?.afterDeleteOne),\n sendResponse,\n ...processMiddleware(interceptors?.onDeleteOneError, { type: \"error\" })\n );\n }\n\n debuggerService.logModuleFinalRouter(modelNameInKebab, router as any);\n });\n}\n\nexport function isEndpointDisabled(\n routerConfig: RouterConfig<any>,\n endpoint: RouterEndpoint | AuthRouterEndpoint | FileUploadRouterEndpoint\n): boolean {\n if (!routerConfig?.disable) return false;\n\n if (routerConfig.disable === true) return true;\n\n if (typeof routerConfig.disable === \"object\")\n return routerConfig.disable[endpoint as never] === true;\n\n return false;\n}\n"]}