arkos 1.2.14-test → 1.2.14-test.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) hide show
  1. package/README.md +22 -14
  2. package/cli.js +2 -11
  3. package/dist/cjs/app.js +1 -1
  4. package/dist/cjs/app.js.map +1 -1
  5. package/dist/cjs/exports/auth/index.js +1 -6
  6. package/dist/cjs/exports/controllers/index.js +1 -11
  7. package/dist/cjs/exports/error-handler/index.js +1 -11
  8. package/dist/cjs/exports/index.js +1 -12
  9. package/dist/cjs/exports/middlewares/index.js +1 -7
  10. package/dist/cjs/exports/prisma/index.js +1 -6
  11. package/dist/cjs/exports/services/index.js +1 -49
  12. package/dist/cjs/exports/utils/index.js +1 -44
  13. package/dist/cjs/exports/validation/index.js +1 -11
  14. package/dist/cjs/modules/auth/auth.controller.js +1 -194
  15. package/dist/cjs/modules/auth/auth.router.js +1 -124
  16. package/dist/cjs/modules/auth/auth.router.js.map +1 -1
  17. package/dist/cjs/modules/auth/auth.service.js +1 -192
  18. package/dist/cjs/modules/auth/auth.service.js.map +1 -1
  19. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +1 -83
  20. package/dist/cjs/modules/base/base.controller.js +1 -159
  21. package/dist/cjs/modules/base/base.controller.js.map +1 -1
  22. package/dist/cjs/modules/base/base.middlewares.js +1 -92
  23. package/dist/cjs/modules/base/base.middlewares.js.map +1 -1
  24. package/dist/cjs/modules/base/base.router.js +1 -24
  25. package/dist/cjs/modules/base/base.router.js.map +1 -1
  26. package/dist/cjs/modules/base/base.service.js +1 -128
  27. package/dist/cjs/modules/base/base.service.js.map +1 -1
  28. package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js +1 -82
  29. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +1 -50
  30. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +1 -167
  31. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  32. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +1 -171
  33. package/dist/cjs/modules/email/email.service.js +1 -104
  34. package/dist/cjs/modules/error-handler/error-handler.controller.js +4 -144
  35. package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
  36. package/dist/cjs/modules/error-handler/utils/app-error.js +1 -17
  37. package/dist/cjs/modules/error-handler/utils/catch-async.js +1 -12
  38. package/dist/cjs/modules/error-handler/utils/catch-async.js.map +1 -1
  39. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +3 -195
  40. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
  41. package/dist/cjs/modules/file-upload/file-upload.controller.js +1 -271
  42. package/dist/cjs/modules/file-upload/file-upload.router.js +1 -56
  43. package/dist/cjs/modules/file-upload/file-upload.router.js.map +1 -1
  44. package/dist/cjs/modules/file-upload/file-upload.service.js +1 -322
  45. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -90
  46. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -1
  47. package/dist/cjs/modules/swagger/swagger.router.js +1 -141
  48. package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
  49. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -0
  50. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -0
  51. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -0
  52. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -0
  53. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -0
  54. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -0
  55. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +1 -0
  56. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -0
  57. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +1 -0
  58. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +1 -0
  59. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +1 -0
  60. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -0
  61. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +1 -0
  62. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -0
  63. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -0
  64. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -0
  65. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -0
  66. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
  67. package/dist/cjs/package.json +3 -0
  68. package/dist/cjs/server.js +4 -2
  69. package/dist/cjs/server.js.map +1 -1
  70. package/dist/cjs/types/arkos-config.js +1 -3
  71. package/dist/cjs/types/arkos-config.js.map +1 -1
  72. package/dist/cjs/types/auth.js +1 -3
  73. package/dist/cjs/types/index.js +1 -11
  74. package/dist/cjs/types/router-config.js +1 -3
  75. package/dist/cjs/utils/arkos-env.js +1 -9
  76. package/dist/cjs/utils/cli/build.js +5 -229
  77. package/dist/cjs/utils/cli/build.js.map +1 -1
  78. package/dist/cjs/utils/cli/dev.js +5 -271
  79. package/dist/cjs/utils/cli/dev.js.map +1 -1
  80. package/dist/cjs/utils/cli/generate.js +12 -189
  81. package/dist/cjs/utils/cli/generate.js.map +1 -1
  82. package/dist/cjs/utils/cli/index.js +1 -81
  83. package/dist/cjs/utils/cli/start.js +1 -93
  84. package/dist/cjs/utils/cli/start.js.map +1 -1
  85. package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -26
  86. package/dist/cjs/utils/cli/utils/cli.helpers.js.map +1 -1
  87. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +5 -20
  88. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +6 -15
  89. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +71 -133
  90. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +1 -1
  91. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +24 -46
  92. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +1 -1
  93. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +12 -32
  94. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -1
  95. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js +7 -27
  96. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
  97. package/dist/cjs/utils/cli/utils/template-generators.js +2 -28
  98. package/dist/cjs/utils/cli/utils/watermark-stamper.js +3 -0
  99. package/dist/cjs/utils/cli/utils/watermark-stamper.js.map +1 -0
  100. package/dist/cjs/utils/dotenv.helpers.js +1 -43
  101. package/dist/cjs/utils/features/api.features.js +1 -161
  102. package/dist/cjs/utils/features/api.features.js.map +1 -1
  103. package/dist/cjs/utils/features/change-case.features.js +1 -67
  104. package/dist/cjs/utils/features/port-and-host-allocator.js +1 -0
  105. package/dist/cjs/utils/features/port-and-host-allocator.js.map +1 -0
  106. package/dist/cjs/utils/helpers/api.features.helpers.js +1 -106
  107. package/dist/cjs/utils/helpers/api.features.helpers.js.map +1 -1
  108. package/dist/cjs/utils/helpers/change-case.helpers.js +1 -177
  109. package/dist/cjs/utils/helpers/deepmerge.helper.js +1 -115
  110. package/dist/cjs/utils/helpers/fs.helpers.js +1 -54
  111. package/dist/cjs/utils/helpers/fs.helpers.js.map +1 -1
  112. package/dist/cjs/utils/helpers/global.helpers.js +1 -40
  113. package/dist/cjs/utils/helpers/global.helpers.js.map +1 -1
  114. package/dist/cjs/utils/helpers/models.helpers.js +11 -325
  115. package/dist/cjs/utils/helpers/models.helpers.js.map +1 -1
  116. package/dist/cjs/utils/helpers/prisma.helpers.js +1 -49
  117. package/dist/cjs/utils/helpers/prisma.helpers.js.map +1 -1
  118. package/dist/cjs/utils/helpers/query-parser.helpers.js +1 -45
  119. package/dist/cjs/utils/helpers/routers.helpers.js +1 -0
  120. package/dist/cjs/utils/helpers/routers.helpers.js.map +1 -0
  121. package/dist/cjs/utils/helpers/text.helpers.js +1 -28
  122. package/dist/cjs/utils/prisma/enhaced-prisma-json-schema-generator.js +1 -0
  123. package/dist/cjs/utils/prisma/enhaced-prisma-json-schema-generator.js.map +1 -0
  124. package/dist/cjs/utils/prisma/prisma-schema-parser.js +3 -0
  125. package/dist/cjs/utils/prisma/prisma-schema-parser.js.map +1 -0
  126. package/dist/cjs/utils/prisma/types.js +1 -0
  127. package/dist/cjs/utils/prisma/types.js.map +1 -0
  128. package/dist/cjs/utils/sheu.js +1 -0
  129. package/dist/cjs/utils/sheu.js.map +1 -0
  130. package/dist/cjs/utils/validate-dto.js +1 -17
  131. package/dist/cjs/utils/validate-schema.js +1 -15
  132. package/dist/esm/app.js +1 -0
  133. package/dist/esm/app.js.map +1 -0
  134. package/dist/esm/exports/auth/index.js +1 -0
  135. package/dist/esm/exports/controllers/index.js +1 -0
  136. package/dist/esm/exports/error-handler/index.js +1 -0
  137. package/dist/esm/exports/index.js +1 -0
  138. package/dist/esm/exports/middlewares/index.js +1 -0
  139. package/dist/esm/exports/prisma/index.js +1 -0
  140. package/dist/esm/exports/services/index.js +1 -0
  141. package/dist/esm/exports/utils/index.js +1 -0
  142. package/dist/esm/exports/validation/index.js +1 -0
  143. package/dist/esm/modules/auth/auth.controller.js +1 -0
  144. package/dist/esm/modules/auth/auth.router.js +1 -0
  145. package/dist/esm/modules/auth/auth.router.js.map +1 -0
  146. package/dist/esm/modules/auth/auth.service.js +1 -0
  147. package/dist/esm/modules/auth/auth.service.js.map +1 -0
  148. package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js +1 -0
  149. package/dist/esm/modules/base/base.controller.js +1 -0
  150. package/dist/esm/modules/base/base.controller.js.map +1 -0
  151. package/dist/esm/modules/base/base.middlewares.js +1 -0
  152. package/dist/esm/modules/base/base.middlewares.js.map +1 -0
  153. package/dist/esm/modules/base/base.router.js +1 -0
  154. package/dist/esm/modules/base/base.router.js.map +1 -0
  155. package/dist/esm/modules/base/base.service.js +1 -0
  156. package/dist/{es2020 → esm}/modules/base/base.service.js.map +1 -1
  157. package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js +1 -0
  158. package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js +1 -0
  159. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +1 -0
  160. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -0
  161. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +1 -0
  162. package/dist/esm/modules/email/email.service.js +1 -0
  163. package/dist/esm/modules/error-handler/error-handler.controller.js +4 -0
  164. package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -0
  165. package/dist/esm/modules/error-handler/utils/app-error.js +1 -0
  166. package/dist/esm/modules/error-handler/utils/catch-async.js +1 -0
  167. package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -0
  168. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +3 -0
  169. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -0
  170. package/dist/esm/modules/file-upload/file-upload.controller.js +1 -0
  171. package/dist/esm/modules/file-upload/file-upload.router.js +1 -0
  172. package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -0
  173. package/dist/esm/modules/file-upload/file-upload.service.js +1 -0
  174. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -0
  175. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -0
  176. package/dist/esm/modules/swagger/swagger.router.js +1 -0
  177. package/dist/esm/modules/swagger/swagger.router.js.map +1 -0
  178. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -0
  179. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -0
  180. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -0
  181. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -0
  182. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +1 -0
  183. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -0
  184. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +1 -0
  185. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -0
  186. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +1 -0
  187. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +1 -0
  188. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +1 -0
  189. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -0
  190. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +1 -0
  191. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -0
  192. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -0
  193. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -0
  194. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -0
  195. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
  196. package/dist/esm/package.json +3 -0
  197. package/dist/esm/server.js +5 -0
  198. package/dist/esm/server.js.map +1 -0
  199. package/dist/esm/types/arkos-config.js +1 -0
  200. package/dist/esm/types/arkos-config.js.map +1 -0
  201. package/dist/esm/types/auth.js +1 -0
  202. package/dist/esm/types/index.js +1 -0
  203. package/dist/esm/types/router-config.js +1 -0
  204. package/dist/esm/utils/arkos-env.js +1 -0
  205. package/dist/esm/utils/cli/build.js +5 -0
  206. package/dist/esm/utils/cli/build.js.map +1 -0
  207. package/dist/esm/utils/cli/dev.js +5 -0
  208. package/dist/esm/utils/cli/dev.js.map +1 -0
  209. package/dist/esm/utils/cli/generate.js +12 -0
  210. package/dist/{es2020 → esm}/utils/cli/generate.js.map +1 -1
  211. package/dist/esm/utils/cli/index.js +1 -0
  212. package/dist/esm/utils/cli/start.js +1 -0
  213. package/dist/esm/utils/cli/start.js.map +1 -0
  214. package/dist/esm/utils/cli/utils/cli.helpers.js +1 -0
  215. package/dist/esm/utils/cli/utils/cli.helpers.js.map +1 -0
  216. package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +21 -0
  217. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +12 -0
  218. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js +206 -0
  219. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +1 -0
  220. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +36 -0
  221. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +1 -0
  222. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js +18 -0
  223. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -0
  224. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js +15 -0
  225. package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
  226. package/dist/esm/utils/cli/utils/template-generators.js +2 -0
  227. package/dist/esm/utils/cli/utils/watermark-stamper.js +3 -0
  228. package/dist/esm/utils/cli/utils/watermark-stamper.js.map +1 -0
  229. package/dist/esm/utils/dotenv.helpers.js +1 -0
  230. package/dist/esm/utils/features/api.features.js +1 -0
  231. package/dist/esm/utils/features/api.features.js.map +1 -0
  232. package/dist/esm/utils/features/change-case.features.js +1 -0
  233. package/dist/esm/utils/features/port-and-host-allocator.js +1 -0
  234. package/dist/esm/utils/features/port-and-host-allocator.js.map +1 -0
  235. package/dist/esm/utils/helpers/api.features.helpers.js +1 -0
  236. package/dist/esm/utils/helpers/api.features.helpers.js.map +1 -0
  237. package/dist/esm/utils/helpers/change-case.helpers.js +1 -0
  238. package/dist/esm/utils/helpers/deepmerge.helper.js +1 -0
  239. package/dist/esm/utils/helpers/fs.helpers.js +1 -0
  240. package/dist/esm/utils/helpers/fs.helpers.js.map +1 -0
  241. package/dist/esm/utils/helpers/global.helpers.js +1 -0
  242. package/dist/esm/utils/helpers/global.helpers.js.map +1 -0
  243. package/dist/esm/utils/helpers/models.helpers.js +11 -0
  244. package/dist/esm/utils/helpers/models.helpers.js.map +1 -0
  245. package/dist/esm/utils/helpers/prisma.helpers.js +1 -0
  246. package/dist/esm/utils/helpers/prisma.helpers.js.map +1 -0
  247. package/dist/esm/utils/helpers/query-parser.helpers.js +1 -0
  248. package/dist/esm/utils/helpers/routers.helpers.js +1 -0
  249. package/dist/esm/utils/helpers/routers.helpers.js.map +1 -0
  250. package/dist/esm/utils/helpers/text.helpers.js +1 -0
  251. package/dist/esm/utils/prisma/enhaced-prisma-json-schema-generator.js +1 -0
  252. package/dist/esm/utils/prisma/enhaced-prisma-json-schema-generator.js.map +1 -0
  253. package/dist/esm/utils/prisma/prisma-schema-parser.js +3 -0
  254. package/dist/esm/utils/prisma/prisma-schema-parser.js.map +1 -0
  255. package/dist/esm/utils/prisma/types.js +1 -0
  256. package/dist/esm/utils/prisma/types.js.map +1 -0
  257. package/dist/esm/utils/sheu.js +1 -0
  258. package/dist/esm/utils/sheu.js.map +1 -0
  259. package/dist/esm/utils/validate-dto.js +1 -0
  260. package/dist/esm/utils/validate-schema.js +1 -0
  261. package/dist/types/modules/base/base.middlewares.d.ts +4 -4
  262. package/dist/types/modules/base/base.service.d.ts +1 -1
  263. package/dist/types/modules/base/utils/helpers/base.router.helpers.d.ts +4 -1
  264. package/dist/types/modules/error-handler/error-handler.controller.d.ts +1 -1
  265. package/dist/types/modules/error-handler/utils/catch-async.d.ts +1 -0
  266. package/dist/types/modules/error-handler/utils/error-handler.helpers.d.ts +4 -0
  267. package/dist/types/modules/file-upload/file-upload.router.d.ts +1 -1
  268. package/dist/types/modules/file-upload/utils/helpers/file-upload.helpers.d.ts +2 -1
  269. package/dist/types/modules/swagger/swagger.router.d.ts +1 -1
  270. package/dist/types/modules/swagger/utils/helpers/get-authentication-json-schema-paths.d.ts +3 -0
  271. package/dist/types/modules/swagger/utils/helpers/get-system-json-schema-paths.d.ts +2 -0
  272. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.d.ts +1 -0
  273. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.d.ts +2 -0
  274. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.d.ts +1 -0
  275. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.d.ts +3 -0
  276. package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.d.ts +3 -0
  277. package/dist/types/modules/swagger/utils/helpers/missing-json-schemas-generator.d.ts +34 -0
  278. package/dist/types/modules/swagger/utils/helpers/swagger.router.helpers.d.ts +7 -0
  279. package/dist/types/server.d.ts +3 -0
  280. package/dist/types/types/arkos-config.d.ts +10 -5
  281. package/dist/types/utils/cli/utils/cli.helpers.d.ts +1 -1
  282. package/dist/types/utils/cli/utils/watermark-stamper.d.ts +9 -0
  283. package/dist/types/utils/features/api.features.d.ts +1 -0
  284. package/dist/types/utils/features/port-and-host-allocator.d.ts +21 -0
  285. package/dist/types/utils/helpers/global.helpers.d.ts +6 -1
  286. package/dist/types/utils/helpers/models.helpers.d.ts +31 -5
  287. package/dist/types/utils/helpers/routers.helpers.d.ts +2 -0
  288. package/dist/types/utils/prisma/enhaced-prisma-json-schema-generator.d.ts +34 -0
  289. package/dist/types/utils/prisma/prisma-schema-parser.d.ts +18 -0
  290. package/dist/types/utils/prisma/types.d.ts +48 -0
  291. package/dist/types/utils/sheu.d.ts +70 -0
  292. package/package.json +40 -40
  293. package/dist/es2020/app.js +0 -1
  294. package/dist/es2020/app.js.map +0 -1
  295. package/dist/es2020/exports/auth/index.js +0 -2
  296. package/dist/es2020/exports/controllers/index.js +0 -4
  297. package/dist/es2020/exports/error-handler/index.js +0 -4
  298. package/dist/es2020/exports/index.js +0 -8
  299. package/dist/es2020/exports/middlewares/index.js +0 -2
  300. package/dist/es2020/exports/prisma/index.js +0 -3
  301. package/dist/es2020/exports/services/index.js +0 -9
  302. package/dist/es2020/exports/utils/index.js +0 -4
  303. package/dist/es2020/exports/validation/index.js +0 -4
  304. package/dist/es2020/modules/auth/auth.controller.js +0 -187
  305. package/dist/es2020/modules/auth/auth.router.js +0 -118
  306. package/dist/es2020/modules/auth/auth.router.js.map +0 -1
  307. package/dist/es2020/modules/auth/auth.service.js +0 -185
  308. package/dist/es2020/modules/auth/auth.service.js.map +0 -1
  309. package/dist/es2020/modules/auth/utils/helpers/auth.controller.helpers.js +0 -73
  310. package/dist/es2020/modules/base/base.controller.js +0 -151
  311. package/dist/es2020/modules/base/base.controller.js.map +0 -1
  312. package/dist/es2020/modules/base/base.middlewares.js +0 -81
  313. package/dist/es2020/modules/base/base.middlewares.js.map +0 -1
  314. package/dist/es2020/modules/base/base.router.js +0 -17
  315. package/dist/es2020/modules/base/base.router.js.map +0 -1
  316. package/dist/es2020/modules/base/base.service.js +0 -120
  317. package/dist/es2020/modules/base/utils/helpers/base.controller.helpers.js +0 -77
  318. package/dist/es2020/modules/base/utils/helpers/base.middlewares.helpers.js +0 -44
  319. package/dist/es2020/modules/base/utils/helpers/base.router.helpers.js +0 -161
  320. package/dist/es2020/modules/base/utils/helpers/base.router.helpers.js.map +0 -1
  321. package/dist/es2020/modules/base/utils/helpers/base.service.helpers.js +0 -165
  322. package/dist/es2020/modules/email/email.service.js +0 -97
  323. package/dist/es2020/modules/error-handler/error-handler.controller.js +0 -105
  324. package/dist/es2020/modules/error-handler/error-handler.controller.js.map +0 -1
  325. package/dist/es2020/modules/error-handler/utils/app-error.js +0 -15
  326. package/dist/es2020/modules/error-handler/utils/catch-async.js +0 -10
  327. package/dist/es2020/modules/error-handler/utils/catch-async.js.map +0 -1
  328. package/dist/es2020/modules/error-handler/utils/error-handler.helpers.js +0 -155
  329. package/dist/es2020/modules/error-handler/utils/error-handler.helpers.js.map +0 -1
  330. package/dist/es2020/modules/file-upload/file-upload.controller.js +0 -266
  331. package/dist/es2020/modules/file-upload/file-upload.router.js +0 -50
  332. package/dist/es2020/modules/file-upload/file-upload.router.js.map +0 -1
  333. package/dist/es2020/modules/file-upload/file-upload.service.js +0 -314
  334. package/dist/es2020/modules/file-upload/utils/helpers/file-upload.helpers.js +0 -81
  335. package/dist/es2020/modules/file-upload/utils/helpers/file-upload.helpers.js.map +0 -1
  336. package/dist/es2020/modules/swagger/swagger.router.js +0 -135
  337. package/dist/es2020/modules/swagger/swagger.router.js.map +0 -1
  338. package/dist/es2020/server.js +0 -3
  339. package/dist/es2020/server.js.map +0 -1
  340. package/dist/es2020/types/arkos-config.js +0 -2
  341. package/dist/es2020/types/arkos-config.js.map +0 -1
  342. package/dist/es2020/types/auth.js +0 -2
  343. package/dist/es2020/types/index.js +0 -8
  344. package/dist/es2020/types/router-config.js +0 -2
  345. package/dist/es2020/utils/arkos-env.js +0 -7
  346. package/dist/es2020/utils/cli/build.js +0 -223
  347. package/dist/es2020/utils/cli/build.js.map +0 -1
  348. package/dist/es2020/utils/cli/dev.js +0 -264
  349. package/dist/es2020/utils/cli/dev.js.map +0 -1
  350. package/dist/es2020/utils/cli/generate.js +0 -183
  351. package/dist/es2020/utils/cli/index.js +0 -74
  352. package/dist/es2020/utils/cli/start.js +0 -86
  353. package/dist/es2020/utils/cli/start.js.map +0 -1
  354. package/dist/es2020/utils/cli/utils/cli.helpers.js +0 -18
  355. package/dist/es2020/utils/cli/utils/cli.helpers.js.map +0 -1
  356. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +0 -33
  357. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -18
  358. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-middlewares.js +0 -265
  359. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +0 -1
  360. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +0 -55
  361. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -1
  362. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-router-template.js +0 -32
  363. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -1
  364. package/dist/es2020/utils/cli/utils/template-generator/templates/generate-service-template.js +0 -32
  365. package/dist/es2020/utils/cli/utils/template-generators.js +0 -25
  366. package/dist/es2020/utils/dotenv.helpers.js +0 -37
  367. package/dist/es2020/utils/features/api.features.js +0 -154
  368. package/dist/es2020/utils/features/api.features.js.map +0 -1
  369. package/dist/es2020/utils/features/change-case.features.js +0 -31
  370. package/dist/es2020/utils/helpers/api.features.helpers.js +0 -103
  371. package/dist/es2020/utils/helpers/api.features.helpers.js.map +0 -1
  372. package/dist/es2020/utils/helpers/change-case.helpers.js +0 -161
  373. package/dist/es2020/utils/helpers/deepmerge.helper.js +0 -113
  374. package/dist/es2020/utils/helpers/fs.helpers.js +0 -45
  375. package/dist/es2020/utils/helpers/fs.helpers.js.map +0 -1
  376. package/dist/es2020/utils/helpers/global.helpers.js +0 -4
  377. package/dist/es2020/utils/helpers/global.helpers.js.map +0 -1
  378. package/dist/es2020/utils/helpers/models.helpers.js +0 -276
  379. package/dist/es2020/utils/helpers/models.helpers.js.map +0 -1
  380. package/dist/es2020/utils/helpers/prisma.helpers.js +0 -41
  381. package/dist/es2020/utils/helpers/prisma.helpers.js.map +0 -1
  382. package/dist/es2020/utils/helpers/query-parser.helpers.js +0 -40
  383. package/dist/es2020/utils/helpers/text.helpers.js +0 -22
  384. package/dist/es2020/utils/validate-dto.js +0 -11
  385. package/dist/es2020/utils/validate-schema.js +0 -9
  386. /package/dist/{es2020 → esm}/exports/auth/index.js.map +0 -0
  387. /package/dist/{es2020 → esm}/exports/controllers/index.js.map +0 -0
  388. /package/dist/{es2020 → esm}/exports/error-handler/index.js.map +0 -0
  389. /package/dist/{es2020 → esm}/exports/index.js.map +0 -0
  390. /package/dist/{es2020 → esm}/exports/middlewares/index.js.map +0 -0
  391. /package/dist/{es2020 → esm}/exports/prisma/index.js.map +0 -0
  392. /package/dist/{es2020 → esm}/exports/services/index.js.map +0 -0
  393. /package/dist/{es2020 → esm}/exports/utils/index.js.map +0 -0
  394. /package/dist/{es2020 → esm}/exports/validation/index.js.map +0 -0
  395. /package/dist/{es2020 → esm}/modules/auth/auth.controller.js.map +0 -0
  396. /package/dist/{es2020 → esm}/modules/auth/utils/helpers/auth.controller.helpers.js.map +0 -0
  397. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.controller.helpers.js.map +0 -0
  398. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.middlewares.helpers.js.map +0 -0
  399. /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.service.helpers.js.map +0 -0
  400. /package/dist/{es2020 → esm}/modules/email/email.service.js.map +0 -0
  401. /package/dist/{es2020 → esm}/modules/error-handler/utils/app-error.js.map +0 -0
  402. /package/dist/{es2020 → esm}/modules/file-upload/file-upload.controller.js.map +0 -0
  403. /package/dist/{es2020 → esm}/modules/file-upload/file-upload.service.js.map +0 -0
  404. /package/dist/{es2020 → esm}/paths.js +0 -0
  405. /package/dist/{es2020 → esm}/paths.js.map +0 -0
  406. /package/dist/{es2020 → esm}/types/auth.js.map +0 -0
  407. /package/dist/{es2020 → esm}/types/index.js.map +0 -0
  408. /package/dist/{es2020 → esm}/types/router-config.js.map +0 -0
  409. /package/dist/{es2020 → esm}/utils/arkos-env.js.map +0 -0
  410. /package/dist/{es2020 → esm}/utils/cli/index.js.map +0 -0
  411. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -0
  412. /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -0
  413. /package/dist/{es2020 → esm}/utils/cli/utils/template-generators.js.map +0 -0
  414. /package/dist/{es2020 → esm}/utils/dotenv.helpers.js.map +0 -0
  415. /package/dist/{es2020 → esm}/utils/features/change-case.features.js.map +0 -0
  416. /package/dist/{es2020 → esm}/utils/helpers/change-case.helpers.js.map +0 -0
  417. /package/dist/{es2020 → esm}/utils/helpers/deepmerge.helper.js.map +0 -0
  418. /package/dist/{es2020 → esm}/utils/helpers/query-parser.helpers.js.map +0 -0
  419. /package/dist/{es2020 → esm}/utils/helpers/text.helpers.js.map +0 -0
  420. /package/dist/{es2020 → esm}/utils/validate-dto.js.map +0 -0
  421. /package/dist/{es2020 → esm}/utils/validate-schema.js.map +0 -0
