arkos 2.0.0-next.2 → 2.0.0-next.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (613) hide show
  1. package/README.md +146 -145
  2. package/cli.js +11 -13
  3. package/dist/esm/app.js +17 -16
  4. package/dist/esm/app.js.map +1 -1
  5. package/dist/esm/components/arkos-gateway/arkos-gateway.js +338 -0
  6. package/dist/esm/components/arkos-gateway/arkos-gateway.js.map +1 -0
  7. package/dist/esm/components/arkos-gateway/socket-extensions.js +168 -0
  8. package/dist/esm/components/arkos-gateway/socket-extensions.js.map +1 -0
  9. package/dist/esm/components/arkos-gateway/types.js +3 -0
  10. package/dist/esm/components/arkos-gateway/types.js.map +1 -0
  11. package/dist/esm/components/arkos-gateway/utils/helpers.js +105 -0
  12. package/dist/esm/components/arkos-gateway/utils/helpers.js.map +1 -0
  13. package/dist/esm/components/arkos-gateway/utils/memory-gateway-store.js +45 -0
  14. package/dist/esm/components/arkos-gateway/utils/memory-gateway-store.js.map +1 -0
  15. package/dist/esm/components/arkos-gateway/utils/multi-tier-arkos-gateway-store.js +40 -0
  16. package/dist/esm/components/arkos-gateway/utils/multi-tier-arkos-gateway-store.js.map +1 -0
  17. package/dist/esm/components/arkos-gateway/utils/rate-limiter.js +13 -0
  18. package/dist/esm/components/arkos-gateway/utils/rate-limiter.js.map +1 -0
  19. package/dist/esm/components/arkos-loadable-registry/index.js +1 -3
  20. package/dist/esm/components/arkos-loadable-registry/index.js.map +1 -1
  21. package/dist/esm/components/arkos-policy/index.js +3 -1
  22. package/dist/esm/components/arkos-policy/index.js.map +1 -1
  23. package/dist/esm/components/arkos-route-hook/index.js +2 -1
  24. package/dist/esm/components/arkos-route-hook/index.js.map +1 -1
  25. package/dist/esm/components/arkos-route-hook/reader.js.map +1 -1
  26. package/dist/esm/components/arkos-route-hook/types.js.map +1 -1
  27. package/dist/esm/exports/error-handler/index.js +1 -0
  28. package/dist/esm/exports/error-handler/index.js.map +1 -1
  29. package/dist/esm/exports/index.js +3 -3
  30. package/dist/esm/exports/index.js.map +1 -1
  31. package/dist/esm/exports/middlewares/index.js +1 -1
  32. package/dist/esm/exports/middlewares/index.js.map +1 -1
  33. package/dist/esm/exports/services/index.js +2 -2
  34. package/dist/esm/exports/services/index.js.map +1 -1
  35. package/dist/esm/exports/websockets.js +5 -0
  36. package/dist/esm/exports/websockets.js.map +1 -0
  37. package/dist/esm/generated.js.map +1 -1
  38. package/dist/esm/modules/auth/auth.controller.js +214 -222
  39. package/dist/esm/modules/auth/auth.controller.js.map +1 -1
  40. package/dist/esm/modules/auth/auth.router.js +26 -9
  41. package/dist/esm/modules/auth/auth.router.js.map +1 -1
  42. package/dist/esm/modules/auth/auth.service.js +90 -102
  43. package/dist/esm/modules/auth/auth.service.js.map +1 -1
  44. package/dist/esm/modules/auth/utils/auth-error-objects.js +2 -2
  45. package/dist/esm/modules/auth/utils/auth-error-objects.js.map +1 -1
  46. package/dist/esm/modules/auth/utils/auth-hooks-manager.js +148 -0
  47. package/dist/esm/modules/auth/utils/auth-hooks-manager.js.map +1 -0
  48. package/dist/esm/modules/auth/utils/auth-openapi-generator.js +367 -0
  49. package/dist/esm/modules/auth/utils/auth-openapi-generator.js.map +1 -0
  50. package/dist/esm/modules/auth/utils/auth-prisma-json-schema-generator.js +97 -0
  51. package/dist/esm/modules/auth/utils/auth-prisma-json-schema-generator.js.map +1 -0
  52. package/dist/esm/modules/auth/utils/docs-links.js +6 -0
  53. package/dist/esm/modules/auth/utils/docs-links.js.map +1 -0
  54. package/dist/esm/modules/auth/utils/services/auth-action.service.js +20 -16
  55. package/dist/esm/modules/auth/utils/services/auth-action.service.js.map +1 -1
  56. package/dist/esm/modules/base/base.controller.js +182 -162
  57. package/dist/esm/modules/base/base.controller.js.map +1 -1
  58. package/dist/esm/modules/base/base.middlewares.js +31 -48
  59. package/dist/esm/modules/base/base.middlewares.js.map +1 -1
  60. package/dist/esm/modules/base/base.router.js +23 -9
  61. package/dist/esm/modules/base/base.router.js.map +1 -1
  62. package/dist/esm/modules/base/base.service.js +33 -138
  63. package/dist/esm/modules/base/base.service.js.map +1 -1
  64. package/dist/esm/modules/base/types/base.service.types.js.map +1 -1
  65. package/dist/esm/modules/base/utils/error-prettifier.js +26 -30
  66. package/dist/esm/modules/base/utils/error-prettifier.js.map +1 -1
  67. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +26 -5
  68. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
  69. package/dist/esm/modules/base/utils/model-openapi-generator.js +438 -0
  70. package/dist/esm/modules/base/utils/model-openapi-generator.js.map +1 -0
  71. package/dist/esm/modules/email/email.service.js +17 -10
  72. package/dist/esm/modules/email/email.service.js.map +1 -1
  73. package/dist/esm/modules/error-handler/error-handler.controller.js +24 -113
  74. package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -1
  75. package/dist/esm/modules/error-handler/utils/app-error.js +5 -2
  76. package/dist/esm/modules/error-handler/utils/app-error.js.map +1 -1
  77. package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -1
  78. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +9 -103
  79. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
  80. package/dist/esm/modules/error-handler/utils/errors.js +127 -0
  81. package/dist/esm/modules/error-handler/utils/errors.js.map +1 -0
  82. package/dist/esm/modules/error-handler/utils/get-handled-error.js +68 -0
  83. package/dist/esm/modules/error-handler/utils/get-handled-error.js.map +1 -0
  84. package/dist/esm/modules/error-handler/utils/multer-error-handler.js +34 -0
  85. package/dist/esm/modules/error-handler/utils/multer-error-handler.js.map +1 -0
  86. package/dist/esm/modules/file-upload/file-upload.controller.js +208 -214
  87. package/dist/esm/modules/file-upload/file-upload.controller.js.map +1 -1
  88. package/dist/esm/modules/file-upload/file-upload.router.js +35 -12
  89. package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -1
  90. package/dist/esm/modules/file-upload/file-upload.service.js +13 -8
  91. package/dist/esm/modules/file-upload/file-upload.service.js.map +1 -1
  92. package/dist/esm/modules/file-upload/utils/file-upload-json-schema-generator.js +346 -0
  93. package/dist/esm/modules/file-upload/utils/file-upload-json-schema-generator.js.map +1 -0
  94. package/dist/esm/modules/swagger/swagger.router.js +39 -22
  95. package/dist/esm/modules/swagger/swagger.router.js.map +1 -1
  96. package/dist/esm/modules/swagger/utils/get-open-api-login-html.js +305 -0
  97. package/dist/esm/modules/swagger/utils/get-open-api-login-html.js.map +1 -0
  98. package/dist/esm/modules/swagger/utils/helpers/class-validator-to-json-schema.js.map +1 -1
  99. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js +6 -7
  100. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +1 -1
  101. package/dist/esm/modules/swagger/utils/helpers/openapi-schema-converter.js +6 -3
  102. package/dist/esm/modules/swagger/utils/helpers/openapi-schema-converter.js.map +1 -1
  103. package/dist/esm/server.js +1 -1
  104. package/dist/esm/server.js.map +1 -1
  105. package/dist/esm/types/arkos-config/utils.js +2 -0
  106. package/dist/esm/types/arkos-config/utils.js.map +1 -0
  107. package/dist/esm/types/arkos-prisma-input.js.map +1 -1
  108. package/dist/esm/types/arkos.js.map +1 -1
  109. package/dist/esm/types/auth.js.map +1 -1
  110. package/dist/esm/types/index.js.map +1 -1
  111. package/dist/esm/types/new-arkos-config.js.map +1 -1
  112. package/dist/esm/types/router-config.js.map +1 -1
  113. package/dist/esm/types/upload.js +2 -0
  114. package/dist/esm/types/upload.js.map +1 -0
  115. package/dist/esm/types/validation/validation-manager.js +49 -0
  116. package/dist/esm/types/validation/validation-manager.js.map +1 -0
  117. package/dist/esm/types/validation/validator.js +2 -0
  118. package/dist/esm/types/validation/validator.js.map +1 -0
  119. package/dist/esm/utils/arkos-router/arkos-router-openapi-manager.js +68 -34
  120. package/dist/esm/utils/arkos-router/arkos-router-openapi-manager.js.map +1 -1
  121. package/dist/esm/utils/arkos-router/index.js +37 -130
  122. package/dist/esm/utils/arkos-router/index.js.map +1 -1
  123. package/dist/esm/utils/arkos-router/route-config-registry.js +2 -3
  124. package/dist/esm/utils/arkos-router/route-config-registry.js.map +1 -1
  125. package/dist/esm/utils/arkos-router/types/index.js.map +1 -1
  126. package/dist/esm/utils/arkos-router/types/openapi-config.js.map +1 -1
  127. package/dist/esm/utils/arkos-router/types/upload-config.js.map +1 -1
  128. package/dist/esm/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js +188 -0
  129. package/dist/esm/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js.map +1 -0
  130. package/dist/esm/utils/arkos-router/utils/helpers/index.js +88 -29
  131. package/dist/esm/utils/arkos-router/utils/helpers/index.js.map +1 -1
  132. package/dist/esm/utils/arkos-router/utils/helpers/upload-manager.js +364 -89
  133. package/dist/esm/utils/arkos-router/utils/helpers/upload-manager.js.map +1 -1
  134. package/dist/esm/utils/bundler.js +6 -6
  135. package/dist/esm/utils/bundler.js.map +1 -1
  136. package/dist/esm/utils/cli/build.js +16 -7
  137. package/dist/esm/utils/cli/build.js.map +1 -1
  138. package/dist/esm/utils/cli/dev.js +18 -28
  139. package/dist/esm/utils/cli/dev.js.map +1 -1
  140. package/dist/esm/utils/cli/export-auth-action.js +5 -4
  141. package/dist/esm/utils/cli/export-auth-action.js.map +1 -1
  142. package/dist/esm/utils/cli/generate.js +70 -56
  143. package/dist/esm/utils/cli/generate.js.map +1 -1
  144. package/dist/esm/utils/cli/index.js +54 -50
  145. package/dist/esm/utils/cli/index.js.map +1 -1
  146. package/dist/esm/utils/cli/prisma-generate.js +8 -37
  147. package/dist/esm/utils/cli/prisma-generate.js.map +1 -1
  148. package/dist/esm/utils/cli/start.js +25 -14
  149. package/dist/esm/utils/cli/start.js.map +1 -1
  150. package/dist/esm/utils/cli/utils/cli.helpers.js +1 -1
  151. package/dist/esm/utils/cli/utils/runtime-cli-commander.js +7 -4
  152. package/dist/esm/utils/cli/utils/runtime-cli-commander.js.map +1 -1
  153. package/dist/esm/utils/cli/utils/smart-fs-watcher.js +3 -0
  154. package/dist/esm/utils/cli/utils/smart-fs-watcher.js.map +1 -1
  155. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +307 -11
  156. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +1 -1
  157. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +16 -7
  158. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +1 -1
  159. package/dist/esm/utils/cli/utils/template-generator/templates/generate-multiple-components.js +117 -65
  160. package/dist/esm/utils/cli/utils/template-generator/templates/generate-multiple-components.js.map +1 -1
  161. package/dist/esm/utils/cli/utils/template-generator/templates/policy-template.js +6 -8
  162. package/dist/esm/utils/cli/utils/template-generator/templates/policy-template.js.map +1 -1
  163. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js +13 -2
  164. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js.map +1 -1
  165. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js +2 -2
  166. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js.map +1 -1
  167. package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js +213 -19
  168. package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +1 -1
  169. package/dist/esm/utils/cli/utils/template-generators.js +31 -18
  170. package/dist/esm/utils/cli/utils/template-generators.js.map +1 -1
  171. package/dist/esm/utils/define-config.js +14 -0
  172. package/dist/esm/utils/define-config.js.map +1 -1
  173. package/dist/esm/utils/docs-links.js +2 -0
  174. package/dist/esm/utils/docs-links.js.map +1 -0
  175. package/dist/esm/utils/dotenv.helpers.js +0 -6
  176. package/dist/esm/utils/dotenv.helpers.js.map +1 -1
  177. package/dist/esm/utils/dynamic-loader.js +2 -1
  178. package/dist/esm/utils/dynamic-loader.js.map +1 -1
  179. package/dist/esm/utils/features/api.features.js +46 -27
  180. package/dist/esm/utils/features/api.features.js.map +1 -1
  181. package/dist/esm/utils/features/port-and-host-allocator.js +4 -3
  182. package/dist/esm/utils/features/port-and-host-allocator.js.map +1 -1
  183. package/dist/esm/utils/helpers/api.features.helpers.js +20 -0
  184. package/dist/esm/utils/helpers/api.features.helpers.js.map +1 -1
  185. package/dist/esm/utils/helpers/arkos-config.helpers.js +20 -2
  186. package/dist/esm/utils/helpers/arkos-config.helpers.js.map +1 -1
  187. package/dist/esm/utils/helpers/exit-error.js +1 -0
  188. package/dist/esm/utils/helpers/exit-error.js.map +1 -1
  189. package/dist/esm/utils/helpers/fs.helpers.js +26 -33
  190. package/dist/esm/utils/helpers/fs.helpers.js.map +1 -1
  191. package/dist/esm/utils/helpers/global.helpers.js +1 -1
  192. package/dist/esm/utils/helpers/global.helpers.js.map +1 -1
  193. package/dist/esm/utils/helpers/prisma.helpers.js +10 -7
  194. package/dist/esm/utils/helpers/prisma.helpers.js.map +1 -1
  195. package/dist/esm/utils/helpers/query-parser.helpers.js +7 -22
  196. package/dist/esm/utils/helpers/query-parser.helpers.js.map +1 -1
  197. package/dist/esm/utils/helpers/routers.helpers.js +2 -2
  198. package/dist/esm/utils/helpers/routers.helpers.js.map +1 -1
  199. package/dist/esm/utils/helpers/url-helpers.js +11 -0
  200. package/dist/esm/utils/helpers/url-helpers.js.map +1 -0
  201. package/dist/esm/utils/initialize-app.js +41 -17
  202. package/dist/esm/utils/initialize-app.js.map +1 -1
  203. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +154 -226
  204. package/dist/esm/utils/prisma/prisma-json-schema-generator.js.map +1 -1
  205. package/dist/esm/utils/prisma/prisma-schema-parser.js +37 -11
  206. package/dist/esm/utils/prisma/prisma-schema-parser.js.map +1 -1
  207. package/dist/esm/utils/prisma/types.js.map +1 -1
  208. package/dist/esm/utils/remove-dir.js +1 -1
  209. package/dist/esm/utils/remove-dir.js.map +1 -1
  210. package/dist/esm/utils/setup-app.js +59 -42
  211. package/dist/esm/utils/setup-app.js.map +1 -1
  212. package/dist/esm/utils/validate-schema.js +23 -21
  213. package/dist/esm/utils/validate-schema.js.map +1 -1
  214. package/dist/types/app.d.ts +10 -7
  215. package/dist/types/components/arkos-gateway/arkos-gateway.d.ts +121 -0
  216. package/dist/types/components/arkos-gateway/socket-extensions.d.ts +79 -0
  217. package/dist/types/components/arkos-gateway/types.d.ts +364 -0
  218. package/dist/types/components/arkos-gateway/utils/helpers.d.ts +9 -0
  219. package/dist/types/components/arkos-gateway/utils/memory-gateway-store.d.ts +14 -0
  220. package/dist/types/components/arkos-gateway/utils/multi-tier-arkos-gateway-store.d.ts +20 -0
  221. package/dist/types/components/arkos-gateway/utils/rate-limiter.d.ts +11 -0
  222. package/dist/types/components/arkos-route-hook/index.d.ts +11 -5
  223. package/dist/types/components/arkos-route-hook/reader.d.ts +4 -7
  224. package/dist/types/components/arkos-route-hook/types.d.ts +9 -5
  225. package/dist/types/exports/error-handler/index.d.ts +1 -0
  226. package/dist/types/exports/index.d.ts +5 -5
  227. package/dist/types/exports/middlewares/index.d.ts +1 -1
  228. package/dist/types/exports/services/index.d.ts +3 -3
  229. package/dist/types/exports/websockets.d.ts +5 -0
  230. package/dist/types/modules/auth/auth.service.d.ts +80 -51
  231. package/dist/types/modules/auth/utils/auth-hooks-manager.d.ts +63 -0
  232. package/dist/types/modules/auth/utils/auth-openapi-generator.d.ts +9 -0
  233. package/dist/types/modules/auth/utils/auth-prisma-json-schema-generator.d.ts +13 -0
  234. package/dist/types/modules/auth/utils/docs-links.d.ts +3 -0
  235. package/dist/types/modules/auth/utils/services/auth-action.service.d.ts +2 -2
  236. package/dist/types/modules/base/base.controller.d.ts +4 -4
  237. package/dist/types/modules/base/base.middlewares.d.ts +1 -7
  238. package/dist/types/modules/base/base.service.d.ts +8 -17
  239. package/dist/types/modules/base/types/base.service.types.d.ts +11 -0
  240. package/dist/types/modules/base/utils/helpers/base.service.helpers.d.ts +1 -1
  241. package/dist/types/modules/base/utils/model-openapi-generator.d.ts +12 -0
  242. package/dist/types/modules/email/email.service.d.ts +1 -1
  243. package/dist/types/modules/error-handler/utils/app-error.d.ts +0 -2
  244. package/dist/types/modules/error-handler/utils/catch-async.d.ts +2 -2
  245. package/dist/types/modules/error-handler/utils/error-handler.helpers.d.ts +1 -27
  246. package/dist/types/modules/error-handler/utils/errors.d.ts +176 -0
  247. package/dist/types/modules/error-handler/utils/get-handled-error.d.ts +1 -0
  248. package/dist/types/modules/error-handler/utils/multer-error-handler.d.ts +7 -0
  249. package/dist/types/modules/file-upload/file-upload.controller.d.ts +7 -2
  250. package/dist/types/modules/file-upload/utils/file-upload-json-schema-generator.d.ts +12 -0
  251. package/dist/types/modules/swagger/swagger.router.d.ts +1 -2
  252. package/dist/types/modules/swagger/utils/get-open-api-login-html.d.ts +1 -0
  253. package/dist/types/modules/swagger/utils/helpers/get-swagger-default-configs.d.ts +48 -3
  254. package/dist/types/modules/swagger/utils/helpers/openapi-schema-converter.d.ts +6 -1
  255. package/dist/types/types/arkos-config/utils.d.ts +68 -0
  256. package/dist/types/types/arkos-prisma-input.d.ts +4 -3
  257. package/dist/types/types/arkos.d.ts +5 -15
  258. package/dist/types/types/auth.d.ts +4 -4
  259. package/dist/types/types/index.d.ts +10 -58
  260. package/dist/types/types/new-arkos-config.d.ts +326 -36
  261. package/dist/types/types/router-config.d.ts +0 -63
  262. package/dist/types/types/upload.d.ts +10 -0
  263. package/dist/types/types/validation/validation-manager.d.ts +27 -0
  264. package/dist/types/types/validation/validator.d.ts +2 -0
  265. package/dist/types/utils/arkos-router/arkos-router-openapi-manager.d.ts +14 -1
  266. package/dist/types/utils/arkos-router/index.d.ts +83 -8
  267. package/dist/types/utils/arkos-router/types/index.d.ts +74 -23
  268. package/dist/types/utils/arkos-router/types/openapi-config.d.ts +3 -2
  269. package/dist/types/utils/arkos-router/types/upload-config.d.ts +65 -8
  270. package/dist/types/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.d.ts +6 -0
  271. package/dist/types/utils/arkos-router/utils/helpers/index.d.ts +4 -6
  272. package/dist/types/utils/arkos-router/utils/helpers/upload-manager.d.ts +1 -36
  273. package/dist/types/utils/bundler.d.ts +1 -1
  274. package/dist/types/utils/cli/build.d.ts +1 -1
  275. package/dist/types/utils/cli/generate.d.ts +15 -6
  276. package/dist/types/utils/cli/start.d.ts +3 -1
  277. package/dist/types/utils/cli/utils/template-generator/templates/class-validator-dto-generator.d.ts +11 -0
  278. package/dist/types/utils/cli/utils/template-generator/templates/zod-schema-generator.d.ts +4 -0
  279. package/dist/types/utils/define-config.d.ts +1 -1
  280. package/dist/types/utils/docs-links.d.ts +1 -0
  281. package/dist/types/utils/dynamic-loader.d.ts +2 -2
  282. package/dist/types/utils/features/api.features.d.ts +1 -2
  283. package/dist/types/utils/helpers/arkos-config.helpers.d.ts +7 -0
  284. package/dist/types/utils/helpers/fs.helpers.d.ts +1 -16
  285. package/dist/types/utils/helpers/global.helpers.d.ts +1 -0
  286. package/dist/types/utils/helpers/prisma.helpers.d.ts +1 -1
  287. package/dist/types/utils/helpers/query-parser.helpers.d.ts +1 -1
  288. package/dist/types/utils/helpers/url-helpers.d.ts +1 -0
  289. package/dist/types/utils/initialize-app.d.ts +1 -0
  290. package/dist/types/utils/prisma/prisma-json-schema-generator.d.ts +12 -30
  291. package/dist/types/utils/prisma/prisma-schema-parser.d.ts +4 -0
  292. package/dist/types/utils/prisma/types.d.ts +3 -2
  293. package/package.json +117 -84
  294. package/dist/cjs/app.js +0 -79
  295. package/dist/cjs/app.js.map +0 -1
  296. package/dist/cjs/components/arkos-loadable-registry/index.js +0 -28
  297. package/dist/cjs/components/arkos-loadable-registry/index.js.map +0 -1
  298. package/dist/cjs/components/arkos-loadable-translator/index.js +0 -144
  299. package/dist/cjs/components/arkos-loadable-translator/index.js.map +0 -1
  300. package/dist/cjs/components/arkos-policy/index.js +0 -36
  301. package/dist/cjs/components/arkos-policy/index.js.map +0 -1
  302. package/dist/cjs/components/arkos-policy/types.js +0 -3
  303. package/dist/cjs/components/arkos-policy/types.js.map +0 -1
  304. package/dist/cjs/components/arkos-route-hook/index.js +0 -50
  305. package/dist/cjs/components/arkos-route-hook/index.js.map +0 -1
  306. package/dist/cjs/components/arkos-route-hook/reader.js +0 -47
  307. package/dist/cjs/components/arkos-route-hook/reader.js.map +0 -1
  308. package/dist/cjs/components/arkos-route-hook/types.js +0 -3
  309. package/dist/cjs/components/arkos-route-hook/types.js.map +0 -1
  310. package/dist/cjs/components/arkos-service-hook/index.js +0 -35
  311. package/dist/cjs/components/arkos-service-hook/index.js.map +0 -1
  312. package/dist/cjs/components/arkos-service-hook/reader.js +0 -30
  313. package/dist/cjs/components/arkos-service-hook/reader.js.map +0 -1
  314. package/dist/cjs/components/arkos-service-hook/types.js +0 -3
  315. package/dist/cjs/components/arkos-service-hook/types.js.map +0 -1
  316. package/dist/cjs/exports/auth/index.js +0 -6
  317. package/dist/cjs/exports/auth/index.js.map +0 -1
  318. package/dist/cjs/exports/config.js +0 -6
  319. package/dist/cjs/exports/config.js.map +0 -1
  320. package/dist/cjs/exports/controllers/index.js +0 -42
  321. package/dist/cjs/exports/controllers/index.js.map +0 -1
  322. package/dist/cjs/exports/error-handler/index.js +0 -11
  323. package/dist/cjs/exports/error-handler/index.js.map +0 -1
  324. package/dist/cjs/exports/index.js +0 -23
  325. package/dist/cjs/exports/index.js.map +0 -1
  326. package/dist/cjs/exports/middlewares/index.js +0 -7
  327. package/dist/cjs/exports/middlewares/index.js.map +0 -1
  328. package/dist/cjs/exports/prisma/index.js +0 -13
  329. package/dist/cjs/exports/prisma/index.js.map +0 -1
  330. package/dist/cjs/exports/services/index.js +0 -53
  331. package/dist/cjs/exports/services/index.js.map +0 -1
  332. package/dist/cjs/exports/utils/index.js +0 -26
  333. package/dist/cjs/exports/utils/index.js.map +0 -1
  334. package/dist/cjs/exports/validation/index.js +0 -11
  335. package/dist/cjs/exports/validation/index.js.map +0 -1
  336. package/dist/cjs/generated.js +0 -7
  337. package/dist/cjs/generated.js.map +0 -1
  338. package/dist/cjs/modules/auth/auth.controller.js +0 -254
  339. package/dist/cjs/modules/auth/auth.controller.js.map +0 -1
  340. package/dist/cjs/modules/auth/auth.router.js +0 -113
  341. package/dist/cjs/modules/auth/auth.router.js.map +0 -1
  342. package/dist/cjs/modules/auth/auth.service.js +0 -277
  343. package/dist/cjs/modules/auth/auth.service.js.map +0 -1
  344. package/dist/cjs/modules/auth/utils/auth-error-objects.js +0 -10
  345. package/dist/cjs/modules/auth/utils/auth-error-objects.js.map +0 -1
  346. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +0 -83
  347. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js.map +0 -1
  348. package/dist/cjs/modules/auth/utils/services/auth-action.service.js +0 -150
  349. package/dist/cjs/modules/auth/utils/services/auth-action.service.js.map +0 -1
  350. package/dist/cjs/modules/base/base.controller.js +0 -275
  351. package/dist/cjs/modules/base/base.controller.js.map +0 -1
  352. package/dist/cjs/modules/base/base.middlewares.js +0 -231
  353. package/dist/cjs/modules/base/base.middlewares.js.map +0 -1
  354. package/dist/cjs/modules/base/base.router.js +0 -112
  355. package/dist/cjs/modules/base/base.router.js.map +0 -1
  356. package/dist/cjs/modules/base/base.service.js +0 -432
  357. package/dist/cjs/modules/base/base.service.js.map +0 -1
  358. package/dist/cjs/modules/base/types/base.service.types.js +0 -3
  359. package/dist/cjs/modules/base/types/base.service.types.js.map +0 -1
  360. package/dist/cjs/modules/base/utils/error-prettifier.js +0 -188
  361. package/dist/cjs/modules/base/utils/error-prettifier.js.map +0 -1
  362. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +0 -49
  363. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js.map +0 -1
  364. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +0 -13
  365. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +0 -1
  366. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +0 -222
  367. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js.map +0 -1
  368. package/dist/cjs/modules/base/utils/router-validator.js +0 -13
  369. package/dist/cjs/modules/base/utils/router-validator.js.map +0 -1
  370. package/dist/cjs/modules/base/utils/service-hooks-manager.js +0 -19
  371. package/dist/cjs/modules/base/utils/service-hooks-manager.js.map +0 -1
  372. package/dist/cjs/modules/debugger/debugger.service.js +0 -59
  373. package/dist/cjs/modules/debugger/debugger.service.js.map +0 -1
  374. package/dist/cjs/modules/email/email.service.js +0 -106
  375. package/dist/cjs/modules/email/email.service.js.map +0 -1
  376. package/dist/cjs/modules/error-handler/error-handler.controller.js +0 -192
  377. package/dist/cjs/modules/error-handler/error-handler.controller.js.map +0 -1
  378. package/dist/cjs/modules/error-handler/utils/app-error.js +0 -28
  379. package/dist/cjs/modules/error-handler/utils/app-error.js.map +0 -1
  380. package/dist/cjs/modules/error-handler/utils/catch-async.js +0 -21
  381. package/dist/cjs/modules/error-handler/utils/catch-async.js.map +0 -1
  382. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +0 -218
  383. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +0 -1
  384. package/dist/cjs/modules/file-upload/file-upload.controller.js +0 -256
  385. package/dist/cjs/modules/file-upload/file-upload.controller.js.map +0 -1
  386. package/dist/cjs/modules/file-upload/file-upload.router.js +0 -80
  387. package/dist/cjs/modules/file-upload/file-upload.router.js.map +0 -1
  388. package/dist/cjs/modules/file-upload/file-upload.service.js +0 -343
  389. package/dist/cjs/modules/file-upload/file-upload.service.js.map +0 -1
  390. package/dist/cjs/modules/file-upload/utils/helpers/file-extensions.js +0 -134
  391. package/dist/cjs/modules/file-upload/utils/helpers/file-extensions.js.map +0 -1
  392. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +0 -100
  393. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js.map +0 -1
  394. package/dist/cjs/modules/swagger/swagger.router.js +0 -65
  395. package/dist/cjs/modules/swagger/swagger.router.js.map +0 -1
  396. package/dist/cjs/modules/swagger/utils/built-in-route-path-object-manager.js +0 -7
  397. package/dist/cjs/modules/swagger/utils/built-in-route-path-object-manager.js.map +0 -1
  398. package/dist/cjs/modules/swagger/utils/helpers/class-validator-to-json-schema.js +0 -53
  399. package/dist/cjs/modules/swagger/utils/helpers/class-validator-to-json-schema.js.map +0 -1
  400. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +0 -473
  401. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +0 -1
  402. package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +0 -491
  403. package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js.map +0 -1
  404. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +0 -73
  405. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +0 -1
  406. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +0 -37
  407. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +0 -1
  408. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +0 -61
  409. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +0 -1
  410. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +0 -31
  411. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +0 -1
  412. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +0 -49
  413. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js.map +0 -1
  414. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +0 -39
  415. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +0 -1
  416. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +0 -468
  417. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +0 -1
  418. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +0 -260
  419. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +0 -1
  420. package/dist/cjs/modules/swagger/utils/helpers/openapi-schema-converter.js +0 -331
  421. package/dist/cjs/modules/swagger/utils/helpers/openapi-schema-converter.js.map +0 -1
  422. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +0 -109
  423. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +0 -1
  424. package/dist/cjs/package.json +0 -3
  425. package/dist/cjs/server.js +0 -60
  426. package/dist/cjs/server.js.map +0 -1
  427. package/dist/cjs/types/arkos-prisma-input.js +0 -3
  428. package/dist/cjs/types/arkos-prisma-input.js.map +0 -1
  429. package/dist/cjs/types/arkos.js +0 -3
  430. package/dist/cjs/types/arkos.js.map +0 -1
  431. package/dist/cjs/types/auth.js +0 -3
  432. package/dist/cjs/types/auth.js.map +0 -1
  433. package/dist/cjs/types/index.js +0 -3
  434. package/dist/cjs/types/index.js.map +0 -1
  435. package/dist/cjs/types/new-arkos-config.js +0 -3
  436. package/dist/cjs/types/new-arkos-config.js.map +0 -1
  437. package/dist/cjs/types/router-config.js +0 -3
  438. package/dist/cjs/types/router-config.js.map +0 -1
  439. package/dist/cjs/utils/arkos-env.js +0 -9
  440. package/dist/cjs/utils/arkos-env.js.map +0 -1
  441. package/dist/cjs/utils/arkos-router/arkos-router-openapi-manager.js +0 -126
  442. package/dist/cjs/utils/arkos-router/arkos-router-openapi-manager.js.map +0 -1
  443. package/dist/cjs/utils/arkos-router/index.js +0 -253
  444. package/dist/cjs/utils/arkos-router/index.js.map +0 -1
  445. package/dist/cjs/utils/arkos-router/route-config-registry.js +0 -16
  446. package/dist/cjs/utils/arkos-router/route-config-registry.js.map +0 -1
  447. package/dist/cjs/utils/arkos-router/route-config-validator.js +0 -56
  448. package/dist/cjs/utils/arkos-router/route-config-validator.js.map +0 -1
  449. package/dist/cjs/utils/arkos-router/types/body-parser-config.js +0 -3
  450. package/dist/cjs/utils/arkos-router/types/body-parser-config.js.map +0 -1
  451. package/dist/cjs/utils/arkos-router/types/index.js +0 -3
  452. package/dist/cjs/utils/arkos-router/types/index.js.map +0 -1
  453. package/dist/cjs/utils/arkos-router/types/openapi-config.js +0 -3
  454. package/dist/cjs/utils/arkos-router/types/openapi-config.js.map +0 -1
  455. package/dist/cjs/utils/arkos-router/types/upload-config.js +0 -3
  456. package/dist/cjs/utils/arkos-router/types/upload-config.js.map +0 -1
  457. package/dist/cjs/utils/arkos-router/utils/helpers/index.js +0 -163
  458. package/dist/cjs/utils/arkos-router/utils/helpers/index.js.map +0 -1
  459. package/dist/cjs/utils/arkos-router/utils/helpers/upload-manager.js +0 -283
  460. package/dist/cjs/utils/arkos-router/utils/helpers/upload-manager.js.map +0 -1
  461. package/dist/cjs/utils/bundler.js +0 -163
  462. package/dist/cjs/utils/bundler.js.map +0 -1
  463. package/dist/cjs/utils/cli/build.js +0 -199
  464. package/dist/cjs/utils/cli/build.js.map +0 -1
  465. package/dist/cjs/utils/cli/dev.js +0 -128
  466. package/dist/cjs/utils/cli/dev.js.map +0 -1
  467. package/dist/cjs/utils/cli/export-auth-action.js +0 -79
  468. package/dist/cjs/utils/cli/export-auth-action.js.map +0 -1
  469. package/dist/cjs/utils/cli/generate.js +0 -229
  470. package/dist/cjs/utils/cli/generate.js.map +0 -1
  471. package/dist/cjs/utils/cli/index.js +0 -191
  472. package/dist/cjs/utils/cli/index.js.map +0 -1
  473. package/dist/cjs/utils/cli/prisma-generate.js +0 -112
  474. package/dist/cjs/utils/cli/prisma-generate.js.map +0 -1
  475. package/dist/cjs/utils/cli/start.js +0 -72
  476. package/dist/cjs/utils/cli/start.js.map +0 -1
  477. package/dist/cjs/utils/cli/utils/cli.helpers.js +0 -24
  478. package/dist/cjs/utils/cli/utils/cli.helpers.js.map +0 -1
  479. package/dist/cjs/utils/cli/utils/runtime-cli-commander.js +0 -115
  480. package/dist/cjs/utils/cli/utils/runtime-cli-commander.js.map +0 -1
  481. package/dist/cjs/utils/cli/utils/smart-fs-watcher.js +0 -73
  482. package/dist/cjs/utils/cli/utils/smart-fs-watcher.js.map +0 -1
  483. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +0 -550
  484. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +0 -1
  485. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -52
  486. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -1
  487. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-multiple-components.js +0 -139
  488. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-multiple-components.js.map +0 -1
  489. package/dist/cjs/utils/cli/utils/template-generator/templates/policy-template.js +0 -53
  490. package/dist/cjs/utils/cli/utils/template-generator/templates/policy-template.js.map +0 -1
  491. package/dist/cjs/utils/cli/utils/template-generator/templates/route-hook.template.js +0 -39
  492. package/dist/cjs/utils/cli/utils/template-generator/templates/route-hook.template.js.map +0 -1
  493. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js +0 -19
  494. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js.map +0 -1
  495. package/dist/cjs/utils/cli/utils/template-generator/templates/service-hook.template.js +0 -32
  496. package/dist/cjs/utils/cli/utils/template-generator/templates/service-hook.template.js.map +0 -1
  497. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js +0 -50
  498. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js.map +0 -1
  499. package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js +0 -351
  500. package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +0 -1
  501. package/dist/cjs/utils/cli/utils/template-generators.js +0 -52
  502. package/dist/cjs/utils/cli/utils/template-generators.js.map +0 -1
  503. package/dist/cjs/utils/cli/utils/watermark-stamper.js +0 -26
  504. package/dist/cjs/utils/cli/utils/watermark-stamper.js.map +0 -1
  505. package/dist/cjs/utils/define-config.js +0 -46
  506. package/dist/cjs/utils/define-config.js.map +0 -1
  507. package/dist/cjs/utils/dotenv.helpers.js +0 -52
  508. package/dist/cjs/utils/dotenv.helpers.js.map +0 -1
  509. package/dist/cjs/utils/dynamic-loader.js +0 -22
  510. package/dist/cjs/utils/dynamic-loader.js.map +0 -1
  511. package/dist/cjs/utils/expand-env.js +0 -72
  512. package/dist/cjs/utils/expand-env.js.map +0 -1
  513. package/dist/cjs/utils/features/api.features.js +0 -201
  514. package/dist/cjs/utils/features/api.features.js.map +0 -1
  515. package/dist/cjs/utils/features/port-and-host-allocator.js +0 -129
  516. package/dist/cjs/utils/features/port-and-host-allocator.js.map +0 -1
  517. package/dist/cjs/utils/helpers/api.features.helpers.js +0 -327
  518. package/dist/cjs/utils/helpers/api.features.helpers.js.map +0 -1
  519. package/dist/cjs/utils/helpers/arkos-config.helpers.js +0 -86
  520. package/dist/cjs/utils/helpers/arkos-config.helpers.js.map +0 -1
  521. package/dist/cjs/utils/helpers/change-case.helpers.js +0 -177
  522. package/dist/cjs/utils/helpers/change-case.helpers.js.map +0 -1
  523. package/dist/cjs/utils/helpers/deepmerge.helper.js +0 -115
  524. package/dist/cjs/utils/helpers/deepmerge.helper.js.map +0 -1
  525. package/dist/cjs/utils/helpers/exit-error.js +0 -12
  526. package/dist/cjs/utils/helpers/exit-error.js.map +0 -1
  527. package/dist/cjs/utils/helpers/fs.helpers.js +0 -60
  528. package/dist/cjs/utils/helpers/fs.helpers.js.map +0 -1
  529. package/dist/cjs/utils/helpers/global.helpers.js +0 -105
  530. package/dist/cjs/utils/helpers/global.helpers.js.map +0 -1
  531. package/dist/cjs/utils/helpers/prisma.helpers.js +0 -53
  532. package/dist/cjs/utils/helpers/prisma.helpers.js.map +0 -1
  533. package/dist/cjs/utils/helpers/query-parser.helpers.js +0 -69
  534. package/dist/cjs/utils/helpers/query-parser.helpers.js.map +0 -1
  535. package/dist/cjs/utils/helpers/routers.helpers.js +0 -36
  536. package/dist/cjs/utils/helpers/routers.helpers.js.map +0 -1
  537. package/dist/cjs/utils/helpers/text.helpers.js +0 -28
  538. package/dist/cjs/utils/helpers/text.helpers.js.map +0 -1
  539. package/dist/cjs/utils/initialize-app.js +0 -55
  540. package/dist/cjs/utils/initialize-app.js.map +0 -1
  541. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +0 -437
  542. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js.map +0 -1
  543. package/dist/cjs/utils/prisma/prisma-schema-parser.js +0 -360
  544. package/dist/cjs/utils/prisma/prisma-schema-parser.js.map +0 -1
  545. package/dist/cjs/utils/prisma/types.js +0 -3
  546. package/dist/cjs/utils/prisma/types.js.map +0 -1
  547. package/dist/cjs/utils/remove-dir.js +0 -14
  548. package/dist/cjs/utils/remove-dir.js.map +0 -1
  549. package/dist/cjs/utils/setup-app.js +0 -119
  550. package/dist/cjs/utils/setup-app.js.map +0 -1
  551. package/dist/cjs/utils/sheu.js +0 -131
  552. package/dist/cjs/utils/sheu.js.map +0 -1
  553. package/dist/cjs/utils/validate-dto.js +0 -19
  554. package/dist/cjs/utils/validate-dto.js.map +0 -1
  555. package/dist/cjs/utils/validate-schema.js +0 -75
  556. package/dist/cjs/utils/validate-schema.js.map +0 -1
  557. package/dist/esm/components/arkos-loadable-translator/index.js +0 -138
  558. package/dist/esm/components/arkos-loadable-translator/index.js.map +0 -1
  559. package/dist/esm/components/arkos-service-hook/index.js +0 -32
  560. package/dist/esm/components/arkos-service-hook/index.js.map +0 -1
  561. package/dist/esm/components/arkos-service-hook/reader.js +0 -24
  562. package/dist/esm/components/arkos-service-hook/reader.js.map +0 -1
  563. package/dist/esm/components/arkos-service-hook/types.js +0 -2
  564. package/dist/esm/components/arkos-service-hook/types.js.map +0 -1
  565. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +0 -10
  566. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +0 -1
  567. package/dist/esm/modules/base/utils/service-hooks-manager.js +0 -17
  568. package/dist/esm/modules/base/utils/service-hooks-manager.js.map +0 -1
  569. package/dist/esm/modules/swagger/utils/built-in-route-path-object-manager.js +0 -5
  570. package/dist/esm/modules/swagger/utils/built-in-route-path-object-manager.js.map +0 -1
  571. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +0 -469
  572. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +0 -1
  573. package/dist/esm/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +0 -485
  574. package/dist/esm/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js.map +0 -1
  575. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +0 -34
  576. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +0 -1
  577. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +0 -55
  578. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +0 -1
  579. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +0 -25
  580. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +0 -1
  581. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +0 -46
  582. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js.map +0 -1
  583. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +0 -33
  584. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +0 -1
  585. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +0 -462
  586. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +0 -1
  587. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +0 -255
  588. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +0 -1
  589. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +0 -98
  590. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +0 -1
  591. package/dist/esm/utils/cli/utils/template-generator/templates/route-hook.template.js +0 -36
  592. package/dist/esm/utils/cli/utils/template-generator/templates/route-hook.template.js.map +0 -1
  593. package/dist/esm/utils/cli/utils/template-generator/templates/service-hook.template.js +0 -29
  594. package/dist/esm/utils/cli/utils/template-generator/templates/service-hook.template.js.map +0 -1
  595. package/dist/types/components/arkos-loadable-translator/index.d.ts +0 -53
  596. package/dist/types/components/arkos-service-hook/index.d.ts +0 -41
  597. package/dist/types/components/arkos-service-hook/reader.d.ts +0 -35
  598. package/dist/types/components/arkos-service-hook/types.d.ts +0 -240
  599. package/dist/types/modules/base/utils/helpers/base.router.helpers.d.ts +0 -3
  600. package/dist/types/modules/base/utils/service-hooks-manager.d.ts +0 -10
  601. package/dist/types/modules/swagger/utils/built-in-route-path-object-manager.d.ts +0 -4
  602. package/dist/types/modules/swagger/utils/helpers/get-authentication-json-schema-paths.d.ts +0 -5
  603. package/dist/types/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.d.ts +0 -3
  604. package/dist/types/modules/swagger/utils/helpers/get-system-json-schema-paths.d.ts +0 -2
  605. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.d.ts +0 -1
  606. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.d.ts +0 -1
  607. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.d.ts +0 -4
  608. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.d.ts +0 -1
  609. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.d.ts +0 -2
  610. package/dist/types/modules/swagger/utils/helpers/missing-json-schemas-generator.d.ts +0 -76
  611. package/dist/types/modules/swagger/utils/helpers/swagger.router.helpers.d.ts +0 -19
  612. package/dist/types/utils/cli/utils/template-generator/templates/route-hook.template.d.ts +0 -2
  613. package/dist/types/utils/cli/utils/template-generator/templates/service-hook.template.d.ts +0 -2
