arkos 1.2.12-test → 1.2.13-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 (288) hide show
  1. package/README.md +22 -14
  2. package/cli.js +2 -11
  3. package/dist/cjs/app.js +1 -1
  4. package/dist/cjs/app.js.map +1 -1
  5. package/dist/cjs/modules/auth/auth.router.js +9 -83
  6. package/dist/cjs/modules/auth/auth.router.js.map +1 -1
  7. package/dist/cjs/modules/auth/auth.service.js +0 -7
  8. package/dist/cjs/modules/auth/auth.service.js.map +1 -1
  9. package/dist/cjs/modules/base/base.controller.js +11 -12
  10. package/dist/cjs/modules/base/base.controller.js.map +1 -1
  11. package/dist/cjs/modules/base/base.router.js.map +1 -1
  12. package/dist/cjs/modules/base/base.service.js.map +1 -1
  13. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +43 -113
  14. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  15. package/dist/cjs/modules/error-handler/error-handler.controller.js +2 -0
  16. package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
  17. package/dist/cjs/modules/error-handler/utils/catch-async.js +1 -1
  18. package/dist/cjs/modules/error-handler/utils/catch-async.js.map +1 -1
  19. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +6 -0
  20. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
  21. package/dist/cjs/modules/file-upload/file-upload.router.js +9 -21
  22. package/dist/cjs/modules/file-upload/file-upload.router.js.map +1 -1
  23. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +7 -0
  24. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -1
  25. package/dist/cjs/modules/swagger/swagger.router.js +14 -55
  26. package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
  27. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +250 -0
  28. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -0
  29. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +66 -0
  30. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -0
  31. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +41 -0
  32. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -0
  33. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +22 -0
  34. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -0
  35. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +30 -0
  36. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +1 -0
  37. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +442 -0
  38. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -0
  39. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +165 -0
  40. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -0
  41. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +94 -0
  42. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
  43. package/dist/cjs/server.js +4 -2
  44. package/dist/cjs/server.js.map +1 -1
  45. package/dist/cjs/types/arkos-config.js.map +1 -1
  46. package/dist/cjs/utils/cli/build.js +2 -19
  47. package/dist/cjs/utils/cli/build.js.map +1 -1
  48. package/dist/cjs/utils/cli/dev.js +33 -45
  49. package/dist/cjs/utils/cli/dev.js.map +1 -1
  50. package/dist/cjs/utils/cli/generate.js +6 -6
  51. package/dist/cjs/utils/cli/generate.js.map +1 -1
  52. package/dist/cjs/utils/cli/start.js +1 -1
  53. package/dist/cjs/utils/cli/start.js.map +1 -1
  54. package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -3
  55. package/dist/cjs/utils/cli/utils/cli.helpers.js.map +1 -1
  56. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +33 -66
  57. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +1 -1
  58. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +16 -10
  59. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +1 -1
  60. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +5 -0
  61. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -1
  62. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js +1 -1
  63. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
  64. package/dist/cjs/utils/features/api.features.js +9 -3
  65. package/dist/cjs/utils/features/api.features.js.map +1 -1
  66. package/dist/cjs/utils/helpers/fs.helpers.js +12 -5
  67. package/dist/cjs/utils/helpers/fs.helpers.js.map +1 -1
  68. package/dist/cjs/utils/helpers/global.helpers.js +51 -2
  69. package/dist/cjs/utils/helpers/global.helpers.js.map +1 -1
  70. package/dist/cjs/utils/helpers/models.helpers.js +44 -52
  71. package/dist/cjs/utils/helpers/models.helpers.js.map +1 -1
  72. package/dist/cjs/utils/helpers/prisma.helpers.js +7 -4
  73. package/dist/cjs/utils/helpers/prisma.helpers.js.map +1 -1
  74. package/dist/cjs/utils/helpers/routers.helpers.js +21 -0
  75. package/dist/cjs/utils/helpers/routers.helpers.js.map +1 -0
  76. package/dist/cjs/utils/sheu.js +119 -0
  77. package/dist/cjs/utils/sheu.js.map +1 -0
  78. package/dist/esm/app.js +1 -0
  79. package/dist/esm/app.js.map +1 -0
  80. package/dist/{es2020 → esm}/exports/auth/index.js +1 -1
  81. package/dist/{es2020 → esm}/exports/controllers/index.js +2 -2
  82. package/dist/{es2020 → esm}/exports/error-handler/index.js +2 -2
  83. package/dist/{es2020 → esm}/exports/index.js +2 -2
  84. package/dist/{es2020 → esm}/exports/middlewares/index.js +1 -1
  85. package/dist/esm/exports/prisma/index.js +3 -0
  86. package/dist/{es2020 → esm}/exports/services/index.js +4 -4
  87. package/dist/esm/exports/utils/index.js +4 -0
  88. package/dist/esm/exports/validation/index.js +4 -0
  89. package/dist/{es2020 → esm}/modules/auth/auth.controller.js +7 -7
  90. package/dist/esm/modules/auth/auth.router.js +44 -0
  91. package/dist/esm/modules/auth/auth.router.js.map +1 -0
  92. package/dist/{es2020 → esm}/modules/auth/auth.service.js +6 -13
  93. package/dist/esm/modules/auth/auth.service.js.map +1 -0
  94. package/dist/{es2020 → esm}/modules/auth/utils/helpers/auth.controller.helpers.js +2 -2
  95. package/dist/{es2020 → esm}/modules/base/base.controller.js +18 -19
  96. package/dist/esm/modules/base/base.controller.js.map +1 -0
  97. package/dist/{es2020 → esm}/modules/base/base.middlewares.js +6 -6
  98. package/dist/{es2020 → esm}/modules/base/base.router.js +4 -4
  99. package/dist/esm/modules/base/base.router.js.map +1 -0
  100. package/dist/{es2020 → esm}/modules/base/base.service.js +6 -6
  101. package/dist/{es2020 → esm}/modules/base/base.service.js.map +1 -1
  102. package/dist/{es2020 → esm}/modules/base/utils/helpers/base.controller.helpers.js +1 -1
  103. package/dist/{es2020 → esm}/modules/base/utils/helpers/base.middlewares.helpers.js +1 -1
  104. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +89 -0
  105. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -0
  106. package/dist/{es2020 → esm}/modules/base/utils/helpers/base.service.helpers.js +1 -1
  107. package/dist/{es2020 → esm}/modules/email/email.service.js +2 -2
  108. package/dist/{es2020 → esm}/modules/error-handler/error-handler.controller.js +5 -3
  109. package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -0
  110. package/dist/{es2020 → esm}/modules/error-handler/utils/catch-async.js +1 -1
  111. package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -0
  112. package/dist/{es2020 → esm}/modules/error-handler/utils/error-handler.helpers.js +6 -1
  113. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -0
  114. package/dist/{es2020 → esm}/modules/file-upload/file-upload.controller.js +7 -7
  115. package/dist/esm/modules/file-upload/file-upload.router.js +38 -0
  116. package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -0
  117. package/dist/{es2020 → esm}/modules/file-upload/file-upload.service.js +5 -5
  118. package/dist/{es2020 → esm}/modules/file-upload/utils/helpers/file-upload.helpers.js +8 -2
  119. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -0
  120. package/dist/{es2020 → esm}/modules/swagger/swagger.router.js +15 -56
  121. package/dist/esm/modules/swagger/swagger.router.js.map +1 -0
  122. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +247 -0
  123. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -0
  124. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +63 -0
  125. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -0
  126. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +38 -0
  127. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -0
  128. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +19 -0
  129. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -0
  130. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +24 -0
  131. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +1 -0
  132. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +436 -0
  133. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -0
  134. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +159 -0
  135. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -0
  136. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +84 -0
  137. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
  138. package/dist/esm/server.js +5 -0
  139. package/dist/esm/server.js.map +1 -0
  140. package/dist/esm/types/arkos-config.js.map +1 -0
  141. package/dist/{es2020 → esm}/utils/cli/build.js +4 -21
  142. package/dist/esm/utils/cli/build.js.map +1 -0
  143. package/dist/{es2020 → esm}/utils/cli/dev.js +37 -49
  144. package/dist/esm/utils/cli/dev.js.map +1 -0
  145. package/dist/{es2020 → esm}/utils/cli/generate.js +10 -10
  146. package/dist/{es2020 → esm}/utils/cli/generate.js.map +1 -1
  147. package/dist/{es2020 → esm}/utils/cli/index.js +5 -5
  148. package/dist/{es2020 → esm}/utils/cli/start.js +5 -5
  149. package/dist/{es2020 → esm}/utils/cli/start.js.map +1 -1
  150. package/dist/esm/utils/cli/utils/cli.helpers.js +16 -0
  151. package/dist/esm/utils/cli/utils/cli.helpers.js.map +1 -0
  152. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +1 -1
  153. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-middlewares.js +34 -67
  154. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +1 -0
  155. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +18 -12
  156. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +1 -0
  157. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-router-template.js +6 -1
  158. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -0
  159. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-service-template.js +2 -2
  160. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
  161. package/dist/{es2020 → esm}/utils/cli/utils/template-generators.js +6 -6
  162. package/dist/{es2020 → esm}/utils/features/api.features.js +13 -7
  163. package/dist/esm/utils/features/api.features.js.map +1 -0
  164. package/dist/{es2020 → esm}/utils/features/change-case.features.js +1 -1
  165. package/dist/{es2020 → esm}/utils/helpers/fs.helpers.js +12 -5
  166. package/dist/esm/utils/helpers/fs.helpers.js.map +1 -0
  167. package/dist/esm/utils/helpers/global.helpers.js +47 -0
  168. package/dist/esm/utils/helpers/global.helpers.js.map +1 -0
  169. package/dist/{es2020 → esm}/utils/helpers/models.helpers.js +45 -21
  170. package/dist/esm/utils/helpers/models.helpers.js.map +1 -0
  171. package/dist/{es2020 → esm}/utils/helpers/prisma.helpers.js +11 -8
  172. package/dist/esm/utils/helpers/prisma.helpers.js.map +1 -0
  173. package/dist/esm/utils/helpers/routers.helpers.js +16 -0
  174. package/dist/esm/utils/helpers/routers.helpers.js.map +1 -0
  175. package/dist/esm/utils/sheu.js +117 -0
  176. package/dist/esm/utils/sheu.js.map +1 -0
  177. package/dist/{es2020 → esm}/utils/validate-dto.js +1 -1
  178. package/dist/{es2020 → esm}/utils/validate-schema.js +1 -1
  179. package/dist/types/modules/base/base.service.d.ts +1 -1
  180. package/dist/types/modules/base/utils/helpers/base.router.helpers.d.ts +4 -1
  181. package/dist/types/modules/error-handler/utils/catch-async.d.ts +1 -0
  182. package/dist/types/modules/error-handler/utils/error-handler.helpers.d.ts +4 -0
  183. package/dist/types/modules/file-upload/file-upload.router.d.ts +1 -1
  184. package/dist/types/modules/file-upload/utils/helpers/file-upload.helpers.d.ts +2 -1
  185. package/dist/types/modules/swagger/swagger.router.d.ts +1 -1
  186. package/dist/types/modules/swagger/utils/helpers/get-authentication-json-schema-paths.d.ts +2 -0
  187. package/dist/types/modules/swagger/utils/helpers/get-system-json-schema-paths.d.ts +2 -0
  188. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.d.ts +1 -0
  189. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.d.ts +1 -0
  190. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.d.ts +1 -0
  191. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.d.ts +2 -0
  192. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.d.ts +2 -0
  193. package/dist/types/modules/swagger/utils/helpers/swagger.router.helpers.d.ts +7 -0
  194. package/dist/types/server.d.ts +3 -0
  195. package/dist/types/types/arkos-config.d.ts +7 -4
  196. package/dist/types/utils/cli/utils/cli.helpers.d.ts +1 -1
  197. package/dist/types/utils/features/api.features.d.ts +1 -0
  198. package/dist/types/utils/helpers/global.helpers.d.ts +6 -1
  199. package/dist/types/utils/helpers/models.helpers.d.ts +17 -5
  200. package/dist/types/utils/helpers/routers.helpers.d.ts +2 -0
  201. package/dist/types/utils/sheu.d.ts +70 -0
  202. package/package.json +24 -31
  203. package/dist/es2020/app.js +0 -1
  204. package/dist/es2020/app.js.map +0 -1
  205. package/dist/es2020/exports/prisma/index.js +0 -3
  206. package/dist/es2020/exports/utils/index.js +0 -4
  207. package/dist/es2020/exports/validation/index.js +0 -4
  208. package/dist/es2020/modules/auth/auth.router.js +0 -118
  209. package/dist/es2020/modules/auth/auth.router.js.map +0 -1
  210. package/dist/es2020/modules/auth/auth.service.js.map +0 -1
  211. package/dist/es2020/modules/base/base.controller.js.map +0 -1
  212. package/dist/es2020/modules/base/base.router.js.map +0 -1
  213. package/dist/es2020/modules/base/utils/helpers/base.router.helpers.js +0 -161
  214. package/dist/es2020/modules/base/utils/helpers/base.router.helpers.js.map +0 -1
  215. package/dist/es2020/modules/error-handler/error-handler.controller.js.map +0 -1
  216. package/dist/es2020/modules/error-handler/utils/catch-async.js.map +0 -1
  217. package/dist/es2020/modules/error-handler/utils/error-handler.helpers.js.map +0 -1
  218. package/dist/es2020/modules/file-upload/file-upload.router.js +0 -50
  219. package/dist/es2020/modules/file-upload/file-upload.router.js.map +0 -1
  220. package/dist/es2020/modules/file-upload/utils/helpers/file-upload.helpers.js.map +0 -1
  221. package/dist/es2020/modules/swagger/swagger.router.js.map +0 -1
  222. package/dist/es2020/server.js +0 -3
  223. package/dist/es2020/server.js.map +0 -1
  224. package/dist/es2020/types/arkos-config.js.map +0 -1
  225. package/dist/es2020/utils/cli/build.js.map +0 -1
  226. package/dist/es2020/utils/cli/dev.js.map +0 -1
  227. package/dist/es2020/utils/cli/utils/cli.helpers.js +0 -18
  228. package/dist/es2020/utils/cli/utils/cli.helpers.js.map +0 -1
  229. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +0 -1
  230. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -1
  231. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -1
  232. package/dist/es2020/utils/features/api.features.js.map +0 -1
  233. package/dist/es2020/utils/helpers/fs.helpers.js.map +0 -1
  234. package/dist/es2020/utils/helpers/global.helpers.js +0 -4
  235. package/dist/es2020/utils/helpers/global.helpers.js.map +0 -1
  236. package/dist/es2020/utils/helpers/models.helpers.js.map +0 -1
  237. package/dist/es2020/utils/helpers/prisma.helpers.js.map +0 -1
  238. /package/dist/{es2020 → esm}/exports/auth/index.js.map +0 -0
  239. /package/dist/{es2020 → esm}/exports/controllers/index.js.map +0 -0
  240. /package/dist/{es2020 → esm}/exports/error-handler/index.js.map +0 -0
  241. /package/dist/{es2020 → esm}/exports/index.js.map +0 -0
  242. /package/dist/{es2020 → esm}/exports/middlewares/index.js.map +0 -0
  243. /package/dist/{es2020 → esm}/exports/prisma/index.js.map +0 -0
  244. /package/dist/{es2020 → esm}/exports/services/index.js.map +0 -0
  245. /package/dist/{es2020 → esm}/exports/utils/index.js.map +0 -0
  246. /package/dist/{es2020 → esm}/exports/validation/index.js.map +0 -0
  247. /package/dist/{es2020 → esm}/modules/auth/auth.controller.js.map +0 -0
  248. /package/dist/{es2020 → esm}/modules/auth/utils/helpers/auth.controller.helpers.js.map +0 -0
  249. /package/dist/{es2020 → esm}/modules/base/base.middlewares.js.map +0 -0
  250. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.controller.helpers.js.map +0 -0
  251. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.middlewares.helpers.js.map +0 -0
  252. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.service.helpers.js.map +0 -0
  253. /package/dist/{es2020 → esm}/modules/email/email.service.js.map +0 -0
  254. /package/dist/{es2020 → esm}/modules/error-handler/utils/app-error.js +0 -0
  255. /package/dist/{es2020 → esm}/modules/error-handler/utils/app-error.js.map +0 -0
  256. /package/dist/{es2020 → esm}/modules/file-upload/file-upload.controller.js.map +0 -0
  257. /package/dist/{es2020 → esm}/modules/file-upload/file-upload.service.js.map +0 -0
  258. /package/dist/{es2020 → esm}/paths.js +0 -0
  259. /package/dist/{es2020 → esm}/paths.js.map +0 -0
  260. /package/dist/{es2020 → esm}/types/arkos-config.js +0 -0
  261. /package/dist/{es2020 → esm}/types/auth.js +0 -0
  262. /package/dist/{es2020 → esm}/types/auth.js.map +0 -0
  263. /package/dist/{es2020 → esm}/types/index.js +0 -0
  264. /package/dist/{es2020 → esm}/types/index.js.map +0 -0
  265. /package/dist/{es2020 → esm}/types/router-config.js +0 -0
  266. /package/dist/{es2020 → esm}/types/router-config.js.map +0 -0
  267. /package/dist/{es2020 → esm}/utils/arkos-env.js +0 -0
  268. /package/dist/{es2020 → esm}/utils/arkos-env.js.map +0 -0
  269. /package/dist/{es2020 → esm}/utils/cli/index.js.map +0 -0
  270. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -0
  271. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -0
  272. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -0
  273. /package/dist/{es2020 → esm}/utils/cli/utils/template-generators.js.map +0 -0
  274. /package/dist/{es2020 → esm}/utils/dotenv.helpers.js +0 -0
  275. /package/dist/{es2020 → esm}/utils/dotenv.helpers.js.map +0 -0
  276. /package/dist/{es2020 → esm}/utils/features/change-case.features.js.map +0 -0
  277. /package/dist/{es2020 → esm}/utils/helpers/api.features.helpers.js +0 -0
  278. /package/dist/{es2020 → esm}/utils/helpers/api.features.helpers.js.map +0 -0
  279. /package/dist/{es2020 → esm}/utils/helpers/change-case.helpers.js +0 -0
  280. /package/dist/{es2020 → esm}/utils/helpers/change-case.helpers.js.map +0 -0
  281. /package/dist/{es2020 → esm}/utils/helpers/deepmerge.helper.js +0 -0
  282. /package/dist/{es2020 → esm}/utils/helpers/deepmerge.helper.js.map +0 -0
  283. /package/dist/{es2020 → esm}/utils/helpers/query-parser.helpers.js +0 -0
  284. /package/dist/{es2020 → esm}/utils/helpers/query-parser.helpers.js.map +0 -0
  285. /package/dist/{es2020 → esm}/utils/helpers/text.helpers.js +0 -0
  286. /package/dist/{es2020 → esm}/utils/helpers/text.helpers.js.map +0 -0
  287. /package/dist/{es2020 → esm}/utils/validate-dto.js.map +0 -0
  288. /package/dist/{es2020 → esm}/utils/validate-schema.js.map +0 -0
