arkos 1.2.4-beta → 1.2.5-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 (205) hide show
  1. package/README.md +22 -14
  2. package/cli.js +2 -2
  3. package/dist/cjs/app.js +1 -1
  4. package/dist/cjs/app.js.map +1 -1
  5. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +10 -10
  6. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  7. package/dist/cjs/modules/swagger/swagger.router.js +0 -20
  8. package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
  9. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -1
  10. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -1
  11. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +5 -2
  12. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -1
  13. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +6 -3
  14. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -1
  15. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +6 -3
  16. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -1
  17. package/dist/cjs/paths.js +1 -1
  18. package/dist/cjs/server.js +1 -1
  19. package/dist/cjs/utils/cli/build.js +2 -19
  20. package/dist/cjs/utils/cli/build.js.map +1 -1
  21. package/dist/cjs/utils/cli/dev.js +1 -0
  22. package/dist/cjs/utils/cli/dev.js.map +1 -1
  23. package/dist/cjs/utils/cli/utils/cli.helpers.js +10 -1
  24. package/dist/cjs/utils/cli/utils/cli.helpers.js.map +1 -1
  25. package/dist/cjs/utils/helpers/fs.helpers.js +10 -4
  26. package/dist/cjs/utils/helpers/fs.helpers.js.map +1 -1
  27. package/dist/cjs/utils/helpers/global.helpers.js +38 -2
  28. package/dist/cjs/utils/helpers/global.helpers.js.map +1 -1
  29. package/dist/cjs/utils/helpers/models.helpers.js +1 -1
  30. package/dist/cjs/utils/helpers/models.helpers.js.map +1 -1
  31. package/dist/esm/app.js +1 -0
  32. package/dist/{es2020 → esm}/app.js.map +1 -1
  33. package/dist/{es2020 → esm}/exports/auth/index.js +1 -1
  34. package/dist/{es2020 → esm}/exports/controllers/index.js +2 -2
  35. package/dist/{es2020 → esm}/exports/error-handler/index.js +2 -2
  36. package/dist/{es2020 → esm}/exports/index.js +2 -2
  37. package/dist/{es2020 → esm}/exports/middlewares/index.js +1 -1
  38. package/dist/esm/exports/prisma/index.js +3 -0
  39. package/dist/{es2020 → esm}/exports/services/index.js +4 -4
  40. package/dist/esm/exports/utils/index.js +4 -0
  41. package/dist/esm/exports/validation/index.js +4 -0
  42. package/dist/{es2020 → esm}/modules/auth/auth.controller.js +7 -7
  43. package/dist/{es2020 → esm}/modules/auth/auth.router.js +6 -6
  44. package/dist/{es2020 → esm}/modules/auth/auth.service.js +6 -6
  45. package/dist/{es2020 → esm}/modules/auth/utils/helpers/auth.controller.helpers.js +2 -2
  46. package/dist/{es2020 → esm}/modules/base/base.controller.js +7 -7
  47. package/dist/{es2020 → esm}/modules/base/base.middlewares.js +6 -6
  48. package/dist/{es2020 → esm}/modules/base/base.router.js +4 -4
  49. package/dist/{es2020 → esm}/modules/base/base.service.js +6 -6
  50. package/dist/{es2020 → esm}/modules/base/utils/helpers/base.controller.helpers.js +1 -1
  51. package/dist/{es2020 → esm}/modules/base/utils/helpers/base.middlewares.helpers.js +1 -1
  52. package/dist/{es2020 → esm}/modules/base/utils/helpers/base.router.helpers.js +16 -16
  53. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -0
  54. package/dist/{es2020 → esm}/modules/base/utils/helpers/base.service.helpers.js +1 -1
  55. package/dist/{es2020 → esm}/modules/email/email.service.js +2 -2
  56. package/dist/{es2020 → esm}/modules/error-handler/error-handler.controller.js +3 -3
  57. package/dist/{es2020 → esm}/modules/error-handler/utils/error-handler.helpers.js +1 -1
  58. package/dist/{es2020 → esm}/modules/file-upload/file-upload.controller.js +7 -7
  59. package/dist/{es2020 → esm}/modules/file-upload/file-upload.router.js +5 -5
  60. package/dist/{es2020 → esm}/modules/file-upload/file-upload.service.js +5 -5
  61. package/dist/{es2020 → esm}/modules/file-upload/utils/helpers/file-upload.helpers.js +2 -2
  62. package/dist/{es2020 → esm}/modules/swagger/swagger.router.js +2 -22
  63. package/dist/esm/modules/swagger/swagger.router.js.map +1 -0
  64. package/dist/{es2020 → esm}/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +2 -2
  65. package/dist/{es2020 → esm}/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +4 -4
  66. package/dist/{es2020 → esm}/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -1
  67. package/dist/{es2020 → esm}/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +2 -2
  68. package/dist/{es2020 → esm}/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +2 -2
  69. package/dist/{es2020 → esm}/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +4 -4
  70. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -0
  71. package/dist/{es2020 → esm}/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +6 -6
  72. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -0
  73. package/dist/{es2020 → esm}/modules/swagger/utils/helpers/swagger.router.helpers.js +12 -12
  74. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
  75. package/dist/{es2020 → esm}/server.js +1 -1
  76. package/dist/{es2020 → esm}/utils/cli/build.js +4 -21
  77. package/dist/esm/utils/cli/build.js.map +1 -0
  78. package/dist/{es2020 → esm}/utils/cli/dev.js +6 -5
  79. package/dist/esm/utils/cli/dev.js.map +1 -0
  80. package/dist/{es2020 → esm}/utils/cli/generate.js +4 -4
  81. package/dist/{es2020 → esm}/utils/cli/index.js +5 -5
  82. package/dist/{es2020 → esm}/utils/cli/start.js +4 -4
  83. package/dist/esm/utils/cli/utils/cli.helpers.js +27 -0
  84. package/dist/esm/utils/cli/utils/cli.helpers.js.map +1 -0
  85. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +1 -1
  86. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-middlewares.js +1 -1
  87. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +2 -2
  88. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-router-template.js +1 -1
  89. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-service-template.js +2 -2
  90. package/dist/{es2020 → esm}/utils/cli/utils/template-generators.js +6 -6
  91. package/dist/{es2020 → esm}/utils/features/api.features.js +4 -4
  92. package/dist/{es2020 → esm}/utils/features/change-case.features.js +1 -1
  93. package/dist/{es2020 → esm}/utils/helpers/fs.helpers.js +10 -4
  94. package/dist/esm/utils/helpers/fs.helpers.js.map +1 -0
  95. package/dist/esm/utils/helpers/global.helpers.js +35 -0
  96. package/dist/esm/utils/helpers/global.helpers.js.map +1 -0
  97. package/dist/{es2020 → esm}/utils/helpers/models.helpers.js +5 -5
  98. package/dist/esm/utils/helpers/models.helpers.js.map +1 -0
  99. package/dist/{es2020 → esm}/utils/helpers/prisma.helpers.js +4 -4
  100. package/dist/{es2020 → esm}/utils/validate-dto.js +1 -1
  101. package/dist/{es2020 → esm}/utils/validate-schema.js +1 -1
  102. package/dist/types/modules/auth/auth.controller.d.ts +7 -7
  103. package/dist/types/modules/auth/auth.service.d.ts +1 -1
  104. package/dist/types/modules/base/base.controller.d.ts +9 -9
  105. package/dist/types/modules/error-handler/utils/catch-async.d.ts +1 -1
  106. package/dist/types/modules/file-upload/file-upload.controller.d.ts +4 -4
  107. package/dist/types/utils/helpers/global.helpers.d.ts +5 -1
  108. package/dist/types/utils/helpers/prisma.helpers.d.ts +1 -1
  109. package/package.json +20 -17
  110. package/dist/es2020/app.js +0 -1
  111. package/dist/es2020/exports/prisma/index.js +0 -3
  112. package/dist/es2020/exports/utils/index.js +0 -4
  113. package/dist/es2020/exports/validation/index.js +0 -4
  114. package/dist/es2020/modules/base/utils/helpers/base.router.helpers.js.map +0 -1
  115. package/dist/es2020/modules/swagger/swagger.router.js.map +0 -1
  116. package/dist/es2020/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +0 -1
  117. package/dist/es2020/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +0 -1
  118. package/dist/es2020/modules/swagger/utils/helpers/swagger.router.helpers.js.map +0 -1
  119. package/dist/es2020/utils/cli/build.js.map +0 -1
  120. package/dist/es2020/utils/cli/dev.js.map +0 -1
  121. package/dist/es2020/utils/cli/utils/cli.helpers.js +0 -18
  122. package/dist/es2020/utils/cli/utils/cli.helpers.js.map +0 -1
  123. package/dist/es2020/utils/helpers/fs.helpers.js.map +0 -1
  124. package/dist/es2020/utils/helpers/global.helpers.js +0 -4
  125. package/dist/es2020/utils/helpers/global.helpers.js.map +0 -1
  126. package/dist/es2020/utils/helpers/models.helpers.js.map +0 -1
  127. /package/dist/{es2020 → esm}/exports/auth/index.js.map +0 -0
  128. /package/dist/{es2020 → esm}/exports/controllers/index.js.map +0 -0
  129. /package/dist/{es2020 → esm}/exports/error-handler/index.js.map +0 -0
  130. /package/dist/{es2020 → esm}/exports/index.js.map +0 -0
  131. /package/dist/{es2020 → esm}/exports/middlewares/index.js.map +0 -0
  132. /package/dist/{es2020 → esm}/exports/prisma/index.js.map +0 -0
  133. /package/dist/{es2020 → esm}/exports/services/index.js.map +0 -0
  134. /package/dist/{es2020 → esm}/exports/utils/index.js.map +0 -0
  135. /package/dist/{es2020 → esm}/exports/validation/index.js.map +0 -0
  136. /package/dist/{es2020 → esm}/modules/auth/auth.controller.js.map +0 -0
  137. /package/dist/{es2020 → esm}/modules/auth/auth.router.js.map +0 -0
  138. /package/dist/{es2020 → esm}/modules/auth/auth.service.js.map +0 -0
  139. /package/dist/{es2020 → esm}/modules/auth/utils/helpers/auth.controller.helpers.js.map +0 -0
  140. /package/dist/{es2020 → esm}/modules/base/base.controller.js.map +0 -0
  141. /package/dist/{es2020 → esm}/modules/base/base.middlewares.js.map +0 -0
  142. /package/dist/{es2020 → esm}/modules/base/base.router.js.map +0 -0
  143. /package/dist/{es2020 → esm}/modules/base/base.service.js.map +0 -0
  144. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.controller.helpers.js.map +0 -0
  145. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.middlewares.helpers.js.map +0 -0
  146. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.service.helpers.js.map +0 -0
  147. /package/dist/{es2020 → esm}/modules/email/email.service.js.map +0 -0
  148. /package/dist/{es2020 → esm}/modules/error-handler/error-handler.controller.js.map +0 -0
  149. /package/dist/{es2020 → esm}/modules/error-handler/utils/app-error.js +0 -0
  150. /package/dist/{es2020 → esm}/modules/error-handler/utils/app-error.js.map +0 -0
  151. /package/dist/{es2020 → esm}/modules/error-handler/utils/catch-async.js +0 -0
  152. /package/dist/{es2020 → esm}/modules/error-handler/utils/catch-async.js.map +0 -0
  153. /package/dist/{es2020 → esm}/modules/error-handler/utils/error-handler.helpers.js.map +0 -0
  154. /package/dist/{es2020 → esm}/modules/file-upload/file-upload.controller.js.map +0 -0
  155. /package/dist/{es2020 → esm}/modules/file-upload/file-upload.router.js.map +0 -0
  156. /package/dist/{es2020 → esm}/modules/file-upload/file-upload.service.js.map +0 -0
  157. /package/dist/{es2020 → esm}/modules/file-upload/utils/helpers/file-upload.helpers.js.map +0 -0
  158. /package/dist/{es2020 → esm}/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +0 -0
  159. /package/dist/{es2020 → esm}/modules/swagger/utils/helpers/get-system-json-schema-paths.js +0 -0
  160. /package/dist/{es2020 → esm}/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +0 -0
  161. /package/dist/{es2020 → esm}/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +0 -0
  162. /package/dist/{es2020 → esm}/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +0 -0
  163. /package/dist/{es2020 → esm}/paths.js +0 -0
  164. /package/dist/{es2020 → esm}/paths.js.map +0 -0
  165. /package/dist/{es2020 → esm}/server.js.map +0 -0
  166. /package/dist/{es2020 → esm}/types/arkos-config.js +0 -0
  167. /package/dist/{es2020 → esm}/types/arkos-config.js.map +0 -0
  168. /package/dist/{es2020 → esm}/types/auth.js +0 -0
  169. /package/dist/{es2020 → esm}/types/auth.js.map +0 -0
  170. /package/dist/{es2020 → esm}/types/index.js +0 -0
  171. /package/dist/{es2020 → esm}/types/index.js.map +0 -0
  172. /package/dist/{es2020 → esm}/types/router-config.js +0 -0
  173. /package/dist/{es2020 → esm}/types/router-config.js.map +0 -0
  174. /package/dist/{es2020 → esm}/utils/arkos-env.js +0 -0
  175. /package/dist/{es2020 → esm}/utils/arkos-env.js.map +0 -0
  176. /package/dist/{es2020 → esm}/utils/cli/generate.js.map +0 -0
  177. /package/dist/{es2020 → esm}/utils/cli/index.js.map +0 -0
  178. /package/dist/{es2020 → esm}/utils/cli/start.js.map +0 -0
  179. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -0
  180. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -0
  181. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -0
  182. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +0 -0
  183. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -0
  184. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -0
  185. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-service-template.js.map +0 -0
  186. /package/dist/{es2020 → esm}/utils/cli/utils/template-generators.js.map +0 -0
  187. /package/dist/{es2020 → esm}/utils/dotenv.helpers.js +0 -0
  188. /package/dist/{es2020 → esm}/utils/dotenv.helpers.js.map +0 -0
  189. /package/dist/{es2020 → esm}/utils/features/api.features.js.map +0 -0
  190. /package/dist/{es2020 → esm}/utils/features/change-case.features.js.map +0 -0
  191. /package/dist/{es2020 → esm}/utils/helpers/api.features.helpers.js +0 -0
  192. /package/dist/{es2020 → esm}/utils/helpers/api.features.helpers.js.map +0 -0
  193. /package/dist/{es2020 → esm}/utils/helpers/change-case.helpers.js +0 -0
  194. /package/dist/{es2020 → esm}/utils/helpers/change-case.helpers.js.map +0 -0
  195. /package/dist/{es2020 → esm}/utils/helpers/deepmerge.helper.js +0 -0
  196. /package/dist/{es2020 → esm}/utils/helpers/deepmerge.helper.js.map +0 -0
  197. /package/dist/{es2020 → esm}/utils/helpers/prisma.helpers.js.map +0 -0
  198. /package/dist/{es2020 → esm}/utils/helpers/query-parser.helpers.js +0 -0
  199. /package/dist/{es2020 → esm}/utils/helpers/query-parser.helpers.js.map +0 -0
  200. /package/dist/{es2020 → esm}/utils/helpers/text.helpers.js +0 -0
  201. /package/dist/{es2020 → esm}/utils/helpers/text.helpers.js.map +0 -0
  202. /package/dist/{es2020 → esm}/utils/sheu.js +0 -0
  203. /package/dist/{es2020 → esm}/utils/sheu.js.map +0 -0
  204. /package/dist/{es2020 → esm}/utils/validate-dto.js.map +0 -0
  205. /package/dist/{es2020 → esm}/utils/validate-schema.js.map +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"fs.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/fs.helpers.ts"],"names":[],"mappings":";;;;;;AAmBA,oCAOC;AAgED,0CAMC;AAhGD,+BAAiC;AACjC,4CAAoB;AACpB,gDAAwB;AAEX,QAAA,SAAS,GAAG,IAAA,gBAAS,EAAC,YAAE,CAAC,IAAI,CAAC,CAAC;AAC/B,QAAA,WAAW,GAAG,IAAA,gBAAS,EAAC,YAAE,CAAC,MAAM,CAAC,CAAC;AACnC,QAAA,UAAU,GAAG,IAAA,gBAAS,EAAC,YAAE,CAAC,KAAK,CAAC,CAAC;AAEvC,MAAM,GAAG,GAAG,GAAG,EAAE,CACtB,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM;IAChC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,UAAU;IAC5B,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAHP,QAAA,GAAG,OAGI;AAQpB,SAAgB,YAAY,CAAC,IAAY;IACvC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAEvE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAE9D,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,UAAU,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9D,CAAC;AAuBM,MAAM,oBAAoB,GAAG,GAAgB,EAAE;IACpD,IAAI,yBAAiB;QAAE,OAAO,yBAAiB,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAGjC,MAAM,WAAW,GAAG,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;QAG1E,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;QAGvD,IAAI,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;YAChC,yBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,yBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;QAED,OAAO,yBAAiB,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QAEX,yBAAiB,GAAG,IAAI,CAAC;QACzB,OAAO,yBAAiB,CAAC;IAC3B,CAAC;AACH,CAAC,CAAC;AAzBW,QAAA,oBAAoB,wBAyB/B;AAgBF,SAAgB,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,OAAO,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC","sourcesContent":["import { promisify } from \"util\";\nimport fs from \"fs\";\nimport path from \"path\";\n\nexport const statAsync = promisify(fs.stat);\nexport const accessAsync = promisify(fs.access);\nexport const mkdirAsync = promisify(fs.mkdir);\n\nexport const crd = () =>\n process.env.ARKOS_BUILD === \"true\"\n ? process.cwd() + \"/.build/\"\n : process.cwd();\n\n/**\n * Removes the current working directory prefix from the given path.\n * Handles cases with or without a trailing slash in cwd.\n * @param path - The path to clean\n * @returns The path without the cwd prefix\n */\nexport function fullCleanCwd(path: string): string {\n if (typeof path !== \"string\") throw new Error(\"Path must be a string\");\n\n const cwd = process.cwd().replace(/\\/+$/, \"\"); // remove trailing slashes\n const escapedCwd = cwd.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"); // escape regex special chars\n\n return path.replace(new RegExp(`${escapedCwd}/?`, \"g\"), \"\"); // remove cwd + optional slash\n}\n\n// /**\n// * Removes the current working directory prefix from the given path.\n// * Handles cases with or without a trailing slash in cwd.\n// *\n// * @param path - The path to clean\n// * @returns The path without the cwd prefix\n// */\n// export function fullCleanCwd(path: string): string {\n// if (typeof path !== \"string\") throw new Error(\"Path must be a string\");\n\n// const cwd = process.cwd().replace(/\\/+$/, \"\"); // remove trailing slashes\n// return path.replace(new RegExp(`${cwd}/`, \"g\"), \"\"); // remove cwd + optional slash\n// }\n\nexport let userFileExtension: \"ts\" | \"js\" | undefined;\n\n/**\n * Detects the file extension that should be used in the current execution context\n * Returns 'ts' when TypeScript config exists and not in build mode, otherwise 'js'\n * @returns 'ts' | 'js'\n */\nexport const getUserFileExtension = (): \"ts\" | \"js\" => {\n if (userFileExtension) return userFileExtension;\n\n try {\n const currentDir = process.cwd();\n\n // Check for tsconfig.json in current directory\n const hasTsConfig = fs.existsSync(path.join(currentDir, \"tsconfig.json\"));\n\n // Check environment variable for build mode\n const isBuildMode = process.env.ARKOS_BUILD === \"true\";\n\n // If tsconfig exists and not in build mode, use TypeScript\n if (hasTsConfig && !isBuildMode) {\n userFileExtension = \"ts\";\n } else {\n userFileExtension = \"js\";\n }\n\n return userFileExtension;\n } catch (e) {\n // Default to js if anything goes wrong\n userFileExtension = \"js\";\n return userFileExtension;\n }\n};\n\n/**\n * Checks if a file exists at the specified file path.\n *\n * @param filePath - The path to the file to check\n * @returns {boolean} True if the file exists, false otherwise or if there's an error\n *\n * @example\n * ```ts\n * const exists = checkFileExists('./path/to/file.txt');\n * if (exists) {\n * console.log('File exists!');\n * }\n * ```\n */\nexport function checkFileExists(filePath: string): boolean {\n try {\n return fs.existsSync(path.resolve(filePath));\n } catch (error) {\n return false;\n }\n}\n"]}
