arkos 2.0.0-next.3 → 2.0.0-next.30

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 (655) hide show
  1. package/README.md +146 -145
  2. package/cli.js +11 -20
  3. package/dist/esm/app.js +37 -35
  4. package/dist/esm/app.js.map +1 -1
  5. package/dist/esm/components/arkos-gateway/arkos-gateway.js +362 -0
  6. package/dist/esm/components/arkos-gateway/arkos-gateway.js.map +1 -0
  7. package/dist/esm/components/arkos-gateway/socket-extensions.js +176 -0
  8. package/dist/esm/components/arkos-gateway/socket-extensions.js.map +1 -0
  9. package/dist/esm/components/arkos-gateway/types.js +3 -0
  10. package/dist/esm/components/arkos-gateway/types.js.map +1 -0
  11. package/dist/esm/components/arkos-gateway/utils/helpers.js +105 -0
  12. package/dist/esm/components/arkos-gateway/utils/helpers.js.map +1 -0
  13. package/dist/esm/components/arkos-gateway/utils/memory-gateway-store.js +45 -0
  14. package/dist/esm/components/arkos-gateway/utils/memory-gateway-store.js.map +1 -0
  15. package/dist/esm/components/arkos-gateway/utils/multi-tier-arkos-gateway-store.js +40 -0
  16. package/dist/esm/components/arkos-gateway/utils/multi-tier-arkos-gateway-store.js.map +1 -0
  17. package/dist/esm/components/arkos-gateway/utils/rate-limiter.js +13 -0
  18. package/dist/esm/components/arkos-gateway/utils/rate-limiter.js.map +1 -0
  19. package/dist/esm/components/arkos-loadable-registry/index.js +1 -3
  20. package/dist/esm/components/arkos-loadable-registry/index.js.map +1 -1
  21. package/dist/esm/components/arkos-policy/index.js +3 -1
  22. package/dist/esm/components/arkos-policy/index.js.map +1 -1
  23. package/dist/esm/components/arkos-route-hook/index.js +30 -19
  24. package/dist/esm/components/arkos-route-hook/index.js.map +1 -1
  25. package/dist/esm/components/arkos-route-hook/reader.js.map +1 -1
  26. package/dist/esm/components/arkos-route-hook/types.js.map +1 -1
  27. package/dist/esm/exports/error-handler/index.js +1 -0
  28. package/dist/esm/exports/error-handler/index.js.map +1 -1
  29. package/dist/esm/exports/file-upload.js +2 -0
  30. package/dist/esm/exports/file-upload.js.map +1 -0
  31. package/dist/esm/exports/index.js +3 -3
  32. package/dist/esm/exports/index.js.map +1 -1
  33. package/dist/esm/exports/middlewares/index.js +1 -1
  34. package/dist/esm/exports/middlewares/index.js.map +1 -1
  35. package/dist/esm/exports/services/index.js +2 -2
  36. package/dist/esm/exports/services/index.js.map +1 -1
  37. package/dist/esm/exports/websockets.js +5 -0
  38. package/dist/esm/exports/websockets.js.map +1 -0
  39. package/dist/esm/generated.js.map +1 -1
  40. package/dist/esm/modules/auth/auth.controller.js +165 -230
  41. package/dist/esm/modules/auth/auth.controller.js.map +1 -1
  42. package/dist/esm/modules/auth/auth.router.js +28 -10
  43. package/dist/esm/modules/auth/auth.router.js.map +1 -1
  44. package/dist/esm/modules/auth/auth.service.js +202 -136
  45. package/dist/esm/modules/auth/auth.service.js.map +1 -1
  46. package/dist/esm/modules/auth/auth.types.js +2 -0
  47. package/dist/esm/modules/auth/auth.types.js.map +1 -0
  48. package/dist/esm/modules/auth/utils/auth-error-objects.js +2 -2
  49. package/dist/esm/modules/auth/utils/auth-error-objects.js.map +1 -1
  50. package/dist/esm/modules/auth/utils/auth-hooks-manager.js +148 -0
  51. package/dist/esm/modules/auth/utils/auth-hooks-manager.js.map +1 -0
  52. package/dist/esm/modules/auth/utils/auth-openapi-generator.js +367 -0
  53. package/dist/esm/modules/auth/utils/auth-openapi-generator.js.map +1 -0
  54. package/dist/esm/modules/auth/utils/auth-prisma-json-schema-generator.js +97 -0
  55. package/dist/esm/modules/auth/utils/auth-prisma-json-schema-generator.js.map +1 -0
  56. package/dist/esm/modules/auth/utils/docs-links.js +6 -0
  57. package/dist/esm/modules/auth/utils/docs-links.js.map +1 -0
  58. package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js +1 -0
  59. package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js.map +1 -1
  60. package/dist/esm/modules/auth/utils/services/auth-action.service.js +20 -16
  61. package/dist/esm/modules/auth/utils/services/auth-action.service.js.map +1 -1
  62. package/dist/esm/modules/auth/utils/token-extraction.js +57 -0
  63. package/dist/esm/modules/auth/utils/token-extraction.js.map +1 -0
  64. package/dist/esm/modules/base/base.controller.js +228 -202
  65. package/dist/esm/modules/base/base.controller.js.map +1 -1
  66. package/dist/esm/modules/base/base.middlewares.js +69 -86
  67. package/dist/esm/modules/base/base.middlewares.js.map +1 -1
  68. package/dist/esm/modules/base/base.router.js +23 -9
  69. package/dist/esm/modules/base/base.router.js.map +1 -1
  70. package/dist/esm/modules/base/base.service.js +92 -197
  71. package/dist/esm/modules/base/base.service.js.map +1 -1
  72. package/dist/esm/modules/base/types/base.service.types.js.map +1 -1
  73. package/dist/esm/modules/base/utils/error-prettifier.js +90 -30
  74. package/dist/esm/modules/base/utils/error-prettifier.js.map +1 -1
  75. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +26 -5
  76. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
  77. package/dist/esm/modules/base/utils/model-openapi-generator.js +438 -0
  78. package/dist/esm/modules/base/utils/model-openapi-generator.js.map +1 -0
  79. package/dist/esm/modules/email/email.service.js +21 -12
  80. package/dist/esm/modules/email/email.service.js.map +1 -1
  81. package/dist/esm/modules/error-handler/error-handler.controller.js +24 -113
  82. package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -1
  83. package/dist/esm/modules/error-handler/utils/app-error.js +5 -2
  84. package/dist/esm/modules/error-handler/utils/app-error.js.map +1 -1
  85. package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -1
  86. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +60 -110
  87. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
  88. package/dist/esm/modules/error-handler/utils/errors.js +127 -0
  89. package/dist/esm/modules/error-handler/utils/errors.js.map +1 -0
  90. package/dist/esm/modules/error-handler/utils/get-handled-error.js +73 -0
  91. package/dist/esm/modules/error-handler/utils/get-handled-error.js.map +1 -0
  92. package/dist/esm/modules/error-handler/utils/multer-error-handler.js +34 -0
  93. package/dist/esm/modules/error-handler/utils/multer-error-handler.js.map +1 -0
  94. package/dist/esm/modules/file-upload/file-upload.controller.js +227 -215
  95. package/dist/esm/modules/file-upload/file-upload.controller.js.map +1 -1
  96. package/dist/esm/modules/file-upload/file-upload.router.js +54 -15
  97. package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -1
  98. package/dist/esm/modules/file-upload/file-upload.service.js +41 -26
  99. package/dist/esm/modules/file-upload/file-upload.service.js.map +1 -1
  100. package/dist/esm/modules/file-upload/utils/file-upload-json-schema-generator.js +371 -0
  101. package/dist/esm/modules/file-upload/utils/file-upload-json-schema-generator.js.map +1 -0
  102. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +73 -35
  103. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -1
  104. package/dist/esm/modules/file-upload/utils/helpers/serve-upload-dir.js +206 -0
  105. package/dist/esm/modules/file-upload/utils/helpers/serve-upload-dir.js.map +1 -0
  106. package/dist/esm/modules/file-upload/utils/helpers/upload-path.helper.js +103 -0
  107. package/dist/esm/modules/file-upload/utils/helpers/upload-path.helper.js.map +1 -0
  108. package/dist/esm/modules/file-upload/utils/helpers/upload-serving-validation.js +212 -0
  109. package/dist/esm/modules/file-upload/utils/helpers/upload-serving-validation.js.map +1 -0
  110. package/dist/esm/modules/file-upload/utils/helpers/upload-serving.registry.js +30 -0
  111. package/dist/esm/modules/file-upload/utils/helpers/upload-serving.registry.js.map +1 -0
  112. package/dist/esm/modules/swagger/swagger.router.js +39 -22
  113. package/dist/esm/modules/swagger/swagger.router.js.map +1 -1
  114. package/dist/esm/modules/swagger/utils/get-open-api-login-html.js +305 -0
  115. package/dist/esm/modules/swagger/utils/get-open-api-login-html.js.map +1 -0
  116. package/dist/esm/modules/swagger/utils/helpers/class-validator-to-json-schema.js.map +1 -1
  117. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js +6 -7
  118. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +1 -1
  119. package/dist/esm/modules/swagger/utils/helpers/openapi-schema-converter.js +47 -43
  120. package/dist/esm/modules/swagger/utils/helpers/openapi-schema-converter.js.map +1 -1
  121. package/dist/esm/server.js +1 -1
  122. package/dist/esm/server.js.map +1 -1
  123. package/dist/esm/types/arkos-config/utils.js +2 -0
  124. package/dist/esm/types/arkos-config/utils.js.map +1 -0
  125. package/dist/esm/types/arkos-prisma-input.js.map +1 -1
  126. package/dist/esm/types/arkos.js.map +1 -1
  127. package/dist/esm/types/auth.js.map +1 -1
  128. package/dist/esm/types/index.js.map +1 -1
  129. package/dist/esm/types/internal.js +2 -0
  130. package/dist/esm/types/internal.js.map +1 -0
  131. package/dist/esm/types/new-arkos-config.js.map +1 -1
  132. package/dist/esm/types/router-config.js.map +1 -1
  133. package/dist/esm/types/upload.js +2 -0
  134. package/dist/esm/types/upload.js.map +1 -0
  135. package/dist/esm/types/validation/validation-manager.js +57 -0
  136. package/dist/esm/types/validation/validation-manager.js.map +1 -0
  137. package/dist/esm/types/validation/validator.js +2 -0
  138. package/dist/esm/types/validation/validator.js.map +1 -0
  139. package/dist/esm/utils/arkos-router/arkos-router-openapi-manager.js +68 -34
  140. package/dist/esm/utils/arkos-router/arkos-router-openapi-manager.js.map +1 -1
  141. package/dist/esm/utils/arkos-router/index.js +58 -158
  142. package/dist/esm/utils/arkos-router/index.js.map +1 -1
  143. package/dist/esm/utils/arkos-router/route-config-registry.js +2 -3
  144. package/dist/esm/utils/arkos-router/route-config-registry.js.map +1 -1
  145. package/dist/esm/utils/arkos-router/route-config-validator.js +11 -10
  146. package/dist/esm/utils/arkos-router/route-config-validator.js.map +1 -1
  147. package/dist/esm/utils/arkos-router/types/index.js.map +1 -1
  148. package/dist/esm/utils/arkos-router/types/openapi-config.js.map +1 -1
  149. package/dist/esm/utils/arkos-router/types/upload-config.js.map +1 -1
  150. package/dist/esm/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js +198 -0
  151. package/dist/esm/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js.map +1 -0
  152. package/dist/esm/utils/arkos-router/utils/helpers/index.js +92 -29
  153. package/dist/esm/utils/arkos-router/utils/helpers/index.js.map +1 -1
  154. package/dist/esm/utils/arkos-router/utils/helpers/upload-manager.js +683 -119
  155. package/dist/esm/utils/arkos-router/utils/helpers/upload-manager.js.map +1 -1
  156. package/dist/esm/utils/bundler.js +6 -6
  157. package/dist/esm/utils/bundler.js.map +1 -1
  158. package/dist/esm/utils/cli/build.js +16 -9
  159. package/dist/esm/utils/cli/build.js.map +1 -1
  160. package/dist/esm/utils/cli/dev.js +33 -32
  161. package/dist/esm/utils/cli/dev.js.map +1 -1
  162. package/dist/esm/utils/cli/export-auth-action.js +7 -7
  163. package/dist/esm/utils/cli/export-auth-action.js.map +1 -1
  164. package/dist/esm/utils/cli/generate.js +77 -58
  165. package/dist/esm/utils/cli/generate.js.map +1 -1
  166. package/dist/esm/utils/cli/index.js +74 -56
  167. package/dist/esm/utils/cli/index.js.map +1 -1
  168. package/dist/esm/utils/cli/prisma-generate.js +66 -35
  169. package/dist/esm/utils/cli/prisma-generate.js.map +1 -1
  170. package/dist/esm/utils/cli/start.js +27 -16
  171. package/dist/esm/utils/cli/start.js.map +1 -1
  172. package/dist/esm/utils/cli/utils/cli.helpers.js +1 -1
  173. package/dist/esm/utils/cli/utils/dependency-version-check.js +39 -0
  174. package/dist/esm/utils/cli/utils/dependency-version-check.js.map +1 -0
  175. package/dist/esm/utils/cli/utils/runtime-cli-commander.js +7 -3
  176. package/dist/esm/utils/cli/utils/runtime-cli-commander.js.map +1 -1
  177. package/dist/esm/utils/cli/utils/smart-fs-watcher.js +3 -0
  178. package/dist/esm/utils/cli/utils/smart-fs-watcher.js.map +1 -1
  179. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +307 -11
  180. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +1 -1
  181. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +16 -7
  182. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +1 -1
  183. package/dist/esm/utils/cli/utils/template-generator/templates/generate-multiple-components.js +117 -65
  184. package/dist/esm/utils/cli/utils/template-generator/templates/generate-multiple-components.js.map +1 -1
  185. package/dist/esm/utils/cli/utils/template-generator/templates/policy-template.js +6 -8
  186. package/dist/esm/utils/cli/utils/template-generator/templates/policy-template.js.map +1 -1
  187. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js +13 -2
  188. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js.map +1 -1
  189. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js +2 -2
  190. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js.map +1 -1
  191. package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js +213 -19
  192. package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +1 -1
  193. package/dist/esm/utils/cli/utils/template-generators.js +31 -18
  194. package/dist/esm/utils/cli/utils/template-generators.js.map +1 -1
  195. package/dist/esm/utils/cli/utils/watermark-stamper.js +1 -1
  196. package/dist/esm/utils/cli/utils/watermark-stamper.js.map +1 -1
  197. package/dist/esm/utils/define-config.js +15 -0
  198. package/dist/esm/utils/define-config.js.map +1 -1
  199. package/dist/esm/utils/docs-links.js +2 -0
  200. package/dist/esm/utils/docs-links.js.map +1 -0
  201. package/dist/esm/utils/dotenv.helpers.js +3 -7
  202. package/dist/esm/utils/dotenv.helpers.js.map +1 -1
  203. package/dist/esm/utils/dynamic-loader.js +6 -5
  204. package/dist/esm/utils/dynamic-loader.js.map +1 -1
  205. package/dist/esm/utils/features/api.features.js +46 -27
  206. package/dist/esm/utils/features/api.features.js.map +1 -1
  207. package/dist/esm/utils/features/port-and-host-allocator.js +4 -3
  208. package/dist/esm/utils/features/port-and-host-allocator.js.map +1 -1
  209. package/dist/esm/utils/helpers/api.features.helpers.js +20 -0
  210. package/dist/esm/utils/helpers/api.features.helpers.js.map +1 -1
  211. package/dist/esm/utils/helpers/arkos-config.helpers.js +60 -24
  212. package/dist/esm/utils/helpers/arkos-config.helpers.js.map +1 -1
  213. package/dist/esm/utils/helpers/exit-error.js +1 -0
  214. package/dist/esm/utils/helpers/exit-error.js.map +1 -1
  215. package/dist/esm/utils/helpers/fs.helpers.js +25 -32
  216. package/dist/esm/utils/helpers/fs.helpers.js.map +1 -1
  217. package/dist/esm/utils/helpers/global.helpers.js +1 -1
  218. package/dist/esm/utils/helpers/global.helpers.js.map +1 -1
  219. package/dist/esm/utils/helpers/prisma.helpers.js +10 -7
  220. package/dist/esm/utils/helpers/prisma.helpers.js.map +1 -1
  221. package/dist/esm/utils/helpers/query-parser.helpers.js +7 -22
  222. package/dist/esm/utils/helpers/query-parser.helpers.js.map +1 -1
  223. package/dist/esm/utils/helpers/routers.helpers.js +2 -2
  224. package/dist/esm/utils/helpers/routers.helpers.js.map +1 -1
  225. package/dist/esm/utils/helpers/url-helpers.js +11 -0
  226. package/dist/esm/utils/helpers/url-helpers.js.map +1 -0
  227. package/dist/esm/utils/initialize-app.js +43 -17
  228. package/dist/esm/utils/initialize-app.js.map +1 -1
  229. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +154 -226
  230. package/dist/esm/utils/prisma/prisma-json-schema-generator.js.map +1 -1
  231. package/dist/esm/utils/prisma/prisma-schema-parser.js +37 -11
  232. package/dist/esm/utils/prisma/prisma-schema-parser.js.map +1 -1
  233. package/dist/esm/utils/prisma/types.js.map +1 -1
  234. package/dist/esm/utils/remove-dir.js +1 -1
  235. package/dist/esm/utils/remove-dir.js.map +1 -1
  236. package/dist/esm/utils/setup-app.js +59 -42
  237. package/dist/esm/utils/setup-app.js.map +1 -1
  238. package/dist/esm/utils/validate-schema.js +25 -23
  239. package/dist/esm/utils/validate-schema.js.map +1 -1
  240. package/dist/types/app.d.ts +15 -10
  241. package/dist/types/components/arkos-gateway/arkos-gateway.d.ts +135 -0
  242. package/dist/types/components/arkos-gateway/socket-extensions.d.ts +80 -0
  243. package/dist/types/components/arkos-gateway/types.d.ts +467 -0
  244. package/dist/types/components/arkos-gateway/utils/helpers.d.ts +9 -0
  245. package/dist/types/components/arkos-gateway/utils/memory-gateway-store.d.ts +14 -0
  246. package/dist/types/components/arkos-gateway/utils/multi-tier-arkos-gateway-store.d.ts +20 -0
  247. package/dist/types/components/arkos-gateway/utils/rate-limiter.d.ts +11 -0
  248. package/dist/types/components/arkos-route-hook/index.d.ts +13 -6
  249. package/dist/types/components/arkos-route-hook/reader.d.ts +4 -7
  250. package/dist/types/components/arkos-route-hook/types.d.ts +12 -5
  251. package/dist/types/exports/error-handler/index.d.ts +1 -0
  252. package/dist/types/exports/file-upload.d.ts +1 -0
  253. package/dist/types/exports/index.d.ts +4 -5
  254. package/dist/types/exports/middlewares/index.d.ts +1 -1
  255. package/dist/types/exports/services/index.d.ts +3 -3
  256. package/dist/types/exports/websockets.d.ts +5 -0
  257. package/dist/types/modules/auth/auth.controller.d.ts +10 -3
  258. package/dist/types/modules/auth/auth.service.d.ts +170 -51
  259. package/dist/types/modules/auth/auth.types.d.ts +72 -0
  260. package/dist/types/modules/auth/utils/auth-hooks-manager.d.ts +63 -0
  261. package/dist/types/modules/auth/utils/auth-openapi-generator.d.ts +9 -0
  262. package/dist/types/modules/auth/utils/auth-prisma-json-schema-generator.d.ts +13 -0
  263. package/dist/types/modules/auth/utils/docs-links.d.ts +3 -0
  264. package/dist/types/modules/auth/utils/helpers/auth.controller.helpers.d.ts +1 -0
  265. package/dist/types/modules/auth/utils/services/auth-action.service.d.ts +2 -2
  266. package/dist/types/modules/auth/utils/token-extraction.d.ts +53 -0
  267. package/dist/types/modules/base/base.controller.d.ts +7 -6
  268. package/dist/types/modules/base/base.middlewares.d.ts +3 -9
  269. package/dist/types/modules/base/base.service.d.ts +18 -26
  270. package/dist/types/modules/base/types/base.service.types.d.ts +11 -0
  271. package/dist/types/modules/base/utils/error-prettifier.d.ts +8 -0
  272. package/dist/types/modules/base/utils/helpers/base.service.helpers.d.ts +1 -1
  273. package/dist/types/modules/base/utils/model-openapi-generator.d.ts +12 -0
  274. package/dist/types/modules/email/email.service.d.ts +3 -1
  275. package/dist/types/modules/error-handler/utils/app-error.d.ts +0 -2
  276. package/dist/types/modules/error-handler/utils/catch-async.d.ts +2 -2
  277. package/dist/types/modules/error-handler/utils/error-handler.helpers.d.ts +2 -27
  278. package/dist/types/modules/error-handler/utils/errors.d.ts +176 -0
  279. package/dist/types/modules/error-handler/utils/get-handled-error.d.ts +1 -0
  280. package/dist/types/modules/error-handler/utils/multer-error-handler.d.ts +7 -0
  281. package/dist/types/modules/file-upload/file-upload.controller.d.ts +7 -2
  282. package/dist/types/modules/file-upload/file-upload.service.d.ts +2 -6
  283. package/dist/types/modules/file-upload/utils/file-upload-json-schema-generator.d.ts +12 -0
  284. package/dist/types/modules/file-upload/utils/helpers/file-upload.helpers.d.ts +21 -1
  285. package/dist/types/modules/file-upload/utils/helpers/serve-upload-dir.d.ts +43 -0
  286. package/dist/types/modules/file-upload/utils/helpers/upload-path.helper.d.ts +14 -0
  287. package/dist/types/modules/file-upload/utils/helpers/upload-serving-validation.d.ts +5 -0
  288. package/dist/types/modules/file-upload/utils/helpers/upload-serving.registry.d.ts +31 -0
  289. package/dist/types/modules/swagger/swagger.router.d.ts +1 -2
  290. package/dist/types/modules/swagger/utils/get-open-api-login-html.d.ts +1 -0
  291. package/dist/types/modules/swagger/utils/helpers/get-swagger-default-configs.d.ts +48 -3
  292. package/dist/types/modules/swagger/utils/helpers/openapi-schema-converter.d.ts +8 -3
  293. package/dist/types/types/arkos-config/utils.d.ts +68 -0
  294. package/dist/types/types/arkos-prisma-input.d.ts +7 -3
  295. package/dist/types/types/arkos.d.ts +5 -15
  296. package/dist/types/types/auth.d.ts +4 -4
  297. package/dist/types/types/index.d.ts +15 -58
  298. package/dist/types/types/internal.d.ts +25 -0
  299. package/dist/types/types/new-arkos-config.d.ts +374 -67
  300. package/dist/types/types/router-config.d.ts +3 -66
  301. package/dist/types/types/upload.d.ts +45 -0
  302. package/dist/types/types/validation/validation-manager.d.ts +25 -0
  303. package/dist/types/types/validation/validator.d.ts +2 -0
  304. package/dist/types/utils/arkos-router/arkos-router-openapi-manager.d.ts +14 -1
  305. package/dist/types/utils/arkos-router/index.d.ts +86 -11
  306. package/dist/types/utils/arkos-router/types/index.d.ts +83 -31
  307. package/dist/types/utils/arkos-router/types/openapi-config.d.ts +3 -2
  308. package/dist/types/utils/arkos-router/types/upload-config.d.ts +158 -10
  309. package/dist/types/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.d.ts +6 -0
  310. package/dist/types/utils/arkos-router/utils/helpers/index.d.ts +4 -6
  311. package/dist/types/utils/arkos-router/utils/helpers/upload-manager.d.ts +21 -36
  312. package/dist/types/utils/bundler.d.ts +1 -1
  313. package/dist/types/utils/cli/build.d.ts +1 -1
  314. package/dist/types/utils/cli/generate.d.ts +15 -6
  315. package/dist/types/utils/cli/start.d.ts +3 -1
  316. package/dist/types/utils/cli/utils/dependency-version-check.d.ts +15 -0
  317. package/dist/types/utils/cli/utils/template-generator/templates/class-validator-dto-generator.d.ts +11 -0
  318. package/dist/types/utils/cli/utils/template-generator/templates/zod-schema-generator.d.ts +4 -0
  319. package/dist/types/utils/define-config.d.ts +57 -3
  320. package/dist/types/utils/docs-links.d.ts +1 -0
  321. package/dist/types/utils/dotenv.helpers.d.ts +1 -0
  322. package/dist/types/utils/dynamic-loader.d.ts +2 -2
  323. package/dist/types/utils/features/api.features.d.ts +1 -2
  324. package/dist/types/utils/helpers/arkos-config.helpers.d.ts +9 -1
  325. package/dist/types/utils/helpers/fs.helpers.d.ts +1 -16
  326. package/dist/types/utils/helpers/global.helpers.d.ts +1 -0
  327. package/dist/types/utils/helpers/prisma.helpers.d.ts +1 -1
  328. package/dist/types/utils/helpers/query-parser.helpers.d.ts +1 -1
  329. package/dist/types/utils/helpers/url-helpers.d.ts +1 -0
  330. package/dist/types/utils/initialize-app.d.ts +1 -0
  331. package/dist/types/utils/prisma/prisma-json-schema-generator.d.ts +12 -30
  332. package/dist/types/utils/prisma/prisma-schema-parser.d.ts +4 -0
  333. package/dist/types/utils/prisma/types.d.ts +3 -2
  334. package/dist/types/utils/validate-schema.d.ts +1 -1
  335. package/package.json +84 -75
  336. package/dist/cjs/app.js +0 -79
  337. package/dist/cjs/app.js.map +0 -1
  338. package/dist/cjs/components/arkos-loadable-registry/index.js +0 -28
  339. package/dist/cjs/components/arkos-loadable-registry/index.js.map +0 -1
  340. package/dist/cjs/components/arkos-loadable-translator/index.js +0 -144
  341. package/dist/cjs/components/arkos-loadable-translator/index.js.map +0 -1
  342. package/dist/cjs/components/arkos-policy/index.js +0 -36
  343. package/dist/cjs/components/arkos-policy/index.js.map +0 -1
  344. package/dist/cjs/components/arkos-policy/types.js +0 -3
  345. package/dist/cjs/components/arkos-policy/types.js.map +0 -1
  346. package/dist/cjs/components/arkos-route-hook/index.js +0 -50
  347. package/dist/cjs/components/arkos-route-hook/index.js.map +0 -1
  348. package/dist/cjs/components/arkos-route-hook/reader.js +0 -47
  349. package/dist/cjs/components/arkos-route-hook/reader.js.map +0 -1
  350. package/dist/cjs/components/arkos-route-hook/types.js +0 -3
  351. package/dist/cjs/components/arkos-route-hook/types.js.map +0 -1
  352. package/dist/cjs/components/arkos-service-hook/index.js +0 -35
  353. package/dist/cjs/components/arkos-service-hook/index.js.map +0 -1
  354. package/dist/cjs/components/arkos-service-hook/reader.js +0 -30
  355. package/dist/cjs/components/arkos-service-hook/reader.js.map +0 -1
  356. package/dist/cjs/components/arkos-service-hook/types.js +0 -3
  357. package/dist/cjs/components/arkos-service-hook/types.js.map +0 -1
  358. package/dist/cjs/exports/auth/index.js +0 -6
  359. package/dist/cjs/exports/auth/index.js.map +0 -1
  360. package/dist/cjs/exports/config.js +0 -6
  361. package/dist/cjs/exports/config.js.map +0 -1
  362. package/dist/cjs/exports/controllers/index.js +0 -42
  363. package/dist/cjs/exports/controllers/index.js.map +0 -1
  364. package/dist/cjs/exports/error-handler/index.js +0 -11
  365. package/dist/cjs/exports/error-handler/index.js.map +0 -1
  366. package/dist/cjs/exports/index.js +0 -23
  367. package/dist/cjs/exports/index.js.map +0 -1
  368. package/dist/cjs/exports/middlewares/index.js +0 -7
  369. package/dist/cjs/exports/middlewares/index.js.map +0 -1
  370. package/dist/cjs/exports/prisma/index.js +0 -13
  371. package/dist/cjs/exports/prisma/index.js.map +0 -1
  372. package/dist/cjs/exports/services/index.js +0 -53
  373. package/dist/cjs/exports/services/index.js.map +0 -1
  374. package/dist/cjs/exports/utils/index.js +0 -26
  375. package/dist/cjs/exports/utils/index.js.map +0 -1
  376. package/dist/cjs/exports/validation/index.js +0 -11
  377. package/dist/cjs/exports/validation/index.js.map +0 -1
  378. package/dist/cjs/generated.js +0 -7
  379. package/dist/cjs/generated.js.map +0 -1
  380. package/dist/cjs/modules/auth/auth.controller.js +0 -254
  381. package/dist/cjs/modules/auth/auth.controller.js.map +0 -1
  382. package/dist/cjs/modules/auth/auth.router.js +0 -113
  383. package/dist/cjs/modules/auth/auth.router.js.map +0 -1
  384. package/dist/cjs/modules/auth/auth.service.js +0 -277
  385. package/dist/cjs/modules/auth/auth.service.js.map +0 -1
  386. package/dist/cjs/modules/auth/utils/auth-error-objects.js +0 -10
  387. package/dist/cjs/modules/auth/utils/auth-error-objects.js.map +0 -1
  388. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +0 -83
  389. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js.map +0 -1
  390. package/dist/cjs/modules/auth/utils/services/auth-action.service.js +0 -150
  391. package/dist/cjs/modules/auth/utils/services/auth-action.service.js.map +0 -1
  392. package/dist/cjs/modules/base/base.controller.js +0 -275
  393. package/dist/cjs/modules/base/base.controller.js.map +0 -1
  394. package/dist/cjs/modules/base/base.middlewares.js +0 -231
  395. package/dist/cjs/modules/base/base.middlewares.js.map +0 -1
  396. package/dist/cjs/modules/base/base.router.js +0 -112
  397. package/dist/cjs/modules/base/base.router.js.map +0 -1
  398. package/dist/cjs/modules/base/base.service.js +0 -432
  399. package/dist/cjs/modules/base/base.service.js.map +0 -1
  400. package/dist/cjs/modules/base/types/base.service.types.js +0 -3
  401. package/dist/cjs/modules/base/types/base.service.types.js.map +0 -1
  402. package/dist/cjs/modules/base/utils/error-prettifier.js +0 -188
  403. package/dist/cjs/modules/base/utils/error-prettifier.js.map +0 -1
  404. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +0 -49
  405. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js.map +0 -1
  406. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +0 -13
  407. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +0 -1
  408. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +0 -222
  409. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js.map +0 -1
  410. package/dist/cjs/modules/base/utils/router-validator.js +0 -13
  411. package/dist/cjs/modules/base/utils/router-validator.js.map +0 -1
  412. package/dist/cjs/modules/base/utils/service-hooks-manager.js +0 -19
  413. package/dist/cjs/modules/base/utils/service-hooks-manager.js.map +0 -1
  414. package/dist/cjs/modules/debugger/debugger.service.js +0 -59
  415. package/dist/cjs/modules/debugger/debugger.service.js.map +0 -1
  416. package/dist/cjs/modules/email/email.service.js +0 -106
  417. package/dist/cjs/modules/email/email.service.js.map +0 -1
  418. package/dist/cjs/modules/error-handler/error-handler.controller.js +0 -192
  419. package/dist/cjs/modules/error-handler/error-handler.controller.js.map +0 -1
  420. package/dist/cjs/modules/error-handler/utils/app-error.js +0 -28
  421. package/dist/cjs/modules/error-handler/utils/app-error.js.map +0 -1
  422. package/dist/cjs/modules/error-handler/utils/catch-async.js +0 -21
  423. package/dist/cjs/modules/error-handler/utils/catch-async.js.map +0 -1
  424. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +0 -218
  425. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +0 -1
  426. package/dist/cjs/modules/file-upload/file-upload.controller.js +0 -256
  427. package/dist/cjs/modules/file-upload/file-upload.controller.js.map +0 -1
  428. package/dist/cjs/modules/file-upload/file-upload.router.js +0 -80
  429. package/dist/cjs/modules/file-upload/file-upload.router.js.map +0 -1
  430. package/dist/cjs/modules/file-upload/file-upload.service.js +0 -343
  431. package/dist/cjs/modules/file-upload/file-upload.service.js.map +0 -1
  432. package/dist/cjs/modules/file-upload/utils/helpers/file-extensions.js +0 -134
  433. package/dist/cjs/modules/file-upload/utils/helpers/file-extensions.js.map +0 -1
  434. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +0 -100
  435. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js.map +0 -1
  436. package/dist/cjs/modules/swagger/swagger.router.js +0 -65
  437. package/dist/cjs/modules/swagger/swagger.router.js.map +0 -1
  438. package/dist/cjs/modules/swagger/utils/built-in-route-path-object-manager.js +0 -7
  439. package/dist/cjs/modules/swagger/utils/built-in-route-path-object-manager.js.map +0 -1
  440. package/dist/cjs/modules/swagger/utils/helpers/class-validator-to-json-schema.js +0 -53
  441. package/dist/cjs/modules/swagger/utils/helpers/class-validator-to-json-schema.js.map +0 -1
  442. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +0 -473
  443. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +0 -1
  444. package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +0 -491
  445. package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js.map +0 -1
  446. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +0 -73
  447. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +0 -1
  448. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +0 -37
  449. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +0 -1
  450. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +0 -61
  451. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +0 -1
  452. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +0 -31
  453. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +0 -1
  454. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +0 -49
  455. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js.map +0 -1
  456. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +0 -39
  457. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +0 -1
  458. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +0 -468
  459. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +0 -1
  460. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +0 -260
  461. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +0 -1
  462. package/dist/cjs/modules/swagger/utils/helpers/openapi-schema-converter.js +0 -331
  463. package/dist/cjs/modules/swagger/utils/helpers/openapi-schema-converter.js.map +0 -1
  464. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +0 -109
  465. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +0 -1
  466. package/dist/cjs/package.json +0 -3
  467. package/dist/cjs/server.js +0 -60
  468. package/dist/cjs/server.js.map +0 -1
  469. package/dist/cjs/types/arkos-prisma-input.js +0 -3
  470. package/dist/cjs/types/arkos-prisma-input.js.map +0 -1
  471. package/dist/cjs/types/arkos.js +0 -3
  472. package/dist/cjs/types/arkos.js.map +0 -1
  473. package/dist/cjs/types/auth.js +0 -3
  474. package/dist/cjs/types/auth.js.map +0 -1
  475. package/dist/cjs/types/index.js +0 -3
  476. package/dist/cjs/types/index.js.map +0 -1
  477. package/dist/cjs/types/new-arkos-config.js +0 -3
  478. package/dist/cjs/types/new-arkos-config.js.map +0 -1
  479. package/dist/cjs/types/router-config.js +0 -3
  480. package/dist/cjs/types/router-config.js.map +0 -1
  481. package/dist/cjs/utils/arkos-env.js +0 -9
  482. package/dist/cjs/utils/arkos-env.js.map +0 -1
  483. package/dist/cjs/utils/arkos-router/arkos-router-openapi-manager.js +0 -126
  484. package/dist/cjs/utils/arkos-router/arkos-router-openapi-manager.js.map +0 -1
  485. package/dist/cjs/utils/arkos-router/index.js +0 -253
  486. package/dist/cjs/utils/arkos-router/index.js.map +0 -1
  487. package/dist/cjs/utils/arkos-router/route-config-registry.js +0 -16
  488. package/dist/cjs/utils/arkos-router/route-config-registry.js.map +0 -1
  489. package/dist/cjs/utils/arkos-router/route-config-validator.js +0 -56
  490. package/dist/cjs/utils/arkos-router/route-config-validator.js.map +0 -1
  491. package/dist/cjs/utils/arkos-router/types/body-parser-config.js +0 -3
  492. package/dist/cjs/utils/arkos-router/types/body-parser-config.js.map +0 -1
  493. package/dist/cjs/utils/arkos-router/types/index.js +0 -3
  494. package/dist/cjs/utils/arkos-router/types/index.js.map +0 -1
  495. package/dist/cjs/utils/arkos-router/types/openapi-config.js +0 -3
  496. package/dist/cjs/utils/arkos-router/types/openapi-config.js.map +0 -1
  497. package/dist/cjs/utils/arkos-router/types/upload-config.js +0 -3
  498. package/dist/cjs/utils/arkos-router/types/upload-config.js.map +0 -1
  499. package/dist/cjs/utils/arkos-router/utils/helpers/index.js +0 -163
  500. package/dist/cjs/utils/arkos-router/utils/helpers/index.js.map +0 -1
  501. package/dist/cjs/utils/arkos-router/utils/helpers/upload-manager.js +0 -283
  502. package/dist/cjs/utils/arkos-router/utils/helpers/upload-manager.js.map +0 -1
  503. package/dist/cjs/utils/bundler.js +0 -163
  504. package/dist/cjs/utils/bundler.js.map +0 -1
  505. package/dist/cjs/utils/cli/build.js +0 -200
  506. package/dist/cjs/utils/cli/build.js.map +0 -1
  507. package/dist/cjs/utils/cli/dev.js +0 -128
  508. package/dist/cjs/utils/cli/dev.js.map +0 -1
  509. package/dist/cjs/utils/cli/export-auth-action.js +0 -79
  510. package/dist/cjs/utils/cli/export-auth-action.js.map +0 -1
  511. package/dist/cjs/utils/cli/generate.js +0 -229
  512. package/dist/cjs/utils/cli/generate.js.map +0 -1
  513. package/dist/cjs/utils/cli/index.js +0 -191
  514. package/dist/cjs/utils/cli/index.js.map +0 -1
  515. package/dist/cjs/utils/cli/prisma-generate.js +0 -112
  516. package/dist/cjs/utils/cli/prisma-generate.js.map +0 -1
  517. package/dist/cjs/utils/cli/start.js +0 -72
  518. package/dist/cjs/utils/cli/start.js.map +0 -1
  519. package/dist/cjs/utils/cli/utils/cli.helpers.js +0 -24
  520. package/dist/cjs/utils/cli/utils/cli.helpers.js.map +0 -1
  521. package/dist/cjs/utils/cli/utils/runtime-cli-commander.js +0 -114
  522. package/dist/cjs/utils/cli/utils/runtime-cli-commander.js.map +0 -1
  523. package/dist/cjs/utils/cli/utils/smart-fs-watcher.js +0 -73
  524. package/dist/cjs/utils/cli/utils/smart-fs-watcher.js.map +0 -1
  525. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +0 -550
  526. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +0 -1
  527. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -52
  528. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -1
  529. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-multiple-components.js +0 -139
  530. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-multiple-components.js.map +0 -1
  531. package/dist/cjs/utils/cli/utils/template-generator/templates/policy-template.js +0 -53
  532. package/dist/cjs/utils/cli/utils/template-generator/templates/policy-template.js.map +0 -1
  533. package/dist/cjs/utils/cli/utils/template-generator/templates/route-hook.template.js +0 -39
  534. package/dist/cjs/utils/cli/utils/template-generator/templates/route-hook.template.js.map +0 -1
  535. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js +0 -19
  536. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js.map +0 -1
  537. package/dist/cjs/utils/cli/utils/template-generator/templates/service-hook.template.js +0 -32
  538. package/dist/cjs/utils/cli/utils/template-generator/templates/service-hook.template.js.map +0 -1
  539. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js +0 -50
  540. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js.map +0 -1
  541. package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js +0 -351
  542. package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +0 -1
  543. package/dist/cjs/utils/cli/utils/template-generators.js +0 -52
  544. package/dist/cjs/utils/cli/utils/template-generators.js.map +0 -1
  545. package/dist/cjs/utils/cli/utils/watermark-stamper.js +0 -26
  546. package/dist/cjs/utils/cli/utils/watermark-stamper.js.map +0 -1
  547. package/dist/cjs/utils/define-config.js +0 -46
  548. package/dist/cjs/utils/define-config.js.map +0 -1
  549. package/dist/cjs/utils/dotenv.helpers.js +0 -52
  550. package/dist/cjs/utils/dotenv.helpers.js.map +0 -1
  551. package/dist/cjs/utils/dynamic-loader.js +0 -22
  552. package/dist/cjs/utils/dynamic-loader.js.map +0 -1
  553. package/dist/cjs/utils/expand-env.js +0 -72
  554. package/dist/cjs/utils/expand-env.js.map +0 -1
  555. package/dist/cjs/utils/features/api.features.js +0 -201
  556. package/dist/cjs/utils/features/api.features.js.map +0 -1
  557. package/dist/cjs/utils/features/port-and-host-allocator.js +0 -129
  558. package/dist/cjs/utils/features/port-and-host-allocator.js.map +0 -1
  559. package/dist/cjs/utils/helpers/api.features.helpers.js +0 -327
  560. package/dist/cjs/utils/helpers/api.features.helpers.js.map +0 -1
  561. package/dist/cjs/utils/helpers/arkos-config.helpers.js +0 -86
  562. package/dist/cjs/utils/helpers/arkos-config.helpers.js.map +0 -1
  563. package/dist/cjs/utils/helpers/change-case.helpers.js +0 -177
  564. package/dist/cjs/utils/helpers/change-case.helpers.js.map +0 -1
  565. package/dist/cjs/utils/helpers/deepmerge.helper.js +0 -115
  566. package/dist/cjs/utils/helpers/deepmerge.helper.js.map +0 -1
  567. package/dist/cjs/utils/helpers/exit-error.js +0 -12
  568. package/dist/cjs/utils/helpers/exit-error.js.map +0 -1
  569. package/dist/cjs/utils/helpers/fs.helpers.js +0 -60
  570. package/dist/cjs/utils/helpers/fs.helpers.js.map +0 -1
  571. package/dist/cjs/utils/helpers/global.helpers.js +0 -105
  572. package/dist/cjs/utils/helpers/global.helpers.js.map +0 -1
  573. package/dist/cjs/utils/helpers/prisma.helpers.js +0 -53
  574. package/dist/cjs/utils/helpers/prisma.helpers.js.map +0 -1
  575. package/dist/cjs/utils/helpers/query-parser.helpers.js +0 -69
  576. package/dist/cjs/utils/helpers/query-parser.helpers.js.map +0 -1
  577. package/dist/cjs/utils/helpers/routers.helpers.js +0 -36
  578. package/dist/cjs/utils/helpers/routers.helpers.js.map +0 -1
  579. package/dist/cjs/utils/helpers/text.helpers.js +0 -28
  580. package/dist/cjs/utils/helpers/text.helpers.js.map +0 -1
  581. package/dist/cjs/utils/initialize-app.js +0 -55
  582. package/dist/cjs/utils/initialize-app.js.map +0 -1
  583. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +0 -437
  584. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js.map +0 -1
  585. package/dist/cjs/utils/prisma/prisma-schema-parser.js +0 -360
  586. package/dist/cjs/utils/prisma/prisma-schema-parser.js.map +0 -1
  587. package/dist/cjs/utils/prisma/types.js +0 -3
  588. package/dist/cjs/utils/prisma/types.js.map +0 -1
  589. package/dist/cjs/utils/remove-dir.js +0 -14
  590. package/dist/cjs/utils/remove-dir.js.map +0 -1
  591. package/dist/cjs/utils/setup-app.js +0 -119
  592. package/dist/cjs/utils/setup-app.js.map +0 -1
  593. package/dist/cjs/utils/sheu.js +0 -131
  594. package/dist/cjs/utils/sheu.js.map +0 -1
  595. package/dist/cjs/utils/validate-dto.js +0 -19
  596. package/dist/cjs/utils/validate-dto.js.map +0 -1
  597. package/dist/cjs/utils/validate-schema.js +0 -75
  598. package/dist/cjs/utils/validate-schema.js.map +0 -1
  599. package/dist/esm/components/arkos-loadable-translator/index.js +0 -138
  600. package/dist/esm/components/arkos-loadable-translator/index.js.map +0 -1
  601. package/dist/esm/components/arkos-service-hook/index.js +0 -32
  602. package/dist/esm/components/arkos-service-hook/index.js.map +0 -1
  603. package/dist/esm/components/arkos-service-hook/reader.js +0 -24
  604. package/dist/esm/components/arkos-service-hook/reader.js.map +0 -1
  605. package/dist/esm/components/arkos-service-hook/types.js +0 -2
  606. package/dist/esm/components/arkos-service-hook/types.js.map +0 -1
  607. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +0 -10
  608. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +0 -1
  609. package/dist/esm/modules/base/utils/service-hooks-manager.js +0 -17
  610. package/dist/esm/modules/base/utils/service-hooks-manager.js.map +0 -1
  611. package/dist/esm/modules/swagger/utils/built-in-route-path-object-manager.js +0 -5
  612. package/dist/esm/modules/swagger/utils/built-in-route-path-object-manager.js.map +0 -1
  613. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +0 -469
  614. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +0 -1
  615. package/dist/esm/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +0 -485
  616. package/dist/esm/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js.map +0 -1
  617. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +0 -34
  618. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +0 -1
  619. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +0 -55
  620. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +0 -1
  621. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +0 -25
  622. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +0 -1
  623. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +0 -46
  624. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js.map +0 -1
  625. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +0 -33
  626. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +0 -1
  627. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +0 -462
  628. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +0 -1
  629. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +0 -255
  630. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +0 -1
  631. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +0 -98
  632. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +0 -1
  633. package/dist/esm/utils/cli/utils/template-generator/templates/route-hook.template.js +0 -36
  634. package/dist/esm/utils/cli/utils/template-generator/templates/route-hook.template.js.map +0 -1
  635. package/dist/esm/utils/cli/utils/template-generator/templates/service-hook.template.js +0 -29
  636. package/dist/esm/utils/cli/utils/template-generator/templates/service-hook.template.js.map +0 -1
  637. package/dist/types/components/arkos-loadable-translator/index.d.ts +0 -53
  638. package/dist/types/components/arkos-service-hook/index.d.ts +0 -41
  639. package/dist/types/components/arkos-service-hook/reader.d.ts +0 -35
  640. package/dist/types/components/arkos-service-hook/types.d.ts +0 -240
  641. package/dist/types/modules/base/utils/helpers/base.router.helpers.d.ts +0 -3
  642. package/dist/types/modules/base/utils/service-hooks-manager.d.ts +0 -10
  643. package/dist/types/modules/swagger/utils/built-in-route-path-object-manager.d.ts +0 -4
  644. package/dist/types/modules/swagger/utils/helpers/get-authentication-json-schema-paths.d.ts +0 -5
  645. package/dist/types/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.d.ts +0 -3
  646. package/dist/types/modules/swagger/utils/helpers/get-system-json-schema-paths.d.ts +0 -2
  647. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.d.ts +0 -1
  648. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.d.ts +0 -1
  649. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.d.ts +0 -4
  650. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.d.ts +0 -1
  651. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.d.ts +0 -2
  652. package/dist/types/modules/swagger/utils/helpers/missing-json-schemas-generator.d.ts +0 -76
  653. package/dist/types/modules/swagger/utils/helpers/swagger.router.helpers.d.ts +0 -19
  654. package/dist/types/utils/cli/utils/template-generator/templates/route-hook.template.d.ts +0 -2
  655. package/dist/types/utils/cli/utils/template-generator/templates/service-hook.template.d.ts +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"api.features.js","sourceRoot":"","sources":["../../../../src/utils/features/api.features.ts"],"names":[],"mappings":"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","sourcesContent":["import { Request } from \"express\";\nimport deepmerge from \"../helpers/deepmerge.helper\";\nimport { parseQueryParamsWithModifiers } from \"../helpers/api.features.helpers\";\nimport AppError from \"../../modules/error-handler/utils/app-error\";\nimport { getPrismaInstance } from \"../helpers/prisma.helpers\";\nimport { ArkosRequest } from \"../../types\";\nimport debuggerService from \"../../modules/debugger/debugger.service\";\n\ntype ModelName = string;\n\nexport default class APIFeatures {\n req?: ArkosRequest;\n searchParams: any;\n searchParamsWithModifiers: any;\n filters: Record<string, 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 \"select\",\n \"omit\",\n ];\n\n constructor(req?: Request, modelName?: ModelName) {\n if (req) {\n const { filters = \"{}\", ...restOfQuery } = req.query;\n this.req = req;\n\n let parsedFilters = {};\n try {\n parsedFilters = JSON.parse(filters as string);\n } catch (error) {\n throw new AppError(\"Invalid req.query.filters JSON format\", 400);\n }\n\n this.searchParams = deepmerge(\n parseQueryParamsWithModifiers(restOfQuery),\n parseQueryParamsWithModifiers(parsedFilters)\n );\n\n debuggerService.handleTransformedQueryLog(this.searchParams);\n }\n\n if (modelName) this.modelName = modelName;\n this.filters = { ...this.filters };\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.\"\n );\n\n const searchableFields: Record<string, any>[] = [];\n const queryObj = { ...this.searchParams };\n\n this.excludedFields.forEach((el) => delete queryObj[el]);\n\n const topLevelOR = queryObj.OR;\n const topLevelAND = queryObj.AND;\n delete queryObj.OR;\n delete queryObj.AND;\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: any = {};\n\n if (whereLogicalOperatorFilters.length > 0) {\n whereOptions = {\n [(this.req.query?.filterMode as string) ?? \"OR\"]:\n whereLogicalOperatorFilters,\n };\n }\n\n if (topLevelOR) {\n if (whereOptions.OR) {\n whereOptions.OR = [...whereOptions.OR, ...topLevelOR];\n } else {\n whereOptions.OR = topLevelOR;\n }\n }\n\n if (topLevelAND) {\n if (whereOptions.AND) {\n whereOptions.AND = [...whereOptions.AND, ...topLevelAND];\n } else {\n whereOptions.AND = topLevelAND;\n }\n }\n\n if (!!this.searchParams.search) {\n const prisma = getPrismaInstance();\n\n if (!this.modelName)\n throw new Error(\"Model name is required for search functionality\");\n\n if (!prisma[this.modelName] || !prisma[this.modelName].fields)\n throw new Error(`Model '${this.modelName}' not found or has no fields`);\n\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 if (searchableFields.length > 0) {\n whereOptions = deepmerge(\n {\n OR: searchableFields,\n },\n whereOptions\n );\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 this.searchParams = deepmerge(\n this.searchParams || {},\n this.req.prismaQueryOptions || {}\n );\n\n return this;\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 let finalSelect: Record<string, any> = {};\n let finalInclude: Record<string, any> = {};\n let finalOmit: Record<string, any> = {};\n\n if (this.searchParams?.fields) {\n const fields = this.searchParams.fields.split(\",\");\n\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 if (regularFields.length > 0) {\n finalSelect = 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\n includeFields.forEach((field: string) => {\n finalInclude[field] = true;\n });\n\n excludeFields.forEach((field: string) => {\n finalOmit[field] = true;\n });\n }\n\n if (this.searchParams.include || this.filters.include)\n finalInclude = deepmerge(\n finalInclude,\n deepmerge(this.filters?.include || {}, this.searchParams?.include || {})\n );\n\n if (this.searchParams.select || this.filters.include)\n finalSelect = deepmerge(\n finalSelect,\n deepmerge(this.filters?.select || {}, this.searchParams?.select || {})\n );\n\n if (this.searchParams.omit || this.filters.omit)\n finalOmit = deepmerge(\n finalOmit,\n deepmerge(this.filters?.omit || {}, this.searchParams?.omit || {})\n );\n\n if (\n Object.keys(finalSelect).length > 0 &&\n Object.keys(finalInclude).length > 0\n ) {\n finalSelect = deepmerge(finalSelect, finalInclude);\n finalInclude = {};\n delete this.filters.include;\n delete this.searchParams.include;\n }\n\n if (\n this.modelName?.toLowerCase?.() === \"user\" &&\n Object.keys(finalSelect || {}).length === 0\n )\n finalOmit.password = true;\n\n if (Object.keys(finalSelect).length > 0) this.filters.select = finalSelect;\n\n if (Object.keys(finalInclude).length > 0)\n this.filters.include = finalInclude;\n\n if (Object.keys(finalOmit).length > 0) this.filters.omit = finalOmit;\n\n if (this.searchParams?.addFields || this.searchParams?.removeFields) {\n throw new AppError(\n \"The addFields and removeFields parameters are deprecated.\",\n 400\n );\n }\n\n return this;\n }\n\n paginate(): APIFeatures {\n const paginationOptions = (() => {\n if (this.searchParams.limit === \"all\") return {};\n\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 return { skip, take: limit };\n })();\n\n this.filters = {\n ...this.filters,\n ...paginationOptions,\n };\n return this;\n }\n}\n"]}