@@ -39,16 +39,22 @@ export default ${modelName.camel}QueryOptions;
39
39
  return `${prismaImport}${imports};
40
40
 
41
41
  const ${modelName.camel}QueryOptions${typeAnnotation} = {
42
- // for all queries
43
- queryOptions: {},
44
- findOne: {},
45
- findMany: {},
46
- deleteMany: {},
47
- updateMany: {},
48
- createMany: {},
49
- createOne: {},
50
- updateOne: {},
51
- deleteOne: {},
42
+ global: {},
43
+ find: {},
44
+ findOne: {},
45
+ findMany: {},
46
+ udpate: {},
47
+ updateMany: {},
48
+ updateOne: {},
49
+ create: {},
50
+ createMany: {},
51
+ createOne: {},
52
+ save: {},
53
+ saveMany: {},
54
+ saveOne: {},
55
+ delete: {},
56
+ deleteMany: {},
57
+ deleteOne: {},
52
58
  }
53
59
 
54
60
  export default ${modelName.camel}QueryOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"generate-prisma-query-options.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/generate-prisma-query-options.ts"],"names":[],"mappings":";;AAGA,oEA6DC;AAhED,+DAAsE;AAGtE,SAAgB,4BAA4B,CAAC,OAAwB;IACnE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC9B,MAAM,MAAM,GAAG,SAAS,EAAE,KAAK,KAAK,MAAM,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAA,iCAAoB,GAAE,CAAC;IACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;IAElC,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAGtE,MAAM,OAAO,GAAG,MAAM;QACpB,CAAC,CAAC,uDAAuD;QACzD,CAAC,CAAC,mDAAmD,CAAC;IAGxD,MAAM,cAAc,GAAG,YAAY;QACjC,CAAC,CAAC,MAAM;YACN,CAAC,CAAC,0CAA0C,SAAS,CAAC,KAAK,GAAG;YAC9D,CAAC,CAAC,sCAAsC,SAAS,CAAC,KAAK,GAAG;QAC5D,CAAC,CAAC,EAAE,CAAC;IAGP,MAAM,YAAY,GAAG,YAAY;QAC/B,CAAC,CAAC,gDAAgD;QAClD,CAAC,CAAC,EAAE,CAAC;IAEP,IAAI,MAAM,EAAE,CAAC;QAEX,OAAO,GAAG,YAAY,GAAG,OAAO;;QAE5B,SAAS,CAAC,KAAK,eAAe,cAAc;;;;;;;;;iBASnC,SAAS,CAAC,KAAK;CAC/B,CAAC;IACA,CAAC;SAAM,CAAC;QAEN,OAAO,GAAG,YAAY,GAAG,OAAO;;QAE5B,SAAS,CAAC,KAAK,eAAe,cAAc;;;;;;;;;;;;;iBAanC,SAAS,CAAC,KAAK;CAC/B,CAAC;IACA,CAAC;AACH,CAAC","sourcesContent":["import { getUserFileExtension } from \"../../../../helpers/fs.helpers\";\nimport { TemplateOptions } from \"../../template-generators\";\n\nexport function generateQueryOptionsTemplate(options: TemplateOptions): string {\n const { modelName } = options;\n const isAuth = modelName?.camel === \"auth\";\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n\n if (!modelName)\n throw new Error(\"Model name is required for query config template\");\n\n // Generate imports\n const imports = isAuth\n ? `import { AuthPrismaQueryOptions } from 'arkos/prisma'`\n : `import { PrismaQueryOptions } from 'arkos/prisma'`;\n\n // Generate type annotation for TypeScript\n const typeAnnotation = isTypeScript\n ? isAuth\n ? `: AuthPrismaQueryOptions<typeof prisma.${modelName.camel}>`\n : `: PrismaQueryOptions<typeof prisma.${modelName.camel}>`\n : \"\";\n\n // Generate prisma import if TypeScript\n const prismaImport = isTypeScript\n ? `import { prisma } from \"../../utils/prisma\";\\n`\n : \"\";\n\n if (isAuth) {\n // Auth template\n return `${prismaImport}${imports};\n\nconst ${modelName.camel}QueryOptions${typeAnnotation} = {\n getMe: {},\n updateMe: {},\n deleteMe: {},\n login: {},\n signup: {},\n updatePassword: {},\n}\n\nexport default ${modelName.camel}QueryOptions;\n`;\n } else {\n // Regular template\n return `${prismaImport}${imports};\n\nconst ${modelName.camel}QueryOptions${typeAnnotation} = {\n // for all queries\n queryOptions: {},\n findOne: {},\n findMany: {},\n deleteMany: {},\n updateMany: {},\n createMany: {},\n createOne: {},\n updateOne: {},\n deleteOne: {},\n}\n\nexport default ${modelName.camel}QueryOptions;\n`;\n }\n}\n"]}
