arkos 1.2.15-test → 1.2.15-test.2

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 (428) 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/exports/auth/index.js +1 -6
  6. package/dist/cjs/exports/controllers/index.js +1 -11
  7. package/dist/cjs/exports/error-handler/index.js +1 -11
  8. package/dist/cjs/exports/index.js +1 -12
  9. package/dist/cjs/exports/middlewares/index.js +1 -7
  10. package/dist/cjs/exports/prisma/index.js +1 -6
  11. package/dist/cjs/exports/services/index.js +1 -49
  12. package/dist/cjs/exports/utils/index.js +1 -44
  13. package/dist/cjs/exports/validation/index.js +1 -11
  14. package/dist/cjs/modules/auth/auth.controller.js +1 -194
  15. package/dist/cjs/modules/auth/auth.router.js +1 -124
  16. package/dist/cjs/modules/auth/auth.router.js.map +1 -1
  17. package/dist/cjs/modules/auth/auth.service.js +1 -192
  18. package/dist/cjs/modules/auth/auth.service.js.map +1 -1
  19. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +1 -83
  20. package/dist/cjs/modules/base/base.controller.js +1 -159
  21. package/dist/cjs/modules/base/base.controller.js.map +1 -1
  22. package/dist/cjs/modules/base/base.middlewares.js +1 -92
  23. package/dist/cjs/modules/base/base.middlewares.js.map +1 -1
  24. package/dist/cjs/modules/base/base.router.js +1 -24
  25. package/dist/cjs/modules/base/base.router.js.map +1 -1
  26. package/dist/cjs/modules/base/base.service.js +1 -128
  27. package/dist/cjs/modules/base/base.service.js.map +1 -1
  28. package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js +1 -82
  29. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +1 -50
  30. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +1 -167
  31. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  32. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +1 -171
  33. package/dist/cjs/modules/email/email.service.js +1 -104
  34. package/dist/cjs/modules/error-handler/error-handler.controller.js +4 -144
  35. package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
  36. package/dist/cjs/modules/error-handler/utils/app-error.js +1 -17
  37. package/dist/cjs/modules/error-handler/utils/catch-async.js +1 -12
  38. package/dist/cjs/modules/error-handler/utils/catch-async.js.map +1 -1
  39. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +3 -195
  40. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
  41. package/dist/cjs/modules/file-upload/file-upload.controller.js +1 -271
  42. package/dist/cjs/modules/file-upload/file-upload.router.js +1 -56
  43. package/dist/cjs/modules/file-upload/file-upload.router.js.map +1 -1
  44. package/dist/cjs/modules/file-upload/file-upload.service.js +1 -322
  45. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -90
  46. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -1
  47. package/dist/cjs/modules/swagger/swagger.router.js +1 -141
  48. package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
  49. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -0
  50. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -0
  51. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +1 -0
  52. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +1 -0
  53. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -0
  54. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -0
  55. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -0
  56. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -0
  57. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +1 -0
  58. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -0
  59. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +1 -0
  60. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +1 -0
  61. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +1 -0
  62. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +1 -0
  63. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +1 -0
  64. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js.map +1 -0
  65. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -0
  66. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -0
  67. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -0
  68. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
  69. package/dist/cjs/package.json +3 -0
  70. package/dist/cjs/paths.js +1 -1
  71. package/dist/cjs/server.js +4 -2
  72. package/dist/cjs/server.js.map +1 -1
  73. package/dist/cjs/types/arkos-config.js +1 -3
  74. package/dist/cjs/types/arkos-config.js.map +1 -1
  75. package/dist/cjs/types/auth.js +1 -3
  76. package/dist/cjs/types/index.js +1 -11
  77. package/dist/cjs/types/router-config.js +1 -3
  78. package/dist/cjs/utils/arkos-env.js +1 -9
  79. package/dist/cjs/utils/cli/build.js +5 -229
  80. package/dist/cjs/utils/cli/build.js.map +1 -1
  81. package/dist/cjs/utils/cli/dev.js +5 -267
  82. package/dist/cjs/utils/cli/dev.js.map +1 -1
  83. package/dist/cjs/utils/cli/generate.js +12 -189
  84. package/dist/cjs/utils/cli/generate.js.map +1 -1
  85. package/dist/cjs/utils/cli/index.js +1 -81
  86. package/dist/cjs/utils/cli/start.js +1 -93
  87. package/dist/cjs/utils/cli/start.js.map +1 -1
  88. package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -26
  89. package/dist/cjs/utils/cli/utils/cli.helpers.js.map +1 -1
  90. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +5 -20
  91. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +6 -15
  92. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +71 -133
  93. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +1 -1
  94. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +24 -46
  95. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +1 -1
  96. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +12 -32
  97. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -1
  98. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js +7 -27
  99. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
  100. package/dist/cjs/utils/cli/utils/template-generators.js +2 -28
  101. package/dist/cjs/utils/cli/utils/watermark-stamper.js +3 -0
  102. package/dist/cjs/utils/cli/utils/watermark-stamper.js.map +1 -0
  103. package/dist/cjs/utils/dotenv.helpers.js +1 -43
  104. package/dist/cjs/utils/features/api.features.js +1 -161
  105. package/dist/cjs/utils/features/api.features.js.map +1 -1
  106. package/dist/cjs/utils/features/change-case.features.js +1 -67
  107. package/dist/cjs/utils/features/port-and-host-allocator.js +1 -0
  108. package/dist/cjs/utils/features/port-and-host-allocator.js.map +1 -0
  109. package/dist/cjs/utils/helpers/api.features.helpers.js +1 -106
  110. package/dist/cjs/utils/helpers/api.features.helpers.js.map +1 -1
  111. package/dist/cjs/utils/helpers/change-case.helpers.js +1 -177
  112. package/dist/cjs/utils/helpers/deepmerge.helper.js +1 -115
  113. package/dist/cjs/utils/helpers/fs.helpers.js +1 -54
  114. package/dist/cjs/utils/helpers/fs.helpers.js.map +1 -1
  115. package/dist/cjs/utils/helpers/global.helpers.js +1 -40
  116. package/dist/cjs/utils/helpers/global.helpers.js.map +1 -1
  117. package/dist/cjs/utils/helpers/models.helpers.js +11 -325
  118. package/dist/cjs/utils/helpers/models.helpers.js.map +1 -1
  119. package/dist/cjs/utils/helpers/prisma.helpers.js +1 -49
  120. package/dist/cjs/utils/helpers/prisma.helpers.js.map +1 -1
  121. package/dist/cjs/utils/helpers/query-parser.helpers.js +1 -45
  122. package/dist/cjs/utils/helpers/routers.helpers.js +1 -0
  123. package/dist/cjs/utils/helpers/routers.helpers.js.map +1 -0
  124. package/dist/cjs/utils/helpers/text.helpers.js +1 -28
  125. package/dist/cjs/utils/prisma/enhaced-prisma-json-schema-generator.js +1 -0
  126. package/dist/cjs/utils/prisma/enhaced-prisma-json-schema-generator.js.map +1 -0
  127. package/dist/cjs/utils/prisma/prisma-schema-parser.js +3 -0
  128. package/dist/cjs/utils/prisma/prisma-schema-parser.js.map +1 -0
  129. package/dist/cjs/utils/prisma/types.js +1 -0
  130. package/dist/cjs/utils/prisma/types.js.map +1 -0
  131. package/dist/cjs/utils/sheu.js +1 -0
  132. package/dist/cjs/utils/sheu.js.map +1 -0
  133. package/dist/cjs/utils/validate-dto.js +1 -17
  134. package/dist/cjs/utils/validate-schema.js +1 -15
  135. package/dist/esm/app.js +1 -0
  136. package/dist/esm/app.js.map +1 -0
  137. package/dist/esm/exports/auth/index.js +1 -0
  138. package/dist/esm/exports/controllers/index.js +1 -0
  139. package/dist/esm/exports/error-handler/index.js +1 -0
  140. package/dist/esm/exports/index.js +1 -0
  141. package/dist/esm/exports/middlewares/index.js +1 -0
  142. package/dist/esm/exports/prisma/index.js +1 -0
  143. package/dist/esm/exports/services/index.js +1 -0
  144. package/dist/esm/exports/utils/index.js +1 -0
  145. package/dist/esm/exports/validation/index.js +1 -0
  146. package/dist/esm/modules/auth/auth.controller.js +1 -0
  147. package/dist/esm/modules/auth/auth.router.js +1 -0
  148. package/dist/esm/modules/auth/auth.router.js.map +1 -0
  149. package/dist/esm/modules/auth/auth.service.js +1 -0
  150. package/dist/esm/modules/auth/auth.service.js.map +1 -0
  151. package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js +1 -0
  152. package/dist/esm/modules/base/base.controller.js +1 -0
  153. package/dist/esm/modules/base/base.controller.js.map +1 -0
  154. package/dist/esm/modules/base/base.middlewares.js +1 -0
  155. package/dist/esm/modules/base/base.middlewares.js.map +1 -0
  156. package/dist/esm/modules/base/base.router.js +1 -0
  157. package/dist/esm/modules/base/base.router.js.map +1 -0
  158. package/dist/esm/modules/base/base.service.js +1 -0
  159. package/dist/esm/modules/base/base.service.js.map +1 -0
  160. package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js +1 -0
  161. package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js +1 -0
  162. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +1 -0
  163. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -0
  164. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +1 -0
  165. package/dist/esm/modules/email/email.service.js +1 -0
  166. package/dist/esm/modules/error-handler/error-handler.controller.js +4 -0
  167. package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -0
  168. package/dist/esm/modules/error-handler/utils/app-error.js +1 -0
  169. package/dist/esm/modules/error-handler/utils/catch-async.js +1 -0
  170. package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -0
  171. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +3 -0
  172. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -0
  173. package/dist/esm/modules/file-upload/file-upload.controller.js +1 -0
  174. package/dist/esm/modules/file-upload/file-upload.router.js +1 -0
  175. package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -0
  176. package/dist/esm/modules/file-upload/file-upload.service.js +1 -0
  177. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -0
  178. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -0
  179. package/dist/esm/modules/swagger/swagger.router.js +1 -0
  180. package/dist/esm/modules/swagger/swagger.router.js.map +1 -0
  181. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -0
  182. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -0
  183. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js +1 -0
  184. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +1 -0
  185. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -0
  186. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -0
  187. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -0
  188. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -0
  189. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +1 -0
  190. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -0
  191. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +1 -0
  192. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +1 -0
  193. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +1 -0
  194. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +1 -0
  195. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +1 -0
  196. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js.map +1 -0
  197. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -0
  198. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -0
  199. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -0
  200. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
  201. package/dist/esm/package.json +3 -0
  202. package/dist/esm/server.js +5 -0
  203. package/dist/esm/server.js.map +1 -0
  204. package/dist/esm/types/arkos-config.js +1 -0
  205. package/dist/esm/types/arkos-config.js.map +1 -0
  206. package/dist/esm/types/auth.js +1 -0
  207. package/dist/esm/types/index.js +1 -0
  208. package/dist/esm/types/router-config.js +1 -0
  209. package/dist/esm/utils/arkos-env.js +1 -0
  210. package/dist/esm/utils/cli/build.js +5 -0
  211. package/dist/esm/utils/cli/build.js.map +1 -0
  212. package/dist/esm/utils/cli/dev.js +5 -0
  213. package/dist/esm/utils/cli/dev.js.map +1 -0
  214. package/dist/esm/utils/cli/generate.js +12 -0
  215. package/dist/{es2020 → esm}/utils/cli/generate.js.map +1 -1
  216. package/dist/esm/utils/cli/index.js +1 -0
  217. package/dist/esm/utils/cli/start.js +1 -0
  218. package/dist/esm/utils/cli/start.js.map +1 -0
  219. package/dist/esm/utils/cli/utils/cli.helpers.js +1 -0
  220. package/dist/esm/utils/cli/utils/cli.helpers.js.map +1 -0
  221. package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +21 -0
  222. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +12 -0
  223. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js +206 -0
  224. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +1 -0
  225. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +36 -0
  226. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +1 -0
  227. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js +18 -0
  228. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -0
  229. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js +15 -0
  230. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
  231. package/dist/esm/utils/cli/utils/template-generators.js +2 -0
  232. package/dist/esm/utils/cli/utils/watermark-stamper.js +3 -0
  233. package/dist/esm/utils/cli/utils/watermark-stamper.js.map +1 -0
  234. package/dist/esm/utils/dotenv.helpers.js +1 -0
  235. package/dist/esm/utils/features/api.features.js +1 -0
  236. package/dist/esm/utils/features/api.features.js.map +1 -0
  237. package/dist/esm/utils/features/change-case.features.js +1 -0
  238. package/dist/esm/utils/features/port-and-host-allocator.js +1 -0
  239. package/dist/esm/utils/features/port-and-host-allocator.js.map +1 -0
  240. package/dist/esm/utils/helpers/api.features.helpers.js +1 -0
  241. package/dist/esm/utils/helpers/api.features.helpers.js.map +1 -0
  242. package/dist/esm/utils/helpers/change-case.helpers.js +1 -0
  243. package/dist/esm/utils/helpers/deepmerge.helper.js +1 -0
  244. package/dist/esm/utils/helpers/fs.helpers.js +1 -0
  245. package/dist/esm/utils/helpers/fs.helpers.js.map +1 -0
  246. package/dist/esm/utils/helpers/global.helpers.js +1 -0
  247. package/dist/esm/utils/helpers/global.helpers.js.map +1 -0
  248. package/dist/esm/utils/helpers/models.helpers.js +11 -0
  249. package/dist/esm/utils/helpers/models.helpers.js.map +1 -0
  250. package/dist/esm/utils/helpers/prisma.helpers.js +1 -0
  251. package/dist/esm/utils/helpers/prisma.helpers.js.map +1 -0
  252. package/dist/esm/utils/helpers/query-parser.helpers.js +1 -0
  253. package/dist/esm/utils/helpers/routers.helpers.js +1 -0
  254. package/dist/esm/utils/helpers/routers.helpers.js.map +1 -0
  255. package/dist/esm/utils/helpers/text.helpers.js +1 -0
  256. package/dist/esm/utils/prisma/enhaced-prisma-json-schema-generator.js +1 -0
  257. package/dist/esm/utils/prisma/enhaced-prisma-json-schema-generator.js.map +1 -0
  258. package/dist/esm/utils/prisma/prisma-schema-parser.js +3 -0
  259. package/dist/esm/utils/prisma/prisma-schema-parser.js.map +1 -0
  260. package/dist/esm/utils/prisma/types.js +1 -0
  261. package/dist/esm/utils/prisma/types.js.map +1 -0
  262. package/dist/esm/utils/sheu.js +1 -0
  263. package/dist/esm/utils/sheu.js.map +1 -0
  264. package/dist/esm/utils/validate-dto.js +1 -0
  265. package/dist/esm/utils/validate-schema.js +1 -0
  266. package/dist/types/modules/base/base.middlewares.d.ts +4 -4
  267. package/dist/types/modules/base/base.service.d.ts +1 -1
  268. package/dist/types/modules/base/utils/helpers/base.router.helpers.d.ts +4 -1
  269. package/dist/types/modules/error-handler/error-handler.controller.d.ts +1 -1
  270. package/dist/types/modules/error-handler/utils/catch-async.d.ts +1 -0
  271. package/dist/types/modules/error-handler/utils/error-handler.helpers.d.ts +4 -0
  272. package/dist/types/modules/file-upload/file-upload.router.d.ts +1 -1
  273. package/dist/types/modules/file-upload/utils/helpers/file-upload.helpers.d.ts +2 -1
  274. package/dist/types/modules/swagger/swagger.router.d.ts +1 -1
  275. package/dist/types/modules/swagger/utils/helpers/get-authentication-json-schema-paths.d.ts +4 -0
  276. package/dist/types/modules/swagger/utils/helpers/get-swagger-default-configs.d.ts +46 -0
  277. package/dist/types/modules/swagger/utils/helpers/get-system-json-schema-paths.d.ts +2 -0
  278. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.d.ts +1 -0
  279. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.d.ts +2 -0
  280. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.d.ts +1 -0
  281. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.d.ts +3 -0
  282. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.d.ts +3 -0
  283. package/dist/types/modules/swagger/utils/helpers/missing-json-schemas-generator.d.ts +34 -0
  284. package/dist/types/modules/swagger/utils/helpers/swagger.router.helpers.d.ts +7 -0
  285. package/dist/types/server.d.ts +3 -0
  286. package/dist/types/types/arkos-config.d.ts +10 -5
  287. package/dist/types/utils/cli/utils/cli.helpers.d.ts +1 -1
  288. package/dist/types/utils/cli/utils/watermark-stamper.d.ts +9 -0
  289. package/dist/types/utils/features/api.features.d.ts +1 -0
  290. package/dist/types/utils/features/port-and-host-allocator.d.ts +21 -0
  291. package/dist/types/utils/helpers/global.helpers.d.ts +6 -1
  292. package/dist/types/utils/helpers/models.helpers.d.ts +31 -5
  293. package/dist/types/utils/helpers/routers.helpers.d.ts +2 -0
  294. package/dist/types/utils/prisma/enhaced-prisma-json-schema-generator.d.ts +34 -0
  295. package/dist/types/utils/prisma/prisma-schema-parser.d.ts +18 -0
  296. package/dist/types/utils/prisma/types.d.ts +48 -0
  297. package/dist/types/utils/sheu.d.ts +70 -0
  298. package/package.json +43 -41
  299. package/dist/es2020/app.js +0 -1
  300. package/dist/es2020/app.js.map +0 -1
  301. package/dist/es2020/exports/auth/index.js +0 -2
  302. package/dist/es2020/exports/controllers/index.js +0 -4
  303. package/dist/es2020/exports/error-handler/index.js +0 -4
  304. package/dist/es2020/exports/index.js +0 -8
  305. package/dist/es2020/exports/middlewares/index.js +0 -2
  306. package/dist/es2020/exports/prisma/index.js +0 -3
  307. package/dist/es2020/exports/services/index.js +0 -9
  308. package/dist/es2020/exports/utils/index.js +0 -4
  309. package/dist/es2020/exports/validation/index.js +0 -4
  310. package/dist/es2020/modules/auth/auth.controller.js +0 -187
  311. package/dist/es2020/modules/auth/auth.router.js +0 -118
  312. package/dist/es2020/modules/auth/auth.router.js.map +0 -1
  313. package/dist/es2020/modules/auth/auth.service.js +0 -185
  314. package/dist/es2020/modules/auth/auth.service.js.map +0 -1
  315. package/dist/es2020/modules/auth/utils/helpers/auth.controller.helpers.js +0 -73
  316. package/dist/es2020/modules/base/base.controller.js +0 -151
  317. package/dist/es2020/modules/base/base.controller.js.map +0 -1
  318. package/dist/es2020/modules/base/base.middlewares.js +0 -81
  319. package/dist/es2020/modules/base/base.middlewares.js.map +0 -1
  320. package/dist/es2020/modules/base/base.router.js +0 -17
  321. package/dist/es2020/modules/base/base.router.js.map +0 -1
  322. package/dist/es2020/modules/base/base.service.js +0 -120
  323. package/dist/es2020/modules/base/base.service.js.map +0 -1
  324. package/dist/es2020/modules/base/utils/helpers/base.controller.helpers.js +0 -77
  325. package/dist/es2020/modules/base/utils/helpers/base.middlewares.helpers.js +0 -44
  326. package/dist/es2020/modules/base/utils/helpers/base.router.helpers.js +0 -161
  327. package/dist/es2020/modules/base/utils/helpers/base.router.helpers.js.map +0 -1
  328. package/dist/es2020/modules/base/utils/helpers/base.service.helpers.js +0 -165
  329. package/dist/es2020/modules/email/email.service.js +0 -97
  330. package/dist/es2020/modules/error-handler/error-handler.controller.js +0 -105
  331. package/dist/es2020/modules/error-handler/error-handler.controller.js.map +0 -1
  332. package/dist/es2020/modules/error-handler/utils/app-error.js +0 -15
  333. package/dist/es2020/modules/error-handler/utils/catch-async.js +0 -10
  334. package/dist/es2020/modules/error-handler/utils/catch-async.js.map +0 -1
  335. package/dist/es2020/modules/error-handler/utils/error-handler.helpers.js +0 -155
  336. package/dist/es2020/modules/error-handler/utils/error-handler.helpers.js.map +0 -1
  337. package/dist/es2020/modules/file-upload/file-upload.controller.js +0 -266
  338. package/dist/es2020/modules/file-upload/file-upload.router.js +0 -50
  339. package/dist/es2020/modules/file-upload/file-upload.router.js.map +0 -1
  340. package/dist/es2020/modules/file-upload/file-upload.service.js +0 -314
  341. package/dist/es2020/modules/file-upload/utils/helpers/file-upload.helpers.js +0 -81
  342. package/dist/es2020/modules/file-upload/utils/helpers/file-upload.helpers.js.map +0 -1
  343. package/dist/es2020/modules/swagger/swagger.router.js +0 -135
  344. package/dist/es2020/modules/swagger/swagger.router.js.map +0 -1
  345. package/dist/es2020/server.js +0 -3
  346. package/dist/es2020/server.js.map +0 -1
  347. package/dist/es2020/types/arkos-config.js +0 -2
  348. package/dist/es2020/types/arkos-config.js.map +0 -1
  349. package/dist/es2020/types/auth.js +0 -2
  350. package/dist/es2020/types/index.js +0 -8
  351. package/dist/es2020/types/router-config.js +0 -2
  352. package/dist/es2020/utils/arkos-env.js +0 -7
  353. package/dist/es2020/utils/cli/build.js +0 -223
  354. package/dist/es2020/utils/cli/build.js.map +0 -1
  355. package/dist/es2020/utils/cli/dev.js +0 -260
  356. package/dist/es2020/utils/cli/dev.js.map +0 -1
  357. package/dist/es2020/utils/cli/generate.js +0 -183
  358. package/dist/es2020/utils/cli/index.js +0 -74
  359. package/dist/es2020/utils/cli/start.js +0 -86
  360. package/dist/es2020/utils/cli/start.js.map +0 -1
  361. package/dist/es2020/utils/cli/utils/cli.helpers.js +0 -18
  362. package/dist/es2020/utils/cli/utils/cli.helpers.js.map +0 -1
  363. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +0 -33
  364. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -18
  365. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-middlewares.js +0 -265
  366. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +0 -1
  367. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +0 -55
  368. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -1
  369. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-router-template.js +0 -32
  370. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -1
  371. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-service-template.js +0 -32
  372. package/dist/es2020/utils/cli/utils/template-generators.js +0 -25
  373. package/dist/es2020/utils/dotenv.helpers.js +0 -37
  374. package/dist/es2020/utils/features/api.features.js +0 -154
  375. package/dist/es2020/utils/features/api.features.js.map +0 -1
  376. package/dist/es2020/utils/features/change-case.features.js +0 -31
  377. package/dist/es2020/utils/helpers/api.features.helpers.js +0 -103
  378. package/dist/es2020/utils/helpers/api.features.helpers.js.map +0 -1
  379. package/dist/es2020/utils/helpers/change-case.helpers.js +0 -161
  380. package/dist/es2020/utils/helpers/deepmerge.helper.js +0 -113
  381. package/dist/es2020/utils/helpers/fs.helpers.js +0 -45
  382. package/dist/es2020/utils/helpers/fs.helpers.js.map +0 -1
  383. package/dist/es2020/utils/helpers/global.helpers.js +0 -4
  384. package/dist/es2020/utils/helpers/global.helpers.js.map +0 -1
  385. package/dist/es2020/utils/helpers/models.helpers.js +0 -276
  386. package/dist/es2020/utils/helpers/models.helpers.js.map +0 -1
  387. package/dist/es2020/utils/helpers/prisma.helpers.js +0 -41
  388. package/dist/es2020/utils/helpers/prisma.helpers.js.map +0 -1
  389. package/dist/es2020/utils/helpers/query-parser.helpers.js +0 -40
  390. package/dist/es2020/utils/helpers/text.helpers.js +0 -22
  391. package/dist/es2020/utils/validate-dto.js +0 -11
  392. package/dist/es2020/utils/validate-schema.js +0 -9
  393. /package/dist/{es2020 → esm}/exports/auth/index.js.map +0 -0
  394. /package/dist/{es2020 → esm}/exports/controllers/index.js.map +0 -0
  395. /package/dist/{es2020 → esm}/exports/error-handler/index.js.map +0 -0
  396. /package/dist/{es2020 → esm}/exports/index.js.map +0 -0
  397. /package/dist/{es2020 → esm}/exports/middlewares/index.js.map +0 -0
  398. /package/dist/{es2020 → esm}/exports/prisma/index.js.map +0 -0
  399. /package/dist/{es2020 → esm}/exports/services/index.js.map +0 -0
  400. /package/dist/{es2020 → esm}/exports/utils/index.js.map +0 -0
  401. /package/dist/{es2020 → esm}/exports/validation/index.js.map +0 -0
  402. /package/dist/{es2020 → esm}/modules/auth/auth.controller.js.map +0 -0
  403. /package/dist/{es2020 → esm}/modules/auth/utils/helpers/auth.controller.helpers.js.map +0 -0
  404. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.controller.helpers.js.map +0 -0
  405. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.middlewares.helpers.js.map +0 -0
  406. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.service.helpers.js.map +0 -0
  407. /package/dist/{es2020 → esm}/modules/email/email.service.js.map +0 -0
  408. /package/dist/{es2020 → esm}/modules/error-handler/utils/app-error.js.map +0 -0
  409. /package/dist/{es2020 → esm}/modules/file-upload/file-upload.controller.js.map +0 -0
  410. /package/dist/{es2020 → esm}/modules/file-upload/file-upload.service.js.map +0 -0
  411. /package/dist/{es2020 → esm}/paths.js +0 -0
  412. /package/dist/{es2020 → esm}/paths.js.map +0 -0
  413. /package/dist/{es2020 → esm}/types/auth.js.map +0 -0
  414. /package/dist/{es2020 → esm}/types/index.js.map +0 -0
  415. /package/dist/{es2020 → esm}/types/router-config.js.map +0 -0
  416. /package/dist/{es2020 → esm}/utils/arkos-env.js.map +0 -0
  417. /package/dist/{es2020 → esm}/utils/cli/index.js.map +0 -0
  418. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -0
  419. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -0
  420. /package/dist/{es2020 → esm}/utils/cli/utils/template-generators.js.map +0 -0
  421. /package/dist/{es2020 → esm}/utils/dotenv.helpers.js.map +0 -0
  422. /package/dist/{es2020 → esm}/utils/features/change-case.features.js.map +0 -0
  423. /package/dist/{es2020 → esm}/utils/helpers/change-case.helpers.js.map +0 -0
  424. /package/dist/{es2020 → esm}/utils/helpers/deepmerge.helper.js.map +0 -0
  425. /package/dist/{es2020 → esm}/utils/helpers/query-parser.helpers.js.map +0 -0
  426. /package/dist/{es2020 → esm}/utils/helpers/text.helpers.js.map +0 -0
  427. /package/dist/{es2020 → esm}/utils/validate-dto.js.map +0 -0
  428. /package/dist/{es2020 → esm}/utils/validate-schema.js.map +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../src/utils/cli/generate.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport { generateTemplate } from \"./utils/template-generators\";\nimport { ensureDirectoryExists } from \"./utils/cli.helpers\";\nimport {\n camelCase,\n kebabCase,\n pascalCase,\n} from \"../helpers/change-case.helpers\";\nimport { getUserFileExtension } from \"../helpers/fs.helpers\";\n\ninterface GenerateOptions {\n path?: string;\n model: string;\n}\n\nexport const generateCommand = {\n controller: async (options: GenerateOptions) => {\n const modelName = options.model;\n if (!modelName) {\n console.error(\"\\n❌ Model name is required\");\n process.exit(1);\n }\n\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const modulePath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(modulePath, `${names.kebab}.controller.${ext}`);\n\n try {\n ensureDirectoryExists(modulePath);\n\n const content = generateTemplate(\"controller\", {\n modelName: names,\n imports: {\n baseController: \"arkos/controllers\",\n },\n });\n\n fs.writeFileSync(filePath, content);\n console.log(\n `\\nController generated: ${filePath.replace(process.cwd(), \"\")}`\n );\n } catch (error) {\n console.error(`❌ Failed to generate controller:`, error);\n process.exit(1);\n }\n },\n\n service: async (options: GenerateOptions) => {\n const modelName = options.model;\n if (!modelName) {\n console.error(\"\\n❌ Model name is required\");\n process.exit(1);\n }\n\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const modulePath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(modulePath, `${names.kebab}.service.${ext}`);\n\n try {\n ensureDirectoryExists(modulePath);\n\n const content = generateTemplate(\"service\", {\n modelName: names,\n imports: {\n baseService: \"arkos/services\",\n },\n });\n\n fs.writeFileSync(filePath, content);\n console.log(`\\n✅ Service generated: ${filePath}`);\n } catch (error) {\n console.error(`❌ Failed to generate service:`, error);\n process.exit(1);\n }\n },\n\n router: async (options: GenerateOptions) => {\n const modelName = options.model;\n if (!modelName) {\n console.error(\"\\n❌ Model name is required\");\n process.exit(1);\n }\n\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const modulePath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(modulePath, `${names.kebab}.router.${ext}`);\n\n try {\n ensureDirectoryExists(modulePath);\n\n const content = generateTemplate(\"router\", {\n modelName: names,\n imports: {\n baseRouter: \"arkos\",\n controller: `./${names.kebab}.controller`,\n },\n });\n\n fs.writeFileSync(filePath, content);\n console.log(\n `\\n✅ Router generated: ${filePath.replace(process.cwd(), \"\")}`\n );\n } catch (error) {\n console.error(`❌ Failed to generate router:`, error);\n process.exit(1);\n }\n },\n\n middlewares: async (options: GenerateOptions) => {\n const modelName = options.model;\n\n if (!modelName) {\n console.error(\"❌ Middleware name is required\");\n process.exit(1);\n }\n\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const middlewarePath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(\n middlewarePath,\n `${names.kebab}.middlewares.${ext}`\n );\n\n try {\n ensureDirectoryExists(middlewarePath);\n\n const content = generateTemplate(\"middlewares\", {\n modelName: names,\n });\n\n fs.writeFileSync(filePath, content);\n console.log(`\\n✅ Middleware generated: ${filePath}`);\n } catch (error) {\n console.error(`❌ Failed to generate middleware:`, error);\n process.exit(1);\n }\n },\n\n authConfigs: async (options: GenerateOptions) => {\n const modelName = options.model;\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const configPath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(configPath, `${names.kebab}.auth.${ext}`);\n\n try {\n ensureDirectoryExists(configPath);\n\n const content = generateTemplate(\"auth-configs\", { modelName: names });\n\n fs.writeFileSync(filePath, content);\n console.log(\n `\\n✅ Auth config generated: ${filePath.replace(process.cwd(), \"\")}`\n );\n } catch (error) {\n console.error(`❌ Failed to generate auth config:`, error);\n process.exit(1);\n }\n },\n\n queryOptions: async (options: GenerateOptions) => {\n const modelName = options.model;\n if (!modelName) {\n console.error(\"\\n❌ Model name is required\");\n process.exit(1);\n }\n\n if (modelName === \"file-upload\") {\n console.error(\n \"\\n❌ Prisma query options are not available to file-upload resource\"\n );\n process.exit(1);\n }\n\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const configPath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(configPath, `${names.kebab}.query.${ext}`);\n\n try {\n ensureDirectoryExists(configPath);\n\n const content = generateTemplate(\"query-options\", { modelName: names });\n\n fs.writeFileSync(filePath, content);\n console.log(\n `\\n✅ Query config generated: ${filePath.replace(process.cwd(), \"\")}`\n );\n } catch (error) {\n console.error(`❌ Failed to generate query config:`, error);\n process.exit(1);\n }\n },\n};\n"]}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../src/utils/cli/generate.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport { generateTemplate } from \"./utils/template-generators\";\nimport { ensureDirectoryExists } from \"./utils/cli.helpers\";\nimport {\n camelCase,\n kebabCase,\n pascalCase,\n} from \"../helpers/change-case.helpers\";\nimport { getUserFileExtension } from \"../helpers/fs.helpers\";\n\ninterface GenerateOptions {\n path?: string;\n model: string;\n}\n\nexport const generateCommand = {\n controller: async (options: GenerateOptions) => {\n const modelName = options.model;\n if (!modelName) {\n console.error(\"\\n❌ Model name is required\");\n process.exit(1);\n }\n\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const modulePath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(modulePath, `${names.kebab}.controller.${ext}`);\n\n try {\n ensureDirectoryExists(modulePath);\n\n const content = generateTemplate(\"controller\", {\n modelName: names,\n imports: {\n baseController: \"arkos/controllers\",\n },\n });\n\n fs.writeFileSync(filePath, content);\n console.info(\n `\\nController generated: ${filePath.replace(process.cwd(), \"\")}`\n );\n } catch (error) {\n console.error(`❌ Failed to generate controller:`, error);\n process.exit(1);\n }\n },\n\n service: async (options: GenerateOptions) => {\n const modelName = options.model;\n if (!modelName) {\n console.error(\"\\n❌ Model name is required\");\n process.exit(1);\n }\n\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const modulePath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(modulePath, `${names.kebab}.service.${ext}`);\n\n try {\n ensureDirectoryExists(modulePath);\n\n const content = generateTemplate(\"service\", {\n modelName: names,\n imports: {\n baseService: \"arkos/services\",\n },\n });\n\n fs.writeFileSync(filePath, content);\n console.info(`\\n✅ Service generated: ${filePath}`);\n } catch (error) {\n console.error(`❌ Failed to generate service:`, error);\n process.exit(1);\n }\n },\n\n router: async (options: GenerateOptions) => {\n const modelName = options.model;\n if (!modelName) {\n console.error(\"\\n❌ Model name is required\");\n process.exit(1);\n }\n\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const modulePath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(modulePath, `${names.kebab}.router.${ext}`);\n\n try {\n ensureDirectoryExists(modulePath);\n\n const content = generateTemplate(\"router\", {\n modelName: names,\n imports: {\n baseRouter: \"arkos\",\n controller: `./${names.kebab}.controller`,\n },\n });\n\n fs.writeFileSync(filePath, content);\n console.info(\n `\\nRouter generated: ${filePath.replace(process.cwd(), \"\")}`\n );\n } catch (error) {\n console.error(`❌ Failed to generate router:`, error);\n process.exit(1);\n }\n },\n\n middlewares: async (options: GenerateOptions) => {\n const modelName = options.model;\n\n if (!modelName) {\n console.error(\"❌ Middleware name is required\");\n process.exit(1);\n }\n\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const middlewarePath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(\n middlewarePath,\n `${names.kebab}.middlewares.${ext}`\n );\n\n try {\n ensureDirectoryExists(middlewarePath);\n\n const content = generateTemplate(\"middlewares\", {\n modelName: names,\n });\n\n fs.writeFileSync(filePath, content);\n console.info(`\\nMiddlewares generated: ${filePath}`);\n } catch (error) {\n console.error(`❌ Failed to generate middleware:`, error);\n process.exit(1);\n }\n },\n\n authConfigs: async (options: GenerateOptions) => {\n const modelName = options.model;\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const configPath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(configPath, `${names.kebab}.auth.${ext}`);\n\n try {\n ensureDirectoryExists(configPath);\n\n const content = generateTemplate(\"auth-configs\", { modelName: names });\n\n fs.writeFileSync(filePath, content);\n console.info(\n `\\nAuth config generated: ${filePath.replace(process.cwd(), \"\")}`\n );\n } catch (error) {\n console.error(`❌ Failed to generate auth config:`, error);\n process.exit(1);\n }\n },\n\n queryOptions: async (options: GenerateOptions) => {\n const modelName = options.model;\n if (!modelName) {\n console.error(\"\\n❌ Model name is required\");\n process.exit(1);\n }\n\n if (modelName === \"file-upload\") {\n console.error(\n \"\\n❌ Prisma query options are not available to file-upload resource\"\n );\n process.exit(1);\n }\n\n const { path: customPath = \"src/modules\" } = options;\n\n const names = {\n pascal: pascalCase(modelName),\n camel: camelCase(modelName),\n kebab: kebabCase(modelName),\n };\n\n const ext = getUserFileExtension();\n const configPath = path.join(process.cwd(), customPath, names.kebab);\n const filePath = path.join(configPath, `${names.kebab}.query.${ext}`);\n\n try {\n ensureDirectoryExists(configPath);\n\n const content = generateTemplate(\"query-options\", { modelName: names });\n\n fs.writeFileSync(filePath, content);\n console.info(\n `\\nQuery config generated: ${filePath.replace(process.cwd(), \"\")}`\n );\n } catch (error) {\n console.error(`❌ Failed to generate query config:`, error);\n process.exit(1);\n }\n },\n};\n"]}
