arkos 1.3.1-beta → 1.3.2-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 (256) hide show
  1. package/dist/cjs/app.js +139 -1
  2. package/dist/cjs/exports/auth/index.js +6 -1
  3. package/dist/cjs/exports/controllers/index.js +11 -1
  4. package/dist/cjs/exports/error-handler/index.js +11 -1
  5. package/dist/cjs/exports/index.js +12 -1
  6. package/dist/cjs/exports/middlewares/index.js +7 -1
  7. package/dist/cjs/exports/prisma/index.js +13 -1
  8. package/dist/cjs/exports/services/index.js +48 -1
  9. package/dist/cjs/exports/utils/index.js +44 -1
  10. package/dist/cjs/exports/validation/index.js +11 -1
  11. package/dist/cjs/modules/auth/auth.controller.js +229 -1
  12. package/dist/cjs/modules/auth/auth.controller.js.map +1 -1
  13. package/dist/cjs/modules/auth/auth.router.js +82 -1
  14. package/dist/cjs/modules/auth/auth.router.js.map +1 -1
  15. package/dist/cjs/modules/auth/auth.service.js +226 -1
  16. package/dist/cjs/modules/auth/utils/auth-error-objects.js +10 -1
  17. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +83 -1
  18. package/dist/cjs/modules/auth/utils/services/auth-action.service.js +92 -1
  19. package/dist/cjs/modules/auth/utils/services/auth-action.service.js.map +1 -1
  20. package/dist/cjs/modules/base/base.controller.js +172 -1
  21. package/dist/cjs/modules/base/base.middlewares.js +92 -1
  22. package/dist/cjs/modules/base/base.router.js +22 -1
  23. package/dist/cjs/modules/base/base.service.js +507 -1
  24. package/dist/cjs/modules/base/base.service.js.map +1 -1
  25. package/dist/cjs/modules/base/types/base.service.types.js +3 -1
  26. package/dist/cjs/modules/base/types/base.service.types.js.map +1 -1
  27. package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js +80 -1
  28. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +50 -1
  29. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +104 -1
  30. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +208 -1
  31. package/dist/cjs/modules/base/utils/router-validator.js +16 -1
  32. package/dist/cjs/modules/base/utils/service-hooks-manager.js +19 -1
  33. package/dist/cjs/modules/email/email.service.js +104 -1
  34. package/dist/cjs/modules/error-handler/error-handler.controller.js +146 -4
  35. package/dist/cjs/modules/error-handler/utils/app-error.js +17 -1
  36. package/dist/cjs/modules/error-handler/utils/catch-async.js +21 -1
  37. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +205 -3
  38. package/dist/cjs/modules/file-upload/file-upload.controller.js +233 -1
  39. package/dist/cjs/modules/file-upload/file-upload.router.js +60 -1
  40. package/dist/cjs/modules/file-upload/file-upload.service.js +322 -1
  41. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +97 -1
  42. package/dist/cjs/modules/swagger/swagger.router.js +38 -1
  43. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +338 -1
  44. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +64 -1
  45. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +37 -1
  46. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +48 -1
  47. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +32 -1
  48. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +49 -1
  49. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +34 -1
  50. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +471 -1
  51. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +572 -1
  52. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +260 -1
  53. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +112 -1
  54. package/dist/cjs/paths.js +9 -1
  55. package/dist/cjs/server.js +94 -5
  56. package/dist/cjs/types/arkos-config.js +3 -1
  57. package/dist/cjs/types/arkos-config.js.map +1 -1
  58. package/dist/cjs/types/auth.js +3 -1
  59. package/dist/cjs/types/index.js +11 -1
  60. package/dist/cjs/types/router-config.js +3 -1
  61. package/dist/cjs/utils/arkos-env.js +9 -1
  62. package/dist/cjs/utils/cli/build.js +214 -5
  63. package/dist/cjs/utils/cli/dev.js +154 -3
  64. package/dist/cjs/utils/cli/generate.js +109 -1
  65. package/dist/cjs/utils/cli/index.js +104 -1
  66. package/dist/cjs/utils/cli/index.js.map +1 -1
  67. package/dist/cjs/utils/cli/prisma-generate.js +120 -0
  68. package/dist/cjs/utils/cli/prisma-generate.js.map +1 -0
  69. package/dist/cjs/utils/cli/start.js +103 -1
  70. package/dist/cjs/utils/cli/utils/cli.helpers.js +24 -1
  71. package/dist/cjs/utils/cli/utils/smart-fs-watcher.js +73 -1
  72. package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js +36 -0
  73. package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -0
  74. package/dist/cjs/utils/cli/utils/template-generator/templates/controller-template.js +21 -0
  75. package/dist/cjs/utils/cli/utils/template-generator/templates/controller-template.js.map +1 -0
  76. package/dist/cjs/utils/cli/utils/template-generator/templates/hooks-template.js +201 -0
  77. package/dist/cjs/utils/cli/utils/template-generator/templates/hooks-template.js.map +1 -0
  78. package/dist/cjs/utils/cli/utils/template-generator/templates/middlewares-template.js +288 -0
  79. package/dist/cjs/utils/cli/utils/template-generator/templates/{generate-middlewares.js.map → middlewares-template.js.map} +1 -1
  80. package/dist/cjs/utils/cli/utils/template-generator/templates/query-options-template.js +64 -0
  81. package/dist/cjs/utils/cli/utils/template-generator/templates/query-options-template.js.map +1 -0
  82. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js +45 -0
  83. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js.map +1 -0
  84. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js +29 -0
  85. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js.map +1 -0
  86. package/dist/cjs/utils/cli/utils/template-generators.js +34 -2
  87. package/dist/cjs/utils/cli/utils/template-generators.js.map +1 -1
  88. package/dist/cjs/utils/cli/utils/watermark-stamper.js +17 -3
  89. package/dist/cjs/utils/dotenv.helpers.js +43 -1
  90. package/dist/cjs/utils/dynamic-loader.js +270 -9
  91. package/dist/cjs/utils/features/api.features.js +169 -1
  92. package/dist/cjs/utils/features/change-case.features.js +67 -1
  93. package/dist/cjs/utils/features/port-and-host-allocator.js +105 -1
  94. package/dist/cjs/utils/helpers/api.features.helpers.js +112 -1
  95. package/dist/cjs/utils/helpers/change-case.helpers.js +177 -1
  96. package/dist/cjs/utils/helpers/deepmerge.helper.js +115 -1
  97. package/dist/cjs/utils/helpers/dynamic-loader.helpers.js +76 -1
  98. package/dist/cjs/utils/helpers/fs.helpers.js +57 -1
  99. package/dist/cjs/utils/helpers/global.helpers.js +94 -1
  100. package/dist/cjs/utils/helpers/prisma.helpers.js +40 -1
  101. package/dist/cjs/utils/helpers/query-parser.helpers.js +45 -1
  102. package/dist/cjs/utils/helpers/routers.helpers.js +37 -1
  103. package/dist/cjs/utils/helpers/text.helpers.js +28 -1
  104. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +455 -1
  105. package/dist/cjs/utils/prisma/prisma-schema-parser.js +216 -4
  106. package/dist/cjs/utils/prisma/types.js +3 -1
  107. package/dist/cjs/utils/sheu.js +120 -1
  108. package/dist/cjs/utils/validate-dto.js +17 -1
  109. package/dist/cjs/utils/validate-schema.js +15 -1
  110. package/dist/esm/app.js +132 -1
  111. package/dist/esm/exports/auth/index.js +2 -1
  112. package/dist/esm/exports/controllers/index.js +4 -1
  113. package/dist/esm/exports/error-handler/index.js +4 -1
  114. package/dist/esm/exports/index.js +8 -1
  115. package/dist/esm/exports/middlewares/index.js +2 -1
  116. package/dist/esm/exports/prisma/index.js +6 -1
  117. package/dist/esm/exports/services/index.js +9 -1
  118. package/dist/esm/exports/utils/index.js +4 -1
  119. package/dist/esm/exports/validation/index.js +4 -1
  120. package/dist/esm/modules/auth/auth.controller.js +222 -1
  121. package/dist/esm/modules/auth/auth.controller.js.map +1 -1
  122. package/dist/esm/modules/auth/auth.router.js +76 -1
  123. package/dist/esm/modules/auth/auth.router.js.map +1 -1
  124. package/dist/esm/modules/auth/auth.service.js +219 -1
  125. package/dist/esm/modules/auth/utils/auth-error-objects.js +4 -1
  126. package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js +73 -1
  127. package/dist/esm/modules/auth/utils/services/auth-action.service.js +90 -1
  128. package/dist/esm/modules/auth/utils/services/auth-action.service.js.map +1 -1
  129. package/dist/esm/modules/base/base.controller.js +165 -1
  130. package/dist/esm/modules/base/base.middlewares.js +81 -1
  131. package/dist/esm/modules/base/base.router.js +15 -1
  132. package/dist/esm/modules/base/base.service.js +500 -1
  133. package/dist/esm/modules/base/base.service.js.map +1 -1
  134. package/dist/esm/modules/base/types/base.service.types.js +2 -1
  135. package/dist/esm/modules/base/types/base.service.types.js.map +1 -1
  136. package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js +76 -1
  137. package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js +44 -1
  138. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +96 -1
  139. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +198 -1
  140. package/dist/esm/modules/base/utils/router-validator.js +14 -1
  141. package/dist/esm/modules/base/utils/service-hooks-manager.js +17 -1
  142. package/dist/esm/modules/email/email.service.js +97 -1
  143. package/dist/esm/modules/error-handler/error-handler.controller.js +107 -4
  144. package/dist/esm/modules/error-handler/utils/app-error.js +15 -1
  145. package/dist/esm/modules/error-handler/utils/catch-async.js +19 -1
  146. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +163 -3
  147. package/dist/esm/modules/file-upload/file-upload.controller.js +228 -1
  148. package/dist/esm/modules/file-upload/file-upload.router.js +54 -1
  149. package/dist/esm/modules/file-upload/file-upload.service.js +314 -1
  150. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +87 -1
  151. package/dist/esm/modules/swagger/swagger.router.js +32 -1
  152. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +333 -1
  153. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js +58 -1
  154. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +34 -1
  155. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +42 -1
  156. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +26 -1
  157. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +46 -1
  158. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +28 -1
  159. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +465 -1
  160. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +566 -1
  161. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +255 -1
  162. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +101 -1
  163. package/dist/esm/paths.js +3 -1
  164. package/dist/esm/server.js +85 -5
  165. package/dist/esm/types/arkos-config.js +2 -1
  166. package/dist/esm/types/arkos-config.js.map +1 -1
  167. package/dist/esm/types/auth.js +2 -1
  168. package/dist/esm/types/index.js +8 -1
  169. package/dist/esm/types/router-config.js +2 -1
  170. package/dist/esm/utils/arkos-env.js +7 -1
  171. package/dist/esm/utils/cli/build.js +208 -5
  172. package/dist/esm/utils/cli/dev.js +147 -3
  173. package/dist/esm/utils/cli/generate.js +103 -1
  174. package/dist/esm/utils/cli/index.js +94 -1
  175. package/dist/esm/utils/cli/index.js.map +1 -1
  176. package/dist/esm/utils/cli/prisma-generate.js +114 -0
  177. package/dist/esm/utils/cli/prisma-generate.js.map +1 -0
  178. package/dist/esm/utils/cli/start.js +96 -1
  179. package/dist/esm/utils/cli/utils/cli.helpers.js +16 -1
  180. package/dist/esm/utils/cli/utils/smart-fs-watcher.js +68 -1
  181. package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js +33 -0
  182. package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -0
  183. package/dist/esm/utils/cli/utils/template-generator/templates/controller-template.js +18 -0
  184. package/dist/esm/utils/cli/utils/template-generator/templates/controller-template.js.map +1 -0
  185. package/dist/esm/utils/cli/utils/template-generator/templates/hooks-template.js +198 -0
  186. package/dist/esm/utils/cli/utils/template-generator/templates/hooks-template.js.map +1 -0
  187. package/dist/esm/utils/cli/utils/template-generator/templates/middlewares-template.js +285 -0
  188. package/dist/esm/utils/cli/utils/template-generator/templates/{generate-middlewares.js.map → middlewares-template.js.map} +1 -1
  189. package/dist/esm/utils/cli/utils/template-generator/templates/query-options-template.js +61 -0
  190. package/dist/esm/utils/cli/utils/template-generator/templates/query-options-template.js.map +1 -0
  191. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js +39 -0
  192. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js.map +1 -0
  193. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js +26 -0
  194. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js.map +1 -0
  195. package/dist/esm/utils/cli/utils/template-generators.js +28 -2
  196. package/dist/esm/utils/cli/utils/template-generators.js.map +1 -1
  197. package/dist/esm/utils/cli/utils/watermark-stamper.js +15 -3
  198. package/dist/esm/utils/dotenv.helpers.js +37 -1
  199. package/dist/esm/utils/dynamic-loader.js +254 -9
  200. package/dist/esm/utils/features/api.features.js +162 -1
  201. package/dist/esm/utils/features/change-case.features.js +31 -1
  202. package/dist/esm/utils/features/port-and-host-allocator.js +67 -1
  203. package/dist/esm/utils/helpers/api.features.helpers.js +106 -1
  204. package/dist/esm/utils/helpers/change-case.helpers.js +161 -1
  205. package/dist/esm/utils/helpers/deepmerge.helper.js +113 -1
  206. package/dist/esm/utils/helpers/dynamic-loader.helpers.js +69 -1
  207. package/dist/esm/utils/helpers/fs.helpers.js +48 -1
  208. package/dist/esm/utils/helpers/global.helpers.js +51 -1
  209. package/dist/esm/utils/helpers/prisma.helpers.js +32 -1
  210. package/dist/esm/utils/helpers/query-parser.helpers.js +40 -1
  211. package/dist/esm/utils/helpers/routers.helpers.js +29 -1
  212. package/dist/esm/utils/helpers/text.helpers.js +22 -1
  213. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +448 -1
  214. package/dist/esm/utils/prisma/prisma-schema-parser.js +209 -4
  215. package/dist/esm/utils/prisma/types.js +2 -1
  216. package/dist/esm/utils/sheu.js +118 -1
  217. package/dist/esm/utils/validate-dto.js +11 -1
  218. package/dist/esm/utils/validate-schema.js +9 -1
  219. package/dist/types/modules/auth/utils/services/auth-action.service.d.ts +1 -1
  220. package/dist/types/modules/base/types/base.service.types.d.ts +12 -9
  221. package/dist/types/types/arkos-config.d.ts +3 -2
  222. package/dist/types/utils/cli/prisma-generate.d.ts +1 -0
  223. package/package.json +2 -2
  224. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +0 -21
  225. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -1
  226. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -12
  227. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -1
  228. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-hooks-template.js +0 -144
  229. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-hooks-template.js.map +0 -1
  230. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +0 -256
  231. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +0 -36
  232. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -1
  233. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +0 -18
  234. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -1
  235. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js +0 -9
  236. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js.map +0 -1
  237. package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +0 -21
  238. package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -1
  239. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -12
  240. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -1
  241. package/dist/esm/utils/cli/utils/template-generator/templates/generate-hooks-template.js +0 -144
  242. package/dist/esm/utils/cli/utils/template-generator/templates/generate-hooks-template.js.map +0 -1
  243. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js +0 -256
  244. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +0 -36
  245. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -1
  246. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js +0 -18
  247. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -1
  248. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js +0 -9
  249. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js.map +0 -1
  250. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-auth-configs-template.d.ts → auth-configs-template.d.ts} +0 -0
  251. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-controller-template.d.ts → controller-template.d.ts} +0 -0
  252. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-hooks-template.d.ts → hooks-template.d.ts} +0 -0
  253. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-middlewares.d.ts → middlewares-template.d.ts} +0 -0
  254. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-prisma-query-options.d.ts → query-options-template.d.ts} +0 -0
  255. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-router-template.d.ts → router-template.d.ts} +0 -0
  256. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-service-template.d.ts → service-template.d.ts} +0 -0