1
+ {"version":3,"file":"generate-prisma-query-options.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/generate-prisma-query-options.ts"],"names":[],"mappings":";;AAGA,oEAmEC;AAtED,+DAAsE;AAGtE,SAAgB,4BAA4B,CAAC,OAAwB;IACnE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC9B,MAAM,MAAM,GAAG,SAAS,EAAE,KAAK,KAAK,MAAM,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAA,iCAAoB,GAAE,CAAC;IACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;IAElC,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAGtE,MAAM,OAAO,GAAG,MAAM;QACpB,CAAC,CAAC,uDAAuD;QACzD,CAAC,CAAC,mDAAmD,CAAC;IAGxD,MAAM,cAAc,GAAG,YAAY;QACjC,CAAC,CAAC,MAAM;YACN,CAAC,CAAC,0CAA0C,SAAS,CAAC,KAAK,GAAG;YAC9D,CAAC,CAAC,sCAAsC,SAAS,CAAC,KAAK,GAAG;QAC5D,CAAC,CAAC,EAAE,CAAC;IAGP,MAAM,YAAY,GAAG,YAAY;QAC/B,CAAC,CAAC,gDAAgD;QAClD,CAAC,CAAC,EAAE,CAAC;IAEP,IAAI,MAAM,EAAE,CAAC;QAEX,OAAO,GAAG,YAAY,GAAG,OAAO;;QAE5B,SAAS,CAAC,KAAK,eAAe,cAAc;;;;;;;;;iBASnC,SAAS,CAAC,KAAK;CAC/B,CAAC;IACA,CAAC;SAAM,CAAC;QAEN,OAAO,GAAG,YAAY,GAAG,OAAO;;QAE5B,SAAS,CAAC,KAAK,eAAe,cAAc;;;;;;;;;;;;;;;;;;;iBAmBnC,SAAS,CAAC,KAAK;CAC/B,CAAC;IACA,CAAC;AACH,CAAC","sourcesContent":["import { getUserFileExtension } from \"../../../../helpers/fs.helpers\";\nimport { TemplateOptions } from \"../../template-generators\";\n\nexport function generateQueryOptionsTemplate(options: TemplateOptions): string {\n const { modelName } = options;\n const isAuth = modelName?.camel === \"auth\";\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n\n if (!modelName)\n throw new Error(\"Model name is required for query config template\");\n\n // Generate imports\n const imports = isAuth\n ? `import { AuthPrismaQueryOptions } from 'arkos/prisma'`\n : `import { PrismaQueryOptions } from 'arkos/prisma'`;\n\n // Generate type annotation for TypeScript\n const typeAnnotation = isTypeScript\n ? isAuth\n ? `: AuthPrismaQueryOptions<typeof prisma.${modelName.camel}>`\n : `: PrismaQueryOptions<typeof prisma.${modelName.camel}>`\n : \"\";\n\n // Generate prisma import if TypeScript\n const prismaImport = isTypeScript\n ? `import { prisma } from \"../../utils/prisma\";\\n`\n : \"\";\n\n if (isAuth) {\n // Auth template\n return `${prismaImport}${imports};\n\nconst ${modelName.camel}QueryOptions${typeAnnotation} = {\n getMe: {},\n updateMe: {},\n deleteMe: {},\n login: {},\n signup: {},\n updatePassword: {},\n}\n\nexport default ${modelName.camel}QueryOptions;\n`;\n } else {\n // Regular template\n return `${prismaImport}${imports};\n\nconst ${modelName.camel}QueryOptions${typeAnnotation} = {\n global: {},\n find: {},\n findOne: {},\n findMany: {},\n udpate: {},\n updateMany: {},\n updateOne: {},\n create: {},\n createMany: {},\n createOne: {},\n save: {},\n saveMany: {},\n saveOne: {},\n delete: {},\n deleteMany: {},\n deleteOne: {},\n}\n\nexport default ${modelName.camel}QueryOptions;\n`;\n }\n}\n"]}
@@ -12,6 +12,8 @@ function generateRouterTemplate(options) {
12
12
  throw new Error("Model name is required for router template");
13
13
  const ext = (0, fs_helpers_1.getUserFileExtension)();
14
14
  const controllerPath = imports?.controller || `./${modelName.kebab}.controller.${ext}`;
15
+ const routerConfigTsType = ext === "ts" ? ": RouterConfig" : "";
16
+ const routerConfigTsTypeImport = ext === "ts" ? "import { RouterConfig } from 'arkos'" : "";
15
17
  const controllerExists = (0, fs_helpers_1.checkFileExists)(controllerPath);
16
18
  const controllerImportLine = controllerExists
17
19
  ? `import ${modelName.camel}Controller from "${imports?.controller || `./${modelName.kebab}.controller`}"`
@@ -22,6 +24,9 @@ function generateRouterTemplate(options) {
22
24
  return `import { Router } from 'express'
23
25
  import { authService } from 'arkos/services'
24
26
  ${controllerImportLine}
27
+ ${routerConfigTsTypeImport}
28
+
29
+ export const config${routerConfigTsType} = { }
25
30
 
26
31
  const ${modelName.camel}Router = Router()
27
32
 
@@ -1 +1 @@
1
- {"version":3,"file":"generate-router-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/generate-router-template.ts"],"names":[],"mappings":";;;;;AAOA,wDAyCC;AAhDD,0DAAkC;AAClC,+DAGwC;AAGxC,SAAgB,sBAAsB,CAAC,OAAwB;IAC7D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAEvC,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAG9E,MAAM,GAAG,GAAG,IAAA,iCAAoB,GAAE,CAAC;IACnC,MAAM,cAAc,GAClB,OAAO,EAAE,UAAU,IAAI,KAAK,SAAS,CAAC,KAAK,eAAe,GAAG,EAAE,CAAC;IAElE,MAAM,gBAAgB,GAAG,IAAA,4BAAe,EAAC,cAAc,CAAC,CAAC;IAEzD,MAAM,oBAAoB,GAAG,gBAAgB;QAC3C,CAAC,CAAC,UAAU,SAAS,CAAC,KAAK,oBACvB,OAAO,EAAE,UAAU,IAAI,KAAK,SAAS,CAAC,KAAK,aAC7C,GAAG;QACL,CAAC,CAAC,aAAa,SAAS,CAAC,KAAK,oBAC1B,OAAO,EAAE,UAAU,IAAI,KAAK,SAAS,CAAC,KAAK,aAC7C,GAAG,CAAC;IAER,MAAM,qBAAqB,GAAG,gBAAgB;QAC5C,CAAC,CAAC,KAAK,SAAS,CAAC,KAAK,wBAAwB;QAC9C,CAAC,CAAC,QAAQ,SAAS,CAAC,KAAK,wBAAwB,CAAC;IAEpD,OAAO;;EAEP,oBAAoB;;QAEd,SAAS,CAAC,KAAK;;EAErB,SAAS,CAAC,KAAK;4CAC2B,IAAA,mBAAS,EACjD,SAAS,CAAC,KAAK,CAChB;;qDAEkD,SAAS,CAAC,KAAK;EAClE,qBAAqB;;;iBAGN,SAAS,CAAC,KAAK;CAC/B,CAAC;AACF,CAAC","sourcesContent":["import pluralize from \"pluralize\";\nimport {\n checkFileExists,\n getUserFileExtension,\n} from \"../../../../helpers/fs.helpers\";\nimport { TemplateOptions } from \"../../template-generators\";\n\nexport function generateRouterTemplate(options: TemplateOptions): string {\n const { modelName, imports } = options;\n\n if (!modelName) throw new Error(\"Model name is required for router template\");\n\n // Check if controller file exists\n const ext = getUserFileExtension();\n const controllerPath =\n imports?.controller || `./${modelName.kebab}.controller.${ext}`;\n\n const controllerExists = checkFileExists(controllerPath);\n\n const controllerImportLine = controllerExists\n ? `import ${modelName.camel}Controller from \"${\n imports?.controller || `./${modelName.kebab}.controller`\n }\"`\n : `// import ${modelName.camel}Controller from \"${\n imports?.controller || `./${modelName.kebab}.controller`\n }\"`;\n\n const controllerHandlerLine = controllerExists\n ? ` ${modelName.camel}Controller.someHandler`\n : ` // ${modelName.camel}Controller.someHandler`;\n\n return `import { Router } from 'express'\nimport { authService } from 'arkos/services'\n${controllerImportLine}\n\nconst ${modelName.camel}Router = Router()\n\n${modelName.camel}Router.post(\n '/custom-endpoint', // resolves to /api/${pluralize(\n modelName.kebab\n )}/custom-endpoint\n authService.authenticate,\n authService.handleAccessControl('CustomAction', '${modelName.kebab}'),\n${controllerHandlerLine}\n)\n\nexport default ${modelName.camel}Router\n`;\n}\n"]}
1
+ {"version":3,"file":"generate-router-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/generate-router-template.ts"],"names":[],"mappings":";;;;;AAOA,wDAgDC;AAvDD,0DAAkC;AAClC,+DAGwC;AAGxC,SAAgB,sBAAsB,CAAC,OAAwB;IAC7D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAEvC,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAG9E,MAAM,GAAG,GAAG,IAAA,iCAAoB,GAAE,CAAC;IACnC,MAAM,cAAc,GAClB,OAAO,EAAE,UAAU,IAAI,KAAK,SAAS,CAAC,KAAK,eAAe,GAAG,EAAE,CAAC;IAElE,MAAM,kBAAkB,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,wBAAwB,GAC5B,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7D,MAAM,gBAAgB,GAAG,IAAA,4BAAe,EAAC,cAAc,CAAC,CAAC;IAEzD,MAAM,oBAAoB,GAAG,gBAAgB;QAC3C,CAAC,CAAC,UAAU,SAAS,CAAC,KAAK,oBACvB,OAAO,EAAE,UAAU,IAAI,KAAK,SAAS,CAAC,KAAK,aAC7C,GAAG;QACL,CAAC,CAAC,aAAa,SAAS,CAAC,KAAK,oBAC1B,OAAO,EAAE,UAAU,IAAI,KAAK,SAAS,CAAC,KAAK,aAC7C,GAAG,CAAC;IAER,MAAM,qBAAqB,GAAG,gBAAgB;QAC5C,CAAC,CAAC,KAAK,SAAS,CAAC,KAAK,wBAAwB;QAC9C,CAAC,CAAC,QAAQ,SAAS,CAAC,KAAK,wBAAwB,CAAC;IAEpD,OAAO;;EAEP,oBAAoB;EACpB,wBAAwB;;qBAEL,kBAAkB;;QAE/B,SAAS,CAAC,KAAK;;EAErB,SAAS,CAAC,KAAK;4CAC2B,IAAA,mBAAS,EACjD,SAAS,CAAC,KAAK,CAChB;;qDAEkD,SAAS,CAAC,KAAK;EAClE,qBAAqB;;;iBAGN,SAAS,CAAC,KAAK;CAC/B,CAAC;AACF,CAAC","sourcesContent":["import pluralize from \"pluralize\";\nimport {\n checkFileExists,\n getUserFileExtension,\n} from \"../../../../helpers/fs.helpers\";\nimport { TemplateOptions } from \"../../template-generators\";\n\nexport function generateRouterTemplate(options: TemplateOptions): string {\n const { modelName, imports } = options;\n\n if (!modelName) throw new Error(\"Model name is required for router template\");\n\n // Check if controller file exists\n const ext = getUserFileExtension();\n const controllerPath =\n imports?.controller || `./${modelName.kebab}.controller.${ext}`;\n\n const routerConfigTsType = ext === \"ts\" ? \": RouterConfig\" : \"\";\n const routerConfigTsTypeImport =\n ext === \"ts\" ? \"import { RouterConfig } from 'arkos'\" : \"\";\n\n const controllerExists = checkFileExists(controllerPath);\n\n const controllerImportLine = controllerExists\n ? `import ${modelName.camel}Controller from \"${\n imports?.controller || `./${modelName.kebab}.controller`\n }\"`\n : `// import ${modelName.camel}Controller from \"${\n imports?.controller || `./${modelName.kebab}.controller`\n }\"`;\n\n const controllerHandlerLine = controllerExists\n ? ` ${modelName.camel}Controller.someHandler`\n : ` // ${modelName.camel}Controller.someHandler`;\n\n return `import { Router } from 'express'\nimport { authService } from 'arkos/services'\n${controllerImportLine}\n${routerConfigTsTypeImport}\n\nexport const config${routerConfigTsType} = { }\n\nconst ${modelName.camel}Router = Router()\n\n${modelName.camel}Router.post(\n '/custom-endpoint', // resolves to /api/${pluralize(\n modelName.kebab\n )}/custom-endpoint\n authService.authenticate,\n authService.handleAccessControl('CustomAction', '${modelName.kebab}'),\n${controllerHandlerLine}\n)\n\nexport default ${modelName.camel}Router\n`;\n}\n"]}
@@ -9,7 +9,7 @@ function generateServiceTemplate(options) {
9
9
  if (!modelName)
10
10
  throw new Error("Model name is required for service template");
11
11
  const prismaImport = isTypeScript
12
- ? `import { prisma } from "../../utils/prisma";\n`
12
+ ? `import prisma from "../../utils/prisma";\n`
13
13
  : "";
14
14
  const baseServiceImport = isTypeScript
15
15
  ? `import { BaseService } from "${imports?.baseService || "arkos/services"}";`
@@ -1 +1 @@
1
- {"version":3,"file":"generate-service-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/generate-service-template.ts"],"names":[],"mappings":";;AAGA,0DAwCC;AA3CD,+DAAsE;AAGtE,SAAgB,uBAAuB,CAAC,OAAwB;IAC9D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACvC,MAAM,GAAG,GAAG,IAAA,iCAAoB,GAAE,CAAC;IACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;IAElC,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAGjE,MAAM,YAAY,GAAG,YAAY;QAC/B,CAAC,CAAC,gDAAgD;QAClD,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,iBAAiB,GAAG,YAAY;QACpC,CAAC,CAAC,gCACE,OAAO,EAAE,WAAW,IAAI,gBAC1B,IAAI;QACN,CAAC,CAAC,gCACE,OAAO,EAAE,WAAW,IAAI,gBAC1B,IAAI,CAAC;IAGT,MAAM,aAAa,GAAG,YAAY;QAChC,CAAC,CAAC,kBAAkB,SAAS,CAAC,KAAK,GAAG;QACtC,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,GAAG,YAAY,GAAG,iBAAiB;;QAEpC,SAAS,CAAC,MAAM,8BAA8B,aAAa;;aAEtD,SAAS,CAAC,KAAK;;;;;;QAMpB,SAAS,CAAC,KAAK,iBAAiB,SAAS,CAAC,MAAM;;iBAEvC,SAAS,CAAC,KAAK;CAC/B,CAAC;AACF,CAAC","sourcesContent":["import { getUserFileExtension } from \"../../../../helpers/fs.helpers\";\nimport { TemplateOptions } from \"../../template-generators\";\n\nexport function generateServiceTemplate(options: TemplateOptions): string {\n const { modelName, imports } = options;\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n\n if (!modelName)\n throw new Error(\"Model name is required for service template\");\n\n // Generate imports\n const prismaImport = isTypeScript\n ? `import { prisma } from \"../../utils/prisma\";\\n`\n : \"\";\n\n const baseServiceImport = isTypeScript\n ? `import { BaseService } from \"${\n imports?.baseService || \"arkos/services\"\n }\";`\n : `import { BaseService } from \"${\n imports?.baseService || \"arkos/services\"\n }\";`;\n\n // Generate type parameter for TypeScript\n const typeParameter = isTypeScript\n ? `<typeof prisma.${modelName.camel}>`\n : \"\";\n\n return `${prismaImport}${baseServiceImport}\n \nclass ${modelName.pascal}Service extends BaseService${typeParameter} {\n constructor() {\n super(\"${modelName.kebab}\");\n }\n\n // Add your custom service methods here\n}\n\nconst ${modelName.camel}Service = new ${modelName.pascal}Service();\n\nexport default ${modelName.camel}Service;\n`;\n}\n"]}
1
+ {"version":3,"file":"generate-service-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/generate-service-template.ts"],"names":[],"mappings":";;AAGA,0DAwCC;AA3CD,+DAAsE;AAGtE,SAAgB,uBAAuB,CAAC,OAAwB;IAC9D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACvC,MAAM,GAAG,GAAG,IAAA,iCAAoB,GAAE,CAAC;IACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;IAElC,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAGjE,MAAM,YAAY,GAAG,YAAY;QAC/B,CAAC,CAAC,4CAA4C;QAC9C,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,iBAAiB,GAAG,YAAY;QACpC,CAAC,CAAC,gCACE,OAAO,EAAE,WAAW,IAAI,gBAC1B,IAAI;QACN,CAAC,CAAC,gCACE,OAAO,EAAE,WAAW,IAAI,gBAC1B,IAAI,CAAC;IAGT,MAAM,aAAa,GAAG,YAAY;QAChC,CAAC,CAAC,kBAAkB,SAAS,CAAC,KAAK,GAAG;QACtC,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,GAAG,YAAY,GAAG,iBAAiB;;QAEpC,SAAS,CAAC,MAAM,8BAA8B,aAAa;;aAEtD,SAAS,CAAC,KAAK;;;;;;QAMpB,SAAS,CAAC,KAAK,iBAAiB,SAAS,CAAC,MAAM;;iBAEvC,SAAS,CAAC,KAAK;CAC/B,CAAC;AACF,CAAC","sourcesContent":["import { getUserFileExtension } from \"../../../../helpers/fs.helpers\";\nimport { TemplateOptions } from \"../../template-generators\";\n\nexport function generateServiceTemplate(options: TemplateOptions): string {\n const { modelName, imports } = options;\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n\n if (!modelName)\n throw new Error(\"Model name is required for service template\");\n\n // Generate imports\n const prismaImport = isTypeScript\n ? `import prisma from \"../../utils/prisma\";\\n`\n : \"\";\n\n const baseServiceImport = isTypeScript\n ? `import { BaseService } from \"${\n imports?.baseService || \"arkos/services\"\n }\";`\n : `import { BaseService } from \"${\n imports?.baseService || \"arkos/services\"\n }\";`;\n\n // Generate type parameter for TypeScript\n const typeParameter = isTypeScript\n ? `<typeof prisma.${modelName.camel}>`\n : \"\";\n\n return `${prismaImport}${baseServiceImport}\n \nclass ${modelName.pascal}Service extends BaseService${typeParameter} {\n constructor() {\n super(\"${modelName.kebab}\");\n }\n\n // Add your custom service methods here\n}\n\nconst ${modelName.camel}Service = new ${modelName.pascal}Service();\n\nexport default ${modelName.camel}Service;\n`;\n}\n"]}
@@ -11,8 +11,10 @@ const prisma_helpers_1 = require("../helpers/prisma.helpers");
11
11
  class APIFeatures {
12
12
  constructor(req, modelName) {
13
13
  this.filters = {};
14
+ this.reqFiltersSearchParam = {};
14
15
  this.excludedFields = [
15
16
  "page",
17
+ "filters",
16
18
  "sort",
17
19
  "limit",
18
20
  "fields",
@@ -26,16 +28,20 @@ class APIFeatures {
26
28
  "ignoredFields",
27
29
  ];
28
30
  if (req) {
31
+ const { filters = "{}", ...restOfQuery } = req.query;
29
32
  this.req = req;
30
- this.searchParams = (0, api_features_helpers_1.parseQueryParamsWithModifiers)(req.query);
33
+ this.searchParams = (0, deepmerge_helper_1.default)((0, api_features_helpers_1.parseQueryParamsWithModifiers)(restOfQuery), JSON.parse(filters));
31
34
  }
32
35
  if (modelName)
33
36
  this.modelName = modelName;
34
37
  this.filters = { ...this.filters };
35
38
  }
36
39
  setup(req, modelName) {
37
- this.req = req;
38
- this.searchParams = (0, api_features_helpers_1.parseQueryParamsWithModifiers)(req.query);
40
+ if (req) {
41
+ const { filters = "{}", ...restOfQuery } = req.query;
42
+ this.req = req;
43
+ this.searchParams = (0, deepmerge_helper_1.default)((0, api_features_helpers_1.parseQueryParamsWithModifiers)(restOfQuery), JSON.parse(filters));
44
+ }
39
45
  if (modelName)
40
46
  this.modelName = modelName;
41
47
  this.filters = { ...this.filters };
@@ -1 +1 @@
1
- {"version":3,"file":"api.features.js","sourceRoot":"","sources":["../../../../src/utils/features/api.features.ts"],"names":[],"mappings":"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","sourcesContent":["import { Request } from \"express\";\nimport deepmerge from \"../helpers/deepmerge.helper\";\nimport { parseQueryParamsWithModifiers } from \"../helpers/api.features.helpers\";\nimport AppError from \"../../modules/error-handler/utils/app-error\";\nimport { getPrismaInstance } from \"../helpers/prisma.helpers\";\nimport { ArkosRequest } from \"../../types\";\n\ntype ModelName = string;\n\nexport default class APIFeatures {\n req?: ArkosRequest;\n searchParams: any; // The query string parameters from the request\n searchParamsWithModifiers: any; // The query string parameters from the request\n filters: any = {};\n modelName?: ModelName;\n excludedFields = [\n \"page\",\n \"sort\",\n \"limit\",\n \"fields\",\n \"addFields\",\n \"removeFields\",\n \"search\",\n \"include\",\n \"filterMode\",\n \"where\",\n \"prismaQueryOptions\",\n \"ignoredFields\",\n ];\n\n constructor(req?: Request, modelName?: ModelName) {\n if (req) {\n this.req = req;\n this.searchParams = parseQueryParamsWithModifiers(req.query);\n }\n if (modelName) this.modelName = modelName;\n this.filters = { ...this.filters };\n }\n\n setup(req: Request, modelName?: ModelName) {\n this.req = req;\n this.searchParams = parseQueryParamsWithModifiers(req.query);\n if (modelName) this.modelName = modelName;\n this.filters = { ...this.filters };\n\n return this;\n }\n\n filter() {\n if (!this.req)\n throw new Error(\n \"Trying to use APIFeatures.filter() without passing request on class constructor or APIFeatures.setup() method. read more about at www.arkosjs.com/docs/advanced-guide/api-features-class\"\n );\n const searchableFields: Record<string, any>[] = [];\n\n const queryObj = { ...this.searchParams };\n\n this.excludedFields.forEach((el) => delete queryObj[el]);\n\n const whereObj = { ...this.req.params, ...queryObj };\n const whereLogicalOperatorFilters = Object.keys(whereObj).map((key) => ({\n [key]: whereObj[key],\n }));\n\n let whereOptions =\n whereLogicalOperatorFilters.length > 0\n ? {\n [(this.req.query?.filterMode as string) ?? \"OR\"]:\n whereLogicalOperatorFilters,\n }\n : {};\n\n if (!!this.searchParams.search) {\n const prisma = getPrismaInstance();\n\n if (this.modelName)\n Object.keys((prisma as any)[this.modelName].fields).forEach((key) => {\n const field = ((prisma as any)[this.modelName!].fields as any)[key];\n if (\n field.typeName === \"String\" &&\n key !== \"id\" &&\n key !== \"password\" &&\n !field.isList &&\n !key?.includes?.(\"Id\") &&\n !key?.includes?.(\"ID\")\n ) {\n searchableFields.push({\n [`${key}`]: {\n contains: this.searchParams.search,\n mode: \"insensitive\",\n },\n });\n }\n });\n\n whereOptions = deepmerge(\n {\n OR: searchableFields,\n },\n whereOptions\n );\n }\n\n const firstMerge = deepmerge(\n {\n where: whereOptions,\n },\n this.req.prismaQueryOptions || {}\n );\n\n this.filters = deepmerge(firstMerge, this.filters);\n return this;\n }\n\n search() {\n if (this.searchParams?.search) {\n this.filters = deepmerge(this.filters, {\n where: {\n OR: [],\n },\n });\n }\n }\n\n sort() {\n if (this.searchParams.sort) {\n const sortBy = this.searchParams?.sort\n ?.split(\",\")\n ?.map((field: string) => ({\n [field.startsWith(\"-\") ? field.substring(1) : field]:\n field.startsWith(\"-\") ? \"desc\" : \"asc\",\n }));\n this.filters = deepmerge(this.filters, { orderBy: sortBy });\n }\n\n return this;\n }\n\n limitFields() {\n if (this.searchParams?.fields) {\n const fields = this.searchParams.fields.split(\",\");\n\n // Separate fields into includes, excludes, and regular fields\n const regularFields = fields.filter(\n (field: string) => !field.startsWith(\"+\") && !field.startsWith(\"-\")\n );\n const includeFields = fields\n .filter((field: string) => field.startsWith(\"+\"))\n .map((field: string) => field.substring(1));\n const excludeFields = fields\n .filter((field: string) => field.startsWith(\"-\"))\n .map((field: string) => field.substring(1));\n\n // Create selection object based on field type\n let selection: Record<string, any> = {};\n\n // If regular fields exist, use them as the base selection\n if (regularFields.length > 0) {\n selection = regularFields.reduce(\n (acc: Record<string, any>, field: string) => {\n acc[field] = true;\n return acc;\n },\n {} as Record<string, any>\n );\n }\n // Otherwise, use include fields as additions to any existing included fields\n else {\n // Start with current include fields if they exist\n selection = this.filters.include || {};\n\n // Add any explicitly included fields\n includeFields.forEach((field: string) => {\n selection[field] = true;\n });\n\n // Add any explicitly excluded fields\n excludeFields.forEach((field: string) => {\n selection[field] = false;\n });\n }\n\n // Apply the selection to filters\n this.filters = {\n ...this.filters,\n select: selection,\n };\n\n // Remove the include filter as it's now part of select\n if (this.filters.include) {\n delete this.filters.include;\n }\n }\n\n // Remove any references to the now-unused parameters\n if (this.searchParams?.addFields || this.searchParams?.removeFields) {\n throw new AppError(\n \"The addFields and removeFields parameters are deprecated. Please use fields with + and - prefixes instead.\",\n 400\n );\n }\n\n return this;\n }\n\n paginate() {\n const page = parseInt(this.searchParams.page, 10) || 1;\n const limit = parseInt(this.searchParams.limit, 10) || 30;\n const skip = (page - 1) * limit;\n\n this.filters = {\n ...this.filters,\n skip,\n take: limit,\n };\n return this;\n }\n}\n\nexport const apiFeatures = new APIFeatures();\n"]}
1
+ {"version":3,"file":"api.features.js","sourceRoot":"","sources":["../../../../src/utils/features/api.features.ts"],"names":[],"mappings":"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","sourcesContent":["import { Request } from \"express\";\nimport deepmerge from \"../helpers/deepmerge.helper\";\nimport { parseQueryParamsWithModifiers } from \"../helpers/api.features.helpers\";\nimport AppError from \"../../modules/error-handler/utils/app-error\";\nimport { getPrismaInstance } from \"../helpers/prisma.helpers\";\nimport { ArkosRequest } from \"../../types\";\n\ntype ModelName = string;\n\nexport default class APIFeatures {\n req?: ArkosRequest;\n searchParams: any; // The query string parameters from the request\n searchParamsWithModifiers: any; // The query string parameters from the request\n filters: any = {};\n reqFiltersSearchParam: any = {};\n modelName?: ModelName;\n excludedFields = [\n \"page\",\n \"filters\",\n \"sort\",\n \"limit\",\n \"fields\",\n \"addFields\",\n \"removeFields\",\n \"search\",\n \"include\",\n \"filterMode\",\n \"where\",\n \"prismaQueryOptions\",\n \"ignoredFields\",\n ];\n\n constructor(req?: Request, modelName?: ModelName) {\n if (req) {\n const { filters = \"{}\", ...restOfQuery } = req.query;\n this.req = req;\n this.searchParams = deepmerge(\n parseQueryParamsWithModifiers(restOfQuery),\n JSON.parse(filters as string)\n );\n }\n if (modelName) this.modelName = modelName;\n this.filters = { ...this.filters };\n }\n\n setup(req: Request, modelName?: ModelName) {\n if (req) {\n const { filters = \"{}\", ...restOfQuery } = req.query;\n this.req = req;\n this.searchParams = deepmerge(\n parseQueryParamsWithModifiers(restOfQuery),\n JSON.parse(filters as string)\n );\n }\n if (modelName) this.modelName = modelName;\n this.filters = { ...this.filters };\n\n return this;\n }\n\n filter() {\n if (!this.req)\n throw new Error(\n \"Trying to use APIFeatures.filter() without passing request on class constructor or APIFeatures.setup() method. read more about at www.arkosjs.com/docs/advanced-guide/api-features-class\"\n );\n const searchableFields: Record<string, any>[] = [];\n\n const queryObj = { ...this.searchParams };\n\n this.excludedFields.forEach((el) => delete queryObj[el]);\n\n const whereObj = { ...this.req.params, ...queryObj };\n const whereLogicalOperatorFilters = Object.keys(whereObj).map((key) => ({\n [key]: whereObj[key],\n }));\n\n let whereOptions =\n whereLogicalOperatorFilters.length > 0\n ? {\n [(this.req.query?.filterMode as string) ?? \"OR\"]:\n whereLogicalOperatorFilters,\n }\n : {};\n\n if (!!this.searchParams.search) {\n const prisma = getPrismaInstance();\n\n if (this.modelName)\n Object.keys((prisma as any)[this.modelName].fields).forEach((key) => {\n const field = ((prisma as any)[this.modelName!].fields as any)[key];\n if (\n field.typeName === \"String\" &&\n key !== \"id\" &&\n key !== \"password\" &&\n !field.isList &&\n !key?.includes?.(\"Id\") &&\n !key?.includes?.(\"ID\")\n ) {\n searchableFields.push({\n [`${key}`]: {\n contains: this.searchParams.search,\n mode: \"insensitive\",\n },\n });\n }\n });\n\n whereOptions = deepmerge(\n {\n OR: searchableFields,\n },\n whereOptions\n );\n }\n\n const firstMerge = deepmerge(\n {\n where: whereOptions,\n },\n this.req.prismaQueryOptions || {}\n );\n\n this.filters = deepmerge(firstMerge, this.filters);\n return this;\n }\n\n search() {\n if (this.searchParams?.search) {\n this.filters = deepmerge(this.filters, {\n where: {\n OR: [],\n },\n });\n }\n }\n\n sort() {\n if (this.searchParams.sort) {\n const sortBy = this.searchParams?.sort\n ?.split(\",\")\n ?.map((field: string) => ({\n [field.startsWith(\"-\") ? field.substring(1) : field]:\n field.startsWith(\"-\") ? \"desc\" : \"asc\",\n }));\n this.filters = deepmerge(this.filters, { orderBy: sortBy });\n }\n\n return this;\n }\n\n limitFields() {\n if (this.searchParams?.fields) {\n const fields = this.searchParams.fields.split(\",\");\n\n // Separate fields into includes, excludes, and regular fields\n const regularFields = fields.filter(\n (field: string) => !field.startsWith(\"+\") && !field.startsWith(\"-\")\n );\n const includeFields = fields\n .filter((field: string) => field.startsWith(\"+\"))\n .map((field: string) => field.substring(1));\n const excludeFields = fields\n .filter((field: string) => field.startsWith(\"-\"))\n .map((field: string) => field.substring(1));\n\n // Create selection object based on field type\n let selection: Record<string, any> = {};\n\n // If regular fields exist, use them as the base selection\n if (regularFields.length > 0) {\n selection = regularFields.reduce(\n (acc: Record<string, any>, field: string) => {\n acc[field] = true;\n return acc;\n },\n {} as Record<string, any>\n );\n }\n // Otherwise, use include fields as additions to any existing included fields\n else {\n // Start with current include fields if they exist\n selection = this.filters.include || {};\n\n // Add any explicitly included fields\n includeFields.forEach((field: string) => {\n selection[field] = true;\n });\n\n // Add any explicitly excluded fields\n excludeFields.forEach((field: string) => {\n selection[field] = false;\n });\n }\n\n // Apply the selection to filters\n this.filters = {\n ...this.filters,\n select: selection,\n };\n\n // Remove the include filter as it's now part of select\n if (this.filters.include) {\n delete this.filters.include;\n }\n }\n\n // Remove any references to the now-unused parameters\n if (this.searchParams?.addFields || this.searchParams?.removeFields) {\n throw new AppError(\n \"The addFields and removeFields parameters are deprecated. Please use fields with + and - prefixes instead.\",\n 400\n );\n }\n\n return this;\n }\n\n paginate() {\n const page = parseInt(this.searchParams.page, 10) || 1;\n const limit = parseInt(this.searchParams.limit, 10) || 30;\n const skip = (page - 1) * limit;\n\n this.filters = {\n ...this.filters,\n skip,\n take: limit,\n };\n return this;\n }\n}\n\nexport const apiFeatures = new APIFeatures();\n"]}
@@ -20,7 +20,8 @@ function fullCleanCwd(path) {
20
20
  if (typeof path !== "string")
21
21
  throw new Error("Path must be a string");
22
22
  const cwd = process.cwd().replace(/\/+$/, "");
23
- return path.replace(new RegExp(`${cwd}/?`, "g"), "");
23
+ const escapedCwd = cwd.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
24
+ return path.replace(new RegExp(`${escapedCwd}/?`, "g"), "");
24
25
  }
25
26
  const getUserFileExtension = () => {
26
27
  if (exports.userFileExtension)
@@ -28,13 +29,19 @@ const getUserFileExtension = () => {
28
29
  try {
29
30
  const currentDir = process.cwd();
30
31
  const hasTsConfig = fs_1.default.existsSync(path_1.default.join(currentDir, "tsconfig.json"));
32
+ const hasAppTs = fs_1.default.existsSync(path_1.default.join(currentDir, "src", "app.ts"));
33
+ const hasAppJs = fs_1.default.existsSync(path_1.default.join(currentDir, "src", "app.js"));
31
34
  const isBuildMode = process.env.ARKOS_BUILD === "true";
32
- if (hasTsConfig && !isBuildMode) {
35
+ if (isBuildMode)
36
+ exports.userFileExtension = "js";
37
+ else if (hasTsConfig)
38
+ exports.userFileExtension = "ts";
39
+ else if (hasAppTs && !hasAppJs)
33
40
  exports.userFileExtension = "ts";
34
- }
35
- else {
41
+ else if (hasAppJs)
42
+ exports.userFileExtension = "js";
43
+ else
36
44
  exports.userFileExtension = "js";
37
- }
38
45
  return exports.userFileExtension;
39
46
  }
40
47
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"fs.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/fs.helpers.ts"],"names":[],"mappings":";;;;;;AAoBA,oCAKC;AAkDD,0CAMC;AAjFD,+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;AASpB,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,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACvD,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,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 *\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 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.info('File exists!');\n * }\n * ```\n */\nexport function checkFileExists(filePath: string): boolean {\n try {\n return fs.existsSync(path.resolve(filePath));\n } catch (error) {\n return false;\n }\n}\n"]}
@@ -32,9 +32,58 @@ 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
+ exports.detectPackageManagerFromUserAgent = detectPackageManagerFromUserAgent;
43
+ const fs_1 = __importDefault(require("fs"));
44
+ const path_1 = __importDefault(require("path"));
45
+ const module_1 = require("module");
46
+ const url_1 = require("url");
47
+ function getPackageJson() {
48
+ try {
49
+ const pkgPath = path_1.default.join(process.cwd(), "package.json");
50
+ if (fs_1.default.existsSync(pkgPath)) {
51
+ return JSON.parse(fs_1.default.readFileSync(pkgPath, "utf8"));
52
+ }
53
+ }
54
+ catch (err) {
55
+ console.error("Error checking package.json:", err);
56
+ }
57
+ }
58
+ function isEsm() {
59
+ const pkg = getPackageJson();
60
+ return pkg?.type === "module";
61
+ }
62
+ async function importModule(modulePath, options = { fixExtension: true }) {
63
+ if (!options.fixExtension || modulePath.endsWith(".ts") || !isEsm())
64
+ return await Promise.resolve(`${modulePath}`).then(s => __importStar(require(s)));
65
+ const userRequire = (0, module_1.createRequire)((0, url_1.pathToFileURL)(process.cwd() + "/package.json"));
66
+ const resolved = userRequire.resolve(modulePath);
67
+ return await Promise.resolve(`${(0, url_1.pathToFileURL)(resolved)}`).then(s => __importStar(require(s)));
68
+ }
69
+ function detectPackageManagerFromUserAgent() {
70
+ const userAgent = process.env.npm_config_user_agent || "";
71
+ if (!userAgent)
72
+ return "npm";
73
+ if (userAgent.includes("cnpm"))
74
+ return "cnpm";
75
+ if (userAgent.includes("pnpm"))
76
+ return "pnpm";
77
+ if (userAgent.includes("yarn"))
78
+ return "yarn";
79
+ if (userAgent.includes("npm"))
80
+ return "npm";
81
+ if (userAgent.includes("bun"))
82
+ return "bun";
83
+ if (userAgent.includes("corepack"))
84
+ return "corepack";
85
+ if (userAgent.includes("deno"))
86
+ return "deno";
87
+ return "npm";
39
88
  }
40
89
  //# 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,wCASC;AAED,sBAGC;AAED,oCAaC;AAQD,8EAaC;AAxDD,4CAAoB;AACpB,gDAAwB;AACxB,mCAAuC;AACvC,6BAAoC;AAGpC,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,EAAE,IAAI,KAAK,QAAQ,CAAC;AAChC,CAAC;AAEM,KAAK,UAAU,YAAY,CAChC,UAAkB,EAClB,UAAqC,EAAE,YAAY,EAAE,IAAI,EAAE;IAE3D,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;QACjE,OAAO,yBAAa,UAAU,uCAAC,CAAC;IAGlC,MAAM,WAAW,GAAG,IAAA,sBAAa,EAC/B,IAAA,mBAAa,EAAC,OAAO,CAAC,GAAG,EAAE,GAAG,eAAe,CAAC,CAC/C,CAAC;IACF,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACjD,OAAO,yBAAa,IAAA,mBAAa,EAAC,QAAQ,CAAQ,uCAAC,CAAC;AACtD,CAAC;AAQD,SAAgB,iCAAiC;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC;IAE1D,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7B,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IACtD,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAE9C,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport { createRequire } from \"module\";\nimport { pathToFileURL } from \"url\";\nimport { getUserFileExtension } from \"./fs.helpers\";\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 if (!options.fixExtension || modulePath.endsWith(\".ts\") || !isEsm())\n return await import(modulePath);\n\n // When importing user modules: mainly on ESM environment\n const userRequire = createRequire(\n pathToFileURL(process.cwd() + \"/package.json\")\n );\n const resolved = userRequire.resolve(modulePath);\n return await import(pathToFileURL(resolved) as any);\n}\n\n/**\n * Helps getting the current package manager from user agent\n *\n * @returns {string} the package manager\n * @default \"npm\"\n */\nexport function detectPackageManagerFromUserAgent(): string {\n const userAgent = process.env.npm_config_user_agent || \"\";\n\n if (!userAgent) return \"npm\";\n if (userAgent.includes(\"cnpm\")) return \"cnpm\";\n if (userAgent.includes(\"pnpm\")) return \"pnpm\";\n if (userAgent.includes(\"yarn\")) return \"yarn\";\n if (userAgent.includes(\"npm\")) return \"npm\";\n if (userAgent.includes(\"bun\")) return \"bun\";\n if (userAgent.includes(\"corepack\")) return \"corepack\";\n if (userAgent.includes(\"deno\")) return \"deno\";\n\n return \"npm\";\n}\n"]}
@@ -1,42 +1,10 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
36
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
4
  };
38
5
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.prismaModelsUniqueFields = exports.models = exports.prismaModelRelationFields = exports.prismaModelsModules = void 0;
6
+ exports.prismaModelsUniqueFields = exports.prismaSchemasContent = exports.models = exports.prismaModelRelationFields = void 0;
7
+ exports.setModelModules = setModelModules;
40
8
  exports.getModelModules = getModelModules;
41
9
  exports.getFileModelModulesFileStructure = getFileModelModulesFileStructure;
42
10
  exports.processSubdir = processSubdir;
@@ -46,6 +14,7 @@ exports.importPrismaModelModules = importPrismaModelModules;
46
14
  exports.getAllPrismaFiles = getAllPrismaFiles;
47
15
  exports.initializePrismaModels = initializePrismaModels;
48
16
  exports.getPrismaModelRelations = getPrismaModelRelations;
17
+ exports.getPrismaSchemasContent = getPrismaSchemasContent;
49
18
  exports.getModels = getModels;
50
19
  exports.getModelUniqueFields = getModelUniqueFields;
51
20
  const path_1 = __importDefault(require("path"));
@@ -54,9 +23,12 @@ const change_case_helpers_1 = require("../../utils/helpers/change-case.helpers")
54
23
  const fs_helpers_1 = require("./fs.helpers");
55
24
  const global_helpers_1 = require("./global.helpers");
56
25
  const cli_helpers_1 = require("../cli/utils/cli.helpers");
57
- exports.prismaModelsModules = {};
26
+ let prismaModelsModules = {};
27
+ function setModelModules(modelName, modules) {
28
+ prismaModelsModules[(0, change_case_helpers_1.kebabCase)(modelName)] = modules;
29
+ }
58
30
  function getModelModules(modelName) {
59
- return exports.prismaModelsModules[(0, change_case_helpers_1.kebabCase)(modelName)];
31
+ return prismaModelsModules[(0, change_case_helpers_1.kebabCase)(modelName)];
60
32
  }
61
33
  function getFileModelModulesFileStructure(modelName) {
62
34
  const kebabModelName = (0, change_case_helpers_1.kebabCase)(modelName).toLowerCase();
@@ -86,6 +58,8 @@ function getFileModelModulesFileStructure(modelName) {
86
58
  createMany: `create-many-${kebabModelName}.dto.${ext}`,
87
59
  update: `update-${kebabModelName}.dto.${ext}`,
88
60
  updateMany: `update-many-${kebabModelName}.dto.${ext}`,
61
+ findOne: `find-one-${kebabModelName}.dto.${ext}`,
62
+ findMany: `find-many-${kebabModelName}.dto.${ext}`,
89
63
  query: `query-${kebabModelName}.dto.${ext}`,
90
64
  },
91
65
  schemas: isAuthModule
@@ -101,14 +75,17 @@ function getFileModelModulesFileStructure(modelName) {
101
75
  createMany: `create-many-${kebabModelName}.schema.${ext}`,
102
76
  update: `update-${kebabModelName}.schema.${ext}`,
103
77
  updateMany: `update-many-${kebabModelName}.schema.${ext}`,
78
+ findOne: `find-one-${kebabModelName}.schema.${ext}`,
79
+ findMany: `find-many-${kebabModelName}.schema.${ext}`,
104
80
  query: `query-${kebabModelName}.schema.${ext}`,
105
81
  },
106
82
  };
107
83
  }