@@ -1 +0,0 @@
1
- {"version":3,"file":"arkos-router-openapi-manager.js","sourceRoot":"","sources":["../../../../src/utils/arkos-router/arkos-router-openapi-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import { OpenAPIV3 } from \"openapi-types\";\nimport deepmerge from \"../helpers/deepmerge.helper\";\nimport { UploadConfig } from \"./types/upload-config\";\n\nclass ArkosRouterOpenAPIManager {\n /**\n * Generates OpenAPI schema for file upload fields in multipart/form-data requests.\n * Converts upload configuration into OpenAPI-compliant schema and merges with existing body schema.\n *\n * @param {UploadConfig} uploadConfig - The upload configuration from config.experimental.uploads\n * @param {any} existingSchema - Existing JSON schema from config.validation.body (optional)\n * @returns {{ schema: any }} OpenAPI schema object for multipart/form-data content type\n *\n * @example\n * // Single file upload\n * addUploadFields({ type: 'single', field: 'avatar', maxSize: 5242880 })\n * // Returns: { schema: { type: 'object', properties: { avatar: { type: 'string', format: 'binary' } } } }\n *\n * @example\n * // Array file upload\n * addUploadFields({ type: 'array', field: 'gallery', maxCount: 10 })\n *\n * @example\n * // Multiple fields upload\n * addUploadFields({ type: 'fields', fields: [{ name: 'avatar', maxCount: 1 }, { name: 'resume', maxCount: 1 }] })\n */\n addUploadFields(\n uploadConfig: UploadConfig,\n existingSchema: OpenAPIV3.SchemaObject = {}\n ): OpenAPIV3.SchemaObject {\n const uploadSchema: any = {\n type: \"object\",\n properties: {},\n required: [],\n };\n\n if (uploadConfig.type === \"single\") {\n uploadSchema.properties[uploadConfig.field] = {\n type: \"string\",\n format: \"binary\",\n ...(uploadConfig.maxSize && {\n description: `Max size: ${uploadConfig.maxSize} bytes`,\n }),\n };\n if (uploadConfig.required) {\n uploadSchema.required.push(uploadConfig.field);\n }\n } else if (uploadConfig.type === \"array\") {\n uploadSchema.properties[uploadConfig.field] = {\n type: \"array\",\n items: {\n type: \"string\",\n format: \"binary\",\n },\n ...(uploadConfig.maxCount && { maxItems: uploadConfig.maxCount }),\n ...(uploadConfig.maxSize && {\n description: `Max size per file: ${uploadConfig.maxSize} bytes`,\n }),\n };\n if (uploadConfig.required) {\n uploadSchema.required.push(uploadConfig.field);\n }\n } else if (uploadConfig.type === \"fields\") {\n for (const field of uploadConfig.fields) {\n uploadSchema.properties[field.name] = {\n type: \"array\",\n items: {\n type: \"string\",\n format: \"binary\",\n },\n ...(field.maxCount && { maxItems: field.maxCount }),\n ...(uploadConfig.maxSize && {\n description: `Max size per file: ${uploadConfig.maxSize} bytes`,\n }),\n };\n if (uploadConfig.required) {\n uploadSchema.required.push(field.name);\n }\n }\n }\n\n // Clean up empty required array\n if (uploadSchema.required.length === 0) delete uploadSchema.required;\n\n return deepmerge(existingSchema as any, uploadSchema);\n }\n\n /**\n * Validates that a user-defined multipart/form-data schema includes all required upload fields\n * with correct types, formats, and required flags.\n *\n * @param {any} userDefinedMultipartSchema - The schema object from openapi.requestBody.content['multipart/form-data'].schema\n * @param {UploadConfig} uploadConfig - The upload configuration from config.experimental.uploads\n * @param {string} routePath - The route path for error context\n * @throws {Error} If upload fields are missing or incorrectly defined\n *\n * @example\n * validateMultipartFormDocs(\n * { type: 'object', properties: { avatar: { type: 'string', format: 'binary' } } },\n * { type: 'single', field: 'avatar', required: true },\n * '/users/:id/avatar'\n * )\n */\n validateMultipartFormDocs(\n userDefinedMultipartSchema: any,\n routePath: string,\n uploadConfig?: UploadConfig\n ): void {\n const errors: string[] = [];\n const properties = userDefinedMultipartSchema?.properties || {};\n const requiredFields = userDefinedMultipartSchema?.required || [];\n\n const expectedFields: Array<{\n name: string;\n required: boolean;\n expectedType: \"single\" | \"array\";\n }> = [];\n\n if (uploadConfig?.type === \"single\") {\n expectedFields.push({\n name: uploadConfig.field,\n required: uploadConfig.required || false,\n expectedType: \"single\",\n });\n } else if (uploadConfig?.type === \"array\") {\n expectedFields.push({\n name: uploadConfig.field,\n required: uploadConfig.required || false,\n expectedType: \"array\",\n });\n } else if (uploadConfig?.type === \"fields\") {\n for (const field of uploadConfig.fields) {\n expectedFields.push({\n name: field.name,\n required: uploadConfig.required || false,\n expectedType: \"array\",\n });\n }\n }\n\n for (const { name, required, expectedType } of expectedFields) {\n const fieldSchema = properties[name];\n\n if (!fieldSchema) {\n errors.push(\n `Missing upload field '${name}' in multipart/form-data schema`\n );\n continue;\n }\n\n if (expectedType === \"single\") {\n if (fieldSchema.type !== \"string\")\n errors.push(\n `Upload field '${name}' must have type 'string', got '${fieldSchema.type}'`\n );\n\n if (fieldSchema.format !== \"binary\")\n errors.push(\n `Upload field '${name}' must have format 'binary', got '${fieldSchema.format || \"undefined\"}'`\n );\n } else if (expectedType === \"array\") {\n if (fieldSchema.type !== \"array\") {\n errors.push(\n `Upload field '${name}' must have type 'array', got '${fieldSchema.type}'`\n );\n } else if (\n !fieldSchema.items ||\n fieldSchema.items.type !== \"string\" ||\n fieldSchema.items.format !== \"binary\"\n )\n errors.push(\n `Upload field '${name}' must have items with type 'string' and format 'binary'`\n );\n }\n\n const isMarkedRequired = requiredFields.includes(name);\n if (required && !isMarkedRequired)\n errors.push(\n `Upload field '${name}' is required in config but not marked as required in schema`\n );\n\n if (!required && isMarkedRequired)\n errors.push(\n `Upload field '${name}' is not required in config but marked as required in schema`\n );\n }\n\n if (errors.length > 0) {\n throw new Error(\n `ValidationError: Invalid multipart/form-data schema for route '${routePath}':\\n${errors.map((e) => ` - ${e}`).join(\"\\n\")}`\n );\n }\n }\n}\n\nconst arkosRouterOpenApiManager = new ArkosRouterOpenAPIManager();\n\nexport default arkosRouterOpenApiManager;\n"]}
@@ -1,253 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.default = ArkosRouter;
7
- exports.generateOpenAPIFromApp = generateOpenAPIFromApp;
8
- const express_1 = require("express");
9
- const route_config_validator_1 = __importDefault(require("./route-config-validator.js"));
10
- const route_config_registry_1 = __importDefault(require("./route-config-registry.js"));
11
- const helpers_1 = require("./utils/helpers/index.js");
12
- const exports_1 = require("../../exports/index.js");
13
- const error_handler_1 = require("../../exports/error-handler/index.js");
14
- const zod_to_json_schema_1 = __importDefault(require("zod-to-json-schema"));
15
- const class_validator_to_json_schema_1 = __importDefault(require("../../modules/swagger/utils/helpers/class-validator-to-json-schema.js"));
16
- const openapi_schema_converter_1 = __importDefault(require("../../modules/swagger/utils/helpers/openapi-schema-converter.js"));
17
- const upload_manager_1 = __importDefault(require("./utils/helpers/upload-manager.js"));
18
- const fs_helpers_1 = require("../helpers/fs.helpers.js");
19
- const arkos_router_openapi_manager_1 = __importDefault(require("./arkos-router-openapi-manager.js"));
20
- const deepmerge_helper_1 = __importDefault(require("../helpers/deepmerge.helper.js"));
21
- function ArkosRouter(options) {
22
- const router = (0, express_1.Router)(options);
23
- return new Proxy(router, {
24
- get(target, prop, receiver) {
25
- const originalMethod = Reflect.get(target, prop, receiver);
26
- const httpMethods = [
27
- "get",
28
- "post",
29
- "put",
30
- "patch",
31
- "delete",
32
- "all",
33
- "head",
34
- "trace",
35
- "options",
36
- ];
37
- if (prop === "route") {
38
- return function (path) {
39
- const routeChain = {};
40
- httpMethods.forEach((method) => {
41
- routeChain[method] = function (config, ...handlers) {
42
- const fullConfig = {
43
- authentication: true,
44
- ...config,
45
- ...(options?.openapi
46
- ? {
47
- experimental: {
48
- openapi: options.openapi,
49
- },
50
- }
51
- : {}),
52
- path,
53
- };
54
- receiver[method](fullConfig, ...handlers);
55
- return routeChain;
56
- };
57
- });
58
- return routeChain;
59
- };
60
- }
61
- if (httpMethods.includes(prop)) {
62
- return function (config, ...handlers) {
63
- if (config.disabled)
64
- return;
65
- if (!route_config_validator_1.default.isArkosRouteConfig(config))
66
- throw Error(`First argument of ArkosRouter().${prop}() must be a valid ArkosRouteConfig object with path field, but recevied ${typeof config === "object" ? JSON.stringify(config, null, 2) : config}`);
67
- const path = (0, helpers_1.applyPrefix)(options?.prefix, config.path);
68
- config = {
69
- authentication: true,
70
- ...config,
71
- ...(options?.openapi
72
- ? {
73
- experimental: {
74
- ...config?.experimental,
75
- openapi: (0, deepmerge_helper_1.default)(options.openapi || {}, config?.experimental?.openapi || {}),
76
- },
77
- }
78
- : {}),
79
- path,
80
- };
81
- if ([null, undefined].includes(path))
82
- throw Error("Please pass valid value for path field to use in your route");
83
- const method = prop;
84
- const UndefinedHandlerError = (handler) => Error(`Wrong value for handler in route ${method.toUpperCase()} ${path}, recevied ${handler}.`);
85
- if (handlers.length > 0) {
86
- const flattenHandlers = (arr) => {
87
- return arr.reduce((flat, item) => {
88
- return flat.concat(Array.isArray(item) ? flattenHandlers(item) : item);
89
- }, []);
90
- };
91
- const flatHandlers = flattenHandlers(handlers);
92
- handlers = flatHandlers.map((handler) => {
93
- if (!handler)
94
- throw UndefinedHandlerError(handler);
95
- if (typeof handler !== "function") {
96
- throw UndefinedHandlerError(handler);
97
- }
98
- return (0, error_handler_1.catchAsync)(handler, {
99
- type: handler.length > 3 ? "error" : "normal",
100
- });
101
- });
102
- const finalHandler = handlers[handlers.length - 1];
103
- route_config_registry_1.default.register(finalHandler, config, method);
104
- }
105
- const arkosConfig = (0, exports_1.getArkosConfig)();
106
- const validationConfig = arkosConfig.validation;
107
- const authenticationConfig = arkosConfig.authentication;
108
- const strictValidation = validationConfig?.strict;
109
- const route = `${method.toUpperCase()} ${path}`;
110
- if (strictValidation &&
111
- (!("validation" in config) ||
112
- ("validation" in config &&
113
- !config.validation &&
114
- config.validation !== undefined)))
115
- throw Error("When using strict validation you must either pass { validation: false } in order to explicitly tell that no input will be received, or pass `undefined` for each input type e.g { validation: { query: undefined } } in order to deny the input of given request input.");
116
- if (!validationConfig?.resolver &&
117
- Object.keys(config.validation || {}).length > 0)
118
- throw Error(`Trying to pass validators into route ${route} config validation option without choosing a validation resolver under arkos.init({ validation: { resolver: '' } })`);
119
- if (config.authentication && !authenticationConfig?.mode)
120
- throw Error(`Trying to authenticate route ${route} without choosing an authentication mode under arkos.config.${(0, fs_helpers_1.getUserFileExtension)()}
121
-
122
- For further help see https://www.arkosjs.com/docs/core-concepts/authentication-system.`);
123
- handlers = [...(0, helpers_1.getMiddlewareStack)(config), ...handlers];
124
- if (config.experimental?.uploads &&
125
- config.experimental.uploads.deleteOnError !== false)
126
- handlers.push((0, error_handler_1.catchAsync)(upload_manager_1.default.handleFileCleanup(config.experimental.uploads), { type: "error" }));
127
- return originalMethod.call(target, path, ...handlers);
128
- };
129
- }
130
- return originalMethod;
131
- },
132
- });
133
- }
134
- function generateOpenAPIFromApp(app) {
135
- const routes = (0, helpers_1.extractArkosRoutes)(app);
136
- const arkosConfig = (0, exports_1.getArkosConfig)();
137
- let paths = {};
138
- routes.forEach(({ path, method, config }) => {
139
- if (config?.experimental?.openapi === false)
140
- return;
141
- const originalPath = path;
142
- const pathParatemersFromRoutePath = (0, helpers_1.extractPathParams)(path);
143
- for (const parameter of pathParatemersFromRoutePath) {
144
- path = path.replaceAll(`:${parameter}`, parameter.endsWith("?") ? `{${parameter}}?` : `{${parameter}}`);
145
- }
146
- if (!paths[path])
147
- paths[path] = {};
148
- if (typeof config?.experimental?.openapi === "boolean") {
149
- config = {
150
- ...config,
151
- experimental: {
152
- ...config.experimental,
153
- openapi: {},
154
- },
155
- };
156
- }
157
- const openapi = typeof config?.experimental?.openapi === "object" &&
158
- config.experimental.openapi !== null
159
- ? config.experimental.openapi
160
- : {};
161
- const validatorToJsonSchema = arkosConfig?.validation?.resolver === "zod"
162
- ? zod_to_json_schema_1.default
163
- : class_validator_to_json_schema_1.default;
164
- let parameters = [];
165
- const validationToParameterMapping = {
166
- query: "query",
167
- params: "path",
168
- headers: "header",
169
- cookies: "cookie",
170
- };
171
- if (typeof config?.validation !== "boolean" && config?.validation) {
172
- for (const [key, val] of Object.entries(config?.validation)) {
173
- if (["body"].includes(key))
174
- continue;
175
- if ((config?.validation)[key]) {
176
- const jsonSchema = validatorToJsonSchema(val);
177
- const params = openapi_schema_converter_1.default.jsonSchemaToOpenApiParameters(validationToParameterMapping[key], jsonSchema);
178
- parameters.push(...params);
179
- }
180
- }
181
- }
182
- const convertedOpenAPI = openapi_schema_converter_1.default.convertOpenAPIConfig(openapi);
183
- const allParameters = [
184
- ...(convertedOpenAPI.parameters || []),
185
- ...parameters,
186
- ];
187
- for (const parameter of pathParatemersFromRoutePath) {
188
- if (!allParameters.find(({ name, in: paramIn }) => name === parameter.replace("?", "") && paramIn === "path"))
189
- allParameters.push({
190
- name: parameter,
191
- in: "path",
192
- required: !parameter.includes("?"),
193
- schema: { type: "string" },
194
- });
195
- }
196
- for (const param of allParameters) {
197
- if (!pathParatemersFromRoutePath.includes(param.name) &&
198
- !pathParatemersFromRoutePath.includes(`${param.name}?`) &&
199
- param.in === "path")
200
- throw new Error(`ValidationError: Trying to define path parameter '${param.name}' but it is not present in your pathname ${originalPath}`);
201
- }
202
- delete convertedOpenAPI.parameters;
203
- const hasUploadFields = Object.keys(config?.experimental?.uploads || {}).length > 0;
204
- const multipartFormSchema = convertedOpenAPI?.requestBody?.content?.["multipart/form-data"];
205
- if (hasUploadFields && multipartFormSchema)
206
- arkos_router_openapi_manager_1.default.validateMultipartFormDocs(multipartFormSchema, path, config?.experimental?.uploads);
207
- paths[path][method.toLowerCase()] = {
208
- summary: openapi?.summary || `${path}`,
209
- description: openapi?.description || `${method} ${path}`,
210
- tags: openapi?.tags || ["Defaults"],
211
- operationId: `${method.toLowerCase()}:${path}`,
212
- parameters: allParameters,
213
- ...(!convertedOpenAPI.requestBody &&
214
- config?.validation &&
215
- config?.validation?.body && {
216
- requestBody: {
217
- content: (() => {
218
- const schema = validatorToJsonSchema(config?.validation?.body);
219
- return {
220
- ...(hasUploadFields && {
221
- "multipart/form-data": {
222
- schema: openapi_schema_converter_1.default.flattenSchema(arkos_router_openapi_manager_1.default.addUploadFields(config.experimental?.uploads, schema)),
223
- },
224
- }),
225
- "application/json": {
226
- schema,
227
- },
228
- };
229
- })(),
230
- },
231
- }),
232
- ...(convertedOpenAPI?.requestBody?.content?.["application/json"] &&
233
- !multipartFormSchema &&
234
- !config?.validation?.body &&
235
- hasUploadFields && {
236
- requestBody: {
237
- content: (() => {
238
- const schema = convertedOpenAPI?.requestBody?.content?.["application/json"];
239
- return {
240
- "multipart/form-data": {
241
- schema: openapi_schema_converter_1.default.flattenSchema(arkos_router_openapi_manager_1.default.addUploadFields(config?.experimental?.uploads || {}, schema)),
242
- },
243
- ...convertedOpenAPI?.requestBody,
244
- };
245
- })(),
246
- },
247
- }),
248
- ...convertedOpenAPI,
249
- };
250
- });
251
- return paths;
252
- }
253
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/arkos-router/index.ts"],"names":[],"mappings":";;;;;AAmDA,8BAiLC;AAED,wDA8KC;AApZD,qCAAgD;AAShD,sFAA4D;AAC5D,oFAA0D;AAC1D,6CAKyB;AACzB,2CAA+C;AAC/C,+DAAyD;AACzD,4EAAiD;AACjD,wIAA4G;AAC5G,4HAAkG;AAClG,oFAA2D;AAC3D,sDAA6D;AAC7D,kGAAuE;AACvE,mFAAoD;AA0BpD,SAAwB,WAAW,CACjC,OAGC;IAED,MAAM,MAAM,GAAG,IAAA,gBAAM,EAAC,OAAO,CAAC,CAAC;IAE/B,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;QACvB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAE3D,MAAM,WAAW,GAAG;gBAClB,KAAK;gBACL,MAAM;gBACN,KAAK;gBACL,OAAO;gBACP,QAAQ;gBACR,KAAK;gBACL,MAAM;gBACN,OAAO;gBACP,SAAS;aACD,CAAC;YAEX,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACrB,OAAO,UAAU,IAAgB;oBAC/B,MAAM,UAAU,GAAQ,EAAE,CAAC;oBAE3B,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;wBAC7B,UAAU,CAAC,MAAM,CAAC,GAAG,UACnB,MAA+D,EAC/D,GAAG,QAAkC;4BAErC,MAAM,UAAU,GAAqB;gCACnC,cAAc,EAAE,IAAI;gCACpB,GAAG,MAAM;gCACT,GAAG,CAAC,OAAO,EAAE,OAAO;oCAClB,CAAC,CAAC;wCACE,YAAY,EAAE;4CACZ,OAAO,EAAE,OAAO,CAAC,OAAO;yCACzB;qCACF;oCACH,CAAC,CAAC,EAAE,CAAC;gCACP,IAAI;6BACL,CAAC;4BAEF,QAAQ,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,GAAG,QAAQ,CAAC,CAAC;4BAE1C,OAAO,UAAyB,CAAC;wBACnC,CAAC,CAAC;oBACJ,CAAC,CAAC,CAAC;oBAEH,OAAO,UAAU,CAAC;gBACpB,CAAC,CAAC;YACJ,CAAC;YAED,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAW,CAAC,EAAE,CAAC;gBACtC,OAAO,UACL,MAAwB,EACxB,GAAG,QAAkC;oBAErC,IAAI,MAAM,CAAC,QAAQ;wBAAE,OAAO;oBAE5B,IAAI,CAAC,gCAAoB,CAAC,kBAAkB,CAAC,MAAM,CAAC;wBAClD,MAAM,KAAK,CACT,mCAAmC,IAAc,4EAA4E,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CACrM,CAAC;oBAEJ,MAAM,IAAI,GAAG,IAAA,qBAAW,EAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;oBAEvD,MAAM,GAAG;wBACP,cAAc,EAAE,IAAI;wBACpB,GAAG,MAAM;wBACT,GAAG,CAAC,OAAO,EAAE,OAAO;4BAClB,CAAC,CAAC;gCACE,YAAY,EAAE;oCACZ,GAAG,MAAM,EAAE,YAAY;oCACvB,OAAO,EAAE,IAAA,0BAAS,EAChB,OAAO,CAAC,OAAO,IAAI,EAAE,EACrB,MAAM,EAAE,YAAY,EAAE,OAAO,IAAI,EAAE,CACpC;iCACF;6BACF;4BACH,CAAC,CAAC,EAAE,CAAC;wBACP,IAAI;qBACL,CAAC;oBAEF,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAW,CAAC;wBACzC,MAAM,KAAK,CACT,6DAA6D,CAC9D,CAAC;oBAEJ,MAAM,MAAM,GAAG,IAAc,CAAC;oBAC9B,MAAM,qBAAqB,GAAG,CAAC,OAAY,EAAE,EAAE,CAC7C,KAAK,CACH,oCAAoC,MAAM,CAAC,WAAW,EAAE,IAAI,IAAI,cAAc,OAAO,GAAG,CACzF,CAAC;oBAEJ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACxB,MAAM,eAAe,GAAG,CAAC,GAAU,EAA4B,EAAE;4BAC/D,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;gCAC/B,OAAO,IAAI,CAAC,MAAM,CAChB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CACnD,CAAC;4BACJ,CAAC,EAAE,EAAE,CAAC,CAAC;wBACT,CAAC,CAAC;wBAEF,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;wBAE/C,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,OAA+B,EAAE,EAAE;4BAC9D,IAAI,CAAC,OAAO;gCAAE,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;4BAEnD,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;gCAClC,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;4BACvC,CAAC;4BAED,OAAO,IAAA,0BAAU,EAAC,OAAO,EAAE;gCACzB,IAAI,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;6BAC9C,CAAC,CAAC;wBACL,CAAC,CAAC,CAAC;wBAEH,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBACnD,+BAAmB,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC;oBAED,MAAM,WAAW,GAAG,IAAA,wBAAc,GAAE,CAAC;oBACrC,MAAM,gBAAgB,GAAG,WAAW,CAAC,UAAU,CAAC;oBAChD,MAAM,oBAAoB,GAAG,WAAW,CAAC,cAAc,CAAC;oBACxD,MAAM,gBAAgB,GAAG,gBAAgB,EAAE,MAAM,CAAC;oBAClD,MAAM,KAAK,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC;oBAEhD,IACE,gBAAgB;wBAChB,CAAC,CAAC,CAAC,YAAY,IAAI,MAAM,CAAC;4BACxB,CAAC,YAAY,IAAI,MAAM;gCACrB,CAAC,MAAM,CAAC,UAAU;gCAClB,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC;wBAErC,MAAM,KAAK,CACT,yQAAyQ,CAC1Q,CAAC;oBAEJ,IACE,CAAC,gBAAgB,EAAE,QAAQ;wBAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;wBAE/C,MAAM,KAAK,CACT,wCAAwC,KAAK,qHAAqH,CACnK,CAAC;oBAEJ,IAAI,MAAM,CAAC,cAAc,IAAI,CAAC,oBAAoB,EAAE,IAAI;wBACtD,MAAM,KAAK,CACT,gCAAgC,KAAK,+DAA+D,IAAA,iCAAoB,GAAE;;uFAEjD,CAC1E,CAAC;oBAEJ,QAAQ,GAAG,CAAC,GAAG,IAAA,4BAAkB,EAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC;oBAExD,IACE,MAAM,CAAC,YAAY,EAAE,OAAO;wBAC5B,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,KAAK,KAAK;wBAEnD,QAAQ,CAAC,IAAI,CACX,IAAA,0BAAU,EACR,wBAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAC5D,EAAE,IAAI,EAAE,OAAO,EAAE,CAClB,CACF,CAAC;oBAEJ,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC;gBACxD,CAAC,CAAC;YACJ,CAAC;YAED,OAAO,cAAc,CAAC;QACxB,CAAC;KACF,CAAiB,CAAC;AACrB,CAAC;AAED,SAAgB,sBAAsB,CAAC,GAAQ;IAC7C,MAAM,MAAM,GAAG,IAAA,4BAAkB,EAAC,GAAG,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,IAAA,wBAAc,GAAE,CAAC;IAErC,IAAI,KAAK,GAGL,EAAE,CAAC;IAEP,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1C,IAAI,MAAM,EAAE,YAAY,EAAE,OAAO,KAAK,KAAK;YAAE,OAAO;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC;QAE1B,MAAM,2BAA2B,GAAG,IAAA,2BAAiB,EAAC,IAAI,CAAC,CAAC;QAC5D,KAAK,MAAM,SAAS,IAAI,2BAA2B,EAAE,CAAC;YACpD,IAAI,GAAG,IAAI,CAAC,UAAU,CACpB,IAAI,SAAS,EAAE,EACf,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,GAAG,CAC/D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAEnC,IAAI,OAAO,MAAM,EAAE,YAAY,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;YACvD,MAAM,GAAG;gBACP,GAAG,MAAM;gBACT,YAAY,EAAE;oBACZ,GAAG,MAAM,CAAC,YAAY;oBACtB,OAAO,EAAE,EAAE;iBACZ;aACF,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GACX,OAAO,MAAM,EAAE,YAAY,EAAE,OAAO,KAAK,QAAQ;YACjD,MAAM,CAAC,YAAY,CAAC,OAAO,KAAK,IAAI;YAClC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO;YAC7B,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,qBAAqB,GACzB,WAAW,EAAE,UAAU,EAAE,QAAQ,KAAK,KAAK;YACzC,CAAC,CAAC,4BAAe;YACjB,CAAC,CAAC,wCAA0B,CAAC;QAEjC,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,MAAM,4BAA4B,GAAG;YACnC,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,QAAQ;SAClB,CAAC;QAEF,IAAI,OAAO,MAAM,EAAE,UAAU,KAAK,SAAS,IAAI,MAAM,EAAE,UAAU,EAAE,CAAC;YAClE,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;gBAC5D,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAAE,SAAS;gBACrC,IAAI,CAAC,MAAM,EAAE,UAAkB,CAAA,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrC,MAAM,UAAU,GAAG,qBAAqB,CAAC,GAAU,CAAC,CAAC;oBACrD,MAAM,MAAM,GAAG,kCAAsB,CAAC,6BAA6B,CAChE,4BAAoC,CAAC,GAAG,CAAC,EAC1C,UAAU,CACX,CAAC;oBACF,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,gBAAgB,GACpB,kCAAsB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAEvD,MAAM,aAAa,GAAgC;YACjD,GAAG,CAAC,gBAAgB,CAAC,UAAU,IAAI,EAAE,CAAC;YACtC,GAAG,UAAU;SACd,CAAC;QAEF,KAAK,MAAM,SAAS,IAAI,2BAA2B,EAAE,CAAC;YACpD,IACE,CAAC,aAAa,CAAC,IAAI,CACjB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CACxB,IAAI,KAAK,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,OAAO,KAAK,MAAM,CAC5D;gBAED,aAAa,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,SAAS;oBACf,EAAE,EAAE,MAAM;oBACV,QAAQ,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAClC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC3B,CAAC,CAAC;QACP,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,IACE,CAAC,2BAA2B,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;gBACjD,CAAC,2BAA2B,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC;gBACvD,KAAK,CAAC,EAAE,KAAK,MAAM;gBAEnB,MAAM,IAAI,KAAK,CACb,qDAAqD,KAAK,CAAC,IAAI,4CAA4C,YAAY,EAAE,CAC1H,CAAC;QACN,CAAC;QAED,OAAO,gBAAgB,CAAC,UAAU,CAAC;QACnC,MAAM,eAAe,GACnB,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9D,MAAM,mBAAmB,GACvB,gBAAgB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,qBAAqB,CAAC,CAAC;QAElE,IAAI,eAAe,IAAI,mBAAmB;YACxC,sCAAyB,CAAC,yBAAyB,CACjD,mBAAmB,EACnB,IAAI,EACJ,MAAM,EAAE,YAAY,EAAE,OAAO,CAC9B,CAAC;QAEH,KAAa,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG;YAC3C,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,GAAG,IAAI,EAAE;YACtC,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,GAAG,MAAM,IAAI,IAAI,EAAE;YACxD,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC;YACnC,WAAW,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE;YAC9C,UAAU,EAAE,aAAa;YACzB,GAAG,CAAC,CAAC,gBAAgB,CAAC,WAAW;gBAC/B,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,UAAU,EAAE,IAAI,IAAI;gBAC1B,WAAW,EAAE;oBACX,OAAO,EAAE,CAAC,GAAG,EAAE;wBACb,MAAM,MAAM,GAAG,qBAAqB,CAClC,MAAM,EAAE,UAAU,EAAE,IAAW,CAChC,CAAC;wBAEF,OAAO;4BACL,GAAG,CAAC,eAAe,IAAI;gCACrB,qBAAqB,EAAE;oCACrB,MAAM,EAAE,kCAAsB,CAAC,aAAa,CAC1C,sCAAyB,CAAC,eAAe,CACvC,MAAM,CAAC,YAAY,EAAE,OAAQ,EAC7B,MAAM,CACP,CACF;iCACF;6BACF,CAAC;4BACF,kBAAkB,EAAE;gCAClB,MAAM;6BACP;yBACF,CAAC;oBACJ,CAAC,CAAC,EAAE;iBACL;aACF,CAAC;YACJ,GAAG,CAAC,gBAAgB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,kBAAkB,CAAC;gBAC9D,CAAC,mBAAmB;gBACpB,CAAE,MAAc,EAAE,UAAU,EAAE,IAAI;gBAClC,eAAe,IAAI;gBACjB,WAAW,EAAE;oBACX,OAAO,EAAE,CAAC,GAAG,EAAE;wBACb,MAAM,MAAM,GACV,gBAAgB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,kBAAkB,CAAC,CAAC;wBAE/D,OAAO;4BACL,qBAAqB,EAAE;gCACrB,MAAM,EAAE,kCAAsB,CAAC,aAAa,CAC1C,sCAAyB,CAAC,eAAe,CACvC,MAAM,EAAE,YAAY,EAAE,OAAQ,IAAI,EAAE,EACpC,MAAM,CACP,CACF;6BACF;4BACD,GAAG,gBAAgB,EAAE,WAAW;yBACjC,CAAC;oBACJ,CAAC,CAAC,EAAE;iBACL;aACF,CAAC;YACJ,GAAG,gBAAgB;SACpB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import { Router, RouterOptions } from \"express\";\nimport {\n IArkosRouter,\n ArkosRouteConfig,\n ArkosAnyRequestHandler,\n PathParams,\n ArkosIRoute,\n} from \"./types\";\nimport { OpenAPIV3 } from \"openapi-types\";\nimport RouteConfigValidator from \"./route-config-validator\";\nimport RouteConfigRegistry from \"./route-config-registry\";\nimport {\n applyPrefix,\n extractArkosRoutes,\n extractPathParams,\n getMiddlewareStack,\n} from \"./utils/helpers\";\nimport { getArkosConfig } from \"../../exports\";\nimport { catchAsync } from \"../../exports/error-handler\";\nimport zodToJsonSchema from \"zod-to-json-schema\";\nimport classValidatorToJsonSchema from \"../../modules/swagger/utils/helpers/class-validator-to-json-schema\";\nimport openApiSchemaConverter from \"../../modules/swagger/utils/helpers/openapi-schema-converter\";\nimport uploadManager from \"./utils/helpers/upload-manager\";\nimport { getUserFileExtension } from \"../helpers/fs.helpers\";\nimport arkosRouterOpenApiManager from \"./arkos-router-openapi-manager\";\nimport deepmerge from \"../helpers/deepmerge.helper\";\n\n/**\n * Creates an enhanced Express Router with features like OpenAPI documentation capabilities and smart data validation.\n *\n * The ArkosRouter extends the standard Express Router with the ability to\n * automatically capture OpenAPI metadata from route configurations.\n *\n * @example\n * const router = ArkosRouter();\n *\n * router.get(\n * {\n * path: \"/users/:id\",\n * openapi: {\n * summary: \"Get user by ID\",\n * tags: [\"Users\"]\n * }\n * },\n * (req, res) => { ... }\n * );\n *\n * @returns {IArkosRouter} A proxied Express Router instance with enhanced OpenAPI capabilities\n *\n * @see {@link ArkosRouteConfig} for configuration options\n */\nexport default function ArkosRouter(\n options?: RouterOptions & {\n prefix?: string | RegExp | Array<string | RegExp>;\n openapi?: { tags?: string[] };\n }\n): IArkosRouter {\n const router = Router(options);\n\n return new Proxy(router, {\n get(target, prop, receiver) {\n const originalMethod = Reflect.get(target, prop, receiver);\n\n const httpMethods = [\n \"get\",\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n \"all\",\n \"head\",\n \"trace\",\n \"options\",\n ] as const;\n\n if (prop === \"route\") {\n return function (path: PathParams) {\n const routeChain: any = {};\n\n httpMethods.forEach((method) => {\n routeChain[method] = function (\n config: ArkosAnyRequestHandler | Omit<ArkosRouteConfig, \"path\">,\n ...handlers: ArkosAnyRequestHandler[]\n ) {\n const fullConfig: ArkosRouteConfig = {\n authentication: true,\n ...config,\n ...(options?.openapi\n ? {\n experimental: {\n openapi: options.openapi,\n },\n }\n : {}),\n path,\n };\n\n receiver[method](fullConfig, ...handlers);\n\n return routeChain as ArkosIRoute;\n };\n });\n\n return routeChain;\n };\n }\n\n if (httpMethods.includes(prop as any)) {\n return function (\n config: ArkosRouteConfig,\n ...handlers: ArkosAnyRequestHandler[]\n ) {\n if (config.disabled) return;\n\n if (!RouteConfigValidator.isArkosRouteConfig(config))\n throw Error(\n `First argument of ArkosRouter().${prop as string}() must be a valid ArkosRouteConfig object with path field, but recevied ${typeof config === \"object\" ? JSON.stringify(config, null, 2) : config}`\n );\n\n const path = applyPrefix(options?.prefix, config.path);\n\n config = {\n authentication: true,\n ...config,\n ...(options?.openapi\n ? {\n experimental: {\n ...config?.experimental,\n openapi: deepmerge(\n options.openapi || {},\n config?.experimental?.openapi || {}\n ),\n },\n }\n : {}),\n path,\n };\n\n if ([null, undefined].includes(path as any))\n throw Error(\n \"Please pass valid value for path field to use in your route\"\n );\n\n const method = prop as string;\n const UndefinedHandlerError = (handler: any) =>\n Error(\n `Wrong value for handler in route ${method.toUpperCase()} ${path}, recevied ${handler}.`\n );\n\n if (handlers.length > 0) {\n const flattenHandlers = (arr: any[]): ArkosAnyRequestHandler[] => {\n return arr.reduce((flat, item) => {\n return flat.concat(\n Array.isArray(item) ? flattenHandlers(item) : item\n );\n }, []);\n };\n\n const flatHandlers = flattenHandlers(handlers);\n\n handlers = flatHandlers.map((handler: ArkosAnyRequestHandler) => {\n if (!handler) throw UndefinedHandlerError(handler);\n\n if (typeof handler !== \"function\") {\n throw UndefinedHandlerError(handler);\n }\n\n return catchAsync(handler, {\n type: handler.length > 3 ? \"error\" : \"normal\",\n });\n });\n\n const finalHandler = handlers[handlers.length - 1];\n RouteConfigRegistry.register(finalHandler, config, method);\n }\n\n const arkosConfig = getArkosConfig();\n const validationConfig = arkosConfig.validation;\n const authenticationConfig = arkosConfig.authentication;\n const strictValidation = validationConfig?.strict;\n const route = `${method.toUpperCase()} ${path}`;\n\n if (\n strictValidation &&\n (!(\"validation\" in config) ||\n (\"validation\" in config &&\n !config.validation &&\n config.validation !== undefined))\n )\n throw Error(\n \"When using strict validation you must either pass { validation: false } in order to explicitly tell that no input will be received, or pass `undefined` for each input type e.g { validation: { query: undefined } } in order to deny the input of given request input.\"\n );\n\n if (\n !validationConfig?.resolver &&\n Object.keys(config.validation || {}).length > 0\n )\n throw Error(\n `Trying to pass validators into route ${route} config validation option without choosing a validation resolver under arkos.init({ validation: { resolver: '' } })`\n );\n\n if (config.authentication && !authenticationConfig?.mode)\n throw Error(\n `Trying to authenticate route ${route} without choosing an authentication mode under arkos.config.${getUserFileExtension()}\n\nFor further help see https://www.arkosjs.com/docs/core-concepts/authentication-system.`\n );\n\n handlers = [...getMiddlewareStack(config), ...handlers];\n\n if (\n config.experimental?.uploads &&\n config.experimental.uploads.deleteOnError !== false\n )\n handlers.push(\n catchAsync(\n uploadManager.handleFileCleanup(config.experimental.uploads),\n { type: \"error\" }\n )\n );\n\n return originalMethod.call(target, path, ...handlers);\n };\n }\n // }\n return originalMethod;\n },\n }) as IArkosRouter;\n}\n\nexport function generateOpenAPIFromApp(app: any) {\n const routes = extractArkosRoutes(app);\n const arkosConfig = getArkosConfig();\n\n let paths: Record<\n string,\n Record<string, Partial<OpenAPIV3.OperationObject>>\n > = {};\n\n routes.forEach(({ path, method, config }) => {\n if (config?.experimental?.openapi === false) return;\n const originalPath = path;\n\n const pathParatemersFromRoutePath = extractPathParams(path);\n for (const parameter of pathParatemersFromRoutePath) {\n path = path.replaceAll(\n `:${parameter}`,\n parameter.endsWith(\"?\") ? `{${parameter}}?` : `{${parameter}}`\n );\n }\n\n if (!paths[path]) paths[path] = {};\n\n if (typeof config?.experimental?.openapi === \"boolean\") {\n config = {\n ...config,\n experimental: {\n ...config.experimental,\n openapi: {},\n },\n };\n }\n\n const openapi =\n typeof config?.experimental?.openapi === \"object\" &&\n config.experimental.openapi !== null\n ? config.experimental.openapi\n : {};\n\n const validatorToJsonSchema =\n arkosConfig?.validation?.resolver === \"zod\"\n ? zodToJsonSchema\n : classValidatorToJsonSchema;\n\n let parameters = [];\n const validationToParameterMapping = {\n query: \"query\",\n params: \"path\",\n headers: \"header\",\n cookies: \"cookie\",\n };\n\n if (typeof config?.validation !== \"boolean\" && config?.validation) {\n for (const [key, val] of Object.entries(config?.validation)) {\n if ([\"body\"].includes(key)) continue;\n if ((config?.validation as any)[key]) {\n const jsonSchema = validatorToJsonSchema(val as any);\n const params = openApiSchemaConverter.jsonSchemaToOpenApiParameters(\n (validationToParameterMapping as any)[key],\n jsonSchema\n );\n parameters.push(...params);\n }\n }\n }\n\n const convertedOpenAPI =\n openApiSchemaConverter.convertOpenAPIConfig(openapi);\n\n const allParameters: OpenAPIV3.ParameterObject[] = [\n ...(convertedOpenAPI.parameters || []),\n ...parameters,\n ];\n\n for (const parameter of pathParatemersFromRoutePath) {\n if (\n !allParameters.find(\n ({ name, in: paramIn }) =>\n name === parameter.replace(\"?\", \"\") && paramIn === \"path\"\n )\n )\n allParameters.push({\n name: parameter,\n in: \"path\",\n required: !parameter.includes(\"?\"),\n schema: { type: \"string\" },\n });\n }\n\n for (const param of allParameters) {\n if (\n !pathParatemersFromRoutePath.includes(param.name) &&\n !pathParatemersFromRoutePath.includes(`${param.name}?`) &&\n param.in === \"path\"\n )\n throw new Error(\n `ValidationError: Trying to define path parameter '${param.name}' but it is not present in your pathname ${originalPath}`\n );\n }\n\n delete convertedOpenAPI.parameters;\n const hasUploadFields =\n Object.keys(config?.experimental?.uploads || {}).length > 0;\n const multipartFormSchema =\n convertedOpenAPI?.requestBody?.content?.[\"multipart/form-data\"];\n\n if (hasUploadFields && multipartFormSchema)\n arkosRouterOpenApiManager.validateMultipartFormDocs(\n multipartFormSchema,\n path,\n config?.experimental?.uploads\n );\n\n (paths as any)[path][method.toLowerCase()] = {\n summary: openapi?.summary || `${path}`,\n description: openapi?.description || `${method} ${path}`,\n tags: openapi?.tags || [\"Defaults\"],\n operationId: `${method.toLowerCase()}:${path}`,\n parameters: allParameters,\n ...(!convertedOpenAPI.requestBody &&\n config?.validation &&\n config?.validation?.body && {\n requestBody: {\n content: (() => {\n const schema = validatorToJsonSchema(\n config?.validation?.body as any\n );\n\n return {\n ...(hasUploadFields && {\n \"multipart/form-data\": {\n schema: openApiSchemaConverter.flattenSchema(\n arkosRouterOpenApiManager.addUploadFields(\n config.experimental?.uploads!,\n schema\n )\n ),\n },\n }),\n \"application/json\": {\n schema,\n },\n };\n })(),\n },\n }),\n ...(convertedOpenAPI?.requestBody?.content?.[\"application/json\"] &&\n !multipartFormSchema &&\n !(config as any)?.validation?.body &&\n hasUploadFields && {\n requestBody: {\n content: (() => {\n const schema =\n convertedOpenAPI?.requestBody?.content?.[\"application/json\"];\n\n return {\n \"multipart/form-data\": {\n schema: openApiSchemaConverter.flattenSchema(\n arkosRouterOpenApiManager.addUploadFields(\n config?.experimental?.uploads! || {},\n schema\n )\n ),\n },\n ...convertedOpenAPI?.requestBody,\n };\n })(),\n },\n }),\n ...convertedOpenAPI,\n };\n });\n\n return paths;\n}\n"]}
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class RouteConfigRegistry {
4
- static register(handler, config, method) {
5
- this.configs.set(handler, { ...config, method });
6
- }
7
- static get(handler) {
8
- return this.configs.get(handler);
9
- }
10
- static getAll() {
11
- return this.configs;
12
- }
13
- }
14
- RouteConfigRegistry.configs = new WeakMap();
15
- exports.default = RouteConfigRegistry;
16
- //# sourceMappingURL=route-config-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"route-config-registry.js","sourceRoot":"","sources":["../../../../src/utils/arkos-router/route-config-registry.ts"],"names":[],"mappings":";;AAEA,MAAqB,mBAAmB;IAMtC,MAAM,CAAC,QAAQ,CACb,OAAmC,EACnC,MAAwB,EACxB,MAAc;QAEd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,OAAiB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;;AAnBc,2BAAO,GAAG,IAAI,OAAO,EAGjC,CAAC;kBAJe,mBAAmB","sourcesContent":["import { ArkosRouteConfig } from \"./types\";\n\nexport default class RouteConfigRegistry {\n private static configs = new WeakMap<\n Function | Array<Function>,\n ArkosRouteConfig & { method: string }\n >();\n\n static register(\n handler: Function | Array<Function>,\n config: ArkosRouteConfig,\n method: string\n ) {\n this.configs.set(handler, { ...config, method });\n }\n\n static get(handler: Function) {\n return this.configs.get(handler);\n }\n\n static getAll() {\n return this.configs;\n }\n}\n"]}
@@ -1,56 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const dynamic_loader_1 = require("../dynamic-loader.js");
4
- const exports_1 = require("../../exports/index.js");
5
- class RouteConfigValidator {
6
- static isArkosRouteConfig(arg) {
7
- return typeof arg === "object" && arg !== null && "path" in arg;
8
- }
9
- static validate(config) {
10
- const swaggerMode = (0, exports_1.getArkosConfig)()?.validation?.resolver;
11
- if (config.validation) {
12
- const validators = [
13
- { key: "query", schema: config.validation?.query },
14
- { key: "body", schema: config.validation?.body },
15
- { key: "params", schema: config.validation?.params },
16
- ];
17
- for (const { key, schema } of validators) {
18
- if (!schema)
19
- continue;
20
- const isZod = (0, dynamic_loader_1.isZodSchema)(schema);
21
- const isClassValidator = (0, dynamic_loader_1.isClass)(schema);
22
- if (isZod && swaggerMode !== "zod") {
23
- throw new Error(`Zod schema used in validation.${key} but Swagger mode is '${swaggerMode}'. ` +
24
- `Zod schemas are only supported when swagger.mode is 'zod'.`);
25
- }
26
- if (isClassValidator && swaggerMode !== "class-validator") {
27
- throw new Error(`Class validator used in validation.${key} but Swagger mode is '${swaggerMode}'. ` +
28
- `Class validators are only supported when swagger.mode is 'class-validator'.`);
29
- }
30
- }
31
- }
32
- if (config.validation && typeof config.experimental?.openapi === "object") {
33
- const openapi = config.experimental
34
- .openapi;
35
- if (config.validation.query &&
36
- openapi.parameters?.some((p) => p.in === "query")) {
37
- throw new Error("Duplicate query validation definitions. " +
38
- "When using validation.query, do not define query parameters in openapi.parameters. " +
39
- "They will be automatically migrated to OpenAPI specification.");
40
- }
41
- if (config.validation.params &&
42
- openapi.parameters?.some((p) => p.in === "params")) {
43
- throw new Error("Duplicate path parameter validation definitions. " +
44
- "When using validation.params, do not define path parameters in openapi.parameters. " +
45
- "They will be automatically migrated to OpenAPI specification.");
46
- }
47
- if (config.validation.body && openapi.requestBody) {
48
- throw new Error("Duplicate request body validation definitions. " +
49
- "When using validation.body, do not define openapi.requestBody in openapi. " +
50
- "It will be automatically migrated to OpenAPI specification.");
51
- }
52
- }
53
- }
54
- }
55
- exports.default = RouteConfigValidator;
56
- //# sourceMappingURL=route-config-validator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"route-config-validator.js","sourceRoot":"","sources":["../../../../src/utils/arkos-router/route-config-validator.ts"],"names":[],"mappings":";;AACA,sDAAyD;AACzD,2CAA+C;AAG/C,MAAqB,oBAAoB;IACvC,MAAM,CAAC,kBAAkB,CAAC,GAAQ;QAChC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,MAAM,IAAI,GAAG,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,MAAwB;QACtC,MAAM,WAAW,GAAG,IAAA,wBAAc,GAAE,EAAE,UAAU,EAAE,QAAQ,CAAC;QAE3D,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,MAAM,UAAU,GAAG;gBACjB,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE;gBAClD,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE;gBAChD,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE;aACrD,CAAC;YAEF,KAAK,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;gBACzC,IAAI,CAAC,MAAM;oBAAE,SAAS;gBAEtB,MAAM,KAAK,GAAG,IAAA,4BAAW,EAAC,MAAM,CAAC,CAAC;gBAClC,MAAM,gBAAgB,GAAG,IAAA,wBAAO,EAAC,MAAM,CAAC,CAAC;gBAEzC,IAAI,KAAK,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;oBACnC,MAAM,IAAI,KAAK,CACb,iCAAiC,GAAG,yBAAyB,WAAW,KAAK;wBAC3E,4DAA4D,CAC/D,CAAC;gBACJ,CAAC;gBAED,IAAI,gBAAgB,IAAI,WAAW,KAAK,iBAAiB,EAAE,CAAC;oBAC1D,MAAM,IAAI,KAAK,CACb,sCAAsC,GAAG,yBAAyB,WAAW,KAAK;wBAChF,6EAA6E,CAChF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,YAAY,EAAE,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC1E,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY;iBAChC,OAA6C,CAAC;YAEjD,IACE,MAAM,CAAC,UAAU,CAAC,KAAK;gBACvB,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EACtD,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,0CAA0C;oBACxC,qFAAqF;oBACrF,+DAA+D,CAClE,CAAC;YACJ,CAAC;YAED,IACE,MAAM,CAAC,UAAU,CAAC,MAAM;gBACxB,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EACvD,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,mDAAmD;oBACjD,qFAAqF;oBACrF,+DAA+D,CAClE,CAAC;YACJ,CAAC;YAED,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBAClD,MAAM,IAAI,KAAK,CACb,iDAAiD;oBAC/C,4EAA4E;oBAC5E,6DAA6D,CAChE,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAxED,uCAwEC","sourcesContent":["import { ArkosRouteConfig } from \"./types\";\nimport { isClass, isZodSchema } from \"../dynamic-loader\";\nimport { getArkosConfig } from \"../../exports\";\nimport { OpenAPIV3 } from \"openapi-types\";\n\nexport default class RouteConfigValidator {\n static isArkosRouteConfig(arg: any): arg is ArkosRouteConfig {\n return typeof arg === \"object\" && arg !== null && \"path\" in arg;\n }\n\n static validate(config: ArkosRouteConfig) {\n const swaggerMode = getArkosConfig()?.validation?.resolver;\n\n if (config.validation) {\n const validators = [\n { key: \"query\", schema: config.validation?.query },\n { key: \"body\", schema: config.validation?.body },\n { key: \"params\", schema: config.validation?.params },\n ];\n\n for (const { key, schema } of validators) {\n if (!schema) continue;\n\n const isZod = isZodSchema(schema);\n const isClassValidator = isClass(schema);\n\n if (isZod && swaggerMode !== \"zod\") {\n throw new Error(\n `Zod schema used in validation.${key} but Swagger mode is '${swaggerMode}'. ` +\n `Zod schemas are only supported when swagger.mode is 'zod'.`\n );\n }\n\n if (isClassValidator && swaggerMode !== \"class-validator\") {\n throw new Error(\n `Class validator used in validation.${key} but Swagger mode is '${swaggerMode}'. ` +\n `Class validators are only supported when swagger.mode is 'class-validator'.`\n );\n }\n }\n }\n\n if (config.validation && typeof config.experimental?.openapi === \"object\") {\n const openapi = config.experimental\n .openapi as Partial<OpenAPIV3.OperationObject>;\n\n if (\n config.validation.query &&\n openapi.parameters?.some((p: any) => p.in === \"query\")\n ) {\n throw new Error(\n \"Duplicate query validation definitions. \" +\n \"When using validation.query, do not define query parameters in openapi.parameters. \" +\n \"They will be automatically migrated to OpenAPI specification.\"\n );\n }\n\n if (\n config.validation.params &&\n openapi.parameters?.some((p: any) => p.in === \"params\")\n ) {\n throw new Error(\n \"Duplicate path parameter validation definitions. \" +\n \"When using validation.params, do not define path parameters in openapi.parameters. \" +\n \"They will be automatically migrated to OpenAPI specification.\"\n );\n }\n\n if (config.validation.body && openapi.requestBody) {\n throw new Error(\n \"Duplicate request body validation definitions. \" +\n \"When using validation.body, do not define openapi.requestBody in openapi. \" +\n \"It will be automatically migrated to OpenAPI specification.\"\n );\n }\n }\n }\n}\n"]}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=body-parser-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"body-parser-config.js","sourceRoot":"","sources":["../../../../../src/utils/arkos-router/types/body-parser-config.ts"],"names":[],"mappings":"","sourcesContent":["import express from \"express\";\nimport { Options as MulterOptions } from \"multer\";\n\nexport type BodyParserConfig =\n | { parser: \"json\"; options?: Parameters<typeof express.json>[0] }\n | {\n parser: \"urlencoded\";\n options?: Parameters<typeof express.urlencoded>[0];\n }\n | { parser: \"raw\"; options?: Parameters<typeof express.raw>[0] }\n | { parser: \"multipart\"; options?: MulterOptions[\"limits\"] }\n | { parser: \"text\"; options?: Parameters<typeof express.text>[0] };\n"]}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/utils/arkos-router/types/index.ts"],"names":[],"mappings":"","sourcesContent":["import { IRoute, IRouter } from \"express\";\nimport { ZodSchema } from \"zod\";\nimport { Options as RateLimitOptions } from \"express-rate-limit\";\nimport { Options as QueryParserOptions } from \"../../../utils/helpers/query-parser.helpers\";\nimport { DetailedAccessControlRule } from \"../../../types/auth\";\nimport { ArkosErrorRequestHandler, ArkosRequestHandler } from \"../../../types\";\nimport compression from \"compression\";\nimport { OpenApiConfig } from \"./openapi-config\";\nimport { UploadConfig } from \"./upload-config\";\nimport { BodyParserConfig } from \"./body-parser-config\";\n\nexport type PathParams = string | RegExp | Array<string | RegExp>;\n\nexport type ArkosAnyRequestHandler =\n | ArkosRequestHandler\n | ArkosErrorRequestHandler\n | Array<ArkosRequestHandler | ArkosErrorRequestHandler>;\n\n/**\n * Handler function for HTTP methods that accepts route configuration and request handlers.\n *\n * @param {ArkosRouteConfig} config - The route configuration object.\n * @param {...(ArkosRequestHandler | ArkosErrorRequestHandler)[]} handlers - Request and error handlers for the route.\n * @returns {IRouter} The Express router instance.\n */\ntype RouterMethodHandler<T> = (\n config: ArkosRouteConfig | PathParams,\n ...handlers: Array<ArkosAnyRequestHandler>\n) => T;\n\nexport type ArkosRouteMethodHandler<T> = (\n config: ArkosAnyRequestHandler | Omit<ArkosRouteConfig, \"path\">,\n ...handlers: Array<\n | ArkosRequestHandler\n | ArkosErrorRequestHandler\n | Array<ArkosRequestHandler | ArkosErrorRequestHandler>\n >\n) => T;\n\nexport interface ArkosIRoute extends IRoute {\n /** GET method handler with route configuration support */\n get: ArkosRouteMethodHandler<this>;\n /** POST method handler with route configuration support */\n post: ArkosRouteMethodHandler<this>;\n /** PUT method handler with route configuration support */\n put: ArkosRouteMethodHandler<this>;\n /** PATCH method handler with route configuration support */\n patch: ArkosRouteMethodHandler<this>;\n /** DELETE method handler with route configuration support */\n delete: ArkosRouteMethodHandler<this>;\n /** OPTIONS method handler with route configuration support */\n options: ArkosRouteMethodHandler<this>;\n /** HEAD method handler with route configuration support */\n head: ArkosRouteMethodHandler<this>;\n // /** TRACE method handler with route configuration support */\n trace: ArkosRouteMethodHandler<this>;\n /** ALL methods handler with route configuration support */\n all: ArkosRouteMethodHandler<this>;\n}\n\n/**\n * Creates an enhanced Express Router with features like OpenAPI documentation capabilities and smart data validation.\n *\n * The ArkosRouter extends the standard Express Router with the ability to\n * automatically capture OpenAPI metadata from route configurations.\n *\n * @example\n * const router = ArkosRouter();\n *\n * router.get(\n * {\n * path: \"/users/:id\",\n * openapi: {\n * summary: \"Get user by ID\",\n * tags: [\"Users\"]\n * }\n * },\n * (req, res) => { ... }\n * );\n *\n * @returns {IArkosRouter} A proxied Express Router instance with enhanced OpenAPI capabilities\n *\n * @see {@link ArkosRouteConfig} for configuration options\n */\nexport interface IArkosRouter extends IRouter {\n /** GET method handler with route configuration support */\n get: RouterMethodHandler<this>;\n /** POST method handler with route configuration support */\n post: RouterMethodHandler<this>;\n /** PUT method handler with route configuration support */\n put: RouterMethodHandler<this>;\n /** PATCH method handler with route configuration support */\n patch: RouterMethodHandler<this>;\n /** DELETE method handler with route configuration support */\n delete: RouterMethodHandler<this>;\n /** OPTIONS method handler with route configuration support */\n options: RouterMethodHandler<this>;\n /** HEAD method handler with route configuration support */\n head: RouterMethodHandler<this>;\n // /** TRACE method handler with route configuration support */\n trace: RouterMethodHandler<this>;\n /** ALL methods handler with route configuration support */\n all: RouterMethodHandler<this>;\n\n route<T extends string>(prefix: T): ArkosIRoute;\n route(prefix: PathParams): ArkosIRoute;\n}\n\n/**\n * Configuration object for defining routes in Arkos.js.\n */\nexport type ArkosRouteConfig = {\n /**\n * Disables the route by not mounting it internally.\n */\n disabled?: boolean;\n /**\n * The URL path pattern for the route.\n *\n * @example \"/api/users/:id\"\n */\n path: PathParams;\n /**\n * Authentication and authorization configuration.\n *\n * @remarks\n * - Set to `true` to require authentication without specific permissions.\n * - Set to `false` or omit to allow unauthenticated access.\n * - Provide an object to specify resource-based access control with resource name, action, and optional custom rules.\n */\n authentication?:\n | boolean\n | {\n resource: string;\n action: string;\n rule?: DetailedAccessControlRule | string[] | \"*\";\n };\n /**\n * Request validation configuration using Zod schemas or class constructors.\n *\n * @remarks\n * - Set to `false` to disable all validation.\n * - Provide an object with `query`, `body`, and/or `params` properties to validate specific parts of the request.\n * - Each property accepts a Zod schema, a class constructor, or `false` to disable validation for that part.\n */\n validation?:\n | false\n | {\n query?: ZodSchema | (new (...args: any[]) => object) | false;\n body?: ZodSchema | (new (...args: any[]) => object) | false;\n params?: ZodSchema | (new (...args: any[]) => object) | false;\n };\n\n /**\n * Rate limiting configuration for this route.\n *\n * @see {@link https://www.npmjs.com/package/express-rate-limit express-rate-limit} for available options.\n */\n rateLimit?: Partial<RateLimitOptions>;\n\n /**\n * Allows to define options for npm package compression.\n * Nothing is passed by default.\n *\n * @see {@link https://www.npmjs.com/package/compression compression} for further details.\n */\n compression?: compression.CompressionOptions;\n /**\n * Options to define how query must be parsed.\n *\n * @example\n * ```\n * GET /api/product?saleId=null\n * ```\n *\n * Normally would parsed to { saleId: \"null\" } so query parser\n * trough setting option `parseNull` will transform { saleId: null }\n *\n * @default\n * ```\n * {\n * parseNull: true,\n * parseUndefined: true,\n * parseBoolean: true,\n * }\n * ```\n *\n * @remarks\n * parseNumber may convert fields that are string but you only passed\n * numbers to query pay attention to this.\n *\n * Soon a feature to converted the query to the end prisma type will be added.\n */\n queryParser?: QueryParserOptions;\n /**\n * Configuration for request body parsing.\n *\n * @property {(\"json\" | \"urlencoded\" | \"raw\" | \"text\")} parser - The type of body parser to use.\n * @property {object} [options] - Parser-specific options passed to the corresponding Express body parser middleware.\n *\n * @remarks\n * - When `parser` is `\"json\"`, options are passed to `express.json()`.\n * - When `parser` is `\"urlencoded\"`, options are passed to `express.urlencoded()`.\n * - When `parser` is `\"raw\"`, options are passed to `express.raw()`.\n * - When `parser` is `\"text\"`, options are passed to `express.text()`.\n * - Set to `false` to disable body parsing for this route.\n *\n * @see {@link https://expressjs.com/en/api.html#express.json Express body parser documentation}\n */\n bodyParser?: BodyParserConfig | BodyParserConfig[] | false;\n /**\n * Experimental features to be battled tested before being stable\n *\n * PS: These features may be changed without any previous warning.\n */\n experimental?: {\n /**\n * OpenAPI specification for this route.\n *\n * @remarks\n * - Set to `false` to exclude this route from OpenAPI documentation.\n * - Provide a partial OpenAPI operation object to document the route.\n */\n openapi?: false | OpenApiConfig;\n /**\n * Configuration for file upload handling in routes.\n * Supports single file, multiple files from same field, or multiple fields with files.\n */\n uploads?: UploadConfig;\n };\n};\n"]}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=openapi-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openapi-config.js","sourceRoot":"","sources":["../../../../../src/utils/arkos-router/types/openapi-config.ts"],"names":[],"mappings":"","sourcesContent":["import { OpenAPIV3 } from \"openapi-types\";\nimport { ZodSchema } from \"zod\";\n\n/**\n * Represents a schema-like object that can be used for OpenAPI documentation.\n * Accepts Zod schemas, class constructors (DTOs), or plain JSON Schema objects.\n */\ntype SchemaLike =\n | ZodSchema\n | (new (...args: any[]) => object)\n | OpenAPIV3.SchemaObject;\n\n/**\n * Extended media type object that accepts SchemaLike in addition to standard OpenAPI schemas.\n */\ntype ExtendedMediaTypeObject = Omit<OpenAPIV3.MediaTypeObject, \"schema\"> & {\n schema: SchemaLike;\n};\n\n/**\n * Represents a parameter object with support for Zod schemas, class constructors, or JSON Schema.\n * Extends OpenAPI's ParameterObject to accept SchemaLike types for the schema field.\n *\n * @example\n * // Using JSON Schema (standard OpenAPI)\n * {\n * name: \"userId\",\n * in: \"path\",\n * required: true,\n * schema: { type: \"string\", format: \"uuid\" }\n * }\n *\n * @example\n * // Using Zod schema\n * {\n * name: \"limit\",\n * in: \"query\",\n * schema: z.number().int().min(1).max(100)\n * }\n *\n * @example\n * // Using class constructor (DTO)\n * {\n * name: \"filter\",\n * in: \"query\",\n * schema: FilterDto\n * }\n */\nexport type ExtendedParameterObject = Omit<\n OpenAPIV3.ParameterObject,\n \"schema\"\n> & {\n /**\n * The schema defining the type used for the parameter.\n * Can be a Zod schema, class constructor, or standard JSON Schema object.\n */\n schema?: SchemaLike;\n};\n\n/**\n * Shorthand response definition. Can be:\n * - A SchemaLike (assumes application/json content-type and default description)\n * - An object with `content` as SchemaLike and optional `description`\n * - A full OpenAPI response object with custom content-types\n *\n * @example\n * // Shorthand: Just the schema (assumes application/json + \"Success\" description)\n * 200: ProfileDto\n *\n * @example\n * // Medium: Schema with custom description\n * 404: {\n * content: ErrorDto,\n * description: \"User not found\"\n * }\n *\n * @example\n * // Full: Multiple content-types with custom configuration\n * 500: {\n * content: {\n * \"application/json\": { schema: ErrorDto },\n * \"text/plain\": { schema: PlainErrorDto }\n * },\n * description: \"Internal server error\"\n * }\n */\ntype ResponseDefinition =\n | SchemaLike\n | {\n content: SchemaLike;\n description?: string;\n }\n | (Omit<OpenAPIV3.ResponseObject, \"content\"> & {\n content?: {\n [media: string]: ExtendedMediaTypeObject;\n };\n });\n\n/**\n * Shorthand request body definition. Can be:\n * - A SchemaLike (assumes application/json content-type)\n * - An object with `content` as SchemaLike and optional configuration\n * - A full OpenAPI request body object with custom content-types\n *\n * @example\n * // Shorthand: Just the schema (assumes application/json)\n * requestBody: CreateUserDto\n *\n * @example\n * // Medium: Schema with configuration\n * requestBody: {\n * content: CreateUserDto,\n * required: true,\n * description: \"User creation payload\"\n * }\n *\n * @example\n * // Full: Multiple content-types\n * requestBody: {\n * content: {\n * \"application/json\": { schema: CreateUserDto },\n * \"multipart/form-data\": { schema: CreateUserFormDto }\n * },\n * required: true\n * }\n */\ntype RequestBodyDefinition =\n | SchemaLike\n | {\n content: SchemaLike;\n required?: boolean;\n description?: string;\n }\n | (Omit<OpenAPIV3.RequestBodyObject, \"content\"> & {\n content: {\n [media: string]: ExtendedMediaTypeObject;\n };\n });\n\n/**\n * Extended OpenAPI Operation object with enhanced requestBody and responses.\n *\n * NOTE: If you define validation in the `validation` field, DO NOT redefine\n * the same schemas here. The framework will automatically generate OpenAPI docs\n * from your validation schemas. This field is only for:\n * - Endpoints that don't use validation (docs-only)\n * - Additional metadata (summary, description, tags, etc.)\n *\n * Defining both validation and openapi schemas for the same field will cause\n * a startup error to prevent documentation drift.\n */\ntype ExtendedOperationObject = Omit<\n OpenAPIV3.OperationObject,\n \"responses\" | \"requestBody\"\n> & {\n /**\n * Response definitions keyed by HTTP status code.\n * Supports shorthand, medium, and full OpenAPI formats.\n */\n responses?: {\n [statusCode: number]: ResponseDefinition;\n };\n\n /**\n * Request body definition.\n * Supports shorthand, medium, and full OpenAPI formats.\n *\n * WARNING: Do not define this if you're using `validation.body` -\n * it will be auto-generated from your validation schema.\n */\n requestBody?: RequestBodyDefinition;\n /**\n * Array of parameter definitions for path, query, header, and cookie parameters.\n * Each parameter's schema can be a Zod schema, class constructor, or JSON Schema.\n *\n * WARNING: Do NOT define parameters here if you're using `validation.query`,\n * `validation.params`, `validation.headers`, or `validation.cookies`.\n * Those validation schemas will automatically generate parameter documentation.\n * Defining both will cause a startup error.\n *\n * Only use this field for:\n * - Documentation-only endpoints (no validation)\n * - Routes where you explicitly don't want validation\n *\n * Note: In practice, documenting parameters without validation is rare.\n * Most APIs validate their inputs, so you'll typically use the `validation` field instead.\n *\n * @example\n * // Standard JSON Schema (most common for parameters)\n * parameters: [\n * {\n * name: \"userId\",\n * in: \"path\",\n * required: true,\n * schema: { type: \"string\", format: \"uuid\" }\n * },\n * {\n * name: \"limit\",\n * in: \"query\",\n * schema: { type: \"integer\", minimum: 1, maximum: 100 }\n * }\n * ]\n *\n * @example\n * // Using Zod (less common for parameters, but supported)\n * parameters: [\n * {\n * name: \"page\",\n * in: \"query\",\n * schema: z.number().int().positive()\n * }\n * ]\n */\n parameters?: (ExtendedParameterObject | OpenAPIV3.ReferenceObject)[];\n};\n\n/**\n * OpenAPI configuration for a route.\n * Set to `false` to exclude this route from OpenAPI documentation.\n * Otherwise, provide operation metadata and schema definitions.\n *\n * @example\n * // Exclude from docs\n * openapi: false\n *\n * @example\n * // Simple documentation with shorthand\n * openapi: {\n * summary: \"Get user profile\",\n * responses: {\n * 200: ProfileDto,\n * 404: ErrorDto\n * }\n * }\n *\n * @example\n * // Complex documentation with multiple content-types\n * openapi: {\n * summary: \"Upload file\",\n * requestBody: {\n * content: {\n * \"multipart/form-data\": { schema: FileUploadDto }\n * },\n * required: true\n * },\n * responses: {\n * 200: {\n * content: {\n * \"application/json\": { schema: UploadResultDto }\n * },\n * description: \"File uploaded successfully\"\n * }\n * }\n * }\n */\nexport type OpenApiConfig = false | Partial<ExtendedOperationObject>;\n"]}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=upload-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"upload-config.js","sourceRoot":"","sources":["../../../../../src/utils/arkos-router/types/upload-config.ts"],"names":[],"mappings":"","sourcesContent":["export type UploadConfig =\n /**\n * Creates middleware that processes a single file associated with the\n * given form field.\n *\n * The `Request` object will be populated with a `file` object containing\n * information about the processed file.\n *\n * @example\n * uploads: {\n * type: \"single\",\n * field: \"avatar\",\n * uploadDir: \"images\",\n * maxSize: 1024 * 1024 * 5 // 5MB\n * }\n */\n | ({\n type: \"single\";\n /** Name of the multipart form field to process */\n field: string;\n } & ArkosRouterBaseUploadConfig)\n /**\n * Returns middleware that processes multiple files sharing the same field\n * name.\n *\n * The `Request` object will be populated with a `files` array containing\n * an information object for each processed file.\n *\n * @throws `MulterError('LIMIT_UNEXPECTED_FILE')` if more than `maxCount` files are associated with `fieldName`\n *\n * @example\n * uploads: {\n * type: \"array\",\n * field: \"gallery\",\n * maxCount: 10,\n * minCount: 1,\n * uploadDir: \"images\"\n * }\n */\n | ({\n type: \"array\";\n /** Shared name of the multipart form fields to process */\n field: string;\n /** Maximum number of files to process (defaults to framework config) */\n maxCount?: number;\n /** Minimum number of files required */\n // minCount?: number;\n } & ArkosRouterBaseUploadConfig)\n /**\n * Creates middleware that processes multiple files associated with the\n * given form fields.\n *\n * The `Request` object will be populated with a `files` object which\n * maps each field name to an array of the associated file information\n * objects.\n *\n * @throws `MulterError('LIMIT_UNEXPECTED_FILE')` if more than `maxCount` files are associated with `fieldName` for any field\n *\n * @example\n * uploads: {\n * type: \"fields\",\n * fields: [\n * { field: \"avatar\", maxCount: 1, uploadDir: \"images\" },\n * { field: \"resume\", maxCount: 1, uploadDir: \"documents\" }\n * ]\n * }\n */\n | ({\n type: \"fields\";\n /** Array of field configurations describing multipart form fields to process */\n fields: {\n /** Name of the form field */\n name: string;\n /** Maximum number of files for this field (defaults to framework config) */\n maxCount?: number;\n // /** Minimum number of files required for this field */\n // minCount?: number;\n }[];\n } & ArkosRouterBaseUploadConfig);\n\n/**\n * Base configuration options for file uploads.\n * These settings can override framework-level defaults for specific routes.\n */\nexport type ArkosRouterBaseUploadConfig = {\n /**\n * Directory category where files will be stored.\n * Each category has its own default restrictions defined in framework config.\n *\n * @remarks Do not include the `baseUploadDir` defined under your arkos config\n * @default Depends on the file type which is descovered by the file mimetype, otherwise falls to files.\n */\n uploadDir?: string;\n /**\n * Whether to automatically delete uploaded files if an error occurs during request processing.\n * Cleanup happens when errors are thrown and not caught within the route handler.\n *\n * @default false\n */\n deleteOnError?: boolean;\n /**\n * How to attach file information to req.body for easier access in handlers and validation.\n * - \"pathname\": Just the relative path (e.g., \"images/avatar-123.jpg\")\n * - \"url\": Complete URL (e.g., \"https://api.com/uploads/images/avatar-123.jpg\")\n * - \"file\": The complete Multer file object with all metadata\n *\n * @default \"pathname\"\n *\n * @remarks\n * When using validation, the attached format will be available in your validated body.\n * For array/fields uploads, an array of the specified format will be attached.\n */\n attachToBody?: \"pathname\" | \"url\" | \"file\" | false;\n /**\n * Maximum file size in bytes.\n * Overrides the framework-level default for this uploadDir category.\n *\n * @example\n * maxSize: 1024 * 1024 * 5 // 5MB\n * maxSize: 1024 * 1024 * 50 // 50MB\n */\n maxSize?: number;\n /**\n * Allowed file types/extensions.\n * Can be an array of extensions/MIME types or a RegExp pattern.\n * Overrides the framework-level default for this uploadDir category.\n *\n * @example\n * // Array of extensions\n * allowedFileTypes: [\".jpg\", \".png\", \".gif\"]\n *\n * @example\n * // Array of MIME types\n * allowedFileTypes: [\"image/jpeg\", \"image/png\"]\n *\n * @example\n * // RegExp pattern\n * allowedFileTypes: /jpeg|jpg|png|gif/\n */\n allowedFileTypes?: string[] | RegExp;\n /**\n * Defines if this file field is required\n *\n * @default true\n */\n required?: boolean;\n /**\n * Open API field description\n */\n description?: string;\n};\n"]}