arkos 1.4.0-canary.9 → 1.4.0-canary.90

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 (384) hide show
  1. package/cli.js +3 -5
  2. package/dist/cjs/app.js +104 -72
  3. package/dist/cjs/app.js.map +1 -1
  4. package/dist/cjs/exports/index.js.map +1 -1
  5. package/dist/cjs/exports/services/index.js +6 -1
  6. package/dist/cjs/exports/services/index.js.map +1 -1
  7. package/dist/cjs/modules/auth/auth.controller.js +9 -25
  8. package/dist/cjs/modules/auth/auth.controller.js.map +1 -1
  9. package/dist/cjs/modules/auth/auth.router.js +23 -24
  10. package/dist/cjs/modules/auth/auth.router.js.map +1 -1
  11. package/dist/cjs/modules/auth/auth.service.js +35 -11
  12. package/dist/cjs/modules/auth/auth.service.js.map +1 -1
  13. package/dist/cjs/modules/auth/utils/services/auth-action.service.js +16 -10
  14. package/dist/cjs/modules/auth/utils/services/auth-action.service.js.map +1 -1
  15. package/dist/cjs/modules/base/base.controller.js +3 -4
  16. package/dist/cjs/modules/base/base.controller.js.map +1 -1
  17. package/dist/cjs/modules/base/base.middlewares.js +34 -8
  18. package/dist/cjs/modules/base/base.middlewares.js.map +1 -1
  19. package/dist/cjs/modules/base/base.router.js +4 -3
  20. package/dist/cjs/modules/base/base.router.js.map +1 -1
  21. package/dist/cjs/modules/base/base.service.js +68 -66
  22. package/dist/cjs/modules/base/base.service.js.map +1 -1
  23. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +18 -41
  24. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  25. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +22 -6
  26. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
  27. package/dist/cjs/modules/debugger/debugger.service.js +11 -4
  28. package/dist/cjs/modules/debugger/debugger.service.js.map +1 -1
  29. package/dist/cjs/modules/debugger/utils/loaded-components-logger.js +1 -1
  30. package/dist/cjs/modules/debugger/utils/loaded-components-logger.js.map +1 -1
  31. package/dist/cjs/modules/email/email.service.js +7 -5
  32. package/dist/cjs/modules/email/email.service.js.map +1 -1
  33. package/dist/cjs/modules/error-handler/error-handler.controller.js +22 -15
  34. package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
  35. package/dist/cjs/modules/error-handler/utils/app-error.js +4 -3
  36. package/dist/cjs/modules/error-handler/utils/app-error.js.map +1 -1
  37. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +1 -1
  38. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
  39. package/dist/cjs/modules/file-upload/file-upload.controller.js +5 -6
  40. package/dist/cjs/modules/file-upload/file-upload.controller.js.map +1 -1
  41. package/dist/cjs/modules/file-upload/file-upload.router.js +17 -6
  42. package/dist/cjs/modules/file-upload/file-upload.router.js.map +1 -1
  43. package/dist/cjs/modules/file-upload/file-upload.service.js +38 -48
  44. package/dist/cjs/modules/file-upload/file-upload.service.js.map +1 -1
  45. package/dist/cjs/modules/file-upload/utils/helpers/file-extensions.js +134 -0
  46. package/dist/cjs/modules/file-upload/utils/helpers/file-extensions.js.map +1 -0
  47. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +10 -5
  48. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -1
  49. package/dist/cjs/modules/swagger/swagger.router.js +14 -6
  50. package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
  51. package/dist/cjs/modules/swagger/utils/helpers/class-validator-to-json-schema.js +53 -0
  52. package/dist/cjs/modules/swagger/utils/helpers/class-validator-to-json-schema.js.map +1 -0
  53. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +10 -10
  54. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -1
  55. package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +419 -0
  56. package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js.map +1 -0
  57. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +3 -3
  58. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +1 -1
  59. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +4 -6
  60. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -1
  61. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +4 -4
  62. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -1
  63. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +1 -1
  64. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +1 -1
  65. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +9 -9
  66. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +1 -1
  67. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +9 -9
  68. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js.map +1 -1
  69. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +6 -8
  70. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -1
  71. package/dist/cjs/modules/swagger/utils/helpers/openapi-schema-converter.js +204 -0
  72. package/dist/cjs/modules/swagger/utils/helpers/openapi-schema-converter.js.map +1 -0
  73. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +9 -9
  74. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -1
  75. package/dist/cjs/server.js +33 -36
  76. package/dist/cjs/server.js.map +1 -1
  77. package/dist/cjs/types/arkos-config.js.map +1 -1
  78. package/dist/cjs/types/auth.js.map +1 -1
  79. package/dist/cjs/types/index.js.map +1 -1
  80. package/dist/cjs/types/new-arkos-config.js +3 -0
  81. package/dist/cjs/types/new-arkos-config.js.map +1 -0
  82. package/dist/cjs/types/router-config.js.map +1 -1
  83. package/dist/cjs/utils/arkos-router/index.js +93 -38
  84. package/dist/cjs/utils/arkos-router/index.js.map +1 -1
  85. package/dist/cjs/utils/arkos-router/route-config-validator.js +9 -8
  86. package/dist/cjs/utils/arkos-router/route-config-validator.js.map +1 -1
  87. package/dist/cjs/utils/arkos-router/types/body-parser-config.js +3 -0
  88. package/dist/cjs/utils/arkos-router/types/body-parser-config.js.map +1 -0
  89. package/dist/cjs/utils/arkos-router/types/index.js.map +1 -1
  90. package/dist/cjs/utils/arkos-router/types/openapi-config.js +3 -0
  91. package/dist/cjs/utils/arkos-router/types/openapi-config.js.map +1 -0
  92. package/dist/cjs/utils/arkos-router/types/upload-config.js +3 -0
  93. package/dist/cjs/utils/arkos-router/types/upload-config.js.map +1 -0
  94. package/dist/cjs/utils/arkos-router/utils/helpers/index.js +35 -6
  95. package/dist/cjs/utils/arkos-router/utils/helpers/index.js.map +1 -1
  96. package/dist/cjs/utils/arkos-router/utils/helpers/upload-manager.js +237 -0
  97. package/dist/cjs/utils/arkos-router/utils/helpers/upload-manager.js.map +1 -0
  98. package/dist/cjs/utils/cli/build.js +9 -13
  99. package/dist/cjs/utils/cli/build.js.map +1 -1
  100. package/dist/cjs/utils/cli/dev.js +13 -8
  101. package/dist/cjs/utils/cli/dev.js.map +1 -1
  102. package/dist/cjs/utils/cli/export-auth-action.js +78 -0
  103. package/dist/cjs/utils/cli/export-auth-action.js.map +1 -0
  104. package/dist/cjs/utils/cli/generate.js +28 -12
  105. package/dist/cjs/utils/cli/generate.js.map +1 -1
  106. package/dist/cjs/utils/cli/index.js +32 -18
  107. package/dist/cjs/utils/cli/index.js.map +1 -1
  108. package/dist/cjs/utils/cli/prisma-generate.js +37 -7
  109. package/dist/cjs/utils/cli/prisma-generate.js.map +1 -1
  110. package/dist/cjs/utils/cli/start.js +12 -50
  111. package/dist/cjs/utils/cli/start.js.map +1 -1
  112. package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -1
  113. package/dist/cjs/utils/cli/utils/runtime-cli-commander.js +58 -0
  114. package/dist/cjs/utils/cli/utils/runtime-cli-commander.js.map +1 -0
  115. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js +38 -13
  116. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js.map +1 -1
  117. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js +44 -17
  118. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js.map +1 -1
  119. package/dist/cjs/utils/cli/utils/template-generator/templates/{controller-template.js → generate-controller-template.js} +12 -2
  120. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +1 -0
  121. package/dist/cjs/utils/cli/utils/template-generator/templates/hooks-template.js +1 -34
  122. package/dist/cjs/utils/cli/utils/template-generator/templates/hooks-template.js.map +1 -1
  123. package/dist/cjs/utils/cli/utils/template-generator/templates/middlewares-template.js +97 -265
  124. package/dist/cjs/utils/cli/utils/template-generator/templates/middlewares-template.js.map +1 -1
  125. package/dist/cjs/utils/cli/utils/template-generator/templates/query-options-template.js +16 -16
  126. package/dist/cjs/utils/cli/utils/template-generator/templates/query-options-template.js.map +1 -1
  127. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js +5 -2
  128. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js.map +1 -1
  129. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js +8 -32
  130. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js.map +1 -1
  131. package/dist/cjs/utils/cli/utils/template-generator/templates/zod/create-schema-template.js +3 -5
  132. package/dist/cjs/utils/cli/utils/template-generator/templates/zod/create-schema-template.js.map +1 -1
  133. package/dist/cjs/utils/cli/utils/template-generator/templates/zod/update-schema-template.js +1 -1
  134. package/dist/cjs/utils/cli/utils/template-generator/templates/zod/update-schema-template.js.map +1 -1
  135. package/dist/cjs/utils/cli/utils/template-generators.js +2 -2
  136. package/dist/cjs/utils/cli/utils/template-generators.js.map +1 -1
  137. package/dist/cjs/utils/cli/utils/watermark-stamper.js +14 -5
  138. package/dist/cjs/utils/cli/utils/watermark-stamper.js.map +1 -1
  139. package/dist/cjs/utils/define-config.js +2 -0
  140. package/dist/cjs/utils/define-config.js.map +1 -0
  141. package/dist/cjs/utils/dotenv.helpers.js +2 -1
  142. package/dist/cjs/utils/dotenv.helpers.js.map +1 -1
  143. package/dist/cjs/utils/dynamic-loader.js +7 -7
  144. package/dist/cjs/utils/dynamic-loader.js.map +1 -1
  145. package/dist/cjs/utils/features/port-and-host-allocator.js +28 -4
  146. package/dist/cjs/utils/features/port-and-host-allocator.js.map +1 -1
  147. package/dist/cjs/utils/helpers/api.features.helpers.js.map +1 -1
  148. package/dist/cjs/utils/helpers/arkos-config.helpers.js +45 -0
  149. package/dist/cjs/utils/helpers/arkos-config.helpers.js.map +1 -0
  150. package/dist/cjs/utils/helpers/dynamic-loader.helpers.js +114 -46
  151. package/dist/cjs/utils/helpers/dynamic-loader.helpers.js.map +1 -1
  152. package/dist/cjs/utils/helpers/fs.helpers.js +1 -4
  153. package/dist/cjs/utils/helpers/fs.helpers.js.map +1 -1
  154. package/dist/cjs/utils/helpers/query-parser.helpers.js +24 -0
  155. package/dist/cjs/utils/helpers/query-parser.helpers.js.map +1 -1
  156. package/dist/cjs/utils/helpers/routers.helpers.js +57 -4
  157. package/dist/cjs/utils/helpers/routers.helpers.js.map +1 -1
  158. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +20 -31
  159. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js.map +1 -1
  160. package/dist/cjs/utils/prisma/prisma-schema-parser.js +3 -4
  161. package/dist/cjs/utils/prisma/prisma-schema-parser.js.map +1 -1
  162. package/dist/cjs/utils/sheu.js.map +1 -1
  163. package/dist/cjs/utils/validate-schema.js +1 -1
  164. package/dist/cjs/utils/validate-schema.js.map +1 -1
  165. package/dist/esm/app.js +104 -72
  166. package/dist/esm/app.js.map +1 -1
  167. package/dist/esm/exports/index.js.map +1 -1
  168. package/dist/esm/exports/services/index.js +2 -1
  169. package/dist/esm/exports/services/index.js.map +1 -1
  170. package/dist/esm/modules/auth/auth.controller.js +10 -26
  171. package/dist/esm/modules/auth/auth.controller.js.map +1 -1
  172. package/dist/esm/modules/auth/auth.router.js +25 -26
  173. package/dist/esm/modules/auth/auth.router.js.map +1 -1
  174. package/dist/esm/modules/auth/auth.service.js +35 -11
  175. package/dist/esm/modules/auth/auth.service.js.map +1 -1
  176. package/dist/esm/modules/auth/utils/services/auth-action.service.js +12 -9
  177. package/dist/esm/modules/auth/utils/services/auth-action.service.js.map +1 -1
  178. package/dist/esm/modules/base/base.controller.js +3 -4
  179. package/dist/esm/modules/base/base.controller.js.map +1 -1
  180. package/dist/esm/modules/base/base.middlewares.js +34 -8
  181. package/dist/esm/modules/base/base.middlewares.js.map +1 -1
  182. package/dist/esm/modules/base/base.router.js +4 -3
  183. package/dist/esm/modules/base/base.router.js.map +1 -1
  184. package/dist/esm/modules/base/base.service.js +68 -66
  185. package/dist/esm/modules/base/base.service.js.map +1 -1
  186. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +20 -42
  187. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  188. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +22 -6
  189. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
  190. package/dist/esm/modules/debugger/debugger.service.js +11 -4
  191. package/dist/esm/modules/debugger/debugger.service.js.map +1 -1
  192. package/dist/esm/modules/debugger/utils/loaded-components-logger.js +1 -1
  193. package/dist/esm/modules/debugger/utils/loaded-components-logger.js.map +1 -1
  194. package/dist/esm/modules/email/email.service.js +7 -5
  195. package/dist/esm/modules/email/email.service.js.map +1 -1
  196. package/dist/esm/modules/error-handler/error-handler.controller.js +22 -12
  197. package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -1
  198. package/dist/esm/modules/error-handler/utils/app-error.js +4 -3
  199. package/dist/esm/modules/error-handler/utils/app-error.js.map +1 -1
  200. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +1 -1
  201. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
  202. package/dist/esm/modules/file-upload/file-upload.controller.js +5 -6
  203. package/dist/esm/modules/file-upload/file-upload.controller.js.map +1 -1
  204. package/dist/esm/modules/file-upload/file-upload.router.js +17 -6
  205. package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -1
  206. package/dist/esm/modules/file-upload/file-upload.service.js +37 -47
  207. package/dist/esm/modules/file-upload/file-upload.service.js.map +1 -1
  208. package/dist/esm/modules/file-upload/utils/helpers/file-extensions.js +131 -0
  209. package/dist/esm/modules/file-upload/utils/helpers/file-extensions.js.map +1 -0
  210. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +9 -5
  211. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -1
  212. package/dist/esm/modules/swagger/swagger.router.js +14 -6
  213. package/dist/esm/modules/swagger/swagger.router.js.map +1 -1
  214. package/dist/esm/modules/swagger/utils/helpers/class-validator-to-json-schema.js +48 -0
  215. package/dist/esm/modules/swagger/utils/helpers/class-validator-to-json-schema.js.map +1 -0
  216. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +10 -10
  217. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -1
  218. package/dist/esm/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +413 -0
  219. package/dist/esm/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js.map +1 -0
  220. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js +3 -3
  221. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +1 -1
  222. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +3 -5
  223. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -1
  224. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +4 -4
  225. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -1
  226. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +1 -1
  227. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +1 -1
  228. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +9 -9
  229. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +1 -1
  230. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +9 -9
  231. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js.map +1 -1
  232. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +6 -8
  233. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -1
  234. package/dist/esm/modules/swagger/utils/helpers/openapi-schema-converter.js +199 -0
  235. package/dist/esm/modules/swagger/utils/helpers/openapi-schema-converter.js.map +1 -0
  236. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +9 -9
  237. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -1
  238. package/dist/esm/server.js +31 -34
  239. package/dist/esm/server.js.map +1 -1
  240. package/dist/esm/types/arkos-config.js.map +1 -1
  241. package/dist/esm/types/auth.js.map +1 -1
  242. package/dist/esm/types/index.js.map +1 -1
  243. package/dist/esm/types/new-arkos-config.js +2 -0
  244. package/dist/esm/types/new-arkos-config.js.map +1 -0
  245. package/dist/esm/types/router-config.js.map +1 -1
  246. package/dist/esm/utils/arkos-router/index.js +93 -38
  247. package/dist/esm/utils/arkos-router/index.js.map +1 -1
  248. package/dist/esm/utils/arkos-router/route-config-validator.js +9 -8
  249. package/dist/esm/utils/arkos-router/route-config-validator.js.map +1 -1
  250. package/dist/esm/utils/arkos-router/types/body-parser-config.js +2 -0
  251. package/dist/esm/utils/arkos-router/types/body-parser-config.js.map +1 -0
  252. package/dist/esm/utils/arkos-router/types/index.js.map +1 -1
  253. package/dist/esm/utils/arkos-router/types/openapi-config.js +2 -0
  254. package/dist/esm/utils/arkos-router/types/openapi-config.js.map +1 -0
  255. package/dist/esm/utils/arkos-router/types/upload-config.js +2 -0
  256. package/dist/esm/utils/arkos-router/types/upload-config.js.map +1 -0
  257. package/dist/esm/utils/arkos-router/utils/helpers/index.js +34 -5
  258. package/dist/esm/utils/arkos-router/utils/helpers/index.js.map +1 -1
  259. package/dist/esm/utils/arkos-router/utils/helpers/upload-manager.js +232 -0
  260. package/dist/esm/utils/arkos-router/utils/helpers/upload-manager.js.map +1 -0
  261. package/dist/esm/utils/cli/build.js +9 -13
  262. package/dist/esm/utils/cli/build.js.map +1 -1
  263. package/dist/esm/utils/cli/dev.js +13 -8
  264. package/dist/esm/utils/cli/dev.js.map +1 -1
  265. package/dist/esm/utils/cli/export-auth-action.js +72 -0
  266. package/dist/esm/utils/cli/export-auth-action.js.map +1 -0
  267. package/dist/esm/utils/cli/generate.js +28 -12
  268. package/dist/esm/utils/cli/generate.js.map +1 -1
  269. package/dist/esm/utils/cli/index.js +32 -18
  270. package/dist/esm/utils/cli/index.js.map +1 -1
  271. package/dist/esm/utils/cli/prisma-generate.js +37 -7
  272. package/dist/esm/utils/cli/prisma-generate.js.map +1 -1
  273. package/dist/esm/utils/cli/start.js +12 -50
  274. package/dist/esm/utils/cli/start.js.map +1 -1
  275. package/dist/esm/utils/cli/utils/cli.helpers.js +1 -1
  276. package/dist/esm/utils/cli/utils/runtime-cli-commander.js +53 -0
  277. package/dist/esm/utils/cli/utils/runtime-cli-commander.js.map +1 -0
  278. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js +38 -13
  279. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js.map +1 -1
  280. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js +44 -17
  281. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js.map +1 -1
  282. package/dist/esm/utils/cli/utils/template-generator/templates/{controller-template.js → generate-controller-template.js} +12 -2
  283. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +1 -0
  284. package/dist/esm/utils/cli/utils/template-generator/templates/hooks-template.js +1 -34
  285. package/dist/esm/utils/cli/utils/template-generator/templates/hooks-template.js.map +1 -1
  286. package/dist/esm/utils/cli/utils/template-generator/templates/middlewares-template.js +97 -265
  287. package/dist/esm/utils/cli/utils/template-generator/templates/middlewares-template.js.map +1 -1
  288. package/dist/esm/utils/cli/utils/template-generator/templates/query-options-template.js +16 -16
  289. package/dist/esm/utils/cli/utils/template-generator/templates/query-options-template.js.map +1 -1
  290. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js +5 -2
  291. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js.map +1 -1
  292. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js +8 -32
  293. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js.map +1 -1
  294. package/dist/esm/utils/cli/utils/template-generator/templates/zod/create-schema-template.js +3 -5
  295. package/dist/esm/utils/cli/utils/template-generator/templates/zod/create-schema-template.js.map +1 -1
  296. package/dist/esm/utils/cli/utils/template-generator/templates/zod/update-schema-template.js +1 -1
  297. package/dist/esm/utils/cli/utils/template-generator/templates/zod/update-schema-template.js.map +1 -1
  298. package/dist/esm/utils/cli/utils/template-generators.js +1 -1
  299. package/dist/esm/utils/cli/utils/template-generators.js.map +1 -1
  300. package/dist/esm/utils/cli/utils/watermark-stamper.js +11 -5
  301. package/dist/esm/utils/cli/utils/watermark-stamper.js.map +1 -1
  302. package/dist/esm/utils/define-config.js +2 -0
  303. package/dist/esm/utils/define-config.js.map +1 -0
  304. package/dist/esm/utils/dotenv.helpers.js +2 -1
  305. package/dist/esm/utils/dotenv.helpers.js.map +1 -1
  306. package/dist/esm/utils/dynamic-loader.js +8 -8
  307. package/dist/esm/utils/dynamic-loader.js.map +1 -1
  308. package/dist/esm/utils/features/port-and-host-allocator.js +28 -4
  309. package/dist/esm/utils/features/port-and-host-allocator.js.map +1 -1
  310. package/dist/esm/utils/helpers/api.features.helpers.js.map +1 -1
  311. package/dist/esm/utils/helpers/arkos-config.helpers.js +38 -0
  312. package/dist/esm/utils/helpers/arkos-config.helpers.js.map +1 -0
  313. package/dist/esm/utils/helpers/dynamic-loader.helpers.js +113 -46
  314. package/dist/esm/utils/helpers/dynamic-loader.helpers.js.map +1 -1
  315. package/dist/esm/utils/helpers/fs.helpers.js +1 -4
  316. package/dist/esm/utils/helpers/fs.helpers.js.map +1 -1
  317. package/dist/esm/utils/helpers/query-parser.helpers.js +24 -0
  318. package/dist/esm/utils/helpers/query-parser.helpers.js.map +1 -1
  319. package/dist/esm/utils/helpers/routers.helpers.js +55 -4
  320. package/dist/esm/utils/helpers/routers.helpers.js.map +1 -1
  321. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +20 -31
  322. package/dist/esm/utils/prisma/prisma-json-schema-generator.js.map +1 -1
  323. package/dist/esm/utils/prisma/prisma-schema-parser.js +3 -4
  324. package/dist/esm/utils/prisma/prisma-schema-parser.js.map +1 -1
  325. package/dist/esm/utils/sheu.js.map +1 -1
  326. package/dist/esm/utils/validate-schema.js +1 -1
  327. package/dist/esm/utils/validate-schema.js.map +1 -1
  328. package/dist/types/app.d.ts +2 -2
  329. package/dist/types/exports/index.d.ts +3 -2
  330. package/dist/types/exports/services/index.d.ts +2 -1
  331. package/dist/types/modules/auth/auth.controller.d.ts +2 -2
  332. package/dist/types/modules/auth/auth.router.d.ts +2 -3
  333. package/dist/types/modules/auth/auth.service.d.ts +6 -0
  334. package/dist/types/modules/auth/utils/services/auth-action.service.d.ts +1 -0
  335. package/dist/types/modules/base/base.middlewares.d.ts +1 -1
  336. package/dist/types/modules/base/base.router.d.ts +2 -2
  337. package/dist/types/modules/base/base.service.d.ts +5 -36
  338. package/dist/types/modules/base/utils/helpers/base.router.helpers.d.ts +2 -4
  339. package/dist/types/modules/debugger/debugger.service.d.ts +1 -1
  340. package/dist/types/modules/email/email.service.d.ts +1 -1
  341. package/dist/types/modules/file-upload/file-upload.router.d.ts +2 -2
  342. package/dist/types/modules/file-upload/file-upload.service.d.ts +24 -2
  343. package/dist/types/modules/file-upload/utils/helpers/file-extensions.d.ts +3 -0
  344. package/dist/types/modules/file-upload/utils/helpers/file-upload.helpers.d.ts +2 -1
  345. package/dist/types/modules/swagger/swagger.router.d.ts +1 -1
  346. package/dist/types/modules/swagger/utils/helpers/class-validator-to-json-schema.d.ts +3 -0
  347. package/dist/types/modules/swagger/utils/helpers/get-authentication-json-schema-paths.d.ts +2 -2
  348. package/dist/types/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.d.ts +3 -0
  349. package/dist/types/modules/swagger/utils/helpers/get-swagger-default-configs.d.ts +2 -45
  350. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.d.ts +1 -1
  351. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.d.ts +1 -1
  352. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.d.ts +1 -1
  353. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.d.ts +1 -1
  354. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.d.ts +1 -1
  355. package/dist/types/modules/swagger/utils/helpers/missing-json-schemas-generator.d.ts +1 -1
  356. package/dist/types/modules/swagger/utils/helpers/openapi-schema-converter.d.ts +17 -0
  357. package/dist/types/modules/swagger/utils/helpers/swagger.router.helpers.d.ts +3 -3
  358. package/dist/types/server.d.ts +4 -6
  359. package/dist/types/types/arkos-config.d.ts +4 -181
  360. package/dist/types/types/auth.d.ts +1 -1
  361. package/dist/types/types/index.d.ts +5 -4
  362. package/dist/types/types/new-arkos-config.d.ts +167 -0
  363. package/dist/types/types/router-config.d.ts +16 -23
  364. package/dist/types/utils/arkos-router/types/body-parser-config.d.ts +18 -0
  365. package/dist/types/utils/arkos-router/types/index.d.ts +25 -10
  366. package/dist/types/utils/arkos-router/types/openapi-config.d.ts +35 -0
  367. package/dist/types/utils/arkos-router/types/upload-config.d.ts +21 -0
  368. package/dist/types/utils/arkos-router/utils/helpers/upload-manager.d.ts +13 -0
  369. package/dist/types/utils/cli/export-auth-action.d.ts +4 -0
  370. package/dist/types/utils/cli/generate.d.ts +2 -1
  371. package/dist/types/utils/cli/utils/runtime-cli-commander.d.ts +11 -0
  372. package/dist/types/utils/cli/utils/watermark-stamper.d.ts +3 -3
  373. package/dist/types/utils/define-config.d.ts +0 -0
  374. package/dist/types/utils/features/port-and-host-allocator.d.ts +4 -2
  375. package/dist/types/utils/helpers/arkos-config.helpers.d.ts +7 -0
  376. package/dist/types/utils/helpers/dynamic-loader.helpers.d.ts +1 -0
  377. package/dist/types/utils/helpers/query-parser.helpers.d.ts +1 -0
  378. package/dist/types/utils/helpers/routers.helpers.d.ts +10 -0
  379. package/dist/types/utils/prisma/prisma-json-schema-generator.d.ts +1 -1
  380. package/dist/types/utils/validate-schema.d.ts +1 -1
  381. package/package.json +3 -2
  382. package/dist/cjs/utils/cli/utils/template-generator/templates/controller-template.js.map +0 -1
  383. package/dist/esm/utils/cli/utils/template-generator/templates/controller-template.js.map +0 -1
  384. /package/dist/types/utils/cli/utils/template-generator/templates/{controller-template.d.ts → generate-controller-template.d.ts} +0 -0
