arkos 1.3.1-beta → 1.3.2-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 (256) hide show
  1. package/dist/cjs/app.js +139 -1
  2. package/dist/cjs/exports/auth/index.js +6 -1
  3. package/dist/cjs/exports/controllers/index.js +11 -1
  4. package/dist/cjs/exports/error-handler/index.js +11 -1
  5. package/dist/cjs/exports/index.js +12 -1
  6. package/dist/cjs/exports/middlewares/index.js +7 -1
  7. package/dist/cjs/exports/prisma/index.js +13 -1
  8. package/dist/cjs/exports/services/index.js +48 -1
  9. package/dist/cjs/exports/utils/index.js +44 -1
  10. package/dist/cjs/exports/validation/index.js +11 -1
  11. package/dist/cjs/modules/auth/auth.controller.js +229 -1
  12. package/dist/cjs/modules/auth/auth.controller.js.map +1 -1
  13. package/dist/cjs/modules/auth/auth.router.js +82 -1
  14. package/dist/cjs/modules/auth/auth.router.js.map +1 -1
  15. package/dist/cjs/modules/auth/auth.service.js +226 -1
  16. package/dist/cjs/modules/auth/utils/auth-error-objects.js +10 -1
  17. package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +83 -1
  18. package/dist/cjs/modules/auth/utils/services/auth-action.service.js +92 -1
  19. package/dist/cjs/modules/auth/utils/services/auth-action.service.js.map +1 -1
  20. package/dist/cjs/modules/base/base.controller.js +172 -1
  21. package/dist/cjs/modules/base/base.middlewares.js +92 -1
  22. package/dist/cjs/modules/base/base.router.js +22 -1
  23. package/dist/cjs/modules/base/base.service.js +507 -1
  24. package/dist/cjs/modules/base/base.service.js.map +1 -1
  25. package/dist/cjs/modules/base/types/base.service.types.js +3 -1
  26. package/dist/cjs/modules/base/types/base.service.types.js.map +1 -1
  27. package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js +80 -1
  28. package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +50 -1
  29. package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +104 -1
  30. package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +208 -1
  31. package/dist/cjs/modules/base/utils/router-validator.js +16 -1
  32. package/dist/cjs/modules/base/utils/service-hooks-manager.js +19 -1
  33. package/dist/cjs/modules/email/email.service.js +104 -1
  34. package/dist/cjs/modules/error-handler/error-handler.controller.js +146 -4
  35. package/dist/cjs/modules/error-handler/utils/app-error.js +17 -1
  36. package/dist/cjs/modules/error-handler/utils/catch-async.js +21 -1
  37. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +205 -3
  38. package/dist/cjs/modules/file-upload/file-upload.controller.js +233 -1
  39. package/dist/cjs/modules/file-upload/file-upload.router.js +60 -1
  40. package/dist/cjs/modules/file-upload/file-upload.service.js +322 -1
  41. package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +97 -1
  42. package/dist/cjs/modules/swagger/swagger.router.js +38 -1
  43. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +338 -1
  44. package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +64 -1
  45. package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +37 -1
  46. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +48 -1
  47. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +32 -1
  48. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +49 -1
  49. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +34 -1
  50. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +471 -1
  51. package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +572 -1
  52. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +260 -1
  53. package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +112 -1
  54. package/dist/cjs/paths.js +9 -1
  55. package/dist/cjs/server.js +94 -5
  56. package/dist/cjs/types/arkos-config.js +3 -1
  57. package/dist/cjs/types/arkos-config.js.map +1 -1
  58. package/dist/cjs/types/auth.js +3 -1
  59. package/dist/cjs/types/index.js +11 -1
  60. package/dist/cjs/types/router-config.js +3 -1
  61. package/dist/cjs/utils/arkos-env.js +9 -1
  62. package/dist/cjs/utils/cli/build.js +214 -5
  63. package/dist/cjs/utils/cli/dev.js +154 -3
  64. package/dist/cjs/utils/cli/generate.js +109 -1
  65. package/dist/cjs/utils/cli/index.js +104 -1
  66. package/dist/cjs/utils/cli/index.js.map +1 -1
  67. package/dist/cjs/utils/cli/prisma-generate.js +120 -0
  68. package/dist/cjs/utils/cli/prisma-generate.js.map +1 -0
  69. package/dist/cjs/utils/cli/start.js +103 -1
  70. package/dist/cjs/utils/cli/utils/cli.helpers.js +24 -1
  71. package/dist/cjs/utils/cli/utils/smart-fs-watcher.js +73 -1
  72. package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js +36 -0
  73. package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -0
  74. package/dist/cjs/utils/cli/utils/template-generator/templates/controller-template.js +21 -0
  75. package/dist/cjs/utils/cli/utils/template-generator/templates/controller-template.js.map +1 -0
  76. package/dist/cjs/utils/cli/utils/template-generator/templates/hooks-template.js +201 -0
  77. package/dist/cjs/utils/cli/utils/template-generator/templates/hooks-template.js.map +1 -0
  78. package/dist/cjs/utils/cli/utils/template-generator/templates/middlewares-template.js +288 -0
  79. package/dist/cjs/utils/cli/utils/template-generator/templates/{generate-middlewares.js.map → middlewares-template.js.map} +1 -1
  80. package/dist/cjs/utils/cli/utils/template-generator/templates/query-options-template.js +64 -0
  81. package/dist/cjs/utils/cli/utils/template-generator/templates/query-options-template.js.map +1 -0
  82. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js +45 -0
  83. package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js.map +1 -0
  84. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js +29 -0
  85. package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js.map +1 -0
  86. package/dist/cjs/utils/cli/utils/template-generators.js +34 -2
  87. package/dist/cjs/utils/cli/utils/template-generators.js.map +1 -1
  88. package/dist/cjs/utils/cli/utils/watermark-stamper.js +17 -3
  89. package/dist/cjs/utils/dotenv.helpers.js +43 -1
  90. package/dist/cjs/utils/dynamic-loader.js +270 -9
  91. package/dist/cjs/utils/features/api.features.js +169 -1
  92. package/dist/cjs/utils/features/change-case.features.js +67 -1
  93. package/dist/cjs/utils/features/port-and-host-allocator.js +105 -1
  94. package/dist/cjs/utils/helpers/api.features.helpers.js +112 -1
  95. package/dist/cjs/utils/helpers/change-case.helpers.js +177 -1
  96. package/dist/cjs/utils/helpers/deepmerge.helper.js +115 -1
  97. package/dist/cjs/utils/helpers/dynamic-loader.helpers.js +76 -1
  98. package/dist/cjs/utils/helpers/fs.helpers.js +57 -1
  99. package/dist/cjs/utils/helpers/global.helpers.js +94 -1
  100. package/dist/cjs/utils/helpers/prisma.helpers.js +40 -1
  101. package/dist/cjs/utils/helpers/query-parser.helpers.js +45 -1
  102. package/dist/cjs/utils/helpers/routers.helpers.js +37 -1
  103. package/dist/cjs/utils/helpers/text.helpers.js +28 -1
  104. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +455 -1
  105. package/dist/cjs/utils/prisma/prisma-schema-parser.js +216 -4
  106. package/dist/cjs/utils/prisma/types.js +3 -1
  107. package/dist/cjs/utils/sheu.js +120 -1
  108. package/dist/cjs/utils/validate-dto.js +17 -1
  109. package/dist/cjs/utils/validate-schema.js +15 -1
  110. package/dist/esm/app.js +132 -1
  111. package/dist/esm/exports/auth/index.js +2 -1
  112. package/dist/esm/exports/controllers/index.js +4 -1
  113. package/dist/esm/exports/error-handler/index.js +4 -1
  114. package/dist/esm/exports/index.js +8 -1
  115. package/dist/esm/exports/middlewares/index.js +2 -1
  116. package/dist/esm/exports/prisma/index.js +6 -1
  117. package/dist/esm/exports/services/index.js +9 -1
  118. package/dist/esm/exports/utils/index.js +4 -1
  119. package/dist/esm/exports/validation/index.js +4 -1
  120. package/dist/esm/modules/auth/auth.controller.js +222 -1
  121. package/dist/esm/modules/auth/auth.controller.js.map +1 -1
  122. package/dist/esm/modules/auth/auth.router.js +76 -1
  123. package/dist/esm/modules/auth/auth.router.js.map +1 -1
  124. package/dist/esm/modules/auth/auth.service.js +219 -1
  125. package/dist/esm/modules/auth/utils/auth-error-objects.js +4 -1
  126. package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js +73 -1
  127. package/dist/esm/modules/auth/utils/services/auth-action.service.js +90 -1
  128. package/dist/esm/modules/auth/utils/services/auth-action.service.js.map +1 -1
  129. package/dist/esm/modules/base/base.controller.js +165 -1
  130. package/dist/esm/modules/base/base.middlewares.js +81 -1
  131. package/dist/esm/modules/base/base.router.js +15 -1
  132. package/dist/esm/modules/base/base.service.js +500 -1
  133. package/dist/esm/modules/base/base.service.js.map +1 -1
  134. package/dist/esm/modules/base/types/base.service.types.js +2 -1
  135. package/dist/esm/modules/base/types/base.service.types.js.map +1 -1
  136. package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js +76 -1
  137. package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js +44 -1
  138. package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +96 -1
  139. package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +198 -1
  140. package/dist/esm/modules/base/utils/router-validator.js +14 -1
  141. package/dist/esm/modules/base/utils/service-hooks-manager.js +17 -1
  142. package/dist/esm/modules/email/email.service.js +97 -1
  143. package/dist/esm/modules/error-handler/error-handler.controller.js +107 -4
  144. package/dist/esm/modules/error-handler/utils/app-error.js +15 -1
  145. package/dist/esm/modules/error-handler/utils/catch-async.js +19 -1
  146. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +163 -3
  147. package/dist/esm/modules/file-upload/file-upload.controller.js +228 -1
  148. package/dist/esm/modules/file-upload/file-upload.router.js +54 -1
  149. package/dist/esm/modules/file-upload/file-upload.service.js +314 -1
  150. package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +87 -1
  151. package/dist/esm/modules/swagger/swagger.router.js +32 -1
  152. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +333 -1
  153. package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js +58 -1
  154. package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +34 -1
  155. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +42 -1
  156. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +26 -1
  157. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +46 -1
  158. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +28 -1
  159. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +465 -1
  160. package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +566 -1
  161. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +255 -1
  162. package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +101 -1
  163. package/dist/esm/paths.js +3 -1
  164. package/dist/esm/server.js +85 -5
  165. package/dist/esm/types/arkos-config.js +2 -1
  166. package/dist/esm/types/arkos-config.js.map +1 -1
  167. package/dist/esm/types/auth.js +2 -1
  168. package/dist/esm/types/index.js +8 -1
  169. package/dist/esm/types/router-config.js +2 -1
  170. package/dist/esm/utils/arkos-env.js +7 -1
  171. package/dist/esm/utils/cli/build.js +208 -5
  172. package/dist/esm/utils/cli/dev.js +147 -3
  173. package/dist/esm/utils/cli/generate.js +103 -1
  174. package/dist/esm/utils/cli/index.js +94 -1
  175. package/dist/esm/utils/cli/index.js.map +1 -1
  176. package/dist/esm/utils/cli/prisma-generate.js +114 -0
  177. package/dist/esm/utils/cli/prisma-generate.js.map +1 -0
  178. package/dist/esm/utils/cli/start.js +96 -1
  179. package/dist/esm/utils/cli/utils/cli.helpers.js +16 -1
  180. package/dist/esm/utils/cli/utils/smart-fs-watcher.js +68 -1
  181. package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js +33 -0
  182. package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -0
  183. package/dist/esm/utils/cli/utils/template-generator/templates/controller-template.js +18 -0
  184. package/dist/esm/utils/cli/utils/template-generator/templates/controller-template.js.map +1 -0
  185. package/dist/esm/utils/cli/utils/template-generator/templates/hooks-template.js +198 -0
  186. package/dist/esm/utils/cli/utils/template-generator/templates/hooks-template.js.map +1 -0
  187. package/dist/esm/utils/cli/utils/template-generator/templates/middlewares-template.js +285 -0
  188. package/dist/esm/utils/cli/utils/template-generator/templates/{generate-middlewares.js.map → middlewares-template.js.map} +1 -1
  189. package/dist/esm/utils/cli/utils/template-generator/templates/query-options-template.js +61 -0
  190. package/dist/esm/utils/cli/utils/template-generator/templates/query-options-template.js.map +1 -0
  191. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js +39 -0
  192. package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js.map +1 -0
  193. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js +26 -0
  194. package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js.map +1 -0
  195. package/dist/esm/utils/cli/utils/template-generators.js +28 -2
  196. package/dist/esm/utils/cli/utils/template-generators.js.map +1 -1
  197. package/dist/esm/utils/cli/utils/watermark-stamper.js +15 -3
  198. package/dist/esm/utils/dotenv.helpers.js +37 -1
  199. package/dist/esm/utils/dynamic-loader.js +254 -9
  200. package/dist/esm/utils/features/api.features.js +162 -1
  201. package/dist/esm/utils/features/change-case.features.js +31 -1
  202. package/dist/esm/utils/features/port-and-host-allocator.js +67 -1
  203. package/dist/esm/utils/helpers/api.features.helpers.js +106 -1
  204. package/dist/esm/utils/helpers/change-case.helpers.js +161 -1
  205. package/dist/esm/utils/helpers/deepmerge.helper.js +113 -1
  206. package/dist/esm/utils/helpers/dynamic-loader.helpers.js +69 -1
  207. package/dist/esm/utils/helpers/fs.helpers.js +48 -1
  208. package/dist/esm/utils/helpers/global.helpers.js +51 -1
  209. package/dist/esm/utils/helpers/prisma.helpers.js +32 -1
  210. package/dist/esm/utils/helpers/query-parser.helpers.js +40 -1
  211. package/dist/esm/utils/helpers/routers.helpers.js +29 -1
  212. package/dist/esm/utils/helpers/text.helpers.js +22 -1
  213. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +448 -1
  214. package/dist/esm/utils/prisma/prisma-schema-parser.js +209 -4
  215. package/dist/esm/utils/prisma/types.js +2 -1
  216. package/dist/esm/utils/sheu.js +118 -1
  217. package/dist/esm/utils/validate-dto.js +11 -1
  218. package/dist/esm/utils/validate-schema.js +9 -1
  219. package/dist/types/modules/auth/utils/services/auth-action.service.d.ts +1 -1
  220. package/dist/types/modules/base/types/base.service.types.d.ts +12 -9
  221. package/dist/types/types/arkos-config.d.ts +3 -2
  222. package/dist/types/utils/cli/prisma-generate.d.ts +1 -0
  223. package/package.json +2 -2
  224. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +0 -21
  225. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -1
  226. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -12
  227. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -1
  228. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-hooks-template.js +0 -144
  229. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-hooks-template.js.map +0 -1
  230. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +0 -256
  231. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +0 -36
  232. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -1
  233. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +0 -18
  234. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -1
  235. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js +0 -9
  236. package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js.map +0 -1
  237. package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +0 -21
  238. package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -1
  239. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -12
  240. package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -1
  241. package/dist/esm/utils/cli/utils/template-generator/templates/generate-hooks-template.js +0 -144
  242. package/dist/esm/utils/cli/utils/template-generator/templates/generate-hooks-template.js.map +0 -1
  243. package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js +0 -256
  244. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +0 -36
  245. package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -1
  246. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js +0 -18
  247. package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -1
  248. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js +0 -9
  249. package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js.map +0 -1
  250. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-auth-configs-template.d.ts → auth-configs-template.d.ts} +0 -0
  251. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-controller-template.d.ts → controller-template.d.ts} +0 -0
  252. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-hooks-template.d.ts → hooks-template.d.ts} +0 -0
  253. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-middlewares.d.ts → middlewares-template.d.ts} +0 -0
  254. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-prisma-query-options.d.ts → query-options-template.d.ts} +0 -0
  255. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-router-template.d.ts → router-template.d.ts} +0 -0
  256. /package/dist/types/utils/cli/utils/template-generator/templates/{generate-service-template.d.ts → service-template.d.ts} +0 -0
@@ -1,4 +1,209 @@
1
- "use strict";import g from"path";import{camelCase as P,pascalCase as m}from"../helpers/change-case.helpers.js";import h from"fs";export class PrismaSchemaParser{constructor(){this.enums=[],this.models=[],this.prismaSchemasContent="",this.parsed=!1,this.parse()}parse({override:s}={override:!1}){return(!this.parsed||s)&&(this.enums=this.extractEnums(),this.models=this.extractModels(),this.parsed=!0),{models:this.models,enums:this.enums}}extractEnums(){const s=[],i=(this.getPrismaSchemasContent()||"").match(/enum\s+\w+\s*\{[^}]*\}/g)||[];for(const e of i){const n=this.parseEnumBlock(e);n&&s.push(n)}return s}parseEnumBlock(s){const t=s.match(/enum\s+(\w+)/);if(!t)return null;const i=t[1],e=s.split(`
2
- `).map(n=>n.trim()).filter(n=>n&&!n.startsWith("enum")&&!n.startsWith("{")&&!n.startsWith("}")).map(n=>n.replace(/,$/,""));return{name:i,values:e}}extractModels(){const s=[],t=this.extractModelBlocks();for(const i of t){const e=this.parseModelBlock(i);e&&s.push(e)}return s}extractModelBlocks(){const s=/model\s+\w+\s*\{((?:[^{}]*(?:\{[^{}]*\}[^{}]*)*)*)\}/g;return(this.getPrismaSchemasContent()||"").match(s)||[]}parseModelBlock(s){const t=s.match(/model\s+(\w+)/);if(!t)return null;const i=t[1],e=this.parseFields(s),n=s.match(/@@map\s*\(\s*"([^"]+)"\s*\)/),r=n?n[1]:void 0;return{name:i,fields:e,mapName:r}}parseFields(s){const t=[],i=s.split(`
3
- `).map(e=>e.trim()).filter(e=>e&&!e.startsWith("model")&&!e.startsWith("{")&&!e.startsWith("}"));for(const e of i){if(e.startsWith("//")||e.startsWith("@@"))continue;const n=this.parseFieldLine(e);n&&t.push(n)}return t}parseFieldLine(s){const t=s.match(/^(\w+)\s+(\w+(?:\[\])?)\??\s*(.*)/);if(!t)return null;const[,i,e,n]=t,r=e.endsWith("[]"),c=r?e.slice(0,-2):e,o=s.includes("?"),l=n.split(/\s+/).filter(a=>a.startsWith("@"));let u;const d=n.match(/@default\(([^)]+)\)/);d&&(u=this.parseDefaultValue(d[1]));let p="";const f=n.match(/@relation\([^)]*fields:\s*\[([^\]]+)\]/);f&&(p=f[1].trim().replace(/['"]/g,""));const M=l.some(a=>a.startsWith("@id")),W=l.some(a=>a.startsWith("@unique")),F=this.models;return{name:i,type:c,isOptional:o,isRelation:F.map(a=>a.name).includes(c)||this.getPrismaSchemasContent().includes(`model ${c} {`),isArray:r,connectionField:p,defaultValue:u,isId:M,isUnique:W,attributes:l}}parseDefaultValue(s){if(s=s.trim(),s.startsWith('"')&&s.endsWith('"'))return s.slice(1,-1);if(s==="true")return!0;if(s==="false")return!1;if(/^-?\d+$/.test(s))return parseInt(s,10);if(/^-?\d+\.\d+$/.test(s))return parseFloat(s);if(!s.includes("("))return s;if(!s.includes("("))return s}getPrismaSchemasContent(){if(this.prismaSchemasContent)return this.prismaSchemasContent;const s=[],t=/model\s+(\w+)\s*{/g,i=[],e=g.resolve(process.cwd(),"prisma"),n=this.getAllPrismaFiles(e);for(const c of n){const o=h.readFileSync(c,"utf-8");i?.includes?.(o)||i.push(o)}return i.join(`
4
- `).replace(t,(c,o)=>(s?.includes?.(o)||s.push(P(o.trim())),`model ${o} {`))}getAllPrismaFiles(s,t=[]){return h.readdirSync(s)?.forEach(e=>{const n=g.join(s,e),r=h.statSync(n);r.isDirectory()&&e!=="migrations"?t=this.getAllPrismaFiles(n,t):r.isFile()&&e.endsWith(".prisma")&&t.push(n)}),t}isEnum(s){return this.enums.some(t=>t.name===s)}isModel(s){return this.models.some(t=>t.name===s)}getModelUniqueFields(s){return this.models.find(({name:t})=>m(t)===m(s))?.fields.filter(({isUnique:t})=>t)}getModelRelations(s){return this.models.find(t=>m(t.name)===m(s))?.fields.filter(t=>t.isRelation)}getModelsAsArrayOfStrings(){return this.models.map(({name:s})=>s)}}const x=new PrismaSchemaParser;export default x;
1
+ import path from "path";
2
+ import { camelCase, pascalCase } from "../helpers/change-case.helpers.js";
3
+ import fs from "fs";
4
+ export class PrismaSchemaParser {
5
+ constructor() {
6
+ this.enums = [];
7
+ this.models = [];
8
+ this.prismaSchemasContent = "";
9
+ this.parsed = false;
10
+ this.parse();
11
+ }
12
+ parse({ override } = { override: false }) {
13
+ if (!this.parsed || override) {
14
+ this.enums = this.extractEnums();
15
+ this.models = this.extractModels();
16
+ this.parsed = true;
17
+ }
18
+ return {
19
+ models: this.models,
20
+ enums: this.enums,
21
+ };
22
+ }
23
+ extractEnums() {
24
+ const enums = [];
25
+ const schema = this.getPrismaSchemasContent() || "";
26
+ const enumBlocks = schema.match(/enum\s+\w+\s*\{[^}]*\}/g) || [];
27
+ for (const block of enumBlocks) {
28
+ const enumObj = this.parseEnumBlock(block);
29
+ if (enumObj) {
30
+ enums.push(enumObj);
31
+ }
32
+ }
33
+ return enums;
34
+ }
35
+ parseEnumBlock(block) {
36
+ const nameMatch = block.match(/enum\s+(\w+)/);
37
+ if (!nameMatch)
38
+ return null;
39
+ const name = nameMatch[1];
40
+ const values = block
41
+ .split("\n")
42
+ .map((line) => line.trim())
43
+ .filter((line) => line &&
44
+ !line.startsWith("enum") &&
45
+ !line.startsWith("{") &&
46
+ !line.startsWith("}"))
47
+ .map((line) => line.replace(/,$/, ""));
48
+ return { name, values };
49
+ }
50
+ extractModels() {
51
+ const models = [];
52
+ const modelBlocks = this.extractModelBlocks();
53
+ for (const block of modelBlocks) {
54
+ const model = this.parseModelBlock(block);
55
+ if (model) {
56
+ models.push(model);
57
+ }
58
+ }
59
+ return models;
60
+ }
61
+ extractModelBlocks() {
62
+ const modelRegex = /model\s+\w+\s*\{((?:[^{}]*(?:\{[^{}]*\}[^{}]*)*)*)\}/g;
63
+ const schema = this.getPrismaSchemasContent() || "";
64
+ return schema.match(modelRegex) || [];
65
+ }
66
+ parseModelBlock(block) {
67
+ const nameMatch = block.match(/model\s+(\w+)/);
68
+ if (!nameMatch)
69
+ return null;
70
+ const name = nameMatch[1];
71
+ const fields = this.parseFields(block);
72
+ const mapMatch = block.match(/@@map\s*\(\s*"([^"]+)"\s*\)/);
73
+ const mapName = mapMatch ? mapMatch[1] : undefined;
74
+ return { name, fields, mapName };
75
+ }
76
+ parseFields(block) {
77
+ const fields = [];
78
+ const fieldLines = block
79
+ .split("\n")
80
+ .map((line) => line.trim())
81
+ .filter((line) => line &&
82
+ !line.startsWith("model") &&
83
+ !line.startsWith("{") &&
84
+ !line.startsWith("}"));
85
+ for (const line of fieldLines) {
86
+ if (line.startsWith("//") || line.startsWith("@@"))
87
+ continue;
88
+ const field = this.parseFieldLine(line);
89
+ if (field) {
90
+ fields.push(field);
91
+ }
92
+ }
93
+ return fields;
94
+ }
95
+ parseFieldLine(line) {
96
+ const fieldMatch = line.match(/^(\w+)\s+(\w+(?:\[\])?)\??\s*(.*)/);
97
+ if (!fieldMatch)
98
+ return null;
99
+ const [, name, typeWithArray, attributesStr] = fieldMatch;
100
+ const isArray = typeWithArray.endsWith("[]");
101
+ const type = isArray ? typeWithArray.slice(0, -2) : typeWithArray;
102
+ const isOptional = line.includes("?");
103
+ const attributes = attributesStr
104
+ .split(/\s+/)
105
+ .filter((attr) => attr.startsWith("@"));
106
+ let defaultValue = undefined;
107
+ const defaultMatch = attributesStr.match(/@default\(([^)]+)\)/);
108
+ if (defaultMatch) {
109
+ defaultValue = this.parseDefaultValue(defaultMatch[1]);
110
+ }
111
+ let connectionField = "";
112
+ const relationMatch = attributesStr.match(/@relation\([^)]*fields:\s*\[([^\]]+)\]/);
113
+ if (relationMatch) {
114
+ connectionField = relationMatch[1].trim().replace(/['"]/g, "");
115
+ }
116
+ const isId = attributes.some((attr) => attr.startsWith("@id"));
117
+ const isUnique = attributes.some((attr) => attr.startsWith("@unique"));
118
+ const models = this.models;
119
+ return {
120
+ name,
121
+ type,
122
+ isOptional,
123
+ isRelation: models.map((model) => model.name).includes(type) ||
124
+ this.getPrismaSchemasContent().includes(`model ${type} {`),
125
+ isArray,
126
+ connectionField,
127
+ defaultValue,
128
+ isId,
129
+ isUnique,
130
+ attributes,
131
+ };
132
+ }
133
+ parseDefaultValue(defaultStr) {
134
+ defaultStr = defaultStr.trim();
135
+ if (defaultStr.startsWith('"') && defaultStr.endsWith('"'))
136
+ return defaultStr.slice(1, -1);
137
+ if (defaultStr === "true")
138
+ return true;
139
+ if (defaultStr === "false")
140
+ return false;
141
+ if (/^-?\d+$/.test(defaultStr))
142
+ return parseInt(defaultStr, 10);
143
+ if (/^-?\d+\.\d+$/.test(defaultStr))
144
+ return parseFloat(defaultStr);
145
+ if (!defaultStr.includes("("))
146
+ return defaultStr;
147
+ if (defaultStr.includes("("))
148
+ return undefined;
149
+ return defaultStr;
150
+ }
151
+ getPrismaSchemasContent() {
152
+ if (this.prismaSchemasContent)
153
+ return this.prismaSchemasContent;
154
+ const models = [];
155
+ const modelRegex = /model\s+(\w+)\s*{/g;
156
+ const prismaContent = [];
157
+ const prismaPath = path.resolve(process.cwd(), "prisma");
158
+ const files = this.getAllPrismaFiles(prismaPath);
159
+ for (const file of files) {
160
+ const content = fs.readFileSync(file, "utf-8");
161
+ if (!prismaContent?.includes?.(content))
162
+ prismaContent.push(content);
163
+ }
164
+ const content = prismaContent
165
+ .join("\n")
166
+ .replace(modelRegex, (_, modelName) => {
167
+ if (!models?.includes?.(modelName))
168
+ models.push(camelCase(modelName.trim()));
169
+ return `model ${modelName} {`;
170
+ });
171
+ return content;
172
+ }
173
+ getAllPrismaFiles(dirPath, fileList = []) {
174
+ const files = fs.readdirSync(dirPath);
175
+ files?.forEach((file) => {
176
+ const filePath = path.join(dirPath, file);
177
+ const stat = fs.statSync(filePath);
178
+ if (stat.isDirectory() && file !== "migrations") {
179
+ fileList = this.getAllPrismaFiles(filePath, fileList);
180
+ }
181
+ else if (stat.isFile() && file.endsWith(".prisma")) {
182
+ fileList.push(filePath);
183
+ }
184
+ });
185
+ return fileList;
186
+ }
187
+ isEnum(typeName) {
188
+ return this.enums.some((e) => e.name === typeName);
189
+ }
190
+ isModel(typeName) {
191
+ return this.models.some((m) => m.name === typeName);
192
+ }
193
+ getModelUniqueFields(modelName) {
194
+ return this.models
195
+ .find(({ name }) => pascalCase(name) === pascalCase(modelName))
196
+ ?.fields.filter(({ isUnique }) => isUnique);
197
+ }
198
+ getModelRelations(modelName) {
199
+ return this.models
200
+ .find((model) => pascalCase(model.name) === pascalCase(modelName))
201
+ ?.fields.filter((field) => field.isRelation);
202
+ }
203
+ getModelsAsArrayOfStrings() {
204
+ return this.models.map(({ name }) => name);
205
+ }
206
+ }
207
+ const prismaSchemaParser = new PrismaSchemaParser();
208
+ export default prismaSchemaParser;
209
+ //# sourceMappingURL=prisma-schema-parser.js.map
@@ -1 +1,2 @@
1
- "use strict";export{};
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -1 +1,118 @@
1
- "use strict";class x{getTimestamp(){return new Date().toTimeString().split(" ")[0]}formatText(t="",e={}){const r=e?.label?t||t===null?e?.label+" ":e?.label:"";let o=`${r}${t}`;if(e.timestamp){const m=this.getTimestamp();if(e.timestamp===!0)o=`${r}\x1B[90m${m}\x1B[0m ${t}`;else if(typeof e.timestamp=="string"){const l=this.getColorCode(e.timestamp);o=`${r}${l}${m}\x1B[0m ${t}`}}return e.bold&&(o=`\x1B[1m${o}\x1B[0m`),o}getColorCode(t){return{red:"\x1B[31m",blue:"\x1B[34m",green:"\x1B[32m",yellow:"\x1B[33m",cyan:"\x1B[36m",magenta:"\x1B[35m",white:"\x1B[37m",black:"\x1B[30m",gray:"\x1B[90m",orange:"\x1B[91m"}[t]||"\x1B[90m"}red(t,e){const r=`\x1B[31m${t}\x1B[0m`;return this.formatText(r,e||{})}blue(t,e){const r=`\x1B[34m${t}\x1B[0m`;return this.formatText(r,e||{})}green(t,e){const r=`\x1B[32m${t}\x1B[0m`;return this.formatText(r,e||{})}yellow(t,e){const r=`\x1B[33m${t}\x1B[0m`;return this.formatText(r,e||{})}cyan(t,e){const r=`\x1B[36m${t}\x1B[0m`;return this.formatText(r,e||{})}magenta(t,e){const r=`\x1B[35m${t}\x1B[0m`;return this.formatText(r,e||{})}white(t,e){const r=`\x1B[37m${t}\x1B[0m`;return this.formatText(r,e||{})}black(t,e){const r=`\x1B[30m${t}\x1B[0m`;return this.formatText(r,e||{})}gray(t,e){const r=`\x1B[90m${t}\x1B[0m`;return this.formatText(r,e||{})}orange(t,e){const r=`\x1B[91m${t}\x1B[0m`;return this.formatText(r,e||{})}bold(t,e){return this.formatText(t,{...e,bold:!0})}info(t,e){const o=this.formatText(t,{...e,label:"[\x1B[36mInfo\x1B[0m]"});return console.info(o),o}error(t,e){const o=this.formatText(t,{...e,label:"[\x1B[31mError\x1B[0m]"});return console.error(o),o}ready(t,e){const o=this.formatText(t,{...e,label:"[\x1B[32mReady\x1B[0m]"});return console.info(o),o}done(t,e){const o=this.formatText(t,{...e,label:"[\x1B[32mDone\x1B[0m]"});return console.info(o),o}warn(t,e){const o=this.formatText(t,{...e,label:"[\x1B[33mWarn\x1B[0m]"});return console.warn(o),o}}const b=new x;export default b;
1
+ class Sheu {
2
+ getTimestamp() {
3
+ return new Date().toTimeString().split(" ")[0];
4
+ }
5
+ formatText(content = "", options = {}) {
6
+ const label = options?.label
7
+ ? content
8
+ ? options?.label + " "
9
+ : content === null
10
+ ? options?.label + " "
11
+ : options?.label
12
+ : "";
13
+ let result = `${label}${content}`;
14
+ if (options.timestamp) {
15
+ const timestamp = this.getTimestamp();
16
+ if (options.timestamp === true)
17
+ result = `${label}\x1b[90m${timestamp}\x1b[0m ${content}`;
18
+ else if (typeof options.timestamp === "string") {
19
+ const colorCode = this.getColorCode(options.timestamp);
20
+ result = `${label}${colorCode}${timestamp}\x1b[0m ${content}`;
21
+ }
22
+ }
23
+ if (options.bold)
24
+ result = `\x1b[1m${result}\x1b[0m`;
25
+ return result;
26
+ }
27
+ getColorCode(color) {
28
+ const colorMap = {
29
+ red: "\x1b[31m",
30
+ blue: "\x1b[34m",
31
+ green: "\x1b[32m",
32
+ yellow: "\x1b[33m",
33
+ cyan: "\x1b[36m",
34
+ magenta: "\x1b[35m",
35
+ white: "\x1b[37m",
36
+ black: "\x1b[30m",
37
+ gray: "\x1b[90m",
38
+ orange: "\x1b[91m",
39
+ };
40
+ return colorMap[color] || "\x1b[90m";
41
+ }
42
+ red(content, options) {
43
+ const coloredText = `\x1b[31m${content}\x1b[0m`;
44
+ return this.formatText(coloredText, options || {});
45
+ }
46
+ blue(content, options) {
47
+ const coloredText = `\x1b[34m${content}\x1b[0m`;
48
+ return this.formatText(coloredText, options || {});
49
+ }
50
+ green(content, options) {
51
+ const coloredText = `\x1b[32m${content}\x1b[0m`;
52
+ return this.formatText(coloredText, options || {});
53
+ }
54
+ yellow(content, options) {
55
+ const coloredText = `\x1b[33m${content}\x1b[0m`;
56
+ return this.formatText(coloredText, options || {});
57
+ }
58
+ cyan(content, options) {
59
+ const coloredText = `\x1b[36m${content}\x1b[0m`;
60
+ return this.formatText(coloredText, options || {});
61
+ }
62
+ magenta(content, options) {
63
+ const coloredText = `\x1b[35m${content}\x1b[0m`;
64
+ return this.formatText(coloredText, options || {});
65
+ }
66
+ white(content, options) {
67
+ const coloredText = `\x1b[37m${content}\x1b[0m`;
68
+ return this.formatText(coloredText, options || {});
69
+ }
70
+ black(content, options) {
71
+ const coloredText = `\x1b[30m${content}\x1b[0m`;
72
+ return this.formatText(coloredText, options || {});
73
+ }
74
+ gray(content, options) {
75
+ const coloredText = `\x1b[90m${content}\x1b[0m`;
76
+ return this.formatText(coloredText, options || {});
77
+ }
78
+ orange(content, options) {
79
+ const coloredText = `\x1b[91m${content}\x1b[0m`;
80
+ return this.formatText(coloredText, options || {});
81
+ }
82
+ bold(content, options) {
83
+ return this.formatText(content, { ...options, bold: true });
84
+ }
85
+ info(message, options) {
86
+ const label = `[\x1b[36mInfo\x1b[0m]`;
87
+ const result = this.formatText(message, { ...options, label });
88
+ console.info(result);
89
+ return result;
90
+ }
91
+ error(message, options) {
92
+ const label = `[\x1b[31mError\x1b[0m]`;
93
+ const result = this.formatText(message, { ...options, label });
94
+ console.error(result);
95
+ return result;
96
+ }
97
+ ready(message, options) {
98
+ const label = `[\x1b[32mReady\x1b[0m]`;
99
+ const result = this.formatText(message, { ...options, label });
100
+ console.info(result);
101
+ return result;
102
+ }
103
+ done(message, options) {
104
+ const label = `[\x1b[32mDone\x1b[0m]`;
105
+ const result = this.formatText(message, { ...options, label });
106
+ console.info(result);
107
+ return result;
108
+ }
109
+ warn(message, options) {
110
+ const label = `[\x1b[33mWarn\x1b[0m]`;
111
+ const result = this.formatText(message, { ...options, label });
112
+ console.warn(result);
113
+ return result;
114
+ }
115
+ }
116
+ const sheu = new Sheu();
117
+ export default sheu;
118
+ //# sourceMappingURL=sheu.js.map
@@ -1 +1,11 @@
1
- "use strict";import{plainToInstance as n}from"class-transformer";import{validate as i}from"class-validator";import d from"../modules/error-handler/utils/app-error.js";export default async function l(r,a,e){const t=n(r,a),o=await i(t,e);if(o.length>0)throw new d("Invalid request body",400,o,"InvalidRequestBody");return t}
1
+ import { plainToInstance } from "class-transformer";
2
+ import { validate } from "class-validator";
3
+ import AppError from "../modules/error-handler/utils/app-error.js";
4
+ export default async function validateDto(DtoClass, data, validationOptions) {
5
+ const dataDto = plainToInstance(DtoClass, data);
6
+ const errors = await validate(dataDto, validationOptions);
7
+ if (errors.length > 0)
8
+ throw new AppError("Invalid request body", 400, errors, "InvalidRequestBody");
9
+ return dataDto;
10
+ }
11
+ //# sourceMappingURL=validate-dto.js.map
@@ -1 +1,9 @@
1
- "use strict";import a from"../modules/error-handler/utils/app-error.js";export default async function o(e,t){const r=e.safeParse(t);if(!r.success)throw new a("Invalid request body",400,r.error.format(),"InvalidRequestBody");return r.data}
1
+ import AppError from "../modules/error-handler/utils/app-error.js";
2
+ export default async function validateSchema(schema, data) {
3
+ const result = schema.safeParse(data);
4
+ if (!result.success) {
5
+ throw new AppError("Invalid request body", 400, result.error.format(), "InvalidRequestBody");
6
+ }
7
+ return result.data;
8
+ }
9
+ //# sourceMappingURL=validate-schema.js.map
@@ -15,7 +15,7 @@ declare class AuthActionService {
15
15
  private transformAccessControlToValidAuthAction;
16
16
  getUniqueActions(): string[];
17
17
  getUniqueResources(): string[];
18
- getByResource(resource: string): AuthAction | undefined;
18
+ getByResource(resource: string): AuthAction[] | undefined;
19
19
  getByAction(action: string): AuthAction[];
20
20
  exists(action: string, resource: string): boolean;
21
21
  }
@@ -1,5 +1,8 @@
1
1
  import { User } from "../../../types";
2
2
  export type ModelDelegate = Record<string, any>;
3
+ export type ModelGetPayload<G, T = any> = G extends {
4
+ $args: (arg: T) => infer R;
5
+ } ? R : never;
3
6
  export type CreateOneData<T extends ModelDelegate> = Parameters<T["create"]>[0] extends {
4
7
  data: infer D;
5
8
  [x: string]: any;
@@ -81,7 +84,7 @@ export type DeleteManyResult<T extends ModelDelegate> = ReturnType<T["deleteMany
81
84
  export interface ServiceBaseContext {
82
85
  user?: User;
83
86
  accessToken?: string;
84
- skip?: ("before" | "after" | "error")[];
87
+ skip?: ("before" | "after" | "error")[] | "before" | "after" | "error" | "all";
85
88
  throwOnError?: boolean;
86
89
  }
87
90
  export interface BeforeCreateOneHookArgs<T extends ModelDelegate, Context = ServiceBaseContext> {
@@ -90,7 +93,7 @@ export interface BeforeCreateOneHookArgs<T extends ModelDelegate, Context = Serv
90
93
  context?: Context;
91
94
  }
92
95
  export interface AfterCreateOneHookArgs<T extends ModelDelegate, Context = ServiceBaseContext> {
93
- result: CreateOneResult<T>;
96
+ result: Awaited<CreateOneResult<T>>;
94
97
  data: CreateOneData<T>;
95
98
  queryOptions?: CreateOneOptions<T>;
96
99
  context?: Context;
@@ -101,7 +104,7 @@ export interface BeforeCreateManyHookArgs<T extends ModelDelegate, Context = Ser
101
104
  context?: Context;
102
105
  }
103
106
  export interface AfterCreateManyHookArgs<T extends ModelDelegate, Context = ServiceBaseContext> {
104
- result: CreateManyResult<T>;
107
+ result: Awaited<CreateManyResult<T>>;
105
108
  queryOptions?: CreateManyOptions<T>;
106
109
  context?: Context;
107
110
  }
@@ -120,7 +123,7 @@ export interface BeforeFindManyHookArgs<T extends ModelDelegate, Context = Servi
120
123
  context?: Context;
121
124
  }
122
125
  export interface AfterFindManyHookArgs<T extends ModelDelegate, Context = ServiceBaseContext> {
123
- result: FindManyResult<T>;
126
+ result: Awaited<FindManyResult<T>>;
124
127
  filters?: FindManyFilters<T>;
125
128
  queryOptions?: FindManyOptions<T>;
126
129
  context?: Context;
@@ -131,7 +134,7 @@ export interface BeforeFindOneHookArgs<T extends ModelDelegate, Context = Servic
131
134
  context?: Context;
132
135
  }
133
136
  export interface AfterFindOneHookArgs<T extends ModelDelegate, Context = ServiceBaseContext> {
134
- result: FindOneResult<T>;
137
+ result: Awaited<FindOneResult<T>>;
135
138
  filters: FindOneFilters<T>;
136
139
  queryOptions?: FindOneOptions<T>;
137
140
  context?: Context;
@@ -143,7 +146,7 @@ export interface BeforeUpdateOneHookArgs<T extends ModelDelegate, Context = Serv
143
146
  context?: Context;
144
147
  }
145
148
  export interface AfterUpdateOneHookArgs<T extends ModelDelegate, Context = ServiceBaseContext> {
146
- result: UpdateOneResult<T>;
149
+ result: Awaited<UpdateOneResult<T>>;
147
150
  filters: UpdateOneFilters<T>;
148
151
  data: UpdateOneData<T>;
149
152
  queryOptions?: UpdateOneOptions<T>;
@@ -156,7 +159,7 @@ export interface BeforeUpdateManyHookArgs<T extends ModelDelegate, Context = Ser
156
159
  context?: Context;
157
160
  }
158
161
  export interface AfterUpdateManyHookArgs<T extends ModelDelegate, Context = ServiceBaseContext> {
159
- result: UpdateManyResult<T>;
162
+ result: Awaited<UpdateManyResult<T>>;
160
163
  filters: UpdateManyFilters<T>;
161
164
  data: UpdateManyData<T>;
162
165
  queryOptions?: UpdateManyOptions<T>;
@@ -167,7 +170,7 @@ export interface BeforeDeleteOneHookArgs<T extends ModelDelegate, Context = Serv
167
170
  context?: Context;
168
171
  }
169
172
  export interface AfterDeleteOneHookArgs<T extends ModelDelegate, Context = ServiceBaseContext> {
170
- result: DeleteOneResult<T>;
173
+ result: Awaited<DeleteOneResult<T>>;
171
174
  filters: DeleteOneFilters<T>;
172
175
  context?: Context;
173
176
  }
@@ -176,7 +179,7 @@ export interface BeforeDeleteManyHookArgs<T extends ModelDelegate, Context = Ser
176
179
  context?: Context;
177
180
  }
178
181
  export interface AfterDeleteManyHookArgs<T extends ModelDelegate, Context = ServiceBaseContext> {
179
- result: DeleteManyResult<T>;
182
+ result: Awaited<DeleteManyResult<T>>;
180
183
  filters: DeleteManyFilters<T>;
181
184
  context?: Context;
182
185
  }
@@ -9,6 +9,7 @@ import { ValidatorOptions } from "class-validator";
9
9
  import { MsDuration } from "../modules/auth/utils/helpers/auth.controller.helpers";
10
10
  import { OpenAPIV3 } from "openapi-types";
11
11
  import type { ApiReferenceConfiguration } from "@scalar/express-api-reference" with { "resolution-mode": "import" };
12
+ import nodemailer from "nodemailer";
12
13
  export type ArkosConfig = {
13
14
  request?: {
14
15
  parameters?: {
@@ -112,6 +113,7 @@ export type ArkosConfig = {
112
113
  configureApp?: (app: express.Express) => Promise<any> | any;
113
114
  configureServer?: (server: http.Server) => Promise<any> | any;
114
115
  email?: {
116
+ name?: string;
115
117
  host: string;
116
118
  port?: number;
117
119
  secure?: boolean;
@@ -119,8 +121,7 @@ export type ArkosConfig = {
119
121
  user: string;
120
122
  pass: string;
121
123
  };
122
- name?: string;
123
- };
124
+ } & Parameters<typeof nodemailer.createTransport>[0];
124
125
  swagger?: {
125
126
  enableAfterBuild?: boolean;
126
127
  endpoint?: string;
@@ -0,0 +1 @@
1
+ export default function prismaGenerateCommand(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arkos",
3
- "version": "1.3.1-beta",
3
+ "version": "1.3.2-beta",
4
4
  "description": "The Express & Prisma RESTful Framework",
5
5
  "main": "dist/cjs/exports/index.js",
6
6
  "module": "dist/esm/exports/index.js",
@@ -85,7 +85,7 @@
85
85
  "build:esm": "tsc -p tsconfig.esm.json && npx tsx scripts/fix-esm-imports.ts",
86
86
  "build:types": "tsc -p tsconfig.types.json",
87
87
  "build:cjs": "tsc -p tsconfig.cjs.json",
88
- "build": "npx rimraf dist && pnpm run build:cjs && pnpm run build:esm && pnpm run build:types && tsx scripts/post-build-scripts.ts && pnpm run minify",
88
+ "build": "npx rimraf dist && pnpm run build:cjs && pnpm run build:esm && pnpm run build:types && tsx scripts/post-build-scripts.ts",
89
89
  "buildTsup": "tsup && tsx scripts/post-build-scripts.ts",
90
90
  "minifyOld": "esbuild dist/cjs/**/*.js --minify --outdir=dist --allow-overwrite --log-limit=0 --define:process.env.NODE_ENV=process.env.NODE_ENV",
91
91
  "minify": "esbuild $(find dist -type f -name '*.js') --minify --outdir=dist --allow-overwrite --log-limit=0 --define:process.env.NODE_ENV=process.env.NODE_ENV",
@@ -1,21 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.generateAuthConfigsTemplate=generateAuthConfigsTemplate;const fs_helpers_1=require("../../../../helpers/fs.helpers");function generateAuthConfigsTemplate(n){const{modelName:e}=n,t=(0,fs_helpers_1.getUserFileExtension)()==="ts";if(!e)throw new Error("Model name is required for auth config template");const r=t?`import { AuthConfigs } from 'arkos/auth';
2
- `:"",o=t?": AuthConfigs":"";return`${r}
3
- const ${e.camel}AuthConfigs${o} = {
4
- authenticationControl: {
5
- // Create: true,
6
- // Update: true,
7
- // Delete: true,
8
- // View: false,
9
- },
10
-
11
- // Only when using Static RBAC
12
- accessControl: {
13
- // Create: ["Admin"],
14
- // Update: ["Admin", "Manager"],
15
- // Delete: ["Admin"],
16
- // View: ["User", "Admin", "Guest"],
17
- },
18
- };
19
-
20
- export default ${e.camel}AuthConfigs;
21
- `}
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-auth-configs-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/generate-auth-configs-template.ts"],"names":[],"mappings":";;AAGA,kEAoCC;AAvCD,+DAAsE;AAGtE,SAAgB,2BAA2B,CAAC,OAAwB;IAClE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC9B,MAAM,GAAG,GAAG,IAAA,iCAAoB,GAAE,CAAC;IACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;IAElC,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAGrE,MAAM,OAAO,GAAG,YAAY;QAC1B,CAAC,CAAC,6CAA6C;QAC/C,CAAC,CAAC,EAAE,CAAC;IAGP,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAE3D,OAAO,GAAG,OAAO;QACX,SAAS,CAAC,KAAK,cAAc,cAAc;;;;;;;;;;;;;;;;;iBAiBlC,SAAS,CAAC,KAAK;CAC/B,CAAC;AACF,CAAC","sourcesContent":["import { getUserFileExtension } from \"../../../../helpers/fs.helpers\";\nimport { TemplateOptions } from \"../../template-generators\";\n\nexport function generateAuthConfigsTemplate(options: TemplateOptions): string {\n const { modelName } = options;\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n\n if (!modelName)\n throw new Error(\"Model name is required for auth config template\");\n\n // Generate imports for TypeScript\n const imports = isTypeScript\n ? `import { AuthConfigs } from 'arkos/auth';\\n`\n : \"\";\n\n // Generate type annotation for TypeScript\n const typeAnnotation = isTypeScript ? `: AuthConfigs` : \"\";\n\n return `${imports}\nconst ${modelName.camel}AuthConfigs${typeAnnotation} = {\n authenticationControl: {\n // Create: true,\n // Update: true,\n // Delete: true,\n // View: false,\n },\n \n // Only when using Static RBAC\n accessControl: {\n // Create: [\"Admin\"],\n // Update: [\"Admin\", \"Manager\"],\n // Delete: [\"Admin\"],\n // View: [\"User\", \"Admin\", \"Guest\"],\n },\n};\n\nexport default ${modelName.camel}AuthConfigs;\n`;\n}\n"]}
@@ -1,12 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.generateControllerTemplate=generateControllerTemplate;function generateControllerTemplate(r){const{modelName:e,imports:o}=r;if(!e)throw new Error("Model name is required for controller template");return`import { BaseController } from "${o?.baseController||"arkos/controllers"}";
2
-
3
- class ${e.pascal}Controller extends BaseController {
4
- constructor() {
5
- super("${e.kebab}");
6
- }
7
- }
8
-
9
- const ${e.camel}Controller = new ${e.pascal}Controller();
10
-
11
- export default ${e.camel}Controller;
12
- `}
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-controller-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/generate-controller-template.ts"],"names":[],"mappings":";;AAEA,gEAoBC;AApBD,SAAgB,0BAA0B,CAAC,OAAwB;IACjE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAEvC,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAEpE,OAAO,mCACL,OAAO,EAAE,cAAc,IAAI,mBAC7B;;QAEM,SAAS,CAAC,MAAM;;aAEX,SAAS,CAAC,KAAK;;;;QAIpB,SAAS,CAAC,KAAK,oBAAoB,SAAS,CAAC,MAAM;;iBAE1C,SAAS,CAAC,KAAK;GAC7B,CAAC;AACJ,CAAC","sourcesContent":["import { TemplateOptions } from \"../../template-generators\";\n\nexport function generateControllerTemplate(options: TemplateOptions): string {\n const { modelName, imports } = options;\n\n if (!modelName)\n throw new Error(\"Model name is required for controller template\");\n\n return `import { BaseController } from \"${\n imports?.baseController || \"arkos/controllers\"\n }\";\n \nclass ${modelName.pascal}Controller extends BaseController {\n constructor() {\n super(\"${modelName.kebab}\");\n }\n}\n\nconst ${modelName.camel}Controller = new ${modelName.pascal}Controller();\n\nexport default ${modelName.camel}Controller;\n `;\n}\n"]}