1
+ {"version":3,"file":"fs.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/fs.helpers.ts"],"names":[],"mappings":";;;;;;AAmBA,oCAOC;AAsDD,0CAMC;AAtFD,+BAAiC;AACjC,4CAAoB;AACpB,gDAAwB;AAEX,QAAA,SAAS,GAAG,IAAA,gBAAS,EAAC,YAAE,CAAC,IAAI,CAAC,CAAC;AAC/B,QAAA,WAAW,GAAG,IAAA,gBAAS,EAAC,YAAE,CAAC,MAAM,CAAC,CAAC;AACnC,QAAA,UAAU,GAAG,IAAA,gBAAS,EAAC,YAAE,CAAC,KAAK,CAAC,CAAC;AAEvC,MAAM,GAAG,GAAG,GAAG,EAAE,CACtB,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM;IAChC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,UAAU;IAC5B,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAHP,QAAA,GAAG,OAGI;AAQpB,SAAgB,YAAY,CAAC,IAAY;IACvC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAEvE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAE9D,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,UAAU,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9D,CAAC;AASM,MAAM,oBAAoB,GAAG,GAAgB,EAAE;IACpD,IAAI,yBAAiB;QAAE,OAAO,yBAAiB,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAGjC,MAAM,WAAW,GAAG,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;QAG1E,MAAM,QAAQ,GAAG,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAGvE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;QAGvD,IAAI,WAAW;YAAE,yBAAiB,GAAG,IAAI,CAAC;aACrC,IAAI,WAAW;YAAE,yBAAiB,GAAG,IAAI,CAAC;aAC1C,IAAI,QAAQ,IAAI,CAAC,QAAQ;YAAE,yBAAiB,GAAG,IAAI,CAAC;aACpD,IAAI,QAAQ;YAAE,yBAAiB,GAAG,IAAI,CAAC;;YACvC,yBAAiB,GAAG,IAAI,CAAC;QAE9B,OAAO,yBAAiB,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QAEX,yBAAiB,GAAG,IAAI,CAAC;QACzB,OAAO,yBAAiB,CAAC;IAC3B,CAAC;AACH,CAAC,CAAC;AA7BW,QAAA,oBAAoB,wBA6B/B;AAgBF,SAAgB,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,OAAO,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC","sourcesContent":["import { promisify } from \"util\";\nimport fs from \"fs\";\nimport path from \"path\";\n\nexport const statAsync = promisify(fs.stat);\nexport const accessAsync = promisify(fs.access);\nexport const mkdirAsync = promisify(fs.mkdir);\n\nexport const crd = () =>\n process.env.ARKOS_BUILD === \"true\"\n ? process.cwd() + \"/.build/\"\n : process.cwd();\n\n/**\n * Removes the current working directory prefix from the given path.\n * Handles cases with or without a trailing slash in cwd.\n * @param path - The path to clean\n * @returns The path without the cwd prefix\n */\nexport function fullCleanCwd(path: string): string {\n if (typeof path !== \"string\") throw new Error(\"Path must be a string\");\n\n const cwd = process.cwd().replace(/\\/+$/, \"\"); // remove trailing slashes\n const escapedCwd = cwd.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"); // escape regex special chars\n\n return path.replace(new RegExp(`${escapedCwd}/?`, \"g\"), \"\"); // remove cwd + optional slash\n}\n\nexport let userFileExtension: \"ts\" | \"js\" | undefined;\n\n/**\n * Detects the file extension that should be used in the current execution context\n * Returns 'ts' when TypeScript config exists and not in build mode, otherwise 'js'\n * @returns 'ts' | 'js'\n */\nexport const getUserFileExtension = (): \"ts\" | \"js\" => {\n if (userFileExtension) return userFileExtension;\n\n try {\n const currentDir = process.cwd();\n\n // Check for tsconfig.json in current directory\n const hasTsConfig = fs.existsSync(path.join(currentDir, \"tsconfig.json\"));\n\n // Check for main app files\n const hasAppTs = fs.existsSync(path.join(currentDir, \"src\", \"app.ts\"));\n const hasAppJs = fs.existsSync(path.join(currentDir, \"src\", \"app.js\"));\n\n // Check environment variable for build mode\n const isBuildMode = process.env.ARKOS_BUILD === \"true\";\n\n // Decision logic (prioritized)\n if (isBuildMode) userFileExtension = \"js\";\n else if (hasTsConfig) userFileExtension = \"ts\";\n else if (hasAppTs && !hasAppJs) userFileExtension = \"ts\";\n else if (hasAppJs) userFileExtension = \"js\";\n else userFileExtension = \"js\";\n\n return userFileExtension;\n } catch (e) {\n // Default to js if anything goes wrong\n userFileExtension = \"js\";\n return userFileExtension;\n }\n};\n\n/**\n * Checks if a file exists at the specified file path.\n *\n * @param filePath - The path to the file to check\n * @returns {boolean} True if the file exists, false otherwise or if there's an error\n *\n * @example\n * ```ts\n * const exists = checkFileExists('./path/to/file.txt');\n * if (exists) {\n * console.log('File exists!');\n * }\n * ```\n */\nexport function checkFileExists(filePath: string): boolean {\n try {\n return fs.existsSync(path.resolve(filePath));\n } catch (error) {\n return false;\n }\n}\n"]}
@@ -32,9 +32,45 @@ var __importStar = (this && this.__importStar) || (function () {
32
32
  return result;
33
33
  };
34
34
  })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
