arkos 1.2.32-test → 1.3.0-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/app.js +1 -1
  3. package/dist/cjs/app.js.map +1 -1
  4. package/dist/cjs/exports/auth/index.js +1 -6
  5. package/dist/cjs/exports/controllers/index.js +1 -11
  6. package/dist/cjs/exports/error-handler/index.js +1 -11
  7. package/dist/cjs/exports/index.js +1 -12
  8. package/dist/cjs/exports/middlewares/index.js +1 -7
  9. package/dist/cjs/exports/prisma/index.js +1 -6
  10. package/dist/cjs/exports/prisma/index.js.map +1 -1
  11. package/dist/cjs/exports/services/index.js +1 -49
  12. package/dist/cjs/exports/services/index.js.map +1 -1
  13. package/dist/cjs/exports/utils/index.js +1 -44
  14. package/dist/cjs/exports/validation/index.js +1 -11
  15. package/dist/cjs/modules/auth/auth.controller.js +1 -194
  16. package/dist/cjs/modules/auth/auth.controller.js.map +1 -1
  17. package/dist/cjs/modules/auth/auth.router.js +1 -50
  18. package/dist/cjs/modules/auth/auth.router.js.map +1 -1
  19. package/dist/cjs/modules/auth/auth.service.js +1 -185
  20. package/dist/cjs/modules/auth/auth.service.js.map +1 -1
  21. package/dist/cjs/modules/auth/utils/auth-error-objects.js +1 -0
  22. package/dist/cjs/modules/auth/utils/auth-error-objects.js.map +1 -0
  23. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +1 -83
  24. package/dist/cjs/modules/auth/utils/services/auth-action.service.js +1 -0
  25. package/dist/cjs/modules/auth/utils/services/auth-action.service.js.map +1 -0
  26. package/dist/cjs/modules/base/base.controller.js +1 -158
  27. package/dist/cjs/modules/base/base.controller.js.map +1 -1
  28. package/dist/cjs/modules/base/base.middlewares.js +1 -92
  29. package/dist/cjs/modules/base/base.middlewares.js.map +1 -1
  30. package/dist/cjs/modules/base/base.router.js +1 -24
  31. package/dist/cjs/modules/base/base.router.js.map +1 -1
  32. package/dist/cjs/modules/base/base.service.js +1 -128
  33. package/dist/cjs/modules/base/base.service.js.map +1 -1
  34. package/dist/cjs/modules/base/types/base.service.types.js +1 -0
  35. package/dist/cjs/modules/base/types/base.service.types.js.map +1 -0
  36. package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js +1 -82
  37. package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js.map +1 -1
  38. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +1 -50
  39. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +1 -97
  40. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  41. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +1 -171
  42. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
  43. package/dist/cjs/modules/base/utils/router-validator.js +1 -0
  44. package/dist/cjs/modules/base/utils/router-validator.js.map +1 -0
  45. package/dist/cjs/modules/base/utils/service-hooks-manager.js +1 -0
  46. package/dist/cjs/modules/base/utils/service-hooks-manager.js.map +1 -0
  47. package/dist/cjs/modules/email/email.service.js +1 -104
  48. package/dist/cjs/modules/error-handler/error-handler.controller.js +4 -146
  49. package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
  50. package/dist/cjs/modules/error-handler/utils/app-error.js +1 -17
  51. package/dist/cjs/modules/error-handler/utils/app-error.js.map +1 -1
  52. package/dist/cjs/modules/error-handler/utils/catch-async.js +1 -12
  53. package/dist/cjs/modules/error-handler/utils/catch-async.js.map +1 -1
  54. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +3 -201
  55. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
  56. package/dist/cjs/modules/file-upload/file-upload.controller.js +1 -271
  57. package/dist/cjs/modules/file-upload/file-upload.controller.js.map +1 -1
  58. package/dist/cjs/modules/file-upload/file-upload.router.js +1 -44
  59. package/dist/cjs/modules/file-upload/file-upload.router.js.map +1 -1
  60. package/dist/cjs/modules/file-upload/file-upload.service.js +1 -322
  61. package/dist/cjs/modules/file-upload/file-upload.service.js.map +1 -1
  62. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -97
  63. package/dist/cjs/modules/swagger/swagger.router.js +1 -99
  64. package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
  65. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -250
  66. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -1
  67. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +1 -0
  68. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +1 -0
  69. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -66
  70. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -1
  71. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -41
  72. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -1
  73. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +1 -22
  74. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -1
  75. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +1 -0
  76. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js.map +1 -0
  77. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +1 -0
  78. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +1 -0
  79. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +1 -0
  80. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +1 -0
  81. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +1 -0
  82. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js.map +1 -0
  83. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -0
  84. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -0
  85. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -94
  86. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -1
  87. package/dist/cjs/package.json +3 -0
  88. package/dist/cjs/server.js +4 -2
  89. package/dist/cjs/server.js.map +1 -1
  90. package/dist/cjs/types/arkos-config.js +1 -3
  91. package/dist/cjs/types/arkos-config.js.map +1 -1
  92. package/dist/cjs/types/auth.js +1 -3
  93. package/dist/cjs/types/auth.js.map +1 -1
  94. package/dist/cjs/types/index.js +1 -11
  95. package/dist/cjs/types/index.js.map +1 -1
  96. package/dist/cjs/types/router-config.js +1 -3
  97. package/dist/cjs/types/router-config.js.map +1 -1
  98. package/dist/cjs/utils/arkos-env.js +1 -9
  99. package/dist/cjs/utils/cli/build.js +5 -212
  100. package/dist/cjs/utils/cli/build.js.map +1 -1
  101. package/dist/cjs/utils/cli/dev.js +3 -256
  102. package/dist/cjs/utils/cli/dev.js.map +1 -1
  103. package/dist/cjs/utils/cli/generate.js +1 -189
  104. package/dist/cjs/utils/cli/generate.js.map +1 -1
  105. package/dist/cjs/utils/cli/index.js +1 -81
  106. package/dist/cjs/utils/cli/index.js.map +1 -1
  107. package/dist/cjs/utils/cli/start.js +1 -93
  108. package/dist/cjs/utils/cli/start.js.map +1 -1
  109. package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -24
  110. package/dist/cjs/utils/cli/utils/smart-fs-watcher.js +1 -0
  111. package/dist/cjs/utils/cli/utils/smart-fs-watcher.js.map +1 -0
  112. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +5 -20
  113. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +9 -18
  114. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +1 -1
  115. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-hooks-template.js +144 -0
  116. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-hooks-template.js.map +1 -0
  117. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +156 -135
  118. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +1 -1
  119. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +9 -37
  120. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +1 -1
  121. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +11 -36
  122. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -1
  123. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js +6 -32
  124. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
  125. package/dist/cjs/utils/cli/utils/template-generators.js +2 -28
  126. package/dist/cjs/utils/cli/utils/template-generators.js.map +1 -1
  127. package/dist/cjs/utils/cli/utils/watermark-stamper.js +3 -0
  128. package/dist/cjs/utils/cli/utils/watermark-stamper.js.map +1 -0
  129. package/dist/cjs/utils/dotenv.helpers.js +1 -43
  130. package/dist/cjs/utils/dynamic-loader.js +9 -0
  131. package/dist/cjs/utils/dynamic-loader.js.map +1 -0
  132. package/dist/cjs/utils/features/api.features.js +1 -167
  133. package/dist/cjs/utils/features/api.features.js.map +1 -1
  134. package/dist/cjs/utils/features/change-case.features.js +1 -67
  135. package/dist/cjs/utils/features/port-and-host-allocator.js +1 -0
  136. package/dist/cjs/utils/features/port-and-host-allocator.js.map +1 -0
  137. package/dist/cjs/utils/helpers/api.features.helpers.js +1 -106
  138. package/dist/cjs/utils/helpers/api.features.helpers.js.map +1 -1
  139. package/dist/cjs/utils/helpers/change-case.helpers.js +1 -177
  140. package/dist/cjs/utils/helpers/deepmerge.helper.js +1 -115
  141. package/dist/cjs/utils/helpers/dynamic-loader.helpers.js +1 -0
  142. package/dist/cjs/utils/helpers/dynamic-loader.helpers.js.map +1 -0
  143. package/dist/cjs/utils/helpers/fs.helpers.js +1 -61
  144. package/dist/cjs/utils/helpers/fs.helpers.js.map +1 -1
  145. package/dist/cjs/utils/helpers/global.helpers.js +1 -89
  146. package/dist/cjs/utils/helpers/global.helpers.js.map +1 -1
  147. package/dist/cjs/utils/helpers/prisma.helpers.js +1 -52
  148. package/dist/cjs/utils/helpers/prisma.helpers.js.map +1 -1
  149. package/dist/cjs/utils/helpers/query-parser.helpers.js +1 -45
  150. package/dist/cjs/utils/helpers/routers.helpers.js +1 -21
  151. package/dist/cjs/utils/helpers/routers.helpers.js.map +1 -1
  152. package/dist/cjs/utils/helpers/text.helpers.js +1 -28
  153. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +1 -0
  154. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js.map +1 -0
  155. package/dist/cjs/utils/prisma/prisma-schema-parser.js +4 -0
  156. package/dist/cjs/utils/prisma/prisma-schema-parser.js.map +1 -0
  157. package/dist/cjs/utils/prisma/types.js +1 -0
  158. package/dist/cjs/utils/prisma/types.js.map +1 -0
  159. package/dist/cjs/utils/sheu.js +1 -119
  160. package/dist/cjs/utils/sheu.js.map +1 -1
  161. package/dist/cjs/utils/validate-dto.js +1 -17
  162. package/dist/cjs/utils/validate-dto.js.map +1 -1
  163. package/dist/cjs/utils/validate-schema.js +1 -15
  164. package/dist/cjs/utils/validate-schema.js.map +1 -1
  165. package/dist/esm/app.js +1 -1
  166. package/dist/esm/app.js.map +1 -1
  167. package/dist/esm/exports/auth/index.js +1 -2
  168. package/dist/esm/exports/controllers/index.js +1 -4
  169. package/dist/esm/exports/error-handler/index.js +1 -4
  170. package/dist/esm/exports/index.js +1 -8
  171. package/dist/esm/exports/middlewares/index.js +1 -2
  172. package/dist/esm/exports/prisma/index.js +1 -3
  173. package/dist/esm/exports/prisma/index.js.map +1 -1
  174. package/dist/esm/exports/services/index.js +1 -9
  175. package/dist/esm/exports/services/index.js.map +1 -1
  176. package/dist/esm/exports/utils/index.js +1 -4
  177. package/dist/esm/exports/validation/index.js +1 -4
  178. package/dist/esm/modules/auth/auth.controller.js +1 -187
  179. package/dist/esm/modules/auth/auth.controller.js.map +1 -1
  180. package/dist/esm/modules/auth/auth.router.js +1 -44
  181. package/dist/esm/modules/auth/auth.router.js.map +1 -1
  182. package/dist/esm/modules/auth/auth.service.js +1 -178
  183. package/dist/esm/modules/auth/auth.service.js.map +1 -1
  184. package/dist/esm/modules/auth/utils/auth-error-objects.js +1 -0
  185. package/dist/esm/modules/auth/utils/auth-error-objects.js.map +1 -0
  186. package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js +1 -73
  187. package/dist/esm/modules/auth/utils/services/auth-action.service.js +1 -0
  188. package/dist/esm/modules/auth/utils/services/auth-action.service.js.map +1 -0
  189. package/dist/esm/modules/base/base.controller.js +1 -150
  190. package/dist/esm/modules/base/base.controller.js.map +1 -1
  191. package/dist/esm/modules/base/base.middlewares.js +1 -81
  192. package/dist/esm/modules/base/base.middlewares.js.map +1 -1
  193. package/dist/esm/modules/base/base.router.js +1 -17
  194. package/dist/esm/modules/base/base.router.js.map +1 -1
  195. package/dist/esm/modules/base/base.service.js +1 -120
  196. package/dist/esm/modules/base/base.service.js.map +1 -1
  197. package/dist/esm/modules/base/types/base.service.types.js +1 -0
  198. package/dist/esm/modules/base/types/base.service.types.js.map +1 -0
  199. package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js +1 -77
  200. package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js.map +1 -1
  201. package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js +1 -44
  202. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +1 -89
  203. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  204. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +1 -165
  205. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
  206. package/dist/esm/modules/base/utils/router-validator.js +1 -0
  207. package/dist/esm/modules/base/utils/router-validator.js.map +1 -0
  208. package/dist/esm/modules/base/utils/service-hooks-manager.js +1 -0
  209. package/dist/esm/modules/base/utils/service-hooks-manager.js.map +1 -0
  210. package/dist/esm/modules/email/email.service.js +1 -97
  211. package/dist/esm/modules/error-handler/error-handler.controller.js +4 -107
  212. package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -1
  213. package/dist/esm/modules/error-handler/utils/app-error.js +1 -15
  214. package/dist/esm/modules/error-handler/utils/app-error.js.map +1 -1
  215. package/dist/esm/modules/error-handler/utils/catch-async.js +1 -10
  216. package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -1
  217. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +3 -160
  218. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
  219. package/dist/esm/modules/file-upload/file-upload.controller.js +1 -266
  220. package/dist/esm/modules/file-upload/file-upload.controller.js.map +1 -1
  221. package/dist/esm/modules/file-upload/file-upload.router.js +1 -38
  222. package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -1
  223. package/dist/esm/modules/file-upload/file-upload.service.js +1 -314
  224. package/dist/esm/modules/file-upload/file-upload.service.js.map +1 -1
  225. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -87
  226. package/dist/esm/modules/swagger/swagger.router.js +1 -93
  227. package/dist/esm/modules/swagger/swagger.router.js.map +1 -1
  228. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -247
  229. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -1
  230. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js +1 -0
  231. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +1 -0
  232. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -63
  233. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -1
  234. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -38
  235. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -1
  236. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +1 -19
  237. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -1
  238. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +1 -0
  239. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js.map +1 -0
  240. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +1 -0
  241. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +1 -0
  242. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +1 -0
  243. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +1 -0
  244. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +1 -0
  245. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js.map +1 -0
  246. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -0
  247. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -0
  248. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -84
  249. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -1
  250. package/dist/esm/package.json +3 -0
  251. package/dist/esm/server.js +4 -2
  252. package/dist/esm/server.js.map +1 -1
  253. package/dist/esm/types/arkos-config.js +1 -2
  254. package/dist/esm/types/arkos-config.js.map +1 -1
  255. package/dist/esm/types/auth.js +1 -2
  256. package/dist/esm/types/auth.js.map +1 -1
  257. package/dist/esm/types/index.js +1 -8
  258. package/dist/esm/types/index.js.map +1 -1
  259. package/dist/esm/types/router-config.js +1 -2
  260. package/dist/esm/types/router-config.js.map +1 -1
  261. package/dist/esm/utils/arkos-env.js +1 -7
  262. package/dist/esm/utils/cli/build.js +5 -206
  263. package/dist/esm/utils/cli/build.js.map +1 -1
  264. package/dist/esm/utils/cli/dev.js +3 -249
  265. package/dist/esm/utils/cli/dev.js.map +1 -1
  266. package/dist/esm/utils/cli/generate.js +1 -183
  267. package/dist/esm/utils/cli/generate.js.map +1 -1
  268. package/dist/esm/utils/cli/index.js +1 -74
  269. package/dist/esm/utils/cli/index.js.map +1 -1
  270. package/dist/esm/utils/cli/start.js +1 -86
  271. package/dist/esm/utils/cli/start.js.map +1 -1
  272. package/dist/esm/utils/cli/utils/cli.helpers.js +1 -16
  273. package/dist/esm/utils/cli/utils/smart-fs-watcher.js +1 -0
  274. package/dist/esm/utils/cli/utils/smart-fs-watcher.js.map +1 -0
  275. package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +5 -17
  276. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +9 -15
  277. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +1 -1
  278. package/dist/esm/utils/cli/utils/template-generator/templates/generate-hooks-template.js +144 -0
  279. package/dist/esm/utils/cli/utils/template-generator/templates/generate-hooks-template.js.map +1 -0
  280. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js +156 -132
  281. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +1 -1
  282. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +9 -34
  283. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +1 -1
  284. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js +11 -30
  285. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -1
  286. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js +6 -29
  287. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
  288. package/dist/esm/utils/cli/utils/template-generators.js +2 -25
  289. package/dist/esm/utils/cli/utils/template-generators.js.map +1 -1
  290. package/dist/esm/utils/cli/utils/watermark-stamper.js +3 -0
  291. package/dist/esm/utils/cli/utils/watermark-stamper.js.map +1 -0
  292. package/dist/esm/utils/dotenv.helpers.js +1 -37
  293. package/dist/esm/utils/dynamic-loader.js +9 -0
  294. package/dist/esm/utils/dynamic-loader.js.map +1 -0
  295. package/dist/esm/utils/features/api.features.js +1 -160
  296. package/dist/esm/utils/features/api.features.js.map +1 -1
  297. package/dist/esm/utils/features/change-case.features.js +1 -31
  298. package/dist/esm/utils/features/port-and-host-allocator.js +1 -0
  299. package/dist/esm/utils/features/port-and-host-allocator.js.map +1 -0
  300. package/dist/esm/utils/helpers/api.features.helpers.js +1 -103
  301. package/dist/esm/utils/helpers/api.features.helpers.js.map +1 -1
  302. package/dist/esm/utils/helpers/change-case.helpers.js +1 -161
  303. package/dist/esm/utils/helpers/deepmerge.helper.js +1 -113
  304. package/dist/esm/utils/helpers/dynamic-loader.helpers.js +1 -0
  305. package/dist/esm/utils/helpers/dynamic-loader.helpers.js.map +1 -0
  306. package/dist/esm/utils/helpers/fs.helpers.js +1 -52
  307. package/dist/esm/utils/helpers/fs.helpers.js.map +1 -1
  308. package/dist/esm/utils/helpers/global.helpers.js +1 -47
  309. package/dist/esm/utils/helpers/global.helpers.js.map +1 -1
  310. package/dist/esm/utils/helpers/prisma.helpers.js +1 -44
  311. package/dist/esm/utils/helpers/prisma.helpers.js.map +1 -1
  312. package/dist/esm/utils/helpers/query-parser.helpers.js +1 -40
  313. package/dist/esm/utils/helpers/routers.helpers.js +1 -16
  314. package/dist/esm/utils/helpers/routers.helpers.js.map +1 -1
  315. package/dist/esm/utils/helpers/text.helpers.js +1 -22
  316. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +1 -0
  317. package/dist/esm/utils/prisma/prisma-json-schema-generator.js.map +1 -0
  318. package/dist/esm/utils/prisma/prisma-schema-parser.js +4 -0
  319. package/dist/esm/utils/prisma/prisma-schema-parser.js.map +1 -0
  320. package/dist/esm/utils/prisma/types.js +1 -0
  321. package/dist/esm/utils/prisma/types.js.map +1 -0
  322. package/dist/esm/utils/sheu.js +1 -117
  323. package/dist/esm/utils/sheu.js.map +1 -1
  324. package/dist/esm/utils/validate-dto.js +1 -11
  325. package/dist/esm/utils/validate-dto.js.map +1 -1
  326. package/dist/esm/utils/validate-schema.js +1 -9
  327. package/dist/esm/utils/validate-schema.js.map +1 -1
  328. package/dist/types/exports/prisma/index.d.ts +3 -2
  329. package/dist/types/exports/services/index.d.ts +3 -2
  330. package/dist/types/modules/auth/auth.controller.d.ts +10 -9
  331. package/dist/types/modules/auth/auth.service.d.ts +7 -3
  332. package/dist/types/modules/auth/utils/auth-error-objects.d.ts +3 -0
  333. package/dist/types/modules/auth/utils/services/auth-action.service.d.ts +23 -0
  334. package/dist/types/modules/base/base.controller.d.ts +10 -12
  335. package/dist/types/modules/base/base.middlewares.d.ts +4 -4
  336. package/dist/types/modules/base/base.service.d.ts +14 -68
  337. package/dist/types/modules/base/types/base.service.types.d.ts +215 -0
  338. package/dist/types/modules/base/utils/helpers/base.controller.helpers.d.ts +0 -2
  339. package/dist/types/modules/base/utils/helpers/base.router.helpers.d.ts +3 -3
  340. package/dist/types/modules/base/utils/helpers/base.service.helpers.d.ts +9 -2
  341. package/dist/types/modules/base/utils/router-validator.d.ts +5 -0
  342. package/dist/types/modules/base/utils/service-hooks-manager.d.ts +7 -0
  343. package/dist/types/modules/error-handler/error-handler.controller.d.ts +1 -1
  344. package/dist/types/modules/error-handler/utils/catch-async.d.ts +4 -2
  345. package/dist/types/modules/error-handler/utils/error-handler.helpers.d.ts +18 -17
  346. package/dist/types/modules/file-upload/file-upload.controller.d.ts +4 -6
  347. package/dist/types/modules/file-upload/file-upload.service.d.ts +4 -5
  348. package/dist/types/modules/swagger/utils/helpers/get-authentication-json-schema-paths.d.ts +3 -1
  349. package/dist/types/modules/swagger/utils/helpers/get-swagger-default-configs.d.ts +46 -0
  350. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.d.ts +2 -1
  351. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.d.ts +4 -0
  352. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.d.ts +1 -0
  353. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.d.ts +3 -0
  354. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.d.ts +3 -0
  355. package/dist/types/modules/swagger/utils/helpers/missing-json-schemas-generator.d.ts +34 -0
  356. package/dist/types/modules/swagger/utils/helpers/swagger.router.helpers.d.ts +4 -2
  357. package/dist/types/server.d.ts +1 -1
  358. package/dist/types/types/arkos-config.d.ts +5 -3
  359. package/dist/types/types/auth.d.ts +7 -1
  360. package/dist/types/types/index.d.ts +4 -1
  361. package/dist/types/types/router-config.d.ts +24 -1
  362. package/dist/types/utils/cli/generate.d.ts +2 -1
  363. package/dist/types/utils/cli/utils/smart-fs-watcher.d.ts +11 -0
  364. package/dist/types/utils/cli/utils/template-generator/templates/generate-hooks-template.d.ts +2 -0
  365. package/dist/types/utils/cli/utils/watermark-stamper.d.ts +9 -0
  366. package/dist/types/utils/{helpers/models.helpers.d.ts → dynamic-loader.d.ts} +37 -40
  367. package/dist/types/utils/features/port-and-host-allocator.d.ts +21 -0
  368. package/dist/types/utils/helpers/dynamic-loader.helpers.d.ts +3 -0
  369. package/dist/types/utils/helpers/fs.helpers.d.ts +0 -4
  370. package/dist/types/utils/helpers/global.helpers.d.ts +1 -0
  371. package/dist/types/utils/helpers/prisma.helpers.d.ts +0 -1
  372. package/dist/types/utils/helpers/routers.helpers.d.ts +6 -2
  373. package/dist/types/utils/prisma/prisma-json-schema-generator.d.ts +34 -0
  374. package/dist/types/utils/prisma/prisma-schema-parser.d.ts +28 -0
  375. package/dist/types/utils/prisma/types.d.ts +49 -0
  376. package/dist/types/utils/sheu.d.ts +15 -15
  377. package/package.json +32 -18
  378. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +0 -30
  379. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +0 -1
  380. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +0 -442
  381. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +0 -1
  382. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +0 -165
  383. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +0 -1
  384. package/dist/cjs/utils/helpers/models.helpers.js +0 -314
  385. package/dist/cjs/utils/helpers/models.helpers.js.map +0 -1
  386. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +0 -24
  387. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +0 -1
  388. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +0 -436
  389. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +0 -1
  390. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +0 -159
  391. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +0 -1
  392. package/dist/esm/utils/helpers/models.helpers.js +0 -297
  393. package/dist/esm/utils/helpers/models.helpers.js.map +0 -1
  394. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.d.ts +0 -1
  395. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.d.ts +0 -2
  396. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.d.ts +0 -2
