@elsikora/nestjs-crud-automator 2.1.2-dev.1 → 2.2.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 (404) hide show
  1. package/README.md +47 -0
  2. package/dist/cjs/class/api/authorization/bootstrap-validation.service.class.js +1 -1
  3. package/dist/cjs/class/api/authorization/bootstrap-validation.service.class.js.map +1 -1
  4. package/dist/cjs/class/api/authorization/hook/permission/cache.class.js +1 -1
  5. package/dist/cjs/class/api/authorization/hook/permission/cache.class.js.map +1 -1
  6. package/dist/cjs/class/api/authorization/hook/permission/resolver.class.js +1 -1
  7. package/dist/cjs/class/api/authorization/hook/permission/resolver.class.js.map +1 -1
  8. package/dist/cjs/class/api/authorization/iam/attachment/cache.class.js +1 -1
  9. package/dist/cjs/class/api/authorization/iam/attachment/cache.class.js.map +1 -1
  10. package/dist/cjs/class/api/authorization/iam/attachment/resolver.class.js +2 -2
  11. package/dist/cjs/class/api/authorization/iam/attachment/resolver.class.js.map +1 -1
  12. package/dist/cjs/class/api/authorization/iam/document/cache.class.js +1 -1
  13. package/dist/cjs/class/api/authorization/iam/document/cache.class.js.map +1 -1
  14. package/dist/cjs/class/api/authorization/iam/document/resolver.class.js +1 -1
  15. package/dist/cjs/class/api/authorization/iam/document/resolver.class.js.map +1 -1
  16. package/dist/cjs/class/api/authorization/runtime.class.js +2 -2
  17. package/dist/cjs/class/api/authorization/runtime.class.js.map +1 -1
  18. package/dist/cjs/class/api/route-runtime.class.d.ts +1 -0
  19. package/dist/cjs/class/api/route-runtime.class.js +41 -3
  20. package/dist/cjs/class/api/route-runtime.class.js.map +1 -1
  21. package/dist/cjs/constant/interface/api/property/default-string-format.constant.js +9 -0
  22. package/dist/cjs/constant/interface/api/property/default-string-format.constant.js.map +1 -1
  23. package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/constant.d.ts +5 -0
  24. package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/constant.js +12 -0
  25. package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/constant.js.map +1 -0
  26. package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/index.d.ts +2 -0
  27. package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/sign/default.constant.d.ts +2 -0
  28. package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/sign/default.constant.js +6 -0
  29. package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/sign/default.constant.js.map +1 -0
  30. package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/sign/index.d.ts +2 -0
  31. package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/sign/properties.constant.d.ts +2 -0
  32. package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/sign/properties.constant.js +28 -0
  33. package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/sign/properties.constant.js.map +1 -0
  34. package/dist/cjs/constant/utility/api/get-default-string-format-properties/constant.d.ts +9 -0
  35. package/dist/cjs/constant/utility/api/get-default-string-format-properties/constant.js +12 -0
  36. package/dist/cjs/constant/utility/api/get-default-string-format-properties/constant.js.map +1 -0
  37. package/dist/cjs/constant/utility/api/get-default-string-format-properties/customizer/index.d.ts +1 -0
  38. package/dist/cjs/constant/utility/api/get-default-string-format-properties/customizer/map.constant.d.ts +2 -0
  39. package/dist/cjs/constant/utility/api/get-default-string-format-properties/customizer/map.constant.js +28 -0
  40. package/dist/cjs/constant/utility/api/get-default-string-format-properties/customizer/map.constant.js.map +1 -0
  41. package/dist/cjs/constant/utility/api/get-default-string-format-properties/index.d.ts +1 -0
  42. package/dist/cjs/constant/utility/api/index.d.ts +1 -0
  43. package/dist/cjs/constant/utility/index.d.ts +1 -0
  44. package/dist/cjs/decorator/api/controller/observable.decorator.js +9 -3
  45. package/dist/cjs/decorator/api/controller/observable.decorator.js.map +1 -1
  46. package/dist/cjs/decorator/api/controller/securable.decorator.js +9 -3
  47. package/dist/cjs/decorator/api/controller/securable.decorator.js.map +1 -1
  48. package/dist/cjs/decorator/api/method.decorator.js +38 -15
  49. package/dist/cjs/decorator/api/method.decorator.js.map +1 -1
  50. package/dist/cjs/decorator/api/property/boolean.decorator.d.ts +1 -1
  51. package/dist/cjs/decorator/api/property/boolean.decorator.js +4 -5
  52. package/dist/cjs/decorator/api/property/boolean.decorator.js.map +1 -1
  53. package/dist/cjs/decorator/api/property/date.decorator.d.ts +1 -1
  54. package/dist/cjs/decorator/api/property/date.decorator.js +4 -5
  55. package/dist/cjs/decorator/api/property/date.decorator.js.map +1 -1
  56. package/dist/cjs/decorator/api/property/enum.decorator.d.ts +1 -1
  57. package/dist/cjs/decorator/api/property/enum.decorator.js +4 -5
  58. package/dist/cjs/decorator/api/property/enum.decorator.js.map +1 -1
  59. package/dist/cjs/decorator/api/property/number.decorator.d.ts +1 -1
  60. package/dist/cjs/decorator/api/property/number.decorator.js +4 -5
  61. package/dist/cjs/decorator/api/property/number.decorator.js.map +1 -1
  62. package/dist/cjs/decorator/api/property/object.decorator.d.ts +1 -1
  63. package/dist/cjs/decorator/api/property/object.decorator.js +38 -6
  64. package/dist/cjs/decorator/api/property/object.decorator.js.map +1 -1
  65. package/dist/cjs/decorator/api/property/string.decorator.d.ts +1 -1
  66. package/dist/cjs/decorator/api/property/string.decorator.js +8 -6
  67. package/dist/cjs/decorator/api/property/string.decorator.js.map +1 -1
  68. package/dist/cjs/decorator/api/property/uuid.decorator.d.ts +1 -1
  69. package/dist/cjs/decorator/api/property/uuid.decorator.js +4 -5
  70. package/dist/cjs/decorator/api/property/uuid.decorator.js.map +1 -1
  71. package/dist/cjs/decorator/api/route-custom.decorator.js +1 -0
  72. package/dist/cjs/decorator/api/route-custom.decorator.js.map +1 -1
  73. package/dist/cjs/decorator/api/service/decorator.d.ts +1 -1
  74. package/dist/cjs/decorator/api/service/decorator.js +1 -1
  75. package/dist/cjs/decorator/api/service/observable.decorator.js +9 -3
  76. package/dist/cjs/decorator/api/service/observable.decorator.js.map +1 -1
  77. package/dist/cjs/enum/decorator/api/property/data-type.enum.d.ts +1 -0
  78. package/dist/cjs/enum/decorator/api/property/data-type.enum.js +1 -0
  79. package/dist/cjs/enum/decorator/api/property/data-type.enum.js.map +1 -1
  80. package/dist/cjs/enum/decorator/api/property/string-type.enum.d.ts +1 -0
  81. package/dist/cjs/enum/decorator/api/property/string-type.enum.js +1 -0
  82. package/dist/cjs/enum/decorator/api/property/string-type.enum.js.map +1 -1
  83. package/dist/cjs/factory/api-controller.factory.js +4 -0
  84. package/dist/cjs/factory/api-controller.factory.js.map +1 -1
  85. package/dist/cjs/index.js +25 -2
  86. package/dist/cjs/index.js.map +1 -1
  87. package/dist/cjs/interceptor/correlation-id-response-body.interceptor.js +2 -8
  88. package/dist/cjs/interceptor/correlation-id-response-body.interceptor.js.map +1 -1
  89. package/dist/cjs/interface/decorator/api/route/response/properties.interface.d.ts +3 -1
  90. package/dist/cjs/interface/decorator/api/route/runtime-properties.interface.d.ts +2 -1
  91. package/dist/cjs/module/api/authorization.module.js +1 -1
  92. package/dist/cjs/module/api/authorization.module.js.map +1 -1
  93. package/dist/cjs/type/decorator/api/index.d.ts +1 -0
  94. package/dist/cjs/type/decorator/api/property/default/string/format/type.d.ts +1 -1
  95. package/dist/cjs/type/decorator/api/route/custom/dto-properties.type.d.ts +8 -0
  96. package/dist/cjs/type/decorator/api/route/custom/index.d.ts +1 -0
  97. package/dist/cjs/type/decorator/api/route/discriminated/dto-properties.type.d.ts +10 -0
  98. package/dist/cjs/type/decorator/api/route/discriminated/index.d.ts +1 -0
  99. package/dist/cjs/type/decorator/api/route/index.d.ts +2 -0
  100. package/dist/cjs/type/index.d.ts +1 -0
  101. package/dist/cjs/type/utility/api/discriminator/index.d.ts +1 -0
  102. package/dist/cjs/type/utility/api/discriminator/validate/config-properties.type.d.ts +8 -0
  103. package/dist/cjs/type/utility/api/discriminator/validate/index.d.ts +1 -0
  104. package/dist/cjs/type/utility/api/get-default-string-format-properties/bigint-string/index.d.ts +2 -0
  105. package/dist/cjs/type/utility/api/get-default-string-format-properties/bigint-string/options.type.d.ts +4 -0
  106. package/dist/cjs/type/utility/api/get-default-string-format-properties/bigint-string/sign/index.d.ts +2 -0
  107. package/dist/cjs/type/utility/api/get-default-string-format-properties/bigint-string/sign/properties.type.d.ts +2 -0
  108. package/dist/cjs/type/utility/api/get-default-string-format-properties/bigint-string/sign/type.d.ts +1 -0
  109. package/dist/cjs/type/utility/api/get-default-string-format-properties/customizer/index.d.ts +2 -0
  110. package/dist/cjs/type/utility/api/get-default-string-format-properties/customizer/map.type.d.ts +5 -0
  111. package/dist/cjs/type/utility/api/get-default-string-format-properties/customizer/type.d.ts +3 -0
  112. package/dist/cjs/type/utility/api/get-default-string-format-properties/index.d.ts +3 -0
  113. package/dist/cjs/type/utility/api/get-default-string-format-properties/options.type.d.ts +4 -0
  114. package/dist/cjs/type/utility/api/get-default-string-format-properties/parameters.type.d.ts +3 -0
  115. package/dist/cjs/type/utility/api/index.d.ts +2 -0
  116. package/dist/cjs/type/utility/index.d.ts +1 -1
  117. package/dist/cjs/utility/api/controller/apply/decorators.utility.d.ts +1 -1
  118. package/dist/cjs/utility/api/controller/apply/decorators.utility.js +1 -1
  119. package/dist/cjs/utility/api/controller/apply/metadata.utility.js +0 -1
  120. package/dist/cjs/utility/api/controller/apply/metadata.utility.js.map +1 -1
  121. package/dist/cjs/utility/api/controller/get/dto.utility.js +1 -0
  122. package/dist/cjs/utility/api/controller/get/dto.utility.js.map +1 -1
  123. package/dist/cjs/utility/api/controller/get-list/transform/filter.utility.d.ts +1 -1
  124. package/dist/cjs/utility/api/controller/get-list/transform/filter.utility.js +1 -1
  125. package/dist/cjs/utility/api/controller/get-list/transform/operation.utility.d.ts +2 -2
  126. package/dist/cjs/utility/api/controller/get-list/transform/operation.utility.js +2 -2
  127. package/dist/cjs/utility/api/controller/write/dto-swagger.utility.js +7 -3
  128. package/dist/cjs/utility/api/controller/write/dto-swagger.utility.js.map +1 -1
  129. package/dist/cjs/utility/api/discriminator/index.d.ts +1 -0
  130. package/dist/cjs/utility/api/discriminator/validate/config.utility.d.ts +7 -0
  131. package/dist/cjs/utility/api/discriminator/validate/config.utility.js +54 -0
  132. package/dist/cjs/utility/api/discriminator/validate/config.utility.js.map +1 -0
  133. package/dist/cjs/utility/api/discriminator/validate/index.d.ts +1 -0
  134. package/dist/cjs/utility/api/get-default-string-format-properties/bigint-string/apply-options.utility.d.ts +9 -0
  135. package/dist/cjs/utility/api/get-default-string-format-properties/bigint-string/apply-options.utility.js +20 -0
  136. package/dist/cjs/utility/api/get-default-string-format-properties/bigint-string/apply-options.utility.js.map +1 -0
  137. package/dist/cjs/utility/api/get-default-string-format-properties/bigint-string/index.d.ts +1 -0
  138. package/dist/cjs/utility/api/get-default-string-format-properties/customizer/apply.utility.d.ts +11 -0
  139. package/dist/cjs/utility/api/get-default-string-format-properties/customizer/apply.utility.js +20 -0
  140. package/dist/cjs/utility/api/get-default-string-format-properties/customizer/apply.utility.js.map +1 -0
  141. package/dist/cjs/utility/api/get-default-string-format-properties/customizer/index.d.ts +1 -0
  142. package/dist/cjs/utility/api/get-default-string-format-properties/index.d.ts +1 -0
  143. package/dist/cjs/utility/api/{get-default-string-format-properties.utility.d.ts → get-default-string-format-properties/utility.d.ts} +5 -2
  144. package/dist/cjs/utility/api/{get-default-string-format-properties.utility.js → get-default-string-format-properties/utility.js} +8 -5
  145. package/dist/cjs/utility/api/get-default-string-format-properties/utility.js.map +1 -0
  146. package/dist/cjs/utility/api/index.d.ts +2 -1
  147. package/dist/cjs/utility/api/route/apply-dto-metadata.utility.js +20 -6
  148. package/dist/cjs/utility/api/route/apply-dto-metadata.utility.js.map +1 -1
  149. package/dist/cjs/utility/api/route/discriminator/build-open-api-schema.utility.d.ts +9 -0
  150. package/dist/cjs/utility/api/route/discriminator/build-open-api-schema.utility.js +26 -0
  151. package/dist/cjs/utility/api/route/discriminator/build-open-api-schema.utility.js.map +1 -0
  152. package/dist/cjs/utility/api/route/discriminator/create-validation-failure.utility.d.ts +9 -0
  153. package/dist/cjs/utility/api/route/discriminator/create-validation-failure.utility.js +46 -0
  154. package/dist/cjs/utility/api/route/discriminator/create-validation-failure.utility.js.map +1 -0
  155. package/dist/cjs/utility/api/route/discriminator/index.d.ts +6 -0
  156. package/dist/cjs/utility/api/route/discriminator/is-dto-properties.utility.d.ts +7 -0
  157. package/dist/cjs/utility/api/route/discriminator/is-dto-properties.utility.js +13 -0
  158. package/dist/cjs/utility/api/route/discriminator/is-dto-properties.utility.js.map +1 -0
  159. package/dist/cjs/utility/api/route/discriminator/prepare-payload.utility.d.ts +8 -0
  160. package/dist/cjs/utility/api/route/discriminator/prepare-payload.utility.js +19 -0
  161. package/dist/cjs/utility/api/route/discriminator/prepare-payload.utility.js.map +1 -0
  162. package/dist/cjs/utility/api/route/discriminator/resolve-dto.utility.d.ts +10 -0
  163. package/dist/cjs/utility/api/route/discriminator/resolve-dto.utility.js +35 -0
  164. package/dist/cjs/utility/api/route/discriminator/resolve-dto.utility.js.map +1 -0
  165. package/dist/cjs/utility/api/route/discriminator/validate-dto-properties.utility.d.ts +8 -0
  166. package/dist/cjs/utility/api/route/discriminator/validate-dto-properties.utility.js +21 -0
  167. package/dist/cjs/utility/api/route/discriminator/validate-dto-properties.utility.js.map +1 -0
  168. package/dist/cjs/utility/api/route/dto/collect-with-registered-children.utility.d.ts +8 -0
  169. package/dist/cjs/utility/api/route/dto/collect-with-registered-children.utility.js +29 -0
  170. package/dist/cjs/utility/api/route/dto/collect-with-registered-children.utility.js.map +1 -0
  171. package/dist/cjs/utility/api/route/dto/index.d.ts +1 -0
  172. package/dist/cjs/utility/api/route/index.d.ts +4 -0
  173. package/dist/cjs/utility/api/route/response/project-relation.utility.js +16 -13
  174. package/dist/cjs/utility/api/route/response/project-relation.utility.js.map +1 -1
  175. package/dist/cjs/utility/api/route/response/serialize.utility.js +20 -0
  176. package/dist/cjs/utility/api/route/response/serialize.utility.js.map +1 -1
  177. package/dist/cjs/utility/api/route/validation/flatten-errors.utility.d.ts +8 -0
  178. package/dist/cjs/utility/api/route/validation/flatten-errors.utility.js +26 -0
  179. package/dist/cjs/utility/api/route/validation/flatten-errors.utility.js.map +1 -0
  180. package/dist/cjs/utility/api/route/validation/index.d.ts +1 -0
  181. package/dist/cjs/utility/authorization/scope-merge-where.utility.js +2 -2
  182. package/dist/cjs/utility/authorization/scope-merge-where.utility.js.map +1 -1
  183. package/dist/cjs/utility/database/typeorm/is/foreign-key-violation.utility.js +1 -4
  184. package/dist/cjs/utility/database/typeorm/is/foreign-key-violation.utility.js.map +1 -1
  185. package/dist/cjs/utility/database/typeorm/is/unique-violation.utility.js +1 -4
  186. package/dist/cjs/utility/database/typeorm/is/unique-violation.utility.js.map +1 -1
  187. package/dist/cjs/utility/dto/build-decorator.utility.js +1 -3
  188. package/dist/cjs/utility/dto/build-decorator.utility.js.map +1 -1
  189. package/dist/cjs/utility/dto/manual/property-metadata.utility.js +1 -1
  190. package/dist/cjs/utility/dto/manual/property-metadata.utility.js.map +1 -1
  191. package/dist/cjs/utility/generate-entity-information.utility.js +8 -15
  192. package/dist/cjs/utility/generate-entity-information.utility.js.map +1 -1
  193. package/dist/cjs/utility/index.d.ts +1 -1
  194. package/dist/cjs/utility/register-auto-dto-child.utility.d.ts +6 -0
  195. package/dist/cjs/utility/register-auto-dto-child.utility.js +30 -0
  196. package/dist/cjs/utility/register-auto-dto-child.utility.js.map +1 -1
  197. package/dist/cjs/validator/has/paired-custom-suffixes-fields.validator.js +1 -1
  198. package/dist/cjs/validator/has/paired-custom-suffixes-fields.validator.js.map +1 -1
  199. package/dist/cjs/validator/must-match-one-of-schemas.validator.d.ts +1 -2
  200. package/dist/cjs/validator/must-match-one-of-schemas.validator.js +4 -33
  201. package/dist/cjs/validator/must-match-one-of-schemas.validator.js.map +1 -1
  202. package/dist/esm/class/api/authorization/bootstrap-validation.service.class.js +2 -2
  203. package/dist/esm/class/api/authorization/bootstrap-validation.service.class.js.map +1 -1
  204. package/dist/esm/class/api/authorization/hook/permission/cache.class.js +1 -1
  205. package/dist/esm/class/api/authorization/hook/permission/cache.class.js.map +1 -1
  206. package/dist/esm/class/api/authorization/hook/permission/resolver.class.js +2 -2
  207. package/dist/esm/class/api/authorization/hook/permission/resolver.class.js.map +1 -1
  208. package/dist/esm/class/api/authorization/iam/attachment/cache.class.js +1 -1
  209. package/dist/esm/class/api/authorization/iam/attachment/cache.class.js.map +1 -1
  210. package/dist/esm/class/api/authorization/iam/attachment/resolver.class.js +3 -3
  211. package/dist/esm/class/api/authorization/iam/attachment/resolver.class.js.map +1 -1
  212. package/dist/esm/class/api/authorization/iam/document/cache.class.js +1 -1
  213. package/dist/esm/class/api/authorization/iam/document/cache.class.js.map +1 -1
  214. package/dist/esm/class/api/authorization/iam/document/resolver.class.js +2 -2
  215. package/dist/esm/class/api/authorization/iam/document/resolver.class.js.map +1 -1
  216. package/dist/esm/class/api/authorization/runtime.class.js +2 -2
  217. package/dist/esm/class/api/authorization/runtime.class.js.map +1 -1
  218. package/dist/esm/class/api/route-runtime.class.d.ts +1 -0
  219. package/dist/esm/class/api/route-runtime.class.js +41 -3
  220. package/dist/esm/class/api/route-runtime.class.js.map +1 -1
  221. package/dist/esm/constant/interface/api/property/default-string-format.constant.js +9 -0
  222. package/dist/esm/constant/interface/api/property/default-string-format.constant.js.map +1 -1
  223. package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/constant.d.ts +5 -0
  224. package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/constant.js +10 -0
  225. package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/constant.js.map +1 -0
  226. package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/index.d.ts +2 -0
  227. package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/sign/default.constant.d.ts +2 -0
  228. package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/sign/default.constant.js +4 -0
  229. package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/sign/default.constant.js.map +1 -0
  230. package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/sign/index.d.ts +2 -0
  231. package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/sign/properties.constant.d.ts +2 -0
  232. package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/sign/properties.constant.js +26 -0
  233. package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/sign/properties.constant.js.map +1 -0
  234. package/dist/esm/constant/utility/api/get-default-string-format-properties/constant.d.ts +9 -0
  235. package/dist/esm/constant/utility/api/get-default-string-format-properties/constant.js +10 -0
  236. package/dist/esm/constant/utility/api/get-default-string-format-properties/constant.js.map +1 -0
  237. package/dist/esm/constant/utility/api/get-default-string-format-properties/customizer/index.d.ts +1 -0
  238. package/dist/esm/constant/utility/api/get-default-string-format-properties/customizer/map.constant.d.ts +2 -0
  239. package/dist/esm/constant/utility/api/get-default-string-format-properties/customizer/map.constant.js +26 -0
  240. package/dist/esm/constant/utility/api/get-default-string-format-properties/customizer/map.constant.js.map +1 -0
  241. package/dist/esm/constant/utility/api/get-default-string-format-properties/index.d.ts +1 -0
  242. package/dist/esm/constant/utility/api/index.d.ts +1 -0
  243. package/dist/esm/constant/utility/index.d.ts +1 -0
  244. package/dist/esm/decorator/api/controller/observable.decorator.js +9 -3
  245. package/dist/esm/decorator/api/controller/observable.decorator.js.map +1 -1
  246. package/dist/esm/decorator/api/controller/securable.decorator.js +9 -3
  247. package/dist/esm/decorator/api/controller/securable.decorator.js.map +1 -1
  248. package/dist/esm/decorator/api/method.decorator.js +31 -8
  249. package/dist/esm/decorator/api/method.decorator.js.map +1 -1
  250. package/dist/esm/decorator/api/property/boolean.decorator.d.ts +1 -1
  251. package/dist/esm/decorator/api/property/boolean.decorator.js +4 -5
  252. package/dist/esm/decorator/api/property/boolean.decorator.js.map +1 -1
  253. package/dist/esm/decorator/api/property/date.decorator.d.ts +1 -1
  254. package/dist/esm/decorator/api/property/date.decorator.js +4 -5
  255. package/dist/esm/decorator/api/property/date.decorator.js.map +1 -1
  256. package/dist/esm/decorator/api/property/enum.decorator.d.ts +1 -1
  257. package/dist/esm/decorator/api/property/enum.decorator.js +4 -5
  258. package/dist/esm/decorator/api/property/enum.decorator.js.map +1 -1
  259. package/dist/esm/decorator/api/property/number.decorator.d.ts +1 -1
  260. package/dist/esm/decorator/api/property/number.decorator.js +4 -5
  261. package/dist/esm/decorator/api/property/number.decorator.js.map +1 -1
  262. package/dist/esm/decorator/api/property/object.decorator.d.ts +1 -1
  263. package/dist/esm/decorator/api/property/object.decorator.js +38 -6
  264. package/dist/esm/decorator/api/property/object.decorator.js.map +1 -1
  265. package/dist/esm/decorator/api/property/string.decorator.d.ts +1 -1
  266. package/dist/esm/decorator/api/property/string.decorator.js +8 -6
  267. package/dist/esm/decorator/api/property/string.decorator.js.map +1 -1
  268. package/dist/esm/decorator/api/property/uuid.decorator.d.ts +1 -1
  269. package/dist/esm/decorator/api/property/uuid.decorator.js +4 -5
  270. package/dist/esm/decorator/api/property/uuid.decorator.js.map +1 -1
  271. package/dist/esm/decorator/api/route-custom.decorator.js +1 -0
  272. package/dist/esm/decorator/api/route-custom.decorator.js.map +1 -1
  273. package/dist/esm/decorator/api/service/decorator.d.ts +1 -1
  274. package/dist/esm/decorator/api/service/decorator.js +1 -1
  275. package/dist/esm/decorator/api/service/observable.decorator.js +9 -3
  276. package/dist/esm/decorator/api/service/observable.decorator.js.map +1 -1
  277. package/dist/esm/enum/decorator/api/property/data-type.enum.d.ts +1 -0
  278. package/dist/esm/enum/decorator/api/property/data-type.enum.js +1 -0
  279. package/dist/esm/enum/decorator/api/property/data-type.enum.js.map +1 -1
  280. package/dist/esm/enum/decorator/api/property/string-type.enum.d.ts +1 -0
  281. package/dist/esm/enum/decorator/api/property/string-type.enum.js +1 -0
  282. package/dist/esm/enum/decorator/api/property/string-type.enum.js.map +1 -1
  283. package/dist/esm/factory/api-controller.factory.js +4 -0
  284. package/dist/esm/factory/api-controller.factory.js.map +1 -1
  285. package/dist/esm/index.js +13 -2
  286. package/dist/esm/index.js.map +1 -1
  287. package/dist/esm/interceptor/correlation-id-response-body.interceptor.js +2 -8
  288. package/dist/esm/interceptor/correlation-id-response-body.interceptor.js.map +1 -1
  289. package/dist/esm/interface/decorator/api/route/response/properties.interface.d.ts +3 -1
  290. package/dist/esm/interface/decorator/api/route/runtime-properties.interface.d.ts +2 -1
  291. package/dist/esm/module/api/authorization.module.js +1 -1
  292. package/dist/esm/module/api/authorization.module.js.map +1 -1
  293. package/dist/esm/type/decorator/api/index.d.ts +1 -0
  294. package/dist/esm/type/decorator/api/property/default/string/format/type.d.ts +1 -1
  295. package/dist/esm/type/decorator/api/route/custom/dto-properties.type.d.ts +8 -0
  296. package/dist/esm/type/decorator/api/route/custom/index.d.ts +1 -0
  297. package/dist/esm/type/decorator/api/route/discriminated/dto-properties.type.d.ts +10 -0
  298. package/dist/esm/type/decorator/api/route/discriminated/index.d.ts +1 -0
  299. package/dist/esm/type/decorator/api/route/index.d.ts +2 -0
  300. package/dist/esm/type/index.d.ts +1 -0
  301. package/dist/esm/type/utility/api/discriminator/index.d.ts +1 -0
  302. package/dist/esm/type/utility/api/discriminator/validate/config-properties.type.d.ts +8 -0
  303. package/dist/esm/type/utility/api/discriminator/validate/index.d.ts +1 -0
  304. package/dist/esm/type/utility/api/get-default-string-format-properties/bigint-string/index.d.ts +2 -0
  305. package/dist/esm/type/utility/api/get-default-string-format-properties/bigint-string/options.type.d.ts +4 -0
  306. package/dist/esm/type/utility/api/get-default-string-format-properties/bigint-string/sign/index.d.ts +2 -0
  307. package/dist/esm/type/utility/api/get-default-string-format-properties/bigint-string/sign/properties.type.d.ts +2 -0
  308. package/dist/esm/type/utility/api/get-default-string-format-properties/bigint-string/sign/type.d.ts +1 -0
  309. package/dist/esm/type/utility/api/get-default-string-format-properties/customizer/index.d.ts +2 -0
  310. package/dist/esm/type/utility/api/get-default-string-format-properties/customizer/map.type.d.ts +5 -0
  311. package/dist/esm/type/utility/api/get-default-string-format-properties/customizer/type.d.ts +3 -0
  312. package/dist/esm/type/utility/api/get-default-string-format-properties/index.d.ts +3 -0
  313. package/dist/esm/type/utility/api/get-default-string-format-properties/options.type.d.ts +4 -0
  314. package/dist/esm/type/utility/api/get-default-string-format-properties/parameters.type.d.ts +3 -0
  315. package/dist/esm/type/utility/api/index.d.ts +2 -0
  316. package/dist/esm/type/utility/index.d.ts +1 -1
  317. package/dist/esm/utility/api/controller/apply/decorators.utility.d.ts +1 -1
  318. package/dist/esm/utility/api/controller/apply/decorators.utility.js +1 -1
  319. package/dist/esm/utility/api/controller/apply/metadata.utility.js +0 -1
  320. package/dist/esm/utility/api/controller/apply/metadata.utility.js.map +1 -1
  321. package/dist/esm/utility/api/controller/get/dto.utility.js +1 -0
  322. package/dist/esm/utility/api/controller/get/dto.utility.js.map +1 -1
  323. package/dist/esm/utility/api/controller/get-list/transform/filter.utility.d.ts +1 -1
  324. package/dist/esm/utility/api/controller/get-list/transform/filter.utility.js +1 -1
  325. package/dist/esm/utility/api/controller/get-list/transform/operation.utility.d.ts +2 -2
  326. package/dist/esm/utility/api/controller/get-list/transform/operation.utility.js +2 -2
  327. package/dist/esm/utility/api/controller/write/dto-swagger.utility.js +7 -3
  328. package/dist/esm/utility/api/controller/write/dto-swagger.utility.js.map +1 -1
  329. package/dist/esm/utility/api/discriminator/index.d.ts +1 -0
  330. package/dist/esm/utility/api/discriminator/validate/config.utility.d.ts +7 -0
  331. package/dist/esm/utility/api/discriminator/validate/config.utility.js +52 -0
  332. package/dist/esm/utility/api/discriminator/validate/config.utility.js.map +1 -0
  333. package/dist/esm/utility/api/discriminator/validate/index.d.ts +1 -0
  334. package/dist/esm/utility/api/get-default-string-format-properties/bigint-string/apply-options.utility.d.ts +9 -0
  335. package/dist/esm/utility/api/get-default-string-format-properties/bigint-string/apply-options.utility.js +18 -0
  336. package/dist/esm/utility/api/get-default-string-format-properties/bigint-string/apply-options.utility.js.map +1 -0
  337. package/dist/esm/utility/api/get-default-string-format-properties/bigint-string/index.d.ts +1 -0
  338. package/dist/esm/utility/api/get-default-string-format-properties/customizer/apply.utility.d.ts +11 -0
  339. package/dist/esm/utility/api/get-default-string-format-properties/customizer/apply.utility.js +18 -0
  340. package/dist/esm/utility/api/get-default-string-format-properties/customizer/apply.utility.js.map +1 -0
  341. package/dist/esm/utility/api/get-default-string-format-properties/customizer/index.d.ts +1 -0
  342. package/dist/esm/utility/api/get-default-string-format-properties/index.d.ts +1 -0
  343. package/dist/esm/utility/api/{get-default-string-format-properties.utility.d.ts → get-default-string-format-properties/utility.d.ts} +5 -2
  344. package/dist/esm/utility/api/{get-default-string-format-properties.utility.js → get-default-string-format-properties/utility.js} +8 -5
  345. package/dist/esm/utility/api/get-default-string-format-properties/utility.js.map +1 -0
  346. package/dist/esm/utility/api/index.d.ts +2 -1
  347. package/dist/esm/utility/api/route/apply-dto-metadata.utility.js +21 -7
  348. package/dist/esm/utility/api/route/apply-dto-metadata.utility.js.map +1 -1
  349. package/dist/esm/utility/api/route/discriminator/build-open-api-schema.utility.d.ts +9 -0
  350. package/dist/esm/utility/api/route/discriminator/build-open-api-schema.utility.js +24 -0
  351. package/dist/esm/utility/api/route/discriminator/build-open-api-schema.utility.js.map +1 -0
  352. package/dist/esm/utility/api/route/discriminator/create-validation-failure.utility.d.ts +9 -0
  353. package/dist/esm/utility/api/route/discriminator/create-validation-failure.utility.js +44 -0
  354. package/dist/esm/utility/api/route/discriminator/create-validation-failure.utility.js.map +1 -0
  355. package/dist/esm/utility/api/route/discriminator/index.d.ts +6 -0
  356. package/dist/esm/utility/api/route/discriminator/is-dto-properties.utility.d.ts +7 -0
  357. package/dist/esm/utility/api/route/discriminator/is-dto-properties.utility.js +11 -0
  358. package/dist/esm/utility/api/route/discriminator/is-dto-properties.utility.js.map +1 -0
  359. package/dist/esm/utility/api/route/discriminator/prepare-payload.utility.d.ts +8 -0
  360. package/dist/esm/utility/api/route/discriminator/prepare-payload.utility.js +17 -0
  361. package/dist/esm/utility/api/route/discriminator/prepare-payload.utility.js.map +1 -0
  362. package/dist/esm/utility/api/route/discriminator/resolve-dto.utility.d.ts +10 -0
  363. package/dist/esm/utility/api/route/discriminator/resolve-dto.utility.js +33 -0
  364. package/dist/esm/utility/api/route/discriminator/resolve-dto.utility.js.map +1 -0
  365. package/dist/esm/utility/api/route/discriminator/validate-dto-properties.utility.d.ts +8 -0
  366. package/dist/esm/utility/api/route/discriminator/validate-dto-properties.utility.js +19 -0
  367. package/dist/esm/utility/api/route/discriminator/validate-dto-properties.utility.js.map +1 -0
  368. package/dist/esm/utility/api/route/dto/collect-with-registered-children.utility.d.ts +8 -0
  369. package/dist/esm/utility/api/route/dto/collect-with-registered-children.utility.js +27 -0
  370. package/dist/esm/utility/api/route/dto/collect-with-registered-children.utility.js.map +1 -0
  371. package/dist/esm/utility/api/route/dto/index.d.ts +1 -0
  372. package/dist/esm/utility/api/route/index.d.ts +4 -0
  373. package/dist/esm/utility/api/route/response/project-relation.utility.js +16 -13
  374. package/dist/esm/utility/api/route/response/project-relation.utility.js.map +1 -1
  375. package/dist/esm/utility/api/route/response/serialize.utility.js +20 -0
  376. package/dist/esm/utility/api/route/response/serialize.utility.js.map +1 -1
  377. package/dist/esm/utility/api/route/validation/flatten-errors.utility.d.ts +8 -0
  378. package/dist/esm/utility/api/route/validation/flatten-errors.utility.js +24 -0
  379. package/dist/esm/utility/api/route/validation/flatten-errors.utility.js.map +1 -0
  380. package/dist/esm/utility/api/route/validation/index.d.ts +1 -0
  381. package/dist/esm/utility/authorization/scope-merge-where.utility.js +2 -2
  382. package/dist/esm/utility/authorization/scope-merge-where.utility.js.map +1 -1
  383. package/dist/esm/utility/database/typeorm/is/foreign-key-violation.utility.js +1 -4
  384. package/dist/esm/utility/database/typeorm/is/foreign-key-violation.utility.js.map +1 -1
  385. package/dist/esm/utility/database/typeorm/is/unique-violation.utility.js +1 -4
  386. package/dist/esm/utility/database/typeorm/is/unique-violation.utility.js.map +1 -1
  387. package/dist/esm/utility/dto/build-decorator.utility.js +1 -3
  388. package/dist/esm/utility/dto/build-decorator.utility.js.map +1 -1
  389. package/dist/esm/utility/dto/manual/property-metadata.utility.js +1 -1
  390. package/dist/esm/utility/dto/manual/property-metadata.utility.js.map +1 -1
  391. package/dist/esm/utility/generate-entity-information.utility.js +8 -15
  392. package/dist/esm/utility/generate-entity-information.utility.js.map +1 -1
  393. package/dist/esm/utility/index.d.ts +1 -1
  394. package/dist/esm/utility/register-auto-dto-child.utility.d.ts +6 -0
  395. package/dist/esm/utility/register-auto-dto-child.utility.js +30 -1
  396. package/dist/esm/utility/register-auto-dto-child.utility.js.map +1 -1
  397. package/dist/esm/validator/has/paired-custom-suffixes-fields.validator.js +1 -1
  398. package/dist/esm/validator/has/paired-custom-suffixes-fields.validator.js.map +1 -1
  399. package/dist/esm/validator/must-match-one-of-schemas.validator.d.ts +1 -2
  400. package/dist/esm/validator/must-match-one-of-schemas.validator.js +4 -33
  401. package/dist/esm/validator/must-match-one-of-schemas.validator.js.map +1 -1
  402. package/package.json +31 -30
  403. package/dist/cjs/utility/api/get-default-string-format-properties.utility.js.map +0 -1
  404. package/dist/esm/utility/api/get-default-string-format-properties.utility.js.map +0 -1
