arkos 1.2.10-test → 1.2.11-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 (255) 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.service.js +0 -7
  6. package/dist/cjs/modules/auth/auth.service.js.map +1 -1
  7. package/dist/cjs/modules/base/base.controller.js +11 -12
  8. package/dist/cjs/modules/base/base.controller.js.map +1 -1
  9. package/dist/cjs/modules/base/base.router.js.map +1 -1
  10. package/dist/cjs/modules/base/base.service.js +2 -0
  11. package/dist/cjs/modules/base/base.service.js.map +1 -1
  12. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +41 -27
  13. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  14. package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
  15. package/dist/cjs/modules/error-handler/utils/catch-async.js +1 -1
  16. package/dist/cjs/modules/error-handler/utils/catch-async.js.map +1 -1
  17. package/dist/cjs/modules/swagger/swagger.router.js +14 -56
  18. package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
  19. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +250 -0
  20. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -0
  21. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +66 -0
  22. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -0
  23. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +41 -0
  24. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -0
  25. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +22 -0
  26. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -0
  27. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +30 -0
  28. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +1 -0
  29. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +442 -0
  30. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -0
  31. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +165 -0
  32. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -0
  33. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +93 -0
  34. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
  35. package/dist/cjs/server.js +2 -2
  36. package/dist/cjs/server.js.map +1 -1
  37. package/dist/cjs/types/arkos-config.js.map +1 -1
  38. package/dist/cjs/utils/cli/build.js +2 -19
  39. package/dist/cjs/utils/cli/build.js.map +1 -1
  40. package/dist/cjs/utils/cli/dev.js +16 -29
  41. package/dist/cjs/utils/cli/dev.js.map +1 -1
  42. package/dist/cjs/utils/cli/generate.js +6 -6
  43. package/dist/cjs/utils/cli/generate.js.map +1 -1
  44. package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -3
  45. package/dist/cjs/utils/cli/utils/cli.helpers.js.map +1 -1
  46. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +33 -66
  47. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +1 -1
  48. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +16 -10
  49. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +1 -1
  50. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +5 -0
  51. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -1
  52. package/dist/cjs/utils/helpers/fs.helpers.js +12 -5
  53. package/dist/cjs/utils/helpers/fs.helpers.js.map +1 -1
  54. package/dist/cjs/utils/helpers/global.helpers.js +69 -2
  55. package/dist/cjs/utils/helpers/global.helpers.js.map +1 -1
  56. package/dist/cjs/utils/helpers/models.helpers.js +20 -44
  57. package/dist/cjs/utils/helpers/models.helpers.js.map +1 -1
  58. package/dist/cjs/utils/helpers/prisma.helpers.js +7 -4
  59. package/dist/cjs/utils/helpers/prisma.helpers.js.map +1 -1
  60. package/dist/cjs/utils/sheu.js +143 -0
  61. package/dist/cjs/utils/sheu.js.map +1 -0
  62. package/dist/esm/app.js +1 -0
  63. package/dist/esm/app.js.map +1 -0
  64. package/dist/{es2020 → esm}/exports/auth/index.js +1 -1
  65. package/dist/{es2020 → esm}/exports/controllers/index.js +2 -2
  66. package/dist/{es2020 → esm}/exports/error-handler/index.js +2 -2
  67. package/dist/{es2020 → esm}/exports/index.js +2 -2
  68. package/dist/{es2020 → esm}/exports/middlewares/index.js +1 -1
  69. package/dist/esm/exports/prisma/index.js +3 -0
  70. package/dist/{es2020 → esm}/exports/services/index.js +4 -4
  71. package/dist/esm/exports/utils/index.js +4 -0
  72. package/dist/esm/exports/validation/index.js +4 -0
  73. package/dist/{es2020 → esm}/modules/auth/auth.controller.js +7 -7
  74. package/dist/{es2020 → esm}/modules/auth/auth.router.js +6 -6
  75. package/dist/{es2020 → esm}/modules/auth/auth.service.js +6 -13
  76. package/dist/esm/modules/auth/auth.service.js.map +1 -0
  77. package/dist/{es2020 → esm}/modules/auth/utils/helpers/auth.controller.helpers.js +2 -2
  78. package/dist/{es2020 → esm}/modules/base/base.controller.js +18 -19
  79. package/dist/esm/modules/base/base.controller.js.map +1 -0
  80. package/dist/{es2020 → esm}/modules/base/base.middlewares.js +6 -6
  81. package/dist/{es2020 → esm}/modules/base/base.router.js +4 -4
  82. package/dist/esm/modules/base/base.router.js.map +1 -0
  83. package/dist/{es2020 → esm}/modules/base/base.service.js +8 -6
  84. package/dist/esm/modules/base/base.service.js.map +1 -0
  85. package/dist/{es2020 → esm}/modules/base/utils/helpers/base.controller.helpers.js +1 -1
  86. package/dist/{es2020 → esm}/modules/base/utils/helpers/base.middlewares.helpers.js +1 -1
  87. package/dist/{es2020 → esm}/modules/base/utils/helpers/base.router.helpers.js +45 -33
  88. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -0
  89. package/dist/{es2020 → esm}/modules/base/utils/helpers/base.service.helpers.js +1 -1
  90. package/dist/{es2020 → esm}/modules/email/email.service.js +2 -2
  91. package/dist/{es2020 → esm}/modules/error-handler/error-handler.controller.js +3 -3
  92. package/dist/{es2020 → esm}/modules/error-handler/error-handler.controller.js.map +1 -1
  93. package/dist/{es2020 → esm}/modules/error-handler/utils/catch-async.js +1 -1
  94. package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -0
  95. package/dist/{es2020 → esm}/modules/error-handler/utils/error-handler.helpers.js +1 -1
  96. package/dist/{es2020 → esm}/modules/file-upload/file-upload.controller.js +7 -7
  97. package/dist/{es2020 → esm}/modules/file-upload/file-upload.router.js +5 -5
  98. package/dist/{es2020 → esm}/modules/file-upload/file-upload.service.js +5 -5
  99. package/dist/{es2020 → esm}/modules/file-upload/utils/helpers/file-upload.helpers.js +2 -2
  100. package/dist/{es2020 → esm}/modules/swagger/swagger.router.js +15 -57
  101. package/dist/esm/modules/swagger/swagger.router.js.map +1 -0
  102. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +247 -0
  103. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -0
  104. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +63 -0
  105. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -0
  106. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +38 -0
  107. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -0
  108. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +19 -0
  109. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -0
  110. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +24 -0
  111. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +1 -0
  112. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +436 -0
  113. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -0
  114. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +159 -0
  115. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -0
  116. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +83 -0
  117. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
  118. package/dist/esm/server.js +3 -0
  119. package/dist/esm/server.js.map +1 -0
  120. package/dist/esm/types/arkos-config.js.map +1 -0
  121. package/dist/{es2020 → esm}/utils/cli/build.js +4 -21
  122. package/dist/esm/utils/cli/build.js.map +1 -0
  123. package/dist/{es2020 → esm}/utils/cli/dev.js +20 -33
  124. package/dist/esm/utils/cli/dev.js.map +1 -0
  125. package/dist/{es2020 → esm}/utils/cli/generate.js +10 -10
  126. package/dist/{es2020 → esm}/utils/cli/generate.js.map +1 -1
  127. package/dist/{es2020 → esm}/utils/cli/index.js +5 -5
  128. package/dist/{es2020 → esm}/utils/cli/start.js +4 -4
  129. package/dist/esm/utils/cli/utils/cli.helpers.js +16 -0
  130. package/dist/esm/utils/cli/utils/cli.helpers.js.map +1 -0
  131. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +1 -1
  132. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-middlewares.js +34 -67
  133. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +1 -0
  134. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +18 -12
  135. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +1 -0
  136. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-router-template.js +6 -1
  137. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -0
  138. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-service-template.js +2 -2
  139. package/dist/{es2020 → esm}/utils/cli/utils/template-generators.js +6 -6
  140. package/dist/{es2020 → esm}/utils/features/api.features.js +4 -4
  141. package/dist/{es2020 → esm}/utils/features/change-case.features.js +1 -1
  142. package/dist/{es2020 → esm}/utils/helpers/fs.helpers.js +12 -5
  143. package/dist/esm/utils/helpers/fs.helpers.js.map +1 -0
  144. package/dist/esm/utils/helpers/global.helpers.js +65 -0
  145. package/dist/esm/utils/helpers/global.helpers.js.map +1 -0
  146. package/dist/{es2020 → esm}/utils/helpers/models.helpers.js +21 -12
  147. package/dist/esm/utils/helpers/models.helpers.js.map +1 -0
  148. package/dist/{es2020 → esm}/utils/helpers/prisma.helpers.js +11 -8
  149. package/dist/esm/utils/helpers/prisma.helpers.js.map +1 -0
  150. package/dist/esm/utils/sheu.js +141 -0
  151. package/dist/esm/utils/sheu.js.map +1 -0
  152. package/dist/{es2020 → esm}/utils/validate-dto.js +1 -1
  153. package/dist/{es2020 → esm}/utils/validate-schema.js +1 -1
  154. package/dist/types/modules/base/base.service.d.ts +1 -1
  155. package/dist/types/modules/base/utils/helpers/base.router.helpers.d.ts +4 -1
  156. package/dist/types/modules/swagger/swagger.router.d.ts +1 -1
  157. package/dist/types/modules/swagger/utils/helpers/get-authentication-json-schema-paths.d.ts +2 -0
  158. package/dist/types/modules/swagger/utils/helpers/get-system-json-schema-paths.d.ts +2 -0
  159. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.d.ts +1 -0
  160. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.d.ts +1 -0
  161. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.d.ts +1 -0
  162. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.d.ts +2 -0
  163. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.d.ts +2 -0
  164. package/dist/types/modules/swagger/utils/helpers/swagger.router.helpers.d.ts +7 -0
  165. package/dist/types/types/arkos-config.d.ts +7 -4
  166. package/dist/types/utils/cli/utils/cli.helpers.d.ts +1 -1
  167. package/dist/types/utils/helpers/global.helpers.d.ts +6 -1
  168. package/dist/types/utils/helpers/models.helpers.d.ts +10 -1
  169. package/dist/types/utils/sheu.d.ts +25 -0
  170. package/package.json +23 -29
  171. package/dist/es2020/app.js +0 -1
  172. package/dist/es2020/app.js.map +0 -1
  173. package/dist/es2020/exports/prisma/index.js +0 -3
  174. package/dist/es2020/exports/utils/index.js +0 -4
  175. package/dist/es2020/exports/validation/index.js +0 -4
  176. package/dist/es2020/modules/auth/auth.service.js.map +0 -1
  177. package/dist/es2020/modules/base/base.controller.js.map +0 -1
  178. package/dist/es2020/modules/base/base.router.js.map +0 -1
  179. package/dist/es2020/modules/base/base.service.js.map +0 -1
  180. package/dist/es2020/modules/base/utils/helpers/base.router.helpers.js.map +0 -1
  181. package/dist/es2020/modules/error-handler/utils/catch-async.js.map +0 -1
  182. package/dist/es2020/modules/swagger/swagger.router.js.map +0 -1
  183. package/dist/es2020/server.js +0 -3
  184. package/dist/es2020/server.js.map +0 -1
  185. package/dist/es2020/types/arkos-config.js.map +0 -1
  186. package/dist/es2020/utils/cli/build.js.map +0 -1
  187. package/dist/es2020/utils/cli/dev.js.map +0 -1
  188. package/dist/es2020/utils/cli/utils/cli.helpers.js +0 -18
  189. package/dist/es2020/utils/cli/utils/cli.helpers.js.map +0 -1
  190. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +0 -1
  191. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -1
  192. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -1
  193. package/dist/es2020/utils/helpers/fs.helpers.js.map +0 -1
  194. package/dist/es2020/utils/helpers/global.helpers.js +0 -4
  195. package/dist/es2020/utils/helpers/global.helpers.js.map +0 -1
  196. package/dist/es2020/utils/helpers/models.helpers.js.map +0 -1
  197. package/dist/es2020/utils/helpers/prisma.helpers.js.map +0 -1
  198. /package/dist/{es2020 → esm}/exports/auth/index.js.map +0 -0
  199. /package/dist/{es2020 → esm}/exports/controllers/index.js.map +0 -0
  200. /package/dist/{es2020 → esm}/exports/error-handler/index.js.map +0 -0
  201. /package/dist/{es2020 → esm}/exports/index.js.map +0 -0
  202. /package/dist/{es2020 → esm}/exports/middlewares/index.js.map +0 -0
  203. /package/dist/{es2020 → esm}/exports/prisma/index.js.map +0 -0
  204. /package/dist/{es2020 → esm}/exports/services/index.js.map +0 -0
  205. /package/dist/{es2020 → esm}/exports/utils/index.js.map +0 -0
  206. /package/dist/{es2020 → esm}/exports/validation/index.js.map +0 -0
  207. /package/dist/{es2020 → esm}/modules/auth/auth.controller.js.map +0 -0
  208. /package/dist/{es2020 → esm}/modules/auth/auth.router.js.map +0 -0
  209. /package/dist/{es2020 → esm}/modules/auth/utils/helpers/auth.controller.helpers.js.map +0 -0
  210. /package/dist/{es2020 → esm}/modules/base/base.middlewares.js.map +0 -0
  211. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.controller.helpers.js.map +0 -0
  212. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.middlewares.helpers.js.map +0 -0
  213. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.service.helpers.js.map +0 -0
  214. /package/dist/{es2020 → esm}/modules/email/email.service.js.map +0 -0
  215. /package/dist/{es2020 → esm}/modules/error-handler/utils/app-error.js +0 -0
  216. /package/dist/{es2020 → esm}/modules/error-handler/utils/app-error.js.map +0 -0
  217. /package/dist/{es2020 → esm}/modules/error-handler/utils/error-handler.helpers.js.map +0 -0
  218. /package/dist/{es2020 → esm}/modules/file-upload/file-upload.controller.js.map +0 -0
  219. /package/dist/{es2020 → esm}/modules/file-upload/file-upload.router.js.map +0 -0
  220. /package/dist/{es2020 → esm}/modules/file-upload/file-upload.service.js.map +0 -0
  221. /package/dist/{es2020 → esm}/modules/file-upload/utils/helpers/file-upload.helpers.js.map +0 -0
  222. /package/dist/{es2020 → esm}/paths.js +0 -0
  223. /package/dist/{es2020 → esm}/paths.js.map +0 -0
  224. /package/dist/{es2020 → esm}/types/arkos-config.js +0 -0
  225. /package/dist/{es2020 → esm}/types/auth.js +0 -0
  226. /package/dist/{es2020 → esm}/types/auth.js.map +0 -0
  227. /package/dist/{es2020 → esm}/types/index.js +0 -0
  228. /package/dist/{es2020 → esm}/types/index.js.map +0 -0
  229. /package/dist/{es2020 → esm}/types/router-config.js +0 -0
  230. /package/dist/{es2020 → esm}/types/router-config.js.map +0 -0
  231. /package/dist/{es2020 → esm}/utils/arkos-env.js +0 -0
  232. /package/dist/{es2020 → esm}/utils/arkos-env.js.map +0 -0
  233. /package/dist/{es2020 → esm}/utils/cli/index.js.map +0 -0
  234. /package/dist/{es2020 → esm}/utils/cli/start.js.map +0 -0
  235. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -0
  236. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -0
  237. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -0
  238. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-service-template.js.map +0 -0
  239. /package/dist/{es2020 → esm}/utils/cli/utils/template-generators.js.map +0 -0
  240. /package/dist/{es2020 → esm}/utils/dotenv.helpers.js +0 -0
  241. /package/dist/{es2020 → esm}/utils/dotenv.helpers.js.map +0 -0
  242. /package/dist/{es2020 → esm}/utils/features/api.features.js.map +0 -0
  243. /package/dist/{es2020 → esm}/utils/features/change-case.features.js.map +0 -0
  244. /package/dist/{es2020 → esm}/utils/helpers/api.features.helpers.js +0 -0
  245. /package/dist/{es2020 → esm}/utils/helpers/api.features.helpers.js.map +0 -0
  246. /package/dist/{es2020 → esm}/utils/helpers/change-case.helpers.js +0 -0
  247. /package/dist/{es2020 → esm}/utils/helpers/change-case.helpers.js.map +0 -0
  248. /package/dist/{es2020 → esm}/utils/helpers/deepmerge.helper.js +0 -0
  249. /package/dist/{es2020 → esm}/utils/helpers/deepmerge.helper.js.map +0 -0
  250. /package/dist/{es2020 → esm}/utils/helpers/query-parser.helpers.js +0 -0
  251. /package/dist/{es2020 → esm}/utils/helpers/query-parser.helpers.js.map +0 -0
  252. /package/dist/{es2020 → esm}/utils/helpers/text.helpers.js +0 -0
  253. /package/dist/{es2020 → esm}/utils/helpers/text.helpers.js.map +0 -0
  254. /package/dist/{es2020 → esm}/utils/validate-dto.js.map +0 -0
  255. /package/dist/{es2020 → esm}/utils/validate-schema.js.map +0 -0
