arkos 1.3.2-canary.3 → 1.3.3-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/README.md +8 -4
  2. package/dist/cjs/app.js +174 -1
  3. package/dist/cjs/app.js.map +1 -1
  4. package/dist/cjs/exports/auth/index.js +6 -1
  5. package/dist/cjs/exports/controllers/index.js +11 -1
  6. package/dist/cjs/exports/error-handler/index.js +11 -1
  7. package/dist/cjs/exports/index.js +12 -1
  8. package/dist/cjs/exports/middlewares/index.js +7 -1
  9. package/dist/cjs/exports/prisma/index.js +13 -1
  10. package/dist/cjs/exports/services/index.js +48 -1
  11. package/dist/cjs/exports/utils/index.js +24 -1
  12. package/dist/cjs/exports/utils/index.js.map +1 -1
  13. package/dist/cjs/exports/validation/index.js +11 -1
  14. package/dist/cjs/modules/auth/auth.controller.js +247 -1
  15. package/dist/cjs/modules/auth/auth.controller.js.map +1 -1
  16. package/dist/cjs/modules/auth/auth.router.js +82 -1
  17. package/dist/cjs/modules/auth/auth.service.js +226 -1
  18. package/dist/cjs/modules/auth/utils/auth-error-objects.js +10 -1
  19. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +83 -1
  20. package/dist/cjs/modules/auth/utils/services/auth-action.service.js +92 -1
  21. package/dist/cjs/modules/base/base.controller.js +210 -1
  22. package/dist/cjs/modules/base/base.controller.js.map +1 -1
  23. package/dist/cjs/modules/base/base.middlewares.js +92 -1
  24. package/dist/cjs/modules/base/base.middlewares.js.map +1 -1
  25. package/dist/cjs/modules/base/base.router.js +22 -1
  26. package/dist/cjs/modules/base/base.service.js +615 -1
  27. package/dist/cjs/modules/base/base.service.js.map +1 -1
  28. package/dist/cjs/modules/base/types/base.service.types.js +3 -1
  29. package/dist/cjs/modules/base/types/base.service.types.js.map +1 -1
  30. package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js +80 -1
  31. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +50 -1
  32. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +118 -1
  33. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  34. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +208 -1
  35. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
  36. package/dist/cjs/modules/base/utils/router-validator.js +16 -1
  37. package/dist/cjs/modules/base/utils/service-hooks-manager.js +19 -1
  38. package/dist/cjs/modules/debugger/debugger.service.js +48 -0
  39. package/dist/cjs/modules/debugger/debugger.service.js.map +1 -0
  40. package/dist/cjs/modules/email/email.service.js +104 -1
  41. package/dist/cjs/modules/error-handler/error-handler.controller.js +146 -4
  42. package/dist/cjs/modules/error-handler/utils/app-error.js +17 -1
  43. package/dist/cjs/modules/error-handler/utils/catch-async.js +21 -1
  44. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +205 -3
  45. package/dist/cjs/modules/file-upload/file-upload.controller.js +237 -1
  46. package/dist/cjs/modules/file-upload/file-upload.controller.js.map +1 -1
  47. package/dist/cjs/modules/file-upload/file-upload.router.js +60 -1
  48. package/dist/cjs/modules/file-upload/file-upload.service.js +322 -1
  49. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +97 -1
  50. package/dist/cjs/modules/swagger/swagger.router.js +39 -1
  51. package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
  52. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +338 -1
  53. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +64 -1
  54. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +37 -1
  55. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +52 -1
  56. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -1
  57. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +32 -1
  58. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +49 -1
  59. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +34 -1
  60. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +471 -1
  61. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +572 -1
  62. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +260 -1
  63. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -1
  64. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +112 -1
  65. package/dist/cjs/paths.js +9 -1
  66. package/dist/cjs/server.js +103 -5
  67. package/dist/cjs/server.js.map +1 -1
  68. package/dist/cjs/types/arkos-config.js +3 -1
  69. package/dist/cjs/types/arkos-config.js.map +1 -1
  70. package/dist/cjs/types/auth.js +3 -1
  71. package/dist/cjs/types/index.js +11 -1
  72. package/dist/cjs/types/index.js.map +1 -1
  73. package/dist/cjs/types/router-config.js +3 -1
  74. package/dist/cjs/utils/arkos-env.js +9 -1
  75. package/dist/cjs/utils/cli/build.js +214 -5
  76. package/dist/cjs/utils/cli/dev.js +154 -3
  77. package/dist/cjs/utils/cli/generate.js +126 -1
  78. package/dist/cjs/utils/cli/generate.js.map +1 -1
  79. package/dist/cjs/utils/cli/index.js +104 -1
  80. package/dist/cjs/utils/cli/index.js.map +1 -1
  81. package/dist/cjs/utils/cli/prisma-generate.js +120 -0
  82. package/dist/cjs/utils/cli/prisma-generate.js.map +1 -0
  83. package/dist/cjs/utils/cli/start.js +103 -1
  84. package/dist/cjs/utils/cli/utils/cli.helpers.js +24 -1
  85. package/dist/cjs/utils/cli/utils/smart-fs-watcher.js +73 -1
  86. package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js +60 -0
  87. package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -0
  88. package/dist/cjs/utils/cli/utils/template-generator/templates/controller-template.js +17 -0
  89. package/dist/cjs/utils/cli/utils/template-generator/templates/controller-template.js.map +1 -0
  90. package/dist/cjs/utils/cli/utils/template-generator/templates/hooks-template.js +201 -0
  91. package/dist/cjs/utils/cli/utils/template-generator/templates/hooks-template.js.map +1 -0
  92. package/dist/cjs/utils/cli/utils/template-generator/templates/middlewares-template.js +286 -0
  93. package/dist/cjs/utils/cli/utils/template-generator/templates/middlewares-template.js.map +1 -0
  94. package/dist/cjs/utils/cli/utils/template-generator/templates/query-options-template.js +64 -0
  95. package/dist/cjs/utils/cli/utils/template-generator/templates/query-options-template.js.map +1 -0
  96. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js +42 -0
  97. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js.map +1 -0
  98. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js +29 -0
  99. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js.map +1 -0
  100. package/dist/cjs/utils/cli/utils/template-generators.js +34 -2
  101. package/dist/cjs/utils/cli/utils/template-generators.js.map +1 -1
  102. package/dist/cjs/utils/cli/utils/watermark-stamper.js +17 -3
  103. package/dist/cjs/utils/dotenv.helpers.js +43 -1
  104. package/dist/cjs/utils/dynamic-loader.js +270 -9
  105. package/dist/cjs/utils/features/api.features.js +226 -1
  106. package/dist/cjs/utils/features/api.features.js.map +1 -1
  107. package/dist/cjs/utils/features/change-case.features.js +67 -1
  108. package/dist/cjs/utils/features/port-and-host-allocator.js +105 -1
  109. package/dist/cjs/utils/helpers/api.features.helpers.js +112 -1
  110. package/dist/cjs/utils/helpers/change-case.helpers.js +177 -1
  111. package/dist/cjs/utils/helpers/deepmerge.helper.js +115 -1
  112. package/dist/cjs/utils/helpers/deepmerge.helper.js.map +1 -1
  113. package/dist/cjs/utils/helpers/dynamic-loader.helpers.js +76 -1
  114. package/dist/cjs/utils/helpers/fs.helpers.js +57 -1
  115. package/dist/cjs/utils/helpers/global.helpers.js +94 -1
  116. package/dist/cjs/utils/helpers/prisma.helpers.js +44 -1
  117. package/dist/cjs/utils/helpers/prisma.helpers.js.map +1 -1
  118. package/dist/cjs/utils/helpers/query-parser.helpers.js +45 -1
  119. package/dist/cjs/utils/helpers/routers.helpers.js +37 -1
  120. package/dist/cjs/utils/helpers/text.helpers.js +28 -1
  121. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +455 -1
  122. package/dist/cjs/utils/prisma/prisma-schema-parser.js +216 -4
  123. package/dist/cjs/utils/prisma/types.js +3 -1
  124. package/dist/cjs/utils/sheu.js +126 -1
  125. package/dist/cjs/utils/sheu.js.map +1 -1
  126. package/dist/cjs/utils/validate-dto.js +17 -1
  127. package/dist/cjs/utils/validate-schema.js +15 -1
  128. package/dist/esm/app.js +134 -1
  129. package/dist/esm/app.js.map +1 -1
  130. package/dist/esm/exports/auth/index.js +2 -1
  131. package/dist/esm/exports/controllers/index.js +4 -1
  132. package/dist/esm/exports/error-handler/index.js +4 -1
  133. package/dist/esm/exports/index.js +8 -1
  134. package/dist/esm/exports/middlewares/index.js +2 -1
  135. package/dist/esm/exports/prisma/index.js +6 -1
  136. package/dist/esm/exports/services/index.js +9 -1
  137. package/dist/esm/exports/utils/index.js +4 -1
  138. package/dist/esm/exports/utils/index.js.map +1 -1
  139. package/dist/esm/exports/validation/index.js +4 -1
  140. package/dist/esm/modules/auth/auth.controller.js +240 -1
  141. package/dist/esm/modules/auth/auth.controller.js.map +1 -1
  142. package/dist/esm/modules/auth/auth.router.js +76 -1
  143. package/dist/esm/modules/auth/auth.service.js +219 -1
  144. package/dist/esm/modules/auth/utils/auth-error-objects.js +4 -1
  145. package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js +73 -1
  146. package/dist/esm/modules/auth/utils/services/auth-action.service.js +90 -1
  147. package/dist/esm/modules/base/base.controller.js +203 -1
  148. package/dist/esm/modules/base/base.controller.js.map +1 -1
  149. package/dist/esm/modules/base/base.middlewares.js +81 -1
  150. package/dist/esm/modules/base/base.middlewares.js.map +1 -1
  151. package/dist/esm/modules/base/base.router.js +15 -1
  152. package/dist/esm/modules/base/base.service.js +608 -1
  153. package/dist/esm/modules/base/base.service.js.map +1 -1
  154. package/dist/esm/modules/base/types/base.service.types.js +2 -1
  155. package/dist/esm/modules/base/types/base.service.types.js.map +1 -1
  156. package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js +76 -1
  157. package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js +44 -1
  158. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +109 -1
  159. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
  160. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +198 -1
  161. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
  162. package/dist/esm/modules/base/utils/router-validator.js +14 -1
  163. package/dist/esm/modules/base/utils/service-hooks-manager.js +17 -1
  164. package/dist/esm/modules/debugger/debugger.service.js +43 -0
  165. package/dist/esm/modules/debugger/debugger.service.js.map +1 -0
  166. package/dist/esm/modules/email/email.service.js +97 -1
  167. package/dist/esm/modules/error-handler/error-handler.controller.js +107 -4
  168. package/dist/esm/modules/error-handler/utils/app-error.js +15 -1
  169. package/dist/esm/modules/error-handler/utils/catch-async.js +19 -1
  170. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +163 -3
  171. package/dist/esm/modules/file-upload/file-upload.controller.js +232 -1
  172. package/dist/esm/modules/file-upload/file-upload.controller.js.map +1 -1
  173. package/dist/esm/modules/file-upload/file-upload.router.js +54 -1
  174. package/dist/esm/modules/file-upload/file-upload.service.js +314 -1
  175. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +87 -1
  176. package/dist/esm/modules/swagger/swagger.router.js +33 -1
  177. package/dist/esm/modules/swagger/swagger.router.js.map +1 -1
  178. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +333 -1
  179. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js +58 -1
  180. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +34 -1
  181. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +46 -1
  182. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -1
  183. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +26 -1
  184. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +46 -1
  185. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +28 -1
  186. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +465 -1
  187. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +566 -1
  188. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +255 -1
  189. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -1
  190. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +101 -1
  191. package/dist/esm/paths.js +3 -1
  192. package/dist/esm/server.js +94 -5
  193. package/dist/esm/server.js.map +1 -1
  194. package/dist/esm/types/arkos-config.js +2 -1
  195. package/dist/esm/types/arkos-config.js.map +1 -1
  196. package/dist/esm/types/auth.js +2 -1
  197. package/dist/esm/types/index.js +8 -1
  198. package/dist/esm/types/index.js.map +1 -1
  199. package/dist/esm/types/router-config.js +2 -1
  200. package/dist/esm/utils/arkos-env.js +7 -1
  201. package/dist/esm/utils/cli/build.js +208 -5
  202. package/dist/esm/utils/cli/dev.js +147 -3
  203. package/dist/esm/utils/cli/generate.js +120 -1
  204. package/dist/esm/utils/cli/generate.js.map +1 -1
  205. package/dist/esm/utils/cli/index.js +94 -1
  206. package/dist/esm/utils/cli/index.js.map +1 -1
  207. package/dist/esm/utils/cli/prisma-generate.js +114 -0
  208. package/dist/esm/utils/cli/prisma-generate.js.map +1 -0
  209. package/dist/esm/utils/cli/start.js +96 -1
  210. package/dist/esm/utils/cli/utils/cli.helpers.js +16 -1
  211. package/dist/esm/utils/cli/utils/smart-fs-watcher.js +68 -1
  212. package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js +57 -0
  213. package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -0
  214. package/dist/esm/utils/cli/utils/template-generator/templates/controller-template.js +14 -0
  215. package/dist/esm/utils/cli/utils/template-generator/templates/controller-template.js.map +1 -0
  216. package/dist/esm/utils/cli/utils/template-generator/templates/hooks-template.js +198 -0
  217. package/dist/esm/utils/cli/utils/template-generator/templates/hooks-template.js.map +1 -0
  218. package/dist/esm/utils/cli/utils/template-generator/templates/middlewares-template.js +283 -0
  219. package/dist/esm/utils/cli/utils/template-generator/templates/middlewares-template.js.map +1 -0
  220. package/dist/esm/utils/cli/utils/template-generator/templates/query-options-template.js +61 -0
  221. package/dist/esm/utils/cli/utils/template-generator/templates/query-options-template.js.map +1 -0
  222. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js +39 -0
  223. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js.map +1 -0
  224. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js +26 -0
  225. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js.map +1 -0
  226. package/dist/esm/utils/cli/utils/template-generators.js +28 -2
  227. package/dist/esm/utils/cli/utils/template-generators.js.map +1 -1
  228. package/dist/esm/utils/cli/utils/watermark-stamper.js +15 -3
  229. package/dist/esm/utils/dotenv.helpers.js +37 -1
  230. package/dist/esm/utils/dynamic-loader.js +254 -9
  231. package/dist/esm/utils/features/api.features.js +220 -1
  232. package/dist/esm/utils/features/api.features.js.map +1 -1
  233. package/dist/esm/utils/features/change-case.features.js +31 -1
  234. package/dist/esm/utils/features/port-and-host-allocator.js +67 -1
  235. package/dist/esm/utils/helpers/api.features.helpers.js +106 -1
  236. package/dist/esm/utils/helpers/change-case.helpers.js +161 -1
  237. package/dist/esm/utils/helpers/deepmerge.helper.js +113 -1
  238. package/dist/esm/utils/helpers/deepmerge.helper.js.map +1 -1
  239. package/dist/esm/utils/helpers/dynamic-loader.helpers.js +69 -1
  240. package/dist/esm/utils/helpers/fs.helpers.js +48 -1
  241. package/dist/esm/utils/helpers/global.helpers.js +51 -1
  242. package/dist/esm/utils/helpers/prisma.helpers.js +36 -1
  243. package/dist/esm/utils/helpers/prisma.helpers.js.map +1 -1
  244. package/dist/esm/utils/helpers/query-parser.helpers.js +40 -1
  245. package/dist/esm/utils/helpers/routers.helpers.js +29 -1
  246. package/dist/esm/utils/helpers/text.helpers.js +22 -1
  247. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +448 -1
  248. package/dist/esm/utils/prisma/prisma-schema-parser.js +209 -4
  249. package/dist/esm/utils/prisma/types.js +2 -1
  250. package/dist/esm/utils/sheu.js +124 -1
  251. package/dist/esm/utils/sheu.js.map +1 -1
  252. package/dist/esm/utils/validate-dto.js +11 -1
  253. package/dist/esm/utils/validate-schema.js +9 -1
  254. package/dist/types/exports/utils/index.d.ts +2 -2
  255. package/dist/types/modules/base/base.controller.d.ts +2 -0
  256. package/dist/types/modules/base/base.service.d.ts +5 -0
  257. package/dist/types/modules/base/types/base.service.types.d.ts +11 -8
  258. package/dist/types/modules/base/utils/helpers/base.router.helpers.d.ts +2 -0
  259. package/dist/types/modules/debugger/debugger.service.d.ts +7 -0
  260. package/dist/types/types/arkos-config.d.ts +3 -0
  261. package/dist/types/types/index.d.ts +3 -0
  262. package/dist/types/utils/cli/generate.d.ts +2 -0
  263. package/dist/types/utils/cli/prisma-generate.d.ts +1 -0
  264. package/dist/types/utils/features/api.features.d.ts +3 -5
  265. package/dist/types/utils/sheu.d.ts +4 -0
  266. package/package.json +2 -2
  267. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +0 -21
  268. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -1
  269. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -12
  270. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -1
  271. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-hooks-template.js +0 -144
  272. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-hooks-template.js.map +0 -1
  273. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +0 -256
  274. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +0 -1
  275. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +0 -36
  276. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -1
  277. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +0 -18
  278. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -1
  279. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js +0 -9
  280. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js.map +0 -1
  281. package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +0 -21
  282. package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -1
  283. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -12
  284. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -1
  285. package/dist/esm/utils/cli/utils/template-generator/templates/generate-hooks-template.js +0 -144
  286. package/dist/esm/utils/cli/utils/template-generator/templates/generate-hooks-template.js.map +0 -1
  287. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js +0 -256
  288. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +0 -1
  289. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +0 -36
  290. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -1
  291. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js +0 -18
  292. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -1
  293. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js +0 -9
  294. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js.map +0 -1
  295. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-auth-configs-template.d.ts → auth-configs-template.d.ts} +0 -0
  296. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-controller-template.d.ts → controller-template.d.ts} +0 -0
  297. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-hooks-template.d.ts → hooks-template.d.ts} +0 -0
  298. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-middlewares.d.ts → middlewares-template.d.ts} +0 -0
  299. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-prisma-query-options.d.ts → query-options-template.d.ts} +0 -0
  300. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-router-template.d.ts → router-template.d.ts} +0 -0
  301. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-service-template.d.ts → service-template.d.ts} +0 -0
