@elsikora/nestjs-crud-automator 1.24.0-dev.1 → 2.0.0-dev.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 (794) hide show
  1. package/README.md +213 -163
  2. package/dist/cjs/class/api/authorization/bootstrap-validation.service.class.d.ts +1 -0
  3. package/dist/cjs/class/api/authorization/bootstrap-validation.service.class.js +37 -3
  4. package/dist/cjs/class/api/authorization/bootstrap-validation.service.class.js.map +1 -1
  5. package/dist/cjs/class/api/authorization/cache-invalidation.service.class.d.ts +7 -0
  6. package/dist/cjs/class/api/authorization/cache-invalidation.service.class.js +21 -0
  7. package/dist/cjs/class/api/authorization/cache-invalidation.service.class.js.map +1 -0
  8. package/dist/cjs/class/api/authorization/guard.class.d.ts +1 -2
  9. package/dist/cjs/class/api/authorization/guard.class.js +13 -18
  10. package/dist/cjs/class/api/authorization/guard.class.js.map +1 -1
  11. package/dist/cjs/class/api/authorization/index.d.ts +1 -0
  12. package/dist/cjs/class/api/authorization/policy/executor.class.js +1 -2
  13. package/dist/cjs/class/api/authorization/policy/executor.class.js.map +1 -1
  14. package/dist/cjs/class/api/authorization/policy/index.d.ts +1 -0
  15. package/dist/cjs/class/api/authorization/policy/registry.class.d.ts +3 -5
  16. package/dist/cjs/class/api/authorization/policy/registry.class.js +11 -34
  17. package/dist/cjs/class/api/authorization/policy/registry.class.js.map +1 -1
  18. package/dist/cjs/class/api/authorization/policy/subscriber-wrapper.class.d.ts +10 -0
  19. package/dist/cjs/class/api/authorization/policy/subscriber-wrapper.class.js +23 -0
  20. package/dist/cjs/class/api/authorization/policy/subscriber-wrapper.class.js.map +1 -0
  21. package/dist/cjs/class/api/authorization/runtime.class.d.ts +3 -2
  22. package/dist/cjs/class/api/authorization/runtime.class.js +6 -5
  23. package/dist/cjs/class/api/authorization/runtime.class.js.map +1 -1
  24. package/dist/cjs/class/api/authorization/simulator.class.d.ts +2 -0
  25. package/dist/cjs/class/api/authorization/simulator.class.js +1 -0
  26. package/dist/cjs/class/api/authorization/simulator.class.js.map +1 -1
  27. package/dist/cjs/class/api/function/context-storage.class.d.ts +7 -0
  28. package/dist/cjs/class/api/function/context-storage.class.js +16 -0
  29. package/dist/cjs/class/api/function/context-storage.class.js.map +1 -0
  30. package/dist/cjs/class/api/function/custom-runtime.class.d.ts +19 -0
  31. package/dist/cjs/class/api/function/custom-runtime.class.js +118 -0
  32. package/dist/cjs/class/api/function/custom-runtime.class.js.map +1 -0
  33. package/dist/cjs/class/api/function/index.d.ts +1 -0
  34. package/dist/cjs/class/api/function/transaction-scope.class.d.ts +6 -0
  35. package/dist/cjs/class/api/function/transaction-scope.class.js +34 -0
  36. package/dist/cjs/class/api/function/transaction-scope.class.js.map +1 -0
  37. package/dist/cjs/class/api/index.d.ts +2 -0
  38. package/dist/cjs/class/api/route-runtime.class.d.ts +21 -0
  39. package/dist/cjs/class/api/route-runtime.class.js +335 -0
  40. package/dist/cjs/class/api/route-runtime.class.js.map +1 -0
  41. package/dist/cjs/class/api/service-base.class.d.ts +9 -7
  42. package/dist/cjs/class/api/service-base.class.js +16 -6
  43. package/dist/cjs/class/api/service-base.class.js.map +1 -1
  44. package/dist/cjs/class/api/subscriber/executor.class.d.ts +7 -6
  45. package/dist/cjs/class/api/subscriber/executor.class.js +16 -12
  46. package/dist/cjs/class/api/subscriber/executor.class.js.map +1 -1
  47. package/dist/cjs/class/api/subscriber/index.d.ts +1 -0
  48. package/dist/cjs/class/api/subscriber/registry.class.d.ts +5 -2
  49. package/dist/cjs/class/api/subscriber/registry.class.js +26 -24
  50. package/dist/cjs/class/api/subscriber/registry.class.js.map +1 -1
  51. package/dist/cjs/class/api/subscriber/wrapper.class.d.ts +18 -0
  52. package/dist/cjs/class/api/subscriber/wrapper.class.js +23 -0
  53. package/dist/cjs/class/api/subscriber/wrapper.class.js.map +1 -0
  54. package/dist/cjs/class/utility/dto/exception/details/foreign-key-violation.class.js +5 -1
  55. package/dist/cjs/class/utility/dto/exception/details/foreign-key-violation.class.js.map +1 -1
  56. package/dist/cjs/class/utility/dto/exception/details/unique-violation.class.js +5 -1
  57. package/dist/cjs/class/utility/dto/exception/details/unique-violation.class.js.map +1 -1
  58. package/dist/cjs/class/utility/dto/property/factory/number.class.js +6 -2
  59. package/dist/cjs/class/utility/dto/property/factory/number.class.js.map +1 -1
  60. package/dist/cjs/class/utility/dto/property/factory/relation.class.js +5 -1
  61. package/dist/cjs/class/utility/dto/property/factory/relation.class.js.map +1 -1
  62. package/dist/cjs/class/utility/dto/strategy/body.class.js +5 -1
  63. package/dist/cjs/class/utility/dto/strategy/body.class.js.map +1 -1
  64. package/dist/cjs/class/utility/dto/strategy/query.class.js +5 -1
  65. package/dist/cjs/class/utility/dto/strategy/query.class.js.map +1 -1
  66. package/dist/cjs/class/utility/dto/strategy/request.class.js +5 -1
  67. package/dist/cjs/class/utility/dto/strategy/request.class.js.map +1 -1
  68. package/dist/cjs/class/utility/dto/strategy/response.class.js +5 -1
  69. package/dist/cjs/class/utility/dto/strategy/response.class.js.map +1 -1
  70. package/dist/cjs/constant/decorator/api/method.constant.d.ts +2 -3
  71. package/dist/cjs/constant/decorator/api/method.constant.js +4 -6
  72. package/dist/cjs/constant/decorator/api/method.constant.js.map +1 -1
  73. package/dist/cjs/constant/utility/dto/constant.js +6 -2
  74. package/dist/cjs/constant/utility/dto/constant.js.map +1 -1
  75. package/dist/cjs/decorator/api/function/create.decorator.js +51 -24
  76. package/dist/cjs/decorator/api/function/create.decorator.js.map +1 -1
  77. package/dist/cjs/decorator/api/function/custom.decorator.d.ts +9 -0
  78. package/dist/cjs/decorator/api/function/custom.decorator.js +47 -0
  79. package/dist/cjs/decorator/api/function/custom.decorator.js.map +1 -0
  80. package/dist/cjs/decorator/api/function/decorator.js +16 -7
  81. package/dist/cjs/decorator/api/function/decorator.js.map +1 -1
  82. package/dist/cjs/decorator/api/function/delete.decorator.js +62 -41
  83. package/dist/cjs/decorator/api/function/delete.decorator.js.map +1 -1
  84. package/dist/cjs/decorator/api/function/get/decorator.js +40 -25
  85. package/dist/cjs/decorator/api/function/get/decorator.js.map +1 -1
  86. package/dist/cjs/decorator/api/function/get/list.decorator.js +40 -25
  87. package/dist/cjs/decorator/api/function/get/list.decorator.js.map +1 -1
  88. package/dist/cjs/decorator/api/function/get/many.decorator.js +40 -25
  89. package/dist/cjs/decorator/api/function/get/many.decorator.js.map +1 -1
  90. package/dist/cjs/decorator/api/function/index.d.ts +1 -0
  91. package/dist/cjs/decorator/api/function/update.decorator.js +62 -41
  92. package/dist/cjs/decorator/api/function/update.decorator.js.map +1 -1
  93. package/dist/cjs/decorator/api/index.d.ts +1 -0
  94. package/dist/cjs/decorator/api/method.decorator.d.ts +5 -6
  95. package/dist/cjs/decorator/api/method.decorator.js +65 -325
  96. package/dist/cjs/decorator/api/method.decorator.js.map +1 -1
  97. package/dist/cjs/decorator/api/property/boolean.decorator.js +23 -4
  98. package/dist/cjs/decorator/api/property/boolean.decorator.js.map +1 -1
  99. package/dist/cjs/decorator/api/property/date.decorator.js +23 -4
  100. package/dist/cjs/decorator/api/property/date.decorator.js.map +1 -1
  101. package/dist/cjs/decorator/api/property/enum.decorator.js +21 -3
  102. package/dist/cjs/decorator/api/property/enum.decorator.js.map +1 -1
  103. package/dist/cjs/decorator/api/property/number.decorator.js +28 -5
  104. package/dist/cjs/decorator/api/property/number.decorator.js.map +1 -1
  105. package/dist/cjs/decorator/api/property/object.decorator.js +21 -3
  106. package/dist/cjs/decorator/api/property/object.decorator.js.map +1 -1
  107. package/dist/cjs/decorator/api/property/string.decorator.js +25 -8
  108. package/dist/cjs/decorator/api/property/string.decorator.js.map +1 -1
  109. package/dist/cjs/decorator/api/property/uuid.decorator.js +26 -4
  110. package/dist/cjs/decorator/api/property/uuid.decorator.js.map +1 -1
  111. package/dist/cjs/decorator/api/route-custom.decorator.d.ts +9 -0
  112. package/dist/cjs/decorator/api/route-custom.decorator.js +101 -0
  113. package/dist/cjs/decorator/api/route-custom.decorator.js.map +1 -0
  114. package/dist/cjs/decorator/api/service/decorator.js +28 -23
  115. package/dist/cjs/decorator/api/service/decorator.js.map +1 -1
  116. package/dist/cjs/enum/decorator/api/controller/index.d.ts +3 -1
  117. package/dist/cjs/enum/decorator/api/controller/relation-reference-shape.enum.d.ts +4 -0
  118. package/dist/cjs/enum/decorator/api/controller/relation-reference-shape.enum.js +8 -0
  119. package/dist/cjs/enum/decorator/api/controller/relation-reference-shape.enum.js.map +1 -0
  120. package/dist/cjs/enum/decorator/api/controller/request/index.d.ts +2 -0
  121. package/dist/cjs/enum/decorator/api/controller/request/target.enum.d.ts +5 -0
  122. package/dist/cjs/enum/decorator/api/controller/request/target.enum.js +9 -0
  123. package/dist/cjs/enum/decorator/api/controller/request/target.enum.js.map +1 -0
  124. package/dist/cjs/enum/decorator/api/controller/{request-transformer-type.enum.js → request/transformer-type.enum.js} +1 -1
  125. package/dist/cjs/enum/decorator/api/controller/request/transformer-type.enum.js.map +1 -0
  126. package/dist/cjs/enum/decorator/api/controller/response-target.enum.d.ts +3 -0
  127. package/dist/cjs/enum/decorator/api/controller/response-target.enum.js +7 -0
  128. package/dist/cjs/enum/decorator/api/controller/response-target.enum.js.map +1 -0
  129. package/dist/cjs/enum/decorator/api/dto-type.enum.d.ts +1 -1
  130. package/dist/cjs/enum/decorator/api/dto-type.enum.js +1 -1
  131. package/dist/cjs/enum/decorator/api/dto-type.enum.js.map +1 -1
  132. package/dist/cjs/enum/decorator/api/function-transaction-mode.enum.d.ts +6 -0
  133. package/dist/cjs/enum/decorator/api/function-transaction-mode.enum.js +10 -0
  134. package/dist/cjs/enum/decorator/api/function-transaction-mode.enum.js.map +1 -0
  135. package/dist/cjs/enum/decorator/api/function-type.enum.d.ts +1 -0
  136. package/dist/cjs/enum/decorator/api/function-type.enum.js +1 -0
  137. package/dist/cjs/enum/decorator/api/function-type.enum.js.map +1 -1
  138. package/dist/cjs/enum/decorator/api/index.d.ts +1 -0
  139. package/dist/cjs/external/rxjs/dist/esm5/internal/Observable.js +106 -0
  140. package/dist/cjs/external/rxjs/dist/esm5/internal/Observable.js.map +1 -0
  141. package/dist/cjs/external/rxjs/dist/esm5/internal/Subscriber.js +158 -0
  142. package/dist/cjs/external/rxjs/dist/esm5/internal/Subscriber.js.map +1 -0
  143. package/dist/cjs/external/rxjs/dist/esm5/internal/Subscription.js +148 -0
  144. package/dist/cjs/external/rxjs/dist/esm5/internal/Subscription.js.map +1 -0
  145. package/dist/cjs/external/rxjs/dist/esm5/internal/config.js +7 -0
  146. package/dist/cjs/external/rxjs/dist/esm5/internal/config.js.map +1 -0
  147. package/dist/cjs/external/rxjs/dist/esm5/internal/lastValueFrom.js +28 -0
  148. package/dist/cjs/external/rxjs/dist/esm5/internal/lastValueFrom.js.map +1 -0
  149. package/dist/cjs/external/rxjs/dist/esm5/internal/observable/from.js +11 -0
  150. package/dist/cjs/external/rxjs/dist/esm5/internal/observable/from.js.map +1 -0
  151. package/dist/cjs/external/rxjs/dist/esm5/internal/observable/innerFrom.js +154 -0
  152. package/dist/cjs/external/rxjs/dist/esm5/internal/observable/innerFrom.js.map +1 -0
  153. package/dist/cjs/external/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js +66 -0
  154. package/dist/cjs/external/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js.map +1 -0
  155. package/dist/cjs/external/rxjs/dist/esm5/internal/operators/observeOn.js +15 -0
  156. package/dist/cjs/external/rxjs/dist/esm5/internal/operators/observeOn.js.map +1 -0
  157. package/dist/cjs/external/rxjs/dist/esm5/internal/operators/subscribeOn.js +13 -0
  158. package/dist/cjs/external/rxjs/dist/esm5/internal/operators/subscribeOn.js.map +1 -0
  159. package/dist/cjs/external/rxjs/dist/esm5/internal/scheduled/scheduleArray.js +23 -0
  160. package/dist/cjs/external/rxjs/dist/esm5/internal/scheduled/scheduleArray.js.map +1 -0
  161. package/dist/cjs/external/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js +28 -0
  162. package/dist/cjs/external/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js.map +1 -0
  163. package/dist/cjs/external/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js +37 -0
  164. package/dist/cjs/external/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js.map +1 -0
  165. package/dist/cjs/external/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js +12 -0
  166. package/dist/cjs/external/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js.map +1 -0
  167. package/dist/cjs/external/rxjs/dist/esm5/internal/scheduled/schedulePromise.js +12 -0
  168. package/dist/cjs/external/rxjs/dist/esm5/internal/scheduled/schedulePromise.js.map +1 -0
  169. package/dist/cjs/external/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js +11 -0
  170. package/dist/cjs/external/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js.map +1 -0
  171. package/dist/cjs/external/rxjs/dist/esm5/internal/scheduled/scheduled.js +42 -0
  172. package/dist/cjs/external/rxjs/dist/esm5/internal/scheduled/scheduled.js.map +1 -0
  173. package/dist/cjs/external/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js +20 -0
  174. package/dist/cjs/external/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js.map +1 -0
  175. package/dist/cjs/external/rxjs/dist/esm5/internal/symbol/iterator.js +13 -0
  176. package/dist/cjs/external/rxjs/dist/esm5/internal/symbol/iterator.js.map +1 -0
  177. package/dist/cjs/external/rxjs/dist/esm5/internal/symbol/observable.js +6 -0
  178. package/dist/cjs/external/rxjs/dist/esm5/internal/symbol/observable.js.map +1 -0
  179. package/dist/cjs/external/rxjs/dist/esm5/internal/util/EmptyError.js +14 -0
  180. package/dist/cjs/external/rxjs/dist/esm5/internal/util/EmptyError.js.map +1 -0
  181. package/dist/cjs/external/rxjs/dist/esm5/internal/util/UnsubscriptionError.js +17 -0
  182. package/dist/cjs/external/rxjs/dist/esm5/internal/util/UnsubscriptionError.js.map +1 -0
  183. package/dist/cjs/external/rxjs/dist/esm5/internal/util/arrRemove.js +11 -0
  184. package/dist/cjs/external/rxjs/dist/esm5/internal/util/arrRemove.js.map +1 -0
  185. package/dist/cjs/external/rxjs/dist/esm5/internal/util/createErrorClass.js +15 -0
  186. package/dist/cjs/external/rxjs/dist/esm5/internal/util/createErrorClass.js.map +1 -0
  187. package/dist/cjs/external/rxjs/dist/esm5/internal/util/errorContext.js +10 -0
  188. package/dist/cjs/external/rxjs/dist/esm5/internal/util/errorContext.js.map +1 -0
  189. package/dist/cjs/external/rxjs/dist/esm5/internal/util/executeSchedule.js +22 -0
  190. package/dist/cjs/external/rxjs/dist/esm5/internal/util/executeSchedule.js.map +1 -0
  191. package/dist/cjs/external/rxjs/dist/esm5/internal/util/identity.js +8 -0
  192. package/dist/cjs/external/rxjs/dist/esm5/internal/util/identity.js.map +1 -0
  193. package/dist/cjs/external/rxjs/dist/esm5/internal/util/isArrayLike.js +6 -0
  194. package/dist/cjs/external/rxjs/dist/esm5/internal/util/isArrayLike.js.map +1 -0
  195. package/dist/cjs/external/rxjs/dist/esm5/internal/util/isAsyncIterable.js +10 -0
  196. package/dist/cjs/external/rxjs/dist/esm5/internal/util/isAsyncIterable.js.map +1 -0
  197. package/dist/cjs/external/rxjs/dist/esm5/internal/util/isFunction.js +8 -0
  198. package/dist/cjs/external/rxjs/dist/esm5/internal/util/isFunction.js.map +1 -0
  199. package/dist/cjs/external/rxjs/dist/esm5/internal/util/isInteropObservable.js +11 -0
  200. package/dist/cjs/external/rxjs/dist/esm5/internal/util/isInteropObservable.js.map +1 -0
  201. package/dist/cjs/external/rxjs/dist/esm5/internal/util/isIterable.js +11 -0
  202. package/dist/cjs/external/rxjs/dist/esm5/internal/util/isIterable.js.map +1 -0
  203. package/dist/cjs/external/rxjs/dist/esm5/internal/util/isPromise.js +10 -0
  204. package/dist/cjs/external/rxjs/dist/esm5/internal/util/isPromise.js.map +1 -0
  205. package/dist/cjs/external/rxjs/dist/esm5/internal/util/isReadableStreamLike.js +44 -0
  206. package/dist/cjs/external/rxjs/dist/esm5/internal/util/isReadableStreamLike.js.map +1 -0
  207. package/dist/cjs/external/rxjs/dist/esm5/internal/util/lift.js +26 -0
  208. package/dist/cjs/external/rxjs/dist/esm5/internal/util/lift.js.map +1 -0
  209. package/dist/cjs/external/rxjs/dist/esm5/internal/util/noop.js +6 -0
  210. package/dist/cjs/external/rxjs/dist/esm5/internal/util/noop.js.map +1 -0
  211. package/dist/cjs/external/rxjs/dist/esm5/internal/util/pipe.js +18 -0
  212. package/dist/cjs/external/rxjs/dist/esm5/internal/util/pipe.js.map +1 -0
  213. package/dist/cjs/external/rxjs/dist/esm5/internal/util/reportUnhandledError.js +14 -0
  214. package/dist/cjs/external/rxjs/dist/esm5/internal/util/reportUnhandledError.js.map +1 -0
  215. package/dist/cjs/external/rxjs/dist/esm5/internal/util/throwUnobservableError.js +8 -0
  216. package/dist/cjs/external/rxjs/dist/esm5/internal/util/throwUnobservableError.js.map +1 -0
  217. package/dist/cjs/external/tslib/tslib.es6.js +125 -0
  218. package/dist/cjs/external/tslib/tslib.es6.js.map +1 -1
  219. package/dist/cjs/factory/api-controller.factory.d.ts +1 -0
  220. package/dist/cjs/factory/api-controller.factory.js +42 -393
  221. package/dist/cjs/factory/api-controller.factory.js.map +1 -1
  222. package/dist/cjs/index.js +45 -2
  223. package/dist/cjs/index.js.map +1 -1
  224. package/dist/cjs/interceptor/api-route-runtime.interceptor.d.ts +5 -0
  225. package/dist/cjs/interceptor/api-route-runtime.interceptor.js +29 -0
  226. package/dist/cjs/interceptor/api-route-runtime.interceptor.js.map +1 -0
  227. package/dist/cjs/interface/class/api/authorization/policy/registry.interface.d.ts +1 -0
  228. package/dist/cjs/interface/class/api/authorization/policy/subscriber/context/interface.d.ts +1 -1
  229. package/dist/cjs/interface/class/api/function/context/index.d.ts +2 -0
  230. package/dist/cjs/interface/class/api/function/context/interface.d.ts +10 -0
  231. package/dist/cjs/interface/class/api/function/context/operations.interface.d.ts +13 -0
  232. package/dist/cjs/interface/class/api/function/index.d.ts +1 -0
  233. package/dist/cjs/interface/class/api/index.d.ts +2 -0
  234. package/dist/cjs/interface/class/api/route/index.d.ts +1 -0
  235. package/dist/cjs/interface/class/api/route/runtime/context-data.interface.d.ts +10 -0
  236. package/dist/cjs/interface/class/api/route/runtime/custom-execution-options.interface.d.ts +9 -0
  237. package/dist/cjs/interface/class/api/route/runtime/generated/execution-options.interface.d.ts +14 -0
  238. package/dist/cjs/interface/class/api/route/runtime/generated/index.d.ts +2 -0
  239. package/dist/cjs/interface/class/api/route/runtime/generated/targets.interface.d.ts +12 -0
  240. package/dist/cjs/interface/class/api/route/runtime/http-request.interface.d.ts +8 -0
  241. package/dist/cjs/interface/class/api/route/runtime/index.d.ts +4 -0
  242. package/dist/cjs/interface/class/api/subscriber/function/error-execution-context.interface.d.ts +1 -0
  243. package/dist/cjs/interface/class/api/subscriber/function/execution/context.interface.d.ts +1 -0
  244. package/dist/cjs/interface/class/api/subscriber/function.interface.d.ts +4 -0
  245. package/dist/cjs/interface/class/api/subscriber/route/error-execution-context.interface.d.ts +2 -1
  246. package/dist/cjs/interface/class/api/subscriber/route/execution/context/data/extended.interface.d.ts +36 -0
  247. package/dist/cjs/interface/class/api/subscriber/route/execution/context/data/index.d.ts +2 -0
  248. package/dist/cjs/interface/class/api/subscriber/route/execution/context/data/interface.d.ts +32 -0
  249. package/dist/cjs/interface/class/api/subscriber/route/execution/context/index.d.ts +2 -0
  250. package/dist/cjs/interface/class/api/subscriber/route/execution/context/interface.d.ts +11 -0
  251. package/dist/cjs/interface/class/api/subscriber/route/execution/index.d.ts +1 -2
  252. package/dist/cjs/interface/class/api/subscriber/route.interface.d.ts +6 -2
  253. package/dist/cjs/interface/decorator/api/controller/properties/route/authentication.interface.d.ts +1 -1
  254. package/dist/cjs/interface/decorator/api/controller/properties/route/base/generation.interface.d.ts +5 -0
  255. package/dist/cjs/interface/decorator/api/controller/properties/route/base/index.d.ts +5 -2
  256. package/dist/cjs/interface/decorator/api/controller/properties/route/base/interface.d.ts +4 -7
  257. package/dist/cjs/interface/decorator/api/controller/properties/route/base/relations/index.d.ts +4 -0
  258. package/dist/cjs/interface/decorator/api/controller/properties/route/base/relations/interface.d.ts +6 -0
  259. package/dist/cjs/interface/decorator/api/controller/properties/route/base/relations/reference.interface.d.ts +5 -0
  260. package/dist/cjs/interface/decorator/api/controller/properties/route/base/relations/request/index.d.ts +2 -0
  261. package/dist/cjs/interface/decorator/api/controller/properties/route/base/relations/request/interface.d.ts +6 -0
  262. package/dist/cjs/interface/decorator/api/controller/properties/route/base/relations/request/load.interface.d.ts +10 -0
  263. package/dist/cjs/interface/decorator/api/controller/properties/route/base/relations/response/index.d.ts +2 -0
  264. package/dist/cjs/interface/decorator/api/controller/properties/route/base/relations/response/interface.d.ts +6 -0
  265. package/dist/cjs/interface/decorator/api/controller/properties/route/base/relations/response/load.interface.d.ts +4 -0
  266. package/dist/cjs/interface/decorator/api/controller/properties/route/base/request/index.d.ts +2 -0
  267. package/dist/cjs/interface/decorator/api/controller/properties/route/base/request/interface.d.ts +6 -0
  268. package/dist/cjs/interface/decorator/api/controller/properties/route/base/request/target.interface.d.ts +6 -0
  269. package/dist/cjs/interface/decorator/api/controller/properties/route/base/response/index.d.ts +2 -0
  270. package/dist/cjs/interface/decorator/api/controller/properties/route/base/response/interface.d.ts +7 -0
  271. package/dist/cjs/interface/decorator/api/controller/properties/route/base/response/target.interface.d.ts +4 -0
  272. package/dist/cjs/interface/decorator/api/controller/properties/route/base/security.interface.d.ts +6 -0
  273. package/dist/cjs/interface/decorator/api/controller/properties/route/with/dto.interface.d.ts +1 -1
  274. package/dist/cjs/interface/decorator/api/function/create-executor-properties.interface.d.ts +1 -2
  275. package/dist/cjs/interface/decorator/api/function/custom-properties.interface.d.ts +9 -0
  276. package/dist/cjs/interface/decorator/api/function/delete-executor-properties.interface.d.ts +2 -3
  277. package/dist/cjs/interface/decorator/api/function/get/executor-properties.interface.d.ts +1 -2
  278. package/dist/cjs/interface/decorator/api/function/get/list-executor-properties.interface.d.ts +1 -2
  279. package/dist/cjs/interface/decorator/api/function/get/many-executor-properties.interface.d.ts +1 -2
  280. package/dist/cjs/interface/decorator/api/function/index.d.ts +1 -0
  281. package/dist/cjs/interface/decorator/api/function/properties.interface.d.ts +4 -0
  282. package/dist/cjs/interface/decorator/api/function/update-executor-properties.interface.d.ts +2 -3
  283. package/dist/cjs/interface/decorator/api/index.d.ts +1 -0
  284. package/dist/cjs/interface/decorator/api/method/index.d.ts +0 -2
  285. package/dist/cjs/interface/decorator/api/method/properties.interface.d.ts +4 -17
  286. package/dist/cjs/interface/decorator/api/route/custom-properties.interface.d.ts +6 -0
  287. package/dist/cjs/interface/decorator/api/route/documentation-properties.interface.d.ts +5 -0
  288. package/dist/cjs/interface/decorator/api/route/index.d.ts +7 -0
  289. package/dist/cjs/interface/decorator/api/route/metadata/index.d.ts +3 -0
  290. package/dist/cjs/interface/decorator/api/route/metadata/interface.d.ts +15 -0
  291. package/dist/cjs/interface/decorator/api/route/metadata/resource.interface.d.ts +6 -0
  292. package/dist/cjs/interface/decorator/api/route/metadata/route.interface.d.ts +7 -0
  293. package/dist/cjs/interface/decorator/api/route/response/index.d.ts +2 -0
  294. package/dist/cjs/interface/decorator/api/route/response/properties.interface.d.ts +9 -0
  295. package/dist/cjs/interface/decorator/api/route/response/serialization-properties.interface.d.ts +3 -0
  296. package/dist/cjs/interface/decorator/api/route/runtime-properties.interface.d.ts +11 -0
  297. package/dist/cjs/interface/decorator/api/route/security/authentication-properties.interface.d.ts +9 -0
  298. package/dist/cjs/interface/decorator/api/route/security/authorization-properties.interface.d.ts +4 -0
  299. package/dist/cjs/interface/decorator/api/route/security/index.d.ts +3 -0
  300. package/dist/cjs/interface/decorator/api/route/security/properties.interface.d.ts +6 -0
  301. package/dist/cjs/interface/decorator/api/route/throttling/default-properties.interface.d.ts +4 -0
  302. package/dist/cjs/interface/decorator/api/route/throttling/index.d.ts +2 -0
  303. package/dist/cjs/interface/decorator/api/route/throttling/properties.interface.d.ts +4 -0
  304. package/dist/cjs/interface/decorator/api/subscriber/function/filter.interface.d.ts +5 -0
  305. package/dist/cjs/interface/decorator/api/subscriber/function/index.d.ts +2 -0
  306. package/dist/cjs/interface/decorator/api/subscriber/function/properties.interface.d.ts +7 -0
  307. package/dist/cjs/interface/decorator/api/subscriber/index.d.ts +2 -2
  308. package/dist/cjs/interface/decorator/api/subscriber/route-properties.interface.d.ts +4 -0
  309. package/dist/cjs/module/api/authorization.module.js +18 -1
  310. package/dist/cjs/module/api/authorization.module.js.map +1 -1
  311. package/dist/cjs/package.json +0 -1
  312. package/dist/cjs/type/class/api/subscriber/route/after/create-context.type.d.ts +2 -2
  313. package/dist/cjs/type/class/api/subscriber/route/after/delete-context.type.d.ts +2 -2
  314. package/dist/cjs/type/class/api/subscriber/route/after/get/context.type.d.ts +2 -2
  315. package/dist/cjs/type/class/api/subscriber/route/after/get/list-context.type.d.ts +2 -2
  316. package/dist/cjs/type/class/api/subscriber/route/after/partial-update-context.type.d.ts +2 -2
  317. package/dist/cjs/type/class/api/subscriber/route/after/update-context.type.d.ts +2 -2
  318. package/dist/cjs/type/class/api/subscriber/route/before/create-context.type.d.ts +2 -2
  319. package/dist/cjs/type/class/api/subscriber/route/before/delete-context.type.d.ts +2 -2
  320. package/dist/cjs/type/class/api/subscriber/route/before/get/context.type.d.ts +2 -2
  321. package/dist/cjs/type/class/api/subscriber/route/before/get/list-context.type.d.ts +2 -2
  322. package/dist/cjs/type/class/api/subscriber/route/before/partial-update-context.type.d.ts +2 -2
  323. package/dist/cjs/type/class/api/subscriber/route/before/update-context.type.d.ts +2 -2
  324. package/dist/cjs/type/decorator/api/controller/properties/route/base/request/allowed-target.type.d.ts +9 -0
  325. package/dist/cjs/type/decorator/api/controller/properties/route/base/request/index.d.ts +1 -1
  326. package/dist/cjs/type/decorator/api/controller/properties/route/base/request/transformers.type.d.ts +7 -7
  327. package/dist/cjs/type/decorator/api/controller/properties/route/base/response-transformers.type.d.ts +6 -6
  328. package/dist/cjs/type/decorator/api/controller/transformer-config.type.d.ts +5 -5
  329. package/dist/cjs/type/decorator/api/function/properties.type.d.ts +5 -3
  330. package/dist/cjs/type/decorator/api/property/describe/dto/request-properties.type.d.ts +1 -1
  331. package/dist/cjs/type/decorator/api/property/describe/properties/base/properties.type.d.ts +4 -4
  332. package/dist/cjs/type/utility/dto/generate/allowed-combination.type.d.ts +4 -4
  333. package/dist/cjs/utility/api/controller/apply/decorators.utility.js +58 -26
  334. package/dist/cjs/utility/api/controller/apply/decorators.utility.js.map +1 -1
  335. package/dist/cjs/utility/api/controller/apply/metadata.utility.js +6 -2
  336. package/dist/cjs/utility/api/controller/apply/metadata.utility.js.map +1 -1
  337. package/dist/cjs/utility/api/controller/get/dto.utility.js +6 -2
  338. package/dist/cjs/utility/api/controller/get/dto.utility.js.map +1 -1
  339. package/dist/cjs/utility/api/controller/get-list/transform/filter.utility.js +5 -1
  340. package/dist/cjs/utility/api/controller/get-list/transform/filter.utility.js.map +1 -1
  341. package/dist/cjs/utility/api/controller/handle-request-relations.utility.d.ts +4 -4
  342. package/dist/cjs/utility/api/controller/handle-request-relations.utility.js +37 -11
  343. package/dist/cjs/utility/api/controller/handle-request-relations.utility.js.map +1 -1
  344. package/dist/cjs/utility/api/controller/index.d.ts +1 -0
  345. package/dist/cjs/utility/api/controller/serialize-route-response.utility.d.ts +14 -0
  346. package/dist/cjs/utility/api/controller/serialize-route-response.utility.js +29 -0
  347. package/dist/cjs/utility/api/controller/serialize-route-response.utility.js.map +1 -0
  348. package/dist/cjs/utility/api/controller/transform-data.utility.d.ts +8 -7
  349. package/dist/cjs/utility/api/controller/transform-data.utility.js +21 -18
  350. package/dist/cjs/utility/api/controller/transform-data.utility.js.map +1 -1
  351. package/dist/cjs/utility/api/controller/validate-request.utility.d.ts +3 -3
  352. package/dist/cjs/utility/api/controller/validate-request.utility.js +10 -9
  353. package/dist/cjs/utility/api/controller/validate-request.utility.js.map +1 -1
  354. package/dist/cjs/utility/api/controller/write/dto-swagger.utility.js +6 -2
  355. package/dist/cjs/utility/api/controller/write/dto-swagger.utility.js.map +1 -1
  356. package/dist/cjs/utility/api/function-transaction.utility.d.ts +20 -0
  357. package/dist/cjs/utility/api/function-transaction.utility.js +52 -0
  358. package/dist/cjs/utility/api/function-transaction.utility.js.map +1 -0
  359. package/dist/cjs/utility/api/index.d.ts +1 -0
  360. package/dist/cjs/utility/api/route/index.d.ts +1 -0
  361. package/dist/cjs/utility/api/route/response/index.d.ts +2 -0
  362. package/dist/cjs/utility/api/route/response/project-relation.utility.d.ts +11 -0
  363. package/dist/cjs/utility/api/route/response/project-relation.utility.js +75 -0
  364. package/dist/cjs/utility/api/route/response/project-relation.utility.js.map +1 -0
  365. package/dist/cjs/utility/api/route/response/serialize.utility.d.ts +11 -0
  366. package/dist/cjs/utility/api/route/response/serialize.utility.js +26 -0
  367. package/dist/cjs/utility/api/route/response/serialize.utility.js.map +1 -0
  368. package/dist/cjs/utility/dto/build-decorator.utility.js +5 -1
  369. package/dist/cjs/utility/dto/build-decorator.utility.js.map +1 -1
  370. package/dist/cjs/utility/dto/generate/core.utility.js +5 -1
  371. package/dist/cjs/utility/dto/generate/core.utility.js.map +1 -1
  372. package/dist/cjs/utility/dto/generate/dynamic.utility.js +5 -1
  373. package/dist/cjs/utility/dto/generate/dynamic.utility.js.map +1 -1
  374. package/dist/cjs/utility/dto/generate/exception.utility.js +5 -1
  375. package/dist/cjs/utility/dto/generate/exception.utility.js.map +1 -1
  376. package/dist/cjs/utility/dto/generate/filter-decorator.utility.js +5 -1
  377. package/dist/cjs/utility/dto/generate/filter-decorator.utility.js.map +1 -1
  378. package/dist/cjs/utility/dto/generate/get-list-response.utility.js +5 -1
  379. package/dist/cjs/utility/dto/generate/get-list-response.utility.js.map +1 -1
  380. package/dist/cjs/utility/dto/get/get-list-query-base-class.utility.js +5 -1
  381. package/dist/cjs/utility/dto/get/get-list-query-base-class.utility.js.map +1 -1
  382. package/dist/cjs/utility/dto/handle-date-property.utility.js +5 -1
  383. package/dist/cjs/utility/dto/handle-date-property.utility.js.map +1 -1
  384. package/dist/cjs/utility/dto/is/property/should-be-marked.utility.js +7 -3
  385. package/dist/cjs/utility/dto/is/property/should-be-marked.utility.js.map +1 -1
  386. package/dist/cjs/utility/dto/is/should-be-generated.utility.js +8 -4
  387. package/dist/cjs/utility/dto/is/should-be-generated.utility.js.map +1 -1
  388. package/dist/esm/class/api/authorization/bootstrap-validation.service.class.d.ts +1 -0
  389. package/dist/esm/class/api/authorization/bootstrap-validation.service.class.js +37 -3
  390. package/dist/esm/class/api/authorization/bootstrap-validation.service.class.js.map +1 -1
  391. package/dist/esm/class/api/authorization/cache-invalidation.service.class.d.ts +7 -0
  392. package/dist/esm/class/api/authorization/cache-invalidation.service.class.js +21 -0
  393. package/dist/esm/class/api/authorization/cache-invalidation.service.class.js.map +1 -0
  394. package/dist/esm/class/api/authorization/guard.class.d.ts +1 -2
  395. package/dist/esm/class/api/authorization/guard.class.js +13 -18
  396. package/dist/esm/class/api/authorization/guard.class.js.map +1 -1
  397. package/dist/esm/class/api/authorization/index.d.ts +1 -0
  398. package/dist/esm/class/api/authorization/policy/executor.class.js +1 -2
  399. package/dist/esm/class/api/authorization/policy/executor.class.js.map +1 -1
  400. package/dist/esm/class/api/authorization/policy/index.d.ts +1 -0
  401. package/dist/esm/class/api/authorization/policy/registry.class.d.ts +3 -5
  402. package/dist/esm/class/api/authorization/policy/registry.class.js +10 -33
  403. package/dist/esm/class/api/authorization/policy/registry.class.js.map +1 -1
  404. package/dist/esm/class/api/authorization/policy/subscriber-wrapper.class.d.ts +10 -0
  405. package/dist/esm/class/api/authorization/policy/subscriber-wrapper.class.js +21 -0
  406. package/dist/esm/class/api/authorization/policy/subscriber-wrapper.class.js.map +1 -0
  407. package/dist/esm/class/api/authorization/runtime.class.d.ts +3 -2
  408. package/dist/esm/class/api/authorization/runtime.class.js +6 -5
  409. package/dist/esm/class/api/authorization/runtime.class.js.map +1 -1
  410. package/dist/esm/class/api/authorization/simulator.class.d.ts +2 -0
  411. package/dist/esm/class/api/authorization/simulator.class.js +1 -0
  412. package/dist/esm/class/api/authorization/simulator.class.js.map +1 -1
  413. package/dist/esm/class/api/function/context-storage.class.d.ts +7 -0
  414. package/dist/esm/class/api/function/context-storage.class.js +14 -0
  415. package/dist/esm/class/api/function/context-storage.class.js.map +1 -0
  416. package/dist/esm/class/api/function/custom-runtime.class.d.ts +19 -0
  417. package/dist/esm/class/api/function/custom-runtime.class.js +116 -0
  418. package/dist/esm/class/api/function/custom-runtime.class.js.map +1 -0
  419. package/dist/esm/class/api/function/index.d.ts +1 -0
  420. package/dist/esm/class/api/function/transaction-scope.class.d.ts +6 -0
  421. package/dist/esm/class/api/function/transaction-scope.class.js +32 -0
  422. package/dist/esm/class/api/function/transaction-scope.class.js.map +1 -0
  423. package/dist/esm/class/api/index.d.ts +2 -0
  424. package/dist/esm/class/api/route-runtime.class.d.ts +21 -0
  425. package/dist/esm/class/api/route-runtime.class.js +333 -0
  426. package/dist/esm/class/api/route-runtime.class.js.map +1 -0
  427. package/dist/esm/class/api/service-base.class.d.ts +9 -7
  428. package/dist/esm/class/api/service-base.class.js +16 -6
  429. package/dist/esm/class/api/service-base.class.js.map +1 -1
  430. package/dist/esm/class/api/subscriber/executor.class.d.ts +7 -6
  431. package/dist/esm/class/api/subscriber/executor.class.js +16 -12
  432. package/dist/esm/class/api/subscriber/executor.class.js.map +1 -1
  433. package/dist/esm/class/api/subscriber/index.d.ts +1 -0
  434. package/dist/esm/class/api/subscriber/registry.class.d.ts +5 -2
  435. package/dist/esm/class/api/subscriber/registry.class.js +24 -22
  436. package/dist/esm/class/api/subscriber/registry.class.js.map +1 -1
  437. package/dist/esm/class/api/subscriber/wrapper.class.d.ts +18 -0
  438. package/dist/esm/class/api/subscriber/wrapper.class.js +21 -0
  439. package/dist/esm/class/api/subscriber/wrapper.class.js.map +1 -0
  440. package/dist/esm/class/utility/dto/exception/details/foreign-key-violation.class.js +5 -1
  441. package/dist/esm/class/utility/dto/exception/details/foreign-key-violation.class.js.map +1 -1
  442. package/dist/esm/class/utility/dto/exception/details/unique-violation.class.js +5 -1
  443. package/dist/esm/class/utility/dto/exception/details/unique-violation.class.js.map +1 -1
  444. package/dist/esm/class/utility/dto/property/factory/number.class.js +6 -2
  445. package/dist/esm/class/utility/dto/property/factory/number.class.js.map +1 -1
  446. package/dist/esm/class/utility/dto/property/factory/relation.class.js +5 -1
  447. package/dist/esm/class/utility/dto/property/factory/relation.class.js.map +1 -1
  448. package/dist/esm/class/utility/dto/strategy/body.class.js +5 -1
  449. package/dist/esm/class/utility/dto/strategy/body.class.js.map +1 -1
  450. package/dist/esm/class/utility/dto/strategy/query.class.js +5 -1
  451. package/dist/esm/class/utility/dto/strategy/query.class.js.map +1 -1
  452. package/dist/esm/class/utility/dto/strategy/request.class.js +5 -1
  453. package/dist/esm/class/utility/dto/strategy/request.class.js.map +1 -1
  454. package/dist/esm/class/utility/dto/strategy/response.class.js +5 -1
  455. package/dist/esm/class/utility/dto/strategy/response.class.js.map +1 -1
  456. package/dist/esm/constant/decorator/api/method.constant.d.ts +2 -3
  457. package/dist/esm/constant/decorator/api/method.constant.js +4 -6
  458. package/dist/esm/constant/decorator/api/method.constant.js.map +1 -1
  459. package/dist/esm/constant/utility/dto/constant.js +6 -2
  460. package/dist/esm/constant/utility/dto/constant.js.map +1 -1
  461. package/dist/esm/decorator/api/function/create.decorator.js +51 -24
  462. package/dist/esm/decorator/api/function/create.decorator.js.map +1 -1
  463. package/dist/esm/decorator/api/function/custom.decorator.d.ts +9 -0
  464. package/dist/esm/decorator/api/function/custom.decorator.js +45 -0
  465. package/dist/esm/decorator/api/function/custom.decorator.js.map +1 -0
  466. package/dist/esm/decorator/api/function/decorator.js +16 -7
  467. package/dist/esm/decorator/api/function/decorator.js.map +1 -1
  468. package/dist/esm/decorator/api/function/delete.decorator.js +62 -41
  469. package/dist/esm/decorator/api/function/delete.decorator.js.map +1 -1
  470. package/dist/esm/decorator/api/function/get/decorator.js +40 -25
  471. package/dist/esm/decorator/api/function/get/decorator.js.map +1 -1
  472. package/dist/esm/decorator/api/function/get/list.decorator.js +40 -25
  473. package/dist/esm/decorator/api/function/get/list.decorator.js.map +1 -1
  474. package/dist/esm/decorator/api/function/get/many.decorator.js +40 -25
  475. package/dist/esm/decorator/api/function/get/many.decorator.js.map +1 -1
  476. package/dist/esm/decorator/api/function/index.d.ts +1 -0
  477. package/dist/esm/decorator/api/function/update.decorator.js +62 -41
  478. package/dist/esm/decorator/api/function/update.decorator.js.map +1 -1
  479. package/dist/esm/decorator/api/index.d.ts +1 -0
  480. package/dist/esm/decorator/api/method.decorator.d.ts +5 -6
  481. package/dist/esm/decorator/api/method.decorator.js +66 -326
  482. package/dist/esm/decorator/api/method.decorator.js.map +1 -1
  483. package/dist/esm/decorator/api/property/boolean.decorator.js +24 -5
  484. package/dist/esm/decorator/api/property/boolean.decorator.js.map +1 -1
  485. package/dist/esm/decorator/api/property/date.decorator.js +24 -5
  486. package/dist/esm/decorator/api/property/date.decorator.js.map +1 -1
  487. package/dist/esm/decorator/api/property/enum.decorator.js +22 -4
  488. package/dist/esm/decorator/api/property/enum.decorator.js.map +1 -1
  489. package/dist/esm/decorator/api/property/number.decorator.js +30 -7
  490. package/dist/esm/decorator/api/property/number.decorator.js.map +1 -1
  491. package/dist/esm/decorator/api/property/object.decorator.js +22 -4
  492. package/dist/esm/decorator/api/property/object.decorator.js.map +1 -1
  493. package/dist/esm/decorator/api/property/string.decorator.js +26 -9
  494. package/dist/esm/decorator/api/property/string.decorator.js.map +1 -1
  495. package/dist/esm/decorator/api/property/uuid.decorator.js +27 -5
  496. package/dist/esm/decorator/api/property/uuid.decorator.js.map +1 -1
  497. package/dist/esm/decorator/api/route-custom.decorator.d.ts +9 -0
  498. package/dist/esm/decorator/api/route-custom.decorator.js +99 -0
  499. package/dist/esm/decorator/api/route-custom.decorator.js.map +1 -0
  500. package/dist/esm/decorator/api/service/decorator.js +28 -23
  501. package/dist/esm/decorator/api/service/decorator.js.map +1 -1
  502. package/dist/esm/enum/decorator/api/controller/index.d.ts +3 -1
  503. package/dist/esm/enum/decorator/api/controller/relation-reference-shape.enum.d.ts +4 -0
  504. package/dist/esm/enum/decorator/api/controller/relation-reference-shape.enum.js +8 -0
  505. package/dist/esm/enum/decorator/api/controller/relation-reference-shape.enum.js.map +1 -0
  506. package/dist/esm/enum/decorator/api/controller/request/index.d.ts +2 -0
  507. package/dist/esm/enum/decorator/api/controller/request/target.enum.d.ts +5 -0
  508. package/dist/esm/enum/decorator/api/controller/request/target.enum.js +9 -0
  509. package/dist/esm/enum/decorator/api/controller/request/target.enum.js.map +1 -0
  510. package/dist/esm/enum/decorator/api/controller/{request-transformer-type.enum.js → request/transformer-type.enum.js} +1 -1
  511. package/dist/esm/enum/decorator/api/controller/request/transformer-type.enum.js.map +1 -0
  512. package/dist/esm/enum/decorator/api/controller/response-target.enum.d.ts +3 -0
  513. package/dist/esm/enum/decorator/api/controller/response-target.enum.js +7 -0
  514. package/dist/esm/enum/decorator/api/controller/response-target.enum.js.map +1 -0
  515. package/dist/esm/enum/decorator/api/dto-type.enum.d.ts +1 -1
  516. package/dist/esm/enum/decorator/api/dto-type.enum.js +1 -1
  517. package/dist/esm/enum/decorator/api/dto-type.enum.js.map +1 -1
  518. package/dist/esm/enum/decorator/api/function-transaction-mode.enum.d.ts +6 -0
  519. package/dist/esm/enum/decorator/api/function-transaction-mode.enum.js +10 -0
  520. package/dist/esm/enum/decorator/api/function-transaction-mode.enum.js.map +1 -0
  521. package/dist/esm/enum/decorator/api/function-type.enum.d.ts +1 -0
  522. package/dist/esm/enum/decorator/api/function-type.enum.js +1 -0
  523. package/dist/esm/enum/decorator/api/function-type.enum.js.map +1 -1
  524. package/dist/esm/enum/decorator/api/index.d.ts +1 -0
  525. package/dist/esm/external/rxjs/dist/esm5/internal/Observable.js +104 -0
  526. package/dist/esm/external/rxjs/dist/esm5/internal/Observable.js.map +1 -0
  527. package/dist/esm/external/rxjs/dist/esm5/internal/Subscriber.js +154 -0
  528. package/dist/esm/external/rxjs/dist/esm5/internal/Subscriber.js.map +1 -0
  529. package/dist/esm/external/rxjs/dist/esm5/internal/Subscription.js +145 -0
  530. package/dist/esm/external/rxjs/dist/esm5/internal/Subscription.js.map +1 -0
  531. package/dist/esm/external/rxjs/dist/esm5/internal/config.js +5 -0
  532. package/dist/esm/external/rxjs/dist/esm5/internal/config.js.map +1 -0
  533. package/dist/esm/external/rxjs/dist/esm5/internal/lastValueFrom.js +26 -0
  534. package/dist/esm/external/rxjs/dist/esm5/internal/lastValueFrom.js.map +1 -0
  535. package/dist/esm/external/rxjs/dist/esm5/internal/observable/from.js +9 -0
  536. package/dist/esm/external/rxjs/dist/esm5/internal/observable/from.js.map +1 -0
  537. package/dist/esm/external/rxjs/dist/esm5/internal/observable/innerFrom.js +146 -0
  538. package/dist/esm/external/rxjs/dist/esm5/internal/observable/innerFrom.js.map +1 -0
  539. package/dist/esm/external/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js +63 -0
  540. package/dist/esm/external/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js.map +1 -0
  541. package/dist/esm/external/rxjs/dist/esm5/internal/operators/observeOn.js +13 -0
  542. package/dist/esm/external/rxjs/dist/esm5/internal/operators/observeOn.js.map +1 -0
  543. package/dist/esm/external/rxjs/dist/esm5/internal/operators/subscribeOn.js +11 -0
  544. package/dist/esm/external/rxjs/dist/esm5/internal/operators/subscribeOn.js.map +1 -0
  545. package/dist/esm/external/rxjs/dist/esm5/internal/scheduled/scheduleArray.js +21 -0
  546. package/dist/esm/external/rxjs/dist/esm5/internal/scheduled/scheduleArray.js.map +1 -0
  547. package/dist/esm/external/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js +26 -0
  548. package/dist/esm/external/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js.map +1 -0
  549. package/dist/esm/external/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js +35 -0
  550. package/dist/esm/external/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js.map +1 -0
  551. package/dist/esm/external/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js +10 -0
  552. package/dist/esm/external/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js.map +1 -0
  553. package/dist/esm/external/rxjs/dist/esm5/internal/scheduled/schedulePromise.js +10 -0
  554. package/dist/esm/external/rxjs/dist/esm5/internal/scheduled/schedulePromise.js.map +1 -0
  555. package/dist/esm/external/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js +9 -0
  556. package/dist/esm/external/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js.map +1 -0
  557. package/dist/esm/external/rxjs/dist/esm5/internal/scheduled/scheduled.js +40 -0
  558. package/dist/esm/external/rxjs/dist/esm5/internal/scheduled/scheduled.js.map +1 -0
  559. package/dist/esm/external/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js +18 -0
  560. package/dist/esm/external/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js.map +1 -0
  561. package/dist/esm/external/rxjs/dist/esm5/internal/symbol/iterator.js +10 -0
  562. package/dist/esm/external/rxjs/dist/esm5/internal/symbol/iterator.js.map +1 -0
  563. package/dist/esm/external/rxjs/dist/esm5/internal/symbol/observable.js +4 -0
  564. package/dist/esm/external/rxjs/dist/esm5/internal/symbol/observable.js.map +1 -0
  565. package/dist/esm/external/rxjs/dist/esm5/internal/util/EmptyError.js +12 -0
  566. package/dist/esm/external/rxjs/dist/esm5/internal/util/EmptyError.js.map +1 -0
  567. package/dist/esm/external/rxjs/dist/esm5/internal/util/UnsubscriptionError.js +15 -0
  568. package/dist/esm/external/rxjs/dist/esm5/internal/util/UnsubscriptionError.js.map +1 -0
  569. package/dist/esm/external/rxjs/dist/esm5/internal/util/arrRemove.js +9 -0
  570. package/dist/esm/external/rxjs/dist/esm5/internal/util/arrRemove.js.map +1 -0
  571. package/dist/esm/external/rxjs/dist/esm5/internal/util/createErrorClass.js +13 -0
  572. package/dist/esm/external/rxjs/dist/esm5/internal/util/createErrorClass.js.map +1 -0
  573. package/dist/esm/external/rxjs/dist/esm5/internal/util/errorContext.js +8 -0
  574. package/dist/esm/external/rxjs/dist/esm5/internal/util/errorContext.js.map +1 -0
  575. package/dist/esm/external/rxjs/dist/esm5/internal/util/executeSchedule.js +20 -0
  576. package/dist/esm/external/rxjs/dist/esm5/internal/util/executeSchedule.js.map +1 -0
  577. package/dist/esm/external/rxjs/dist/esm5/internal/util/identity.js +6 -0
  578. package/dist/esm/external/rxjs/dist/esm5/internal/util/identity.js.map +1 -0
  579. package/dist/esm/external/rxjs/dist/esm5/internal/util/isArrayLike.js +4 -0
  580. package/dist/esm/external/rxjs/dist/esm5/internal/util/isArrayLike.js.map +1 -0
  581. package/dist/esm/external/rxjs/dist/esm5/internal/util/isAsyncIterable.js +8 -0
  582. package/dist/esm/external/rxjs/dist/esm5/internal/util/isAsyncIterable.js.map +1 -0
  583. package/dist/esm/external/rxjs/dist/esm5/internal/util/isFunction.js +6 -0
  584. package/dist/esm/external/rxjs/dist/esm5/internal/util/isFunction.js.map +1 -0
  585. package/dist/esm/external/rxjs/dist/esm5/internal/util/isInteropObservable.js +9 -0
  586. package/dist/esm/external/rxjs/dist/esm5/internal/util/isInteropObservable.js.map +1 -0
  587. package/dist/esm/external/rxjs/dist/esm5/internal/util/isIterable.js +9 -0
  588. package/dist/esm/external/rxjs/dist/esm5/internal/util/isIterable.js.map +1 -0
  589. package/dist/esm/external/rxjs/dist/esm5/internal/util/isPromise.js +8 -0
  590. package/dist/esm/external/rxjs/dist/esm5/internal/util/isPromise.js.map +1 -0
  591. package/dist/esm/external/rxjs/dist/esm5/internal/util/isReadableStreamLike.js +41 -0
  592. package/dist/esm/external/rxjs/dist/esm5/internal/util/isReadableStreamLike.js.map +1 -0
  593. package/dist/esm/external/rxjs/dist/esm5/internal/util/lift.js +23 -0
  594. package/dist/esm/external/rxjs/dist/esm5/internal/util/lift.js.map +1 -0
  595. package/dist/esm/external/rxjs/dist/esm5/internal/util/noop.js +4 -0
  596. package/dist/esm/external/rxjs/dist/esm5/internal/util/noop.js.map +1 -0
  597. package/dist/esm/external/rxjs/dist/esm5/internal/util/pipe.js +16 -0
  598. package/dist/esm/external/rxjs/dist/esm5/internal/util/pipe.js.map +1 -0
  599. package/dist/esm/external/rxjs/dist/esm5/internal/util/reportUnhandledError.js +12 -0
  600. package/dist/esm/external/rxjs/dist/esm5/internal/util/reportUnhandledError.js.map +1 -0
  601. package/dist/esm/external/rxjs/dist/esm5/internal/util/throwUnobservableError.js +6 -0
  602. package/dist/esm/external/rxjs/dist/esm5/internal/util/throwUnobservableError.js.map +1 -0
  603. package/dist/esm/external/tslib/tslib.es6.js +117 -1
  604. package/dist/esm/external/tslib/tslib.es6.js.map +1 -1
  605. package/dist/esm/factory/api-controller.factory.d.ts +1 -0
  606. package/dist/esm/factory/api-controller.factory.js +42 -393
  607. package/dist/esm/factory/api-controller.factory.js.map +1 -1
  608. package/dist/esm/index.js +15 -1
  609. package/dist/esm/index.js.map +1 -1
  610. package/dist/esm/interceptor/api-route-runtime.interceptor.d.ts +5 -0
  611. package/dist/esm/interceptor/api-route-runtime.interceptor.js +29 -0
  612. package/dist/esm/interceptor/api-route-runtime.interceptor.js.map +1 -0
  613. package/dist/esm/interface/class/api/authorization/policy/registry.interface.d.ts +1 -0
  614. package/dist/esm/interface/class/api/authorization/policy/subscriber/context/interface.d.ts +1 -1
  615. package/dist/esm/interface/class/api/function/context/index.d.ts +2 -0
  616. package/dist/esm/interface/class/api/function/context/interface.d.ts +10 -0
  617. package/dist/esm/interface/class/api/function/context/operations.interface.d.ts +13 -0
  618. package/dist/esm/interface/class/api/function/index.d.ts +1 -0
  619. package/dist/esm/interface/class/api/index.d.ts +2 -0
  620. package/dist/esm/interface/class/api/route/index.d.ts +1 -0
  621. package/dist/esm/interface/class/api/route/runtime/context-data.interface.d.ts +10 -0
  622. package/dist/esm/interface/class/api/route/runtime/custom-execution-options.interface.d.ts +9 -0
  623. package/dist/esm/interface/class/api/route/runtime/generated/execution-options.interface.d.ts +14 -0
  624. package/dist/esm/interface/class/api/route/runtime/generated/index.d.ts +2 -0
  625. package/dist/esm/interface/class/api/route/runtime/generated/targets.interface.d.ts +12 -0
  626. package/dist/esm/interface/class/api/route/runtime/http-request.interface.d.ts +8 -0
  627. package/dist/esm/interface/class/api/route/runtime/index.d.ts +4 -0
  628. package/dist/esm/interface/class/api/subscriber/function/error-execution-context.interface.d.ts +1 -0
  629. package/dist/esm/interface/class/api/subscriber/function/execution/context.interface.d.ts +1 -0
  630. package/dist/esm/interface/class/api/subscriber/function.interface.d.ts +4 -0
  631. package/dist/esm/interface/class/api/subscriber/route/error-execution-context.interface.d.ts +2 -1
  632. package/dist/esm/interface/class/api/subscriber/route/execution/context/data/extended.interface.d.ts +36 -0
  633. package/dist/esm/interface/class/api/subscriber/route/execution/context/data/index.d.ts +2 -0
  634. package/dist/esm/interface/class/api/subscriber/route/execution/context/data/interface.d.ts +32 -0
  635. package/dist/esm/interface/class/api/subscriber/route/execution/context/index.d.ts +2 -0
  636. package/dist/esm/interface/class/api/subscriber/route/execution/context/interface.d.ts +11 -0
  637. package/dist/esm/interface/class/api/subscriber/route/execution/index.d.ts +1 -2
  638. package/dist/esm/interface/class/api/subscriber/route.interface.d.ts +6 -2
  639. package/dist/esm/interface/decorator/api/controller/properties/route/authentication.interface.d.ts +1 -1
  640. package/dist/esm/interface/decorator/api/controller/properties/route/base/generation.interface.d.ts +5 -0
  641. package/dist/esm/interface/decorator/api/controller/properties/route/base/index.d.ts +5 -2
  642. package/dist/esm/interface/decorator/api/controller/properties/route/base/interface.d.ts +4 -7
  643. package/dist/esm/interface/decorator/api/controller/properties/route/base/relations/index.d.ts +4 -0
  644. package/dist/esm/interface/decorator/api/controller/properties/route/base/relations/interface.d.ts +6 -0
  645. package/dist/esm/interface/decorator/api/controller/properties/route/base/relations/reference.interface.d.ts +5 -0
  646. package/dist/esm/interface/decorator/api/controller/properties/route/base/relations/request/index.d.ts +2 -0
  647. package/dist/esm/interface/decorator/api/controller/properties/route/base/relations/request/interface.d.ts +6 -0
  648. package/dist/esm/interface/decorator/api/controller/properties/route/base/relations/request/load.interface.d.ts +10 -0
  649. package/dist/esm/interface/decorator/api/controller/properties/route/base/relations/response/index.d.ts +2 -0
  650. package/dist/esm/interface/decorator/api/controller/properties/route/base/relations/response/interface.d.ts +6 -0
  651. package/dist/esm/interface/decorator/api/controller/properties/route/base/relations/response/load.interface.d.ts +4 -0
  652. package/dist/esm/interface/decorator/api/controller/properties/route/base/request/index.d.ts +2 -0
  653. package/dist/esm/interface/decorator/api/controller/properties/route/base/request/interface.d.ts +6 -0
  654. package/dist/esm/interface/decorator/api/controller/properties/route/base/request/target.interface.d.ts +6 -0
  655. package/dist/esm/interface/decorator/api/controller/properties/route/base/response/index.d.ts +2 -0
  656. package/dist/esm/interface/decorator/api/controller/properties/route/base/response/interface.d.ts +7 -0
  657. package/dist/esm/interface/decorator/api/controller/properties/route/base/response/target.interface.d.ts +4 -0
  658. package/dist/esm/interface/decorator/api/controller/properties/route/base/security.interface.d.ts +6 -0
  659. package/dist/esm/interface/decorator/api/controller/properties/route/with/dto.interface.d.ts +1 -1
  660. package/dist/esm/interface/decorator/api/function/create-executor-properties.interface.d.ts +1 -2
  661. package/dist/esm/interface/decorator/api/function/custom-properties.interface.d.ts +9 -0
  662. package/dist/esm/interface/decorator/api/function/delete-executor-properties.interface.d.ts +2 -3
  663. package/dist/esm/interface/decorator/api/function/get/executor-properties.interface.d.ts +1 -2
  664. package/dist/esm/interface/decorator/api/function/get/list-executor-properties.interface.d.ts +1 -2
  665. package/dist/esm/interface/decorator/api/function/get/many-executor-properties.interface.d.ts +1 -2
  666. package/dist/esm/interface/decorator/api/function/index.d.ts +1 -0
  667. package/dist/esm/interface/decorator/api/function/properties.interface.d.ts +4 -0
  668. package/dist/esm/interface/decorator/api/function/update-executor-properties.interface.d.ts +2 -3
  669. package/dist/esm/interface/decorator/api/index.d.ts +1 -0
  670. package/dist/esm/interface/decorator/api/method/index.d.ts +0 -2
  671. package/dist/esm/interface/decorator/api/method/properties.interface.d.ts +4 -17
  672. package/dist/esm/interface/decorator/api/route/custom-properties.interface.d.ts +6 -0
  673. package/dist/esm/interface/decorator/api/route/documentation-properties.interface.d.ts +5 -0
  674. package/dist/esm/interface/decorator/api/route/index.d.ts +7 -0
  675. package/dist/esm/interface/decorator/api/route/metadata/index.d.ts +3 -0
  676. package/dist/esm/interface/decorator/api/route/metadata/interface.d.ts +15 -0
  677. package/dist/esm/interface/decorator/api/route/metadata/resource.interface.d.ts +6 -0
  678. package/dist/esm/interface/decorator/api/route/metadata/route.interface.d.ts +7 -0
  679. package/dist/esm/interface/decorator/api/route/response/index.d.ts +2 -0
  680. package/dist/esm/interface/decorator/api/route/response/properties.interface.d.ts +9 -0
  681. package/dist/esm/interface/decorator/api/route/response/serialization-properties.interface.d.ts +3 -0
  682. package/dist/esm/interface/decorator/api/route/runtime-properties.interface.d.ts +11 -0
  683. package/dist/esm/interface/decorator/api/route/security/authentication-properties.interface.d.ts +9 -0
  684. package/dist/esm/interface/decorator/api/route/security/authorization-properties.interface.d.ts +4 -0
  685. package/dist/esm/interface/decorator/api/route/security/index.d.ts +3 -0
  686. package/dist/esm/interface/decorator/api/route/security/properties.interface.d.ts +6 -0
  687. package/dist/esm/interface/decorator/api/route/throttling/default-properties.interface.d.ts +4 -0
  688. package/dist/esm/interface/decorator/api/route/throttling/index.d.ts +2 -0
  689. package/dist/esm/interface/decorator/api/route/throttling/properties.interface.d.ts +4 -0
  690. package/dist/esm/interface/decorator/api/subscriber/function/filter.interface.d.ts +5 -0
  691. package/dist/esm/interface/decorator/api/subscriber/function/index.d.ts +2 -0
  692. package/dist/esm/interface/decorator/api/subscriber/function/properties.interface.d.ts +7 -0
  693. package/dist/esm/interface/decorator/api/subscriber/index.d.ts +2 -2
  694. package/dist/esm/interface/decorator/api/subscriber/route-properties.interface.d.ts +4 -0
  695. package/dist/esm/module/api/authorization.module.js +18 -1
  696. package/dist/esm/module/api/authorization.module.js.map +1 -1
  697. package/dist/esm/package.json +0 -1
  698. package/dist/esm/type/class/api/subscriber/route/after/create-context.type.d.ts +2 -2
  699. package/dist/esm/type/class/api/subscriber/route/after/delete-context.type.d.ts +2 -2
  700. package/dist/esm/type/class/api/subscriber/route/after/get/context.type.d.ts +2 -2
  701. package/dist/esm/type/class/api/subscriber/route/after/get/list-context.type.d.ts +2 -2
  702. package/dist/esm/type/class/api/subscriber/route/after/partial-update-context.type.d.ts +2 -2
  703. package/dist/esm/type/class/api/subscriber/route/after/update-context.type.d.ts +2 -2
  704. package/dist/esm/type/class/api/subscriber/route/before/create-context.type.d.ts +2 -2
  705. package/dist/esm/type/class/api/subscriber/route/before/delete-context.type.d.ts +2 -2
  706. package/dist/esm/type/class/api/subscriber/route/before/get/context.type.d.ts +2 -2
  707. package/dist/esm/type/class/api/subscriber/route/before/get/list-context.type.d.ts +2 -2
  708. package/dist/esm/type/class/api/subscriber/route/before/partial-update-context.type.d.ts +2 -2
  709. package/dist/esm/type/class/api/subscriber/route/before/update-context.type.d.ts +2 -2
  710. package/dist/esm/type/decorator/api/controller/properties/route/base/request/allowed-target.type.d.ts +9 -0
  711. package/dist/esm/type/decorator/api/controller/properties/route/base/request/index.d.ts +1 -1
  712. package/dist/esm/type/decorator/api/controller/properties/route/base/request/transformers.type.d.ts +7 -7
  713. package/dist/esm/type/decorator/api/controller/properties/route/base/response-transformers.type.d.ts +6 -6
  714. package/dist/esm/type/decorator/api/controller/transformer-config.type.d.ts +5 -5
  715. package/dist/esm/type/decorator/api/function/properties.type.d.ts +5 -3
  716. package/dist/esm/type/decorator/api/property/describe/dto/request-properties.type.d.ts +1 -1
  717. package/dist/esm/type/decorator/api/property/describe/properties/base/properties.type.d.ts +4 -4
  718. package/dist/esm/type/utility/dto/generate/allowed-combination.type.d.ts +4 -4
  719. package/dist/esm/utility/api/controller/apply/decorators.utility.js +59 -27
  720. package/dist/esm/utility/api/controller/apply/decorators.utility.js.map +1 -1
  721. package/dist/esm/utility/api/controller/apply/metadata.utility.js +6 -2
  722. package/dist/esm/utility/api/controller/apply/metadata.utility.js.map +1 -1
  723. package/dist/esm/utility/api/controller/get/dto.utility.js +6 -2
  724. package/dist/esm/utility/api/controller/get/dto.utility.js.map +1 -1
  725. package/dist/esm/utility/api/controller/get-list/transform/filter.utility.js +5 -1
  726. package/dist/esm/utility/api/controller/get-list/transform/filter.utility.js.map +1 -1
  727. package/dist/esm/utility/api/controller/handle-request-relations.utility.d.ts +4 -4
  728. package/dist/esm/utility/api/controller/handle-request-relations.utility.js +37 -11
  729. package/dist/esm/utility/api/controller/handle-request-relations.utility.js.map +1 -1
  730. package/dist/esm/utility/api/controller/index.d.ts +1 -0
  731. package/dist/esm/utility/api/controller/serialize-route-response.utility.d.ts +14 -0
  732. package/dist/esm/utility/api/controller/serialize-route-response.utility.js +27 -0
  733. package/dist/esm/utility/api/controller/serialize-route-response.utility.js.map +1 -0
  734. package/dist/esm/utility/api/controller/transform-data.utility.d.ts +8 -7
  735. package/dist/esm/utility/api/controller/transform-data.utility.js +19 -16
  736. package/dist/esm/utility/api/controller/transform-data.utility.js.map +1 -1
  737. package/dist/esm/utility/api/controller/validate-request.utility.d.ts +3 -3
  738. package/dist/esm/utility/api/controller/validate-request.utility.js +10 -9
  739. package/dist/esm/utility/api/controller/validate-request.utility.js.map +1 -1
  740. package/dist/esm/utility/api/controller/write/dto-swagger.utility.js +6 -2
  741. package/dist/esm/utility/api/controller/write/dto-swagger.utility.js.map +1 -1
  742. package/dist/esm/utility/api/function-transaction.utility.d.ts +20 -0
  743. package/dist/esm/utility/api/function-transaction.utility.js +50 -0
  744. package/dist/esm/utility/api/function-transaction.utility.js.map +1 -0
  745. package/dist/esm/utility/api/index.d.ts +1 -0
  746. package/dist/esm/utility/api/route/index.d.ts +1 -0
  747. package/dist/esm/utility/api/route/response/index.d.ts +2 -0
  748. package/dist/esm/utility/api/route/response/project-relation.utility.d.ts +11 -0
  749. package/dist/esm/utility/api/route/response/project-relation.utility.js +73 -0
  750. package/dist/esm/utility/api/route/response/project-relation.utility.js.map +1 -0
  751. package/dist/esm/utility/api/route/response/serialize.utility.d.ts +11 -0
  752. package/dist/esm/utility/api/route/response/serialize.utility.js +24 -0
  753. package/dist/esm/utility/api/route/response/serialize.utility.js.map +1 -0
  754. package/dist/esm/utility/dto/build-decorator.utility.js +5 -1
  755. package/dist/esm/utility/dto/build-decorator.utility.js.map +1 -1
  756. package/dist/esm/utility/dto/generate/core.utility.js +5 -1
  757. package/dist/esm/utility/dto/generate/core.utility.js.map +1 -1
  758. package/dist/esm/utility/dto/generate/dynamic.utility.js +5 -1
  759. package/dist/esm/utility/dto/generate/dynamic.utility.js.map +1 -1
  760. package/dist/esm/utility/dto/generate/exception.utility.js +5 -1
  761. package/dist/esm/utility/dto/generate/exception.utility.js.map +1 -1
  762. package/dist/esm/utility/dto/generate/filter-decorator.utility.js +5 -1
  763. package/dist/esm/utility/dto/generate/filter-decorator.utility.js.map +1 -1
  764. package/dist/esm/utility/dto/generate/get-list-response.utility.js +5 -1
  765. package/dist/esm/utility/dto/generate/get-list-response.utility.js.map +1 -1
  766. package/dist/esm/utility/dto/get/get-list-query-base-class.utility.js +5 -1
  767. package/dist/esm/utility/dto/get/get-list-query-base-class.utility.js.map +1 -1
  768. package/dist/esm/utility/dto/handle-date-property.utility.js +5 -1
  769. package/dist/esm/utility/dto/handle-date-property.utility.js.map +1 -1
  770. package/dist/esm/utility/dto/is/property/should-be-marked.utility.js +7 -3
  771. package/dist/esm/utility/dto/is/property/should-be-marked.utility.js.map +1 -1
  772. package/dist/esm/utility/dto/is/should-be-generated.utility.js +8 -4
  773. package/dist/esm/utility/dto/is/should-be-generated.utility.js.map +1 -1
  774. package/package.json +1 -1
  775. package/dist/cjs/enum/decorator/api/controller/request-transformer-type.enum.js.map +0 -1
  776. package/dist/cjs/interface/class/api/subscriber/route/execution/context-data.interface.d.ts +0 -82
  777. package/dist/cjs/interface/class/api/subscriber/route/execution/context.interface.d.ts +0 -29
  778. package/dist/cjs/interface/decorator/api/controller/properties/route/base/request.interface.d.ts +0 -8
  779. package/dist/cjs/interface/decorator/api/controller/properties/route/base/response.interface.d.ts +0 -7
  780. package/dist/cjs/interface/decorator/api/method/authorization.interface.d.ts +0 -3
  781. package/dist/cjs/interface/decorator/api/method/throttler-properties.interface.d.ts +0 -4
  782. package/dist/cjs/interface/decorator/api/subscriber/function-properties.interface.d.ts +0 -5
  783. package/dist/cjs/type/decorator/api/controller/properties/route/base/request/relations.type.d.ts +0 -18
  784. package/dist/esm/enum/decorator/api/controller/request-transformer-type.enum.js.map +0 -1
  785. package/dist/esm/interface/class/api/subscriber/route/execution/context-data.interface.d.ts +0 -82
  786. package/dist/esm/interface/class/api/subscriber/route/execution/context.interface.d.ts +0 -29
  787. package/dist/esm/interface/decorator/api/controller/properties/route/base/request.interface.d.ts +0 -8
  788. package/dist/esm/interface/decorator/api/controller/properties/route/base/response.interface.d.ts +0 -7
  789. package/dist/esm/interface/decorator/api/method/authorization.interface.d.ts +0 -3
  790. package/dist/esm/interface/decorator/api/method/throttler-properties.interface.d.ts +0 -4
  791. package/dist/esm/interface/decorator/api/subscriber/function-properties.interface.d.ts +0 -5
  792. package/dist/esm/type/decorator/api/controller/properties/route/base/request/relations.type.d.ts +0 -18
  793. /package/dist/cjs/enum/decorator/api/controller/{request-transformer-type.enum.d.ts → request/transformer-type.enum.d.ts} +0 -0
  794. /package/dist/esm/enum/decorator/api/controller/{request-transformer-type.enum.d.ts → request/transformer-type.enum.d.ts} +0 -0