@@ -1,141 +1 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getSwaggerRouter = getSwaggerRouter;
7
- const express_1 = require("express");
8
- const swagger_ui_express_1 = __importDefault(require("swagger-ui-express"));
9
- const swagger_jsdoc_1 = __importDefault(require("swagger-jsdoc"));
10
- const deepmerge_helper_1 = __importDefault(require("../../utils/helpers/deepmerge.helper"));
11
- const swaggerRouter = (0, express_1.Router)();
12
- function generateSchemasByMode(swaggerConfig) {
13
- const schemas = {};
14
- switch (swaggerConfig.mode) {
15
- case "prisma":
16
- break;
17
- case "class-validator":
18
- break;
19
- case "zod":
20
- break;
21
- case "json-schema":
22
- default:
23
- break;
24
- }
25
- return schemas;
26
- }
27
- function getSwaggerRouter(arkosConfig) {
28
- const defaultSwaggerConfig = {
29
- endpoint: "/docs",
30
- mode: "json-schema",
31
- options: {
32
- definition: {
33
- openapi: "3.0.0",
34
- info: {
35
- title: "Generated By Arkos.js",
36
- version: "1.0.0",
37
- description: "This API was automatically generated by Arkos.js read more about at www.arkosjs.com",
38
- },
39
- servers: [
40
- {
41
- url: `http://${arkosConfig.host}:${arkosConfig.port}`,
42
- description: "Local server",
43
- },
44
- ],
45
- components: {
46
- schemas: {},
47
- securitySchemes: {
48
- BearerAuth: {
49
- type: "http",
50
- scheme: "bearer",
51
- bearerFormat: "JWT",
52
- },
53
- ApiKeyAuth: {
54
- type: "apiKey",
55
- in: "header",
56
- name: "X-API-Key",
57
- },
58
- },
59
- },
60
- security: [],
61
- },
62
- apis: [
63
- "./src/routers/*.router.{ts,js}",
64
- "./src/modules/**/*.router.{ts,js}",
65
- ],
66
- swaggerUiOptions: {
67
- explorer: true,
68
- customCss: `
69
- .swagger-ui .topbar { display: none; }
70
- .swagger-ui .info { margin: 20px 0; }
71
- `,
72
- swaggerOptions: {
73
- filter: true,
74
- displayRequestDuration: true,
75
- showExtensions: true,
76
- showCommonExtensions: true,
77
- },
78
- },
79
- deepLinking: true,
80
- tryItOutEnabled: true,
81
- persistAuthorization: false,
82
- },
83
- };
84
- const swaggerConfigs = (0, deepmerge_helper_1.default)(defaultSwaggerConfig, arkosConfig.swagger || {});
85
- const modeSchemas = generateSchemasByMode(swaggerConfigs);
86
- if (swaggerConfigs.options.definition.components?.schemas) {
87
- swaggerConfigs.options.definition.components.schemas = {
88
- ...swaggerConfigs.options.definition.components.schemas,
89
- ...modeSchemas,
90
- };
91
- }
92
- const swaggerSpecification = (0, swagger_jsdoc_1.default)({
93
- definition: swaggerConfigs.options
94
- .definition,
95
- apis: swaggerConfigs.options.apis || [],
96
- });
97
- const swaggerUiOptions = {
98
- explorer: swaggerConfigs.options.swaggerUiOptions?.explorer ?? true,
99
- customCss: swaggerConfigs.options.swaggerUiOptions?.customCss,
100
- customSiteTitle: swaggerConfigs.options.swaggerUiOptions?.customSiteTitle ||
101
- "API Documentation",
102
- customfavIcon: swaggerConfigs.options.swaggerUiOptions?.customfavIcon,
103
- swaggerOptions: {
104
- filter: swaggerConfigs.options.swaggerUiOptions?.swaggerOptions?.filter ?? true,
105
- displayRequestDuration: swaggerConfigs.options.swaggerUiOptions?.swaggerOptions
106
- ?.displayRequestDuration ?? true,
107
- deepLinking: swaggerConfigs.options.deepLinking ?? true,
108
- tryItOutEnabled: swaggerConfigs.options.tryItOutEnabled ?? true,
109
- persistAuthorization: swaggerConfigs.options.persistAuthorization ?? false,
110
- showExtensions: swaggerConfigs.options.swaggerUiOptions?.swaggerOptions
111
- ?.showExtensions ?? true,
112
- showCommonExtensions: swaggerConfigs.options.swaggerUiOptions?.swaggerOptions
113
- ?.showCommonExtensions ?? true,
114
- ...swaggerConfigs.options.swaggerUiOptions?.swaggerOptions,
115
- },
116
- };
117
- swaggerRouter.use(swaggerConfigs.endpoint, swagger_ui_express_1.default.serve);
118
- swaggerRouter.get(swaggerConfigs.endpoint, swagger_ui_express_1.default.setup(swaggerSpecification, swaggerUiOptions));
119
- swaggerRouter.get(`${swaggerConfigs.endpoint}/json`, (req, res) => {
120
- res.setHeader("Content-Type", "application/json");
121
- res.json(swaggerSpecification);
122
- });
123
- swaggerRouter.get(`${swaggerConfigs.endpoint}/yaml`, (req, res) => {
124
- const yaml = require("js-yaml");
125
- res.setHeader("Content-Type", "text/yaml");
126
- res.send(yaml.dump(swaggerSpecification));
127
- });
128
- swaggerRouter.get(`${swaggerConfigs.endpoint}/health`, (req, res) => {
129
- res.json({
130
- status: "ok",
131
- swagger: {
132
- version: swaggerConfigs.options.definition.openapi,
133
- title: swaggerConfigs.options.definition.info?.title,
134
- endpoint: swaggerConfigs.endpoint,
135
- mode: swaggerConfigs.mode,
136
- },
137
- });
138
- });
139
- return swaggerRouter;
140
- }
141
- //# sourceMappingURL=swagger.router.js.map
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSwaggerRouter=getSwaggerRouter;const express_1=require("express"),swagger_jsdoc_1=__importDefault(require("swagger-jsdoc")),deepmerge_helper_1=__importDefault(require("../../utils/helpers/deepmerge.helper")),swagger_router_helpers_1=require("./utils/helpers/swagger.router.helpers"),text_helpers_1=require("../../utils/helpers/text.helpers"),missing_json_schemas_generator_1=__importDefault(require("./utils/helpers/missing-json-schemas-generator")),swaggerRouter=(0,express_1.Router)();async function getSwaggerRouter(e){let t=await(0,swagger_router_helpers_1.getOpenAPIJsonSchemasByConfigMode)(e);const s=await(0,swagger_router_helpers_1.generatePathsForModels)(e);t={...t,...await missing_json_schemas_generator_1.default.generateMissingJsonSchemas(s,t,e)};const o={endpoint:"/docs",mode:"prisma",strict:!1,options:{definition:{openapi:"3.0.0",info:{title:"Powered By Arkos.js",version:"1.0.0",description:"This API was automatically generated by Arkos.js, read more about at www.arkosjs.com"},servers:[{url:`http://${e.host}:${e.port}`,description:`Local ${(0,text_helpers_1.capitalize)(process.env.NODE_ENV||"development")} Server`}],paths:s,components:{schemas:t||{},securitySchemes:{BearerAuth:{type:"http",scheme:"bearer",bearerFormat:"JWT"}}},security:[]},apis:["./src/routers/*.router.{ts,js}","./src/modules/**/*.router.{ts,js}"],deepLinking:!0,tryItOutEnabled:!0,persistAuthorization:!1},scalarApiReferenceConfiguration:{theme:"deepSpace",darkMode:!0,layout:"modern",showSidebar:!0,hideDownloadButton:!1,metaData:{title:"Arkos.js API Documentation",description:"API documentation generated by Arkos.js"},pageTitle:"Arkos.js API Documentation"}},r=(0,deepmerge_helper_1.default)(o||{},e.swagger||{}),{definition:a,...n}=r?.options,i=(0,swagger_jsdoc_1.default)({definition:a,...n}),c=await new Function("path","return import(path)")("@scalar/express-api-reference");return swaggerRouter.use(r.endpoint,c.apiReference({content:i,...r?.scalarApiReferenceConfiguration})),swaggerRouter}
@@ -1 +1 @@
1
- {"version":3,"file":"swagger.router.js","sourceRoot":"","sources":["../../../../src/modules/swagger/swagger.router.ts"],"names":[],"mappings":"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","sourcesContent":["import { Router } from \"express\";\nimport swaggerUi from \"swagger-ui-express\";\nimport swaggerJsdoc from \"swagger-jsdoc\";\nimport { ArkosConfig } from \"../../types/arkos-config\";\nimport deepmerge from \"../../utils/helpers/deepmerge.helper\";\n\nconst swaggerRouter = Router();\n\n// Helper function to generate schemas based on mode\nfunction generateSchemasByMode(swaggerConfig: ArkosConfig[\"swagger\"]) {\n const schemas: Record<string, any> = {};\n\n switch (swaggerConfig!.mode) {\n case \"prisma\":\n // In a real implementation, you'd generate schemas from Prisma models\n // This would require additional logic to parse Prisma schema files\n break;\n\n case \"class-validator\":\n // Generate schemas from class-validator decorators\n // This would require reflection or build-time generation\n break;\n\n case \"zod\":\n // Generate schemas from Zod definitions\n // This could be done through custom transformations\n break;\n\n case \"json-schema\":\n default:\n // Use manually defined JSON schemas\n // This is the default behavior with JSDoc comments\n break;\n }\n\n return schemas;\n}\n\nexport function getSwaggerRouter(arkosConfig: ArkosConfig): Router {\n // Default swagger configuration\n const defaultSwaggerConfig: ArkosConfig[\"swagger\"] = {\n endpoint: \"/docs\",\n mode: \"json-schema\",\n options: {\n definition: {\n openapi: \"3.0.0\",\n info: {\n title: \"Generated By Arkos.js\",\n version: \"1.0.0\",\n description:\n \"This API was automatically generated by Arkos.js read more about at www.arkosjs.com\",\n },\n servers: [\n {\n url: `http://${arkosConfig.host}:${arkosConfig.port}`,\n description: \"Local server\",\n },\n ],\n components: {\n schemas: {},\n securitySchemes: {\n BearerAuth: {\n type: \"http\",\n scheme: \"bearer\",\n bearerFormat: \"JWT\",\n },\n ApiKeyAuth: {\n type: \"apiKey\",\n in: \"header\",\n name: \"X-API-Key\",\n },\n },\n },\n security: [],\n },\n apis: [\n \"./src/routers/*.router.{ts,js}\",\n \"./src/modules/**/*.router.{ts,js}\",\n ],\n swaggerUiOptions: {\n explorer: true,\n customCss: `\n .swagger-ui .topbar { display: none; }\n .swagger-ui .info { margin: 20px 0; }\n `,\n swaggerOptions: {\n filter: true,\n displayRequestDuration: true,\n showExtensions: true,\n showCommonExtensions: true,\n },\n },\n deepLinking: true,\n tryItOutEnabled: true,\n persistAuthorization: false,\n },\n };\n\n // Merge default config with user config\n const swaggerConfigs = deepmerge(\n defaultSwaggerConfig,\n arkosConfig.swagger || {}\n );\n\n // Generate additional schemas based on mode\n const modeSchemas = generateSchemasByMode(swaggerConfigs);\n\n // Merge mode-generated schemas with existing schemas\n if (swaggerConfigs.options.definition.components?.schemas) {\n swaggerConfigs.options.definition.components.schemas = {\n ...swaggerConfigs.options.definition.components.schemas,\n ...modeSchemas,\n };\n }\n\n // Generate OpenAPI specification using swagger-jsdoc\n const swaggerSpecification = swaggerJsdoc({\n definition: swaggerConfigs.options\n .definition as swaggerJsdoc.SwaggerDefinition,\n apis: swaggerConfigs.options.apis || [],\n });\n\n // Setup Swagger UI options\n const swaggerUiOptions = {\n explorer: swaggerConfigs.options.swaggerUiOptions?.explorer ?? true,\n customCss: swaggerConfigs.options.swaggerUiOptions?.customCss,\n customSiteTitle:\n swaggerConfigs.options.swaggerUiOptions?.customSiteTitle ||\n \"API Documentation\",\n customfavIcon: swaggerConfigs.options.swaggerUiOptions?.customfavIcon,\n swaggerOptions: {\n filter:\n swaggerConfigs.options.swaggerUiOptions?.swaggerOptions?.filter ?? true,\n displayRequestDuration:\n swaggerConfigs.options.swaggerUiOptions?.swaggerOptions\n ?.displayRequestDuration ?? true,\n deepLinking: swaggerConfigs.options.deepLinking ?? true,\n tryItOutEnabled: swaggerConfigs.options.tryItOutEnabled ?? true,\n persistAuthorization:\n swaggerConfigs.options.persistAuthorization ?? false,\n showExtensions:\n swaggerConfigs.options.swaggerUiOptions?.swaggerOptions\n ?.showExtensions ?? true,\n showCommonExtensions:\n swaggerConfigs.options.swaggerUiOptions?.swaggerOptions\n ?.showCommonExtensions ?? true,\n ...swaggerConfigs.options.swaggerUiOptions?.swaggerOptions,\n },\n };\n\n // Serve Swagger UI static assets\n swaggerRouter.use(swaggerConfigs.endpoint!, swaggerUi.serve);\n\n // Serve Swagger documentation\n swaggerRouter.get(\n swaggerConfigs.endpoint!,\n swaggerUi.setup(swaggerSpecification, swaggerUiOptions)\n );\n\n // Serve raw OpenAPI spec as JSON\n swaggerRouter.get(`${swaggerConfigs.endpoint}/json`, (req, res) => {\n res.setHeader(\"Content-Type\", \"application/json\");\n res.json(swaggerSpecification);\n });\n\n // Serve raw OpenAPI spec as YAML (optional)\n swaggerRouter.get(`${swaggerConfigs.endpoint}/yaml`, (req, res) => {\n const yaml = require(\"js-yaml\");\n res.setHeader(\"Content-Type\", \"text/yaml\");\n res.send(yaml.dump(swaggerSpecification));\n });\n\n // Health check endpoint for Swagger itself\n swaggerRouter.get(`${swaggerConfigs.endpoint}/health`, (req, res) => {\n res.json({\n status: \"ok\",\n swagger: {\n version: swaggerConfigs.options.definition.openapi,\n title: swaggerConfigs.options.definition.info?.title,\n endpoint: swaggerConfigs.endpoint,\n mode: swaggerConfigs.mode,\n },\n });\n });\n\n return swaggerRouter;\n}\n"]}
1
+ {"version":3,"file":"swagger.router.js","sourceRoot":"","sources":["../../../../src/modules/swagger/swagger.router.ts"],"names":[],"mappings":";;;;;AAcA,4CA+FC;AA7GD,qCAAiC;AAEjC,kEAAyC;AAEzC,4FAA6D;AAC7D,mFAGgD;AAChD,mEAA8D;AAC9D,oHAAwF;AAExF,MAAM,aAAa,GAAG,IAAA,gBAAM,GAAE,CAAC;AAExB,KAAK,UAAU,gBAAgB,CACpC,WAAwB;IAExB,IAAI,kBAAkB,GAAG,MAAM,IAAA,0DAAiC,EAAC,WAAW,CAAC,CAAC;IAC9E,MAAM,kBAAkB,GAAG,MAAM,IAAA,+CAAsB,EAAC,WAAW,CAAC,CAAC;IACrE,kBAAkB,GAAG;QACnB,GAAG,kBAAkB;QACrB,GAAG,CAAC,MAAM,wCAA0B,CAAC,0BAA0B,CAC7D,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,CACZ,CAAC;KACH,CAAC;IAEF,MAAM,oBAAoB,GAA2B;QACnD,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,UAAU,EAAE;gBACV,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE;oBACJ,KAAK,EAAE,qBAAqB;oBAC5B,OAAO,EAAE,OAAO;oBAChB,WAAW,EACT,sFAAsF;iBACzF;gBACD,OAAO,EAAE;oBACP;wBACE,GAAG,EAAE,UAAU,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE;wBACrD,WAAW,EAAE,SAAS,IAAA,yBAAU,EAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC,SAAS;qBACjF;iBACF;gBACD,KAAK,EAAE,kBAAkB;gBACzB,UAAU,EAAE;oBACV,OAAO,EAAE,kBAAkB,IAAI,EAAE;oBACjC,eAAe,EAAE;wBACf,UAAU,EAAE;4BACV,IAAI,EAAE,MAAM;4BACZ,MAAM,EAAE,QAAQ;4BAChB,YAAY,EAAE,KAAK;yBACpB;qBACF;iBACF;gBACD,QAAQ,EAAE,EAAE;aACb;YACD,IAAI,EAAE;gBACJ,gCAAgC;gBAChC,mCAAmC;aACpC;YACD,WAAW,EAAE,IAAI;YACjB,eAAe,EAAE,IAAI;YACrB,oBAAoB,EAAE,KAAK;SAC5B;QACD,+BAA+B,EAAE;YAC/B,KAAK,EAAE,WAAW;YAClB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,IAAI;YACjB,kBAAkB,EAAE,KAAK;YACzB,QAAQ,EAAE;gBACR,KAAK,EAAE,4BAA4B;gBACnC,WAAW,EAAE,yCAAyC;aACvD;YACD,SAAS,EAAE,4BAA4B;SACxC;KACF,CAAC;IAGF,MAAM,cAAc,GAAG,IAAA,0BAAS,EAC9B,oBAAoB,IAAI,EAAE,EAC1B,WAAW,CAAC,OAAO,IAAI,EAAE,CACA,CAAC;IAE5B,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,GAAG,cAAc,EAAE,OAAQ,CAAC;IAG5D,MAAM,oBAAoB,GAAG,IAAA,uBAAY,EAAC;QACxC,UAAU,EAAE,UAA4C;QACxD,GAAG,OAAO;KACX,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,+BAA+B,CAAC,CAAC;IAG/D,aAAa,CAAC,GAAG,CACf,cAAe,CAAC,QAAS,EACzB,MAAM,CAAC,YAAY,CAAC;QAClB,OAAO,EAAE,oBAAoB;QAC7B,GAAG,cAAc,EAAE,+BAA+B;KACnD,CAAC,CACH,CAAC;IAEF,OAAO,aAAa,CAAC;AACvB,CAAC","sourcesContent":["import { Router } from \"express\";\n// import * as scalar from \"@scalar/express-api-reference\";\nimport swaggerJsdoc from \"swagger-jsdoc\";\nimport { ArkosConfig } from \"../../types/arkos-config\";\nimport deepmerge from \"../../utils/helpers/deepmerge.helper\";\nimport {\n generatePathsForModels,\n getOpenAPIJsonSchemasByConfigMode,\n} from \"./utils/helpers/swagger.router.helpers\";\nimport { capitalize } from \"../../utils/helpers/text.helpers\";\nimport missingJsonSchemaGenerator from \"./utils/helpers/missing-json-schemas-generator\";\n\nconst swaggerRouter = Router();\n\nexport async function getSwaggerRouter(\n arkosConfig: ArkosConfig\n): Promise<Router> {\n let defaultJsonSchemas = await getOpenAPIJsonSchemasByConfigMode(arkosConfig);\n const defaultModelsPaths = await generatePathsForModels(arkosConfig);\n defaultJsonSchemas = {\n ...defaultJsonSchemas,\n ...(await missingJsonSchemaGenerator.generateMissingJsonSchemas(\n defaultModelsPaths,\n defaultJsonSchemas,\n arkosConfig\n )),\n };\n\n const defaultSwaggerConfig: ArkosConfig[\"swagger\"] = {\n endpoint: \"/docs\",\n mode: \"prisma\",\n strict: false,\n options: {\n definition: {\n openapi: \"3.0.0\",\n info: {\n title: \"Powered By Arkos.js\",\n version: \"1.0.0\",\n description:\n \"This API was automatically generated by Arkos.js, read more about at www.arkosjs.com\",\n },\n servers: [\n {\n url: `http://${arkosConfig.host}:${arkosConfig.port}`,\n description: `Local ${capitalize(process.env.NODE_ENV || \"development\")} Server`,\n },\n ],\n paths: defaultModelsPaths,\n components: {\n schemas: defaultJsonSchemas || {},\n securitySchemes: {\n BearerAuth: {\n type: \"http\",\n scheme: \"bearer\",\n bearerFormat: \"JWT\",\n },\n },\n },\n security: [],\n },\n apis: [\n \"./src/routers/*.router.{ts,js}\",\n \"./src/modules/**/*.router.{ts,js}\",\n ],\n deepLinking: true,\n tryItOutEnabled: true,\n persistAuthorization: false,\n },\n scalarApiReferenceConfiguration: {\n theme: \"deepSpace\",\n darkMode: true,\n layout: \"modern\",\n showSidebar: true,\n hideDownloadButton: false,\n metaData: {\n title: \"Arkos.js API Documentation\",\n description: \"API documentation generated by Arkos.js\",\n },\n pageTitle: \"Arkos.js API Documentation\",\n },\n };\n\n // Merge default config with user config\n const swaggerConfigs = deepmerge(\n defaultSwaggerConfig || {},\n arkosConfig.swagger || {}\n ) as ArkosConfig[\"swagger\"];\n\n const { definition, ...options } = swaggerConfigs?.options!;\n\n // Generate OpenAPI specification using swagger-jsdoc\n const swaggerSpecification = swaggerJsdoc({\n definition: definition as swaggerJsdoc.SwaggerDefinition,\n ...options,\n });\n\n const importFn = new Function(\"path\", \"return import(path)\");\n const scalar = await importFn(\"@scalar/express-api-reference\");\n\n // Serve Scalar API documentation\n swaggerRouter.use(\n swaggerConfigs!.endpoint!,\n scalar.apiReference({\n content: swaggerSpecification,\n ...swaggerConfigs?.scalarApiReferenceConfiguration,\n })\n );\n\n return swaggerRouter;\n}\n"]}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAuthenticationJsonSchemaPaths=getAuthenticationJsonSchemaPaths;const swagger_router_helpers_1=require("./swagger.router.helpers"),models_helpers_1=require("../../../../utils/helpers/models.helpers");async function getAuthenticationJsonSchemaPaths(s){const e={},t=async p=>{const r=s.swagger?.mode,d=s.swagger?.strict;if(!r)return"prisma";if(d)return r;const l=p;return await(0,models_helpers_1.localValidatorFileExists)(l,"user",s)?r:"prisma"};if(!s.swagger?.mode)return e;const a=await t("login");e["/api/auth/login"]={post:{tags:["Authentication"],summary:"Login to the system",description:"Authenticates a user and returns an access token",operationId:"login",requestBody:{description:"User credentials",required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)("Login",a)}}}},responses:{200:{description:"Login successful",content:{"application/json":{schema:{type:"object",properties:{accessToken:{type:"string",description:"JWT access token"}}}}}},400:{description:"Invalid input data"},401:{description:"Invalid credentials"}}}},e["/api/auth/logout"]={delete:{tags:["Authentication"],summary:"Logout from the system",description:"Invalidates the current user's JWT token",operationId:"logout",security:[{BearerAuth:[]}],responses:{204:{description:"Logout successful"},401:{description:"Authentication required"}}}};const n=await t("signup"),i=await t("user");e["/api/auth/signup"]={post:{tags:["Authentication"],summary:"Register a new user",description:"Creates a new user account",operationId:"signup",requestBody:{description:"User registration data",required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)("Signup",n)}}}},responses:{201:{description:"User created successfully",content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)("User",i)}}}},400:{description:"Invalid input data"},409:{description:"User already exists"}}}};const o=await t("updatePassword");e["/api/auth/update-password"]={post:{tags:["Authentication"],summary:"Update user password",description:"Changes the password for the authenticated user",operationId:"updatePassword",security:[{BearerAuth:[]}],requestBody:{description:"Current and new password",required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)("UpdatePassword",o)}}}},responses:{200:{description:"Password updated successfully",content:{"application/json":{schema:{type:"object",properties:{status:{type:"string",example:"success"},message:{type:"string",example:"Password updated successfully!"}}}}}},400:{description:"Invalid input data or current password incorrect"},401:{description:"Authentication required"}}}};const c=await t("getMe");e["/api/users/me"]={get:{tags:["Authentication"],summary:"Get current user information",description:"Retrieves information about the currently authenticated user",operationId:"getMe",security:[{BearerAuth:[]}],responses:{200:{description:"User information retrieved successfully",content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)("GetMe",c)}}}},401:{description:"Authentication required"}}}};const u=await t("updateMe");return e["/api/users/me"]||(e["/api/users/me"]={}),e["/api/users/me"].patch={tags:["Authentication"],summary:"Update current user information",description:"Updates information for the currently authenticated user",operationId:"updateMe",security:[{BearerAuth:[]}],requestBody:{description:"User data to update",required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)("UpdateMe",u)}}}},responses:{200:{description:"User updated successfully",content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)("User",i)}}}},400:{description:"Invalid input data"},401:{description:"Authentication required"}}},e["/api/users/me"]||(e["/api/users/me"]={}),e["/api/users/me"].delete={tags:["Authentication"],summary:"Delete current user account",description:"Marks the current user's account as deleted",operationId:"deleteMe",security:[{BearerAuth:[]}],responses:{200:{description:"Account deleted successfully",content:{"application/json":{schema:{type:"object",properties:{message:{type:"string",example:"Account deleted successfully"}}}}}},401:{description:"Authentication required"}}},e}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-authentication-json-schema-paths.js","sourceRoot":"","sources":["../../../../../../src/modules/swagger/utils/helpers/get-authentication-json-schema-paths.ts"],"names":[],"mappings":"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","sourcesContent":["import { OpenAPIV3 } from \"openapi-types\";\nimport { getSchemaRef } from \"./swagger.router.helpers\";\nimport { ArkosConfig } from \"../../../../exports\";\nimport { localValidatorFileExists } from \"../../../../utils/helpers/models.helpers\";\n\nexport async function getAuthenticationJsonSchemaPaths(\n arkosConfig: ArkosConfig\n) {\n const paths: OpenAPIV3.PathsObject = {};\n\n // Helper function to determine the correct mode for schema ref\n const getSchemaMode = async (\n action: string\n ): Promise<\"prisma\" | \"zod\" | \"class-validator\"> => {\n const swaggerMode = arkosConfig.swagger?.mode;\n const isStrict = arkosConfig.swagger?.strict;\n\n if (!swaggerMode) return \"prisma\";\n\n if (isStrict) {\n return swaggerMode;\n }\n\n const actionKey = action as any;\n // For auth endpoints, we don't have a specific model, so we use \"user\" as the model name\n const localFileExists = await localValidatorFileExists(\n actionKey,\n \"user\",\n arkosConfig\n );\n\n if (!localFileExists) {\n return \"prisma\";\n }\n\n return swaggerMode;\n };\n\n if (!arkosConfig.swagger?.mode) return paths;\n\n // Add login endpoint\n const loginMode = await getSchemaMode(\"login\");\n paths[\"/api/auth/login\"] = {\n post: {\n tags: [\"Authentication\"],\n summary: \"Login to the system\",\n description: \"Authenticates a user and returns an access token\",\n operationId: \"login\",\n requestBody: {\n description: \"User credentials\",\n required: true,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(\"Login\", loginMode),\n },\n },\n },\n },\n responses: {\n \"200\": {\n description: \"Login successful\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n accessToken: {\n type: \"string\",\n description: \"JWT access token\",\n },\n },\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data\",\n },\n \"401\": {\n description: \"Invalid credentials\",\n },\n },\n },\n };\n\n // Add logout endpoint\n paths[\"/api/auth/logout\"] = {\n delete: {\n tags: [\"Authentication\"],\n summary: \"Logout from the system\",\n description: \"Invalidates the current user's JWT token\",\n operationId: \"logout\",\n security: [{ BearerAuth: [] }],\n responses: {\n \"204\": {\n description: \"Logout successful\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n },\n },\n };\n\n // Add signup endpoint\n const signupMode = await getSchemaMode(\"signup\");\n const userMode = await getSchemaMode(\"user\");\n paths[\"/api/auth/signup\"] = {\n post: {\n tags: [\"Authentication\"],\n summary: \"Register a new user\",\n description: \"Creates a new user account\",\n operationId: \"signup\",\n requestBody: {\n description: \"User registration data\",\n required: true,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(\"Signup\", signupMode),\n },\n },\n },\n },\n responses: {\n \"201\": {\n description: \"User created successfully\",\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(\"User\", userMode),\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data\",\n },\n \"409\": {\n description: \"User already exists\",\n },\n },\n },\n };\n\n // Add update password endpoint\n const updatePasswordMode = await getSchemaMode(\"updatePassword\");\n paths[\"/api/auth/update-password\"] = {\n post: {\n tags: [\"Authentication\"],\n summary: \"Update user password\",\n description: \"Changes the password for the authenticated user\",\n operationId: \"updatePassword\",\n security: [{ BearerAuth: [] }],\n requestBody: {\n description: \"Current and new password\",\n required: true,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(\"UpdatePassword\", updatePasswordMode),\n },\n },\n },\n },\n responses: {\n \"200\": {\n description: \"Password updated successfully\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n status: {\n type: \"string\",\n example: \"success\",\n },\n message: {\n type: \"string\",\n example: \"Password updated successfully!\",\n },\n },\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data or current password incorrect\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n },\n },\n };\n\n // Add get current user endpoint\n const findMeMode = await getSchemaMode(\"getMe\");\n paths[\"/api/users/me\"] = {\n get: {\n tags: [\"Authentication\"],\n summary: \"Get current user information\",\n description:\n \"Retrieves information about the currently authenticated user\",\n operationId: \"getMe\",\n security: [{ BearerAuth: [] }],\n responses: {\n \"200\": {\n description: \"User information retrieved successfully\",\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(\"GetMe\", findMeMode),\n },\n },\n },\n },\n \"401\": {\n description: \"Authentication required\",\n },\n },\n },\n };\n\n // Add update current user endpoint\n const updateMeMode = await getSchemaMode(\"updateMe\");\n if (!paths[\"/api/users/me\"]) paths[\"/api/users/me\"] = {};\n paths[\"/api/users/me\"]!.patch = {\n tags: [\"Authentication\"],\n summary: \"Update current user information\",\n description: \"Updates information for the currently authenticated user\",\n operationId: \"updateMe\",\n security: [{ BearerAuth: [] }],\n requestBody: {\n description: \"User data to update\",\n required: true,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(\"UpdateMe\", updateMeMode),\n },\n },\n },\n },\n responses: {\n \"200\": {\n description: \"User updated successfully\",\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(\"User\", userMode),\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n },\n };\n\n // Add delete current user endpoint\n if (!paths[\"/api/users/me\"]) paths[\"/api/users/me\"] = {};\n paths[\"/api/users/me\"]!.delete = {\n tags: [\"Authentication\"],\n summary: \"Delete current user account\",\n description: \"Marks the current user's account as deleted\",\n operationId: \"deleteMe\",\n security: [{ BearerAuth: [] }],\n responses: {\n \"200\": {\n description: \"Account deleted successfully\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n message: {\n type: \"string\",\n example: \"Account deleted successfully\",\n },\n },\n },\n },\n },\n },\n \"401\": {\n description: \"Authentication required\",\n },\n },\n };\n\n return paths;\n}\n"]}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSystemJsonSchemaPaths=getSystemJsonSchemaPaths;function getSystemJsonSchemaPaths(){const e={};return e["/api/available-resources"]={get:{tags:["System"],summary:"Get available resources",description:"Returns a comprehensive list of all available API resource endpoints",operationId:"getAvailableResources",responses:{200:{description:"List of available resources retrieved successfully",content:{"application/json":{schema:{type:"object",properties:{data:{type:"array",items:{type:"string"},description:"Array of available resource endpoints"}}}}}}}}},e["/api/available-routes"]={get:{tags:["System"],summary:"Get available routes",description:"Returns a comprehensive list of all registered API routes and their methods",operationId:"getAvailableRoutes",responses:{200:{description:"List of available routes retrieved successfully",content:{"application/json":{schema:{type:"object",properties:{routes:{type:"array",items:{type:"string"},description:"Array of available API routes"}}}}}}}}},e}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-system-json-schema-paths.js","sourceRoot":"","sources":["../../../../../../src/modules/swagger/utils/helpers/get-system-json-schema-paths.ts"],"names":[],"mappings":";;AAEA,4DAkEC;AAlED,SAAgB,wBAAwB;IACtC,MAAM,KAAK,GAA0B,EAAE,CAAC;IAExC,KAAK,CAAC,0BAA0B,CAAC,GAAG;QAClC,GAAG,EAAE;YACH,IAAI,EAAE,CAAC,QAAQ,CAAC;YAChB,OAAO,EAAE,yBAAyB;YAClC,WAAW,EACT,sEAAsE;YACxE,WAAW,EAAE,uBAAuB;YACpC,SAAS,EAAE;gBACT,KAAK,EAAE;oBACL,WAAW,EAAE,oDAAoD;oBACjE,OAAO,EAAE;wBACP,kBAAkB,EAAE;4BAClB,MAAM,EAAE;gCACN,IAAI,EAAE,QAAQ;gCACd,UAAU,EAAE;oCACV,IAAI,EAAE;wCACJ,IAAI,EAAE,OAAO;wCACb,KAAK,EAAE;4CACL,IAAI,EAAE,QAAQ;yCACf;wCACD,WAAW,EAAE,uCAAuC;qCACrD;iCACF;6BACF;yBACF;qBACF;iBACF;aACF;SACF;KACF,CAAC;IAEF,KAAK,CAAC,uBAAuB,CAAC,GAAG;QAC/B,GAAG,EAAE;YACH,IAAI,EAAE,CAAC,QAAQ,CAAC;YAChB,OAAO,EAAE,sBAAsB;YAC/B,WAAW,EACT,6EAA6E;YAC/E,WAAW,EAAE,oBAAoB;YACjC,SAAS,EAAE;gBACT,KAAK,EAAE;oBACL,WAAW,EAAE,iDAAiD;oBAC9D,OAAO,EAAE;wBACP,kBAAkB,EAAE;4BAClB,MAAM,EAAE;gCACN,IAAI,EAAE,QAAQ;gCACd,UAAU,EAAE;oCACV,MAAM,EAAE;wCACN,IAAI,EAAE,OAAO;wCACb,KAAK,EAAE;4CACL,IAAI,EAAE,QAAQ;yCACf;wCACD,WAAW,EAAE,+BAA+B;qCAC7C;iCACF;6BACF;yBACF;qBACF;iBACF;aACF;SACF;KACF,CAAC;IAEF,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import { OpenAPIV3 } from \"openapi-types\";\n\nexport function getSystemJsonSchemaPaths() {\n const paths: OpenAPIV3.PathsObject = {};\n\n paths[\"/api/available-resources\"] = {\n get: {\n tags: [\"System\"],\n summary: \"Get available resources\",\n description:\n \"Returns a comprehensive list of all available API resource endpoints\",\n operationId: \"getAvailableResources\",\n responses: {\n \"200\": {\n description: \"List of available resources retrieved successfully\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n data: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n description: \"Array of available resource endpoints\",\n },\n },\n },\n },\n },\n },\n },\n },\n };\n\n paths[\"/api/available-routes\"] = {\n get: {\n tags: [\"System\"],\n summary: \"Get available routes\",\n description:\n \"Returns a comprehensive list of all registered API routes and their methods\",\n operationId: \"getAvailableRoutes\",\n responses: {\n \"200\": {\n description: \"List of available routes retrieved successfully\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n routes: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n description: \"Array of available API routes\",\n },\n },\n },\n },\n },\n },\n },\n },\n };\n\n return paths;\n}\n"]}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.generateClassValidatorJsonSchemas=generateClassValidatorJsonSchemas;const class_validator_jsonschema_1=require("class-validator-jsonschema"),global_helpers_1=require("../../../../../utils/helpers/global.helpers"),class_validator_1=require("class-validator"),models_helpers_1=require("../../../../../utils/helpers/models.helpers"),swagger_router_helpers_1=require("../swagger.router.helpers");async function generateClassValidatorJsonSchemas(){const l=(0,models_helpers_1.getModels)(),e={},{defaultMetadataStorage:n}=await(0,global_helpers_1.importModule)("class-transformer/cjs/storage.js"),o=(0,class_validator_jsonschema_1.validationMetadatasToSchemas)({classValidatorMetadataStorage:(0,class_validator_1.getMetadataStorage)(),classTransformerMetadataStorage:n,refPointerPrefix:"#/components/schemas/"});return Object.entries(o).forEach(([a,s])=>{e[a]=s}),l.forEach(a=>{const s=(0,models_helpers_1.getModelModules)(a);s?.dtos&&Object.entries(s.dtos).forEach(([c,r])=>{if(r)try{const t=(0,swagger_router_helpers_1.getCorrectJsonSchemaName)(c,a,"Dto");e[t]=o[r.name]||{},e[r.name]&&delete e[r.name]}catch(t){console.warn(`Failed to generate schema for ${c} ${a}:`,t)}})}),e}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-class-validator-json-schemas.js","sourceRoot":"","sources":["../../../../../../../src/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.ts"],"names":[],"mappings":";;AASA,8EA4CC;AArDD,2EAA0E;AAC1E,gFAA2E;AAC3E,qDAAqD;AACrD,gFAGqD;AACrD,sEAAqE;AAE9D,KAAK,UAAU,iCAAiC;IACrD,MAAM,MAAM,GAAG,IAAA,0BAAS,GAAE,CAAC;IAC3B,MAAM,OAAO,GAAwB,EAAE,CAAC;IAExC,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,IAAA,6BAAY,EACnD,kCAAkC,CACnC,CAAC;IAEF,MAAM,UAAU,GAAG,IAAA,yDAA4B,EAAC;QAC9C,6BAA6B,EAAE,IAAA,oCAAkB,GAAE;QACnD,+BAA+B,EAAE,sBAAsB;QACvD,gBAAgB,EAAE,uBAAuB;KAC1C,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE;QACzD,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QAC3B,MAAM,YAAY,GAAG,IAAA,gCAAe,EAAC,SAAS,CAAC,CAAC;QAEhD,IAAI,YAAY,EAAE,IAAI,EAAE,CAAC;YACvB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE;gBAChE,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,CAAC;wBACH,MAAM,UAAU,GAAG,IAAA,iDAAwB,EACzC,OAAO,EACP,SAAS,EACT,KAAK,CACN,CAAC;wBACF,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;wBACtD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;4BAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAC5D,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,IAAI,CACV,iCAAiC,OAAO,IAAI,SAAS,GAAG,EACxD,KAAK,CACN,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import { validationMetadatasToSchemas } from \"class-validator-jsonschema\";\nimport { importModule } from \"../../../../../utils/helpers/global.helpers\";\nimport { getMetadataStorage } from \"class-validator\";\nimport {\n getModelModules,\n getModels,\n} from \"../../../../../utils/helpers/models.helpers\";\nimport { getCorrectJsonSchemaName } from \"../swagger.router.helpers\";\n\nexport async function generateClassValidatorJsonSchemas() {\n const models = getModels();\n const schemas: Record<string, any> = {};\n\n const { defaultMetadataStorage } = await importModule(\n \"class-transformer/cjs/storage.js\"\n );\n\n const jsonSchema = validationMetadatasToSchemas({\n classValidatorMetadataStorage: getMetadataStorage(),\n classTransformerMetadataStorage: defaultMetadataStorage,\n refPointerPrefix: \"#/components/schemas/\",\n });\n\n Object.entries(jsonSchema).forEach(([className, schema]) => {\n schemas[className] = schema;\n });\n\n models.forEach((modelName) => {\n const modelModules = getModelModules(modelName);\n\n if (modelModules?.dtos) {\n Object.entries(modelModules.dtos).forEach(([dtoType, dtoClass]) => {\n if (dtoClass) {\n try {\n const schemaName = getCorrectJsonSchemaName(\n dtoType,\n modelName,\n \"Dto\"\n );\n schemas[schemaName] = jsonSchema[dtoClass.name] || {};\n if (schemas[dtoClass.name]) delete schemas[dtoClass.name];\n } catch (error) {\n console.warn(\n `Failed to generate schema for ${dtoType} ${modelName}:`,\n error\n );\n }\n }\n });\n }\n });\n\n return schemas;\n}\n"]}
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.generatePrismaJsonSchemas=generatePrismaJsonSchemas;const models_helpers_1=require("../../../../../utils/helpers/models.helpers"),enhaced_prisma_json_schema_generator_1=__importDefault(require("../../../../../utils/prisma/enhaced-prisma-json-schema-generator"));async function generatePrismaJsonSchemas(e){const t=[...(0,models_helpers_1.getModels)(),"auth"];try{return(await Promise.all(t.map(async s=>await enhaced_prisma_json_schema_generator_1.default.generateModelSchemas({modelName:s,arkosConfig:e})))).reduce((s,a)=>({...s,...a}),{})}catch(r){throw console.error(r),r}}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-prisma-json-schemas.js","sourceRoot":"","sources":["../../../../../../../src/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.ts"],"names":[],"mappings":";;;;;AAIA,8DA0BC;AA7BD,gFAAwE;AACxE,4IAAiH;AAE1G,KAAK,UAAU,yBAAyB,CAAC,WAAwB;IACtE,MAAM,MAAM,GAAG,CAAC,GAAG,IAAA,0BAAS,GAAE,EAAE,MAAM,CAAC,CAAC;IAExC,IAAI,CAAC;QAEH,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,GAAG,CACzC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC7B,MAAM,YAAY,GAChB,MAAM,8CAAiC,CAAC,oBAAoB,CAAC;gBAC3D,SAAS;gBACT,WAAW;aACZ,CAAC,CAAC;YACL,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC,CACH,CAAC;QAGF,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE;YAC7D,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;QACrC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC","sourcesContent":["import { ArkosConfig } from \"../../../../../exports\";\nimport { getModels } from \"../../../../../utils/helpers/models.helpers\";\nimport enhancedPrismaJsonSchemaGenerator from \"../../../../../utils/prisma/enhaced-prisma-json-schema-generator\";\n\nexport async function generatePrismaJsonSchemas(arkosConfig: ArkosConfig) {\n const models = [...getModels(), \"auth\"];\n\n try {\n // Use Promise.all to handle all async operations properly\n const modelSchemasArray = await Promise.all(\n models.map(async (modelName) => {\n const modelSchemas =\n await enhancedPrismaJsonSchemaGenerator.generateModelSchemas({\n modelName,\n arkosConfig,\n });\n return modelSchemas;\n })\n );\n\n // Merge all schemas into a single object\n const schemas = modelSchemasArray.reduce((acc, modelSchemas) => {\n return { ...acc, ...modelSchemas };\n }, {});\n\n return schemas;\n } catch (err) {\n console.error(err);\n throw err;\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.generateZodJsonSchemas=generateZodJsonSchemas;const models_helpers_1=require("../../../../../utils/helpers/models.helpers"),zod_to_json_schema_1=__importDefault(require("zod-to-json-schema")),swagger_router_helpers_1=require("../swagger.router.helpers");async function generateZodJsonSchemas(){const e=[...(0,models_helpers_1.getModels)(),"auth"],r={};return e.forEach(s=>{const o=(0,models_helpers_1.getModelModules)(s);o?.schemas&&Object.entries(o.schemas).forEach(([c,a])=>{if(a)try{const t=(0,zod_to_json_schema_1.default)(a),n=(0,swagger_router_helpers_1.getCorrectJsonSchemaName)(c,s,"Schema");r[n]=t}catch(t){console.warn(`Failed to generate schema for ${c} ${s}:`,t)}})}),r}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-zod-json-schema.js","sourceRoot":"","sources":["../../../../../../../src/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.ts"],"names":[],"mappings":";;;;;AAOA,wDA8BC;AArCD,gFAGqD;AACrD,4EAAiD;AACjD,sEAAqE;AAE9D,KAAK,UAAU,sBAAsB;IAC1C,MAAM,MAAM,GAAG,CAAC,GAAG,IAAA,0BAAS,GAAE,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,OAAO,GAAwB,EAAE,CAAC;IAExC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QAC3B,MAAM,YAAY,GAAG,IAAA,gCAAe,EAAC,SAAS,CAAC,CAAC;QAEhD,IAAI,YAAY,EAAE,OAAO;YACvB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,CAC1C,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE;gBAC1B,IAAI,SAAS;oBACX,IAAI,CAAC;wBACH,MAAM,UAAU,GAAG,IAAA,4BAAe,EAAC,SAAS,CAAC,CAAC;wBAC9C,MAAM,UAAU,GAAG,IAAA,iDAAwB,EACzC,UAAU,EACV,SAAS,EACT,QAAQ,CACT,CAAC;wBACF,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;oBACnC,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,IAAI,CACV,iCAAiC,UAAU,IAAI,SAAS,GAAG,EAC3D,KAAK,CACN,CAAC;oBACJ,CAAC;YACL,CAAC,CACF,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import {\n getModelModules,\n getModels,\n} from \"../../../../../utils/helpers/models.helpers\";\nimport zodToJsonSchema from \"zod-to-json-schema\";\nimport { getCorrectJsonSchemaName } from \"../swagger.router.helpers\";\n\nexport async function generateZodJsonSchemas() {\n const models = [...getModels(), \"auth\"];\n const schemas: Record<string, any> = {};\n\n models.forEach((modelName) => {\n const modelModules = getModelModules(modelName);\n\n if (modelModules?.schemas)\n Object.entries(modelModules.schemas).forEach(\n ([schemaType, zodSchema]) => {\n if (zodSchema)\n try {\n const jsonSchema = zodToJsonSchema(zodSchema);\n const schemaName = getCorrectJsonSchemaName(\n schemaType,\n modelName,\n \"Schema\"\n );\n schemas[schemaName] = jsonSchema;\n } catch (error) {\n console.warn(\n `Failed to generate schema for ${schemaType} ${modelName}:`,\n error\n );\n }\n }\n );\n });\n\n return schemas;\n}\n"]}
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.generatePrismaModelMainRoutesPaths=generatePrismaModelMainRoutesPaths;const swagger_router_helpers_1=require("../../swagger.router.helpers"),pluralize_1=__importDefault(require("pluralize")),base_router_helpers_1=require("../../../../../base/utils/helpers/base.router.helpers"),utils_1=require("../../../../../../exports/utils"),models_helpers_1=require("../../../../../../utils/helpers/models.helpers");async function generatePrismaModelMainRoutesPaths(a,i,c){const p=(0,utils_1.kebabCase)(a),t=pluralize_1.default.plural(p),n=(0,utils_1.pascalCase)(a),e=(0,swagger_router_helpers_1.kebabToHuman)(p),r=pluralize_1.default.plural(e),o=(await(0,models_helpers_1.importPrismaModelModules)(a,c))?.router?.config;if(o?.disable===!0)return;const d=async s=>{const u=c.swagger?.mode;if(c.swagger?.strict)return u||"prisma";const l=s;return await(0,models_helpers_1.localValidatorFileExists)(l,a,c)&&u||"prisma"};if(!(0,base_router_helpers_1.isEndpointDisabled)(o,"createOne")){i[`/api/${t}`]||(i[`/api/${t}`]={});const s=await d("create");i[`/api/${t}`].post={tags:[r],summary:`Create a new ${e}`,description:`Creates a new ${e} record in the system`,operationId:`create${n}`,requestBody:{description:`${e} data to create`,required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`Create${n}`,s)}}}},responses:{201:{description:`${e} created successfully`,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`${n}`,s)}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"}},security:[{BearerAuth:[]}]}}if(!(0,base_router_helpers_1.isEndpointDisabled)(o,"findMany")){i[`/api/${t}`]||(i[`/api/${t}`]={});const s=await d("findMany");i[`/api/${t}`].get={tags:[r],summary:`Get ${r}`,description:`Retrieves a paginated list of ${r} with optional filtering and sorting`,operationId:`find${pluralize_1.default.plural(n)}`,parameters:[{name:"filter",in:"query",description:"Filter criteria in JSON format",schema:{type:"string"}},{name:"sort",in:"query",description:"Sort field (prefix with '-' for descending order)",schema:{type:"string"}},{name:"page",in:"query",description:"Page number (starts from 1)",schema:{type:"integer",minimum:1}},{name:"limit",in:"query",description:"Number of items per page",schema:{type:"integer",minimum:1,maximum:100}},{name:"fields",in:"query",description:"Comma-separated list of fields to include in response",schema:{type:"string"}}],responses:{200:{description:`List of ${r} retrieved successfully`,content:{"application/json":{schema:{type:"object",properties:{total:{type:"integer",description:"Total number of records matching the criteria"},results:{type:"integer",description:"Number of records returned in current page"},data:{type:"array",items:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`FindMany${n}`,s)}}}}}}},401:{description:"Authentication required"},403:{description:"Insufficient permissions"}},security:[{BearerAuth:[]}]}}if(!(0,base_router_helpers_1.isEndpointDisabled)(o,"createMany")){const s=await d("createMany");i[`/api/${t}/many`]={post:{tags:[r],summary:`Create multiple ${r}`,description:`Creates multiple ${r} records in a single batch operation`,operationId:`createMany${n}`,requestBody:{description:`Array of ${e} data to create`,required:!0,content:{"application/json":{schema:{type:"array",items:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`CreateMany${n}`,s)}}}}},responses:{201:{description:`${r} created successfully`,content:{"application/json":{schema:{type:"object",properties:{count:{type:"integer",description:"Number of records created"}}}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"}},security:[{BearerAuth:[]}]}}}if(!(0,base_router_helpers_1.isEndpointDisabled)(o,"updateMany")){i[`/api/${t}/many`]||(i[`/api/${t}/many`]={});const s=await d("updateMany");i[`/api/${t}/many`].patch={tags:[r],summary:`Update multiple ${r}`,description:`Updates multiple ${r} records that match the specified filter criteria`,operationId:`updateMany${n}`,parameters:[{name:"filter",in:"query",description:"Filter criteria in JSON format (required)",required:!0,schema:{type:"string"}}],requestBody:{description:`Partial ${e} data to update`,required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`UpdateMany${n}`,s)}}}},responses:{200:{description:`${r} updated successfully`,content:{"application/json":{schema:{type:"object",properties:{count:{type:"integer",description:"Number of records updated"}}}}}},400:{description:"Invalid input data or missing filter criteria"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"}},security:[{BearerAuth:[]}]}}if((0,base_router_helpers_1.isEndpointDisabled)(o,"deleteMany")||(i[`/api/${t}/many`]||(i[`/api/${t}/many`]={}),i[`/api/${t}/many`].delete={tags:[r],summary:`Delete multiple ${r}`,description:`Deletes multiple ${r} records that match the specified filter criteria`,operationId:`deleteMany${n}`,parameters:[{name:"filter",in:"query",description:"Filter criteria in JSON format (required)",required:!0,schema:{type:"string"}}],responses:{200:{description:`${r} deleted successfully`,content:{"application/json":{schema:{type:"object",properties:{count:{type:"integer",description:"Number of records deleted"}}}}}},400:{description:"Missing filter criteria"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"}},security:[{BearerAuth:[]}]}),!(0,base_router_helpers_1.isEndpointDisabled)(o,"findOne")){const s=await d("findOne");i[`/api/${t}/{id}`]={get:{tags:[r],summary:`Get ${e} by ID`,description:`Retrieves a single ${e} record by its unique identifier`,operationId:`find${n}ById`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}}],responses:{200:{description:`${e} retrieved successfully`,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`FindOne${n}`,s)}}}},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}}}if(!(0,base_router_helpers_1.isEndpointDisabled)(o,"updateOne")){i[`/api/${t}/{id}`]||(i[`/api/${t}/{id}`]={});const s=await d("update");i[`/api/${t}/{id}`].patch={tags:[r],summary:`Update ${e} by ID`,description:`Updates a single ${e} record by its unique identifier`,operationId:`update${n}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}}],requestBody:{description:`Partial ${e} data to update`,required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`Update${n}`,s)}}}},responses:{200:{description:`${e} updated successfully`,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`${n}`,s)}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}}(0,base_router_helpers_1.isEndpointDisabled)(o,"deleteOne")||(i[`/api/${t}/{id}`]||(i[`/api/${t}/{id}`]={}),i[`/api/${t}/{id}`].delete={tags:[r],summary:`Delete ${e} by ID`,description:`Permanently deletes a single ${e} record by its unique identifier`,operationId:`delete${n}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}}],responses:{204:{description:`${e} deleted successfully`},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]})}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-prisma-model-main-routes.js","sourceRoot":"","sources":["../../../../../../../../src/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.ts"],"names":[],"mappings":"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","sourcesContent":["import { OpenAPIV3 } from \"openapi-types\";\nimport { getSchemaRef, kebabToHuman } from \"../../swagger.router.helpers\";\nimport pluralize from \"pluralize\";\nimport { isEndpointDisabled } from \"../../../../../base/utils/helpers/base.router.helpers\";\nimport { ArkosConfig } from \"../../../../../../exports\";\nimport { kebabCase, pascalCase } from \"../../../../../../exports/utils\";\nimport {\n importPrismaModelModules,\n localValidatorFileExists,\n} from \"../../../../../../utils/helpers/models.helpers\";\n\nexport async function generatePrismaModelMainRoutesPaths(\n model: string,\n paths: OpenAPIV3.PathsObject,\n arkosConfig: ArkosConfig\n) {\n const modelName = kebabCase(model);\n const routeName = pluralize.plural(modelName);\n const pascalModelName = pascalCase(model);\n const humanReadableName = kebabToHuman(modelName);\n const humanReadableNamePlural = pluralize.plural(humanReadableName);\n\n // Import model modules to get router config\n const modelModules = await importPrismaModelModules(model, arkosConfig);\n const routerConfig = modelModules?.router?.config;\n\n // Skip if router is completely disabled\n if (routerConfig?.disable === true) return;\n\n // Helper function to determine the correct mode for schema ref\n const getSchemaMode = async (\n action: string\n ): Promise<\"prisma\" | \"zod\" | \"class-validator\"> => {\n const swaggerMode = arkosConfig.swagger?.mode;\n const isStrict = arkosConfig.swagger?.strict;\n\n if (isStrict) {\n return swaggerMode || \"prisma\";\n }\n\n // Convert action to ValidationFileMappingKey format if needed\n const actionKey = action as any; // You may need to convert this based on the key mappings\n\n const localFileExists = await localValidatorFileExists(\n actionKey,\n model,\n arkosConfig\n );\n\n if (!localFileExists) return \"prisma\"; // Fallback to prisma when no local file exists and not strict\n\n return swaggerMode || \"prisma\";\n };\n\n // Create One\n if (!isEndpointDisabled(routerConfig, \"createOne\")) {\n if (!paths[`/api/${routeName}`]) paths[`/api/${routeName}`] = {};\n const createMode = await getSchemaMode(\"create\");\n paths[`/api/${routeName}`]!.post = {\n tags: [humanReadableNamePlural],\n summary: `Create a new ${humanReadableName}`,\n description: `Creates a new ${humanReadableName} record in the system`,\n operationId: `create${pascalModelName}`,\n requestBody: {\n description: `${humanReadableName} data to create`,\n required: true,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`Create${pascalModelName}`, createMode),\n },\n },\n },\n },\n responses: {\n \"201\": {\n description: `${humanReadableName} created successfully`,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`${pascalModelName}`, createMode),\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data provided\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n\n // Find Many\n if (!isEndpointDisabled(routerConfig, \"findMany\")) {\n if (!paths[`/api/${routeName}`]) paths[`/api/${routeName}`] = {};\n const findManyMode = await getSchemaMode(\"findMany\");\n paths[`/api/${routeName}`]!.get = {\n tags: [humanReadableNamePlural],\n summary: `Get ${humanReadableNamePlural}`,\n description: `Retrieves a paginated list of ${humanReadableNamePlural} with optional filtering and sorting`,\n operationId: `find${pluralize.plural(pascalModelName)}`,\n parameters: [\n {\n name: \"filter\",\n in: \"query\",\n description: \"Filter criteria in JSON format\",\n schema: {\n type: \"string\",\n },\n },\n {\n name: \"sort\",\n in: \"query\",\n description: \"Sort field (prefix with '-' for descending order)\",\n schema: {\n type: \"string\",\n },\n },\n {\n name: \"page\",\n in: \"query\",\n description: \"Page number (starts from 1)\",\n schema: {\n type: \"integer\",\n minimum: 1,\n },\n },\n {\n name: \"limit\",\n in: \"query\",\n description: \"Number of items per page\",\n schema: {\n type: \"integer\",\n minimum: 1,\n maximum: 100,\n },\n },\n {\n name: \"fields\",\n in: \"query\",\n description: \"Comma-separated list of fields to include in response\",\n schema: {\n type: \"string\",\n },\n },\n ],\n responses: {\n \"200\": {\n description: `List of ${humanReadableNamePlural} retrieved successfully`,\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n total: {\n type: \"integer\",\n description:\n \"Total number of records matching the criteria\",\n },\n results: {\n type: \"integer\",\n description: \"Number of records returned in current page\",\n },\n data: {\n type: \"array\",\n items: {\n $ref: getSchemaRef(\n `FindMany${pascalModelName}`,\n findManyMode\n ),\n },\n },\n },\n },\n },\n },\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n\n // Create Many\n if (!isEndpointDisabled(routerConfig, \"createMany\")) {\n const createManyMode = await getSchemaMode(\"createMany\");\n paths[`/api/${routeName}/many`] = {\n post: {\n tags: [humanReadableNamePlural],\n summary: `Create multiple ${humanReadableNamePlural}`,\n description: `Creates multiple ${humanReadableNamePlural} records in a single batch operation`,\n operationId: `createMany${pascalModelName}`,\n requestBody: {\n description: `Array of ${humanReadableName} data to create`,\n required: true,\n content: {\n \"application/json\": {\n schema: {\n type: \"array\",\n items: {\n $ref: getSchemaRef(\n `CreateMany${pascalModelName}`,\n createManyMode\n ),\n },\n },\n },\n },\n },\n responses: {\n \"201\": {\n description: `${humanReadableNamePlural} created successfully`,\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n count: {\n type: \"integer\",\n description: \"Number of records created\",\n },\n },\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data provided\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n },\n security: [{ BearerAuth: [] }],\n },\n };\n }\n\n // Update Many\n if (!isEndpointDisabled(routerConfig, \"updateMany\")) {\n if (!paths[`/api/${routeName}/many`]) paths[`/api/${routeName}/many`] = {};\n const updateManyMode = await getSchemaMode(\"updateMany\");\n paths[`/api/${routeName}/many`]!.patch = {\n tags: [humanReadableNamePlural],\n summary: `Update multiple ${humanReadableNamePlural}`,\n description: `Updates multiple ${humanReadableNamePlural} records that match the specified filter criteria`,\n operationId: `updateMany${pascalModelName}`,\n parameters: [\n {\n name: \"filter\",\n in: \"query\",\n description: \"Filter criteria in JSON format (required)\",\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n requestBody: {\n description: `Partial ${humanReadableName} data to update`,\n required: true,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(\n `UpdateMany${pascalModelName}`,\n updateManyMode\n ),\n },\n },\n },\n },\n responses: {\n \"200\": {\n description: `${humanReadableNamePlural} updated successfully`,\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n count: {\n type: \"integer\",\n description: \"Number of records updated\",\n },\n },\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data or missing filter criteria\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n\n // Delete Many\n if (!isEndpointDisabled(routerConfig, \"deleteMany\")) {\n if (!paths[`/api/${routeName}/many`]) paths[`/api/${routeName}/many`] = {};\n paths[`/api/${routeName}/many`]!.delete = {\n tags: [humanReadableNamePlural],\n summary: `Delete multiple ${humanReadableNamePlural}`,\n description: `Deletes multiple ${humanReadableNamePlural} records that match the specified filter criteria`,\n operationId: `deleteMany${pascalModelName}`,\n parameters: [\n {\n name: \"filter\",\n in: \"query\",\n description: \"Filter criteria in JSON format (required)\",\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n responses: {\n \"200\": {\n description: `${humanReadableNamePlural} deleted successfully`,\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n count: {\n type: \"integer\",\n description: \"Number of records deleted\",\n },\n },\n },\n },\n },\n },\n \"400\": {\n description: \"Missing filter criteria\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n\n // Find One\n if (!isEndpointDisabled(routerConfig, \"findOne\")) {\n const findOneMode = await getSchemaMode(\"findOne\");\n paths[`/api/${routeName}/{id}`] = {\n get: {\n tags: [humanReadableNamePlural],\n summary: `Get ${humanReadableName} by ID`,\n description: `Retrieves a single ${humanReadableName} record by its unique identifier`,\n operationId: `find${pascalModelName}ById`,\n parameters: [\n {\n name: \"id\",\n in: \"path\",\n description: `Unique identifier of the ${humanReadableName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n responses: {\n \"200\": {\n description: `${humanReadableName} retrieved successfully`,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`FindOne${pascalModelName}`, findOneMode),\n },\n },\n },\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n \"404\": {\n description: `${humanReadableName} not found`,\n },\n },\n security: [{ BearerAuth: [] }],\n },\n };\n }\n\n // Update One\n if (!isEndpointDisabled(routerConfig, \"updateOne\")) {\n if (!paths[`/api/${routeName}/{id}`]) paths[`/api/${routeName}/{id}`] = {};\n const updateMode = await getSchemaMode(\"update\");\n paths[`/api/${routeName}/{id}`]!.patch = {\n tags: [humanReadableNamePlural],\n summary: `Update ${humanReadableName} by ID`,\n description: `Updates a single ${humanReadableName} record by its unique identifier`,\n operationId: `update${pascalModelName}`,\n parameters: [\n {\n name: \"id\",\n in: \"path\",\n description: `Unique identifier of the ${humanReadableName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n requestBody: {\n description: `Partial ${humanReadableName} data to update`,\n required: true,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`Update${pascalModelName}`, updateMode),\n },\n },\n },\n },\n responses: {\n \"200\": {\n description: `${humanReadableName} updated successfully`,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`${pascalModelName}`, updateMode),\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data provided\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n \"404\": {\n description: `${humanReadableName} not found`,\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n\n // Delete One\n if (!isEndpointDisabled(routerConfig, \"deleteOne\")) {\n if (!paths[`/api/${routeName}/{id}`]) paths[`/api/${routeName}/{id}`] = {};\n paths[`/api/${routeName}/{id}`]!.delete = {\n tags: [humanReadableNamePlural],\n summary: `Delete ${humanReadableName} by ID`,\n description: `Permanently deletes a single ${humanReadableName} record by its unique identifier`,\n operationId: `delete${pascalModelName}`,\n parameters: [\n {\n name: \"id\",\n in: \"path\",\n description: `Unique identifier of the ${humanReadableName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n responses: {\n \"204\": {\n description: `${humanReadableName} deleted successfully`,\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n \"404\": {\n description: `${humanReadableName} not found`,\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(c){return c&&c.__esModule?c:{default:c}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.generatePrismaModelParentRoutePaths=generatePrismaModelParentRoutePaths;const pluralize_1=__importDefault(require("pluralize")),utils_1=require("../../../../../../exports/utils"),swagger_router_helpers_1=require("../../swagger.router.helpers"),models_helpers_1=require("../../../../../../utils/helpers/models.helpers"),models_helpers_2=require("../../../../../../utils/helpers/models.helpers");async function generatePrismaModelParentRoutePaths(c,r,m){const $=(0,utils_1.kebabCase)(c),n=pluralize_1.default.plural($),o=(0,utils_1.pascalCase)(c),i=(0,swagger_router_helpers_1.kebabToHuman)($),t=pluralize_1.default.plural(i),f=(await(0,models_helpers_1.importPrismaModelModules)(c,m))?.router?.config;if(f?.disable===!0||!f?.parent)return;const d=f.parent.model,a=pluralize_1.default.plural((0,utils_1.kebabCase)(d)),e=(0,swagger_router_helpers_1.kebabToHuman)((0,utils_1.kebabCase)(d)),p=s=>{const u=f?.parent?.endpoints;return!u||u==="*"?!0:Array.isArray(u)?u.includes(s):!1},l=async s=>{const u=m.swagger?.mode;if(m.swagger?.strict)return u||"prisma";const y=s;return await(0,models_helpers_2.localValidatorFileExists)(y,c,m)&&u||"prisma"};if(p("createOne")){const s=await l("create");r[`/api/${a}/{id}/${n}`]={post:{tags:[t],summary:`Create ${i} for ${e}`,description:`Creates a new ${i} record associated with the specified ${e}`,operationId:`create${o}For${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}}],requestBody:{description:`${i} data to create`,required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`Create${o}`,s)}}}},responses:{201:{description:`${i} created successfully`,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`${o}`,s)}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}}}if(p("findMany")){r[`/api/${a}/{id}/${n}`]||(r[`/api/${a}/{id}/${n}`]={});const s=await l("findMany");r[`/api/${a}/{id}/${n}`].get={tags:[t],summary:`Get ${t} for ${e}`,description:`Retrieves all ${t} associated with the specified ${e}`,operationId:`get${pluralize_1.default.plural(o)}For${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}},{name:"filter",in:"query",description:"Additional filter criteria in JSON format",schema:{type:"string"}},{name:"sort",in:"query",description:"Sort field (prefix with '-' for descending order)",schema:{type:"string"}},{name:"page",in:"query",description:"Page number (starts from 1)",schema:{type:"integer",minimum:1}},{name:"limit",in:"query",description:"Number of items per page",schema:{type:"integer",minimum:1,maximum:100}},{name:"fields",in:"query",description:"Comma-separated list of fields to include in response",schema:{type:"string"}}],responses:{200:{description:`List of ${t} retrieved successfully`,content:{"application/json":{schema:{type:"object",properties:{total:{type:"integer",description:"Total number of records matching the criteria"},results:{type:"integer",description:"Number of records returned in current page"},data:{type:"array",items:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`FindMany${o}`,s)}}}}}}},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}}if(p("createMany")){const s=await l("createMany");r[`/api/${a}/{id}/${n}/many`]={post:{tags:[t],summary:`Create multiple ${t} for ${e}`,description:`Creates multiple ${t} records associated with the specified ${e}`,operationId:`createMany${o}For${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}}],requestBody:{description:`Array of ${i} data to create`,required:!0,content:{"application/json":{schema:{type:"array",items:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`CreateMany${o}`,s)}}}}},responses:{201:{description:`${t} created successfully`,content:{"application/json":{schema:{type:"object",properties:{count:{type:"integer",description:"Number of records created"}}}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}}}if(p("updateMany")){r[`/api/${a}/{id}/${n}/many`]||(r[`/api/${a}/{id}/${n}/many`]={});const s=await l("updateMany");r[`/api/${a}/{id}/${n}/many`].patch={tags:[t],summary:`Update multiple ${t} for ${e}`,description:`Updates multiple ${t} records associated with the specified ${e}`,operationId:`updateMany${o}For${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}},{name:"filter",in:"query",description:"Additional filter criteria in JSON format",schema:{type:"string"}}],requestBody:{description:`Partial ${i} data to update`,required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`UpdateMany${o}`,s)}}}},responses:{200:{description:`${t} updated successfully`,content:{"application/json":{schema:{type:"object",properties:{count:{type:"integer",description:"Number of records updated"}}}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}}if(p("deleteMany")&&(r[`/api/${a}/{id}/${n}/many`]||(r[`/api/${a}/{id}/${n}/many`]={}),r[`/api/${a}/{id}/${n}/many`].delete={tags:[t],summary:`Delete multiple ${t} for ${e}`,description:`Deletes multiple ${t} records associated with the specified ${e}`,operationId:`deleteMany${o}For${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}},{name:"filter",in:"query",description:"Additional filter criteria in JSON format",schema:{type:"string"}}],responses:{200:{description:`${t} deleted successfully`,content:{"application/json":{schema:{type:"object",properties:{count:{type:"integer",description:"Number of records deleted"}}}}}},400:{description:"Missing filter criteria"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}),p("findOne")){const s=await l("findOne");r[`/api/${a}/{id}/${n}/{childId}`]={get:{tags:[t],summary:`Get ${i} by ID for ${e}`,description:`Retrieves a single ${i} record by its unique identifier associated with the specified ${e}`,operationId:`get${o}ByIdFor${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}},{name:"childId",in:"path",description:`Unique identifier of the ${i}`,required:!0,schema:{type:"string"}}],responses:{200:{description:`${i} retrieved successfully`,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`FindOne${o}`,s)}}}},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${i} or ${e} not found`}},security:[{BearerAuth:[]}]}}}if(p("updateOne")){r[`/api/${a}/{id}/${n}/{childId}`]||(r[`/api/${a}/{id}/${n}/{childId}`]={});const s=await l("update");r[`/api/${a}/{id}/${n}/{childId}`].patch={tags:[t],summary:`Update ${i} by ID for ${e}`,description:`Updates a single ${i} record by its unique identifier associated with the specified ${e}`,operationId:`update${o}ByIdFor${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}},{name:"childId",in:"path",description:`Unique identifier of the ${i}`,required:!0,schema:{type:"string"}}],requestBody:{description:`Partial ${i} data to update`,required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`Update${o}`,s)}}}},responses:{200:{description:`${i} updated successfully`,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`${o}`,s)}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${i} or ${e} not found`}},security:[{BearerAuth:[]}]}}p("deleteOne")&&(r[`/api/${a}/{id}/${n}/{childId}`]||(r[`/api/${a}/{id}/${n}/{childId}`]={}),r[`/api/${a}/{id}/${n}/{childId}`].delete={tags:[t],summary:`Delete ${i} by ID for ${e}`,description:`Permanently deletes a single ${i} record by its unique identifier associated with the specified ${e}`,operationId:`delete${o}ByIdFor${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}},{name:"childId",in:"path",description:`Unique identifier of the ${i}`,required:!0,schema:{type:"string"}}],responses:{204:{description:`${i} deleted successfully`},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${i} or ${e} not found`}},security:[{BearerAuth:[]}]})}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-prisma-model-parent-routes.js","sourceRoot":"","sources":["../../../../../../../../src/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.ts"],"names":[],"mappings":"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","sourcesContent":["import { OpenAPIV3 } from \"openapi-types\";\nimport pluralize from \"pluralize\";\nimport { kebabCase, pascalCase } from \"../../../../../../exports/utils\";\nimport { getSchemaRef, kebabToHuman } from \"../../swagger.router.helpers\";\nimport { ArkosConfig } from \"../../../../../../exports\";\nimport { importPrismaModelModules } from \"../../../../../../utils/helpers/models.helpers\";\nimport { localValidatorFileExists } from \"../../../../../../utils/helpers/models.helpers\";\n\nexport async function generatePrismaModelParentRoutePaths(\n model: string,\n paths: OpenAPIV3.PathsObject,\n arkosConfig: ArkosConfig\n) {\n const modelName = kebabCase(model);\n const routeName = pluralize.plural(modelName);\n const pascalModelName = pascalCase(model);\n const humanReadableName = kebabToHuman(modelName);\n const humanReadableNamePlural = pluralize.plural(humanReadableName);\n\n // Import model modules to get router config\n const modelModules = await importPrismaModelModules(model, arkosConfig);\n const routerConfig = modelModules?.router?.config;\n\n // Skip if router is completely disabled\n if (routerConfig?.disable === true) return;\n if (!routerConfig?.parent) return;\n\n const parentModel = routerConfig.parent.model;\n const parentRouteName = pluralize.plural(kebabCase(parentModel));\n const parentHumanName = kebabToHuman(kebabCase(parentModel));\n\n // Check if parent endpoint is allowed\n const isParentEndpointAllowed = (endpoint: string): boolean => {\n const parentEndpoints = routerConfig?.parent?.endpoints;\n\n // If endpoints is \"*\" or undefined, allow all\n if (!parentEndpoints || parentEndpoints === \"*\") {\n return true;\n }\n\n // If endpoints is array, check if endpoint is included\n if (Array.isArray(parentEndpoints)) {\n return parentEndpoints.includes(endpoint as any);\n }\n\n return false;\n };\n\n // Helper function to determine the correct mode for schema ref\n const getSchemaMode = async (\n action: string\n ): Promise<\"prisma\" | \"zod\" | \"class-validator\"> => {\n const swaggerMode = arkosConfig.swagger?.mode;\n const isStrict = arkosConfig.swagger?.strict;\n\n if (isStrict) {\n return swaggerMode || \"prisma\";\n }\n\n const actionKey = action as any;\n const localFileExists = await localValidatorFileExists(\n actionKey,\n model,\n arkosConfig\n );\n\n if (!localFileExists) return \"prisma\";\n\n return swaggerMode || \"prisma\";\n };\n\n // Create One (Parent)\n if (isParentEndpointAllowed(\"createOne\")) {\n const createMode = await getSchemaMode(\"create\");\n paths[`/api/${parentRouteName}/{id}/${routeName}`] = {\n post: {\n tags: [humanReadableNamePlural],\n summary: `Create ${humanReadableName} for ${parentHumanName}`,\n description: `Creates a new ${humanReadableName} record associated with the specified ${parentHumanName}`,\n operationId: `create${pascalModelName}For${pascalCase(parentModel)}`,\n parameters: [\n {\n name: \"id\",\n in: \"path\",\n description: `Unique identifier of the ${parentHumanName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n requestBody: {\n description: `${humanReadableName} data to create`,\n required: true,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`Create${pascalModelName}`, createMode),\n },\n },\n },\n },\n responses: {\n \"201\": {\n description: `${humanReadableName} created successfully`,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`${pascalModelName}`, createMode),\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data provided\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n \"404\": {\n description: `${parentHumanName} not found`,\n },\n },\n security: [{ BearerAuth: [] }],\n },\n };\n }\n\n // Find Many (Parent)\n if (isParentEndpointAllowed(\"findMany\")) {\n if (!paths[`/api/${parentRouteName}/{id}/${routeName}`])\n paths[`/api/${parentRouteName}/{id}/${routeName}`] = {};\n const findManyMode = await getSchemaMode(\"findMany\");\n paths[`/api/${parentRouteName}/{id}/${routeName}`]!.get = {\n tags: [humanReadableNamePlural],\n summary: `Get ${humanReadableNamePlural} for ${parentHumanName}`,\n description: `Retrieves all ${humanReadableNamePlural} associated with the specified ${parentHumanName}`,\n operationId: `get${pluralize.plural(pascalModelName)}For${pascalCase(parentModel)}`,\n parameters: [\n {\n name: \"id\",\n in: \"path\",\n description: `Unique identifier of the ${parentHumanName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n {\n name: \"filter\",\n in: \"query\",\n description: \"Additional filter criteria in JSON format\",\n schema: {\n type: \"string\",\n },\n },\n {\n name: \"sort\",\n in: \"query\",\n description: \"Sort field (prefix with '-' for descending order)\",\n schema: {\n type: \"string\",\n },\n },\n {\n name: \"page\",\n in: \"query\",\n description: \"Page number (starts from 1)\",\n schema: {\n type: \"integer\",\n minimum: 1,\n },\n },\n {\n name: \"limit\",\n in: \"query\",\n description: \"Number of items per page\",\n schema: {\n type: \"integer\",\n minimum: 1,\n maximum: 100,\n },\n },\n {\n name: \"fields\",\n in: \"query\",\n description: \"Comma-separated list of fields to include in response\",\n schema: {\n type: \"string\",\n },\n },\n ],\n responses: {\n \"200\": {\n description: `List of ${humanReadableNamePlural} retrieved successfully`,\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n total: {\n type: \"integer\",\n description:\n \"Total number of records matching the criteria\",\n },\n results: {\n type: \"integer\",\n description: \"Number of records returned in current page\",\n },\n data: {\n type: \"array\",\n items: {\n $ref: getSchemaRef(\n `FindMany${pascalModelName}`,\n findManyMode\n ),\n },\n },\n },\n },\n },\n },\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n \"404\": {\n description: `${parentHumanName} not found`,\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n\n // Create Many (Parent)\n if (isParentEndpointAllowed(\"createMany\")) {\n const createManyMode = await getSchemaMode(\"createMany\");\n paths[`/api/${parentRouteName}/{id}/${routeName}/many`] = {\n post: {\n tags: [humanReadableNamePlural],\n summary: `Create multiple ${humanReadableNamePlural} for ${parentHumanName}`,\n description: `Creates multiple ${humanReadableNamePlural} records associated with the specified ${parentHumanName}`,\n operationId: `createMany${pascalModelName}For${pascalCase(parentModel)}`,\n parameters: [\n {\n name: \"id\",\n in: \"path\",\n description: `Unique identifier of the ${parentHumanName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n requestBody: {\n description: `Array of ${humanReadableName} data to create`,\n required: true,\n content: {\n \"application/json\": {\n schema: {\n type: \"array\",\n items: {\n $ref: getSchemaRef(\n `CreateMany${pascalModelName}`,\n createManyMode\n ),\n },\n },\n },\n },\n },\n responses: {\n \"201\": {\n description: `${humanReadableNamePlural} created successfully`,\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n count: {\n type: \"integer\",\n description: \"Number of records created\",\n },\n },\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data provided\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n \"404\": {\n description: `${parentHumanName} not found`,\n },\n },\n security: [{ BearerAuth: [] }],\n },\n };\n }\n\n // Update Many (Parent)\n if (isParentEndpointAllowed(\"updateMany\")) {\n if (!paths[`/api/${parentRouteName}/{id}/${routeName}/many`])\n paths[`/api/${parentRouteName}/{id}/${routeName}/many`] = {};\n const updateManyMode = await getSchemaMode(\"updateMany\");\n paths[`/api/${parentRouteName}/{id}/${routeName}/many`]!.patch = {\n tags: [humanReadableNamePlural],\n summary: `Update multiple ${humanReadableNamePlural} for ${parentHumanName}`,\n description: `Updates multiple ${humanReadableNamePlural} records associated with the specified ${parentHumanName}`,\n operationId: `updateMany${pascalModelName}For${pascalCase(parentModel)}`,\n parameters: [\n {\n name: \"id\",\n in: \"path\",\n description: `Unique identifier of the ${parentHumanName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n {\n name: \"filter\",\n in: \"query\",\n description: \"Additional filter criteria in JSON format\",\n schema: {\n type: \"string\",\n },\n },\n ],\n requestBody: {\n description: `Partial ${humanReadableName} data to update`,\n required: true,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(\n `UpdateMany${pascalModelName}`,\n updateManyMode\n ),\n },\n },\n },\n },\n responses: {\n \"200\": {\n description: `${humanReadableNamePlural} updated successfully`,\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n count: {\n type: \"integer\",\n description: \"Number of records updated\",\n },\n },\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data provided\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n \"404\": {\n description: `${parentHumanName} not found`,\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n\n // Delete Many (Parent)\n if (isParentEndpointAllowed(\"deleteMany\")) {\n if (!paths[`/api/${parentRouteName}/{id}/${routeName}/many`])\n paths[`/api/${parentRouteName}/{id}/${routeName}/many`] = {};\n paths[`/api/${parentRouteName}/{id}/${routeName}/many`]!.delete = {\n tags: [humanReadableNamePlural],\n summary: `Delete multiple ${humanReadableNamePlural} for ${parentHumanName}`,\n description: `Deletes multiple ${humanReadableNamePlural} records associated with the specified ${parentHumanName}`,\n operationId: `deleteMany${pascalModelName}For${pascalCase(parentModel)}`,\n parameters: [\n {\n name: \"id\",\n in: \"path\",\n description: `Unique identifier of the ${parentHumanName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n {\n name: \"filter\",\n in: \"query\",\n description: \"Additional filter criteria in JSON format\",\n schema: {\n type: \"string\",\n },\n },\n ],\n responses: {\n \"200\": {\n description: `${humanReadableNamePlural} deleted successfully`,\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n properties: {\n count: {\n type: \"integer\",\n description: \"Number of records deleted\",\n },\n },\n },\n },\n },\n },\n \"400\": {\n description: \"Missing filter criteria\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n \"404\": {\n description: `${parentHumanName} not found`,\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n\n // Find One (Parent)\n if (isParentEndpointAllowed(\"findOne\")) {\n const findOneMode = await getSchemaMode(\"findOne\");\n paths[`/api/${parentRouteName}/{id}/${routeName}/{childId}`] = {\n get: {\n tags: [humanReadableNamePlural],\n summary: `Get ${humanReadableName} by ID for ${parentHumanName}`,\n description: `Retrieves a single ${humanReadableName} record by its unique identifier associated with the specified ${parentHumanName}`,\n operationId: `get${pascalModelName}ByIdFor${pascalCase(parentModel)}`,\n parameters: [\n {\n name: \"id\",\n in: \"path\",\n description: `Unique identifier of the ${parentHumanName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n {\n name: \"childId\",\n in: \"path\",\n description: `Unique identifier of the ${humanReadableName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n responses: {\n \"200\": {\n description: `${humanReadableName} retrieved successfully`,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`FindOne${pascalModelName}`, findOneMode),\n },\n },\n },\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n \"404\": {\n description: `${humanReadableName} or ${parentHumanName} not found`,\n },\n },\n security: [{ BearerAuth: [] }],\n },\n };\n }\n\n // Update One (Parent)\n if (isParentEndpointAllowed(\"updateOne\")) {\n if (!paths[`/api/${parentRouteName}/{id}/${routeName}/{childId}`])\n paths[`/api/${parentRouteName}/{id}/${routeName}/{childId}`] = {};\n const updateMode = await getSchemaMode(\"update\");\n paths[`/api/${parentRouteName}/{id}/${routeName}/{childId}`]!.patch = {\n tags: [humanReadableNamePlural],\n summary: `Update ${humanReadableName} by ID for ${parentHumanName}`,\n description: `Updates a single ${humanReadableName} record by its unique identifier associated with the specified ${parentHumanName}`,\n operationId: `update${pascalModelName}ByIdFor${pascalCase(parentModel)}`,\n parameters: [\n {\n name: \"id\",\n in: \"path\",\n description: `Unique identifier of the ${parentHumanName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n {\n name: \"childId\",\n in: \"path\",\n description: `Unique identifier of the ${humanReadableName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n requestBody: {\n description: `Partial ${humanReadableName} data to update`,\n required: true,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`Update${pascalModelName}`, updateMode),\n },\n },\n },\n },\n responses: {\n \"200\": {\n description: `${humanReadableName} updated successfully`,\n content: {\n \"application/json\": {\n schema: {\n $ref: getSchemaRef(`${pascalModelName}`, updateMode),\n },\n },\n },\n },\n \"400\": {\n description: \"Invalid input data provided\",\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n \"404\": {\n description: `${humanReadableName} or ${parentHumanName} not found`,\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n\n // Delete One (Parent)\n if (isParentEndpointAllowed(\"deleteOne\")) {\n if (!paths[`/api/${parentRouteName}/{id}/${routeName}/{childId}`])\n paths[`/api/${parentRouteName}/{id}/${routeName}/{childId}`] = {};\n paths[`/api/${parentRouteName}/{id}/${routeName}/{childId}`]!.delete = {\n tags: [humanReadableNamePlural],\n summary: `Delete ${humanReadableName} by ID for ${parentHumanName}`,\n description: `Permanently deletes a single ${humanReadableName} record by its unique identifier associated with the specified ${parentHumanName}`,\n operationId: `delete${pascalModelName}ByIdFor${pascalCase(parentModel)}`,\n parameters: [\n {\n name: \"id\",\n in: \"path\",\n description: `Unique identifier of the ${parentHumanName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n {\n name: \"childId\",\n in: \"path\",\n description: `Unique identifier of the ${humanReadableName}`,\n required: true,\n schema: {\n type: \"string\",\n },\n },\n ],\n responses: {\n \"204\": {\n description: `${humanReadableName} deleted successfully`,\n },\n \"401\": {\n description: \"Authentication required\",\n },\n \"403\": {\n description: \"Insufficient permissions\",\n },\n \"404\": {\n description: `${humanReadableName} or ${parentHumanName} not found`,\n },\n },\n security: [{ BearerAuth: [] }],\n };\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(h){return h&&h.__esModule?h:{default:h}};Object.defineProperty(exports,"__esModule",{value:!0});const enhaced_prisma_json_schema_generator_1=__importDefault(require("../../../../utils/prisma/enhaced-prisma-json-schema-generator"));class MissingJsonSchemasGenerator{extractModelNameFromSchemaRef(e){const t=e.match(/#\/components\/schemas\/(?:Create|Update|UpdateMany|FindOne|FindMany|CreateMany)?(.+?)(?:ModelSchema|Schema)$/);if(t){let n=t[1];return n==="Auth"||n==="Login"||n==="Signup"||n==="GetMe"||n==="UpdateMe"||n==="UpdatePassword"?"Auth":n}return null}extractActionFromOperationId(e){return e.includes("createMany")?"createMany":e.includes("updateMany")?"updateMany":e.includes("deleteMany")?"deleteMany":e.startsWith("create")?"createOne":e.startsWith("update")?"updateOne":e.startsWith("delete")?"deleteOne":e.startsWith("find")&&(e.includes("ById")||e.includes("One"))?"findOne":e.startsWith("find")?"findMany":e.includes("login")||e==="login"?"login":e.includes("signup")||e==="signup"?"signup":e.includes("getMe")||e==="getMe"?"getMe":e.includes("updateMe")||e==="updateMe"?"updateMe":e.includes("updatePassword")||e==="updatePassword"?"updatePassword":null}extractModelNameFromOperationId(e){let t=e.replace(/^(create|update|delete|find)Many/i,"").replace(/^(create|update|delete|find)/i,"").replace(/ById$/i,"").replace(/s$/,"");return e.includes("login")||e.includes("signup")||e.includes("getMe")||e.includes("updateMe")||e.includes("updatePassword")?"Auth":t||null}extractSchemaRefsWithContext(e,t=new Map,n={}){return typeof e!="object"||e===null?t:Array.isArray(e)?(e.forEach(c=>this.extractSchemaRefsWithContext(c,t,n)),t):(e.operationId&&typeof e.operationId=="string"&&(n={...n,operationId:e.operationId}),e.$ref&&typeof e.$ref=="string"&&t.set(e.$ref,{...n}),Object.values(e).forEach(c=>{this.extractSchemaRefsWithContext(c,t,n)}),t)}extractPathSchemaRefs(e){const t=new Map;return Object.entries(e).forEach(([n,c])=>{c&&Object.entries(c).forEach(([f,u])=>{if(!u||typeof u!="object")return;const d={method:f,path:n,operationId:u.operationId};this.extractSchemaRefsWithContext(u,t,d)})}),t}getSchemaNameFromRef(e){const t=e.match(/#\/components\/schemas\/(.+)$/);return t?t[1]:null}async generateMissingJsonSchemas(e,t,n){const c={},f=this.extractPathSchemaRefs(e),u=new Map;for(const[d,l]of f){const s=this.getSchemaNameFromRef(d);if(!s||t[s]||!s.includes("ModelSchema")&&!s.includes("Schema"))continue;let i=null,a=null;l.operationId&&(i=this.extractModelNameFromOperationId(l.operationId),a=this.extractActionFromOperationId(l.operationId)),(!i||!a)&&(i=i||this.extractModelNameFromSchemaRef(d),a=a||this.extractActionFromSchemaRef(d)),i&&a&&(u.has(i)||u.set(i,new Set),u.get(i).add(a))}for(const[d,l]of u)try{const s=Array.from(l),i=await enhaced_prisma_json_schema_generator_1.default.generateModelSchemas({modelName:d,arkosConfig:n,schemasToGenerate:s});Object.entries(i).forEach(([a,o])=>{let r=a;["auth","login","me","password","me"].includes(d.toLowerCase())?a==="LoginSchema"?r="LoginSchema":a==="SignupSchema"?r="SignupSchema":a==="GetMeSchema"?r="GetMeSchema":a==="UpdateMeSchema"?r="UpdateMeSchema":a==="UpdatePasswordSchema"&&(r="UpdatePasswordSchema"):a.includes("ModelSchema")?r=a:r=`${a}ModelSchema`,c[r]=o})}catch{}return c}extractActionFromSchemaRef(e){return e.includes("CreateMany")?"createMany":e.includes("Create")?"createOne":e.includes("UpdateMany")?"updateMany":e.includes("Update")&&!e.includes("UpdateMe")&&!e.includes("UpdatePassword")?"updateOne":e.includes("FindMany")?"findMany":e.includes("FindOne")?"findOne":e.includes("Login")?"login":e.includes("Signup")?"signup":e.includes("GetMe")?"getMe":e.includes("UpdateMe")?"updateMe":e.includes("UpdatePassword")?"updatePassword":null}analyzeMissingSchemas(e,t){const n=this.extractPathSchemaRefs(e),c=[],f=[],u=[],d=[];for(const[l,s]of n){const i={ref:l,context:s};c.push(i);const a=this.getSchemaNameFromRef(l);if(a)if(t[a])u.push(i);else{f.push(i);let o=null,r=null;s.operationId&&(o=this.extractModelNameFromOperationId(s.operationId),r=this.extractActionFromOperationId(s.operationId)),(!o||!r)&&(o=o||this.extractModelNameFromSchemaRef(l),r=r||this.extractActionFromSchemaRef(l)),o&&r&&d.push({model:o,action:r,ref:l,operationId:s.operationId})}}return{allRefs:c,missingRefs:f,existingRefs:u,modelActions:d}}}const missingJsonSchemaGenerator=new MissingJsonSchemasGenerator;exports.default=missingJsonSchemaGenerator;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"missing-json-schemas-generator.js","sourceRoot":"","sources":["../../../../../../src/modules/swagger/utils/helpers/missing-json-schemas-generator.ts"],"names":[],"mappings":"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","sourcesContent":["import { OpenAPIV3 } from \"openapi-types\";\nimport { ArkosConfig } from \"../../../../exports\";\nimport enhancedPrismaJsonSchemaGenerator from \"../../../../utils/prisma/enhaced-prisma-json-schema-generator\";\n\n/**\n * Used to backfill missing json schema contained in paths in situation such as when using a `arkosConfig.swagger.mode` different from prisma and `strict` to false, in this situation the jsonSchemas paths are filled with $ref pointing to non existent jsonSchema components.\n */\nclass MissingJsonSchemasGenerator {\n /**\n * Extract model name from schema reference\n * @example\n * \"#/components/schemas/CreateUserModelSchema\" -> \"User\"\n * \"#/components/schemas/FindManyPostModelSchema\" -> \"Post\"\n */\n private extractModelNameFromSchemaRef(schemaRef: string): string | null {\n const match = schemaRef.match(\n /#\\/components\\/schemas\\/(?:Create|Update|UpdateMany|FindOne|FindMany|CreateMany)?(.+?)(?:ModelSchema|Schema)$/\n );\n if (match) {\n let modelName = match[1];\n // Handle special auth cases\n if (\n modelName === \"Auth\" ||\n modelName === \"Login\" ||\n modelName === \"Signup\" ||\n modelName === \"GetMe\" ||\n modelName === \"UpdateMe\" ||\n modelName === \"UpdatePassword\"\n ) {\n return \"Auth\";\n }\n return modelName;\n }\n return null;\n }\n\n /**\n * Extract action type from operationId\n * @example\n * \"createManyUser\" -> \"createMany\"\n * \"findUsers\" -> \"findMany\"\n * \"updateUser\" -> \"updateOne\"\n */\n private extractActionFromOperationId(operationId: string): string | null {\n // Handle bulk operations first (more specific patterns)\n if (operationId.includes(\"createMany\")) return \"createMany\";\n if (operationId.includes(\"updateMany\")) return \"updateMany\";\n if (operationId.includes(\"deleteMany\")) return \"deleteMany\";\n\n // Handle single operations\n if (operationId.startsWith(\"create\")) return \"createOne\";\n if (operationId.startsWith(\"update\")) return \"updateOne\";\n if (operationId.startsWith(\"delete\")) return \"deleteOne\";\n if (\n operationId.startsWith(\"find\") &&\n (operationId.includes(\"ById\") || operationId.includes(\"One\"))\n )\n return \"findOne\";\n if (operationId.startsWith(\"find\")) return \"findMany\";\n\n // Handle auth operations\n if (operationId.includes(\"login\") || operationId === \"login\")\n return \"login\";\n if (operationId.includes(\"signup\") || operationId === \"signup\")\n return \"signup\";\n if (operationId.includes(\"getMe\") || operationId === \"getMe\")\n return \"getMe\";\n if (operationId.includes(\"updateMe\") || operationId === \"updateMe\")\n return \"updateMe\";\n if (\n operationId.includes(\"updatePassword\") ||\n operationId === \"updatePassword\"\n )\n return \"updatePassword\";\n\n return null;\n }\n\n /**\n * Extract model name from operationId\n * @example\n * \"createManyUser\" -> \"User\"\n * \"findUsers\" -> \"User\"\n * \"updateUser\" -> \"User\"\n */\n private extractModelNameFromOperationId(operationId: string): string | null {\n // Remove common prefixes and suffixes to isolate model name\n let modelName = operationId\n .replace(/^(create|update|delete|find)Many/i, \"\")\n .replace(/^(create|update|delete|find)/i, \"\")\n .replace(/ById$/i, \"\")\n .replace(/s$/, \"\"); // Remove plural 's'\n\n // Handle auth operations\n if (\n operationId.includes(\"login\") ||\n operationId.includes(\"signup\") ||\n operationId.includes(\"getMe\") ||\n operationId.includes(\"updateMe\") ||\n operationId.includes(\"updatePassword\")\n ) {\n return \"Auth\";\n }\n\n return modelName || null;\n }\n\n /**\n * Recursively extract all $ref values from an object along with their context\n */\n private extractSchemaRefsWithContext(\n obj: any,\n refs: Map<\n string,\n { operationId?: string; method?: string; path?: string }\n > = new Map(),\n context: { operationId?: string; method?: string; path?: string } = {}\n ): Map<string, { operationId?: string; method?: string; path?: string }> {\n if (typeof obj !== \"object\" || obj === null) {\n return refs;\n }\n\n if (Array.isArray(obj)) {\n obj.forEach((item) =>\n this.extractSchemaRefsWithContext(item, refs, context)\n );\n return refs;\n }\n\n // Update context when we find operationId\n if (obj.operationId && typeof obj.operationId === \"string\") {\n context = { ...context, operationId: obj.operationId };\n }\n\n if (obj.$ref && typeof obj.$ref === \"string\") {\n refs.set(obj.$ref, { ...context });\n }\n\n Object.values(obj).forEach((value) => {\n this.extractSchemaRefsWithContext(value, refs, context);\n });\n\n return refs;\n }\n\n /**\n * Extract schema references from paths with context\n */\n private extractPathSchemaRefs(\n paths: OpenAPIV3.PathsObject\n ): Map<string, { operationId?: string; method?: string; path?: string }> {\n const refs = new Map<\n string,\n { operationId?: string; method?: string; path?: string }\n >();\n\n Object.entries(paths).forEach(([path, pathItem]) => {\n if (!pathItem) return;\n\n Object.entries(pathItem).forEach(([method, operation]) => {\n if (!operation || typeof operation !== \"object\") return;\n\n const context = {\n method,\n path,\n operationId: (operation as any).operationId,\n };\n\n this.extractSchemaRefsWithContext(operation, refs, context);\n });\n });\n\n return refs;\n }\n\n /**\n * Extract schema name from $ref\n * @example\n * \"#/components/schemas/CreateUserModelSchema\" -> \"CreateUserModelSchema\"\n */\n private getSchemaNameFromRef(ref: string): string | null {\n const match = ref.match(/#\\/components\\/schemas\\/(.+)$/);\n return match ? match[1] : null;\n }\n\n async generateMissingJsonSchemas(\n currentPaths: OpenAPIV3.PathsObject,\n currentJsonSchemas: Record<string, any>,\n arkosConfig: ArkosConfig\n ): Promise<Record<string, any>> {\n const missingSchemas: Record<string, any> = {};\n\n // Extract all schema references with their context (operationId, method, path)\n const schemaRefsWithContext = this.extractPathSchemaRefs(currentPaths);\n\n // Group missing schemas by model and collect required actions\n const modelActions = new Map<string, Set<string>>();\n\n for (const [ref, context] of schemaRefsWithContext) {\n const schemaName = this.getSchemaNameFromRef(ref);\n if (!schemaName) continue;\n\n // Check if schema already exists\n if (currentJsonSchemas[schemaName]) continue;\n\n // Only process ModelSchema references\n if (!schemaName.includes(\"ModelSchema\") && !schemaName.includes(\"Schema\"))\n continue;\n\n let modelName: string | null = null;\n let action: string | null = null;\n\n // First try to get model and action from operationId (more reliable)\n if (context.operationId) {\n modelName = this.extractModelNameFromOperationId(context.operationId);\n action = this.extractActionFromOperationId(context.operationId);\n }\n\n // Fallback to schema ref analysis if operationId didn't work\n if (!modelName || !action) {\n modelName = modelName || this.extractModelNameFromSchemaRef(ref);\n action = action || this.extractActionFromSchemaRef(ref);\n }\n\n if (modelName && action) {\n if (!modelActions.has(modelName))\n modelActions.set(modelName, new Set());\n\n modelActions.get(modelName)!.add(action);\n }\n }\n\n // Generate schemas for each model\n for (const [modelName, actions] of modelActions) {\n try {\n const actionsArray = Array.from(actions) as any[];\n\n const generatedSchemas =\n await enhancedPrismaJsonSchemaGenerator.generateModelSchemas({\n modelName,\n arkosConfig,\n schemasToGenerate: actionsArray,\n });\n\n // Map generated schemas to the expected naming convention\n Object.entries(generatedSchemas).forEach(([key, schema]) => {\n // The enhanced generator might use different naming conventions\n // We need to map them to match what's expected in the $refs\n let mappedKey = key;\n const authModuleModel = [\"auth\", \"login\", \"me\", \"password\", \"me\"];\n\n // Handle auth schemas\n if (authModuleModel.includes(modelName.toLowerCase())) {\n if (key === \"LoginSchema\") mappedKey = \"LoginSchema\";\n else if (key === \"SignupSchema\") mappedKey = \"SignupSchema\";\n else if (key === \"GetMeSchema\") mappedKey = \"GetMeSchema\";\n else if (key === \"UpdateMeSchema\") mappedKey = \"UpdateMeSchema\";\n else if (key === \"UpdatePasswordSchema\")\n mappedKey = \"UpdatePasswordSchema\";\n } else {\n // Handle model schemas - ensure they match the expected naming pattern\n if (key.includes(\"ModelSchema\")) {\n mappedKey = key;\n } else {\n // Add ModelSchema suffix if missing\n mappedKey = `${key}ModelSchema`;\n }\n }\n\n missingSchemas[mappedKey] = schema;\n });\n } catch (error) {\n // FIXME: check if all models are being generarted if so simply keep the error ssilent\n // console.warn(\n // `Failed to generate schemas for model ${modelName}:`,\n // error\n // );\n }\n }\n\n return missingSchemas;\n }\n\n /**\n * Legacy method - extract action type from schema reference (kept for backward compatibility)\n */\n private extractActionFromSchemaRef(schemaRef: string): string | null {\n if (schemaRef.includes(\"CreateMany\")) return \"createMany\";\n if (schemaRef.includes(\"Create\")) return \"createOne\";\n if (schemaRef.includes(\"UpdateMany\")) return \"updateMany\";\n if (\n schemaRef.includes(\"Update\") &&\n !schemaRef.includes(\"UpdateMe\") &&\n !schemaRef.includes(\"UpdatePassword\")\n )\n return \"updateOne\";\n if (schemaRef.includes(\"FindMany\")) return \"findMany\";\n if (schemaRef.includes(\"FindOne\")) return \"findOne\";\n if (schemaRef.includes(\"Login\")) return \"login\";\n if (schemaRef.includes(\"Signup\")) return \"signup\";\n if (schemaRef.includes(\"GetMe\")) return \"getMe\";\n if (schemaRef.includes(\"UpdateMe\")) return \"updateMe\";\n if (schemaRef.includes(\"UpdatePassword\")) return \"updatePassword\";\n\n return null;\n }\n\n /**\n * Debug method to analyze what schemas are missing with enhanced context\n */\n analyzeMissingSchemas(\n currentPaths: OpenAPIV3.PathsObject,\n currentJsonSchemas: Record<string, any>\n ): {\n allRefs: Array<{ ref: string; context: any }>;\n missingRefs: Array<{ ref: string; context: any }>;\n existingRefs: Array<{ ref: string; context: any }>;\n modelActions: {\n model: string;\n action: string;\n ref: string;\n operationId?: string;\n }[];\n } {\n const schemaRefsWithContext = this.extractPathSchemaRefs(currentPaths);\n\n const allRefs: Array<{ ref: string; context: any }> = [];\n const missingRefs: Array<{ ref: string; context: any }> = [];\n const existingRefs: Array<{ ref: string; context: any }> = [];\n const modelActions: {\n model: string;\n action: string;\n ref: string;\n operationId?: string;\n }[] = [];\n\n for (const [ref, context] of schemaRefsWithContext) {\n const refWithContext = { ref, context };\n allRefs.push(refWithContext);\n\n const schemaName = this.getSchemaNameFromRef(ref);\n if (!schemaName) continue;\n\n if (currentJsonSchemas[schemaName]) {\n existingRefs.push(refWithContext);\n } else {\n missingRefs.push(refWithContext);\n\n let modelName: string | null = null;\n let action: string | null = null;\n\n // Try operationId first\n if (context.operationId) {\n modelName = this.extractModelNameFromOperationId(context.operationId);\n action = this.extractActionFromOperationId(context.operationId);\n }\n\n // Fallback to schema ref\n if (!modelName || !action) {\n modelName = modelName || this.extractModelNameFromSchemaRef(ref);\n action = action || this.extractActionFromSchemaRef(ref);\n }\n\n if (modelName && action) {\n modelActions.push({\n model: modelName,\n action,\n ref,\n operationId: context.operationId,\n });\n }\n }\n }\n\n return {\n allRefs,\n missingRefs,\n existingRefs,\n modelActions,\n };\n }\n}\n\nconst missingJsonSchemaGenerator = new MissingJsonSchemasGenerator();\n\nexport default missingJsonSchemaGenerator;\n"]}