arkos 1.2.15-test → 1.2.16-test

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 (239) 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/base/base.controller.js +11 -12
  6. package/dist/cjs/modules/base/base.controller.js.map +1 -1
  7. package/dist/cjs/modules/base/base.router.js.map +1 -1
  8. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +41 -27
  9. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  10. package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
  11. package/dist/cjs/modules/swagger/swagger.router.js +14 -56
  12. package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
  13. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +250 -0
  14. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -0
  15. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +66 -0
  16. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -0
  17. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +41 -0
  18. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -0
  19. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +22 -0
  20. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -0
  21. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +30 -0
  22. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +1 -0
  23. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +442 -0
  24. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -0
  25. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +165 -0
  26. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -0
  27. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +93 -0
  28. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
  29. package/dist/cjs/paths.js +1 -1
  30. package/dist/cjs/server.js +2 -2
  31. package/dist/cjs/server.js.map +1 -1
  32. package/dist/cjs/types/arkos-config.js.map +1 -1
  33. package/dist/cjs/utils/cli/build.js +2 -19
  34. package/dist/cjs/utils/cli/build.js.map +1 -1
  35. package/dist/cjs/utils/cli/dev.js +13 -28
  36. package/dist/cjs/utils/cli/dev.js.map +1 -1
  37. package/dist/cjs/utils/cli/generate.js +6 -6
  38. package/dist/cjs/utils/cli/generate.js.map +1 -1
  39. package/dist/cjs/utils/cli/utils/cli.helpers.js +10 -1
  40. package/dist/cjs/utils/cli/utils/cli.helpers.js.map +1 -1
  41. package/dist/cjs/utils/helpers/fs.helpers.js +12 -5
  42. package/dist/cjs/utils/helpers/fs.helpers.js.map +1 -1
  43. package/dist/cjs/utils/helpers/global.helpers.js +38 -2
  44. package/dist/cjs/utils/helpers/global.helpers.js.map +1 -1
  45. package/dist/cjs/utils/helpers/models.helpers.js +20 -43
  46. package/dist/cjs/utils/helpers/models.helpers.js.map +1 -1
  47. package/dist/cjs/utils/sheu.js +143 -0
  48. package/dist/cjs/utils/sheu.js.map +1 -0
  49. package/dist/esm/app.js +1 -0
  50. package/dist/esm/app.js.map +1 -0
  51. package/dist/{es2020 → esm}/exports/auth/index.js +1 -1
  52. package/dist/{es2020 → esm}/exports/controllers/index.js +2 -2
  53. package/dist/{es2020 → esm}/exports/error-handler/index.js +2 -2
  54. package/dist/{es2020 → esm}/exports/index.js +2 -2
  55. package/dist/{es2020 → esm}/exports/middlewares/index.js +1 -1
  56. package/dist/esm/exports/prisma/index.js +3 -0
  57. package/dist/{es2020 → esm}/exports/services/index.js +4 -4
  58. package/dist/esm/exports/utils/index.js +4 -0
  59. package/dist/esm/exports/validation/index.js +4 -0
  60. package/dist/{es2020 → esm}/modules/auth/auth.controller.js +7 -7
  61. package/dist/{es2020 → esm}/modules/auth/auth.router.js +6 -6
  62. package/dist/{es2020 → esm}/modules/auth/auth.service.js +6 -6
  63. package/dist/{es2020 → esm}/modules/auth/utils/helpers/auth.controller.helpers.js +2 -2
  64. package/dist/{es2020 → esm}/modules/base/base.controller.js +18 -19
  65. package/dist/esm/modules/base/base.controller.js.map +1 -0
  66. package/dist/{es2020 → esm}/modules/base/base.middlewares.js +6 -6
  67. package/dist/{es2020 → esm}/modules/base/base.router.js +4 -4
  68. package/dist/esm/modules/base/base.router.js.map +1 -0
  69. package/dist/{es2020 → esm}/modules/base/base.service.js +6 -6
  70. package/dist/{es2020 → esm}/modules/base/utils/helpers/base.controller.helpers.js +1 -1
  71. package/dist/{es2020 → esm}/modules/base/utils/helpers/base.middlewares.helpers.js +1 -1
  72. package/dist/{es2020 → esm}/modules/base/utils/helpers/base.router.helpers.js +45 -33
  73. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -0
  74. package/dist/{es2020 → esm}/modules/base/utils/helpers/base.service.helpers.js +1 -1
  75. package/dist/{es2020 → esm}/modules/email/email.service.js +2 -2
  76. package/dist/{es2020 → esm}/modules/error-handler/error-handler.controller.js +3 -3
  77. package/dist/{es2020 → esm}/modules/error-handler/error-handler.controller.js.map +1 -1
  78. package/dist/{es2020 → esm}/modules/error-handler/utils/error-handler.helpers.js +1 -1
  79. package/dist/{es2020 → esm}/modules/file-upload/file-upload.controller.js +7 -7
  80. package/dist/{es2020 → esm}/modules/file-upload/file-upload.router.js +5 -5
  81. package/dist/{es2020 → esm}/modules/file-upload/file-upload.service.js +5 -5
  82. package/dist/{es2020 → esm}/modules/file-upload/utils/helpers/file-upload.helpers.js +2 -2
  83. package/dist/{es2020 → esm}/modules/swagger/swagger.router.js +15 -57
  84. package/dist/esm/modules/swagger/swagger.router.js.map +1 -0
  85. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +247 -0
  86. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -0
  87. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +63 -0
  88. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -0
  89. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +38 -0
  90. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -0
  91. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +19 -0
  92. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -0
  93. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +24 -0
  94. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +1 -0
  95. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +436 -0
  96. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -0
  97. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +159 -0
  98. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -0
  99. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +83 -0
  100. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
  101. package/dist/esm/server.js +3 -0
  102. package/dist/esm/server.js.map +1 -0
  103. package/dist/esm/types/arkos-config.js.map +1 -0
  104. package/dist/{es2020 → esm}/utils/cli/build.js +4 -21
  105. package/dist/esm/utils/cli/build.js.map +1 -0
  106. package/dist/{es2020 → esm}/utils/cli/dev.js +17 -32
  107. package/dist/esm/utils/cli/dev.js.map +1 -0
  108. package/dist/{es2020 → esm}/utils/cli/generate.js +10 -10
  109. package/dist/{es2020 → esm}/utils/cli/generate.js.map +1 -1
  110. package/dist/{es2020 → esm}/utils/cli/index.js +5 -5
  111. package/dist/{es2020 → esm}/utils/cli/start.js +4 -4
  112. package/dist/esm/utils/cli/utils/cli.helpers.js +27 -0
  113. package/dist/esm/utils/cli/utils/cli.helpers.js.map +1 -0
  114. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +1 -1
  115. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-middlewares.js +1 -1
  116. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +2 -2
  117. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-router-template.js +1 -1
  118. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-service-template.js +2 -2
  119. package/dist/{es2020 → esm}/utils/cli/utils/template-generators.js +6 -6
  120. package/dist/{es2020 → esm}/utils/features/api.features.js +4 -4
  121. package/dist/{es2020 → esm}/utils/features/change-case.features.js +1 -1
  122. package/dist/{es2020 → esm}/utils/helpers/fs.helpers.js +12 -5
  123. package/dist/esm/utils/helpers/fs.helpers.js.map +1 -0
  124. package/dist/esm/utils/helpers/global.helpers.js +35 -0
  125. package/dist/esm/utils/helpers/global.helpers.js.map +1 -0
  126. package/dist/{es2020 → esm}/utils/helpers/models.helpers.js +21 -11
  127. package/dist/esm/utils/helpers/models.helpers.js.map +1 -0
  128. package/dist/{es2020 → esm}/utils/helpers/prisma.helpers.js +4 -4
  129. package/dist/esm/utils/sheu.js +141 -0
  130. package/dist/esm/utils/sheu.js.map +1 -0
  131. package/dist/{es2020 → esm}/utils/validate-dto.js +1 -1
  132. package/dist/{es2020 → esm}/utils/validate-schema.js +1 -1
  133. package/dist/types/modules/auth/auth.controller.d.ts +7 -7
  134. package/dist/types/modules/auth/auth.service.d.ts +1 -1
  135. package/dist/types/modules/base/base.controller.d.ts +9 -9
  136. package/dist/types/modules/base/utils/helpers/base.router.helpers.d.ts +4 -1
  137. package/dist/types/modules/error-handler/utils/catch-async.d.ts +1 -1
  138. package/dist/types/modules/file-upload/file-upload.controller.d.ts +4 -4
  139. package/dist/types/modules/swagger/swagger.router.d.ts +1 -1
  140. package/dist/types/modules/swagger/utils/helpers/get-authentication-json-schema-paths.d.ts +2 -0
  141. package/dist/types/modules/swagger/utils/helpers/get-system-json-schema-paths.d.ts +2 -0
  142. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.d.ts +1 -0
  143. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.d.ts +1 -0
  144. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.d.ts +1 -0
  145. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.d.ts +2 -0
  146. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.d.ts +2 -0
  147. package/dist/types/modules/swagger/utils/helpers/swagger.router.helpers.d.ts +7 -0
  148. package/dist/types/types/arkos-config.d.ts +7 -4
  149. package/dist/types/utils/helpers/global.helpers.d.ts +5 -1
  150. package/dist/types/utils/helpers/models.helpers.d.ts +10 -1
  151. package/dist/types/utils/helpers/prisma.helpers.d.ts +1 -1
  152. package/dist/types/utils/sheu.d.ts +25 -0
  153. package/package.json +25 -19
  154. package/dist/es2020/app.js +0 -1
  155. package/dist/es2020/app.js.map +0 -1
  156. package/dist/es2020/exports/prisma/index.js +0 -3
  157. package/dist/es2020/exports/utils/index.js +0 -4
  158. package/dist/es2020/exports/validation/index.js +0 -4
  159. package/dist/es2020/modules/base/base.controller.js.map +0 -1
  160. package/dist/es2020/modules/base/base.router.js.map +0 -1
  161. package/dist/es2020/modules/base/utils/helpers/base.router.helpers.js.map +0 -1
  162. package/dist/es2020/modules/swagger/swagger.router.js.map +0 -1
  163. package/dist/es2020/server.js +0 -3
  164. package/dist/es2020/server.js.map +0 -1
  165. package/dist/es2020/types/arkos-config.js.map +0 -1
  166. package/dist/es2020/utils/cli/build.js.map +0 -1
  167. package/dist/es2020/utils/cli/dev.js.map +0 -1
  168. package/dist/es2020/utils/cli/utils/cli.helpers.js +0 -18
  169. package/dist/es2020/utils/cli/utils/cli.helpers.js.map +0 -1
  170. package/dist/es2020/utils/helpers/fs.helpers.js.map +0 -1
  171. package/dist/es2020/utils/helpers/global.helpers.js +0 -4
  172. package/dist/es2020/utils/helpers/global.helpers.js.map +0 -1
  173. package/dist/es2020/utils/helpers/models.helpers.js.map +0 -1
  174. /package/dist/{es2020 → esm}/exports/auth/index.js.map +0 -0
  175. /package/dist/{es2020 → esm}/exports/controllers/index.js.map +0 -0
  176. /package/dist/{es2020 → esm}/exports/error-handler/index.js.map +0 -0
  177. /package/dist/{es2020 → esm}/exports/index.js.map +0 -0
  178. /package/dist/{es2020 → esm}/exports/middlewares/index.js.map +0 -0
  179. /package/dist/{es2020 → esm}/exports/prisma/index.js.map +0 -0
  180. /package/dist/{es2020 → esm}/exports/services/index.js.map +0 -0
  181. /package/dist/{es2020 → esm}/exports/utils/index.js.map +0 -0
  182. /package/dist/{es2020 → esm}/exports/validation/index.js.map +0 -0
  183. /package/dist/{es2020 → esm}/modules/auth/auth.controller.js.map +0 -0
  184. /package/dist/{es2020 → esm}/modules/auth/auth.router.js.map +0 -0
  185. /package/dist/{es2020 → esm}/modules/auth/auth.service.js.map +0 -0
  186. /package/dist/{es2020 → esm}/modules/auth/utils/helpers/auth.controller.helpers.js.map +0 -0
  187. /package/dist/{es2020 → esm}/modules/base/base.middlewares.js.map +0 -0
  188. /package/dist/{es2020 → esm}/modules/base/base.service.js.map +0 -0
  189. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.controller.helpers.js.map +0 -0
  190. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.middlewares.helpers.js.map +0 -0
  191. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.service.helpers.js.map +0 -0
  192. /package/dist/{es2020 → esm}/modules/email/email.service.js.map +0 -0
  193. /package/dist/{es2020 → esm}/modules/error-handler/utils/app-error.js +0 -0
  194. /package/dist/{es2020 → esm}/modules/error-handler/utils/app-error.js.map +0 -0
  195. /package/dist/{es2020 → esm}/modules/error-handler/utils/catch-async.js +0 -0
  196. /package/dist/{es2020 → esm}/modules/error-handler/utils/catch-async.js.map +0 -0
  197. /package/dist/{es2020 → esm}/modules/error-handler/utils/error-handler.helpers.js.map +0 -0
  198. /package/dist/{es2020 → esm}/modules/file-upload/file-upload.controller.js.map +0 -0
  199. /package/dist/{es2020 → esm}/modules/file-upload/file-upload.router.js.map +0 -0
  200. /package/dist/{es2020 → esm}/modules/file-upload/file-upload.service.js.map +0 -0
  201. /package/dist/{es2020 → esm}/modules/file-upload/utils/helpers/file-upload.helpers.js.map +0 -0
  202. /package/dist/{es2020 → esm}/paths.js +0 -0
  203. /package/dist/{es2020 → esm}/paths.js.map +0 -0
  204. /package/dist/{es2020 → esm}/types/arkos-config.js +0 -0
  205. /package/dist/{es2020 → esm}/types/auth.js +0 -0
  206. /package/dist/{es2020 → esm}/types/auth.js.map +0 -0
  207. /package/dist/{es2020 → esm}/types/index.js +0 -0
  208. /package/dist/{es2020 → esm}/types/index.js.map +0 -0
  209. /package/dist/{es2020 → esm}/types/router-config.js +0 -0
  210. /package/dist/{es2020 → esm}/types/router-config.js.map +0 -0
  211. /package/dist/{es2020 → esm}/utils/arkos-env.js +0 -0
  212. /package/dist/{es2020 → esm}/utils/arkos-env.js.map +0 -0
  213. /package/dist/{es2020 → esm}/utils/cli/index.js.map +0 -0
  214. /package/dist/{es2020 → esm}/utils/cli/start.js.map +0 -0
  215. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -0
  216. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -0
  217. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -0
  218. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +0 -0
  219. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -0
  220. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -0
  221. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-service-template.js.map +0 -0
  222. /package/dist/{es2020 → esm}/utils/cli/utils/template-generators.js.map +0 -0
  223. /package/dist/{es2020 → esm}/utils/dotenv.helpers.js +0 -0
  224. /package/dist/{es2020 → esm}/utils/dotenv.helpers.js.map +0 -0
  225. /package/dist/{es2020 → esm}/utils/features/api.features.js.map +0 -0
  226. /package/dist/{es2020 → esm}/utils/features/change-case.features.js.map +0 -0
  227. /package/dist/{es2020 → esm}/utils/helpers/api.features.helpers.js +0 -0
  228. /package/dist/{es2020 → esm}/utils/helpers/api.features.helpers.js.map +0 -0
  229. /package/dist/{es2020 → esm}/utils/helpers/change-case.helpers.js +0 -0
  230. /package/dist/{es2020 → esm}/utils/helpers/change-case.helpers.js.map +0 -0
  231. /package/dist/{es2020 → esm}/utils/helpers/deepmerge.helper.js +0 -0
  232. /package/dist/{es2020 → esm}/utils/helpers/deepmerge.helper.js.map +0 -0
  233. /package/dist/{es2020 → esm}/utils/helpers/prisma.helpers.js.map +0 -0
  234. /package/dist/{es2020 → esm}/utils/helpers/query-parser.helpers.js +0 -0
  235. /package/dist/{es2020 → esm}/utils/helpers/query-parser.helpers.js.map +0 -0
  236. /package/dist/{es2020 → esm}/utils/helpers/text.helpers.js +0 -0
  237. /package/dist/{es2020 → esm}/utils/helpers/text.helpers.js.map +0 -0
  238. /package/dist/{es2020 → esm}/utils/validate-dto.js.map +0 -0
  239. /package/dist/{es2020 → esm}/utils/validate-schema.js.map +0 -0