@@ -1,11 +1,13 @@
1
- import { DEFAULT_STRING_FORMAT_PROPERTY_API_INTERFACE_CONSTANT } from '../../constant/interface/api/property/default-string-format.constant.js';
1
+ import { DEFAULT_STRING_FORMAT_PROPERTY_API_INTERFACE_CONSTANT } from '../../../constant/interface/api/property/default-string-format.constant.js';
2
2
  import cloneDeep from 'lodash/cloneDeep.js';
3
+ import { ApplyGetDefaultStringFormatPropertiesCustomizer } from './customizer/apply.utility.js';
3
4
 
4
5
  /**
5
6
  * Returns default format properties for supported string types (EMAIL, IP, URL, UUID).
6
7
  * This utility provides standard validation rules including pattern, length constraints,
7
8
  * example values and descriptions for common string formats.
8
9
  * @param {TApiPropertyDefaultStringFormat} format - The string format type (EMAIL, IP, URL, or UUID)
10
+ * @param {TApiGetDefaultStringFormatPropertiesParameters<TFormat>} parameters - Optional format-specific settings.
9
11
  * @returns {TApiPropertyDefaultStringFormatProperties} Default properties for the specified format
10
12
  * @example
11
13
  * ```typescript
@@ -19,11 +21,12 @@ import cloneDeep from 'lodash/cloneDeep.js';
19
21
  * // pattern: "/^([a-zA-Z0-9_\\-.+])+@([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,}$/"
20
22
  * // }
21
23
  * ```
24
+ * @template TFormat - Default string format type.
22
25
  */