package/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
  <p align="center">
9
9
  <a aria-label="ElsiKora logo" href="https://elsikora.com">
10
10
  <img src="https://img.shields.io/badge/MADE%20BY%20ElsiKora-333333.svg?style=for-the-badge" alt="ElsiKora">
11
- </a> <img src="https://img.shields.io/badge/npm-blue.svg?style=for-the-badge&logo=npm&logoColor=white" alt="npm"> <img src="https://img.shields.io/badge/typescript-blue.svg?style=for-the-badge&logo=typescript&logoColor=white" alt="typescript"> <img src="https://img.shields.io/badge/nestjs-red.svg?style=for-the-badge&logo=nestjs&logoColor=white" alt="nestjs"> <img src="https://img.shields.io/badge/swagger-green.svg?style=for-the-badge&logo=swagger&logoColor=white" alt="swagger"> <img src="https://img.shields.io/badge/license-blue.svg?style=for-the-badge&logo=license&logoColor=white" alt="license"> <img src="https://img.shields.io/badge/version-1.6.2-brightgreen.svg?style=for-the-badge&logo=v&logoColor=white" alt="version-1.6.2">
11
+ </a> <img src="https://img.shields.io/badge/npm-blue.svg?style=for-the-badge&logo=npm&logoColor=white" alt="npm"> <img src="https://img.shields.io/badge/typescript-blue.svg?style=for-the-badge&logo=typescript&logoColor=white" alt="typescript"> <img src="https://img.shields.io/badge/nestjs-red.svg?style=for-the-badge&logo=nestjs&logoColor=white" alt="nestjs"> <img src="https://img.shields.io/badge/swagger-green.svg?style=for-the-badge&logo=swagger&logoColor=white" alt="swagger"> <img src="https://img.shields.io/badge/license-blue.svg?style=for-the-badge&logo=license&logoColor=white" alt="license"> <img src="https://img.shields.io/badge/version-1.24.0-brightgreen.svg?style=for-the-badge&logo=v&logoColor=white" alt="version-1.24.0">
12
12
  </p>
