mongodb-dynamic-api 1.3.3 → 1.4.0

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 +13 -0
  2. package/README.md +410 -1
  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
@@ -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 { DuplicateManyControllerConstructor } from './duplicate-many-controller.interface';
5
5
  declare function createDuplicateManyServiceProvider<Entity extends BaseEntity>(entity: Type<Entity>, version: string | undefined): DynamicAPIServiceProvider;
6
- declare function createDuplicateManyController<Entity extends BaseEntity>(entity: Type<Entity>, path: string, apiTag?: string, version?: string, description?: string, DTOs?: DTOsBundle, validationPipeOptions?: ValidationPipeOptions): DuplicateManyControllerConstructor<Entity>;
6
+ declare function createDuplicateManyController<Entity extends BaseEntity>(entity: Type<Entity>, controllerOptions: ControllerOptions<Entity>, routeConfig: DynamicAPIRouteConfig<Entity>, version?: string, validationPipeOptions?: ValidationPipeOptions): DuplicateManyControllerConstructor<Entity>;
7
7
  export { createDuplicateManyController, createDuplicateManyServiceProvider };
@@ -33,7 +33,7 @@ function createDuplicateManyServiceProvider(entity, version) {
33
33
  }
34
34
  };
35
35
  DuplicateManyService = __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
  ], DuplicateManyService);