@@ -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 ||
@@ -259,7 +266,6 @@ export function initializePrismaModels() {
259
266
  }
260
267
  }
261
268
  }
262
- initializePrismaModels();
263
269
  export function getPrismaModelRelations(modelName) {
264
270
  modelName = pascalCase(modelName);
265
271
  if (!(modelName in prismaModelRelationFields))
@@ -269,6 +275,9 @@ export function getPrismaModelRelations(modelName) {
269
275
  function getModels() {
270
276
  return models;
271
277
  }
278
+ export function getPrismaSchemasContent() {
279
+ return prismaSchemasContent;
280
+ }
272
281
  function getModelUniqueFields(modelName) {
273
282
  return prismaModelsUniqueFields[modelName];
274
283
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/models.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\nimport {\n camelCase,\n kebabCase,\n pascalCase,\n} from \"../../utils/helpers/change-case.helpers\";\nimport { crd, getUserFileExtension } from \"./fs.helpers\";\nimport { importModule } from \"./global.helpers\";\nimport { AuthConfigs } from \"../../types/auth\";\nimport { killServerChildProcess } from \"../cli/utils/cli.helpers\";\n\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 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\n// initializePrismaModels();\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,24 +1,27 @@
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) {
9
9
  try {
10
10
  let prismaPath = `${crd()}/src/utils/prisma.${ext()}`;
11
- if (!fs.existsSync(prismaPath)) {
11
+ if (!fs.existsSync(prismaPath))
12
12
  prismaPath = `${crd()}/src/utils/prisma/index.${ext()}`;
13
- }
14
- const prismaModule = await importModule(prismaPath);
13
+ if (!fs.existsSync(prismaPath))
14
+ throw new Error("Could not found exported prisma insteance");
15
+ const prismaModule = await importModule(prismaPath, {
16
+ fixExtension: false,
17
+ });
15
18
  prismaInstance = prismaModule.default || prismaModule.prisma;
16
19
  if (!prismaInstance)
17
20
  throw new Error("Prisma not found");
18
21
  }
19
22
  catch (error) {
20
23
  if (error.message === "Prisma not found")
21
- throw new AppError(`Could not initialize Prisma module. Make sure your prisma instance is exported under src/utils/prisma.${ext()} or src/utils/prisma/index.${ext()}, read more about Arkos' Project Structure under https://www.arkosjs.com/docs/project-structure#root-structure`, 500, {}, "prisma_instance_not_found");
24
+ throw new AppError(`Could not initialize Prisma module. Make sure your prisma instance is exported under src/utils/prisma.${ext()} or src/utils/prisma/index.${ext()}, read more about Arkos' Project Structure under https://www.arkosjs.com/docs/project-structure#root-structure`, 500, {}, "PrismaInstanceNotFound");
22
25
  throw error;
23
26
  }
24
27
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prisma.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/prisma.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,UAAU,MAAM,+CAA+C,CAAC;AACvE,OAAO,QAAQ,MAAM,6CAA6C,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,oBAAoB,IAAI,GAAG,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,CAAC,IAAI,cAAc,GAAQ,IAAI,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,IAAI,UAAU,GAAG,GAAG,GAAG,EAAE,qBAAqB,GAAG,EAAE,EAAE,CAAC;YAEtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;gBAC5B,UAAU,GAAG,GAAG,GAAG,EAAE,2BAA2B,GAAG,EAAE,EAAE,CAAC;YAE1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAE/D,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE;gBAClD,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;YACH,cAAc,GAAG,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC;YAE7D,IAAI,CAAC,cAAc;gBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,OAAO,KAAK,kBAAkB;gBACtC,MAAM,IAAI,QAAQ,CAChB,yGAAyG,GAAG,EAAE,8BAA8B,GAAG,EAAE,gHAAgH,EACjQ,GAAG,EACH,EAAE,EACF,wBAAwB,CACzB,CAAC;YACJ,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAC/C,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,IAAI,EAAE,CAAC;IACT,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;AACH,CAAC,CACF,CAAC","sourcesContent":["import fs from \"fs\";\nimport { Request, Response, NextFunction } from \"express\";\nimport catchAsync from \"../../modules/error-handler/utils/catch-async\";\nimport AppError from \"../../modules/error-handler/utils/app-error\";\nimport { crd, getUserFileExtension as ext } from \"./fs.helpers\";\nimport { importModule } from \"./global.helpers\";\n\nexport let prismaInstance: any = null;\n\nexport async function loadPrismaModule() {\n if (!prismaInstance) {\n try {\n let prismaPath = `${crd()}/src/utils/prisma.${ext()}`;\n\n if (!fs.existsSync(prismaPath))\n prismaPath = `${crd()}/src/utils/prisma/index.${ext()}`;\n\n if (!fs.existsSync(prismaPath))\n throw new Error(\"Could not found exported prisma insteance\");\n\n const prismaModule = await importModule(prismaPath, {\n fixExtension: false,\n });\n prismaInstance = prismaModule.default || prismaModule.prisma;\n\n if (!prismaInstance) throw new Error(\"Prisma not found\");\n } catch (error: any) {\n if (error.message === \"Prisma not found\")\n throw new AppError(\n `Could not initialize Prisma module. Make sure your prisma instance is exported under src/utils/prisma.${ext()} or src/utils/prisma/index.${ext()}, read more about Arkos' Project Structure under https://www.arkosjs.com/docs/project-structure#root-structure`,\n 500,\n {},\n \"PrismaInstanceNotFound\"\n );\n throw error;\n }\n }\n return prismaInstance;\n}\n\nexport function getPrismaInstance() {\n return prismaInstance;\n}\n\nexport const checkDatabaseConnection = catchAsync(\n async (req: Request, res: Response, next: NextFunction) => {\n const prisma = await loadPrismaModule();\n try {\n await prisma.$connect();\n next();\n } catch (error: any) {\n console.error(\"Database connection error\", error.message);\n next(new AppError(error.message, 503));\n }\n }\n);\n"]}
@@ -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) {
@@ -20,7 +20,7 @@ export declare class BaseService<ModelDelegate extends Record<string, any> = any
20
20
  where?: infer W;
21
21
  [x: string]: any;
22
22
  } ? W : any): Promise<number>;