35
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.getPackageJson = getPackageJson;
40
+ exports.isEsm = isEsm;
36
41
  exports.importModule = importModule;
37
- async function importModule(path) {
38
- return await Promise.resolve(`${path}`).then(s => __importStar(require(s)));
42
+ const fs_1 = __importDefault(require("fs"));
43
+ const path_1 = __importDefault(require("path"));
44
+ function getPackageJson() {
45
+ try {
46
+ const pkgPath = path_1.default.join(process.cwd(), "package.json");
47
+ if (fs_1.default.existsSync(pkgPath)) {
48
+ return JSON.parse(fs_1.default.readFileSync(pkgPath, "utf8"));
49
+ }
50
+ }
51
+ catch (err) {
52
+ console.error("Error checking package.json:", err);
53
+ }
54
+ }
55
+ function isEsm() {
56
+ const pkg = getPackageJson();
57
+ return pkg.type === "module";
58
+ }
59
+ async function importModule(modulePath, options = { fixExtension: true }) {
60
+ let correctedPath = modulePath;
61
+ if (options?.fixExtension &&
62
+ isEsm() &&
63
+ modulePath.startsWith(".") &&
64
+ !modulePath.endsWith(".js")) {
65
+ const fullImportPath = path_1.default.resolve(process.cwd(), modulePath);
66
+ const indexPath = fullImportPath + "/index.js";
67
+ if (fs_1.default.existsSync(indexPath)) {
68
+ correctedPath = modulePath + "/index.js";
69
+ }
70
+ else {
71
+ correctedPath = modulePath + ".js";
72
+ }
73
+ }
74
+ return await Promise.resolve(`${correctedPath}`).then(s => __importStar(require(s)));
39
75
  }
40
76
  //# sourceMappingURL=global.helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"global.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/global.helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oCAEC;AAFM,KAAK,UAAU,YAAY,CAAC,IAAY;IAC7C,OAAO,yBAAa,IAAI,uCAAC,CAAC;AAC5B,CAAC","sourcesContent":["export async function importModule(path: string) {\n return await import(path);\n}\n"]}
1
+ {"version":3,"file":"global.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/global.helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,wCASC;AAED,sBAGC;AAED,oCAyBC;AA5CD,4CAAoB;AACpB,gDAAwB;AAExB,SAAgB,cAAc;IAC5B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACzD,IAAI,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,SAAgB,KAAK;IACnB,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC/B,CAAC;AAEM,KAAK,UAAU,YAAY,CAChC,UAAkB,EAClB,UAAqC,EAAE,YAAY,EAAE,IAAI,EAAE;IAG3D,IAAI,aAAa,GAAG,UAAU,CAAC;IAE/B,IACE,OAAO,EAAE,YAAY;QACrB,KAAK,EAAE;QACP,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;QAC1B,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC3B,CAAC;QACD,MAAM,cAAc,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,cAAc,GAAG,WAAW,CAAC;QAG/C,IAAI,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,aAAa,GAAG,UAAU,GAAG,WAAW,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,UAAU,GAAG,KAAK,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,yBAAa,aAAa,uCAAC,CAAC;AACrC,CAAC","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\n\nexport function getPackageJson() {\n try {\n const pkgPath = path.join(process.cwd(), \"package.json\");\n if (fs.existsSync(pkgPath)) {\n return JSON.parse(fs.readFileSync(pkgPath, \"utf8\"));\n }\n } catch (err) {\n console.error(\"Error checking package.json:\", err);\n }\n}\n\nexport function isEsm() {\n const pkg = getPackageJson();\n return pkg.type === \"module\";\n}\n\nexport async function importModule(\n modulePath: string,\n options: { fixExtension: boolean } = { fixExtension: true }\n) {\n // Add .js extension if it's a relative path without extension\n let correctedPath = modulePath;\n\n if (\n options?.fixExtension &&\n isEsm() &&\n modulePath.startsWith(\".\") &&\n !modulePath.endsWith(\".js\")\n ) {\n const fullImportPath = path.resolve(process.cwd(), modulePath);\n const indexPath = fullImportPath + \"/index.js\";\n\n // Check if it's a directory with index.js or a direct file\n if (fs.existsSync(indexPath)) {\n correctedPath = modulePath + \"/index.js\";\n } else {\n correctedPath = modulePath + \".js\";\n }\n }\n\n return await import(correctedPath);\n}\n"]}
@@ -210,7 +210,7 @@ async function importPrismaModelModules(modelName) {
210
210
  processSubdir(modelName, "dtos", result),
211
211
  processSubdir(modelName, "schemas", result),
212
212
  ]);
213
- exports.prismaModelsModules[modelName] = result;
213
+ exports.prismaModelsModules[modelName] = JSON.parse(JSON.stringify(result));
214
214
  return result;
215
215
  }
216
216
  exports.prismaModelRelationFields = {};
