@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.
- package/README.md +47 -0
- package/dist/cjs/class/api/authorization/bootstrap-validation.service.class.js +1 -1
- package/dist/cjs/class/api/authorization/bootstrap-validation.service.class.js.map +1 -1
- package/dist/cjs/class/api/authorization/hook/permission/cache.class.js +1 -1
- package/dist/cjs/class/api/authorization/hook/permission/cache.class.js.map +1 -1
- package/dist/cjs/class/api/authorization/hook/permission/resolver.class.js +1 -1
- package/dist/cjs/class/api/authorization/hook/permission/resolver.class.js.map +1 -1
- package/dist/cjs/class/api/authorization/iam/attachment/cache.class.js +1 -1
- package/dist/cjs/class/api/authorization/iam/attachment/cache.class.js.map +1 -1
- package/dist/cjs/class/api/authorization/iam/attachment/resolver.class.js +2 -2
- package/dist/cjs/class/api/authorization/iam/attachment/resolver.class.js.map +1 -1
- package/dist/cjs/class/api/authorization/iam/document/cache.class.js +1 -1
- package/dist/cjs/class/api/authorization/iam/document/cache.class.js.map +1 -1
- package/dist/cjs/class/api/authorization/iam/document/resolver.class.js +1 -1
- package/dist/cjs/class/api/authorization/iam/document/resolver.class.js.map +1 -1
- package/dist/cjs/class/api/authorization/runtime.class.js +2 -2
- package/dist/cjs/class/api/authorization/runtime.class.js.map +1 -1
- package/dist/cjs/class/api/route-runtime.class.d.ts +1 -0
- package/dist/cjs/class/api/route-runtime.class.js +41 -3
- package/dist/cjs/class/api/route-runtime.class.js.map +1 -1
- package/dist/cjs/constant/interface/api/property/default-string-format.constant.js +9 -0
- package/dist/cjs/constant/interface/api/property/default-string-format.constant.js.map +1 -1
- package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/constant.d.ts +5 -0
- package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/constant.js +12 -0
- package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/constant.js.map +1 -0
- package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/index.d.ts +2 -0
- package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/sign/default.constant.d.ts +2 -0
- package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/sign/default.constant.js +6 -0
- package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/sign/default.constant.js.map +1 -0
- package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/sign/index.d.ts +2 -0
- package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/sign/properties.constant.d.ts +2 -0
- package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/sign/properties.constant.js +28 -0
- package/dist/cjs/constant/utility/api/get-default-string-format-properties/bigint-string/sign/properties.constant.js.map +1 -0
- package/dist/cjs/constant/utility/api/get-default-string-format-properties/constant.d.ts +9 -0
- package/dist/cjs/constant/utility/api/get-default-string-format-properties/constant.js +12 -0
- package/dist/cjs/constant/utility/api/get-default-string-format-properties/constant.js.map +1 -0
- package/dist/cjs/constant/utility/api/get-default-string-format-properties/customizer/index.d.ts +1 -0
- package/dist/cjs/constant/utility/api/get-default-string-format-properties/customizer/map.constant.d.ts +2 -0
- package/dist/cjs/constant/utility/api/get-default-string-format-properties/customizer/map.constant.js +28 -0
- package/dist/cjs/constant/utility/api/get-default-string-format-properties/customizer/map.constant.js.map +1 -0
- package/dist/cjs/constant/utility/api/get-default-string-format-properties/index.d.ts +1 -0
- package/dist/cjs/constant/utility/api/index.d.ts +1 -0
- package/dist/cjs/constant/utility/index.d.ts +1 -0
- package/dist/cjs/decorator/api/controller/observable.decorator.js +9 -3
- package/dist/cjs/decorator/api/controller/observable.decorator.js.map +1 -1
- package/dist/cjs/decorator/api/controller/securable.decorator.js +9 -3
- package/dist/cjs/decorator/api/controller/securable.decorator.js.map +1 -1
- package/dist/cjs/decorator/api/method.decorator.js +38 -15
- package/dist/cjs/decorator/api/method.decorator.js.map +1 -1
- package/dist/cjs/decorator/api/property/boolean.decorator.d.ts +1 -1
- package/dist/cjs/decorator/api/property/boolean.decorator.js +4 -5
- package/dist/cjs/decorator/api/property/boolean.decorator.js.map +1 -1
- package/dist/cjs/decorator/api/property/date.decorator.d.ts +1 -1
- package/dist/cjs/decorator/api/property/date.decorator.js +4 -5
- package/dist/cjs/decorator/api/property/date.decorator.js.map +1 -1
- package/dist/cjs/decorator/api/property/enum.decorator.d.ts +1 -1
- package/dist/cjs/decorator/api/property/enum.decorator.js +4 -5
- package/dist/cjs/decorator/api/property/enum.decorator.js.map +1 -1
- package/dist/cjs/decorator/api/property/number.decorator.d.ts +1 -1
- package/dist/cjs/decorator/api/property/number.decorator.js +4 -5
- package/dist/cjs/decorator/api/property/number.decorator.js.map +1 -1
- package/dist/cjs/decorator/api/property/object.decorator.d.ts +1 -1
- package/dist/cjs/decorator/api/property/object.decorator.js +38 -6
- package/dist/cjs/decorator/api/property/object.decorator.js.map +1 -1
- package/dist/cjs/decorator/api/property/string.decorator.d.ts +1 -1
- package/dist/cjs/decorator/api/property/string.decorator.js +8 -6
- package/dist/cjs/decorator/api/property/string.decorator.js.map +1 -1
- package/dist/cjs/decorator/api/property/uuid.decorator.d.ts +1 -1
- package/dist/cjs/decorator/api/property/uuid.decorator.js +4 -5
- package/dist/cjs/decorator/api/property/uuid.decorator.js.map +1 -1
- package/dist/cjs/decorator/api/route-custom.decorator.js +1 -0
- package/dist/cjs/decorator/api/route-custom.decorator.js.map +1 -1
- package/dist/cjs/decorator/api/service/decorator.d.ts +1 -1
- package/dist/cjs/decorator/api/service/decorator.js +1 -1
- package/dist/cjs/decorator/api/service/observable.decorator.js +9 -3
- package/dist/cjs/decorator/api/service/observable.decorator.js.map +1 -1
- package/dist/cjs/enum/decorator/api/property/data-type.enum.d.ts +1 -0
- package/dist/cjs/enum/decorator/api/property/data-type.enum.js +1 -0
- package/dist/cjs/enum/decorator/api/property/data-type.enum.js.map +1 -1
- package/dist/cjs/enum/decorator/api/property/string-type.enum.d.ts +1 -0
- package/dist/cjs/enum/decorator/api/property/string-type.enum.js +1 -0
- package/dist/cjs/enum/decorator/api/property/string-type.enum.js.map +1 -1
- package/dist/cjs/factory/api-controller.factory.js +4 -0
- package/dist/cjs/factory/api-controller.factory.js.map +1 -1
- package/dist/cjs/index.js +25 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interceptor/correlation-id-response-body.interceptor.js +2 -8
- package/dist/cjs/interceptor/correlation-id-response-body.interceptor.js.map +1 -1
- package/dist/cjs/interface/decorator/api/route/response/properties.interface.d.ts +3 -1
- package/dist/cjs/interface/decorator/api/route/runtime-properties.interface.d.ts +2 -1
- package/dist/cjs/module/api/authorization.module.js +1 -1
- package/dist/cjs/module/api/authorization.module.js.map +1 -1
- package/dist/cjs/type/decorator/api/index.d.ts +1 -0
- package/dist/cjs/type/decorator/api/property/default/string/format/type.d.ts +1 -1
- package/dist/cjs/type/decorator/api/route/custom/dto-properties.type.d.ts +8 -0
- package/dist/cjs/type/decorator/api/route/custom/index.d.ts +1 -0
- package/dist/cjs/type/decorator/api/route/discriminated/dto-properties.type.d.ts +10 -0
- package/dist/cjs/type/decorator/api/route/discriminated/index.d.ts +1 -0
- package/dist/cjs/type/decorator/api/route/index.d.ts +2 -0
- package/dist/cjs/type/index.d.ts +1 -0
- package/dist/cjs/type/utility/api/discriminator/index.d.ts +1 -0
- package/dist/cjs/type/utility/api/discriminator/validate/config-properties.type.d.ts +8 -0
- package/dist/cjs/type/utility/api/discriminator/validate/index.d.ts +1 -0
- package/dist/cjs/type/utility/api/get-default-string-format-properties/bigint-string/index.d.ts +2 -0
- package/dist/cjs/type/utility/api/get-default-string-format-properties/bigint-string/options.type.d.ts +4 -0
- package/dist/cjs/type/utility/api/get-default-string-format-properties/bigint-string/sign/index.d.ts +2 -0
- package/dist/cjs/type/utility/api/get-default-string-format-properties/bigint-string/sign/properties.type.d.ts +2 -0
- package/dist/cjs/type/utility/api/get-default-string-format-properties/bigint-string/sign/type.d.ts +1 -0
- package/dist/cjs/type/utility/api/get-default-string-format-properties/customizer/index.d.ts +2 -0
- package/dist/cjs/type/utility/api/get-default-string-format-properties/customizer/map.type.d.ts +5 -0
- package/dist/cjs/type/utility/api/get-default-string-format-properties/customizer/type.d.ts +3 -0
- package/dist/cjs/type/utility/api/get-default-string-format-properties/index.d.ts +3 -0
- package/dist/cjs/type/utility/api/get-default-string-format-properties/options.type.d.ts +4 -0
- package/dist/cjs/type/utility/api/get-default-string-format-properties/parameters.type.d.ts +3 -0
- package/dist/cjs/type/utility/api/index.d.ts +2 -0
- package/dist/cjs/type/utility/index.d.ts +1 -1
- package/dist/cjs/utility/api/controller/apply/decorators.utility.d.ts +1 -1
- package/dist/cjs/utility/api/controller/apply/decorators.utility.js +1 -1
- package/dist/cjs/utility/api/controller/apply/metadata.utility.js +0 -1
- package/dist/cjs/utility/api/controller/apply/metadata.utility.js.map +1 -1
- package/dist/cjs/utility/api/controller/get/dto.utility.js +1 -0
- package/dist/cjs/utility/api/controller/get/dto.utility.js.map +1 -1
- package/dist/cjs/utility/api/controller/get-list/transform/filter.utility.d.ts +1 -1
- package/dist/cjs/utility/api/controller/get-list/transform/filter.utility.js +1 -1
- package/dist/cjs/utility/api/controller/get-list/transform/operation.utility.d.ts +2 -2
- package/dist/cjs/utility/api/controller/get-list/transform/operation.utility.js +2 -2
- package/dist/cjs/utility/api/controller/write/dto-swagger.utility.js +7 -3
- package/dist/cjs/utility/api/controller/write/dto-swagger.utility.js.map +1 -1
- package/dist/cjs/utility/api/discriminator/index.d.ts +1 -0
- package/dist/cjs/utility/api/discriminator/validate/config.utility.d.ts +7 -0
- package/dist/cjs/utility/api/discriminator/validate/config.utility.js +54 -0
- package/dist/cjs/utility/api/discriminator/validate/config.utility.js.map +1 -0
- package/dist/cjs/utility/api/discriminator/validate/index.d.ts +1 -0
- package/dist/cjs/utility/api/get-default-string-format-properties/bigint-string/apply-options.utility.d.ts +9 -0
- package/dist/cjs/utility/api/get-default-string-format-properties/bigint-string/apply-options.utility.js +20 -0
- package/dist/cjs/utility/api/get-default-string-format-properties/bigint-string/apply-options.utility.js.map +1 -0
- package/dist/cjs/utility/api/get-default-string-format-properties/bigint-string/index.d.ts +1 -0
- package/dist/cjs/utility/api/get-default-string-format-properties/customizer/apply.utility.d.ts +11 -0
- package/dist/cjs/utility/api/get-default-string-format-properties/customizer/apply.utility.js +20 -0
- package/dist/cjs/utility/api/get-default-string-format-properties/customizer/apply.utility.js.map +1 -0
- package/dist/cjs/utility/api/get-default-string-format-properties/customizer/index.d.ts +1 -0
- package/dist/cjs/utility/api/get-default-string-format-properties/index.d.ts +1 -0
- package/dist/cjs/utility/api/{get-default-string-format-properties.utility.d.ts → get-default-string-format-properties/utility.d.ts} +5 -2
- package/dist/cjs/utility/api/{get-default-string-format-properties.utility.js → get-default-string-format-properties/utility.js} +8 -5
- package/dist/cjs/utility/api/get-default-string-format-properties/utility.js.map +1 -0
- package/dist/cjs/utility/api/index.d.ts +2 -1
- package/dist/cjs/utility/api/route/apply-dto-metadata.utility.js +20 -6
- package/dist/cjs/utility/api/route/apply-dto-metadata.utility.js.map +1 -1
- package/dist/cjs/utility/api/route/discriminator/build-open-api-schema.utility.d.ts +9 -0
- package/dist/cjs/utility/api/route/discriminator/build-open-api-schema.utility.js +26 -0
- package/dist/cjs/utility/api/route/discriminator/build-open-api-schema.utility.js.map +1 -0
- package/dist/cjs/utility/api/route/discriminator/create-validation-failure.utility.d.ts +9 -0
- package/dist/cjs/utility/api/route/discriminator/create-validation-failure.utility.js +46 -0
- package/dist/cjs/utility/api/route/discriminator/create-validation-failure.utility.js.map +1 -0
- package/dist/cjs/utility/api/route/discriminator/index.d.ts +6 -0
- package/dist/cjs/utility/api/route/discriminator/is-dto-properties.utility.d.ts +7 -0
- package/dist/cjs/utility/api/route/discriminator/is-dto-properties.utility.js +13 -0
- package/dist/cjs/utility/api/route/discriminator/is-dto-properties.utility.js.map +1 -0
- package/dist/cjs/utility/api/route/discriminator/prepare-payload.utility.d.ts +8 -0
- package/dist/cjs/utility/api/route/discriminator/prepare-payload.utility.js +19 -0
- package/dist/cjs/utility/api/route/discriminator/prepare-payload.utility.js.map +1 -0
- package/dist/cjs/utility/api/route/discriminator/resolve-dto.utility.d.ts +10 -0
- package/dist/cjs/utility/api/route/discriminator/resolve-dto.utility.js +35 -0
- package/dist/cjs/utility/api/route/discriminator/resolve-dto.utility.js.map +1 -0
- package/dist/cjs/utility/api/route/discriminator/validate-dto-properties.utility.d.ts +8 -0
- package/dist/cjs/utility/api/route/discriminator/validate-dto-properties.utility.js +21 -0
- package/dist/cjs/utility/api/route/discriminator/validate-dto-properties.utility.js.map +1 -0
- package/dist/cjs/utility/api/route/dto/collect-with-registered-children.utility.d.ts +8 -0
- package/dist/cjs/utility/api/route/dto/collect-with-registered-children.utility.js +29 -0
- package/dist/cjs/utility/api/route/dto/collect-with-registered-children.utility.js.map +1 -0
- package/dist/cjs/utility/api/route/dto/index.d.ts +1 -0
- package/dist/cjs/utility/api/route/index.d.ts +4 -0
- package/dist/cjs/utility/api/route/response/project-relation.utility.js +16 -13
- package/dist/cjs/utility/api/route/response/project-relation.utility.js.map +1 -1
- package/dist/cjs/utility/api/route/response/serialize.utility.js +20 -0
- package/dist/cjs/utility/api/route/response/serialize.utility.js.map +1 -1
- package/dist/cjs/utility/api/route/validation/flatten-errors.utility.d.ts +8 -0
- package/dist/cjs/utility/api/route/validation/flatten-errors.utility.js +26 -0
- package/dist/cjs/utility/api/route/validation/flatten-errors.utility.js.map +1 -0
- package/dist/cjs/utility/api/route/validation/index.d.ts +1 -0
- package/dist/cjs/utility/authorization/scope-merge-where.utility.js +2 -2
- package/dist/cjs/utility/authorization/scope-merge-where.utility.js.map +1 -1
- package/dist/cjs/utility/database/typeorm/is/foreign-key-violation.utility.js +1 -4
- package/dist/cjs/utility/database/typeorm/is/foreign-key-violation.utility.js.map +1 -1
- package/dist/cjs/utility/database/typeorm/is/unique-violation.utility.js +1 -4
- package/dist/cjs/utility/database/typeorm/is/unique-violation.utility.js.map +1 -1
- package/dist/cjs/utility/dto/build-decorator.utility.js +1 -3
- package/dist/cjs/utility/dto/build-decorator.utility.js.map +1 -1
- package/dist/cjs/utility/dto/manual/property-metadata.utility.js +1 -1
- package/dist/cjs/utility/dto/manual/property-metadata.utility.js.map +1 -1
- package/dist/cjs/utility/generate-entity-information.utility.js +8 -15
- package/dist/cjs/utility/generate-entity-information.utility.js.map +1 -1
- package/dist/cjs/utility/index.d.ts +1 -1
- package/dist/cjs/utility/register-auto-dto-child.utility.d.ts +6 -0
- package/dist/cjs/utility/register-auto-dto-child.utility.js +30 -0
- package/dist/cjs/utility/register-auto-dto-child.utility.js.map +1 -1
- package/dist/cjs/validator/has/paired-custom-suffixes-fields.validator.js +1 -1
- package/dist/cjs/validator/has/paired-custom-suffixes-fields.validator.js.map +1 -1
- package/dist/cjs/validator/must-match-one-of-schemas.validator.d.ts +1 -2
- package/dist/cjs/validator/must-match-one-of-schemas.validator.js +4 -33
- package/dist/cjs/validator/must-match-one-of-schemas.validator.js.map +1 -1
- package/dist/esm/class/api/authorization/bootstrap-validation.service.class.js +2 -2
- package/dist/esm/class/api/authorization/bootstrap-validation.service.class.js.map +1 -1
- package/dist/esm/class/api/authorization/hook/permission/cache.class.js +1 -1
- package/dist/esm/class/api/authorization/hook/permission/cache.class.js.map +1 -1
- package/dist/esm/class/api/authorization/hook/permission/resolver.class.js +2 -2
- package/dist/esm/class/api/authorization/hook/permission/resolver.class.js.map +1 -1
- package/dist/esm/class/api/authorization/iam/attachment/cache.class.js +1 -1
- package/dist/esm/class/api/authorization/iam/attachment/cache.class.js.map +1 -1
- package/dist/esm/class/api/authorization/iam/attachment/resolver.class.js +3 -3
- package/dist/esm/class/api/authorization/iam/attachment/resolver.class.js.map +1 -1
- package/dist/esm/class/api/authorization/iam/document/cache.class.js +1 -1
- package/dist/esm/class/api/authorization/iam/document/cache.class.js.map +1 -1
- package/dist/esm/class/api/authorization/iam/document/resolver.class.js +2 -2
- package/dist/esm/class/api/authorization/iam/document/resolver.class.js.map +1 -1
- package/dist/esm/class/api/authorization/runtime.class.js +2 -2
- package/dist/esm/class/api/authorization/runtime.class.js.map +1 -1
- package/dist/esm/class/api/route-runtime.class.d.ts +1 -0
- package/dist/esm/class/api/route-runtime.class.js +41 -3
- package/dist/esm/class/api/route-runtime.class.js.map +1 -1
- package/dist/esm/constant/interface/api/property/default-string-format.constant.js +9 -0
- package/dist/esm/constant/interface/api/property/default-string-format.constant.js.map +1 -1
- package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/constant.d.ts +5 -0
- package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/constant.js +10 -0
- package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/constant.js.map +1 -0
- package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/index.d.ts +2 -0
- package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/sign/default.constant.d.ts +2 -0
- package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/sign/default.constant.js +4 -0
- package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/sign/default.constant.js.map +1 -0
- package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/sign/index.d.ts +2 -0
- package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/sign/properties.constant.d.ts +2 -0
- package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/sign/properties.constant.js +26 -0
- package/dist/esm/constant/utility/api/get-default-string-format-properties/bigint-string/sign/properties.constant.js.map +1 -0
- package/dist/esm/constant/utility/api/get-default-string-format-properties/constant.d.ts +9 -0
- package/dist/esm/constant/utility/api/get-default-string-format-properties/constant.js +10 -0
- package/dist/esm/constant/utility/api/get-default-string-format-properties/constant.js.map +1 -0
- package/dist/esm/constant/utility/api/get-default-string-format-properties/customizer/index.d.ts +1 -0
- package/dist/esm/constant/utility/api/get-default-string-format-properties/customizer/map.constant.d.ts +2 -0
- package/dist/esm/constant/utility/api/get-default-string-format-properties/customizer/map.constant.js +26 -0
- package/dist/esm/constant/utility/api/get-default-string-format-properties/customizer/map.constant.js.map +1 -0
- package/dist/esm/constant/utility/api/get-default-string-format-properties/index.d.ts +1 -0
- package/dist/esm/constant/utility/api/index.d.ts +1 -0
- package/dist/esm/constant/utility/index.d.ts +1 -0
- package/dist/esm/decorator/api/controller/observable.decorator.js +9 -3
- package/dist/esm/decorator/api/controller/observable.decorator.js.map +1 -1
- package/dist/esm/decorator/api/controller/securable.decorator.js +9 -3
- package/dist/esm/decorator/api/controller/securable.decorator.js.map +1 -1
- package/dist/esm/decorator/api/method.decorator.js +31 -8
- package/dist/esm/decorator/api/method.decorator.js.map +1 -1
- package/dist/esm/decorator/api/property/boolean.decorator.d.ts +1 -1
- package/dist/esm/decorator/api/property/boolean.decorator.js +4 -5
- package/dist/esm/decorator/api/property/boolean.decorator.js.map +1 -1
- package/dist/esm/decorator/api/property/date.decorator.d.ts +1 -1
- package/dist/esm/decorator/api/property/date.decorator.js +4 -5
- package/dist/esm/decorator/api/property/date.decorator.js.map +1 -1
- package/dist/esm/decorator/api/property/enum.decorator.d.ts +1 -1
- package/dist/esm/decorator/api/property/enum.decorator.js +4 -5
- package/dist/esm/decorator/api/property/enum.decorator.js.map +1 -1
- package/dist/esm/decorator/api/property/number.decorator.d.ts +1 -1
- package/dist/esm/decorator/api/property/number.decorator.js +4 -5
- package/dist/esm/decorator/api/property/number.decorator.js.map +1 -1
- package/dist/esm/decorator/api/property/object.decorator.d.ts +1 -1
- package/dist/esm/decorator/api/property/object.decorator.js +38 -6
- package/dist/esm/decorator/api/property/object.decorator.js.map +1 -1
- package/dist/esm/decorator/api/property/string.decorator.d.ts +1 -1
- package/dist/esm/decorator/api/property/string.decorator.js +8 -6
- package/dist/esm/decorator/api/property/string.decorator.js.map +1 -1
- package/dist/esm/decorator/api/property/uuid.decorator.d.ts +1 -1
- package/dist/esm/decorator/api/property/uuid.decorator.js +4 -5
- package/dist/esm/decorator/api/property/uuid.decorator.js.map +1 -1
- package/dist/esm/decorator/api/route-custom.decorator.js +1 -0
- package/dist/esm/decorator/api/route-custom.decorator.js.map +1 -1
- package/dist/esm/decorator/api/service/decorator.d.ts +1 -1
- package/dist/esm/decorator/api/service/decorator.js +1 -1
- package/dist/esm/decorator/api/service/observable.decorator.js +9 -3
- package/dist/esm/decorator/api/service/observable.decorator.js.map +1 -1
- package/dist/esm/enum/decorator/api/property/data-type.enum.d.ts +1 -0
- package/dist/esm/enum/decorator/api/property/data-type.enum.js +1 -0
- package/dist/esm/enum/decorator/api/property/data-type.enum.js.map +1 -1
- package/dist/esm/enum/decorator/api/property/string-type.enum.d.ts +1 -0
- package/dist/esm/enum/decorator/api/property/string-type.enum.js +1 -0
- package/dist/esm/enum/decorator/api/property/string-type.enum.js.map +1 -1
- package/dist/esm/factory/api-controller.factory.js +4 -0
- package/dist/esm/factory/api-controller.factory.js.map +1 -1
- package/dist/esm/index.js +13 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interceptor/correlation-id-response-body.interceptor.js +2 -8
- package/dist/esm/interceptor/correlation-id-response-body.interceptor.js.map +1 -1
- package/dist/esm/interface/decorator/api/route/response/properties.interface.d.ts +3 -1
- package/dist/esm/interface/decorator/api/route/runtime-properties.interface.d.ts +2 -1
- package/dist/esm/module/api/authorization.module.js +1 -1
- package/dist/esm/module/api/authorization.module.js.map +1 -1
- package/dist/esm/type/decorator/api/index.d.ts +1 -0
- package/dist/esm/type/decorator/api/property/default/string/format/type.d.ts +1 -1
- package/dist/esm/type/decorator/api/route/custom/dto-properties.type.d.ts +8 -0
- package/dist/esm/type/decorator/api/route/custom/index.d.ts +1 -0
- package/dist/esm/type/decorator/api/route/discriminated/dto-properties.type.d.ts +10 -0
- package/dist/esm/type/decorator/api/route/discriminated/index.d.ts +1 -0
- package/dist/esm/type/decorator/api/route/index.d.ts +2 -0
- package/dist/esm/type/index.d.ts +1 -0
- package/dist/esm/type/utility/api/discriminator/index.d.ts +1 -0
- package/dist/esm/type/utility/api/discriminator/validate/config-properties.type.d.ts +8 -0
- package/dist/esm/type/utility/api/discriminator/validate/index.d.ts +1 -0
- package/dist/esm/type/utility/api/get-default-string-format-properties/bigint-string/index.d.ts +2 -0
- package/dist/esm/type/utility/api/get-default-string-format-properties/bigint-string/options.type.d.ts +4 -0
- package/dist/esm/type/utility/api/get-default-string-format-properties/bigint-string/sign/index.d.ts +2 -0
- package/dist/esm/type/utility/api/get-default-string-format-properties/bigint-string/sign/properties.type.d.ts +2 -0
- package/dist/esm/type/utility/api/get-default-string-format-properties/bigint-string/sign/type.d.ts +1 -0
- package/dist/esm/type/utility/api/get-default-string-format-properties/customizer/index.d.ts +2 -0
- package/dist/esm/type/utility/api/get-default-string-format-properties/customizer/map.type.d.ts +5 -0
- package/dist/esm/type/utility/api/get-default-string-format-properties/customizer/type.d.ts +3 -0
- package/dist/esm/type/utility/api/get-default-string-format-properties/index.d.ts +3 -0
- package/dist/esm/type/utility/api/get-default-string-format-properties/options.type.d.ts +4 -0
- package/dist/esm/type/utility/api/get-default-string-format-properties/parameters.type.d.ts +3 -0
- package/dist/esm/type/utility/api/index.d.ts +2 -0
- package/dist/esm/type/utility/index.d.ts +1 -1
- package/dist/esm/utility/api/controller/apply/decorators.utility.d.ts +1 -1
- package/dist/esm/utility/api/controller/apply/decorators.utility.js +1 -1
- package/dist/esm/utility/api/controller/apply/metadata.utility.js +0 -1
- package/dist/esm/utility/api/controller/apply/metadata.utility.js.map +1 -1
- package/dist/esm/utility/api/controller/get/dto.utility.js +1 -0
- package/dist/esm/utility/api/controller/get/dto.utility.js.map +1 -1
- package/dist/esm/utility/api/controller/get-list/transform/filter.utility.d.ts +1 -1
- package/dist/esm/utility/api/controller/get-list/transform/filter.utility.js +1 -1
- package/dist/esm/utility/api/controller/get-list/transform/operation.utility.d.ts +2 -2
- package/dist/esm/utility/api/controller/get-list/transform/operation.utility.js +2 -2
- package/dist/esm/utility/api/controller/write/dto-swagger.utility.js +7 -3
- package/dist/esm/utility/api/controller/write/dto-swagger.utility.js.map +1 -1
- package/dist/esm/utility/api/discriminator/index.d.ts +1 -0
- package/dist/esm/utility/api/discriminator/validate/config.utility.d.ts +7 -0
- package/dist/esm/utility/api/discriminator/validate/config.utility.js +52 -0
- package/dist/esm/utility/api/discriminator/validate/config.utility.js.map +1 -0
- package/dist/esm/utility/api/discriminator/validate/index.d.ts +1 -0
- package/dist/esm/utility/api/get-default-string-format-properties/bigint-string/apply-options.utility.d.ts +9 -0
- package/dist/esm/utility/api/get-default-string-format-properties/bigint-string/apply-options.utility.js +18 -0
- package/dist/esm/utility/api/get-default-string-format-properties/bigint-string/apply-options.utility.js.map +1 -0
- package/dist/esm/utility/api/get-default-string-format-properties/bigint-string/index.d.ts +1 -0
- package/dist/esm/utility/api/get-default-string-format-properties/customizer/apply.utility.d.ts +11 -0
- package/dist/esm/utility/api/get-default-string-format-properties/customizer/apply.utility.js +18 -0
- package/dist/esm/utility/api/get-default-string-format-properties/customizer/apply.utility.js.map +1 -0
- package/dist/esm/utility/api/get-default-string-format-properties/customizer/index.d.ts +1 -0
- package/dist/esm/utility/api/get-default-string-format-properties/index.d.ts +1 -0
- package/dist/esm/utility/api/{get-default-string-format-properties.utility.d.ts → get-default-string-format-properties/utility.d.ts} +5 -2
- package/dist/esm/utility/api/{get-default-string-format-properties.utility.js → get-default-string-format-properties/utility.js} +8 -5
- package/dist/esm/utility/api/get-default-string-format-properties/utility.js.map +1 -0
- package/dist/esm/utility/api/index.d.ts +2 -1
- package/dist/esm/utility/api/route/apply-dto-metadata.utility.js +21 -7
- package/dist/esm/utility/api/route/apply-dto-metadata.utility.js.map +1 -1
- package/dist/esm/utility/api/route/discriminator/build-open-api-schema.utility.d.ts +9 -0
- package/dist/esm/utility/api/route/discriminator/build-open-api-schema.utility.js +24 -0
- package/dist/esm/utility/api/route/discriminator/build-open-api-schema.utility.js.map +1 -0
- package/dist/esm/utility/api/route/discriminator/create-validation-failure.utility.d.ts +9 -0
- package/dist/esm/utility/api/route/discriminator/create-validation-failure.utility.js +44 -0
- package/dist/esm/utility/api/route/discriminator/create-validation-failure.utility.js.map +1 -0
- package/dist/esm/utility/api/route/discriminator/index.d.ts +6 -0
- package/dist/esm/utility/api/route/discriminator/is-dto-properties.utility.d.ts +7 -0
- package/dist/esm/utility/api/route/discriminator/is-dto-properties.utility.js +11 -0
- package/dist/esm/utility/api/route/discriminator/is-dto-properties.utility.js.map +1 -0
- package/dist/esm/utility/api/route/discriminator/prepare-payload.utility.d.ts +8 -0
- package/dist/esm/utility/api/route/discriminator/prepare-payload.utility.js +17 -0
- package/dist/esm/utility/api/route/discriminator/prepare-payload.utility.js.map +1 -0
- package/dist/esm/utility/api/route/discriminator/resolve-dto.utility.d.ts +10 -0
- package/dist/esm/utility/api/route/discriminator/resolve-dto.utility.js +33 -0
- package/dist/esm/utility/api/route/discriminator/resolve-dto.utility.js.map +1 -0
- package/dist/esm/utility/api/route/discriminator/validate-dto-properties.utility.d.ts +8 -0
- package/dist/esm/utility/api/route/discriminator/validate-dto-properties.utility.js +19 -0
- package/dist/esm/utility/api/route/discriminator/validate-dto-properties.utility.js.map +1 -0
- package/dist/esm/utility/api/route/dto/collect-with-registered-children.utility.d.ts +8 -0
- package/dist/esm/utility/api/route/dto/collect-with-registered-children.utility.js +27 -0
- package/dist/esm/utility/api/route/dto/collect-with-registered-children.utility.js.map +1 -0
- package/dist/esm/utility/api/route/dto/index.d.ts +1 -0
- package/dist/esm/utility/api/route/index.d.ts +4 -0
- package/dist/esm/utility/api/route/response/project-relation.utility.js +16 -13
- package/dist/esm/utility/api/route/response/project-relation.utility.js.map +1 -1
- package/dist/esm/utility/api/route/response/serialize.utility.js +20 -0
- package/dist/esm/utility/api/route/response/serialize.utility.js.map +1 -1
- package/dist/esm/utility/api/route/validation/flatten-errors.utility.d.ts +8 -0
- package/dist/esm/utility/api/route/validation/flatten-errors.utility.js +24 -0
- package/dist/esm/utility/api/route/validation/flatten-errors.utility.js.map +1 -0
- package/dist/esm/utility/api/route/validation/index.d.ts +1 -0
- package/dist/esm/utility/authorization/scope-merge-where.utility.js +2 -2
- package/dist/esm/utility/authorization/scope-merge-where.utility.js.map +1 -1
- package/dist/esm/utility/database/typeorm/is/foreign-key-violation.utility.js +1 -4
- package/dist/esm/utility/database/typeorm/is/foreign-key-violation.utility.js.map +1 -1
- package/dist/esm/utility/database/typeorm/is/unique-violation.utility.js +1 -4
- package/dist/esm/utility/database/typeorm/is/unique-violation.utility.js.map +1 -1
- package/dist/esm/utility/dto/build-decorator.utility.js +1 -3
- package/dist/esm/utility/dto/build-decorator.utility.js.map +1 -1
- package/dist/esm/utility/dto/manual/property-metadata.utility.js +1 -1
- package/dist/esm/utility/dto/manual/property-metadata.utility.js.map +1 -1
- package/dist/esm/utility/generate-entity-information.utility.js +8 -15
- package/dist/esm/utility/generate-entity-information.utility.js.map +1 -1
- package/dist/esm/utility/index.d.ts +1 -1
- package/dist/esm/utility/register-auto-dto-child.utility.d.ts +6 -0
- package/dist/esm/utility/register-auto-dto-child.utility.js +30 -1
- package/dist/esm/utility/register-auto-dto-child.utility.js.map +1 -1
- package/dist/esm/validator/has/paired-custom-suffixes-fields.validator.js +1 -1
- package/dist/esm/validator/has/paired-custom-suffixes-fields.validator.js.map +1 -1
- package/dist/esm/validator/must-match-one-of-schemas.validator.d.ts +1 -2
- package/dist/esm/validator/must-match-one-of-schemas.validator.js +4 -33
- package/dist/esm/validator/must-match-one-of-schemas.validator.js.map +1 -1
- package/package.json +31 -30
- package/dist/cjs/utility/api/get-default-string-format-properties.utility.js.map +0 -1
- 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 '
|
|
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
|
|
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=
|
|
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
|
|
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
|
|
39
|
-
const
|
|
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.
|
|
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 {
|
|
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":"
|
|
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';
|
|
@@ -43,18 +43,21 @@ function ApiRouteProjectRelationResponse(relationConfig, response) {
|
|
|
43
43
|
return projectedItem;
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
|
-
else
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
|
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,
|
|
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":"
|
|
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).
|
|
45
|
-
const rightKeys = Object.keys(right).
|
|
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
|
}
|