@@ -1,62 +1,129 @@
1
1
  import fs from "fs";
2
2
  export function applyStrictRoutingRules(appModule, arkosConfig, moduleConfig) {
3
3
  const strictMode = arkosConfig?.routers?.strict || false;
4
- const config = moduleConfig || {};
4
+ let config = moduleConfig ? { ...moduleConfig } : {};
5
5
  appModule = appModule.toLowerCase();
6
- if (strictMode === true) {
7
- return {
8
- ...config,
9
- disable: typeof config.disable === "boolean"
10
- ? config.disable
11
- : appModule === "auth"
12
- ? {
13
- getMe: true,
14
- updateMe: true,
15
- deleteMe: true,
16
- login: true,
17
- logout: true,
18
- signup: true,
19
- updatePassword: true,
20
- findManyAuthAction: true,
21
- ...(typeof config.disable === "object" ? config.disable : {}),
22
- }
23
- : appModule === "file-upload"
24
- ? {
25
- findFile: true,
26
- uploadFile: true,
27
- updateFile: true,
28
- deleteFile: true,
29
- ...(typeof config.disable === "object" ? config.disable : {}),
30
- }
31
- : {
32
- createOne: true,
33
- findOne: true,
34
- updateOne: true,
35
- deleteOne: true,
36
- createMany: true,
37
- findMany: true,
38
- updateMany: true,
39
- deleteMany: true,
40
- ...(typeof config.disable === "object" ? config.disable : {}),
41
- },
42
- };
6
+ const allEndpoints = appModule === "auth"
7
+ ? [
8
+ "getMe",
9
+ "updateMe",
10
+ "deleteMe",
11
+ "login",
12
+ "logout",
13
+ "signup",
14
+ "updatePassword",
15
+ "findManyAuthAction",
16
+ ]
17
+ : appModule === "file-upload"
18
+ ? ["findFile", "uploadFile", "updateFile", "deleteFile"]
19
+ : [
20
+ "createOne",
21
+ "findOne",
22
+ "updateOne",
23
+ "deleteOne",
24
+ "createMany",
25
+ "findMany",
26
+ "updateMany",
27
+ "deleteMany",
28
+ ];
29
+ const hadBooleanDisable = typeof config.disable === "boolean";
30
+ if (hadBooleanDisable) {
31
+ const disableValue = config.disable;
32
+ config.disable = {};
33
+ for (const endpoint of allEndpoints) {
34
+ config.disable[endpoint] = disableValue;
35
+ if (!config[endpoint]) {
36
+ config[endpoint] = {};
37
+ }
38
+ config[endpoint].disabled = disableValue;
39
+ }
40
+ return config;
43
41
  }
44
- else if (strictMode === "no-bulk" &&
45
- !["auth", "file-upload"].includes(appModule.toLowerCase())) {
46
- return {
47
- ...config,
48
- disable: typeof config.disable === "boolean"
49
- ? config.disable
42
+ if (strictMode === true) {
43
+ const strictDefaults = appModule === "auth"
44
+ ? {
45
+ getMe: true,
46
+ updateMe: true,
47
+ deleteMe: true,
48
+ login: true,
49
+ logout: true,
50
+ signup: true,
51
+ updatePassword: true,
52
+ findManyAuthAction: true,
53
+ }
54
+ : appModule === "file-upload"
55
+ ? {
56
+ findFile: true,
57
+ uploadFile: true,
58
+ updateFile: true,
59
+ deleteFile: true,
60
+ }
50
61
  : {
62
+ createOne: true,
63
+ findOne: true,
64
+ updateOne: true,
65
+ deleteOne: true,
51
66
  createMany: true,
67
+ findMany: true,
52
68
  updateMany: true,
53
69
  deleteMany: true,
54
- ...(typeof config.disable === "object" ? config.disable : {}),
55
- },
70
+ };
71
+ applyDisabledFlags(config, allEndpoints, strictDefaults);
72
+ }
73
+ else if (strictMode === "no-bulk" &&
74
+ !["auth", "file-upload"].includes(appModule.toLowerCase())) {
75
+ const noBulkDefaults = {
76
+ createMany: true,
77
+ updateMany: true,
78
+ deleteMany: true,
56
79
  };
80
+ applyDisabledFlags(config, allEndpoints, noBulkDefaults);
57
81
  }
58
82
  return config;
59
83
  }
84
+ function applyDisabledFlags(config, allEndpoints, defaults) {
85
+ if (!config.disable || typeof config.disable === "boolean") {
86
+ config.disable = {};
87
+ }
88
+ for (const endpoint of allEndpoints) {
89
+ const defaultDisabled = defaults[endpoint];
90
+ const userDisableOverride = config.disable[endpoint];
91
+ const endpointDisabled = config[endpoint]?.disabled;
92
+ let finalDisabled;
93
+ if (endpointDisabled !== undefined) {
94
+ finalDisabled = endpointDisabled;
95
+ }
96
+ else if (userDisableOverride !== undefined) {
97
+ finalDisabled = userDisableOverride;
98
+ }
99
+ else if (defaultDisabled !== undefined) {
100
+ finalDisabled = defaultDisabled;
101
+ }
102
+ if (finalDisabled !== undefined) {
103
+ config.disable[endpoint] = finalDisabled;
104
+ if (!config[endpoint]) {
105
+ config[endpoint] = {};
106
+ }
107
+ config[endpoint].disabled = finalDisabled;
108
+ }
109
+ }
110
+ }
111
+ export function validateRouterConfigConsistency(appModule, config) {
112
+ if (!config.disable || typeof config.disable === "boolean")
113
+ return;
114
+ const endpoints = Object.keys(config.disable);
115
+ for (const endpoint of endpoints) {
116
+ const oldWayValue = config.disable[endpoint];
117
+ const newWayValue = config[endpoint]?.disabled;
118
+ if (oldWayValue !== undefined &&
119
+ newWayValue !== undefined &&
120
+ oldWayValue !== newWayValue) {
121
+ throw new Error(`Conflicting disabled values for endpoint "${endpoint}" of module ${appModule}: ` +
122
+ `disable.${endpoint} = ${oldWayValue}, but ${endpoint}.disabled = ${newWayValue}. ` +
123
+ `Please use only one method to disable endpoints.`);
124
+ }
125
+ }
126
+ }
60
127
  export async function pathExists(path) {
61
128
  try {
62
129
  await fs.promises.stat(path);
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-loader.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/dynamic-loader.helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,CAAC;AAKpB,MAAM,UAAU,uBAAuB,CACrC,SAAY,EACZ,WAAwB,EACxB,YAA8B;IAE9B,MAAM,UAAU,GAAG,WAAW,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC;IACzD,MAAM,MAAM,GAAG,YAAY,IAAK,EAAsB,CAAC;IACvD,SAAS,GAAG,SAAS,CAAC,WAAW,EAAO,CAAC;IAEzC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO;YACL,GAAG,MAAM;YACT,OAAO,EACL,OAAO,MAAM,CAAC,OAAO,KAAK,SAAS;gBACjC,CAAC,CAAC,MAAM,CAAC,OAAO;gBAChB,CAAC,CAAC,SAAS,KAAK,MAAM;oBACpB,CAAC,CAAC;wBACE,KAAK,EAAE,IAAI;wBACX,QAAQ,EAAE,IAAI;wBACd,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,IAAI;wBACX,MAAM,EAAE,IAAI;wBACZ,MAAM,EAAE,IAAI;wBACZ,cAAc,EAAE,IAAI;wBACpB,kBAAkB,EAAE,IAAI;wBACxB,GAAG,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC9D;oBACH,CAAC,CAAC,SAAS,KAAK,aAAa;wBAC3B,CAAC,CAAC;4BACE,QAAQ,EAAE,IAAI;4BACd,UAAU,EAAE,IAAI;4BAChB,UAAU,EAAE,IAAI;4BAChB,UAAU,EAAE,IAAI;4BAChB,GAAG,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;yBAC9D;wBACH,CAAC,CAAC;4BACE,SAAS,EAAE,IAAI;4BACf,OAAO,EAAE,IAAI;4BACb,SAAS,EAAE,IAAI;4BACf,SAAS,EAAE,IAAI;4BACf,UAAU,EAAE,IAAI;4BAChB,QAAQ,EAAE,IAAI;4BACd,UAAU,EAAE,IAAI;4BAChB,UAAU,EAAE,IAAI;4BAChB,GAAG,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;yBAC9D;SACO,CAAC;IACvB,CAAC;SAAM,IACL,UAAU,KAAK,SAAS;QACxB,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EAC1D,CAAC;QACD,OAAO;YACL,GAAG,MAAM;YACT,OAAO,EACL,OAAO,MAAM,CAAC,OAAO,KAAK,SAAS;gBACjC,CAAC,CAAC,MAAM,CAAC,OAAO;gBAChB,CAAC,CAAC;oBACE,UAAU,EAAE,IAAI;oBAChB,UAAU,EAAE,IAAI;oBAChB,UAAU,EAAE,IAAI;oBAChB,GAAG,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC9D;SACW,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC","sourcesContent":["import { ArkosConfig, RouterConfig } from \"../../exports\";\nimport fs from \"fs\";\n\n/**\n * Applies strict routing rules to module configuration\n */\nexport function applyStrictRoutingRules<T extends string>(\n appModule: T,\n arkosConfig: ArkosConfig,\n moduleConfig?: RouterConfig<T>\n): RouterConfig<T> {\n const strictMode = arkosConfig?.routers?.strict || false;\n const config = moduleConfig || ({} as RouterConfig<T>);\n appModule = appModule.toLowerCase() as T;\n\n if (strictMode === true) {\n return {\n ...config,\n disable:\n typeof config.disable === \"boolean\"\n ? config.disable\n : appModule === \"auth\"\n ? {\n getMe: true,\n updateMe: true,\n deleteMe: true,\n login: true,\n logout: true,\n signup: true,\n updatePassword: true,\n findManyAuthAction: true,\n ...(typeof config.disable === \"object\" ? config.disable : {}),\n }\n : appModule === \"file-upload\"\n ? {\n findFile: true,\n uploadFile: true,\n updateFile: true,\n deleteFile: true,\n ...(typeof config.disable === \"object\" ? config.disable : {}),\n }\n : {\n createOne: true,\n findOne: true,\n updateOne: true,\n deleteOne: true,\n createMany: true,\n findMany: true,\n updateMany: true,\n deleteMany: true,\n ...(typeof config.disable === \"object\" ? config.disable : {}),\n },\n } as RouterConfig<T>;\n } else if (\n strictMode === \"no-bulk\" &&\n ![\"auth\", \"file-upload\"].includes(appModule.toLowerCase())\n ) {\n return {\n ...config,\n disable:\n typeof config.disable === \"boolean\"\n ? config.disable\n : {\n createMany: true,\n updateMany: true,\n deleteMany: true,\n ...(typeof config.disable === \"object\" ? config.disable : {}),\n },\n } as RouterConfig<T>;\n }\n\n return config;\n}\n\nexport async function pathExists(path: string) {\n try {\n await fs.promises.stat(path);\n return true;\n } catch (err) {\n return false;\n }\n}\n"]}
1
+ {"version":3,"file":"dynamic-loader.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/dynamic-loader.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { ArkosConfig, RouterConfig } from \"../../exports\";\nimport fs from \"fs\";\n\n/**\n * Applies strict routing rules to module configuration\n */\nexport function applyStrictRoutingRules<T extends string>(\n appModule: T,\n arkosConfig: ArkosConfig,\n moduleConfig?: RouterConfig<T>\n): RouterConfig<T> {\n const strictMode = arkosConfig?.routers?.strict || false;\n let config: any = moduleConfig ? { ...moduleConfig } : {};\n appModule = appModule.toLowerCase() as T;\n\n const allEndpoints =\n appModule === \"auth\"\n ? [\n \"getMe\",\n \"updateMe\",\n \"deleteMe\",\n \"login\",\n \"logout\",\n \"signup\",\n \"updatePassword\",\n \"findManyAuthAction\",\n ]\n : appModule === \"file-upload\"\n ? [\"findFile\", \"uploadFile\", \"updateFile\", \"deleteFile\"]\n : [\n \"createOne\",\n \"findOne\",\n \"updateOne\",\n \"deleteOne\",\n \"createMany\",\n \"findMany\",\n \"updateMany\",\n \"deleteMany\",\n ];\n\n const hadBooleanDisable = typeof config.disable === \"boolean\";\n if (hadBooleanDisable) {\n const disableValue = config.disable;\n config.disable = {};\n\n for (const endpoint of allEndpoints) {\n config.disable[endpoint] = disableValue;\n\n if (!config[endpoint]) {\n config[endpoint] = {};\n }\n config[endpoint].disabled = disableValue;\n }\n\n return config as RouterConfig<T>;\n }\n\n if (strictMode === true) {\n const strictDefaults: Record<string, boolean> =\n appModule === \"auth\"\n ? {\n getMe: true,\n updateMe: true,\n deleteMe: true,\n login: true,\n logout: true,\n signup: true,\n updatePassword: true,\n findManyAuthAction: true,\n }\n : appModule === \"file-upload\"\n ? {\n findFile: true,\n uploadFile: true,\n updateFile: true,\n deleteFile: true,\n }\n : {\n createOne: true,\n findOne: true,\n updateOne: true,\n deleteOne: true,\n createMany: true,\n findMany: true,\n updateMany: true,\n deleteMany: true,\n };\n\n applyDisabledFlags(config, allEndpoints, strictDefaults);\n } else if (\n strictMode === \"no-bulk\" &&\n ![\"auth\", \"file-upload\"].includes(appModule.toLowerCase())\n ) {\n const noBulkDefaults: Record<string, boolean> = {\n createMany: true,\n updateMany: true,\n deleteMany: true,\n };\n\n applyDisabledFlags(config, allEndpoints, noBulkDefaults);\n }\n\n return config as RouterConfig<T>;\n}\n\nfunction applyDisabledFlags(\n config: any,\n allEndpoints: string[],\n defaults: Record<string, boolean>\n): void {\n if (!config.disable || typeof config.disable === \"boolean\") {\n config.disable = {};\n }\n\n for (const endpoint of allEndpoints) {\n const defaultDisabled = defaults[endpoint];\n const userDisableOverride = config.disable[endpoint];\n const endpointDisabled = config[endpoint]?.disabled;\n\n let finalDisabled: boolean | undefined;\n\n if (endpointDisabled !== undefined) {\n finalDisabled = endpointDisabled;\n } else if (userDisableOverride !== undefined) {\n finalDisabled = userDisableOverride;\n } else if (defaultDisabled !== undefined) {\n finalDisabled = defaultDisabled;\n }\n\n if (finalDisabled !== undefined) {\n config.disable[endpoint] = finalDisabled;\n\n if (!config[endpoint]) {\n config[endpoint] = {};\n }\n config[endpoint].disabled = finalDisabled;\n }\n }\n}\n\nexport function validateRouterConfigConsistency(\n appModule: string,\n config: Record<string, any>\n): void {\n if (!config.disable || typeof config.disable === \"boolean\") return;\n\n const endpoints = Object.keys(config.disable) as any[];\n\n for (const endpoint of endpoints) {\n const oldWayValue = (config.disable as any)[endpoint];\n const newWayValue = (config as any)[endpoint]?.disabled;\n\n if (\n oldWayValue !== undefined &&\n newWayValue !== undefined &&\n oldWayValue !== newWayValue\n ) {\n throw new Error(\n `Conflicting disabled values for endpoint \"${endpoint}\" of module ${appModule}: ` +\n `disable.${endpoint} = ${oldWayValue}, but ${endpoint}.disabled = ${newWayValue}. ` +\n `Please use only one method to disable endpoints.`\n );\n }\n }\n}\n\nexport async function pathExists(path: string) {\n try {\n await fs.promises.stat(path);\n return true;\n } catch (err) {\n return false;\n }\n}\n"]}
@@ -9,10 +9,7 @@ export function fullCleanCwd(path) {
9
9
  if (path.startsWith(`/${process.cwd()}`) ||
10
10
  path.startsWith(`${process.cwd()}`) ||
11
11
  path.startsWith(`${process.cwd()}/`))
12
- return path
13
- .replace(process.cwd(), "")
14
- .replace(/^\/+/g, "")
15
- .replace("\\", "");
12
+ return path.replaceAll(process.cwd(), "").replaceAll(/^\/+/g, "");
16
13
  else
17
14
  return path;
18
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fs.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/fs.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE,CACtB,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM;IAChC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,UAAU;IAC5B,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAQpB,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAEvE,IACE,IAAI,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;QAEpC,OAAO,IAAI;aACR,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;aAC1B,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;aACpB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;;QAClB,OAAO,IAAI,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,IAAI,iBAA0C,CAAC;AAOtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAgB,EAAE;IACpD,IAAI,iBAAiB;QAAE,OAAO,iBAAiB,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAEjC,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;QAE1E,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAEvE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;QAEvD,IAAI,WAAW;YAAE,iBAAiB,GAAG,IAAI,CAAC;aACrC,IAAI,WAAW,IAAI,QAAQ;YAAE,iBAAiB,GAAG,IAAI,CAAC;aACtD,IAAI,QAAQ,IAAI,CAAC,QAAQ;YAAE,iBAAiB,GAAG,IAAI,CAAC;aACpD,IAAI,QAAQ;YAAE,iBAAiB,GAAG,IAAI,CAAC;;YACvC,iBAAiB,GAAG,IAAI,CAAC;QAE9B,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,iBAAiB,GAAG,IAAI,CAAC;QACzB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;AACH,CAAC,CAAC;AAgBF,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\n\nexport const crd = () =>\n process.env.ARKOS_BUILD === \"true\"\n ? process.cwd() + \"/.build/\"\n : process.cwd();\n\n/**\n * Removes the current working directory prefix from the given path.\n * Handles cases with or without a trailing slash in cwd.\n * @param path - The path to clean\n * @returns The path without the cwd prefix\n */\nexport function fullCleanCwd(path: string): string {\n if (typeof path !== \"string\") throw new Error(\"Path must be a string\");\n\n if (\n path.startsWith(`/${process.cwd()}`) ||\n path.startsWith(`${process.cwd()}`) ||\n path.startsWith(`${process.cwd()}/`)\n )\n return path\n .replace(process.cwd(), \"\")\n .replace(/^\\/+/g, \"\")\n .replace(\"\\\\\", \"\");\n else return path;\n}\n\nexport let userFileExtension: \"ts\" | \"js\" | undefined;\n\n/**\n * Detects the file extension that should be used in the current execution context\n * Returns 'ts' when TypeScript config exists and not in build mode, otherwise 'js'\n * @returns 'ts' | 'js'\n */\nexport const getUserFileExtension = (): \"ts\" | \"js\" => {\n if (userFileExtension) return userFileExtension;\n\n try {\n const currentDir = process.cwd();\n\n const hasTsConfig = fs.existsSync(path.join(currentDir, \"tsconfig.json\"));\n\n const hasAppTs = fs.existsSync(path.join(currentDir, \"src\", \"app.ts\"));\n const hasAppJs = fs.existsSync(path.join(currentDir, \"src\", \"app.js\"));\n\n const isBuildMode = process.env.ARKOS_BUILD === \"true\";\n\n if (isBuildMode) userFileExtension = \"js\";\n else if (hasTsConfig && hasAppTs) userFileExtension = \"ts\";\n else if (hasAppTs && !hasAppJs) userFileExtension = \"ts\";\n else if (hasAppJs) userFileExtension = \"js\";\n else userFileExtension = \"js\";\n\n return userFileExtension;\n } catch (e) {\n userFileExtension = \"js\";\n return userFileExtension;\n }\n};\n\n/**\n * Checks if a file exists at the specified file path.\n *\n * @param filePath - The path to the file to check\n * @returns {boolean} True if the file exists, false otherwise or if there's an error\n *\n * @example\n * ```ts\n * const exists = checkFileExists('./path/to/file.txt');\n * if (exists) {\n * console.info('File exists!');\n * }\n * ```\n */\nexport function checkFileExists(filePath: string): boolean {\n try {\n return fs.existsSync(path.resolve(filePath));\n } catch (error) {\n return false;\n }\n}\n"]}
1
+ {"version":3,"file":"fs.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/fs.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE,CACtB,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM;IAChC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,UAAU;IAC5B,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAQpB,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAEvE,IACE,IAAI,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;QAEpC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;;QAC/D,OAAO,IAAI,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,IAAI,iBAA0C,CAAC;AAOtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAgB,EAAE;IACpD,IAAI,iBAAiB;QAAE,OAAO,iBAAiB,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAEjC,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;QAE1E,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAEvE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;QAEvD,IAAI,WAAW;YAAE,iBAAiB,GAAG,IAAI,CAAC;aACrC,IAAI,WAAW,IAAI,QAAQ;YAAE,iBAAiB,GAAG,IAAI,CAAC;aACtD,IAAI,QAAQ,IAAI,CAAC,QAAQ;YAAE,iBAAiB,GAAG,IAAI,CAAC;aACpD,IAAI,QAAQ;YAAE,iBAAiB,GAAG,IAAI,CAAC;;YACvC,iBAAiB,GAAG,IAAI,CAAC;QAE9B,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,iBAAiB,GAAG,IAAI,CAAC;QACzB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;AACH,CAAC,CAAC;AAgBF,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\n\nexport const crd = () =>\n process.env.ARKOS_BUILD === \"true\"\n ? process.cwd() + \"/.build/\"\n : process.cwd();\n\n/**\n * Removes the current working directory prefix from the given path.\n * Handles cases with or without a trailing slash in cwd.\n * @param path - The path to clean\n * @returns The path without the cwd prefix\n */\nexport function fullCleanCwd(path: string): string {\n if (typeof path !== \"string\") throw new Error(\"Path must be a string\");\n\n if (\n path.startsWith(`/${process.cwd()}`) ||\n path.startsWith(`${process.cwd()}`) ||\n path.startsWith(`${process.cwd()}/`)\n )\n return path.replaceAll(process.cwd(), \"\").replaceAll(/^\\/+/g, \"\");\n else return path;\n}\n\nexport let userFileExtension: \"ts\" | \"js\" | undefined;\n\n/**\n * Detects the file extension that should be used in the current execution context\n * Returns 'ts' when TypeScript config exists and not in build mode, otherwise 'js'\n * @returns 'ts' | 'js'\n */\nexport const getUserFileExtension = (): \"ts\" | \"js\" => {\n if (userFileExtension) return userFileExtension;\n\n try {\n const currentDir = process.cwd();\n\n const hasTsConfig = fs.existsSync(path.join(currentDir, \"tsconfig.json\"));\n\n const hasAppTs = fs.existsSync(path.join(currentDir, \"src\", \"app.ts\"));\n const hasAppJs = fs.existsSync(path.join(currentDir, \"src\", \"app.js\"));\n\n const isBuildMode = process.env.ARKOS_BUILD === \"true\";\n\n if (isBuildMode) userFileExtension = \"js\";\n else if (hasTsConfig && hasAppTs) userFileExtension = \"ts\";\n else if (hasAppTs && !hasAppJs) userFileExtension = \"ts\";\n else if (hasAppJs) userFileExtension = \"js\";\n else userFileExtension = \"js\";\n\n return userFileExtension;\n } catch (e) {\n userFileExtension = \"js\";\n return userFileExtension;\n }\n};\n\n/**\n * Checks if a file exists at the specified file path.\n *\n * @param filePath - The path to the file to check\n * @returns {boolean} True if the file exists, false otherwise or if there's an error\n *\n * @example\n * ```ts\n * const exists = checkFileExists('./path/to/file.txt');\n * if (exists) {\n * console.info('File exists!');\n * }\n * ```\n */\nexport function checkFileExists(filePath: string): boolean {\n try {\n return fs.existsSync(path.resolve(filePath));\n } catch (error) {\n return false;\n }\n}\n"]}
@@ -1,3 +1,24 @@
1
+ import { parseQueryParamsWithModifiers } from "./api.features.helpers.js";
2
+ function parseDoubleUnderscore(query) {
3
+ const result = {};
4
+ for (const [key, value] of Object.entries(query)) {
5
+ const parts = key.split("__");
6
+ if (parts.length === 1) {
7
+ result[key] = value;
8
+ }
9
+ else {
10
+ let current = result;
11
+ for (let i = 0; i < parts.length - 1; i++) {
12
+ if (!current[parts[i]]) {
13
+ current[parts[i]] = {};
14
+ }
15
+ current = current[parts[i]];
16
+ }
17
+ current[parts[parts.length - 1]] = value;
18
+ }
19
+ }
20
+ return result;
21
+ }
1
22
  export const parse = (target, options) => {
2
23
  switch (typeof target) {
3
24
  case "string":
@@ -17,6 +38,9 @@ export const parse = (target, options) => {
17
38
  else if (options.parseNumber && !isNaN(Number(target))) {
18
39
  return Number(target);
19
40
  }
41
+ else if (options.parseNumber && !isNaN(Number(target))) {
42
+ return parseQueryParamsWithModifiers(target);
43
+ }
20
44
  else {
21
45
  return target;
22
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query-parser.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/query-parser.helpers.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,MAAmB,EAAE,OAAgB,EAAe,EAAE;IAC1E,QAAQ,OAAO,MAAM,EAAE,CAAC;QACtB,KAAK,QAAQ;YACX,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;gBAClB,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,IAAI,OAAO,CAAC,SAAS,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBAClD,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,IAAI,OAAO,CAAC,cAAc,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC5D,OAAO,SAAS,CAAC;YACnB,CAAC;iBAAM,IACL,OAAO,CAAC,YAAY;gBACpB,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,OAAO,CAAC,EACzC,CAAC;gBACD,OAAO,MAAM,KAAK,MAAM,CAAC;YAC3B,CAAC;iBAAM,IAAI,OAAO,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBACzD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,KAAK,QAAQ;YACX,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,MAAM,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBACxE,OAAO,GAAG,CAAC;YACb,CAAC;QACH;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GACtB,CAAC,OAAgB,EAAE,EAAE,CACrB,CAAC,GAAiB,EAAE,GAAkB,EAAE,IAAuB,EAAE,EAAE;IACjE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,IAAI,EAAE,CAAC;AACT,CAAC,CAAC","sourcesContent":["import { ArkosNextFunction, ArkosRequest, ArkosResponse } from \"../../types\";\n\ntype ParsedQuery = any;\n\nexport interface Options {\n parseNull?: boolean;\n parseUndefined?: boolean;\n parseBoolean?: boolean;\n parseNumber?: boolean;\n}\n\nexport const parse = (target: ParsedQuery, options: Options): ParsedQuery => {\n switch (typeof target) {\n case \"string\":\n if (target === \"\") {\n return \"\";\n } else if (options.parseNull && target === \"null\") {\n return null;\n } else if (options.parseUndefined && target === \"undefined\") {\n return undefined;\n } else if (\n options.parseBoolean &&\n (target === \"true\" || target === \"false\")\n ) {\n return target === \"true\";\n } else if (options.parseNumber && !isNaN(Number(target))) {\n return Number(target);\n } else {\n return target;\n }\n case \"object\":\n if (Array.isArray(target)) {\n return target.map((x) => parse(x, options));\n } else {\n const obj = target;\n Object.keys(obj).map((key) => (obj[key] = parse(target[key], options)));\n return obj;\n }\n default:\n return target;\n }\n};\n\nexport const queryParser =\n (options: Options) =>\n (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => {\n req.query = parse(req.query, options);\n next();\n };\n"]}
1
+ {"version":3,"file":"query-parser.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/query-parser.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { ArkosNextFunction, ArkosRequest, ArkosResponse } from \"../../types\";\nimport { parseQueryParamsWithModifiers } from \"./api.features.helpers\";\n\ntype ParsedQuery = any;\n\nexport interface Options {\n parseNull?: boolean;\n parseUndefined?: boolean;\n parseBoolean?: boolean;\n parseNumber?: boolean;\n parseDoubleUnderscore?: boolean;\n}\n\nfunction parseDoubleUnderscore(\n query: Record<string, any>\n): Record<string, any> {\n const result: Record<string, any> = {};\n\n for (const [key, value] of Object.entries(query)) {\n const parts = key.split(\"__\");\n\n if (parts.length === 1) {\n result[key] = value;\n } else {\n let current = result;\n\n for (let i = 0; i < parts.length - 1; i++) {\n if (!current[parts[i]]) {\n current[parts[i]] = {};\n }\n current = current[parts[i]];\n }\n\n current[parts[parts.length - 1]] = value;\n }\n }\n\n return result;\n}\n\nexport const parse = (target: ParsedQuery, options: Options): ParsedQuery => {\n switch (typeof target) {\n case \"string\":\n if (target === \"\") {\n return \"\";\n } else if (options.parseNull && target === \"null\") {\n return null;\n } else if (options.parseUndefined && target === \"undefined\") {\n return undefined;\n } else if (\n options.parseBoolean &&\n (target === \"true\" || target === \"false\")\n ) {\n return target === \"true\";\n } else if (options.parseNumber && !isNaN(Number(target))) {\n return Number(target);\n } else if (options.parseNumber && !isNaN(Number(target))) {\n return parseQueryParamsWithModifiers(target as any);\n } else {\n return target;\n }\n case \"object\":\n if (Array.isArray(target)) {\n return target.map((x) => parse(x, options));\n } else {\n const obj = target;\n Object.keys(obj).map((key) => (obj[key] = parse(target[key], options)));\n return obj;\n }\n default:\n return target;\n }\n};\n\nexport const queryParser =\n (options: Options) =>\n (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => {\n req.query = parse(req.query, options);\n next();\n };\n"]}
@@ -1,13 +1,15 @@
1
+ import pluralize from "pluralize";
1
2
  import catchAsync from "../../modules/error-handler/utils/catch-async.js";
3
+ import { kebabCase } from "./change-case.helpers.js";
4
+ import { isEndpointDisabled } from "../../modules/base/utils/helpers/base.router.helpers.js";
5
+ import deepmerge from "./deepmerge.helper.js";
2
6
  function throwErrorIfInterceptorIsNotAFunction(middleware) {
3
- if (middleware && typeof middleware !== "function") {
7
+ if (middleware && typeof middleware !== "function")
4
8
  throw Error(`Validation Error: Invalid interceptor of type ${typeof middleware}, they must be a function or an array of function. checkout https://arkosjs.com/docs/core-concepts/interceptor-middlewares`);
5
- }
6
9
  }
7
10
  export const safeCatchAsync = (middleware, options = { type: "normal" }) => {
8
- if (middleware && typeof middleware !== "function") {
11
+ if (middleware && typeof middleware !== "function")
9
12
  throw Error(`Validation Error: Invalid interceptor of type ${typeof middleware}, they must be a function or an array of function. checkout https://arkosjs.com/docs/core-concepts/interceptor-middlewares`);
10
- }
11
13
  return middleware ? catchAsync(middleware, options) : undefined;
12
14
  };
13
15
  export const processMiddleware = (middleware, options = { type: "normal" }) => {
@@ -26,4 +28,53 @@ export const processMiddleware = (middleware, options = { type: "normal" }) => {
26
28
  return [safeCatchAsync(middleware, options)];
27
29
  }
28
30
  };
31
+ export function getAuthenticationConfig(endpoint, modelName, authConfigs) {
32
+ const actionMap = {
33
+ createOne: "Create",
34
+ findOneAuthAction: "View",
35
+ findManyAuthAction: "View",
36
+ findMany: "View",
37
+ createMany: "Create",
38
+ updateMany: "Update",
39
+ deleteMany: "Delete",
40
+ findOne: "View",
41
+ updateOne: "Update",
42
+ deleteOne: "Delete",
43
+ };
44
+ const action = actionMap[endpoint];
45
+ const authenticationControl = authConfigs?.authenticationControl;
46
+ if (authenticationControl === true)
47
+ return true;
48
+ else if ((authenticationControl &&
49
+ typeof authenticationControl === "object" &&
50
+ (authenticationControl[action] === true ||
51
+ authenticationControl[action] !== false)) ||
52
+ (!authenticationControl && authenticationControl !== false)) {
53
+ return {
54
+ resource: kebabCase(pluralize.singular(modelName)),
55
+ action: action,
56
+ rule: Array.isArray(authConfigs?.accessControl)
57
+ ? authConfigs?.accessControl
58
+ : (authConfigs?.accessControl || {})?.[action],
59
+ };
60
+ }
61
+ return false;
62
+ }
63
+ export function createRouteConfig(arkosConfig, endpoint, routeName, path, routerConfig, modelNameInKebab, authConfigs, validationSchema) {
64
+ let config = {
65
+ path: `/${routeName}${path}`,
66
+ disabled: isEndpointDisabled(routerConfig, endpoint),
67
+ ...(arkosConfig.authentication?.mode && {
68
+ authentication: typeof authConfigs === "boolean"
69
+ ? authConfigs
70
+ : getAuthenticationConfig(endpoint, modelNameInKebab, authConfigs),
71
+ }),
72
+ validation: validationSchema ? { body: validationSchema } : undefined,
73
+ experimental: { openapi: false },
74
+ };
75
+ const endpointConfig = routerConfig[endpoint];
76
+ if (endpointConfig)
77
+ config = deepmerge(config, endpointConfig);
78
+ return config;
79
+ }
29
80
  //# sourceMappingURL=routers.helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"routers.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/routers.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,UAEN,MAAM,+CAA+C,CAAC;AAEvD,SAAS,qCAAqC,CAAC,UAAe;IAC5D,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;QACnD,MAAM,KAAK,CACT,iDAAiD,OAAO,UAAU,4HAA4H,CAC/L,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,UAAe,EACf,UAAwC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAC1D,EAAE;IAEF,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;QACnD,MAAM,KAAK,CACT,iDAAiD,OAAO,UAAU,4HAA4H,CAC/L,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,UAAe,EACf,UAAwC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAC1D,EAAE;IACF,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,UAAU;aACd,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACV,qCAAqC,CAAC,EAAE,CAAC,CAAC;YAC1C,OAAO,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC,CAA2B,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,qCAAqC,CAAC,UAAU,CAAC,CAAC;QAClD,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAA2B,CAAC;IACzE,CAAC;AACH,CAAC,CAAC","sourcesContent":["import catchAsync, {\n CatchAsyncReturnType,\n} from \"../../modules/error-handler/utils/catch-async\";\n\nfunction throwErrorIfInterceptorIsNotAFunction(middleware: any) {\n if (middleware && typeof middleware !== \"function\") {\n throw Error(\n `Validation Error: Invalid interceptor of type ${typeof middleware}, they must be a function or an array of function. checkout https://arkosjs.com/docs/core-concepts/interceptor-middlewares`\n );\n }\n}\n\nexport const safeCatchAsync = (\n middleware: any,\n options: { type: \"error\" | \"normal\" } = { type: \"normal\" }\n) => {\n // Check for truthy non-function values and throw error\n if (middleware && typeof middleware !== \"function\") {\n throw Error(\n `Validation Error: Invalid interceptor of type ${typeof middleware}, they must be a function or an array of function. checkout https://arkosjs.com/docs/core-concepts/interceptor-middlewares`\n );\n }\n\n return middleware ? catchAsync(middleware, options) : undefined;\n};\n\n// Helper function to handle middleware arrays or single functions\nexport const processMiddleware = (\n middleware: any,\n options: { type: \"error\" | \"normal\" } = { type: \"normal\" }\n) => {\n if (!middleware) return [];\n if (Array.isArray(middleware)) {\n return middleware\n .filter((mw) => !!mw)\n .map((mw) => {\n throwErrorIfInterceptorIsNotAFunction(mw);\n return safeCatchAsync(mw, options);\n }) as CatchAsyncReturnType[];\n } else {\n throwErrorIfInterceptorIsNotAFunction(middleware);\n return [safeCatchAsync(middleware, options)] as CatchAsyncReturnType[];\n }\n};\n"]}
1
+ {"version":3,"file":"routers.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/routers.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import pluralize from \"pluralize\";\nimport catchAsync, {\n CatchAsyncReturnType,\n} from \"../../modules/error-handler/utils/catch-async\";\nimport { AccessAction, AuthConfigs } from \"../../types/auth\";\nimport { kebabCase } from \"./change-case.helpers\";\nimport {\n AuthRouterEndpoint,\n RouterConfig,\n RouterEndpoint,\n} from \"../../types/router-config\";\nimport { isEndpointDisabled } from \"../../modules/base/utils/helpers/base.router.helpers\";\nimport deepmerge from \"./deepmerge.helper\";\nimport { ArkosRouteConfig } from \"../arkos-router/types\";\nimport { getArkosConfig } from \"./arkos-config.helpers\";\nimport { ArkosConfig } from \"../../exports\";\n\nfunction throwErrorIfInterceptorIsNotAFunction(middleware: any) {\n if (middleware && typeof middleware !== \"function\")\n throw Error(\n `Validation Error: Invalid interceptor of type ${typeof middleware}, they must be a function or an array of function. checkout https://arkosjs.com/docs/core-concepts/interceptor-middlewares`\n );\n}\n\nexport const safeCatchAsync = (\n middleware: any,\n options: { type: \"error\" | \"normal\" } = { type: \"normal\" }\n) => {\n if (middleware && typeof middleware !== \"function\")\n throw Error(\n `Validation Error: Invalid interceptor of type ${typeof middleware}, they must be a function or an array of function. checkout https://arkosjs.com/docs/core-concepts/interceptor-middlewares`\n );\n\n return middleware ? catchAsync(middleware, options) : undefined;\n};\n\nexport const processMiddleware = (\n middleware: any,\n options: { type: \"error\" | \"normal\" } = { type: \"normal\" }\n) => {\n if (!middleware) return [];\n if (Array.isArray(middleware)) {\n return middleware\n .filter((mw) => !!mw)\n .map((mw) => {\n throwErrorIfInterceptorIsNotAFunction(mw);\n return safeCatchAsync(mw, options);\n }) as CatchAsyncReturnType[];\n } else {\n throwErrorIfInterceptorIsNotAFunction(middleware);\n return [safeCatchAsync(middleware, options)] as CatchAsyncReturnType[];\n }\n};\n\nexport function getAuthenticationConfig(\n endpoint: RouterEndpoint | AuthRouterEndpoint,\n modelName: string,\n authConfigs?: AuthConfigs\n) {\n const actionMap: Record<any, AccessAction> = {\n createOne: \"Create\",\n findOneAuthAction: \"View\",\n findManyAuthAction: \"View\",\n findMany: \"View\",\n createMany: \"Create\",\n updateMany: \"Update\",\n deleteMany: \"Delete\",\n findOne: \"View\",\n updateOne: \"Update\",\n deleteOne: \"Delete\",\n };\n\n const action = actionMap[endpoint];\n const authenticationControl = authConfigs?.authenticationControl;\n\n if (authenticationControl === true) return true;\n else if (\n (authenticationControl &&\n typeof authenticationControl === \"object\" &&\n (authenticationControl[action] === true ||\n authenticationControl[action] !== false)) ||\n (!authenticationControl && authenticationControl !== false)\n ) {\n return {\n resource: kebabCase(pluralize.singular(modelName)),\n action: action,\n rule: Array.isArray(authConfigs?.accessControl)\n ? authConfigs?.accessControl\n : (authConfigs?.accessControl || {})?.[action],\n };\n }\n\n return false;\n}\n\n/**\n * Creates a route configuration object for a specific endpoint\n * @param endpoint - The router endpoint type\n * @param routeName - The pluralized route name (e.g., \"users\")\n * @param path - The path suffix for the route (e.g., \"\", \"/:id\", \"/many\")\n * @param routerConfig - The router configuration object\n * @param modelNameInKebab - The model name in kebab-case\n * @param authConfigs - Authentication configurations\n * @param validationSchema - Optional validation schema for the endpoint\n * @returns Route configuration object\n */\nexport function createRouteConfig(\n arkosConfig: ArkosConfig,\n endpoint: RouterEndpoint | AuthRouterEndpoint,\n routeName: string,\n path: string,\n routerConfig: RouterConfig<any>,\n modelNameInKebab: string,\n authConfigs: any,\n validationSchema?: any\n) {\n let config: ArkosRouteConfig = {\n path: `/${routeName}${path}`,\n disabled: isEndpointDisabled(routerConfig, endpoint),\n ...(arkosConfig.authentication?.mode && {\n authentication:\n typeof authConfigs === \"boolean\"\n ? authConfigs\n : getAuthenticationConfig(endpoint, modelNameInKebab, authConfigs),\n }),\n validation: validationSchema ? { body: validationSchema } : undefined,\n experimental: { openapi: false },\n };\n\n const endpointConfig = (routerConfig as any)[endpoint];\n if (endpointConfig) config = deepmerge(config, endpointConfig);\n\n return config;\n}\n"]}
@@ -6,7 +6,7 @@ export class PrismaJsonSchemaGenerator {
6
6
  constructor() {
7
7
  this.schema = prismaSchemaParser.parse();
8
8
  }
9
- async generateModelSchemas(config) {
9
+ generateModelSchemas(config) {
10
10
  const { modelName, arkosConfig, schemasToGenerate = [
11
11
  "model",
12
12
  "login",
@@ -38,50 +38,50 @@ export class PrismaJsonSchemaGenerator {
38
38
  return {};
39
39
  const schemas = {};
40
40
  if (isAuthModule) {
41
- await this.generateAuthSchemas(this.schema.models.find((m) => m.name.toLowerCase() === "user"), schemas, arkosConfig, schemasToGenerate, prismaQueryOptions);
41
+ this.generateAuthSchemas(this.schema.models.find((m) => m.name.toLowerCase() === "user"), schemas, arkosConfig, schemasToGenerate, prismaQueryOptions);
42
42
  }
43
43
  else {
44
44
  if (model)
45
- await this.generateCrudSchemas(model, schemas, arkosConfig, schemasToGenerate, prismaQueryOptions, routerConfig);
45
+ this.generateCrudSchemas(model, schemas, arkosConfig, schemasToGenerate, prismaQueryOptions, routerConfig);
46
46
  }
47
47
  return { ...schemas };
48
48
  }
49
- async generateAuthSchemas(model, schemas, arkosConfig, schemasToGenerate, queryOptions, routerConfig) {
49
+ generateAuthSchemas(model, schemas, arkosConfig, schemasToGenerate, queryOptions, routerConfig) {
50
50
  const modelName = "Auth";
51
51
  if (!arkosConfig?.authentication)
52
52
  return schemas;
53
53
  if (schemasToGenerate.includes("login") &&
54
54
  !this.isEndpointDisabled("login", routerConfig) &&
55
- !(await localValidatorFileExists("login", modelName, arkosConfig))) {
55
+ !localValidatorFileExists("login", modelName, arkosConfig)) {
56
56
  schemas[`LoginSchema`] = this.generateLoginSchema(arkosConfig);
57
57
  }
58
58
  if (schemasToGenerate.includes("signup") &&
59
59
  !this.isEndpointDisabled("signup", routerConfig) &&
60
- !(await localValidatorFileExists("signup", modelName, arkosConfig))) {
60
+ !localValidatorFileExists("signup", modelName, arkosConfig)) {
61
61
  schemas[`SignupSchema`] = this.generateSignupSchema(model, queryOptions?.signup);
62
62
  }
63
63
  if (schemasToGenerate.includes("updateMe") &&
64
64
  !this.isEndpointDisabled("updateMe", routerConfig) &&
65
- !(await localValidatorFileExists("updateMe", modelName, arkosConfig))) {
65
+ !localValidatorFileExists("updateMe", modelName, arkosConfig)) {
66
66
  schemas[`UpdateMeSchema`] = this.generateUpdateMeSchema(model, queryOptions?.updateMe);
67
67
  }
68
68
  if (schemasToGenerate.includes("updatePassword") &&
69
69
  !this.isEndpointDisabled("updatePassword", routerConfig) &&
70
- !(await localValidatorFileExists("updatePassword", modelName, arkosConfig))) {
70
+ !localValidatorFileExists("updatePassword", modelName, arkosConfig)) {
71
71
  schemas[`UpdatePasswordSchema`] = this.generateUpdatePasswordSchema(model, queryOptions?.updatePassword);
72
72
  }
73
73
  if (schemasToGenerate.includes("getMe") &&
74
74
  !this.isEndpointDisabled("getMe", routerConfig) &&
75
- !(await localValidatorFileExists("getMe", modelName, arkosConfig))) {
75
+ !localValidatorFileExists("getMe", modelName, arkosConfig)) {
76
76
  schemas[`GetMeSchema`] = this.generateResponseSchema(model, queryOptions?.getMe || {}, "findOne");
77
77
  }
78
78
  }
79
- async generateCrudSchemas(model, schemas, arkosConfig, schemasToGenerate, queryOptions, routerConfig) {
79
+ generateCrudSchemas(model, schemas, arkosConfig, schemasToGenerate, queryOptions, routerConfig) {
80
80
  const modelName = model.name;
81
- const ensureBaseSchemaReference = async (operation, modelName) => {
81
+ const ensureBaseSchemaReference = (operation, modelName) => {
82
82
  const suffix = arkosConfig.validation?.resolver === "zod" ? "Schema" : "Dto";
83
83
  const singleOpName = operation === "Create" ? "createOne" : "updateOne";
84
- const hasLocalValidator = await localValidatorFileExists(singleOpName, modelName, arkosConfig);
84
+ const hasLocalValidator = localValidatorFileExists(singleOpName, modelName, arkosConfig);
85
85
  if (hasLocalValidator)
86
86
  return `${operation}${modelName}${suffix}`;
87
87
  else {
@@ -99,13 +99,13 @@ export class PrismaJsonSchemaGenerator {
99
99
  };
100
100
  if (schemasToGenerate.includes("createOne") &&
101
101
  !this.isEndpointDisabled("createOne", routerConfig) &&
102
- !(await localValidatorFileExists("createOne", modelName, arkosConfig))) {
102
+ !localValidatorFileExists("createOne", modelName, arkosConfig)) {
103
103
  schemas[`Create${modelName}ModelSchema`] = this.generateCreateSchema(model, this.resolvePrismaQueryOptions(queryOptions, "createOne"));
104
104
  }
105
105
  if (schemasToGenerate.includes("createMany") &&
106
106
  !this.isEndpointDisabled("createMany", routerConfig) &&
107
- !(await localValidatorFileExists("createMany", modelName, arkosConfig))) {
108
- const baseSchemaKey = await ensureBaseSchemaReference("Create", modelName);
107
+ !localValidatorFileExists("createMany", modelName, arkosConfig)) {
108
+ const baseSchemaKey = ensureBaseSchemaReference("Create", modelName);
109
109
  schemas[`CreateMany${modelName}ModelSchema`] = {
110
110
  type: "array",
111
111
  items: { $ref: `#/components/schemas/${baseSchemaKey}` },
@@ -113,33 +113,22 @@ export class PrismaJsonSchemaGenerator {
113
113
  }
114
114
  if (schemasToGenerate.includes("updateOne") &&
115
115
  !this.isEndpointDisabled("updateOne", routerConfig) &&
116
- !(await localValidatorFileExists("updateOne", modelName, arkosConfig))) {
116
+ !localValidatorFileExists("updateOne", modelName, arkosConfig)) {
117
117
  schemas[`Update${modelName}ModelSchema`] = this.generateUpdateSchema(model, this.resolvePrismaQueryOptions(queryOptions, "updateOne"));
118
118
  }
119
119
  if (schemasToGenerate.includes("updateMany") &&
120
120
  !this.isEndpointDisabled("updateMany", routerConfig) &&
121
- !(await localValidatorFileExists("updateMany", modelName, arkosConfig))) {
122
- const baseSchemaKey = await ensureBaseSchemaReference("Update", modelName);
123
- schemas[`UpdateMany${modelName}ModelSchema`] = {
124
- type: "object",
125
- properties: {
126
- data: {
127
- type: "object",
128
- $ref: `#/components/schemas/${baseSchemaKey}`,
129
- },
130
- where: { type: "object" },
131
- },
132
- required: ["data"],
133
- };
121
+ !localValidatorFileExists("updateMany", modelName, arkosConfig)) {
122
+ schemas[`UpdateMany${modelName}ModelSchema`] = this.generateUpdateSchema(model, this.resolvePrismaQueryOptions(queryOptions, "updateOne"));
134
123
  }
135
124
  if (schemasToGenerate.includes("findOne") &&
136
125
  !this.isEndpointDisabled("findOne", routerConfig) &&
137
- !(await localValidatorFileExists("findOne", modelName, arkosConfig))) {
126
+ !localValidatorFileExists("findOne", modelName, arkosConfig)) {
138
127
  schemas[`FindOne${modelName}ModelSchema`] = this.generateResponseSchema(model, this.resolvePrismaQueryOptions(queryOptions, "findOne"), "findOne");
139
128
  }
140
129
  if (schemasToGenerate.includes("findMany") &&
141
130
  !this.isEndpointDisabled("findMany", routerConfig) &&
142
- !(await localValidatorFileExists("findMany", modelName, arkosConfig))) {
131
+ !localValidatorFileExists("findMany", modelName, arkosConfig)) {
143
132
  schemas[`FindMany${modelName}ModelSchema`] = {
144
133
  type: "array",
145
134
  items: this.generateResponseSchema(model, this.resolvePrismaQueryOptions(queryOptions, "findMany"), "findMany"),