@@ -1 +1 @@
1
- {"version":3,"file":"models.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/models.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\nimport {\n camelCase,\n kebabCase,\n pascalCase,\n} from \"../../utils/helpers/change-case.helpers\";\nimport { crd, getUserFileExtension } from \"./fs.helpers\";\nimport { importModule } from \"./global.helpers\";\nimport { AuthConfigs } from \"../../types/auth\";\nimport { killServerChildProcess } from \"../cli/utils/cli.helpers\";\n\nexport let prismaModelsModules: Record<\n string,\n Awaited<ReturnType<typeof importPrismaModelModules>>\n> = {};\n\nexport function getModelModules(modelName: string) {\n return prismaModelsModules[kebabCase(modelName)];\n}\n\nexport function getFileModelModulesFileStructure(modelName: string) {\n const kebabModelName = kebabCase(modelName).toLowerCase();\n const isAuthModule = modelName.toLowerCase() === \"auth\";\n const ext = getUserFileExtension();\n\n return {\n core: {\n service: `${kebabModelName}.service.${ext}`,\n controller: `${kebabModelName}.controller.${ext}`,\n middlewares: `${kebabModelName}.middlewares.${ext}`,\n authConfigs: `${kebabModelName}.auth-configs.${ext}`,\n authConfigsNew: `${kebabModelName}.auth.${ext}`,\n prismaQueryOptions: `${kebabModelName}.prisma-query-options.${ext}`,\n prismaQueryOptionsNew: `${kebabModelName}.query.${ext}`,\n router: `${kebabModelName}.router.${ext}`,\n },\n dtos: isAuthModule\n ? {\n login: `login.dto.${ext}`,\n signup: `signup.dto.${ext}`,\n updateMe: `update-me.dto.${ext}`,\n updatePassword: `update-password.dto.${ext}`,\n }\n : {\n model: `${kebabModelName}.dto.${ext}`,\n create: `create-${kebabModelName}.dto.${ext}`,\n createMany: `create-many-${kebabModelName}.dto.${ext}`,\n update: `update-${kebabModelName}.dto.${ext}`,\n updateMany: `update-many-${kebabModelName}.dto.${ext}`,\n findOne: `find-one-${kebabModelName}.dto.${ext}`,\n findMany: `find-many-${kebabModelName}.dto.${ext}`,\n query: `query-${kebabModelName}.dto.${ext}`,\n },\n schemas: isAuthModule\n ? {\n login: `login.schema.${ext}`,\n signup: `signup.schema.${ext}`,\n updateMe: `update-me.schema.${ext}`,\n updatePassword: `update-password.schema.${ext}`,\n }\n : {\n model: `${kebabModelName}.schema.${ext}`,\n create: `create-${kebabModelName}.schema.${ext}`,\n createMany: `create-many-${kebabModelName}.schema.${ext}`,\n update: `update-${kebabModelName}.schema.${ext}`,\n updateMany: `update-many-${kebabModelName}.schema.${ext}`,\n findOne: `find-one-${kebabModelName}.schema.${ext}`,\n findMany: `find-many-${kebabModelName}.schema.${ext}`,\n query: `query-${kebabModelName}.schema.${ext}`,\n },\n };\n}\n\nexport async function processSubdir(\n modelName: string,\n type: \"dtos\" | \"schemas\",\n result: Record<string, any>\n) {\n const moduleDir = path.resolve(crd(), \"src\", \"modules\", kebabCase(modelName));\n\n const subdir = path.join(moduleDir, type);\n const fileStructure = getFileModelModulesFileStructure(modelName);\n\n // Skip if directory doesn't exist\n try {\n await fs.promises.access(subdir).catch(() => {\n return; // Directory doesn't exist\n });\n\n await Promise.all(\n Object.entries(fileStructure[type]).map(async ([key, fileName]) => {\n const filePath = path.join(subdir, fileName);\n try {\n const module = await import(filePath).catch(() => null);\n if (module) result[type][key] = module.default;\n } catch (error) {\n // Silent fail - file might not exist\n console.error(error);\n }\n })\n );\n } catch (error) {\n // Directory doesn't exist, continue silently\n console.error(error);\n }\n}\n\ntype importPrismaModelModulesReturnType = {\n service?: any;\n controller?: any;\n middlewares?: any;\n authConfigs?: AuthConfigs;\n authConfigsNew?: AuthConfigs;\n prismaQueryOptions?: any;\n prismaQueryOptionsNew?: any;\n router?: any;\n dtos: Record<string, any>;\n schemas: Record<string, any>;\n};\n\n/**\n * Validates naming convention conflicts for prismaQueryOptions and authConfigs\n * @param {string} key - The current file key being processed\n * @param {string} fileName - The filename being imported\n * @param {importPrismaModelModulesReturnType} result - The current result object\n * @throws {Error} When conflicting naming conventions are detected\n */\nexport function validateNamingConventions(\n key: string,\n fileName: string,\n result: importPrismaModelModulesReturnType\n): void {\n if (key === \"prismaQueryOptions\") {\n if (result.prismaQueryOptions) {\n killServerChildProcess();\n throw new Error(\n `\\n Cannot use both ${fileName} and ${fileName.replace(\n \"prisma-query-options\",\n \"query\"\n )} at once, please choose only one name convention. \\n`\n );\n }\n } else if (key === \"prismaQueryOptionsNew\") {\n if (result.prismaQueryOptions) {\n killServerChildProcess();\n throw new Error(\n `\\n Cannot use both ${fileName} and ${fileName.replace(\n \"query\",\n \"prisma-query-options\"\n )} at once, please choose only one name convention. \\n`\n );\n }\n } else if (key === \"authConfigs\") {\n if (result.authConfigs) {\n killServerChildProcess();\n throw new Error(\n `\\n Cannot use both ${fileName} and ${fileName.replace(\n \"auth-configs\",\n \"auth\"\n )} at once, please choose only one name convention. \\n`\n );\n }\n } else if (key === \"authConfigsNew\") {\n if (result.authConfigs) {\n killServerChildProcess();\n throw new Error(\n `\\n Cannot use both ${fileName} and ${fileName.replace(\n \"auth\",\n \"auth-configs\"\n )} at once, please choose only one name convention. \\n`\n );\n }\n }\n}\n\n/**\n * Processes and assigns module to the result object based on the key\n * @param {string} key - The file key being processed\n * @param {any} module - The imported module\n * @param {importPrismaModelModulesReturnType} result - The result object to modify\n */\nexport function assignModuleToResult(\n key: string,\n module: any,\n result: importPrismaModelModulesReturnType\n): void {\n if (key === \"prismaQueryOptions\" || key === \"prismaQueryOptionsNew\") {\n result.prismaQueryOptions = module.default || module;\n } else if (key === \"authConfigs\" || key === \"authConfigsNew\") {\n result.authConfigs = module.default || module;\n } else if (key === \"middlewares\" || key === \"router\") {\n result[key] = module;\n } else {\n result[key as keyof typeof result] = module.default || module;\n }\n}\n\n/**\n * Dynamically imports model-specific modules for a given model with optimized file handling.\n * Includes special handling for the Auth module.\n *\n * @param {string} modelName - The name of the model (e.g., \"User\", \"Post\", \"Auth\").\n * @returns {Promise<Object>} An object containing the imported modules\n */\nexport async function importPrismaModelModules(\n modelName: string\n): Promise<importPrismaModelModulesReturnType> {\n const moduleDir = path.resolve(crd(), \"src\", \"modules\", kebabCase(modelName));\n\n const result: importPrismaModelModulesReturnType = {\n dtos: {},\n schemas: {},\n };\n\n if (getModelModules(modelName)) return getModelModules(modelName);\n\n const fileStructure = getFileModelModulesFileStructure(modelName);\n\n // Batch process core files\n await Promise.all(\n Object.entries(fileStructure.core).map(async ([key, fileName]) => {\n const filePath = path.join(moduleDir, fileName);\n try {\n const module = await importModule(filePath).catch((err) => {\n if (!err.message.includes(\"Cannot find module\")) {\n console.error(`Failed to import ${fileName}: \\n`);\n console.error(err);\n killServerChildProcess();\n process.exit(1);\n }\n });\n\n if (module) {\n // Validate naming conventions before assignment\n validateNamingConventions(key, fileName, result);\n\n // Assign module to result\n assignModuleToResult(key, module, result);\n }\n } catch (err: any) {\n if (err.message.includes(\"Cannot use both\")) throw err;\n console.error(err);\n killServerChildProcess();\n }\n })\n );\n\n await Promise.all([\n processSubdir(modelName, \"dtos\", result),\n processSubdir(modelName, \"schemas\", result),\n ]);\n\n // Cache the result\n prismaModelsModules[modelName] = result;\n\n return result;\n}\n\nexport type ModelFieldDefition = {\n name: string;\n type: string;\n isUnique: boolean;\n};\n\n/**\n * Represents the structure of relation fields for Prisma models.\n * It includes both singular (one-to-one) and list (one-to-many) relationships.\n *\n * @typedef {Object} RelationFields\n * @property {Array<{name: string, type: string}>} singular - List of singular relationships.\n * @property {Array<{name: string, type: string}>} list - List of list relationships.\n */\nexport type RelationFields = {\n singular: Omit<ModelFieldDefition, \"isUnique\">[];\n list: Omit<ModelFieldDefition, \"isUnique\">[];\n};\n\n/**\n * Reads the Prisma schema files and extracts all model definitions,\n * identifying their relations (one-to-one and one-to-many).\n */\nexport const prismaModelRelationFields: Record<string, RelationFields> = {};\n\nexport function getAllPrismaFiles(dirPath: string, fileList: string[] = []) {\n const files = fs.readdirSync(dirPath);\n\n files?.forEach((file) => {\n const filePath = path.join(dirPath, file);\n const stat = fs.statSync(filePath);\n\n // Skip migrations folder\n if (stat.isDirectory() && file !== \"migrations\") {\n fileList = getAllPrismaFiles(filePath, fileList);\n } else if (stat.isFile() && file.endsWith(\".prisma\")) {\n fileList.push(filePath);\n }\n });\n\n return fileList;\n}\n\nconst modelRegex = /model\\s+(\\w+)\\s*{/g;\nexport const models: string[] = [];\nexport let prismaSchemasContent: string;\nexport const prismaModelsUniqueFields: Record<string, ModelFieldDefition[]> =\n [] as any;\n\nexport function initializePrismaModels() {\n const prismaContent: string[] = [];\n\n const files = getAllPrismaFiles(\"./prisma\");\n\n for (const file of files) {\n const content = fs.readFileSync(file, \"utf-8\");\n\n if (!prismaContent?.includes?.(content)) prismaContent.push(content);\n }\n\n // Gather the content of all *.prisma files into single one\n const content = prismaContent\n .join(\"\\n\")\n .replace(modelRegex, (_, modelName) => {\n if (!models?.includes?.(modelName))\n models.push(camelCase(modelName.trim()));\n return `model ${modelName} {`;\n });\n\n prismaSchemasContent = content;\n\n for (const model of models) {\n const modelName = pascalCase(model);\n\n const modelStart = content.indexOf(`model ${modelName} {`);\n const modelEnd = content.indexOf(\"}\", modelStart);\n const modelDefinition = content.slice(modelStart, modelEnd);\n\n const relations: RelationFields = {\n singular: [],\n list: [],\n };\n const lines = modelDefinition.split(\"\\n\");\n\n for (const line of lines) {\n const trimmedLine = line.trim();\n\n if (\n !trimmedLine ||\n trimmedLine.startsWith(\"model\") ||\n trimmedLine.startsWith(\"//\") ||\n trimmedLine.startsWith(\"/*\")\n )\n continue;\n\n const [fieldName, type] = trimmedLine.split(/\\s+/);\n const isUnique = trimmedLine?.includes?.(\"@unique\");\n\n if (isUnique) {\n const existingFields = prismaModelsUniqueFields[model] || [];\n\n const alreadyExists = existingFields.some(\n (field) =>\n field.name === fieldName &&\n field.type === type &&\n field.isUnique === isUnique\n );\n\n if (!alreadyExists) {\n prismaModelsUniqueFields[model] = [\n ...existingFields,\n { name: fieldName, type, isUnique },\n ];\n }\n }\n\n const cleanType = type?.replace(\"[]\", \"\").replace(\"?\", \"\");\n\n if (\n trimmedLine?.includes?.(\"@relation\") ||\n trimmedLine.match(/\\s+\\w+(\\[\\])?(\\s+@|$)/) ||\n models?.includes?.(camelCase(cleanType || \"\"))\n ) {\n const enumStart = content.indexOf(`enum ${cleanType} {`);\n const typeStart = content.indexOf(`type ${cleanType} {`);\n\n if (\n !cleanType ||\n enumStart >= 0 ||\n typeStart >= 0 ||\n cleanType === \"String\" ||\n cleanType === \"Int\" ||\n cleanType === \"Float\" ||\n cleanType === \"Boolean\" ||\n cleanType === \"DateTime\" ||\n cleanType === \"Bytes\" ||\n cleanType === \"Decimal\" ||\n cleanType === \"BigInt\" ||\n cleanType === \"Json\"\n\n // && !content.includes?.(`model ${cleanType} {`)\n ) {\n continue;\n }\n\n if (!type?.includes?.(\"[]\")) {\n relations.singular.push({\n name: fieldName,\n type: cleanType,\n });\n } else {\n relations.list.push({\n name: fieldName,\n type: cleanType,\n });\n }\n }\n\n prismaModelRelationFields[modelName] = relations;\n }\n }\n}\n\ninitializePrismaModels();\n\n/**\n * Retrieves the relations for a given Prisma model.\n *\n * @param {string} modelName - The name of the model (e.g., \"User\").\n * @returns {RelationFields|undefined} The relation fields for the model, or `undefined` if no relations are found.\n */\nexport function getPrismaModelRelations(\n modelName: string\n): RelationFields | undefined {\n modelName = pascalCase(modelName);\n\n if (!(modelName in prismaModelRelationFields)) return;\n return prismaModelRelationFields[modelName];\n}\n\n/**\n * Retrieves all the model names from the Prisma schema.\n *\n * @returns {string[]} An array of model names (e.g., [\"User\", \"Post\"]).\n */\nfunction getModels(): string[] {\n return models;\n}\n\n/**\n * Returns all content of all .prisma files gathered together\n *\n * @returns {string}\n */\nexport function getPrismaSchemasContent(): string {\n return prismaSchemasContent;\n}\n\n/** Retuns a given model unique fields\n * @param {string} modelName - The name of model in PascalCase\n * @returns {string[]} An array of all unique fields,\n */\nfunction getModelUniqueFields(modelName: string): ModelFieldDefition[] {\n return prismaModelsUniqueFields[modelName];\n}\n\nexport { getModels, getModelUniqueFields };\n"]}
1
+ {"version":3,"file":"models.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/models.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\nimport {\n camelCase,\n kebabCase,\n pascalCase,\n} from \"../../utils/helpers/change-case.helpers\";\nimport { crd, getUserFileExtension } from \"./fs.helpers\";\nimport { importModule } from \"./global.helpers\";\nimport { AuthConfigs } from \"../../types/auth\";\nimport { killServerChildProcess } from \"../cli/utils/cli.helpers\";\n\nexport let prismaModelsModules: Record<\n string,\n Awaited<ReturnType<typeof importPrismaModelModules>>\n> = {};\n\nexport function getModelModules(modelName: string) {\n return prismaModelsModules[kebabCase(modelName)];\n}\n\nexport function getFileModelModulesFileStructure(modelName: string) {\n const kebabModelName = kebabCase(modelName).toLowerCase();\n const isAuthModule = modelName.toLowerCase() === \"auth\";\n const ext = getUserFileExtension();\n\n return {\n core: {\n service: `${kebabModelName}.service.${ext}`,\n controller: `${kebabModelName}.controller.${ext}`,\n middlewares: `${kebabModelName}.middlewares.${ext}`,\n authConfigs: `${kebabModelName}.auth-configs.${ext}`,\n authConfigsNew: `${kebabModelName}.auth.${ext}`,\n prismaQueryOptions: `${kebabModelName}.prisma-query-options.${ext}`,\n prismaQueryOptionsNew: `${kebabModelName}.query.${ext}`,\n router: `${kebabModelName}.router.${ext}`,\n },\n dtos: isAuthModule\n ? {\n login: `login.dto.${ext}`,\n signup: `signup.dto.${ext}`,\n updateMe: `update-me.dto.${ext}`,\n updatePassword: `update-password.dto.${ext}`,\n }\n : {\n model: `${kebabModelName}.dto.${ext}`,\n create: `create-${kebabModelName}.dto.${ext}`,\n createMany: `create-many-${kebabModelName}.dto.${ext}`,\n update: `update-${kebabModelName}.dto.${ext}`,\n updateMany: `update-many-${kebabModelName}.dto.${ext}`,\n findOne: `find-one-${kebabModelName}.dto.${ext}`,\n findMany: `find-many-${kebabModelName}.dto.${ext}`,\n query: `query-${kebabModelName}.dto.${ext}`,\n },\n schemas: isAuthModule\n ? {\n login: `login.schema.${ext}`,\n signup: `signup.schema.${ext}`,\n updateMe: `update-me.schema.${ext}`,\n updatePassword: `update-password.schema.${ext}`,\n }\n : {\n model: `${kebabModelName}.schema.${ext}`,\n create: `create-${kebabModelName}.schema.${ext}`,\n createMany: `create-many-${kebabModelName}.schema.${ext}`,\n update: `update-${kebabModelName}.schema.${ext}`,\n updateMany: `update-many-${kebabModelName}.schema.${ext}`,\n findOne: `find-one-${kebabModelName}.schema.${ext}`,\n findMany: `find-many-${kebabModelName}.schema.${ext}`,\n query: `query-${kebabModelName}.schema.${ext}`,\n },\n };\n}\n\nexport async function processSubdir(\n modelName: string,\n type: \"dtos\" | \"schemas\",\n result: Record<string, any>\n) {\n const moduleDir = path.resolve(crd(), \"src\", \"modules\", kebabCase(modelName));\n\n const subdir = path.join(moduleDir, type);\n const fileStructure = getFileModelModulesFileStructure(modelName);\n\n // Skip if directory doesn't exist\n try {\n await fs.promises.access(subdir).catch(() => {\n return; // Directory doesn't exist\n });\n\n await Promise.all(\n Object.entries(fileStructure[type]).map(async ([key, fileName]) => {\n const filePath = path.join(subdir, fileName);\n try {\n const module = await import(filePath).catch(() => null);\n if (module) result[type][key] = module.default;\n } catch (error) {\n // Silent fail - file might not exist\n console.error(error);\n }\n })\n );\n } catch (error) {\n // Directory doesn't exist, continue silently\n console.error(error);\n }\n}\n\ntype importPrismaModelModulesReturnType = {\n service?: any;\n controller?: any;\n middlewares?: any;\n authConfigs?: AuthConfigs;\n authConfigsNew?: AuthConfigs;\n prismaQueryOptions?: any;\n prismaQueryOptionsNew?: any;\n router?: any;\n dtos: Record<string, any>;\n schemas: Record<string, any>;\n};\n\n/**\n * Validates naming convention conflicts for prismaQueryOptions and authConfigs\n * @param {string} key - The current file key being processed\n * @param {string} fileName - The filename being imported\n * @param {importPrismaModelModulesReturnType} result - The current result object\n * @throws {Error} When conflicting naming conventions are detected\n */\nexport function validateNamingConventions(\n key: string,\n fileName: string,\n result: importPrismaModelModulesReturnType\n): void {\n if (key === \"prismaQueryOptions\") {\n if (result.prismaQueryOptions) {\n killServerChildProcess();\n throw new Error(\n `\\n Cannot use both ${fileName} and ${fileName.replace(\n \"prisma-query-options\",\n \"query\"\n )} at once, please choose only one name convention. \\n`\n );\n }\n } else if (key === \"prismaQueryOptionsNew\") {\n if (result.prismaQueryOptions) {\n killServerChildProcess();\n throw new Error(\n `\\n Cannot use both ${fileName} and ${fileName.replace(\n \"query\",\n \"prisma-query-options\"\n )} at once, please choose only one name convention. \\n`\n );\n }\n } else if (key === \"authConfigs\") {\n if (result.authConfigs) {\n killServerChildProcess();\n throw new Error(\n `\\n Cannot use both ${fileName} and ${fileName.replace(\n \"auth-configs\",\n \"auth\"\n )} at once, please choose only one name convention. \\n`\n );\n }\n } else if (key === \"authConfigsNew\") {\n if (result.authConfigs) {\n killServerChildProcess();\n throw new Error(\n `\\n Cannot use both ${fileName} and ${fileName.replace(\n \"auth\",\n \"auth-configs\"\n )} at once, please choose only one name convention. \\n`\n );\n }\n }\n}\n\n/**\n * Processes and assigns module to the result object based on the key\n * @param {string} key - The file key being processed\n * @param {any} module - The imported module\n * @param {importPrismaModelModulesReturnType} result - The result object to modify\n */\nexport function assignModuleToResult(\n key: string,\n module: any,\n result: importPrismaModelModulesReturnType\n): void {\n if (key === \"prismaQueryOptions\" || key === \"prismaQueryOptionsNew\") {\n result.prismaQueryOptions = module.default || module;\n } else if (key === \"authConfigs\" || key === \"authConfigsNew\") {\n result.authConfigs = module.default || module;\n } else if (key === \"middlewares\" || key === \"router\") {\n result[key] = module;\n } else {\n result[key as keyof typeof result] = module.default || module;\n }\n}\n\n/**\n * Dynamically imports model-specific modules for a given model with optimized file handling.\n * Includes special handling for the Auth module.\n *\n * @param {string} modelName - The name of the model (e.g., \"User\", \"Post\", \"Auth\").\n * @returns {Promise<Object>} An object containing the imported modules\n */\nexport async function importPrismaModelModules(\n modelName: string\n): Promise<importPrismaModelModulesReturnType> {\n const moduleDir = path.resolve(crd(), \"src\", \"modules\", kebabCase(modelName));\n\n const result: importPrismaModelModulesReturnType = {\n dtos: {},\n schemas: {},\n };\n\n if (getModelModules(modelName)) return getModelModules(modelName);\n\n const fileStructure = getFileModelModulesFileStructure(modelName);\n\n // Batch process core files\n await Promise.all(\n Object.entries(fileStructure.core).map(async ([key, fileName]) => {\n const filePath = path.join(moduleDir, fileName);\n try {\n const module = await importModule(filePath).catch((err) => {\n if (!err.message.includes(\"Cannot find module\")) {\n console.error(`Failed to import ${fileName}: \\n`);\n console.error(err);\n killServerChildProcess();\n process.exit(1);\n }\n });\n\n if (module) {\n // Validate naming conventions before assignment\n validateNamingConventions(key, fileName, result);\n\n // Assign module to result\n assignModuleToResult(key, module, result);\n }\n } catch (err: any) {\n if (err.message.includes(\"Cannot use both\")) throw err;\n console.error(err);\n killServerChildProcess();\n }\n })\n );\n\n await Promise.all([\n processSubdir(modelName, \"dtos\", result),\n processSubdir(modelName, \"schemas\", result),\n ]);\n\n // Cache the result making shallow copy to not cause problems after build\n prismaModelsModules[modelName] = JSON.parse(JSON.stringify(result));\n\n return result;\n}\n\nexport type ModelFieldDefition = {\n name: string;\n type: string;\n isUnique: boolean;\n};\n\n/**\n * Represents the structure of relation fields for Prisma models.\n * It includes both singular (one-to-one) and list (one-to-many) relationships.\n *\n * @typedef {Object} RelationFields\n * @property {Array<{name: string, type: string}>} singular - List of singular relationships.\n * @property {Array<{name: string, type: string}>} list - List of list relationships.\n */\nexport type RelationFields = {\n singular: Omit<ModelFieldDefition, \"isUnique\">[];\n list: Omit<ModelFieldDefition, \"isUnique\">[];\n};\n\n/**\n * Reads the Prisma schema files and extracts all model definitions,\n * identifying their relations (one-to-one and one-to-many).\n */\nexport const prismaModelRelationFields: Record<string, RelationFields> = {};\n\nexport function getAllPrismaFiles(dirPath: string, fileList: string[] = []) {\n const files = fs.readdirSync(dirPath);\n\n files?.forEach((file) => {\n const filePath = path.join(dirPath, file);\n const stat = fs.statSync(filePath);\n\n // Skip migrations folder\n if (stat.isDirectory() && file !== \"migrations\") {\n fileList = getAllPrismaFiles(filePath, fileList);\n } else if (stat.isFile() && file.endsWith(\".prisma\")) {\n fileList.push(filePath);\n }\n });\n\n return fileList;\n}\n\nconst modelRegex = /model\\s+(\\w+)\\s*{/g;\nexport const models: string[] = [];\nexport let prismaSchemasContent: string;\nexport const prismaModelsUniqueFields: Record<string, ModelFieldDefition[]> =\n [] as any;\n\nexport function initializePrismaModels() {\n const prismaContent: string[] = [];\n\n const files = getAllPrismaFiles(\"./prisma\");\n\n for (const file of files) {\n const content = fs.readFileSync(file, \"utf-8\");\n\n if (!prismaContent?.includes?.(content)) prismaContent.push(content);\n }\n\n // Gather the content of all *.prisma files into single one\n const content = prismaContent\n .join(\"\\n\")\n .replace(modelRegex, (_, modelName) => {\n if (!models?.includes?.(modelName))\n models.push(camelCase(modelName.trim()));\n return `model ${modelName} {`;\n });\n\n prismaSchemasContent = content;\n\n for (const model of models) {\n const modelName = pascalCase(model);\n\n const modelStart = content.indexOf(`model ${modelName} {`);\n const modelEnd = content.indexOf(\"}\", modelStart);\n const modelDefinition = content.slice(modelStart, modelEnd);\n\n const relations: RelationFields = {\n singular: [],\n list: [],\n };\n const lines = modelDefinition.split(\"\\n\");\n\n for (const line of lines) {\n const trimmedLine = line.trim();\n\n if (\n !trimmedLine ||\n trimmedLine.startsWith(\"model\") ||\n trimmedLine.startsWith(\"//\") ||\n trimmedLine.startsWith(\"/*\")\n )\n continue;\n\n const [fieldName, type] = trimmedLine.split(/\\s+/);\n const isUnique = trimmedLine?.includes?.(\"@unique\");\n\n if (isUnique) {\n const existingFields = prismaModelsUniqueFields[model] || [];\n\n const alreadyExists = existingFields.some(\n (field) =>\n field.name === fieldName &&\n field.type === type &&\n field.isUnique === isUnique\n );\n\n if (!alreadyExists) {\n prismaModelsUniqueFields[model] = [\n ...existingFields,\n { name: fieldName, type, isUnique },\n ];\n }\n }\n\n const cleanType = type?.replace(\"[]\", \"\").replace(\"?\", \"\");\n\n if (\n trimmedLine?.includes?.(\"@relation\") ||\n trimmedLine.match(/\\s+\\w+(\\[\\])?(\\s+@|$)/) ||\n models?.includes?.(camelCase(cleanType || \"\"))\n ) {\n const enumStart = content.indexOf(`enum ${cleanType} {`);\n const typeStart = content.indexOf(`type ${cleanType} {`);\n\n if (\n !cleanType ||\n enumStart >= 0 ||\n typeStart >= 0 ||\n cleanType === \"String\" ||\n cleanType === \"Int\" ||\n cleanType === \"Float\" ||\n cleanType === \"Boolean\" ||\n cleanType === \"DateTime\" ||\n cleanType === \"Bytes\" ||\n cleanType === \"Decimal\" ||\n cleanType === \"BigInt\" ||\n cleanType === \"Json\"\n\n // && !content.includes?.(`model ${cleanType} {`)\n ) {\n continue;\n }\n\n if (!type?.includes?.(\"[]\")) {\n relations.singular.push({\n name: fieldName,\n type: cleanType,\n });\n } else {\n relations.list.push({\n name: fieldName,\n type: cleanType,\n });\n }\n }\n\n prismaModelRelationFields[modelName] = relations;\n }\n }\n}\n\ninitializePrismaModels();\n\n/**\n * Retrieves the relations for a given Prisma model.\n *\n * @param {string} modelName - The name of the model (e.g., \"User\").\n * @returns {RelationFields|undefined} The relation fields for the model, or `undefined` if no relations are found.\n */\nexport function getPrismaModelRelations(\n modelName: string\n): RelationFields | undefined {\n modelName = pascalCase(modelName);\n\n if (!(modelName in prismaModelRelationFields)) return;\n return prismaModelRelationFields[modelName];\n}\n\n/**\n * Retrieves all the model names from the Prisma schema.\n *\n * @returns {string[]} An array of model names (e.g., [\"User\", \"Post\"]).\n */\nfunction getModels(): string[] {\n return models;\n}\n\n/**\n * Returns all content of all .prisma files gathered together\n *\n * @returns {string}\n */\nexport function getPrismaSchemasContent(): string {\n return prismaSchemasContent;\n}\n\n/** Retuns a given model unique fields\n * @param {string} modelName - The name of model in PascalCase\n * @returns {string[]} An array of all unique fields,\n */\nfunction getModelUniqueFields(modelName: string): ModelFieldDefition[] {\n return prismaModelsUniqueFields[modelName];\n}\n\nexport { getModels, getModelUniqueFields };\n"]}
@@ -0,0 +1 @@
1
+ "use strict";import c from"express";import p from"cors";import m from"cookie-parser";import{getAuthRouter as f}from"./modules/auth/auth.router.js";import{getPrismaModelsRouter as w,getAvailableResourcesAndRoutesRouter as R}from"./modules/base/base.router.js";import h from"./modules/error-handler/error-handler.controller.js";import{rateLimit as P}from"express-rate-limit";import y from"compression";import{handleRequestLogs as b}from"./modules/base/base.middlewares.js";import{checkDatabaseConnection as q,loadPrismaModule as A}from"./utils/helpers/prisma.helpers.js";import{getFileUploadRouter as O}from"./modules/file-upload/file-upload.router.js";import{queryParser as g}from"./utils/helpers/query-parser.helpers.js";import d from"./utils/helpers/deepmerge.helper.js";import{getSwaggerRouter as E}from"./modules/swagger/swagger.router.js";export const app=c();export async function bootstrap(e){await A(),e?.configureApp&&await e.configureApp(app);const n=e?.middlewares,t=n?.disable||[],a=n?.replace||{};t?.includes?.("compression")||app.use(a.compression||y(e?.compressionOptions)),t?.includes?.("global-rate-limit")||app.use(a.globalRateLimit||P(d({windowMs:60*1e3,limit:500,standardHeaders:"draft-7",legacyHeaders:!1,handler:(r,s)=>{s.status(429).json({message:"Too many requests, please try again later"})}},e?.globalRequestRateLimitOptions||{}))),t?.includes?.("cors")||app.use(a.cors||p(e?.cors?.customHandler?e.cors.customHandler:d({origin:(r,s)=>{const i=e?.cors?.allowedOrigins;i==="*"?s(null,!0):Array.isArray(i)?s(null,!r||i?.includes?.(r)):typeof i=="string"?s(null,!r||i===r):s(null,!1)},methods:["GET","POST","PUT","DELETE","PATCH","OPTIONS"],allowedHeaders:["Content-Type","Authorization","Connection"],credentials:!0},e?.cors?.options||{}))),t?.includes?.("express-json")||app.use(a.expressJson||c.json(e?.jsonBodyParserOptions)),t?.includes?.("cookie-parser")||app.use(a.cookieParser||m(...e?.cookieParserParameters||[])),t?.includes?.("query-parser")||app.use(a.queryParser||g(d({parseNull:!0,parseUndefined:!0,parseBoolean:!0},e?.queryParserOptions||{}))),t?.includes?.("database-connection")||app.use(a.databaseConnection||q),t?.includes?.("request-logger")||app.use(a.requestLogger||b),e?.middlewares?.additional&&e.middlewares.additional.forEach(r=>{app.use(r)});const l=e?.routers,u=l?.disable||[],o=l?.replace||{};if(u?.includes?.("welcome-endpoint")||app.get("/api",o.welcomeEndpoint||((r,s)=>{s.status(200).json({message:e.welcomeMessage})})),!u?.includes?.("file-upload")){const r=o.fileUpload?await o.fileUpload(e):await O(e);app.use(r)}if(!u?.includes?.("auth-router")&&e.authentication){const r=o.authRouter?await o.authRouter(e):await f(e);app.use("/api",r)}if(!u?.includes?.("prisma-models-router")){const r=o.prismaModelsRouter?await o.prismaModelsRouter(e):await w(e);app.use("/api",r)}return app.use("/api",R()),e.swagger&&(process.env.ARKOS_BUILD!=="true"||e.swagger.enableAfterBuild===!0)&&app.use("/api",await E(e)),l?.additional&&l.additional.forEach(r=>{app.use(r)}),t?.includes?.("global-error-handler")||app.use(a.globalErrorHandler||h),app.use("*",(r,s)=>{s.status(404).json({message:"Route not found!"})}),app}
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"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","sourcesContent":["import express from \"express\";\nimport cors from \"cors\";\nimport cookieParser from \"cookie-parser\";\nimport { getAuthRouter } from \"./modules/auth/auth.router\";\nimport {\n getPrismaModelsRouter,\n getAvailableResourcesAndRoutesRouter,\n} from \"./modules/base/base.router\";\nimport errorHandler from \"./modules/error-handler/error-handler.controller\";\nimport { rateLimit } from \"express-rate-limit\";\nimport compression from \"compression\";\nimport { handleRequestLogs } from \"./modules/base/base.middlewares\";\nimport {\n checkDatabaseConnection,\n loadPrismaModule,\n} from \"./utils/helpers/prisma.helpers\";\nimport { getFileUploadRouter } from \"./modules/file-upload/file-upload.router\";\nimport { ArkosConfig } from \"./types/arkos-config\";\nimport { queryParser } from \"./utils/helpers/query-parser.helpers\";\nimport deepmerge from \"./utils/helpers/deepmerge.helper\";\nimport { getSwaggerRouter } from \"./modules/swagger/swagger.router\";\n\nexport const app: express.Express = express();\n\nexport async function bootstrap(\n arkosConfig: ArkosConfig\n): Promise<express.Express> {\n await loadPrismaModule();\n\n if (arkosConfig?.configureApp) await arkosConfig.configureApp(app);\n\n const middlewaresConfig = arkosConfig?.middlewares;\n const disabledMiddlewares = middlewaresConfig?.disable || [];\n const replacedMiddlewares = middlewaresConfig?.replace || {};\n\n // Compression middleware\n if (!disabledMiddlewares?.includes?.(\"compression\"))\n app.use(\n replacedMiddlewares.compression ||\n compression(arkosConfig?.compressionOptions)\n );\n\n // Global rate limit middleware\n if (!disabledMiddlewares?.includes?.(\"global-rate-limit\"))\n app.use(\n replacedMiddlewares.globalRateLimit ||\n rateLimit(\n deepmerge(\n {\n windowMs: 60 * 1000,\n limit: 500,\n standardHeaders: \"draft-7\",\n legacyHeaders: false,\n handler: (req, res) => {\n res.status(429).json({\n message: \"Too many requests, please try again later\",\n });\n },\n },\n arkosConfig?.globalRequestRateLimitOptions || {}\n )\n )\n );\n\n // CORS middleware\n if (!disabledMiddlewares?.includes?.(\"cors\"))\n app.use(\n replacedMiddlewares.cors ||\n cors(\n arkosConfig?.cors?.customHandler\n ? arkosConfig.cors.customHandler\n : deepmerge(\n {\n origin: (\n origin: string,\n cb: (err: Error | null, allow?: boolean) => void\n ) => {\n const allowed = arkosConfig?.cors?.allowedOrigins;\n\n if (allowed === \"*\") {\n cb(null, true);\n } else if (Array.isArray(allowed)) {\n cb(null, !origin || allowed?.includes?.(origin));\n } else if (typeof allowed === \"string\") {\n cb(null, !origin || allowed === origin);\n } else {\n cb(null, false);\n }\n },\n methods: [\"GET\", \"POST\", \"PUT\", \"DELETE\", \"PATCH\", \"OPTIONS\"],\n allowedHeaders: [\n \"Content-Type\",\n \"Authorization\",\n \"Connection\",\n ],\n credentials: true,\n },\n arkosConfig?.cors?.options || {}\n )\n )\n );\n\n // JSON body parser middleware\n if (!disabledMiddlewares?.includes?.(\"express-json\"))\n app.use(\n replacedMiddlewares.expressJson ||\n express.json(arkosConfig?.jsonBodyParserOptions)\n );\n\n // Cookie parser middleware\n if (!disabledMiddlewares?.includes?.(\"cookie-parser\"))\n app.use(\n replacedMiddlewares.cookieParser ||\n cookieParser(...[...(arkosConfig?.cookieParserParameters || [])])\n );\n\n // Query parser middleware\n if (!disabledMiddlewares?.includes?.(\"query-parser\"))\n app.use(\n replacedMiddlewares.queryParser ||\n queryParser(\n deepmerge(\n {\n parseNull: true,\n parseUndefined: true,\n parseBoolean: true,\n },\n arkosConfig?.queryParserOptions || {}\n )\n )\n );\n\n // Database connection check middleware\n if (!disabledMiddlewares?.includes?.(\"database-connection\"))\n app.use(replacedMiddlewares.databaseConnection || checkDatabaseConnection);\n\n // Request logger middleware\n if (!disabledMiddlewares?.includes?.(\"request-logger\"))\n app.use(replacedMiddlewares.requestLogger || handleRequestLogs);\n\n // Additional custom middlewares\n if (arkosConfig?.middlewares?.additional)\n arkosConfig.middlewares.additional.forEach((middleware) => {\n app.use(middleware);\n });\n\n // Configure routers\n const routersConfig = arkosConfig?.routers;\n const disabledRouters = routersConfig?.disable || [];\n const replacedRouters = routersConfig?.replace || {};\n\n // Welcome endpoint\n if (!disabledRouters?.includes?.(\"welcome-endpoint\"))\n app.get(\n \"/api\",\n replacedRouters.welcomeEndpoint ||\n ((req, res) => {\n res.status(200).json({ message: arkosConfig.welcomeMessage });\n })\n );\n\n // File upload router\n if (!disabledRouters?.includes?.(\"file-upload\")) {\n const fileUploadRouter = replacedRouters.fileUpload\n ? await replacedRouters.fileUpload(arkosConfig)\n : await getFileUploadRouter(arkosConfig);\n app.use(fileUploadRouter);\n }\n\n // Auth router\n if (\n !disabledRouters?.includes?.(\"auth-router\") &&\n arkosConfig.authentication\n ) {\n const authRouter = replacedRouters.authRouter\n ? await replacedRouters.authRouter(arkosConfig)\n : await getAuthRouter(arkosConfig);\n app.use(\"/api\", authRouter);\n }\n\n // Prisma models router\n if (!disabledRouters?.includes?.(\"prisma-models-router\")) {\n const modelsRouter = replacedRouters.prismaModelsRouter\n ? await replacedRouters.prismaModelsRouter(arkosConfig)\n : await getPrismaModelsRouter(arkosConfig);\n app.use(\"/api\", modelsRouter);\n }\n\n app.use(\"/api\", getAvailableResourcesAndRoutesRouter());\n\n if (\n arkosConfig.swagger &&\n (process.env.ARKOS_BUILD !== \"true\" ||\n arkosConfig.swagger.enableAfterBuild === true)\n )\n app.use(\"/api\", await getSwaggerRouter(arkosConfig));\n\n // Additional custom routers\n if (routersConfig?.additional)\n routersConfig.additional.forEach((router) => {\n app.use(router);\n });\n\n // Global error handler middleware (must be last)\n if (!disabledMiddlewares?.includes?.(\"global-error-handler\"))\n app.use(replacedMiddlewares.globalErrorHandler || errorHandler);\n\n app.use(\"*\", (req, res) => {\n res.status(404).json({ message: \"Route not found on this server\" });\n });\n\n return app;\n}\n"]}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"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","sourcesContent":["import express from \"express\";\nimport cors from \"cors\";\nimport cookieParser from \"cookie-parser\";\nimport { getAuthRouter } from \"./modules/auth/auth.router\";\nimport {\n getPrismaModelsRouter,\n getAvailableResourcesAndRoutesRouter,\n} from \"./modules/base/base.router\";\nimport errorHandler from \"./modules/error-handler/error-handler.controller\";\nimport { rateLimit } from \"express-rate-limit\";\nimport compression from \"compression\";\nimport { handleRequestLogs } from \"./modules/base/base.middlewares\";\nimport {\n checkDatabaseConnection,\n loadPrismaModule,\n} from \"./utils/helpers/prisma.helpers\";\nimport { getFileUploadRouter } from \"./modules/file-upload/file-upload.router\";\nimport { ArkosConfig } from \"./types/arkos-config\";\nimport { queryParser } from \"./utils/helpers/query-parser.helpers\";\nimport deepmerge from \"./utils/helpers/deepmerge.helper\";\nimport { getSwaggerRouter } from \"./modules/swagger/swagger.router\";\n\nexport const app: express.Express = express();\n\nexport async function bootstrap(\n arkosConfig: ArkosConfig\n): Promise<express.Express> {\n await loadPrismaModule();\n\n if (arkosConfig?.configureApp) await arkosConfig.configureApp(app);\n\n const middlewaresConfig = arkosConfig?.middlewares;\n const disabledMiddlewares = middlewaresConfig?.disable || [];\n const replacedMiddlewares = middlewaresConfig?.replace || {};\n\n // Compression middleware\n if (!disabledMiddlewares?.includes?.(\"compression\"))\n app.use(\n replacedMiddlewares.compression ||\n compression(arkosConfig?.compressionOptions)\n );\n\n // Global rate limit middleware\n if (!disabledMiddlewares?.includes?.(\"global-rate-limit\"))\n app.use(\n replacedMiddlewares.globalRateLimit ||\n rateLimit(\n deepmerge(\n {\n windowMs: 60 * 1000,\n limit: 500,\n standardHeaders: \"draft-7\",\n legacyHeaders: false,\n handler: (req, res) => {\n res.status(429).json({\n message: \"Too many requests, please try again later\",\n });\n },\n },\n arkosConfig?.globalRequestRateLimitOptions || {}\n )\n )\n );\n\n // CORS middleware\n if (!disabledMiddlewares?.includes?.(\"cors\"))\n app.use(\n replacedMiddlewares.cors ||\n cors(\n arkosConfig?.cors?.customHandler\n ? arkosConfig.cors.customHandler\n : deepmerge(\n {\n origin: (\n origin: string,\n cb: (err: Error | null, allow?: boolean) => void\n ) => {\n const allowed = arkosConfig?.cors?.allowedOrigins;\n\n if (allowed === \"*\") {\n cb(null, true);\n } else if (Array.isArray(allowed)) {\n cb(null, !origin || allowed?.includes?.(origin));\n } else if (typeof allowed === \"string\") {\n cb(null, !origin || allowed === origin);\n } else {\n cb(null, false);\n }\n },\n methods: [\"GET\", \"POST\", \"PUT\", \"DELETE\", \"PATCH\", \"OPTIONS\"],\n allowedHeaders: [\n \"Content-Type\",\n \"Authorization\",\n \"Connection\",\n ],\n credentials: true,\n },\n arkosConfig?.cors?.options || {}\n )\n )\n );\n\n // JSON body parser middleware\n if (!disabledMiddlewares?.includes?.(\"express-json\"))\n app.use(\n replacedMiddlewares.expressJson ||\n express.json(arkosConfig?.jsonBodyParserOptions)\n );\n\n // Cookie parser middleware\n if (!disabledMiddlewares?.includes?.(\"cookie-parser\"))\n app.use(\n replacedMiddlewares.cookieParser ||\n cookieParser(...[...(arkosConfig?.cookieParserParameters || [])])\n );\n\n // Query parser middleware\n if (!disabledMiddlewares?.includes?.(\"query-parser\"))\n app.use(\n replacedMiddlewares.queryParser ||\n queryParser(\n deepmerge(\n {\n parseNull: true,\n parseUndefined: true,\n parseBoolean: true,\n },\n arkosConfig?.queryParserOptions || {}\n )\n )\n );\n\n // Database connection check middleware\n if (!disabledMiddlewares?.includes?.(\"database-connection\"))\n app.use(replacedMiddlewares.databaseConnection || checkDatabaseConnection);\n\n // Request logger middleware\n if (!disabledMiddlewares?.includes?.(\"request-logger\"))\n app.use(replacedMiddlewares.requestLogger || handleRequestLogs);\n\n // Additional custom middlewares\n if (arkosConfig?.middlewares?.additional)\n arkosConfig.middlewares.additional.forEach((middleware) => {\n app.use(middleware);\n });\n\n // Configure routers\n const routersConfig = arkosConfig?.routers;\n const disabledRouters = routersConfig?.disable || [];\n const replacedRouters = routersConfig?.replace || {};\n\n // Welcome endpoint\n if (!disabledRouters?.includes?.(\"welcome-endpoint\"))\n app.get(\n \"/api\",\n replacedRouters.welcomeEndpoint ||\n ((req, res) => {\n res.status(200).json({ message: arkosConfig.welcomeMessage });\n })\n );\n\n // File upload router\n if (!disabledRouters?.includes?.(\"file-upload\")) {\n const fileUploadRouter = replacedRouters.fileUpload\n ? await replacedRouters.fileUpload(arkosConfig)\n : await getFileUploadRouter(arkosConfig);\n app.use(fileUploadRouter);\n }\n\n // Auth router\n if (\n !disabledRouters?.includes?.(\"auth-router\") &&\n arkosConfig.authentication\n ) {\n const authRouter = replacedRouters.authRouter\n ? await replacedRouters.authRouter(arkosConfig)\n : await getAuthRouter(arkosConfig);\n app.use(\"/api\", authRouter);\n }\n\n // Prisma models router\n if (!disabledRouters?.includes?.(\"prisma-models-router\")) {\n const modelsRouter = replacedRouters.prismaModelsRouter\n ? await replacedRouters.prismaModelsRouter(arkosConfig)\n : await getPrismaModelsRouter(arkosConfig);\n app.use(\"/api\", modelsRouter);\n }\n\n app.use(\"/api\", getAvailableResourcesAndRoutesRouter());\n\n if (\n arkosConfig.swagger &&\n (process.env.ARKOS_BUILD !== \"true\" ||\n arkosConfig.swagger.enableAfterBuild === true)\n )\n app.use(\"/api\", await getSwaggerRouter(arkosConfig));\n\n // Additional custom routers\n if (routersConfig?.additional)\n routersConfig.additional.forEach((router) => {\n app.use(router);\n });\n\n // Global error handler middleware (must be last)\n if (!disabledMiddlewares?.includes?.(\"global-error-handler\"))\n app.use(replacedMiddlewares.globalErrorHandler || errorHandler);\n\n app.use(\"*\", (req, res) => {\n res.status(404).json({ message: \"Route not found!\" });\n });\n\n return app;\n}\n"]}
@@ -1,2 +1,2 @@
1
- export { defaultExcludedUserFields } from "./../../modules/auth/auth.controller";
1
+ export { defaultExcludedUserFields } from "./../../modules/auth/auth.controller.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- import { BaseController } from "./../../modules/base/base.controller";
2
- import fileUploadController from "../../modules/file-upload/file-upload.controller";
1
+ import { BaseController } from "./../../modules/base/base.controller.js";
2
+ import fileUploadController from "../../modules/file-upload/file-upload.controller.js";
3
3
  export { fileUploadController, BaseController };
