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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (613) hide show
  1. package/README.md +146 -145
  2. package/cli.js +11 -13
  3. package/dist/esm/app.js +17 -16
  4. package/dist/esm/app.js.map +1 -1
  5. package/dist/esm/components/arkos-gateway/arkos-gateway.js +338 -0
  6. package/dist/esm/components/arkos-gateway/arkos-gateway.js.map +1 -0
  7. package/dist/esm/components/arkos-gateway/socket-extensions.js +168 -0
  8. package/dist/esm/components/arkos-gateway/socket-extensions.js.map +1 -0
  9. package/dist/esm/components/arkos-gateway/types.js +3 -0
  10. package/dist/esm/components/arkos-gateway/types.js.map +1 -0
  11. package/dist/esm/components/arkos-gateway/utils/helpers.js +105 -0
  12. package/dist/esm/components/arkos-gateway/utils/helpers.js.map +1 -0
  13. package/dist/esm/components/arkos-gateway/utils/memory-gateway-store.js +45 -0
  14. package/dist/esm/components/arkos-gateway/utils/memory-gateway-store.js.map +1 -0
  15. package/dist/esm/components/arkos-gateway/utils/multi-tier-arkos-gateway-store.js +40 -0
  16. package/dist/esm/components/arkos-gateway/utils/multi-tier-arkos-gateway-store.js.map +1 -0
  17. package/dist/esm/components/arkos-gateway/utils/rate-limiter.js +13 -0
  18. package/dist/esm/components/arkos-gateway/utils/rate-limiter.js.map +1 -0
  19. package/dist/esm/components/arkos-loadable-registry/index.js +1 -3
  20. package/dist/esm/components/arkos-loadable-registry/index.js.map +1 -1
  21. package/dist/esm/components/arkos-policy/index.js +3 -1
  22. package/dist/esm/components/arkos-policy/index.js.map +1 -1
  23. package/dist/esm/components/arkos-route-hook/index.js +2 -1
  24. package/dist/esm/components/arkos-route-hook/index.js.map +1 -1
  25. package/dist/esm/components/arkos-route-hook/reader.js.map +1 -1
  26. package/dist/esm/components/arkos-route-hook/types.js.map +1 -1
  27. package/dist/esm/exports/error-handler/index.js +1 -0
  28. package/dist/esm/exports/error-handler/index.js.map +1 -1
  29. package/dist/esm/exports/index.js +3 -3
  30. package/dist/esm/exports/index.js.map +1 -1
  31. package/dist/esm/exports/middlewares/index.js +1 -1
  32. package/dist/esm/exports/middlewares/index.js.map +1 -1
  33. package/dist/esm/exports/services/index.js +2 -2
  34. package/dist/esm/exports/services/index.js.map +1 -1
  35. package/dist/esm/exports/websockets.js +5 -0
  36. package/dist/esm/exports/websockets.js.map +1 -0
  37. package/dist/esm/generated.js.map +1 -1
  38. package/dist/esm/modules/auth/auth.controller.js +214 -222
  39. package/dist/esm/modules/auth/auth.controller.js.map +1 -1
  40. package/dist/esm/modules/auth/auth.router.js +26 -9
  41. package/dist/esm/modules/auth/auth.router.js.map +1 -1
  42. package/dist/esm/modules/auth/auth.service.js +90 -102
  43. package/dist/esm/modules/auth/auth.service.js.map +1 -1
  44. package/dist/esm/modules/auth/utils/auth-error-objects.js +2 -2
  45. package/dist/esm/modules/auth/utils/auth-error-objects.js.map +1 -1
  46. package/dist/esm/modules/auth/utils/auth-hooks-manager.js +148 -0
  47. package/dist/esm/modules/auth/utils/auth-hooks-manager.js.map +1 -0
  48. package/dist/esm/modules/auth/utils/auth-openapi-generator.js +367 -0
  49. package/dist/esm/modules/auth/utils/auth-openapi-generator.js.map +1 -0
  50. package/dist/esm/modules/auth/utils/auth-prisma-json-schema-generator.js +97 -0
  51. package/dist/esm/modules/auth/utils/auth-prisma-json-schema-generator.js.map +1 -0
  52. package/dist/esm/modules/auth/utils/docs-links.js +6 -0
  53. package/dist/esm/modules/auth/utils/docs-links.js.map +1 -0
  54. package/dist/esm/modules/auth/utils/services/auth-action.service.js +20 -16
  55. package/dist/esm/modules/auth/utils/services/auth-action.service.js.map +1 -1
  56. package/dist/esm/modules/base/base.controller.js +182 -162
  57. package/dist/esm/modules/base/base.controller.js.map +1 -1
  58. package/dist/esm/modules/base/base.middlewares.js +31 -48
  59. package/dist/esm/modules/base/base.middlewares.js.map +1 -1
  60. package/dist/esm/modules/base/base.router.js +23 -9
  61. package/dist/esm/modules/base/base.router.js.map +1 -1
  62. package/dist/esm/modules/base/base.service.js +33 -138
  63. package/dist/esm/modules/base/base.service.js.map +1 -1
  64. package/dist/esm/modules/base/types/base.service.types.js.map +1 -1
  65. package/dist/esm/modules/base/utils/error-prettifier.js +26 -30
  66. package/dist/esm/modules/base/utils/error-prettifier.js.map +1 -1
  67. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +26 -5
  68. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
  69. package/dist/esm/modules/base/utils/model-openapi-generator.js +438 -0
  70. package/dist/esm/modules/base/utils/model-openapi-generator.js.map +1 -0
  71. package/dist/esm/modules/email/email.service.js +17 -10
  72. package/dist/esm/modules/email/email.service.js.map +1 -1
  73. package/dist/esm/modules/error-handler/error-handler.controller.js +24 -113
  74. package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -1
  75. package/dist/esm/modules/error-handler/utils/app-error.js +5 -2
  76. package/dist/esm/modules/error-handler/utils/app-error.js.map +1 -1
  77. package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -1
  78. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +9 -103
  79. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
  80. package/dist/esm/modules/error-handler/utils/errors.js +127 -0
  81. package/dist/esm/modules/error-handler/utils/errors.js.map +1 -0
  82. package/dist/esm/modules/error-handler/utils/get-handled-error.js +68 -0
  83. package/dist/esm/modules/error-handler/utils/get-handled-error.js.map +1 -0
  84. package/dist/esm/modules/error-handler/utils/multer-error-handler.js +34 -0
  85. package/dist/esm/modules/error-handler/utils/multer-error-handler.js.map +1 -0
  86. package/dist/esm/modules/file-upload/file-upload.controller.js +208 -214
  87. package/dist/esm/modules/file-upload/file-upload.controller.js.map +1 -1
  88. package/dist/esm/modules/file-upload/file-upload.router.js +35 -12
  89. package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -1
  90. package/dist/esm/modules/file-upload/file-upload.service.js +13 -8
  91. package/dist/esm/modules/file-upload/file-upload.service.js.map +1 -1
  92. package/dist/esm/modules/file-upload/utils/file-upload-json-schema-generator.js +346 -0
  93. package/dist/esm/modules/file-upload/utils/file-upload-json-schema-generator.js.map +1 -0
  94. package/dist/esm/modules/swagger/swagger.router.js +39 -22
  95. package/dist/esm/modules/swagger/swagger.router.js.map +1 -1
  96. package/dist/esm/modules/swagger/utils/get-open-api-login-html.js +305 -0
  97. package/dist/esm/modules/swagger/utils/get-open-api-login-html.js.map +1 -0
  98. package/dist/esm/modules/swagger/utils/helpers/class-validator-to-json-schema.js.map +1 -1
  99. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js +6 -7
  100. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +1 -1
  101. package/dist/esm/modules/swagger/utils/helpers/openapi-schema-converter.js +6 -3
  102. package/dist/esm/modules/swagger/utils/helpers/openapi-schema-converter.js.map +1 -1
  103. package/dist/esm/server.js +1 -1
  104. package/dist/esm/server.js.map +1 -1
  105. package/dist/esm/types/arkos-config/utils.js +2 -0
  106. package/dist/esm/types/arkos-config/utils.js.map +1 -0
  107. package/dist/esm/types/arkos-prisma-input.js.map +1 -1
  108. package/dist/esm/types/arkos.js.map +1 -1
  109. package/dist/esm/types/auth.js.map +1 -1
  110. package/dist/esm/types/index.js.map +1 -1
  111. package/dist/esm/types/new-arkos-config.js.map +1 -1
  112. package/dist/esm/types/router-config.js.map +1 -1
  113. package/dist/esm/types/upload.js +2 -0
  114. package/dist/esm/types/upload.js.map +1 -0
  115. package/dist/esm/types/validation/validation-manager.js +49 -0
  116. package/dist/esm/types/validation/validation-manager.js.map +1 -0
  117. package/dist/esm/types/validation/validator.js +2 -0
  118. package/dist/esm/types/validation/validator.js.map +1 -0
  119. package/dist/esm/utils/arkos-router/arkos-router-openapi-manager.js +68 -34
  120. package/dist/esm/utils/arkos-router/arkos-router-openapi-manager.js.map +1 -1
  121. package/dist/esm/utils/arkos-router/index.js +37 -130
  122. package/dist/esm/utils/arkos-router/index.js.map +1 -1
  123. package/dist/esm/utils/arkos-router/route-config-registry.js +2 -3
  124. package/dist/esm/utils/arkos-router/route-config-registry.js.map +1 -1
  125. package/dist/esm/utils/arkos-router/types/index.js.map +1 -1
  126. package/dist/esm/utils/arkos-router/types/openapi-config.js.map +1 -1
  127. package/dist/esm/utils/arkos-router/types/upload-config.js.map +1 -1
  128. package/dist/esm/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js +188 -0
  129. package/dist/esm/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js.map +1 -0
  130. package/dist/esm/utils/arkos-router/utils/helpers/index.js +88 -29
  131. package/dist/esm/utils/arkos-router/utils/helpers/index.js.map +1 -1
  132. package/dist/esm/utils/arkos-router/utils/helpers/upload-manager.js +364 -89
  133. package/dist/esm/utils/arkos-router/utils/helpers/upload-manager.js.map +1 -1
  134. package/dist/esm/utils/bundler.js +6 -6
  135. package/dist/esm/utils/bundler.js.map +1 -1
  136. package/dist/esm/utils/cli/build.js +16 -7
  137. package/dist/esm/utils/cli/build.js.map +1 -1
  138. package/dist/esm/utils/cli/dev.js +18 -28
  139. package/dist/esm/utils/cli/dev.js.map +1 -1
  140. package/dist/esm/utils/cli/export-auth-action.js +5 -4
  141. package/dist/esm/utils/cli/export-auth-action.js.map +1 -1
  142. package/dist/esm/utils/cli/generate.js +70 -56
  143. package/dist/esm/utils/cli/generate.js.map +1 -1
  144. package/dist/esm/utils/cli/index.js +54 -50
  145. package/dist/esm/utils/cli/index.js.map +1 -1
  146. package/dist/esm/utils/cli/prisma-generate.js +8 -37
  147. package/dist/esm/utils/cli/prisma-generate.js.map +1 -1
  148. package/dist/esm/utils/cli/start.js +25 -14
  149. package/dist/esm/utils/cli/start.js.map +1 -1
  150. package/dist/esm/utils/cli/utils/cli.helpers.js +1 -1
  151. package/dist/esm/utils/cli/utils/runtime-cli-commander.js +7 -4
  152. package/dist/esm/utils/cli/utils/runtime-cli-commander.js.map +1 -1
  153. package/dist/esm/utils/cli/utils/smart-fs-watcher.js +3 -0
  154. package/dist/esm/utils/cli/utils/smart-fs-watcher.js.map +1 -1
  155. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +307 -11
  156. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +1 -1
  157. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +16 -7
  158. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +1 -1
  159. package/dist/esm/utils/cli/utils/template-generator/templates/generate-multiple-components.js +117 -65
  160. package/dist/esm/utils/cli/utils/template-generator/templates/generate-multiple-components.js.map +1 -1
  161. package/dist/esm/utils/cli/utils/template-generator/templates/policy-template.js +6 -8
  162. package/dist/esm/utils/cli/utils/template-generator/templates/policy-template.js.map +1 -1
  163. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js +13 -2
  164. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js.map +1 -1
  165. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js +2 -2
  166. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js.map +1 -1
  167. package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js +213 -19
  168. package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +1 -1
  169. package/dist/esm/utils/cli/utils/template-generators.js +31 -18
  170. package/dist/esm/utils/cli/utils/template-generators.js.map +1 -1
  171. package/dist/esm/utils/define-config.js +14 -0
  172. package/dist/esm/utils/define-config.js.map +1 -1
  173. package/dist/esm/utils/docs-links.js +2 -0
  174. package/dist/esm/utils/docs-links.js.map +1 -0
  175. package/dist/esm/utils/dotenv.helpers.js +0 -6
  176. package/dist/esm/utils/dotenv.helpers.js.map +1 -1
  177. package/dist/esm/utils/dynamic-loader.js +2 -1
  178. package/dist/esm/utils/dynamic-loader.js.map +1 -1
  179. package/dist/esm/utils/features/api.features.js +46 -27
  180. package/dist/esm/utils/features/api.features.js.map +1 -1
  181. package/dist/esm/utils/features/port-and-host-allocator.js +4 -3
  182. package/dist/esm/utils/features/port-and-host-allocator.js.map +1 -1
  183. package/dist/esm/utils/helpers/api.features.helpers.js +20 -0
  184. package/dist/esm/utils/helpers/api.features.helpers.js.map +1 -1
  185. package/dist/esm/utils/helpers/arkos-config.helpers.js +20 -2
  186. package/dist/esm/utils/helpers/arkos-config.helpers.js.map +1 -1
  187. package/dist/esm/utils/helpers/exit-error.js +1 -0
  188. package/dist/esm/utils/helpers/exit-error.js.map +1 -1
  189. package/dist/esm/utils/helpers/fs.helpers.js +26 -33
  190. package/dist/esm/utils/helpers/fs.helpers.js.map +1 -1
  191. package/dist/esm/utils/helpers/global.helpers.js +1 -1
  192. package/dist/esm/utils/helpers/global.helpers.js.map +1 -1
  193. package/dist/esm/utils/helpers/prisma.helpers.js +10 -7
  194. package/dist/esm/utils/helpers/prisma.helpers.js.map +1 -1
  195. package/dist/esm/utils/helpers/query-parser.helpers.js +7 -22
  196. package/dist/esm/utils/helpers/query-parser.helpers.js.map +1 -1
  197. package/dist/esm/utils/helpers/routers.helpers.js +2 -2
  198. package/dist/esm/utils/helpers/routers.helpers.js.map +1 -1
  199. package/dist/esm/utils/helpers/url-helpers.js +11 -0
  200. package/dist/esm/utils/helpers/url-helpers.js.map +1 -0
  201. package/dist/esm/utils/initialize-app.js +41 -17
  202. package/dist/esm/utils/initialize-app.js.map +1 -1
  203. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +154 -226
  204. package/dist/esm/utils/prisma/prisma-json-schema-generator.js.map +1 -1
  205. package/dist/esm/utils/prisma/prisma-schema-parser.js +37 -11
  206. package/dist/esm/utils/prisma/prisma-schema-parser.js.map +1 -1
  207. package/dist/esm/utils/prisma/types.js.map +1 -1
  208. package/dist/esm/utils/remove-dir.js +1 -1
  209. package/dist/esm/utils/remove-dir.js.map +1 -1
  210. package/dist/esm/utils/setup-app.js +59 -42
  211. package/dist/esm/utils/setup-app.js.map +1 -1
  212. package/dist/esm/utils/validate-schema.js +23 -21
  213. package/dist/esm/utils/validate-schema.js.map +1 -1
  214. package/dist/types/app.d.ts +10 -7
  215. package/dist/types/components/arkos-gateway/arkos-gateway.d.ts +121 -0
  216. package/dist/types/components/arkos-gateway/socket-extensions.d.ts +79 -0
  217. package/dist/types/components/arkos-gateway/types.d.ts +364 -0
  218. package/dist/types/components/arkos-gateway/utils/helpers.d.ts +9 -0
  219. package/dist/types/components/arkos-gateway/utils/memory-gateway-store.d.ts +14 -0
  220. package/dist/types/components/arkos-gateway/utils/multi-tier-arkos-gateway-store.d.ts +20 -0
  221. package/dist/types/components/arkos-gateway/utils/rate-limiter.d.ts +11 -0
  222. package/dist/types/components/arkos-route-hook/index.d.ts +11 -5
  223. package/dist/types/components/arkos-route-hook/reader.d.ts +4 -7
  224. package/dist/types/components/arkos-route-hook/types.d.ts +9 -5
  225. package/dist/types/exports/error-handler/index.d.ts +1 -0
  226. package/dist/types/exports/index.d.ts +5 -5
  227. package/dist/types/exports/middlewares/index.d.ts +1 -1
  228. package/dist/types/exports/services/index.d.ts +3 -3
  229. package/dist/types/exports/websockets.d.ts +5 -0
  230. package/dist/types/modules/auth/auth.service.d.ts +80 -51
  231. package/dist/types/modules/auth/utils/auth-hooks-manager.d.ts +63 -0
  232. package/dist/types/modules/auth/utils/auth-openapi-generator.d.ts +9 -0
  233. package/dist/types/modules/auth/utils/auth-prisma-json-schema-generator.d.ts +13 -0
  234. package/dist/types/modules/auth/utils/docs-links.d.ts +3 -0
  235. package/dist/types/modules/auth/utils/services/auth-action.service.d.ts +2 -2
  236. package/dist/types/modules/base/base.controller.d.ts +4 -4
  237. package/dist/types/modules/base/base.middlewares.d.ts +1 -7
  238. package/dist/types/modules/base/base.service.d.ts +8 -17
  239. package/dist/types/modules/base/types/base.service.types.d.ts +11 -0
  240. package/dist/types/modules/base/utils/helpers/base.service.helpers.d.ts +1 -1
  241. package/dist/types/modules/base/utils/model-openapi-generator.d.ts +12 -0
  242. package/dist/types/modules/email/email.service.d.ts +1 -1
  243. package/dist/types/modules/error-handler/utils/app-error.d.ts +0 -2
  244. package/dist/types/modules/error-handler/utils/catch-async.d.ts +2 -2
  245. package/dist/types/modules/error-handler/utils/error-handler.helpers.d.ts +1 -27
  246. package/dist/types/modules/error-handler/utils/errors.d.ts +176 -0
  247. package/dist/types/modules/error-handler/utils/get-handled-error.d.ts +1 -0
  248. package/dist/types/modules/error-handler/utils/multer-error-handler.d.ts +7 -0
  249. package/dist/types/modules/file-upload/file-upload.controller.d.ts +7 -2
  250. package/dist/types/modules/file-upload/utils/file-upload-json-schema-generator.d.ts +12 -0
  251. package/dist/types/modules/swagger/swagger.router.d.ts +1 -2
  252. package/dist/types/modules/swagger/utils/get-open-api-login-html.d.ts +1 -0
  253. package/dist/types/modules/swagger/utils/helpers/get-swagger-default-configs.d.ts +48 -3
  254. package/dist/types/modules/swagger/utils/helpers/openapi-schema-converter.d.ts +6 -1
  255. package/dist/types/types/arkos-config/utils.d.ts +68 -0
  256. package/dist/types/types/arkos-prisma-input.d.ts +4 -3
  257. package/dist/types/types/arkos.d.ts +5 -15
  258. package/dist/types/types/auth.d.ts +4 -4
  259. package/dist/types/types/index.d.ts +10 -58
  260. package/dist/types/types/new-arkos-config.d.ts +326 -36
  261. package/dist/types/types/router-config.d.ts +0 -63
  262. package/dist/types/types/upload.d.ts +10 -0
  263. package/dist/types/types/validation/validation-manager.d.ts +27 -0
  264. package/dist/types/types/validation/validator.d.ts +2 -0
  265. package/dist/types/utils/arkos-router/arkos-router-openapi-manager.d.ts +14 -1
  266. package/dist/types/utils/arkos-router/index.d.ts +83 -8
  267. package/dist/types/utils/arkos-router/types/index.d.ts +74 -23
  268. package/dist/types/utils/arkos-router/types/openapi-config.d.ts +3 -2
  269. package/dist/types/utils/arkos-router/types/upload-config.d.ts +65 -8
  270. package/dist/types/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.d.ts +6 -0
  271. package/dist/types/utils/arkos-router/utils/helpers/index.d.ts +4 -6
  272. package/dist/types/utils/arkos-router/utils/helpers/upload-manager.d.ts +1 -36
  273. package/dist/types/utils/bundler.d.ts +1 -1
  274. package/dist/types/utils/cli/build.d.ts +1 -1
  275. package/dist/types/utils/cli/generate.d.ts +15 -6
  276. package/dist/types/utils/cli/start.d.ts +3 -1
  277. package/dist/types/utils/cli/utils/template-generator/templates/class-validator-dto-generator.d.ts +11 -0
  278. package/dist/types/utils/cli/utils/template-generator/templates/zod-schema-generator.d.ts +4 -0
  279. package/dist/types/utils/define-config.d.ts +1 -1
  280. package/dist/types/utils/docs-links.d.ts +1 -0
  281. package/dist/types/utils/dynamic-loader.d.ts +2 -2
  282. package/dist/types/utils/features/api.features.d.ts +1 -2
  283. package/dist/types/utils/helpers/arkos-config.helpers.d.ts +7 -0
  284. package/dist/types/utils/helpers/fs.helpers.d.ts +1 -16
  285. package/dist/types/utils/helpers/global.helpers.d.ts +1 -0
  286. package/dist/types/utils/helpers/prisma.helpers.d.ts +1 -1
  287. package/dist/types/utils/helpers/query-parser.helpers.d.ts +1 -1
  288. package/dist/types/utils/helpers/url-helpers.d.ts +1 -0
  289. package/dist/types/utils/initialize-app.d.ts +1 -0
  290. package/dist/types/utils/prisma/prisma-json-schema-generator.d.ts +12 -30
  291. package/dist/types/utils/prisma/prisma-schema-parser.d.ts +4 -0
  292. package/dist/types/utils/prisma/types.d.ts +3 -2
  293. package/package.json +117 -84
  294. package/dist/cjs/app.js +0 -79
  295. package/dist/cjs/app.js.map +0 -1
  296. package/dist/cjs/components/arkos-loadable-registry/index.js +0 -28
  297. package/dist/cjs/components/arkos-loadable-registry/index.js.map +0 -1
  298. package/dist/cjs/components/arkos-loadable-translator/index.js +0 -144
  299. package/dist/cjs/components/arkos-loadable-translator/index.js.map +0 -1
  300. package/dist/cjs/components/arkos-policy/index.js +0 -36
  301. package/dist/cjs/components/arkos-policy/index.js.map +0 -1
  302. package/dist/cjs/components/arkos-policy/types.js +0 -3
  303. package/dist/cjs/components/arkos-policy/types.js.map +0 -1
  304. package/dist/cjs/components/arkos-route-hook/index.js +0 -50
  305. package/dist/cjs/components/arkos-route-hook/index.js.map +0 -1
  306. package/dist/cjs/components/arkos-route-hook/reader.js +0 -47
  307. package/dist/cjs/components/arkos-route-hook/reader.js.map +0 -1
  308. package/dist/cjs/components/arkos-route-hook/types.js +0 -3
  309. package/dist/cjs/components/arkos-route-hook/types.js.map +0 -1
  310. package/dist/cjs/components/arkos-service-hook/index.js +0 -35
  311. package/dist/cjs/components/arkos-service-hook/index.js.map +0 -1
  312. package/dist/cjs/components/arkos-service-hook/reader.js +0 -30
  313. package/dist/cjs/components/arkos-service-hook/reader.js.map +0 -1
  314. package/dist/cjs/components/arkos-service-hook/types.js +0 -3
  315. package/dist/cjs/components/arkos-service-hook/types.js.map +0 -1
  316. package/dist/cjs/exports/auth/index.js +0 -6
  317. package/dist/cjs/exports/auth/index.js.map +0 -1
  318. package/dist/cjs/exports/config.js +0 -6
  319. package/dist/cjs/exports/config.js.map +0 -1
  320. package/dist/cjs/exports/controllers/index.js +0 -42
  321. package/dist/cjs/exports/controllers/index.js.map +0 -1
  322. package/dist/cjs/exports/error-handler/index.js +0 -11
  323. package/dist/cjs/exports/error-handler/index.js.map +0 -1
  324. package/dist/cjs/exports/index.js +0 -23
  325. package/dist/cjs/exports/index.js.map +0 -1
  326. package/dist/cjs/exports/middlewares/index.js +0 -7
  327. package/dist/cjs/exports/middlewares/index.js.map +0 -1
  328. package/dist/cjs/exports/prisma/index.js +0 -13
  329. package/dist/cjs/exports/prisma/index.js.map +0 -1
  330. package/dist/cjs/exports/services/index.js +0 -53
  331. package/dist/cjs/exports/services/index.js.map +0 -1
  332. package/dist/cjs/exports/utils/index.js +0 -26
  333. package/dist/cjs/exports/utils/index.js.map +0 -1
  334. package/dist/cjs/exports/validation/index.js +0 -11
  335. package/dist/cjs/exports/validation/index.js.map +0 -1
  336. package/dist/cjs/generated.js +0 -7
  337. package/dist/cjs/generated.js.map +0 -1
  338. package/dist/cjs/modules/auth/auth.controller.js +0 -254
  339. package/dist/cjs/modules/auth/auth.controller.js.map +0 -1
  340. package/dist/cjs/modules/auth/auth.router.js +0 -113
  341. package/dist/cjs/modules/auth/auth.router.js.map +0 -1
  342. package/dist/cjs/modules/auth/auth.service.js +0 -277
  343. package/dist/cjs/modules/auth/auth.service.js.map +0 -1
  344. package/dist/cjs/modules/auth/utils/auth-error-objects.js +0 -10
  345. package/dist/cjs/modules/auth/utils/auth-error-objects.js.map +0 -1
  346. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +0 -83
  347. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js.map +0 -1
  348. package/dist/cjs/modules/auth/utils/services/auth-action.service.js +0 -150
  349. package/dist/cjs/modules/auth/utils/services/auth-action.service.js.map +0 -1
  350. package/dist/cjs/modules/base/base.controller.js +0 -275
  351. package/dist/cjs/modules/base/base.controller.js.map +0 -1
  352. package/dist/cjs/modules/base/base.middlewares.js +0 -231
  353. package/dist/cjs/modules/base/base.middlewares.js.map +0 -1
  354. package/dist/cjs/modules/base/base.router.js +0 -112
  355. package/dist/cjs/modules/base/base.router.js.map +0 -1
  356. package/dist/cjs/modules/base/base.service.js +0 -432
  357. package/dist/cjs/modules/base/base.service.js.map +0 -1
  358. package/dist/cjs/modules/base/types/base.service.types.js +0 -3
  359. package/dist/cjs/modules/base/types/base.service.types.js.map +0 -1
  360. package/dist/cjs/modules/base/utils/error-prettifier.js +0 -188
  361. package/dist/cjs/modules/base/utils/error-prettifier.js.map +0 -1
  362. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +0 -49
  363. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js.map +0 -1
  364. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +0 -13
  365. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +0 -1
  366. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +0 -222
  367. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js.map +0 -1
  368. package/dist/cjs/modules/base/utils/router-validator.js +0 -13
  369. package/dist/cjs/modules/base/utils/router-validator.js.map +0 -1
  370. package/dist/cjs/modules/base/utils/service-hooks-manager.js +0 -19
  371. package/dist/cjs/modules/base/utils/service-hooks-manager.js.map +0 -1
  372. package/dist/cjs/modules/debugger/debugger.service.js +0 -59
  373. package/dist/cjs/modules/debugger/debugger.service.js.map +0 -1
  374. package/dist/cjs/modules/email/email.service.js +0 -106
  375. package/dist/cjs/modules/email/email.service.js.map +0 -1
  376. package/dist/cjs/modules/error-handler/error-handler.controller.js +0 -192
  377. package/dist/cjs/modules/error-handler/error-handler.controller.js.map +0 -1
  378. package/dist/cjs/modules/error-handler/utils/app-error.js +0 -28
  379. package/dist/cjs/modules/error-handler/utils/app-error.js.map +0 -1
  380. package/dist/cjs/modules/error-handler/utils/catch-async.js +0 -21
  381. package/dist/cjs/modules/error-handler/utils/catch-async.js.map +0 -1
  382. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +0 -218
  383. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +0 -1
  384. package/dist/cjs/modules/file-upload/file-upload.controller.js +0 -256
  385. package/dist/cjs/modules/file-upload/file-upload.controller.js.map +0 -1
  386. package/dist/cjs/modules/file-upload/file-upload.router.js +0 -80
  387. package/dist/cjs/modules/file-upload/file-upload.router.js.map +0 -1
  388. package/dist/cjs/modules/file-upload/file-upload.service.js +0 -343
  389. package/dist/cjs/modules/file-upload/file-upload.service.js.map +0 -1
  390. package/dist/cjs/modules/file-upload/utils/helpers/file-extensions.js +0 -134
  391. package/dist/cjs/modules/file-upload/utils/helpers/file-extensions.js.map +0 -1
  392. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +0 -100
  393. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js.map +0 -1
  394. package/dist/cjs/modules/swagger/swagger.router.js +0 -65
  395. package/dist/cjs/modules/swagger/swagger.router.js.map +0 -1
  396. package/dist/cjs/modules/swagger/utils/built-in-route-path-object-manager.js +0 -7
  397. package/dist/cjs/modules/swagger/utils/built-in-route-path-object-manager.js.map +0 -1
  398. package/dist/cjs/modules/swagger/utils/helpers/class-validator-to-json-schema.js +0 -53
  399. package/dist/cjs/modules/swagger/utils/helpers/class-validator-to-json-schema.js.map +0 -1
  400. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +0 -473
  401. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +0 -1
  402. package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +0 -491
  403. package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js.map +0 -1
  404. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +0 -73
  405. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +0 -1
  406. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +0 -37
  407. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +0 -1
  408. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +0 -61
  409. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +0 -1
  410. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +0 -31
  411. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +0 -1
  412. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +0 -49
  413. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js.map +0 -1
  414. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +0 -39
  415. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +0 -1
  416. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +0 -468
  417. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +0 -1
  418. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +0 -260
  419. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +0 -1
  420. package/dist/cjs/modules/swagger/utils/helpers/openapi-schema-converter.js +0 -331
  421. package/dist/cjs/modules/swagger/utils/helpers/openapi-schema-converter.js.map +0 -1
  422. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +0 -109
  423. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +0 -1
  424. package/dist/cjs/package.json +0 -3
  425. package/dist/cjs/server.js +0 -60
  426. package/dist/cjs/server.js.map +0 -1
  427. package/dist/cjs/types/arkos-prisma-input.js +0 -3
  428. package/dist/cjs/types/arkos-prisma-input.js.map +0 -1
  429. package/dist/cjs/types/arkos.js +0 -3
  430. package/dist/cjs/types/arkos.js.map +0 -1
  431. package/dist/cjs/types/auth.js +0 -3
  432. package/dist/cjs/types/auth.js.map +0 -1
  433. package/dist/cjs/types/index.js +0 -3
  434. package/dist/cjs/types/index.js.map +0 -1
  435. package/dist/cjs/types/new-arkos-config.js +0 -3
  436. package/dist/cjs/types/new-arkos-config.js.map +0 -1
  437. package/dist/cjs/types/router-config.js +0 -3
  438. package/dist/cjs/types/router-config.js.map +0 -1
  439. package/dist/cjs/utils/arkos-env.js +0 -9
  440. package/dist/cjs/utils/arkos-env.js.map +0 -1
  441. package/dist/cjs/utils/arkos-router/arkos-router-openapi-manager.js +0 -126
  442. package/dist/cjs/utils/arkos-router/arkos-router-openapi-manager.js.map +0 -1
  443. package/dist/cjs/utils/arkos-router/index.js +0 -253
  444. package/dist/cjs/utils/arkos-router/index.js.map +0 -1
  445. package/dist/cjs/utils/arkos-router/route-config-registry.js +0 -16
  446. package/dist/cjs/utils/arkos-router/route-config-registry.js.map +0 -1
  447. package/dist/cjs/utils/arkos-router/route-config-validator.js +0 -56
  448. package/dist/cjs/utils/arkos-router/route-config-validator.js.map +0 -1
  449. package/dist/cjs/utils/arkos-router/types/body-parser-config.js +0 -3
  450. package/dist/cjs/utils/arkos-router/types/body-parser-config.js.map +0 -1
  451. package/dist/cjs/utils/arkos-router/types/index.js +0 -3
  452. package/dist/cjs/utils/arkos-router/types/index.js.map +0 -1
  453. package/dist/cjs/utils/arkos-router/types/openapi-config.js +0 -3
  454. package/dist/cjs/utils/arkos-router/types/openapi-config.js.map +0 -1
  455. package/dist/cjs/utils/arkos-router/types/upload-config.js +0 -3
  456. package/dist/cjs/utils/arkos-router/types/upload-config.js.map +0 -1
  457. package/dist/cjs/utils/arkos-router/utils/helpers/index.js +0 -163
  458. package/dist/cjs/utils/arkos-router/utils/helpers/index.js.map +0 -1
  459. package/dist/cjs/utils/arkos-router/utils/helpers/upload-manager.js +0 -283
  460. package/dist/cjs/utils/arkos-router/utils/helpers/upload-manager.js.map +0 -1
  461. package/dist/cjs/utils/bundler.js +0 -163
  462. package/dist/cjs/utils/bundler.js.map +0 -1
  463. package/dist/cjs/utils/cli/build.js +0 -199
  464. package/dist/cjs/utils/cli/build.js.map +0 -1
  465. package/dist/cjs/utils/cli/dev.js +0 -128
  466. package/dist/cjs/utils/cli/dev.js.map +0 -1
  467. package/dist/cjs/utils/cli/export-auth-action.js +0 -79
  468. package/dist/cjs/utils/cli/export-auth-action.js.map +0 -1
  469. package/dist/cjs/utils/cli/generate.js +0 -229
  470. package/dist/cjs/utils/cli/generate.js.map +0 -1
  471. package/dist/cjs/utils/cli/index.js +0 -191
  472. package/dist/cjs/utils/cli/index.js.map +0 -1
  473. package/dist/cjs/utils/cli/prisma-generate.js +0 -112
  474. package/dist/cjs/utils/cli/prisma-generate.js.map +0 -1
  475. package/dist/cjs/utils/cli/start.js +0 -72
  476. package/dist/cjs/utils/cli/start.js.map +0 -1
  477. package/dist/cjs/utils/cli/utils/cli.helpers.js +0 -24
  478. package/dist/cjs/utils/cli/utils/cli.helpers.js.map +0 -1
  479. package/dist/cjs/utils/cli/utils/runtime-cli-commander.js +0 -115
  480. package/dist/cjs/utils/cli/utils/runtime-cli-commander.js.map +0 -1
  481. package/dist/cjs/utils/cli/utils/smart-fs-watcher.js +0 -73
  482. package/dist/cjs/utils/cli/utils/smart-fs-watcher.js.map +0 -1
  483. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +0 -550
  484. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +0 -1
  485. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -52
  486. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -1
  487. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-multiple-components.js +0 -139
  488. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-multiple-components.js.map +0 -1
  489. package/dist/cjs/utils/cli/utils/template-generator/templates/policy-template.js +0 -53
  490. package/dist/cjs/utils/cli/utils/template-generator/templates/policy-template.js.map +0 -1
  491. package/dist/cjs/utils/cli/utils/template-generator/templates/route-hook.template.js +0 -39
  492. package/dist/cjs/utils/cli/utils/template-generator/templates/route-hook.template.js.map +0 -1
  493. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js +0 -19
  494. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js.map +0 -1
  495. package/dist/cjs/utils/cli/utils/template-generator/templates/service-hook.template.js +0 -32
  496. package/dist/cjs/utils/cli/utils/template-generator/templates/service-hook.template.js.map +0 -1
  497. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js +0 -50
  498. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js.map +0 -1
  499. package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js +0 -351
  500. package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +0 -1
  501. package/dist/cjs/utils/cli/utils/template-generators.js +0 -52
  502. package/dist/cjs/utils/cli/utils/template-generators.js.map +0 -1
  503. package/dist/cjs/utils/cli/utils/watermark-stamper.js +0 -26
  504. package/dist/cjs/utils/cli/utils/watermark-stamper.js.map +0 -1
  505. package/dist/cjs/utils/define-config.js +0 -46
  506. package/dist/cjs/utils/define-config.js.map +0 -1
  507. package/dist/cjs/utils/dotenv.helpers.js +0 -52
  508. package/dist/cjs/utils/dotenv.helpers.js.map +0 -1
  509. package/dist/cjs/utils/dynamic-loader.js +0 -22
  510. package/dist/cjs/utils/dynamic-loader.js.map +0 -1
  511. package/dist/cjs/utils/expand-env.js +0 -72
  512. package/dist/cjs/utils/expand-env.js.map +0 -1
  513. package/dist/cjs/utils/features/api.features.js +0 -201
  514. package/dist/cjs/utils/features/api.features.js.map +0 -1
  515. package/dist/cjs/utils/features/port-and-host-allocator.js +0 -129
  516. package/dist/cjs/utils/features/port-and-host-allocator.js.map +0 -1
  517. package/dist/cjs/utils/helpers/api.features.helpers.js +0 -327
  518. package/dist/cjs/utils/helpers/api.features.helpers.js.map +0 -1
  519. package/dist/cjs/utils/helpers/arkos-config.helpers.js +0 -86
  520. package/dist/cjs/utils/helpers/arkos-config.helpers.js.map +0 -1
  521. package/dist/cjs/utils/helpers/change-case.helpers.js +0 -177
  522. package/dist/cjs/utils/helpers/change-case.helpers.js.map +0 -1
  523. package/dist/cjs/utils/helpers/deepmerge.helper.js +0 -115
  524. package/dist/cjs/utils/helpers/deepmerge.helper.js.map +0 -1
  525. package/dist/cjs/utils/helpers/exit-error.js +0 -12
  526. package/dist/cjs/utils/helpers/exit-error.js.map +0 -1
  527. package/dist/cjs/utils/helpers/fs.helpers.js +0 -60
  528. package/dist/cjs/utils/helpers/fs.helpers.js.map +0 -1
  529. package/dist/cjs/utils/helpers/global.helpers.js +0 -105
  530. package/dist/cjs/utils/helpers/global.helpers.js.map +0 -1
  531. package/dist/cjs/utils/helpers/prisma.helpers.js +0 -53
  532. package/dist/cjs/utils/helpers/prisma.helpers.js.map +0 -1
  533. package/dist/cjs/utils/helpers/query-parser.helpers.js +0 -69
  534. package/dist/cjs/utils/helpers/query-parser.helpers.js.map +0 -1
  535. package/dist/cjs/utils/helpers/routers.helpers.js +0 -36
  536. package/dist/cjs/utils/helpers/routers.helpers.js.map +0 -1
  537. package/dist/cjs/utils/helpers/text.helpers.js +0 -28
  538. package/dist/cjs/utils/helpers/text.helpers.js.map +0 -1
  539. package/dist/cjs/utils/initialize-app.js +0 -55
  540. package/dist/cjs/utils/initialize-app.js.map +0 -1
  541. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +0 -437
  542. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js.map +0 -1
  543. package/dist/cjs/utils/prisma/prisma-schema-parser.js +0 -360
  544. package/dist/cjs/utils/prisma/prisma-schema-parser.js.map +0 -1
  545. package/dist/cjs/utils/prisma/types.js +0 -3
  546. package/dist/cjs/utils/prisma/types.js.map +0 -1
  547. package/dist/cjs/utils/remove-dir.js +0 -14
  548. package/dist/cjs/utils/remove-dir.js.map +0 -1
  549. package/dist/cjs/utils/setup-app.js +0 -119
  550. package/dist/cjs/utils/setup-app.js.map +0 -1
  551. package/dist/cjs/utils/sheu.js +0 -131
  552. package/dist/cjs/utils/sheu.js.map +0 -1
  553. package/dist/cjs/utils/validate-dto.js +0 -19
  554. package/dist/cjs/utils/validate-dto.js.map +0 -1
  555. package/dist/cjs/utils/validate-schema.js +0 -75
  556. package/dist/cjs/utils/validate-schema.js.map +0 -1
  557. package/dist/esm/components/arkos-loadable-translator/index.js +0 -138
  558. package/dist/esm/components/arkos-loadable-translator/index.js.map +0 -1
  559. package/dist/esm/components/arkos-service-hook/index.js +0 -32
  560. package/dist/esm/components/arkos-service-hook/index.js.map +0 -1
  561. package/dist/esm/components/arkos-service-hook/reader.js +0 -24
  562. package/dist/esm/components/arkos-service-hook/reader.js.map +0 -1
  563. package/dist/esm/components/arkos-service-hook/types.js +0 -2
  564. package/dist/esm/components/arkos-service-hook/types.js.map +0 -1
  565. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +0 -10
  566. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +0 -1
  567. package/dist/esm/modules/base/utils/service-hooks-manager.js +0 -17
  568. package/dist/esm/modules/base/utils/service-hooks-manager.js.map +0 -1
  569. package/dist/esm/modules/swagger/utils/built-in-route-path-object-manager.js +0 -5
  570. package/dist/esm/modules/swagger/utils/built-in-route-path-object-manager.js.map +0 -1
  571. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +0 -469
  572. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +0 -1
  573. package/dist/esm/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +0 -485
  574. package/dist/esm/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js.map +0 -1
  575. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +0 -34
  576. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +0 -1
  577. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +0 -55
  578. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +0 -1
  579. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +0 -25
  580. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +0 -1
  581. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +0 -46
  582. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js.map +0 -1
  583. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +0 -33
  584. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +0 -1
  585. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +0 -462
  586. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +0 -1
  587. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +0 -255
  588. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +0 -1
  589. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +0 -98
  590. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +0 -1
  591. package/dist/esm/utils/cli/utils/template-generator/templates/route-hook.template.js +0 -36
  592. package/dist/esm/utils/cli/utils/template-generator/templates/route-hook.template.js.map +0 -1
  593. package/dist/esm/utils/cli/utils/template-generator/templates/service-hook.template.js +0 -29
  594. package/dist/esm/utils/cli/utils/template-generator/templates/service-hook.template.js.map +0 -1
  595. package/dist/types/components/arkos-loadable-translator/index.d.ts +0 -53
  596. package/dist/types/components/arkos-service-hook/index.d.ts +0 -41
  597. package/dist/types/components/arkos-service-hook/reader.d.ts +0 -35
  598. package/dist/types/components/arkos-service-hook/types.d.ts +0 -240
  599. package/dist/types/modules/base/utils/helpers/base.router.helpers.d.ts +0 -3
  600. package/dist/types/modules/base/utils/service-hooks-manager.d.ts +0 -10
  601. package/dist/types/modules/swagger/utils/built-in-route-path-object-manager.d.ts +0 -4
  602. package/dist/types/modules/swagger/utils/helpers/get-authentication-json-schema-paths.d.ts +0 -5
  603. package/dist/types/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.d.ts +0 -3
  604. package/dist/types/modules/swagger/utils/helpers/get-system-json-schema-paths.d.ts +0 -2
  605. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.d.ts +0 -1
  606. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.d.ts +0 -1
  607. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.d.ts +0 -4
  608. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.d.ts +0 -1
  609. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.d.ts +0 -2
  610. package/dist/types/modules/swagger/utils/helpers/missing-json-schemas-generator.d.ts +0 -76
  611. package/dist/types/modules/swagger/utils/helpers/swagger.router.helpers.d.ts +0 -19
  612. package/dist/types/utils/cli/utils/template-generator/templates/route-hook.template.d.ts +0 -2
  613. package/dist/types/utils/cli/utils/template-generator/templates/service-hook.template.d.ts +0 -2