1
+ {"version":3,"file":"api.features.js","sourceRoot":"","sources":["../../../../src/utils/features/api.features.ts"],"names":[],"mappings":"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","sourcesContent":["import 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\";\nimport debuggerService from \"../../modules/debugger/debugger.service\";\n\ntype ModelName = string;\n\nexport default class APIFeatures {\n req?: ArkosRequest;\n searchParams: any;\n searchParamsWithModifiers: any;\n filters: Record<string, 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 \"select\",\n \"orderBy\",\n \"omit\",\n ];\n\n constructor(req?: ArkosRequest, modelName?: ModelName) {\n if (req) {\n const { filters = \"{}\", ...restOfQuery } = req.query;\n this.req = req;\n\n let parsedFilters = {};\n try {\n parsedFilters = JSON.parse(filters as string);\n } catch (error) {\n throw new AppError(\"Invalid req.query.filters JSON format\", 400);\n }\n\n this.searchParams = deepmerge(\n parseQueryParamsWithModifiers(restOfQuery),\n parseQueryParamsWithModifiers(parsedFilters)\n );\n\n debuggerService.handleTransformedQueryLog(this.searchParams);\n }\n\n if (modelName) this.modelName = modelName;\n this.filters = { ...this.filters };\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.\"\n );\n\n const searchableFields: Record<string, any>[] = [];\n const queryObj = { ...this.searchParams };\n\n this.excludedFields.forEach((el) => delete queryObj[el]);\n\n const topLevelOR = queryObj.OR;\n const topLevelAND = queryObj.AND;\n delete queryObj.OR;\n delete queryObj.AND;\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: any = {};\n\n if (whereLogicalOperatorFilters.length > 0) {\n whereOptions = {\n [(this.req.query?.filterMode as string) ?? \"OR\"]:\n whereLogicalOperatorFilters,\n };\n }\n\n if (topLevelOR) {\n if (whereOptions.OR) {\n whereOptions.OR = [...whereOptions.OR, ...topLevelOR];\n } else {\n whereOptions.OR = topLevelOR;\n }\n }\n\n if (topLevelAND) {\n if (whereOptions.AND) {\n whereOptions.AND = [...whereOptions.AND, ...topLevelAND];\n } else {\n whereOptions.AND = topLevelAND;\n }\n }\n\n if (!!this.searchParams.search) {\n const prisma = getPrismaInstance();\n\n if (!this.modelName)\n throw new Error(\"Model name is required for search functionality\");\n\n if (!prisma[this.modelName] || !prisma[this.modelName].fields)\n throw new Error(`Model '${this.modelName}' not found or has no fields`);\n\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 if (searchableFields.length > 0) {\n whereOptions = deepmerge(\n {\n OR: searchableFields,\n },\n whereOptions\n );\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 this.searchParams = deepmerge(\n this.searchParams || {},\n this.req.prismaQueryOptions || {}\n );\n\n return this;\n }\n\n sort() {\n const reqOrderBy = this.req?.query.orderBy;\n\n const normalizeOrderBy = (orderBy: any): object[] => {\n if (!orderBy) return [];\n if (Array.isArray(orderBy)) return orderBy;\n if (typeof orderBy === \"object\") return [orderBy];\n return [];\n };\n\n if (this.searchParams.sort) {\n const sortBy = this.searchParams.sort.split(\",\").map((field: string) => ({\n [field.startsWith(\"-\") ? field.substring(1) : field]: field.startsWith(\n \"-\"\n )\n ? \"desc\"\n : \"asc\",\n }));\n\n const reqOrderByArray = normalizeOrderBy(reqOrderBy);\n\n const result = reqOrderByArray.length\n ? [...sortBy, ...reqOrderByArray]\n : sortBy;\n\n this.filters = deepmerge(this.filters, { orderBy: result });\n } else {\n this.filters.orderBy = reqOrderBy;\n }\n\n return this;\n }\n\n limitFields() {\n let finalSelect: Record<string, any> = {};\n let finalInclude: Record<string, any> = {};\n let finalOmit: Record<string, any> = {};\n\n if (this.searchParams?.fields) {\n const fields = this.searchParams.fields.split(\",\");\n\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 if (regularFields.length > 0) {\n finalSelect = 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\n includeFields.forEach((field: string) => {\n finalInclude[field] = true;\n });\n\n excludeFields.forEach((field: string) => {\n finalOmit[field] = true;\n });\n }\n\n if (this.searchParams.include || this.filters.include)\n finalInclude = deepmerge(\n finalInclude,\n deepmerge(this.filters?.include || {}, this.searchParams?.include || {})\n );\n\n if (this.searchParams.select || this.filters.include)\n finalSelect = deepmerge(\n finalSelect,\n deepmerge(this.filters?.select || {}, this.searchParams?.select || {})\n );\n\n if (this.searchParams.omit || this.filters.omit)\n finalOmit = deepmerge(\n finalOmit,\n deepmerge(this.filters?.omit || {}, this.searchParams?.omit || {})\n );\n\n if (\n Object.keys(finalSelect).length > 0 &&\n Object.keys(finalInclude).length > 0\n ) {\n finalSelect = deepmerge(finalSelect, finalInclude);\n finalInclude = {};\n delete this.filters.include;\n delete this.searchParams.include;\n }\n\n if (Object.keys(finalSelect).length > 0) this.filters.select = finalSelect;\n\n if (Object.keys(finalInclude).length > 0)\n this.filters.include = finalInclude;\n\n if (Object.keys(finalOmit).length > 0) this.filters.omit = finalOmit;\n\n if (this.searchParams?.addFields || this.searchParams?.removeFields) {\n throw new AppError(\n \"The addFields and removeFields parameters are deprecated.\",\n 400\n );\n }\n\n return this;\n }\n\n paginate(): APIFeatures {\n const paginationOptions = (() => {\n if (this.searchParams.limit === \"all\") return {};\n\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 return { skip, take: limit };\n })();\n\n this.filters = {\n ...this.filters,\n ...paginationOptions,\n };\n return this;\n }\n}\n"]}
@@ -2,9 +2,10 @@ import * as net from "net";
2
2
  import sheu from "../sheu.js";