39
39
  Object.defineProperty(DuplicateManyService, 'name', {
@@ -46,8 +46,9 @@ function createDuplicateManyServiceProvider(entity, version) {
46
46
  };
47
47
  }
48
48
  exports.createDuplicateManyServiceProvider = createDuplicateManyServiceProvider;
49
- function createDuplicateManyController(entity, path, apiTag, version, description, DTOs, validationPipeOptions) {
50
- let DuplicateManyController = class DuplicateManyController extends (0, duplicate_many_controller_mixin_1.DuplicateManyControllerMixin)(entity, path, apiTag, version, description, DTOs) {
49
+ function createDuplicateManyController(entity, controllerOptions, routeConfig, version, validationPipeOptions) {
50
+ const { path, apiTag } = controllerOptions;
51
+ let DuplicateManyController = class DuplicateManyController extends (0, duplicate_many_controller_mixin_1.DuplicateManyControllerMixin)(entity, controllerOptions, routeConfig, version) {
51
52
  constructor(service) {
52
53
  super(service);
53
54
  this.service = service;
@@ -56,7 +57,8 @@ function createDuplicateManyController(entity, path, apiTag, version, descriptio
56
57
  DuplicateManyController = __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
  ], DuplicateManyController);
@@ -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 DuplicateManyModule {
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.DuplicateManyModule = void 0;
11
11
  const common_1 = require("@nestjs/common");
12
12
  const duplicate_many_helper_1 = require("./duplicate-many.helper");
13
13
  let DuplicateManyModule = DuplicateManyModule_1 = class DuplicateManyModule {
14
- static forFeature(databaseModule, entity, { path, apiTag }, { description, dTOs: DTOs }, version, validationPipeOptions) {
15
- const controller = (0, duplicate_many_helper_1.createDuplicateManyController)(entity, path, apiTag, version, description, DTOs, validationPipeOptions);
14
+ static forFeature(databaseModule, entity, controllerOptions, routeConfig, version, validationPipeOptions, extraProviders) {
15
+ const controller = (0, duplicate_many_helper_1.createDuplicateManyController)(entity, controllerOptions, routeConfig, version, validationPipeOptions);
16
16
  const ServiceProvider = (0, duplicate_many_helper_1.createDuplicateManyServiceProvider)(entity, version);
17
17
  return {
18
18
  module: DuplicateManyModule_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 { DuplicateOneControllerConstructor } from './duplicate-one-controller.interface';
5
+ declare function DuplicateOneControllerMixin<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): DuplicateOneControllerConstructor<Entity>;
6
+ export { DuplicateOneControllerMixin };
@@ -15,12 +15,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.DuplicateOneControllerMixin = 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 dtos_1 = require("../../dtos");
19
20
  const helpers_1 = require("../../helpers");
21
+ const controller_ability_predicates_helper_1 = require("../../helpers/controller-ability-predicates.helper");
20
22
  const mixins_1 = require("../../mixins");
21
- function DuplicateOneControllerMixin(entity, path, apiTag, version, description, DTOs) {
23
+ function DuplicateOneControllerMixin(entity, { path, apiTag, isPublic: isPublicController, abilityPredicates: controllerAbilityPredicates, }, { type: routeType, description, dTOs, isPublic: isPublicRoute, abilityPredicate: routeAbilityPredicate, }, version) {
22
24
  const displayedName = (0, helpers_1.pascalCase)(apiTag) ?? entity.name;
23
- const { body: CustomBody, param: CustomParam, presenter: CustomPresenter, } = DTOs ?? {};
25
+ const { body: CustomBody, param: CustomParam, 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
+ }
24
36
  class RouteBody extends (CustomBody ?? (0, mixins_1.EntityBodyMixin)(entity, true)) {
25
37
  }
26
38
  if (!CustomBody) {
@@ -45,7 +57,15 @@ function DuplicateOneControllerMixin(entity, path, apiTag, version, description,
45
57
  writable: false,
46
58
  });
47
59
  }
48
- const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('DuplicateOne', entity, version, description, RouteParam, undefined, RouteBody, RoutePresenter);
60
+ const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('DuplicateOne', entity, version, description, isPublic, {
61
+ param: RouteParam,
62
+ query: undefined,
63
+ body: RouteBody,
64
+ presenter: RoutePresenter,
65
+ });
66
+ const abilityPredicate = routeAbilityPredicate ?? (0, controller_ability_predicates_helper_1.getPredicateFromControllerAbilityPredicates)(controllerAbilityPredicates, routeType);
67
+ class DuplicateOnePoliciesGuard extends (0, mixins_1.CreatePoliciesGuardMixin)(entity, routeType, version, abilityPredicate) {
68
+ }
49
69
  class BaseDuplicateOneController {
50
70
  constructor(service) {
51
71
  this.service = service;
@@ -57,6 +77,8 @@ function DuplicateOneControllerMixin(entity, path, apiTag, version, description,
57
77
  }
58
78
  __decorate([
59
79
  (0, helpers_1.RouteDecoratorsHelper)(routeDecoratorsBuilder),
80
+ (0, common_1.UseGuards)(DuplicateOnePoliciesGuard),
81
+ (0, decorators_1.CheckPolicies)((ability) => ability.can(routeType, entity)),
60
82
  __param(0, (0, common_1.Param)('id')),
61
83
  __param(1, (0, common_1.Body)()),
62
84
  __metadata("design:type", Function),
@@ -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 { DuplicateOneControllerConstructor } from './duplicate-one-controller.interface';
5
5
  declare function createDuplicateOneServiceProvider<Entity extends BaseEntity>(entity: Type<Entity>, version: string | undefined): DynamicAPIServiceProvider;
6
- declare function createDuplicateOneController<Entity extends BaseEntity>(entity: Type<Entity>, path: string, apiTag?: string, version?: string, description?: string, DTOs?: DTOsBundle, validationPipeOptions?: ValidationPipeOptions): DuplicateOneControllerConstructor<Entity>;
6
+ declare function createDuplicateOneController<Entity extends BaseEntity>(entity: Type<Entity>, controllerOptions: ControllerOptions<Entity>, routeConfig: DynamicAPIRouteConfig<Entity>, version?: string, validationPipeOptions?: ValidationPipeOptions): DuplicateOneControllerConstructor<Entity>;
7
7
  export { createDuplicateOneController, createDuplicateOneServiceProvider };
@@ -33,7 +33,7 @@ function createDuplicateOneServiceProvider(entity, version) {
33
33
  }
34
34
  };
35
35
  DuplicateOneService = __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
  ], DuplicateOneService);
39
39
  Object.defineProperty(DuplicateOneService, 'name', {
@@ -46,8 +46,9 @@ function createDuplicateOneServiceProvider(entity, version) {
46
46
  };
47
47
  }
48
48
  exports.createDuplicateOneServiceProvider = createDuplicateOneServiceProvider;
49
- function createDuplicateOneController(entity, path, apiTag, version, description, DTOs, validationPipeOptions) {
50
- let DuplicateOneController = class DuplicateOneController extends (0, duplicate_one_controller_mixin_1.DuplicateOneControllerMixin)(entity, path, apiTag, version, description, DTOs) {
49
+ function createDuplicateOneController(entity, controllerOptions, routeConfig, version, validationPipeOptions) {
50
+ const { path, apiTag } = controllerOptions;
51
+ let DuplicateOneController = class DuplicateOneController extends (0, duplicate_one_controller_mixin_1.DuplicateOneControllerMixin)(entity, controllerOptions, routeConfig, version) {
51
52
  constructor(service) {
52
53
  super(service);
53
54
  this.service = service;
@@ -56,7 +57,8 @@ function createDuplicateOneController(entity, path, apiTag, version, description
56
57
  DuplicateOneController = __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
  ], DuplicateOneController);
@@ -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 DuplicateOneModule {
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.DuplicateOneModule = void 0;
11
11
  const common_1 = require("@nestjs/common");
12
12
  const duplicate_one_helper_1 = require("./duplicate-one.helper");
13
13
  let DuplicateOneModule = DuplicateOneModule_1 = class DuplicateOneModule {
14
- static forFeature(databaseModule, entity, { path, apiTag }, { description, dTOs: DTOs }, version, validationPipeOptions) {
15
- const controller = (0, duplicate_one_helper_1.createDuplicateOneController)(entity, path, apiTag, version, description, DTOs, validationPipeOptions);
14
+ static forFeature(databaseModule, entity, controllerOptions, routeConfig, version, validationPipeOptions, extraProviders) {
15
+ const controller = (0, duplicate_one_helper_1.createDuplicateOneController)(entity, controllerOptions, routeConfig, version, validationPipeOptions);
16
16
  const ServiceProvider = (0, duplicate_one_helper_1.createDuplicateOneServiceProvider)(entity, version);
17
17
  return {
18
18
  module: DuplicateOneModule_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 { GetManyControllerConstructor } from './get-many-controller.interface';
5
+ declare function GetManyControllerMixin<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): GetManyControllerConstructor<Entity>;
6
+ export { GetManyControllerMixin };
@@ -15,21 +15,33 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.GetManyControllerMixin = 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 dtos_1 = require("../../dtos");
19
20
  const helpers_1 = require("../../helpers");
21
+ const controller_ability_predicates_helper_1 = require("../../helpers/controller-ability-predicates.helper");
20
22
  const mixins_1 = require("../../mixins");
21
- function GetManyControllerMixin(entity, path, apiTag, version, description, DTOs) {
23
+ function GetManyControllerMixin(entity, { path, apiTag, isPublic: isPublicController, abilityPredicates: controllerAbilityPredicates, }, { type: routeType, description, dTOs, isPublic: isPublicRoute, abilityPredicate: routeAbilityPredicate, }, version) {
22
24
  const displayedName = (0, helpers_1.pascalCase)(apiTag) ?? entity.name;
23
- const { query: CustomQuery, presenter: CustomPresenter } = DTOs ?? {};
25
+ const { query: CustomQuery, 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
+ }
24
36
  class RouteQuery extends (CustomQuery ?? dtos_1.EntityQuery) {
25
37
  }
26
38
  if (!CustomQuery) {
27
39
  Object.defineProperty(RouteQuery, 'name', {
28
- value: `GetMany${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Query`,
40
+ value: `${routeType}${displayedName}${(0, helpers_1.addVersionSuffix)(version)}Query`,
29
41
  writable: false,
30
42
  });
31
43
  }
32
- class RoutePresenter extends (CustomPresenter ?? (0, mixins_1.EntityPresenterMixin)(entity)) {
44
+ class RoutePresenter extends (CustomPresenter ?? entity) {
33
45
  }
34
46
  if (!CustomPresenter) {
35
47
  Object.defineProperty(RoutePresenter, 'name', {
@@ -37,7 +49,15 @@ function GetManyControllerMixin(entity, path, apiTag, version, description, DTOs
37
49
  writable: false,
38
50
  });
39
51
  }
40
- const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('GetMany', entity, version, description, undefined, RouteQuery, undefined, RoutePresenter);
52
+ const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder(routeType, entity, version, description, isPublic, {
53
+ param: undefined,
54
+ query: RouteQuery,
55
+ body: undefined,
56
+ presenter: RoutePresenter,
57
+ });
58
+ const abilityPredicate = routeAbilityPredicate ?? (0, controller_ability_predicates_helper_1.getPredicateFromControllerAbilityPredicates)(controllerAbilityPredicates, routeType);
59
+ class GetManyPoliciesGuard extends (0, mixins_1.CreatePoliciesGuardMixin)(entity, routeType, version, abilityPredicate) {
60
+ }
41
61
  class BaseGetManyController {
42
62
  constructor(service) {
43
63
  this.service = service;
@@ -49,13 +69,15 @@ function GetManyControllerMixin(entity, path, apiTag, version, description, DTOs
49
69
  }
50
70
  __decorate([
51
71
  (0, helpers_1.RouteDecoratorsHelper)(routeDecoratorsBuilder),
72
+ (0, common_1.UseGuards)(GetManyPoliciesGuard),
73
+ (0, decorators_1.CheckPolicies)((ability) => ability.can(routeType, entity)),
52
74
  __param(0, (0, common_1.Query)()),
53
75
  __metadata("design:type", Function),
54
76
  __metadata("design:paramtypes", [RouteQuery]),
55
77
  __metadata("design:returntype", Promise)
56
78
  ], BaseGetManyController.prototype, "getMany", null);
57
79
  Object.defineProperty(BaseGetManyController, 'name', {
58
- value: `BaseGetMany${entity.name}${(0, helpers_1.addVersionSuffix)(version)}Controller`,
80
+ value: `Base${routeType}${entity.name}${(0, helpers_1.addVersionSuffix)(version)}Controller`,
59
81
  writable: false,
60
82
  });
61
83
  return BaseGetManyController;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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 { GetManyControllerConstructor } from './get-many-controller.interface';
5
5
  declare function createGetManyServiceProvider<Entity extends BaseEntity>(entity: Type<Entity>, version: string | undefined): DynamicAPIServiceProvider;
6
- declare function createGetManyController<Entity extends BaseEntity>(entity: Type<Entity>, path: string, apiTag?: string, version?: string, description?: string, DTOs?: DTOsBundle, validationPipeOptions?: ValidationPipeOptions): GetManyControllerConstructor<Entity>;
6
+ declare function createGetManyController<Entity extends BaseEntity>(entity: Type<Entity>, controllerOptions: ControllerOptions<Entity>, routeConfig: DynamicAPIRouteConfig<Entity>, version?: string, validationPipeOptions?: ValidationPipeOptions): GetManyControllerConstructor<Entity>;
7
7
  export { createGetManyController, createGetManyServiceProvider };
@@ -33,7 +33,7 @@ function createGetManyServiceProvider(entity, version) {
33
33
  }
34
34
  };
35
35
  GetManyService = __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
  ], GetManyService);
39
39
  Object.defineProperty(GetManyService, 'name', {
@@ -46,8 +46,9 @@ function createGetManyServiceProvider(entity, version) {
46
46
  };
47
47
  }
48
48
  exports.createGetManyServiceProvider = createGetManyServiceProvider;
49
- function createGetManyController(entity, path, apiTag, version, description, DTOs, validationPipeOptions) {
50
- let GetManyController = class GetManyController extends (0, get_many_controller_mixin_1.GetManyControllerMixin)(entity, path, apiTag, version, description, DTOs) {
49
+ function createGetManyController(entity, controllerOptions, routeConfig, version, validationPipeOptions) {
50
+ const { path, apiTag } = controllerOptions;
51
+ let GetManyController = class GetManyController extends (0, get_many_controller_mixin_1.GetManyControllerMixin)(entity, controllerOptions, routeConfig, version) {
51
52
  constructor(service) {
52
53
  super(service);
53
54
  this.service = service;
@@ -56,7 +57,8 @@ function createGetManyController(entity, path, apiTag, version, description, DTO
56
57
  GetManyController = __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
  ], GetManyController);
@@ -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 GetManyModule {
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.GetManyModule = void 0;
11
11
  const common_1 = require("@nestjs/common");
12
12
  const get_many_helper_1 = require("./get-many.helper");
13
13
  let GetManyModule = GetManyModule_1 = class GetManyModule {
14
- static forFeature(databaseModule, entity, { path, apiTag }, { description, dTOs: DTOs }, version, validationPipeOptions) {
15
- const controller = (0, get_many_helper_1.createGetManyController)(entity, path, apiTag, version, description, DTOs, validationPipeOptions);
14
+ static forFeature(databaseModule, entity, controllerOptions, routeConfig, version, validationPipeOptions, extraProviders) {
15
+ const controller = (0, get_many_helper_1.createGetManyController)(entity, controllerOptions, routeConfig, version, validationPipeOptions);
16
16
  const ServiceProvider = (0, get_many_helper_1.createGetManyServiceProvider)(entity, version);
17
17
  return {
18
18
  module: GetManyModule_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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import { Type } from '@nestjs/common';
2
+ import { ControllerOptions, DynamicAPIRouteConfig } from '../../interfaces';
3
+ import { BaseEntity } from '../../models';
4
+ import { GetOneControllerConstructor } from './get-one-controller.interface';
5
+ declare function GetOneControllerMixin<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): GetOneControllerConstructor<Entity>;
6
+ export { GetOneControllerMixin };
@@ -15,12 +15,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.GetOneControllerMixin = 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 dtos_1 = require("../../dtos");
19
20
  const helpers_1 = require("../../helpers");
21
+ const controller_ability_predicates_helper_1 = require("../../helpers/controller-ability-predicates.helper");
20
22
  const mixins_1 = require("../../mixins");
21
- function GetOneControllerMixin(entity, path, apiTag, version, description, DTOs) {
23
+ function GetOneControllerMixin(entity, { path, apiTag, isPublic: isPublicController, abilityPredicates: controllerAbilityPredicates, }, { type: routeType, description, dTOs, isPublic: isPublicRoute, abilityPredicate: routeAbilityPredicate, }, version) {
22
24
  const displayedName = (0, helpers_1.pascalCase)(apiTag) ?? entity.name;
23
- const { param: CustomParam, query: CustomQuery, presenter: CustomPresenter, } = DTOs ?? {};
25
+ const { param: CustomParam, query: CustomQuery, 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
+ }
24
36
  class RouteParam extends (CustomParam ?? dtos_1.EntityParam) {
25
37
  }
26
38
  if (!CustomParam) {
@@ -45,7 +57,15 @@ function GetOneControllerMixin(entity, path, apiTag, version, description, DTOs)
45
57
  writable: false,
46
58
  });
47
59
  }
48
- const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('GetOne', entity, version, description, RouteParam, RouteQuery, undefined, RoutePresenter);
60
+ const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('GetOne', entity, version, description, isPublic, {
61
+ param: RouteParam,
62
+ query: RouteQuery,
63
+ body: undefined,
64
+ presenter: RoutePresenter,
65
+ });
66
+ const abilityPredicate = routeAbilityPredicate ?? (0, controller_ability_predicates_helper_1.getPredicateFromControllerAbilityPredicates)(controllerAbilityPredicates, routeType);
67
+ class GetOnePoliciesGuard extends (0, mixins_1.CreatePoliciesGuardMixin)(entity, routeType, version, abilityPredicate) {
68
+ }
49
69
  class BaseGetOneController {
50
70
  constructor(service) {
51
71
  this.service = service;
@@ -57,6 +77,8 @@ function GetOneControllerMixin(entity, path, apiTag, version, description, DTOs)
57
77
  }
58
78
  __decorate([
59
79
  (0, helpers_1.RouteDecoratorsHelper)(routeDecoratorsBuilder),
80
+ (0, common_1.UseGuards)(GetOnePoliciesGuard),
81
+ (0, decorators_1.CheckPolicies)((ability) => ability.can(routeType, entity)),
60
82
  __param(0, (0, common_1.Param)('id')),
61
83
  __metadata("design:type", Function),
62
84
  __metadata("design:paramtypes", [String]),
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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 { GetOneControllerConstructor } from './get-one-controller.interface';
5
5
  declare function createGetOneServiceProvider<Entity extends BaseEntity>(entity: Type<Entity>, version: string | undefined): DynamicAPIServiceProvider;
6
- declare function createGetOneController<Entity extends BaseEntity>(entity: Type<Entity>, path: string, apiTag?: string, version?: string, description?: string, DTOs?: DTOsBundle, validationPipeOptions?: ValidationPipeOptions): GetOneControllerConstructor<Entity>;
6
+ declare function createGetOneController<Entity extends BaseEntity>(entity: Type<Entity>, controllerOptions: ControllerOptions<Entity>, routeConfig: DynamicAPIRouteConfig<Entity>, version?: string, validationPipeOptions?: ValidationPipeOptions): GetOneControllerConstructor<Entity>;
7
7
  export { createGetOneController, createGetOneServiceProvider };
@@ -33,7 +33,7 @@ function createGetOneServiceProvider(entity, version) {
33
33
  }
34
34
  };
35
35
  GetOneService = __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
  ], GetOneService);
39
39
  Object.defineProperty(GetOneService, 'name', {
@@ -46,8 +46,9 @@ function createGetOneServiceProvider(entity, version) {
46
46
  };
47
47
  }
48
48
  exports.createGetOneServiceProvider = createGetOneServiceProvider;
49
- function createGetOneController(entity, path, apiTag, version, description, DTOs, validationPipeOptions) {
50
- let GetOneController = class GetOneController extends (0, get_one_controller_mixin_1.GetOneControllerMixin)(entity, path, apiTag, version, description, DTOs) {
49
+ function createGetOneController(entity, controllerOptions, routeConfig, version, validationPipeOptions) {
50
+ const { path, apiTag } = controllerOptions;
51
+ let GetOneController = class GetOneController extends (0, get_one_controller_mixin_1.GetOneControllerMixin)(entity, controllerOptions, routeConfig, version) {
51
52
  constructor(service) {
52
53
  super(service);
53
54
  this.service = service;
@@ -56,7 +57,8 @@ function createGetOneController(entity, path, apiTag, version, description, DTOs
56
57
  GetOneController = __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
  ], GetOneController);
@@ -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 GetOneModule {
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.GetOneModule = void 0;
11
11
  const common_1 = require("@nestjs/common");
12
12
  const get_one_helper_1 = require("./get-one.helper");
13
13
  let GetOneModule = GetOneModule_1 = class GetOneModule {
14
- static forFeature(databaseModule, entity, { path, apiTag }, { description, dTOs: DTOs }, version, validationPipeOptions) {
15
- const controller = (0, get_one_helper_1.createGetOneController)(entity, path, apiTag, version, description, DTOs, validationPipeOptions);
14
+ static forFeature(databaseModule, entity, controllerOptions, routeConfig, version, validationPipeOptions, extraProviders) {
15
+ const controller = (0, get_one_helper_1.createGetOneController)(entity, controllerOptions, routeConfig, version, validationPipeOptions);
16
16
  const ServiceProvider = (0, get_one_helper_1.createGetOneServiceProvider)(entity, version);
17
17
  return {
18
18
  module: GetOneModule_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,11 @@
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';
@@ -0,0 +1,27 @@
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("./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);
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import { Type } from '@nestjs/common';
2
+ import { ControllerOptions, DynamicAPIRouteConfig } from '../../interfaces';
3
+ import { BaseEntity } from '../../models';
4
+ import { ReplaceOneControllerConstructor } from './replace-one-controller.interface';
5
+ declare function ReplaceOneControllerMixin<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): ReplaceOneControllerConstructor<Entity>;
6
+ export { ReplaceOneControllerMixin };
@@ -15,12 +15,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.ReplaceOneControllerMixin = 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 dtos_1 = require("../../dtos");
19
20
  const helpers_1 = require("../../helpers");
21
+ const controller_ability_predicates_helper_1 = require("../../helpers/controller-ability-predicates.helper");
20
22
  const mixins_1 = require("../../mixins");
21
- function ReplaceOneControllerMixin(entity, path, apiTag, version, description, DTOs) {
23
+ function ReplaceOneControllerMixin(entity, { path, apiTag, isPublic: isPublicController, abilityPredicates: controllerAbilityPredicates, }, { type: routeType, description, dTOs, isPublic: isPublicRoute, abilityPredicate: routeAbilityPredicate, }, version) {
22
24
  const displayedName = (0, helpers_1.pascalCase)(apiTag) ?? entity.name;
23
- const { body: CustomBody, param: CustomParam, presenter: CustomPresenter, } = DTOs ?? {};
25
+ const { body: CustomBody, param: CustomParam, 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
+ }
24
36
  class RouteBody extends (CustomBody ?? (0, mixins_1.EntityBodyMixin)(entity)) {
25
37
  }
26
38
  if (!CustomBody) {
@@ -45,7 +57,15 @@ function ReplaceOneControllerMixin(entity, path, apiTag, version, description, D
45
57
  writable: false,
46
58
  });
47
59
  }
48
- const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('ReplaceOne', entity, version, description, RouteParam, undefined, RouteBody, RoutePresenter);
60
+ const routeDecoratorsBuilder = new builders_1.RouteDecoratorsBuilder('ReplaceOne', entity, version, description, isPublic, {
61
+ param: RouteParam,
62
+ query: undefined,
63
+ body: RouteBody,
64
+ presenter: RoutePresenter,
65
+ });
66
+ const abilityPredicate = routeAbilityPredicate ?? (0, controller_ability_predicates_helper_1.getPredicateFromControllerAbilityPredicates)(controllerAbilityPredicates, routeType);
67
+ class ReplaceOnePoliciesGuard extends (0, mixins_1.CreatePoliciesGuardMixin)(entity, routeType, version, abilityPredicate) {
68
+ }
49
69
  class BaseReplaceOneController {
50
70
  constructor(service) {
51
71
  this.service = service;
@@ -57,6 +77,8 @@ function ReplaceOneControllerMixin(entity, path, apiTag, version, description, D
57
77
  }
58
78
  __decorate([
59
79
  (0, helpers_1.RouteDecoratorsHelper)(routeDecoratorsBuilder),
80
+ (0, common_1.UseGuards)(ReplaceOnePoliciesGuard),
81
+ (0, decorators_1.CheckPolicies)((ability) => ability.can(routeType, entity)),
60
82
  __param(0, (0, common_1.Param)('id')),
61
83
  __param(1, (0, common_1.Body)()),
62
84
  __metadata("design:type", Function),
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });