@elsikora/nestjs-crud-automator 1.9.0-dev.2 → 1.10.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 (411) hide show
  1. package/dist/cjs/class/api/index.d.ts +2 -1
  2. package/dist/cjs/class/api/subscriber/base.class.d.ts +3 -0
  3. package/dist/cjs/class/api/subscriber/base.class.js +7 -0
  4. package/dist/cjs/class/api/subscriber/base.class.js.map +1 -0
  5. package/dist/cjs/class/api/subscriber/discovery-service.class.d.ts +9 -0
  6. package/dist/cjs/class/api/subscriber/discovery-service.class.js +46 -0
  7. package/dist/cjs/class/api/subscriber/discovery-service.class.js.map +1 -0
  8. package/dist/cjs/class/api/subscriber/executor.class.d.ts +10 -0
  9. package/dist/cjs/class/api/subscriber/executor.class.js +52 -0
  10. package/dist/cjs/class/api/subscriber/executor.class.js.map +1 -0
  11. package/dist/cjs/class/api/subscriber/function-base.class.d.ts +5 -0
  12. package/dist/cjs/class/api/subscriber/function-base.class.js +9 -0
  13. package/dist/cjs/class/api/subscriber/function-base.class.js.map +1 -0
  14. package/dist/cjs/class/api/subscriber/index.d.ts +6 -0
  15. package/dist/cjs/class/api/subscriber/registry.class.d.ts +15 -0
  16. package/dist/cjs/class/api/subscriber/registry.class.js +57 -0
  17. package/dist/cjs/class/api/subscriber/registry.class.js.map +1 -0
  18. package/dist/cjs/class/api/subscriber/route-base.class.d.ts +5 -0
  19. package/dist/cjs/class/api/subscriber/route-base.class.js +9 -0
  20. package/dist/cjs/class/api/subscriber/route-base.class.js.map +1 -0
  21. package/dist/cjs/class/metadata-storage.class.js +1 -2
  22. package/dist/cjs/class/metadata-storage.class.js.map +1 -1
  23. package/dist/cjs/class/utility/dto/property/factory/number.class.js +1 -0
  24. package/dist/cjs/class/utility/dto/property/factory/number.class.js.map +1 -1
  25. package/dist/cjs/class/utility/dto/property/factory/relation.class.js +1 -0
  26. package/dist/cjs/class/utility/dto/property/factory/relation.class.js.map +1 -1
  27. package/dist/cjs/class/utility/dto/strategy/body.class.js +1 -0
  28. package/dist/cjs/class/utility/dto/strategy/body.class.js.map +1 -1
  29. package/dist/cjs/class/utility/dto/strategy/query.class.js +1 -0
  30. package/dist/cjs/class/utility/dto/strategy/query.class.js.map +1 -1
  31. package/dist/cjs/class/utility/dto/strategy/request.class.js +1 -0
  32. package/dist/cjs/class/utility/dto/strategy/request.class.js.map +1 -1
  33. package/dist/cjs/class/utility/dto/strategy/response.class.js +1 -0
  34. package/dist/cjs/class/utility/dto/strategy/response.class.js.map +1 -1
  35. package/dist/cjs/constant/decorator/api/controller.constant.d.ts +1 -0
  36. package/dist/cjs/constant/decorator/api/controller.constant.js +2 -0
  37. package/dist/cjs/constant/decorator/api/controller.constant.js.map +1 -1
  38. package/dist/cjs/constant/decorator/api/property-describe.constant.d.ts +1 -1
  39. package/dist/cjs/constant/decorator/api/property-describe.constant.js +2 -2
  40. package/dist/cjs/constant/decorator/api/property-describe.constant.js.map +1 -1
  41. package/dist/cjs/constant/decorator/api/service.constant.d.ts +3 -0
  42. package/dist/cjs/constant/decorator/api/service.constant.js +9 -0
  43. package/dist/cjs/constant/decorator/api/service.constant.js.map +1 -0
  44. package/dist/cjs/constant/decorator/api/subscriber.constant.d.ts +4 -0
  45. package/dist/cjs/constant/decorator/api/subscriber.constant.js +11 -0
  46. package/dist/cjs/constant/decorator/api/subscriber.constant.js.map +1 -0
  47. package/dist/cjs/constant/utility/dto/constant.js +1 -0
  48. package/dist/cjs/constant/utility/dto/constant.js.map +1 -1
  49. package/dist/cjs/constant/validator/has-paired-custom-suffixes-fields.constant.js +0 -1
  50. package/dist/cjs/constant/validator/has-paired-custom-suffixes-fields.constant.js.map +1 -1
  51. package/dist/cjs/decorator/api/controller/index.d.ts +1 -0
  52. package/dist/cjs/decorator/api/controller/observable.decorator.d.ts +4 -0
  53. package/dist/cjs/decorator/api/controller/observable.decorator.js +15 -0
  54. package/dist/cjs/decorator/api/controller/observable.decorator.js.map +1 -0
  55. package/dist/cjs/decorator/api/function/create.decorator.d.ts +2 -2
  56. package/dist/cjs/decorator/api/function/create.decorator.js +45 -8
  57. package/dist/cjs/decorator/api/function/create.decorator.js.map +1 -1
  58. package/dist/cjs/decorator/api/function/decorator.js +1 -1
  59. package/dist/cjs/decorator/api/function/decorator.js.map +1 -1
  60. package/dist/cjs/decorator/api/function/delete.decorator.d.ts +5 -1
  61. package/dist/cjs/decorator/api/function/delete.decorator.js +59 -7
  62. package/dist/cjs/decorator/api/function/delete.decorator.js.map +1 -1
  63. package/dist/cjs/decorator/api/function/get-list.decorator.d.ts +5 -1
  64. package/dist/cjs/decorator/api/function/get-list.decorator.js +56 -10
  65. package/dist/cjs/decorator/api/function/get-list.decorator.js.map +1 -1
  66. package/dist/cjs/decorator/api/function/get-many.decorator.d.ts +5 -1
  67. package/dist/cjs/decorator/api/function/get-many.decorator.js +53 -5
  68. package/dist/cjs/decorator/api/function/get-many.decorator.js.map +1 -1
  69. package/dist/cjs/decorator/api/function/get.decorator.d.ts +5 -1
  70. package/dist/cjs/decorator/api/function/get.decorator.js +53 -5
  71. package/dist/cjs/decorator/api/function/get.decorator.js.map +1 -1
  72. package/dist/cjs/decorator/api/function/update.decorator.d.ts +5 -1
  73. package/dist/cjs/decorator/api/function/update.decorator.js +60 -11
  74. package/dist/cjs/decorator/api/function/update.decorator.js.map +1 -1
  75. package/dist/cjs/decorator/api/index.d.ts +6 -3
  76. package/dist/cjs/decorator/api/method.decorator.js +1 -0
  77. package/dist/cjs/decorator/api/method.decorator.js.map +1 -1
  78. package/dist/cjs/decorator/api/property/boolean.decorator.js +1 -2
  79. package/dist/cjs/decorator/api/property/boolean.decorator.js.map +1 -1
  80. package/dist/cjs/decorator/api/property/copy.decorator.js +1 -1
  81. package/dist/cjs/decorator/api/property/copy.decorator.js.map +1 -1
  82. package/dist/cjs/decorator/api/property/date.decorator.js +1 -2
  83. package/dist/cjs/decorator/api/property/date.decorator.js.map +1 -1
  84. package/dist/cjs/decorator/api/property/describe.decorator.js +1 -1
  85. package/dist/cjs/decorator/api/property/describe.decorator.js.map +1 -1
  86. package/dist/cjs/decorator/api/property/enum.decorator.js +0 -2
  87. package/dist/cjs/decorator/api/property/enum.decorator.js.map +1 -1
  88. package/dist/cjs/decorator/api/property/number.decorator.js +1 -4
  89. package/dist/cjs/decorator/api/property/number.decorator.js.map +1 -1
  90. package/dist/cjs/decorator/api/property/object.decorator.js +0 -4
  91. package/dist/cjs/decorator/api/property/object.decorator.js.map +1 -1
  92. package/dist/cjs/decorator/api/property/string.decorator.js +4 -21
  93. package/dist/cjs/decorator/api/property/string.decorator.js.map +1 -1
  94. package/dist/cjs/decorator/api/property/uuid.decorator.js +1 -2
  95. package/dist/cjs/decorator/api/property/uuid.decorator.js.map +1 -1
  96. package/dist/cjs/decorator/api/service/index.d.ts +1 -0
  97. package/dist/cjs/decorator/api/service/observable.decorator.d.ts +4 -0
  98. package/dist/cjs/decorator/api/service/observable.decorator.js +15 -0
  99. package/dist/cjs/decorator/api/service/observable.decorator.js.map +1 -0
  100. package/dist/cjs/decorator/api/service.decorator.js +3 -37
  101. package/dist/cjs/decorator/api/service.decorator.js.map +1 -1
  102. package/dist/cjs/decorator/api/subscriber/function.decorator.d.ts +9 -0
  103. package/dist/cjs/decorator/api/subscriber/function.decorator.js +18 -0
  104. package/dist/cjs/decorator/api/subscriber/function.decorator.js.map +1 -0
  105. package/dist/cjs/decorator/api/subscriber/index.d.ts +2 -0
  106. package/dist/cjs/decorator/api/subscriber/route.decorator.d.ts +9 -0
  107. package/dist/cjs/decorator/api/subscriber/route.decorator.js +18 -0
  108. package/dist/cjs/decorator/api/subscriber/route.decorator.js.map +1 -0
  109. package/dist/cjs/enum/decorator/api/index.d.ts +5 -4
  110. package/dist/cjs/enum/decorator/api/on-type.enum.d.ts +6 -0
  111. package/dist/cjs/enum/decorator/api/on-type.enum.js +10 -0
  112. package/dist/cjs/enum/decorator/api/on-type.enum.js.map +1 -0
  113. package/dist/cjs/external/@elsikora/cladi/dist/esm/domain/enum/logger-log-level.enum.js +14 -0
  114. package/dist/cjs/external/@elsikora/cladi/dist/esm/domain/enum/logger-log-level.enum.js.map +1 -0
  115. package/dist/cjs/external/@elsikora/cladi/dist/esm/infrastructure/class/base/error.class.js +31 -0
  116. package/dist/cjs/external/@elsikora/cladi/dist/esm/infrastructure/class/base/error.class.js.map +1 -0
  117. package/dist/cjs/external/@elsikora/cladi/dist/esm/infrastructure/class/base/registry.class.js +222 -0
  118. package/dist/cjs/external/@elsikora/cladi/dist/esm/infrastructure/class/base/registry.class.js.map +1 -0
  119. package/dist/cjs/external/@elsikora/cladi/dist/esm/infrastructure/constant/console-logger-default-options.constant.js +11 -0
  120. package/dist/cjs/external/@elsikora/cladi/dist/esm/infrastructure/constant/console-logger-default-options.constant.js.map +1 -0
  121. package/dist/cjs/external/@elsikora/cladi/dist/esm/infrastructure/service/console-logger.service.js +131 -0
  122. package/dist/cjs/external/@elsikora/cladi/dist/esm/infrastructure/service/console-logger.service.js.map +1 -0
  123. package/dist/cjs/external/@elsikora/cladi/dist/esm/presentation/utility/create/registry.utility.js +19 -0
  124. package/dist/cjs/external/@elsikora/cladi/dist/esm/presentation/utility/create/registry.utility.js.map +1 -0
  125. package/dist/cjs/factory/api/controller.factory.d.ts +2 -1
  126. package/dist/cjs/factory/api/controller.factory.js +299 -105
  127. package/dist/cjs/factory/api/controller.factory.js.map +1 -1
  128. package/dist/cjs/index.d.ts +1 -0
  129. package/dist/cjs/index.js +33 -0
  130. package/dist/cjs/index.js.map +1 -1
  131. package/dist/cjs/interface/class/api/subscriber/execution-context.interface.d.ts +15 -0
  132. package/dist/cjs/interface/class/api/subscriber/function-execution-context.interface.d.ts +6 -0
  133. package/dist/cjs/interface/class/api/subscriber/function.interface.d.ts +31 -0
  134. package/dist/cjs/interface/class/api/subscriber/interface.d.ts +2 -0
  135. package/dist/cjs/interface/class/api/subscriber/route-execution-context.interface.d.ts +6 -0
  136. package/dist/cjs/interface/class/api/subscriber/route.interface.d.ts +39 -0
  137. package/dist/cjs/interface/decorator/api/function/create-executor-properties.interface.d.ts +2 -1
  138. package/dist/cjs/interface/decorator/api/function/delete-executor-properties.interface.d.ts +5 -4
  139. package/dist/cjs/interface/decorator/api/function/get-executor-properties.interface.d.ts +2 -1
  140. package/dist/cjs/interface/decorator/api/function/get-list-executor-properties.interface.d.ts +2 -1
  141. package/dist/cjs/interface/decorator/api/function/get-many-executor-properties.interface.d.ts +2 -1
  142. package/dist/cjs/interface/decorator/api/function/properties.interface.d.ts +2 -2
  143. package/dist/cjs/interface/decorator/api/function/update-executor-properties.interface.d.ts +5 -4
  144. package/dist/cjs/interface/decorator/api/index.d.ts +6 -5
  145. package/dist/cjs/interface/decorator/api/subscriber/function-properties.interface.d.ts +5 -0
  146. package/dist/cjs/interface/decorator/api/subscriber/index.d.ts +2 -0
  147. package/dist/cjs/interface/decorator/api/subscriber/route-properties.interface.d.ts +5 -0
  148. package/dist/cjs/module/api-subscriber.module.d.ts +2 -0
  149. package/dist/cjs/module/api-subscriber.module.js +17 -0
  150. package/dist/cjs/module/api-subscriber.module.js.map +1 -0
  151. package/dist/cjs/module/index.d.ts +1 -0
  152. package/dist/cjs/package.json +1 -0
  153. package/dist/cjs/utility/api/controller/apply-decorators.utility.js +1 -0
  154. package/dist/cjs/utility/api/controller/apply-decorators.utility.js.map +1 -1
  155. package/dist/cjs/utility/api/controller/apply-metadata.utility.js +1 -0
  156. package/dist/cjs/utility/api/controller/apply-metadata.utility.js.map +1 -1
  157. package/dist/cjs/utility/api/controller/get-list/transform-filter.utility.js +1 -0
  158. package/dist/cjs/utility/api/controller/get-list/transform-filter.utility.js.map +1 -1
  159. package/dist/cjs/utility/api/controller/get-list/transform-operation.utility.d.ts +5 -0
  160. package/dist/cjs/utility/api/controller/get-list/transform-operation.utility.js +5 -1
  161. package/dist/cjs/utility/api/controller/get-list/transform-operation.utility.js.map +1 -1
  162. package/dist/cjs/utility/api/controller/handle-request-relations.utility.js +4 -0
  163. package/dist/cjs/utility/api/controller/handle-request-relations.utility.js.map +1 -1
  164. package/dist/cjs/utility/api/controller/transform-data.utility.js +1 -0
  165. package/dist/cjs/utility/api/controller/transform-data.utility.js.map +1 -1
  166. package/dist/cjs/utility/api/controller/write-dto-swagger.utility.js +2 -4
  167. package/dist/cjs/utility/api/controller/write-dto-swagger.utility.js.map +1 -1
  168. package/dist/cjs/utility/api/filter-order-by-from-entity.utility.js +1 -1
  169. package/dist/cjs/utility/api/filter-order-by-from-entity.utility.js.map +1 -1
  170. package/dist/cjs/utility/dto/build-decorator.utility.js +1 -0
  171. package/dist/cjs/utility/dto/build-decorator.utility.js.map +1 -1
  172. package/dist/cjs/utility/dto/generate-dynamic.utility.js +1 -3
  173. package/dist/cjs/utility/dto/generate-dynamic.utility.js.map +1 -1
  174. package/dist/cjs/utility/dto/generate-exception.utility.js +1 -0
  175. package/dist/cjs/utility/dto/generate-exception.utility.js.map +1 -1
  176. package/dist/cjs/utility/dto/generate-filter-decorator.utility.js +1 -0
  177. package/dist/cjs/utility/dto/generate-filter-decorator.utility.js.map +1 -1
  178. package/dist/cjs/utility/dto/generate-get-list-response.utility.js +1 -0
  179. package/dist/cjs/utility/dto/generate-get-list-response.utility.js.map +1 -1
  180. package/dist/cjs/utility/dto/generate.utility.js +4 -18
  181. package/dist/cjs/utility/dto/generate.utility.js.map +1 -1
  182. package/dist/cjs/utility/dto/get-get-list-query-base-class.utility.js +1 -0
  183. package/dist/cjs/utility/dto/get-get-list-query-base-class.utility.js.map +1 -1
  184. package/dist/cjs/utility/dto/handle-date-property.utility.js +1 -0
  185. package/dist/cjs/utility/dto/handle-date-property.utility.js.map +1 -1
  186. package/dist/cjs/utility/dto/is-property-should-be-marked.utility.js +1 -0
  187. package/dist/cjs/utility/dto/is-property-should-be-marked.utility.js.map +1 -1
  188. package/dist/cjs/utility/dto/is-should-be-generated.utility.js +1 -0
  189. package/dist/cjs/utility/dto/is-should-be-generated.utility.js.map +1 -1
  190. package/dist/cjs/utility/logger.utility.js +3 -2
  191. package/dist/cjs/utility/logger.utility.js.map +1 -1
  192. package/dist/cjs/validator/all-or-none-of-listed-properties.validator.js +0 -1
  193. package/dist/cjs/validator/all-or-none-of-listed-properties.validator.js.map +1 -1
  194. package/dist/cjs/validator/has-at-least-one-and-only-one-of-listed-properties.validator.js +0 -1
  195. package/dist/cjs/validator/has-at-least-one-and-only-one-of-listed-properties.validator.js.map +1 -1
  196. package/dist/cjs/validator/has-at-least-one-of-listed-properties.validator.js +0 -1
  197. package/dist/cjs/validator/has-at-least-one-of-listed-properties.validator.js.map +1 -1
  198. package/dist/cjs/validator/has-at-least-one-property.validator.js +0 -1
  199. package/dist/cjs/validator/has-at-least-one-property.validator.js.map +1 -1
  200. package/dist/cjs/validator/has-paired-custom-suffixes-fields.validator.js +0 -1
  201. package/dist/cjs/validator/has-paired-custom-suffixes-fields.validator.js.map +1 -1
  202. package/dist/cjs/validator/must-match-one-of-schemas.validator.js +0 -1
  203. package/dist/cjs/validator/must-match-one-of-schemas.validator.js.map +1 -1
  204. package/dist/cjs/validator/only-one-of-listed-properties.validator.js +0 -1
  205. package/dist/cjs/validator/only-one-of-listed-properties.validator.js.map +1 -1
  206. package/dist/esm/class/api/index.d.ts +2 -1
  207. package/dist/esm/class/api/subscriber/base.class.d.ts +3 -0
  208. package/dist/esm/class/api/subscriber/base.class.js +5 -0
  209. package/dist/esm/class/api/subscriber/base.class.js.map +1 -0
  210. package/dist/esm/class/api/subscriber/discovery-service.class.d.ts +9 -0
  211. package/dist/esm/class/api/subscriber/discovery-service.class.js +46 -0
  212. package/dist/esm/class/api/subscriber/discovery-service.class.js.map +1 -0
  213. package/dist/esm/class/api/subscriber/executor.class.d.ts +10 -0
  214. package/dist/esm/class/api/subscriber/executor.class.js +50 -0
  215. package/dist/esm/class/api/subscriber/executor.class.js.map +1 -0
  216. package/dist/esm/class/api/subscriber/function-base.class.d.ts +5 -0
  217. package/dist/esm/class/api/subscriber/function-base.class.js +7 -0
  218. package/dist/esm/class/api/subscriber/function-base.class.js.map +1 -0
  219. package/dist/esm/class/api/subscriber/index.d.ts +6 -0
  220. package/dist/esm/class/api/subscriber/registry.class.d.ts +15 -0
  221. package/dist/esm/class/api/subscriber/registry.class.js +55 -0
  222. package/dist/esm/class/api/subscriber/registry.class.js.map +1 -0
  223. package/dist/esm/class/api/subscriber/route-base.class.d.ts +5 -0
  224. package/dist/esm/class/api/subscriber/route-base.class.js +7 -0
  225. package/dist/esm/class/api/subscriber/route-base.class.js.map +1 -0
  226. package/dist/esm/class/metadata-storage.class.js +1 -2
  227. package/dist/esm/class/metadata-storage.class.js.map +1 -1
  228. package/dist/esm/class/utility/dto/property/factory/number.class.js +1 -0
  229. package/dist/esm/class/utility/dto/property/factory/number.class.js.map +1 -1
  230. package/dist/esm/class/utility/dto/property/factory/relation.class.js +1 -0
  231. package/dist/esm/class/utility/dto/property/factory/relation.class.js.map +1 -1
  232. package/dist/esm/class/utility/dto/strategy/body.class.js +1 -0
  233. package/dist/esm/class/utility/dto/strategy/body.class.js.map +1 -1
  234. package/dist/esm/class/utility/dto/strategy/query.class.js +1 -0
  235. package/dist/esm/class/utility/dto/strategy/query.class.js.map +1 -1
  236. package/dist/esm/class/utility/dto/strategy/request.class.js +1 -0
  237. package/dist/esm/class/utility/dto/strategy/request.class.js.map +1 -1
  238. package/dist/esm/class/utility/dto/strategy/response.class.js +1 -0
  239. package/dist/esm/class/utility/dto/strategy/response.class.js.map +1 -1
  240. package/dist/esm/constant/decorator/api/controller.constant.d.ts +1 -0
  241. package/dist/esm/constant/decorator/api/controller.constant.js +2 -0
  242. package/dist/esm/constant/decorator/api/controller.constant.js.map +1 -1
  243. package/dist/esm/constant/decorator/api/property-describe.constant.d.ts +1 -1
  244. package/dist/esm/constant/decorator/api/property-describe.constant.js +2 -2
  245. package/dist/esm/constant/decorator/api/property-describe.constant.js.map +1 -1
  246. package/dist/esm/constant/decorator/api/service.constant.d.ts +3 -0
  247. package/dist/esm/constant/decorator/api/service.constant.js +7 -0
  248. package/dist/esm/constant/decorator/api/service.constant.js.map +1 -0
  249. package/dist/esm/constant/decorator/api/subscriber.constant.d.ts +4 -0
  250. package/dist/esm/constant/decorator/api/subscriber.constant.js +9 -0
  251. package/dist/esm/constant/decorator/api/subscriber.constant.js.map +1 -0
  252. package/dist/esm/constant/utility/dto/constant.js +1 -0
  253. package/dist/esm/constant/utility/dto/constant.js.map +1 -1
  254. package/dist/esm/constant/validator/has-paired-custom-suffixes-fields.constant.js +0 -1
  255. package/dist/esm/constant/validator/has-paired-custom-suffixes-fields.constant.js.map +1 -1
  256. package/dist/esm/decorator/api/controller/index.d.ts +1 -0
  257. package/dist/esm/decorator/api/controller/observable.decorator.d.ts +4 -0
  258. package/dist/esm/decorator/api/controller/observable.decorator.js +13 -0
  259. package/dist/esm/decorator/api/controller/observable.decorator.js.map +1 -0
  260. package/dist/esm/decorator/api/function/create.decorator.d.ts +2 -2
  261. package/dist/esm/decorator/api/function/create.decorator.js +45 -8
  262. package/dist/esm/decorator/api/function/create.decorator.js.map +1 -1
  263. package/dist/esm/decorator/api/function/decorator.js +1 -1
  264. package/dist/esm/decorator/api/function/decorator.js.map +1 -1
  265. package/dist/esm/decorator/api/function/delete.decorator.d.ts +5 -1
  266. package/dist/esm/decorator/api/function/delete.decorator.js +59 -7
  267. package/dist/esm/decorator/api/function/delete.decorator.js.map +1 -1
  268. package/dist/esm/decorator/api/function/get-list.decorator.d.ts +5 -1
  269. package/dist/esm/decorator/api/function/get-list.decorator.js +56 -10
  270. package/dist/esm/decorator/api/function/get-list.decorator.js.map +1 -1
  271. package/dist/esm/decorator/api/function/get-many.decorator.d.ts +5 -1
  272. package/dist/esm/decorator/api/function/get-many.decorator.js +53 -5
  273. package/dist/esm/decorator/api/function/get-many.decorator.js.map +1 -1
  274. package/dist/esm/decorator/api/function/get.decorator.d.ts +5 -1
  275. package/dist/esm/decorator/api/function/get.decorator.js +53 -5
  276. package/dist/esm/decorator/api/function/get.decorator.js.map +1 -1
  277. package/dist/esm/decorator/api/function/update.decorator.d.ts +5 -1
  278. package/dist/esm/decorator/api/function/update.decorator.js +60 -11
  279. package/dist/esm/decorator/api/function/update.decorator.js.map +1 -1
  280. package/dist/esm/decorator/api/index.d.ts +6 -3
  281. package/dist/esm/decorator/api/method.decorator.js +1 -0
  282. package/dist/esm/decorator/api/method.decorator.js.map +1 -1
  283. package/dist/esm/decorator/api/property/boolean.decorator.js +1 -2
  284. package/dist/esm/decorator/api/property/boolean.decorator.js.map +1 -1
  285. package/dist/esm/decorator/api/property/copy.decorator.js +1 -1
  286. package/dist/esm/decorator/api/property/copy.decorator.js.map +1 -1
  287. package/dist/esm/decorator/api/property/date.decorator.js +1 -2
  288. package/dist/esm/decorator/api/property/date.decorator.js.map +1 -1
  289. package/dist/esm/decorator/api/property/describe.decorator.js +1 -1
  290. package/dist/esm/decorator/api/property/describe.decorator.js.map +1 -1
  291. package/dist/esm/decorator/api/property/enum.decorator.js +0 -2
  292. package/dist/esm/decorator/api/property/enum.decorator.js.map +1 -1
  293. package/dist/esm/decorator/api/property/number.decorator.js +1 -4
  294. package/dist/esm/decorator/api/property/number.decorator.js.map +1 -1
  295. package/dist/esm/decorator/api/property/object.decorator.js +0 -4
  296. package/dist/esm/decorator/api/property/object.decorator.js.map +1 -1
  297. package/dist/esm/decorator/api/property/string.decorator.js +4 -21
  298. package/dist/esm/decorator/api/property/string.decorator.js.map +1 -1
  299. package/dist/esm/decorator/api/property/uuid.decorator.js +1 -2
  300. package/dist/esm/decorator/api/property/uuid.decorator.js.map +1 -1
  301. package/dist/esm/decorator/api/service/index.d.ts +1 -0
  302. package/dist/esm/decorator/api/service/observable.decorator.d.ts +4 -0
  303. package/dist/esm/decorator/api/service/observable.decorator.js +13 -0
  304. package/dist/esm/decorator/api/service/observable.decorator.js.map +1 -0
  305. package/dist/esm/decorator/api/service.decorator.js +3 -37
  306. package/dist/esm/decorator/api/service.decorator.js.map +1 -1
  307. package/dist/esm/decorator/api/subscriber/function.decorator.d.ts +9 -0
  308. package/dist/esm/decorator/api/subscriber/function.decorator.js +16 -0
  309. package/dist/esm/decorator/api/subscriber/function.decorator.js.map +1 -0
  310. package/dist/esm/decorator/api/subscriber/index.d.ts +2 -0
  311. package/dist/esm/decorator/api/subscriber/route.decorator.d.ts +9 -0
  312. package/dist/esm/decorator/api/subscriber/route.decorator.js +16 -0
  313. package/dist/esm/decorator/api/subscriber/route.decorator.js.map +1 -0
  314. package/dist/esm/enum/decorator/api/index.d.ts +5 -4
  315. package/dist/esm/enum/decorator/api/on-type.enum.d.ts +6 -0
  316. package/dist/esm/enum/decorator/api/on-type.enum.js +10 -0
  317. package/dist/esm/enum/decorator/api/on-type.enum.js.map +1 -0
  318. package/dist/esm/external/@elsikora/cladi/dist/esm/domain/enum/logger-log-level.enum.js +14 -0
  319. package/dist/esm/external/@elsikora/cladi/dist/esm/domain/enum/logger-log-level.enum.js.map +1 -0
  320. package/dist/esm/external/@elsikora/cladi/dist/esm/infrastructure/class/base/error.class.js +29 -0
  321. package/dist/esm/external/@elsikora/cladi/dist/esm/infrastructure/class/base/error.class.js.map +1 -0
  322. package/dist/esm/external/@elsikora/cladi/dist/esm/infrastructure/class/base/registry.class.js +220 -0
  323. package/dist/esm/external/@elsikora/cladi/dist/esm/infrastructure/class/base/registry.class.js.map +1 -0
  324. package/dist/esm/external/@elsikora/cladi/dist/esm/infrastructure/constant/console-logger-default-options.constant.js +9 -0
  325. package/dist/esm/external/@elsikora/cladi/dist/esm/infrastructure/constant/console-logger-default-options.constant.js.map +1 -0
  326. package/dist/esm/external/@elsikora/cladi/dist/esm/infrastructure/service/console-logger.service.js +129 -0
  327. package/dist/esm/external/@elsikora/cladi/dist/esm/infrastructure/service/console-logger.service.js.map +1 -0
  328. package/dist/esm/external/@elsikora/cladi/dist/esm/presentation/utility/create/registry.utility.js +17 -0
  329. package/dist/esm/external/@elsikora/cladi/dist/esm/presentation/utility/create/registry.utility.js.map +1 -0
  330. package/dist/esm/factory/api/controller.factory.d.ts +2 -1
  331. package/dist/esm/factory/api/controller.factory.js +299 -105
  332. package/dist/esm/factory/api/controller.factory.js.map +1 -1
  333. package/dist/esm/index.d.ts +1 -0
  334. package/dist/esm/index.js +12 -0
  335. package/dist/esm/index.js.map +1 -1
  336. package/dist/esm/interface/class/api/subscriber/execution-context.interface.d.ts +15 -0
  337. package/dist/esm/interface/class/api/subscriber/function-execution-context.interface.d.ts +6 -0
  338. package/dist/esm/interface/class/api/subscriber/function.interface.d.ts +31 -0
  339. package/dist/esm/interface/class/api/subscriber/interface.d.ts +2 -0
  340. package/dist/esm/interface/class/api/subscriber/route-execution-context.interface.d.ts +6 -0
  341. package/dist/esm/interface/class/api/subscriber/route.interface.d.ts +39 -0
  342. package/dist/esm/interface/decorator/api/function/create-executor-properties.interface.d.ts +2 -1
  343. package/dist/esm/interface/decorator/api/function/delete-executor-properties.interface.d.ts +5 -4
  344. package/dist/esm/interface/decorator/api/function/get-executor-properties.interface.d.ts +2 -1
  345. package/dist/esm/interface/decorator/api/function/get-list-executor-properties.interface.d.ts +2 -1
  346. package/dist/esm/interface/decorator/api/function/get-many-executor-properties.interface.d.ts +2 -1
  347. package/dist/esm/interface/decorator/api/function/properties.interface.d.ts +2 -2
  348. package/dist/esm/interface/decorator/api/function/update-executor-properties.interface.d.ts +5 -4
  349. package/dist/esm/interface/decorator/api/index.d.ts +6 -5
  350. package/dist/esm/interface/decorator/api/subscriber/function-properties.interface.d.ts +5 -0
  351. package/dist/esm/interface/decorator/api/subscriber/index.d.ts +2 -0
  352. package/dist/esm/interface/decorator/api/subscriber/route-properties.interface.d.ts +5 -0
  353. package/dist/esm/module/api-subscriber.module.d.ts +2 -0
  354. package/dist/esm/module/api-subscriber.module.js +17 -0
  355. package/dist/esm/module/api-subscriber.module.js.map +1 -0
  356. package/dist/esm/module/index.d.ts +1 -0
  357. package/dist/esm/package.json +1 -0
  358. package/dist/esm/utility/api/controller/apply-decorators.utility.js +1 -0
  359. package/dist/esm/utility/api/controller/apply-decorators.utility.js.map +1 -1
  360. package/dist/esm/utility/api/controller/apply-metadata.utility.js +1 -0
  361. package/dist/esm/utility/api/controller/apply-metadata.utility.js.map +1 -1
  362. package/dist/esm/utility/api/controller/get-list/transform-filter.utility.js +1 -0
  363. package/dist/esm/utility/api/controller/get-list/transform-filter.utility.js.map +1 -1
  364. package/dist/esm/utility/api/controller/get-list/transform-operation.utility.d.ts +5 -0
  365. package/dist/esm/utility/api/controller/get-list/transform-operation.utility.js +5 -1
  366. package/dist/esm/utility/api/controller/get-list/transform-operation.utility.js.map +1 -1
  367. package/dist/esm/utility/api/controller/handle-request-relations.utility.js +4 -0
  368. package/dist/esm/utility/api/controller/handle-request-relations.utility.js.map +1 -1
  369. package/dist/esm/utility/api/controller/transform-data.utility.js +1 -0
  370. package/dist/esm/utility/api/controller/transform-data.utility.js.map +1 -1
  371. package/dist/esm/utility/api/controller/write-dto-swagger.utility.js +2 -4
  372. package/dist/esm/utility/api/controller/write-dto-swagger.utility.js.map +1 -1
  373. package/dist/esm/utility/api/filter-order-by-from-entity.utility.js +1 -1
  374. package/dist/esm/utility/api/filter-order-by-from-entity.utility.js.map +1 -1
  375. package/dist/esm/utility/dto/build-decorator.utility.js +1 -0
  376. package/dist/esm/utility/dto/build-decorator.utility.js.map +1 -1
  377. package/dist/esm/utility/dto/generate-dynamic.utility.js +1 -3
  378. package/dist/esm/utility/dto/generate-dynamic.utility.js.map +1 -1
  379. package/dist/esm/utility/dto/generate-exception.utility.js +1 -0
  380. package/dist/esm/utility/dto/generate-exception.utility.js.map +1 -1
  381. package/dist/esm/utility/dto/generate-filter-decorator.utility.js +1 -0
  382. package/dist/esm/utility/dto/generate-filter-decorator.utility.js.map +1 -1
  383. package/dist/esm/utility/dto/generate-get-list-response.utility.js +1 -0
  384. package/dist/esm/utility/dto/generate-get-list-response.utility.js.map +1 -1
  385. package/dist/esm/utility/dto/generate.utility.js +4 -18
  386. package/dist/esm/utility/dto/generate.utility.js.map +1 -1
  387. package/dist/esm/utility/dto/get-get-list-query-base-class.utility.js +1 -0
  388. package/dist/esm/utility/dto/get-get-list-query-base-class.utility.js.map +1 -1
  389. package/dist/esm/utility/dto/handle-date-property.utility.js +1 -0
  390. package/dist/esm/utility/dto/handle-date-property.utility.js.map +1 -1
  391. package/dist/esm/utility/dto/is-property-should-be-marked.utility.js +1 -0
  392. package/dist/esm/utility/dto/is-property-should-be-marked.utility.js.map +1 -1
  393. package/dist/esm/utility/dto/is-should-be-generated.utility.js +1 -0
  394. package/dist/esm/utility/dto/is-should-be-generated.utility.js.map +1 -1
  395. package/dist/esm/utility/logger.utility.js +3 -2
  396. package/dist/esm/utility/logger.utility.js.map +1 -1
  397. package/dist/esm/validator/all-or-none-of-listed-properties.validator.js +0 -1
  398. package/dist/esm/validator/all-or-none-of-listed-properties.validator.js.map +1 -1
  399. package/dist/esm/validator/has-at-least-one-and-only-one-of-listed-properties.validator.js +0 -1
  400. package/dist/esm/validator/has-at-least-one-and-only-one-of-listed-properties.validator.js.map +1 -1
  401. package/dist/esm/validator/has-at-least-one-of-listed-properties.validator.js +0 -1
  402. package/dist/esm/validator/has-at-least-one-of-listed-properties.validator.js.map +1 -1
  403. package/dist/esm/validator/has-at-least-one-property.validator.js +0 -1
  404. package/dist/esm/validator/has-at-least-one-property.validator.js.map +1 -1
  405. package/dist/esm/validator/has-paired-custom-suffixes-fields.validator.js +0 -1
  406. package/dist/esm/validator/has-paired-custom-suffixes-fields.validator.js.map +1 -1
  407. package/dist/esm/validator/must-match-one-of-schemas.validator.js +0 -1
  408. package/dist/esm/validator/must-match-one-of-schemas.validator.js.map +1 -1
  409. package/dist/esm/validator/only-one-of-listed-properties.validator.js +0 -1
  410. package/dist/esm/validator/only-one-of-listed-properties.validator.js.map +1 -1
  411. package/package.json +21 -18
@@ -1,3 +1,6 @@
1
+ import { ApiSubscriberExecutor } from '../../../class/api/subscriber/executor.class.js';
2
+ import { EApiFunctionType } from '../../../enum/decorator/api/function/type.enum.js';
3
+ import { EApiSubscriberOnType } from '../../../enum/decorator/api/on-type.enum.js';
1
4
  import { EErrorStringAction } from '../../../enum/utility/error-string/action.enum.js';
2
5
  import '../../../enum/utility/error-string/composite-action.enum.js';
3
6
  import { HttpException, InternalServerErrorException } from '@nestjs/common';
@@ -7,19 +10,30 @@ import { LoggerUtility } from '../../../utility/logger.utility.js';
7
10
 
8
11
  /**
9
12
  * Creates a decorator that adds entity creation functionality to a service method
10
- * @param {IApiFunctionProperties} properties - Configuration properties for the create function
13
+ * @param {IApiFunctionProperties<E>} properties - Configuration properties for the create function
11
14
  * @returns {(target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor} A decorator function that modifies the target method to handle entity creation
12
15
  */
13
- // eslint-disable-next-line @elsikora/typescript/no-unnecessary-type-parameters
14
16
  function ApiFunctionCreate(properties) {
15
17
  const { entity } = properties;
16
- return function (target, propertyKey, descriptor) {
17
- descriptor.value = async function (properties, eventManager) {
18
+ return function (_target, _propertyKey, descriptor) {
19
+ descriptor.value = async function (createProperties, eventManager) {
20
+ const entityInstance = new entity();
21
+ const executionContext = {
22
+ data: { eventManager, repository: this.repository },
23
+ entity: entityInstance,
24
+ functionType: EApiFunctionType.CREATE,
25
+ result: createProperties,
26
+ };
27
+ const result = await ApiSubscriberExecutor.executeFunctionSubscribers(this.constructor, entityInstance, EApiFunctionType.CREATE, EApiSubscriberOnType.BEFORE, executionContext);
28
+ if (result) {
29
+ executionContext.result = result;
30
+ }
18
31
  const repository = this.repository;
19
32
  if (!repository) {
33
+ await ApiSubscriberExecutor.executeFunctionSubscribers(this.constructor, entityInstance, EApiFunctionType.CREATE, EApiSubscriberOnType.BEFORE_ERROR, executionContext, new Error("Repository is not available in this context"));
20
34
  throw ErrorException("Repository is not available in this context");
21
35
  }
22
- return executor({ entity, eventManager, properties, repository });
36
+ return executor({ constructor: this.constructor, entity, eventManager, properties: executionContext.result, repository });
23
37
  };
24
38
  return descriptor;
25
39
  };
@@ -31,19 +45,42 @@ function ApiFunctionCreate(properties) {
31
45
  * @throws {InternalServerErrorException} If the creation operation fails
32
46
  */
33
47
  async function executor(options) {
34
- const { entity, eventManager, properties, repository } = options;
48
+ const { constructor, entity, eventManager, properties, repository } = options;
35
49
  try {
50
+ let result;
36
51
  if (eventManager) {
37
52
  const eventRepository = eventManager.getRepository(entity);
38
- return await eventRepository.save(properties);
53
+ result = await eventRepository.save(properties);
54
+ }
55
+ else {
56
+ result = await repository.save(properties);
39
57
  }
40
- return await repository.save(properties);
58
+ const entityInstance = new entity();
59
+ const executionContext = {
60
+ data: { eventManager, repository },
61
+ entity: entityInstance,
62
+ functionType: EApiFunctionType.CREATE,
63
+ result: result,
64
+ };
65
+ const afterResult = await ApiSubscriberExecutor.executeFunctionSubscribers(constructor, entityInstance, EApiFunctionType.CREATE, EApiSubscriberOnType.AFTER, executionContext);
66
+ if (afterResult) {
67
+ return afterResult;
68
+ }
69
+ return result;
41
70
  }
42
71
  catch (error) {
72
+ const entityInstance = new entity();
73
+ const executionContext = {
74
+ data: { eventManager, properties, repository },
75
+ entity: entityInstance,
76
+ functionType: EApiFunctionType.CREATE,
77
+ };
43
78
  if (error instanceof HttpException) {
79
+ await ApiSubscriberExecutor.executeFunctionSubscribers(constructor, entityInstance, EApiFunctionType.CREATE, EApiSubscriberOnType.AFTER_ERROR, executionContext, error);
44
80
  throw error;
45
81
  }
46
82
  LoggerUtility.getLogger("ApiFunctionCreate").verbose(`Error creating entity ${String(entity.name)}:`, error);
83
+ await ApiSubscriberExecutor.executeFunctionSubscribers(constructor, entityInstance, EApiFunctionType.CREATE, EApiSubscriberOnType.AFTER_ERROR, executionContext, error);
47
84
  throw new InternalServerErrorException(ErrorString({
48
85
  entity: entity,
49
86
  type: EErrorStringAction.CREATING_ERROR,
@@ -1 +1 @@
1
- {"version":3,"file":"create.decorator.js","sources":["../../../../../../src/decorator/api/function/create.decorator.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAWA;;;;AAIG;AACH;AACM,SAAU,iBAAiB,CAA2B,UAAkC,EAAA;AAC7F,IAAA,MAAM,EAAE,MAAM,EAAE,GAA2B,UAAU;AAErD,IAAA,OAAO,UAAU,MAAe,EAAE,WAAmB,EAAE,UAA8B,EAAA;AAMpF,QAAA,UAAU,CAAC,KAAK,GAAG,gBAIlB,UAA2C,EAC3C,YAA4B,EAAA;AAE5B,YAAA,MAAM,UAAU,GAAkB,IAAI,CAAC,UAAU;YAEjD,IAAI,CAAC,UAAU,EAAE;AAChB,gBAAA,MAAM,cAAc,CAAC,6CAA6C,CAAC;;AAGpE,YAAA,OAAO,QAAQ,CAAI,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AACrE,SAAC;AAED,QAAA,OAAO,UAAU;AAClB,KAAC;AACF;AAEA;;;;;AAKG;AACH,eAAe,QAAQ,CAA2B,OAAgD,EAAA;IACjG,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,GAA4C,OAAO;AAEzG,IAAA,IAAI;QACH,IAAI,YAAY,EAAE;YACjB,MAAM,eAAe,GAAkB,YAAY,CAAC,aAAa,CAAI,MAAsB,CAAC;AAE5F,YAAA,OAAO,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;;AAG9C,QAAA,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;;IACvC,OAAO,KAAK,EAAE;AACf,QAAA,IAAI,KAAK,YAAY,aAAa,EAAE;AACnC,YAAA,MAAM,KAAK;;AAGZ,QAAA,aAAa,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAA,sBAAA,EAAyB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;AAE5G,QAAA,MAAM,IAAI,4BAA4B,CACrC,WAAW,CAAC;AACX,YAAA,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,kBAAkB,CAAC,cAAc;AACvC,SAAA,CAAC,CACF;;AAEH;;;;"}
1
+ {"version":3,"file":"create.decorator.js","sources":["../../../../../../src/decorator/api/function/create.decorator.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import '../../../enum/decorator/api/controller/load-relations-strategy.enum.js';
4
4
  import '../../../enum/decorator/api/controller/request-transformer-type.enum.js';
5
5
  import '../../../enum/decorator/api/dto-type.enum.js';
6
6
  import { EApiFunctionType } from '../../../enum/decorator/api/function/type.enum.js';
7
+ import '../../../enum/decorator/api/on-type.enum.js';
7
8
  import '../../../enum/decorator/api/property/data-type.enum.js';
8
9
  import '../../../enum/decorator/api/property/date/identifier.enum.js';
9
10
  import '../../../enum/decorator/api/property/date/type.enum.js';
@@ -31,7 +32,6 @@ function ApiFunction(properties) {
31
32
  const { entity, type } = properties;
32
33
  return function (_target, propertyKey, descriptor) {
33
34
  const originalMethod = descriptor.value;
34
- // eslint-disable-next-line @elsikora/typescript/naming-convention
35
35
  descriptor.value = function (...arguments_) {
36
36
  let decoratorFunction;
37
37
  switch (type) {
@@ -1 +1 @@
1
- {"version":3,"file":"decorator.js","sources":["../../../../../../src/decorator/api/function/decorator.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAgBA;;;;;;AAMG;AACH;AACM,SAAU,WAAW,CAA8B,UAAqC,EAAA;AAC7F,IAAA,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAA8B,UAAU;AAE9D,IAAA,OAAO,UAAU,OAAgB,EAAE,WAAmB,EAAE,UAA8B,EAAA;AACrF,QAAA,MAAM,cAAc,GAAY,UAAU,CAAC,KAAK;;AAGhD,QAAA,UAAU,CAAC,KAAK,GAAG,UAA+C,GAAG,UAAsB,EAAA;AAC1F,YAAA,IAAI,iBAAqC;YAEzC,QAAQ,IAAI;AACX,gBAAA,KAAK,gBAAgB,CAAC,MAAM,EAAE;AAC7B,oBAAA,iBAAiB,GAAG,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;oBAEjD;;AAGD,gBAAA,KAAK,gBAAgB,CAAC,MAAM,EAAE;AAC7B,oBAAA,iBAAiB,GAAG,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;oBAEjD;;AAGD,gBAAA,KAAK,gBAAgB,CAAC,GAAG,EAAE;AAC1B,oBAAA,iBAAiB,GAAG,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;oBAE9C;;AAGD,gBAAA,KAAK,gBAAgB,CAAC,QAAQ,EAAE;AAC/B,oBAAA,iBAAiB,GAAG,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;oBAElD;;AAGD,gBAAA,KAAK,gBAAgB,CAAC,QAAQ,EAAE;AAC/B,oBAAA,iBAAiB,GAAG,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;oBAElD;;AAGD,gBAAA,KAAK,gBAAgB,CAAC,MAAM,EAAE;AAC7B,oBAAA,iBAAiB,GAAG,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;oBAEjD;;gBAGD,SAAS;AACR,oBAAA,MAAM,cAAc,CAAC,sBAAsB,CAAC;;;AAI9C,YAAA,MAAM,kBAAkB,GAAuB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;AAC9G,YAAA,MAAM,cAAc,GAAsC,kBAAkB,CAAC,KAA0C;YAEvH,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC;AAC9C,SAAC;AAED,QAAA,OAAO,UAAU;AAClB,KAAC;AACF;;;;"}
1
+ {"version":3,"file":"decorator.js","sources":["../../../../../../src/decorator/api/function/decorator.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAgBA;;;;;;AAMG;AACH;AACM,SAAU,WAAW,CAA8B,UAAqC,EAAA;AAC7F,IAAA,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAA8B,UAAU;AAE9D,IAAA,OAAO,UAAU,OAAgB,EAAE,WAAmB,EAAE,UAA8B,EAAA;AACrF,QAAA,MAAM,cAAc,GAAY,UAAU,CAAC,KAAK;AAEhD,QAAA,UAAU,CAAC,KAAK,GAAG,UAA+C,GAAG,UAAsB,EAAA;AAC1F,YAAA,IAAI,iBAAqC;YAEzC,QAAQ,IAAI;AACX,gBAAA,KAAK,gBAAgB,CAAC,MAAM,EAAE;AAC7B,oBAAA,iBAAiB,GAAG,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;oBAEjD;;AAGD,gBAAA,KAAK,gBAAgB,CAAC,MAAM,EAAE;AAC7B,oBAAA,iBAAiB,GAAG,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;oBAEjD;;AAGD,gBAAA,KAAK,gBAAgB,CAAC,GAAG,EAAE;AAC1B,oBAAA,iBAAiB,GAAG,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;oBAE9C;;AAGD,gBAAA,KAAK,gBAAgB,CAAC,QAAQ,EAAE;AAC/B,oBAAA,iBAAiB,GAAG,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;oBAElD;;AAGD,gBAAA,KAAK,gBAAgB,CAAC,QAAQ,EAAE;AAC/B,oBAAA,iBAAiB,GAAG,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;oBAElD;;AAGD,gBAAA,KAAK,gBAAgB,CAAC,MAAM,EAAE;AAC7B,oBAAA,iBAAiB,GAAG,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;oBAEjD;;gBAGD,SAAS;AACR,oBAAA,MAAM,cAAc,CAAC,sBAAsB,CAAC;;;AAI9C,YAAA,MAAM,kBAAkB,GAAuB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;AAC9G,YAAA,MAAM,cAAc,GAAsC,kBAAkB,CAAC,KAA0C;YAEvH,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC;AAC9C,SAAC;AAED,QAAA,OAAO,UAAU;AAClB,KAAC;AACF;;;;"}
@@ -5,4 +5,8 @@ import type { IApiFunctionProperties } from '../../../interface/decorator/api/in
5
5
  * @param {IApiFunctionProperties} properties - Configuration properties for the delete function
6
6
  * @returns {(target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor} A decorator function that modifies the target method to handle entity deletion
7
7
  */
8
- export declare function ApiFunctionDelete<E extends IApiBaseEntity>(properties: IApiFunctionProperties): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
8
+ /**
9
+ *
10
+ * @param properties
11
+ */
12
+ export declare function ApiFunctionDelete<E extends IApiBaseEntity>(properties: IApiFunctionProperties<E>): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
@@ -1,3 +1,18 @@
1
+ import { ApiSubscriberExecutor } from '../../../class/api/subscriber/executor.class.js';
2
+ import '../../../enum/decorator/api/action.enum.js';
3
+ import '../../../enum/decorator/api/authentication-type.enum.js';
4
+ import '../../../enum/decorator/api/controller/load-relations-strategy.enum.js';
5
+ import '../../../enum/decorator/api/controller/request-transformer-type.enum.js';
6
+ import '../../../enum/decorator/api/dto-type.enum.js';
7
+ import { EApiFunctionType } from '../../../enum/decorator/api/function/type.enum.js';
8
+ import { EApiSubscriberOnType } from '../../../enum/decorator/api/on-type.enum.js';
9
+ import '../../../enum/decorator/api/property/data-type.enum.js';
10
+ import '../../../enum/decorator/api/property/date/identifier.enum.js';
11
+ import '../../../enum/decorator/api/property/date/type.enum.js';
12
+ import '../../../enum/decorator/api/property/desribe-type.enum.js';
13
+ import '../../../enum/decorator/api/property/number-type.enum.js';
14
+ import '../../../enum/decorator/api/property/string-type.enum.js';
15
+ import '../../../enum/decorator/api/route-type.enum.js';
1
16
  import { EErrorStringAction } from '../../../enum/utility/error-string/action.enum.js';
2
17
  import '../../../enum/utility/error-string/composite-action.enum.js';
3
18
  import { HttpException, InternalServerErrorException } from '@nestjs/common';
@@ -11,15 +26,30 @@ import { ApiFunctionGet } from './get.decorator.js';
11
26
  * @param {IApiFunctionProperties} properties - Configuration properties for the delete function
12
27
  * @returns {(target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor} A decorator function that modifies the target method to handle entity deletion
13
28
  */
14
- // eslint-disable-next-line @elsikora/typescript/no-unnecessary-type-parameters
29
+ /**
30
+ *
31
+ * @param properties
32
+ */
15
33
  function ApiFunctionDelete(properties) {
16
34
  const { entity } = properties;
17
35
  const getDecorator = ApiFunctionGet({ entity });
18
36
  let getFunction;
19
- return function (target, propertyKey, descriptor) {
37
+ return function (_target, _propertyKey, descriptor) {
20
38
  descriptor.value = async function (criteria, eventManager) {
39
+ const entityInstance = new entity();
40
+ const executionContext = {
41
+ data: { criteria, eventManager, repository: this.repository },
42
+ entity: entityInstance,
43
+ functionType: EApiFunctionType.DELETE,
44
+ result: criteria,
45
+ };
46
+ const result = await ApiSubscriberExecutor.executeFunctionSubscribers(this.constructor, entityInstance, EApiFunctionType.DELETE, EApiSubscriberOnType.BEFORE, executionContext);
47
+ if (result) {
48
+ executionContext.result = result;
49
+ }
21
50
  const repository = this.repository;
22
51
  if (!repository) {
52
+ await ApiSubscriberExecutor.executeFunctionSubscribers(this.constructor, entityInstance, EApiFunctionType.DELETE, EApiSubscriberOnType.BEFORE_ERROR, executionContext, new Error("Repository is not available in this context"));
23
53
  throw ErrorException("Repository is not available in this context");
24
54
  }
25
55
  if (!getFunction) {
@@ -36,7 +66,7 @@ function ApiFunctionDelete(properties) {
36
66
  throw ErrorException("Get function is not properly decorated");
37
67
  }
38
68
  }
39
- return executor({ criteria, entity, eventManager, getFunction, repository });
69
+ return executor({ constructor: this.constructor, criteria: executionContext.result, entity, eventManager, getFunction, repository });
40
70
  };
41
71
  return descriptor;
42
72
  };
@@ -48,23 +78,45 @@ function ApiFunctionDelete(properties) {
48
78
  * @throws {InternalServerErrorException} If the deletion operation fails
49
79
  */
50
80
  async function executor(options) {
51
- const { criteria, entity, eventManager, getFunction, repository } = options;
81
+ const { constructor, criteria, entity, eventManager, getFunction, repository } = options;
52
82
  try {
53
83
  const existingEntity = await getFunction({ where: criteria });
84
+ let result;
54
85
  if (eventManager) {
55
86
  const eventRepository = eventManager.getRepository(entity);
56
- return await eventRepository.remove(existingEntity);
87
+ result = await eventRepository.remove(existingEntity);
88
+ }
89
+ else {
90
+ result = await repository.remove(existingEntity);
57
91
  }
58
- return await repository.remove(existingEntity);
92
+ const executionContext = {
93
+ data: { criteria, eventManager, repository },
94
+ entity: existingEntity,
95
+ functionType: EApiFunctionType.DELETE,
96
+ result: result,
97
+ };
98
+ const afterResult = await ApiSubscriberExecutor.executeFunctionSubscribers(constructor, existingEntity, EApiFunctionType.DELETE, EApiSubscriberOnType.AFTER, executionContext);
99
+ if (afterResult) {
100
+ return afterResult;
101
+ }
102
+ return result;
59
103
  }
60
104
  catch (error) {
105
+ const entityInstance = new entity();
106
+ const executionContext = {
107
+ data: { criteria, eventManager, repository },
108
+ entity: entityInstance,
109
+ functionType: EApiFunctionType.DELETE,
110
+ };
61
111
  if (error instanceof HttpException) {
112
+ await ApiSubscriberExecutor.executeFunctionSubscribers(constructor, entityInstance, EApiFunctionType.DELETE, EApiSubscriberOnType.AFTER_ERROR, executionContext, error);
62
113
  throw error;
63
114
  }
64
115
  LoggerUtility.getLogger("ApiFunctionDelete").verbose(`Error deleting entity ${String(entity.name)}:`, error);
116
+ await ApiSubscriberExecutor.executeFunctionSubscribers(constructor, entityInstance, EApiFunctionType.DELETE, EApiSubscriberOnType.AFTER_ERROR, executionContext, error);
65
117
  throw new InternalServerErrorException(ErrorString({
66
118
  entity: entity,
67
- type: EErrorStringAction.UPDATING_ERROR,
119
+ type: EErrorStringAction.DELETING_ERROR,
68
120
  }));
69
121
  }
70
122
  }
@@ -1 +1 @@
1
- {"version":3,"file":"delete.decorator.js","sources":["../../../../../../src/decorator/api/function/delete.decorator.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AAaA;;;;AAIG;AACH;AACM,SAAU,iBAAiB,CAA2B,UAAkC,EAAA;AAC7F,IAAA,MAAM,EAAE,MAAM,EAAE,GAA2B,UAAU;IACrD,MAAM,YAAY,GAA6F,cAAc,CAAI,EAAE,MAAM,EAAE,CAAC;AAC5I,IAAA,IAAI,WAAmG;AAEvG,IAAA,OAAO,UAAU,MAAe,EAAE,WAAmB,EAAE,UAA8B,EAAA;AAMpF,QAAA,UAAU,CAAC,KAAK,GAAG,gBAIlB,QAAuC,EACvC,YAA4B,EAAA;AAE5B,YAAA,MAAM,UAAU,GAAkB,IAAI,CAAC,UAAU;YAEjD,IAAI,CAAC,UAAU,EAAE;AAChB,gBAAA,MAAM,cAAc,CAAC,6CAA6C,CAAC;;YAGpE,IAAI,CAAC,WAAW,EAAE;AACjB,gBAAA,MAAM,aAAa,GAAoH;AACtI,oBAAA,KAAK,EAAE,YAAA;wBACN,OAAO,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;qBACxD;iBACD;AACD,gBAAA,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC;AAExC,gBAAA,IAAI,aAAa,CAAC,KAAK,EAAE;oBACxB,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;qBACtC;AACN,oBAAA,MAAM,cAAc,CAAC,wCAAwC,CAAC;;;AAIhE,YAAA,OAAO,QAAQ,CAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAChF,SAAC;AAED,QAAA,OAAO,UAAU;AAClB,KAAC;AACF;AAEA;;;;;AAKG;AACH,eAAe,QAAQ,CAA2B,OAAgD,EAAA;AACjG,IAAA,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,GAA4C,OAAO;AAEpH,IAAA,IAAI;QACH,MAAM,cAAc,GAAM,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAEhE,IAAI,YAAY,EAAE;YACjB,MAAM,eAAe,GAAkB,YAAY,CAAC,aAAa,CAAI,MAAsB,CAAC;AAE5F,YAAA,OAAO,MAAM,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC;;AAGpD,QAAA,OAAO,MAAM,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC;;IAC7C,OAAO,KAAK,EAAE;AACf,QAAA,IAAI,KAAK,YAAY,aAAa,EAAE;AACnC,YAAA,MAAM,KAAK;;AAGZ,QAAA,aAAa,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAA,sBAAA,EAAyB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;AAE5G,QAAA,MAAM,IAAI,4BAA4B,CACrC,WAAW,CAAC;AACX,YAAA,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,kBAAkB,CAAC,cAAc;AACvC,SAAA,CAAC,CACF;;AAEH;;;;"}
1
+ {"version":3,"file":"delete.decorator.js","sources":["../../../../../../src/decorator/api/function/delete.decorator.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -5,4 +5,8 @@ import type { IApiFunctionProperties } from '../../../interface/decorator/api/in
5
5
  * @param {IApiFunctionProperties} properties - Configuration properties for the get-list function
6
6
  * @returns {(target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor} A decorator function that modifies the target method to handle entity list retrieval
7
7
  */
8
- export declare function ApiFunctionGetList<E extends IApiBaseEntity>(properties: IApiFunctionProperties): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
8
+ /**
9
+ *
10
+ * @param properties
11
+ */
12
+ export declare function ApiFunctionGetList<E extends IApiBaseEntity>(properties: IApiFunctionProperties<E>): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
@@ -1,3 +1,18 @@
1
+ import { ApiSubscriberExecutor } from '../../../class/api/subscriber/executor.class.js';
2
+ import '../../../enum/decorator/api/action.enum.js';
3
+ import '../../../enum/decorator/api/authentication-type.enum.js';
4
+ import '../../../enum/decorator/api/controller/load-relations-strategy.enum.js';
5
+ import '../../../enum/decorator/api/controller/request-transformer-type.enum.js';
6
+ import '../../../enum/decorator/api/dto-type.enum.js';
7
+ import { EApiFunctionType } from '../../../enum/decorator/api/function/type.enum.js';
8
+ import { EApiSubscriberOnType } from '../../../enum/decorator/api/on-type.enum.js';
9
+ import '../../../enum/decorator/api/property/data-type.enum.js';
10
+ import '../../../enum/decorator/api/property/date/identifier.enum.js';
11
+ import '../../../enum/decorator/api/property/date/type.enum.js';
12
+ import '../../../enum/decorator/api/property/desribe-type.enum.js';
13
+ import '../../../enum/decorator/api/property/number-type.enum.js';
14
+ import '../../../enum/decorator/api/property/string-type.enum.js';
15
+ import '../../../enum/decorator/api/route-type.enum.js';
1
16
  import { EErrorStringAction } from '../../../enum/utility/error-string/action.enum.js';
2
17
  import '../../../enum/utility/error-string/composite-action.enum.js';
3
18
  import { HttpException, InternalServerErrorException } from '@nestjs/common';
@@ -10,16 +25,31 @@ import { LoggerUtility } from '../../../utility/logger.utility.js';
10
25
  * @param {IApiFunctionProperties} properties - Configuration properties for the get-list function
11
26
  * @returns {(target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor} A decorator function that modifies the target method to handle entity list retrieval
12
27
  */
13
- // eslint-disable-next-line @elsikora/typescript/no-unnecessary-type-parameters
28
+ /**
29
+ *
30
+ * @param properties
31
+ */
14
32
  function ApiFunctionGetList(properties) {
15
33
  const { entity } = properties;
16
34
  return function (_target, _propertyKey, descriptor) {
17
- descriptor.value = async function (properties, eventManager) {
35
+ descriptor.value = async function (getListProperties, eventManager) {
36
+ const entityInstance = new entity();
37
+ const executionContext = {
38
+ data: { eventManager, getListProperties, repository: this.repository },
39
+ entity: entityInstance,
40
+ functionType: EApiFunctionType.GET_LIST,
41
+ result: getListProperties,
42
+ };
43
+ const result = await ApiSubscriberExecutor.executeFunctionSubscribers(this.constructor, entityInstance, EApiFunctionType.GET_LIST, EApiSubscriberOnType.BEFORE, executionContext);
44
+ if (result) {
45
+ executionContext.result = result;
46
+ }
18
47
  const repository = this.repository;
19
48
  if (!repository) {
49
+ await ApiSubscriberExecutor.executeFunctionSubscribers(this.constructor, entityInstance, EApiFunctionType.GET_LIST, EApiSubscriberOnType.BEFORE_ERROR, executionContext, new Error("Repository is not available in this context"));
20
50
  throw ErrorException("Repository is not available in this context");
21
51
  }
22
- return executor({ entity, eventManager, properties, repository });
52
+ return executor({ constructor: this.constructor, entity, eventManager, properties: executionContext.result, repository });
23
53
  };
24
54
  return descriptor;
25
55
  };
@@ -31,7 +61,7 @@ function ApiFunctionGetList(properties) {
31
61
  * @throws {InternalServerErrorException} If the list retrieval operation fails
32
62
  */
33
63
  async function executor(options) {
34
- const { entity, eventManager, properties, repository } = options;
64
+ const { constructor, entity, eventManager, properties, repository } = options;
35
65
  try {
36
66
  let items;
37
67
  let totalCount;
@@ -42,22 +72,38 @@ async function executor(options) {
42
72
  else {
43
73
  [items, totalCount] = await repository.findAndCount(properties);
44
74
  }
45
- return {
75
+ const result = {
46
76
  count: items.length,
47
- // @ts-ignore
48
- // eslint-disable-next-line @elsikora/sonar/no-nested-conditional,@elsikora/unicorn/no-nested-ternary
49
- currentPage: items.length === 0 ? 0 : properties.skip ? Math.ceil(properties.skip / properties?.take) + 1 : 1,
77
+ currentPage: items.length === 0 ? 0 : (properties.skip ? Math.ceil(properties.skip / (properties.take ?? 1)) + 1 : 1),
50
78
  items,
51
79
  totalCount,
52
- // @ts-ignore
53
- totalPages: Math.ceil(totalCount / properties.take),
80
+ totalPages: Math.ceil(totalCount / (properties.take ?? 1)),
54
81
  };
82
+ const executionContext = {
83
+ data: { eventManager, properties, repository },
84
+ entity: new entity(),
85
+ functionType: EApiFunctionType.GET_LIST,
86
+ result: result,
87
+ };
88
+ const afterResult = await ApiSubscriberExecutor.executeFunctionSubscribers(constructor, new entity(), EApiFunctionType.GET_LIST, EApiSubscriberOnType.AFTER, executionContext);
89
+ if (afterResult) {
90
+ return afterResult;
91
+ }
92
+ return result;
55
93
  }
56
94
  catch (error) {
95
+ const entityInstance = new entity();
96
+ const executionContext = {
97
+ data: { properties, eventManager, repository },
98
+ entity: entityInstance,
99
+ functionType: EApiFunctionType.GET_LIST,
100
+ };
57
101
  if (error instanceof HttpException) {
102
+ await ApiSubscriberExecutor.executeFunctionSubscribers(constructor, entityInstance, EApiFunctionType.GET_LIST, EApiSubscriberOnType.AFTER_ERROR, executionContext, error);
58
103
  throw error;
59
104
  }
60
105
  LoggerUtility.getLogger("ApiFunctionGetList").verbose(`Error fetching list for entity ${String(entity.name)}:`, error);
106
+ await ApiSubscriberExecutor.executeFunctionSubscribers(constructor, entityInstance, EApiFunctionType.GET_LIST, EApiSubscriberOnType.AFTER_ERROR, executionContext, error);
61
107
  throw new InternalServerErrorException(ErrorString({
62
108
  entity: entity,
63
109
  type: EErrorStringAction.FETCHING_LIST_ERROR,
@@ -1 +1 @@
1
- {"version":3,"file":"get-list.decorator.js","sources":["../../../../../../src/decorator/api/function/get-list.decorator.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAWA;;;;AAIG;AACH;AACM,SAAU,kBAAkB,CAA2B,UAAkC,EAAA;AAC9F,IAAA,MAAM,EAAE,MAAM,EAAE,GAA2B,UAAU;AAErD,IAAA,OAAO,UAAU,OAAgB,EAAE,YAAoB,EAAE,UAA8B,EAAA;AACtF,QAAA,UAAU,CAAC,KAAK,GAAG,gBAIlB,UAA4C,EAC5C,YAA4B,EAAA;AAE5B,YAAA,MAAM,UAAU,GAAkB,IAAI,CAAC,UAAU;YAEjD,IAAI,CAAC,UAAU,EAAE;AAChB,gBAAA,MAAM,cAAc,CAAC,6CAA6C,CAAC;;AAGpE,YAAA,OAAO,QAAQ,CAAI,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AACrE,SAAC;AAED,QAAA,OAAO,UAAU;AAClB,KAAC;AACF;AAEA;;;;;AAKG;AACH,eAAe,QAAQ,CAA2B,OAAiD,EAAA;IAClG,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,GAA6C,OAAO;AAE1G,IAAA,IAAI;AACH,QAAA,IAAI,KAAe;AACnB,QAAA,IAAI,UAAkB;QAEtB,IAAI,YAAY,EAAE;YACjB,MAAM,eAAe,GAAkB,YAAY,CAAC,aAAa,CAAI,MAAsB,CAAC;AAC5F,YAAA,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,UAAU,CAAC;;aAC9D;AACN,YAAA,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC;;QAGhE,OAAO;YACN,KAAK,EAAE,KAAK,CAAC,MAAM;;;AAGnB,YAAA,WAAW,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAC7G,KAAK;YACL,UAAU;;YAEV,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC;SACnD;;IACA,OAAO,KAAK,EAAE;AACf,QAAA,IAAI,KAAK,YAAY,aAAa,EAAE;AACnC,YAAA,MAAM,KAAK;;AAGZ,QAAA,aAAa,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAA,+BAAA,EAAkC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;AAEtH,QAAA,MAAM,IAAI,4BAA4B,CACrC,WAAW,CAAC;AACX,YAAA,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,kBAAkB,CAAC,mBAAmB;AAC5C,SAAA,CAAC,CACF;;AAEH;;;;"}
1
+ {"version":3,"file":"get-list.decorator.js","sources":["../../../../../../src/decorator/api/function/get-list.decorator.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -5,4 +5,8 @@ import type { IApiFunctionProperties } from '../../../interface/decorator/api/in
5
5
  * @param {IApiFunctionProperties} properties - Configuration properties for the get-many function
6
6
  * @returns {(target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor} A decorator function that modifies the target method to handle retrieving multiple entities
7
7
  */
8
- export declare function ApiFunctionGetMany<E extends IApiBaseEntity>(properties: IApiFunctionProperties): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
8
+ /**
9
+ *
10
+ * @param properties
11
+ */
12
+ export declare function ApiFunctionGetMany<E extends IApiBaseEntity>(properties: IApiFunctionProperties<E>): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
@@ -1,3 +1,18 @@
1
+ import { ApiSubscriberExecutor } from '../../../class/api/subscriber/executor.class.js';
2
+ import '../../../enum/decorator/api/action.enum.js';
3
+ import '../../../enum/decorator/api/authentication-type.enum.js';
4
+ import '../../../enum/decorator/api/controller/load-relations-strategy.enum.js';
5
+ import '../../../enum/decorator/api/controller/request-transformer-type.enum.js';
6
+ import '../../../enum/decorator/api/dto-type.enum.js';
7
+ import { EApiFunctionType } from '../../../enum/decorator/api/function/type.enum.js';
8
+ import { EApiSubscriberOnType } from '../../../enum/decorator/api/on-type.enum.js';
9
+ import '../../../enum/decorator/api/property/data-type.enum.js';
10
+ import '../../../enum/decorator/api/property/date/identifier.enum.js';
11
+ import '../../../enum/decorator/api/property/date/type.enum.js';
12
+ import '../../../enum/decorator/api/property/desribe-type.enum.js';
13
+ import '../../../enum/decorator/api/property/number-type.enum.js';
14
+ import '../../../enum/decorator/api/property/string-type.enum.js';
15
+ import '../../../enum/decorator/api/route-type.enum.js';
1
16
  import { EErrorStringAction } from '../../../enum/utility/error-string/action.enum.js';
2
17
  import '../../../enum/utility/error-string/composite-action.enum.js';
3
18
  import { NotFoundException, HttpException, InternalServerErrorException } from '@nestjs/common';
@@ -10,16 +25,31 @@ import { LoggerUtility } from '../../../utility/logger.utility.js';
10
25
  * @param {IApiFunctionProperties} properties - Configuration properties for the get-many function
11
26
  * @returns {(target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor} A decorator function that modifies the target method to handle retrieving multiple entities
12
27
  */
13
- // eslint-disable-next-line @elsikora/typescript/no-unnecessary-type-parameters
28
+ /**
29
+ *
30
+ * @param properties
31
+ */
14
32
  function ApiFunctionGetMany(properties) {
15
33
  const { entity } = properties;
16
- return function (target, propertyKey, descriptor) {
17
- descriptor.value = async function (properties, eventManager) {
34
+ return function (_target, _propertyKey, descriptor) {
35
+ descriptor.value = async function (getManyProperties, eventManager) {
36
+ const entityInstance = new entity();
37
+ const executionContext = {
38
+ data: { eventManager, getManyProperties, repository: this.repository },
39
+ entity: entityInstance,
40
+ functionType: EApiFunctionType.GET_MANY,
41
+ result: getManyProperties,
42
+ };
43
+ const result = await ApiSubscriberExecutor.executeFunctionSubscribers(this.constructor, entityInstance, EApiFunctionType.GET_MANY, EApiSubscriberOnType.BEFORE, executionContext);
44
+ if (result) {
45
+ executionContext.result = result;
46
+ }
18
47
  const repository = this.repository;
19
48
  if (!repository) {
49
+ await ApiSubscriberExecutor.executeFunctionSubscribers(this.constructor, entityInstance, EApiFunctionType.GET_MANY, EApiSubscriberOnType.BEFORE_ERROR, executionContext, new Error("Repository is not available in this context"));
20
50
  throw ErrorException("Repository is not available in this context");
21
51
  }
22
- return executor({ entity, eventManager, properties, repository });
52
+ return executor({ constructor: this.constructor, entity, eventManager, properties: executionContext.result, repository });
23
53
  };
24
54
  return descriptor;
25
55
  };
@@ -32,7 +62,7 @@ function ApiFunctionGetMany(properties) {
32
62
  * @throws {InternalServerErrorException} If the retrieval operation fails
33
63
  */
34
64
  async function executor(options) {
35
- const { entity, eventManager, properties, repository } = options;
65
+ const { constructor, entity, eventManager, properties, repository } = options;
36
66
  try {
37
67
  let items;
38
68
  if (eventManager) {
@@ -45,13 +75,31 @@ async function executor(options) {
45
75
  if (items.length === 0) {
46
76
  throw new NotFoundException(ErrorString({ entity, type: EErrorStringAction.NOT_FOUND }));
47
77
  }
78
+ const executionContext = {
79
+ data: { eventManager, properties, repository },
80
+ entity: new entity(),
81
+ functionType: EApiFunctionType.GET_MANY,
82
+ result: items,
83
+ };
84
+ const afterResult = await ApiSubscriberExecutor.executeFunctionSubscribers(constructor, new entity(), EApiFunctionType.GET_MANY, EApiSubscriberOnType.AFTER, executionContext);
85
+ if (afterResult) {
86
+ return afterResult;
87
+ }
48
88
  return items;
49
89
  }
50
90
  catch (error) {
91
+ const entityInstance = new entity();
92
+ const executionContext = {
93
+ data: { properties, eventManager, repository },
94
+ entity: entityInstance,
95
+ functionType: EApiFunctionType.GET_MANY,
96
+ };
51
97
  if (error instanceof HttpException) {
98
+ await ApiSubscriberExecutor.executeFunctionSubscribers(constructor, entityInstance, EApiFunctionType.GET_MANY, EApiSubscriberOnType.AFTER_ERROR, executionContext, error);
52
99
  throw error;
53
100
  }
54
101
  LoggerUtility.getLogger("ApiFunctionGetMany").verbose(`Error fetching multiple entity ${String(entity.name)}:`, error);
102
+ await ApiSubscriberExecutor.executeFunctionSubscribers(constructor, entityInstance, EApiFunctionType.GET_MANY, EApiSubscriberOnType.AFTER_ERROR, executionContext, error);
55
103
  throw new InternalServerErrorException(ErrorString({
56
104
  entity,
57
105
  type: EErrorStringAction.FETCHING_ERROR,
@@ -1 +1 @@
1
- {"version":3,"file":"get-many.decorator.js","sources":["../../../../../../src/decorator/api/function/get-many.decorator.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAWA;;;;AAIG;AACH;AACM,SAAU,kBAAkB,CAA2B,UAAkC,EAAA;AAC9F,IAAA,MAAM,EAAE,MAAM,EAAE,GAA2B,UAAU;AAErD,IAAA,OAAO,UAAU,MAAe,EAAE,WAAmB,EAAE,UAA8B,EAAA;AAMpF,QAAA,UAAU,CAAC,KAAK,GAAG,gBAIlB,UAA4C,EAC5C,YAA4B,EAAA;AAE5B,YAAA,MAAM,UAAU,GAAkB,IAAI,CAAC,UAAU;YAEjD,IAAI,CAAC,UAAU,EAAE;AAChB,gBAAA,MAAM,cAAc,CAAC,6CAA6C,CAAC;;AAGpE,YAAA,OAAO,QAAQ,CAAI,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AACrE,SAAC;AAED,QAAA,OAAO,UAAU;AAClB,KAAC;AACF;AAEA;;;;;;AAMG;AACH,eAAe,QAAQ,CAA2B,OAAiD,EAAA;IAClG,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,GAA6C,OAAO;AAE1G,IAAA,IAAI;AACH,QAAA,IAAI,KAAe;QAEnB,IAAI,YAAY,EAAE;YACjB,MAAM,eAAe,GAAkB,YAAY,CAAC,aAAa,CAAI,MAAsB,CAAC;YAC5F,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;;aACxC;YACN,KAAK,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;;AAG1C,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,YAAA,MAAM,IAAI,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,SAAS,EAAE,CAAC,CAAC;;AAGzF,QAAA,OAAO,KAAK;;IACX,OAAO,KAAK,EAAE;AACf,QAAA,IAAI,KAAK,YAAY,aAAa,EAAE;AACnC,YAAA,MAAM,KAAK;;AAGZ,QAAA,aAAa,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAA,+BAAA,EAAkC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;AAEtH,QAAA,MAAM,IAAI,4BAA4B,CACrC,WAAW,CAAC;YACX,MAAM;YACN,IAAI,EAAE,kBAAkB,CAAC,cAAc;AACvC,SAAA,CAAC,CACF;;AAEH;;;;"}
1
+ {"version":3,"file":"get-many.decorator.js","sources":["../../../../../../src/decorator/api/function/get-many.decorator.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -5,4 +5,8 @@ import type { IApiFunctionProperties } from '../../../interface/decorator/api/in
5
5
  * @param {IApiFunctionProperties} properties - Configuration properties for the get function
6
6
  * @returns {(target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor} A decorator function that modifies the target method to handle single entity retrieval
7
7
  */
8
- export declare function ApiFunctionGet<E extends IApiBaseEntity>(properties: IApiFunctionProperties): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
8
+ /**
9
+ *
10
+ * @param properties
11
+ */
12
+ export declare function ApiFunctionGet<E extends IApiBaseEntity>(properties: IApiFunctionProperties<E>): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;