@@ -0,0 +1 @@
1
+ "use strict";import{Command as m}from"commander";import{buildCommand as r}from"./build.js";import{devCommand as n}from"./dev.js";import{startCommand as a}from"./start.js";import{generateCommand as o}from"./generate.js";import{getVersion as i}from"./utils/cli.helpers.js";const e=new m;e.name("arkos").description("Arkos.js CLI").version(i()),e.command("build").description("Build your Arkos project").option("-m, --module <type>","Module type (cjs or esm)","cjs").action(r),e.command("dev").description("Run development server").option("-p, --port <number>","Port number").option("-h, --host <host>","Host to bind to").action(n),e.command("start").description("Run production server").option("-p, --port <number>","Port number").option("-h, --host <host>","Host to bind to").action(a);const t=e.command("generate").alias("g").description("Generate arkos components");t.command("controller").alias("c").description("Generate a new controller").requiredOption("-m, --model <name>","Model name").option("-p, --path <path>","Custom path for the controller","src/modules").action(o.controller),t.command("service").alias("s").description("Generate a new service").requiredOption("-m, --model <name>","Model name").option("-p, --path <path>","Custom path for the service","src/modules").action(o.service),t.command("router").alias("r").description("Generate a new router").requiredOption("-m, --model <name>","Model name").option("-p, --path <path>","Custom path for the router","src/modules").action(o.router),t.command("auth-configs").alias("a").description("Generate auth configuration").requiredOption("-m, --model <name>","Model name").option("-p, --path <path>","Custom path for the router","src/modules").action(o.authConfigs),t.command("query-options").alias("q").description("Generate prisma query options").requiredOption("-m, --model <name>","Model name").option("-p, --path <path>","Custom path for query options","src/modules").action(o.queryOptions),t.command("middlewares").alias("m").description("Generate a new middleware file").requiredOption("-m, --model <name>","Middleware name").option("-p, --path <path>","Custom path for middleware","src/modules").action(o.middlewares),e.parse(process.argv);export{e as program,r as buildCommand,n as devCommand,a as startCommand,o as generateCommand};
@@ -0,0 +1 @@
1
+ "use strict";import l from"path";import h from"fs";import{spawn as C}from"child_process";import{loadEnvironmentVariables as g}from"../dotenv.helpers.js";import{importModule as w}from"../helpers/global.helpers.js";import{fullCleanCwd as P}from"../helpers/fs.helpers.js";import p from"../features/port-and-host-allocator.js";import f from"./utils/watermark-stamper.js";let e=null,a;export async function startCommand(m={}){process.env.NODE_ENV="production",a=g();try{const{port:n,host:c}=m,i=l.join(process.cwd(),".build","src","app.js");h.existsSync(l.join(i))||(console.error(`\u274C Could not find built application entry point at ${P(i)}`),process.exit(1));const o={...process.env,NODE_ENV:"production",...n&&{CLI_PORT:n},...c&&{CLI_HOST:c},ARKOS_BUILD:"true"};e=C("node",[i],{stdio:"inherit",env:o,shell:!0}),process.on("SIGINT",()=>{e&&e.kill(),process.exit(0)});const d=async()=>{try{const{getArkosConfig:t}=await w("../../server"),r=t();if(r&&r.available){const s=await p.getHostAndAvailablePort(o,{...r,logWarning:!0});return f.stamp({envFiles:a,port:"port"in r&&r?.port!==void 0?s.port:void 0,host:s.host}),!0}return!1}catch(t){return t?.message?.includes("../../server")||console.error(t),!1}};(async()=>{let t=0;const r=15;for(;t<r&&!await d();)await new Promise(u=>setTimeout(u,100)),t++;t>=r&&((o.CLI_PORT||o.PORT)&&p.logWarnings(),f.stamp({envFiles:a,host:o.CLI_HOST||o.HOST,port:o.CLI_PORT||o.PORT}))})()}catch(n){console.error("\u274C Production server failed to start:",n),process.exit(1)}}export function killProductionServerChildProcess(){e?.kill?.(),e=null}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../../src/utils/cli/start.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\nimport { ChildProcess, spawn } from \"child_process\";\nimport { getVersion } from \"./utils/cli.helpers\";\nimport { loadEnvironmentVariables } from \"../dotenv.helpers\";\nimport { importModule } from \"../helpers/global.helpers\";\nimport { fullCleanCwd } from \"../helpers/fs.helpers\";\nimport portAndHostAllocator from \"../features/port-and-host-allocator\";\nimport watermarkStamper from \"./utils/watermark-stamper\";\n\ninterface StartOptions {\n port?: string;\n host?: string;\n}\n\nlet child: ChildProcess | null = null;\nlet envFiles: string[] | undefined;\n\n/**\n * Production start command for the arkos CLI\n */\nexport async function startCommand(options: StartOptions = {}) {\n process.env.NODE_ENV = \"production\";\n envFiles = loadEnvironmentVariables();\n\n try {\n const { port, host } = options;\n\n // Check for built app file\n const entryPoint = path.join(process.cwd(), \".build\", \"src\", \"app.js\");\n\n if (!fs.existsSync(path.join(entryPoint))) {\n console.error(\n `❌ Could not find built application entry point at ${fullCleanCwd(entryPoint)}`\n );\n process.exit(1);\n }\n\n // Set environment variables\n const env: { [x: string]: string } = {\n ...process.env,\n NODE_ENV: \"production\",\n ...(port && { CLI_PORT: port }),\n ...(host && { CLI_HOST: host }),\n ARKOS_BUILD: \"true\",\n };\n\n // Start the application\n child = spawn(\"node\", [entryPoint], {\n stdio: \"inherit\",\n env,\n shell: true,\n });\n\n // Handle process exit\n process.on(\"SIGINT\", () => {\n if (child) {\n child.kill();\n }\n process.exit(0);\n });\n\n const checkConfig = async () => {\n try {\n const { getArkosConfig } = await importModule(\"../../server\");\n\n const config = getArkosConfig();\n\n if (config && config.available) {\n const hostAndPort =\n await portAndHostAllocator.getHostAndAvailablePort(env, {\n ...config,\n logWarning: true,\n });\n\n watermarkStamper.stamp({\n envFiles,\n port:\n \"port\" in config && config?.port !== undefined\n ? hostAndPort.port\n : undefined,\n host: hostAndPort.host,\n });\n return true;\n }\n return false;\n } catch (err: any) {\n if (!err?.message?.includes(\"../../server\")) console.error(err);\n return false;\n }\n };\n\n // Try to get config periodically\n const waitForConfig = async () => {\n let attempts = 0;\n const maxAttempts = 15;\n\n while (attempts < maxAttempts) {\n const ready = await checkConfig();\n if (ready) break;\n await new Promise((resolve) => setTimeout(resolve, 100));\n attempts++;\n }\n\n // Fall back to defaults if config never became available\n if (attempts >= maxAttempts) {\n if (env.CLI_PORT || env.PORT) portAndHostAllocator.logWarnings();\n\n watermarkStamper.stamp({\n envFiles,\n host: env.CLI_HOST || env.HOST,\n port: env.CLI_PORT || env.PORT,\n });\n }\n };\n\n waitForConfig();\n } catch (error) {\n console.error(\"❌ Production server failed to start:\", error);\n process.exit(1);\n }\n}\n\n/**\n * Help function to help other processes to terminate the production server child process\n */\nexport function killProductionServerChildProcess() {\n (child as ChildProcess)?.kill?.();\n child = null;\n}\n"]}
@@ -0,0 +1 @@
1
+ "use strict";import e from"fs";import{killDevelopmentServerChildProcess as o}from"../dev.js";import{killProductionServerChildProcess as i}from"../start.js";export function ensureDirectoryExists(r){e.existsSync(r)||e.mkdirSync(r,{recursive:!0})}export function killServerChildProcess(){o(),i()}export function getVersion(){return"1.2.15-test.2"}
@@ -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;AAE5D,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,OAAO,aAAa,CAAC;AACvB,CAAC","sourcesContent":["import fs from \"fs\";\nimport { killDevelopmentServerChildProcess } from \"../dev\";\nimport { killProductionServerChildProcess } from \"../start\";\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 return \"{{version}}\";\n}\n"]}
@@ -0,0 +1,21 @@
1
+ "use strict";import{getUserFileExtension as i}from"../../../../helpers/fs.helpers.js";export function generateAuthConfigsTemplate(n){const{modelName:e}=n,t=i()==="ts";if(!e)throw new Error("Model name is required for auth config template");const o=t?`import { AuthConfigs } from 'arkos/auth';
2
+ `:"",r=t?": AuthConfigs":"";return`${o}
3
+ const ${e.camel}AuthConfigs${r} = {
4
+ authenticationControl: {
5
+ // Create: true,
6
+ // Update: true,
7
+ // Delete: true,
8
+ // View: false,
9
+ },
10
+
11
+ // Only when using Static RBAC
12
+ accessControl: {
13
+ // Create: ["Admin"],
14
+ // Update: ["Admin", "Manager"],
15
+ // Delete: ["Admin"],
16
+ // View: ["User", "Admin", "Guest"],
17
+ },
18
+ };
19
+
20
+ export default ${e.camel}AuthConfigs;
21
+ `}
@@ -0,0 +1,12 @@
1
+ "use strict";export function generateControllerTemplate(e){const{modelName:r,imports:o}=e;if(!r)throw new Error("Model name is required for controller template");return`import { BaseController } from "${o?.baseController||"arkos/controllers"}";
2
+
3
+ class ${r.pascal}Controller extends BaseController {
4
+ constructor() {
5
+ super("${r.kebab}");
6
+ }
7
+ }
8
+
9
+ const ${r.camel}Controller = new ${r.pascal}Controller();
10
+
11
+ export default ${r.camel}Controller;
12
+ `}
@@ -0,0 +1,206 @@
1
+ "use strict";import{getUserFileExtension as l}from"../../../../helpers/fs.helpers.js";export function generateMiddlewaresTemplate(n){const{modelName:r}=n,o=l()==="ts";if(!r)throw new Error("Model name is required for middleware template");const c=r.camel==="auth",s=r.camel==="fileUpload"||r.camel==="file-upload",a=o?"ArkosRequest":"req",i=o?"ArkosResponse":"res",x=o?"ArkosNextFunction":"next",t=o?`import { ArkosRequest, ArkosResponse, ArkosNextFunction } from "arkos";
2
+ import { catchAsync } from "arkos/error-handler";`:'import { catchAsync } from "arkos/error-handler";',e=o?`req: ${a}, res: ${i}, next: ${x}`:"req, res, next";return c?`${t}
3
+
4
+ // export const beforeGetMe =
5
+ // async (${e}) => {
6
+ // // Your logic here
7
+ // next();
8
+ // }
9
+
10
+ // export const afterGetMe =
11
+ // async (${e}) => {
12
+ // // Your logic here
13
+ // next();
14
+ // }
15
+
16
+ // export const beforeLogin =
17
+ // async (${e}) => {
18
+ // // Your logic here
19
+ // next();
20
+ // }
21
+
22
+ // export const afterLogin =
23
+ // async (${e}) => {
24
+ // // Your logic here
25
+ // next();
26
+ // }
27
+
28
+ // export const beforeLogout =
29
+ // async (${e}) => {
30
+ // // Your logic here
31
+ // next();
32
+ // }
33
+
34
+ // export const afterLogout =
35
+ // async (${e}) => {
36
+ // // Your logic here
37
+ // next();
38
+ // }
39
+
40
+ // export const beforeSignup =
41
+ // async (${e}) => {
42
+ // // Your logic here
43
+ // next();
44
+ // }
45
+
46
+ // export const afterSignup =
47
+ // async (${e}) => {
48
+ // // Your logic here
49
+ // next();
50
+ // }
51
+
52
+ // export const beforeUpdatePassword =
53
+ // async (${e}) => {
54
+ // // Your logic here
55
+ // next();
56
+ // }
57
+
58
+ // export const afterUpdatePassword =
59
+ // async (${e}) => {
60
+ // // Your logic here
61
+ // next();
62
+ // }
63
+ `:s?`${t}
64
+
65
+
66
+ // export const beforeFindFile =
67
+ // async (${e}) => {
68
+ // // Your logic here
69
+ // next();
70
+ // }
71
+
72
+ // There is not afterFindFile: because the main handler is handleded by express.static()
73
+
74
+ // export const beforeUploadFile =
75
+ // async (${e}) => {
76
+ // // Your logic here
77
+ // next();
78
+ // }
79
+
80
+ // export const afterUploadFile =
81
+ // async (${e}) => {
82
+ // // Your logic here
83
+ // next();
84
+ // }
85
+
86
+ // export const beforeUpdateFile =
87
+ // async (${e}) => {
88
+ // // Your logic here
89
+ // next();
90
+ // }
91
+
92
+ // export const afterUpdateFile =
93
+ // async (${e}) => {
94
+ // // Your logic here
95
+ // next();
96
+ // }
97
+
98
+ // export const beforeDeleteFile =
99
+ // async (${e}) => {
100
+ // // Your logic here
101
+ // next();
102
+ // }
103
+
104
+ // export const afterDeleteFile =
105
+ // async (${e}) => {
106
+ // // Your logic here
107
+ // next();
108
+ // }
109
+ `:`${t}
110
+
111
+ // export const beforeCreateOne =
112
+ // async (${e}) => {
113
+ // // Your logic here
114
+ // next();
115
+ // }
116
+
117
+ // export const afterCreateOne =
118
+ // async (${e}) => {
119
+ // // Your logic here
120
+ // next();
121
+ // }
122
+
123
+ // export const beforeFindOne =
124
+ // async (${e}) => {
125
+ // // Your logic here
126
+ // next();
127
+ // }
128
+
129
+ // export const afterFindOne =
130
+ // async (${e}) => {
131
+ // // Your logic here
132
+ // next();
133
+ // }
134
+
135
+ // export const beforeFindMany =
136
+ // async (${e}) => {
137
+ // // Your logic here
138
+ // next();
139
+ // }
140
+
141
+ // export const afterFindMany =
142
+ // async (${e}) => {
143
+ // // Your logic here
144
+ // next();
145
+ // }
146
+
147
+ // export const beforeUpdateOne =
148
+ // async (${e}) => {
149
+ // // Your logic here
150
+ // next();
151
+ // }
152
+
153
+ // export const afterUpdateOne =
154
+ // async (${e}) => {
155
+ // // Your logic here
156
+ // next();
157
+ // }
158
+
159
+ // export const beforeDeleteOne =
160
+ // async (${e}) => {
161
+ // // Your logic here
162
+ // next();
163
+ // }
164
+
165
+ // export const afterDeleteOne =
166
+ // async (${e}) => {
167
+ // // Your logic here
168
+ // next();
169
+ // }
170
+
171
+ // export const beforeCreateMany =
172
+ // async (${e}) => {
173
+ // // Your logic here
174
+ // next();
175
+ // }
176
+
177
+ // export const afterCreateMany =
178
+ // async (${e}) => {
179
+ // // Your logic here
180
+ // next();
181
+ // }
182
+
183
+ // export const beforeUpdateMany =
184
+ // async (${e}) => {
185
+ // // Your logic here
186
+ // next();
187
+ // }
188
+
189
+ // export const afterUpdateMany =
190
+ // async (${e}) => {
191
+ // // Your logic here
192
+ // next();
193
+ // }
194
+
195
+ // export const beforeDeleteMany =
196
+ // async (${e}) => {
197
+ // // Your logic here
198
+ // next();
199
+ // }
200
+
201
+ // export const afterDeleteMany =
202
+ // async (${e}) => {
203
+ // // Your logic here
204
+ // next();
205
+ // }
206
+ `}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-middlewares.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/generate-middlewares.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAGtE,MAAM,UAAU,2BAA2B,CAAC,OAAwB;IAClE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC9B,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;IAElC,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAEpE,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,KAAK,MAAM,CAAC;IAC1C,MAAM,YAAY,GAChB,SAAS,CAAC,KAAK,KAAK,YAAY,IAAI,SAAS,CAAC,KAAK,KAAK,aAAa,CAAC;IAGxE,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1D,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5D,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC;IAE7D,MAAM,WAAW,GAAG,YAAY;QAC9B,CAAC,CAAC;kDAC4C;QAC9C,CAAC,CAAC,mDAAmD,CAAC;IAExD,MAAM,cAAc,GAAG,YAAY;QACjC,CAAC,CAAC,QAAQ,WAAW,UAAU,YAAY,WAAW,QAAQ,EAAE;QAChE,CAAC,CAAC,gBAAgB,CAAC;IAErB,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,GAAG,WAAW;;;cAGX,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;CAI3B,CAAC;IACA,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,GAAG,WAAW;;;;cAIX,cAAc;;;;;;;;cAQd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;CAI3B,CAAC;IACA,CAAC;IAGD,OAAO,GAAG,WAAW;;;cAGT,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;;;cAMd,cAAc;;;;CAI3B,CAAC;AACF,CAAC","sourcesContent":["import { getUserFileExtension } from \"../../../../helpers/fs.helpers\";\nimport { TemplateOptions } from \"../../template-generators\";\n\nexport function generateMiddlewaresTemplate(options: TemplateOptions): string {\n const { modelName } = options;\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n\n if (!modelName)\n throw new Error(\"Model name is required for middleware template\");\n\n const isAuth = modelName.camel === \"auth\";\n const isFileUpload =\n modelName.camel === \"fileUpload\" || modelName.camel === \"file-upload\";\n\n // Generate imports based on TypeScript/JavaScript\n const requestType = isTypeScript ? \"ArkosRequest\" : \"req\";\n const responseType = isTypeScript ? \"ArkosResponse\" : \"res\";\n const nextType = isTypeScript ? \"ArkosNextFunction\" : \"next\";\n\n const baseImports = isTypeScript\n ? `import { ArkosRequest, ArkosResponse, ArkosNextFunction } from \"arkos\";\nimport { catchAsync } from \"arkos/error-handler\";`\n : `import { catchAsync } from \"arkos/error-handler\";`;\n\n const functionParams = isTypeScript\n ? `req: ${requestType}, res: ${responseType}, next: ${nextType}`\n : `req, res, next`;\n\n if (isAuth) {\n return `${baseImports}\n\n// export const beforeGetMe = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const afterGetMe = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const beforeLogin = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const afterLogin = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const beforeLogout = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const afterLogout = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const beforeSignup = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const afterSignup = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const beforeUpdatePassword = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const afterUpdatePassword = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n`;\n }\n\n if (isFileUpload) {\n return `${baseImports}\n\n\n// export const beforeFindFile = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// There is not afterFindFile: because the main handler is handleded by express.static()\n\n// export const beforeUploadFile = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const afterUploadFile = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const beforeUpdateFile = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const afterUpdateFile = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const beforeDeleteFile = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const afterDeleteFile = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n`;\n }\n\n // Regular model middlewares\n return `${baseImports}\n\n// export const beforeCreateOne = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const afterCreateOne = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const beforeFindOne = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const afterFindOne = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const beforeFindMany = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const afterFindMany = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const beforeUpdateOne = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const afterUpdateOne = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const beforeDeleteOne = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const afterDeleteOne = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const beforeCreateMany = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const afterCreateMany = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const beforeUpdateMany = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const afterUpdateMany = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const beforeDeleteMany = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n\n// export const afterDeleteMany = \n// async (${functionParams}) => {\n// // Your logic here\n// next();\n// }\n`;\n}\n"]}
@@ -0,0 +1,36 @@
1
+ "use strict";import{getUserFileExtension as i}from"../../../../helpers/fs.helpers.js";export function generateQueryOptionsTemplate(s){const{modelName:e}=s,t=e?.camel==="auth",r=i()==="ts";if(!e)throw new Error("Model name is required for query config template");const o=t?"import { AuthPrismaQueryOptions } from 'arkos/prisma'":"import { PrismaQueryOptions } from 'arkos/prisma'",a=r?t?`: AuthPrismaQueryOptions<typeof prisma.${e.camel}>`:`: PrismaQueryOptions<typeof prisma.${e.camel}>`:"",n=r?`import prisma from "../../utils/prisma.js";
2
+ `:"";return t?`${n}${o};
3
+
4
+ const ${e.camel}QueryOptions${a} = {
5
+ getMe: {},
6
+ updateMe: {},
7
+ deleteMe: {},
8
+ login: {},
9
+ signup: {},
10
+ updatePassword: {},
11
+ }
12
+
13
+ export default ${e.camel}QueryOptions;
14
+ `:`${n}${o};
15
+
16
+ const ${e.camel}QueryOptions${a} = {
17
+ global: {},
18
+ find: {},
19
+ findOne: {},
20
+ findMany: {},
21
+ update: {},
22
+ updateMany: {},
23
+ updateOne: {},
24
+ create: {},
25
+ createMany: {},
26
+ createOne: {},
27
+ save: {},
28
+ saveMany: {},
29
+ saveOne: {},
30
+ delete: {},
31
+ deleteMany: {},
32
+ deleteOne: {},
33
+ }
34
+
35
+ export default ${e.camel}QueryOptions;
36
+ `}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-prisma-query-options.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/generate-prisma-query-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAGtE,MAAM,UAAU,4BAA4B,CAAC,OAAwB;IACnE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC9B,MAAM,MAAM,GAAG,SAAS,EAAE,KAAK,KAAK,MAAM,CAAC;IAC3C,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;IAElC,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAGtE,MAAM,OAAO,GAAG,MAAM;QACpB,CAAC,CAAC,uDAAuD;QACzD,CAAC,CAAC,mDAAmD,CAAC;IAGxD,MAAM,cAAc,GAAG,YAAY;QACjC,CAAC,CAAC,MAAM;YACN,CAAC,CAAC,0CAA0C,SAAS,CAAC,KAAK,GAAG;YAC9D,CAAC,CAAC,sCAAsC,SAAS,CAAC,KAAK,GAAG;QAC5D,CAAC,CAAC,EAAE,CAAC;IAGP,MAAM,YAAY,GAAG,YAAY;QAC/B,CAAC,CAAC,4CAA4C;QAC9C,CAAC,CAAC,EAAE,CAAC;IAEP,IAAI,MAAM,EAAE,CAAC;QAEX,OAAO,GAAG,YAAY,GAAG,OAAO;;QAE5B,SAAS,CAAC,KAAK,eAAe,cAAc;;;;;;;;;iBASnC,SAAS,CAAC,KAAK;CAC/B,CAAC;IACA,CAAC;SAAM,CAAC;QAEN,OAAO,GAAG,YAAY,GAAG,OAAO;;QAE5B,SAAS,CAAC,KAAK,eAAe,cAAc;;;;;;;;;;;;;;;;;;;iBAmBnC,SAAS,CAAC,KAAK;CAC/B,CAAC;IACA,CAAC;AACH,CAAC","sourcesContent":["import { getUserFileExtension } from \"../../../../helpers/fs.helpers\";\nimport { TemplateOptions } from \"../../template-generators\";\n\nexport function generateQueryOptionsTemplate(options: TemplateOptions): string {\n const { modelName } = options;\n const isAuth = modelName?.camel === \"auth\";\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n\n if (!modelName)\n throw new Error(\"Model name is required for query config template\");\n\n // Generate imports\n const imports = isAuth\n ? `import { AuthPrismaQueryOptions } from 'arkos/prisma'`\n : `import { PrismaQueryOptions } from 'arkos/prisma'`;\n\n // Generate type annotation for TypeScript\n const typeAnnotation = isTypeScript\n ? isAuth\n ? `: AuthPrismaQueryOptions<typeof prisma.${modelName.camel}>`\n : `: PrismaQueryOptions<typeof prisma.${modelName.camel}>`\n : \"\";\n\n // Generate prisma import if TypeScript\n const prismaImport = isTypeScript\n ? `import prisma from \"../../utils/prisma\";\\n`\n : \"\";\n\n if (isAuth) {\n // Auth template\n return `${prismaImport}${imports};\n\nconst ${modelName.camel}QueryOptions${typeAnnotation} = {\n getMe: {},\n updateMe: {},\n deleteMe: {},\n login: {},\n signup: {},\n updatePassword: {},\n}\n\nexport default ${modelName.camel}QueryOptions;\n`;\n } else {\n // Regular template\n return `${prismaImport}${imports};\n\nconst ${modelName.camel}QueryOptions${typeAnnotation} = {\n global: {},\n find: {},\n findOne: {},\n findMany: {},\n update: {},\n updateMany: {},\n updateOne: {},\n create: {},\n createMany: {},\n createOne: {},\n save: {},\n saveMany: {},\n saveOne: {},\n delete: {},\n deleteMany: {},\n deleteOne: {},\n}\n\nexport default ${modelName.camel}QueryOptions;\n`;\n }\n}\n"]}
@@ -0,0 +1,18 @@
1
+ "use strict";import a from"pluralize";import{checkFileExists as p,getUserFileExtension as u}from"../../../../helpers/fs.helpers.js";export function generateRouterTemplate(l){const{modelName:o,imports:e}=l;if(!o)throw new Error("Model name is required for router template");const r=u(),n=e?.controller||`./${o.kebab}.controller.${r}`,c=r==="ts"?": RouterConfig":"",s=r==="ts"?"import { RouterConfig } from 'arkos'":"",t=p(n),i=t?`import ${o.camel}Controller from "${e?.controller||`./${o.kebab}.controller`}"`:`// import ${o.camel}Controller from "${e?.controller||`./${o.kebab}.controller`}"`,m=t?` ${o.camel}Controller.someHandler`:` // ${o.camel}Controller.someHandler`;return`import { Router } from 'express'
2
+ import { authService } from 'arkos/services'
3
+ ${i}
4
+ ${s}
5
+
6
+ export const config${c} = { }
7
+
8
+ const ${o.camel}Router = Router()
9
+
10
+ ${o.camel}Router.post(
11
+ '/custom-endpoint', // resolves to /api/${a(o.kebab)}/custom-endpoint
12
+ authService.authenticate,
13
+ authService.handleAccessControl('CustomAction', '${o.kebab}'),
14
+ ${m}
15
+ )
16
+
17
+ export default ${o.camel}Router
18
+ `}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-router-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/generate-router-template.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EACL,eAAe,EACf,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AAGxC,MAAM,UAAU,sBAAsB,CAAC,OAAwB;IAC7D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAEvC,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAG9E,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,cAAc,GAClB,OAAO,EAAE,UAAU,IAAI,KAAK,SAAS,CAAC,KAAK,eAAe,GAAG,EAAE,CAAC;IAElE,MAAM,kBAAkB,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,wBAAwB,GAC5B,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7D,MAAM,gBAAgB,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IAEzD,MAAM,oBAAoB,GAAG,gBAAgB;QAC3C,CAAC,CAAC,UAAU,SAAS,CAAC,KAAK,oBACvB,OAAO,EAAE,UAAU,IAAI,KAAK,SAAS,CAAC,KAAK,aAC7C,GAAG;QACL,CAAC,CAAC,aAAa,SAAS,CAAC,KAAK,oBAC1B,OAAO,EAAE,UAAU,IAAI,KAAK,SAAS,CAAC,KAAK,aAC7C,GAAG,CAAC;IAER,MAAM,qBAAqB,GAAG,gBAAgB;QAC5C,CAAC,CAAC,KAAK,SAAS,CAAC,KAAK,wBAAwB;QAC9C,CAAC,CAAC,QAAQ,SAAS,CAAC,KAAK,wBAAwB,CAAC;IAEpD,OAAO;;EAEP,oBAAoB;EACpB,wBAAwB;;qBAEL,kBAAkB;;QAE/B,SAAS,CAAC,KAAK;;EAErB,SAAS,CAAC,KAAK;4CAC2B,SAAS,CACjD,SAAS,CAAC,KAAK,CAChB;;qDAEkD,SAAS,CAAC,KAAK;EAClE,qBAAqB;;;iBAGN,SAAS,CAAC,KAAK;CAC/B,CAAC;AACF,CAAC","sourcesContent":["import pluralize from \"pluralize\";\nimport {\n checkFileExists,\n getUserFileExtension,\n} from \"../../../../helpers/fs.helpers\";\nimport { TemplateOptions } from \"../../template-generators\";\n\nexport function generateRouterTemplate(options: TemplateOptions): string {\n const { modelName, imports } = options;\n\n if (!modelName) throw new Error(\"Model name is required for router template\");\n\n // Check if controller file exists\n const ext = getUserFileExtension();\n const controllerPath =\n imports?.controller || `./${modelName.kebab}.controller.${ext}`;\n\n const routerConfigTsType = ext === \"ts\" ? \": RouterConfig\" : \"\";\n const routerConfigTsTypeImport =\n ext === \"ts\" ? \"import { RouterConfig } from 'arkos'\" : \"\";\n\n const controllerExists = checkFileExists(controllerPath);\n\n const controllerImportLine = controllerExists\n ? `import ${modelName.camel}Controller from \"${\n imports?.controller || `./${modelName.kebab}.controller`\n }\"`\n : `// import ${modelName.camel}Controller from \"${\n imports?.controller || `./${modelName.kebab}.controller`\n }\"`;\n\n const controllerHandlerLine = controllerExists\n ? ` ${modelName.camel}Controller.someHandler`\n : ` // ${modelName.camel}Controller.someHandler`;\n\n return `import { Router } from 'express'\nimport { authService } from 'arkos/services'\n${controllerImportLine}\n${routerConfigTsTypeImport}\n\nexport const config${routerConfigTsType} = { }\n\nconst ${modelName.camel}Router = Router()\n\n${modelName.camel}Router.post(\n '/custom-endpoint', // resolves to /api/${pluralize(\n modelName.kebab\n )}/custom-endpoint\n authService.authenticate,\n authService.handleAccessControl('CustomAction', '${modelName.kebab}'),\n${controllerHandlerLine}\n)\n\nexport default ${modelName.camel}Router\n`;\n}\n"]}
@@ -0,0 +1,15 @@
1
+ "use strict";import{getUserFileExtension as a}from"../../../../helpers/fs.helpers.js";export function generateServiceTemplate(t){const{modelName:e,imports:s}=t,r=a()==="ts";if(!e)throw new Error("Model name is required for service template");const o=r?`import prisma from "../../utils/prisma.js";
2
+ `:"",c=r?`import { BaseService } from "${s?.baseService||"arkos/services"}";`:`import { BaseService } from "${s?.baseService||"arkos/services"}";`,i=r?`<typeof prisma.${e.camel}>`:"";return`${o}${c}
3
+
4
+ class ${e.pascal}Service extends BaseService${i} {
5
+ constructor() {
6
+ super("${e.kebab}");
7
+ }
8
+
9
+ // Add your custom service methods here
10
+ }
11
+
12
+ const ${e.camel}Service = new ${e.pascal}Service();
13
+
14
+ export default ${e.camel}Service;
15
+ `}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-service-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/generate-service-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAGtE,MAAM,UAAU,uBAAuB,CAAC,OAAwB;IAC9D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACvC,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;IAElC,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAGjE,MAAM,YAAY,GAAG,YAAY;QAC/B,CAAC,CAAC,gDAAgD;QAClD,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,iBAAiB,GAAG,YAAY;QACpC,CAAC,CAAC,gCACE,OAAO,EAAE,WAAW,IAAI,gBAC1B,IAAI;QACN,CAAC,CAAC,gCACE,OAAO,EAAE,WAAW,IAAI,gBAC1B,IAAI,CAAC;IAGT,MAAM,aAAa,GAAG,YAAY;QAChC,CAAC,CAAC,kBAAkB,SAAS,CAAC,KAAK,GAAG;QACtC,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,GAAG,YAAY,GAAG,iBAAiB;;QAEpC,SAAS,CAAC,MAAM,8BAA8B,aAAa;;aAEtD,SAAS,CAAC,KAAK;;;;;;QAMpB,SAAS,CAAC,KAAK,iBAAiB,SAAS,CAAC,MAAM;;iBAEvC,SAAS,CAAC,KAAK;CAC/B,CAAC;AACF,CAAC","sourcesContent":["import { getUserFileExtension } from \"../../../../helpers/fs.helpers\";\nimport { TemplateOptions } from \"../../template-generators\";\n\nexport function generateServiceTemplate(options: TemplateOptions): string {\n const { modelName, imports } = options;\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n\n if (!modelName)\n throw new Error(\"Model name is required for service template\");\n\n // Generate imports\n const prismaImport = isTypeScript\n ? `import { prisma } from \"../../utils/prisma\";\\n`\n : \"\";\n\n const baseServiceImport = isTypeScript\n ? `import { BaseService } from \"${\n imports?.baseService || \"arkos/services\"\n }\";`\n : `import { BaseService } from \"${\n imports?.baseService || \"arkos/services\"\n }\";`;\n\n // Generate type parameter for TypeScript\n const typeParameter = isTypeScript\n ? `<typeof prisma.${modelName.camel}>`\n : \"\";\n\n return `${prismaImport}${baseServiceImport}\n \nclass ${modelName.pascal}Service extends BaseService${typeParameter} {\n constructor() {\n super(\"${modelName.kebab}\");\n }\n\n // Add your custom service methods here\n}\n\nconst ${modelName.camel}Service = new ${modelName.pascal}Service();\n\nexport default ${modelName.camel}Service;\n`;\n}\n"]}
1
+ {"version":3,"file":"generate-service-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/generate-service-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAGtE,MAAM,UAAU,uBAAuB,CAAC,OAAwB;IAC9D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACvC,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;IACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;IAElC,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAGjE,MAAM,YAAY,GAAG,YAAY;QAC/B,CAAC,CAAC,4CAA4C;QAC9C,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,iBAAiB,GAAG,YAAY;QACpC,CAAC,CAAC,gCACE,OAAO,EAAE,WAAW,IAAI,gBAC1B,IAAI;QACN,CAAC,CAAC,gCACE,OAAO,EAAE,WAAW,IAAI,gBAC1B,IAAI,CAAC;IAGT,MAAM,aAAa,GAAG,YAAY;QAChC,CAAC,CAAC,kBAAkB,SAAS,CAAC,KAAK,GAAG;QACtC,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,GAAG,YAAY,GAAG,iBAAiB;;QAEpC,SAAS,CAAC,MAAM,8BAA8B,aAAa;;aAEtD,SAAS,CAAC,KAAK;;;;;;QAMpB,SAAS,CAAC,KAAK,iBAAiB,SAAS,CAAC,MAAM;;iBAEvC,SAAS,CAAC,KAAK;CAC/B,CAAC;AACF,CAAC","sourcesContent":["import { getUserFileExtension } from \"../../../../helpers/fs.helpers\";\nimport { TemplateOptions } from \"../../template-generators\";\n\nexport function generateServiceTemplate(options: TemplateOptions): string {\n const { modelName, imports } = options;\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n\n if (!modelName)\n throw new Error(\"Model name is required for service template\");\n\n // Generate imports\n const prismaImport = isTypeScript\n ? `import prisma from \"../../utils/prisma\";\\n`\n : \"\";\n\n const baseServiceImport = isTypeScript\n ? `import { BaseService } from \"${\n imports?.baseService || \"arkos/services\"\n }\";`\n : `import { BaseService } from \"${\n imports?.baseService || \"arkos/services\"\n }\";`;\n\n // Generate type parameter for TypeScript\n const typeParameter = isTypeScript\n ? `<typeof prisma.${modelName.camel}>`\n : \"\";\n\n return `${prismaImport}${baseServiceImport}\n \nclass ${modelName.pascal}Service extends BaseService${typeParameter} {\n constructor() {\n super(\"${modelName.kebab}\");\n }\n\n // Add your custom service methods here\n}\n\nconst ${modelName.camel}Service = new ${modelName.pascal}Service();\n\nexport default ${modelName.camel}Service;\n`;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ "use strict";import{generateControllerTemplate as t}from"./template-generator/templates/generate-controller-template.js";import{generateAuthConfigsTemplate as a}from"./template-generator/templates/generate-auth-configs-template.js";import{generateMiddlewaresTemplate as m}from"./template-generator/templates/generate-middlewares.js";import{generateQueryOptionsTemplate as n}from"./template-generator/templates/generate-prisma-query-options.js";import{generateRouterTemplate as o}from"./template-generator/templates/generate-router-template.js";import{generateServiceTemplate as l}from"./template-generator/templates/generate-service-template.js";export function generateTemplate(r,e){switch(r){case"controller":return t(e);case"service":return l(e);case"router":return o(e);case"auth-configs":return a(e);case"query-options":return n(e);case"middlewares":return m(e);default:throw new Error(`
2
+ Unknown template type: ${r}`)}}
@@ -0,0 +1,3 @@
1
+ "use strict";import{getVersion as r}from"./cli.helpers.js";class t{stamp({envFiles:o,host:e,port:n}){console.info(`
2
+ \x1B[1m\x1B[36m Arkos.js ${r()}\x1B[0m`),e&&n&&console.info(` - Local: http://${e}:${n}`),o?.length&&console.info(` - Environments: ${o?.join(", ").replaceAll(`${process.cwd()}/`,"")}
3
+ `)}}const a=new t;export default a;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watermark-stamper.js","sourceRoot":"","sources":["../../../../../src/utils/cli/utils/watermark-stamper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAK3C,MAAM,gBAAgB;IAIpB,KAAK,CAAC,EACJ,QAAQ,EACR,IAAI,EACJ,IAAI,GAKL;QACC,OAAO,CAAC,IAAI,CAAC,iCAAiC,UAAU,EAAE,SAAS,CAAC,CAAC;QACrE,IAAI,IAAI,IAAI,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,4BAA4B,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;QAC3E,IAAI,QAAQ,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC;YAC3B,OAAO,CAAC,IAAI,CACV,qBAAqB,QAAQ;gBAC3B,EAAE,IAAI,CAAC,IAAI,CAAC;iBACX,UAAU,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAC3C,CAAC;IACN,CAAC;CACF;AAED,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAEhD,eAAe,gBAAgB,CAAC","sourcesContent":["import { getVersion } from \"./cli.helpers\";\n\n/**\n * Helps in putting Arkosjs watermark\n */\nclass WatermarkStamper {\n /**\n * Stamps Arkosjs watermark with Local and Environments\n */\n stamp({\n envFiles,\n host,\n port,\n }: {\n envFiles: string[] | undefined;\n host: string | undefined;\n port: string | undefined;\n }) {\n console.info(`\\n \\x1b[1m\\x1b[36m Arkos.js ${getVersion()}\\x1b[0m`);\n if (host && port) console.info(` - Local: http://${host}:${port}`);\n if (envFiles?.length || 0 > 1)\n console.info(\n ` - Environments: ${envFiles\n ?.join(\", \")\n .replaceAll(`${process.cwd()}/`, \"\")}\\n`\n );\n }\n}\n\nconst watermarkStamper = new WatermarkStamper();\n\nexport default watermarkStamper;\n"]}
@@ -0,0 +1 @@
1
+ "use strict";import o from"path";import c from"fs";import t from"dotenv";export function loadEnvironmentVariables(){const n=process.env.NODE_ENV,r=process.cwd();let s=[];[o.resolve(r,".env.defaults"),o.resolve(r,`.env.${n}`),o.resolve(r,`.env.${n}.local`),o.resolve(r,".env.local"),o.resolve(r,".env")].forEach(e=>{if(c.existsSync(e))if(n==="production"&&e.endsWith(".local"))console.info(`Skipping the local ${e.replace(r,"")} files in production`);else{const l=t.config({path:e,override:!0});l.error?console.warn(`Warning: Error loading ${e}`,l.error):s.push(e)}});const i=["DATABASE_URL"].filter(e=>!process.env[e]);if(i.length>0&&console.error("Missing required environment variables:",i.join(", ")),s)return s}
@@ -0,0 +1 @@
1
+ "use strict";import l from"../helpers/deepmerge.helper.js";import{parseQueryParamsWithModifiers as c}from"../helpers/api.features.helpers.js";import f from"../../modules/error-handler/utils/app-error.js";import{getPrismaInstance as m}from"../helpers/prisma.helpers.js";export default class d{constructor(s,e){if(this.filters={},this.reqFiltersSearchParam={},this.excludedFields=["page","filters","sort","limit","fields","addFields","removeFields","search","include","filterMode","where","prismaQueryOptions","ignoredFields"],s){const{filters:r="{}",...h}=s.query;this.req=s,this.searchParams=l(c(h),c(JSON.parse(r))),s.finalPrismaQueryOptions=this.searchParams}e&&(this.modelName=e),this.filters={...this.filters}}setup(s,e){if(s){const{filters:r="{}",...h}=s.query;this.req=s,this.searchParams=l(c(h),c(JSON.parse(r))),s.finalPrismaQueryOptions=this.searchParams}return e&&(this.modelName=e),this.filters={...this.filters},this}filter(){if(!this.req)throw new Error("Trying to use APIFeatures.filter() without passing request on class constructor or APIFeatures.setup() method. read more about at www.arkosjs.com/docs/advanced-guide/api-features-class");const s=[],e={...this.searchParams};this.excludedFields.forEach(a=>delete e[a]);const r={...this.req.params,...e},h=Object.keys(r).map(a=>({[a]:r[a]}));let i=h.length>0?{[this.req.query?.filterMode??"OR"]:h}:{};if(this.searchParams.search){const a=m();this.modelName&&Object.keys(a[this.modelName].fields).forEach(o=>{const n=a[this.modelName].fields[o];n?.typeName==="String"&&o!=="id"&&o!=="password"&&!n.isList&&!o?.includes?.("Id")&&!o?.includes?.("ID")&&s.push({[`${o}`]:{contains:this.searchParams.search,mode:"insensitive"}})}),i=l({OR:s},i)}const t=l({where:i},this.req.prismaQueryOptions||{});return this.filters=l(t,this.filters),this}search(){this.searchParams?.search&&(this.filters=l(this.filters,{where:{OR:[]}}))}sort(){if(this.searchParams.sort){const s=this.searchParams?.sort?.split(",")?.map(e=>({[e.startsWith("-")?e.substring(1):e]:e.startsWith("-")?"desc":"asc"}));this.filters=l(this.filters,{orderBy:s})}return this}limitFields(){if(this.searchParams?.fields){const s=this.searchParams.fields.split(","),e=s.filter(t=>!t.startsWith("+")&&!t.startsWith("-")),r=s.filter(t=>t.startsWith("+")).map(t=>t.substring(1)),h=s.filter(t=>t.startsWith("-")).map(t=>t.substring(1));let i={};e.length>0?i=e.reduce((t,a)=>(t[a]=!0,t),{}):(i=this.filters.include||{},r.forEach(t=>{i[t]=!0}),h.forEach(t=>{i[t]=!1})),this.filters={...this.filters,select:i},this.filters.include&&delete this.filters.include}if(this.searchParams?.addFields||this.searchParams?.removeFields)throw new f("The addFields and removeFields parameters are deprecated. Please use fields with + and - prefixes instead.",400);return this}paginate(){const s=parseInt(this.searchParams.page,10)||1,e=parseInt(this.searchParams.limit,10)||30,r=(s-1)*e;return this.filters={...this.filters,skip:r,take:e},this}}export const apiFeatures=new d;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.features.js","sourceRoot":"","sources":["../../../../src/utils/features/api.features.ts"],"names":[],"mappings":"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","sourcesContent":["import { Request } from \"express\";\nimport deepmerge from \"../helpers/deepmerge.helper\";\nimport { parseQueryParamsWithModifiers } from \"../helpers/api.features.helpers\";\nimport AppError from \"../../modules/error-handler/utils/app-error\";\nimport { getPrismaInstance } from \"../helpers/prisma.helpers\";\nimport { ArkosRequest } from \"../../types\";\n\ntype ModelName = string;\n\nexport default class APIFeatures {\n req?: ArkosRequest;\n searchParams: any; // The query string parameters from the request\n searchParamsWithModifiers: any; // The query string parameters from the request\n filters: any = {};\n reqFiltersSearchParam: any = {};\n modelName?: ModelName;\n excludedFields = [\n \"page\",\n \"filters\",\n \"sort\",\n \"limit\",\n \"fields\",\n \"addFields\",\n \"removeFields\",\n \"search\",\n \"include\",\n \"filterMode\",\n \"where\",\n \"prismaQueryOptions\",\n \"ignoredFields\",\n ];\n\n constructor(req?: Request, modelName?: ModelName) {\n if (req) {\n const { filters = \"{}\", ...restOfQuery } = req.query;\n this.req = req;\n this.searchParams = deepmerge(\n parseQueryParamsWithModifiers(restOfQuery),\n parseQueryParamsWithModifiers(JSON.parse(filters as string))\n );\n (req as any).finalPrismaQueryOptions = this.searchParams;\n }\n\n if (modelName) this.modelName = modelName;\n this.filters = { ...this.filters };\n }\n\n setup(req: Request, modelName?: ModelName) {\n if (req) {\n const { filters = \"{}\", ...restOfQuery } = req.query;\n this.req = req;\n this.searchParams = deepmerge(\n parseQueryParamsWithModifiers(restOfQuery),\n parseQueryParamsWithModifiers(JSON.parse(filters as string))\n );\n (req as any).finalPrismaQueryOptions = this.searchParams;\n }\n if (modelName) this.modelName = modelName;\n this.filters = { ...this.filters };\n\n return this;\n }\n\n filter() {\n if (!this.req)\n throw new Error(\n \"Trying to use APIFeatures.filter() without passing request on class constructor or APIFeatures.setup() method. read more about at www.arkosjs.com/docs/advanced-guide/api-features-class\"\n );\n const searchableFields: Record<string, any>[] = [];\n\n const queryObj = { ...this.searchParams };\n\n this.excludedFields.forEach((el) => delete queryObj[el]);\n\n const whereObj = { ...this.req.params, ...queryObj };\n const whereLogicalOperatorFilters = Object.keys(whereObj).map((key) => ({\n [key]: whereObj[key],\n }));\n\n let whereOptions =\n whereLogicalOperatorFilters.length > 0\n ? {\n [(this.req.query?.filterMode as string) ?? \"OR\"]:\n whereLogicalOperatorFilters,\n }\n : {};\n\n if (!!this.searchParams.search) {\n const prisma = getPrismaInstance();\n\n if (this.modelName)\n Object.keys((prisma as any)[this.modelName].fields).forEach((key) => {\n const field = ((prisma as any)[this.modelName!].fields as any)[key];\n if (\n field?.typeName === \"String\" &&\n key !== \"id\" &&\n key !== \"password\" &&\n !field.isList &&\n !key?.includes?.(\"Id\") &&\n !key?.includes?.(\"ID\")\n ) {\n searchableFields.push({\n [`${key}`]: {\n contains: this.searchParams.search,\n mode: \"insensitive\",\n },\n });\n }\n });\n\n whereOptions = deepmerge(\n {\n OR: searchableFields,\n },\n whereOptions\n );\n }\n\n const firstMerge = deepmerge(\n {\n where: whereOptions,\n },\n this.req.prismaQueryOptions || {}\n );\n\n this.filters = deepmerge(firstMerge, this.filters);\n return this;\n }\n\n search() {\n if (this.searchParams?.search) {\n this.filters = deepmerge(this.filters, {\n where: {\n OR: [],\n },\n });\n }\n }\n\n sort() {\n if (this.searchParams.sort) {\n const sortBy = this.searchParams?.sort\n ?.split(\",\")\n ?.map((field: string) => ({\n [field.startsWith(\"-\") ? field.substring(1) : field]:\n field.startsWith(\"-\") ? \"desc\" : \"asc\",\n }));\n this.filters = deepmerge(this.filters, { orderBy: sortBy });\n }\n\n return this;\n }\n\n limitFields() {\n if (this.searchParams?.fields) {\n const fields = this.searchParams.fields.split(\",\");\n\n // Separate fields into includes, excludes, and regular fields\n const regularFields = fields.filter(\n (field: string) => !field.startsWith(\"+\") && !field.startsWith(\"-\")\n );\n const includeFields = fields\n .filter((field: string) => field.startsWith(\"+\"))\n .map((field: string) => field.substring(1));\n const excludeFields = fields\n .filter((field: string) => field.startsWith(\"-\"))\n .map((field: string) => field.substring(1));\n\n // Create selection object based on field type\n let selection: Record<string, any> = {};\n\n // If regular fields exist, use them as the base selection\n if (regularFields.length > 0) {\n selection = regularFields.reduce(\n (acc: Record<string, any>, field: string) => {\n acc[field] = true;\n return acc;\n },\n {} as Record<string, any>\n );\n }\n // Otherwise, use include fields as additions to any existing included fields\n else {\n // Start with current include fields if they exist\n selection = this.filters.include || {};\n\n // Add any explicitly included fields\n includeFields.forEach((field: string) => {\n selection[field] = true;\n });\n\n // Add any explicitly excluded fields\n excludeFields.forEach((field: string) => {\n selection[field] = false;\n });\n }\n\n // Apply the selection to filters\n this.filters = {\n ...this.filters,\n select: selection,\n };\n\n // Remove the include filter as it's now part of select\n if (this.filters.include) {\n delete this.filters.include;\n }\n }\n\n // Remove any references to the now-unused parameters\n if (this.searchParams?.addFields || this.searchParams?.removeFields) {\n throw new AppError(\n \"The addFields and removeFields parameters are deprecated. Please use fields with + and - prefixes instead.\",\n 400\n );\n }\n\n return this;\n }\n\n paginate() {\n const page = parseInt(this.searchParams.page, 10) || 1;\n const limit = parseInt(this.searchParams.limit, 10) || 30;\n const skip = (page - 1) * limit;\n\n this.filters = {\n ...this.filters,\n skip,\n take: limit,\n };\n return this;\n }\n}\n\nexport const apiFeatures = new APIFeatures();\n"]}
@@ -0,0 +1 @@
1
+ "use strict";import*as e from"../helpers/change-case.helpers.js";const u=t=>t!==null&&typeof t=="object";function a(t){return function r(s,c=1,o){if(c===0||!u(s))return s;if(Array.isArray(s))return s.map(n=>r(n,c-1,o));const C=Object.create(Object.getPrototypeOf(s));return Object.keys(s).forEach(n=>{const p=s[n],l=t(n,o),x=r(p,c-1,o);C[l]=x}),C}}export const camelCase=a(e.camelCase),capitalCase=a(e.capitalCase),constantCase=a(e.constantCase),dotCase=a(e.dotCase),trainCase=a(e.trainCase),noCase=a(e.noCase),kebabCase=a(e.kebabCase),pascalCase=a(e.pascalCase),pathCase=a(e.pathCase),sentenceCase=a(e.sentenceCase),snakeCase=a(e.snakeCase);
@@ -0,0 +1 @@
1
+ "use strict";import*as l from"net";import e from"../sheu.js";class h{constructor(){this.prevWarnings=new Set}getCorrectHostAndPortToUse(t,r){const o=t?.CLI_HOST||r?.host||t?.HOST||"localhost",n=t?.CLI_PORT||r?.port||t?.PORT||"8000";return{host:String(o),port:String(n)}}async getHostAndAvailablePort(t,r){if(this.port&&this.host)return r?.logWarning&&this.prevWarnings.size>0&&(console.info(""),Array.from(this.prevWarnings).forEach(i=>e.warn(i))),{port:this.port,host:this.host};const{host:o,port:n}=this.getCorrectHostAndPortToUse(t,r);let s=parseInt(n,10);for(;;){if(await this.isPortAvailable(o,s))return this.port=s.toString(),this.host=o,{host:o,port:s.toString()};const a=`Port ${s} is in use, trying port ${s+1} instead...`;this.prevWarnings.add(a),r?.logWarning&&(console.info(""),e.warn(`${a}`)),s++}}async isPortAvailable(t,r){return new Promise(o=>{const n=l.createServer(),s=[r,["localhost","127.0.0.1"].includes(t)?void 0:t].filter(i=>!!i);n.listen(...s,()=>{n.close(()=>{o(!0)})}),n.on("error",()=>{o(!1)})})}logWarnings(){console.info(""),Array.from(this.prevWarnings).forEach(t=>e.warn(t))}}const c=new h;export default c;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"port-and-host-allocator.js","sourceRoot":"","sources":["../../../../src/utils/features/port-and-host-allocator.ts"],"names":[],"mappings":"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","sourcesContent":["import { ArkosConfig } from \"../../exports\";\nimport * as net from \"net\";\nimport sheu from \"../sheu\";\n\nclass PortAndHostAllocator {\n private host: string | undefined;\n private port: string | undefined;\n private prevWarnings = new Set<string>();\n\n /**\n * Helps in correcting getting the right host and port to be used according to cli params, arkos config, env and default host and port.\n *\n * Is worth mentioning that this will be preserved along the application until it restarts.\n *\n * @param config {ArkosConfig} - your application configuraiton\n * @param env {Record<string,any>} - current env, may pass process.env\n */\n getCorrectHostAndPortToUse(\n env: Record<string, any>,\n config?: ArkosConfig\n ): { port: string; host: string } {\n const host = env?.CLI_HOST || config?.host || env?.HOST || \"localhost\";\n const port = env?.CLI_PORT || config?.port || env?.PORT || \"8000\";\n return { host: String(host), port: String(port) };\n }\n\n /**\n * Finds an available port starting from the configured port and incrementing until one is found\n *\n * @param env {Record<string,any>} - current env, may pass process.env\n * @param config {ArkosConfig} - your application configuration\n * @returns Promise<{port: string; host: string}> - available port and host\n */\n async getHostAndAvailablePort(\n env: Record<string, any>,\n config?: ArkosConfig & { logWarning?: boolean; caller?: string }\n ): Promise<{ port: string; host: string }> {\n if (this.port && this.host) {\n if (config?.logWarning && this.prevWarnings.size > 0) {\n console.info(\"\");\n Array.from(this.prevWarnings).forEach((msg) => sheu.warn(msg));\n }\n return { port: this.port, host: this.host };\n }\n\n const { host, port: initialPort } = this.getCorrectHostAndPortToUse(\n env,\n config\n );\n let currentPort = parseInt(initialPort, 10);\n\n while (true) {\n const isAvailable = await this.isPortAvailable(host, currentPort);\n\n if (isAvailable) {\n this.port = currentPort.toString();\n this.host = host;\n return { host, port: currentPort.toString() };\n }\n\n const msg = `Port ${currentPort} is in use, trying port ${currentPort + 1} instead...`;\n this.prevWarnings.add(msg);\n\n if (config?.logWarning) {\n console.info(\"\");\n sheu.warn(`${msg}`);\n }\n\n currentPort++;\n }\n }\n\n /**\n * Checks if a port is available on the given host\n *\n * @param host {string} - host to check\n * @param port {number} - port to check\n * @returns Promise<boolean> - true if port is available, false otherwise\n */\n private async isPortAvailable(host: string, port: number): Promise<boolean> {\n return new Promise((resolve) => {\n const server = net.createServer();\n const hostAndPort = [\n port,\n ![\"localhost\", \"127.0.0.1\"].includes(host) ? host : undefined,\n ].filter((val) => !!val) as any;\n\n server.listen(...hostAndPort, () => {\n server.close(() => {\n resolve(true);\n });\n });\n\n server.on(\"error\", () => {\n resolve(false);\n });\n });\n }\n\n logWarnings() {\n console.info(\"\");\n Array.from(this.prevWarnings).forEach((msg) => sheu.warn(msg));\n }\n}\n\nconst portAndHostAllocator = new PortAndHostAllocator();\n\nexport default portAndHostAllocator;\n"]}
@@ -0,0 +1 @@
1
+ "use strict";import h from"./deepmerge.helper.js";const F={dateFields:["createdAt","updatedAt","deletedAt","date"],booleanFields:["isActive","isDeleted","isPublished","isArchived"],numericFields:["age","price","quantity","amount","rating"]};export function parseQueryParamsWithModifiers(s,r=F){const c=Object.entries(JSON.parse(JSON.stringify(s)));let p={};for(const[f,n]of c){const e=f.split("__");if(!n&&n!==!1&&n!=="false"&&e.length<2)continue;const t=Array.isArray(n)?n[0]?.toString():n;let o={};if(e.length<2)o[f]=typeof n=="string"&&!Number.isNaN(n)?d(t,e[0],r):n;else{const l=e[0];if(l==="orderBy"&&e.length===2)o.orderBy={},o.orderBy[e[1]]=t;else if(e.length===1)o[l]={equals:d(t,l,r)};else{let m={},i=m,a=l;for(let u=1;u<e.length-1;u++)i[a]={},i=i[a],a=e[u];const b=e[e.length-1];switch(b){case"icontains":i[a]={contains:t,mode:"insensitive"};break;case"contains":i[a]={contains:t,mode:"sensitive"};break;case"in":case"notIn":i[a]={[b]:t.split(",").map(y=>d(y.trim(),l,r))};break;case"or":const u=t.split(",");m.OR=u.map(y=>({[l]:{equals:d(y.trim(),l,r)}}));break;case"isNull":i[a]={equals:t.toLowerCase()==="true"?null:void 0};break;case"isEmpty":i[a]={equals:t.toLowerCase()==="true"?"":void 0};break;default:i[a]={[b]:d(t,l,r)}}o=m}}p=h(p,o)}return p}function d(s,r,c){return c.dateFields?.includes?.(r)&&s?new Date(s):c.booleanFields?.includes?.(r)&&s?s.toLowerCase()==="true":c.numericFields?.includes?.(r)&&s?Number(s):s}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.features.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/api.features.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import deepmerge from \"./deepmerge.helper\";\n\n/**\n * Configuration types for field type mapping\n */\ninterface FieldConfig {\n dateFields: string[];\n booleanFields: string[];\n numericFields: string[];\n}\n\n/**\n * Type for the structured filter object returned by the parser\n */\ntype ParsedFilter = {\n [key: string]: any;\n orderBy?: Record<string, \"asc\" | \"desc\">;\n OR?: Record<string, any>[];\n};\n\n/**\n * Default configuration for field types\n */\nconst DEFAULT_FIELD_CONFIG: FieldConfig = {\n dateFields: [\"createdAt\", \"updatedAt\", \"deletedAt\", \"date\"],\n booleanFields: [\"isActive\", \"isDeleted\", \"isPublished\", \"isArchived\"],\n numericFields: [\"age\", \"price\", \"quantity\", \"amount\", \"rating\"],\n};\n\n/**\n * Parses query parameters into a structured filter object compatible with Prisma queries.\n * Supports various operators and data type conversions with deep merge strategy.\n *\n * @param query - Object containing query parameters\n * @param fieldConfig - Optional configuration for field type mapping\n * @returns Structured filter object for database queries\n *\n * @example\n * // Basic usage\n * parseQueryParamsWithModifiers({ name__contains: 'john' })\n * // => { name: { contains: 'john', mode: 'sensitive' } }\n *\n * @example\n * // Deep merge example\n * parseQueryParamsWithModifiers({\n * 'some__data': '1',\n * 'some__info': '2'\n * })\n * // => { some: { data: '1', info: '2' } }\n *\n * @example\n * // Complex query\n * parseQueryParamsWithModifiers({\n * name__not__equals: 'john',\n * age__gt: '25',\n * tags__in: 'tag1,tag2',\n * orderBy__createdAt: 'desc'\n * })\n */\nexport function parseQueryParamsWithModifiers(\n query: Record<string, any>,\n fieldConfig: FieldConfig = DEFAULT_FIELD_CONFIG\n): ParsedFilter {\n const entries = Object.entries(JSON.parse(JSON.stringify(query)));\n let result: ParsedFilter = {};\n\n for (const [key, value] of entries) {\n const parts = key.split(\"__\");\n if (!value && value !== false && value !== \"false\" && parts.length < 2)\n continue;\n\n // Convert value to string if it's not already\n const stringValue = Array.isArray(value) ? value[0]?.toString() : value;\n\n let currentResult: any = {};\n\n if (parts.length < 2) {\n currentResult[key] =\n typeof value === \"string\" && !Number.isNaN(value)\n ? convertValue(stringValue, parts[0], fieldConfig)\n : value;\n } else {\n const fieldName = parts[0];\n\n // Handle ordering\n if (fieldName === \"orderBy\" && parts.length === 2) {\n currentResult.orderBy = {};\n currentResult.orderBy[parts[1]] = stringValue as \"asc\" | \"desc\";\n } else if (parts.length === 1) {\n // Handle simple equals case\n currentResult[fieldName] = {\n equals: convertValue(stringValue, fieldName, fieldConfig),\n };\n } else {\n // Build nested structure\n let nestedObj: any = {};\n let currentLevel = nestedObj;\n let currentKey = fieldName;\n\n // Create the nested path\n for (let i = 1; i < parts.length - 1; i++) {\n currentLevel[currentKey] = {};\n currentLevel = currentLevel[currentKey];\n currentKey = parts[i];\n }\n\n const lastOperator = parts[parts.length - 1];\n\n // Handle special operators\n switch (lastOperator) {\n case \"icontains\":\n currentLevel[currentKey] = {\n contains: stringValue,\n mode: \"insensitive\",\n };\n break;\n\n case \"contains\":\n currentLevel[currentKey] = {\n contains: stringValue,\n mode: \"sensitive\",\n };\n break;\n\n case \"in\":\n case \"notIn\":\n currentLevel[currentKey] = {\n [lastOperator]: stringValue\n .split(\",\")\n .map((v: string) =>\n convertValue(v.trim(), fieldName, fieldConfig)\n ),\n };\n break;\n\n case \"or\":\n const values: string[] = stringValue.split(\",\");\n nestedObj.OR = values.map((val) => ({\n [fieldName]: {\n equals: convertValue(val.trim(), fieldName, fieldConfig),\n },\n }));\n break;\n\n case \"isNull\":\n currentLevel[currentKey] = {\n equals: stringValue.toLowerCase() === \"true\" ? null : undefined,\n };\n break;\n\n case \"isEmpty\":\n currentLevel[currentKey] = {\n equals: stringValue.toLowerCase() === \"true\" ? \"\" : undefined,\n };\n break;\n\n default:\n currentLevel[currentKey] = {\n [lastOperator]: convertValue(stringValue, fieldName, fieldConfig),\n };\n }\n\n currentResult = nestedObj;\n }\n }\n\n // Deep merge the current result with the accumulated result\n result = deepmerge(result, currentResult);\n }\n\n return result;\n}\n\n/**\n * Converts string values to appropriate types based on field configuration\n *\n * @example\n * // Example usage:\n * const query = {\n * name__not__equals: 'uanela',\n * email__contains: 'example.com',\n * description__icontains: 'test',\n * age__gt: '25',\n * status: 'active',\n * tags__in: 'tag1,tag2,tag3',\n * createdAt__gt: '2024-01-01',\n * isActive: 'true',\n * orderBy__createdAt: 'desc',\n * some__data: '1',\n * some__info: '2'\n * };\n *\n * const result = parseQueryParamsWithModifiers(query);\n * // Result will properly merge nested objects instead of overwriting\n */\nfunction convertValue(\n value: string,\n fieldName: string,\n config: FieldConfig\n): any {\n // Handle date fields\n if (config.dateFields?.includes?.(fieldName) && value) {\n return new Date(value);\n }\n\n // Handle boolean fields\n if (config.booleanFields?.includes?.(fieldName) && value) {\n return value.toLowerCase() === \"true\";\n }\n\n // Handle numeric fields\n if (config.numericFields?.includes?.(fieldName) && value) {\n return Number(value);\n }\n\n return value;\n}\n"]}