4
4
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- import catchAsync from "../../modules/error-handler/utils/catch-async";
2
- import AppError from "../../modules/error-handler/utils/app-error";
1
+ import catchAsync from "../../modules/error-handler/utils/catch-async.js";
2
+ import AppError from "../../modules/error-handler/utils/app-error.js";
3
3
  export { catchAsync, AppError };
4
4
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
- import { BaseController } from "./../modules/base/base.controller";
2
- import { initApp, getArkosConfig } from "../server";
1
+ import { BaseController } from "./../modules/base/base.controller.js";
2
+ import { initApp, getArkosConfig } from "../server.js";
3
3
  const arkos = {
4
4
  init: initApp,
5
5
  };
@@ -1,2 +1,2 @@
1
- export { addPrismaQueryOptionsToRequest, handleRequestBodyValidationAndTransformation, } from "../../modules/base/base.middlewares";
1
+ export { addPrismaQueryOptionsToRequest, handleRequestBodyValidationAndTransformation, } from "../../modules/base/base.middlewares.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,3 @@
1
+ import { getModels } from "../../utils/helpers/models.helpers.js";
2
+ export { getModels as getPrismaModels, };
3
+ //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
- import { getFileUploadServices, FileUploadService, } from "../../modules/file-upload/file-upload.service";
2
- import authService, { AuthService } from "../../modules/auth/auth.service";
3
- import emailService, { EmailService } from "../../modules/email/email.service";
4
- import { BaseService, getBaseServices } from "../../modules/base/base.service";
1
+ import { getFileUploadServices, FileUploadService, } from "../../modules/file-upload/file-upload.service.js";
2
+ import authService, { AuthService } from "../../modules/auth/auth.service.js";
3
+ import emailService, { EmailService } from "../../modules/email/email.service.js";
4
+ import { BaseService, getBaseServices } from "../../modules/base/base.service.js";
5
5
  export { authService, AuthService };