3
3
  import os from "os";
4
4
  class PortAndHostAllocator {
5
- constructor() {
6
- this.prevWarnings = new Set();
7
- }
5
+ host;
6
+ networkHost;
7
+ port;
8
+ prevWarnings = new Set();
8
9
  getFirstNonLocalIp() {
9
10
  const networkInterfaces = os.networkInterfaces();
10
11
  let localIpAddress;
@@ -1 +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\";\nimport os from \"os\";\n\nclass PortAndHostAllocator {\n host: string | undefined;\n private networkHost: string | undefined;\n port: string | undefined;\n private prevWarnings = new Set<string>();\n\n getFirstNonLocalIp() {\n const networkInterfaces = os.networkInterfaces();\n let localIpAddress;\n if (this.networkHost) return this.networkHost;\n\n for (const interfaceName in networkInterfaces) {\n const netInterface = networkInterfaces[interfaceName];\n if (!netInterface) break;\n for (const alias of netInterface) {\n if (alias.family === \"IPv4\" && !alias.internal) {\n localIpAddress = alias.address;\n break;\n }\n }\n if (localIpAddress) break;\n }\n\n this.networkHost = localIpAddress;\n return localIpAddress;\n }\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?: Partial<ArkosConfig>\n ): { port: string; host: string } {\n const host =\n env?.CLI_HOST ||\n config?.host ||\n env?.HOST ||\n (env.ARKOS_BUILD !== \"true\" ? \"0.0.0.0\" : \"127.0.0.1\");\n const port = env?.CLI_PORT || config?.port || env?.PORT || \"8000\";\n\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?: Partial<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) sheu.warn(`${msg}`);\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 actualHost = ![\"localhost\", \"127.0.0.1\", \"0.0.0.0\"].includes(host)\n ? host\n : \"localhost\";\n const socket = net.createConnection({\n host: actualHost,\n port,\n timeout: 100,\n });\n\n socket.on(\"connect\", () => {\n socket.destroy();\n resolve(false);\n });\n\n socket.on(\"error\", () => {\n resolve(true);\n });\n\n socket.on(\"timeout\", () => {\n socket.destroy();\n resolve(true);\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"]}
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\";\nimport os from \"os\";\n\nclass PortAndHostAllocator {\n host: string | undefined;\n private networkHost: string | undefined;\n port: string | undefined;\n private prevWarnings = new Set<string>();\n\n getFirstNonLocalIp() {\n const networkInterfaces = os.networkInterfaces();\n let localIpAddress;\n if (this.networkHost) return this.networkHost;\n\n for (const interfaceName in networkInterfaces) {\n const netInterface = networkInterfaces[interfaceName];\n if (!netInterface) break;\n for (const alias of netInterface) {\n if (alias.family === \"IPv4\" && !alias.internal) {\n localIpAddress = alias.address;\n break;\n }\n }\n if (localIpAddress) break;\n }\n\n this.networkHost = localIpAddress;\n return localIpAddress;\n }\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?: Partial<ArkosConfig>\n ): { port: string; host: string } {\n const host =\n env?.CLI_HOST ||\n config?.host ||\n env?.HOST ||\n (env.ARKOS_BUILD !== \"true\" ? \"0.0.0.0\" : \"127.0.0.1\");\n const port = env?.CLI_PORT || config?.port || env?.PORT || \"8000\";\n\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?: Partial<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) sheu.warn(`${msg}`);\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 actualHost = ![\"localhost\", \"127.0.0.1\", \"0.0.0.0\"].includes(host)\n ? host\n : \"localhost\";\n const socket = net.createConnection({\n host: actualHost,\n port,\n timeout: 100,\n });\n\n socket.on(\"connect\", () => {\n socket.destroy();\n resolve(false);\n });\n\n socket.on(\"error\", () => {\n resolve(true);\n });\n\n socket.on(\"timeout\", () => {\n socket.destroy();\n resolve(true);\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"]}
@@ -62,6 +62,15 @@ function parseNestedObject(key, value) {
62
62
  return results;
63
63
  }