@@ -1,4 +1,5 @@
1
- class RouteConfigRegistry {
1
+ export default class RouteConfigRegistry {
2
+ static configs = new WeakMap();
2
3
  static register(handler, config, method) {
3
4
  this.configs.set(handler, { ...config, method });
4
5
  }
@@ -9,6 +10,4 @@ class RouteConfigRegistry {
9
10
  return this.configs;
10
11
  }
11
12
  }
12
- RouteConfigRegistry.configs = new WeakMap();
13
- export default RouteConfigRegistry;
14
13
  //# sourceMappingURL=route-config-registry.js.map
@@ -1 +1 @@
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;eAJe,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
+ {"version":3,"file":"route-config-registry.js","sourceRoot":"","sources":["../../../../src/utils/arkos-router/route-config-registry.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAC9B,MAAM,CAAC,OAAO,GAAG,IAAI,OAAO,EAGjC,CAAC;IAEJ,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","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 +1 @@
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
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/utils/arkos-router/types/index.ts"],"names":[],"mappings":"","sourcesContent":["import {\n Application,\n IRoute,\n IRouter,\n IRouterHandler,\n IRouterMatcher,\n Locals,\n} from \"express\";\nimport { z, ZodType } 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 {\n ArkosAnyRequestHandler,\n ArkosErrorRequestHandler,\n ArkosRequestHandler,\n} from \"../../../types\";\nimport compression from \"compression\";\nimport { OpenApiConfig } from \"./openapi-config\";\nimport { UploadConfig } from \"./upload-config\";\nimport { BodyParserConfig } from \"./body-parser-config\";\nimport { ArkosRouterOptions } from \"..\";\nimport { Validator } from \"../../../types/validation/validator\";\nimport { ArkosLoadable } from \"../../../exports\";\n\nexport type ArkosUseConfig = Pick<\n ArkosRouteConfig,\n | \"authentication\"\n | \"rateLimit\"\n | \"compression\"\n | \"queryParser\"\n | \"bodyParser\"\n | \"disabled\"\n> & {\n path?: PathParams; // optional unlike ArkosRouteConfig where path is required\n};\n\ntype InferValidationType<T, Fallback> = T extends ZodType\n ? T\n : T extends new (...args: any[]) => infer I\n ? I\n : Fallback;\n\nexport type PathParams = string | RegExp | Array<string | RegExp>;\n\nexport type InternalIArkosRouter = IArkosRouter & {\n _arkos: {\n options?: ArkosRouterOptions;\n routes: Array<{\n handler: ArkosAnyRequestHandler;\n config: ArkosRouteConfig;\n method: string;\n }>;\n };\n};\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 IArkosRouterMethodHandler<T> = IRouterHandler<T> &\n IRouterMatcher<T> & {\n <\n TQuery extends Validator = any,\n TBody extends Validator = any,\n TParams extends Validator = any,\n >(\n config: ArkosRouteConfig<TQuery, TBody, TParams>,\n ...handlers: Array<\n | ArkosRequestHandler<\n InferValidationType<TParams, Record<string, any>>,\n any,\n InferValidationType<TBody, any>,\n InferValidationType<TQuery, qs.ParsedQs>,\n any\n >\n | Array<\n ArkosRequestHandler<\n InferValidationType<TParams, Record<string, string>>,\n any,\n InferValidationType<TBody, any>,\n InferValidationType<TQuery, qs.ParsedQs>,\n any\n >\n >\n >\n ): T;\n <\n TQuery extends Validator = any,\n TBody extends Validator = any,\n TParams extends Validator = any,\n >(\n config: ArkosRouteConfig<TQuery, TBody, TParams> | PathParams,\n ...handlers: Array<\n | ArkosAnyRequestHandler<\n InferValidationType<TParams, Record<string, string>>,\n any,\n InferValidationType<TBody, any>,\n InferValidationType<TQuery, qs.ParsedQs>,\n any\n >\n | Array<\n | ArkosAnyRequestHandler<\n InferValidationType<TParams, Record<string, string>>,\n any,\n InferValidationType<TBody, any>,\n InferValidationType<TQuery, qs.ParsedQs>,\n any\n >\n | Array<\n ArkosErrorRequestHandler<\n InferValidationType<TParams, Record<string, string>>,\n any,\n InferValidationType<TBody, any>,\n InferValidationType<TQuery, qs.ParsedQs>,\n any\n >\n >\n >\n >\n ): T;\n\n <\n TQuery extends Validator = any,\n TBody extends Validator = any,\n TParams extends Validator = any,\n >(\n config: ArkosRouteConfig<TQuery, TBody, TParams>,\n subApplication: Application\n ): T;\n };\n\nexport type ArkosRouteMethodHandler<T> = {\n <\n TQuery extends Validator = any,\n TBody extends Validator = any,\n TParams extends Validator = any,\n >(\n config: ArkosAnyRequestHandler | Omit<ArkosRouteConfig, \"path\">,\n ...handlers: Array<\n ArkosAnyRequestHandler<\n InferValidationType<TParams, Record<string, string>>,\n any,\n InferValidationType<TBody, any>,\n InferValidationType<TQuery, qs.ParsedQs>,\n Locals\n >\n >\n ): T;\n <\n TQuery extends Validator = any,\n TBody extends Validator = any,\n TParams extends Validator = any,\n >(\n config: Omit<ArkosRouteConfig<TQuery, TBody, TParams>, \"path\">,\n ...handlers: Array<\n | ArkosAnyRequestHandler<\n InferValidationType<TParams, Record<string, string>>,\n any,\n InferValidationType<TBody, any>,\n InferValidationType<TQuery, qs.ParsedQs>,\n Locals\n >\n | Array<\n ArkosRequestHandler<\n InferValidationType<TParams, Record<string, string>>,\n any,\n InferValidationType<TBody, any>,\n InferValidationType<TQuery, qs.ParsedQs>,\n Locals\n >\n >\n >\n ): T;\n <\n TQuery extends Validator = any,\n TBody extends Validator = any,\n TParams extends Validator = any,\n >(\n config: Omit<ArkosRouteConfig<TQuery, TBody, TParams>, \"path\">,\n ...handlers: Array<\n | ArkosAnyRequestHandler<\n InferValidationType<TParams, Record<string, string>>,\n any,\n InferValidationType<TBody, any>,\n InferValidationType<TQuery, qs.ParsedQs>,\n Locals\n >\n | Array<\n ArkosAnyRequestHandler<\n InferValidationType<TParams, Record<string, string>>,\n any,\n InferValidationType<TBody, any>,\n InferValidationType<TQuery, qs.ParsedQs>,\n Locals\n >\n >\n >\n ): T;\n};\n\n/**\n * Handler function for `use` that accepts route configuration and middleware handlers.\n *\n * @param {ArkosUseConfig} config - The use configuration object or path.\n * @param {...ArkosAnyRequestHandler} handlers - Middleware handlers.\n * @returns {T} The router instance.\n */\n\nexport type UseMethodHandler<T> = IRouterHandler<T> &\n IRouterMatcher<T> & {\n (\n config: ArkosUseConfig,\n ...handlers: Array<ArkosRequestHandler | Array<ArkosRequestHandler>>\n ): T;\n (\n config: ArkosUseConfig,\n ...handlers: Array<\n ArkosErrorRequestHandler | Array<ArkosErrorRequestHandler>\n >\n ): T;\n (\n config: ArkosUseConfig,\n ...handlers: Array<\n | ArkosRequestHandler\n | ArkosErrorRequestHandler\n | Array<ArkosRequestHandler | ArkosErrorRequestHandler>\n >\n ): T;\n (\n ...handlers: Array<\n | ArkosRequestHandler\n | ArkosErrorRequestHandler\n | Array<ArkosRequestHandler | ArkosErrorRequestHandler>\n >\n ): T;\n };\n\nexport interface IArkosRoute 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: IArkosRouterMethodHandler<this>;\n /** POST method handler with route configuration support */\n post: IArkosRouterMethodHandler<this>;\n /** PUT method handler with route configuration support */\n put: IArkosRouterMethodHandler<this>;\n /** PATCH method handler with route configuration support */\n patch: IArkosRouterMethodHandler<this>;\n /** DELETE method handler with route configuration support */\n delete: IArkosRouterMethodHandler<this>;\n /** OPTIONS method handler with route configuration support */\n options: IArkosRouterMethodHandler<this>;\n /** HEAD method handler with route configuration support */\n head: IArkosRouterMethodHandler<this>;\n // /** TRACE method handler with route configuration support */\n trace: IArkosRouterMethodHandler<this>;\n /** ALL methods handler with route configuration support */\n all: IArkosRouterMethodHandler<this>;\n use: UseMethodHandler<this>;\n route<T extends string>(prefix: T): IArkosRoute;\n route(prefix: PathParams): IArkosRoute;\n /**\n * Loads Arkos-specific instances into the app for internal usage.\n * Unlike use(), load() has no order — it simply makes the loaded\n * data available for Arkos to apply where needed.\n */\n load(...items: ArkosLoadable[]): this;\n /**\n * Loads Arkos-specific instances into the app for internal usage.\n * Unlike use(), load() has no order — it simply makes the loaded\n * data available for Arkos to apply where needed.\n */\n load(items: ArkosLoadable[] | ArkosLoadable): this;\n}\n\n/**\n * Configuration object for defining routes in Arkos.js.\n */\nexport type ArkosRouteConfig<\n TQuery extends Validator = any,\n TBody extends Validator = any,\n TParams extends Validator = any,\n> = {\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 * - Set to `null` to forbidden all request inputs.\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 | null\n | {\n query?: TQuery;\n body?: TBody;\n params?: TParams;\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 +1 @@
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
+ {"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\";\nimport { JsonSchema } from \"../../prisma/types\";\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 | JsonSchema;\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 */\nexport type 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 +1 @@
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"]}
1
+ {"version":3,"file":"upload-config.js","sourceRoot":"","sources":["../../../../../src/utils/arkos-router/types/upload-config.ts"],"names":[],"mappings":"","sourcesContent":["import { ArkosFile } from \"../../../exports\";\n\nexport 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. Supports bracket notation, including nested array paths (e.g. \"banners[][image]\") */\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. Supports bracket notation, including nested array paths (e.g. \"banners[][images]\") */\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 * Each field entry is a full single or array upload config with a `name`\n * property. Field names support bracket notation, including nested array\n * paths (e.g. \"banners[][images]\").\n *\n * @example\n * uploads: {\n * type: \"fields\",\n * fields: [\n * { name: \"avatar\", type: \"single\", uploadDir: \"images\" },\n * { name: \"resume\", type: \"single\", uploadDir: \"documents\" },\n * { name: \"banners[][images]\", type: \"array\", maxCount: 5, uploadDir: \"banners\" }\n * ]\n * }\n */\n | ({\n type: \"fields\";\n /** Array of field configurations describing multipart form fields to process */\n fields: UploadConfigFieldEntry[];\n } & Pick<ArkosRouterBaseUploadConfig, \"deleteOnError\">)\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 * A single field entry inside a `fields` upload config.\n * Each entry is a full single or array upload config with an additional\n * `name` property identifying the form field.\n *\n * Field names support bracket notation, including nested array paths\n * (e.g. \"banners[][images]\"). For nested array paths, multer validation\n * is bypassed and constraints (allowedFileTypes, maxSize, minCount, maxCount)\n * are enforced per group after upload.\n */\nexport type UploadConfigFieldEntry =\n /**\n * A single-file field entry.\n *\n * @example\n * { name: \"avatar\", type: \"single\", uploadDir: \"images\", required: true }\n *\n * @example\n * // nested array path — one image per banner\n * { name: \"banners[][image]\", type: \"single\", uploadDir: \"banners\" }\n */\n | ({\n /** Name of the form field. Supports bracket notation including nested array paths. */\n name: string;\n type: \"single\";\n } & Omit<ArkosRouterBaseUploadConfig, \"deleteOnError\">)\n /**\n * A multi-file field entry.\n *\n * @example\n * { name: \"gallery\", type: \"array\", maxCount: 6, uploadDir: \"gallery\" }\n *\n * @example\n * // nested array path — multiple images per banner, min 1 max 5\n * { name: \"banners[][images]\", type: \"array\", minCount: 1, maxCount: 5, uploadDir: \"banners\" }\n */\n | ({\n /** Name of the form field. Supports bracket notation including nested array paths. */\n name: string;\n type?: \"array\";\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 } & Omit<ArkosRouterBaseUploadConfig, \"deleteOnError\">); /**\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?:\n | \"pathname\"\n | \"url\"\n | \"file\"\n | false\n | ((file: ArkosFile) => any);\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"]}
@@ -0,0 +1,188 @@
1
+ import RouteConfigValidator from "../../route-config-validator.js";
2
+ import { applyPrefix, getMiddlewareStack } from "./index.js";
3
+ import { getUserFileExtension } from "../../../helpers/fs.helpers.js";
4
+ import { getArkosConfig } from "../../../../server.js";
5
+ import RouteConfigRegistry from "../../route-config-registry.js";
6
+ import { catchAsync } from "../../../../exports/error-handler/index.js";
7
+ import deepmerge from "../../../helpers/deepmerge.helper.js";
8
+ import ExitError from "../../../helpers/exit-error.js";
9
+ import uploadManager from "./upload-manager.js";
10
+ import loadableRegistry from "../../../../components/arkos-loadable-registry/index.js";
11
+ import { state } from "../../../../app.js";
12
+ import { docsLink } from "../../../../app.js";
13
+ const flattenHandlers = (arr) => {
14
+ return arr.reduce((flat, item) => {
15
+ return flat.concat(Array.isArray(item) ? flattenHandlers(item) : item);
16
+ }, []);
17
+ };
18
+ export function applyArkosRouterProxy(target, options, component = "router") {
19
+ target._arkos = {
20
+ options,
21
+ routes: [],
22
+ };
23
+ target.load = (...items) => {
24
+ if (state !== "idle")
25
+ throw ExitError(`app.load() must be called before app.${state === "listening" ? "listen" : "build"}(), see ${docsLink}`);
26
+ if (Array.isArray(items[0]))
27
+ items = items[0];
28
+ items = Array.isArray(items) ? items : [items];
29
+ items.forEach((item) => loadableRegistry.register(item));
30
+ return target;
31
+ };
32
+ return new Proxy(target, {
33
+ get(target, prop, receiver) {
34
+ const originalMethod = Reflect.get(target, prop, receiver);
35
+ const httpMethods = [
36
+ "get",
37
+ "post",
38
+ "put",
39
+ "patch",
40
+ "delete",
41
+ "all",
42
+ "head",
43
+ "trace",
44
+ "options",
45
+ ];
46
+ if (prop === "use") {
47
+ return function (config, ...handlers) {
48
+ if (typeof config === "function" || Array.isArray(config)) {
49
+ handlers = [config, ...handlers];
50
+ config = {};
51
+ }
52
+ else if (!config ||
53
+ typeof config !== "object" ||
54
+ typeof config === "string" ||
55
+ config instanceof RegExp) {
56
+ throw ExitError(`First argument of ${component}.use() must be a valid ArkosRouteConfig object or a middleware function, but received ${typeof config === "object" ? JSON.stringify(config, null, 2) : config}.`);
57
+ }
58
+ if (config.disabled)
59
+ return;
60
+ const useConfig = config;
61
+ const path = applyPrefix(options?.prefix, useConfig.path ?? "/");
62
+ const arkosConfig = getArkosConfig();
63
+ const authenticationConfig = arkosConfig.authentication;
64
+ if (useConfig.authentication && !authenticationConfig?.mode)
65
+ throw ExitError(`Trying to authenticate route ${path ? `${path}` : ""} without choosing an authentication mode under arkos.config.${getUserFileExtension()}
66
+
67
+ For further help see https://www.arkosjs.com/docs/core-concepts/authentication/setup.`);
68
+ const flatHandlers = flattenHandlers(handlers);
69
+ handlers = flatHandlers.map((handler) => {
70
+ if (!handler || typeof handler !== "function")
71
+ throw ExitError(`Wrong value for handler in route ${path}, recevied ${handler}.`);
72
+ return "param" in handler
73
+ ? handler
74
+ : catchAsync(handler, {
75
+ type: handler.length > 3 ? "error" : "normal",
76
+ });
77
+ });
78
+ const middlewareStack = getMiddlewareStack(useConfig);
79
+ const allHandlers = [...middlewareStack, ...handlers];
80
+ return originalMethod.call(target, path, ...allHandlers);
81
+ };
82
+ }
83
+ if (prop === "route") {
84
+ return function (path) {
85
+ const routeChain = {};
86
+ httpMethods.forEach((method) => {
87
+ routeChain[method] = function (config, ...handlers) {
88
+ if (typeof config === "function" || Array.isArray(config))
89
+ throw ExitError(`First argument of ${component}.route("${path}").${method}() must be a valid ArkosRouteConfig object without path field, but received ${typeof config === "object" ? JSON.stringify(config, null, 2) : config}`);
90
+ const fullConfig = {
91
+ ...config,
92
+ path,
93
+ };
94
+ receiver[method](fullConfig, ...handlers);
95
+ return routeChain;
96
+ };
97
+ });
98
+ return routeChain;
99
+ };
100
+ }
101
+ if (httpMethods.includes(prop)) {
102
+ return function (config, ...handlers) {
103
+ if (!config || !RouteConfigValidator.isArkosRouteConfig(config))
104
+ throw ExitError(`First argument of ${component}.${prop}() must be a valid ArkosRouteConfig object with path field, but recevied ${typeof config === "object" ? JSON.stringify(config, null, 2) : config}`);
105
+ if (config?.disabled)
106
+ return;
107
+ const path = applyPrefix(options?.prefix, config.path);
108
+ config = {
109
+ ...config,
110
+ ...(options?.openapi
111
+ ? {
112
+ experimental: {
113
+ ...config?.experimental,
114
+ openapi: deepmerge(options.openapi || {}, config?.experimental?.openapi || {}),
115
+ },
116
+ }
117
+ : {}),
118
+ path,
119
+ };
120
+ config = {
121
+ ...config,
122
+ ...(options?.uploads
123
+ ? {
124
+ experimental: {
125
+ ...config?.experimental,
126
+ ...(config?.experimental?.uploads
127
+ ? {
128
+ uploads: deepmerge(options.uploads, config.experimental.uploads),
129
+ }
130
+ : {}),
131
+ },
132
+ }
133
+ : {}),
134
+ path,
135
+ };
136
+ if ([null, undefined].includes(path))
137
+ throw new Error("Please pass valid value for path field to use in your route");
138
+ const method = prop;
139
+ const UndefinedHandlerError = (handler) => ExitError(`Wrong value for handler in route ${method.toUpperCase()} ${path}, recevied ${handler}.`);
140
+ if (handlers.length > 0) {
141
+ const flatHandlers = flattenHandlers(handlers);
142
+ handlers = flatHandlers.map((handler) => {
143
+ if (!handler || typeof handler !== "function")
144
+ throw UndefinedHandlerError(handler);
145
+ return catchAsync(handler, {
146
+ type: handler.length > 3 ? "error" : "normal",
147
+ });
148
+ });
149
+ const finalHandler = handlers[handlers.length - 1];
150
+ RouteConfigRegistry.register(finalHandler, config, method);
151
+ target._arkos.routes.push({
152
+ handler: finalHandler,
153
+ config,
154
+ method,
155
+ });
156
+ }
157
+ const arkosConfig = getArkosConfig();
158
+ const validationConfig = arkosConfig.validation;
159
+ const authenticationConfig = arkosConfig.authentication;
160
+ const strictValidation = validationConfig?.strict;
161
+ const route = `${method.toUpperCase()} ${path}`;
162
+ if (strictValidation &&
163
+ (!("validation" in config) ||
164
+ ("validation" in config &&
165
+ !config.validation &&
166
+ config.validation !== undefined)))
167
+ throw ExitError("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.");
168
+ if (!validationConfig?.resolver &&
169
+ Object.keys(config.validation || {}).length > 0)
170
+ throw ExitError(`Trying to pass validators into route ${route} config validation option without choosing a validation resolver under arkos.init({ validation: { resolver: '' } })`);
171
+ if (config.authentication && !authenticationConfig?.mode)
172
+ throw ExitError(`Trying to authenticate route ${route} without choosing an authentication mode under arkos.config.${getUserFileExtension()}
173
+
174
+ For further help see https://www.arkosjs.com/docs/core-concepts/authentication/setup.`);
175
+ handlers = [...getMiddlewareStack(config), ...handlers];
176
+ if (handlers.length === 0)
177
+ throw ExitError(`No handlers provided for route ${method.toUpperCase()} ${path}.`);
178
+ if (config.experimental?.uploads &&
179
+ config.experimental.uploads.deleteOnError !== false)
180
+ handlers.push(catchAsync(uploadManager.handleFileCleanup(config.experimental.uploads), { type: "error" }));
181
+ return originalMethod.call(target, path, ...handlers);
182
+ };
183
+ }
184
+ return originalMethod;
185
+ },
186
+ });
187
+ }
188
+ //# sourceMappingURL=apply-arkos-router-proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-arkos-router-proxy.js","sourceRoot":"","sources":["../../../../../../src/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.ts"],"names":[],"mappings":"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","sourcesContent":["import { IRouter, RouterOptions } from \"express\";\nimport {\n ArkosRouteConfig,\n ArkosUseConfig,\n IArkosRoute,\n IArkosRouter,\n InternalIArkosRouter,\n PathParams,\n} from \"../../types\";\nimport RouteConfigValidator from \"../../route-config-validator\";\nimport { applyPrefix, getMiddlewareStack } from \".\";\nimport { getUserFileExtension } from \"../../../helpers/fs.helpers\";\nimport { getArkosConfig } from \"../../../../server\";\nimport RouteConfigRegistry from \"../../route-config-registry\";\nimport { catchAsync } from \"../../../../exports/error-handler\";\nimport deepmerge from \"../../../helpers/deepmerge.helper\";\nimport ExitError from \"../../../helpers/exit-error\";\nimport uploadManager from \"./upload-manager\";\nimport { ArkosAnyRequestHandler } from \"../../../../types\";\nimport { ArkosRouterOptions } from \"../..\";\nimport { UploadConfig } from \"../../types/upload-config\";\nimport { Arkos, ArkosLoadable } from \"../../../../types/arkos\";\nimport { Express } from \"express\";\nimport loadableRegistry from \"../../../../components/arkos-loadable-registry\";\nimport { state } from \"../../../../app\";\nimport { docsLink } from \"../../../../app\";\n\nconst flattenHandlers = (arr: any[]): ArkosAnyRequestHandler[] => {\n return arr.reduce((flat, item) => {\n return flat.concat(Array.isArray(item) ? flattenHandlers(item) : item);\n }, []);\n};\n\nexport function applyArkosRouterProxy<T extends Express | IRouter>(\n target: T,\n options?: RouterOptions & ArkosRouterOptions,\n component: \"app\" | \"router\" = \"router\"\n): T extends Express ? Arkos : IArkosRouter {\n (target as InternalIArkosRouter)._arkos = {\n options,\n routes: [],\n };\n\n (target as any).load = (...items: ArkosLoadable[]) => {\n if (state !== \"idle\")\n throw ExitError(\n `app.load() must be called before app.${state === \"listening\" ? \"listen\" : \"build\"}(), see ${docsLink}`\n );\n\n if (Array.isArray(items[0])) items = items[0];\n items = Array.isArray(items) ? items : [items];\n\n items.forEach((item) => loadableRegistry.register(item));\n return target;\n };\n\n return new Proxy(target as any, {\n get(target, prop, receiver) {\n const originalMethod = Reflect.get(target, prop, receiver) as Function;\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 === \"use\") {\n return function(\n config: ArkosUseConfig | PathParams | ArkosAnyRequestHandler,\n ...handlers: ArkosAnyRequestHandler[]\n ) {\n // normalize function/router to ArkosUseConfig\n if (typeof config === \"function\" || Array.isArray(config)) {\n handlers = [config as ArkosAnyRequestHandler, ...handlers];\n config = {} as ArkosUseConfig;\n } else if (\n !config ||\n typeof config !== \"object\" ||\n typeof config === \"string\" ||\n config instanceof RegExp\n ) {\n throw ExitError(\n `First argument of ${component}.use() must be a valid ArkosRouteConfig object or a middleware function, but received ${typeof config === \"object\" ? JSON.stringify(config, null, 2) : config}.`\n );\n }\n\n if ((config as ArkosUseConfig).disabled) return;\n\n const useConfig = config as ArkosUseConfig;\n const path = applyPrefix(options?.prefix, useConfig.path ?? \"/\");\n\n const arkosConfig = getArkosConfig();\n const authenticationConfig = arkosConfig.authentication;\n\n if (useConfig.authentication && !authenticationConfig?.mode)\n throw ExitError(\n `Trying to authenticate route ${path ? `${path}` : \"\"} without choosing an authentication mode under arkos.config.${getUserFileExtension()}\n\nFor further help see https://www.arkosjs.com/docs/core-concepts/authentication/setup.`\n );\n\n const flatHandlers = flattenHandlers(handlers);\n\n handlers = flatHandlers.map((handler: ArkosAnyRequestHandler) => {\n if (!handler || typeof handler !== \"function\")\n throw ExitError(\n `Wrong value for handler in route ${path}, recevied ${handler}.`\n );\n\n return \"param\" in handler\n ? handler\n : catchAsync(handler, {\n type: handler.length > 3 ? \"error\" : \"normal\",\n });\n });\n\n const middlewareStack = getMiddlewareStack(useConfig);\n const allHandlers = [...middlewareStack, ...handlers];\n\n return originalMethod.call(target, path, ...allHandlers);\n };\n }\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 if (typeof config === \"function\" || Array.isArray(config))\n throw ExitError(\n `First argument of ${component}.route(\"${path}\").${method}() must be a valid ArkosRouteConfig object without path field, but received ${typeof config === \"object\" ? JSON.stringify(config, null, 2) : config}`\n );\n\n const fullConfig: ArkosRouteConfig = {\n ...config,\n path,\n };\n\n receiver[method](fullConfig, ...handlers);\n return routeChain as IArkosRoute;\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 || !RouteConfigValidator.isArkosRouteConfig(config))\n throw ExitError(\n `First argument of ${component}.${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 if (config?.disabled) return;\n\n const path = applyPrefix(options?.prefix, config.path);\n\n config = {\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 config = {\n ...config,\n ...(options?.uploads\n ? {\n experimental: {\n ...config?.experimental,\n ...((config?.experimental?.uploads\n ? {\n uploads: deepmerge(\n options.uploads,\n config.experimental.uploads\n ),\n }\n : {}) as UploadConfig),\n },\n }\n : {}),\n path,\n };\n\n if ([null, undefined].includes(path as any))\n throw new 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 ExitError(\n `Wrong value for handler in route ${method.toUpperCase()} ${path}, recevied ${handler}.`\n );\n\n if (handlers.length > 0) {\n const flatHandlers = flattenHandlers(handlers);\n\n handlers = flatHandlers.map((handler: ArkosAnyRequestHandler) => {\n if (!handler || typeof handler !== \"function\")\n throw UndefinedHandlerError(handler);\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 (target as InternalIArkosRouter)._arkos.routes.push({\n handler: finalHandler,\n config,\n method,\n });\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 ExitError(\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 ExitError(\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 ExitError(\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/setup.`\n );\n\n handlers = [...getMiddlewareStack(config), ...handlers];\n\n if (handlers.length === 0)\n throw ExitError(\n `No handlers provided for route ${method.toUpperCase()} ${path}.`\n );\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 });\n}\n"]}
@@ -1,59 +1,112 @@
1
1
  import rateLimit from "express-rate-limit";
2
2
  import authService from "../../../../modules/auth/auth.service.js";
3
3
  import { validateRequestInputs } from "../../../../modules/base/base.middlewares.js";
4
- import RouteConfigRegistry from "../../route-config-registry.js";
5
4
  import express from "express";
6
5
  import compression from "compression";
7
6
  import { queryParser } from "../../../helpers/query-parser.helpers.js";
8
7
  import uploadManager from "./upload-manager.js";
9
8
  import multer from "multer";
10
9
  import { catchAsync } from "../../../../exports/error-handler/index.js";
11
- export function extractArkosRoutes(app, basePath = "") {
10
+ import RouteConfigRegistry from "../../route-config-registry.js";
11
+ export function extractArkosRoutes(app, basePath = "", inheritedRouteOptions) {
12
+ if (inheritedRouteOptions &&
13
+ Object.keys(inheritedRouteOptions).length === 0)
14
+ inheritedRouteOptions = undefined;
12
15
  const routes = [];
13
- function extractFromStack(stack, prefix = "") {
14
- stack.forEach((layer) => {
16
+ function extractFromStack(stack, prefix = "", inheritedRouteOptions) {
17
+ if (!stack || !Array.isArray(stack))
18
+ return;
19
+ for (const layer of stack) {
15
20
  if (layer.route) {
16
- const fullPath = prefix + layer.route.path;
17
- const methods = Object.keys(layer.route.methods);
18
- methods.forEach((method) => {
21
+ const fullPath = joinPaths(prefix, layer.route.path);
22
+ const methods = Object.keys(layer.route.methods || {});
23
+ for (const method of methods) {
19
24
  const handlers = layer.route.stack || [];
20
- let config;
25
+ let routeConfig = null;
26
+ let routeOptions = inheritedRouteOptions;
21
27
  for (const handler of handlers) {
22
- const foundConfig = RouteConfigRegistry.get(handler.handle);
23
- if (foundConfig) {
24
- config = foundConfig;
28
+ const registryConfig = RouteConfigRegistry.get(handler.handle);
29
+ if (registryConfig) {
30
+ routeConfig = registryConfig;
25
31
  routes.push({
26
32
  path: fullPath,
27
33
  method: method.toUpperCase(),
28
- config,
34
+ routeOptions,
35
+ config: routeConfig || {
36
+ method: method.toUpperCase(),
37
+ path: layer.route.path,
38
+ },
29
39
  });
30
40
  break;
31
41
  }
42
+ const arkosMeta = handler.handle?._arkos || handler._arkos;
43
+ if (arkosMeta) {
44
+ routeOptions = arkosMeta.options || routeOptions;
45
+ }
32
46
  }
33
- });
47
+ }
34
48
  }
35
- else if (layer.name === "router" && layer.handle?.stack) {
49
+ else if (layer.name === "router" ||
50
+ layer.name === "bound dispatch" ||
51
+ layer.handle?.stack) {
36
52
  let nestedPrefix = prefix;
37
- if (layer.regexp) {
38
- const match = layer.regexp
39
- .toString()
40
- .match(/\/\^?(\\\/[^?]+|\/[^?]+)/);
41
- if (match) {
42
- nestedPrefix = prefix + "/" + match[1].replace(/\\\//g, "/");
43
- nestedPrefix = nestedPrefix
44
- .replace(/\/\//g, "/")
45
- .replace(/\/$/, "");
46
- }
53
+ if (layer.path) {
54
+ nestedPrefix = joinPaths(prefix, layer.path);
55
+ }
56
+ else if (layer.regexp) {
57
+ const mountPath = extractLayerPath(layer);
58
+ nestedPrefix = joinPaths(prefix, mountPath);
59
+ }
60
+ const routerStack = layer.handle?.stack || layer.handle?._router?.stack;
61
+ if (routerStack) {
62
+ const currentOptions = layer.handle?._arkos?.options?.openapi
63
+ ? layer.handle._arkos.options
64
+ : inheritedRouteOptions;
65
+ extractFromStack(routerStack, nestedPrefix, currentOptions);
47
66
  }
48
- extractFromStack(layer.handle.stack, nestedPrefix);
49
67
  }
50
- });
68
+ }
51
69
  }
52
- const stack = app._router?.stack || app.stack;
70
+ const stack = app._router?.stack || app.router?.stack || app.stack;
53
71
  if (stack)
54
- extractFromStack(stack, basePath);
72
+ extractFromStack(stack, basePath, app._arkos?.options);
55
73
  return routes;
56
74
  }
75
+ function joinPaths(prefix, path) {
76
+ if (!path)
77
+ return prefix || "";
78
+ if (!prefix) {
79
+ return path.startsWith("/") ? path : `/${path}`;
80
+ }
81
+ return `${prefix.replace(/\/$/, "")}/${path.replace(/^\//, "")}`.replace(/\/+/g, "/");
82
+ }
83
+ export function extractLayerPath(layer) {
84
+ if (layer.path && typeof layer.path === "string")
85
+ return layer.path;
86
+ if (layer.regexp) {
87
+ const source = layer.regexp.source;
88
+ if (source === "^\\/?(?=\\/|$)")
89
+ return "";
90
+ let cleaned = source
91
+ .replace(/^\^\\?\//, "/")
92
+ .replace(/^\^/, "")
93
+ .replace(/\\\/\?\(\?=\\\/\|\$\)/g, "")
94
+ .replace(/\(\?=\\\/\|\$\)/g, "")
95
+ .replace(/\\\//g, "/")
96
+ .replace(/\(\?:\\\/\?\)?/g, "")
97
+ .replace(/\(\?:\(\[\^\\\/\]\+\?\)\)/g, ":param")
98
+ .replace(/\/\?\$?$/, "")
99
+ .replace(/\$$/, "")
100
+ .replace(/\/+\/+/g, "/");
101
+ if (cleaned && !cleaned.startsWith("/"))
102
+ cleaned = "/" + cleaned;
103
+ if (cleaned.includes("?") || cleaned.includes("(") || cleaned.includes(")")) {
104
+ return typeof layer.path === "string" ? layer.path : "";
105
+ }
106
+ return cleaned;
107
+ }
108
+ return "";
109
+ }
57
110
  export function getMiddlewareStack(config) {
58
111
  const middlewares = [];
59
112
  if (config.authentication)
@@ -61,7 +114,7 @@ export function getMiddlewareStack(config) {
61
114
  if (typeof config.authentication === "object" &&
62
115
  config.authentication.action &&
63
116
  config.authentication.resource)
64
- middlewares.push(authService.handleAccessControl(config.authentication.action, config.authentication.resource, { [config.authentication.action]: config.authentication?.rule }));
117
+ middlewares.push(authService.authorize(config.authentication.action, config.authentication.resource, config.authentication?.rule));
65
118
  if (config.rateLimit)
66
119
  middlewares.push(rateLimit(config.rateLimit));
67
120
  if (config.compression)
@@ -96,6 +149,12 @@ export function extractPathParams(path) {
96
149
  const segments = path.split("/");
97
150
  for (const segment of segments) {
98
151
  if (segment.startsWith(":")) {
152
+ params.push(segment.substring(1).replace(/\(.*\)$/, ""));
153
+ }
154
+ if (segment.startsWith("{*") && segment.endsWith("}")) {
155
+ params.push(segment.slice(2, -1));
156
+ }
157
+ if (segment.startsWith("*")) {
99
158
  params.push(segment.substring(1));
100
159
  }
101
160
  }