mongodb-dynamic-api 1.3.3 → 1.4.1

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 (295) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +476 -21
  3. package/package.json +11 -1
  4. package/src/builders/casl/casl-ability.builder.d.ts +5 -0
  5. package/src/builders/casl/casl-ability.builder.js +14 -0
  6. package/src/builders/index.d.ts +3 -1
  7. package/src/builders/index.js +3 -1
  8. package/src/builders/route-decorators/auth-decorators.builder.d.ts +7 -0
  9. package/src/builders/route-decorators/auth-decorators.builder.js +14 -0
  10. package/src/builders/route-decorators/route-decorators.builder.d.ts +23 -0
  11. package/src/builders/{route-decorators.builder.js → route-decorators/route-decorators.builder.js} +45 -23
  12. package/src/decorators/check-policies.decorator.d.ts +5 -0
  13. package/src/decorators/check-policies.decorator.js +8 -0
  14. package/src/decorators/index.d.ts +2 -0
  15. package/src/decorators/index.js +2 -0
  16. package/src/decorators/public.decorator.d.ts +3 -0
  17. package/src/decorators/public.decorator.js +8 -0
  18. package/src/dynamic-api.module.d.ts +5 -4
  19. package/src/dynamic-api.module.js +132 -87
  20. package/src/guards/base-policies.guard.d.ts +13 -0
  21. package/src/guards/base-policies.guard.js +32 -0
  22. package/src/guards/dynamic-api-jwt-auth.guard.d.ts +11 -0
  23. package/src/guards/dynamic-api-jwt-auth.guard.js +38 -0
  24. package/src/guards/index.d.ts +2 -0
  25. package/src/guards/index.js +18 -0
  26. package/src/helpers/controller-ability-predicates.helper.d.ts +4 -0
  27. package/src/helpers/controller-ability-predicates.helper.js +23 -0
  28. package/src/helpers/index.d.ts +1 -0
  29. package/src/helpers/index.js +1 -0
  30. package/src/helpers/route-decorators.helper.d.ts +2 -2
  31. package/src/helpers/schema.helper.d.ts +28 -0
  32. package/src/helpers/schema.helper.js +22 -0
  33. package/src/index.d.ts +3 -1
  34. package/src/index.js +3 -1
  35. package/src/interceptors/dynamic-api-cache.interceptor.d.ts +16 -0
  36. package/src/interceptors/dynamic-api-cache.interceptor.js +48 -0
  37. package/src/interceptors/index.d.ts +1 -0
  38. package/src/interceptors/index.js +17 -0
  39. package/src/interfaces/controller-options.interface.d.ts +5 -1
  40. package/src/interfaces/decorator-builder.interface.d.ts +5 -0
  41. package/src/interfaces/dynamic-api-cache-options.interface.d.ts +1 -0
  42. package/src/interfaces/dynamic-api-casl-ability.interface.d.ts +17 -0
  43. package/src/interfaces/dynamic-api-casl-ability.interface.js +11 -0
  44. package/src/interfaces/dynamic-api-global-state.interface.d.ts +16 -0
  45. package/src/interfaces/dynamic-api-options.interface.d.ts +5 -2
  46. package/src/interfaces/dynamic-api-options.interface.js +3 -0
  47. package/src/interfaces/dynamic-api-policy-handler.interface.d.ts +16 -0
  48. package/src/interfaces/dynamic-api-route-config.interface.d.ts +7 -9
  49. package/src/interfaces/dynamic-api-route-dtos-bundle.type.d.ts +8 -0
  50. package/src/interfaces/dynamic-api-route-module.type.d.ts +3 -0
  51. package/src/interfaces/dynamic-api-route-type.type.d.ts +2 -0
  52. package/src/interfaces/index.d.ts +11 -2
  53. package/src/interfaces/index.js +11 -2
  54. package/src/mixins/create-policies-guard.mixin.d.ts +5 -0
  55. package/src/mixins/create-policies-guard.mixin.js +37 -0
  56. package/src/mixins/index.d.ts +1 -0
  57. package/src/mixins/index.js +1 -0
  58. package/src/modules/auth/auth.helper.d.ts +10 -0
  59. package/src/modules/auth/auth.helper.js +103 -0
  60. package/src/modules/auth/auth.module.d.ts +12 -0
  61. package/src/modules/auth/auth.module.js +55 -0
  62. package/src/modules/auth/guards/index.d.ts +2 -0
  63. package/src/modules/auth/guards/index.js +18 -0
  64. package/src/modules/auth/guards/jwt-auth.guard.d.ts +4 -0
  65. package/src/modules/auth/guards/jwt-auth.guard.js +17 -0
  66. package/src/modules/auth/guards/local-auth.guard.d.ts +4 -0
  67. package/src/modules/auth/guards/local-auth.guard.js +17 -0
  68. package/src/modules/auth/index.d.ts +7 -0
  69. package/src/modules/auth/index.js +23 -0
  70. package/src/modules/auth/interfaces/auth-controller.interface.d.ts +9 -0
  71. package/src/modules/auth/interfaces/auth-options.interface.d.ts +22 -0
  72. package/src/modules/auth/interfaces/auth-service.interface.d.ts +12 -0
  73. package/src/modules/auth/interfaces/index.d.ts +3 -0
  74. package/src/modules/auth/interfaces/index.js +19 -0
  75. package/src/modules/auth/mixins/auth-controller.mixin.d.ts +6 -0
  76. package/src/modules/auth/mixins/auth-controller.mixin.js +101 -0
  77. package/src/modules/auth/mixins/auth-register-policies-guard.mixin.d.ts +6 -0
  78. package/src/modules/auth/mixins/auth-register-policies-guard.mixin.js +59 -0
  79. package/src/modules/auth/mixins/index.d.ts +2 -0
  80. package/src/modules/auth/mixins/index.js +18 -0
  81. package/src/modules/auth/services/base-auth.service.d.ts +51 -0
  82. package/src/modules/auth/services/base-auth.service.js +64 -0
  83. package/src/modules/auth/services/index.d.ts +1 -0
  84. package/src/modules/auth/services/index.js +17 -0
  85. package/src/modules/auth/strategies/index.d.ts +1 -0
  86. package/src/modules/auth/strategies/index.js +17 -0
  87. package/src/modules/auth/strategies/jwt.strategy.d.ts +8 -0
  88. package/src/modules/auth/strategies/jwt.strategy.js +35 -0
  89. package/src/modules/dynamic-api-config/dynamic-api-config.module.d.ts +5 -0
  90. package/src/modules/dynamic-api-config/dynamic-api-config.module.js +31 -0
  91. package/src/modules/dynamic-api-config/index.d.ts +1 -0
  92. package/src/modules/dynamic-api-config/index.js +17 -0
  93. package/src/modules/index.d.ts +2 -11
  94. package/src/modules/index.js +2 -11
  95. package/src/routes/create-many/create-many-controller.mixin.d.ts +6 -0
  96. package/src/{modules → routes}/create-many/create-many-controller.mixin.js +26 -4
  97. package/src/{modules → routes}/create-many/create-many.helper.d.ts +2 -2
  98. package/src/{modules → routes}/create-many/create-many.helper.js +6 -4
  99. package/src/{modules → routes}/create-many/create-many.module.d.ts +1 -1
  100. package/src/{modules → routes}/create-many/create-many.module.js +2 -2
  101. package/src/routes/create-one/create-one-controller.mixin.d.ts +6 -0
  102. package/src/{modules → routes}/create-one/create-one-controller.mixin.js +25 -3
  103. package/src/{modules → routes}/create-one/create-one.helper.d.ts +2 -2
  104. package/src/{modules → routes}/create-one/create-one.helper.js +6 -4
  105. package/src/routes/create-one/create-one.module.d.ts +6 -0
  106. package/src/{modules → routes}/create-one/create-one.module.js +3 -3
  107. package/src/routes/delete-many/delete-many-controller.mixin.d.ts +6 -0
  108. package/src/{modules → routes}/delete-many/delete-many-controller.mixin.js +26 -3
  109. package/src/{modules → routes}/delete-many/delete-many.helper.d.ts +2 -2
  110. package/src/{modules → routes}/delete-many/delete-many.helper.js +6 -4
  111. package/src/routes/delete-many/delete-many.module.d.ts +6 -0
  112. package/src/{modules → routes}/delete-many/delete-many.module.js +3 -3
  113. package/src/routes/delete-one/delete-one-controller.mixin.d.ts +6 -0
  114. package/src/{modules → routes}/delete-one/delete-one-controller.mixin.js +26 -3
  115. package/src/{modules → routes}/delete-one/delete-one.helper.d.ts +2 -2
  116. package/src/{modules → routes}/delete-one/delete-one.helper.js +6 -4
  117. package/src/routes/delete-one/delete-one.module.d.ts +6 -0
  118. package/src/{modules → routes}/delete-one/delete-one.module.js +3 -3
  119. package/src/routes/duplicate-many/duplicate-many-controller.mixin.d.ts +6 -0
  120. package/src/{modules → routes}/duplicate-many/duplicate-many-controller.mixin.js +25 -3
  121. package/src/{modules → routes}/duplicate-many/duplicate-many.helper.d.ts +2 -2
  122. package/src/{modules → routes}/duplicate-many/duplicate-many.helper.js +6 -4
  123. package/src/routes/duplicate-many/duplicate-many.module.d.ts +6 -0
  124. package/src/{modules → routes}/duplicate-many/duplicate-many.module.js +3 -3
  125. package/src/routes/duplicate-one/duplicate-one-controller.mixin.d.ts +6 -0
  126. package/src/{modules → routes}/duplicate-one/duplicate-one-controller.mixin.js +25 -3
  127. package/src/{modules → routes}/duplicate-one/duplicate-one.helper.d.ts +2 -2
  128. package/src/{modules → routes}/duplicate-one/duplicate-one.helper.js +6 -4
  129. package/src/routes/duplicate-one/duplicate-one.module.d.ts +6 -0
  130. package/src/{modules → routes}/duplicate-one/duplicate-one.module.js +3 -3
  131. package/src/routes/get-many/get-many-controller.mixin.d.ts +6 -0
  132. package/src/{modules → routes}/get-many/get-many-controller.mixin.js +28 -6
  133. package/src/routes/get-many/get-many-service.interface.js +2 -0
  134. package/src/{modules → routes}/get-many/get-many.helper.d.ts +2 -2
  135. package/src/{modules → routes}/get-many/get-many.helper.js +6 -4
  136. package/src/routes/get-many/get-many.module.d.ts +6 -0
  137. package/src/{modules → routes}/get-many/get-many.module.js +3 -3
  138. package/src/routes/get-one/get-one-controller.interface.js +2 -0
  139. package/src/routes/get-one/get-one-controller.mixin.d.ts +6 -0
  140. package/src/{modules → routes}/get-one/get-one-controller.mixin.js +25 -3
  141. package/src/routes/get-one/get-one-service.interface.js +2 -0
  142. package/src/{modules → routes}/get-one/get-one.helper.d.ts +2 -2
  143. package/src/{modules → routes}/get-one/get-one.helper.js +6 -4
  144. package/src/routes/get-one/get-one.module.d.ts +6 -0
  145. package/src/{modules → routes}/get-one/get-one.module.js +3 -3
  146. package/src/routes/index.d.ts +11 -0
  147. package/src/routes/index.js +27 -0
  148. package/src/routes/replace-one/replace-one-controller.interface.js +2 -0
  149. package/src/routes/replace-one/replace-one-controller.mixin.d.ts +6 -0
  150. package/src/{modules → routes}/replace-one/replace-one-controller.mixin.js +25 -3
  151. package/src/routes/replace-one/replace-one-service.interface.js +2 -0
  152. package/src/{modules → routes}/replace-one/replace-one.helper.d.ts +2 -2
  153. package/src/{modules → routes}/replace-one/replace-one.helper.js +6 -4
  154. package/src/routes/replace-one/replace-one.module.d.ts +6 -0
  155. package/src/{modules → routes}/replace-one/replace-one.module.js +3 -3
  156. package/src/routes/update-many/update-many-controller.interface.js +2 -0
  157. package/src/routes/update-many/update-many-controller.mixin.d.ts +6 -0
  158. package/src/{modules → routes}/update-many/update-many-controller.mixin.js +25 -3
  159. package/src/routes/update-many/update-many-service.interface.js +2 -0
  160. package/src/{modules → routes}/update-many/update-many.helper.d.ts +2 -2
  161. package/src/{modules → routes}/update-many/update-many.helper.js +6 -4
  162. package/src/routes/update-many/update-many.module.d.ts +6 -0
  163. package/src/{modules → routes}/update-many/update-many.module.js +3 -3
  164. package/src/routes/update-one/update-one-controller.interface.js +2 -0
  165. package/src/routes/update-one/update-one-controller.mixin.d.ts +6 -0
  166. package/src/{modules → routes}/update-one/update-one-controller.mixin.js +25 -3
  167. package/src/routes/update-one/update-one-service.interface.js +2 -0
  168. package/src/{modules → routes}/update-one/update-one.helper.d.ts +2 -2
  169. package/src/{modules → routes}/update-one/update-one.helper.js +6 -4
  170. package/src/routes/update-one/update-one.module.d.ts +6 -0
  171. package/src/{modules → routes}/update-one/update-one.module.js +3 -3
  172. package/src/services/{base.service.d.ts → base/base.service.d.ts} +1 -1
  173. package/src/services/{base.service.js → base/base.service.js} +2 -2
  174. package/src/services/bcrypt/bcrypt.service.d.ts +5 -0
  175. package/src/services/bcrypt/bcrypt.service.js +26 -0
  176. package/src/services/dynamic-api-global-state/dynamic-api-global-state.service.d.ts +11 -0
  177. package/src/services/dynamic-api-global-state/dynamic-api-global-state.service.js +36 -0
  178. package/src/services/index.d.ts +3 -1
  179. package/src/services/index.js +3 -1
  180. package/src/version.json +1 -1
  181. package/tsconfig.tsbuildinfo +1 -1
  182. package/src/builders/route-decorators.builder.d.ts +0 -20
  183. package/src/modules/create-many/create-many-controller.mixin.d.ts +0 -6
  184. package/src/modules/create-one/create-one-controller.mixin.d.ts +0 -6
  185. package/src/modules/create-one/create-one.module.d.ts +0 -6
  186. package/src/modules/delete-many/delete-many-controller.mixin.d.ts +0 -6
  187. package/src/modules/delete-many/delete-many.module.d.ts +0 -6
  188. package/src/modules/delete-one/delete-one-controller.mixin.d.ts +0 -6
  189. package/src/modules/delete-one/delete-one.module.d.ts +0 -6
  190. package/src/modules/duplicate-many/duplicate-many-controller.mixin.d.ts +0 -6
  191. package/src/modules/duplicate-many/duplicate-many.module.d.ts +0 -6
  192. package/src/modules/duplicate-one/duplicate-one-controller.mixin.d.ts +0 -6
  193. package/src/modules/duplicate-one/duplicate-one.module.d.ts +0 -6
  194. package/src/modules/get-many/get-many-controller.mixin.d.ts +0 -6
  195. package/src/modules/get-many/get-many.module.d.ts +0 -6
  196. package/src/modules/get-one/get-one-controller.mixin.d.ts +0 -6
  197. package/src/modules/get-one/get-one.module.d.ts +0 -6
  198. package/src/modules/replace-one/replace-one-controller.mixin.d.ts +0 -6
  199. package/src/modules/replace-one/replace-one.module.d.ts +0 -6
  200. package/src/modules/update-many/update-many-controller.mixin.d.ts +0 -6
  201. package/src/modules/update-many/update-many.module.d.ts +0 -6
  202. package/src/modules/update-one/update-one-controller.mixin.d.ts +0 -6
  203. package/src/modules/update-one/update-one.module.d.ts +0 -6
  204. /package/src/{modules/create-many/create-many-controller.interface.js → interfaces/decorator-builder.interface.js} +0 -0
  205. /package/src/{modules/create-many/create-many-service.interface.js → interfaces/dynamic-api-global-state.interface.js} +0 -0
  206. /package/src/{modules/create-one/create-one-controller.interface.js → interfaces/dynamic-api-policy-handler.interface.js} +0 -0
  207. /package/src/{modules/create-one/create-one-service.interface.js → interfaces/dynamic-api-route-dtos-bundle.type.js} +0 -0
  208. /package/src/{modules/delete-many/delete-many-controller.interface.js → interfaces/dynamic-api-route-module.type.js} +0 -0
  209. /package/src/{modules/delete-many/delete-many-service.interface.js → interfaces/dynamic-api-route-type.type.js} +0 -0
  210. /package/src/modules/{delete-one/delete-one-controller.interface.js → auth/interfaces/auth-controller.interface.js} +0 -0
  211. /package/src/modules/{delete-one/delete-one-service.interface.js → auth/interfaces/auth-options.interface.js} +0 -0
  212. /package/src/modules/{duplicate-many/duplicate-many-controller.interface.js → auth/interfaces/auth-service.interface.js} +0 -0
  213. /package/src/{modules → routes}/create-many/base-create-many.service.d.ts +0 -0
  214. /package/src/{modules → routes}/create-many/base-create-many.service.js +0 -0
  215. /package/src/{modules → routes}/create-many/create-many-controller.interface.d.ts +0 -0
  216. /package/src/{modules/duplicate-many/duplicate-many-service.interface.js → routes/create-many/create-many-controller.interface.js} +0 -0
  217. /package/src/{modules → routes}/create-many/create-many-service.interface.d.ts +0 -0
  218. /package/src/{modules/duplicate-one/duplicate-one-controller.interface.js → routes/create-many/create-many-service.interface.js} +0 -0
  219. /package/src/{modules → routes}/create-many/index.d.ts +0 -0
  220. /package/src/{modules → routes}/create-many/index.js +0 -0
  221. /package/src/{modules → routes}/create-one/base-create-one.service.d.ts +0 -0
  222. /package/src/{modules → routes}/create-one/base-create-one.service.js +0 -0
  223. /package/src/{modules → routes}/create-one/create-one-controller.interface.d.ts +0 -0
  224. /package/src/{modules/duplicate-one/duplicate-one-service.interface.js → routes/create-one/create-one-controller.interface.js} +0 -0
  225. /package/src/{modules → routes}/create-one/create-one-service.interface.d.ts +0 -0
  226. /package/src/{modules/get-many/get-many-controller.interface.js → routes/create-one/create-one-service.interface.js} +0 -0
  227. /package/src/{modules → routes}/create-one/index.d.ts +0 -0
  228. /package/src/{modules → routes}/create-one/index.js +0 -0
  229. /package/src/{modules → routes}/delete-many/base-delete-many.service.d.ts +0 -0
  230. /package/src/{modules → routes}/delete-many/base-delete-many.service.js +0 -0
  231. /package/src/{modules → routes}/delete-many/delete-many-controller.interface.d.ts +0 -0
  232. /package/src/{modules/get-many/get-many-service.interface.js → routes/delete-many/delete-many-controller.interface.js} +0 -0
  233. /package/src/{modules → routes}/delete-many/delete-many-service.interface.d.ts +0 -0
  234. /package/src/{modules/get-one/get-one-controller.interface.js → routes/delete-many/delete-many-service.interface.js} +0 -0
  235. /package/src/{modules → routes}/delete-many/delete-many.presenter.d.ts +0 -0
  236. /package/src/{modules → routes}/delete-many/delete-many.presenter.js +0 -0
  237. /package/src/{modules → routes}/delete-many/index.d.ts +0 -0
  238. /package/src/{modules → routes}/delete-many/index.js +0 -0
  239. /package/src/{modules → routes}/delete-one/base-delete-one.service.d.ts +0 -0
  240. /package/src/{modules → routes}/delete-one/base-delete-one.service.js +0 -0
  241. /package/src/{modules → routes}/delete-one/delete-one-controller.interface.d.ts +0 -0
  242. /package/src/{modules/get-one/get-one-service.interface.js → routes/delete-one/delete-one-controller.interface.js} +0 -0
  243. /package/src/{modules → routes}/delete-one/delete-one-service.interface.d.ts +0 -0
  244. /package/src/{modules/replace-one/replace-one-controller.interface.js → routes/delete-one/delete-one-service.interface.js} +0 -0
  245. /package/src/{modules → routes}/delete-one/delete-one.presenter.d.ts +0 -0
  246. /package/src/{modules → routes}/delete-one/delete-one.presenter.js +0 -0
  247. /package/src/{modules → routes}/delete-one/index.d.ts +0 -0
  248. /package/src/{modules → routes}/delete-one/index.js +0 -0
  249. /package/src/{modules → routes}/duplicate-many/base-duplicate-many.service.d.ts +0 -0
  250. /package/src/{modules → routes}/duplicate-many/base-duplicate-many.service.js +0 -0
  251. /package/src/{modules → routes}/duplicate-many/duplicate-many-controller.interface.d.ts +0 -0
  252. /package/src/{modules/replace-one/replace-one-service.interface.js → routes/duplicate-many/duplicate-many-controller.interface.js} +0 -0
  253. /package/src/{modules → routes}/duplicate-many/duplicate-many-service.interface.d.ts +0 -0
  254. /package/src/{modules/update-many/update-many-controller.interface.js → routes/duplicate-many/duplicate-many-service.interface.js} +0 -0
  255. /package/src/{modules → routes}/duplicate-many/index.d.ts +0 -0
  256. /package/src/{modules → routes}/duplicate-many/index.js +0 -0
  257. /package/src/{modules → routes}/duplicate-one/base-duplicate-one.service.d.ts +0 -0
  258. /package/src/{modules → routes}/duplicate-one/base-duplicate-one.service.js +0 -0
  259. /package/src/{modules → routes}/duplicate-one/duplicate-one-controller.interface.d.ts +0 -0
  260. /package/src/{modules/update-many/update-many-service.interface.js → routes/duplicate-one/duplicate-one-controller.interface.js} +0 -0
  261. /package/src/{modules → routes}/duplicate-one/duplicate-one-service.interface.d.ts +0 -0
  262. /package/src/{modules/update-one/update-one-controller.interface.js → routes/duplicate-one/duplicate-one-service.interface.js} +0 -0
  263. /package/src/{modules → routes}/duplicate-one/index.d.ts +0 -0
  264. /package/src/{modules → routes}/duplicate-one/index.js +0 -0
  265. /package/src/{modules → routes}/get-many/base-get-many.service.d.ts +0 -0
  266. /package/src/{modules → routes}/get-many/base-get-many.service.js +0 -0
  267. /package/src/{modules → routes}/get-many/get-many-controller.interface.d.ts +0 -0
  268. /package/src/{modules/update-one/update-one-service.interface.js → routes/get-many/get-many-controller.interface.js} +0 -0
  269. /package/src/{modules → routes}/get-many/get-many-service.interface.d.ts +0 -0
  270. /package/src/{modules → routes}/get-many/index.d.ts +0 -0
  271. /package/src/{modules → routes}/get-many/index.js +0 -0
  272. /package/src/{modules → routes}/get-one/base-get-one.service.d.ts +0 -0
  273. /package/src/{modules → routes}/get-one/base-get-one.service.js +0 -0
  274. /package/src/{modules → routes}/get-one/get-one-controller.interface.d.ts +0 -0
  275. /package/src/{modules → routes}/get-one/get-one-service.interface.d.ts +0 -0
  276. /package/src/{modules → routes}/get-one/index.d.ts +0 -0
  277. /package/src/{modules → routes}/get-one/index.js +0 -0
  278. /package/src/{modules → routes}/replace-one/base-replace-one.service.d.ts +0 -0
  279. /package/src/{modules → routes}/replace-one/base-replace-one.service.js +0 -0
  280. /package/src/{modules → routes}/replace-one/index.d.ts +0 -0
  281. /package/src/{modules → routes}/replace-one/index.js +0 -0
  282. /package/src/{modules → routes}/replace-one/replace-one-controller.interface.d.ts +0 -0
  283. /package/src/{modules → routes}/replace-one/replace-one-service.interface.d.ts +0 -0
  284. /package/src/{modules → routes}/update-many/base-update-many.service.d.ts +0 -0
  285. /package/src/{modules → routes}/update-many/base-update-many.service.js +0 -0
  286. /package/src/{modules → routes}/update-many/index.d.ts +0 -0
  287. /package/src/{modules → routes}/update-many/index.js +0 -0
  288. /package/src/{modules → routes}/update-many/update-many-controller.interface.d.ts +0 -0
  289. /package/src/{modules → routes}/update-many/update-many-service.interface.d.ts +0 -0
  290. /package/src/{modules → routes}/update-one/base-update-one.service.d.ts +0 -0
  291. /package/src/{modules → routes}/update-one/base-update-one.service.js +0 -0
  292. /package/src/{modules → routes}/update-one/index.d.ts +0 -0
  293. /package/src/{modules → routes}/update-one/index.js +0 -0
  294. /package/src/{modules → routes}/update-one/update-one-controller.interface.d.ts +0 -0
  295. /package/src/{modules → routes}/update-one/update-one-service.interface.d.ts +0 -0
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseAuthService = void 0;
4
+ const services_1 = require("../../../services");
5
+ class BaseAuthService extends services_1.BaseService {
6
+ constructor(model, jwtService, bcryptService) {
7
+ super(model);
8
+ this.model = model;
9
+ this.jwtService = jwtService;
10
+ this.bcryptService = bcryptService;
11
+ this.loginField = 'email';
12
+ this.passwordField = 'password';
13
+ this.additionalRequestFields = [];
14
+ }
15
+ async validateUser(login, pass) {
16
+ const user = (await this.model.findOne({ [this.loginField]: login }).lean().exec());
17
+ if (!user || !await this.bcryptService.compare(pass, user[this.passwordField])) {
18
+ return null;
19
+ }
20
+ const fieldsToBuild = [
21
+ '_id',
22
+ this.loginField,
23
+ ...this.additionalRequestFields,
24
+ ];
25
+ return this.buildInstance(fieldsToBuild.reduce((acc, field) => (user[field] ? { ...acc, [field]: user[field] } : acc), {}));
26
+ }
27
+ async login(user) {
28
+ const fieldsToBuild = [
29
+ '_id',
30
+ 'id',
31
+ this.loginField,
32
+ ...this.additionalRequestFields,
33
+ ];
34
+ const payload = this.buildInstance(fieldsToBuild.reduce((acc, field) => (user[field] !== undefined ? { ...acc, [field]: user[field] } : acc), {}));
35
+ return {
36
+ accessToken: this.jwtService.sign(payload),
37
+ };
38
+ }
39
+ async register(userToCreate) {
40
+ const hashedPassword = await this.bcryptService.hash(userToCreate[this.passwordField]);
41
+ const { _id } = await this.model.create({ ...userToCreate, [this.passwordField]: hashedPassword });
42
+ const user = await this.getUserById(_id.toString());
43
+ return this.login(user);
44
+ }
45
+ async getAccount({ id }) {
46
+ const user = await this.getUserById(id);
47
+ const fieldsToBuild = [
48
+ '_id',
49
+ this.loginField,
50
+ ...this.additionalRequestFields,
51
+ ];
52
+ return this.buildInstance(fieldsToBuild.reduce((acc, field) => (user[field] !== undefined ? { ...acc, [field]: user[field] } : acc), {}));
53
+ }
54
+ async changePassword(userId, newPassword) {
55
+ const hashedPassword = await this.bcryptService.hash(newPassword);
56
+ const { _id } = await this.model.findOneAndUpdate({ _id: userId }, { [this.passwordField]: hashedPassword }, { new: true });
57
+ const user = await this.getUserById(_id.toString());
58
+ return this.login(user);
59
+ }
60
+ async getUserById(userId) {
61
+ return (await this.model.findOne({ _id: userId }).lean().exec());
62
+ }
63
+ }
64
+ exports.BaseAuthService = BaseAuthService;
@@ -0,0 +1 @@
1
+ export * from './base-auth.service';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./base-auth.service"), exports);
@@ -0,0 +1 @@
1
+ export * from './jwt.strategy';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./jwt.strategy"), exports);
@@ -0,0 +1,8 @@
1
+ import { Strategy } from 'passport-jwt';
2
+ declare const JwtStrategy_base: new (...args: any[]) => Strategy;
3
+ export declare class JwtStrategy extends JwtStrategy_base {
4
+ protected loginField: string;
5
+ constructor();
6
+ validate(payload: any): Promise<any>;
7
+ }
8
+ export {};
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.JwtStrategy = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const passport_1 = require("@nestjs/passport");
15
+ const passport_jwt_1 = require("passport-jwt");
16
+ const dynamic_api_module_1 = require("../../../dynamic-api.module");
17
+ let JwtStrategy = class JwtStrategy extends (0, passport_1.PassportStrategy)(passport_jwt_1.Strategy) {
18
+ constructor() {
19
+ super({
20
+ jwtFromRequest: passport_jwt_1.ExtractJwt.fromAuthHeaderAsBearerToken(),
21
+ ignoreExpiration: false,
22
+ secretOrKey: dynamic_api_module_1.DynamicApiModule.state.get('jwtSecret'),
23
+ });
24
+ this.loginField = (dynamic_api_module_1.DynamicApiModule.state.get('credentials')).loginField;
25
+ }
26
+ async validate(payload) {
27
+ const { iat, exp, ...user } = payload;
28
+ return user;
29
+ }
30
+ };
31
+ exports.JwtStrategy = JwtStrategy;
32
+ exports.JwtStrategy = JwtStrategy = __decorate([
33
+ (0, common_1.Injectable)(),
34
+ __metadata("design:paramtypes", [])
35
+ ], JwtStrategy);
@@ -0,0 +1,5 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { DynamicApiGlobalState } from '../../interfaces';
3
+ export declare class DynamicApiConfigModule {
4
+ static register(config: DynamicApiGlobalState): DynamicModule;
5
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var DynamicApiConfigModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.DynamicApiConfigModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const interfaces_1 = require("../../interfaces");
13
+ let DynamicApiConfigModule = DynamicApiConfigModule_1 = class DynamicApiConfigModule {
14
+ static register(config) {
15
+ return {
16
+ global: true,
17
+ module: DynamicApiConfigModule_1,
18
+ providers: [
19
+ {
20
+ provide: interfaces_1.DYNAMIC_API_GLOBAL_STATE,
21
+ useValue: config,
22
+ },
23
+ ],
24
+ exports: [interfaces_1.DYNAMIC_API_GLOBAL_STATE],
25
+ };
26
+ }
27
+ };
28
+ exports.DynamicApiConfigModule = DynamicApiConfigModule;
29
+ exports.DynamicApiConfigModule = DynamicApiConfigModule = DynamicApiConfigModule_1 = __decorate([
30
+ (0, common_1.Module)({})
31
+ ], DynamicApiConfigModule);
@@ -0,0 +1 @@
1
+ export * from './dynamic-api-config.module';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./dynamic-api-config.module"), exports);
@@ -1,11 +1,2 @@
1
- export * from './create-many';
2
- export * from './create-one';
3
- export * from './delete-many';
4
- export * from './delete-one';
5
- export * from './duplicate-many';
6
- export * from './duplicate-one';
7
- export * from './get-many';
8
- export * from './get-one';
9
- export * from './replace-one';
10
- export * from './update-many';
11
- export * from './update-one';
1
+ export * from './auth';
2
+ export * from './dynamic-api-config';
@@ -14,14 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./create-many"), exports);
18
- __exportStar(require("./create-one"), exports);
19
- __exportStar(require("./delete-many"), exports);
20
- __exportStar(require("./delete-one"), exports);
21
- __exportStar(require("./duplicate-many"), exports);
22
- __exportStar(require("./duplicate-one"), exports);
23
- __exportStar(require("./get-many"), exports);
24
- __exportStar(require("./get-one"), exports);
25
- __exportStar(require("./replace-one"), exports);
26
- __exportStar(require("./update-many"), exports);
27
- __exportStar(require("./update-one"), exports);
17
+ __exportStar(require("./auth"), exports);
18
+ __exportStar(require("./dynamic-api-config"), exports);
@@ -0,0 +1,6 @@
1
+ import { Type } from '@nestjs/common';
2
+ import { ControllerOptions, DynamicAPIRouteConfig } from '../../interfaces';
3
+ import { BaseEntity } from '../../models';
4
+ import { CreateManyControllerConstructor } from './create-many-controller.interface';
5
+ declare function CreateManyControllerMixin<Entity extends BaseEntity>(entity: Type<Entity>, { path, apiTag, isPublic: isPublicController, abilityPredicates: controllerAbilityPredicates, }: ControllerOptions<Entity>, { type: routeType, description, dTOs, isPublic: isPublicRoute, abilityPredicate: routeAbilityPredicate, }: DynamicAPIRouteConfig<Entity>, version?: string): CreateManyControllerConstructor<Entity>;
6
+ export { CreateManyControllerMixin };
@@ -15,14 +15,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.CreateManyControllerMixin = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
17
  const swagger_1 = require("@nestjs/swagger");
18
- const class_validator_1 = require("class-validator");
19
18
  const class_transformer_1 = require("class-transformer");
19
+ const class_validator_1 = require("class-validator");
20
20
  const builders_1 = require("../../builders");
21
+ const decorators_1 = require("../../decorators");
21
22
  const helpers_1 = require("../../helpers");
23
+ const controller_ability_predicates_helper_1 = require("../../helpers/controller-ability-predicates.helper");
22
24
  const mixins_1 = require("../../mixins");
23
- function CreateManyControllerMixin(entity, path, apiTag, version, description, DTOs) {
25
+ function CreateManyControllerMixin(entity, { path, apiTag, isPublic: isPublicController, abilityPredicates: controllerAbilityPredicates, }, { type: routeType, description, dTOs, isPublic: isPublicRoute, abilityPredicate: routeAbilityPredicate, }, version) {
24
26
  const displayedName = (0, helpers_1.pascalCase)(apiTag) ?? entity.name;
25
- const { body: CustomBody, presenter: CustomPresenter } = DTOs ?? {};
27
+ const { body: CustomBody, presenter: CustomPresenter } = dTOs ?? {};
28
+ let isPublic;
29
+ if (typeof isPublicRoute === 'boolean') {
30
+ isPublic = isPublicRoute;
31
+ }
32
+ else if (typeof isPublicController === 'boolean') {
33
+ isPublic = isPublicController;
34
+ }
35
+ else {
36
+ isPublic = false;
37
+ }
26
38
  class DtoBody extends (0, mixins_1.EntityBodyMixin)(entity) {
27
39
  }
28
40
  Object.defineProperty(DtoBody, 'name', {
@@ -55,7 +67,15 @@ function CreateManyControllerMixin(entity, path, apiTag, version, description, D
55
67
  writable: false,
56
68
  });
57
69
  }
58
- const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('CreateMany', entity, version, description, undefined, undefined, RouteBody, RoutePresenter);
70
+ const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('CreateMany', entity, version, description, isPublic, {
71
+ param: undefined,
72
+ query: undefined,
73
+ body: RouteBody,
74
+ presenter: RoutePresenter,
75
+ });
76
+ const abilityPredicate = routeAbilityPredicate ?? (0, controller_ability_predicates_helper_1.getPredicateFromControllerAbilityPredicates)(controllerAbilityPredicates, routeType);
77
+ class CreateManyPoliciesGuard extends (0, mixins_1.CreatePoliciesGuardMixin)(entity, routeType, version, abilityPredicate) {
78
+ }
59
79
  class BaseCreateManyController {
60
80
  constructor(service) {
61
81
  this.service = service;
@@ -67,6 +87,8 @@ function CreateManyControllerMixin(entity, path, apiTag, version, description, D
67
87
  }
68
88
  __decorate([
69
89
  (0, helpers_1.RouteDecoratorsHelper)(routeDecoratorsBuilder),
90
+ (0, common_1.UseGuards)(CreateManyPoliciesGuard),
91
+ (0, decorators_1.CheckPolicies)((ability) => ability.can(routeType, entity)),
70
92
  __param(0, (0, common_1.Body)()),
71
93
  __metadata("design:type", Function),
72
94
  __metadata("design:paramtypes", [RouteBody]),
@@ -1,7 +1,7 @@
1
1
  import { Type, ValidationPipeOptions } from '@nestjs/common';
2
- import { DTOsBundle, DynamicAPIServiceProvider } from '../../interfaces';
2
+ import { ControllerOptions, DynamicAPIRouteConfig, DynamicAPIServiceProvider } from '../../interfaces';
3
3
  import { BaseEntity } from '../../models';
4
4
  import { CreateManyControllerConstructor } from './create-many-controller.interface';
5
5
  declare function createCreateManyServiceProvider<Entity extends BaseEntity>(entity: Type<Entity>, version: string | undefined): DynamicAPIServiceProvider;
6
- declare function createCreateManyController<Entity extends BaseEntity>(entity: Type<Entity>, path: string, apiTag?: string, version?: string, description?: string, DTOs?: DTOsBundle, validationPipeOptions?: ValidationPipeOptions): CreateManyControllerConstructor<Entity>;
6
+ declare function createCreateManyController<Entity extends BaseEntity>(entity: Type<Entity>, controllerOptions: ControllerOptions<Entity>, routeConfig: DynamicAPIRouteConfig<Entity>, version?: string, validationPipeOptions?: ValidationPipeOptions): CreateManyControllerConstructor<Entity>;
7
7
  export { createCreateManyController, createCreateManyServiceProvider };
@@ -33,7 +33,7 @@ function createCreateManyServiceProvider(entity, version) {
33
33
  }
34
34
  };
35
35
  CreateManyService = __decorate([
36
- __param(0, (0, mongoose_1.InjectModel)(entity.name, dynamic_api_module_1.DynamicApiModule.connectionName)),
36
+ __param(0, (0, mongoose_1.InjectModel)(entity.name, dynamic_api_module_1.DynamicApiModule.state.get('connectionName'))),
37
37
  __metadata("design:paramtypes", [mongoose_2.Model])
38
38
  ], CreateManyService);
39
39
  Object.defineProperty(CreateManyService, 'name', {
@@ -46,8 +46,9 @@ function createCreateManyServiceProvider(entity, version) {
46
46
  };
47
47
  }
48
48
  exports.createCreateManyServiceProvider = createCreateManyServiceProvider;
49
- function createCreateManyController(entity, path, apiTag, version, description, DTOs, validationPipeOptions) {
50
- let CreateManyController = class CreateManyController extends (0, create_many_controller_mixin_1.CreateManyControllerMixin)(entity, path, apiTag, version, description, DTOs) {
49
+ function createCreateManyController(entity, controllerOptions, routeConfig, version, validationPipeOptions) {
50
+ const { path, apiTag } = controllerOptions;
51
+ let CreateManyController = class CreateManyController extends (0, create_many_controller_mixin_1.CreateManyControllerMixin)(entity, controllerOptions, routeConfig, version) {
51
52
  constructor(service) {
52
53
  super(service);
53
54
  this.service = service;
@@ -56,7 +57,8 @@ function createCreateManyController(entity, path, apiTag, version, description,
56
57
  CreateManyController = __decorate([
57
58
  (0, common_1.Controller)({ path, version }),
58
59
  (0, swagger_1.ApiTags)(apiTag || entity.name),
59
- (0, common_1.UsePipes)(new common_1.ValidationPipe(validationPipeOptions ?? { transform: true })),
60
+ (0, common_1.UsePipes)(new common_1.ValidationPipe(validationPipeOptions)),
61
+ (0, common_1.UseInterceptors)(common_1.ClassSerializerInterceptor),
60
62
  __param(0, (0, common_1.Inject)(provideServiceName(entity.name, version))),
61
63
  __metadata("design:paramtypes", [Object])
62
64
  ], CreateManyController);
@@ -2,5 +2,5 @@ import { DynamicModule, Type, ValidationPipeOptions } from '@nestjs/common';
2
2
  import { ControllerOptions, DynamicAPIRouteConfig } from '../../interfaces';
3
3
  import { BaseEntity } from '../../models';
4
4
  export declare class CreateManyModule {
5
- static forFeature<Entity extends BaseEntity>(databaseModule: DynamicModule, entity: Type<Entity>, { path, apiTag }: ControllerOptions, { description, dTOs: DTOs }: DynamicAPIRouteConfig<Entity>, version?: string, validationPipeOptions?: ValidationPipeOptions): DynamicModule;
5
+ static forFeature<Entity extends BaseEntity>(databaseModule: DynamicModule, entity: Type<Entity>, controllerOptions: ControllerOptions<Entity>, routeConfig: DynamicAPIRouteConfig<Entity>, version?: string, validationPipeOptions?: ValidationPipeOptions): Promise<DynamicModule>;
6
6
  }
@@ -11,8 +11,8 @@ exports.CreateManyModule = void 0;
11
11
  const common_1 = require("@nestjs/common");
12
12
  const create_many_helper_1 = require("./create-many.helper");
13
13
  let CreateManyModule = CreateManyModule_1 = class CreateManyModule {
14
- static forFeature(databaseModule, entity, { path, apiTag }, { description, dTOs: DTOs }, version, validationPipeOptions) {
15
- const controller = (0, create_many_helper_1.createCreateManyController)(entity, path, apiTag, version, description, DTOs, validationPipeOptions);
14
+ static async forFeature(databaseModule, entity, controllerOptions, routeConfig, version, validationPipeOptions) {
15
+ const controller = (0, create_many_helper_1.createCreateManyController)(entity, controllerOptions, routeConfig, version, validationPipeOptions);
16
16
  const ServiceProvider = (0, create_many_helper_1.createCreateManyServiceProvider)(entity, version);
17
17
  return {
18
18
  module: CreateManyModule_1,
@@ -0,0 +1,6 @@
1
+ import { Type } from '@nestjs/common';
2
+ import { ControllerOptions, DynamicAPIRouteConfig } from '../../interfaces';
3
+ import { BaseEntity } from '../../models';
4
+ import { CreateOneControllerConstructor } from './create-one-controller.interface';
5
+ declare function CreateOneControllerMixin<Entity extends BaseEntity>(entity: Type<Entity>, { path, apiTag, isPublic: isPublicController, abilityPredicates: controllerAbilityPredicates, }: ControllerOptions<Entity>, { type: routeType, description, dTOs, isPublic: isPublicRoute, abilityPredicate: routeAbilityPredicate, }: DynamicAPIRouteConfig<Entity>, version?: string): CreateOneControllerConstructor<Entity>;
6
+ export { CreateOneControllerMixin };
@@ -15,11 +15,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.CreateOneControllerMixin = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
17
  const builders_1 = require("../../builders");
18
+ const decorators_1 = require("../../decorators");
18
19
  const helpers_1 = require("../../helpers");
20
+ const controller_ability_predicates_helper_1 = require("../../helpers/controller-ability-predicates.helper");
19
21
  const mixins_1 = require("../../mixins");
20
- function CreateOneControllerMixin(entity, path, apiTag, version, description, DTOs) {
22
+ function CreateOneControllerMixin(entity, { path, apiTag, isPublic: isPublicController, abilityPredicates: controllerAbilityPredicates, }, { type: routeType, description, dTOs, isPublic: isPublicRoute, abilityPredicate: routeAbilityPredicate, }, version) {
21
23
  const displayedName = (0, helpers_1.pascalCase)(apiTag) ?? entity.name;
22
- const { body: CustomBody, presenter: CustomPresenter } = DTOs ?? {};
24
+ const { body: CustomBody, presenter: CustomPresenter } = dTOs ?? {};
25
+ let isPublic;
26
+ if (typeof isPublicRoute === 'boolean') {
27
+ isPublic = isPublicRoute;
28
+ }
29
+ else if (typeof isPublicController === 'boolean') {
30
+ isPublic = isPublicController;
31
+ }
32
+ else {
33
+ isPublic = false;
34
+ }
23
35
  class RouteBody extends (CustomBody ?? (0, mixins_1.EntityBodyMixin)(entity)) {
24
36
  }
25
37
  if (!CustomBody) {
@@ -36,7 +48,15 @@ function CreateOneControllerMixin(entity, path, apiTag, version, description, DT
36
48
  writable: false,
37
49
  });
38
50
  }
39
- const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('CreateOne', entity, version, description, undefined, undefined, RouteBody, RoutePresenter);
51
+ const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('CreateOne', entity, version, description, isPublic, {
52
+ param: undefined,
53
+ query: undefined,
54
+ body: RouteBody,
55
+ presenter: RoutePresenter,
56
+ });
57
+ const abilityPredicate = routeAbilityPredicate ?? (0, controller_ability_predicates_helper_1.getPredicateFromControllerAbilityPredicates)(controllerAbilityPredicates, routeType);
58
+ class CreateOnePoliciesGuard extends (0, mixins_1.CreatePoliciesGuardMixin)(entity, routeType, version, abilityPredicate) {
59
+ }
40
60
  class BaseCreateOneController {
41
61
  constructor(service) {
42
62
  this.service = service;
@@ -48,6 +68,8 @@ function CreateOneControllerMixin(entity, path, apiTag, version, description, DT
48
68
  }
49
69
  __decorate([
50
70
  (0, helpers_1.RouteDecoratorsHelper)(routeDecoratorsBuilder),
71
+ (0, common_1.UseGuards)(CreateOnePoliciesGuard),
72
+ (0, decorators_1.CheckPolicies)((ability) => ability.can(routeType, entity)),
51
73
  __param(0, (0, common_1.Body)()),
52
74
  __metadata("design:type", Function),
53
75
  __metadata("design:paramtypes", [RouteBody]),
@@ -1,7 +1,7 @@
1
1
  import { Type, ValidationPipeOptions } from '@nestjs/common';
2
- import { DTOsBundle, DynamicAPIServiceProvider } from '../../interfaces';
2
+ import { ControllerOptions, DynamicAPIRouteConfig, DynamicAPIServiceProvider } from '../../interfaces';
3
3
  import { BaseEntity } from '../../models';
4
4
  import { CreateOneControllerConstructor } from './create-one-controller.interface';
5
5
  declare function createCreateOneServiceProvider<Entity extends BaseEntity>(entity: Type<Entity>, version: string | undefined): DynamicAPIServiceProvider;
6
- declare function createCreateOneController<Entity extends BaseEntity>(entity: Type<Entity>, path: string, apiTag?: string, version?: string, description?: string, DTOs?: DTOsBundle, validationPipeOptions?: ValidationPipeOptions): CreateOneControllerConstructor<Entity>;
6
+ declare function createCreateOneController<Entity extends BaseEntity>(entity: Type<Entity>, controllerOptions: ControllerOptions<Entity>, routeConfig: DynamicAPIRouteConfig<Entity>, version?: string, validationPipeOptions?: ValidationPipeOptions): CreateOneControllerConstructor<Entity>;
7
7
  export { createCreateOneController, createCreateOneServiceProvider };
@@ -33,7 +33,7 @@ function createCreateOneServiceProvider(entity, version) {
33
33
  }
34
34
  };
35
35
  CreateOneService = __decorate([
36
- __param(0, (0, mongoose_1.InjectModel)(entity.name, dynamic_api_module_1.DynamicApiModule.connectionName)),
36
+ __param(0, (0, mongoose_1.InjectModel)(entity.name, dynamic_api_module_1.DynamicApiModule.state.get('connectionName'))),
37
37
  __metadata("design:paramtypes", [mongoose_2.Model])
38
38
  ], CreateOneService);
39
39
  Object.defineProperty(CreateOneService, 'name', {
@@ -46,8 +46,9 @@ function createCreateOneServiceProvider(entity, version) {
46
46
  };
47
47
  }
48
48
  exports.createCreateOneServiceProvider = createCreateOneServiceProvider;
49
- function createCreateOneController(entity, path, apiTag, version, description, DTOs, validationPipeOptions) {
50
- let CreateOneController = class CreateOneController extends (0, create_one_controller_mixin_1.CreateOneControllerMixin)(entity, path, apiTag, version, description, DTOs) {
49
+ function createCreateOneController(entity, controllerOptions, routeConfig, version, validationPipeOptions) {
50
+ const { path, apiTag } = controllerOptions;
51
+ let CreateOneController = class CreateOneController extends (0, create_one_controller_mixin_1.CreateOneControllerMixin)(entity, controllerOptions, routeConfig, version) {
51
52
  constructor(service) {
52
53
  super(service);
53
54
  this.service = service;
@@ -56,7 +57,8 @@ function createCreateOneController(entity, path, apiTag, version, description, D
56
57
  CreateOneController = __decorate([
57
58
  (0, common_1.Controller)({ path, version }),
58
59
  (0, swagger_1.ApiTags)(apiTag || entity.name),
59
- (0, common_1.UsePipes)(new common_1.ValidationPipe(validationPipeOptions ?? { transform: true })),
60
+ (0, common_1.UsePipes)(new common_1.ValidationPipe(validationPipeOptions)),
61
+ (0, common_1.UseInterceptors)(common_1.ClassSerializerInterceptor),
60
62
  __param(0, (0, common_1.Inject)(provideServiceName(entity.name, version))),
61
63
  __metadata("design:paramtypes", [Object])
62
64
  ], CreateOneController);
@@ -0,0 +1,6 @@
1
+ import { DynamicModule, Provider, Type, ValidationPipeOptions } from '@nestjs/common';
2
+ import { ControllerOptions, DynamicAPIRouteConfig } from '../../interfaces';
3
+ import { BaseEntity } from '../../models';
4
+ export declare class CreateOneModule {
5
+ static forFeature<Entity extends BaseEntity>(databaseModule: DynamicModule, entity: Type<Entity>, controllerOptions: ControllerOptions<Entity>, routeConfig: DynamicAPIRouteConfig<Entity>, version?: string, validationPipeOptions?: ValidationPipeOptions, extraProviders?: Provider[]): DynamicModule;
6
+ }
@@ -11,14 +11,14 @@ exports.CreateOneModule = void 0;
11
11
  const common_1 = require("@nestjs/common");
12
12
  const create_one_helper_1 = require("./create-one.helper");
13
13
  let CreateOneModule = CreateOneModule_1 = class CreateOneModule {
14
- static forFeature(databaseModule, entity, { path, apiTag }, { description, dTOs: DTOs }, version, validationPipeOptions) {
15
- const controller = (0, create_one_helper_1.createCreateOneController)(entity, path, apiTag, version, description, DTOs, validationPipeOptions);
14
+ static forFeature(databaseModule, entity, controllerOptions, routeConfig, version, validationPipeOptions, extraProviders) {
15
+ const controller = (0, create_one_helper_1.createCreateOneController)(entity, controllerOptions, routeConfig, version, validationPipeOptions);
16
16
  const ServiceProvider = (0, create_one_helper_1.createCreateOneServiceProvider)(entity, version);
17
17
  return {
18
18
  module: CreateOneModule_1,
19
19
  imports: [databaseModule],
20
20
  controllers: [controller],
21
- providers: [ServiceProvider],
21
+ providers: [...(extraProviders ?? []), ServiceProvider],
22
22
  };
23
23
  }
24
24
  };
@@ -0,0 +1,6 @@
1
+ import { Type } from '@nestjs/common';
2
+ import { ControllerOptions, DynamicAPIRouteConfig } from '../../interfaces';
3
+ import { BaseEntity } from '../../models';
4
+ import { DeleteManyControllerConstructor } from './delete-many-controller.interface';
5
+ declare function DeleteManyControllerMixin<Entity extends BaseEntity>(entity: Type<Entity>, { path, apiTag, isPublic: isPublicController, abilityPredicates: controllerAbilityPredicates, }: ControllerOptions<Entity>, { type: routeType, description, dTOs, isPublic: isPublicRoute, abilityPredicate: routeAbilityPredicate, }: DynamicAPIRouteConfig<Entity>, version?: string): DeleteManyControllerConstructor<Entity>;
6
+ export { DeleteManyControllerMixin };
@@ -15,11 +15,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.DeleteManyControllerMixin = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
17
  const builders_1 = require("../../builders");
18
+ const decorators_1 = require("../../decorators");
18
19
  const helpers_1 = require("../../helpers");
20
+ const controller_ability_predicates_helper_1 = require("../../helpers/controller-ability-predicates.helper");
21
+ const mixins_1 = require("../../mixins");
19
22
  const delete_many_presenter_1 = require("./delete-many.presenter");
20
- function DeleteManyControllerMixin(entity, path, apiTag, version, description, DTOs) {
23
+ function DeleteManyControllerMixin(entity, { path, apiTag, isPublic: isPublicController, abilityPredicates: controllerAbilityPredicates, }, { type: routeType, description, dTOs, isPublic: isPublicRoute, abilityPredicate: routeAbilityPredicate, }, version) {
21
24
  const displayedName = (0, helpers_1.pascalCase)(apiTag) ?? entity.name;
22
- const { presenter: CustomPresenter } = DTOs ?? {};
25
+ const { presenter: CustomPresenter } = dTOs ?? {};
26
+ let isPublic;
27
+ if (typeof isPublicRoute === 'boolean') {
28
+ isPublic = isPublicRoute;
29
+ }
30
+ else if (typeof isPublicController === 'boolean') {
31
+ isPublic = isPublicController;
32
+ }
33
+ else {
34
+ isPublic = false;
35
+ }
23
36
  class RoutePresenter extends (CustomPresenter ?? delete_many_presenter_1.DeleteManyPresenter) {
24
37
  }
25
38
  if (!CustomPresenter) {
@@ -28,7 +41,15 @@ function DeleteManyControllerMixin(entity, path, apiTag, version, description, D
28
41
  writable: false,
29
42
  });
30
43
  }
31
- const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('DeleteMany', entity, version, description, undefined, undefined, undefined, RoutePresenter);
44
+ const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('DeleteMany', entity, version, description, isPublic, {
45
+ param: undefined,
46
+ query: undefined,
47
+ body: undefined,
48
+ presenter: RoutePresenter,
49
+ });
50
+ const abilityPredicate = routeAbilityPredicate ?? (0, controller_ability_predicates_helper_1.getPredicateFromControllerAbilityPredicates)(controllerAbilityPredicates, routeType);
51
+ class DeleteManyPoliciesGuard extends (0, mixins_1.CreatePoliciesGuardMixin)(entity, routeType, version, abilityPredicate) {
52
+ }
32
53
  class BaseDeleteManyController {
33
54
  constructor(service) {
34
55
  this.service = service;
@@ -40,6 +61,8 @@ function DeleteManyControllerMixin(entity, path, apiTag, version, description, D
40
61
  }
41
62
  __decorate([
42
63
  (0, helpers_1.RouteDecoratorsHelper)(routeDecoratorsBuilder),
64
+ (0, common_1.UseGuards)(DeleteManyPoliciesGuard),
65
+ (0, decorators_1.CheckPolicies)((ability) => ability.can(routeType, entity)),
43
66
  __param(0, (0, common_1.Query)('ids')),
44
67
  __metadata("design:type", Function),
45
68
  __metadata("design:paramtypes", [Array]),
@@ -1,7 +1,7 @@
1
1
  import { Type, ValidationPipeOptions } from '@nestjs/common';
2
- import { DTOsBundle, DynamicAPIServiceProvider } from '../../interfaces';
2
+ import { ControllerOptions, DynamicAPIRouteConfig, DynamicAPIServiceProvider } from '../../interfaces';
3
3
  import { BaseEntity } from '../../models';
4
4
  import { DeleteManyControllerConstructor } from './delete-many-controller.interface';
5
5
  declare function createDeleteManyServiceProvider<Entity extends BaseEntity>(entity: Type<Entity>, version: string | undefined): DynamicAPIServiceProvider;
6
- declare function createDeleteManyController<Entity extends BaseEntity>(entity: Type<Entity>, path: string, apiTag?: string, version?: string, description?: string, DTOs?: DTOsBundle, validationPipeOptions?: ValidationPipeOptions): DeleteManyControllerConstructor<Entity>;
6
+ declare function createDeleteManyController<Entity extends BaseEntity>(entity: Type<Entity>, controllerOptions: ControllerOptions<Entity>, routeConfig: DynamicAPIRouteConfig<Entity>, version?: string, validationPipeOptions?: ValidationPipeOptions): DeleteManyControllerConstructor<Entity>;
7
7
  export { createDeleteManyController, createDeleteManyServiceProvider };
@@ -33,7 +33,7 @@ function createDeleteManyServiceProvider(entity, version) {
33
33
  }
34
34
  };
35
35
  DeleteManyService = __decorate([
36
- __param(0, (0, mongoose_1.InjectModel)(entity.name, dynamic_api_module_1.DynamicApiModule.connectionName)),
36
+ __param(0, (0, mongoose_1.InjectModel)(entity.name, dynamic_api_module_1.DynamicApiModule.state.get('connectionName'))),
37
37
  __metadata("design:paramtypes", [mongoose_2.Model])
38
38
  ], DeleteManyService);
39
39
  Object.defineProperty(DeleteManyService, 'name', {
@@ -46,8 +46,9 @@ function createDeleteManyServiceProvider(entity, version) {
46
46
  };
47
47
  }
48
48
  exports.createDeleteManyServiceProvider = createDeleteManyServiceProvider;
49
- function createDeleteManyController(entity, path, apiTag, version, description, DTOs, validationPipeOptions) {
50
- let DeleteManyController = class DeleteManyController extends (0, delete_many_controller_mixin_1.DeleteManyControllerMixin)(entity, path, apiTag, version, description, DTOs) {
49
+ function createDeleteManyController(entity, controllerOptions, routeConfig, version, validationPipeOptions) {
50
+ const { path, apiTag } = controllerOptions;
51
+ let DeleteManyController = class DeleteManyController extends (0, delete_many_controller_mixin_1.DeleteManyControllerMixin)(entity, controllerOptions, routeConfig, version) {
51
52
  constructor(service) {
52
53
  super(service);
53
54
  this.service = service;
@@ -56,7 +57,8 @@ function createDeleteManyController(entity, path, apiTag, version, description,
56
57
  DeleteManyController = __decorate([
57
58
  (0, common_1.Controller)({ path, version }),
58
59
  (0, swagger_1.ApiTags)(apiTag || entity.name),
59
- (0, common_1.UsePipes)(new common_1.ValidationPipe(validationPipeOptions ?? { transform: true })),
60
+ (0, common_1.UsePipes)(new common_1.ValidationPipe(validationPipeOptions)),
61
+ (0, common_1.UseInterceptors)(common_1.ClassSerializerInterceptor),
60
62
  __param(0, (0, common_1.Inject)(provideServiceName(entity.name, version))),
61
63
  __metadata("design:paramtypes", [Object])
62
64
  ], DeleteManyController);
@@ -0,0 +1,6 @@
1
+ import { DynamicModule, Provider, Type, ValidationPipeOptions } from '@nestjs/common';
2
+ import { ControllerOptions, DynamicAPIRouteConfig } from '../../interfaces';
3
+ import { BaseEntity } from '../../models';
4
+ export declare class DeleteManyModule {
5
+ static forFeature<Entity extends BaseEntity>(databaseModule: DynamicModule, entity: Type<Entity>, controllerOptions: ControllerOptions<Entity>, routeConfig: DynamicAPIRouteConfig<Entity>, version?: string, validationPipeOptions?: ValidationPipeOptions, extraProviders?: Provider[]): DynamicModule;
6
+ }