13
13
 
14
14
  ## 📚 Table of Contents
@@ -21,7 +21,8 @@
21
21
  - [Advanced Usage](#advanced-usage)
22
22
  - [Subscriber System (Hooks)](#subscriber-system-hooks-intercepting-and-extending-logic)
23
23
  - [Swagger Documentation](#swagger-documentation)
24
- - [Roadmap](#-roadmap)
24
+ - [Current Status](#-current-status)
25
+ - [AI Agent Skill](#-ai-agent-skill)
25
26
  - [FAQ](#-faq)
26
27
  - [License](#-license)
27
28
 
@@ -45,19 +46,16 @@ The core philosophy of this library is built on four pillars: being **Declarativ
45
46
  - ✨ **🌐 Full support for TypeScript with strong typing throughout the library**
46
47
  - ✨ **Hooks and Subscriber System:** Intercept and extend business logic at both the controller and service level.
47
48
  - ✨ **Dynamic and Polymorphic DTOs:** Generate DTOs on-the-fly based on discriminator fields.
48
- - ✨ **Field-Level RBAC:** Show/hide fields in responses based on user roles using guards.
49
+ - ✨ **Guard-Based Field Exposure:** Generate route-specific response DTOs based on configured guard classes.
49
50
  - ✨ **🔐 Declarative Authorization Policies:** Subscriber-style policies with automatic guard wiring, scopes, and response transforms.
50
51
  - ✨ **Request Tracing:** Built-in `CorrelationIDResponseBodyInterceptor` to correlate requests and logs.
51
52
  - ✨ **Convention over Configuration:** Smart defaults for service and DTO naming to reduce boilerplate.
52
53
 
53
54
  ## 🛠 Installation
54
55
 
55
- ```bash
56
- ## Installation
57
-
58
56
  Install NestJS-Crud-Automator using your preferred package manager:
59
57
 
60
-
58
+ ```bash
61
59
  # Using npm
62
60
  npm install @elsikora/nestjs-crud-automator
63
61
 
@@ -66,22 +64,27 @@ yarn add @elsikora/nestjs-crud-automator
66
64
 
67
65
  # Using pnpm
68
66
  pnpm add @elsikora/nestjs-crud-automator
69
-
67
+ ```
70
68
 
71
69
  ### Prerequisites
72
70
 
73
71
  Make sure you have the following dependencies installed in your NestJS project:
74
72
 
75
- - NestJS (^9.0.0)
76
- - TypeORM (^0.3.0)
77
- - class-validator (^0.14.0)
78
- - class-transformer (^0.5.1)
79
- - @nestjs/swagger (^6.0.0)
73
+ - NestJS `@nestjs/common` and `@nestjs/core` `>=11.0.5`
74
+ - `@nestjs/passport` `>=11.0.5`
75
+ - `@nestjs/platform-fastify` `>=11.0.5`
76
+ - `@nestjs/swagger` `>=11.0.3`
77
+ - `@nestjs/throttler` `>=6.4.0`
78
+ - TypeORM `>=0.3.20`
79
+ - Fastify `>=5.0.0`
80
+ - `class-validator` `>=0.14.1`
81
+ - `class-transformer` `>=0.5.1`
82
+ - `lodash` `>=4.17.21`
80
83
 
81
84
  You might need to install these peer dependencies if they're not already in your project:
82
85
 
83
-
84
- npm install @nestjs/common @nestjs/swagger @nestjs/throttler typeorm class-transformer class-validator reflect-metadata
86
+ ```bash
87
+ npm install @nestjs/common @nestjs/core @nestjs/passport @nestjs/platform-fastify @nestjs/swagger @nestjs/throttler typeorm class-transformer class-validator fastify lodash
85
88
  ```
86
89
 
87
90
  ## 💡 Usage
@@ -94,7 +97,7 @@ First, define your entity with the `ApiPropertyDescribe` decorators to provide m
94
97
 
95
98
  ```typescript
96
99
  import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";
97
- import { ApiPropertyDescribe, EApiPropertyDescribeType, EApiPropertyStringType, EApiPropertyDateIdentifier, EApiPropertyDateType } from "@elsikora/nestjs-crud-automator";
100
+ import { ApiPropertyDescribe, EApiPropertyDescribeType, EApiPropertyStringType, EApiPropertyDateIdentifier, EApiPropertyDateType, GetDefaultStringFormatProperties } from "@elsikora/nestjs-crud-automator";
98
101
 
99
102
  @Entity("users")
100
103
  export class UserEntity {
@@ -122,10 +125,7 @@ export class UserEntity {
122
125
  type: EApiPropertyDescribeType.STRING,
123
126
  description: "User email",
124
127
  format: EApiPropertyStringType.EMAIL,
125
- minLength: 5,
126
- maxLength: 255,
127
- pattern: "/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/",
128
- exampleValue: "user@example.com",
128
+ ...GetDefaultStringFormatProperties(EApiPropertyStringType.EMAIL),
129
129
  })
130
130
  email: string;
131
131
 
@@ -171,7 +171,7 @@ export class UserService extends ApiServiceBase<UserEntity> {
171
171
  }
172
172
 
173
173
  // You can add custom methods here that go beyond basic CRUD
174
- async findByEmail(email: string): Promise<UserEntity | undefined> {
174
+ async findByEmail(email: string): Promise<UserEntity | null> {
175
175
  return this.repository.findOne({ where: { email } });
176
176
  }
177
177
  }
@@ -182,35 +182,44 @@ export class UserService extends ApiServiceBase<UserEntity> {
182
182
  Create a controller with the `ApiController` decorator to generate all CRUD endpoints:
183
183
 
184
184
  ```typescript
185
- import { Controller, UseGuards } from "@nestjs/common";
186
- import { ApiController, EApiRouteType } from "@elsikora/nestjs-crud-automator";
185
+ import { ApiController, EApiAuthenticationType, EApiRouteType } from "@elsikora/nestjs-crud-automator";
187
186
  import { UserEntity } from "./user.entity";
188
187
  import { UserService } from "./user.service";
189
188
  import { JwtAuthGuard } from "../auth/guards/jwt-auth.guard";
190
189
 
191
- @Controller("users")
192
190
  @ApiController<UserEntity>({
193
191
  entity: UserEntity,
194
192
  name: "Users",
193
+ path: "users",
195
194
  routes: {
196
195
  [EApiRouteType.CREATE]: {
197
- authentication: {
198
- guard: JwtAuthGuard,
199
- bearerStrategies: ["jwt"],
196
+ security: {
197
+ authentication: {
198
+ type: EApiAuthenticationType.USER,
199
+ guard: JwtAuthGuard,
200
+ bearerStrategies: ["jwt"],
201
+ },
200
202
  },
201
203
  },
202
204
  [EApiRouteType.UPDATE]: {
203
- authentication: {
204
- guard: JwtAuthGuard,
205
- bearerStrategies: ["jwt"],
205
+ security: {
206
+ authentication: {
207
+ type: EApiAuthenticationType.USER,
208
+ guard: JwtAuthGuard,
209
+ bearerStrategies: ["jwt"],
210
+ },
206
211
  },
207
212
  },
208
213
  [EApiRouteType.DELETE]: {
209
- authentication: {
210
- guard: JwtAuthGuard,
211
- bearerStrategies: ["jwt"],
214
+ security: {
215
+ authentication: {
216
+ type: EApiAuthenticationType.USER,
217
+ guard: JwtAuthGuard,
218
+ bearerStrategies: ["jwt"],
219
+ },
212
220
  },
213
221
  },
222
+ [EApiRouteType.PARTIAL_UPDATE]: {},
214
223
  [EApiRouteType.GET]: {},
215
224
  [EApiRouteType.GET_LIST]: {},
216
225
  },
@@ -257,7 +266,7 @@ export class UserController {
257
266
  Automatically transform request data:
258
267
 
259
268
  ```typescript
260
- import { ApiController, EApiRouteType, EApiDtoType, EApiControllerRequestTransformerType, TRANSFORMER_VALUE_DTO_CONSTANT } from "@elsikora/nestjs-crud-automator";
269
+ import { ApiController, EApiControllerRequestTarget, EApiControllerRequestTransformerType, EApiRouteType, TRANSFORMER_VALUE_DTO_CONSTANT } from "@elsikora/nestjs-crud-automator";
261
270
 
262
271
  @ApiController<UserEntity>({
263
272
  entity: UserEntity,
@@ -265,8 +274,8 @@ import { ApiController, EApiRouteType, EApiDtoType, EApiControllerRequestTransfo
265
274
  routes: {
266
275
  [EApiRouteType.CREATE]: {
267
276
  request: {
268
- transformers: {
269
- [EApiDtoType.BODY]: [
277
+ [EApiControllerRequestTarget.BODY]: {
278
+ transformers: [
270
279
  {
271
280
  key: "createdBy",
272
281
  type: EApiControllerRequestTransformerType.DYNAMIC,
@@ -289,24 +298,27 @@ export class UserController {
289
298
  Automatically load related entities:
290
299
 
291
300
  ```typescript
292
- import { ApiController, EApiRouteType, EApiControllerLoadRelationsStrategy } from "@elsikora/nestjs-crud-automator";
301
+ import { ApiController, EApiControllerLoadRelationsStrategy, EApiControllerRelationReferenceShape, EApiRouteType } from "@elsikora/nestjs-crud-automator";
293
302
 
294
303
  @ApiController<PostEntity>({
295
304
  entity: PostEntity,
296
305
  name: "Posts",
297
306
  routes: {
298
- [EApiRouteType.GET]: {
299
- request: {
300
- relations: {
301
- shouldLoadRelations: true,
302
- relationsLoadStrategy: EApiControllerLoadRelationsStrategy.AUTO,
303
- servicesLoadStrategy: EApiControllerLoadRelationsStrategy.AUTO,
304
- shouldForceAllServicesToBeSpecified: false,
305
- relationsToLoad: ["author", "comments"],
307
+ [EApiRouteType.CREATE]: {
308
+ relations: {
309
+ request: {
310
+ reference: { shape: EApiControllerRelationReferenceShape.SCALAR },
311
+ load: {
312
+ shouldLoad: true,
313
+ relationStrategy: EApiControllerLoadRelationsStrategy.AUTO,
314
+ serviceStrategy: EApiControllerLoadRelationsStrategy.AUTO,
315
+ shouldForceAllServicesToBeSpecified: false,
316
+ },
317
+ },
318
+ response: {
319
+ reference: { shape: EApiControllerRelationReferenceShape.OBJECT, key: "id" },
320
+ load: { include: { author: true, comments: true } },
306
321
  },
307
- },
308
- response: {
309
- relations: ["author", "comments"],
310
322
  },
311
323
  },
312
324
  },
@@ -315,7 +327,6 @@ export class PostController {
315
327
  constructor(
316
328
  public service: PostService,
317
329
  public authorService: UserService,
318
- public commentsService: CommentService,
319
330
  ) {}
320
331
  }
321
332
  ```
@@ -325,7 +336,7 @@ export class PostController {
325
336
  Use custom DTOs instead of auto-generated ones:
326
337
 
327
338
  ```typescript
328
- import { ApiController, EApiRouteType } from "@elsikora/nestjs-crud-automator";
339
+ import { ApiController, EApiDtoType, EApiRouteType } from "@elsikora/nestjs-crud-automator";
329
340
  import { CreateUserDto } from "./dto/create-user.dto";
330
341
  import { UpdateUserDto } from "./dto/update-user.dto";
331
342
  import { UserResponseDto } from "./dto/user-response.dto";
@@ -336,14 +347,14 @@ import { UserResponseDto } from "./dto/user-response.dto";
336
347
  routes: {
337
348
  [EApiRouteType.CREATE]: {
338
349
  dto: {
339
- body: CreateUserDto,
340
- response: UserResponseDto,
350
+ [EApiDtoType.BODY]: CreateUserDto,
351
+ [EApiDtoType.RESPONSE]: UserResponseDto,
341
352
  },
342
353
  },
343
354
  [EApiRouteType.UPDATE]: {
344
355
  dto: {
345
- body: UpdateUserDto,
346
- response: UserResponseDto,
356
+ [EApiDtoType.BODY]: UpdateUserDto,
357
+ [EApiDtoType.RESPONSE]: UserResponseDto,
347
358
  },
348
359
  },
349
360
  },
@@ -355,14 +366,14 @@ export class UserController {
355
366
 
356
367
  For `GET_LIST`, response DTOs support two explicit modes:
357
368
 
358
- - `response: PublicUserListResponseDto` when the app owns the whole list wrapper.
359
- - `response: { itemType: PublicUserResponseDto }` when the framework owns the list wrapper and the app owns each item shape.
369
+ - `[EApiDtoType.RESPONSE]: PublicUserListResponseDto` when the app owns the whole list wrapper.
370
+ - `[EApiDtoType.RESPONSE]: { itemType: PublicUserResponseDto }` when the framework owns the list wrapper and the app owns each item shape.
360
371
 
361
372
  Use the item DTO mode when you only need to narrow each returned item:
362
373
 
363
374
  ```typescript
364
375
  import { Expose } from "class-transformer";
365
- import { ApiController, EApiRouteType } from "@elsikora/nestjs-crud-automator";
376
+ import { ApiController, EApiDtoType, EApiRouteType } from "@elsikora/nestjs-crud-automator";
366
377
 
367
378
  class PublicUserResponseDto {
368
379
  @Expose()
@@ -377,7 +388,7 @@ class PublicUserResponseDto {
377
388
  routes: {
378
389
  [EApiRouteType.GET_LIST]: {
379
390
  dto: {
380
- response: {
391
+ [EApiDtoType.RESPONSE]: {
381
392
  itemType: PublicUserResponseDto,
382
393
  name: "PublicUserListResponseDto",
383
394
  },
@@ -399,14 +410,11 @@ Authorization now has two first-class modes:
399
410
  - `hooks`: auto-discovered `@ApiAuthorizationPolicy({ entity })` classes
400
411
  - `iam`: attachment/document-based IAM evaluation with optional boundaries
401
412
 
402
- `@ApiControllerSecurable()` is marker-only. It turns on the authorization pipeline, but mode selection and all authorization configuration live in `@ApiController({ authorization: ... })`. Each route uses exactly one mode, and route config can override the controller default with `routes[routeType].authorization.mode`.
413
+ `@ApiControllerSecurable()` is marker-only. It turns on the authorization pipeline, but mode selection and all authorization configuration live in `@ApiController({ authorization: ... })`. Each route uses exactly one mode, and route config can override the controller default with `routes[routeType].security.authorization.mode`.
403
414
 
404
415
  #### Runtime authorization actions
405
416
 
406
- `@ApiMethod(...)` uses two different action concepts:
407
-
408
- - `action` is a documentation hint for Swagger summaries and descriptions
409
- - `authorization.action` is the runtime authorization action string used by hooks and IAM
417
+ `@ApiMethod(...)` uses one route action identity: `metadata.resource.action`. Generated CRUD routes also carry `metadata.route.type` for built-in CRUD/IAM mapping.
410
418
 
411
419
  Auto-generated CRUD routes receive built-in runtime actions automatically:
412
420
 
@@ -421,49 +429,79 @@ Custom secured routes should declare their own domain-specific action strings:
421
429
 
422
430
  ```typescript
423
431
  @ApiMethod<UserEntity>({
424
- action: EApiAction.UPDATE,
425
- authorization: {
426
- action: "update.promote",
432
+ metadata: {
433
+ resource: {
434
+ action: "update.promote",
435
+ entity: UserEntity,
436
+ },
437
+ route: {
438
+ method: RequestMethod.POST,
439
+ path: ":id/promote",
440
+ },
441
+ security: {
442
+ authorization: { mode: EApiAuthorizationMode.HOOKS },
443
+ },
444
+ response: {
445
+ status: HttpStatus.OK,
446
+ type: UserResponseDto,
447
+ },
448
+ },
449
+ })
450
+ public promote(@Param("id") id: string) {
451
+ return this.service.promote(id);
452
+ }
453
+ ```
454
+
455
+ The same `metadata.resource.action` value is what hooks receive as `context.action` and what IAM turns into a namespaced action such as `admin:user:update.promote`.
456
+
457
+ Use `@ApiRouteCustom(...)` when a custom controller route should also participate in the custom route runtime: request/response transformers, route subscribers, relation loading/projection, authorization result transforms, and response serialization. `@ApiMethod(...)` remains the low-level metadata/decorator composer.
458
+
459
+ ```typescript
460
+ @ApiRouteCustom<UserEntity>({
461
+ resource: { action: "update.promote", entity: UserEntity },
462
+ route: { method: RequestMethod.POST, path: ":id/promote" },
463
+ security: {
464
+ authorization: { mode: EApiAuthorizationMode.HOOKS },
465
+ },
466
+ response: {
467
+ status: HttpStatus.OK,
468
+ type: UserResponseDto,
469
+ serialization: { isEnabled: true },
427
470
  },
428
- entity: UserEntity,
429
- httpCode: HttpStatus.OK,
430
- method: RequestMethod.POST,
431
- path: ":id/promote",
432
- responseType: UserResponseDto,
433
471
  })
434
472
  public promote(@Param("id") id: string) {
435
473
  return this.service.promote(id);
436
474
  }
437
475
  ```
438
476
 
439
- The same `authorization.action` value is what hooks receive as `context.action` and what IAM turns into a namespaced action such as `admin:user:update.promote`.
477
+ Function decorators support explicit transaction modes without exposing `EntityManager` as a public method argument:
478
+
479
+ ```typescript
480
+ @ApiFunctionCustom<UserEntity>({
481
+ action: "bulkPromote",
482
+ entity: UserEntity,
483
+ transaction: { mode: EApiFunctionTransactionMode.REQUIRED },
484
+ })
485
+ async bulkPromote(ids: Array<string>): Promise<Array<UserEntity>> {
486
+ const context = this.getApiFunctionContext<UserEntity>();
487
+
488
+ return await Promise.all(ids.map(async (id) => await context.operations.update({ id }, { role: "admin" })));
489
+ }
490
+ ```
440
491
 
441
492
  ```typescript
442
493
  // app.module.ts
443
- import type {
444
- IApiAuthorizationPrincipal,
445
- IApiHookPermissionSource,
446
- IApiPolicyAttachmentSource,
447
- IApiPolicyDocumentSource,
448
- IApiResolvedPolicyAttachments,
449
- } from "@elsikora/nestjs-crud-automator";
494
+ import type { IApiAuthorizationPrincipal, IApiHookPermissionSource, IApiPolicyAttachmentSource, IApiPolicyDocumentSource, IApiResolvedPolicyAttachments } from "@elsikora/nestjs-crud-automator";
450
495
 
451
496
  import { Module } from "@nestjs/common";
452
497
 
453
- import {
454
- ApiAuthorizationModule,
455
- EApiAuthorizationPrincipalType,
456
- EApiPolicySourceType,
457
- AuthorizationResolveDefaultPrincipal,
458
- } from "@elsikora/nestjs-crud-automator";
498
+ import { ApiAuthorizationModule, EApiAuthorizationPrincipalType, EApiPolicyEffect, EApiPolicySourceType, AuthorizationResolveDefaultPrincipal } from "@elsikora/nestjs-crud-automator";
459
499
 
460
500
  const hookPermissionSource: IApiHookPermissionSource = {
461
501
  async getPermissions(principal: IApiAuthorizationPrincipal): Promise<ReadonlyArray<string>> {
462
502
  const permissions = principal.claims?.permissions;
463
503
 
464
- return Array.isArray(permissions)
465
- ? permissions.filter((value): value is string => typeof value === "string")
466
- : [];
504
+ return Array.isArray(permissions) ? permissions.filter((value): value is string => typeof value === "string") : [];
467
505
  },
468
506
  };
469
507
 
@@ -494,8 +532,8 @@ const iamDocumentSource: IApiPolicyDocumentSource = {
494
532
  "resource.operatorId": "operator-1",
495
533
  },
496
534
  },
497
- Effect: "Allow",
498
- Resource: ["gameport:admin:item/{id}"],
535
+ Effect: EApiPolicyEffect.ALLOW,
536
+ Resource: ["gameport:admin:item/*"],
499
537
  Sid: "AllowOperatorItems",
500
538
  },
501
539
  ],
@@ -549,10 +587,7 @@ Use `ApiAuthorizationModule.forRootAsync(...)` when the resolver or IAM sources
549
587
  // authorization.module.ts
550
588
  import { Injectable, Module } from "@nestjs/common";
551
589
 
552
- import {
553
- ApiAuthorizationModule,
554
- AuthorizationResolveDefaultPrincipal,
555
- } from "@elsikora/nestjs-crud-automator";
590
+ import { ApiAuthorizationModule, AuthorizationResolveDefaultPrincipal } from "@elsikora/nestjs-crud-automator";
556
591
 
557
592
  @Injectable()
558
593
  class DbPrincipalResolver {
@@ -600,11 +635,7 @@ Use the controller `authorization` block to pick the mode:
600
635
 
601
636
  ```typescript
602
637
  // user.controller.ts
603
- import {
604
- EApiAuthorizationMode,
605
- ApiController,
606
- ApiControllerSecurable,
607
- } from "@elsikora/nestjs-crud-automator";
638
+ import { EApiAuthorizationMode, ApiController, ApiControllerSecurable } from "@elsikora/nestjs-crud-automator";
608
639
 
609
640
  @ApiControllerSecurable()
610
641
  @ApiController<UserEntity>({
@@ -613,6 +644,7 @@ import {
613
644
  },
614
645
  entity: UserEntity,
615
646
  path: "users",
647
+ routes: {},
616
648
  })
617
649
  export class UserController {
618
650
  constructor(public service: UserService) {}
@@ -623,18 +655,9 @@ Hooks mode keeps entity-based policy autodiscovery:
623
655
 
624
656
  ```typescript
625
657
  // policies/user-hooks.policy.ts
626
- import type {
627
- IApiAuthorizationRuleContext,
628
- IApiAuthorizationScope,
629
- TApiAuthorizationPolicyBeforeGetListContext,
630
- TApiAuthorizationPolicyBeforeUpdateContext,
631
- } from "@elsikora/nestjs-crud-automator";
632
-
633
- import {
634
- EApiAuthorizationPermissionMatch,
635
- ApiAuthorizationPolicy,
636
- ApiAuthorizationPolicyBase,
637
- } from "@elsikora/nestjs-crud-automator";
658
+ import type { IApiAuthorizationRuleContext, IApiAuthorizationScope, TApiAuthorizationPolicyBeforeGetListContext, TApiAuthorizationPolicyBeforeUpdateContext } from "@elsikora/nestjs-crud-automator";
659
+
660
+ import { EApiAuthorizationPermissionMatch, ApiAuthorizationPolicy, ApiAuthorizationPolicyBase } from "@elsikora/nestjs-crud-automator";
638
661
 
639
662
  @ApiAuthorizationPolicy<UserEntity>({ entity: UserEntity, priority: 200 })
640
663
  export class UserHooksPolicy extends ApiAuthorizationPolicyBase<UserEntity> {
@@ -651,7 +674,9 @@ export class UserHooksPolicy extends ApiAuthorizationPolicyBase<UserEntity> {
651
674
  }
652
675
 
653
676
  public onBeforeGetList(context: TApiAuthorizationPolicyBeforeGetListContext<UserEntity>) {
654
- if (context.query.filters?.operatorId && context.query.filters.operatorId !== this.getOperatorId(context.principal)) {
677
+ const requestedOperatorId = context.query.operatorId as string | undefined;
678
+
679
+ if (requestedOperatorId && requestedOperatorId !== this.getOperatorId(context.principal)) {
655
680
  return [];
656
681
  }
657
682
 
@@ -678,6 +703,15 @@ export class UserHooksPolicy extends ApiAuthorizationPolicyBase<UserEntity> {
678
703
  }
679
704
  ```
680
705
 
706
+ Register hooks policies as Nest providers; discovery only sees provider instances:
707
+
708
+ ```typescript
709
+ @Module({
710
+ providers: [UserHooksPolicy],
711
+ })
712
+ export class UserModule {}
713
+ ```
714
+
681
715
  Generated CRUD routes dispatch to CRUD hooks such as `onBeforeGetList` or `onBeforeUpdate` using the internal `routeType`. Custom `@ApiMethod(...)` routes do not use CRUD hook names; handle them in `getCustomActionRule(action, context)` instead:
682
716
 
683
717
  ```typescript
@@ -719,6 +753,7 @@ IAM mode stays storage-agnostic. Attachments and documents come from your config
719
753
  },
720
754
  entity: ItemEntity,
721
755
  path: "items",
756
+ routes: {},
722
757
  })
723
758
  export class ItemController {
724
759
  constructor(public service: ItemService) {}
@@ -733,7 +768,7 @@ Generated CRUD actions are normalized to IAM-friendly names inside the configure
733
768
  - `update` / `partialUpdate` -> `<policyNamespace>:update`
734
769
  - `delete` -> `<policyNamespace>:delete`
735
770
 
736
- Custom `@ApiMethod(...)` actions pass through unchanged after the namespace. For example, `authorization.action: "update.promote"` becomes `admin:item:update.promote` when `policyNamespace` is `admin:item`.
771
+ Custom `@ApiMethod(...)` actions pass through unchanged after the namespace. For example, `resource.action: "update.promote"` becomes `admin:item:update.promote` when `policyNamespace` is `admin:item`.
737
772
 
738
773
  The runtime resolves a `principal`, dispatches to the selected mode, and stores a unified `authorizationDecision` on the request. Hooks mode traces matched rules and resolved permissions; IAM mode traces attachments, documents, statements, boundaries, and final decision type. For out-of-band checks, inject `ApiAuthorizationSimulator` and call `evaluate(...)` with the same controller authorization metadata you use at runtime.
739
774
 
@@ -744,6 +779,7 @@ Important IAM details from the current implementation:
744
779
  - route filters and authorization scopes are merged with logical `AND`, not overwrite semantics
745
780
  - impossible conflicts collapse to a match-nothing branch instead of rewriting the requested filter
746
781
  - relation payloads can be raw UUID strings, so create/update conditions like `request.body.operator = "${principal.attributes.operatorId}"` work without hooks fallback
782
+ - `{id}` placeholders belong to `resourceDefinition.resourcePath`; policy document `Resource` entries should use concrete strings or wildcards such as `gameport:admin:item/*`
747
783
 
748
784
  ### `CorrelationIDResponseBodyInterceptor`: Request Tracing
749
785
 
@@ -785,7 +821,7 @@ This is the most powerful feature for extending the default behavior. It allows
785
821
 
786
822
  #### Enabling the Subscriber System
787
823
 
788
- To get the subscriber system working, you need to follow **three mandatory steps**:
824
+ To get the subscriber system working, you need to follow **four mandatory steps**:
789
825
 
790
826
  1. **Import `ApiSubscriberModule`**: This module provides the `ApiSubscriberDiscoveryService`, which is responsible for discovering your subscribers. You need to import it into the root module of your application. `app.module.ts`
791
827
 
@@ -807,27 +843,33 @@ To get the subscriber system working, you need to follow **three mandatory steps
807
843
  ```typescript
808
844
  import { ApiController, ApiControllerObservable } from "@elsikora/nestjs-crud-automator";
809
845
 
810
- @Controller("posts")
811
846
  @ApiController({
812
- /* ... */
847
+ entity: PostEntity,
848
+ path: "posts",
849
+ routes: {},
813
850
  })
814
851
  @ApiControllerObservable() // <--- IMPORTANT
815
852
  export class PostController {
816
- /* ... */
853
+ /* ... */
817
854
  }
818
855
  ```
819
856
 
820
- 3. **Make the service "observable"**: Similarly, add the `@ApiServiceObservable()` decorator to the service class. ```typescript import { ApiService, ApiServiceBase, ApiServiceObservable } from "@elsikora/nestjs-crud-automator";
857
+ 3. **Make the service "observable"**: Similarly, add the `@ApiServiceObservable()` decorator to the service class.
858
+
859
+ ```typescript
860
+ import { ApiService, ApiServiceBase, ApiServiceObservable } from "@elsikora/nestjs-crud-automator";
861
+
862
+ @Injectable()
863
+ @ApiService({
864
+ entity: PostEntity,
865
+ })
866
+ @ApiServiceObservable() // <--- IMPORTANT
867
+ export class PostService extends ApiServiceBase<PostEntity> {
868
+ /* ... */
869
+ }
870
+ ```
821
871
 
822
- @Injectable()
823
- @ApiService({
824
- /* ... */
825
- })
826
- @ApiServiceObservable() // <--- IMPORTANT
827
- export class PostService extends ApiServiceBase<Post> {
828
- /* ... */
829
- }
830
- ```
872
+ 4. **Register subscriber classes as Nest providers**: discovery only sees provider instances.
831
873
 
832
874
  Without these steps, your subscriber classes will simply not be discovered and called.
833
875
 
@@ -874,7 +916,7 @@ In case of an error at any stage, execution is interrupted, and the correspondin
874
916
  const createdPost = context.result;
875
917
 
876
918
  // Fully typed access to authentication and request data
877
- const currentUser = context.DATA.authenticationRequest?.user;
919
+ const currentUser = context.DATA.authenticationRequest?.user as { id: string } | undefined;
878
920
  const clientIp = context.DATA.ip;
879
921
 
880
922
  if (createdPost && currentUser) {
@@ -986,43 +1028,51 @@ The library provides advanced filtering capabilities for list endpoints:
986
1028
 
987
1029
  This query would search for users with "john" in their username and created between Jan 1 and Dec 31, 2023.
988
1030
 
1031
+ ## 🛣 Current Status
1032
+
1033
+ The current public package focuses on NestJS REST controllers backed by TypeORM repositories. Core CRUD generation, DTO generation, Swagger/OpenAPI metadata, request/response transformers, relation loading, pagination, filtering/sorting, subscribers, and hooks/IAM authorization are implemented.
1034
+
1035
+ MongoDB, GraphQL, soft deletes, bulk operations, general-purpose cache integration, and custom parameter decorators are not part of the current public contract. Authorization policy rule caching and explicit authorization cache invalidation are supported.
1036
+
989
1037
  ## 🛣 Roadmap
990
1038
 
991
- ## Roadmap
992
-
993
- | Task / Feature | Status |
994
- | ------------------------------------------- | -------------- |
995
- | Core CRUD operations | ✅ Done |
996
- | TypeORM integration | ✅ Done |
997
- | Swagger/OpenAPI documentation | ✅ Done |
998
- | Validation with class-validator | ✅ Done |
999
- | Transformation with class-transformer | ✅ Done |
1000
- | Advanced filtering for GET_LIST operation | ✅ Done |
1001
- | Authentication guard integration | ✅ Done |
1002
- | Request/response transformers | ✅ Done |
1003
- | Relation loading strategies | ✅ Done |
1004
- | Custom validator integration | ✅ Done |
1005
- | Pagination support | ✅ Done |
1006
- | Error handling with standardized responses | ✅ Done |
1007
- | Support for TypeScript decorators | ✅ Done |
1008
- | Support for ESM and CommonJS modules | ✅ Done |
1009
- | Subscriber System | ✅ Done |
1010
- | Hooks and IAM authorization pipeline | ✅ Done |
1011
- | DI-backed authorization bootstrap | ✅ Done |
1012
- | Scope-safe authorization filtering | ✅ Done |
1013
- | MongoDB support | 🚧 In Progress |
1014
- | GraphQL integration | 🚧 In Progress |
1015
- | Support for soft deletes | 🚧 In Progress |
1016
- | Cache integration | 🚧 In Progress |
1017
- | Audit logging middleware | 🚧 In Progress |
1018
- | Bulk operations (create many, update many) | 🚧 In Progress |
1019
- | Query complexity analyzer | 🚧 In Progress |
1020
- | Rate limiting enhancements | 🚧 In Progress |
1021
- | Custom parameter decorators | 🚧 In Progress |
1039
+ The roadmap is aligned with the current source contract rather than older docs-only examples.
1022
1040
 
1023
- ## FAQ
1041
+ ### Available Now
1024
1042
 
1025
- ## Frequently Asked Questions
1043
+ - REST CRUD controller and service generation for TypeORM entities
1044
+ - Entity-driven DTO generation for body, query, parameters, and response contracts
1045
+ - Custom DTO support, including nested manual DTOs and GET_LIST item response DTOs
1046
+ - Swagger/OpenAPI metadata generation for generated and custom routes
1047
+ - Pagination, filtering, sorting, request validators, and request/response transformers
1048
+ - Request and response relation loading with configurable reference projection
1049
+ - Route and function subscribers, including custom route/function hooks and error hooks
1050
+ - Hooks-mode authorization policies and IAM-style policy document authorization
1051
+ - Function transaction scopes for generated and custom service operations
1052
+ - Environment-agnostic AI guidance bundle for AI-assisted development
1053
+
1054
+ ### Current Focus
1055
+
1056
+ - Keep `README.md`, `docs/`, and `ai/` synchronized with the public TypeScript interfaces
1057
+ - Expand examples for `ApiRouteCustom`, `ApiFunctionCustom`, relation loading boundaries, and IAM cache invalidation
1058
+ - Harden documentation around generated `PUT` vs `PATCH`, GET_LIST response modes, subscriber context shapes, and authorization custom actions
1059
+ - Continue improving tests for custom DTOs, route runtime behavior, policy execution, and transaction scopes
1060
+
1061
+ ### Future Candidates
1062
+
1063
+ - Soft-delete route semantics
1064
+ - Bulk create/update/delete operations
1065
+ - File upload recipes for generated and custom controllers
1066
+ - General-purpose cache adapter examples beyond authorization rule caching
1067
+ - GraphQL or MongoDB support after a separate API design pass
1068
+
1069
+ ## 🤖 AI Guidance Bundle
1070
+
1071
+ This repository includes a source-aligned, environment-agnostic AI guidance bundle at `ai/`. The canonical CRUD Automator skill lives at `ai/crud-automator/SKILL.md`, with adapters for Cursor, Claude Code, Codex-style agents, and other agent runners.
1072
+
1073
+ Use `ai/README.md` for installation instructions when a specific tool expects files such as `.cursor/skills`, `AGENTS.md`, or `CLAUDE.md`. The skill covers current route config shape, DTO rules, custom route/function boundaries, subscribers, HOOKS/IAM authorization, relation loading, transactions, and common docs drift pitfalls.
1074
+
1075
+ ## ❓ FAQ
1026
1076
 
1027
1077
  ### How does NestJS-Crud-Automator compare to @nestjsx/crud?
1028
1078
 
@@ -1060,7 +1110,7 @@ Yes, as long as your repository follows the TypeORM Repository pattern, it will
1060
1110
 
1061
1111
  ## 🔒 License
1062
1112
 
1063
- This project is licensed under \*\*MIT License
1113
+ This project is licensed under **MIT License**.
1064
1114
 
1065
1115
  Copyright (c) 2025 ElsiKora
1066
1116
 
@@ -1068,4 +1118,4 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of
1068
1118
 
1069
1119
  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
1070
1120
 
1071
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\*\*.
1121
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.