64
64
  function parseKey(key, value) {
65
+ if ((key === "AND" || key === "OR") && Array.isArray(value)) {
66
+ return [
67
+ {
68
+ fields: [key],
69
+ operator: null,
70
+ value: value,
71
+ },
72
+ ];
73
+ }
65
74
  if (value && typeof value === "object" && !Array.isArray(value)) {
66
75
  if (key.includes("__")) {
67
76
  const parsedKey = parseKeyString(key);
@@ -190,6 +199,17 @@ function parseKeyString(key) {
190
199
  return { fields: finalFields, operator };
191
200
  }
192
201
  function buildNestedObject(fields, operator, value, fieldConfig) {
202
+ if ((fields[0] === "AND" || fields[0] === "OR") &&
203
+ Array.isArray(value) &&
204
+ fields.length === 1) {
205
+ const processedConditions = value.map((condition) => {
206
+ const tempResult = parseQueryParamsWithModifiers(condition, fieldConfig);
207
+ return tempResult;
208
+ });
209
+ return {
210
+ [fields[0]]: processedConditions,
211
+ };
212
+ }
193
213
  if (fields.length === 0)
194
214
  return {};
195
215
  const firstField = fields[0];
@@ -1 +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\";\nimport prismaSchemaParser from \"../prisma/prisma-schema-parser\";\n\nfunction parseNestedObject(\n key: string,\n value: any\n): { fields: string[]; operator: string | null; value: any }[] {\n const results: { fields: string[]; operator: string | null; value: any }[] =\n [];\n\n function traverse(obj: any, path: string[] = []) {\n for (const [k, v] of Object.entries(obj)) {\n if (k.includes(\"__\")) {\n const parsedKey = parseKeyString(k);\n const basePath =\n v && typeof v === \"object\" && !Array.isArray(v) && parsedKey.operator\n ? [...path, ...parsedKey.fields, parsedKey.operator]\n : [...path, ...parsedKey.fields];\n\n if (v && typeof v === \"object\" && !Array.isArray(v))\n traverse(v, basePath);\n else\n results.push({\n fields: basePath,\n operator: parsedKey.operator,\n value: v,\n });\n } else {\n const currentPath = [...path, k];\n\n if (v && typeof v === \"object\" && !Array.isArray(v)) {\n traverse(v, currentPath);\n } else {\n const lastPart = currentPath[currentPath.length - 1];\n const possibleOperators = [\n \"icontains\",\n \"contains\",\n \"in\",\n \"notIn\",\n \"hasSome\",\n \"hasEvery\",\n \"or\",\n \"isNull\",\n \"isEmpty\",\n \"gt\",\n \"gte\",\n \"lt\",\n \"lte\",\n \"equals\",\n \"startsWith\",\n \"endsWith\",\n \"not\",\n \"some\",\n \"none\",\n \"every\",\n ];\n\n let operator: string | null = null;\n let fields = [...currentPath];\n\n if (possibleOperators.includes(lastPart)) {\n operator = lastPart;\n fields = currentPath.slice(0, -1);\n }\n\n results.push({ fields, operator, value: v });\n }\n }\n }\n }\n\n traverse({ [key]: value });\n return results;\n}\n\nfunction parseKey(\n key: string,\n value: any\n): { fields: string[]; operator: string | null; value: any }[] {\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\n if (key.includes(\"__\")) {\n const parsedKey = parseKeyString(key);\n\n const basePath = parsedKey.operator\n ? [...parsedKey.fields, parsedKey.operator]\n : parsedKey.fields;\n\n const results: {\n fields: string[];\n operator: string | null;\n value: any;\n }[] = [];\n\n function traverse(obj: any, path: string[] = []) {\n for (const [k, v] of Object.entries(obj)) {\n if (k.includes(\"__\")) {\n const innerParsedKey = parseKeyString(k);\n const basePath =\n v &&\n typeof v === \"object\" &&\n !Array.isArray(v) &&\n innerParsedKey.operator\n ? [...path, ...innerParsedKey.fields, innerParsedKey.operator]\n : [...path, ...innerParsedKey.fields];\n\n if (v && typeof v === \"object\" && !Array.isArray(v)) {\n traverse(v, basePath);\n } else {\n results.push({\n fields: basePath,\n operator: innerParsedKey.operator,\n value: v,\n });\n }\n } else {\n const currentPath = [...path, k];\n\n if (v && typeof v === \"object\" && !Array.isArray(v)) {\n traverse(v, currentPath);\n } else {\n const possibleOperators = [\n \"icontains\",\n \"contains\",\n \"in\",\n \"notIn\",\n \"hasSome\",\n \"hasEvery\",\n \"or\",\n \"isNull\",\n \"isEmpty\",\n \"gt\",\n \"gte\",\n \"lt\",\n \"lte\",\n \"equals\",\n \"startsWith\",\n \"endsWith\",\n \"not\",\n \"some\",\n \"none\",\n \"every\",\n ];\n\n let operator: string | null = null;\n let fields = [...currentPath];\n\n if (possibleOperators.includes(k)) {\n operator = k;\n fields = currentPath.slice(0, -1);\n }\n\n results.push({ fields, operator, value: v });\n }\n }\n }\n }\n\n traverse(value, basePath);\n return results;\n }\n\n return parseNestedObject(key, value);\n }\n\n const parsedKey = parseKeyString(key);\n return [{ fields: parsedKey.fields, operator: parsedKey.operator, value }];\n}\n\nfunction parseKeyString(key: string): {\n fields: string[];\n operator: string | null;\n} {\n const fields: string[] = [];\n let i = 0;\n\n while (i < key.length) {\n if (key[i] === \"_\" && key[i + 1] === \"_\") {\n i += 2;\n continue;\n }\n\n let nextDelimiter = key.length;\n const nextUnderscore = key.indexOf(\"__\", i);\n\n if (nextUnderscore !== -1 && nextUnderscore < nextDelimiter) {\n nextDelimiter = nextUnderscore;\n }\n\n const fieldName = key.substring(i, nextDelimiter);\n if (fieldName) {\n fields.push(fieldName);\n }\n i = nextDelimiter;\n }\n\n if (fields.length === 0) return { fields: [], operator: null };\n\n const possibleOperators = [\n \"icontains\",\n \"contains\",\n \"in\",\n \"notIn\",\n \"hasSome\",\n \"hasEvery\",\n \"or\",\n \"isNull\",\n \"isEmpty\",\n \"gt\",\n \"gte\",\n \"lt\",\n \"lte\",\n \"equals\",\n \"startsWith\",\n \"endsWith\",\n \"not\",\n \"some\",\n \"none\",\n \"every\",\n ];\n\n const lastField = fields[fields.length - 1];\n let operator: string | null = null;\n let finalFields = fields;\n\n if (possibleOperators.includes(lastField)) {\n operator = lastField;\n finalFields = fields.slice(0, -1);\n }\n\n return { fields: finalFields, operator };\n}\n\nfunction buildNestedObject(\n fields: string[],\n operator: string | null,\n value: any,\n fieldConfig: FieldConfig\n): any {\n if (fields.length === 0) return {};\n\n const firstField = fields[0];\n const lastField = fields[fields.length - 1];\n\n if (firstField === \"orderBy\" && fields.length === 2 && !operator) {\n return {\n orderBy: {\n [fields[1]]: value as \"asc\" | \"desc\",\n },\n };\n }\n\n if (fields.length === 1 && !operator) {\n if (typeof value === \"object\" && value !== null) {\n return { [firstField]: value };\n }\n\n const convertedValue =\n typeof value === \"string\"\n ? convertValue(value, firstField, fieldConfig)\n : value;\n return { [firstField]: convertedValue };\n }\n\n if (operator === \"or\") {\n const values = Array.isArray(value) ? value : value.toString().split(\",\");\n\n return {\n OR: values.map((val: any) => {\n const nested: any = {};\n let current = nested;\n\n for (let i = 0; i < fields.length - 1; i++) {\n current[fields[i]] = {};\n current = current[fields[i]];\n }\n\n current[lastField] = convertValue(\n typeof val === \"string\" ? val.trim() : val,\n lastField,\n fieldConfig\n );\n\n return nested;\n }),\n };\n }\n\n const result: any = {};\n let current = result;\n\n for (let i = 0; i < fields.length - 1; i++) {\n current[fields[i]] = {};\n current = current[fields[i]];\n }\n\n if (!operator) {\n current[lastField] = convertValue(value, lastField, fieldConfig);\n return result;\n }\n\n const stringValue = typeof value === \"string\" ? value : value?.toString();\n\n switch (operator) {\n case \"icontains\":\n current[lastField] = {\n contains: stringValue,\n mode: \"insensitive\",\n };\n if (\n ![\"mongodb\", \"postgresql\"].includes(\n prismaSchemaParser.config.datasourceProvider\n )\n )\n delete current[lastField].mode;\n break;\n\n case \"contains\":\n current[lastField] = {\n contains: stringValue,\n mode: \"sensitive\",\n };\n if (\n ![\"mongodb\", \"postgresql\"].includes(\n prismaSchemaParser.config.datasourceProvider\n )\n )\n delete current[lastField].mode;\n break;\n\n case \"in\":\n case \"notIn\":\n const inValues = Array.isArray(value) ? value : stringValue.split(\",\");\n current[lastField] = {\n [operator]: inValues.map((v: any) =>\n convertValue(\n typeof v === \"string\" ? v.trim() : v,\n lastField,\n fieldConfig\n )\n ),\n };\n break;\n\n case \"hasSome\":\n case \"hasEvery\":\n const arrayValues = Array.isArray(value) ? value : stringValue.split(\",\");\n current[lastField] = {\n [operator]: arrayValues.map((v: any) =>\n convertValue(\n typeof v === \"string\" ? v.trim() : v,\n lastField,\n fieldConfig\n )\n ),\n };\n break;\n\n case \"isNull\":\n current[lastField] = {\n equals: stringValue?.toLowerCase() === \"true\" ? null : undefined,\n };\n break;\n\n case \"isEmpty\":\n current[lastField] = {\n equals: stringValue?.toLowerCase() === \"true\" ? \"\" : undefined,\n };\n break;\n\n default:\n current[lastField] = {\n [operator]:\n value === null ? null : convertValue(value, lastField, fieldConfig),\n };\n }\n\n return result;\n}\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 */\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 if (value === undefined) continue;\n\n const parsedItems = parseKey(key, value);\n\n for (const { fields, operator, value: val } of parsedItems) {\n if (fields.length === 0) continue;\n\n const currentResult = buildNestedObject(\n fields,\n operator,\n val,\n fieldConfig\n );\n result = deepmerge(result, currentResult);\n }\n }\n\n return result;\n}\n\n/**\n * Converts string values to appropriate types based on field configuration\n */\nfunction convertValue(\n value: string,\n fieldName: string,\n config: FieldConfig\n): any {\n if (typeof value !== \"string\") return value;\n\n if (config.dateFields?.includes?.(fieldName) && value) return new Date(value);\n\n if (config.booleanFields?.includes?.(fieldName))\n return value.toLowerCase() === \"true\";\n\n if (config.numericFields?.includes?.(fieldName)) {\n const num = Number(value);\n return isNaN(num) ? value : num;\n }\n\n return value;\n}\n"]}
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\";\nimport prismaSchemaParser from \"../prisma/prisma-schema-parser\";\n\nfunction parseNestedObject(\n key: string,\n value: any\n): { fields: string[]; operator: string | null; value: any }[] {\n const results: { fields: string[]; operator: string | null; value: any }[] =\n [];\n\n function traverse(obj: any, path: string[] = []) {\n for (const [k, v] of Object.entries(obj)) {\n if (k.includes(\"__\")) {\n const parsedKey = parseKeyString(k);\n const basePath =\n v && typeof v === \"object\" && !Array.isArray(v) && parsedKey.operator\n ? [...path, ...parsedKey.fields, parsedKey.operator]\n : [...path, ...parsedKey.fields];\n\n if (v && typeof v === \"object\" && !Array.isArray(v))\n traverse(v, basePath);\n else\n results.push({\n fields: basePath,\n operator: parsedKey.operator,\n value: v,\n });\n } else {\n const currentPath = [...path, k];\n\n if (v && typeof v === \"object\" && !Array.isArray(v)) {\n traverse(v, currentPath);\n } else {\n const lastPart = currentPath[currentPath.length - 1];\n const possibleOperators = [\n \"icontains\",\n \"contains\",\n \"in\",\n \"notIn\",\n \"hasSome\",\n \"hasEvery\",\n \"or\",\n \"isNull\",\n \"isEmpty\",\n \"gt\",\n \"gte\",\n \"lt\",\n \"lte\",\n \"equals\",\n \"startsWith\",\n \"endsWith\",\n \"not\",\n \"some\",\n \"none\",\n \"every\",\n ];\n\n let operator: string | null = null;\n let fields = [...currentPath];\n\n if (possibleOperators.includes(lastPart)) {\n operator = lastPart;\n fields = currentPath.slice(0, -1);\n }\n\n results.push({ fields, operator, value: v });\n }\n }\n }\n }\n\n traverse({ [key]: value });\n return results;\n}\n\nfunction parseKey(\n key: string,\n value: any\n): { fields: string[]; operator: string | null; value: any }[] {\n if ((key === \"AND\" || key === \"OR\") && Array.isArray(value)) {\n return [\n {\n fields: [key],\n operator: null,\n value: value,\n },\n ];\n }\n\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\n if (key.includes(\"__\")) {\n const parsedKey = parseKeyString(key);\n\n const basePath = parsedKey.operator\n ? [...parsedKey.fields, parsedKey.operator]\n : parsedKey.fields;\n\n const results: {\n fields: string[];\n operator: string | null;\n value: any;\n }[] = [];\n\n function traverse(obj: any, path: string[] = []) {\n for (const [k, v] of Object.entries(obj)) {\n if (k.includes(\"__\")) {\n const innerParsedKey = parseKeyString(k);\n const basePath =\n v &&\n typeof v === \"object\" &&\n !Array.isArray(v) &&\n innerParsedKey.operator\n ? [...path, ...innerParsedKey.fields, innerParsedKey.operator]\n : [...path, ...innerParsedKey.fields];\n\n if (v && typeof v === \"object\" && !Array.isArray(v)) {\n traverse(v, basePath);\n } else {\n results.push({\n fields: basePath,\n operator: innerParsedKey.operator,\n value: v,\n });\n }\n } else {\n const currentPath = [...path, k];\n\n if (v && typeof v === \"object\" && !Array.isArray(v)) {\n traverse(v, currentPath);\n } else {\n const possibleOperators = [\n \"icontains\",\n \"contains\",\n \"in\",\n \"notIn\",\n \"hasSome\",\n \"hasEvery\",\n \"or\",\n \"isNull\",\n \"isEmpty\",\n \"gt\",\n \"gte\",\n \"lt\",\n \"lte\",\n \"equals\",\n \"startsWith\",\n \"endsWith\",\n \"not\",\n \"some\",\n \"none\",\n \"every\",\n ];\n\n let operator: string | null = null;\n let fields = [...currentPath];\n\n if (possibleOperators.includes(k)) {\n operator = k;\n fields = currentPath.slice(0, -1);\n }\n\n results.push({ fields, operator, value: v });\n }\n }\n }\n }\n\n traverse(value, basePath);\n return results;\n }\n\n return parseNestedObject(key, value);\n }\n\n const parsedKey = parseKeyString(key);\n return [{ fields: parsedKey.fields, operator: parsedKey.operator, value }];\n}\n\nfunction parseKeyString(key: string): {\n fields: string[];\n operator: string | null;\n} {\n const fields: string[] = [];\n let i = 0;\n\n while (i < key.length) {\n if (key[i] === \"_\" && key[i + 1] === \"_\") {\n i += 2;\n continue;\n }\n\n let nextDelimiter = key.length;\n const nextUnderscore = key.indexOf(\"__\", i);\n\n if (nextUnderscore !== -1 && nextUnderscore < nextDelimiter) {\n nextDelimiter = nextUnderscore;\n }\n\n const fieldName = key.substring(i, nextDelimiter);\n if (fieldName) {\n fields.push(fieldName);\n }\n i = nextDelimiter;\n }\n\n if (fields.length === 0) return { fields: [], operator: null };\n\n const possibleOperators = [\n \"icontains\",\n \"contains\",\n \"in\",\n \"notIn\",\n \"hasSome\",\n \"hasEvery\",\n \"or\",\n \"isNull\",\n \"isEmpty\",\n \"gt\",\n \"gte\",\n \"lt\",\n \"lte\",\n \"equals\",\n \"startsWith\",\n \"endsWith\",\n \"not\",\n \"some\",\n \"none\",\n \"every\",\n ];\n\n const lastField = fields[fields.length - 1];\n let operator: string | null = null;\n let finalFields = fields;\n\n if (possibleOperators.includes(lastField)) {\n operator = lastField;\n finalFields = fields.slice(0, -1);\n }\n\n return { fields: finalFields, operator };\n}\n\nfunction buildNestedObject(\n fields: string[],\n operator: string | null,\n value: any,\n fieldConfig: FieldConfig\n): any {\n // Handle top-level AND/OR arrays\n if (\n (fields[0] === \"AND\" || fields[0] === \"OR\") &&\n Array.isArray(value) &&\n fields.length === 1\n ) {\n // Process each condition in the array\n const processedConditions = value.map((condition: any) => {\n const tempResult = parseQueryParamsWithModifiers(condition, fieldConfig);\n return tempResult;\n });\n\n return {\n [fields[0]]: processedConditions,\n };\n }\n\n if (fields.length === 0) return {};\n\n const firstField = fields[0];\n const lastField = fields[fields.length - 1];\n\n if (firstField === \"orderBy\" && fields.length === 2 && !operator) {\n return {\n orderBy: {\n [fields[1]]: value as \"asc\" | \"desc\",\n },\n };\n }\n\n if (fields.length === 1 && !operator) {\n if (typeof value === \"object\" && value !== null) {\n return { [firstField]: value };\n }\n\n const convertedValue =\n typeof value === \"string\"\n ? convertValue(value, firstField, fieldConfig)\n : value;\n return { [firstField]: convertedValue };\n }\n\n if (operator === \"or\") {\n const values = Array.isArray(value) ? value : value.toString().split(\",\");\n\n return {\n OR: values.map((val: any) => {\n const nested: any = {};\n let current = nested;\n\n for (let i = 0; i < fields.length - 1; i++) {\n current[fields[i]] = {};\n current = current[fields[i]];\n }\n\n current[lastField] = convertValue(\n typeof val === \"string\" ? val.trim() : val,\n lastField,\n fieldConfig\n );\n\n return nested;\n }),\n };\n }\n\n const result: any = {};\n let current = result;\n\n for (let i = 0; i < fields.length - 1; i++) {\n current[fields[i]] = {};\n current = current[fields[i]];\n }\n\n if (!operator) {\n current[lastField] = convertValue(value, lastField, fieldConfig);\n return result;\n }\n\n const stringValue = typeof value === \"string\" ? value : value?.toString();\n\n switch (operator) {\n case \"icontains\":\n current[lastField] = {\n contains: stringValue,\n mode: \"insensitive\",\n };\n if (\n ![\"mongodb\", \"postgresql\"].includes(\n prismaSchemaParser.config.datasourceProvider\n )\n )\n delete current[lastField].mode;\n break;\n\n case \"contains\":\n current[lastField] = {\n contains: stringValue,\n mode: \"sensitive\",\n };\n if (\n ![\"mongodb\", \"postgresql\"].includes(\n prismaSchemaParser.config.datasourceProvider\n )\n )\n delete current[lastField].mode;\n break;\n\n case \"in\":\n case \"notIn\":\n const inValues = Array.isArray(value) ? value : stringValue.split(\",\");\n current[lastField] = {\n [operator]: inValues.map((v: any) =>\n convertValue(\n typeof v === \"string\" ? v.trim() : v,\n lastField,\n fieldConfig\n )\n ),\n };\n break;\n\n case \"hasSome\":\n case \"hasEvery\":\n const arrayValues = Array.isArray(value) ? value : stringValue.split(\",\");\n current[lastField] = {\n [operator]: arrayValues.map((v: any) =>\n convertValue(\n typeof v === \"string\" ? v.trim() : v,\n lastField,\n fieldConfig\n )\n ),\n };\n break;\n\n case \"isNull\":\n current[lastField] = {\n equals: stringValue?.toLowerCase() === \"true\" ? null : undefined,\n };\n break;\n\n case \"isEmpty\":\n current[lastField] = {\n equals: stringValue?.toLowerCase() === \"true\" ? \"\" : undefined,\n };\n break;\n\n default:\n current[lastField] = {\n [operator]:\n value === null ? null : convertValue(value, lastField, fieldConfig),\n };\n }\n\n return result;\n}\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 */\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 if (value === undefined) continue;\n\n const parsedItems = parseKey(key, value);\n\n for (const { fields, operator, value: val } of parsedItems) {\n if (fields.length === 0) continue;\n\n const currentResult = buildNestedObject(\n fields,\n operator,\n val,\n fieldConfig\n );\n result = deepmerge(result, currentResult);\n }\n }\n\n return result;\n}\n\n/**\n * Converts string values to appropriate types based on field configuration\n */\nfunction convertValue(\n value: string,\n fieldName: string,\n config: FieldConfig\n): any {\n if (typeof value !== \"string\") return value;\n\n if (config.dateFields?.includes?.(fieldName) && value) return new Date(value);\n\n if (config.booleanFields?.includes?.(fieldName))\n return value.toLowerCase() === \"true\";\n\n if (config.numericFields?.includes?.(fieldName)) {\n const num = Number(value);\n return isNaN(num) ? value : num;\n }\n\n return value;\n}\n"]}
@@ -1,20 +1,38 @@
1
- import { defineConfig } from "../define-config.js";
2
- import sheu from "../sheu.js";
3
- import * as fsHelpers from "./fs.helpers.js";
4
- import { importModule } from "./global.helpers.js";
5
- import { getUserFileExtension, crd } from "./fs.helpers.js";
6
-
7
- let definedArkosConfig = {};
8
- try {
9
- definedArkosConfig = process.env.NO_CLI === "true" ? await importModule(`${crd()}/arkos.config.${getUserFileExtension()}`) : () => {};
10
- }
11
- catch (err) {
12
- if (err.message.toLowerCase().includes("cannot find module"))
13
- sheu.warn(`Using default configs, because arkos.config.${fsHelpers.getUserFileExtension()} was not found`, {
14
- timestamp: true,
15
- });
16
- else
17
- throw err;
1
+ import { defineConfig } from '../define-config.js';
2
+ import sheu from '../sheu.js';
3
+ import ExitError from './exit-error.js';
4
+ import { crd, getUserFileExtension } from './fs.helpers.js';
5
+ import { getPrismaInstance } from './prisma.helpers.js';
6
+ import { userRequire } from './global.helpers.js';
7
+ import { loadEnvironmentVariables } from '../dotenv.helpers.js';
8
+ let definedArkosConfig;
9
+ export function readArkosConfig() {
10
+ loadEnvironmentVariables();
11
+ const configFilename = `arkos.config.${getUserFileExtension()}`;
12
+ const configPath = `${crd()}/${configFilename}`;
13
+ try {
14
+ let requireFunc;
15
+ if (typeof jest !== 'undefined')
16
+ requireFunc = () => ({});
17
+ else if (typeof require !== 'undefined') {
18
+ requireFunc = require;
19
+ }
20
+ else {
21
+ requireFunc = userRequire;
22
+ }
23
+ definedArkosConfig = requireFunc(configPath);
24
+ }
25
+ catch (err) {
26
+ if (err.message.toLowerCase().includes(`${configFilename}`)) {
27
+ definedArkosConfig = {};
28
+ sheu.warn(`Using default configs, because ${configFilename} was not found`, {
29
+ timestamp: true,
30
+ });
31
+ }
32
+ else {
33
+ throw err;
34
+ }
35
+ }
18
36
  }
19
37
  export function isUsingAuthentication() {
20
38
  const { authentication } = getArkosConfig();
@@ -25,13 +43,15 @@ export function isAuthenticationEnabled() {
25
43
  return authentication?.mode && authentication?.enabled !== false;
26
44
  }
27
45
  export function getArkosConfig() {
28
- const config = typeof definedArkosConfig === "string"
29
- ? {}
30
- : definedArkosConfig?.default || {};
31
- const configFile = `arkos.config.${fsHelpers.getUserFileExtension()}`;
32
- if (config.__loader !== "defineConfig" &&
33
- typeof jest == "undefined" &&
34
- typeof definedArkosConfig === "object") {
46
+ if (definedArkosConfig === undefined)
47
+ readArkosConfig();
48
+ const config = typeof definedArkosConfig === 'string'
49
+ ? { __loader: 'defineConfig' }
50
+ : definedArkosConfig?.default || { __loader: 'defineConfig' };
51
+ const configFile = `arkos.config.${getUserFileExtension()}`;
52
+ if (config.__loader !== 'defineConfig' &&
53
+ typeof jest == 'undefined' &&
54
+ typeof definedArkosConfig === 'object') {
35
55
  sheu.error(`From v1.6 config under ${configFile} must be wrapped in \`defineConfig()\` function from \`arkos/config\`. You can do the following under your ${configFile}:
36
56
 
37
57
  import { defineConfig } from "arkos/config"
@@ -44,4 +64,20 @@ export default config
44
64
  }
45
65
  return defineConfig(config);
46
66
  }
67
+ export function isProduction() {
68
+ return process.env.ARKOS_BUILD === 'true';
69
+ }
70
+ export function validateArkosConfig() {
71
+ const config = getArkosConfig();
72
+ const authenticationEnabled = isAuthenticationEnabled();
73
+ if (!config?.source?.entryPoint)
74
+ throw ExitError(`Invalid value for 'arkosConfig.source.entryPoint', please pass a valid path from the current working directory`);
75
+ if (authenticationEnabled &&
76
+ isProduction() &&
77
+ !process.env.JWT_SECRET &&
78
+ !config.authentication?.jwt?.secret)
79
+ throw ExitError(`Missing jwt secret in production, see https://www.arkosjs.com/docs/core-concepts/authentication/setup#configuration`);
80
+ if (authenticationEnabled && !getPrismaInstance())
81
+ throw ExitError(`Arkos' authentication system relies on prisma instance, please disabled your authentication or see https://www.arkosjs.com/docs/core-concepts/prisma-orm/setup to setup a prisma instance`);
82
+ }
47
83
  //# sourceMappingURL=arkos-config.helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"arkos-config.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/arkos-config.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAmB,MAAM,kBAAkB,CAAC;AACjE,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAC1C,CAAC,wCAAwC,CAAC,CAAC;AAE3C,IAAI,kBAAkB,GAAQ,EAAE,CAAC;AAEjC,IAAI,CAAC;IACH,kBAAkB,GAAG,0BAA0B,CAAC;AAClD,CAAC;AAAC,OAAO,GAAQ,EAAE,CAAC;IAClB,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAC1D,IAAI,CAAC,IAAI,CACP,+CAA+C,SAAS,CAAC,oBAAoB,EAAE,gBAAgB,EAC/F;YACE,SAAS,EAAE,IAAI;SAChB,CACF,CAAC;;QACC,MAAM,GAAG,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAAC;IAE5C,OAAO,cAAc,EAAE,IAAI,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAAC;IAE5C,OAAO,cAAc,EAAE,IAAI,IAAI,cAAc,EAAE,OAAO,KAAK,KAAK,CAAC;AACnE,CAAC;AAOD,MAAM,UAAU,cAAc;IAC5B,MAAM,MAAM,GACV,OAAO,kBAAkB,KAAK,QAAQ;QACpC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAE,kBAA0B,EAAE,OAAO,IAAI,EAAE,CAAC;IACjD,MAAM,UAAU,GAAG,gBAAgB,SAAS,CAAC,oBAAoB,EAAE,EAAE,CAAC;IAEtE,IACG,MAAc,CAAC,QAAQ,KAAK,cAAc;QAC3C,OAAO,IAAI,IAAI,WAAW;QAC1B,OAAO,kBAAkB,KAAK,QAAQ,EACtC,CAAC;QACD,IAAI,CAAC,KAAK,CACR,0BAA0B,UAAU,8GAA8G,UAAU;;;;;;;CAOjK,CACI,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,YAAY,CAAC,MAAM,CAAQ,CAAC;AACrC,CAAC","sourcesContent":["import { defineConfig, UserArkosConfig } from \"../define-config\";\nimport sheu from \"../sheu\";\nimport * as fsHelpers from \"./fs.helpers\";\n(\"ReplaceWithNeededImportsForArkosConfig\"); // This will be filled by post build script\n\nlet definedArkosConfig: any = {};\n\ntry {\n definedArkosConfig = \"ReplaceWithDynamicImport\"; // This will be filled by post build script\n} catch (err: any) {\n if (err.message.toLowerCase().includes(\"cannot find module\"))\n sheu.warn(\n `Using default configs, because arkos.config.${fsHelpers.getUserFileExtension()} was not found`,\n {\n timestamp: true,\n }\n );\n else throw err;\n}\n\nexport function isUsingAuthentication() {\n const { authentication } = getArkosConfig();\n\n return authentication?.mode;\n}\n\nexport function isAuthenticationEnabled() {\n const { authentication } = getArkosConfig();\n\n return authentication?.mode && authentication?.enabled !== false;\n}\n\n/**\n * Gives access to the underlying current configurations being used by **Arkos** by default and also loaded through `arkos.config.{ts|js}`\n *\n * @returns {ArkosConfig}\n */\nexport function getArkosConfig(): UserArkosConfig {\n const config =\n typeof definedArkosConfig === \"string\"\n ? {}\n : (definedArkosConfig as any)?.default || {};\n const configFile = `arkos.config.${fsHelpers.getUserFileExtension()}`;\n\n if (\n (config as any).__loader !== \"defineConfig\" &&\n typeof jest == \"undefined\" &&\n typeof definedArkosConfig === \"object\"\n ) {\n sheu.error(\n `From v1.6 config under ${configFile} must be wrapped in \\`defineConfig()\\` function from \\`arkos/config\\`. You can do the following under your ${configFile}:\n\nimport { defineConfig } from \"arkos/config\"\n\nconst config = defineConfig({ ... })\n\nexport default config\n`\n );\n process.exit(1);\n }\n\n return defineConfig(config) as any;\n}\n"]}
1
+ {"version":3,"file":"arkos-config.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/arkos-config.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { defineConfig, UserArkosConfig } from '../define-config';\nimport sheu from '../sheu';\nimport ExitError from './exit-error';\nimport { crd, getUserFileExtension } from './fs.helpers';\nimport { getPrismaInstance } from './prisma.helpers';\nimport { userRequire } from './global.helpers';\nimport { loadEnvironmentVariables } from '../dotenv.helpers';\n\nlet definedArkosConfig: any;\n\nexport function readArkosConfig() {\n loadEnvironmentVariables();\n const configFilename = `arkos.config.${getUserFileExtension()}`;\n const configPath = `${crd()}/${configFilename}`;\n try {\n let requireFunc: Function;\n if (typeof jest !== 'undefined') requireFunc = () => ({});\n else if (typeof require !== 'undefined') {\n requireFunc = require;\n } else {\n requireFunc = userRequire;\n }\n definedArkosConfig = requireFunc(configPath);\n } catch (err: any) {\n if (err.message.toLowerCase().includes(`${configFilename}`)) {\n definedArkosConfig = {};\n sheu.warn(\n `Using default configs, because ${configFilename} was not found`,\n {\n timestamp: true,\n },\n );\n } else {\n throw err;\n }\n }\n}\n\nexport function isUsingAuthentication() {\n const { authentication } = getArkosConfig();\n return authentication?.mode;\n}\n\nexport function isAuthenticationEnabled() {\n const { authentication } = getArkosConfig();\n return authentication?.mode && authentication?.enabled !== false;\n}\n\n/**\n * Gives access to the underlying current configurations being used by **Arkos** by default and also loaded through `arkos.config.{ts|js}`\n *\n * @returns {ArkosConfig}\n */\nexport function getArkosConfig(): UserArkosConfig {\n if (definedArkosConfig === undefined) readArkosConfig();\n\n const config =\n typeof definedArkosConfig === 'string'\n ? { __loader: 'defineConfig' }\n : (definedArkosConfig as any)?.default || { __loader: 'defineConfig' };\n const configFile = `arkos.config.${getUserFileExtension()}`;\n\n if (\n (config as any).__loader !== 'defineConfig' &&\n //@ts-ignore\n typeof jest == 'undefined' &&\n typeof definedArkosConfig === 'object'\n ) {\n sheu.error(\n `From v1.6 config under ${configFile} must be wrapped in \\`defineConfig()\\` function from \\`arkos/config\\`. You can do the following under your ${configFile}:\n\nimport { defineConfig } from \"arkos/config\"\n\nconst config = defineConfig({ ... })\n\nexport default config\n`,\n );\n process.exit(1);\n }\n\n return defineConfig(config) as any;\n}\n\n/**\n * Returns true if application is being run through `arkos start` after `arkos build`\n *\n * @since 1.5.16-beta\n */\nexport function isProduction() {\n return process.env.ARKOS_BUILD === 'true';\n}\n\nexport function validateArkosConfig() {\n const config = getArkosConfig();\n const authenticationEnabled = isAuthenticationEnabled();\n\n if (!config?.source?.entryPoint)\n throw ExitError(\n `Invalid value for 'arkosConfig.source.entryPoint', please pass a valid path from the current working directory`,\n );\n\n if (\n authenticationEnabled &&\n isProduction() &&\n !process.env.JWT_SECRET &&\n !config.authentication?.jwt?.secret\n )\n throw ExitError(\n `Missing jwt secret in production, see https://www.arkosjs.com/docs/core-concepts/authentication/setup#configuration`,\n );\n\n if (authenticationEnabled && !getPrismaInstance())\n throw ExitError(\n `Arkos' authentication system relies on prisma instance, please disabled your authentication or see https://www.arkosjs.com/docs/core-concepts/prisma-orm/setup to setup a prisma instance`,\n );\n}\n\n"]}
@@ -1,5 +1,6 @@
1
1
  import sheu from "../sheu.js";
2
2
  export default function ExitError(message, code = 1) {
3
+ console.info("");
3
4
  sheu.error(message);
4
5
  process.exit(code);
5
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"exit-error.js","sourceRoot":"","sources":["../../../../src/utils/helpers/exit-error.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,OAAY,EAAE,IAAI,GAAG,CAAC;IACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC","sourcesContent":["import sheu from \"../sheu\";\n\nexport default function ExitError(message: any, code = 1) {\n sheu.error(message);\n process.exit(code);\n}\n"]}
1
+ {"version":3,"file":"exit-error.js","sourceRoot":"","sources":["../../../../src/utils/helpers/exit-error.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,OAAY,EAAE,IAAI,GAAG,CAAC;IACtD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC","sourcesContent":["import sheu from \"../sheu\";\n\nexport default function ExitError(message: any, code = 1) {\n console.info(\"\");\n sheu.error(message);\n process.exit(code);\n}\n"]}
@@ -1,5 +1,5 @@
1
- import fs from "fs";
2
- import path from "path";
1
+ import path from "node:path";
2
+ import fs from "node:fs";
3
3
  export const crd = () => process.env.ARKOS_BUILD === "true"
4
4
  ? process.cwd() + "/.build/"
5
5
  : process.cwd();
@@ -14,38 +14,31 @@ export function fullCleanCwd(path) {
14
14
  return path;
15
15
  }
16
16
  export let userFileExtension;
17
- export const getUserFileExtension = () => {
17
+ export const getUserFileExtension = (root = process.cwd()) => {
18
18
  if (userFileExtension)
19
19
  return userFileExtension;
20
- try {
21
- const currentDir = process.cwd();
22
- const hasTsConfig = fs.existsSync(path.join(currentDir, "tsconfig.json"));
23
- const hasAppTs = fs.existsSync(path.join(currentDir, "src", "app.ts"));
24
- const hasAppJs = fs.existsSync(path.join(currentDir, "src", "app.js"));
25
- const isBuildMode = process.env.ARKOS_BUILD === "true";
26
- if (isBuildMode)
27
- userFileExtension = "js";
28
- else if (hasTsConfig && hasAppTs)
29
- userFileExtension = "ts";
30
- else if (hasAppTs && !hasAppJs)
31
- userFileExtension = "ts";
32
- else if (hasAppJs)
33
- userFileExtension = "js";
34
- else
35
- userFileExtension = "js";
36
- return userFileExtension;
37
- }
38
- catch (e) {
39
- userFileExtension = "js";
40
- return userFileExtension;
20
+ const tsconfigPath = path.join(root, "tsconfig.json");
21
+ function isTs() {
22
+ try {
23
+ if (fs.existsSync(tsconfigPath))
24
+ return true;
25
+ const packageJsonPath = path.join(root, "package.json");
26
+ if (!fs.existsSync(packageJsonPath))
27
+ return false;
28
+ const pkg = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
29
+ const dependencies = {
30
+ ...pkg.dependencies,
31
+ ...pkg.devDependencies,
32
+ ...pkg.peerDependencies,
33
+ };
34
+ return Boolean(dependencies.typescript);
35
+ }
36
+ catch {
37
+ return false;
38
+ }
41
39
  }
40
+ userFileExtension =
41
+ isTs() && process.env.ARKOS_BUILD !== "true" ? "ts" : "js";
42
+ return userFileExtension;
42
43
  };
43
- export function checkFileExists(filePath) {
44
- try {
45
- return fs.existsSync(path.resolve(filePath));
46
- }
47
- catch (error) {
48
- return false;
49
- }
50
- }
51
44
  //# sourceMappingURL=fs.helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fs.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/fs.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE,CACtB,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM;IAChC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,UAAU;IAC5B,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAQpB,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAEvE,IACE,IAAI,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;QAEpC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;;QACvC,OAAO,IAAI,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,IAAI,iBAA0C,CAAC;AAOtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAgB,EAAE;IACpD,IAAI,iBAAiB;QAAE,OAAO,iBAAiB,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAEjC,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;QAE1E,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAEvE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;QAEvD,IAAI,WAAW;YAAE,iBAAiB,GAAG,IAAI,CAAC;aACrC,IAAI,WAAW,IAAI,QAAQ;YAAE,iBAAiB,GAAG,IAAI,CAAC;aACtD,IAAI,QAAQ,IAAI,CAAC,QAAQ;YAAE,iBAAiB,GAAG,IAAI,CAAC;aACpD,IAAI,QAAQ;YAAE,iBAAiB,GAAG,IAAI,CAAC;;YACvC,iBAAiB,GAAG,IAAI,CAAC;QAE9B,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,iBAAiB,GAAG,IAAI,CAAC;QACzB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;AACH,CAAC,CAAC;AAgBF,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\n\nexport const crd = () =>\n process.env.ARKOS_BUILD === \"true\"\n ? process.cwd() + \"/.build/\"\n : process.cwd();\n\n/**\n * Removes the current working directory prefix from the given path.\n * Handles cases with or without a trailing slash in cwd.\n * @param path - The path to clean\n * @returns The path without the cwd prefix\n */\nexport function fullCleanCwd(path: string): string {\n if (typeof path !== \"string\") throw new Error(\"Path must be a string\");\n\n if (\n path.startsWith(`/${process.cwd()}`) ||\n path.startsWith(`${process.cwd()}`) ||\n path.startsWith(`${process.cwd()}/`)\n )\n return path.replaceAll(process.cwd(), \"\");\n else return path;\n}\n\nexport let userFileExtension: \"ts\" | \"js\" | undefined;\n\n/**\n * Detects the file extension that should be used in the current execution context\n * Returns 'ts' when TypeScript config exists and not in build mode, otherwise 'js'\n * @returns 'ts' | 'js'\n */\nexport const getUserFileExtension = (): \"ts\" | \"js\" => {\n if (userFileExtension) return userFileExtension;\n\n try {\n const currentDir = process.cwd();\n\n const hasTsConfig = fs.existsSync(path.join(currentDir, \"tsconfig.json\"));\n\n const hasAppTs = fs.existsSync(path.join(currentDir, \"src\", \"app.ts\"));\n const hasAppJs = fs.existsSync(path.join(currentDir, \"src\", \"app.js\"));\n\n const isBuildMode = process.env.ARKOS_BUILD === \"true\";\n\n if (isBuildMode) userFileExtension = \"js\";\n else if (hasTsConfig && hasAppTs) userFileExtension = \"ts\";\n else if (hasAppTs && !hasAppJs) userFileExtension = \"ts\";\n else if (hasAppJs) userFileExtension = \"js\";\n else userFileExtension = \"js\";\n\n return userFileExtension;\n } catch (e) {\n userFileExtension = \"js\";\n return userFileExtension;\n }\n};\n\n/**\n * Checks if a file exists at the specified file path.\n *\n * @param filePath - The path to the file to check\n * @returns {boolean} True if the file exists, false otherwise or if there's an error\n *\n * @example\n * ```ts\n * const exists = checkFileExists('./path/to/file.txt');\n * if (exists) {\n * console.info('File exists!');\n * }\n * ```\n */\nexport function checkFileExists(filePath: string): boolean {\n try {\n return fs.existsSync(path.resolve(filePath));\n } catch (error) {\n return false;\n }\n}\n"]}
1
+ {"version":3,"file":"fs.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/fs.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE,CACtB,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM;IAChC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,UAAU;IAC5B,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAQpB,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAEvE,IACE,IAAI,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;QAEpC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;;QACvC,OAAO,IAAI,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,IAAI,iBAA0C,CAAC;AAOtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,EAAe,EAAE;IACxE,IAAI,iBAAiB;QAAE,OAAO,iBAAiB,CAAC;IAChD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAEtD,SAAS,IAAI;QACX,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;gBAAE,OAAO,IAAI,CAAC;YAE7C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAExD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC;gBAAE,OAAO,KAAK,CAAC;YAElD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;YAEjE,MAAM,YAAY,GAAG;gBACnB,GAAG,GAAG,CAAC,YAAY;gBACnB,GAAG,GAAG,CAAC,eAAe;gBACtB,GAAG,GAAG,CAAC,gBAAgB;aACxB,CAAC;YAEF,OAAO,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,iBAAiB;QACf,IAAI,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC","sourcesContent":["import path from \"node:path\";\nimport fs from \"node:fs\";\n\nexport const crd = () =>\n process.env.ARKOS_BUILD === \"true\"\n ? process.cwd() + \"/.build/\"\n : process.cwd();\n\n/**\n * Removes the current working directory prefix from the given path.\n * Handles cases with or without a trailing slash in cwd.\n * @param path - The path to clean\n * @returns The path without the cwd prefix\n */\nexport function fullCleanCwd(path: string): string {\n if (typeof path !== \"string\") throw new Error(\"Path must be a string\");\n\n if (\n path.startsWith(`/${process.cwd()}`) ||\n path.startsWith(`${process.cwd()}`) ||\n path.startsWith(`${process.cwd()}/`)\n )\n return path.replaceAll(process.cwd(), \"\");\n else return path;\n}\n\nexport let userFileExtension: \"ts\" | \"js\" | undefined;\n\n/**\n * Detects the file extension that should be used in the current execution context\n * Returns 'ts' when TypeScript config exists and not in build mode, otherwise 'js'\n * @returns 'ts' | 'js'\n */\nexport const getUserFileExtension = (root = process.cwd()): \"ts\" | \"js\" => {\n if (userFileExtension) return userFileExtension;\n const tsconfigPath = path.join(root, \"tsconfig.json\");\n\n function isTs() {\n try {\n if (fs.existsSync(tsconfigPath)) return true;\n\n const packageJsonPath = path.join(root, \"package.json\");\n\n if (!fs.existsSync(packageJsonPath)) return false;\n\n const pkg = JSON.parse(fs.readFileSync(packageJsonPath, \"utf8\"));\n\n const dependencies = {\n ...pkg.dependencies,\n ...pkg.devDependencies,\n ...pkg.peerDependencies,\n };\n\n return Boolean(dependencies.typescript);\n } catch {\n return false;\n }\n }\n\n userFileExtension =\n isTs() && process.env.ARKOS_BUILD !== \"true\" ? \"ts\" : \"js\";\n return userFileExtension;\n};\n"]}
@@ -17,7 +17,7 @@ export function isEsm() {
17
17
  const pkg = getPackageJson();
18
18
  return pkg?.type === "module";
19
19
  }
20
- const userRequire = createRequire(pathToFileURL(process.cwd() + "/package.json"));
20
+ export const userRequire = createRequire(pathToFileURL(process.cwd() + "/package.json"));
21
21
  export async function importModule(modulePath, options = { fixExtension: true }) {
22
22
  if (!options.fixExtension || modulePath.endsWith(".ts") || !isEsm()) {
23
23
  let imported;
@@ -1 +1 @@
1
- {"version":3,"file":"global.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/global.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport { createRequire } from \"module\";\nimport { pathToFileURL } from \"url\";\n\nexport function getPackageJson() {\n try {\n const pkgPath = path.join(process.cwd(), \"package.json\");\n if (fs.existsSync(pkgPath)) {\n return JSON.parse(fs.readFileSync(pkgPath, \"utf8\"));\n }\n } catch (err) {\n console.error(\"Error checking package.json:\", err);\n }\n}\n\nexport function isEsm() {\n const pkg = getPackageJson();\n return pkg?.type === \"module\";\n}\n\n// When importing user modules: mainly on ESM environment\nconst userRequire = createRequire(\n pathToFileURL(process.cwd() + \"/package.json\")\n);\n\nexport async function importModule(\n modulePath: string,\n options: { fixExtension: boolean } = { fixExtension: true }\n) {\n if (!options.fixExtension || modulePath.endsWith(\".ts\") || !isEsm()) {\n let imported;\n try {\n imported = await import(pathToFileURL(modulePath).href);\n } catch (err: any) {\n if (err?.message?.includes(\"file://\"))\n imported = await import(modulePath);\n else throw err;\n }\n return imported;\n }\n\n const resolved = userRequire.resolve(modulePath);\n return await import(pathToFileURL(resolved).href);\n}\n\n/**\n * This one was written for escaping esModules when imported on cjs\n */\nexport async function importEsmPreventingTsTransformation(path: string) {\n const importFn = new Function(\"path\", \"return import(path)\");\n return await importFn(path);\n}\n\n/**\n * Helps getting the current package manager from user agent\n *\n * @returns {string} the package manager\n * @default \"npm\"\n */\nexport function detectPackageManagerFromUserAgent(): string {\n const userAgent = process.env.npm_config_user_agent || \"\";\n\n if (!userAgent) return \"npm\";\n if (userAgent.includes(\"cnpm\")) return \"cnpm\";\n if (userAgent.includes(\"pnpm\")) return \"pnpm\";\n if (userAgent.includes(\"yarn\")) return \"yarn\";\n if (userAgent.includes(\"npm\")) return \"npm\";\n if (userAgent.includes(\"bun\")) return \"bun\";\n if (userAgent.includes(\"corepack\")) return \"corepack\";\n if (userAgent.includes(\"deno\")) return \"deno\";\n\n return \"npm\";\n}\n"]}
1
+ {"version":3,"file":"global.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/global.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport { createRequire } from \"module\";\nimport { pathToFileURL } from \"url\";\n\nexport function getPackageJson() {\n try {\n const pkgPath = path.join(process.cwd(), \"package.json\");\n if (fs.existsSync(pkgPath)) {\n return JSON.parse(fs.readFileSync(pkgPath, \"utf8\"));\n }\n } catch (err) {\n console.error(\"Error checking package.json:\", err);\n }\n}\n\nexport function isEsm() {\n const pkg = getPackageJson();\n return pkg?.type === \"module\";\n}\n\n// When importing user modules: mainly on ESM environment\nexport const userRequire = createRequire(\n pathToFileURL(process.cwd() + \"/package.json\")\n);\n\nexport async function importModule(\n modulePath: string,\n options: { fixExtension: boolean } = { fixExtension: true }\n) {\n if (!options.fixExtension || modulePath.endsWith(\".ts\") || !isEsm()) {\n let imported;\n try {\n imported = await import(pathToFileURL(modulePath).href);\n } catch (err: any) {\n if (err?.message?.includes(\"file://\"))\n imported = await import(modulePath);\n else throw err;\n }\n return imported;\n }\n\n const resolved = userRequire.resolve(modulePath);\n return await import(pathToFileURL(resolved).href);\n}\n\n/**\n * This one was written for escaping esModules when imported on cjs\n */\nexport async function importEsmPreventingTsTransformation(path: string) {\n const importFn = new Function(\"path\", \"return import(path)\");\n return await importFn(path);\n}\n\n/**\n * Helps getting the current package manager from user agent\n *\n * @returns {string} the package manager\n * @default \"npm\"\n */\nexport function detectPackageManagerFromUserAgent(): string {\n const userAgent = process.env.npm_config_user_agent || \"\";\n\n if (!userAgent) return \"npm\";\n if (userAgent.includes(\"cnpm\")) return \"cnpm\";\n if (userAgent.includes(\"pnpm\")) return \"pnpm\";\n if (userAgent.includes(\"yarn\")) return \"yarn\";\n if (userAgent.includes(\"npm\")) return \"npm\";\n if (userAgent.includes(\"bun\")) return \"bun\";\n if (userAgent.includes(\"corepack\")) return \"corepack\";\n if (userAgent.includes(\"deno\")) return \"deno\";\n\n return \"npm\";\n}\n"]}
@@ -1,15 +1,18 @@
1
- import prismaSchemaParser from "../prisma/prisma-schema-parser.js";
2
1
  import { getArkosConfig } from "./arkos-config.helpers.js";
3
2
  import sheu from "../sheu.js";
3
+ import { getUserFileExtension } from "./fs.helpers.js";
4
4
  export let prismaInstance = null;
5
- export async function loadPrismaModule() {
6
- return getArkosConfig()?.prisma?.instance;
5
+ export function loadPrismaModule() {
6
+ const instance = getArkosConfig()?.prisma?.instance;
7
+ if (!instance)
8
+ sheu.warn(`Prisma client instance not passed to arkos.config.${getUserFileExtension()}, see https://www.arkosjs.com/docs/core-concepts/prisma-orm/setup`, { timestamp: true });
9
+ return instance;
7
10
  }
8
11
  export function handlePrismaGet(target, prop, receiver) {
9
- const originalProperty = Reflect.get(target, prop, receiver);
10
- const isModel = prismaSchemaParser
11
- .getModelsAsArrayOfStrings()
12
- .find((m) => m.toLowerCase() === prop?.toLowerCase?.());
12
+ const originalProperty = (Reflect.get(target, prop, receiver));
13
+ const isModel = typeof originalProperty === "object"
14
+ ? "findMany" in (originalProperty || {})
15
+ : false;
13
16
  if (isModel && originalProperty) {
14
17
  return new Proxy(originalProperty, {
15
18
  get(modelTarget, methodName, modelReceiver) {