@infrab4a/connect 4.1.0-beta.7 → 4.1.0-beta.9
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/domain/catalog/models/category-collection-children.d.ts +1 -1
- package/domain/catalog/models/category-filter.d.ts +1 -1
- package/domain/catalog/models/kit-product.d.ts +1 -1
- package/domain/catalog/models/types/category-condition.type.d.ts +1 -1
- package/domain/catalog/models/types/category-metadata.type.d.ts +1 -1
- package/domain/catalog/models/types/category-product.d.ts +1 -1
- package/domain/catalog/models/types/product-evaluation.type.d.ts +1 -1
- package/domain/catalog/models/types/product-gender.type.d.ts +1 -1
- package/domain/catalog/models/types/product-metadata.type.d.ts +1 -1
- package/domain/catalog/models/types/product-review.type.d.ts +1 -1
- package/domain/catalog/models/types/shop-description.type.d.ts +1 -1
- package/domain/catalog/models/types/shop-price.type.d.ts +1 -1
- package/domain/catalog/models/types/stock.type.d.ts +1 -1
- package/domain/catalog/models/types/variant-grade.type.d.ts +1 -1
- package/domain/catalog/models/variant.d.ts +1 -1
- package/domain/catalog/models/wishlist.d.ts +2 -0
- package/domain/catalog/repositories/product.repository.d.ts +2 -2
- package/domain/generic/model/base.model.d.ts +1 -1
- package/domain/generic/model/types/identifier-model.type.d.ts +3 -3
- package/domain/generic/model/types/model-base-structure.type.d.ts +2 -2
- package/domain/generic/model/types/non-function-properties.type.d.ts +6 -6
- package/domain/generic/model/types/non-function-property-name.type.d.ts +5 -5
- package/domain/generic/repository/create.repository.d.ts +1 -1
- package/domain/generic/repository/crud.repository.d.ts +2 -2
- package/domain/generic/repository/delete.repository.d.ts +1 -1
- package/domain/generic/repository/find.repository.d.ts +1 -1
- package/domain/generic/repository/get.repository.d.ts +1 -1
- package/domain/generic/repository/read.repository.d.ts +2 -2
- package/domain/generic/repository/types/repository-find-filters.type.d.ts +4 -4
- package/domain/generic/repository/types/repository-find-result.type.d.ts +2 -2
- package/domain/generic/repository/types/repository-limit-options.type.d.ts +1 -1
- package/domain/generic/repository/types/repository-order-by-list.type.d.ts +2 -2
- package/domain/generic/repository/types/repository-update-params.type.d.ts +3 -3
- package/domain/generic/repository/types/where-options.type.d.ts +1 -1
- package/domain/generic/repository/update.repository.d.ts +1 -1
- package/domain/location/models/types/location-bound.type.d.ts +1 -1
- package/domain/location/models/types/location-geometry.type.d.ts +1 -1
- package/domain/location/models/types/location-lat-lng.type.d.ts +1 -1
- package/domain/shop-settings/helpers/beauty-questions.helper.d.ts +1 -1
- package/domain/shop-settings/models/types/banner.type.d.ts +1 -1
- package/domain/shop-settings/models/types/benefit.type.d.ts +1 -1
- package/domain/shop-settings/models/types/campaign-page.d.ts +4 -4
- package/domain/shop-settings/models/types/home-data.type.d.ts +3 -3
- package/domain/shop-settings/models/types/index.d.ts +2 -0
- package/domain/shop-settings/models/types/landing-page.d.ts +8 -0
- package/domain/shop-settings/models/types/menu-nav.type.d.ts +1 -1
- package/domain/shop-settings/models/types/sections.type.d.ts +14 -11
- package/domain/shop-settings/models/types/shop-home.d.ts +2 -2
- package/domain/shop-settings/models/types/shop-section.type.d.ts +1 -1
- package/domain/shop-settings/models/types/sub-menu.type.d.ts +2 -2
- package/domain/shopping/models/types/payment-address.type.d.ts +1 -1
- package/domain/shopping/models/types/payment-billing.type.d.ts +1 -1
- package/domain/shopping/models/types/payment-card.type.d.ts +1 -1
- package/domain/shopping/models/types/payment-customer.type.d.ts +1 -1
- package/domain/shopping/models/types/payment-document.type.d.ts +1 -1
- package/domain/shopping/models/types/payment-item.type.d.ts +1 -1
- package/domain/shopping/models/types/payment-shipping.type.d.ts +1 -1
- package/domain/users/models/beauty-profile.d.ts +1 -1
- package/domain/users/models/subscription/edition.d.ts +1 -1
- package/domain/users/models/subscription/payment.d.ts +1 -1
- package/domain/users/models/user-address.d.ts +1 -1
- package/domain/users/models/user-payment-method.d.ts +1 -1
- package/domain/users/services/authentication.service.d.ts +1 -1
- package/domain/users/services/register.service.d.ts +1 -1
- package/domain/users/services/types/basic-user-data.type.d.ts +1 -1
- package/domain/users/use-cases/authentication.d.ts +2 -2
- package/domain/users/use-cases/register.d.ts +1 -1
- package/{esm2022 → esm2020}/domain/catalog/models/wishlist.mjs +1 -1
- package/esm2020/domain/shop-settings/models/types/index.mjs +17 -0
- package/esm2020/domain/shop-settings/models/types/landing-page.mjs +2 -0
- package/{esm2022 → esm2020}/domain/shop-settings/models/types/sections.type.mjs +1 -1
- package/{esm2022 → esm2020}/infra/hasura-graphql/mixins/helpers/attribute-option.helper.mjs +32 -32
- package/esm2020/infra/hasura-graphql/mixins/helpers/bind-filter-query.helper.mjs +71 -0
- package/esm2020/infra/hasura-graphql/mixins/helpers/filter-option.helper.mjs +22 -0
- package/esm2020/infra/hasura-graphql/mixins/helpers/graphql-field.helper.mjs +125 -0
- package/esm2020/infra/hasura-graphql/mixins/with-hasura-graphql.mixin.mjs +108 -0
- package/esm2020/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.mjs +338 -0
- package/esm2020/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.mjs +516 -0
- package/esm2020/infra/hasura-graphql/repositories/catalog/wishlist-hasura-graphql.repository.mjs +238 -0
- package/{esm2022 → esm2020}/utils/helpers/debug-decorator.helper.mjs +2 -2
- package/esm2020/utils/helpers/debug.helper.mjs +150 -0
- package/{esm2022 → esm2020}/utils/helpers/reflect.helper.mjs +2 -2
- package/fesm2015/infrab4a-connect.mjs +4976 -0
- package/fesm2015/infrab4a-connect.mjs.map +1 -0
- package/{fesm2022 → fesm2020}/infrab4a-connect.mjs +263 -262
- package/fesm2020/infrab4a-connect.mjs.map +1 -0
- package/infra/elasticsearch/adapters/axios.adapter.d.ts +1 -1
- package/infra/elasticsearch/types/elastic-search-result.d.ts +1 -1
- package/infra/firebase/auth/types/firebase-user-with-id.type.d.ts +1 -1
- package/infra/firebase/firestore/mixins/with-firestore.mixin.d.ts +1 -1
- package/infra/firebase/firestore/mixins/with-sub-collection.mixin.d.ts +1 -1
- package/infra/firebase/firestore/mixins/with-update-firestore.mixin.d.ts +1 -1
- package/infra/firebase/firestore/types/firestore-interceptors.type.d.ts +1 -1
- package/infra/firebase/firestore/types/firestore-sub.repository.type.d.ts +1 -1
- package/infra/firebase/firestore/types/firestore.repository.type.d.ts +1 -1
- package/infra/hasura-graphql/mixins/helpers/attribute-option.helper.d.ts +1 -1
- package/infra/hasura-graphql/mixins/with-create-hasura-graphql.mixin.d.ts +1 -1
- package/infra/hasura-graphql/mixins/with-delete-hasura-graphql.mixin.d.ts +1 -1
- package/infra/hasura-graphql/mixins/with-get-hasura-graphql.mixin.d.ts +1 -1
- package/infra/hasura-graphql/mixins/with-hasura-graphql.mixin.d.ts +3 -3
- package/infra/hasura-graphql/mixins/with-update-hasura-graphql.mixin.d.ts +2 -2
- package/infra/hasura-graphql/types/fields.type.d.ts +1 -1
- package/infra/hasura-graphql/types/graphql.repository.type.d.ts +2 -2
- package/infra/hasura-graphql/types/hasura-graphql-auth-options.type.d.ts +1 -1
- package/infra/hasura-graphql/types/hasura-graphql-fields.type.d.ts +6 -6
- package/infra/hasura-graphql/types/hasura-graphql-headers.type.d.ts +1 -1
- package/infra/hasura-graphql/types/nested-field.type.d.ts +1 -1
- package/infra/hasura-graphql/types/variable-options.type.d.ts +1 -1
- package/package.json +11 -5
- package/utils/decorators/trace.method.decorator.d.ts +3 -3
- package/utils/helpers/debug-decorator.helper.d.ts +1 -1
- package/utils/helpers/debug.helper.d.ts +3 -3
- package/utils/helpers/reflect.helper.d.ts +7 -7
- package/utils/index.d.ts +1 -1
- package/utils/mixins/merge-constructor-params.type.d.ts +2 -2
- package/utils/mixins/mixin-ctor.type.d.ts +1 -1
- package/utils/types/array-element.type.d.ts +1 -1
- package/utils/types/prop.type.d.ts +1 -1
- package/esm2022/domain/shop-settings/models/types/index.mjs +0 -15
- package/esm2022/infra/hasura-graphql/mixins/helpers/bind-filter-query.helper.mjs +0 -71
- package/esm2022/infra/hasura-graphql/mixins/helpers/filter-option.helper.mjs +0 -22
- package/esm2022/infra/hasura-graphql/mixins/helpers/graphql-field.helper.mjs +0 -125
- package/esm2022/infra/hasura-graphql/mixins/with-hasura-graphql.mixin.mjs +0 -108
- package/esm2022/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.mjs +0 -339
- package/esm2022/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.mjs +0 -516
- package/esm2022/infra/hasura-graphql/repositories/catalog/wishlist-hasura-graphql.repository.mjs +0 -236
- package/esm2022/utils/helpers/debug.helper.mjs +0 -150
- package/fesm2022/infrab4a-connect.mjs.map +0 -1
- /package/{esm2022 → esm2020}/domain/catalog/helpers/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/helpers/round-product-price.helper.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/category-base.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/category-collection-children.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/category-filter.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/category-for-product.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/category.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/enums/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/enums/product-genders.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/enums/shops.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/filter-option.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/filter.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/kit-product.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/product-base.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/product-for-category.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/product-for-kit.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/product.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/types/category-condition.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/types/category-metadata.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/types/category-product.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/types/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/types/product-evaluation.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/types/product-gender.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/types/product-metadata.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/types/product-review.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/types/shop-description.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/types/shop-price.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/types/stock.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/types/variant-grade.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/models/variant.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/repositories/category-collection-children.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/repositories/category-filter.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/repositories/category.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/repositories/filter-option.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/repositories/filter.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/repositories/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/repositories/product.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/repositories/subscription-product.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/repositories/variant.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/catalog/repositories/wishlist.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/model/base.model.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/model/identifier-fields.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/model/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/model/types/base-model-builder.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/model/types/identifier-model.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/model/types/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/model/types/model-base-structure.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/model/types/non-function-properties.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/model/types/non-function-property-name.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/repository/create.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/repository/crud.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/repository/delete.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/repository/enums/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/repository/enums/update-option-actions.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/repository/enums/where.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/repository/find.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/repository/get.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/repository/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/repository/read.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/repository/types/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/repository/types/repository-find-filters.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/repository/types/repository-find-result.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/repository/types/repository-limit-options.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/repository/types/repository-order-by-list.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/repository/types/repository-update-params.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/repository/types/where-options.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/generic/repository/update.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/location/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/location/models/address.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/location/models/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/location/models/types/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/location/models/types/location-bound.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/location/models/types/location-geometry.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/location/models/types/location-lat-lng.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/enums/filter-type.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/enums/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/enums/questions-filters.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/enums/shop-page-name.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/helpers/beauty-questions.helper.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/helpers/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/models/campaign-banner.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/models/campaign.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/models/home.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/models/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/models/shop-menu.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/models/shop-settings.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/models/types/banner.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/models/types/benefit.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/models/types/campaign-page.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/models/types/home-data.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/models/types/menu-nav.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/models/types/shop-banner.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/models/types/shop-brands.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/models/types/shop-carousel.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/models/types/shop-collection.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/models/types/shop-gift.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/models/types/shop-home.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/models/types/shop-post.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/models/types/shop-section.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/models/types/sub-menu.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/repositories/campaign-banner.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/repositories/campaign.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/repositories/home.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/repositories/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/repositories/shop-menu.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shop-settings/repositories/shop-settings.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/buy-2-win.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/campaign-dashboard.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/campaign-hashtag.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/checkout.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/coupons/coupon.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/coupons/enums/coupon-club-mens.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/coupons/enums/coupon-subtypes.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/coupons/enums/coupon-types.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/coupons/enums/exclusivities.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/coupons/enums/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/coupons/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/enums/checkout-types.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/enums/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/enums/order-status.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/line-item.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/order.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/payment.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/shipping-method.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/subscription/checkout.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/subscription/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/subscription/plan.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/types/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/types/payment-address.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/types/payment-billing.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/types/payment-card.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/types/payment-customer.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/types/payment-document.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/types/payment-item.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/models/types/payment-shipping.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/repositories/buy-2-win.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/repositories/campaign-dashboard.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/repositories/campaign-hashtag.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/repositories/checkout.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/repositories/coupon.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/repositories/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/repositories/legacy-order.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/repositories/order.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/repositories/payment.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/repositories/subscription/checkout.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/repositories/subscription/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/shopping/repositories/subscription/plan.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/errors/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/errors/unauthorized.error.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/errors/user-already-registered.error.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/errors/weak-password.error.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/beauty-profile.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/accessory-importances.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/area.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/beard-problems.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/beard-sizes.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/beauty-product-importances.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/body-problems.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/body-shapes.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/body-tattoos.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/face-skin-oilinesses.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/face-skin-problems.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/face-skin-tones.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/family-incomes.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/fragrance-importances.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/hair-colors.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/hair-problems.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/hair-strands.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/hair-types.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/office-position.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/product-spents.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/enums/user-type.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/lead.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/subscription/edition.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/subscription/enums/billing-status.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/subscription/enums/edition-status.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/subscription/enums/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/subscription/enums/payment-type.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/subscription/enums/status.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/subscription/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/subscription/payment.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/subscription/subscription.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/user-address.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/user-payment-method.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/models/user.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/repositories/beauty-profile.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/repositories/edition.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/repositories/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/repositories/lead.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/repositories/subscription-payment.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/repositories/subscription.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/repositories/user-address.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/repositories/user-payment-method.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/repositories/user.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/services/authentication.service.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/services/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/services/register.service.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/services/types/basic-user-data.type.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/services/types/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/use-cases/authentication.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/use-cases/index.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/use-cases/recovery-password.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/use-cases/register.mjs +0 -0
- /package/{esm2022 → esm2020}/domain/users/use-cases/signout.mjs +0 -0
- /package/{esm2022 → esm2020}/errors/duplicated-results.error.mjs +0 -0
- /package/{esm2022 → esm2020}/errors/index.mjs +0 -0
- /package/{esm2022 → esm2020}/errors/invalid-argument.error.mjs +0 -0
- /package/{esm2022 → esm2020}/errors/not-found.error.mjs +0 -0
- /package/{esm2022 → esm2020}/errors/required-argument.error.mjs +0 -0
- /package/{esm2022 → esm2020}/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/elasticsearch/adapters/axios.adapter.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/elasticsearch/adapters/elastic-search.adapter.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/elasticsearch/adapters/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/elasticsearch/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/elasticsearch/indexes/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/elasticsearch/indexes/products-index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/elasticsearch/types/elastic-search-result.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/elasticsearch/types/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/auth/authentication-firebase-auth.service.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/auth/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/auth/register-firebase-auth.service.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/auth/types/firebase-user-with-id.type.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/enums/firestore-field-type.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/enums/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/mixins/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/mixins/with-create-firestore.mixin.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/mixins/with-crud-firestore.mixin.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/mixins/with-delete-firestore.mixin.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/mixins/with-find-firestore.mixin.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/mixins/with-firestore.mixin.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/mixins/with-get-firestore.mixin.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/mixins/with-helpers.mixin.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/mixins/with-sub-collection.mixin.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/mixins/with-update-firestore.mixin.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/catalog/category-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/catalog/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/catalog/product-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/shop-settings/home-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/shop-settings/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/shop-settings/shop-settings-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/shopping/campaign-dashboard-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/shopping/campaign-hashtag-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/shopping/checkout-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/shopping/coupon-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/shopping/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/shopping/order-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/shopping/payment-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/users/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/users/lead-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/users/subscription-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/users/user-address-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/users/user-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/types/firestore-interceptors.type.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/types/firestore-sub.repository.type.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/types/firestore.helpers.type.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/types/firestore.repository.type.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/firestore/types/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/firebase/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/enums/hasura-graphql-column-type.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/enums/hasura-graphql-where.enum.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/enums/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/mixins/helpers/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/mixins/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/mixins/with-create-hasura-graphql.mixin.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/mixins/with-crud-hasura-graphql.mixin.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/mixins/with-delete-hasura-graphql.mixin.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/mixins/with-get-hasura-graphql.mixin.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/mixins/with-update-hasura-graphql.mixin.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/models/category-hasura-graphql.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/models/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/models/kit-product-hasura-graphql.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/models/product-hasura-graphql.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/models/variant-hasura-graphql.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/repositories/catalog/category-collection-children-hasura-graphql.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/repositories/catalog/filter-hasura-graphql.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/repositories/catalog/filter-option-hasura-graphql.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/repositories/catalog/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/repositories/catalog/variant-hasura-graphql.repository.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/repositories/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/types/fields.type.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/types/graphql.repository.type.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/types/hasura-graphql-auth-options.type.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/types/hasura-graphql-fields.type.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/types/hasura-graphql-headers.type.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/types/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/types/nested-field.type.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/types/query-builder-options.type.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/hasura-graphql/types/variable-options.type.mjs +0 -0
- /package/{esm2022 → esm2020}/infra/index.mjs +0 -0
- /package/{esm2022 → esm2020}/infrab4a-connect.mjs +0 -0
- /package/{esm2022 → esm2020}/utils/decorators/debug.class.decorator.mjs +0 -0
- /package/{esm2022 → esm2020}/utils/decorators/index.mjs +0 -0
- /package/{esm2022 → esm2020}/utils/decorators/trace.method.decorator.mjs +0 -0
- /package/{esm2022 → esm2020}/utils/get.mjs +0 -0
- /package/{esm2022 → esm2020}/utils/helpers/class-name.helper.mjs +0 -0
- /package/{esm2022 → esm2020}/utils/helpers/index.mjs +0 -0
- /package/{esm2022 → esm2020}/utils/index.mjs +0 -0
- /package/{esm2022 → esm2020}/utils/is-uuid.mjs +0 -0
- /package/{esm2022 → esm2020}/utils/is.mjs +0 -0
- /package/{esm2022 → esm2020}/utils/log.utils.mjs +0 -0
- /package/{esm2022 → esm2020}/utils/mixins/base.mixin.mjs +0 -0
- /package/{esm2022 → esm2020}/utils/mixins/index.mjs +0 -0
- /package/{esm2022 → esm2020}/utils/mixins/merge-constructor-params.type.mjs +0 -0
- /package/{esm2022 → esm2020}/utils/mixins/mixin-ctor.type.mjs +0 -0
- /package/{esm2022 → esm2020}/utils/parse-datetime.mjs +0 -0
- /package/{esm2022 → esm2020}/utils/types/array-element.type.mjs +0 -0
- /package/{esm2022 → esm2020}/utils/types/index.mjs +0 -0
- /package/{esm2022 → esm2020}/utils/types/prop.type.mjs +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BaseModel } from '../../generic/model/base.model';
|
|
2
2
|
import { BeardSizes, HairTypes } from './enums';
|
|
3
|
-
export type BeautyProfileIdentifiers = 'id' | 'userId';
|
|
3
|
+
export declare type BeautyProfileIdentifiers = 'id' | 'userId';
|
|
4
4
|
export declare class BeautyProfile extends BaseModel<BeautyProfile, BeautyProfileIdentifiers> {
|
|
5
5
|
id: string;
|
|
6
6
|
userId: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BaseModel } from '../../../generic/model/base.model';
|
|
2
2
|
import { EditionStatus, BillingStatus } from './enums';
|
|
3
|
-
export type EditionIdentifiers = 'id' | 'subscriptionId';
|
|
3
|
+
export declare type EditionIdentifiers = 'id' | 'subscriptionId';
|
|
4
4
|
export declare class Edition extends BaseModel<Edition, EditionIdentifiers> {
|
|
5
5
|
id: string;
|
|
6
6
|
subscriptionId: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BaseModel } from '../../../generic/model/base.model';
|
|
2
2
|
import { Payment } from '../../../shopping/models/payment';
|
|
3
3
|
import { PaymentType } from './enums/payment-type.enum';
|
|
4
|
-
export type SubscriptionPaymentIdentifiers = 'id' | 'subscriptionId';
|
|
4
|
+
export declare type SubscriptionPaymentIdentifiers = 'id' | 'subscriptionId';
|
|
5
5
|
export declare class SubscriptionPayment extends BaseModel<SubscriptionPayment, SubscriptionPaymentIdentifiers> {
|
|
6
6
|
id: string;
|
|
7
7
|
subscriptionId: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Address } from '../../location/models/address';
|
|
2
|
-
export type UserAddressIdentifiers = 'id' | 'userId';
|
|
2
|
+
export declare type UserAddressIdentifiers = 'id' | 'userId';
|
|
3
3
|
export declare class UserAddress extends Address<UserAddress, UserAddressIdentifiers> {
|
|
4
4
|
userId: string;
|
|
5
5
|
static get identifiersFields(): UserAddressIdentifiers[];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseModel } from '../../generic/model/base.model';
|
|
2
|
-
export type UserPaymentIdentifiers = 'id' | 'userId';
|
|
2
|
+
export declare type UserPaymentIdentifiers = 'id' | 'userId';
|
|
3
3
|
export declare class UserPaymentMethod extends BaseModel<UserPaymentMethod, UserPaymentIdentifiers> {
|
|
4
4
|
brand: string;
|
|
5
5
|
cpf: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BasicUserData } from './types/basic-user-data.type';
|
|
2
|
-
export type RegisterParams = Omit<BasicUserData, 'isAnonymous'> & {
|
|
2
|
+
export declare type RegisterParams = Omit<BasicUserData, 'isAnonymous'> & {
|
|
3
3
|
password: string;
|
|
4
4
|
};
|
|
5
5
|
export interface RegisterService {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { User } from '../../models/user';
|
|
2
|
-
export type BasicUserData = Partial<Pick<User, 'id' | 'cpf' | 'email' | 'firstName' | 'lastName' | 'displayName' | 'phone' | 'birthday'>> & {
|
|
2
|
+
export declare type BasicUserData = Partial<Pick<User, 'id' | 'cpf' | 'email' | 'firstName' | 'lastName' | 'displayName' | 'phone' | 'birthday'>> & {
|
|
3
3
|
isAnonymous: boolean;
|
|
4
4
|
};
|
|
@@ -5,8 +5,8 @@ export declare enum SignInMethods {
|
|
|
5
5
|
EMAIL_PASSWORD = "email_password",
|
|
6
6
|
GOOGLE = "google"
|
|
7
7
|
}
|
|
8
|
-
type SignInMethod = Lowercase<keyof typeof SignInMethods>;
|
|
9
|
-
type SignInParams = {
|
|
8
|
+
declare type SignInMethod = Lowercase<keyof typeof SignInMethods>;
|
|
9
|
+
declare type SignInParams = {
|
|
10
10
|
email?: string;
|
|
11
11
|
password?: string;
|
|
12
12
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { User } from '../models';
|
|
2
2
|
import { RegisterService } from '../services/register.service';
|
|
3
3
|
import { UserRepository } from '../repositories/user.repository';
|
|
4
|
-
type RegisterParams = Partial<User> & {
|
|
4
|
+
declare type RegisterParams = Partial<User> & {
|
|
5
5
|
password: string;
|
|
6
6
|
};
|
|
7
7
|
export declare class Register {
|
|
@@ -4,4 +4,4 @@ export class Wishlist extends Category {
|
|
|
4
4
|
return ['id'];
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lzaGxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9kb21haW4vY2F0YWxvZy9tb2RlbHMvd2lzaGxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVyQyxNQUFNLE9BQU8sUUFBUyxTQUFRLFFBQVE7SUFLcEMsTUFBTSxLQUFjLGlCQUFpQjtRQUNuQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW5lcmljSWRlbnRpZmllciB9IGZyb20gJy4uLy4uL2dlbmVyaWMvbW9kZWwnXHJcbmltcG9ydCB7IENhdGVnb3J5IH0gZnJvbSAnLi9jYXRlZ29yeSdcclxuXHJcbmV4cG9ydCBjbGFzcyBXaXNobGlzdCBleHRlbmRzIENhdGVnb3J5IHtcclxuICBwZXJzb25JZD86IHN0cmluZ1xyXG4gIHBlcnNvbk5hbWU/OiBzdHJpbmdcclxuICBwZXJzb25QaG90bz86IHN0cmluZ1xyXG5cclxuICBzdGF0aWMgb3ZlcnJpZGUgZ2V0IGlkZW50aWZpZXJzRmllbGRzKCk6IEdlbmVyaWNJZGVudGlmaWVyW10ge1xyXG4gICAgcmV0dXJuIFsnaWQnXVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export * from './banner.type';
|
|
2
|
+
export * from './benefit.type';
|
|
3
|
+
export * from './campaign-page';
|
|
4
|
+
export * from './home-data.type';
|
|
5
|
+
export * from './landing-page';
|
|
6
|
+
export * from './menu-nav.type';
|
|
7
|
+
export * from './sections.type';
|
|
8
|
+
export * from './shop-banner.type';
|
|
9
|
+
export * from './shop-brands.type';
|
|
10
|
+
export * from './shop-carousel.type';
|
|
11
|
+
export * from './shop-collection.type';
|
|
12
|
+
export * from './shop-gift.type';
|
|
13
|
+
export * from './shop-home';
|
|
14
|
+
export * from './shop-post.type';
|
|
15
|
+
export * from './shop-section.type';
|
|
16
|
+
export * from './sub-menu.type';
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9kb21haW4vc2hvcC1zZXR0aW5ncy9tb2RlbHMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUE7QUFDN0IsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLGlCQUFpQixDQUFBO0FBQy9CLGNBQWMsa0JBQWtCLENBQUE7QUFDaEMsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLGlCQUFpQixDQUFBO0FBQy9CLGNBQWMsaUJBQWlCLENBQUE7QUFDL0IsY0FBYyxvQkFBb0IsQ0FBQTtBQUNsQyxjQUFjLG9CQUFvQixDQUFBO0FBQ2xDLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLGtCQUFrQixDQUFBO0FBQ2hDLGNBQWMsYUFBYSxDQUFBO0FBQzNCLGNBQWMsa0JBQWtCLENBQUE7QUFDaEMsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLGlCQUFpQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9iYW5uZXIudHlwZSdcclxuZXhwb3J0ICogZnJvbSAnLi9iZW5lZml0LnR5cGUnXHJcbmV4cG9ydCAqIGZyb20gJy4vY2FtcGFpZ24tcGFnZSdcclxuZXhwb3J0ICogZnJvbSAnLi9ob21lLWRhdGEudHlwZSdcclxuZXhwb3J0ICogZnJvbSAnLi9sYW5kaW5nLXBhZ2UnXHJcbmV4cG9ydCAqIGZyb20gJy4vbWVudS1uYXYudHlwZSdcclxuZXhwb3J0ICogZnJvbSAnLi9zZWN0aW9ucy50eXBlJ1xyXG5leHBvcnQgKiBmcm9tICcuL3Nob3AtYmFubmVyLnR5cGUnXHJcbmV4cG9ydCAqIGZyb20gJy4vc2hvcC1icmFuZHMudHlwZSdcclxuZXhwb3J0ICogZnJvbSAnLi9zaG9wLWNhcm91c2VsLnR5cGUnXHJcbmV4cG9ydCAqIGZyb20gJy4vc2hvcC1jb2xsZWN0aW9uLnR5cGUnXHJcbmV4cG9ydCAqIGZyb20gJy4vc2hvcC1naWZ0LnR5cGUnXHJcbmV4cG9ydCAqIGZyb20gJy4vc2hvcC1ob21lJ1xyXG5leHBvcnQgKiBmcm9tICcuL3Nob3AtcG9zdC50eXBlJ1xyXG5leHBvcnQgKiBmcm9tICcuL3Nob3Atc2VjdGlvbi50eXBlJ1xyXG5leHBvcnQgKiBmcm9tICcuL3N1Yi1tZW51LnR5cGUnXHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZGluZy1wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC9zcmMvZG9tYWluL3Nob3Atc2V0dGluZ3MvbW9kZWxzL3R5cGVzL2xhbmRpbmctcGFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hvcEJhbm5lciB9IGZyb20gJy4vc2hvcC1iYW5uZXIudHlwZSdcclxuaW1wb3J0IHsgU2hvcENhcm91c2VsIH0gZnJvbSAnLi9zaG9wLWNhcm91c2VsLnR5cGUnXHJcbmltcG9ydCB7IFNob3BTZWN0aW9uIH0gZnJvbSAnLi9zaG9wLXNlY3Rpb24udHlwZSdcclxuXHJcbmV4cG9ydCB0eXBlIExhbmRpbmdQYWdlTGlzdCA9IHtcclxuICBTaG9wQ2Fyb3VzZWw6IFNob3BDYXJvdXNlbFxyXG4gIFNob3BCYW5uZXI6IFNob3BCYW5uZXJcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgTGFuZGluZ1BhZ2U8VCBleHRlbmRzIGtleW9mIExhbmRpbmdQYWdlTGlzdD4gPSBMYW5kaW5nUGFnZUxpc3RbVF0gJiBTaG9wU2VjdGlvblxyXG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbnMudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL2RvbWFpbi9zaG9wLXNldHRpbmdzL21vZGVscy90eXBlcy9zZWN0aW9ucy50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYW5kaW5nUGFnZSB9IGZyb20gJy4vbGFuZGluZy1wYWdlJ1xyXG5pbXBvcnQgeyBTaG9wQmFubmVyIH0gZnJvbSAnLi9zaG9wLWJhbm5lci50eXBlJ1xyXG5pbXBvcnQgeyBTaG9wQ2Fyb3VzZWwgfSBmcm9tICcuL3Nob3AtY2Fyb3VzZWwudHlwZSdcclxuaW1wb3J0IHsgU2hvcEdpZnQgfSBmcm9tICcuL3Nob3AtZ2lmdC50eXBlJ1xyXG5pbXBvcnQgeyBTaG9wSG9tZSB9IGZyb20gJy4vc2hvcC1ob21lJ1xyXG5pbXBvcnQgeyBTaG9wUG9zdCB9IGZyb20gJy4vc2hvcC1wb3N0LnR5cGUnXHJcbmltcG9ydCB7IFNob3BTZWN0aW9uIH0gZnJvbSAnLi9zaG9wLXNlY3Rpb24udHlwZSdcclxuXHJcbmV4cG9ydCB0eXBlIEhvbWVTZWN0aW9uID0gW1Nob3BIb21lPGFueT5dXHJcbmV4cG9ydCB0eXBlIExQQ2x1YmVTaG9wU2VjdGlvbiA9IFtTaG9wQ2Fyb3VzZWxdXHJcbmV4cG9ydCB0eXBlIFN1YnNjcmliZXJQYW5lbFNob3BTZWN0aW9uID0gW1Nob3BDYXJvdXNlbFtdXVxyXG5leHBvcnQgdHlwZSBJbnZpdGVGcmllbmRzU2hvcFNlY3Rpb24gPSBbU2hvcENhcm91c2VsXVxyXG5leHBvcnQgdHlwZSBJbnZpdGVBbmRXaW5TaG9wU2VjdGlvbiA9IFtTaG9wR2lmdF1cclxuZXhwb3J0IHR5cGUgV2luR2xhbXBvaW50c1Nob3BTZWN0aW9uID0gW1Nob3BHaWZ0XVxyXG5leHBvcnQgdHlwZSBQb3N0c1Nob3BTZWN0aW9uID0gW1Nob3BTZWN0aW9uICYgeyBwb3N0czogU2hvcFBvc3RbXSB9XVxyXG5leHBvcnQgdHlwZSBHbGFtcG9pbnRzVml0cmluZVNob3BTZWN0aW9uID0gW1Nob3BCYW5uZXJdXHJcbmV4cG9ydCB0eXBlIFNpbXBsZUxQU2hvcFNlY3Rpb24gPSBbKFNob3BCYW5uZXIgJiB7IGNhcm91c2VsQ29sb3I/OiBzdHJpbmcgfSlbXV1cclxuZXhwb3J0IHR5cGUgTGFuZGluZ1BhZ2VTZWN0aW9uID0gW0xhbmRpbmdQYWdlPGFueT5dXHJcblxyXG5leHBvcnQgdHlwZSBTZWN0aW9uTGlzdCA9IHtcclxuICBIb21lU2VjdGlvbjogSG9tZVNlY3Rpb25cclxuICBMUENsdWJlU2hvcFNlY3Rpb246IExQQ2x1YmVTaG9wU2VjdGlvblxyXG4gIFN1YnNjcmliZXJQYW5lbFNob3BTZWN0aW9uOiBTdWJzY3JpYmVyUGFuZWxTaG9wU2VjdGlvblxyXG4gIEludml0ZUZyaWVuZHNTaG9wU2VjdGlvbjogSW52aXRlRnJpZW5kc1Nob3BTZWN0aW9uXHJcbiAgSW52aXRlQW5kV2luU2hvcFNlY3Rpb246IEludml0ZUFuZFdpblNob3BTZWN0aW9uXHJcbiAgV2luR2xhbXBvaW50c1Nob3BTZWN0aW9uOiBXaW5HbGFtcG9pbnRzU2hvcFNlY3Rpb25cclxuICBQb3N0c1Nob3BTZWN0aW9uOiBQb3N0c1Nob3BTZWN0aW9uXHJcbiAgR2xhbXBvaW50c1ZpdHJpbmVTaG9wU2VjdGlvbjogR2xhbXBvaW50c1ZpdHJpbmVTaG9wU2VjdGlvblxyXG4gIFNpbXBsZUxQU2hvcFNlY3Rpb246IFNpbXBsZUxQU2hvcFNlY3Rpb25cclxuICBMYW5kaW5nUGFnZVNlY3Rpb246IExhbmRpbmdQYWdlU2VjdGlvblxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBTZWN0aW9uPFQgZXh0ZW5kcyBrZXlvZiBTZWN0aW9uTGlzdD4gPSBTZWN0aW9uTGlzdFtUXVxyXG4iXX0=
|
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
import { is, isNil, isObject } from '../../../../utils';
|
|
2
2
|
export class AttributeOptionHelper {
|
|
3
|
-
static { this.FindByAttribute = (attributeName, fields) => {
|
|
4
|
-
if (fields.includes(attributeName))
|
|
5
|
-
return { columnName: attributeName.toString(), attributeName, to: (value) => value, from: (value) => value };
|
|
6
|
-
const field = fields.find((columnOption) => isObject(columnOption) && Object.keys(columnOption).includes(attributeName.toString()));
|
|
7
|
-
const fieldOption = is(field)?.[attributeName];
|
|
8
|
-
if (isNil(fieldOption))
|
|
9
|
-
return { columnName: attributeName.toString(), attributeName };
|
|
10
|
-
if (Array.isArray(fieldOption))
|
|
11
|
-
return { columnName: attributeName.toString(), attributeName, fields: fieldOption };
|
|
12
|
-
return { attributeName, columnName: attributeName.toString(), ...fieldOption };
|
|
13
|
-
}; }
|
|
14
|
-
static { this.CheckIsColumnOption = (fieldValue) => !!fieldValue?.columnName; }
|
|
15
|
-
static { this.FindColumnOptionFromList = (columnName, fields) => {
|
|
16
|
-
if (fields.includes(columnName))
|
|
17
|
-
return { columnName, attributeName: columnName };
|
|
18
|
-
const field = is(fields.find((field) => {
|
|
19
|
-
if (!isObject(field))
|
|
20
|
-
return false;
|
|
21
|
-
const columnOption = Object.values(field).find((option) => AttributeOptionHelper.CheckIsColumnOption(option) && option.columnName === columnName ? option : {});
|
|
22
|
-
return AttributeOptionHelper.CheckIsColumnOption(columnOption) && columnOption?.columnName === columnName;
|
|
23
|
-
}) || {});
|
|
24
|
-
const attributeName = Object.keys(field).find((fieldOptionFromList) => AttributeOptionHelper.CheckIsColumnOption(field[fieldOptionFromList]) || Array.isArray(field[fieldOptionFromList]));
|
|
25
|
-
const fieldOption = field?.[attributeName];
|
|
26
|
-
if (Array.isArray(fieldOption))
|
|
27
|
-
return { attributeName: attributeName, fields: fieldOption };
|
|
28
|
-
return {
|
|
29
|
-
attributeName: attributeName || columnName,
|
|
30
|
-
columnName,
|
|
31
|
-
...fieldOption,
|
|
32
|
-
};
|
|
33
|
-
}; }
|
|
34
3
|
}
|
|
35
|
-
|
|
4
|
+
AttributeOptionHelper.FindByAttribute = (attributeName, fields) => {
|
|
5
|
+
if (fields.includes(attributeName))
|
|
6
|
+
return { columnName: attributeName.toString(), attributeName, to: (value) => value, from: (value) => value };
|
|
7
|
+
const field = fields.find((columnOption) => isObject(columnOption) && Object.keys(columnOption).includes(attributeName.toString()));
|
|
8
|
+
const fieldOption = is(field)?.[attributeName];
|
|
9
|
+
if (isNil(fieldOption))
|
|
10
|
+
return { columnName: attributeName.toString(), attributeName };
|
|
11
|
+
if (Array.isArray(fieldOption))
|
|
12
|
+
return { columnName: attributeName.toString(), attributeName, fields: fieldOption };
|
|
13
|
+
return { attributeName, columnName: attributeName.toString(), ...fieldOption };
|
|
14
|
+
};
|
|
15
|
+
AttributeOptionHelper.CheckIsColumnOption = (fieldValue) => !!fieldValue?.columnName;
|
|
16
|
+
AttributeOptionHelper.FindColumnOptionFromList = (columnName, fields) => {
|
|
17
|
+
if (fields.includes(columnName))
|
|
18
|
+
return { columnName, attributeName: columnName };
|
|
19
|
+
const field = is(fields.find((field) => {
|
|
20
|
+
if (!isObject(field))
|
|
21
|
+
return false;
|
|
22
|
+
const columnOption = Object.values(field).find((option) => AttributeOptionHelper.CheckIsColumnOption(option) && option.columnName === columnName ? option : {});
|
|
23
|
+
return AttributeOptionHelper.CheckIsColumnOption(columnOption) && columnOption?.columnName === columnName;
|
|
24
|
+
}) || {});
|
|
25
|
+
const attributeName = Object.keys(field).find((fieldOptionFromList) => AttributeOptionHelper.CheckIsColumnOption(field[fieldOptionFromList]) || Array.isArray(field[fieldOptionFromList]));
|
|
26
|
+
const fieldOption = field?.[attributeName];
|
|
27
|
+
if (Array.isArray(fieldOption))
|
|
28
|
+
return { attributeName: attributeName, fields: fieldOption };
|
|
29
|
+
return {
|
|
30
|
+
attributeName: attributeName || columnName,
|
|
31
|
+
columnName,
|
|
32
|
+
...fieldOption,
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLW9wdGlvbi5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9pbmZyYS9oYXN1cmEtZ3JhcGhxbC9taXhpbnMvaGVscGVycy9hdHRyaWJ1dGUtb3B0aW9uLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQVF2RCxNQUFNLE9BQU8scUJBQXFCOztBQUN6QixxQ0FBZSxHQUFHLENBSXZCLGFBQXdCLEVBQ3hCLE1BQWtDLEVBQ08sRUFBRTtJQUMzQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBb0IsQ0FBQztRQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUU5RyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUN2QixDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUN6RyxDQUFBO0lBQ0QsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUE0RCxLQUFLLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBRXpHLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRSxFQUFFLGFBQWEsRUFBRSxDQUFBO0lBQ3RGLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFBO0lBRW5ILE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLFdBQVcsRUFBRSxDQUFBO0FBQ2hGLENBQUMsQ0FBQTtBQUVNLHlDQUFtQixHQUFHLENBQzNCLFVBQW1ELEVBQ0YsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFBO0FBRXZFLDhDQUF3QixHQUFHLENBQ2hDLFVBQWtCLEVBQ2xCLE1BQXdDLEVBQ21FLEVBQUU7SUFDN0csSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQXNELENBQUM7UUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsVUFBZ0UsRUFBRSxDQUFBO0lBRXhHLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FDZCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQTtRQUVsQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ3hELHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDcEcsQ0FBQTtRQUVELE9BQU8scUJBQXFCLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLElBQUksWUFBWSxFQUFFLFVBQVUsS0FBSyxVQUFVLENBQUE7SUFDM0csQ0FBQyxDQUFDLElBQUksRUFBRSxDQUNULENBQUE7SUFDRCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDM0MsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQ3RCLHFCQUFxQixDQUFDLG1CQUFtQixDQUN2QyxLQUFLLENBQUMsbUJBQXlFLENBQUMsQ0FDakYsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQkFBeUUsQ0FBQyxDQUFDLENBQ2pELENBQUE7SUFDdkQsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUE7SUFFMUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUM1QixPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQW1FLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFBO0lBRXBILE9BQU87UUFDTCxhQUFhLEVBQUUsYUFBYSxJQUFLLFVBQWlFO1FBQ2xHLFVBQVU7UUFDVixHQUFHLFdBQVc7S0FDZixDQUFBO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWxCYXNlU3RydWN0dXJlLCBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZG9tYWluJ1xyXG5pbXBvcnQgeyBpcywgaXNOaWwsIGlzT2JqZWN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnXHJcbmltcG9ydCB7IENvbHVtbk9wdGlvbnMsIEhhc3VyYUdyYXBoUUxGaWVsZHMgfSBmcm9tICcuLi8uLi90eXBlcydcclxuXHJcbnR5cGUgRmluZEJ5QXR0cmlidXRlUmVzdWx0PFxyXG4gIE1CYXNlIGV4dGVuZHMgTW9kZWxCYXNlU3RydWN0dXJlPE1CYXNlPixcclxuICBBdHRyaWJ1dGUgZXh0ZW5kcyBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1CYXNlPixcclxuPiA9IENvbHVtbk9wdGlvbnM8TUJhc2VbQXR0cmlidXRlXSwgTUJhc2U+ICYgeyBhdHRyaWJ1dGVOYW1lOiBBdHRyaWJ1dGUgfVxyXG5cclxuZXhwb3J0IGNsYXNzIEF0dHJpYnV0ZU9wdGlvbkhlbHBlciB7XHJcbiAgc3RhdGljIEZpbmRCeUF0dHJpYnV0ZSA9IDxcclxuICAgIE1CYXNlIGV4dGVuZHMgTW9kZWxCYXNlU3RydWN0dXJlPE1CYXNlLCBNQmFzZVsnaWRlbnRpZmllcnNGaWVsZHMnXVtudW1iZXJdPixcclxuICAgIEF0dHJpYnV0ZSBleHRlbmRzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8TUJhc2U+ID0gTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydHlOYW1lczxNQmFzZT4sXHJcbiAgPihcclxuICAgIGF0dHJpYnV0ZU5hbWU6IEF0dHJpYnV0ZSxcclxuICAgIGZpZWxkczogSGFzdXJhR3JhcGhRTEZpZWxkczxNQmFzZT4sXHJcbiAgKTogRmluZEJ5QXR0cmlidXRlUmVzdWx0PE1CYXNlLCBBdHRyaWJ1dGU+ID0+IHtcclxuICAgIGlmIChmaWVsZHMuaW5jbHVkZXMoYXR0cmlidXRlTmFtZSBhcyBhbnkpKVxyXG4gICAgICByZXR1cm4geyBjb2x1bW5OYW1lOiBhdHRyaWJ1dGVOYW1lLnRvU3RyaW5nKCksIGF0dHJpYnV0ZU5hbWUsIHRvOiAodmFsdWUpID0+IHZhbHVlLCBmcm9tOiAodmFsdWUpID0+IHZhbHVlIH1cclxuXHJcbiAgICBjb25zdCBmaWVsZCA9IGZpZWxkcy5maW5kKFxyXG4gICAgICAoY29sdW1uT3B0aW9uKSA9PiBpc09iamVjdChjb2x1bW5PcHRpb24pICYmIE9iamVjdC5rZXlzKGNvbHVtbk9wdGlvbikuaW5jbHVkZXMoYXR0cmlidXRlTmFtZS50b1N0cmluZygpKSxcclxuICAgIClcclxuICAgIGNvbnN0IGZpZWxkT3B0aW9uID0gaXM8UmVjb3JkPEF0dHJpYnV0ZSwgQ29sdW1uT3B0aW9uczxNQmFzZVtBdHRyaWJ1dGVdLCBNQmFzZT4+PihmaWVsZCk/LlthdHRyaWJ1dGVOYW1lXVxyXG5cclxuICAgIGlmIChpc05pbChmaWVsZE9wdGlvbikpIHJldHVybiB7IGNvbHVtbk5hbWU6IGF0dHJpYnV0ZU5hbWUudG9TdHJpbmcoKSwgYXR0cmlidXRlTmFtZSB9XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZE9wdGlvbikpIHJldHVybiB7IGNvbHVtbk5hbWU6IGF0dHJpYnV0ZU5hbWUudG9TdHJpbmcoKSwgYXR0cmlidXRlTmFtZSwgZmllbGRzOiBmaWVsZE9wdGlvbiB9XHJcblxyXG4gICAgcmV0dXJuIHsgYXR0cmlidXRlTmFtZSwgY29sdW1uTmFtZTogYXR0cmlidXRlTmFtZS50b1N0cmluZygpLCAuLi5maWVsZE9wdGlvbiB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgQ2hlY2tJc0NvbHVtbk9wdGlvbiA9IDxNb2RlbCBleHRlbmRzIE1vZGVsQmFzZVN0cnVjdHVyZTxNb2RlbD4sIFBhcmVudE1vZGVsIGV4dGVuZHMgTW9kZWxCYXNlU3RydWN0dXJlPihcclxuICAgIGZpZWxkVmFsdWU6IENvbHVtbk9wdGlvbnM8TW9kZWwsIFBhcmVudE1vZGVsPiB8IGFueSxcclxuICApOiBmaWVsZFZhbHVlIGlzIENvbHVtbk9wdGlvbnM8TW9kZWwsIFBhcmVudE1vZGVsPiA9PiAhIWZpZWxkVmFsdWU/LmNvbHVtbk5hbWVcclxuXHJcbiAgc3RhdGljIEZpbmRDb2x1bW5PcHRpb25Gcm9tTGlzdCA9IDxNb2RlbCBleHRlbmRzIE1vZGVsQmFzZVN0cnVjdHVyZSwgUGFyZW50TW9kZWwgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU+KFxyXG4gICAgY29sdW1uTmFtZTogc3RyaW5nLFxyXG4gICAgZmllbGRzOiBIYXN1cmFHcmFwaFFMRmllbGRzPFBhcmVudE1vZGVsPixcclxuICApOiBDb2x1bW5PcHRpb25zPE1vZGVsLCBQYXJlbnRNb2RlbD4gJiB7IGF0dHJpYnV0ZU5hbWU6IE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8UGFyZW50TW9kZWw+IH0gPT4ge1xyXG4gICAgaWYgKGZpZWxkcy5pbmNsdWRlcyhjb2x1bW5OYW1lIGFzIEhhc3VyYUdyYXBoUUxGaWVsZHM8UGFyZW50TW9kZWw+W251bWJlcl0pKVxyXG4gICAgICByZXR1cm4geyBjb2x1bW5OYW1lLCBhdHRyaWJ1dGVOYW1lOiBjb2x1bW5OYW1lIGFzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8UGFyZW50TW9kZWw+IH1cclxuXHJcbiAgICBjb25zdCBmaWVsZCA9IGlzPFJlY29yZDxOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPFBhcmVudE1vZGVsPiwgQ29sdW1uT3B0aW9uczxNb2RlbCwgUGFyZW50TW9kZWw+Pj4oXHJcbiAgICAgIGZpZWxkcy5maW5kKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIGlmICghaXNPYmplY3QoZmllbGQpKSByZXR1cm4gZmFsc2VcclxuXHJcbiAgICAgICAgY29uc3QgY29sdW1uT3B0aW9uID0gT2JqZWN0LnZhbHVlcyhmaWVsZCkuZmluZCgob3B0aW9uKSA9PlxyXG4gICAgICAgICAgQXR0cmlidXRlT3B0aW9uSGVscGVyLkNoZWNrSXNDb2x1bW5PcHRpb24ob3B0aW9uKSAmJiBvcHRpb24uY29sdW1uTmFtZSA9PT0gY29sdW1uTmFtZSA/IG9wdGlvbiA6IHt9LFxyXG4gICAgICAgIClcclxuXHJcbiAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU9wdGlvbkhlbHBlci5DaGVja0lzQ29sdW1uT3B0aW9uKGNvbHVtbk9wdGlvbikgJiYgY29sdW1uT3B0aW9uPy5jb2x1bW5OYW1lID09PSBjb2x1bW5OYW1lXHJcbiAgICAgIH0pIHx8IHt9LFxyXG4gICAgKVxyXG4gICAgY29uc3QgYXR0cmlidXRlTmFtZSA9IE9iamVjdC5rZXlzKGZpZWxkKS5maW5kKFxyXG4gICAgICAoZmllbGRPcHRpb25Gcm9tTGlzdCkgPT5cclxuICAgICAgICBBdHRyaWJ1dGVPcHRpb25IZWxwZXIuQ2hlY2tJc0NvbHVtbk9wdGlvbihcclxuICAgICAgICAgIGZpZWxkW2ZpZWxkT3B0aW9uRnJvbUxpc3QgYXMgTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydHlOYW1lczxQYXJlbnRNb2RlbD5dLFxyXG4gICAgICAgICkgfHwgQXJyYXkuaXNBcnJheShmaWVsZFtmaWVsZE9wdGlvbkZyb21MaXN0IGFzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8UGFyZW50TW9kZWw+XSksXHJcbiAgICApIGFzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8UGFyZW50TW9kZWw+XHJcbiAgICBjb25zdCBmaWVsZE9wdGlvbiA9IGZpZWxkPy5bYXR0cmlidXRlTmFtZV1cclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZE9wdGlvbikpXHJcbiAgICAgIHJldHVybiB7IGF0dHJpYnV0ZU5hbWU6IGF0dHJpYnV0ZU5hbWUgYXMgTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydHlOYW1lczxQYXJlbnRNb2RlbD4sIGZpZWxkczogZmllbGRPcHRpb24gfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGF0dHJpYnV0ZU5hbWU6IGF0dHJpYnV0ZU5hbWUgfHwgKGNvbHVtbk5hbWUgYXMgTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydHlOYW1lczxQYXJlbnRNb2RlbD4pLFxyXG4gICAgICBjb2x1bW5OYW1lLFxyXG4gICAgICAuLi5maWVsZE9wdGlvbixcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Where, } from '../../../../domain';
|
|
2
|
+
import { is, isNil, isObject } from '../../../../utils';
|
|
3
|
+
import { HasuraGraphQLColumnType, HasuraGraphQLWhere } from '../../enums';
|
|
4
|
+
import { AttributeOptionHelper } from './attribute-option.helper';
|
|
5
|
+
import { FilterOptionHelper } from './filter-option.helper';
|
|
6
|
+
export class BindFilterQueryHelper {
|
|
7
|
+
}
|
|
8
|
+
BindFilterQueryHelper.MakeGraphQLWhere = (filter, fields) => Object.keys(filter).reduce((variables, fieldName) => {
|
|
9
|
+
const columnOption = AttributeOptionHelper.FindByAttribute(fieldName, fields);
|
|
10
|
+
if (!columnOption.bindFindFilter)
|
|
11
|
+
return {
|
|
12
|
+
...variables,
|
|
13
|
+
...{
|
|
14
|
+
[columnOption.columnName]: BindFilterQueryHelper.BuildWhereSentence(fieldName, filter[fieldName], fields),
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
const builtFilter = columnOption.bindFindFilter(filter[fieldName]);
|
|
18
|
+
return {
|
|
19
|
+
...variables,
|
|
20
|
+
...Object.keys(builtFilter).reduce((variablesList, columnName) => ({
|
|
21
|
+
...variablesList,
|
|
22
|
+
[columnName]: BindFilterQueryHelper.BuildWhereSentence(fieldName, builtFilter[columnName], fields),
|
|
23
|
+
}), {}),
|
|
24
|
+
};
|
|
25
|
+
}, {});
|
|
26
|
+
BindFilterQueryHelper.BuildWhereSentence = (field, options, fields) => {
|
|
27
|
+
const fieldSentenceOptions = AttributeOptionHelper.FindByAttribute(field, fields);
|
|
28
|
+
const isNestedField = !Array.isArray(options) &&
|
|
29
|
+
isObject(options) &&
|
|
30
|
+
isNil(options?.operator) &&
|
|
31
|
+
isNil(options?.value) &&
|
|
32
|
+
isNil(fieldSentenceOptions?.to);
|
|
33
|
+
if (isNestedField)
|
|
34
|
+
return Object.keys(options).reduce((variables, key) => {
|
|
35
|
+
const fieldOptions = AttributeOptionHelper.FindByAttribute(key, fieldSentenceOptions?.fields || fields);
|
|
36
|
+
const columnName = fieldOptions.columnName;
|
|
37
|
+
const columnFields = fieldOptions.fields;
|
|
38
|
+
return {
|
|
39
|
+
...variables,
|
|
40
|
+
[columnName]: BindFilterQueryHelper.BuildWhereSentence(key, is(is(options)[key]), fieldSentenceOptions?.fields || columnFields || fields),
|
|
41
|
+
};
|
|
42
|
+
}, {});
|
|
43
|
+
if (!Array.isArray(options) && !isNil(fieldSentenceOptions.fields))
|
|
44
|
+
return {
|
|
45
|
+
[fieldSentenceOptions.fields[0]]: BindFilterQueryHelper.BuildOperatorSentence(options, fieldSentenceOptions),
|
|
46
|
+
};
|
|
47
|
+
if (!Array.isArray(options) && isObject(options) && !FilterOptionHelper.CheckIfIsFilterOption(options))
|
|
48
|
+
options = Object.values(options)[0];
|
|
49
|
+
return Array.isArray(options)
|
|
50
|
+
? options.reduce((whereSentence, option) => ({
|
|
51
|
+
...whereSentence,
|
|
52
|
+
...BindFilterQueryHelper.BuildOperatorSentence(option, fieldSentenceOptions),
|
|
53
|
+
}), {})
|
|
54
|
+
: BindFilterQueryHelper.BuildOperatorSentence(options, fieldSentenceOptions);
|
|
55
|
+
};
|
|
56
|
+
BindFilterQueryHelper.BuildOperatorSentence = (options, fieldOption) => ({
|
|
57
|
+
[BindFilterQueryHelper.GetHasuraOperator(options, fieldOption)]: FilterOptionHelper.GetValueFromFilter(options, fieldOption),
|
|
58
|
+
});
|
|
59
|
+
BindFilterQueryHelper.GetHasuraOperator = (options, fieldOption) => FilterOptionHelper.CheckIfIsFilterOption(options)
|
|
60
|
+
? fieldOption.type === HasuraGraphQLColumnType.Jsonb
|
|
61
|
+
? BindFilterQueryHelper.GetHasuraJsonbOperator(options)
|
|
62
|
+
: HasuraGraphQLWhere[Object.keys(HasuraGraphQLWhere).find((graphQLOperator) => graphQLOperator ===
|
|
63
|
+
Object.keys(Where).find((operator) => Where[operator] === options?.operator))]
|
|
64
|
+
: HasuraGraphQLWhere.EQUALS;
|
|
65
|
+
BindFilterQueryHelper.GetHasuraJsonbOperator = (options) => options.operator === Where.IN
|
|
66
|
+
? HasuraGraphQLWhere.JSON_CONTAINS
|
|
67
|
+
: options.operator === Where.LIKE
|
|
68
|
+
? HasuraGraphQLWhere.JSON_HAS_KEYS_ANY
|
|
69
|
+
: HasuraGraphQLWhere[Object.keys(HasuraGraphQLWhere).find((graphQLOperator) => graphQLOperator ===
|
|
70
|
+
Object.keys(Where).find((operator) => Where[operator] === options?.operator))];
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZC1maWx0ZXItcXVlcnkuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC9zcmMvaW5mcmEvaGFzdXJhLWdyYXBocWwvbWl4aW5zL2hlbHBlcnMvYmluZC1maWx0ZXItcXVlcnkuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFNTCxLQUFLLEdBQ04sTUFBTSxvQkFBb0IsQ0FBQTtBQUMzQixPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFM0QsTUFBTSxPQUFPLHFCQUFxQjs7QUFDekIsc0NBQWdCLEdBQUcsQ0FDeEIsTUFBcUMsRUFDckMsTUFBa0MsRUFDakIsRUFBRSxDQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQTBCLEVBQUUsU0FBaUIsRUFBRSxFQUFFO0lBQzNFLE1BQU0sWUFBWSxHQUFHLHFCQUFxQixDQUFDLGVBQWUsQ0FDeEQsU0FBeUQsRUFDekQsTUFBTSxDQUNQLENBQUE7SUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWM7UUFDOUIsT0FBTztZQUNMLEdBQUcsU0FBUztZQUNaLEdBQUc7Z0JBQ0QsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUUscUJBQXFCLENBQUMsa0JBQWtCLENBQ2pFLFNBQXlELEVBQ3pELE1BQU0sQ0FBQyxTQUF5RCxDQUcvRCxFQUNELE1BQU0sQ0FDUDthQUNGO1NBQ0YsQ0FBQTtJQUVILE1BQU0sV0FBVyxHQUFr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S0FBSyxDQUFDLElBQUk7UUFDakMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQjtRQUN0QyxDQUFDLENBQUMsa0JBQWtCLENBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQ2xDLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FDbEIsZUFBZTtZQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBOEIsQ0FBQyxLQUFLLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FDbEUsQ0FDckMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgTW9kZWxCYXNlU3RydWN0dXJlLFxyXG4gIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXMsXHJcbiAgTm9uRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzLFxyXG4gIFJlcG9zaXRvcnlGaW5kRmllbHRlcnMsXHJcbiAgUmVwb3NpdG9yeUZpbmRGaWVsdGVyc09wdGlvbnMsXHJcbiAgV2hlcmUsXHJcbn0gZnJvbSAnLi4vLi4vLi4vLi4vZG9tYWluJ1xyXG5pbXBvcnQgeyBpcywgaXNOaWwsIGlzT2JqZWN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnXHJcbmltcG9ydCB7IEhhc3VyYUdyYXBoUUxDb2x1bW5UeXBlLCBIYXN1cmFHcmFwaFFMV2hlcmUgfSBmcm9tICcuLi8uLi9lbnVtcydcclxuaW1wb3J0IHsgQ29sdW1uT3B0aW9ucywgSGFzdXJhR3JhcGhRTEZpZWxkcywgVmFyaWFibGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnXHJcbmltcG9ydCB7IEF0dHJpYnV0ZU9wdGlvbkhlbHBlciB9IGZyb20gJy4vYXR0cmlidXRlLW9wdGlvbi5oZWxwZXInXHJcbmltcG9ydCB7IEZpbHRlck9wdGlvbkhlbHBlciB9IGZyb20gJy4vZmlsdGVyLW9wdGlvbi5oZWxwZXInXHJcblxyXG5leHBvcnQgY2xhc3MgQmluZEZpbHRlclF1ZXJ5SGVscGVyIHtcclxuICBzdGF0aWMgTWFrZUdyYXBoUUxXaGVyZSA9IDxNQmFzZSBleHRlbmRzIE1vZGVsQmFzZVN0cnVjdHVyZTxNQmFzZT4+KFxyXG4gICAgZmlsdGVyOiBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPE1CYXNlPixcclxuICAgIGZpZWxkczogSGFzdXJhR3JhcGhRTEZpZWxkczxNQmFzZT4sXHJcbiAgKTogVmFyaWFibGVPcHRpb25zID0+XHJcbiAgICBPYmplY3Qua2V5cyhmaWx0ZXIpLnJlZHVjZSgodmFyaWFibGVzOiBWYXJpYWJsZU9wdGlvbnMsIGZpZWxkTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbk9wdGlvbiA9IEF0dHJpYnV0ZU9wdGlvbkhlbHBlci5GaW5kQnlBdHRyaWJ1dGUoXHJcbiAgICAgICAgZmllbGROYW1lIGFzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8TUJhc2U+LFxyXG4gICAgICAgIGZpZWxkcyxcclxuICAgICAgKVxyXG5cclxuICAgICAgaWYgKCFjb2x1bW5PcHRpb24uYmluZEZpbmRGaWx0ZXIpXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIC4uLnZhcmlhYmxlcyxcclxuICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgW2NvbHVtbk9wdGlvbi5jb2x1bW5OYW1lXTogQmluZEZpbHRlclF1ZXJ5SGVscGVyLkJ1aWxkV2hlcmVTZW50ZW5jZShcclxuICAgICAgICAgICAgICBmaWVsZE5hbWUgYXMgTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydHlOYW1lczxNQmFzZT4sXHJcbiAgICAgICAgICAgICAgZmlsdGVyW2ZpZWxkTmFtZSBhcyBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1CYXNlPl0gYXMgUmVwb3NpdG9yeUZpbmRGaWVsdGVyc09wdGlvbnM8XHJcbiAgICAgICAgICAgICAgICBNQmFzZSxcclxuICAgICAgICAgICAgICAgIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8TUJhc2U+XHJcbiAgICAgICAgICAgICAgPixcclxuICAgICAgICAgICAgICBmaWVsZHMsXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGJ1aWx0RmlsdGVyOiBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPE1CYXNlPiA9IGNvbHVtbk9wdGlvbi5iaW5kRmluZEZpbHRlcihcclxuICAgICAgICBmaWx0ZXJbZmllbGROYW1lIGFzIE5vbkZ1bmN0aW9uUHJvcGVydHlOYW1lczxNQmFzZT5dIGFzIFJlcG9zaXRvcnlGaW5kRmllbHRlcnNPcHRpb25zPFxyXG4gICAgICAgICAgTUJhc2UsXHJcbiAgICAgICAgICBOb25GdW5jdGlvblByb3BlcnR5TmFtZXM8TUJhc2U+XHJcbiAgICAgICAgPixcclxuICAgICAgKVxyXG5cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi52YXJpYWJsZXMsXHJcbiAgICAgICAgLi4uT2JqZWN0LmtleXMoYnVpbHRGaWx0ZXIpLnJlZHVjZShcclxuICAgICAgICAgICh2YXJpYWJsZXNMaXN0OiBWYXJpYWJsZU9wdGlvbnMsIGNvbHVtbk5hbWU6IHN0cmluZykgPT4gKHtcclxuICAgICAgICAgICAgLi4udmFyaWFibGVzTGlzdCxcclxuICAgICAgICAgICAgW2NvbHVtbk5hbWVdOiBCaW5kRmlsdGVyUXVlcnlIZWxwZXIuQnVpbGRXaGVyZVNlbnRlbmNlKFxyXG4gICAgICAgICAgICAgIGZpZWxkTmFtZSBhcyBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1CYXNlPixcclxuICAgICAgICAgICAgICBidWlsdEZpbHRlcltjb2x1bW5OYW1lIGFzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8TUJhc2U+XSBhcyBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzT3B0aW9uczxcclxuICAgICAgICAgICAgICAgIE1CYXNlLFxyXG4gICAgICAgICAgICAgICAgTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydHlOYW1lczxNQmFzZT5cclxuICAgICAgICAgICAgICA+LFxyXG4gICAgICAgICAgICAgIGZpZWxkcyxcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAge30sXHJcbiAgICAgICAgKSxcclxuICAgICAgfVxyXG4gICAgfSwge30pXHJcblxyXG4gIHN0YXRpYyBCdWlsZFdoZXJlU2VudGVuY2UgPSA8TUJhc2UgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8TUJhc2U+PihcclxuICAgIGZpZWxkOiBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1CYXNlPixcclxuICAgIG9wdGlvbnM6IFJlcG9zaXRvcnlGaW5kRmllbHRlcnNPcHRpb25zPE1CYXNlLCBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1CYXNlPj4sXHJcbiAgICBmaWVsZHM6IEhhc3VyYUdyYXBoUUxGaWVsZHM8TUJhc2U+LFxyXG4gICk6IFZhcmlhYmxlT3B0aW9ucyA9PiB7XHJcbiAgICBjb25zdCBmaWVsZFNlbnRlbmNlT3B0aW9ucyA9IEF0dHJpYnV0ZU9wdGlvbkhlbHBlci5GaW5kQnlBdHRyaWJ1dGU8TUJhc2U+KGZpZWxkLCBmaWVsZHMpXHJcbiAgICBjb25zdCBpc05lc3RlZEZpZWxkID1cclxuICAgICAgIUFycmF5LmlzQXJyYXkob3B0aW9ucykgJiZcclxuICAgICAgaXNPYmplY3Qob3B0aW9ucykgJiZcclxuICAgICAgaXNOaWwob3B0aW9ucz8ub3BlcmF0b3IpICYmXHJcbiAgICAgIGlzTmlsKG9wdGlvbnM/LnZhbHVlKSAmJlxyXG4gICAgICBpc05pbChmaWVsZFNlbnRlbmNlT3B0aW9ucz8udG8pXHJcblxyXG4gICAgaWYgKGlzTmVzdGVkRmllbGQpXHJcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhvcHRpb25zKS5yZWR1Y2UoKHZhcmlhYmxlcywga2V5KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmllbGRPcHRpb25zID0gQXR0cmlidXRlT3B0aW9uSGVscGVyLkZpbmRCeUF0dHJpYnV0ZTxNQmFzZT4oXHJcbiAgICAgICAgICBrZXkgYXMgTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydHlOYW1lczxNQmFzZT4sXHJcbiAgICAgICAgICBmaWVsZFNlbnRlbmNlT3B0aW9ucz8uZmllbGRzIHx8IChmaWVsZHMgYXMgYW55KSxcclxuICAgICAgICApXHJcbiAgICAgICAgY29uc3QgY29sdW1uTmFtZSA9IGZpZWxkT3B0aW9ucy5jb2x1bW5OYW1lXHJcbiAgICAgICAgY29uc3QgY29sdW1uRmllbGRzID0gZmllbGRPcHRpb25zLmZpZWxkc1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4udmFyaWFibGVzLFxyXG4gICAgICAgICAgW2NvbHVtbk5hbWVdOiBCaW5kRmlsdGVyUXVlcnlIZWxwZXIuQnVpbGRXaGVyZVNlbnRlbmNlPE1CYXNlPihcclxuICAgICAgICAgICAga2V5IGFzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8TUJhc2U+LFxyXG4gICAgICAgICAgICBpczxSZXBvc2l0b3J5RmluZEZpZWx0ZXJzT3B0aW9uczxNQmFzZSwgTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydHlOYW1lczxNQmFzZT4+PihcclxuICAgICAgICAgICAgICBpczxSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPE1CYXNlPj4ob3B0aW9ucylba2V5IGFzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8TUJhc2U+XSxcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgZmllbGRTZW50ZW5jZU9wdGlvbnM/LmZpZWxkcyB8fCBjb2x1bW5GaWVsZHMgfHwgKGZpZWxkcyBhcyBhbnkpLFxyXG4gICAgICAgICAgKSxcclxuICAgICAgICB9XHJcbiAgICAgIH0sIHt9KVxyXG5cclxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSAmJiAhaXNOaWwoZmllbGRTZW50ZW5jZU9wdGlvbnMuZmllbGRzKSlcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBbZmllbGRTZW50ZW5jZU9wdGlvbnMuZmllbGRzWzBdIGFzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8TUJhc2U+XTpcclxuICAgICAgICAgIEJpbmRGaWx0ZXJRdWVyeUhlbHBlci5CdWlsZE9wZXJhdG9yU2VudGVuY2UoXHJcbiAgICAgICAgICAgIG9wdGlvbnMsXHJcbiAgICAgICAgICAgIGZpZWxkU2VudGVuY2VPcHRpb25zIGFzIENvbHVtbk9wdGlvbnM8TUJhc2VbTm9uRnVuY3Rpb25BbmRJZGVudGlmaWVyUHJvcGVydHlOYW1lczxNQmFzZT5dLCBNQmFzZT4sXHJcbiAgICAgICAgICApLFxyXG4gICAgICB9XHJcblxyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpICYmIGlzT2JqZWN0KG9wdGlvbnMpICYmICFGaWx0ZXJPcHRpb25IZWxwZXIuQ2hlY2tJZklzRmlsdGVyT3B0aW9uKG9wdGlvbnMpKVxyXG4gICAgICBvcHRpb25zID0gT2JqZWN0LnZhbHVlcyhvcHRpb25zKVswXSBhcyBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzT3B0aW9uczxNQmFzZSwgYW55PlxyXG5cclxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KG9wdGlvbnMpXHJcbiAgICAgID8gb3B0aW9ucy5yZWR1Y2UoXHJcbiAgICAgICAgICAod2hlcmVTZW50ZW5jZSwgb3B0aW9uKSA9PiAoe1xyXG4gICAgICAgICAgICAuLi53aGVyZVNlbnRlbmNlLFxyXG4gICAgICAgICAgICAuLi5CaW5kRmlsdGVyUXVlcnlIZWxwZXIuQnVpbGRPcGVyYXRvclNlbnRlbmNlKFxyXG4gICAgICAgICAgICAgIG9wdGlvbixcclxuICAgICAgICAgICAgICBmaWVsZFNlbnRlbmNlT3B0aW9ucyBhcyBDb2x1bW5PcHRpb25zPE1CYXNlW05vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8TUJhc2U+XSwgTUJhc2U+LFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICB7fSxcclxuICAgICAgICApXHJcbiAgICAgIDogQmluZEZpbHRlclF1ZXJ5SGVscGVyLkJ1aWxkT3BlcmF0b3JTZW50ZW5jZShcclxuICAgICAgICAgIG9wdGlvbnMsXHJcbiAgICAgICAgICBmaWVsZFNlbnRlbmNlT3B0aW9ucyBhcyBDb2x1bW5PcHRpb25zPE1CYXNlW05vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8TUJhc2U+XSwgTUJhc2U+LFxyXG4gICAgICAgIClcclxuICB9XHJcblxyXG4gIHN0YXRpYyBCdWlsZE9wZXJhdG9yU2VudGVuY2UgPSA8TUJhc2UgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8TUJhc2U+PihcclxuICAgIG9wdGlvbnM6IFJlcG9zaXRvcnlGaW5kRmllbHRlcnNPcHRpb25zPE1CYXNlLCBhbnk+LFxyXG4gICAgZmllbGRPcHRpb246IENvbHVtbk9wdGlvbnM8YW55LCBhbnk+LFxyXG4gICk6IFZhcmlhYmxlT3B0aW9ucyA9PiAoe1xyXG4gICAgW0JpbmRGaWx0ZXJRdWVyeUhlbHBlci5HZXRIYXN1cmFPcGVyYXRvcihvcHRpb25zLCBmaWVsZE9wdGlvbildOiBGaWx0ZXJPcHRpb25IZWxwZXIuR2V0VmFsdWVGcm9tRmlsdGVyKFxyXG4gICAgICBvcHRpb25zLFxyXG4gICAgICBmaWVsZE9wdGlvbixcclxuICAgICksXHJcbiAgfSlcclxuXHJcbiAgc3RhdGljIEdldEhhc3VyYU9wZXJhdG9yID0gPE1CYXNlIGV4dGVuZHMgTW9kZWxCYXNlU3RydWN0dXJlPE1CYXNlPj4oXHJcbiAgICBvcHRpb25zOiBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzT3B0aW9uczxNQmFzZSwgTm9uRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzPE1CYXNlPj4sXHJcbiAgICBmaWVsZE9wdGlvbjogQ29sdW1uT3B0aW9uczxhbnksIGFueT4sXHJcbiAgKTogSGFzdXJhR3JhcGhRTFdoZXJlID0+XHJcbiAgICBGaWx0ZXJPcHRpb25IZWxwZXIuQ2hlY2tJZklzRmlsdGVyT3B0aW9uKG9wdGlvbnMpXHJcbiAgICAgID8gZmllbGRPcHRpb24udHlwZSA9PT0gSGFzdXJhR3JhcGhRTENvbHVtblR5cGUuSnNvbmJcclxuICAgICAgICA/IEJpbmRGaWx0ZXJRdWVyeUhlbHBlci5HZXRIYXN1cmFKc29uYk9wZXJhdG9yKG9wdGlvbnMpXHJcbiAgICAgICAgOiBIYXN1cmFHcmFwaFFMV2hlcmVbXHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKEhhc3VyYUdyYXBoUUxXaGVyZSkuZmluZChcclxuICAgICAgICAgICAgICAoZ3JhcGhRTE9wZXJhdG9yKSA9PlxyXG4gICAgICAgICAgICAgICAgZ3JhcGhRTE9wZXJhdG9yID09PVxyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoV2hlcmUpLmZpbmQoKG9wZXJhdG9yKSA9PiBXaGVyZVtvcGVyYXRvciBhcyBrZXlvZiB0eXBlb2YgV2hlcmVdID09PSBvcHRpb25zPy5vcGVyYXRvciksXHJcbiAgICAgICAgICAgICkgYXMga2V5b2YgdHlwZW9mIEhhc3VyYUdyYXBoUUxXaGVyZVxyXG4gICAgICAgICAgXVxyXG4gICAgICA6IEhhc3VyYUdyYXBoUUxXaGVyZS5FUVVBTFNcclxuXHJcbiAgc3RhdGljIEdldEhhc3VyYUpzb25iT3BlcmF0b3IgPSA8TUJhc2UgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8TUJhc2U+PihcclxuICAgIG9wdGlvbnM6IFJlcG9zaXRvcnlGaW5kRmllbHRlcnNPcHRpb25zPE1CYXNlLCBOb25GdW5jdGlvblByb3BlcnR5TmFtZXM8TUJhc2U+PixcclxuICApOiBIYXN1cmFHcmFwaFFMV2hlcmUgPT5cclxuICAgIG9wdGlvbnMub3BlcmF0b3IgPT09IFdoZXJlLklOXHJcbiAgICAgID8gSGFzdXJhR3JhcGhRTFdoZXJlLkpTT05fQ09OVEFJTlNcclxuICAgICAgOiBvcHRpb25zLm9wZXJhdG9yID09PSBXaGVyZS5MSUtFXHJcbiAgICAgID8gSGFzdXJhR3JhcGhRTFdoZXJlLkpTT05fSEFTX0tFWVNfQU5ZXHJcbiAgICAgIDogSGFzdXJhR3JhcGhRTFdoZXJlW1xyXG4gICAgICAgICAgT2JqZWN0LmtleXMoSGFzdXJhR3JhcGhRTFdoZXJlKS5maW5kKFxyXG4gICAgICAgICAgICAoZ3JhcGhRTE9wZXJhdG9yKSA9PlxyXG4gICAgICAgICAgICAgIGdyYXBoUUxPcGVyYXRvciA9PT1cclxuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhXaGVyZSkuZmluZCgob3BlcmF0b3IpID0+IFdoZXJlW29wZXJhdG9yIGFzIGtleW9mIHR5cGVvZiBXaGVyZV0gPT09IG9wdGlvbnM/Lm9wZXJhdG9yKSxcclxuICAgICAgICAgICkgYXMga2V5b2YgdHlwZW9mIEhhc3VyYUdyYXBoUUxXaGVyZVxyXG4gICAgICAgIF1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Where } from '../../../../domain';
|
|
2
|
+
import { isNil } from '../../../../utils';
|
|
3
|
+
export class FilterOptionHelper {
|
|
4
|
+
}
|
|
5
|
+
FilterOptionHelper.CheckIfIsFilterOption = (filter) => !isNil(filter?.operator);
|
|
6
|
+
FilterOptionHelper.GetValueFromFilter = (filter, fieldOption) => {
|
|
7
|
+
if (!FilterOptionHelper.CheckIfIsFilterOption(filter))
|
|
8
|
+
return filter;
|
|
9
|
+
if (filter.operator === Where.ISNULL)
|
|
10
|
+
return true;
|
|
11
|
+
if (filter.operator === Where.ISNOTNULL)
|
|
12
|
+
return false;
|
|
13
|
+
const converter = fieldOption.to
|
|
14
|
+
? fieldOption.to
|
|
15
|
+
: (value) => filter.operator === Where.LIKE && !Array.isArray(filter.value) && value.indexOf('%') < 0
|
|
16
|
+
? `%${value}%`
|
|
17
|
+
: value;
|
|
18
|
+
return Array.isArray(filter.value) && !fieldOption.fields && [Where.IN, Where.NOTIN].includes(filter.operator)
|
|
19
|
+
? filter.value.map((fieldValue) => converter(fieldValue))
|
|
20
|
+
: converter(filter.value);
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLW9wdGlvbi5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9pbmZyYS9oYXN1cmEtZ3JhcGhxbC9taXhpbnMvaGVscGVycy9maWx0ZXItb3B0aW9uLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFELEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzdGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUd6QyxNQUFNLE9BQU8sa0JBQWtCOztBQUN0Qix3Q0FBcUIsR0FBRyxDQUM3QixNQUFXLEVBQzBDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFFM0UscUNBQWtCLEdBQUcsQ0FDMUIsTUFBaUQsRUFDakQsV0FBb0MsRUFDL0IsRUFBRTtJQUNQLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUM7UUFBRSxPQUFPLE1BQU0sQ0FBQTtJQUNwRSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLE1BQU07UUFBRSxPQUFPLElBQUksQ0FBQTtJQUNqRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLFNBQVM7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUVyRCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsRUFBRTtRQUM5QixDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUU7UUFDaEIsQ0FBQyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FDYixNQUFNLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFDdEYsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHO1lBQ2QsQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUVmLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDNUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBWSxDQUFDLENBQUE7QUFDcEMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWxCYXNlU3RydWN0dXJlLCBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzT3B0aW9ucywgV2hlcmUgfSBmcm9tICcuLi8uLi8uLi8uLi9kb21haW4nXHJcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnXHJcbmltcG9ydCB7IENvbHVtbk9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcydcclxuXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJPcHRpb25IZWxwZXIge1xyXG4gIHN0YXRpYyBDaGVja0lmSXNGaWx0ZXJPcHRpb24gPSA8TW9kZWwgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU+KFxyXG4gICAgZmlsdGVyOiBhbnksXHJcbiAgKTogZmlsdGVyIGlzIFJlcG9zaXRvcnlGaW5kRmllbHRlcnNPcHRpb25zPE1vZGVsLCBhbnk+ID0+ICFpc05pbChmaWx0ZXI/Lm9wZXJhdG9yKVxyXG5cclxuICBzdGF0aWMgR2V0VmFsdWVGcm9tRmlsdGVyID0gPE1vZGVsIGV4dGVuZHMgTW9kZWxCYXNlU3RydWN0dXJlPE1vZGVsPj4oXHJcbiAgICBmaWx0ZXI6IFJlcG9zaXRvcnlGaW5kRmllbHRlcnNPcHRpb25zPE1vZGVsLCBhbnk+LFxyXG4gICAgZmllbGRPcHRpb246IENvbHVtbk9wdGlvbnM8YW55LCBhbnk+LFxyXG4gICk6IGFueSA9PiB7XHJcbiAgICBpZiAoIUZpbHRlck9wdGlvbkhlbHBlci5DaGVja0lmSXNGaWx0ZXJPcHRpb24oZmlsdGVyKSkgcmV0dXJuIGZpbHRlclxyXG4gICAgaWYgKGZpbHRlci5vcGVyYXRvciA9PT0gV2hlcmUuSVNOVUxMKSByZXR1cm4gdHJ1ZVxyXG4gICAgaWYgKGZpbHRlci5vcGVyYXRvciA9PT0gV2hlcmUuSVNOT1ROVUxMKSByZXR1cm4gZmFsc2VcclxuXHJcbiAgICBjb25zdCBjb252ZXJ0ZXIgPSBmaWVsZE9wdGlvbi50b1xyXG4gICAgICA/IGZpZWxkT3B0aW9uLnRvXHJcbiAgICAgIDogKHZhbHVlOiBhbnkpID0+XHJcbiAgICAgICAgICBmaWx0ZXIub3BlcmF0b3IgPT09IFdoZXJlLkxJS0UgJiYgIUFycmF5LmlzQXJyYXkoZmlsdGVyLnZhbHVlKSAmJiB2YWx1ZS5pbmRleE9mKCclJykgPCAwXHJcbiAgICAgICAgICAgID8gYCUke3ZhbHVlfSVgXHJcbiAgICAgICAgICAgIDogdmFsdWVcclxuXHJcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShmaWx0ZXIudmFsdWUpICYmICFmaWVsZE9wdGlvbi5maWVsZHMgJiYgW1doZXJlLklOLCBXaGVyZS5OT1RJTl0uaW5jbHVkZXMoZmlsdGVyLm9wZXJhdG9yKVxyXG4gICAgICA/IGZpbHRlci52YWx1ZS5tYXAoKGZpZWxkVmFsdWUpID0+IGNvbnZlcnRlcihmaWVsZFZhbHVlKSlcclxuICAgICAgOiBjb252ZXJ0ZXIoZmlsdGVyLnZhbHVlIGFzIGFueSlcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { BaseModel, } from '../../../../domain';
|
|
2
|
+
import { is, isDate, isEmpty, isNil, isObject, isString, parseDateTime } from '../../../../utils';
|
|
3
|
+
import { AttributeOptionHelper } from './attribute-option.helper';
|
|
4
|
+
import { BindFilterQueryHelper } from './bind-filter-query.helper';
|
|
5
|
+
export class GraphQLFieldHelper {
|
|
6
|
+
}
|
|
7
|
+
GraphQLFieldHelper.CheckIsGraphQLParams = (params) => !isString(params) && Array.isArray(params) && params.length >= 0 && !!params[0].operation;
|
|
8
|
+
GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields = (fields) => {
|
|
9
|
+
return fields
|
|
10
|
+
?.map((field) => {
|
|
11
|
+
if (isString(field))
|
|
12
|
+
return field.toString();
|
|
13
|
+
if (field === 'affected_rows')
|
|
14
|
+
return field;
|
|
15
|
+
const fieldName = Object.keys(field).shift();
|
|
16
|
+
const fieldValue = is(field[fieldName]);
|
|
17
|
+
if (Array.isArray(fieldValue))
|
|
18
|
+
return { [fieldName]: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fieldValue) };
|
|
19
|
+
if (!AttributeOptionHelper.CheckIsColumnOption(fieldValue))
|
|
20
|
+
return;
|
|
21
|
+
const isNestedField = !!fieldValue.fields;
|
|
22
|
+
if (isNestedField)
|
|
23
|
+
return GraphQLFieldHelper.ConvertNestedFieldsToGraphQLFields(fieldName, fieldValue);
|
|
24
|
+
return fieldValue.columnName;
|
|
25
|
+
})
|
|
26
|
+
.filter((field) => !!field);
|
|
27
|
+
};
|
|
28
|
+
GraphQLFieldHelper.ConvertFieldValueFrom = (data, fields) => Object.keys(data).reduce((result, columnName) => {
|
|
29
|
+
const { attributeName, fields: attributeFields, from, } = AttributeOptionHelper.FindColumnOptionFromList(columnName, fields);
|
|
30
|
+
if (!!attributeFields && Array.isArray(attributeFields)) {
|
|
31
|
+
if (Array.isArray(data[columnName]))
|
|
32
|
+
return {
|
|
33
|
+
...result,
|
|
34
|
+
[attributeName]: from
|
|
35
|
+
? from(data[columnName], data)
|
|
36
|
+
: is(data[columnName]).map((value) => GraphQLFieldHelper.ConvertFieldValueFrom(is(value), attributeFields)),
|
|
37
|
+
};
|
|
38
|
+
if (isObject(data[columnName]))
|
|
39
|
+
return {
|
|
40
|
+
...result,
|
|
41
|
+
[attributeName]: !!from
|
|
42
|
+
? from(data[columnName])
|
|
43
|
+
: GraphQLFieldHelper.ConvertFieldValueFrom(is(data[columnName]), attributeFields),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
if (!!from)
|
|
47
|
+
return { ...result, [attributeName]: from(data[columnName], data) };
|
|
48
|
+
return {
|
|
49
|
+
...result,
|
|
50
|
+
[attributeName]: isString(data[columnName]) ? parseDateTime(data[columnName].toString()) : data[columnName],
|
|
51
|
+
};
|
|
52
|
+
}, {});
|
|
53
|
+
GraphQLFieldHelper.ConvertFieldValueTo = (instance, fields, update = false) => {
|
|
54
|
+
const data = instance.toPlain?.() || instance;
|
|
55
|
+
return Object.keys(data).reduce((result, attributeName) => {
|
|
56
|
+
const { columnName, fields: attributeFields, foreignKeyColumn, to, bindPersistData, } = AttributeOptionHelper.FindByAttribute(attributeName, fields);
|
|
57
|
+
if (bindPersistData)
|
|
58
|
+
return {
|
|
59
|
+
...result,
|
|
60
|
+
...bindPersistData(data[attributeName], instance),
|
|
61
|
+
};
|
|
62
|
+
if (isNil(columnName))
|
|
63
|
+
return result;
|
|
64
|
+
if (!!foreignKeyColumn &&
|
|
65
|
+
!isEmpty(foreignKeyColumn) &&
|
|
66
|
+
!Object.keys(foreignKeyColumn).filter((key) => !is(data[attributeName])?.[key]).length)
|
|
67
|
+
return Object.keys(foreignKeyColumn).reduce((object, current) => {
|
|
68
|
+
const { columnName: foreignColumnName } = AttributeOptionHelper.FindByAttribute(foreignKeyColumn[current], fields);
|
|
69
|
+
return {
|
|
70
|
+
...object,
|
|
71
|
+
[foreignColumnName]: data[attributeName]?.[current],
|
|
72
|
+
};
|
|
73
|
+
}, { ...result });
|
|
74
|
+
if (update &&
|
|
75
|
+
isObject(data[attributeName]) &&
|
|
76
|
+
!isNil(attributeFields) &&
|
|
77
|
+
!isDate(data[attributeName]))
|
|
78
|
+
return result;
|
|
79
|
+
if (!!columnName &&
|
|
80
|
+
Array.isArray(attributeFields) &&
|
|
81
|
+
isObject(data[attributeName])) {
|
|
82
|
+
const converted = !isNil(columnName) && to
|
|
83
|
+
? to(instance[attributeName], instance)
|
|
84
|
+
: data[attributeName];
|
|
85
|
+
return {
|
|
86
|
+
...result,
|
|
87
|
+
...(converted !== undefined
|
|
88
|
+
? {
|
|
89
|
+
[columnName]: {
|
|
90
|
+
data: instance[attributeName] instanceof BaseModel
|
|
91
|
+
? GraphQLFieldHelper.ConvertFieldValueTo(data[attributeName], attributeFields)
|
|
92
|
+
: converted,
|
|
93
|
+
},
|
|
94
|
+
}
|
|
95
|
+
: {}),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
if (!!to)
|
|
99
|
+
return {
|
|
100
|
+
...result,
|
|
101
|
+
[columnName]: to(instance[attributeName], instance),
|
|
102
|
+
};
|
|
103
|
+
return { ...result, [columnName]: data[attributeName] };
|
|
104
|
+
}, {});
|
|
105
|
+
};
|
|
106
|
+
GraphQLFieldHelper.ConvertNestedFieldsToGraphQLFields = (fieldName, fieldValue) => {
|
|
107
|
+
const hasCustomFilters = !!fieldValue.filters;
|
|
108
|
+
if (hasCustomFilters)
|
|
109
|
+
return {
|
|
110
|
+
operation: fieldValue.columnName || fieldName,
|
|
111
|
+
fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fieldValue.fields),
|
|
112
|
+
variables: {
|
|
113
|
+
[`${fieldValue.columnName}_where`]: {
|
|
114
|
+
name: 'where',
|
|
115
|
+
type: fieldValue.filters.filterType,
|
|
116
|
+
value: BindFilterQueryHelper.MakeGraphQLWhere(fieldValue.filters.filters, fieldValue.fields),
|
|
117
|
+
required: true,
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
return {
|
|
122
|
+
[fieldValue.columnName || fieldName]: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fieldValue.fields),
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1maWVsZC5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9pbmZyYS9oYXN1cmEtZ3JhcGhxbC9taXhpbnMvaGVscGVycy9ncmFwaHFsLWZpZWxkLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsU0FBUyxHQUtWLE1BQU0sb0JBQW9CLENBQUE7QUFDM0IsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWpHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBRWxFLE1BQU0sT0FBTyxrQkFBa0I7O0FBQ3RCLHVDQUFvQixHQUFHLENBQzVCLE1BQW9ELEVBQ2xCLEVBQUUsQ0FDcEMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtBQUVwRixvREFBaUMsR0FBRyxDQUN6QyxNQUFrQyxFQUMxQixFQUFFO0lBQ1YsT0FBTyxNQUFNO1FBQ1gsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNkLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQzVDLElBQUksS0FBSyxLQUFLLGVBQWU7WUFBRSxPQUFPLEtBQUssQ0FBQTtRQUUzQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUss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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJT3BlcmF0aW9uIH0gZnJvbSAnZ3FsLXF1ZXJ5LWJ1aWxkZXIvYnVpbGQvSVF1ZXJ5QnVpbGRlck9wdGlvbnMnXHJcbmltcG9ydCB7XHJcbiAgQmFzZU1vZGVsLFxyXG4gIE1vZGVsQmFzZVN0cnVjdHVyZSxcclxuICBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0aWVzV2l0aE5vUGFydGlhbCxcclxuICBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzLFxyXG4gIFBhcnRpYWxJZGVudGlmaWVyc01vZGVsLFxyXG59IGZyb20gJy4uLy4uLy4uLy4uL2RvbWFpbidcclxuaW1wb3J0IHsgaXMsIGlzRGF0ZSwgaXNFbXB0eSwgaXNOaWwsIGlzT2JqZWN0LCBpc1N0cmluZywgcGFyc2VEYXRlVGltZSB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzJ1xyXG5pbXBvcnQgeyBDb2x1bW5PcHRpb25zLCBGaWVsZHMsIEdyYXBoUUxQYXJhbXMsIEhhc3VyYUdyYXBoUUxGaWVsZHMgfSBmcm9tICcuLi8uLi90eXBlcydcclxuaW1wb3J0IHsgQXR0cmlidXRlT3B0aW9uSGVscGVyIH0gZnJvbSAnLi9hdHRyaWJ1dGUtb3B0aW9uLmhlbHBlcidcclxuaW1wb3J0IHsgQmluZEZpbHRlclF1ZXJ5SGVscGVyIH0gZnJvbSAnLi9iaW5kLWZpbHRlci1xdWVyeS5oZWxwZXInXHJcblxyXG5leHBvcnQgY2xhc3MgR3JhcGhRTEZpZWxkSGVscGVyIHtcclxuICBzdGF0aWMgQ2hlY2tJc0dyYXBoUUxQYXJhbXMgPSA8TW9kZWwgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8TW9kZWw+PihcclxuICAgIHBhcmFtczogc3RyaW5nIHwgSU9wZXJhdGlvbiB8IEdyYXBoUUxQYXJhbXM8TW9kZWw+W10sXHJcbiAgKTogcGFyYW1zIGlzIEdyYXBoUUxQYXJhbXM8TW9kZWw+W10gPT5cclxuICAgICFpc1N0cmluZyhwYXJhbXMpICYmIEFycmF5LmlzQXJyYXkocGFyYW1zKSAmJiBwYXJhbXMubGVuZ3RoID49IDAgJiYgISFwYXJhbXNbMF0ub3BlcmF0aW9uXHJcblxyXG4gIHN0YXRpYyBDb252ZXJ0TW9kZWxGaWVsZHNUb0dyYXBoUUxGaWVsZHMgPSA8TW9kZWwgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8TW9kZWw+PihcclxuICAgIGZpZWxkczogSGFzdXJhR3JhcGhRTEZpZWxkczxNb2RlbD4sXHJcbiAgKTogRmllbGRzID0+IHtcclxuICAgIHJldHVybiBmaWVsZHNcclxuICAgICAgPy5tYXAoKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgaWYgKGlzU3RyaW5nKGZpZWxkKSkgcmV0dXJuIGZpZWxkLnRvU3RyaW5nKClcclxuICAgICAgICBpZiAoZmllbGQgPT09ICdhZmZlY3RlZF9yb3dzJykgcmV0dXJuIGZpZWxkXHJcblxyXG4gICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IE9iamVjdC5rZXlzKGZpZWxkKS5zaGlmdCgpXHJcbiAgICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IGlzPENvbHVtbk9wdGlvbnM8YW55LCBNb2RlbD4+KGZpZWxkW2ZpZWxkTmFtZSBhcyBrZXlvZiB0eXBlb2YgZmllbGRdKVxyXG5cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZFZhbHVlKSlcclxuICAgICAgICAgIHJldHVybiB7IFtmaWVsZE5hbWVdOiBHcmFwaFFMRmllbGRIZWxwZXIuQ29udmVydE1vZGVsRmllbGRzVG9HcmFwaFFMRmllbGRzKGZpZWxkVmFsdWUpIH1cclxuICAgICAgICBpZiAoIUF0dHJpYnV0ZU9wdGlvbkhlbHBlci5DaGVja0lzQ29sdW1uT3B0aW9uKGZpZWxkVmFsdWUpKSByZXR1cm5cclxuXHJcbiAgICAgICAgY29uc3QgaXNOZXN0ZWRGaWVsZCA9ICEhZmllbGRWYWx1ZS5maWVsZHNcclxuXHJcbiAgICAgICAgaWYgKGlzTmVzdGVkRmllbGQpIHJldHVybiBHcmFwaFFMRmllbGRIZWxwZXIuQ29udmVydE5lc3RlZEZpZWxkc1RvR3JhcGhRTEZpZWxkcyhmaWVsZE5hbWUsIGZpZWxkVmFsdWUgYXMgYW55KVxyXG5cclxuICAgICAgICByZXR1cm4gZmllbGRWYWx1ZS5jb2x1bW5OYW1lXHJcbiAgICAgIH0pXHJcbiAgICAgIC5maWx0ZXIoKGZpZWxkKSA9PiAhIWZpZWxkKVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIENvbnZlcnRGaWVsZFZhbHVlRnJvbSA9IDxcclxuICAgIE1vZGVsIGV4dGVuZHMgTW9kZWxCYXNlU3RydWN0dXJlLFxyXG4gICAgUmVjb3JkRGF0YVR5cGUgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBEYXRhVHlwZSB8IERhdGUsXHJcbiAgICBEYXRhVHlwZSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIFJlY29yZERhdGFUeXBlIHwgUmVjb3JkRGF0YVR5cGVbXT4sXHJcbiAgPihcclxuICAgIGRhdGE6IERhdGFUeXBlLFxyXG4gICAgZmllbGRzOiBIYXN1cmFHcmFwaFFMRmllbGRzPE1vZGVsPixcclxuICApOiBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0aWVzV2l0aE5vUGFydGlhbDxNb2RlbD4gfCBQYXJ0aWFsSWRlbnRpZmllcnNNb2RlbDxNb2RlbD4gPT5cclxuICAgIE9iamVjdC5rZXlzKGRhdGEpLnJlZHVjZSgocmVzdWx0LCBjb2x1bW5OYW1lKSA9PiB7XHJcbiAgICAgIGNvbnN0IHtcclxuICAgICAgICBhdHRyaWJ1dGVOYW1lLFxyXG4gICAgICAgIGZpZWxkczogYXR0cmlidXRlRmllbGRzLFxyXG4gICAgICAgIGZyb20sXHJcbiAgICAgIH0gPSBBdHRyaWJ1dGVPcHRpb25IZWxwZXIuRmluZENvbHVtbk9wdGlvbkZyb21MaXN0KGNvbHVtbk5hbWUsIGZpZWxkcylcclxuXHJcbiAgICAgIGlmICghIWF0dHJpYnV0ZUZpZWxkcyAmJiBBcnJheS5pc0FycmF5KGF0dHJpYnV0ZUZpZWxkcykpIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhW2NvbHVtbk5hbWVdKSlcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcclxuICAgICAgICAgICAgW2F0dHJpYnV0ZU5hbWVdOiBmcm9tXHJcbiAgICAgICAgICAgICAgPyBmcm9tKGRhdGFbY29sdW1uTmFtZV0sIGRhdGEpXHJcbiAgICAgICAgICAgICAgOiBpczxSZWNvcmREYXRhVHlwZVtdPihkYXRhW2NvbHVtbk5hbWVdKS5tYXAoKHZhbHVlKSA9PlxyXG4gICAgICAgICAgICAgICAgICBHcmFwaFFMRmllbGRIZWxwZXIuQ29udmVydEZpZWxkVmFsdWVGcm9tKGlzPERhdGFUeXBlPih2YWx1ZSksIGF0dHJpYnV0ZUZpZWxkcyksXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc09iamVjdChkYXRhW2NvbHVtbk5hbWVdKSlcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcclxuICAgICAgICAgICAgW2F0dHJpYnV0ZU5hbWVdOiAhIWZyb21cclxuICAgICAgICAgICAgICA/IGZyb20oZGF0YVtjb2x1bW5OYW1lXSlcclxuICAgICAgICAgICAgICA6IEdyYXBoUUxGaWVsZEhlbHBlci5Db252ZXJ0RmllbGRWYWx1ZUZyb20oaXM8RGF0YVR5cGU+KGRhdGFbY29sdW1uTmFtZV0pLCBhdHRyaWJ1dGVGaWVsZHMpLFxyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoISFmcm9tKSByZXR1cm4geyAuLi5yZXN1bHQsIFthdHRyaWJ1dGVOYW1lXTogZnJvbShkYXRhW2NvbHVtbk5hbWVdLCBkYXRhKSB9XHJcblxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLnJlc3VsdCxcclxuICAgICAgICBbYXR0cmlidXRlTmFtZV06IGlzU3RyaW5nKGRhdGFbY29sdW1uTmFtZV0pID8gcGFyc2VEYXRlVGltZShkYXRhW2NvbHVtbk5hbWVdLnRvU3RyaW5nKCkpIDogZGF0YVtjb2x1bW5OYW1lXSxcclxuICAgICAgfVxyXG4gICAgfSwge30pXHJcblxyXG4gIHN0YXRpYyBDb252ZXJ0RmllbGRWYWx1ZVRvID0gPFxyXG4gICAgTW9kZWwgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8TW9kZWw+LFxyXG4gICAgRGF0YVR5cGUgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBEYXRhVHlwZSB8IERhdGU+LFxyXG4gID4oXHJcbiAgICBpbnN0YW5jZTogTW9kZWwsXHJcbiAgICBmaWVsZHM6IEhhc3VyYUdyYXBoUUxGaWVsZHM8TW9kZWw+LFxyXG4gICAgdXBkYXRlID0gZmFsc2UsXHJcbiAgKTogRGF0YVR5cGUgPT4ge1xyXG4gICAgY29uc3QgZGF0YTogUGFydGlhbDxNb2RlbD4gPSBpbnN0YW5jZS50b1BsYWluPy4oKSB8fCBpbnN0YW5jZVxyXG5cclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhkYXRhKS5yZWR1Y2UoKHJlc3VsdCwgYXR0cmlidXRlTmFtZSkgPT4ge1xyXG4gICAgICBjb25zdCB7XHJcbiAgICAgICAgY29sdW1uTmFtZSxcclxuICAgICAgICBmaWVsZHM6IGF0dHJpYnV0ZUZpZWxkcyxcclxuICAgICAgICBmb3JlaWduS2V5Q29sdW1uLFxyXG4gICAgICAgIHRvLFxyXG4gICAgICAgIGJpbmRQZXJzaXN0RGF0YSxcclxuICAgICAgfSA9IEF0dHJpYnV0ZU9wdGlvbkhlbHBlci5GaW5kQnlBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSBhcyBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1vZGVsPiwgZmllbGRzKVxyXG5cclxuICAgICAgaWYgKGJpbmRQZXJzaXN0RGF0YSlcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4ucmVzdWx0LFxyXG4gICAgICAgICAgLi4uYmluZFBlcnNpc3REYXRhKGRhdGFbYXR0cmlidXRlTmFtZSBhcyBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1vZGVsPl0sIGluc3RhbmNlKSxcclxuICAgICAgICB9XHJcbiAgICAgIGlmIChpc05pbChjb2x1bW5OYW1lKSkgcmV0dXJuIHJlc3VsdFxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgISFmb3JlaWduS2V5Q29sdW1uICYmXHJcbiAgICAgICAgIWlzRW1wdHkoZm9yZWlnbktleUNvbHVtbikgJiZcclxuICAgICAgICAhT2JqZWN0LmtleXMoZm9yZWlnbktleUNvbHVtbikuZmlsdGVyKFxyXG4gICAgICAgICAgKGtleSkgPT5cclxuICAgICAgICAgICAgIWlzPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KGRhdGFbYXR0cmlidXRlTmFtZSBhcyBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1vZGVsPl0pPy5ba2V5XSxcclxuICAgICAgICApLmxlbmd0aFxyXG4gICAgICApXHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGZvcmVpZ25LZXlDb2x1bW4pLnJlZHVjZShcclxuICAgICAgICAgIChvYmplY3QsIGN1cnJlbnQpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgeyBjb2x1bW5OYW1lOiBmb3JlaWduQ29sdW1uTmFtZSB9ID0gQXR0cmlidXRlT3B0aW9uSGVscGVyLkZpbmRCeUF0dHJpYnV0ZShcclxuICAgICAgICAgICAgICBmb3JlaWduS2V5Q29sdW1uW2N1cnJlbnQgYXMga2V5b2YgSGFzdXJhR3JhcGhRTEZpZWxkczxNb2RlbD5bbnVtYmVyXV0sXHJcbiAgICAgICAgICAgICAgZmllbGRzLFxyXG4gICAgICAgICAgICApXHJcblxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIC4uLm9iamVjdCxcclxuICAgICAgICAgICAgICBbZm9yZWlnbkNvbHVtbk5hbWVdOiBkYXRhW2F0dHJpYnV0ZU5hbWUgYXMga2V5b2YgSGFzdXJhR3JhcGhRTEZpZWxkczxNb2RlbD5bbnVtYmVyXV0/LltjdXJyZW50XSxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHsgLi4ucmVzdWx0IH0sXHJcbiAgICAgICAgKVxyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHVwZGF0ZSAmJlxyXG4gICAgICAgIGlzT2JqZWN0KGRhdGFbYXR0cmlidXRlTmFtZSBhcyBrZXlvZiBIYXN1cmFHcmFwaFFMRmllbGRzPE1vZGVsPltudW1iZXJdXSkgJiZcclxuICAgICAgICAhaXNOaWwoYXR0cmlidXRlRmllbGRzKSAmJlxyXG4gICAgICAgICFpc0RhdGUoZGF0YVthdHRyaWJ1dGVOYW1lIGFzIGtleW9mIEhhc3VyYUdyYXBoUUxGaWVsZHM8TW9kZWw+W251bWJlcl1dKVxyXG4gICAgICApXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgICEhY29sdW1uTmFtZSAmJlxyXG4gICAgICAgIEFycmF5LmlzQXJyYXkoYXR0cmlidXRlRmllbGRzKSAmJlxyXG4gICAgICAgIGlzT2JqZWN0KGRhdGFbYXR0cmlidXRlTmFtZSBhcyBrZXlvZiBIYXN1cmFHcmFwaFFMRmllbGRzPE1vZGVsPltudW1iZXJdXSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgY29udmVydGVkID1cclxuICAgICAgICAgICFpc05pbChjb2x1bW5OYW1lKSAmJiB0b1xyXG4gICAgICAgICAgICA/IHRvKGluc3RhbmNlW2F0dHJpYnV0ZU5hbWUgYXMga2V5b2YgSGFzdXJhR3JhcGhRTEZpZWxkczxNb2RlbD5bbnVtYmVyXV0sIGluc3RhbmNlKVxyXG4gICAgICAgICAgICA6IGRhdGFbYXR0cmlidXRlTmFtZSBhcyBrZXlvZiBIYXN1cmFHcmFwaFFMRmllbGRzPE1vZGVsPltudW1iZXJdXVxyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4ucmVzdWx0LFxyXG4gICAgICAgICAgLi4uKGNvbnZlcnRlZCAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgID8ge1xyXG4gICAgICAgICAgICAgICAgW2NvbHVtbk5hbWVdOiB7XHJcbiAgICAgICAgICAgICAgICAgIGRhdGE6XHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VbYXR0cmlidXRlTmFtZSBhcyBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPE1vZGVsPl0gaW5zdGFuY2VvZiBCYXNlTW9kZWxcclxuICAgICAgICAgICAgICAgICAgICAgID8gR3JhcGhRTEZpZWxkSGVscGVyLkNvbnZlcnRGaWVsZFZhbHVlVG8oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVthdHRyaWJ1dGVOYW1lIGFzIGtleW9mIEhhc3VyYUdyYXBoUUxGaWVsZHM8TW9kZWw+W251bWJlcl1dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUZpZWxkcyBhcyBIYXN1cmFHcmFwaFFMRmllbGRzPE1vZGVsPixcclxuICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgOiBjb252ZXJ0ZWQsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgOiB7fSksXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoISF0bylcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4ucmVzdWx0LFxyXG4gICAgICAgICAgW2NvbHVtbk5hbWVdOiB0byhpbnN0YW5jZVthdHRyaWJ1dGVOYW1lIGFzIGtleW9mIEhhc3VyYUdyYXBoUUxGaWVsZHM8TW9kZWw+W251bWJlcl1dLCBpbnN0YW5jZSksXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHsgLi4ucmVzdWx0LCBbY29sdW1uTmFtZV06IGRhdGFbYXR0cmlidXRlTmFtZSBhcyBrZXlvZiBIYXN1cmFHcmFwaFFMRmllbGRzPE1vZGVsPltudW1iZXJdXSB9XHJcbiAgICB9LCB7fSBhcyBEYXRhVHlwZSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIENvbnZlcnROZXN0ZWRGaWVsZHNUb0dyYXBoUUxGaWVsZHMgPSA8XHJcbiAgICBUIGV4dGVuZHMgTW9kZWxCYXNlU3RydWN0dXJlPFQ+LFxyXG4gICAgUCBleHRlbmRzIE1vZGVsQmFzZVN0cnVjdHVyZTxQPixcclxuICA+KFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBmaWVsZFZhbHVlOiBDb2x1bW5PcHRpb25zPFQsIFA+LFxyXG4gICkgPT4ge1xyXG4gICAgY29uc3QgaGFzQ3VzdG9tRmlsdGVycyA9ICEhZmllbGRWYWx1ZS5maWx0ZXJzXHJcblxyXG4gICAgaWYgKGhhc0N1c3RvbUZpbHRlcnMpXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgb3BlcmF0aW9uOiBmaWVsZFZhbHVlLmNvbHVtbk5hbWUgfHwgZmllbGROYW1lLFxyXG4gICAgICAgIGZpZWxkczogR3JhcGhRTEZpZWxkSGVscGVyLkNvbnZlcnRNb2RlbEZpZWxkc1RvR3JhcGhRTEZpZWxkcyhmaWVsZFZhbHVlLmZpZWxkcyksXHJcbiAgICAgICAgdmFyaWFibGVzOiB7XHJcbiAgICAgICAgICBbYCR7ZmllbGRWYWx1ZS5jb2x1bW5OYW1lfV93aGVyZWBdOiB7XHJcbiAgICAgICAgICAgIG5hbWU6ICd3aGVyZScsXHJcbiAgICAgICAgICAgIHR5cGU6IGZpZWxkVmFsdWUuZmlsdGVycy5maWx0ZXJUeXBlLFxyXG4gICAgICAgICAgICB2YWx1ZTogQmluZEZpbHRlclF1ZXJ5SGVscGVyLk1ha2VHcmFwaFFMV2hlcmUoZmllbGRWYWx1ZS5maWx0ZXJzLmZpbHRlcnMsIGZpZWxkVmFsdWUuZmllbGRzKSxcclxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBbZmllbGRWYWx1ZS5jb2x1bW5OYW1lIHx8IGZpZWxkTmFtZV06IEdyYXBoUUxGaWVsZEhlbHBlci5Db252ZXJ0TW9kZWxGaWVsZHNUb0dyYXBoUUxGaWVsZHMoZmllbGRWYWx1ZS5maWVsZHMpLFxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|