108
- async function processSubdir(modelName, type, result) {
84
+ async function processSubdir(modelName, type) {
109
85
  const moduleDir = path_1.default.resolve((0, fs_helpers_1.crd)(), "src", "modules", (0, change_case_helpers_1.kebabCase)(modelName));
110
86
  const subdir = path_1.default.join(moduleDir, type);
111
87
  const fileStructure = getFileModelModulesFileStructure(modelName);
88
+ const result = {};
112
89
  try {
113
90
  await fs_1.default.promises.access(subdir).catch(() => {
114
91
  return;
@@ -116,9 +93,9 @@ async function processSubdir(modelName, type, result) {
116
93
  await Promise.all(Object.entries(fileStructure[type]).map(async ([key, fileName]) => {
117
94
  const filePath = path_1.default.join(subdir, fileName);
118
95
  try {
119
- const module = await Promise.resolve(`${filePath}`).then(s => __importStar(require(s))).catch(() => null);
96
+ const module = await (0, global_helpers_1.importModule)(filePath).catch(() => null);
120
97
  if (module)
121
- result[type][key] = module.default;
98
+ result[key] = module.default;
122
99
  }
123
100
  catch (error) {
124
101
  console.error(error);
@@ -128,6 +105,7 @@ async function processSubdir(modelName, type, result) {
128
105
  catch (error) {
129
106
  console.error(error);
130
107
  }
108
+ return result;
131
109
  }
132
110
  function validateNamingConventions(key, fileName, result) {
133
111
  if (key === "prismaQueryOptions") {
@@ -169,7 +147,7 @@ function assignModuleToResult(key, module, result) {
169
147
  result[key] = module.default || module;
170
148
  }
171
149
  }
172
- async function importPrismaModelModules(modelName) {
150
+ async function importPrismaModelModules(modelName, arkosConfig) {
173
151
  const moduleDir = path_1.default.resolve((0, fs_helpers_1.crd)(), "src", "modules", (0, change_case_helpers_1.kebabCase)(modelName));
174
152
  const result = {
175
153
  dtos: {},
@@ -201,12 +179,22 @@ async function importPrismaModelModules(modelName) {
201
179
  (0, cli_helpers_1.killServerChildProcess)();
202
180
  }
203
181
  }));
204
- await Promise.all([
205
- processSubdir(modelName, "dtos", result),
206
- processSubdir(modelName, "schemas", result),
207
- ]);
208
- exports.prismaModelsModules[modelName] = result;
209
- return result;
182
+ const validationSubdir = arkosConfig.validation?.resolver
183
+ ? arkosConfig.validation.resolver === "zod"
184
+ ? "schemas"
185
+ : "dtos"
186
+ : null;
187
+ let validators = {};
188
+ if (validationSubdir)
189
+ validators = await processSubdir(modelName, validationSubdir);
190
+ prismaModelsModules[modelName] = {
191
+ ...result,
192
+ ...(validationSubdir && { [validationSubdir]: validators }),
193
+ };
194
+ return {
195
+ ...result,
196
+ ...(validationSubdir && { [validationSubdir]: validators }),
197
+ };
210
198
  }
211
199
  exports.prismaModelRelationFields = {};
212
200
  function getAllPrismaFiles(dirPath, fileList = []) {
@@ -241,11 +229,13 @@ function initializePrismaModels() {
241
229
  exports.models.push((0, change_case_helpers_1.camelCase)(modelName.trim()));
242
230
  return `model ${modelName} {`;
243
231
  });
232
+ const copiedContent = content;
233
+ exports.prismaSchemasContent = content;
244
234
  for (const model of exports.models) {
245
235
  const modelName = (0, change_case_helpers_1.pascalCase)(model);
246
- const modelStart = content.indexOf(`model ${modelName} {`);
247
- const modelEnd = content.indexOf("}", modelStart);
248
- const modelDefinition = content.slice(modelStart, modelEnd);
236
+ const modelStart = copiedContent.indexOf(`model ${modelName} {`);
237
+ const modelEnd = copiedContent.indexOf("}", modelStart);
238
+ const modelDefinition = copiedContent.slice(modelStart, modelEnd);
249
239
  const relations = {
250
240
  singular: [],
251
241
  list: [],
@@ -276,8 +266,8 @@ function initializePrismaModels() {
276
266
  if (trimmedLine?.includes?.("@relation") ||
277
267
  trimmedLine.match(/\s+\w+(\[\])?(\s+@|$)/) ||
278
268
  exports.models?.includes?.((0, change_case_helpers_1.camelCase)(cleanType || ""))) {
279
- const enumStart = content.indexOf(`enum ${cleanType} {`);
280
- const typeStart = content.indexOf(`type ${cleanType} {`);
269
+ const enumStart = copiedContent.indexOf(`enum ${cleanType} {`);
270
+ const typeStart = copiedContent.indexOf(`type ${cleanType} {`);
281
271
  if (!cleanType ||
282
272
  enumStart >= 0 ||
283
273
  typeStart >= 0 ||
@@ -309,7 +299,6 @@ function initializePrismaModels() {
309
299
  }
310
300
  }
311
301
  }
312
- initializePrismaModels();
313
302
  function getPrismaModelRelations(modelName) {
314
303
  modelName = (0, change_case_helpers_1.pascalCase)(modelName);
315
304
  if (!(modelName in exports.prismaModelRelationFields))
@@ -319,6 +308,9 @@ function getPrismaModelRelations(modelName) {
319
308
  function getModels() {
320
309
  return exports.models;
321
310
  }
311
+ function getPrismaSchemasContent() {
312
+ return exports.prismaSchemasContent;
313
+ }
322
314
  function getModelUniqueFields(modelName) {
323
315
  return exports.prismaModelsUniqueFields[modelName];
324
316
  }