@@ -1,119 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class Sheu {
4
- getTimestamp() {
5
- return new Date().toTimeString().split(" ")[0];
6
- }
7
- formatText(text = "", options = {}) {
8
- const label = options?.label
9
- ? text
10
- ? options?.label + " "
11
- : options?.label
12
- : "";
13
- let result = `${label}${text}`;
14
- if (options.timestamp) {
15
- const timestamp = this.getTimestamp();
16
- if (options.timestamp === true)
17
- result = `${label}\x1b[90m${timestamp}\x1b[0m ${text}`;
18
- else if (typeof options.timestamp === "string") {
19
- const colorCode = this.getColorCode(options.timestamp);
20
- result = `${label}${colorCode}${timestamp}\x1b[0m ${text}`;
21
- }
22
- }
23
- if (options.bold)
24
- result = `\x1b[1m${result}\x1b[0m`;
25
- return result;
26
- }
27
- getColorCode(color) {
28
- const colorMap = {
29
- red: "\x1b[31m",
30
- blue: "\x1b[34m",
31
- green: "\x1b[32m",
32
- yellow: "\x1b[33m",
33
- cyan: "\x1b[36m",
34
- magenta: "\x1b[35m",
35
- white: "\x1b[37m",
36
- black: "\x1b[30m",
37
- gray: "\x1b[90m",
38
- orange: "\x1b[91m",
39
- };
40
- return colorMap[color] || "\x1b[90m";
41
- }
42
- red(text, options) {
43
- const coloredText = `\x1b[31m${text}\x1b[0m`;
44
- return this.formatText(coloredText, options || {});
45
- }
46
- blue(text, options) {
47
- const coloredText = `\x1b[34m${text}\x1b[0m`;
48
- return this.formatText(coloredText, options || {});
49
- }
50
- green(text, options) {
51
- const coloredText = `\x1b[32m${text}\x1b[0m`;
52
- return this.formatText(coloredText, options || {});
53
- }
54
- yellow(text, options) {
55
- const coloredText = `\x1b[33m${text}\x1b[0m`;
56
- return this.formatText(coloredText, options || {});
57
- }
58
- cyan(text, options) {
59
- const coloredText = `\x1b[36m${text}\x1b[0m`;
60
- return this.formatText(coloredText, options || {});
61
- }
62
- magenta(text, options) {
63
- const coloredText = `\x1b[35m${text}\x1b[0m`;
64
- return this.formatText(coloredText, options || {});
65
- }
66
- white(text, options) {
67
- const coloredText = `\x1b[37m${text}\x1b[0m`;
68
- return this.formatText(coloredText, options || {});
69
- }
70
- black(text, options) {
71
- const coloredText = `\x1b[30m${text}\x1b[0m`;
72
- return this.formatText(coloredText, options || {});
73
- }
74
- gray(text, options) {
75
- const coloredText = `\x1b[90m${text}\x1b[0m`;
76
- return this.formatText(coloredText, options || {});
77
- }
78
- orange(text, options) {
79
- const coloredText = `\x1b[91m${text}\x1b[0m`;
80
- return this.formatText(coloredText, options || {});
81
- }
82
- bold(text, options) {
83
- const boldText = `\x1b[1m${text}\x1b[0m`;
84
- return this.formatText(boldText, { ...options, bold: false });
85
- }
86
- info(message, options) {
87
- const label = `[\x1b[36mINFO\x1b[0m]`;
88
- const result = this.formatText(message, { ...options, label });
89
- console.info(result);
90
- return result;
91
- }
92
- error(message, options) {
93
- const label = `[\x1b[31mERROR\x1b[0m]`;
94
- const result = this.formatText(message, { ...options, label });
95
- console.error(result);
96
- return result;
97
- }
98
- ready(message, options) {
99
- const label = `[\x1b[32mREADY\x1b[0m]`;
100
- const result = this.formatText(message, { ...options, label });
101
- console.info(result);
102
- return result;
103
- }
104
- done(message, options) {
105
- const label = `[\x1b[32mDONE\x1b[0m]`;
106
- const result = this.formatText(message, { ...options, label });
107
- console.info(result);
108
- return result;
109
- }
110
- warn(message, options) {
111
- const label = `[\x1b[33mWARN\x1b[0m]`;
112
- const result = this.formatText(message, { ...options, label });
113
- console.warn(result);
114
- return result;
115
- }
116
- }
117
- const sheu = new Sheu();
118
- exports.default = sheu;
119
- //# sourceMappingURL=sheu.js.map
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});class Sheu{getTimestamp(){return new Date().toTimeString().split(" ")[0]}formatText(t="",e={}){const r=e?.label?t||t===null?e?.label+" ":e?.label:"";let o=`${r}${t}`;if(e.timestamp){const m=this.getTimestamp();if(e.timestamp===!0)o=`${r}\x1B[90m${m}\x1B[0m ${t}`;else if(typeof e.timestamp=="string"){const l=this.getColorCode(e.timestamp);o=`${r}${l}${m}\x1B[0m ${t}`}}return e.bold&&(o=`\x1B[1m${o}\x1B[0m`),o}getColorCode(t){return{red:"\x1B[31m",blue:"\x1B[34m",green:"\x1B[32m",yellow:"\x1B[33m",cyan:"\x1B[36m",magenta:"\x1B[35m",white:"\x1B[37m",black:"\x1B[30m",gray:"\x1B[90m",orange:"\x1B[91m"}[t]||"\x1B[90m"}red(t,e){const r=`\x1B[31m${t}\x1B[0m`;return this.formatText(r,e||{})}blue(t,e){const r=`\x1B[34m${t}\x1B[0m`;return this.formatText(r,e||{})}green(t,e){const r=`\x1B[32m${t}\x1B[0m`;return this.formatText(r,e||{})}yellow(t,e){const r=`\x1B[33m${t}\x1B[0m`;return this.formatText(r,e||{})}cyan(t,e){const r=`\x1B[36m${t}\x1B[0m`;return this.formatText(r,e||{})}magenta(t,e){const r=`\x1B[35m${t}\x1B[0m`;return this.formatText(r,e||{})}white(t,e){const r=`\x1B[37m${t}\x1B[0m`;return this.formatText(r,e||{})}black(t,e){const r=`\x1B[30m${t}\x1B[0m`;return this.formatText(r,e||{})}gray(t,e){const r=`\x1B[90m${t}\x1B[0m`;return this.formatText(r,e||{})}orange(t,e){const r=`\x1B[91m${t}\x1B[0m`;return this.formatText(r,e||{})}bold(t,e){return this.formatText(t,{...e,bold:!0})}info(t,e){const o=this.formatText(t,{...e,label:"[\x1B[36mInfo\x1B[0m]"});return console.info(o),o}error(t,e){const o=this.formatText(t,{...e,label:"[\x1B[31mError\x1B[0m]"});return console.error(o),o}ready(t,e){const o=this.formatText(t,{...e,label:"[\x1B[32mReady\x1B[0m]"});return console.info(o),o}done(t,e){const o=this.formatText(t,{...e,label:"[\x1B[32mDone\x1B[0m]"});return console.info(o),o}warn(t,e){const o=this.formatText(t,{...e,label:"[\x1B[33mWarn\x1B[0m]"});return console.warn(o),o}}const sheu=new Sheu;exports.default=sheu;
@@ -1 +1 @@
1
- {"version":3,"file":"sheu.js","sourceRoot":"","sources":["../../../src/utils/sheu.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Sheu - Simplified terminal color utility for styling console output\n */\nclass Sheu {\n /**\n * Get current timestamp in HH:MM:SS format\n */\n private getTimestamp(): string {\n return new Date().toTimeString().split(\" \")[0];\n }\n\n /**\n * Apply timestamp and bold formatting if requested\n */\n private formatText(\n text: string = \"\",\n options: {\n timestamp?: boolean | string;\n bold?: boolean;\n label?: string;\n } = {}\n ): string {\n const label = options?.label\n ? text\n ? options?.label + \" \"\n : options?.label\n : \"\";\n let result = `${label}${text}`;\n\n // Apply timestamp if requested\n if (options.timestamp) {\n const timestamp = this.getTimestamp();\n if (options.timestamp === true)\n result = `${label}\\x1b[90m${timestamp}\\x1b[0m ${text}`;\n else if (typeof options.timestamp === \"string\") {\n const colorCode = this.getColorCode(options.timestamp);\n result = `${label}${colorCode}${timestamp}\\x1b[0m ${text}`;\n }\n }\n\n if (options.bold) result = `\\x1b[1m${result}\\x1b[0m`;\n\n return result;\n }\n\n /**\n * Get ANSI color code for color name\n */\n private getColorCode(color: string): string {\n const colorMap: { [key: string]: string } = {\n red: \"\\x1b[31m\",\n blue: \"\\x1b[34m\",\n green: \"\\x1b[32m\",\n yellow: \"\\x1b[33m\",\n cyan: \"\\x1b[36m\",\n magenta: \"\\x1b[35m\",\n white: \"\\x1b[37m\",\n black: \"\\x1b[30m\",\n gray: \"\\x1b[90m\",\n orange: \"\\x1b[91m\",\n };\n return colorMap[color] || \"\\x1b[90m\"; // Default to gray if color not found\n }\n\n /**\n * Red color\n */\n red(\n text: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[31m${text}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Blue color\n */\n blue(\n text: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[34m${text}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Green color\n */\n green(\n text: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[32m${text}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Yellow color\n */\n yellow(\n text: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[33m${text}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Cyan color\n */\n cyan(\n text: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[36m${text}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Magenta color\n */\n magenta(\n text: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[35m${text}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * White color\n */\n white(\n text: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[37m${text}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Black color\n */\n black(\n text: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[30m${text}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Gray color\n */\n gray(\n text: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[90m${text}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Orange color\n */\n orange(\n text: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[91m${text}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Bold text formatting\n */\n bold(text: string, options?: { timestamp?: boolean | string }): string {\n const boldText = `\\x1b[1m${text}\\x1b[0m`;\n return this.formatText(boldText, { ...options, bold: false }); // Don't double-bold\n }\n\n /**\n * Info label with cyan color [INFO]\n */\n info(\n message: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const label = `[\\x1b[36mINFO\\x1b[0m]`;\n const result = this.formatText(message, { ...options, label });\n console.info(result);\n return result;\n }\n\n /**\n * Error label with red color [ERROR]\n */\n error(\n message: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const label = `[\\x1b[31mERROR\\x1b[0m]`;\n const result = this.formatText(message, { ...options, label });\n console.error(result);\n return result;\n }\n\n /**\n * Ready label with green color [READY]\n */\n ready(\n message: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const label = `[\\x1b[32mREADY\\x1b[0m]`;\n const result = this.formatText(message, { ...options, label });\n console.info(result);\n return result;\n }\n\n /**\n * Done label with green color [DONE]\n */\n done(\n message: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const label = `[\\x1b[32mDONE\\x1b[0m]`;\n const result = this.formatText(message, { ...options, label });\n console.info(result);\n return result;\n }\n\n /**\n * Warning label with yellow color [WARN]\n */\n warn(\n message: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const label = `[\\x1b[33mWARN\\x1b[0m]`;\n const result = this.formatText(message, { ...options, label });\n console.warn(result);\n return result;\n }\n}\n\nconst sheu = new Sheu();\n\nexport default sheu;\n"]}
1
+ {"version":3,"file":"sheu.js","sourceRoot":"","sources":["../../../src/utils/sheu.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Sheu - Simplified terminal color utility for styling console output\n */\nclass Sheu {\n /**\n * Get current timestamp in HH:MM:SS format\n */\n private getTimestamp(): string {\n return new Date().toTimeString().split(\" \")[0];\n }\n\n /**\n * Apply timestamp and bold formatting if requested\n */\n private formatText(\n content: any = \"\",\n options: {\n timestamp?: boolean | string;\n bold?: boolean;\n label?: string;\n } = {}\n ): string {\n const label = options?.label\n ? content\n ? options?.label + \" \"\n : content === null\n ? options?.label + \" \"\n : options?.label\n : \"\";\n let result = `${label}${content}`;\n\n // Apply timestamp if requested\n if (options.timestamp) {\n const timestamp = this.getTimestamp();\n if (options.timestamp === true)\n result = `${label}\\x1b[90m${timestamp}\\x1b[0m ${content}`;\n else if (typeof options.timestamp === \"string\") {\n const colorCode = this.getColorCode(options.timestamp);\n result = `${label}${colorCode}${timestamp}\\x1b[0m ${content}`;\n }\n }\n\n if (options.bold) result = `\\x1b[1m${result}\\x1b[0m`;\n\n return result;\n }\n\n /**\n * Get ANSI color code for color name\n */\n private getColorCode(color: string): string {\n const colorMap: { [key: string]: string } = {\n red: \"\\x1b[31m\",\n blue: \"\\x1b[34m\",\n green: \"\\x1b[32m\",\n yellow: \"\\x1b[33m\",\n cyan: \"\\x1b[36m\",\n magenta: \"\\x1b[35m\",\n white: \"\\x1b[37m\",\n black: \"\\x1b[30m\",\n gray: \"\\x1b[90m\",\n orange: \"\\x1b[91m\",\n };\n return colorMap[color] || \"\\x1b[90m\"; // Default to gray if color not found\n }\n\n /**\n * Red color\n */\n red(\n content: any,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[31m${content}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Blue color\n */\n blue(\n content: any,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[34m${content}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Green color\n */\n green(\n content: any,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[32m${content}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Yellow color\n */\n yellow(\n content: any,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[33m${content}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Cyan color\n */\n cyan(\n content: any,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[36m${content}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Magenta color\n */\n magenta(\n content: any,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[35m${content}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * White color\n */\n white(\n content: any,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[37m${content}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Black color\n */\n black(\n content: any,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[30m${content}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Gray color\n */\n gray(\n content: any,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[90m${content}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Orange color\n */\n orange(\n content: any,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[91m${content}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Bold text formatting\n */\n bold(content: any, options?: { timestamp?: boolean | string }): string {\n return this.formatText(content, { ...options, bold: true }); // Don't double-bold\n }\n\n /**\n * Info label with cyan color [INFO]\n */\n info(\n message: any,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const label = `[\\x1b[36mInfo\\x1b[0m]`;\n const result = this.formatText(message, { ...options, label });\n console.info(result);\n return result;\n }\n\n /**\n * Error label with red color [ERROR]\n */\n error(\n message: any,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const label = `[\\x1b[31mError\\x1b[0m]`;\n const result = this.formatText(message, { ...options, label });\n console.error(result);\n return result;\n }\n\n /**\n * Ready label with green color [READY]\n */\n ready(\n message: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n // const label = `\\x1b[32m✓\\x1b[0m`;\n const label = `[\\x1b[32mReady\\x1b[0m]`;\n const result = this.formatText(message, { ...options, label });\n console.info(result);\n return result;\n }\n\n /**\n * Done label with green color [DONE]\n */\n done(\n message: any,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const label = `[\\x1b[32mDone\\x1b[0m]`;\n const result = this.formatText(message, { ...options, label });\n console.info(result);\n return result;\n }\n\n /**\n * Warning label with yellow color [WARN]\n */\n warn(\n message: any,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const label = `[\\x1b[33mWarn\\x1b[0m]`;\n const result = this.formatText(message, { ...options, label });\n console.warn(result);\n return result;\n }\n}\n\nconst sheu = new Sheu();\n\nexport default sheu;\n"]}
@@ -1,17 +1 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.default = validateDto;
7
- const class_transformer_1 = require("class-transformer");
8
- const class_validator_1 = require("class-validator");
9
- const app_error_1 = __importDefault(require("../modules/error-handler/utils/app-error"));
10
- async function validateDto(DtoClass, data, validationOptions) {
11
- const dataDto = (0, class_transformer_1.plainToInstance)(DtoClass, data);
12
- const errors = await (0, class_validator_1.validate)(dataDto, validationOptions);
13
- if (errors.length > 0)
14
- throw new app_error_1.default("Invalid request body", 400, errors, "invalid_request_body");
15
- return dataDto;
16
- }
17
- //# sourceMappingURL=validate-dto.js.map
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=validateDto;const class_transformer_1=require("class-transformer"),class_validator_1=require("class-validator"),app_error_1=__importDefault(require("../modules/error-handler/utils/app-error"));async function validateDto(e,a,s){const r=(0,class_transformer_1.plainToInstance)(e,a),t=await(0,class_validator_1.validate)(r,s);if(t.length>0)throw new app_error_1.default("Invalid request body",400,t,"InvalidRequestBody");return r}
@@ -1 +1 @@
1
- {"version":3,"file":"validate-dto.js","sourceRoot":"","sources":["../../../src/utils/validate-dto.ts"],"names":[],"mappings":";;;;;AAmCA,8BAiBC;AApDD,yDAAsE;AACtE,qDAA6D;AAC7D,yFAAgE;AAiCjD,KAAK,UAAU,WAAW,CACvC,QAA6B,EAC7B,IAAyB,EACzB,iBAAoC;IAEpC,MAAM,OAAO,GAAG,IAAA,mCAAe,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAQ,EAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAE1D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QACnB,MAAM,IAAI,mBAAQ,CAChB,sBAAsB,EACtB,GAAG,EACH,MAAM,EACN,sBAAsB,CACvB,CAAC;IAEJ,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import { ClassConstructor, plainToInstance } from \"class-transformer\";\nimport { validate, ValidatorOptions } from \"class-validator\";\nimport AppError from \"../modules/error-handler/utils/app-error\";\n\n/**\n * Used to easy validate your data with class validator by passing the validator class and the data to validate, and if whished some validation options\n *\n * @param {ClassConstructor<T>} DtoClass - The DTO class you want to use to validate the data\n * @param {Record<string, any>} data - The data to validated\n * @param {ValidatorOptions} validationOptions - class-validator validation options, default {whitelist: true}\n * @returns {Promise<T> | AppError} - returns the validated data or the encountered errors.\n *\n *\n * @example\n * ```ts\n * class CreateUserDto {\n * @IsString()\n * name: string;\n *\n * @IsEmail()\n * email: string;\n * }\n *\n * async function main() {\n * const data = { name: \"Uanela Como\", email: \"invalid-email\" };\n * try {\n * const validatedUser = await validateDto(CreateUserDto, data);\n * // do something\n * } catch (error) {\n * console.error(error.message);\n * }\n * }\n * ```\n */\n\nexport default async function validateDto<T extends object>(\n DtoClass: ClassConstructor<T>,\n data: Record<string, any>,\n validationOptions?: ValidatorOptions\n): Promise<T> {\n const dataDto = plainToInstance(DtoClass, data);\n const errors = await validate(dataDto, validationOptions);\n\n if (errors.length > 0)\n throw new AppError(\n \"Invalid request body\",\n 400,\n errors,\n \"invalid_request_body\"\n );\n\n return dataDto;\n}\n"]}
1
+ {"version":3,"file":"validate-dto.js","sourceRoot":"","sources":["../../../src/utils/validate-dto.ts"],"names":[],"mappings":";;;;;AAmCA,8BAiBC;AApDD,yDAAsE;AACtE,qDAA6D;AAC7D,yFAAgE;AAiCjD,KAAK,UAAU,WAAW,CACvC,QAA6B,EAC7B,IAAyB,EACzB,iBAAoC;IAEpC,MAAM,OAAO,GAAG,IAAA,mCAAe,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAQ,EAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAE1D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QACnB,MAAM,IAAI,mBAAQ,CAChB,sBAAsB,EACtB,GAAG,EACH,MAAM,EACN,oBAAoB,CACrB,CAAC;IAEJ,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import { ClassConstructor, plainToInstance } from \"class-transformer\";\nimport { validate, ValidatorOptions } from \"class-validator\";\nimport AppError from \"../modules/error-handler/utils/app-error\";\n\n/**\n * Used to easy validate your data with class validator by passing the validator class and the data to validate, and if whished some validation options\n *\n * @param {ClassConstructor<T>} DtoClass - The DTO class you want to use to validate the data\n * @param {Record<string, any>} data - The data to validated\n * @param {ValidatorOptions} validationOptions - class-validator validation options, default {whitelist: true}\n * @returns {Promise<T> | AppError} - returns the validated data or the encountered errors.\n *\n *\n * @example\n * ```ts\n * class CreateUserDto {\n * @IsString()\n * name: string;\n *\n * @IsEmail()\n * email: string;\n * }\n *\n * async function main() {\n * const data = { name: \"Uanela Como\", email: \"invalid-email\" };\n * try {\n * const validatedUser = await validateDto(CreateUserDto, data);\n * // do something\n * } catch (error) {\n * console.error(error.message);\n * }\n * }\n * ```\n */\n\nexport default async function validateDto<T extends object>(\n DtoClass: ClassConstructor<T>,\n data: Record<string, any>,\n validationOptions?: ValidatorOptions\n): Promise<T> {\n const dataDto = plainToInstance(DtoClass, data);\n const errors = await validate(dataDto, validationOptions);\n\n if (errors.length > 0)\n throw new AppError(\n \"Invalid request body\",\n 400,\n errors,\n \"InvalidRequestBody\"\n );\n\n return dataDto;\n}\n"]}
@@ -1,15 +1 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.default = validateSchema;
7
- const app_error_1 = __importDefault(require("../modules/error-handler/utils/app-error"));
8
- async function validateSchema(schema, data) {
9
- const result = schema.safeParse(data);
10
- if (!result.success) {
11
- throw new app_error_1.default("Invalid request body", 400, result.error.format(), "invalid_request_body");
12
- }
13
- return result.data;
14
- }
15
- //# sourceMappingURL=validate-schema.js.map
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=validateSchema;const app_error_1=__importDefault(require("../modules/error-handler/utils/app-error"));async function validateSchema(e,t){const r=e.safeParse(t);if(!r.success)throw new app_error_1.default("Invalid request body",400,r.error.format(),"InvalidRequestBody");return r.data}
@@ -1 +1 @@
1
- {"version":3,"file":"validate-schema.js","sourceRoot":"","sources":["../../../src/utils/validate-schema.ts"],"names":[],"mappings":";;;;;AA4BA,iCAcC;AAzCD,yFAAgE;AA2BjD,KAAK,UAAU,cAAc,CAC1C,MAAoB,EACpB,IAAa;IAEb,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,mBAAQ,CAChB,sBAAsB,EACtB,GAAG,EACH,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EACrB,sBAAsB,CACvB,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC","sourcesContent":["import { ZodSchema } from \"zod\";\nimport AppError from \"../modules/error-handler/utils/app-error\";\n\n/**\n * Validates data using a Zod schema and throws an AppError if validation fails.\n *\n * @param {ZodSchema} schema - The Zod schema to validate against.\n * @param {unknown} data - The data to validate.\n * @returns {Promise<any>} - The validated data or throws an AppError on failure.\n *\n * @example\n * ```typescript\n * const userSchema = z.object({\n * name: z.string(),\n * email: z.string().email()\n * });\n *\n * async function main() {\n * const data = { name: \"Uanela Como\", email: \"invalid-email\" };\n * try {\n * const validatedUser = await validateSchema(userSchema, data);\n * // do something\n * } catch (error) {\n * console.error(error.message);\n * }\n * }\n * ```\n */\nexport default async function validateSchema<T>(\n schema: ZodSchema<T>,\n data: unknown\n): Promise<T> {\n const result = schema.safeParse(data);\n if (!result.success) {\n throw new AppError(\n \"Invalid request body\",\n 400,\n result.error.format(),\n \"invalid_request_body\"\n );\n }\n return result.data;\n}\n"]}
1
+ {"version":3,"file":"validate-schema.js","sourceRoot":"","sources":["../../../src/utils/validate-schema.ts"],"names":[],"mappings":";;;;;AA4BA,iCAcC;AAzCD,yFAAgE;AA2BjD,KAAK,UAAU,cAAc,CAC1C,MAAoB,EACpB,IAAa;IAEb,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,mBAAQ,CAChB,sBAAsB,EACtB,GAAG,EACH,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EACrB,oBAAoB,CACrB,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC","sourcesContent":["import { ZodSchema } from \"zod\";\nimport AppError from \"../modules/error-handler/utils/app-error\";\n\n/**\n * Validates data using a Zod schema and throws an AppError if validation fails.\n *\n * @param {ZodSchema} schema - The Zod schema to validate against.\n * @param {unknown} data - The data to validate.\n * @returns {Promise<any>} - The validated data or throws an AppError on failure.\n *\n * @example\n * ```typescript\n * const userSchema = z.object({\n * name: z.string(),\n * email: z.string().email()\n * });\n *\n * async function main() {\n * const data = { name: \"Uanela Como\", email: \"invalid-email\" };\n * try {\n * const validatedUser = await validateSchema(userSchema, data);\n * // do something\n * } catch (error) {\n * console.error(error.message);\n * }\n * }\n * ```\n */\nexport default async function validateSchema<T>(\n schema: ZodSchema<T>,\n data: unknown\n): Promise<T> {\n const result = schema.safeParse(data);\n if (!result.success) {\n throw new AppError(\n \"Invalid request body\",\n 400,\n result.error.format(),\n \"InvalidRequestBody\"\n );\n }\n return result.data;\n}\n"]}
package/dist/esm/app.js CHANGED
@@ -1 +1 @@
1
- "use strict";import c from"express";import p from"cors";import m from"cookie-parser";import{getAuthRouter as f}from"./modules/auth/auth.router.js";import{getPrismaModelsRouter as w,getAvailableResourcesAndRoutesRouter as R}from"./modules/base/base.router.js";import h from"./modules/error-handler/error-handler.controller.js";import{rateLimit as P}from"express-rate-limit";import y from"compression";import{handleRequestLogs as b}from"./modules/base/base.middlewares.js";import{checkDatabaseConnection as q,loadPrismaModule as A}from"./utils/helpers/prisma.helpers.js";import{getFileUploadRouter as O}from"./modules/file-upload/file-upload.router.js";import{queryParser as g}from"./utils/helpers/query-parser.helpers.js";import d from"./utils/helpers/deepmerge.helper.js";import{getSwaggerRouter as E}from"./modules/swagger/swagger.router.js";export const app=c();export async function bootstrap(e){await A(),e?.configureApp&&await e.configureApp(app);const n=e?.middlewares,t=n?.disable||[],a=n?.replace||{};t?.includes?.("compression")||app.use(a.compression||y(e?.compressionOptions)),t?.includes?.("global-rate-limit")||app.use(a.globalRateLimit||P(d({windowMs:60*1e3,limit:500,standardHeaders:"draft-7",legacyHeaders:!1,handler:(r,s)=>{s.status(429).json({message:"Too many requests, please try again later"})}},e?.globalRequestRateLimitOptions||{}))),t?.includes?.("cors")||app.use(a.cors||p(e?.cors?.customHandler?e.cors.customHandler:d({origin:(r,s)=>{const i=e?.cors?.allowedOrigins;i==="*"?s(null,!0):Array.isArray(i)?s(null,!r||i?.includes?.(r)):typeof i=="string"?s(null,!r||i===r):s(null,!1)},methods:["GET","POST","PUT","DELETE","PATCH","OPTIONS"],allowedHeaders:["Content-Type","Authorization","Connection"],credentials:!0},e?.cors?.options||{}))),t?.includes?.("express-json")||app.use(a.expressJson||c.json(e?.jsonBodyParserOptions)),t?.includes?.("cookie-parser")||app.use(a.cookieParser||m(...e?.cookieParserParameters||[])),t?.includes?.("query-parser")||app.use(a.queryParser||g(d({parseNull:!0,parseUndefined:!0,parseBoolean:!0},e?.queryParserOptions||{}))),t?.includes?.("database-connection")||app.use(a.databaseConnection||q),t?.includes?.("request-logger")||app.use(a.requestLogger||b),e?.middlewares?.additional&&e.middlewares.additional.forEach(r=>{app.use(r)});const l=e?.routers,u=l?.disable||[],o=l?.replace||{};if(u?.includes?.("welcome-endpoint")||app.get("/api",o.welcomeEndpoint||((r,s)=>{s.status(200).json({message:e.welcomeMessage})})),!u?.includes?.("file-upload")){const r=o.fileUpload?await o.fileUpload(e):await O(e);app.use(r)}if(!u?.includes?.("auth-router")&&e.authentication){const r=o.authRouter?await o.authRouter(e):await f(e);app.use("/api",r)}if(!u?.includes?.("prisma-models-router")){const r=o.prismaModelsRouter?await o.prismaModelsRouter(e):await w(e);app.use("/api",r)}return app.use("/api",R()),e.swagger&&(process.env.ARKOS_BUILD!=="true"||e.swagger.enableAfterBuild===!0)&&app.use("/api",await E(e)),l?.additional&&l.additional.forEach(r=>{app.use(r)}),t?.includes?.("global-error-handler")||app.use(a.globalErrorHandler||h),app.use("*",(r,s)=>{s.status(404).json({message:"Route not found!"})}),app}
1
+ "use strict";import m from"express";import n from"cors";import c from"cookie-parser";import{getAuthRouter as w}from"./modules/auth/auth.router.js";import{getPrismaModelsRouter as f,getAvailableResourcesAndRoutesRouter as R}from"./modules/base/base.router.js";import P from"./modules/error-handler/error-handler.controller.js";import{rateLimit as h}from"express-rate-limit";import y from"compression";import{handleRequestLogs as A}from"./modules/base/base.middlewares.js";import{loadPrismaModule as b}from"./utils/helpers/prisma.helpers.js";import{getFileUploadRouter as q}from"./modules/file-upload/file-upload.router.js";import{queryParser as M}from"./utils/helpers/query-parser.helpers.js";import d from"./utils/helpers/deepmerge.helper.js";import{getSwaggerRouter as O}from"./modules/swagger/swagger.router.js";import{loadAllModuleComponents as E}from"./utils/dynamic-loader.js";export const app=m();export async function bootstrap(e){await Promise.all([b(),E(e),e?.configureApp&&await e?.configureApp(app)]);const p=e?.middlewares,t=p?.disable||[],o=p?.replace||{};t?.includes?.("compression")||app.use(o.compression||y(e?.compressionOptions)),t?.includes?.("global-rate-limit")||app.use(o.globalRateLimit||h(d({windowMs:60*1e3,limit:500,standardHeaders:"draft-7",legacyHeaders:!1,handler:(r,s)=>{s.status(429).json({message:"Too many requests, please try again later"})}},e?.globalRequestRateLimitOptions||{}))),t?.includes?.("cors")||app.use(o.cors||n(e?.cors?.customHandler?e.cors.customHandler:d({origin:(r,s)=>{const l=e?.cors?.allowedOrigins;l==="*"?s(null,!0):Array.isArray(l)?s(null,!r||l?.includes?.(r)):typeof l=="string"?s(null,!r||l===r):s(null,!1)},methods:["GET","POST","PUT","DELETE","PATCH","OPTIONS"],allowedHeaders:["Content-Type","Authorization","Connection"],credentials:!0},e?.cors?.options||{}))),t?.includes?.("express-json")||app.use(o.expressJson||m.json(e?.jsonBodyParserOptions)),t?.includes?.("cookie-parser")||app.use(o.cookieParser||c(...e?.cookieParserParameters||[])),t?.includes?.("query-parser")||app.use(o.queryParser||M(d({parseNull:!0,parseUndefined:!0,parseBoolean:!0},e?.queryParserOptions||{}))),t?.includes?.("request-logger")||app.use(o.requestLogger||A),e?.middlewares?.additional&&e.middlewares.additional.forEach(r=>{app.use(r)});const i=e?.routers,u=i?.disable||[],a=i?.replace||{};if(u?.includes?.("welcome-endpoint")||app.get("/api",a.welcomeEndpoint||((r,s)=>{s.status(200).json({message:e.welcomeMessage})})),!u?.includes?.("file-upload")){const r=a.fileUpload?await a.fileUpload(e):await q(e);app.use(r)}if(!u?.includes?.("auth-router")&&e.authentication){const r=a.authRouter?await a.authRouter(e):await w(e);app.use("/api",r)}if(!u?.includes?.("prisma-models-router")){const r=a.prismaModelsRouter?await a.prismaModelsRouter(e):await f(e);app.use("/api",r)}return app.use("/api",R()),e.swagger&&(process.env.ARKOS_BUILD!=="true"||e.swagger.enableAfterBuild===!0)&&app.use("/api",await O(e)),i?.additional&&i.additional.forEach(r=>{app.use(r)}),t?.includes?.("global-error-handler")||app.use(o.globalErrorHandler||P),app.use("*",(r,s)=>{s.status(404).json({message:"Route not found!"})}),app}
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"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","sourcesContent":["import express from \"express\";\nimport cors from \"cors\";\nimport cookieParser from \"cookie-parser\";\nimport { getAuthRouter } from \"./modules/auth/auth.router\";\nimport {\n getPrismaModelsRouter,\n getAvailableResourcesAndRoutesRouter,\n} from \"./modules/base/base.router\";\nimport errorHandler from \"./modules/error-handler/error-handler.controller\";\nimport { rateLimit } from \"express-rate-limit\";\nimport compression from \"compression\";\nimport { handleRequestLogs } from \"./modules/base/base.middlewares\";\nimport {\n checkDatabaseConnection,\n loadPrismaModule,\n} from \"./utils/helpers/prisma.helpers\";\nimport { getFileUploadRouter } from \"./modules/file-upload/file-upload.router\";\nimport { ArkosConfig } from \"./types/arkos-config\";\nimport { queryParser } from \"./utils/helpers/query-parser.helpers\";\nimport deepmerge from \"./utils/helpers/deepmerge.helper\";\nimport { getSwaggerRouter } from \"./modules/swagger/swagger.router\";\n\nexport const app: express.Express = express();\n\nexport async function bootstrap(\n arkosConfig: ArkosConfig\n): Promise<express.Express> {\n await loadPrismaModule();\n\n if (arkosConfig?.configureApp) await arkosConfig.configureApp(app);\n\n const middlewaresConfig = arkosConfig?.middlewares;\n const disabledMiddlewares = middlewaresConfig?.disable || [];\n const replacedMiddlewares = middlewaresConfig?.replace || {};\n\n // Compression middleware\n if (!disabledMiddlewares?.includes?.(\"compression\"))\n app.use(\n replacedMiddlewares.compression ||\n compression(arkosConfig?.compressionOptions)\n );\n\n // Global rate limit middleware\n if (!disabledMiddlewares?.includes?.(\"global-rate-limit\"))\n app.use(\n replacedMiddlewares.globalRateLimit ||\n rateLimit(\n deepmerge(\n {\n windowMs: 60 * 1000,\n limit: 500,\n standardHeaders: \"draft-7\",\n legacyHeaders: false,\n handler: (req, res) => {\n res.status(429).json({\n message: \"Too many requests, please try again later\",\n });\n },\n },\n arkosConfig?.globalRequestRateLimitOptions || {}\n )\n )\n );\n\n // CORS middleware\n if (!disabledMiddlewares?.includes?.(\"cors\"))\n app.use(\n replacedMiddlewares.cors ||\n cors(\n arkosConfig?.cors?.customHandler\n ? arkosConfig.cors.customHandler\n : deepmerge(\n {\n origin: (\n origin: string,\n cb: (err: Error | null, allow?: boolean) => void\n ) => {\n const allowed = arkosConfig?.cors?.allowedOrigins;\n\n if (allowed === \"*\") {\n cb(null, true);\n } else if (Array.isArray(allowed)) {\n cb(null, !origin || allowed?.includes?.(origin));\n } else if (typeof allowed === \"string\") {\n cb(null, !origin || allowed === origin);\n } else {\n cb(null, false);\n }\n },\n methods: [\"GET\", \"POST\", \"PUT\", \"DELETE\", \"PATCH\", \"OPTIONS\"],\n allowedHeaders: [\n \"Content-Type\",\n \"Authorization\",\n \"Connection\",\n ],\n credentials: true,\n },\n arkosConfig?.cors?.options || {}\n )\n )\n );\n\n // JSON body parser middleware\n if (!disabledMiddlewares?.includes?.(\"express-json\"))\n app.use(\n replacedMiddlewares.expressJson ||\n express.json(arkosConfig?.jsonBodyParserOptions)\n );\n\n // Cookie parser middleware\n if (!disabledMiddlewares?.includes?.(\"cookie-parser\"))\n app.use(\n replacedMiddlewares.cookieParser ||\n cookieParser(...[...(arkosConfig?.cookieParserParameters || [])])\n );\n\n // Query parser middleware\n if (!disabledMiddlewares?.includes?.(\"query-parser\"))\n app.use(\n replacedMiddlewares.queryParser ||\n queryParser(\n deepmerge(\n {\n parseNull: true,\n parseUndefined: true,\n parseBoolean: true,\n },\n arkosConfig?.queryParserOptions || {}\n )\n )\n );\n\n // Database connection check middleware\n if (!disabledMiddlewares?.includes?.(\"database-connection\"))\n app.use(replacedMiddlewares.databaseConnection || checkDatabaseConnection);\n\n // Request logger middleware\n if (!disabledMiddlewares?.includes?.(\"request-logger\"))\n app.use(replacedMiddlewares.requestLogger || handleRequestLogs);\n\n // Additional custom middlewares\n if (arkosConfig?.middlewares?.additional)\n arkosConfig.middlewares.additional.forEach((middleware) => {\n app.use(middleware);\n });\n\n // Configure routers\n const routersConfig = arkosConfig?.routers;\n const disabledRouters = routersConfig?.disable || [];\n const replacedRouters = routersConfig?.replace || {};\n\n // Welcome endpoint\n if (!disabledRouters?.includes?.(\"welcome-endpoint\"))\n app.get(\n \"/api\",\n replacedRouters.welcomeEndpoint ||\n ((req, res) => {\n res.status(200).json({ message: arkosConfig.welcomeMessage });\n })\n );\n\n // File upload router\n if (!disabledRouters?.includes?.(\"file-upload\")) {\n const fileUploadRouter = replacedRouters.fileUpload\n ? await replacedRouters.fileUpload(arkosConfig)\n : await getFileUploadRouter(arkosConfig);\n app.use(fileUploadRouter);\n }\n\n // Auth router\n if (\n !disabledRouters?.includes?.(\"auth-router\") &&\n arkosConfig.authentication\n ) {\n const authRouter = replacedRouters.authRouter\n ? await replacedRouters.authRouter(arkosConfig)\n : await getAuthRouter(arkosConfig);\n app.use(\"/api\", authRouter);\n }\n\n // Prisma models router\n if (!disabledRouters?.includes?.(\"prisma-models-router\")) {\n const modelsRouter = replacedRouters.prismaModelsRouter\n ? await replacedRouters.prismaModelsRouter(arkosConfig)\n : await getPrismaModelsRouter(arkosConfig);\n app.use(\"/api\", modelsRouter);\n }\n\n app.use(\"/api\", getAvailableResourcesAndRoutesRouter());\n\n if (\n arkosConfig.swagger &&\n (process.env.ARKOS_BUILD !== \"true\" ||\n arkosConfig.swagger.enableAfterBuild === true)\n )\n app.use(\"/api\", await getSwaggerRouter(arkosConfig));\n\n // Additional custom routers\n if (routersConfig?.additional)\n routersConfig.additional.forEach((router) => {\n app.use(router);\n });\n\n // Global error handler middleware (must be last)\n if (!disabledMiddlewares?.includes?.(\"global-error-handler\"))\n app.use(replacedMiddlewares.globalErrorHandler || errorHandler);\n\n app.use(\"*\", (req, res) => {\n res.status(404).json({ message: \"Route not found!\" });\n });\n\n return app;\n}\n"]}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"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","sourcesContent":["import express from \"express\";\nimport cors from \"cors\";\nimport cookieParser from \"cookie-parser\";\nimport { getAuthRouter } from \"./modules/auth/auth.router\";\nimport {\n getPrismaModelsRouter,\n getAvailableResourcesAndRoutesRouter,\n} from \"./modules/base/base.router\";\nimport errorHandler from \"./modules/error-handler/error-handler.controller\";\nimport { rateLimit } from \"express-rate-limit\";\nimport compression from \"compression\";\nimport { handleRequestLogs } from \"./modules/base/base.middlewares\";\nimport { loadPrismaModule } from \"./utils/helpers/prisma.helpers\";\nimport { getFileUploadRouter } from \"./modules/file-upload/file-upload.router\";\nimport { ArkosConfig } from \"./types/arkos-config\";\nimport { queryParser } from \"./utils/helpers/query-parser.helpers\";\nimport deepmerge from \"./utils/helpers/deepmerge.helper\";\nimport { getSwaggerRouter } from \"./modules/swagger/swagger.router\";\nimport { loadAllModuleComponents } from \"./utils/dynamic-loader\";\n\nexport const app: express.Express = express();\n\nexport async function bootstrap(\n arkosConfig: ArkosConfig\n): Promise<express.Express> {\n await Promise.all([\n loadPrismaModule(),\n loadAllModuleComponents(arkosConfig),\n arkosConfig?.configureApp && (await arkosConfig?.configureApp(app)),\n ]);\n\n const middlewaresConfig = arkosConfig?.middlewares;\n const disabledMiddlewares = middlewaresConfig?.disable || [];\n const replacedMiddlewares = middlewaresConfig?.replace || {};\n\n // Compression middleware\n if (!disabledMiddlewares?.includes?.(\"compression\"))\n app.use(\n replacedMiddlewares.compression ||\n compression(arkosConfig?.compressionOptions)\n );\n\n // Global rate limit middleware\n if (!disabledMiddlewares?.includes?.(\"global-rate-limit\"))\n app.use(\n replacedMiddlewares.globalRateLimit ||\n rateLimit(\n deepmerge(\n {\n windowMs: 60 * 1000,\n limit: 500,\n standardHeaders: \"draft-7\",\n legacyHeaders: false,\n handler: (_, res) => {\n res.status(429).json({\n message: \"Too many requests, please try again later\",\n });\n },\n },\n arkosConfig?.globalRequestRateLimitOptions || {}\n )\n )\n );\n\n // CORS middleware\n if (!disabledMiddlewares?.includes?.(\"cors\"))\n app.use(\n replacedMiddlewares.cors ||\n cors(\n arkosConfig?.cors?.customHandler\n ? arkosConfig.cors.customHandler\n : deepmerge(\n {\n origin: (\n origin: string,\n cb: (err: Error | null, allow?: boolean) => void\n ) => {\n const allowed = arkosConfig?.cors?.allowedOrigins;\n\n if (allowed === \"*\") {\n cb(null, true);\n } else if (Array.isArray(allowed)) {\n cb(null, !origin || allowed?.includes?.(origin));\n } else if (typeof allowed === \"string\") {\n cb(null, !origin || allowed === origin);\n } else {\n cb(null, false);\n }\n },\n methods: [\"GET\", \"POST\", \"PUT\", \"DELETE\", \"PATCH\", \"OPTIONS\"],\n allowedHeaders: [\n \"Content-Type\",\n \"Authorization\",\n \"Connection\",\n ],\n credentials: true,\n },\n arkosConfig?.cors?.options || {}\n )\n )\n );\n\n // JSON body parser middleware\n if (!disabledMiddlewares?.includes?.(\"express-json\"))\n app.use(\n replacedMiddlewares.expressJson ||\n express.json(arkosConfig?.jsonBodyParserOptions)\n );\n\n // Cookie parser middleware\n if (!disabledMiddlewares?.includes?.(\"cookie-parser\"))\n app.use(\n replacedMiddlewares.cookieParser ||\n cookieParser(...[...(arkosConfig?.cookieParserParameters || [])])\n );\n\n // Query parser middleware\n if (!disabledMiddlewares?.includes?.(\"query-parser\"))\n app.use(\n replacedMiddlewares.queryParser ||\n queryParser(\n deepmerge(\n {\n parseNull: true,\n parseUndefined: true,\n parseBoolean: true,\n },\n arkosConfig?.queryParserOptions || {}\n )\n )\n );\n\n // Request logger middleware\n if (!disabledMiddlewares?.includes?.(\"request-logger\"))\n app.use(replacedMiddlewares.requestLogger || handleRequestLogs);\n\n // Additional custom middlewares\n if (arkosConfig?.middlewares?.additional)\n arkosConfig.middlewares.additional.forEach((middleware) => {\n app.use(middleware);\n });\n\n // Configure routers\n const routersConfig = arkosConfig?.routers;\n const disabledRouters = routersConfig?.disable || [];\n const replacedRouters = routersConfig?.replace || {};\n\n // Welcome endpoint\n if (!disabledRouters?.includes?.(\"welcome-endpoint\"))\n app.get(\n \"/api\",\n replacedRouters.welcomeEndpoint ||\n ((_, res) => {\n res.status(200).json({ message: arkosConfig.welcomeMessage });\n })\n );\n\n // File upload router\n if (!disabledRouters?.includes?.(\"file-upload\")) {\n const fileUploadRouter = replacedRouters.fileUpload\n ? await replacedRouters.fileUpload(arkosConfig)\n : await getFileUploadRouter(arkosConfig);\n app.use(fileUploadRouter);\n }\n\n // Auth router\n if (\n !disabledRouters?.includes?.(\"auth-router\") &&\n arkosConfig.authentication\n ) {\n const authRouter = replacedRouters.authRouter\n ? await replacedRouters.authRouter(arkosConfig)\n : await getAuthRouter(arkosConfig);\n app.use(\"/api\", authRouter);\n }\n\n // Prisma models router\n if (!disabledRouters?.includes?.(\"prisma-models-router\")) {\n const modelsRouter = replacedRouters.prismaModelsRouter\n ? await replacedRouters.prismaModelsRouter(arkosConfig)\n : await getPrismaModelsRouter(arkosConfig);\n app.use(\"/api\", modelsRouter);\n }\n\n app.use(\"/api\", getAvailableResourcesAndRoutesRouter());\n\n if (\n arkosConfig.swagger &&\n (process.env.ARKOS_BUILD !== \"true\" ||\n arkosConfig.swagger.enableAfterBuild === true)\n )\n app.use(\"/api\", await getSwaggerRouter(arkosConfig));\n\n // Additional custom routers\n if (routersConfig?.additional)\n routersConfig.additional.forEach((router) => {\n app.use(router);\n });\n\n // Global error handler middleware (must be last)\n if (!disabledMiddlewares?.includes?.(\"global-error-handler\"))\n app.use(replacedMiddlewares.globalErrorHandler || errorHandler);\n\n app.use(\"*\", (_, res) => {\n res.status(404).json({ message: \"Route not found!\" });\n });\n\n return app;\n}\n"]}
@@ -1,2 +1 @@
1
- export { defaultExcludedUserFields } from "./../../modules/auth/auth.controller.js";
2
- //# sourceMappingURL=index.js.map
1
+ "use strict";export{defaultExcludedUserFields}from"./../../modules/auth/auth.controller.js";
@@ -1,4 +1 @@
1
- import { BaseController } from "./../../modules/base/base.controller.js";
2
- import fileUploadController from "../../modules/file-upload/file-upload.controller.js";
3
- export { fileUploadController, BaseController };
4
- //# sourceMappingURL=index.js.map
1
+ "use strict";import{BaseController as o}from"./../../modules/base/base.controller.js";import r from"../../modules/file-upload/file-upload.controller.js";export{r as fileUploadController,o as BaseController};
@@ -1,4 +1 @@
1
- import catchAsync from "../../modules/error-handler/utils/catch-async.js";
2
- import AppError from "../../modules/error-handler/utils/app-error.js";
3
- export { catchAsync, AppError };
4
- //# sourceMappingURL=index.js.map
1
+ "use strict";import r from"../../modules/error-handler/utils/catch-async.js";import o from"../../modules/error-handler/utils/app-error.js";export{r as catchAsync,o as AppError};
@@ -1,8 +1 @@
1
- import { BaseController } from "./../modules/base/base.controller.js";
2
- import { initApp, getArkosConfig } from "../server.js";
3
- const arkos = {
4
- init: initApp,
5
- };
6
- export { BaseController, getArkosConfig, };
7
- export default arkos;
8
- //# sourceMappingURL=index.js.map
1
+ "use strict";import{BaseController as o}from"./../modules/base/base.controller.js";import{initApp as r,getArkosConfig as t}from"../server.js";const i={init:r};export{o as BaseController,t as getArkosConfig};export default i;
@@ -1,2 +1 @@
1
- export { addPrismaQueryOptionsToRequest, handleRequestBodyValidationAndTransformation, } from "../../modules/base/base.middlewares.js";
2
- //# sourceMappingURL=index.js.map
1
+ "use strict";export{addPrismaQueryOptionsToRequest,handleRequestBodyValidationAndTransformation}from"../../modules/base/base.middlewares.js";
@@ -1,3 +1 @@
1
- import { getModels } from "../../utils/helpers/models.helpers.js";
2
- export { getModels as getPrismaModels, };
3
- //# sourceMappingURL=index.js.map
1
+ "use strict";import r from"../../utils/prisma/prisma-schema-parser.js";export function getPrismaModels(){return r.models.map(({name:e})=>e)}export{r as prismaSchemaParser};
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/exports/prisma/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAEL,SAAS,IAAI,eAAe,GAE7B,CAAC","sourcesContent":["import { PrismaQueryOptions, AuthPrismaQueryOptions } from \"../../types\";\nimport { getModels } from \"../../utils/helpers/models.helpers\";\n\nexport {\n PrismaQueryOptions,\n getModels as getPrismaModels,\n AuthPrismaQueryOptions,\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/exports/prisma/index.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,MAAM,yCAAyC,CAAC;AAEzE,MAAM,UAAU,eAAe;IAC7B,OAAO,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AACD,OAAO,EAAsB,kBAAkB,EAA0B,CAAC","sourcesContent":["import { PrismaQueryOptions, AuthPrismaQueryOptions } from \"../../types\";\nimport prismaSchemaParser from \"../../utils/prisma/prisma-schema-parser\";\n\nexport function getPrismaModels() {\n return prismaSchemaParser.models.map(({ name }) => name);\n}\nexport { PrismaQueryOptions, prismaSchemaParser, AuthPrismaQueryOptions };\n"]}
@@ -1,9 +1 @@
1
- import { getFileUploadServices, FileUploadService, } from "../../modules/file-upload/file-upload.service.js";
2
- import authService, { AuthService } from "../../modules/auth/auth.service.js";
3
- import emailService, { EmailService } from "../../modules/email/email.service.js";
4
- import { BaseService, getBaseServices } from "../../modules/base/base.service.js";
5
- export { authService, AuthService };
6
- export { BaseService, getBaseServices };
7
- export { emailService, EmailService };
8
- export { getFileUploadServices, FileUploadService };
9
- //# sourceMappingURL=index.js.map
1
+ "use strict";import{getFileUploadServices as e,FileUploadService as r}from"../../modules/file-upload/file-upload.service.js";import i,{AuthService as o}from"../../modules/auth/auth.service.js";import t,{EmailService as m}from"../../modules/email/email.service.js";import{BaseService as p}from"../../modules/base/base.service.js";export{i as authService,o as AuthService};export{p as BaseService};export{t as emailService,m as EmailService};export{e as getFileUploadServices,r as FileUploadService};
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/exports/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,+CAA+C,CAAC;AAEvD,OAAO,WAAW,EAAE,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,YAAY,EAAE,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAK/E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AAKpC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;AAKxC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAgB,CAAC;AAKpD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,CAAC","sourcesContent":["import {\n getFileUploadServices,\n FileUploadService,\n} from \"../../modules/file-upload/file-upload.service\";\nimport { EmailOptions } from \"../../modules/email/email.service\";\nimport authService, { AuthService } from \"../../modules/auth/auth.service\";\nimport emailService, { EmailService } from \"../../modules/email/email.service\";\nimport { BaseService, getBaseServices } from \"../../modules/base/base.service\";\n\n/**\n * Authentication service.\n */\nexport { authService, AuthService };\n\n/**\n * Base service.\n */\nexport { BaseService, getBaseServices };\n\n/**\n * Email service.\n */\nexport { emailService, EmailService, EmailOptions };\n\n/**\n * File upload services.\n */\nexport { getFileUploadServices, FileUploadService };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/exports/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,+CAA+C,CAAC;AAEvD,OAAO,WAAW,EAAE,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,YAAY,EAAE,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAoC9D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AAKpC,OAAO,EACL,WAAW,GA8BZ,CAAC;AAKF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAgB,CAAC;AAKpD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,CAAC","sourcesContent":["import {\n getFileUploadServices,\n FileUploadService,\n} from \"../../modules/file-upload/file-upload.service\";\nimport { EmailOptions } from \"../../modules/email/email.service\";\nimport authService, { AuthService } from \"../../modules/auth/auth.service\";\nimport emailService, { EmailService } from \"../../modules/email/email.service\";\nimport { BaseService } from \"../../modules/base/base.service\";\nimport {\n ServiceBaseContext,\n BeforeCreateOneHookArgs,\n AfterCreateOneHookArgs,\n BeforeCreateManyHookArgs,\n AfterCreateManyHookArgs,\n BeforeCountHookArgs,\n AfterCountHookArgs,\n BeforeFindManyHookArgs,\n AfterFindManyHookArgs,\n BeforeFindOneHookArgs,\n AfterFindOneHookArgs,\n BeforeUpdateOneHookArgs,\n AfterUpdateOneHookArgs,\n BeforeUpdateManyHookArgs,\n AfterUpdateManyHookArgs,\n BeforeDeleteOneHookArgs,\n AfterDeleteOneHookArgs,\n BeforeDeleteManyHookArgs,\n AfterDeleteManyHookArgs,\n OnCreateOneErrorHookArgs,\n OnCreateManyErrorHookArgs,\n OnCountErrorHookArgs,\n OnFindManyErrorHookArgs,\n OnFindByIdErrorHookArgs,\n OnFindOneErrorHookArgs,\n OnUpdateOneErrorHookArgs,\n OnUpdateManyErrorHookArgs,\n OnDeleteOneErrorHookArgs,\n OnDeleteManyErrorHookArgs,\n} from \"../../modules/base/types/base.service.types\";\n\n/**\n * Authentication service.\n */\nexport { authService, AuthService };\n\n/**\n * Base service.\n */\nexport {\n BaseService,\n ServiceBaseContext,\n BeforeCreateOneHookArgs,\n AfterCreateOneHookArgs,\n BeforeCreateManyHookArgs,\n AfterCreateManyHookArgs,\n BeforeCountHookArgs,\n AfterCountHookArgs,\n BeforeFindManyHookArgs,\n AfterFindManyHookArgs,\n BeforeFindOneHookArgs,\n AfterFindOneHookArgs,\n BeforeUpdateOneHookArgs,\n AfterUpdateOneHookArgs,\n BeforeUpdateManyHookArgs,\n AfterUpdateManyHookArgs,\n BeforeDeleteOneHookArgs,\n AfterDeleteOneHookArgs,\n BeforeDeleteManyHookArgs,\n AfterDeleteManyHookArgs,\n OnCreateOneErrorHookArgs,\n OnCreateManyErrorHookArgs,\n OnCountErrorHookArgs,\n OnFindManyErrorHookArgs,\n OnFindByIdErrorHookArgs,\n OnFindOneErrorHookArgs,\n OnUpdateOneErrorHookArgs,\n OnUpdateManyErrorHookArgs,\n OnDeleteOneErrorHookArgs,\n OnDeleteManyErrorHookArgs,\n};\n\n/**\n * Email service.\n */\nexport { emailService, EmailService, EmailOptions };\n\n/**\n * File upload services.\n */\nexport { getFileUploadServices, FileUploadService };\n"]}
@@ -1,4 +1 @@
1
- export * from "../../utils/helpers/change-case.helpers.js";
2
- import APIFeatures, { apiFeatures } from "../../utils/features/api.features.js";
3
- export { APIFeatures, apiFeatures };
4
- //# sourceMappingURL=index.js.map
1
+ "use strict";export*from"../../utils/helpers/change-case.helpers.js";import r,{apiFeatures as e}from"../../utils/features/api.features.js";export{r as APIFeatures,e as apiFeatures};
@@ -1,4 +1 @@
1
- import validateDto from "../../utils/validate-dto.js";
2
- import validateSchema from "../../utils/validate-schema.js";
3
- export { validateDto, validateSchema };
4
- //# sourceMappingURL=index.js.map
1
+ "use strict";import o from"../../utils/validate-dto.js";import t from"../../utils/validate-schema.js";export{o as validateDto,t as validateSchema};
@@ -1,187 +1 @@
1
- import catchAsync from "../error-handler/utils/catch-async.js";
2
- import AppError from "../error-handler/utils/app-error.js";
3
- import authService from "./auth.service.js";
4
- import { getBaseServices } from "../base/base.service.js";
5
- import arkosEnv from "../../utils/arkos-env.js";
6
- import { getArkosConfig } from "../../server.js";
7
- import { createPrismaWhereClause, determineUsernameField, getNestedValue, toMs, } from "./utils/helpers/auth.controller.helpers.js";
8
- export const defaultExcludedUserFields = {
9
- password: false,
10
- };
11
- export const authControllerFactory = async (middlewares = {}) => {
12
- const userService = getBaseServices()["user"];
13
- return {
14
- getMe: catchAsync(async (req, res, next) => {
15
- const user = (await userService.findOne({ id: req.user.id }, req.prismaQueryOptions || {}));
16
- Object.keys(defaultExcludedUserFields).forEach((key) => {
17
- if (user)
18
- delete user[key];
19
- });
20
- if (middlewares?.afterGetMe) {
21
- req.responseData = { data: user };
22
- req.responseStatus = 200;
23
- return next();
24
- }
25
- res.status(200).json({ data: user });
26
- }),
27
- updateMe: catchAsync(async (req, res, next) => {
28
- if ("password" in req.body)
29
- throw new AppError("In order to update password use the update-password endpoint.", 400, {}, "InvalidFieldPassword");
30
- const user = (await userService.updateOne({ id: req.user.id }, req.body, req.prismaQueryOptions || {}));
31
- Object.keys(defaultExcludedUserFields).forEach((key) => {
32
- if (user)
33
- delete user[key];
34
- });
35
- if (middlewares?.afterUpdateMe) {
36
- req.responseData = { data: user };
37
- req.responseStatus = 200;
38
- return next();
39
- }
40
- res.status(200).json({ data: user });
41
- }),
42
- logout: catchAsync(async (req, res, next) => {
43
- res.cookie("arkos_access_token", "no-token", {
44
- expires: new Date(Date.now() + 10 * 1000),
45
- httpOnly: true,
46
- });
47
- if (middlewares?.afterLogout) {
48
- req.responseData = null;
49
- req.responseStatus = 204;
50
- return next();
51
- }
52
- res.status(204).json();
53
- }),
54
- login: catchAsync(async (req, res, next) => {
55
- const authConfigs = getArkosConfig()?.authentication;
56
- const usernameField = determineUsernameField(req);
57
- const lastField = usernameField.split(".")[usernameField.split(".").length - 1];
58
- const usernameValue = req.body[lastField];
59
- const { password } = req.body;
60
- if (!usernameValue || !password)
61
- return next(new AppError(`Please provide both ${lastField} and password`, 400));
62
- let whereClause;
63
- if (usernameField?.includes?.(".")) {
64
- const valueToFind = getNestedValue(req.body, usernameField);
65
- if (valueToFind === undefined) {
66
- return next(new AppError(`Invalid ${usernameField} provided`, 400));
67
- }
68
- whereClause = createPrismaWhereClause(usernameField, valueToFind);
69
- }
70
- else {
71
- whereClause = { [usernameField]: usernameValue };
72
- }
73
- const user = (await userService.findOne(whereClause, req.prismaQueryOptions || {}));
74
- if (!user ||
75
- !(await authService.isCorrectPassword(password, user.password))) {
76
- return next(new AppError(`Incorrect ${lastField} or password`, 401));
77
- }
78
- const token = authService.signJwtToken(user.id);
79
- const cookieOptions = {
80
- expires: new Date(Date.now() +
81
- Number(toMs(authConfigs?.jwt?.expiresIn ||
82
- process.env.JWT_EXPIRES_IN ||
83
- arkosEnv.JWT_EXPIRES_IN))),
84
- httpOnly: authConfigs?.jwt?.cookie?.httpOnly ||
85
- process.env.JWT_COOKIE_HTTP_ONLY === "true" ||
86
- true,
87
- secure: authConfigs?.jwt?.cookie?.secure ||
88
- process.env.JWT_COOKIE_SECURE === "true" ||
89
- req.secure ||
90
- req.headers["x-forwarded-proto"] === "https",
91
- sameSite: authConfigs?.jwt?.cookie?.sameSite ||
92
- process.env.JWT_COOKIE_SAME_SITE ||
93
- (process.env.NODE_ENV === "production" ? "none" : "lax"),
94
- };
95
- if (authConfigs?.login?.sendAccessTokenThrough === "response-only" ||
96
- authConfigs?.login?.sendAccessTokenThrough === "both" ||
97
- !authConfigs?.login?.sendAccessTokenThrough) {
98
- req.responseData = { accessToken: token };
99
- }
100
- if (authConfigs?.login?.sendAccessTokenThrough === "cookie-only" ||
101
- authConfigs?.login?.sendAccessTokenThrough === "both" ||
102
- !authConfigs?.login?.sendAccessTokenThrough)
103
- res.cookie("arkos_access_token", token, cookieOptions);
104
- if (middlewares?.afterLogin) {
105
- req.additionalData = { user };
106
- req.responseStatus = 200;
107
- return next();
108
- }
109
- if (authConfigs?.login?.sendAccessTokenThrough === "response-only" ||
110
- authConfigs?.login?.sendAccessTokenThrough === "both" ||
111
- !authConfigs?.login?.sendAccessTokenThrough) {
112
- res.status(200).json(req.responseData);
113
- }
114
- else if (authConfigs?.login?.sendAccessTokenThrough === "cookie-only" ||
115
- authConfigs?.login?.sendAccessTokenThrough === "both" ||
116
- !authConfigs?.login?.sendAccessTokenThrough)
117
- res.status(200).send();
118
- }),
119
- signup: catchAsync(async (req, res, next) => {
120
- const user = (await userService.createOne(req.body, req.prismaQueryOptions || {}));
121
- if (middlewares?.afterSignup) {
122
- req.responseData = { data: user };
123
- req.responseStatus = 201;
124
- return next();
125
- }
126
- Object.keys(defaultExcludedUserFields).forEach((key) => {
127
- delete user[key];
128
- });
129
- res.status(201).json({ data: user });
130
- }),
131
- deleteMe: catchAsync(async (req, res, next) => {
132
- const userId = req.user.id;
133
- const updatedUser = (await userService.updateOne({ id: userId }, {
134
- deletedSelfAccountAt: new Date().toISOString(),
135
- }, req.prismaQueryOptions || {}));
136
- if (middlewares?.afterDeleteMe) {
137
- req.responseData = { data: updatedUser };
138
- req.responseStatus = 200;
139
- return next();
140
- }
141
- Object.keys(defaultExcludedUserFields).forEach((key) => {
142
- delete updatedUser[key];
143
- });
144
- res.status(200).json({
145
- message: "Account deleted successfully",
146
- });
147
- }),
148
- updatePassword: catchAsync(async (req, res, next) => {
149
- const { currentPassword, newPassword } = req.body;
150
- if (!currentPassword || !newPassword)
151
- return next(new AppError("currentPassword and newPassword are required", 400));
152
- const user = req.user;
153
- if (!user || user?.isActive === false || user?.deletedSelfAccountAt)
154
- return next(new AppError("User not found!", 404));
155
- const isPasswordCorrect = await authService.isCorrectPassword(String(currentPassword), String(user.password));
156
- const configs = getArkosConfig();
157
- const initAuthConfigs = configs?.authentication;
158
- if (!isPasswordCorrect)
159
- return next(new AppError("Current password is incorrect.", 400));
160
- if (!authService.isPasswordStrong(String(newPassword)) &&
161
- !configs?.validation) {
162
- return next(new AppError(initAuthConfigs?.passwordValidation?.message ||
163
- "The new password must contain at least one uppercase letter, one lowercase letter, and one number", 400));
164
- }
165
- await userService.updateOne({ id: user.id }, {
166
- password: await authService.hashPassword(newPassword),
167
- passwordChangedAt: new Date(Date.now()),
168
- });
169
- if (middlewares?.afterUpdatePassword) {
170
- req.additionalData = {
171
- user,
172
- };
173
- req.responseData = {
174
- status: "success",
175
- message: "Password updated successfully!",
176
- };
177
- req.responseStatus = 200;
178
- return next();
179
- }
180
- res.status(200).json({
181
- status: "success",
182
- message: "Password updated successfully!",
183
- });
184
- }),
185
- };
186
- };
187
- //# sourceMappingURL=auth.controller.js.map
1
+ "use strict";import i from"../error-handler/utils/catch-async.js";import r from"../error-handler/utils/app-error.js";import p from"./auth.service.js";import{BaseService as T}from"../base/base.service.js";import A from"../../utils/arkos-env.js";import{getArkosConfig as h}from"../../server.js";import{createPrismaWhereClause as O,determineUsernameField as S,getNestedValue as E,toMs as P}from"./utils/helpers/auth.controller.helpers.js";import y from"./utils/services/auth-action.service.js";export const defaultExcludedUserFields={password:!1},authControllerFactory=async(c={})=>{const d=new T("user");return{getMe:i(async(e,n,t)=>{const s=await d.findOne({id:e.user.id},e.prismaQueryOptions||{});if(Object.keys(defaultExcludedUserFields).forEach(o=>{s&&delete s[o]}),c?.afterGetMe)return e.responseData={data:s},e.responseStatus=200,t();n.status(200).json({data:s})}),updateMe:i(async(e,n,t)=>{if("password"in e.body)throw new r("In order to update password use the update-password endpoint.",400,{},"InvalidFieldPassword");const s=await d.updateOne({id:e.user.id},e.body,e.prismaQueryOptions||{});if(Object.keys(defaultExcludedUserFields).forEach(o=>{s&&delete s[o]}),c?.afterUpdateMe)return e.responseData={data:s},e.responseStatus=200,t();n.status(200).json({data:s})}),logout:i(async(e,n,t)=>{if(n.cookie("arkos_access_token","no-token",{expires:new Date(Date.now()+10*1e3),httpOnly:!0}),c?.afterLogout)return e.responseData=null,e.responseStatus=204,t();n.status(204).json()}),login:i(async(e,n,t)=>{const s=h()?.authentication,o=S(e),a=o.split(".")[o.split(".").length-1],w=e.body[a],{password:u}=e.body;if(!w||!u)return t(new r(`Please provide both ${a} and password`,400));let l;if(o?.includes?.(".")){const m=E(e.body,o);if(m===void 0)return t(new r(`Invalid ${o} provided`,400));l=O(o,m)}else l={[o]:w};const f=await d.findOne(l,e.prismaQueryOptions||{});if(!f||!await p.isCorrectPassword(u,f.password))return t(new r(`Incorrect ${a} or password`,401));const g=p.signJwtToken(f.id),k={expires:new Date(Date.now()+Number(P(s?.jwt?.expiresIn||process.env.JWT_EXPIRES_IN||A.JWT_EXPIRES_IN))),httpOnly:s?.jwt?.cookie?.httpOnly||process.env.JWT_COOKIE_HTTP_ONLY==="true"||!0,secure:s?.jwt?.cookie?.secure||process.env.JWT_COOKIE_SECURE==="true"||e.secure||e.headers["x-forwarded-proto"]==="https",sameSite:s?.jwt?.cookie?.sameSite||process.env.JWT_COOKIE_SAME_SITE||(process.env.NODE_ENV==="production"?"none":"lax")};if((s?.login?.sendAccessTokenThrough==="response-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough)&&(e.responseData={accessToken:g}),(s?.login?.sendAccessTokenThrough==="cookie-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough)&&n.cookie("arkos_access_token",g,k),e.accessToken=g,c?.afterLogin)return e.additionalData={user:f},e.responseStatus=200,t();s?.login?.sendAccessTokenThrough==="response-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough?n.status(200).json(e.responseData):(s?.login?.sendAccessTokenThrough==="cookie-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough)&&n.status(200).send()}),signup:i(async(e,n,t)=>{const s=await d.createOne(e.body,e.prismaQueryOptions||{});if(c?.afterSignup)return e.responseData={data:s},e.responseStatus=201,t();Object.keys(defaultExcludedUserFields).forEach(o=>{delete s[o]}),n.status(201).json({data:s})}),deleteMe:i(async(e,n,t)=>{const s=e.user.id,o=await d.updateOne({id:s},{deletedSelfAccountAt:new Date().toISOString()},e.prismaQueryOptions||{});if(c?.afterDeleteMe)return e.responseData={data:o},e.responseStatus=200,t();Object.keys(defaultExcludedUserFields).forEach(a=>{delete o[a]}),n.status(200).json({message:"Account deleted successfully"})}),updatePassword:i(async(e,n,t)=>{const{currentPassword:s,newPassword:o}=e.body;if(!s||!o)return t(new r("currentPassword and newPassword are required",400));const a=e.user;if(!a||a?.isActive===!1||a?.deletedSelfAccountAt)return t(new r("User not found!",404));const w=await p.isCorrectPassword(String(s),String(a.password)),u=h(),l=u?.authentication;if(!w)return t(new r("Current password is incorrect.",400));if(!p.isPasswordStrong(String(o))&&!u?.validation)return t(new r(l?.passwordValidation?.message||"The new password must contain at least one uppercase letter, one lowercase letter, and one number",400));if(await d.updateOne({id:a.id},{password:await p.hashPassword(o),passwordChangedAt:new Date(Date.now())}),c?.afterUpdatePassword)return e.additionalData={user:a},e.responseData={status:"success",message:"Password updated successfully!"},e.responseStatus=200,t();n.status(200).json({status:"success",message:"Password updated successfully!"})}),findManyAuthAction:i(async(e,n)=>{const t=h(),s=y.getAll()?.map(o=>(t?.authentication?.mode==="dynamic"&&delete o?.roles,o));n.json({total:s.length,results:s.length,data:s})}),findOneAuthAction:i(async(e,n)=>{const t=h(),s=e.params?.resourceName;if(!s)throw new r("Please provide a resoureName",400);const o=y.getByResource(e.params?.resourceName);if(!o)throw new r(`Auth action with resource name ${s}`,404);t?.authentication?.mode==="dynamic"&&delete o?.roles,n.json({data:o})})}};