23
- findMany<TOptions extends Omit<Parameters<ModelDelegate["findMany"]>[0], "where">>(filters: Parameters<ModelDelegate["findMany"]>[0] extends {
23
+ findMany<TOptions extends Omit<Parameters<ModelDelegate["findMany"]>[0], "where">>(filters?: Parameters<ModelDelegate["findMany"]>[0] extends {
24
24
  where?: infer W;
25
25
  [x: string]: any;
26
26
  } ? W : any, queryOptions?: TOptions): Promise<ModelDelegate["findMany"] extends (args: {
@@ -1,3 +1,6 @@
1
1
  import { Router } from "express";
2
- import { ArkosConfig } from "../../../../exports";
2
+ import { ArkosConfig, RouterConfig } from "../../../../exports";
3
+ import { RouterEndpoint } from "../../../../types/router-config";
3
4
  export declare function setupRouters(models: string[], router: Router, arkosConfigs: ArkosConfig): Promise<void>[];
5
+ export declare function isEndpointDisabled(routerConfig: RouterConfig, endpoint: RouterEndpoint): boolean;
6
+ export declare function isParentEndpointAllowed(routerConfig: any, endpoint: string): boolean;
@@ -1,3 +1,3 @@
1
1
  import { Router } from "express";
2
2
  import { ArkosConfig } from "../../types/arkos-config";
3
- export declare function getSwaggerRouter(arkosConfig: ArkosConfig): Router;
3
+ export declare function getSwaggerRouter(arkosConfig: ArkosConfig): Promise<Router>;
@@ -0,0 +1,2 @@
1
+ import { OpenAPIV3 } from "openapi-types";
2
+ export declare function getAuthenticationJsonSchemaPaths(): OpenAPIV3.PathsObject<{}, {}>;
@@ -0,0 +1,2 @@
1
+ import { OpenAPIV3 } from "openapi-types";
2
+ export declare function getSystemJsonSchemaPaths(): OpenAPIV3.PathsObject<{}, {}>;
@@ -0,0 +1 @@
1
+ export declare function generateClassValidatorJsonSchemas(): Promise<Record<string, any>>;
@@ -0,0 +1 @@
1
+ export declare function generatePrismaJsonSchemas(): Promise<void>;
@@ -0,0 +1 @@
1
+ export declare function generateZodJsonSchemas(): Promise<Record<string, any>>;
@@ -0,0 +1,2 @@
1
+ import { OpenAPIV3 } from "openapi-types";
2
+ export declare function generatePrismaModelMainRoutesPaths(paths: OpenAPIV3.PathsObject, routeName: string, pascalModelName: string, humanReadableName: string, humanReadableNamePlural: string, routerConfig: any, mode: string): Promise<void>;
@@ -0,0 +1,2 @@
1
+ import { OpenAPIV3 } from "openapi-types";
2
+ export declare function generatePrismaModelParentRoutePaths(paths: OpenAPIV3.PathsObject, routeName: string, pascalModelName: string, humanReadableName: string, humanReadableNamePlural: string, routerConfig: any, mode: string): Promise<void>;
@@ -0,0 +1,7 @@
1
+ import { ArkosConfig } from "../../../../exports";
2
+ import { OpenAPIV3 } from "openapi-types";
3
+ export declare function getOpenAPIJsonSchemasByConfigMode(swaggerConfig: ArkosConfig["swagger"]): Promise<void | Record<string, any>>;
4
+ export declare function getCorrectJsonSchemaName(type: string, modelName: string, suffix: "Dto" | "Schema"): string;
5
+ export declare function kebabToHuman(kebabStr: string): string;
6
+ export declare function getSchemaRef(schemaName: string, mode: string): string;
7
+ export declare function generatePathsForModels(swaggerConfig: ArkosConfig["swagger"]): Promise<OpenAPIV3.PathsObject>;
@@ -7,6 +7,7 @@ import compression from "compression";
7
7
  import { Options as QueryParserOptions } from "../utils/helpers/query-parser.helpers";
8
8
  import { ValidatorOptions } from "class-validator";
9
9
  import { MsDuration } from "../modules/auth/utils/helpers/auth.controller.helpers";
10
+ import { OpenAPIV3 } from "openapi-types";
10
11
  export type ArkosConfig = {
11
12
  request?: {
12
13
  parameters?: {
@@ -120,10 +121,11 @@ export type ArkosConfig = {
120
121
  name?: string;
121
122
  };
122
123
  swagger?: {
124
+ enableAfterBuild?: boolean;
123
125
  endpoint?: string;
124
- mode: "prisma" | "class-validator" | "zod" | "json-schema";
125
- options: {
126
- definition: {
126
+ mode: "prisma" | "class-validator" | "zod";
127
+ options?: {
128
+ definition?: {
127
129
  openapi?: string;
128
130
  info?: {
129
131
  title?: string;
@@ -132,8 +134,9 @@ export type ArkosConfig = {
132
134
  };
133
135
  servers?: {
134
136
  url: string;
135
- description: string;
137
+ description?: string;
136
138
  }[];
139
+ paths?: OpenAPIV3.PathsObject;
137
140
  termsOfService?: string;
138
141
  contact?: {
139
142
  name?: string;
@@ -1,3 +1,3 @@
1
1
  export declare function ensureDirectoryExists(dirPath: string): void;
2
2
  export declare function killServerChildProcess(): void;
3
- export declare function getVersion(): any;
3
+ export declare function getVersion(): string;
@@ -1 +1,6 @@
1
- export declare function importModule(path: string): Promise<any>;
1
+ export declare function getPackageJson(): any;
2
+ export declare function isEsm(): boolean;
3
+ export declare function importModule(modulePath: string, options?: {
4
+ fixExtension: boolean;
5
+ }): Promise<any>;
6
+ export declare function detectPackageManagerFromUserAgent(): string;
@@ -1,5 +1,4 @@
1
1
  import { AuthConfigs } from "../../types/auth";
2
- export declare let prismaModelsModules: Record<string, Awaited<ReturnType<typeof importPrismaModelModules>>>;
3
2
  export declare function getModelModules(modelName: string): importPrismaModelModulesReturnType;
4
3
  export declare function getFileModelModulesFileStructure(modelName: string): {
5
4
  core: {
@@ -22,6 +21,8 @@ export declare function getFileModelModulesFileStructure(modelName: string): {
22
21
  createMany?: undefined;
23
22
  update?: undefined;
24
23
  updateMany?: undefined;
24
+ findOne?: undefined;
25
+ findMany?: undefined;
25
26
  query?: undefined;
26
27
  } | {
27
28
  model: string;
@@ -29,6 +30,8 @@ export declare function getFileModelModulesFileStructure(modelName: string): {
29
30
  createMany: string;
30
31
  update: string;
31
32
  updateMany: string;
33
+ findOne: string;
34
+ findMany: string;
32
35
  query: string;
33
36
  login?: undefined;
34
37
  signup?: undefined;
@@ -45,6 +48,8 @@ export declare function getFileModelModulesFileStructure(modelName: string): {
45
48
  createMany?: undefined;
46
49
  update?: undefined;
47
50
  updateMany?: undefined;
51
+ findOne?: undefined;
52
+ findMany?: undefined;
48
53
  query?: undefined;
49
54
  } | {
50
55
  model: string;
@@ -52,6 +57,8 @@ export declare function getFileModelModulesFileStructure(modelName: string): {
52
57
  createMany: string;
53
58
  update: string;
54
59
  updateMany: string;
60
+ findOne: string;
61
+ findMany: string;
55
62
  query: string;
56
63
  login?: undefined;
57
64
  signup?: undefined;
@@ -87,9 +94,11 @@ export type RelationFields = {
87
94
  export declare const prismaModelRelationFields: Record<string, RelationFields>;
88
95
  export declare function getAllPrismaFiles(dirPath: string, fileList?: string[]): string[];
89
96
  export declare const models: string[];
97
+ export declare let prismaSchemasContent: string;
90
98
  export declare const prismaModelsUniqueFields: Record<string, ModelFieldDefition[]>;
91
99
  export declare function initializePrismaModels(): void;
92
100
  export declare function getPrismaModelRelations(modelName: string): RelationFields | undefined;
93
101
  declare function getModels(): string[];
102
+ export declare function getPrismaSchemasContent(): string;
94
103
  declare function getModelUniqueFields(modelName: string): ModelFieldDefition[];
95
104
  export { getModels, getModelUniqueFields };
@@ -0,0 +1,25 @@
1
+ declare class Sheu {
2
+ codes: string[];
3
+ constructor();
4
+ _apply(text: string): string;
5
+ _chain(): Sheu;
6
+ red(text?: string): string | Sheu;
7
+ blue(text?: string): string | Sheu;
8
+ green(text?: string): string | Sheu;
9
+ yellow(text?: string): string | Sheu;
10
+ cyan(text?: string): string | Sheu;
11
+ magenta(text?: string): string | Sheu;
12
+ white(text?: string): string | Sheu;
13
+ black(text?: string): string | Sheu;
14
+ gray(text?: string): string | Sheu;
15
+ orange(text?: string): string | Sheu;
16
+ bold(text?: string): string | Sheu;
17
+ apply(text: string): string;
18
+ info(message?: string): string;
19
+ error(message?: string): string;
20
+ ready(message?: string): string;
21
+ done(message?: string): string;
22
+ warn(message?: string): void;
23
+ }
24
+ declare const sheu: Sheu;
25
+ export default sheu;