arkos 1.2.13-test → 1.2.13-test.1

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 (265) hide show
  1. package/README.md +22 -14
  2. package/cli.js +2 -11
  3. package/dist/cjs/app.js +138 -1
  4. package/dist/cjs/app.js.map +1 -1
  5. package/dist/cjs/index.js +22 -0
  6. package/dist/cjs/modules/auth/auth.router.js +9 -83
  7. package/dist/cjs/modules/auth/auth.router.js.map +1 -1
  8. package/dist/cjs/modules/auth/auth.service.js +0 -7
  9. package/dist/cjs/modules/auth/auth.service.js.map +1 -1
  10. package/dist/cjs/modules/base/base.controller.js +11 -12
  11. package/dist/cjs/modules/base/base.controller.js.map +1 -1
  12. package/dist/cjs/modules/base/base.middlewares.js +4 -4
  13. package/dist/cjs/modules/base/base.middlewares.js.map +1 -1
  14. package/dist/cjs/modules/base/base.router.js.map +1 -1
  15. package/dist/cjs/modules/base/base.service.js.map +1 -1
  16. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +43 -113
  17. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  18. package/dist/cjs/modules/error-handler/error-handler.controller.js +2 -0
  19. package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
  20. package/dist/cjs/modules/error-handler/utils/catch-async.js +1 -1
  21. package/dist/cjs/modules/error-handler/utils/catch-async.js.map +1 -1
  22. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +6 -0
  23. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
  24. package/dist/cjs/modules/file-upload/file-upload.router.js +9 -21
  25. package/dist/cjs/modules/file-upload/file-upload.router.js.map +1 -1
  26. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +7 -0
  27. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -1
  28. package/dist/cjs/modules/swagger/swagger.router.js +71 -93
  29. package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
  30. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +270 -0
  31. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -0
  32. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +66 -0
  33. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -0
  34. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +41 -0
  35. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -0
  36. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +29 -0
  37. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -0
  38. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +30 -0
  39. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +1 -0
  40. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +471 -0
  41. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -0
  42. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +575 -0
  43. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -0
  44. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +253 -0
  45. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -0
  46. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +105 -0
  47. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
  48. package/dist/cjs/paths.js +9 -1
  49. package/dist/cjs/server.js +85 -3
  50. package/dist/cjs/server.js.map +1 -1
  51. package/dist/cjs/types/arkos-config.js.map +1 -1
  52. package/dist/cjs/utils/cli/build.js +2 -19
  53. package/dist/cjs/utils/cli/build.js.map +1 -1
  54. package/dist/cjs/utils/cli/dev.js +35 -47
  55. package/dist/cjs/utils/cli/dev.js.map +1 -1
  56. package/dist/cjs/utils/cli/generate.js +6 -6
  57. package/dist/cjs/utils/cli/generate.js.map +1 -1
  58. package/dist/cjs/utils/cli/start.js +4 -3
  59. package/dist/cjs/utils/cli/start.js.map +1 -1
  60. package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -3
  61. package/dist/cjs/utils/cli/utils/cli.helpers.js.map +1 -1
  62. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +33 -66
  63. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +1 -1
  64. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +17 -11
  65. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +1 -1
  66. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +5 -0
  67. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -1
  68. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js +1 -1
  69. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
  70. package/dist/cjs/utils/features/api.features.js +10 -4
  71. package/dist/cjs/utils/features/api.features.js.map +1 -1
  72. package/dist/cjs/utils/helpers/fs.helpers.js +12 -5
  73. package/dist/cjs/utils/helpers/fs.helpers.js.map +1 -1
  74. package/dist/cjs/utils/helpers/global.helpers.js +51 -2
  75. package/dist/cjs/utils/helpers/global.helpers.js.map +1 -1
  76. package/dist/cjs/utils/helpers/models.helpers.js +81 -67
  77. package/dist/cjs/utils/helpers/models.helpers.js.map +1 -1
  78. package/dist/cjs/utils/helpers/prisma.helpers.js +7 -4
  79. package/dist/cjs/utils/helpers/prisma.helpers.js.map +1 -1
  80. package/dist/cjs/utils/helpers/routers.helpers.js +21 -0
  81. package/dist/cjs/utils/helpers/routers.helpers.js.map +1 -0
  82. package/dist/cjs/utils/prisma/enhaced-prisma-json-schema-generator.js +451 -0
  83. package/dist/cjs/utils/prisma/enhaced-prisma-json-schema-generator.js.map +1 -0
  84. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +88 -0
  85. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js.map +1 -0
  86. package/dist/cjs/utils/prisma/prisma-schema-parser.js +158 -0
  87. package/dist/cjs/utils/prisma/prisma-schema-parser.js.map +1 -0
  88. package/dist/cjs/utils/prisma/types.js +3 -0
  89. package/dist/cjs/utils/prisma/types.js.map +1 -0
  90. package/dist/cjs/utils/sheu.js +119 -0
  91. package/dist/cjs/utils/sheu.js.map +1 -0
  92. package/dist/esm/index.d.mts +280 -0
  93. package/dist/esm/index.mjs +22 -0
  94. package/dist/exports/index.js +1 -0
  95. package/dist/types/arkos-config.js +1 -0
  96. package/dist/types/auth.js +1 -0
  97. package/dist/types/index.js +1 -0
  98. package/dist/types/modules/base/base.middlewares.d.ts +4 -4
  99. package/dist/types/modules/base/base.service.d.ts +1 -1
  100. package/dist/types/modules/base/utils/helpers/base.router.helpers.d.ts +4 -1
  101. package/dist/types/modules/error-handler/utils/catch-async.d.ts +1 -0
  102. package/dist/types/modules/error-handler/utils/error-handler.helpers.d.ts +4 -0
  103. package/dist/types/modules/file-upload/file-upload.router.d.ts +1 -1
  104. package/dist/types/modules/file-upload/utils/helpers/file-upload.helpers.d.ts +2 -1
  105. package/dist/types/modules/swagger/swagger.router.d.ts +1 -1
  106. package/dist/types/modules/swagger/utils/helpers/get-authentication-json-schema-paths.d.ts +3 -0
  107. package/dist/types/modules/swagger/utils/helpers/get-system-json-schema-paths.d.ts +2 -0
  108. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.d.ts +1 -0
  109. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.d.ts +2 -0
  110. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.d.ts +1 -0
  111. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.d.ts +3 -0
  112. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.d.ts +3 -0
  113. package/dist/types/modules/swagger/utils/helpers/missing-json-schemas-generator.d.ts +34 -0
  114. package/dist/types/modules/swagger/utils/helpers/swagger.router.helpers.d.ts +7 -0
  115. package/dist/types/router-config.js +1 -0
  116. package/dist/types/server.d.ts +3 -0
  117. package/dist/types/types/arkos-config.d.ts +10 -5
  118. package/dist/types/utils/cli/utils/cli.helpers.d.ts +1 -1
  119. package/dist/types/utils/features/api.features.d.ts +1 -0
  120. package/dist/types/utils/helpers/global.helpers.d.ts +6 -1
  121. package/dist/types/utils/helpers/models.helpers.d.ts +31 -5
  122. package/dist/types/utils/helpers/routers.helpers.d.ts +2 -0
  123. package/dist/types/utils/prisma/enhaced-prisma-json-schema-generator.d.ts +34 -0
  124. package/dist/types/utils/prisma/prisma-json-schema-generator.d.ts +10 -0
  125. package/dist/types/utils/prisma/prisma-schema-parser.d.ts +18 -0
  126. package/dist/types/utils/prisma/types.d.ts +48 -0
  127. package/dist/types/utils/sheu.d.ts +70 -0
  128. package/dist/utils/arkos-env.js +1 -0
  129. package/dist/utils/dotenv.helpers.js +1 -0
  130. package/dist/utils/sheu.js +1 -0
  131. package/dist/utils/validate-dto.js +1 -0
  132. package/dist/utils/validate-schema.js +1 -0
  133. package/package.json +32 -34
  134. package/dist/es2020/app.js +0 -1
  135. package/dist/es2020/app.js.map +0 -1
  136. package/dist/es2020/exports/auth/index.js +0 -2
  137. package/dist/es2020/exports/auth/index.js.map +0 -1
  138. package/dist/es2020/exports/controllers/index.js +0 -4
  139. package/dist/es2020/exports/controllers/index.js.map +0 -1
  140. package/dist/es2020/exports/error-handler/index.js +0 -4
  141. package/dist/es2020/exports/error-handler/index.js.map +0 -1
  142. package/dist/es2020/exports/index.js +0 -8
  143. package/dist/es2020/exports/index.js.map +0 -1
  144. package/dist/es2020/exports/middlewares/index.js +0 -2
  145. package/dist/es2020/exports/middlewares/index.js.map +0 -1
  146. package/dist/es2020/exports/prisma/index.js +0 -3
  147. package/dist/es2020/exports/prisma/index.js.map +0 -1
  148. package/dist/es2020/exports/services/index.js +0 -9
  149. package/dist/es2020/exports/services/index.js.map +0 -1
  150. package/dist/es2020/exports/utils/index.js +0 -4
  151. package/dist/es2020/exports/utils/index.js.map +0 -1
  152. package/dist/es2020/exports/validation/index.js +0 -4
  153. package/dist/es2020/exports/validation/index.js.map +0 -1
  154. package/dist/es2020/modules/auth/auth.controller.js +0 -187
  155. package/dist/es2020/modules/auth/auth.controller.js.map +0 -1
  156. package/dist/es2020/modules/auth/auth.router.js +0 -118
  157. package/dist/es2020/modules/auth/auth.router.js.map +0 -1
  158. package/dist/es2020/modules/auth/auth.service.js +0 -185
  159. package/dist/es2020/modules/auth/auth.service.js.map +0 -1
  160. package/dist/es2020/modules/auth/utils/helpers/auth.controller.helpers.js +0 -73
  161. package/dist/es2020/modules/auth/utils/helpers/auth.controller.helpers.js.map +0 -1
  162. package/dist/es2020/modules/base/base.controller.js +0 -151
  163. package/dist/es2020/modules/base/base.controller.js.map +0 -1
  164. package/dist/es2020/modules/base/base.middlewares.js +0 -81
  165. package/dist/es2020/modules/base/base.middlewares.js.map +0 -1
  166. package/dist/es2020/modules/base/base.router.js +0 -17
  167. package/dist/es2020/modules/base/base.router.js.map +0 -1
  168. package/dist/es2020/modules/base/base.service.js +0 -120
  169. package/dist/es2020/modules/base/base.service.js.map +0 -1
  170. package/dist/es2020/modules/base/utils/helpers/base.controller.helpers.js +0 -77
  171. package/dist/es2020/modules/base/utils/helpers/base.controller.helpers.js.map +0 -1
  172. package/dist/es2020/modules/base/utils/helpers/base.middlewares.helpers.js +0 -44
  173. package/dist/es2020/modules/base/utils/helpers/base.middlewares.helpers.js.map +0 -1
  174. package/dist/es2020/modules/base/utils/helpers/base.router.helpers.js +0 -161
  175. package/dist/es2020/modules/base/utils/helpers/base.router.helpers.js.map +0 -1
  176. package/dist/es2020/modules/base/utils/helpers/base.service.helpers.js +0 -165
  177. package/dist/es2020/modules/base/utils/helpers/base.service.helpers.js.map +0 -1
  178. package/dist/es2020/modules/email/email.service.js +0 -97
  179. package/dist/es2020/modules/email/email.service.js.map +0 -1
  180. package/dist/es2020/modules/error-handler/error-handler.controller.js +0 -105
  181. package/dist/es2020/modules/error-handler/error-handler.controller.js.map +0 -1
  182. package/dist/es2020/modules/error-handler/utils/app-error.js +0 -15
  183. package/dist/es2020/modules/error-handler/utils/app-error.js.map +0 -1
  184. package/dist/es2020/modules/error-handler/utils/catch-async.js +0 -10
  185. package/dist/es2020/modules/error-handler/utils/catch-async.js.map +0 -1
  186. package/dist/es2020/modules/error-handler/utils/error-handler.helpers.js +0 -155
  187. package/dist/es2020/modules/error-handler/utils/error-handler.helpers.js.map +0 -1
  188. package/dist/es2020/modules/file-upload/file-upload.controller.js +0 -266
  189. package/dist/es2020/modules/file-upload/file-upload.controller.js.map +0 -1
  190. package/dist/es2020/modules/file-upload/file-upload.router.js +0 -50
  191. package/dist/es2020/modules/file-upload/file-upload.router.js.map +0 -1
  192. package/dist/es2020/modules/file-upload/file-upload.service.js +0 -314
  193. package/dist/es2020/modules/file-upload/file-upload.service.js.map +0 -1
  194. package/dist/es2020/modules/file-upload/utils/helpers/file-upload.helpers.js +0 -81
  195. package/dist/es2020/modules/file-upload/utils/helpers/file-upload.helpers.js.map +0 -1
  196. package/dist/es2020/modules/swagger/swagger.router.js +0 -135
  197. package/dist/es2020/modules/swagger/swagger.router.js.map +0 -1
  198. package/dist/es2020/paths.js +0 -1
  199. package/dist/es2020/paths.js.map +0 -1
  200. package/dist/es2020/server.js +0 -3
  201. package/dist/es2020/server.js.map +0 -1
  202. package/dist/es2020/types/arkos-config.js +0 -2
  203. package/dist/es2020/types/arkos-config.js.map +0 -1
  204. package/dist/es2020/types/auth.js +0 -2
  205. package/dist/es2020/types/auth.js.map +0 -1
  206. package/dist/es2020/types/index.js +0 -8
  207. package/dist/es2020/types/index.js.map +0 -1
  208. package/dist/es2020/types/router-config.js +0 -2
  209. package/dist/es2020/types/router-config.js.map +0 -1
  210. package/dist/es2020/utils/arkos-env.js +0 -7
  211. package/dist/es2020/utils/arkos-env.js.map +0 -1
  212. package/dist/es2020/utils/cli/build.js +0 -223
  213. package/dist/es2020/utils/cli/build.js.map +0 -1
  214. package/dist/es2020/utils/cli/dev.js +0 -261
  215. package/dist/es2020/utils/cli/dev.js.map +0 -1
  216. package/dist/es2020/utils/cli/generate.js +0 -183
  217. package/dist/es2020/utils/cli/generate.js.map +0 -1
  218. package/dist/es2020/utils/cli/index.js +0 -74
  219. package/dist/es2020/utils/cli/index.js.map +0 -1
  220. package/dist/es2020/utils/cli/start.js +0 -86
  221. package/dist/es2020/utils/cli/start.js.map +0 -1
  222. package/dist/es2020/utils/cli/utils/cli.helpers.js +0 -18
  223. package/dist/es2020/utils/cli/utils/cli.helpers.js.map +0 -1
  224. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +0 -33
  225. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -1
  226. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -18
  227. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -1
  228. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-middlewares.js +0 -265
  229. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +0 -1
  230. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +0 -55
  231. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -1
  232. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-router-template.js +0 -32
  233. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -1
  234. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-service-template.js +0 -32
  235. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-service-template.js.map +0 -1
  236. package/dist/es2020/utils/cli/utils/template-generators.js +0 -25
  237. package/dist/es2020/utils/cli/utils/template-generators.js.map +0 -1
  238. package/dist/es2020/utils/dotenv.helpers.js +0 -37
  239. package/dist/es2020/utils/dotenv.helpers.js.map +0 -1
  240. package/dist/es2020/utils/features/api.features.js +0 -154
  241. package/dist/es2020/utils/features/api.features.js.map +0 -1
  242. package/dist/es2020/utils/features/change-case.features.js +0 -31
  243. package/dist/es2020/utils/features/change-case.features.js.map +0 -1
  244. package/dist/es2020/utils/helpers/api.features.helpers.js +0 -103
  245. package/dist/es2020/utils/helpers/api.features.helpers.js.map +0 -1
  246. package/dist/es2020/utils/helpers/change-case.helpers.js +0 -161
  247. package/dist/es2020/utils/helpers/change-case.helpers.js.map +0 -1
  248. package/dist/es2020/utils/helpers/deepmerge.helper.js +0 -113
  249. package/dist/es2020/utils/helpers/deepmerge.helper.js.map +0 -1
  250. package/dist/es2020/utils/helpers/fs.helpers.js +0 -45
  251. package/dist/es2020/utils/helpers/fs.helpers.js.map +0 -1
  252. package/dist/es2020/utils/helpers/global.helpers.js +0 -4
  253. package/dist/es2020/utils/helpers/global.helpers.js.map +0 -1
  254. package/dist/es2020/utils/helpers/models.helpers.js +0 -276
  255. package/dist/es2020/utils/helpers/models.helpers.js.map +0 -1
  256. package/dist/es2020/utils/helpers/prisma.helpers.js +0 -41
  257. package/dist/es2020/utils/helpers/prisma.helpers.js.map +0 -1
  258. package/dist/es2020/utils/helpers/query-parser.helpers.js +0 -40
  259. package/dist/es2020/utils/helpers/query-parser.helpers.js.map +0 -1
  260. package/dist/es2020/utils/helpers/text.helpers.js +0 -22
  261. package/dist/es2020/utils/helpers/text.helpers.js.map +0 -1
  262. package/dist/es2020/utils/validate-dto.js +0 -11
  263. package/dist/es2020/utils/validate-dto.js.map +0 -1
  264. package/dist/es2020/utils/validate-schema.js +0 -9
  265. package/dist/es2020/utils/validate-schema.js.map +0 -1