@@ -1,4 +1,216 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.PrismaSchemaParser=void 0;const path_1=__importDefault(require("path")),change_case_helpers_1=require("../helpers/change-case.helpers"),fs_1=__importDefault(require("fs"));class PrismaSchemaParser{constructor(){this.enums=[],this.models=[],this.prismaSchemasContent="",this.parsed=!1,this.parse()}parse({override:s}={override:!1}){return(!this.parsed||s)&&(this.enums=this.extractEnums(),this.models=this.extractModels(),this.parsed=!0),{models:this.models,enums:this.enums}}extractEnums(){const s=[],i=(this.getPrismaSchemasContent()||"").match(/enum\s+\w+\s*\{[^}]*\}/g)||[];for(const t of i){const n=this.parseEnumBlock(t);n&&s.push(n)}return s}parseEnumBlock(s){const e=s.match(/enum\s+(\w+)/);if(!e)return null;const i=e[1],t=s.split(`
2
- `).map(n=>n.trim()).filter(n=>n&&!n.startsWith("enum")&&!n.startsWith("{")&&!n.startsWith("}")).map(n=>n.replace(/,$/,""));return{name:i,values:t}}extractModels(){const s=[],e=this.extractModelBlocks();for(const i of e){const t=this.parseModelBlock(i);t&&s.push(t)}return s}extractModelBlocks(){const s=/model\s+\w+\s*\{((?:[^{}]*(?:\{[^{}]*\}[^{}]*)*)*)\}/g;return(this.getPrismaSchemasContent()||"").match(s)||[]}parseModelBlock(s){const e=s.match(/model\s+(\w+)/);if(!e)return null;const i=e[1],t=this.parseFields(s),n=s.match(/@@map\s*\(\s*"([^"]+)"\s*\)/),r=n?n[1]:void 0;return{name:i,fields:t,mapName:r}}parseFields(s){const e=[],i=s.split(`
3
- `).map(t=>t.trim()).filter(t=>t&&!t.startsWith("model")&&!t.startsWith("{")&&!t.startsWith("}"));for(const t of i){if(t.startsWith("//")||t.startsWith("@@"))continue;const n=this.parseFieldLine(t);n&&e.push(n)}return e}parseFieldLine(s){const e=s.match(/^(\w+)\s+(\w+(?:\[\])?)\??\s*(.*)/);if(!e)return null;const[,i,t,n]=e,r=t.endsWith("[]"),c=r?t.slice(0,-2):t,a=s.includes("?"),m=n.split(/\s+/).filter(o=>o.startsWith("@"));let h;const u=n.match(/@default\(([^)]+)\)/);u&&(h=this.parseDefaultValue(u[1]));let d="";const p=n.match(/@relation\([^)]*fields:\s*\[([^\]]+)\]/);p&&(d=p[1].trim().replace(/['"]/g,""));const f=m.some(o=>o.startsWith("@id")),g=m.some(o=>o.startsWith("@unique")),M=this.models;return{name:i,type:c,isOptional:a,isRelation:M.map(o=>o.name).includes(c)||this.getPrismaSchemasContent().includes(`model ${c} {`),isArray:r,connectionField:d,defaultValue:h,isId:f,isUnique:g,attributes:m}}parseDefaultValue(s){if(s=s.trim(),s.startsWith('"')&&s.endsWith('"'))return s.slice(1,-1);if(s==="true")return!0;if(s==="false")return!1;if(/^-?\d+$/.test(s))return parseInt(s,10);if(/^-?\d+\.\d+$/.test(s))return parseFloat(s);if(!s.includes("("))return s;if(!s.includes("("))return s}getPrismaSchemasContent(){if(this.prismaSchemasContent)return this.prismaSchemasContent;const s=[],e=/model\s+(\w+)\s*{/g,i=[],t=path_1.default.resolve(process.cwd(),"prisma"),n=this.getAllPrismaFiles(t);for(const c of n){const a=fs_1.default.readFileSync(c,"utf-8");i?.includes?.(a)||i.push(a)}return i.join(`
4
- `).replace(e,(c,a)=>(s?.includes?.(a)||s.push((0,change_case_helpers_1.camelCase)(a.trim())),`model ${a} {`))}getAllPrismaFiles(s,e=[]){return fs_1.default.readdirSync(s)?.forEach(t=>{const n=path_1.default.join(s,t),r=fs_1.default.statSync(n);r.isDirectory()&&t!=="migrations"?e=this.getAllPrismaFiles(n,e):r.isFile()&&t.endsWith(".prisma")&&e.push(n)}),e}isEnum(s){return this.enums.some(e=>e.name===s)}isModel(s){return this.models.some(e=>e.name===s)}getModelUniqueFields(s){return this.models.find(({name:e})=>(0,change_case_helpers_1.pascalCase)(e)===(0,change_case_helpers_1.pascalCase)(s))?.fields.filter(({isUnique:e})=>e)}getModelRelations(s){return this.models.find(e=>(0,change_case_helpers_1.pascalCase)(e.name)===(0,change_case_helpers_1.pascalCase)(s))?.fields.filter(e=>e.isRelation)}getModelsAsArrayOfStrings(){return this.models.map(({name:s})=>s)}}exports.PrismaSchemaParser=PrismaSchemaParser;const prismaSchemaParser=new PrismaSchemaParser;exports.default=prismaSchemaParser;
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.PrismaSchemaParser = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const change_case_helpers_1 = require("../helpers/change-case.helpers");
9
+ const fs_1 = __importDefault(require("fs"));
10
+ class PrismaSchemaParser {
11
+ constructor() {
12
+ this.enums = [];
13
+ this.models = [];
14
+ this.prismaSchemasContent = "";
15
+ this.parsed = false;
16
+ this.parse();
17
+ }
18
+ parse({ override } = { override: false }) {
19
+ if (!this.parsed || override) {
20
+ this.enums = this.extractEnums();
21
+ this.models = this.extractModels();
22
+ this.parsed = true;
23
+ }
24
+ return {
25
+ models: this.models,
26
+ enums: this.enums,
27
+ };
28
+ }
29
+ extractEnums() {
30
+ const enums = [];
31
+ const schema = this.getPrismaSchemasContent() || "";
32
+ const enumBlocks = schema.match(/enum\s+\w+\s*\{[^}]*\}/g) || [];
33
+ for (const block of enumBlocks) {
34
+ const enumObj = this.parseEnumBlock(block);
35
+ if (enumObj) {
36
+ enums.push(enumObj);
37
+ }
38
+ }
39
+ return enums;
40
+ }
41
+ parseEnumBlock(block) {
42
+ const nameMatch = block.match(/enum\s+(\w+)/);
43
+ if (!nameMatch)
44
+ return null;
45
+ const name = nameMatch[1];
46
+ const values = block
47
+ .split("\n")
48
+ .map((line) => line.trim())
49
+ .filter((line) => line &&
50
+ !line.startsWith("enum") &&
51
+ !line.startsWith("{") &&
52
+ !line.startsWith("}"))
53
+ .map((line) => line.replace(/,$/, ""));
54
+ return { name, values };
55
+ }
56
+ extractModels() {
57
+ const models = [];
58
+ const modelBlocks = this.extractModelBlocks();
59
+ for (const block of modelBlocks) {
60
+ const model = this.parseModelBlock(block);
61
+ if (model) {
62
+ models.push(model);
63
+ }
64
+ }
65
+ return models;
66
+ }
67
+ extractModelBlocks() {
68
+ const modelRegex = /model\s+\w+\s*\{((?:[^{}]*(?:\{[^{}]*\}[^{}]*)*)*)\}/g;
69
+ const schema = this.getPrismaSchemasContent() || "";
70
+ return schema.match(modelRegex) || [];
71
+ }
72
+ parseModelBlock(block) {
73
+ const nameMatch = block.match(/model\s+(\w+)/);
74
+ if (!nameMatch)
75
+ return null;
76
+ const name = nameMatch[1];
77
+ const fields = this.parseFields(block);
78
+ const mapMatch = block.match(/@@map\s*\(\s*"([^"]+)"\s*\)/);
79
+ const mapName = mapMatch ? mapMatch[1] : undefined;
80
+ return { name, fields, mapName };
81
+ }
82
+ parseFields(block) {
83
+ const fields = [];
84
+ const fieldLines = block
85
+ .split("\n")
86
+ .map((line) => line.trim())
87
+ .filter((line) => line &&
88
+ !line.startsWith("model") &&
89
+ !line.startsWith("{") &&
90
+ !line.startsWith("}"));
91
+ for (const line of fieldLines) {
92
+ if (line.startsWith("//") || line.startsWith("@@"))
93
+ continue;
94
+ const field = this.parseFieldLine(line);
95
+ if (field) {
96
+ fields.push(field);
97
+ }
98
+ }
99
+ return fields;
100
+ }
101
+ parseFieldLine(line) {
102
+ const fieldMatch = line.match(/^(\w+)\s+(\w+(?:\[\])?)\??\s*(.*)/);
103
+ if (!fieldMatch)
104
+ return null;
105
+ const [, name, typeWithArray, attributesStr] = fieldMatch;
106
+ const isArray = typeWithArray.endsWith("[]");
107
+ const type = isArray ? typeWithArray.slice(0, -2) : typeWithArray;
108
+ const isOptional = line.includes("?");
109
+ const attributes = attributesStr
110
+ .split(/\s+/)
111
+ .filter((attr) => attr.startsWith("@"));
112
+ let defaultValue = undefined;
113
+ const defaultMatch = attributesStr.match(/@default\(([^)]+)\)/);
114
+ if (defaultMatch) {
115
+ defaultValue = this.parseDefaultValue(defaultMatch[1]);
116
+ }
117
+ let connectionField = "";
118
+ const relationMatch = attributesStr.match(/@relation\([^)]*fields:\s*\[([^\]]+)\]/);
119
+ if (relationMatch) {
120
+ connectionField = relationMatch[1].trim().replace(/['"]/g, "");
121
+ }
122
+ const isId = attributes.some((attr) => attr.startsWith("@id"));
123
+ const isUnique = attributes.some((attr) => attr.startsWith("@unique"));
124
+ const models = this.models;
125
+ return {
126
+ name,
127
+ type,
128
+ isOptional,
129
+ isRelation: models.map((model) => model.name).includes(type) ||
130
+ this.getPrismaSchemasContent().includes(`model ${type} {`),
131
+ isArray,
132
+ connectionField,
133
+ defaultValue,
134
+ isId,
135
+ isUnique,
136
+ attributes,
137
+ };
138
+ }
139
+ parseDefaultValue(defaultStr) {
140
+ defaultStr = defaultStr.trim();
141
+ if (defaultStr.startsWith('"') && defaultStr.endsWith('"'))
142
+ return defaultStr.slice(1, -1);
143
+ if (defaultStr === "true")
144
+ return true;
145
+ if (defaultStr === "false")
146
+ return false;
147
+ if (/^-?\d+$/.test(defaultStr))
148
+ return parseInt(defaultStr, 10);
149
+ if (/^-?\d+\.\d+$/.test(defaultStr))
150
+ return parseFloat(defaultStr);
151
+ if (!defaultStr.includes("("))
152
+ return defaultStr;
153
+ if (defaultStr.includes("("))
154
+ return undefined;
155
+ return defaultStr;
156
+ }
157
+ getPrismaSchemasContent() {
158
+ if (this.prismaSchemasContent)
159
+ return this.prismaSchemasContent;
160
+ const models = [];
161
+ const modelRegex = /model\s+(\w+)\s*{/g;
162
+ const prismaContent = [];
163
+ const prismaPath = path_1.default.resolve(process.cwd(), "prisma");
164
+ const files = this.getAllPrismaFiles(prismaPath);
165
+ for (const file of files) {
166
+ const content = fs_1.default.readFileSync(file, "utf-8");
167
+ if (!prismaContent?.includes?.(content))
168
+ prismaContent.push(content);
169
+ }
170
+ const content = prismaContent
171
+ .join("\n")
172
+ .replace(modelRegex, (_, modelName) => {
173
+ if (!models?.includes?.(modelName))
174
+ models.push((0, change_case_helpers_1.camelCase)(modelName.trim()));
175
+ return `model ${modelName} {`;
176
+ });
177
+ return content;
178
+ }
179
+ getAllPrismaFiles(dirPath, fileList = []) {
180
+ const files = fs_1.default.readdirSync(dirPath);
181
+ files?.forEach((file) => {
182
+ const filePath = path_1.default.join(dirPath, file);
183
+ const stat = fs_1.default.statSync(filePath);
184
+ if (stat.isDirectory() && file !== "migrations") {
185
+ fileList = this.getAllPrismaFiles(filePath, fileList);
186
+ }
187
+ else if (stat.isFile() && file.endsWith(".prisma")) {
188
+ fileList.push(filePath);
189
+ }
190
+ });
191
+ return fileList;
192
+ }
193
+ isEnum(typeName) {
194
+ return this.enums.some((e) => e.name === typeName);
195
+ }
196
+ isModel(typeName) {
197
+ return this.models.some((m) => m.name === typeName);
198
+ }
199
+ getModelUniqueFields(modelName) {
200
+ return this.models
201
+ .find(({ name }) => (0, change_case_helpers_1.pascalCase)(name) === (0, change_case_helpers_1.pascalCase)(modelName))
202
+ ?.fields.filter(({ isUnique }) => isUnique);
203
+ }
204
+ getModelRelations(modelName) {
205
+ return this.models
206
+ .find((model) => (0, change_case_helpers_1.pascalCase)(model.name) === (0, change_case_helpers_1.pascalCase)(modelName))
207
+ ?.fields.filter((field) => field.isRelation);
208
+ }
209
+ getModelsAsArrayOfStrings() {
210
+ return this.models.map(({ name }) => name);
211
+ }
212
+ }
213
+ exports.PrismaSchemaParser = PrismaSchemaParser;
214
+ const prismaSchemaParser = new PrismaSchemaParser();
215
+ exports.default = prismaSchemaParser;
216
+ //# sourceMappingURL=prisma-schema-parser.js.map
@@ -1 +1,3 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -1 +1,120 @@
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
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class Sheu {
4
+ getTimestamp() {
5
+ return new Date().toTimeString().split(" ")[0];
6
+ }
7
+ formatText(content = "", options = {}) {
8
+ const label = options?.label
9
+ ? content
10
+ ? options?.label + " "
11
+ : content === null
12
+ ? options?.label + " "
13
+ : options?.label
14
+ : "";
15
+ let result = `${label}${content}`;
16
+ if (options.timestamp) {
17
+ const timestamp = this.getTimestamp();
18
+ if (options.timestamp === true)
19
+ result = `${label}\x1b[90m${timestamp}\x1b[0m ${content}`;
20
+ else if (typeof options.timestamp === "string") {
21
+ const colorCode = this.getColorCode(options.timestamp);
22
+ result = `${label}${colorCode}${timestamp}\x1b[0m ${content}`;
23
+ }
24
+ }
25
+ if (options.bold)
26
+ result = `\x1b[1m${result}\x1b[0m`;
27
+ return result;
28
+ }
29
+ getColorCode(color) {
30
+ const colorMap = {
31
+ red: "\x1b[31m",
32
+ blue: "\x1b[34m",
33
+ green: "\x1b[32m",
34
+ yellow: "\x1b[33m",
35
+ cyan: "\x1b[36m",
36
+ magenta: "\x1b[35m",
37
+ white: "\x1b[37m",
38
+ black: "\x1b[30m",
39
+ gray: "\x1b[90m",
40
+ orange: "\x1b[91m",
41
+ };
42
+ return colorMap[color] || "\x1b[90m";
43
+ }
44
+ red(content, options) {
45
+ const coloredText = `\x1b[31m${content}\x1b[0m`;
46
+ return this.formatText(coloredText, options || {});
47
+ }
48
+ blue(content, options) {
49
+ const coloredText = `\x1b[34m${content}\x1b[0m`;
50
+ return this.formatText(coloredText, options || {});
51
+ }
52
+ green(content, options) {
53
+ const coloredText = `\x1b[32m${content}\x1b[0m`;
54
+ return this.formatText(coloredText, options || {});
55
+ }
56
+ yellow(content, options) {
57
+ const coloredText = `\x1b[33m${content}\x1b[0m`;
58
+ return this.formatText(coloredText, options || {});
59
+ }
60
+ cyan(content, options) {
61
+ const coloredText = `\x1b[36m${content}\x1b[0m`;
62
+ return this.formatText(coloredText, options || {});
63
+ }
64
+ magenta(content, options) {
65
+ const coloredText = `\x1b[35m${content}\x1b[0m`;
66
+ return this.formatText(coloredText, options || {});
67
+ }
68
+ white(content, options) {
69
+ const coloredText = `\x1b[37m${content}\x1b[0m`;
70
+ return this.formatText(coloredText, options || {});
71
+ }
72
+ black(content, options) {
73
+ const coloredText = `\x1b[30m${content}\x1b[0m`;
74
+ return this.formatText(coloredText, options || {});
75
+ }
76
+ gray(content, options) {
77
+ const coloredText = `\x1b[90m${content}\x1b[0m`;
78
+ return this.formatText(coloredText, options || {});
79
+ }
80
+ orange(content, options) {
81
+ const coloredText = `\x1b[91m${content}\x1b[0m`;
82
+ return this.formatText(coloredText, options || {});
83
+ }
84
+ bold(content, options) {
85
+ return this.formatText(content, { ...options, bold: true });
86
+ }
87
+ info(message, options) {
88
+ const label = `[\x1b[36mInfo\x1b[0m]`;
89
+ const result = this.formatText(message, { ...options, label });
90
+ console.info(result);
91
+ return result;
92
+ }
93
+ error(message, options) {
94
+ const label = `[\x1b[31mError\x1b[0m]`;
95
+ const result = this.formatText(message, { ...options, label });
96
+ console.error(result);
97
+ return result;
98
+ }
99
+ ready(message, options) {
100
+ const label = `[\x1b[32mReady\x1b[0m]`;
101
+ const result = this.formatText(message, { ...options, label });
102
+ console.info(result);
103
+ return result;
104
+ }
105
+ done(message, options) {
106
+ const label = `[\x1b[32mDone\x1b[0m]`;
107
+ const result = this.formatText(message, { ...options, label });
108
+ console.info(result);
109
+ return result;
110
+ }
111
+ warn(message, options) {
112
+ const label = `[\x1b[33mWarn\x1b[0m]`;
113
+ const result = this.formatText(message, { ...options, label });
114
+ console.warn(result);
115
+ return result;
116
+ }
117
+ }
118
+ const sheu = new Sheu();
119
+ exports.default = sheu;
120
+ //# sourceMappingURL=sheu.js.map
@@ -1 +1,17 @@
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
+ "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, "InvalidRequestBody");
15
+ return dataDto;
16
+ }
17
+ //# sourceMappingURL=validate-dto.js.map
@@ -1 +1,15 @@
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
+ "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(), "InvalidRequestBody");
12
+ }
13
+ return result.data;
14
+ }
15
+ //# sourceMappingURL=validate-schema.js.map
package/dist/esm/app.js CHANGED
@@ -1 +1,132 @@
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
+ import express from "express";
2
+ import cors from "cors";
3
+ import cookieParser from "cookie-parser";
4
+ import { getAuthRouter } from "./modules/auth/auth.router.js";
5
+ import { getPrismaModelsRouter, getAvailableResourcesAndRoutesRouter, } from "./modules/base/base.router.js";
6
+ import errorHandler from "./modules/error-handler/error-handler.controller.js";
7
+ import { rateLimit } from "express-rate-limit";
8
+ import compression from "compression";
9
+ import { handleRequestLogs } from "./modules/base/base.middlewares.js";
10
+ import { loadPrismaModule } from "./utils/helpers/prisma.helpers.js";
11
+ import { getFileUploadRouter } from "./modules/file-upload/file-upload.router.js";
12
+ import { queryParser } from "./utils/helpers/query-parser.helpers.js";
13
+ import deepmerge from "./utils/helpers/deepmerge.helper.js";
14
+ import { getSwaggerRouter } from "./modules/swagger/swagger.router.js";
15
+ import { loadAllModuleComponents } from "./utils/dynamic-loader.js";
16
+ export const app = express();
17
+ export async function bootstrap(arkosConfig) {
18
+ await Promise.all([
19
+ loadPrismaModule(),
20
+ loadAllModuleComponents(arkosConfig),
21
+ arkosConfig?.configureApp && (await arkosConfig?.configureApp(app)),
22
+ ]);
23
+ const middlewaresConfig = arkosConfig?.middlewares;
24
+ const disabledMiddlewares = middlewaresConfig?.disable || [];
25
+ const replacedMiddlewares = middlewaresConfig?.replace || {};
26
+ if (!disabledMiddlewares?.includes?.("compression"))
27
+ app.use(replacedMiddlewares.compression ||
28
+ compression(arkosConfig?.compressionOptions));
29
+ if (!disabledMiddlewares?.includes?.("global-rate-limit"))
30
+ app.use(replacedMiddlewares.globalRateLimit ||
31
+ rateLimit(deepmerge({
32
+ windowMs: 60 * 1000,
33
+ limit: 500,
34
+ standardHeaders: "draft-7",
35
+ legacyHeaders: false,
36
+ handler: (_, res) => {
37
+ res.status(429).json({
38
+ message: "Too many requests, please try again later",
39
+ });
40
+ },
41
+ }, arkosConfig?.globalRequestRateLimitOptions || {})));
42
+ if (!disabledMiddlewares?.includes?.("cors"))
43
+ app.use(replacedMiddlewares.cors ||
44
+ cors(arkosConfig?.cors?.customHandler
45
+ ? arkosConfig.cors.customHandler
46
+ : deepmerge({
47
+ origin: (origin, cb) => {
48
+ const allowed = arkosConfig?.cors?.allowedOrigins;
49
+ if (allowed === "*") {
50
+ cb(null, true);
51
+ }
52
+ else if (Array.isArray(allowed)) {
53
+ cb(null, !origin || allowed?.includes?.(origin));
54
+ }
55
+ else if (typeof allowed === "string") {
56
+ cb(null, !origin || allowed === origin);
57
+ }
58
+ else {
59
+ cb(null, false);
60
+ }
61
+ },
62
+ methods: ["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"],
63
+ allowedHeaders: [
64
+ "Content-Type",
65
+ "Authorization",
66
+ "Connection",
67
+ ],
68
+ credentials: true,
69
+ }, arkosConfig?.cors?.options || {})));
70
+ if (!disabledMiddlewares?.includes?.("express-json"))
71
+ app.use(replacedMiddlewares.expressJson ||
72
+ express.json(arkosConfig?.jsonBodyParserOptions));
73
+ if (!disabledMiddlewares?.includes?.("cookie-parser"))
74
+ app.use(replacedMiddlewares.cookieParser ||
75
+ cookieParser(...[...(arkosConfig?.cookieParserParameters || [])]));
76
+ if (!disabledMiddlewares?.includes?.("query-parser"))
77
+ app.use(replacedMiddlewares.queryParser ||
78
+ queryParser(deepmerge({
79
+ parseNull: true,
80
+ parseUndefined: true,
81
+ parseBoolean: true,
82
+ }, arkosConfig?.queryParserOptions || {})));
83
+ if (!disabledMiddlewares?.includes?.("request-logger"))
84
+ app.use(replacedMiddlewares.requestLogger || handleRequestLogs);
85
+ if (arkosConfig?.middlewares?.additional)
86
+ arkosConfig.middlewares.additional.forEach((middleware) => {
87
+ app.use(middleware);
88
+ });
89
+ const routersConfig = arkosConfig?.routers;
90
+ const disabledRouters = routersConfig?.disable || [];
91
+ const replacedRouters = routersConfig?.replace || {};
92
+ if (!disabledRouters?.includes?.("welcome-endpoint"))
93
+ app.get("/api", replacedRouters.welcomeEndpoint ||
94
+ ((_, res) => {
95
+ res.status(200).json({ message: arkosConfig.welcomeMessage });
96
+ }));
97
+ if (!disabledRouters?.includes?.("file-upload")) {
98
+ const fileUploadRouter = replacedRouters.fileUpload
99
+ ? await replacedRouters.fileUpload(arkosConfig)
100
+ : await getFileUploadRouter(arkosConfig);
101
+ app.use(fileUploadRouter);
102
+ }
103
+ if (!disabledRouters?.includes?.("auth-router") &&
104
+ arkosConfig.authentication) {
105
+ const authRouter = replacedRouters.authRouter
106
+ ? await replacedRouters.authRouter(arkosConfig)
107
+ : await getAuthRouter(arkosConfig);
108
+ app.use("/api", authRouter);
109
+ }
110
+ if (!disabledRouters?.includes?.("prisma-models-router")) {
111
+ const modelsRouter = replacedRouters.prismaModelsRouter
112
+ ? await replacedRouters.prismaModelsRouter(arkosConfig)
113
+ : await getPrismaModelsRouter(arkosConfig);
114
+ app.use("/api", modelsRouter);
115
+ }
116
+ app.use("/api", getAvailableResourcesAndRoutesRouter());
117
+ if (arkosConfig.swagger &&
118
+ (process.env.ARKOS_BUILD !== "true" ||
119
+ arkosConfig.swagger.enableAfterBuild === true))
120
+ app.use("/api", await getSwaggerRouter(arkosConfig));
121
+ if (routersConfig?.additional)
122
+ routersConfig.additional.forEach((router) => {
123
+ app.use(router);
124
+ });
125
+ if (!disabledMiddlewares?.includes?.("global-error-handler"))
126
+ app.use(replacedMiddlewares.globalErrorHandler || errorHandler);
127
+ app.use("*", (_, res) => {
128
+ res.status(404).json({ message: "Route not found!" });
129
+ });
130
+ return app;
131
+ }
132
+ //# sourceMappingURL=app.js.map
@@ -1 +1,2 @@
1
- "use strict";export{defaultExcludedUserFields}from"./../../modules/auth/auth.controller.js";
1
+ export { defaultExcludedUserFields } from "./../../modules/auth/auth.controller.js";
2
+ //# sourceMappingURL=index.js.map
@@ -1 +1,4 @@
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
+ 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 +1,4 @@
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
+ 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 +1,8 @@
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
+ 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 +1,2 @@
1
- "use strict";export{addPrismaQueryOptionsToRequest,handleRequestBodyValidationAndTransformation}from"../../modules/base/base.middlewares.js";
1
+ export { addPrismaQueryOptionsToRequest, handleRequestBodyValidationAndTransformation, } from "../../modules/base/base.middlewares.js";
2
+ //# sourceMappingURL=index.js.map
@@ -1 +1,6 @@
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
+ import prismaSchemaParser from "../../utils/prisma/prisma-schema-parser.js";
2
+ export function getPrismaModels() {
3
+ return prismaSchemaParser.models.map(({ name }) => name);
4
+ }
5
+ export { prismaSchemaParser };
6
+ //# sourceMappingURL=index.js.map
@@ -1 +1,9 @@
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
+ 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 } from "../../modules/base/base.service.js";
5
+ export { authService, AuthService };
6
+ export { BaseService, };
7
+ export { emailService, EmailService };
8
+ export { getFileUploadServices, FileUploadService };
9
+ //# sourceMappingURL=index.js.map
@@ -1 +1,4 @@
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
+ 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 +1,4 @@
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
+ import validateDto from "../../utils/validate-dto.js";
2
+ import validateSchema from "../../utils/validate-schema.js";
3
+ export { validateDto, validateSchema };
4
+ //# sourceMappingURL=index.js.map