23
- function GetDefaultStringFormatProperties(format) {
24
- const properties = DEFAULT_STRING_FORMAT_PROPERTY_API_INTERFACE_CONSTANT.DEFAULT_FORMAT_PROPERTIES[format];
25
- return cloneDeep(properties);
26
+ function GetDefaultStringFormatProperties(format, ...parameters) {
27
+ const properties = cloneDeep(DEFAULT_STRING_FORMAT_PROPERTY_API_INTERFACE_CONSTANT.DEFAULT_FORMAT_PROPERTIES[format]);
28
+ return ApplyGetDefaultStringFormatPropertiesCustomizer(format, properties, ...parameters);
26
29
  }
27
30
 
28
31
  export { GetDefaultStringFormatProperties };
29
- //# sourceMappingURL=get-default-string-format-properties.utility.js.map
32
+ //# sourceMappingURL=utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility.js","sources":["../../../../../../src/utility/api/get-default-string-format-properties/utility.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAQA;;;;;;;;;;;;;;;;;;;;AAoBG;SACa,gCAAgC,CAAwD,MAAe,EAAE,GAAG,UAAmE,EAAA;IAC9L,MAAM,UAAU,GAA8C,SAAS,CAAC,qDAAqD,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAEhK,OAAO,+CAA+C,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC;AAC1F;;;;"}
@@ -1,4 +1,5 @@
1
1
  export * from './controller';
2
+ export * from './discriminator';
2
3
  export { FilterOrderByFromEntity } from './filter-order-by-from-entity.utility';
3
- export { GetDefaultStringFormatProperties } from './get-default-string-format-properties.utility';
4
+ export * from './get-default-string-format-properties';
4
5
  export * from './route';
@@ -19,8 +19,12 @@ import '../../../enum/decorator/api/route-type.enum.js';
19
19
  import { applyDecorators } from '@nestjs/common';
20
20
  import { ROUTE_ARGS_METADATA, PARAMTYPES_METADATA } from '@nestjs/common/constants.js';
21
21
  import { RouteParamtypes } from '@nestjs/common/enums/route-paramtypes.enum.js';
22
- import { ApiExtraModels } from '@nestjs/swagger';
22
+ import { ApiExtraModels, ApiBody } from '@nestjs/swagger';
23
23
  import { ApiControllerGetDto } from '../controller/get/dto.utility.js';
24
+ import { ApiRouteBuildDiscriminatedDtoOpenApiSchema } from './discriminator/build-open-api-schema.utility.js';
25
+ import { ApiRouteIsDiscriminatedDtoProperties } from './discriminator/is-dto-properties.utility.js';
26
+ import '@nestjs/swagger/dist/constants.js';
27
+ import { ApiRouteCollectDtoWithRegisteredChildren } from './dto/collect-with-registered-children.utility.js';
24
28
  import { GenerateEntityInformation } from '../../generate-entity-information.utility.js';
25
29
 
26
30
  /**
@@ -35,12 +39,14 @@ import { GenerateEntityInformation } from '../../generate-entity-information.uti
35
39
  */
36
40
  function ApiRouteApplyDtoMetadata(target, propertyKey, metadata, runtimeProperties, descriptor) {
37
41
  const bodyDto = resolveRequestDto(metadata, runtimeProperties, EApiDtoType.BODY);
38
- const parametersDto = resolveRequestDto(metadata, runtimeProperties, EApiDtoType.PARAMETERS);
39
- const queryDto = resolveRequestDto(metadata, runtimeProperties, EApiDtoType.QUERY);
42
+ const parametersDtoConfig = resolveRequestDto(metadata, runtimeProperties, EApiDtoType.PARAMETERS);
43
+ const queryDtoConfig = resolveRequestDto(metadata, runtimeProperties, EApiDtoType.QUERY);
44
+ const parametersDto = ApiRouteIsDiscriminatedDtoProperties(parametersDtoConfig) ? undefined : parametersDtoConfig;
45
+ const queryDto = ApiRouteIsDiscriminatedDtoProperties(queryDtoConfig) ? undefined : queryDtoConfig;
40
46
  const routeArgumentsMetadata = Reflect.getMetadata(ROUTE_ARGS_METADATA, target.constructor, propertyKey);
41
47
  const parameterTypes = [...(Reflect.getMetadata(PARAMTYPES_METADATA, target, propertyKey) ?? [])];
42
48
  for (const { dto, parameterType } of [
43
- { dto: bodyDto, parameterType: RouteParamtypes.BODY },
49
+ { dto: ApiRouteIsDiscriminatedDtoProperties(bodyDto) ? Object : bodyDto, parameterType: RouteParamtypes.BODY },
44
50
  { dto: parametersDto, parameterType: RouteParamtypes.PARAM },
45
51
  { dto: queryDto, parameterType: RouteParamtypes.QUERY },
46
52
  ]) {
@@ -57,11 +63,19 @@ function ApiRouteApplyDtoMetadata(target, propertyKey, metadata, runtimeProperti
57
63
  }
58
64
  const requestDtos = [];
59
65
  for (const dto of [bodyDto, parametersDto, queryDto]) {
60
- if (dto) {
61
- requestDtos.push(dto);
66
+ if (ApiRouteIsDiscriminatedDtoProperties(dto)) {
67
+ ApiRouteCollectDtoWithRegisteredChildren(requestDtos, dto.type);
68
+ }
69
+ else if (dto) {
70
+ ApiRouteCollectDtoWithRegisteredChildren(requestDtos, dto);
62
71
  }
63
72
  }
64
73
  const swaggerDecorators = requestDtos.length > 0 ? [ApiExtraModels(...requestDtos)] : [];
74
+ if (ApiRouteIsDiscriminatedDtoProperties(bodyDto)) {
75
+ swaggerDecorators.push(ApiBody({
76
+ schema: ApiRouteBuildDiscriminatedDtoOpenApiSchema(bodyDto, "ApiRouteCustom body"),
77
+ }));
78
+ }
65
79
  if (swaggerDecorators.length > 0) {
66
80
  applyDecorators(...swaggerDecorators)(target, propertyKey, descriptor);
67
81
  }
@@ -72,7 +86,7 @@ function ApiRouteApplyDtoMetadata(target, propertyKey, metadata, runtimeProperti
72
86
  * @param {IApiRouteMetadata<E>} metadata - Route metadata used for entity and route type.
73
87
  * @param {IApiRouteRuntimeProperties<E, undefined>} runtimeProperties - Runtime route config containing dto/autoDto.
74
88
  * @param {Exclude<EApiDtoType, EApiDtoType.RESPONSE>} dtoType - Request DTO target.
75
- * @returns {Type<unknown> | undefined} Resolved request DTO.
89
+ * @returns {TApiRouteRequestDto | undefined} Resolved request DTO.
76
90
  */
77
91
  function resolveRequestDto(metadata, runtimeProperties, dtoType) {
78
92
  const configuredDto = runtimeProperties.dto?.[dtoType];
@@ -1 +1 @@
1
- {"version":3,"file":"apply-dto-metadata.utility.js","sources":["../../../../../../src/utility/api/route/apply-dto-metadata.utility.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apply-dto-metadata.utility.js","sources":["../../../../../../src/utility/api/route/apply-dto-metadata.utility.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { SchemaObject } from '@nestjs/swagger/dist/interfaces/open-api-spec.interface';
2
+ import { TApiRouteDiscriminatedDtoProperties } from '../../../../type/decorator/api/route';
3
+ /**
4
+ * Builds an OpenAPI oneOf schema with discriminator metadata for route-level DTO variants.
5
+ * @param {TApiRouteDiscriminatedDtoProperties} properties - Route-level discriminated DTO config.
6
+ * @param {string} context - Error message context.
7
+ * @returns {SchemaObject} OpenAPI schema for a discriminated root DTO.
8
+ */
9
+ export declare function ApiRouteBuildDiscriminatedDtoOpenApiSchema(properties: TApiRouteDiscriminatedDtoProperties, context: string): SchemaObject;
@@ -0,0 +1,24 @@
1
+ import { getSchemaPath } from '@nestjs/swagger';
2
+ import { ApiRouteValidateDiscriminatedDtoProperties } from './validate-dto-properties.utility.js';
3
+
4
+ /**
5
+ * Builds an OpenAPI oneOf schema with discriminator metadata for route-level DTO variants.
6
+ * @param {TApiRouteDiscriminatedDtoProperties} properties - Route-level discriminated DTO config.
7
+ * @param {string} context - Error message context.
8
+ * @returns {SchemaObject} OpenAPI schema for a discriminated root DTO.
9
+ */
10
+ function ApiRouteBuildDiscriminatedDtoOpenApiSchema(properties, context) {
11
+ ApiRouteValidateDiscriminatedDtoProperties(properties, context);
12
+ return {
13
+ discriminator: {
14
+ mapping: Object.fromEntries(Object.entries(properties.discriminator.mapping).map(([key, value]) => [key, getSchemaPath(value)])),
15
+ propertyName: properties.discriminator.propertyName,
16
+ },
17
+ oneOf: properties.type.map((type) => {
18
+ return { $ref: getSchemaPath(type) };
19
+ }),
20
+ };
21
+ }
22
+
23
+ export { ApiRouteBuildDiscriminatedDtoOpenApiSchema };
24
+ //# sourceMappingURL=build-open-api-schema.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-open-api-schema.utility.js","sources":["../../../../../../../src/utility/api/route/discriminator/build-open-api-schema.utility.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAQA;;;;;AAKG;AACG,SAAU,0CAA0C,CAAC,UAA+C,EAAE,OAAe,EAAA;AAC1H,IAAA,0CAA0C,CAAC,UAAU,EAAE,OAAO,CAAC;IAE/D,OAAO;AACN,QAAA,aAAa,EAAE;AACd,YAAA,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAA0B,KAAuB,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3K,YAAA,YAAY,EAAE,UAAU,CAAC,aAAa,CAAC,YAAY;AACnD,SAAA;QACD,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAmB,KAAsB;YACpE,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE;AACrC,QAAA,CAAC,CAAC;KACF;AACF;;;;"}
@@ -0,0 +1,9 @@
1
+ import { TApiRouteDiscriminatedDtoProperties } from '../../../../type/decorator/api/route';
2
+ import { ValidationError } from 'class-validator';
3
+ /**
4
+ * Creates class-validator-shaped validation failure for route-level discriminator selection failures.
5
+ * @param {TApiRouteDiscriminatedDtoProperties} properties - Route-level discriminated DTO config.
6
+ * @param {unknown} payload - Request body payload.
7
+ * @returns {ValidationError} Class-validator-compatible validation failure.
8
+ */
9
+ export declare function ApiRouteCreateDiscriminatedDtoValidationFailure(properties: TApiRouteDiscriminatedDtoProperties, payload: unknown): ValidationError;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Creates class-validator-shaped validation failure for route-level discriminator selection failures.
3
+ * @param {TApiRouteDiscriminatedDtoProperties} properties - Route-level discriminated DTO config.
4
+ * @param {unknown} payload - Request body payload.
5
+ * @returns {ValidationError} Class-validator-compatible validation failure.
6
+ */
7
+ function ApiRouteCreateDiscriminatedDtoValidationFailure(properties, payload) {
8
+ const discriminatorPropertyName = properties.discriminator.propertyName;
9
+ const allowedValuesDescription = Object.keys(properties.discriminator.mapping)
10
+ .map((value) => {
11
+ return `'${value}'`;
12
+ })
13
+ .join(", ");
14
+ if (!payload || typeof payload !== "object" || Array.isArray(payload)) {
15
+ return {
16
+ constraints: {
17
+ mustMatchDiscriminatorMapping: "body must be an object",
18
+ },
19
+ property: "body",
20
+ value: payload,
21
+ };
22
+ }
23
+ const payloadAsRecord = payload;
24
+ if (!(discriminatorPropertyName in payloadAsRecord)) {
25
+ return {
26
+ constraints: {
27
+ mustMatchDiscriminatorMapping: `${discriminatorPropertyName} is missing required discriminator field '${discriminatorPropertyName}'`,
28
+ },
29
+ property: discriminatorPropertyName,
30
+ value: undefined,
31
+ };
32
+ }
33
+ const discriminatorValue = payloadAsRecord[discriminatorPropertyName];
34
+ return {
35
+ constraints: {
36
+ mustMatchDiscriminatorMapping: `${discriminatorPropertyName} has invalid discriminator value '${String(discriminatorValue)}'. must be one of: ${allowedValuesDescription}`,
37
+ },
38
+ property: discriminatorPropertyName,
39
+ value: discriminatorValue,
40
+ };
41
+ }
42
+
43
+ export { ApiRouteCreateDiscriminatedDtoValidationFailure };
44
+ //# sourceMappingURL=create-validation-failure.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-validation-failure.utility.js","sources":["../../../../../../../src/utility/api/route/discriminator/create-validation-failure.utility.ts"],"sourcesContent":[null],"names":[],"mappings":"AAGA;;;;;AAKG;AACG,SAAU,+CAA+C,CAAC,UAA+C,EAAE,OAAgB,EAAA;AAChI,IAAA,MAAM,yBAAyB,GAAW,UAAU,CAAC,aAAa,CAAC,YAAY;IAE/E,MAAM,wBAAwB,GAAW,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO;AACnF,SAAA,GAAG,CAAC,CAAC,KAAa,KAAY;QAC9B,OAAO,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAG;AACpB,IAAA,CAAC;SACA,IAAI,CAAC,IAAI,CAAC;AAEZ,IAAA,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACtE,OAAO;AACN,YAAA,WAAW,EAAE;AACZ,gBAAA,6BAA6B,EAAE,wBAAwB;AACvD,aAAA;AACD,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,KAAK,EAAE,OAAO;SACd;IACF;IAEA,MAAM,eAAe,GAA4B,OAAkC;AAEnF,IAAA,IAAI,EAAE,yBAAyB,IAAI,eAAe,CAAC,EAAE;QACpD,OAAO;AACN,YAAA,WAAW,EAAE;AACZ,gBAAA,6BAA6B,EAAE,CAAA,EAAG,yBAAyB,CAAA,0CAAA,EAA6C,yBAAyB,CAAA,CAAA,CAAG;AACpI,aAAA;AACD,YAAA,QAAQ,EAAE,yBAAyB;AACnC,YAAA,KAAK,EAAE,SAAS;SAChB;IACF;AAEA,IAAA,MAAM,kBAAkB,GAAY,eAAe,CAAC,yBAAyB,CAAC;IAE9E,OAAO;AACN,QAAA,WAAW,EAAE;YACZ,6BAA6B,EAAE,CAAA,EAAG,yBAAyB,CAAA,kCAAA,EAAqC,MAAM,CAAC,kBAAkB,CAAC,CAAA,mBAAA,EAAsB,wBAAwB,CAAA,CAAE;AAC1K,SAAA;AACD,QAAA,QAAQ,EAAE,yBAAyB;AACnC,QAAA,KAAK,EAAE,kBAAkB;KACzB;AACF;;;;"}
@@ -0,0 +1,6 @@
1
+ export { ApiRouteBuildDiscriminatedDtoOpenApiSchema } from './build-open-api-schema.utility';
2
+ export { ApiRouteCreateDiscriminatedDtoValidationFailure } from './create-validation-failure.utility';
3
+ export { ApiRouteIsDiscriminatedDtoProperties } from './is-dto-properties.utility';
4
+ export { ApiRoutePrepareDiscriminatedDtoPayload } from './prepare-payload.utility';
5
+ export { ApiRouteResolveDiscriminatedDto } from './resolve-dto.utility';
6
+ export { ApiRouteValidateDiscriminatedDtoProperties } from './validate-dto-properties.utility';
@@ -0,0 +1,7 @@
1
+ import { TApiRouteDiscriminatedDtoProperties } from '../../../../type/decorator/api/route';
2
+ /**
3
+ * Checks whether a value is a route-level discriminated DTO config.
4
+ * @param {unknown} value - Value to inspect.
5
+ * @returns {boolean} Whether the value is a discriminated DTO config.
6
+ */
7
+ export declare function ApiRouteIsDiscriminatedDtoProperties(value: unknown): value is TApiRouteDiscriminatedDtoProperties;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Checks whether a value is a route-level discriminated DTO config.
3
+ * @param {unknown} value - Value to inspect.
4
+ * @returns {boolean} Whether the value is a discriminated DTO config.
5
+ */
6
+ function ApiRouteIsDiscriminatedDtoProperties(value) {
7
+ return typeof value === "object" && value !== null && !Array.isArray(value) && "type" in value && Array.isArray(value.type) && "discriminator" in value;
8
+ }
9
+
10
+ export { ApiRouteIsDiscriminatedDtoProperties };
11
+ //# sourceMappingURL=is-dto-properties.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-dto-properties.utility.js","sources":["../../../../../../../src/utility/api/route/discriminator/is-dto-properties.utility.ts"],"sourcesContent":[null],"names":[],"mappings":"AAEA;;;;AAIG;AACG,SAAU,oCAAoC,CAAC,KAAc,EAAA;AAClE,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAE,KAA4B,CAAC,IAAI,CAAC,IAAI,eAAe,IAAI,KAAK;AAChL;;;;"}
@@ -0,0 +1,8 @@
1
+ import { TApiRouteDiscriminatedDtoProperties } from '../../../../type/decorator/api/route';
2
+ /**
3
+ * Removes the discriminator property from a root DTO payload when the config requests it.
4
+ * @param {TApiRouteDiscriminatedDtoProperties} properties - Route-level discriminated DTO config.
5
+ * @param {unknown} payload - Payload selected by the discriminator.
6
+ * @returns {unknown} Original or copied payload used for transformation/serialization.
7
+ */
8
+ export declare function ApiRoutePrepareDiscriminatedDtoPayload(properties: TApiRouteDiscriminatedDtoProperties, payload: unknown): unknown;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Removes the discriminator property from a root DTO payload when the config requests it.
3
+ * @param {TApiRouteDiscriminatedDtoProperties} properties - Route-level discriminated DTO config.
4
+ * @param {unknown} payload - Payload selected by the discriminator.
5
+ * @returns {unknown} Original or copied payload used for transformation/serialization.
6
+ */
7
+ function ApiRoutePrepareDiscriminatedDtoPayload(properties, payload) {
8
+ if (properties.discriminator.shouldKeepDiscriminatorProperty !== false || !payload || typeof payload !== "object" || Array.isArray(payload)) {
9
+ return payload;
10
+ }
11
+ return Object.fromEntries(Object.entries(payload).filter(([key]) => {
12
+ return key !== properties.discriminator.propertyName;
13
+ }));
14
+ }
15
+
16
+ export { ApiRoutePrepareDiscriminatedDtoPayload };
17
+ //# sourceMappingURL=prepare-payload.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-payload.utility.js","sources":["../../../../../../../src/utility/api/route/discriminator/prepare-payload.utility.ts"],"sourcesContent":[null],"names":[],"mappings":"AAEA;;;;;AAKG;AACG,SAAU,sCAAsC,CAAC,UAA+C,EAAE,OAAgB,EAAA;IACvH,IAAI,UAAU,CAAC,aAAa,CAAC,+BAA+B,KAAK,KAAK,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC5I,QAAA,OAAO,OAAO;IACf;AAEA,IAAA,OAAO,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,OAAkC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAoB,KAAa;AAC/F,QAAA,OAAO,GAAG,KAAK,UAAU,CAAC,aAAa,CAAC,YAAY;IACrD,CAAC,CAAC,CACF;AACF;;;;"}
@@ -0,0 +1,10 @@
1
+ import { Type } from '@nestjs/common';
2
+ import { TApiRouteDiscriminatedDtoProperties } from '../../../../type/decorator/api/route';
3
+ /**
4
+ * Selects the route DTO class for a payload using the configured discriminator mapping.
5
+ * @param {TApiRouteDiscriminatedDtoProperties} properties - Route-level discriminated DTO config.
6
+ * @param {unknown} payload - Request or response payload.
7
+ * @param {string} context - Error message context.
8
+ * @returns {Type<unknown>} Selected DTO class.
9
+ */
10
+ export declare function ApiRouteResolveDiscriminatedDto(properties: TApiRouteDiscriminatedDtoProperties, payload: unknown, context: string): Type<unknown>;
@@ -0,0 +1,33 @@
1
+ import { ErrorException } from '../../../error/exception.utility.js';
2
+ import { ApiRouteValidateDiscriminatedDtoProperties } from './validate-dto-properties.utility.js';
3
+
4
+ /**
5
+ * Selects the route DTO class for a payload using the configured discriminator mapping.
6
+ * @param {TApiRouteDiscriminatedDtoProperties} properties - Route-level discriminated DTO config.
7
+ * @param {unknown} payload - Request or response payload.
8
+ * @param {string} context - Error message context.
9
+ * @returns {Type<unknown>} Selected DTO class.
10
+ */
11
+ function ApiRouteResolveDiscriminatedDto(properties, payload, context) {
12
+ ApiRouteValidateDiscriminatedDtoProperties(properties, context);
13
+ if (!payload || typeof payload !== "object" || Array.isArray(payload)) {
14
+ throw ErrorException(`${context} discriminator payload error: payload must be an object`);
15
+ }
16
+ const payloadAsRecord = payload;
17
+ const discriminatorPropertyName = properties.discriminator.propertyName;
18
+ if (!(discriminatorPropertyName in payloadAsRecord)) {
19
+ throw ErrorException(`${context} discriminator payload error: missing required discriminator field '${discriminatorPropertyName}'`);
20
+ }
21
+ const discriminatorValue = payloadAsRecord[discriminatorPropertyName];
22
+ if (typeof discriminatorValue !== "string" || discriminatorValue === "") {
23
+ throw ErrorException(`${context} discriminator payload error: invalid discriminator value '${String(discriminatorValue)}' for field '${discriminatorPropertyName}'`);
24
+ }
25
+ const dto = properties.discriminator.mapping[discriminatorValue];
26
+ if (!dto) {
27
+ throw ErrorException(`${context} discriminator payload error: invalid discriminator value '${discriminatorValue}' for field '${discriminatorPropertyName}'`);
28
+ }
29
+ return dto;
30
+ }
31
+
32
+ export { ApiRouteResolveDiscriminatedDto };
33
+ //# sourceMappingURL=resolve-dto.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-dto.utility.js","sources":["../../../../../../../src/utility/api/route/discriminator/resolve-dto.utility.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAOA;;;;;;AAMG;SACa,+BAA+B,CAAC,UAA+C,EAAE,OAAgB,EAAE,OAAe,EAAA;AACjI,IAAA,0CAA0C,CAAC,UAAU,EAAE,OAAO,CAAC;AAE/D,IAAA,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACtE,QAAA,MAAM,cAAc,CAAC,CAAA,EAAG,OAAO,CAAA,uDAAA,CAAyD,CAAC;IAC1F;IAEA,MAAM,eAAe,GAA4B,OAAkC;AACnF,IAAA,MAAM,yBAAyB,GAAW,UAAU,CAAC,aAAa,CAAC,YAAY;AAE/E,IAAA,IAAI,EAAE,yBAAyB,IAAI,eAAe,CAAC,EAAE;QACpD,MAAM,cAAc,CAAC,CAAA,EAAG,OAAO,uEAAuE,yBAAyB,CAAA,CAAA,CAAG,CAAC;IACpI;AAEA,IAAA,MAAM,kBAAkB,GAAY,eAAe,CAAC,yBAAyB,CAAC;IAE9E,IAAI,OAAO,kBAAkB,KAAK,QAAQ,IAAI,kBAAkB,KAAK,EAAE,EAAE;AACxE,QAAA,MAAM,cAAc,CAAC,CAAA,EAAG,OAAO,CAAA,2DAAA,EAA8D,MAAM,CAAC,kBAAkB,CAAC,CAAA,aAAA,EAAgB,yBAAyB,CAAA,CAAA,CAAG,CAAC;IACrK;IAEA,MAAM,GAAG,GAA8B,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAE3F,IAAI,CAAC,GAAG,EAAE;QACT,MAAM,cAAc,CAAC,CAAA,EAAG,OAAO,CAAA,2DAAA,EAA8D,kBAAkB,CAAA,aAAA,EAAgB,yBAAyB,CAAA,CAAA,CAAG,CAAC;IAC7J;AAEA,IAAA,OAAO,GAAG;AACX;;;;"}
@@ -0,0 +1,8 @@
1
+ import { TApiRouteDiscriminatedDtoProperties } from '../../../../type/decorator/api/route';
2
+ /**
3
+ * Validates that route-level discriminator config and variant DTO classes are consistent.
4
+ * @param {TApiRouteDiscriminatedDtoProperties} properties - Route-level discriminated DTO config.
5
+ * @param {string} context - Error message context.
6
+ * @returns {void}
7
+ */
8
+ export declare function ApiRouteValidateDiscriminatedDtoProperties(properties: TApiRouteDiscriminatedDtoProperties, context: string): void;
@@ -0,0 +1,19 @@
1
+ import { ApiDiscriminatorValidateConfig } from '../../discriminator/validate/config.utility.js';
2
+
3
+ /**
4
+ * Validates that route-level discriminator config and variant DTO classes are consistent.
5
+ * @param {TApiRouteDiscriminatedDtoProperties} properties - Route-level discriminated DTO config.
6
+ * @param {string} context - Error message context.
7
+ * @returns {void}
8
+ */
9
+ function ApiRouteValidateDiscriminatedDtoProperties(properties, context) {
10
+ ApiDiscriminatorValidateConfig({
11
+ context,
12
+ discriminator: properties.discriminator,
13
+ shouldRequireDeclaredDiscriminatorProperty: true,
14
+ variants: properties.type,
15
+ });
16
+ }
17
+
18
+ export { ApiRouteValidateDiscriminatedDtoProperties };
19
+ //# sourceMappingURL=validate-dto-properties.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-dto-properties.utility.js","sources":["../../../../../../../src/utility/api/route/discriminator/validate-dto-properties.utility.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAIA;;;;;AAKG;AACG,SAAU,0CAA0C,CAAC,UAA+C,EAAE,OAAe,EAAA;AAC1H,IAAA,8BAA8B,CAAC;QAC9B,OAAO;QACP,aAAa,EAAE,UAAU,CAAC,aAAa;AACvC,QAAA,0CAA0C,EAAE,IAAI;QAChD,QAAQ,EAAE,UAAU,CAAC,IAAI;AACzB,KAAA,CAAC;AACH;;;;"}
@@ -0,0 +1,8 @@
1
+ import { Type } from '@nestjs/common';
2
+ /**
3
+ * Adds a DTO and all registered nested manual DTO children to an accumulator.
4
+ * @param {Array<Type<unknown>>} target - DTO accumulator.
5
+ * @param {Array<Type<unknown>> | Type<unknown>} dto - DTO or DTO list to add.
6
+ * @returns {void}
7
+ */
8
+ export declare function ApiRouteCollectDtoWithRegisteredChildren(target: Array<Type<unknown>>, dto: Array<Type<unknown>> | Type<unknown>): void;
@@ -0,0 +1,27 @@
1
+ import { GetRegisteredAutoDtoChildrenRecursive } from '../../../register-auto-dto-child.utility.js';
2
+
3
+ /**
4
+ * Adds a DTO and all registered nested manual DTO children to an accumulator.
5
+ * @param {Array<Type<unknown>>} target - DTO accumulator.
6
+ * @param {Array<Type<unknown>> | Type<unknown>} dto - DTO or DTO list to add.
7
+ * @returns {void}
8
+ */
9
+ function ApiRouteCollectDtoWithRegisteredChildren(target, dto) {
10
+ if (Array.isArray(dto)) {
11
+ for (const item of dto) {
12
+ ApiRouteCollectDtoWithRegisteredChildren(target, item);
13
+ }
14
+ return;
15
+ }
16
+ if (!target.includes(dto)) {
17
+ target.push(dto);
18
+ }
19
+ for (const child of GetRegisteredAutoDtoChildrenRecursive(dto.prototype)) {
20
+ if (!target.includes(child)) {
21
+ target.push(child);
22
+ }
23
+ }
24
+ }
25
+
26
+ export { ApiRouteCollectDtoWithRegisteredChildren };
27
+ //# sourceMappingURL=collect-with-registered-children.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-with-registered-children.utility.js","sources":["../../../../../../../src/utility/api/route/dto/collect-with-registered-children.utility.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAIA;;;;;AAKG;AACG,SAAU,wCAAwC,CAAC,MAA4B,EAAE,GAAyC,EAAA;AAC/H,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACvB,QAAA,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;AACvB,YAAA,wCAAwC,CAAC,MAAM,EAAE,IAAI,CAAC;QACvD;QAEA;IACD;IAEA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC1B,QAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IACjB;IAEA,KAAK,MAAM,KAAK,IAAI,qCAAqC,CAAC,GAAG,CAAC,SAAmB,CAAC,EAAE;QACnF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC5B,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACnB;IACD;AACD;;;;"}
@@ -0,0 +1 @@
1
+ export { ApiRouteCollectDtoWithRegisteredChildren } from './collect-with-registered-children.utility';
@@ -1 +1,5 @@
1
+ export { ApiRouteApplyDtoMetadata } from './apply-dto-metadata.utility';
2
+ export * from './discriminator';
3
+ export * from './dto';
1
4
  export * from './response';
5
+ export * from './validation';
@@ -43,18 +43,21 @@ function ApiRouteProjectRelationResponse(relationConfig, response) {
43
43
  return projectedItem;
44
44
  });
45
45
  }
46
- else if (response !== null && typeof response === "object" && "items" in response && Array.isArray(response.items)) {
47
- response.items = response.items.map((item) => {
48
- if (item === null || typeof item !== "object") {
49
- return item;
50
- }
51
- const projectedItem = { ...item };
52
- responses.push(projectedItem);
53
- return projectedItem;
54
- });
55
- }
56
- else if (response !== null && typeof response === "object") {
57
- responses.push(response);
46
+ else {
47
+ const responseValue = response;
48
+ if (responseValue !== null && typeof responseValue === "object" && "items" in responseValue && Array.isArray(responseValue.items)) {
49
+ responseValue.items = responseValue.items.map((item) => {
50
+ if (item === null || typeof item !== "object") {
51
+ return item;
52
+ }
53
+ const projectedItem = { ...item };
54
+ responses.push(projectedItem);
55
+ return projectedItem;
56
+ });
57
+ }
58
+ else if (responseValue !== null && typeof responseValue === "object") {
59
+ responses.push(responseValue);
60
+ }
58
61
  }
59
62
  for (const projectedResponse of responses) {
60
63
  for (const relationName of relationNames) {
@@ -66,7 +69,7 @@ function ApiRouteProjectRelationResponse(relationConfig, response) {
66
69
  projectedResponse[relationName] = relationConfig.reference.shape === EApiControllerRelationReferenceShape.SCALAR ? referenceValue : { [referenceKey]: referenceValue };
67
70
  }
68
71
  }
69
- return projectedArray ? projectedArray : response;
72
+ return projectedArray || response;
70
73
  }
71
74
 
72
75
  export { ApiRouteProjectRelationResponse };
@@ -1 +1 @@
1
- {"version":3,"file":"project-relation.utility.js","sources":["../../../../../../../src/utility/api/route/response/project-relation.utility.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAKA;;;;;;;AAOG;AACG,SAAU,+BAA+B,CAA8B,cAAiF,EAAE,QAAW,EAAA;AAC1K,IAAA,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE;AACnC,QAAA,OAAO,QAAQ;IAChB;AAEA,IAAA,MAAM,aAAa,GAAkB,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;IAC7E,MAAM,YAAY,GAAW,cAAc,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI;IACjE,MAAM,SAAS,GAAmC,EAAE;AACpD,IAAA,IAAI,cAA0C;AAE9C,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC5B,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAa,KAAa;YACxD,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC9C,gBAAA,OAAO,IAAI;YACZ;AAEA,YAAA,MAAM,aAAa,GAA4B,EAAE,GAAI,IAAgC,EAAE;AACvF,YAAA,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;AAE7B,YAAA,OAAO,aAAa;AACrB,QAAA,CAAC,CAAC;IACH;SAAO,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAE,QAAgC,CAAC,KAAK,CAAC,EAAE;AAC7I,QAAA,QAAsC,CAAC,KAAK,GAAI,QAAsC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAa,KAAa;YAC5H,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC9C,gBAAA,OAAO,IAAI;YACZ;AAEA,YAAA,MAAM,aAAa,GAA4B,EAAE,GAAI,IAAgC,EAAE;AACvF,YAAA,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;AAE7B,YAAA,OAAO,aAAa;AACrB,QAAA,CAAC,CAAC;IACH;SAAO,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAC7D,QAAA,SAAS,CAAC,IAAI,CAAC,QAAmC,CAAC;IACpD;AAEA,IAAA,KAAK,MAAM,iBAAiB,IAAI,SAAS,EAAE;AAC1C,QAAA,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE;AACzC,YAAA,MAAM,aAAa,GAAY,iBAAiB,CAAC,YAAY,CAAC;AAE9D,YAAA,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;gBAC/F;YACD;AAEA,YAAA,MAAM,cAAc,GAAa,aAAyC,CAAC,YAAY,CAAC;YACxF,iBAAiB,CAAC,YAAY,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,KAAK,KAAK,oCAAoC,CAAC,MAAM,GAAG,cAAc,GAAG,EAAE,CAAC,YAAY,GAAG,cAAc,EAAE;QACvK;IACD;IAEA,OAAO,cAAc,GAAI,cAAoB,GAAG,QAAQ;AACzD;;;;"}
1
+ {"version":3,"file":"project-relation.utility.js","sources":["../../../../../../../src/utility/api/route/response/project-relation.utility.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAKA;;;;;;;AAOG;AACG,SAAU,+BAA+B,CAA8B,cAAiF,EAAE,QAAW,EAAA;AAC1K,IAAA,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE;AACnC,QAAA,OAAO,QAAQ;IAChB;AAEA,IAAA,MAAM,aAAa,GAAkB,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;IAC7E,MAAM,YAAY,GAAW,cAAc,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI;IACjE,MAAM,SAAS,GAAmC,EAAE;AACpD,IAAA,IAAI,cAA0C;AAE9C,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC5B,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAa,KAAa;YACxD,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC9C,gBAAA,OAAO,IAAI;YACZ;AAEA,YAAA,MAAM,aAAa,GAA4B,EAAE,GAAI,IAAgC,EAAE;AACvF,YAAA,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;AAE7B,YAAA,OAAO,aAAa;AACrB,QAAA,CAAC,CAAC;IACH;SAAO;QACN,MAAM,aAAa,GAAY,QAAQ;QAEvC,IAAI,aAAa,KAAK,IAAI,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,OAAO,IAAI,aAAa,IAAI,KAAK,CAAC,OAAO,CAAE,aAAqC,CAAC,KAAK,CAAC,EAAE;AAC1J,YAAA,aAA2C,CAAC,KAAK,GAAI,aAA2C,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAa,KAAa;gBACtI,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC9C,oBAAA,OAAO,IAAI;gBACZ;AAEA,gBAAA,MAAM,aAAa,GAA4B,EAAE,GAAI,IAAgC,EAAE;AACvF,gBAAA,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;AAE7B,gBAAA,OAAO,aAAa;AACrB,YAAA,CAAC,CAAC;QACH;aAAO,IAAI,aAAa,KAAK,IAAI,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;AACvE,YAAA,SAAS,CAAC,IAAI,CAAC,aAAwC,CAAC;QACzD;IACD;AAEA,IAAA,KAAK,MAAM,iBAAiB,IAAI,SAAS,EAAE;AAC1C,QAAA,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE;AACzC,YAAA,MAAM,aAAa,GAAY,iBAAiB,CAAC,YAAY,CAAC;AAE9D,YAAA,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,SAAS,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;gBAC/F;YACD;AAEA,YAAA,MAAM,cAAc,GAAa,aAAyC,CAAC,YAAY,CAAC;YACxF,iBAAiB,CAAC,YAAY,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,KAAK,KAAK,oCAAoC,CAAC,MAAM,GAAG,cAAc,GAAG,EAAE,CAAC,YAAY,GAAG,cAAc,EAAE;QACvK;IACD;IAEA,OAAQ,cAAoB,IAAI,QAAQ;AACzC;;;;"}
@@ -1,4 +1,9 @@
1
1
  import { HttpStatus } from '@nestjs/common';
2
+ import '@nestjs/swagger';
3
+ import '@nestjs/swagger/dist/constants.js';
4
+ import { ErrorException } from '../../../error/exception.utility.js';
5
+ import { ApiRoutePrepareDiscriminatedDtoPayload } from '../discriminator/prepare-payload.utility.js';
6
+ import { ApiRouteResolveDiscriminatedDto } from '../discriminator/resolve-dto.utility.js';
2
7
  import { plainToInstance } from 'class-transformer';
3
8
 
4
9
  /**
@@ -13,6 +18,21 @@ function ApiRouteSerializeResponse(metadata, response) {
13
18
  if (!metadata.response?.serialization?.isEnabled || !metadata.response.type || metadata.response.status === HttpStatus.NO_CONTENT) {
14
19
  return response;
15
20
  }
21
+ if (Array.isArray(metadata.response.type)) {
22
+ if (!metadata.response.discriminator) {
23
+ throw ErrorException("ApiRouteSerializeResponse error: response.discriminator is required when response.type is an array");
24
+ }
25
+ const discriminatedResponseProperties = {
26
+ discriminator: metadata.response.discriminator,
27
+ type: metadata.response.type,
28
+ };
29
+ const selectedDto = ApiRouteResolveDiscriminatedDto(discriminatedResponseProperties, response, "ApiRouteSerializeResponse");
30
+ return plainToInstance(selectedDto, ApiRoutePrepareDiscriminatedDtoPayload(discriminatedResponseProperties, response), {
31
+ // eslint-disable-next-line @elsikora/typescript/naming-convention
32
+ excludeExtraneousValues: true,
33
+ strategy: "excludeAll",
34
+ });
35
+ }
16
36
  return plainToInstance(metadata.response.type, response, {
17
37
  // eslint-disable-next-line @elsikora/typescript/naming-convention
18
38
  excludeExtraneousValues: true,
@@ -1 +1 @@
1
- {"version":3,"file":"serialize.utility.js","sources":["../../../../../../../src/utility/api/route/response/serialize.utility.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAOA;;;;;;;AAOG;AACG,SAAU,yBAAyB,CAA8B,QAAgD,EAAE,QAAW,EAAA;IACnI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC,UAAU,EAAE;AAClI,QAAA,OAAO,QAAQ;IAChB;IAEA,OAAO,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAA2B,EAAE,QAAQ,EAAE;;AAE/E,QAAA,uBAAuB,EAAE,IAAI;AAC7B,QAAA,QAAQ,EAAE,YAAY;AACtB,KAAA,CAAC;AACH;;;;"}
1
+ {"version":3,"file":"serialize.utility.js","sources":["../../../../../../../src/utility/api/route/response/serialize.utility.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AAUA;;;;;;;AAOG;AACG,SAAU,yBAAyB,CAA8B,QAAgD,EAAE,QAAW,EAAA;IACnI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC,UAAU,EAAE;AAClI,QAAA,OAAO,QAAQ;IAChB;IAEA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE;AACrC,YAAA,MAAM,cAAc,CAAC,oGAAoG,CAAC;QAC3H;AAEA,QAAA,MAAM,+BAA+B,GAAwC;AAC5E,YAAA,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa;AAC9C,YAAA,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI;SAC5B;QACD,MAAM,WAAW,GAAwB,+BAA+B,CAAC,+BAA+B,EAAE,QAAQ,EAAE,2BAA2B,CAAwB;QAEvK,OAAO,eAAe,CAAC,WAAW,EAAE,sCAAsC,CAAC,+BAA+B,EAAE,QAAQ,CAAC,EAAE;;AAEtH,YAAA,uBAAuB,EAAE,IAAI;AAC7B,YAAA,QAAQ,EAAE,YAAY;AACtB,SAAA,CAAC;IACH;IAEA,OAAO,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAA2B,EAAE,QAAQ,EAAE;;AAE/E,QAAA,uBAAuB,EAAE,IAAI;AAC7B,QAAA,QAAQ,EAAE,YAAY;AACtB,KAAA,CAAC;AACH;;;;"}
@@ -0,0 +1,8 @@
1
+ import { ValidationError } from 'class-validator';
2
+ /**
3
+ * Flattens class-validator errors into the same message array shape used by Nest ValidationPipe.
4
+ * @param {Array<ValidationError>} errors - Validation errors to flatten.
5
+ * @param {string} [parentProperty] - Parent property path.
6
+ * @returns {Array<string>} Flattened validation messages.
7
+ */
8
+ export declare function ApiRouteValidationFlattenErrors(errors: Array<ValidationError>, parentProperty?: string): Array<string>;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Flattens class-validator errors into the same message array shape used by Nest ValidationPipe.
3
+ * @param {Array<ValidationError>} errors - Validation errors to flatten.
4
+ * @param {string} [parentProperty] - Parent property path.
5
+ * @returns {Array<string>} Flattened validation messages.
6
+ */
7
+ function ApiRouteValidationFlattenErrors(errors, parentProperty) {
8
+ const messages = [];
9
+ for (const error of errors) {
10
+ const propertyPath = parentProperty ? `${parentProperty}.${error.property}` : error.property;
11
+ if (error.constraints) {
12
+ messages.push(...Object.values(error.constraints).map((message) => {
13
+ return parentProperty ? message.replace(`${error.property} `, `${propertyPath} `) : message;
14
+ }));
15
+ }
16
+ if (error.children && error.children.length > 0) {
17
+ messages.push(...ApiRouteValidationFlattenErrors(error.children, propertyPath));
18
+ }
19
+ }
20
+ return messages;
21
+ }
22
+
23
+ export { ApiRouteValidationFlattenErrors };
24
+ //# sourceMappingURL=flatten-errors.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flatten-errors.utility.js","sources":["../../../../../../../src/utility/api/route/validation/flatten-errors.utility.ts"],"sourcesContent":[null],"names":[],"mappings":"AAEA;;;;;AAKG;AACG,SAAU,+BAA+B,CAAC,MAA8B,EAAE,cAAuB,EAAA;IACtG,MAAM,QAAQ,GAAkB,EAAE;AAElC,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC3B,QAAA,MAAM,YAAY,GAAW,cAAc,GAAG,GAAG,cAAc,CAAA,CAAA,EAAI,KAAK,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ;AAEpG,QAAA,IAAI,KAAK,CAAC,WAAW,EAAE;AACtB,YAAA,QAAQ,CAAC,IAAI,CACZ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,OAAe,KAAY;gBACnE,OAAO,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA,EAAG,KAAK,CAAC,QAAQ,CAAA,CAAA,CAAG,EAAE,GAAG,YAAY,CAAA,CAAA,CAAG,CAAC,GAAG,OAAO;YAC5F,CAAC,CAAC,CACF;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAChD,YAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,+BAA+B,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAChF;IACD;AAEA,IAAA,OAAO,QAAQ;AAChB;;;;"}
@@ -0,0 +1 @@
1
+ export { ApiRouteValidationFlattenErrors } from './flatten-errors.utility';
@@ -41,8 +41,8 @@ function areValuesEquivalent(left, right) {
41
41
  return left.every((value, index) => areValuesEquivalent(value, right[index]));
42
42
  }
43
43
  if (isRecord(left) && isRecord(right)) {
44
- const leftKeys = Object.keys(left).sort((a, b) => a.localeCompare(b));
45
- const rightKeys = Object.keys(right).sort((a, b) => a.localeCompare(b));
44
+ const leftKeys = Object.keys(left).toSorted((a, b) => a.localeCompare(b));
45
+ const rightKeys = Object.keys(right).toSorted((a, b) => a.localeCompare(b));
46
46
  if (!areValuesEquivalent(leftKeys, rightKeys)) {
47
47
  return false;
48
48
  }