6
6
  export { BaseService, getBaseServices };
7
7
  export { emailService, EmailService };
@@ -0,0 +1,4 @@
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
@@ -0,0 +1,4 @@
1
+ import validateDto from "../../utils/validate-dto.js";
2
+ import validateSchema from "../../utils/validate-schema.js";
3
+ export { validateDto, validateSchema };
4
+ //# sourceMappingURL=index.js.map
@@ -1,10 +1,10 @@
1
- import catchAsync from "../error-handler/utils/catch-async";
2
- import AppError from "../error-handler/utils/app-error";
3
- import authService from "./auth.service";
4
- import { getBaseServices } from "../base/base.service";
5
- import arkosEnv from "../../utils/arkos-env";
6
- import { getArkosConfig } from "../../server";
7
- import { createPrismaWhereClause, determineUsernameField, getNestedValue, toMs, } from "./utils/helpers/auth.controller.helpers";
1
+ import catchAsync from "../error-handler/utils/catch-async.js";
2
+ import AppError from "../error-handler/utils/app-error.js";
3
+ import authService from "./auth.service.js";
4
+ import { getBaseServices } from "../base/base.service.js";
5
+ import arkosEnv from "../../utils/arkos-env.js";
6
+ import { getArkosConfig } from "../../server.js";
7
+ import { createPrismaWhereClause, determineUsernameField, getNestedValue, toMs, } from "./utils/helpers/auth.controller.helpers.js";
8
8
  export const defaultExcludedUserFields = {
9
9
  password: false,
10
10
  };