@@ -1 +1,260 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(m){return m&&m.__esModule?m:{default:m}};Object.defineProperty(exports,"__esModule",{value:!0});const prisma_json_schema_generator_1=__importDefault(require("../../../../utils/prisma/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.toLowerCase()==="auth"||n.toLowerCase()==="login"||n.toLowerCase()==="signup"||n.toLowerCase()==="getme"||n.toLowerCase()==="updateme"||n.toLowerCase()==="updatepassword"?"Auth":n}return null}extractActionFromOperationId(e){return e?e.includes("createMany")?"createMany":e.includes("updateMany")?"updateMany":e.includes("deleteMany")?"deleteMany":e.includes("updateMe")?"updateMe":e.includes("updatePassword")?"updatePassword":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:null}extractModelNameFromOperationId(e){if(!e)return null;let t=e.replace(/^(create|update|delete|find)Many/i,"").replace(/^(create|update|delete|find)/i,"").replace(/ById$/i,"").replace(/s$/,"");return e.toLowerCase().includes("login")||e.toLowerCase().includes("signup")||e.toLowerCase().includes("getme")||e.toLowerCase().includes("updateme")||e.toLowerCase().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 o={method:f,path:n,operationId:u.operationId};this.extractSchemaRefsWithContext(u,t,o)})}),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[o,l]of f){const i=this.getSchemaNameFromRef(o);if(!i||t[i]||!i.includes("ModelSchema")&&!i.includes("Schema"))continue;let s=null,a=null;l.operationId&&(s=this.extractModelNameFromOperationId(l.operationId),a=this.extractActionFromOperationId(l.operationId)),(!s||!a)&&(s=s||this.extractModelNameFromSchemaRef(o),a=a||this.extractActionFromSchemaRef(o)),s&&a&&(u.has(s)||u.set(s,new Set),u.get(s).add(a))}for(const[o,l]of u)try{const i=Array.from(l),s=await prisma_json_schema_generator_1.default.generateModelSchemas({modelName:o,arkosConfig:n,schemasToGenerate:i});Object.entries(s).forEach(([a,d])=>{let r=a;["auth","login","me","password","me"].includes(o.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]=d})}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=[],o=[];for(const[l,i]of n){const s={ref:l,context:i};c.push(s);const a=this.getSchemaNameFromRef(l);if(a)if(t[a])u.push(s);else{f.push(s);let d=null,r=null;i.operationId&&(d=this.extractModelNameFromOperationId(i.operationId),r=this.extractActionFromOperationId(i.operationId)),(!d||!r)&&(d=d||this.extractModelNameFromSchemaRef(l),r=r||this.extractActionFromSchemaRef(l)),d&&r&&o.push({model:d,action:r,ref:l,operationId:i.operationId})}}return{allRefs:c,missingRefs:f,existingRefs:u,modelActions:o}}}const missingJsonSchemaGenerator=new MissingJsonSchemasGenerator;exports.default=missingJsonSchemaGenerator;
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
+ const prisma_json_schema_generator_1 = __importDefault(require("../../../../utils/prisma/prisma-json-schema-generator"));
7
+ const pluralize_1 = require("pluralize");
8
+ class MissingJsonSchemasGenerator {
9
+ extractModelNameFromSchemaRef(schemaRef) {
10
+ const match = schemaRef.match(/#\/components\/schemas\/(?:Create|Update|UpdateMany|FindOne|FindMany|CreateMany)?(.+?)(?:ModelSchema|Schema)$/);
11
+ if (match) {
12
+ let modelName = match[1];
13
+ if (modelName.toLowerCase() === "auth" ||
14
+ modelName.toLowerCase() === "login" ||
15
+ modelName.toLowerCase() === "signup" ||
16
+ modelName.toLowerCase() === "getme" ||
17
+ modelName.toLowerCase() === "updateme" ||
18
+ modelName.toLowerCase() === "updatepassword") {
19
+ return "Auth";
20
+ }
21
+ return modelName;
22
+ }
23
+ return null;
24
+ }
25
+ extractActionFromOperationId(operationId) {
26
+ if (!operationId)
27
+ return null;
28
+ if (operationId.includes("createMany"))
29
+ return "createMany";
30
+ if (operationId.includes("updateMany"))
31
+ return "updateMany";
32
+ if (operationId.includes("deleteMany"))
33
+ return "deleteMany";
34
+ if (operationId.includes("updateMe"))
35
+ return "updateMe";
36
+ if (operationId.includes("updatePassword"))
37
+ return "updatePassword";
38
+ if (operationId.startsWith("create"))
39
+ return "createOne";
40
+ if (operationId.startsWith("update"))
41
+ return "updateOne";
42
+ if (operationId.startsWith("delete"))
43
+ return "deleteOne";
44
+ if (operationId.startsWith("find") &&
45
+ (operationId.includes("ById") || operationId.includes("One")))
46
+ return "findOne";
47
+ if (operationId.startsWith("find"))
48
+ return "findMany";
49
+ if (operationId.includes("login") || operationId === "login")
50
+ return "login";
51
+ if (operationId.includes("signup") || operationId === "signup")
52
+ return "signup";
53
+ if (operationId.includes("getMe") || operationId === "getMe")
54
+ return "getMe";
55
+ if (operationId.includes("updateMe") || operationId === "updateMe")
56
+ return "updateMe";
57
+ if (operationId.includes("updatePassword") ||
58
+ operationId === "updatePassword")
59
+ return "updatePassword";
60
+ return null;
61
+ }
62
+ extractModelNameFromOperationId(operationId) {
63
+ if (!operationId)
64
+ return null;
65
+ let modelName = operationId
66
+ .replace(/^(create|update|delete|find)Many/i, "")
67
+ .replace(/^(create|update|delete|find)/i, "")
68
+ .replace(/ById$/i, "");
69
+ if (operationId.toLowerCase().includes("login") ||
70
+ operationId.toLowerCase().includes("signup") ||
71
+ operationId.toLowerCase().includes("getme") ||
72
+ operationId.toLowerCase().includes("updateme") ||
73
+ operationId.toLowerCase().includes("updatepassword")) {
74
+ return "Auth";
75
+ }
76
+ return (0, pluralize_1.singular)(modelName) || null;
77
+ }
78
+ extractSchemaRefsWithContext(obj, refs = new Map(), context = {}) {
79
+ if (typeof obj !== "object" || obj === null) {
80
+ return refs;
81
+ }
82
+ if (Array.isArray(obj)) {
83
+ obj.forEach((item) => this.extractSchemaRefsWithContext(item, refs, context));
84
+ return refs;
85
+ }
86
+ if (obj.operationId && typeof obj.operationId === "string") {
87
+ context = { ...context, operationId: obj.operationId };
88
+ }
89
+ if (obj.$ref && typeof obj.$ref === "string") {
90
+ refs.set(obj.$ref, { ...context });
91
+ }
92
+ Object.values(obj).forEach((value) => {
93
+ this.extractSchemaRefsWithContext(value, refs, context);
94
+ });
95
+ return refs;
96
+ }
97
+ extractPathSchemaRefs(paths) {
98
+ const refs = new Map();
99
+ Object.entries(paths).forEach(([path, pathItem]) => {
100
+ if (!pathItem)
101
+ return;
102
+ Object.entries(pathItem).forEach(([method, operation]) => {
103
+ if (!operation || typeof operation !== "object")
104
+ return;
105
+ const context = {
106
+ method,
107
+ path,
108
+ operationId: operation.operationId,
109
+ };
110
+ this.extractSchemaRefsWithContext(operation, refs, context);
111
+ });
112
+ });
113
+ return refs;
114
+ }
115
+ getSchemaNameFromRef(ref) {
116
+ const match = ref.match(/#\/components\/schemas\/(.+)$/);
117
+ return match ? match[1] : null;
118
+ }
119
+ async generateMissingJsonSchemas(currentPaths, currentJsonSchemas, arkosConfig) {
120
+ const missingSchemas = {};
121
+ const schemaRefsWithContext = this.extractPathSchemaRefs(currentPaths);
122
+ const modelActions = new Map();
123
+ for (const [ref, context] of schemaRefsWithContext) {
124
+ const schemaName = this.getSchemaNameFromRef(ref);
125
+ if (!schemaName)
126
+ continue;
127
+ if (currentJsonSchemas[schemaName])
128
+ continue;
129
+ if (!schemaName.includes("ModelSchema") && !schemaName.includes("Schema"))
130
+ continue;
131
+ let modelName = null;
132
+ let action = null;
133
+ if (context.operationId) {
134
+ modelName = this.extractModelNameFromOperationId(context.operationId);
135
+ action = this.extractActionFromOperationId(context.operationId);
136
+ }
137
+ if (!modelName || !action) {
138
+ modelName = modelName || this.extractModelNameFromSchemaRef(ref);
139
+ action = action || this.extractActionFromSchemaRef(ref);
140
+ }
141
+ if (modelName && action) {
142
+ if (!modelActions.has(modelName))
143
+ modelActions.set(modelName, new Set());
144
+ modelActions.get(modelName).add(action);
145
+ }
146
+ }
147
+ for (const [modelName, actions] of modelActions) {
148
+ try {
149
+ const actionsArray = Array.from(actions);
150
+ const generatedSchemas = await prisma_json_schema_generator_1.default.generateModelSchemas({
151
+ modelName,
152
+ arkosConfig,
153
+ schemasToGenerate: actionsArray,
154
+ });
155
+ Object.entries(generatedSchemas).forEach(([key, schema]) => {
156
+ let mappedKey = key;
157
+ const authModuleModel = ["auth", "login", "me", "password", "me"];
158
+ if (authModuleModel.includes(modelName.toLowerCase())) {
159
+ if (key === "LoginSchema")
160
+ mappedKey = "LoginSchema";
161
+ else if (key === "SignupSchema")
162
+ mappedKey = "SignupSchema";
163
+ else if (key === "GetMeSchema")
164
+ mappedKey = "GetMeSchema";
165
+ else if (key === "UpdateMeSchema")
166
+ mappedKey = "UpdateMeSchema";
167
+ else if (key === "UpdatePasswordSchema")
168
+ mappedKey = "UpdatePasswordSchema";
169
+ }
170
+ else {
171
+ if (key.includes("ModelSchema")) {
172
+ mappedKey = key;
173
+ }
174
+ else {
175
+ mappedKey = `${key}ModelSchema`;
176
+ }
177
+ }
178
+ missingSchemas[mappedKey] = schema;
179
+ });
180
+ }
181
+ catch (error) {
182
+ }
183
+ }
184
+ return missingSchemas;
185
+ }
186
+ extractActionFromSchemaRef(schemaRef) {
187
+ if (schemaRef.includes("CreateMany"))
188
+ return "createMany";
189
+ if (schemaRef.includes("Create"))
190
+ return "createOne";
191
+ if (schemaRef.includes("UpdateMany"))
192
+ return "updateMany";
193
+ if (schemaRef.includes("Update") &&
194
+ !schemaRef.includes("UpdateMe") &&
195
+ !schemaRef.includes("UpdatePassword"))
196
+ return "updateOne";
197
+ if (schemaRef.includes("FindMany"))
198
+ return "findMany";
199
+ if (schemaRef.includes("FindOne"))
200
+ return "findOne";
201
+ if (schemaRef.includes("Login"))
202
+ return "login";
203
+ if (schemaRef.includes("Signup"))
204
+ return "signup";
205
+ if (schemaRef.includes("GetMe"))
206
+ return "getMe";
207
+ if (schemaRef.includes("UpdateMe"))
208
+ return "updateMe";
209
+ if (schemaRef.includes("UpdatePassword"))
210
+ return "updatePassword";
211
+ return null;
212
+ }
213
+ analyzeMissingSchemas(currentPaths, currentJsonSchemas) {
214
+ const schemaRefsWithContext = this.extractPathSchemaRefs(currentPaths);
215
+ const allRefs = [];
216
+ const missingRefs = [];
217
+ const existingRefs = [];
218
+ const modelActions = [];
219
+ for (const [ref, context] of schemaRefsWithContext) {
220
+ const refWithContext = { ref, context };
221
+ allRefs.push(refWithContext);
222
+ const schemaName = this.getSchemaNameFromRef(ref);
223
+ if (!schemaName)
224
+ continue;
225
+ if (currentJsonSchemas[schemaName]) {
226
+ existingRefs.push(refWithContext);
227
+ }
228
+ else {
229
+ missingRefs.push(refWithContext);
230
+ let modelName = null;
231
+ let action = null;
232
+ if (context.operationId) {
233
+ modelName = this.extractModelNameFromOperationId(context.operationId);
234
+ action = this.extractActionFromOperationId(context.operationId);
235
+ }
236
+ if (!modelName || !action) {
237
+ modelName = modelName || this.extractModelNameFromSchemaRef(ref);
238
+ action = action || this.extractActionFromSchemaRef(ref);
239
+ }
240
+ if (modelName && action) {
241
+ modelActions.push({
242
+ model: modelName,
243
+ action,
244
+ ref,
245
+ operationId: context.operationId,
246
+ });
247
+ }
248
+ }
249
+ }
250
+ return {
251
+ allRefs,
252
+ missingRefs,
253
+ existingRefs,
254
+ modelActions,
255
+ };
256
+ }
257
+ }
258
+ const missingJsonSchemaGenerator = new MissingJsonSchemasGenerator();
259
+ exports.default = missingJsonSchemaGenerator;
260
+ //# sourceMappingURL=missing-json-schemas-generator.js.map
@@ -1 +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 PrismaJsonSchemaGenerator from \"../../../../utils/prisma/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.toLowerCase() === \"auth\" ||\n modelName.toLowerCase() === \"login\" ||\n modelName.toLowerCase() === \"signup\" ||\n modelName.toLowerCase() === \"getme\" ||\n modelName.toLowerCase() === \"updateme\" ||\n modelName.toLowerCase() === \"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 if (!operationId) return 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 if (operationId.includes(\"updateMe\")) return \"updateMe\";\n if (operationId.includes(\"updatePassword\")) return \"updatePassword\";\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 if (!operationId) return 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.toLowerCase().includes(\"login\") ||\n operationId.toLowerCase().includes(\"signup\") ||\n operationId.toLowerCase().includes(\"getme\") ||\n operationId.toLowerCase().includes(\"updateme\") ||\n operationId.toLowerCase().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 PrismaJsonSchemaGenerator.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"]}
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 PrismaJsonSchemaGenerator from \"../../../../utils/prisma/prisma-json-schema-generator\";\nimport { singular } from \"pluralize\";\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.toLowerCase() === \"auth\" ||\n modelName.toLowerCase() === \"login\" ||\n modelName.toLowerCase() === \"signup\" ||\n modelName.toLowerCase() === \"getme\" ||\n modelName.toLowerCase() === \"updateme\" ||\n modelName.toLowerCase() === \"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 if (!operationId) return 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 if (operationId.includes(\"updateMe\")) return \"updateMe\";\n if (operationId.includes(\"updatePassword\")) return \"updatePassword\";\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 if (!operationId) return 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\n // Handle auth operations\n if (\n operationId.toLowerCase().includes(\"login\") ||\n operationId.toLowerCase().includes(\"signup\") ||\n operationId.toLowerCase().includes(\"getme\") ||\n operationId.toLowerCase().includes(\"updateme\") ||\n operationId.toLowerCase().includes(\"updatepassword\")\n ) {\n return \"Auth\";\n }\n\n return singular(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 PrismaJsonSchemaGenerator.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"]}
@@ -1 +1,112 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getOpenAPIJsonSchemasByConfigMode=getOpenAPIJsonSchemasByConfigMode,exports.getCorrectJsonSchemaName=getCorrectJsonSchemaName,exports.kebabToHuman=kebabToHuman,exports.getSchemaRef=getSchemaRef,exports.generatePathsForModels=generatePathsForModels,exports.localValidatorFileExists=localValidatorFileExists;const utils_1=require("../../../../exports/utils"),get_system_json_schema_paths_1=require("./get-system-json-schema-paths"),get_authentication_json_schema_paths_1=__importDefault(require("./get-authentication-json-schema-paths")),generate_zod_json_schemas_1=__importDefault(require("./json-schema-generators/generate-zod-json-schemas")),generate_class_validator_json_schemas_1=require("./json-schema-generators/generate-class-validator-json-schemas"),generate_prisma_json_schemas_1=require("./json-schema-generators/generate-prisma-json-schemas"),generate_prisma_model_main_routes_paths_1=require("./json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths"),generate_prisma_model_parent_routes_paths_1=__importDefault(require("./json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths")),sheu_1=__importDefault(require("../../../../utils/sheu")),prisma_schema_parser_1=__importDefault(require("../../../../utils/prisma/prisma-schema-parser")),dynamic_loader_1=require("../../../../utils/dynamic-loader");async function getOpenAPIJsonSchemasByConfigMode(e){switch(e?.swagger.mode){case"prisma":return await(0,generate_prisma_json_schemas_1.generatePrismaJsonSchemas)(e);case"class-validator":return await(0,generate_class_validator_json_schemas_1.generateClassValidatorJsonSchemas)();case"zod":return await(0,generate_zod_json_schemas_1.default)();default:throw Error("Unknown mode for auto documentation, supported values are prisma, class-validator, zod or json-schemas")}}function getCorrectJsonSchemaName(e,t,s){const a=(0,utils_1.pascalCase)(t);return`${{model:a,create:`Create${a}`,createMany:`CreateMany${a}`,findOne:`FindOne${a}`,findMany:`FindMany${a}`,update:`Update${a}`,updateMany:`UpdateMany${a}`,query:`Query${a}`,login:"Login",signup:"Signup",updateMe:"UpdateMe",updatePassword:"UpdatePassword"}[e]??(0,utils_1.pascalCase)(e)}${s}`}function kebabToHuman(e){return e.split("-").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function getSchemaRef(e,t){if(e=(0,utils_1.pascalCase)(e),["getme","updateme","login","signup","updatepassword","password","me"].some(r=>r===e.toLowerCase())&&t==="prisma")return`#/components/schemas/${e}Schema`;switch(t){case"prisma":return`#/components/schemas/${e}ModelSchema`;case"zod":return`#/components/schemas/${e}Schema`;case"class-validator":return`#/components/schemas/${e}Dto`;default:return sheu_1.default.error(`Unknown Arkos.js swagger documentation provided, available options are prisma, zod or class-validator but received ${t}`),""}}async function generatePathsForModels(e){if(!e?.swagger)return{};let s={};const a=prisma_schema_parser_1.default.getModelsAsArrayOfStrings();for(const r of a)await(0,generate_prisma_model_main_routes_paths_1.generatePrismaModelMainRoutesPaths)(r,s,e),await(0,generate_prisma_model_parent_routes_paths_1.default)(r,s,e);return s={...s,...(0,get_system_json_schema_paths_1.getSystemJsonSchemaPaths)()},s={...s,...await(0,get_authentication_json_schema_paths_1.default)(e)||{}},s}async function localValidatorFileExists(e,t,s){return s?.swagger?.mode==="prisma"?!1:!!(0,dynamic_loader_1.getModuleComponents)(t)?.[s.validation?.resolver==="zod"?"schemas":"dtos"]?.[(0,utils_1.camelCase)(e)]}
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.getOpenAPIJsonSchemasByConfigMode = getOpenAPIJsonSchemasByConfigMode;
7
+ exports.getCorrectJsonSchemaName = getCorrectJsonSchemaName;
8
+ exports.kebabToHuman = kebabToHuman;
9
+ exports.getSchemaRef = getSchemaRef;
10
+ exports.generatePathsForModels = generatePathsForModels;
11
+ exports.localValidatorFileExists = localValidatorFileExists;
12
+ const utils_1 = require("../../../../exports/utils");
13
+ const get_system_json_schema_paths_1 = require("./get-system-json-schema-paths");
14
+ const get_authentication_json_schema_paths_1 = __importDefault(require("./get-authentication-json-schema-paths"));
15
+ const generate_zod_json_schemas_1 = __importDefault(require("./json-schema-generators/generate-zod-json-schemas"));
16
+ const generate_class_validator_json_schemas_1 = require("./json-schema-generators/generate-class-validator-json-schemas");
17
+ const generate_prisma_json_schemas_1 = require("./json-schema-generators/generate-prisma-json-schemas");
18
+ const generate_prisma_model_main_routes_paths_1 = require("./json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths");
19
+ const generate_prisma_model_parent_routes_paths_1 = __importDefault(require("./json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths"));
20
+ const sheu_1 = __importDefault(require("../../../../utils/sheu"));
21
+ const prisma_schema_parser_1 = __importDefault(require("../../../../utils/prisma/prisma-schema-parser"));
22
+ const dynamic_loader_1 = require("../../../../utils/dynamic-loader");
23
+ async function getOpenAPIJsonSchemasByConfigMode(arkosConfig) {
24
+ switch (arkosConfig?.swagger.mode) {
25
+ case "prisma":
26
+ return await (0, generate_prisma_json_schemas_1.generatePrismaJsonSchemas)(arkosConfig);
27
+ case "class-validator":
28
+ return await (0, generate_class_validator_json_schemas_1.generateClassValidatorJsonSchemas)();
29
+ case "zod":
30
+ return await (0, generate_zod_json_schemas_1.default)();
31
+ default:
32
+ throw Error("Unknown mode for auto documentation, supported values are prisma, class-validator, zod or json-schemas");
33
+ }
34
+ }
35
+ function getCorrectJsonSchemaName(type, modelName, suffix) {
36
+ const pascalModelName = (0, utils_1.pascalCase)(modelName);
37
+ const map = {
38
+ model: pascalModelName,
39
+ create: `Create${pascalModelName}`,
40
+ createMany: `CreateMany${pascalModelName}`,
41
+ findOne: `FindOne${pascalModelName}`,
42
+ findMany: `FindMany${pascalModelName}`,
43
+ update: `Update${pascalModelName}`,
44
+ updateMany: `UpdateMany${pascalModelName}`,
45
+ query: `Query${pascalModelName}`,
46
+ login: "Login",
47
+ signup: "Signup",
48
+ updateMe: "UpdateMe",
49
+ updatePassword: "UpdatePassword",
50
+ };
51
+ const baseName = map[type] ?? (0, utils_1.pascalCase)(type);
52
+ return `${baseName}${suffix}`;
53
+ }
54
+ function kebabToHuman(kebabStr) {
55
+ return kebabStr
56
+ .split("-")
57
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
58
+ .join(" ");
59
+ }
60
+ function getSchemaRef(schemaName, mode) {
61
+ schemaName = (0, utils_1.pascalCase)(schemaName);
62
+ const specialCases = [
63
+ "getme",
64
+ "updateme",
65
+ "login",
66
+ "signup",
67
+ "updatepassword",
68
+ "password",
69
+ "me",
70
+ ];
71
+ const isSpecialCase = specialCases.some((keyword) => keyword === schemaName.toLowerCase());
72
+ if (isSpecialCase && mode === "prisma")
73
+ return `#/components/schemas/${schemaName}Schema`;
74
+ switch (mode) {
75
+ case "prisma":
76
+ return `#/components/schemas/${schemaName}ModelSchema`;
77
+ case "zod":
78
+ return `#/components/schemas/${schemaName}Schema`;
79
+ case "class-validator":
80
+ return `#/components/schemas/${schemaName}Dto`;
81
+ default:
82
+ sheu_1.default.error(`Unknown Arkos.js swagger documentation provided, available options are prisma, zod or class-validator but received ${mode}`);
83
+ return "";
84
+ }
85
+ }
86
+ async function generatePathsForModels(arkosConfig) {
87
+ const swaggerConfig = arkosConfig?.swagger;
88
+ if (!swaggerConfig)
89
+ return {};
90
+ let paths = {};
91
+ const models = prisma_schema_parser_1.default.getModelsAsArrayOfStrings();
92
+ for (const model of models) {
93
+ await (0, generate_prisma_model_main_routes_paths_1.generatePrismaModelMainRoutesPaths)(model, paths, arkosConfig);
94
+ await (0, generate_prisma_model_parent_routes_paths_1.default)(model, paths, arkosConfig);
95
+ }
96
+ paths = {
97
+ ...paths,
98
+ ...(0, get_system_json_schema_paths_1.getSystemJsonSchemaPaths)(),
99
+ };
100
+ paths = {
101
+ ...paths,
102
+ ...((await (0, get_authentication_json_schema_paths_1.default)(arkosConfig)) || {}),
103
+ };
104
+ return paths;
105
+ }
106
+ async function localValidatorFileExists(action, modelName, arkosConfig) {
107
+ if (arkosConfig?.swagger?.mode === "prisma")
108
+ return false;
109
+ const moduleComponents = (0, dynamic_loader_1.getModuleComponents)(modelName);
110
+ return !!moduleComponents?.[arkosConfig.validation?.resolver === "zod" ? "schemas" : "dtos"]?.[(0, utils_1.camelCase)(action)];
111
+ }
112
+ //# sourceMappingURL=swagger.router.helpers.js.map
package/dist/cjs/paths.js CHANGED
@@ -1 +1,9 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ROOT_DIR=void 0;const path_1=__importDefault(require("path"));exports.ROOT_DIR=path_1.default.resolve(__dirname,"../..");
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.ROOT_DIR = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ exports.ROOT_DIR = path_1.default.resolve(__dirname, "../..");
9
+ //# sourceMappingURL=paths.js.map
@@ -1,5 +1,103 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.server=exports._arkosConfig=void 0,exports.terminateApplicationRunningProcessAndServer=terminateApplicationRunningProcessAndServer,exports.getArkosConfig=getArkosConfig,exports.getExpressApp=getExpressApp,exports.initApp=initApp;const app_1=require("./app"),deepmerge_helper_1=__importDefault(require("./utils/helpers/deepmerge.helper")),http_1=__importDefault(require("http")),sheu_1=__importDefault(require("./utils/sheu")),text_helpers_1=require("./utils/helpers/text.helpers"),port_and_host_allocator_1=__importDefault(require("./utils/features/port-and-host-allocator"));process.on("uncaughtException",e=>{e.message.includes("EPIPE")||(sheu_1.default.error(`
2
- UNCAUGHT EXCEPTION! SHUTTING DOWN...
3
- `,{timestamp:!0,bold:!0}),console.error(e.name,e.message),console.error(e),process.exit(1))});let server,_app;exports._arkosConfig={welcomeMessage:"Welcome to our RESTful API generated by Arkos, find out more about Arkos at www.arkosjs.com",port:Number(process.env.CLI_PORT)||Number(process.env.PORT)||8e3,host:process.env.CLI_HOST||process.env.HOST||"localhost",fileUpload:{baseUploadDir:"uploads",baseRoute:"/api/uploads"},routers:{strict:!1},available:!1};async function initApp(e={}){try{exports._arkosConfig.available=!0;const r=await port_and_host_allocator_1.default.getHostAndAvailablePort(process.env,e);exports._arkosConfig=(0,deepmerge_helper_1.default)(exports._arkosConfig,e),_app=await(0,app_1.bootstrap)(exports._arkosConfig);const t=new Date().toTimeString().split(" ")[0];return"port"in e&&e?.port!==void 0||!("port"in e)?(exports.server=server=http_1.default.createServer(_app),exports._arkosConfig?.configureServer&&await exports._arkosConfig.configureServer(server),server.listen(Number(r?.port),r.host==="localhost"?"127.0.0.1":r.host,()=>{const o=`${sheu_1.default.gray(t)} {{server}} waiting on http://${r?.host}:${r?.port}`;sheu_1.default.ready(o.replace("{{server}}",`${(0,text_helpers_1.capitalize)(process.env.NODE_ENV||"development")} server`)),exports._arkosConfig?.swagger?.mode&&sheu_1.default.ready(`${o.replace("{{server}}","Documentation")}${exports._arkosConfig?.swagger?.endpoint||"/api/docs"}`)})):sheu_1.default.warn(`${sheu_1.default.gray(t)} Port set to undefined, hence no internal http server was setup.`),_app}catch(r){sheu_1.default.error(r?.message||"Something went wrong while starting your application!"),console.error(r)}}process.on("unhandledRejection",e=>{sheu_1.default.error(`
4
- UNHANDLED REJECTION! SHUTTING DOWN...
5
- `,{timestamp:!0,bold:!0}),console.error(e.name,e.message),console.error(e),server?.close(()=>{process.exit(1)})});function terminateApplicationRunningProcessAndServer(){server?.close(()=>{process.exit(1)})}function getArkosConfig(){return exports._arkosConfig}function getExpressApp(){return _app}
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.server = exports._arkosConfig = void 0;
7
+ exports.terminateApplicationRunningProcessAndServer = terminateApplicationRunningProcessAndServer;
8
+ exports.getArkosConfig = getArkosConfig;
9
+ exports.getExpressApp = getExpressApp;
10
+ exports.initApp = initApp;
11
+ const app_1 = require("./app");
12
+ const deepmerge_helper_1 = __importDefault(require("./utils/helpers/deepmerge.helper"));
13
+ const http_1 = __importDefault(require("http"));
14
+ const sheu_1 = __importDefault(require("./utils/sheu"));
15
+ const text_helpers_1 = require("./utils/helpers/text.helpers");
16
+ const port_and_host_allocator_1 = __importDefault(require("./utils/features/port-and-host-allocator"));
17
+ const dev_1 = require("./utils/cli/dev");
18
+ const cli_helpers_1 = require("./utils/cli/utils/cli.helpers");
19
+ const start_1 = require("./utils/cli/start");
20
+ process.on("uncaughtException", (err) => {
21
+ if (err.message.includes("EPIPE"))
22
+ return;
23
+ sheu_1.default.error("\nUNCAUGHT EXCEPTION! SHUTTING DOWN...\n", {
24
+ timestamp: true,
25
+ bold: true,
26
+ });
27
+ console.error(err.name, err.message);
28
+ console.error(err);
29
+ process.exit(1);
30
+ });
31
+ let server;
32
+ let _app;
33
+ exports._arkosConfig = {
34
+ welcomeMessage: "Welcome to our RESTful API generated by Arkos, find out more about Arkos at www.arkosjs.com",
35
+ port: Number(process.env.CLI_PORT) || Number(process.env.PORT) || 8000,
36
+ host: process.env.CLI_HOST || process.env.HOST || "localhost",
37
+ fileUpload: {
38
+ baseUploadDir: "uploads",
39
+ baseRoute: "/api/uploads",
40
+ },
41
+ routers: {
42
+ strict: false,
43
+ },
44
+ available: false,
45
+ debugging: {
46
+ level: 1,
47
+ },
48
+ };
49
+ async function initApp(arkosConfig = {}) {
50
+ try {
51
+ exports._arkosConfig.available = true;
52
+ const portAndHost = await port_and_host_allocator_1.default.getHostAndAvailablePort(process.env, arkosConfig);
53
+ exports._arkosConfig = (0, deepmerge_helper_1.default)(exports._arkosConfig, arkosConfig);
54
+ _app = await (0, app_1.bootstrap)(exports._arkosConfig);
55
+ const time = new Date().toTimeString().split(" ")[0];
56
+ if (("port" in arkosConfig && arkosConfig?.port !== undefined) ||
57
+ !("port" in arkosConfig)) {
58
+ exports.server = server = http_1.default.createServer(_app);
59
+ if (exports._arkosConfig?.configureServer)
60
+ await exports._arkosConfig.configureServer(server);
61
+ server.listen(Number(portAndHost?.port), portAndHost.host === "localhost" ? "127.0.0.1" : portAndHost.host, () => {
62
+ const message = `${sheu_1.default.gray(time)} {{server}} waiting on http://${portAndHost?.host}:${portAndHost?.port}`;
63
+ sheu_1.default.ready(message.replace("{{server}}", `${(0, text_helpers_1.capitalize)(process.env.NODE_ENV || "development")} server`));
64
+ if (exports._arkosConfig?.swagger?.mode)
65
+ sheu_1.default.ready(`${message.replace("{{server}}", "Documentation")}${exports._arkosConfig?.swagger?.endpoint || "/api/docs"}`);
66
+ });
67
+ }
68
+ else {
69
+ sheu_1.default.warn(`${sheu_1.default.gray(time)} Port set to undefined, hence no internal http server was setup.`);
70
+ }
71
+ return _app;
72
+ }
73
+ catch (err) {
74
+ sheu_1.default.error(err?.message || "Something went wrong while starting your application!");
75
+ console.error(err);
76
+ (0, dev_1.killDevelopmentServerChildProcess)?.();
77
+ (0, cli_helpers_1.killServerChildProcess)?.();
78
+ (0, start_1.killProductionServerChildProcess)?.();
79
+ }
80
+ }
81
+ process.on("unhandledRejection", (err) => {
82
+ sheu_1.default.error("\nUNHANDLED REJECTION! SHUTTING DOWN...\n", {
83
+ timestamp: true,
84
+ bold: true,
85
+ });
86
+ console.error(err.name, err.message);
87
+ console.error(err);
88
+ server?.close(() => {
89
+ process.exit(1);
90
+ });
91
+ });
92
+ function terminateApplicationRunningProcessAndServer() {
93
+ server?.close(() => {
94
+ process.exit(1);
95
+ });
96
+ }
97
+ function getArkosConfig() {
98
+ return exports._arkosConfig;
99
+ }
100
+ function getExpressApp() {
101
+ return _app;
102
+ }
103
+ //# sourceMappingURL=server.js.map