@@ -0,0 +1,27 @@
1
+ import fs from "fs";
2
+ import { killDevelopmentServerChildProcess } from "../dev.js";
3
+ import { killProductionServerChildProcess } from "../start.js";
4
+ import path from "path";
5
+ import { fileURLToPath } from "url";
6
+ import { dirname } from "path";
7
+ export function ensureDirectoryExists(dirPath) {
8
+ if (!fs.existsSync(dirPath)) {
9
+ fs.mkdirSync(dirPath, { recursive: true });
10
+ }
11
+ }
12
+ export function killServerChildProcess() {
13
+ killDevelopmentServerChildProcess();
14
+ killProductionServerChildProcess();
15
+ }
16
+ export function getVersion() {
17
+ let currentDir;
18
+ if (typeof __dirname !== "undefined") {
19
+ currentDir = __dirname;
20
+ }
21
+ else {
22
+ currentDir = dirname(fileURLToPath(import.meta.url));
23
+ }
24
+ const packageJson = JSON.parse(fs.readFileSync(path.join(currentDir, "../../../../../package.json"), "utf8") || "{}");
25
+ return packageJson?.version || "1.0.0";
26
+ }
27
+ //# sourceMappingURL=cli.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.helpers.js","sourceRoot":"","sources":["../../../../../src/utils/cli/utils/cli.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,iCAAiC,EAAE,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,gCAAgC,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,iCAAiC,EAAE,CAAC;IACpC,gCAAgC,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,IAAI,UAAkB,CAAC;IAEvB,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,CAAC;QAErC,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;SAAM,CAAC;QAEN,UAAU,GAAG,OAAO,CAAC,aAAa,CAAE,MAAM,CAAC,IAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,EAAE,CAAC,YAAY,CACb,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,6BAA6B,CAAC,EACpD,MAAM,CACP,IAAI,IAAI,CACV,CAAC;IACF,OAAO,WAAW,EAAE,OAAO,IAAI,OAAO,CAAC;AACzC,CAAC","sourcesContent":["import fs from \"fs\";\nimport { killDevelopmentServerChildProcess } from \"../dev\";\nimport { killProductionServerChildProcess } from \"../start\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { dirname } from \"path\";\n\nexport function ensureDirectoryExists(dirPath: string): void {\n if (!fs.existsSync(dirPath)) {\n fs.mkdirSync(dirPath, { recursive: true });\n }\n}\n\nexport function killServerChildProcess() {\n killDevelopmentServerChildProcess();\n killProductionServerChildProcess();\n}\n\nexport function getVersion() {\n let currentDir: string;\n // @ts-ignore\n if (typeof __dirname !== \"undefined\") {\n // @ts-ignore\n currentDir = __dirname;\n } else {\n // @ts-ignore\n currentDir = dirname(fileURLToPath((import.meta as any).url));\n }\n\n const packageJson = JSON.parse(\n fs.readFileSync(\n path.join(currentDir, \"../../../../../package.json\"),\n \"utf8\"\n ) || \"{}\"\n );\n return packageJson?.version || \"1.0.0\";\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { getUserFileExtension } from "../../../../helpers/fs.helpers";
1
+ import { getUserFileExtension } from "../../../../helpers/fs.helpers.js";
2
2
  export function generateAuthConfigsTemplate(options) {
3
3
  const { modelName } = options;
4
4
  const ext = getUserFileExtension();
@@ -1,4 +1,4 @@
1
- import { getUserFileExtension } from "../../../../helpers/fs.helpers";
1
+ import { getUserFileExtension } from "../../../../helpers/fs.helpers.js";
2
2
  export function generateMiddlewaresTemplate(options) {
3
3
  const { modelName } = options;
4
4
  const ext = getUserFileExtension();
@@ -1,4 +1,4 @@
1
- import { getUserFileExtension } from "../../../../helpers/fs.helpers";
1
+ import { getUserFileExtension } from "../../../../helpers/fs.helpers.js";
2
2
  export function generateQueryOptionsTemplate(options) {
3
3
  const { modelName } = options;
4
4
  const isAuth = modelName?.camel === "auth";
@@ -15,7 +15,7 @@ export function generateQueryOptionsTemplate(options) {
15
15
  : `: PrismaQueryOptions<typeof prisma.${modelName.camel}>`
16
16
  : "";
17
17
  const prismaImport = isTypeScript
18
- ? `import { prisma } from "../../utils/prisma";\n`
18
+ ? `import { prisma } from "../../utils/prisma.js";\n`
19
19
  : "";
20
20
  if (isAuth) {
21
21
  return `${prismaImport}${imports};
@@ -1,5 +1,5 @@
1
1
  import pluralize from "pluralize";
2
- import { checkFileExists, getUserFileExtension, } from "../../../../helpers/fs.helpers";
2
+ import { checkFileExists, getUserFileExtension, } from "../../../../helpers/fs.helpers.js";
3
3
  export function generateRouterTemplate(options) {
4
4
  const { modelName, imports } = options;
5
5
  if (!modelName)
@@ -1,4 +1,4 @@
1
- import { getUserFileExtension } from "../../../../helpers/fs.helpers";
1
+ import { getUserFileExtension } from "../../../../helpers/fs.helpers.js";
2
2
  export function generateServiceTemplate(options) {
3
3
  const { modelName, imports } = options;
4
4
  const ext = getUserFileExtension();
@@ -6,7 +6,7 @@ export function generateServiceTemplate(options) {
6
6
  if (!modelName)
7
7
  throw new Error("Model name is required for service template");
8
8
  const prismaImport = isTypeScript
9
- ? `import { prisma } from "../../utils/prisma";\n`
9
+ ? `import { prisma } from "../../utils/prisma.js";\n`
10
10
  : "";
11
11
  const baseServiceImport = isTypeScript
12
12
  ? `import { BaseService } from "${imports?.baseService || "arkos/services"}";`
@@ -1,9 +1,9 @@
1
- import { generateControllerTemplate } from "./template-generator/templates/generate-controller-template";
2
- import { generateAuthConfigsTemplate } from "./template-generator/templates/generate-auth-configs-template";
3
- import { generateMiddlewaresTemplate } from "./template-generator/templates/generate-middlewares";
4
- import { generateQueryOptionsTemplate } from "./template-generator/templates/generate-prisma-query-options";
5
- import { generateRouterTemplate } from "./template-generator/templates/generate-router-template";
6
- import { generateServiceTemplate } from "./template-generator/templates/generate-service-template";
1
+ import { generateControllerTemplate } from "./template-generator/templates/generate-controller-template.js";
2
+ import { generateAuthConfigsTemplate } from "./template-generator/templates/generate-auth-configs-template.js";
3
+ import { generateMiddlewaresTemplate } from "./template-generator/templates/generate-middlewares.js";
4
+ import { generateQueryOptionsTemplate } from "./template-generator/templates/generate-prisma-query-options.js";
5
+ import { generateRouterTemplate } from "./template-generator/templates/generate-router-template.js";
6
+ import { generateServiceTemplate } from "./template-generator/templates/generate-service-template.js";
7
7
  export function generateTemplate(type, options) {
8
8
  switch (type) {
9
9
  case "controller":
@@ -1,7 +1,7 @@
1
- import deepmerge from "../helpers/deepmerge.helper";
2
- import { parseQueryParamsWithModifiers } from "../helpers/api.features.helpers";
3
- import AppError from "../../modules/error-handler/utils/app-error";
4
- import { getPrismaInstance } from "../helpers/prisma.helpers";
1
+ import deepmerge from "../helpers/deepmerge.helper.js";
2
+ import { parseQueryParamsWithModifiers } from "../helpers/api.features.helpers.js";
3
+ import AppError from "../../modules/error-handler/utils/app-error.js";
4
+ import { getPrismaInstance } from "../helpers/prisma.helpers.js";
5
5
  export default class APIFeatures {
6
6
  constructor(req, modelName) {
7
7
  this.filters = {};
@@ -1,4 +1,4 @@
1
- import * as changeCase from "../helpers/change-case.helpers";
1
+ import * as changeCase from "../helpers/change-case.helpers.js";
2
2
  const isObject = (object) => object !== null && typeof object === "object";
3
3
  function changeKeysFactory(changeCase) {
4
4
  return function changeKeys(object, depth = 1, options) {
@@ -11,7 +11,8 @@ export function fullCleanCwd(path) {
11
11
  if (typeof path !== "string")
12
12
  throw new Error("Path must be a string");
13
13
  const cwd = process.cwd().replace(/\/+$/, "");
14
- return path.replace(new RegExp(`${cwd}/?`, "g"), "");
14
+ const escapedCwd = cwd.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
15
+ return path.replace(new RegExp(`${escapedCwd}/?`, "g"), "");
15
16
  }
16
17
  export let userFileExtension;
17
18
  export const getUserFileExtension = () => {
@@ -20,13 +21,19 @@ export const getUserFileExtension = () => {
20
21
  try {
21
22
  const currentDir = process.cwd();
22
23
  const hasTsConfig = fs.existsSync(path.join(currentDir, "tsconfig.json"));
24
+ const hasAppTs = fs.existsSync(path.join(currentDir, "src", "app.ts"));
25
+ const hasAppJs = fs.existsSync(path.join(currentDir, "src", "app.js"));
23
26
  const isBuildMode = process.env.ARKOS_BUILD === "true";
24
- if (hasTsConfig && !isBuildMode) {
27
+ if (isBuildMode)
28
+ userFileExtension = "js";
29
+ else if (hasTsConfig)
30
+ userFileExtension = "ts";
31
+ else if (hasAppTs && !hasAppJs)
25
32
  userFileExtension = "ts";
26
- }
27
- else {
33
+ else if (hasAppJs)
34
+ userFileExtension = "js";
35
+ else
28
36
  userFileExtension = "js";
29
- }
30
37
  return userFileExtension;
31
38
  }
32
39
  catch (e) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/fs.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,SAAS,GAAG,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAE9C,MAAM,CAAC,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;AAQpB,MAAM,UAAU,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;AAED,MAAM,CAAC,IAAI,iBAA0C,CAAC;AAOtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAgB,EAAE;IACpD,IAAI,iBAAiB;QAAE,OAAO,iBAAiB,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAGjC,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;QAG1E,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,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,iBAAiB,GAAG,IAAI,CAAC;aACrC,IAAI,WAAW;YAAE,iBAAiB,GAAG,IAAI,CAAC;aAC1C,IAAI,QAAQ,IAAI,CAAC,QAAQ;YAAE,iBAAiB,GAAG,IAAI,CAAC;aACpD,IAAI,QAAQ;YAAE,iBAAiB,GAAG,IAAI,CAAC;;YACvC,iBAAiB,GAAG,IAAI,CAAC;QAE9B,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QAEX,iBAAiB,GAAG,IAAI,CAAC;QACzB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;AACH,CAAC,CAAC;AAgBF,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,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"]}
@@ -0,0 +1,35 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ export function getPackageJson() {
4
+ try {
5
+ const pkgPath = path.join(process.cwd(), "package.json");
6
+ if (fs.existsSync(pkgPath)) {
7
+ return JSON.parse(fs.readFileSync(pkgPath, "utf8"));
8
+ }
9
+ }
10
+ catch (err) {
11
+ console.error("Error checking package.json:", err);
12
+ }
13
+ }
14
+ export function isEsm() {
15
+ const pkg = getPackageJson();
16
+ return pkg.type === "module";
17
+ }
18
+ export async function importModule(modulePath, options = { fixExtension: true }) {
19
+ let correctedPath = modulePath;
20
+ if (options?.fixExtension &&
21
+ isEsm() &&
22
+ modulePath.startsWith(".") &&
23
+ !modulePath.endsWith(".js")) {
24
+ const fullImportPath = path.resolve(process.cwd(), modulePath);
25
+ const indexPath = fullImportPath + "/index.js";
26
+ if (fs.existsSync(indexPath)) {
27
+ correctedPath = modulePath + "/index.js";
28
+ }
29
+ else {
30
+ correctedPath = modulePath + ".js";
31
+ }
32
+ }
33
+ return await import(correctedPath);
34
+ }
35
+ //# sourceMappingURL=global.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/global.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACzD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,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,MAAM,UAAU,KAAK;IACnB,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,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,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,cAAc,GAAG,WAAW,CAAC;QAG/C,IAAI,EAAE,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,MAAM,MAAM,CAAC,aAAa,CAAC,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"]}
@@ -1,10 +1,10 @@
1
1
  import path from "path";
2
2
  import fs from "fs";
3
- import { camelCase, kebabCase, pascalCase, } from "../../utils/helpers/change-case.helpers";
4
- import { crd, getUserFileExtension } from "./fs.helpers";
5
- import { importModule } from "./global.helpers";
6
- import { killServerChildProcess } from "../cli/utils/cli.helpers";
7
- export let prismaModelsModules = {};
3
+ import { camelCase, kebabCase, pascalCase, } from "../../utils/helpers/change-case.helpers.js";
4
+ import { crd, getUserFileExtension } from "./fs.helpers.js";
5
+ import { importModule } from "./global.helpers.js";
6
+ import { killServerChildProcess } from "../cli/utils/cli.helpers.js";
7
+ let prismaModelsModules = {};
8
8
  export function getModelModules(modelName) {
9
9
  return prismaModelsModules[kebabCase(modelName)];
10
10
  }
@@ -36,6 +36,8 @@ export function getFileModelModulesFileStructure(modelName) {
36
36
  createMany: `create-many-${kebabModelName}.dto.${ext}`,
37
37
  update: `update-${kebabModelName}.dto.${ext}`,
38
38
  updateMany: `update-many-${kebabModelName}.dto.${ext}`,
39
+ findOne: `find-one-${kebabModelName}.dto.${ext}`,
40
+ findMany: `find-many-${kebabModelName}.dto.${ext}`,
39
41
  query: `query-${kebabModelName}.dto.${ext}`,
40
42
  },
41
43
  schemas: isAuthModule
@@ -51,6 +53,8 @@ export function getFileModelModulesFileStructure(modelName) {
51
53
  createMany: `create-many-${kebabModelName}.schema.${ext}`,
52
54
  update: `update-${kebabModelName}.schema.${ext}`,
53
55
  updateMany: `update-many-${kebabModelName}.schema.${ext}`,
56
+ findOne: `find-one-${kebabModelName}.schema.${ext}`,
57
+ findMany: `find-many-${kebabModelName}.schema.${ext}`,
54
58
  query: `query-${kebabModelName}.schema.${ext}`,
55
59
  },
56
60
  };
@@ -66,7 +70,7 @@ export async function processSubdir(modelName, type, result) {
66
70
  await Promise.all(Object.entries(fileStructure[type]).map(async ([key, fileName]) => {
67
71
  const filePath = path.join(subdir, fileName);
68
72
  try {
69
- const module = await import(filePath).catch(() => null);
73
+ const module = await importModule(filePath).catch(() => null);
70
74
  if (module)
71
75
  result[type][key] = module.default;
72
76
  }
@@ -175,6 +179,7 @@ export function getAllPrismaFiles(dirPath, fileList = []) {
175
179
  }
176
180
  const modelRegex = /model\s+(\w+)\s*{/g;
177
181
  export const models = [];
182
+ export let prismaSchemasContent;
178
183
  export const prismaModelsUniqueFields = [];
179
184
  export function initializePrismaModels() {
180
185
  const prismaContent = [];
@@ -191,11 +196,13 @@ export function initializePrismaModels() {
191
196
  models.push(camelCase(modelName.trim()));
192
197
  return `model ${modelName} {`;
193
198
  });
199
+ const copiedContent = content;
200
+ prismaSchemasContent = content;
194
201
  for (const model of models) {
195
202
  const modelName = pascalCase(model);
196
- const modelStart = content.indexOf(`model ${modelName} {`);
197
- const modelEnd = content.indexOf("}", modelStart);
198
- const modelDefinition = content.slice(modelStart, modelEnd);
203
+ const modelStart = copiedContent.indexOf(`model ${modelName} {`);
204
+ const modelEnd = copiedContent.indexOf("}", modelStart);
205
+ const modelDefinition = copiedContent.slice(modelStart, modelEnd);
199
206
  const relations = {
200
207
  singular: [],
201
208
  list: [],
@@ -226,8 +233,8 @@ export function initializePrismaModels() {
226
233
  if (trimmedLine?.includes?.("@relation") ||
227
234
  trimmedLine.match(/\s+\w+(\[\])?(\s+@|$)/) ||
228
235
  models?.includes?.(camelCase(cleanType || ""))) {
229
- const enumStart = content.indexOf(`enum ${cleanType} {`);
230
- const typeStart = content.indexOf(`type ${cleanType} {`);
236
+ const enumStart = copiedContent.indexOf(`enum ${cleanType} {`);
237
+ const typeStart = copiedContent.indexOf(`type ${cleanType} {`);
231
238
  if (!cleanType ||
232
239
  enumStart >= 0 ||
233
240
  typeStart >= 0 ||
@@ -269,6 +276,9 @@ export function getPrismaModelRelations(modelName) {
269
276
  function getModels() {
270
277
  return models;
271
278
  }
279
+ export function getPrismaSchemasContent() {
280
+ return prismaSchemasContent;
281
+ }
272
282
  function getModelUniqueFields(modelName) {
273
283
  return prismaModelsUniqueFields[modelName];
274
284
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/models.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EACL,SAAS,EACT,SAAS,EACT,UAAU,GACX,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,IAAI,mBAAmB,GAGnB,EAAE,CAAC;AAEP,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,OAAO,mBAAmB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,SAAiB;IAChE,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1D,MAAM,YAAY,GAAG,SAAS,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;IACxD,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;IAEnC,OAAO;QACL,IAAI,EAAE;YACJ,OAAO,EAAE,GAAG,cAAc,YAAY,GAAG,EAAE;YAC3C,UAAU,EAAE,GAAG,cAAc,eAAe,GAAG,EAAE;YACjD,WAAW,EAAE,GAAG,cAAc,gBAAgB,GAAG,EAAE;YACnD,WAAW,EAAE,GAAG,cAAc,iBAAiB,GAAG,EAAE;YACpD,cAAc,EAAE,GAAG,cAAc,SAAS,GAAG,EAAE;YAC/C,kBAAkB,EAAE,GAAG,cAAc,yBAAyB,GAAG,EAAE;YACnE,qBAAqB,EAAE,GAAG,cAAc,UAAU,GAAG,EAAE;YACvD,MAAM,EAAE,GAAG,cAAc,WAAW,GAAG,EAAE;SAC1C;QACD,IAAI,EAAE,YAAY;YAChB,CAAC,CAAC;gBACE,KAAK,EAAE,aAAa,GAAG,EAAE;gBACzB,MAAM,EAAE,cAAc,GAAG,EAAE;gBAC3B,QAAQ,EAAE,iBAAiB,GAAG,EAAE;gBAChC,cAAc,EAAE,uBAAuB,GAAG,EAAE;aAC7C;YACH,CAAC,CAAC;gBACE,KAAK,EAAE,GAAG,cAAc,QAAQ,GAAG,EAAE;gBACrC,MAAM,EAAE,UAAU,cAAc,QAAQ,GAAG,EAAE;gBAC7C,UAAU,EAAE,eAAe,cAAc,QAAQ,GAAG,EAAE;gBACtD,MAAM,EAAE,UAAU,cAAc,QAAQ,GAAG,EAAE;gBAC7C,UAAU,EAAE,eAAe,cAAc,QAAQ,GAAG,EAAE;gBACtD,OAAO,EAAE,YAAY,cAAc,QAAQ,GAAG,EAAE;gBAChD,QAAQ,EAAE,aAAa,cAAc,QAAQ,GAAG,EAAE;gBAClD,KAAK,EAAE,SAAS,cAAc,QAAQ,GAAG,EAAE;aAC5C;QACL,OAAO,EAAE,YAAY;YACnB,CAAC,CAAC;gBACE,KAAK,EAAE,gBAAgB,GAAG,EAAE;gBAC5B,MAAM,EAAE,iBAAiB,GAAG,EAAE;gBAC9B,QAAQ,EAAE,oBAAoB,GAAG,EAAE;gBACnC,cAAc,EAAE,0BAA0B,GAAG,EAAE;aAChD;YACH,CAAC,CAAC;gBACE,KAAK,EAAE,GAAG,cAAc,WAAW,GAAG,EAAE;gBACxC,MAAM,EAAE,UAAU,cAAc,WAAW,GAAG,EAAE;gBAChD,UAAU,EAAE,eAAe,cAAc,WAAW,GAAG,EAAE;gBACzD,MAAM,EAAE,UAAU,cAAc,WAAW,GAAG,EAAE;gBAChD,UAAU,EAAE,eAAe,cAAc,WAAW,GAAG,EAAE;gBACzD,OAAO,EAAE,YAAY,cAAc,WAAW,GAAG,EAAE;gBACnD,QAAQ,EAAE,aAAa,cAAc,WAAW,GAAG,EAAE;gBACrD,KAAK,EAAE,SAAS,cAAc,WAAW,GAAG,EAAE;aAC/C;KACN,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,SAAiB,EACjB,IAAwB,EACxB,MAA2B;IAE3B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAE9E,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,gCAAgC,CAAC,SAAS,CAAC,CAAC;IAGlE,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YAC1C,OAAO;QACT,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE;YAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC9D,IAAI,MAAM;oBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;YACjD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAEf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAsBD,MAAM,UAAU,yBAAyB,CACvC,GAAW,EACX,QAAgB,EAChB,MAA0C;IAE1C,IAAI,GAAG,KAAK,oBAAoB,EAAE,CAAC;QACjC,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC9B,sBAAsB,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,sBAAsB,QAAQ,QAAQ,QAAQ,CAAC,OAAO,CACpD,sBAAsB,EACtB,OAAO,CACR,sDAAsD,CACxD,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,GAAG,KAAK,uBAAuB,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC9B,sBAAsB,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,sBAAsB,QAAQ,QAAQ,QAAQ,CAAC,OAAO,CACpD,OAAO,EACP,sBAAsB,CACvB,sDAAsD,CACxD,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;QACjC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,sBAAsB,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,sBAAsB,QAAQ,QAAQ,QAAQ,CAAC,OAAO,CACpD,cAAc,EACd,MAAM,CACP,sDAAsD,CACxD,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;QACpC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,sBAAsB,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,sBAAsB,QAAQ,QAAQ,QAAQ,CAAC,OAAO,CACpD,MAAM,EACN,cAAc,CACf,sDAAsD,CACxD,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAQD,MAAM,UAAU,oBAAoB,CAClC,GAAW,EACX,MAAW,EACX,MAA0C;IAE1C,IAAI,GAAG,KAAK,oBAAoB,IAAI,GAAG,KAAK,uBAAuB,EAAE,CAAC;QACpE,MAAM,CAAC,kBAAkB,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC;IACvD,CAAC;SAAM,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;QAC7D,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC;IAChD,CAAC;SAAM,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrD,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAA0B,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC;IAChE,CAAC;AACH,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,SAAiB;IAEjB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAE9E,MAAM,MAAM,GAAuC;QACjD,IAAI,EAAE,EAAE;QACR,OAAO,EAAE,EAAE;KACZ,CAAC;IAEF,IAAI,eAAe,CAAC,SAAS,CAAC;QAAE,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;IAElE,MAAM,aAAa,GAAG,gCAAgC,CAAC,SAAS,CAAC,CAAC;IAGlE,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACxD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;oBAChD,OAAO,CAAC,KAAK,CAAC,oBAAoB,QAAQ,MAAM,CAAC,CAAC;oBAClD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACnB,sBAAsB,EAAE,CAAC;oBACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,MAAM,EAAE,CAAC;gBAEX,yBAAyB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAGjD,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBAAE,MAAM,GAAG,CAAC;YACvD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,sBAAsB,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;QACxC,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;KAC5C,CAAC,CAAC;IAKH,mBAAmB,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;IAExC,OAAO,MAAM,CAAC;AAChB,CAAC;AAyBD,MAAM,CAAC,MAAM,yBAAyB,GAAmC,EAAE,CAAC;AAE5E,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,WAAqB,EAAE;IACxE,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAEtC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAGnC,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAChD,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,GAAG,oBAAoB,CAAC;AACxC,MAAM,CAAC,MAAM,MAAM,GAAa,EAAE,CAAC;AACnC,MAAM,CAAC,IAAI,oBAA4B,CAAC;AACxC,MAAM,CAAC,MAAM,wBAAwB,GACnC,EAAS,CAAC;AAEZ,MAAM,UAAU,sBAAsB;IACpC,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,MAAM,KAAK,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAE5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE/C,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC;YAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IAGD,MAAM,OAAO,GAAG,aAAa;SAC1B,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE;QACpC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3C,OAAO,SAAS,SAAS,IAAI,CAAC;IAChC,CAAC,CAAC,CAAC;IAEL,MAAM,aAAa,GAAG,OAAO,CAAC;IAC9B,oBAAoB,GAAG,OAAO,CAAC;IAE/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,SAAS,IAAI,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACxD,MAAM,eAAe,GAAG,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAElE,MAAM,SAAS,GAAmB;YAChC,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,EAAE;SACT,CAAC;QACF,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAEhC,IACE,CAAC,WAAW;gBACZ,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC/B,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;gBAC5B,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;gBAE5B,SAAS;YAEX,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,WAAW,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC;YAEpD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,cAAc,GAAG,wBAAwB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAE7D,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CACvC,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,IAAI,KAAK,SAAS;oBACxB,KAAK,CAAC,IAAI,KAAK,IAAI;oBACnB,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAC9B,CAAC;gBAEF,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,wBAAwB,CAAC,KAAK,CAAC,GAAG;wBAChC,GAAG,cAAc;wBACjB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;qBACpC,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAE3D,IACE,WAAW,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC;gBACpC,WAAW,CAAC,KAAK,CAAC,uBAAuB,CAAC;gBAC1C,MAAM,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,EAC9C,CAAC;gBACD,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,SAAS,IAAI,CAAC,CAAC;gBAC/D,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,SAAS,IAAI,CAAC,CAAC;gBAE/D,IACE,CAAC,SAAS;oBACV,SAAS,IAAI,CAAC;oBACd,SAAS,IAAI,CAAC;oBACd,SAAS,KAAK,QAAQ;oBACtB,SAAS,KAAK,KAAK;oBACnB,SAAS,KAAK,OAAO;oBACrB,SAAS,KAAK,SAAS;oBACvB,SAAS,KAAK,UAAU;oBACxB,SAAS,KAAK,OAAO;oBACrB,SAAS,KAAK,SAAS;oBACvB,SAAS,KAAK,QAAQ;oBACtB,SAAS,KAAK,MAAM,EAGpB,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;wBACtB,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,SAAS;qBAChB,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;wBAClB,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,SAAS;qBAChB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,yBAAyB,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;QACnD,CAAC;IACH,CAAC;AACH,CAAC;AAED,sBAAsB,EAAE,CAAC;AAQzB,MAAM,UAAU,uBAAuB,CACrC,SAAiB;IAEjB,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAElC,IAAI,CAAC,CAAC,SAAS,IAAI,yBAAyB,CAAC;QAAE,OAAO;IACtD,OAAO,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAC9C,CAAC;AAOD,SAAS,SAAS;IAChB,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD,MAAM,UAAU,uBAAuB;IACrC,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAMD,SAAS,oBAAoB,CAAC,SAAiB;IAC7C,OAAO,wBAAwB,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC","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\n// Must be exported to not cause problems on cjs\nlet 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 importModule(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 // Removed because caused problems with cached ZObjects\n // Cache the result making shallow copy to not cause problems after build\n // prismaModelsModules[modelName] = JSON.parse(JSON.stringify(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 const copiedContent = content;\n prismaSchemasContent = content;\n\n for (const model of models) {\n const modelName = pascalCase(model);\n\n const modelStart = copiedContent.indexOf(`model ${modelName} {`);\n const modelEnd = copiedContent.indexOf(\"}\", modelStart);\n const modelDefinition = copiedContent.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 = copiedContent.indexOf(`enum ${cleanType} {`);\n const typeStart = copiedContent.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,8 +1,8 @@
1
1
  import fs from "fs";
2
- import catchAsync from "../../modules/error-handler/utils/catch-async";
3
- import AppError from "../../modules/error-handler/utils/app-error";
4
- import { crd, getUserFileExtension as ext } from "./fs.helpers";
5
- import { importModule } from "./global.helpers";
2
+ import catchAsync from "../../modules/error-handler/utils/catch-async.js";
3
+ import AppError from "../../modules/error-handler/utils/app-error.js";
4
+ import { crd, getUserFileExtension as ext } from "./fs.helpers.js";
5
+ import { importModule } from "./global.helpers.js";
6
6
  export let prismaInstance = null;
7
7
  export async function loadPrismaModule() {
8
8
  if (!prismaInstance) {
@@ -0,0 +1,141 @@
1
+ class Sheu {
2
+ constructor() {
3
+ this.codes = [];
4
+ }
5
+ _apply(text) {
6
+ const openCodes = this.codes.join("");
7
+ return `${openCodes}${text}\x1b[0m`;
8
+ }
9
+ _chain() {
10
+ const newInstance = new Sheu();
11
+ newInstance.codes = [...this.codes];
12
+ return newInstance;
13
+ }
14
+ red(text) {
15
+ if (text !== undefined) {
16
+ return `\x1b[31m${text}\x1b[0m`;
17
+ }
18
+ const instance = this._chain();
19
+ instance.codes.push("\x1b[31m");
20
+ return instance;
21
+ }
22
+ blue(text) {
23
+ if (text !== undefined) {
24
+ return `\x1b[34m${text}\x1b[0m`;
25
+ }
26
+ const instance = this._chain();
27
+ instance.codes.push("\x1b[34m");
28
+ return instance;
29
+ }
30
+ green(text) {
31
+ if (text !== undefined) {
32
+ return `\x1b[32m${text}\x1b[0m`;
33
+ }
34
+ const instance = this._chain();
35
+ instance.codes.push("\x1b[32m");
36
+ return instance;
37
+ }
38
+ yellow(text) {
39
+ if (text !== undefined) {
40
+ return `\x1b[33m${text}\x1b[0m`;
41
+ }
42
+ const instance = this._chain();
43
+ instance.codes.push("\x1b[33m");
44
+ return instance;
45
+ }
46
+ cyan(text) {
47
+ if (text !== undefined) {
48
+ return `\x1b[36m${text}\x1b[0m`;
49
+ }
50
+ const instance = this._chain();
51
+ instance.codes.push("\x1b[36m");
52
+ return instance;
53
+ }
54
+ magenta(text) {
55
+ if (text !== undefined) {
56
+ return `\x1b[35m${text}\x1b[0m`;
57
+ }
58
+ const instance = this._chain();
59
+ instance.codes.push("\x1b[35m");
60
+ return instance;
61
+ }
62
+ white(text) {
63
+ if (text !== undefined) {
64
+ return `\x1b[37m${text}\x1b[0m`;
65
+ }
66
+ const instance = this._chain();
67
+ instance.codes.push("\x1b[37m");
68
+ return instance;
69
+ }
70
+ black(text) {
71
+ if (text !== undefined) {
72
+ return `\x1b[30m${text}\x1b[0m`;
73
+ }
74
+ const instance = this._chain();
75
+ instance.codes.push("\x1b[30m");
76
+ return instance;
77
+ }
78
+ gray(text) {
79
+ if (text !== undefined) {
80
+ return `\x1b[90m${text}\x1b[0m`;
81
+ }
82
+ const instance = this._chain();
83
+ instance.codes.push("\x1b[90m");
84
+ return instance;
85
+ }
86
+ orange(text) {
87
+ if (text !== undefined) {
88
+ return `\x1b[91m${text}\x1b[0m`;
89
+ }
90
+ const instance = this._chain();
91
+ instance.codes.push("\x1b[91m");
92
+ return instance;
93
+ }
94
+ bold(text) {
95
+ if (text !== undefined) {
96
+ return `\x1b[1m${text}\x1b[0m`;
97
+ }
98
+ const instance = this._chain();
99
+ instance.codes.push("\x1b[1m");
100
+ return instance;
101
+ }
102
+ apply(text) {
103
+ return this._apply(text);
104
+ }
105
+ info(message) {
106
+ const label = `[\x1b[36mINFO\x1b[0m]`;
107
+ const content = message ? `${label} ${message}` : label;
108
+ console.info(content);
109
+ return content;
110
+ }
111
+ error(message) {
112
+ const label = `[\x1b[31mERROR\x1b[0m]`;
113
+ const content = message ? `${label} ${message}` : label;
114
+ console.info(content);
115
+ return content;
116
+ }
117
+ ready(message) {
118
+ const label = `[\x1b[32mREADY\x1b[0m]`;
119
+ const content = message ? `${label} ${message}` : label;
120
+ console.info(content);
121
+ return content;
122
+ }
123
+ done(message) {
124
+ const label = `[\x1b[32mDONE\x1b[0m]`;
125
+ const content = message ? `${label} ${message}` : label;
126
+ console.info(content);
127
+ return content;
128
+ }
129
+ warn(message) {
130
+ const label = `[\x1b[33mWARN\x1b[0m]`;
131
+ console.info(message ? `${label} ${message}` : label);
132
+ }
133
+ }
134
+ const sheu = new Sheu();
135
+ Object.getOwnPropertyNames(Sheu.prototype).forEach((method) => {
136
+ if (method !== "constructor" && method !== "_apply" && method !== "_chain") {
137
+ sheu[method] = Sheu.prototype[method].bind(new Sheu());
138
+ }
139
+ });
140
+ export default sheu;
141
+ //# sourceMappingURL=sheu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheu.js","sourceRoot":"","sources":["../../../src/utils/sheu.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Sheu - Terminal color utility class for styling console output\n * Provides chainable methods for colors and text formatting\n */\nclass Sheu {\n codes: string[];\n\n constructor() {\n this.codes = [];\n }\n\n /**\n * Apply text to the current styling codes\n * @param {string} text - The text to style\n * @returns {string} The styled text with ANSI codes\n */\n _apply(text: string): string {\n const openCodes = this.codes.join(\"\");\n return `${openCodes}${text}\\x1b[0m`;\n }\n\n /**\n * Create a new instance with the current codes\n * @returns {Sheu} New Sheu instance\n */\n _chain(): Sheu {\n const newInstance = new Sheu();\n newInstance.codes = [...this.codes];\n return newInstance;\n }\n\n /**\n * Red color (Tailwind red-500: #ef4444)\n * @param {string} [text] - Optional text to style immediately\n * @returns {string|Sheu} Styled text or chainable instance\n */\n red(text?: string): string | Sheu {\n if (text !== undefined) {\n return `\\x1b[31m${text}\\x1b[0m`;\n }\n const instance = this._chain();\n instance.codes.push(\"\\x1b[31m\");\n return instance;\n }\n\n /**\n * Blue color (Tailwind blue-500: #3b82f6)\n * @param {string} [text] - Optional text to style immediately\n * @returns {string|Sheu} Styled text or chainable instance\n */\n blue(text?: string): string | Sheu {\n if (text !== undefined) {\n return `\\x1b[34m${text}\\x1b[0m`;\n }\n const instance = this._chain();\n instance.codes.push(\"\\x1b[34m\");\n return instance;\n }\n\n /**\n * Green color (Tailwind green-500: #22c55e)\n * @param {string} [text] - Optional text to style immediately\n * @returns {string|Sheu} Styled text or chainable instance\n */\n green(text?: string): string | Sheu {\n if (text !== undefined) {\n return `\\x1b[32m${text}\\x1b[0m`;\n }\n const instance = this._chain();\n instance.codes.push(\"\\x1b[32m\");\n return instance;\n }\n\n /**\n * Yellow color (Tailwind yellow-500: #eab308)\n * @param {string} [text] - Optional text to style immediately\n * @returns {string|Sheu} Styled text or chainable instance\n */\n yellow(text?: string): string | Sheu {\n if (text !== undefined) {\n return `\\x1b[33m${text}\\x1b[0m`;\n }\n const instance = this._chain();\n instance.codes.push(\"\\x1b[33m\");\n return instance;\n }\n\n /**\n * Cyan color (Tailwind cyan-500: #06b6d4)\n * @param {string} [text] - Optional text to style immediately\n * @returns {string|Sheu} Styled text or chainable instance\n */\n cyan(text?: string): string | Sheu {\n if (text !== undefined) {\n return `\\x1b[36m${text}\\x1b[0m`;\n }\n const instance = this._chain();\n instance.codes.push(\"\\x1b[36m\");\n return instance;\n }\n\n /**\n * Magenta color (Tailwind fuchsia-500: #d946ef)\n * @param {string} [text] - Optional text to style immediately\n * @returns {string|Sheu} Styled text or chainable instance\n */\n magenta(text?: string): string | Sheu {\n if (text !== undefined) {\n return `\\x1b[35m${text}\\x1b[0m`;\n }\n const instance = this._chain();\n instance.codes.push(\"\\x1b[35m\");\n return instance;\n }\n\n /**\n * White color (Tailwind white: #ffffff)\n * @param {string} [text] - Optional text to style immediately\n * @returns {string|Sheu} Styled text or chainable instance\n */\n white(text?: string): string | Sheu {\n if (text !== undefined) {\n return `\\x1b[37m${text}\\x1b[0m`;\n }\n const instance = this._chain();\n instance.codes.push(\"\\x1b[37m\");\n return instance;\n }\n\n /**\n * Black color (Tailwind black: #000000)\n * @param {string} [text] - Optional text to style immediately\n * @returns {string|Sheu} Styled text or chainable instance\n */\n black(text?: string): string | Sheu {\n if (text !== undefined) {\n return `\\x1b[30m${text}\\x1b[0m`;\n }\n const instance = this._chain();\n instance.codes.push(\"\\x1b[30m\");\n return instance;\n }\n\n /**\n * Gray color (Tailwind gray-500: #6b7280)\n * @param {string} [text] - Optional text to style immediately\n * @returns {string|Sheu} Styled text or chainable instance\n */\n gray(text?: string): string | Sheu {\n if (text !== undefined) {\n return `\\x1b[90m${text}\\x1b[0m`;\n }\n const instance = this._chain();\n instance.codes.push(\"\\x1b[90m\");\n return instance;\n }\n\n /**\n * Orange color (Tailwind orange-500: #f97316)\n * @param {string} [text] - Optional text to style immediately\n * @returns {string|Sheu} Styled text or chainable instance\n */\n orange(text?: string): string | Sheu {\n if (text !== undefined) {\n return `\\x1b[91m${text}\\x1b[0m`;\n }\n const instance = this._chain();\n instance.codes.push(\"\\x1b[91m\");\n return instance;\n }\n\n /**\n * Bold text formatting\n * @param {string} [text] - Optional text to style immediately\n * @returns {string|Sheu} Styled text or chainable instance\n */\n bold(text?: string): string | Sheu {\n if (text !== undefined) {\n return `\\x1b[1m${text}\\x1b[0m`;\n }\n const instance = this._chain();\n instance.codes.push(\"\\x1b[1m\");\n return instance;\n }\n\n /**\n * Apply all accumulated styles to text\n * @param {string} text - The text to style\n * @returns {string} The styled text\n */\n apply(text: string): string {\n return this._apply(text);\n }\n\n /**\n * Info label with cyan color [INFO]\n * @param {string} [message] - Optional message to append\n * @returns {string} Formatted info label\n */\n info(message?: string): string {\n const label = `[\\x1b[36mINFO\\x1b[0m]`;\n const content = message ? `${label} ${message}` : label;\n console.info(content);\n return content;\n }\n\n /**\n * Error label with red color [ERROR]\n * @param {string} [message] - Optional message to append\n * @returns {string} Formatted error label\n */\n error(message?: string): string {\n const label = `[\\x1b[31mERROR\\x1b[0m]`;\n const content = message ? `${label} ${message}` : label;\n console.info(content);\n return content;\n }\n\n /**\n * Ready label with green color [READY]\n * @param {string} [message] - Optional message to append\n * @returns {string} Formatted ready label\n */\n ready(message?: string): string {\n const label = `[\\x1b[32mREADY\\x1b[0m]`;\n const content = message ? `${label} ${message}` : label;\n console.info(content);\n return content;\n }\n\n /**\n * Done label with green color [DONE]\n * @param {string} [message] - Optional message to append\n * @returns {string} Formatted done label\n */\n done(message?: string): string {\n const label = `[\\x1b[32mDONE\\x1b[0m]`;\n const content = message ? `${label} ${message}` : label;\n console.info(content);\n return content;\n }\n\n /**\n * Warning label with yellow color [WARN]\n * @param {string} [message] - Optional message to append\n * @returns void\n */\n warn(message?: string) {\n const label = `[\\x1b[33mWARN\\x1b[0m]`;\n console.info(message ? `${label} ${message}` : label);\n }\n}\n\n// Create default instance\nconst sheu = new Sheu();\n\n// Add static methods to the default instance for direct usage\nObject.getOwnPropertyNames(Sheu.prototype).forEach((method) => {\n if (method !== \"constructor\" && method !== \"_apply\" && method !== \"_chain\") {\n (sheu as any)[method] = Sheu.prototype[method as keyof Object].bind(\n new Sheu()\n );\n }\n});\n\nexport default sheu;\n"]}
@@ -1,6 +1,6 @@
1
1
  import { plainToInstance } from "class-transformer";
2
2
  import { validate } from "class-validator";
3
- import AppError from "../modules/error-handler/utils/app-error";
3
+ import AppError from "../modules/error-handler/utils/app-error.js";
4
4
  export default async function validateDto(DtoClass, data, validationOptions) {
5
5
  const dataDto = plainToInstance(DtoClass, data);
6
6
  const errors = await validate(dataDto, validationOptions);
@@ -1,4 +1,4 @@
1
- import AppError from "../modules/error-handler/utils/app-error";
1
+ import AppError from "../modules/error-handler/utils/app-error.js";
2
2
  export default async function validateSchema(schema, data) {
3
3
  const result = schema.safeParse(data);
4
4
  if (!result.success) {
@@ -3,11 +3,11 @@ export declare const defaultExcludedUserFields: {
3
3
  password: boolean;
4
4
  };
5
5
  export declare const authControllerFactory: (middlewares?: any) => Promise<{
6
- getMe: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
7
- updateMe: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
8
- logout: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
9
- login: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
10
- signup: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
11
- deleteMe: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
12
- updatePassword: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
6
+ getMe: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;
7
+ updateMe: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;
8
+ logout: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;
9
+ login: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;
10
+ signup: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;
11
+ deleteMe: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;
12
+ updatePassword: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;
13
13
  }>;
@@ -12,7 +12,7 @@ export declare class AuthService {
12
12
  verifyJwtToken(token: string, secret?: string): Promise<AuthJwtPayload>;
13
13
  handleAccessControl(action: AccessAction, resourceName: string, accessControl?: AccessControlConfig): ArkosRequestHandler;
14
14
  getAuthenticatedUser(req: ArkosRequest): Promise<User | null>;
15
- authenticate: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
15
+ authenticate: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;
16
16
  handleAuthenticationControl(action: AccessAction, authenticationControl?: AuthenticationControlConfig | undefined): ArkosRequestHandler;
17
17
  }
18
18
  declare const authService: AuthService;
@@ -4,14 +4,14 @@ export declare class BaseController {
4
4
  private modelName;
5
5
  private middlewares;
6
6
  constructor(modelName: string);
7
- createOne: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
8
- createMany: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
9
- findMany: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
10
- findOne: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
11
- updateOne: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
12
- updateMany: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
13
- deleteOne: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
14
- deleteMany: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
7
+ createOne: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;
8
+ createMany: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;
9
+ findMany: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;
10
+ findOne: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;
11
+ updateOne: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;
12
+ updateMany: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;
13
+ deleteOne: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;
14
+ deleteMany: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;
15
15
  }
16
16
  export declare function getAvalibleRoutes(req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction): void;
17
- export declare const getAvailableResources: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
17
+ export declare const getAvailableResources: (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<unknown>;