@@ -1,11 +1,11 @@
1
1
  import { Router } from "express";
2
- import { authControllerFactory } from "./auth.controller";
3
- import authService from "./auth.service";
2
+ import { authControllerFactory } from "./auth.controller.js";
3
+ import authService from "./auth.service.js";
4
4
  import rateLimit from "express-rate-limit";
5
- import { importPrismaModelModules } from "../../utils/helpers/models.helpers";
6
- import { addPrismaQueryOptionsToRequest, handleRequestBodyValidationAndTransformation, sendResponse, } from "../base/base.middlewares";
7
- import deepmerge from "../../utils/helpers/deepmerge.helper";
8
- import catchAsync from "../error-handler/utils/catch-async";
5
+ import { importPrismaModelModules } from "../../utils/helpers/models.helpers.js";
6
+ import { addPrismaQueryOptionsToRequest, handleRequestBodyValidationAndTransformation, sendResponse, } from "../base/base.middlewares.js";
7
+ import deepmerge from "../../utils/helpers/deepmerge.helper.js";
8
+ import catchAsync from "../error-handler/utils/catch-async.js";
9
9
  const router = Router();
10
10
  export async function getAuthRouter(arkosConfigs) {
11
11
  const { middlewares, dtos, schemas, prismaQueryOptions } = await importPrismaModelModules("auth");
@@ -1,11 +1,11 @@
1
1
  import jwt from "jsonwebtoken";
2
2
  import bcrypt from "bcryptjs";
3
- import catchAsync from "../error-handler/utils/catch-async";
4
- import AppError from "../error-handler/utils/app-error";
5
- import { callNext } from "../base/base.middlewares";
6
- import { getArkosConfig } from "../../server";
7
- import arkosEnv from "../../utils/arkos-env";
8
- import { getPrismaInstance } from "../../utils/helpers/prisma.helpers";
3
+ import catchAsync from "../error-handler/utils/catch-async.js";
4
+ import AppError from "../error-handler/utils/app-error.js";
5
+ import { callNext } from "../base/base.middlewares.js";
6
+ import { getArkosConfig } from "../../server.js";
7
+ import arkosEnv from "../../utils/arkos-env.js";
8
+ import { getPrismaInstance } from "../../utils/helpers/prisma.helpers.js";
9
9
  export class AuthService {
10
10
  constructor() {
11
11
  this.authenticate = catchAsync(async (req, res, next) => {
@@ -1,5 +1,5 @@
1
- import { getArkosConfig } from "../../../../server";
2
- import AppError from "../../../error-handler/utils/app-error";
1
+ import { getArkosConfig } from "../../../../server.js";
2
+ import AppError from "../../../error-handler/utils/app-error.js";
3
3
  export const determineUsernameField = (req) => {
4
4
  const authConfigs = getArkosConfig()?.authentication;
5
5
  if (req.query?.usernameField &&
@@ -1,10 +1,10 @@
1
- import catchAsync from "../error-handler/utils/catch-async";
2
- import APIFeatures from "../../utils/features/api.features";
3
- import { BaseService } from "./base.service";
4
- import AppError from "../error-handler/utils/app-error";
5
- import { kebabCase, pascalCase } from "../../utils/helpers/change-case.helpers";
6
- import { getModelModules, getModels } from "../../utils/helpers/models.helpers";
7
- import { getAppRoutes } from "./utils/helpers/base.controller.helpers";
1
+ import catchAsync from "../error-handler/utils/catch-async.js";
2
+ import APIFeatures from "../../utils/features/api.features.js";
3
+ import { BaseService } from "./base.service.js";
4
+ import AppError from "../error-handler/utils/app-error.js";
5
+ import { kebabCase, pascalCase } from "../../utils/helpers/change-case.helpers.js";
6
+ import { getModelModules, getModels } from "../../utils/helpers/models.helpers.js";
7
+ import { getAppRoutes } from "./utils/helpers/base.controller.helpers.js";
8
8
  import pluralize from "pluralize";
9
9
  export class BaseController {
10
10
  constructor(modelName) {
@@ -1,9 +1,9 @@
1
- import { getArkosConfig } from "../../server";
2
- import deepmerge from "../../utils/helpers/deepmerge.helper";
3
- import { catchAsync } from "../../exports/error-handler";
4
- import validateDto from "../../utils/validate-dto";
5
- import validateSchema from "../../utils/validate-schema";
6
- import { resolvePrismaQueryOptions } from "./utils/helpers/base.middlewares.helpers";
1
+ import { getArkosConfig } from "../../server.js";
2
+ import deepmerge from "../../utils/helpers/deepmerge.helper.js";
3
+ import { catchAsync } from "../../exports/error-handler/index.js";
4
+ import validateDto from "../../utils/validate-dto.js";
5
+ import validateSchema from "../../utils/validate-schema.js";
6
+ import { resolvePrismaQueryOptions } from "./utils/helpers/base.middlewares.helpers.js";
7
7
  export function callNext(req, res, next) {
8
8
  next();
9
9
  }
@@ -1,8 +1,8 @@
1
1
  import { Router } from "express";
2
- import { getAvalibleRoutes, getAvailableResources } from "./base.controller";
3
- import { getModels } from "../../utils/helpers/models.helpers";
4
- import authService from "../auth/auth.service";
5
- import { setupRouters } from "./utils/helpers/base.router.helpers";
2
+ import { getAvalibleRoutes, getAvailableResources } from "./base.controller.js";
3
+ import { getModels } from "../../utils/helpers/models.helpers.js";
4
+ import authService from "../auth/auth.service.js";
5
+ import { setupRouters } from "./utils/helpers/base.router.helpers.js";
6
6
  export async function getPrismaModelsRouter(arkosConfigs) {
7
7
  const router = Router();
8
8
  await Promise.all(setupRouters(getModels(), router, arkosConfigs));
@@ -1,9 +1,9 @@
1
- import { camelCase, kebabCase, pascalCase, } from "../../utils/helpers/change-case.helpers";
2
- import { getModels, getPrismaModelRelations, } from "../../utils/helpers/models.helpers";
3
- import deepmerge from "../../utils/helpers/deepmerge.helper";
4
- import { handleRelationFieldsInBody } from "./utils/helpers/base.service.helpers";
5
- import { getPrismaInstance } from "../../utils/helpers/prisma.helpers";
6
- import authService from "../auth/auth.service";
1
+ import { camelCase, kebabCase, pascalCase, } from "../../utils/helpers/change-case.helpers.js";
2
+ import { getModels, getPrismaModelRelations, } from "../../utils/helpers/models.helpers.js";
3
+ import deepmerge from "../../utils/helpers/deepmerge.helper.js";
4
+ import { handleRelationFieldsInBody } from "./utils/helpers/base.service.helpers.js";
5
+ import { getPrismaInstance } from "../../utils/helpers/prisma.helpers.js";
6
+ import authService from "../auth/auth.service.js";
7
7
  export class BaseService {
8
8
  constructor(modelName) {
9
9
  this.modelName = camelCase(modelName);
@@ -1,4 +1,4 @@
1
- import { getExpressApp } from "../../../../server";
1
+ import { getExpressApp } from "../../../../server.js";
2
2
  export const getAppRoutes = () => {
3
3
  const app = getExpressApp();
4
4
  const routes = [];
@@ -1,4 +1,4 @@
1
- import deepmerge from "../../../../utils/helpers/deepmerge.helper";
1
+ import deepmerge from "../../../../utils/helpers/deepmerge.helper.js";
2
2
  export function resolvePrismaQueryOptions(prismaQueryOptions, action) {
3
3
  if (!prismaQueryOptions) {
4
4
  return {};