package/README.md CHANGED
@@ -1,36 +1,44 @@
1
1
  ![Header Image](https://www.arkosjs.com/img/arkos-readme-header.webp)
2
2
 
3
- # Arkos
3
+ # Arkos.js
4
4
 
5
5
  ### The Express And Prisma Framework For RESTful API
6
6
 
7
- Used to simplify the development of a secure and scalable RESTful API with minimal configuration, allowing developers to focus on what really matters for the business
7
+ Arkos simplifies the development of secure and scalable RESTful APIs with minimal configuration, allowing developers to focus on what really matters for their business logic.
8
8
 
9
9
  ## Features
10
10
 
11
- - 🚀 **Automatic API Generation** - Instantly create RESTful routes from Prisma models
12
- - 🔐 **Built-in Authentication** - JWT-based authentication with minimal setup
13
- - **Express Middlewares** - Pre-configured security, parsing, and error handling
14
- - 🛡️ **Data Validation** - Using class-validator/class-transformer or zod
15
- - 💠 **Prisma Integration** - Seamless database management with relation fields support
16
- - ⬆️ **File Upload & Optimization** - Efficient handling of images, videos, and documents
17
- - 👨‍💻 **Interceptors Middlewares** - Customize request/response flow with hooks
18
- - ✉️ **Nodemailer Integration** - Easy email sending functionality
19
- - 📝 **Swagger API Documentation** - Automatically generate API documentation
11
+ - **Automatic API Generation** - Instantly create RESTful routes from Prisma models
12
+ - **Built-in Authentication** - JWT-based authentication with minimal setup
13
+ - **Express Middlewares** - Pre-configured security, parsing, and error handling
14
+ - **Data Validation** - Input validation and transformation capabilities
15
+ - **Prisma Integration** - Seamless database management with relation fields support
16
+ - **File Upload & Optimization** - Efficient handling of images, videos, and documents
17
+ - **Interceptors Middlewares** - Customize request/response flow with hooks
18
+ - **Nodemailer Integration** - Easy email sending functionality
19
+ - **Swagger API Documentation** - Automatically generate API documentation
20
20
 
21
21
  **BETA VERSION**
22
22
 
23
+ ## Quick Start
24
+
25
+ Get started with Arkos.js in seconds:
26
+
27
+ ```bash
28
+ npx create-arkos@latest my-project
29
+ ```
30
+
23
31
  ## Documentation
24
32
 
25
- For detailed documentation, visit our [official docs](https://arkosjs.com/docs/intro).
33
+ For comprehensive guides, API reference, and examples, visit our [official documentation](https://arkosjs.com/docs/intro).
26
34
 
27
35
  ## License
28
36
 
29
37
  This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
30
38
 
31
- ## Contact
39
+ ## Support
32
40
 
33
- For questions or issues, please open a GitHub issue or contact [Uanela Como](mailto:uanelaluiswayne@gmail.com).
41
+ For questions, bug reports, or feature requests, please open a GitHub issue or contact [Uanela Como](mailto:uanelaluiswayne@gmail.com).
34
42
 
35
43
  ---
36
44
 
package/cli.js CHANGED
@@ -1,34 +1,25 @@
1
1
  #!/usr/bin/env node
2
-
3
2
  (async () => {
4
3
  try {
5
- // Get path and fs using dynamic import
6
4
  const { join } = await import("path");
7
5
  const { existsSync, readFileSync } = await import("fs");
8
6
 
9
- // Determine if we should use ESM or CJS
10
7
  let useEsm = false;
11
8
 
12
9
  try {
13
- // Check if current environment is set to use ESM
14
- const pkgPath = join("..", process.cwd(), "package.json");
10
+ const pkgPath = join(process.cwd(), "package.json");
15
11
  if (existsSync(pkgPath)) {
16
12
  const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
17
13
  useEsm = pkg.type === "module";
18
14
  }
19
15
  } catch (err) {
20
- // Ignore errors and default to CJS
21
16
  console.error("Error checking package.json:", err);
22
17
  }
23
18
 
24
- // Import the appropriate version
25
19
  if (useEsm) {
26
- // Use dynamic import for ESM
27
- await import("./dist/es2020/utils/cli/index.js");
20
+ await import("./dist/esm/utils/cli/index.js");
28
21
  } else {
29
- // For CommonJS, we still need to use dynamic import in an ESM context
30
22
  await import("./dist/cjs/utils/cli/index.js");
31
- // console.info("cjs", index);
32
23
  }
33
24
  } catch (err) {
34
25
  console.error("Failed to load CLI:", err);
package/dist/cjs/app.js CHANGED
@@ -1 +1,138 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.app=void 0,exports.bootstrap=bootstrap;const express_1=__importDefault(require("express")),cors_1=__importDefault(require("cors")),cookie_parser_1=__importDefault(require("cookie-parser")),auth_router_1=require("./modules/auth/auth.router"),base_router_1=require("./modules/base/base.router"),error_handler_controller_1=__importDefault(require("./modules/error-handler/error-handler.controller")),express_rate_limit_1=require("express-rate-limit"),compression_1=__importDefault(require("compression")),base_middlewares_1=require("./modules/base/base.middlewares"),prisma_helpers_1=require("./utils/helpers/prisma.helpers"),file_upload_router_1=require("./modules/file-upload/file-upload.router"),query_parser_helpers_1=require("./utils/helpers/query-parser.helpers"),deepmerge_helper_1=__importDefault(require("./utils/helpers/deepmerge.helper")),swagger_router_1=require("./modules/swagger/swagger.router");exports.app=(0,express_1.default)();async function bootstrap(e){await(0,prisma_helpers_1.loadPrismaModule)(),e?.configureApp&&await e.configureApp(exports.app);const i=e?.middlewares,s=i?.disable||[],t=i?.replace||{};s?.includes?.("compression")||exports.app.use(t.compression||(0,compression_1.default)(e?.compressionOptions)),s?.includes?.("global-rate-limit")||exports.app.use(t.globalRateLimit||(0,express_rate_limit_1.rateLimit)((0,deepmerge_helper_1.default)({windowMs:60*1e3,limit:500,standardHeaders:"draft-7",legacyHeaders:!1,handler:(r,a)=>{a.status(429).json({message:"Too many requests, please try again later"})}},e?.globalRequestRateLimitOptions||{}))),s?.includes?.("cors")||exports.app.use(t.cors||(0,cors_1.default)(e?.cors?.customHandler?e.cors.customHandler:(0,deepmerge_helper_1.default)({origin:(r,a)=>{const l=e?.cors?.allowedOrigins;l==="*"?a(null,!0):Array.isArray(l)?a(null,!r||l?.includes?.(r)):typeof l=="string"?a(null,!r||l===r):a(null,!1)},methods:["GET","POST","PUT","DELETE","PATCH","OPTIONS"],allowedHeaders:["Content-Type","Authorization","Connection"],credentials:!0},e?.cors?.options||{}))),s?.includes?.("express-json")||exports.app.use(t.expressJson||express_1.default.json(e?.jsonBodyParserOptions)),s?.includes?.("cookie-parser")||exports.app.use(t.cookieParser||(0,cookie_parser_1.default)(...e?.cookieParserParameters||[])),s?.includes?.("query-parser")||exports.app.use(t.queryParser||(0,query_parser_helpers_1.queryParser)((0,deepmerge_helper_1.default)({parseNull:!0,parseUndefined:!0,parseBoolean:!0},e?.queryParserOptions||{}))),s?.includes?.("database-connection")||exports.app.use(t.databaseConnection||prisma_helpers_1.checkDatabaseConnection),s?.includes?.("request-logger")||exports.app.use(t.requestLogger||base_middlewares_1.handleRequestLogs),e?.middlewares?.additional&&e.middlewares.additional.forEach(r=>{exports.app.use(r)});const u=e?.routers,p=u?.disable||[],o=u?.replace||{};if(p?.includes?.("welcome-endpoint")||exports.app.get("/api",o.welcomeEndpoint||((r,a)=>{a.status(200).json({message:e.welcomeMessage})})),!p?.includes?.("file-upload")){const r=o.fileUpload?await o.fileUpload(e):await(0,file_upload_router_1.getFileUploadRouter)(e);exports.app.use(r)}if(!p?.includes?.("auth-router")&&e.authentication){const r=o.authRouter?await o.authRouter(e):await(0,auth_router_1.getAuthRouter)(e);exports.app.use("/api",r)}if(!p?.includes?.("prisma-models-router")){const r=o.prismaModelsRouter?await o.prismaModelsRouter(e):await(0,base_router_1.getPrismaModelsRouter)(e);exports.app.use("/api",r)}return exports.app.use("/api",(0,base_router_1.getAvailableResourcesAndRoutesRouter)()),exports.app.use("/api",(0,swagger_router_1.getSwaggerRouter)(e)),u?.additional&&u.additional.forEach(r=>{exports.app.use(r)}),s?.includes?.("global-error-handler")||exports.app.use(t.globalErrorHandler||error_handler_controller_1.default),exports.app}
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.app = void 0;
7
+ exports.bootstrap = bootstrap;
8
+ const express_1 = __importDefault(require("express"));
9
+ const cors_1 = __importDefault(require("cors"));
10
+ const cookie_parser_1 = __importDefault(require("cookie-parser"));
11
+ const auth_router_1 = require("./modules/auth/auth.router");
12
+ const base_router_1 = require("./modules/base/base.router");
13
+ const error_handler_controller_1 = __importDefault(require("./modules/error-handler/error-handler.controller"));
14
+ const express_rate_limit_1 = require("express-rate-limit");
15
+ const compression_1 = __importDefault(require("compression"));
16
+ const base_middlewares_1 = require("./modules/base/base.middlewares");
17
+ const prisma_helpers_1 = require("./utils/helpers/prisma.helpers");
18
+ const file_upload_router_1 = require("./modules/file-upload/file-upload.router");
19
+ const query_parser_helpers_1 = require("./utils/helpers/query-parser.helpers");
20
+ const deepmerge_helper_1 = __importDefault(require("./utils/helpers/deepmerge.helper"));
21
+ const swagger_router_1 = require("./modules/swagger/swagger.router");
22
+ exports.app = (0, express_1.default)();
23
+ async function bootstrap(arkosConfig) {
24
+ await (0, prisma_helpers_1.loadPrismaModule)();
25
+ if (arkosConfig?.configureApp)
26
+ await arkosConfig.configureApp(exports.app);
27
+ const middlewaresConfig = arkosConfig?.middlewares;
28
+ const disabledMiddlewares = middlewaresConfig?.disable || [];
29
+ const replacedMiddlewares = middlewaresConfig?.replace || {};
30
+ if (!disabledMiddlewares?.includes?.("compression"))
31
+ exports.app.use(replacedMiddlewares.compression ||
32
+ (0, compression_1.default)(arkosConfig?.compressionOptions));
33
+ if (!disabledMiddlewares?.includes?.("global-rate-limit"))
34
+ exports.app.use(replacedMiddlewares.globalRateLimit ||
35
+ (0, express_rate_limit_1.rateLimit)((0, deepmerge_helper_1.default)({
36
+ windowMs: 60 * 1000,
37
+ limit: 500,
38
+ standardHeaders: "draft-7",
39
+ legacyHeaders: false,
40
+ handler: (_, res) => {
41
+ res.status(429).json({
42
+ message: "Too many requests, please try again later",
43
+ });
44
+ },
45
+ }, arkosConfig?.globalRequestRateLimitOptions || {})));
46
+ if (!disabledMiddlewares?.includes?.("cors"))
47
+ exports.app.use(replacedMiddlewares.cors ||
48
+ (0, cors_1.default)(arkosConfig?.cors?.customHandler
49
+ ? arkosConfig.cors.customHandler
50
+ : (0, deepmerge_helper_1.default)({
51
+ origin: (origin, cb) => {
52
+ const allowed = arkosConfig?.cors?.allowedOrigins;
53
+ if (allowed === "*") {
54
+ cb(null, true);
55
+ }
56
+ else if (Array.isArray(allowed)) {
57
+ cb(null, !origin || allowed?.includes?.(origin));
58
+ }
59
+ else if (typeof allowed === "string") {
60
+ cb(null, !origin || allowed === origin);
61
+ }
62
+ else {
63
+ cb(null, false);
64
+ }
65
+ },
66
+ methods: ["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"],
67
+ allowedHeaders: [
68
+ "Content-Type",
69
+ "Authorization",
70
+ "Connection",
71
+ ],
72
+ credentials: true,
73
+ }, arkosConfig?.cors?.options || {})));
74
+ if (!disabledMiddlewares?.includes?.("express-json"))
75
+ exports.app.use(replacedMiddlewares.expressJson ||
76
+ express_1.default.json(arkosConfig?.jsonBodyParserOptions));
77
+ if (!disabledMiddlewares?.includes?.("cookie-parser"))
78
+ exports.app.use(replacedMiddlewares.cookieParser ||
79
+ (0, cookie_parser_1.default)(...[...(arkosConfig?.cookieParserParameters || [])]));
80
+ if (!disabledMiddlewares?.includes?.("query-parser"))
81
+ exports.app.use(replacedMiddlewares.queryParser ||
82
+ (0, query_parser_helpers_1.queryParser)((0, deepmerge_helper_1.default)({
83
+ parseNull: true,
84
+ parseUndefined: true,
85
+ parseBoolean: true,
86
+ }, arkosConfig?.queryParserOptions || {})));
87
+ if (!disabledMiddlewares?.includes?.("database-connection"))
88
+ exports.app.use(replacedMiddlewares.databaseConnection || prisma_helpers_1.checkDatabaseConnection);
89
+ if (!disabledMiddlewares?.includes?.("request-logger"))
90
+ exports.app.use(replacedMiddlewares.requestLogger || base_middlewares_1.handleRequestLogs);
91
+ if (arkosConfig?.middlewares?.additional)
92
+ arkosConfig.middlewares.additional.forEach((middleware) => {
93
+ exports.app.use(middleware);
94
+ });
95
+ const routersConfig = arkosConfig?.routers;
96
+ const disabledRouters = routersConfig?.disable || [];
97
+ const replacedRouters = routersConfig?.replace || {};
98
+ if (!disabledRouters?.includes?.("welcome-endpoint"))
99
+ exports.app.get("/api", replacedRouters.welcomeEndpoint ||
100
+ ((_, res) => {
101
+ res.status(200).json({ message: arkosConfig.welcomeMessage });
102
+ }));
103
+ if (!disabledRouters?.includes?.("file-upload")) {
104
+ const fileUploadRouter = replacedRouters.fileUpload
105
+ ? await replacedRouters.fileUpload(arkosConfig)
106
+ : await (0, file_upload_router_1.getFileUploadRouter)(arkosConfig);
107
+ exports.app.use(fileUploadRouter);
108
+ }
109
+ if (!disabledRouters?.includes?.("auth-router") &&
110
+ arkosConfig.authentication) {
111
+ const authRouter = replacedRouters.authRouter
112
+ ? await replacedRouters.authRouter(arkosConfig)
113
+ : await (0, auth_router_1.getAuthRouter)(arkosConfig);
114
+ exports.app.use("/api", authRouter);
115
+ }
116
+ if (!disabledRouters?.includes?.("prisma-models-router")) {
117
+ const modelsRouter = replacedRouters.prismaModelsRouter
118
+ ? await replacedRouters.prismaModelsRouter(arkosConfig)
119
+ : await (0, base_router_1.getPrismaModelsRouter)(arkosConfig);
120
+ exports.app.use("/api", modelsRouter);
121
+ }
122
+ exports.app.use("/api", (0, base_router_1.getAvailableResourcesAndRoutesRouter)());
123
+ if (arkosConfig.swagger &&
124
+ (process.env.ARKOS_BUILD !== "true" ||
125
+ arkosConfig.swagger.enableAfterBuild === true))
126
+ exports.app.use("/api", await (0, swagger_router_1.getSwaggerRouter)(arkosConfig));
127
+ if (routersConfig?.additional)
128
+ routersConfig.additional.forEach((router) => {
129
+ exports.app.use(router);
130
+ });
131
+ if (!disabledMiddlewares?.includes?.("global-error-handler"))
132
+ exports.app.use(replacedMiddlewares.globalErrorHandler || error_handler_controller_1.default);
133
+ exports.app.use("*", (_, res) => {
134
+ res.status(404).json({ message: "Route not found!" });
135
+ });
136
+ return exports.app;
137
+ }
138
+ //# sourceMappingURL=app.js.map
@@ -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 app.use(\"/api\", getSwaggerRouter(arkosConfig));\n\n // Additional custom routers\n if (routersConfig?.additional) {\n routersConfig.additional.forEach((router) => {\n app.use(router);\n });\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 return app;\n}\n"]}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"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","sourcesContent":["// require(\"ts-node\").register({\n// esm: true,\n// experimentalSpecifierResolution: \"node\",\n// });\nimport 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: (_, 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 ((_, 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"]}