@infrab4a/connect 4.2.0-beta.1 → 4.2.0-beta.3
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/index.cjs.d.ts +1 -0
- package/index.cjs.default.js +1 -0
- package/index.cjs.js +5626 -0
- package/index.cjs.mjs +2 -0
- package/index.d.ts +1 -5
- package/index.esm.js +5391 -0
- package/package.json +13 -18
- package/src/domain/catalog/helpers/index.d.ts +1 -0
- package/src/domain/catalog/helpers/round-product-price.helper.d.ts +4 -0
- package/src/domain/catalog/index.d.ts +3 -0
- package/src/domain/catalog/models/category-base.d.ts +30 -0
- package/src/domain/catalog/models/category-collection-children.d.ts +13 -0
- package/src/domain/catalog/models/category-filter.d.ts +13 -0
- package/src/domain/catalog/models/category-for-product.d.ts +5 -0
- package/src/domain/catalog/models/category.d.ts +7 -0
- package/src/domain/catalog/models/enums/index.d.ts +2 -0
- package/src/domain/catalog/models/enums/product-genders.enum.d.ts +5 -0
- package/src/domain/catalog/models/enums/shops.enum.d.ts +6 -0
- package/src/domain/catalog/models/filter-option.d.ts +9 -0
- package/src/domain/catalog/models/filter.d.ts +12 -0
- package/src/domain/catalog/models/index.d.ts +11 -0
- package/src/domain/catalog/models/kit-product.d.ts +12 -0
- package/src/domain/catalog/models/product-base.d.ts +40 -0
- package/src/domain/catalog/models/product-for-category.d.ts +7 -0
- package/src/domain/catalog/models/product-for-kit.d.ts +7 -0
- package/src/domain/catalog/models/product.d.ts +9 -0
- package/src/domain/catalog/models/types/category-condition.type.d.ts +4 -0
- package/src/domain/catalog/models/types/category-metadata.type.d.ts +4 -0
- package/src/domain/catalog/models/types/category-product.d.ts +4 -0
- package/src/domain/catalog/models/types/index.d.ts +11 -0
- package/src/domain/catalog/models/types/product-evaluation.type.d.ts +6 -0
- package/src/domain/catalog/models/types/product-gender.type.d.ts +1 -0
- package/src/domain/catalog/models/types/product-metadata.type.d.ts +4 -0
- package/src/domain/catalog/models/types/product-review.type.d.ts +17 -0
- package/src/domain/catalog/models/types/shop-description.type.d.ts +8 -0
- package/src/domain/catalog/models/types/shop-price.type.d.ts +6 -0
- package/src/domain/catalog/models/types/stock.type.d.ts +3 -0
- package/src/domain/catalog/models/types/variant-grade.type.d.ts +4 -0
- package/src/domain/catalog/models/variant.d.ts +17 -0
- package/src/domain/catalog/models/wishlist.d.ts +8 -0
- package/src/domain/catalog/repositories/category-collection-children.repository.d.ts +4 -0
- package/src/domain/catalog/repositories/category-filter.repository.d.ts +6 -0
- package/src/domain/catalog/repositories/category.repository.d.ts +18 -0
- package/src/domain/catalog/repositories/filter-option.repository.d.ts +4 -0
- package/src/domain/catalog/repositories/filter.repository.d.ts +4 -0
- package/src/domain/catalog/repositories/index.d.ts +9 -0
- package/src/domain/catalog/repositories/product.repository.d.ts +15 -0
- package/src/domain/catalog/repositories/subscription-product.repository.d.ts +4 -0
- package/src/domain/catalog/repositories/variant.repository.d.ts +4 -0
- package/src/domain/catalog/repositories/wishlist.repository.d.ts +6 -0
- package/src/domain/generic/index.d.ts +2 -0
- package/src/domain/generic/model/base.model.d.ts +14 -0
- package/src/domain/generic/model/identifier-fields.d.ts +4 -0
- package/src/domain/generic/model/index.d.ts +3 -0
- package/src/domain/generic/model/types/base-model-builder.type.d.ts +17 -0
- package/src/domain/generic/model/types/identifier-model.type.d.ts +8 -0
- package/src/domain/generic/model/types/index.d.ts +5 -0
- package/src/domain/generic/model/types/model-base-structure.type.d.ts +12 -0
- package/src/domain/generic/model/types/non-function-properties.type.d.ts +12 -0
- package/src/domain/generic/model/types/non-function-property-name.type.d.ts +13 -0
- package/src/domain/generic/repository/create.repository.d.ts +8 -0
- package/src/domain/generic/repository/crud.repository.d.ts +19 -0
- package/src/domain/generic/repository/delete.repository.d.ts +7 -0
- package/src/domain/generic/repository/enums/index.d.ts +2 -0
- package/src/domain/generic/repository/enums/update-option-actions.enum.d.ts +7 -0
- package/src/domain/generic/repository/enums/where.enum.d.ts +14 -0
- package/src/domain/generic/repository/find.repository.d.ts +17 -0
- package/src/domain/generic/repository/get.repository.d.ts +5 -0
- package/src/domain/generic/repository/index.d.ts +9 -0
- package/src/domain/generic/repository/read.repository.d.ts +14 -0
- package/src/domain/generic/repository/types/index.d.ts +6 -0
- package/src/domain/generic/repository/types/repository-find-filters.type.d.ts +13 -0
- package/src/domain/generic/repository/types/repository-find-result.type.d.ts +14 -0
- package/src/domain/generic/repository/types/repository-limit-options.type.d.ts +4 -0
- package/src/domain/generic/repository/types/repository-order-by-list.type.d.ts +5 -0
- package/src/domain/generic/repository/types/repository-update-params.type.d.ts +11 -0
- package/src/domain/generic/repository/types/where-options.type.d.ts +2 -0
- package/src/domain/generic/repository/update.repository.d.ts +6 -0
- package/src/domain/index.d.ts +6 -0
- package/src/domain/location/index.d.ts +1 -0
- package/src/domain/location/models/address.d.ts +24 -0
- package/src/domain/location/models/index.d.ts +2 -0
- package/src/domain/location/models/types/index.d.ts +3 -0
- package/src/domain/location/models/types/location-bound.type.d.ts +6 -0
- package/src/domain/location/models/types/location-geometry.type.d.ts +7 -0
- package/src/domain/location/models/types/location-lat-lng.type.d.ts +4 -0
- package/src/domain/shop-settings/enums/filter-type.enum.d.ts +19 -0
- package/src/domain/shop-settings/enums/index.d.ts +3 -0
- package/src/domain/shop-settings/enums/questions-filters.enum.d.ts +19 -0
- package/src/domain/shop-settings/enums/shop-page-name.enum.d.ts +19 -0
- package/src/domain/shop-settings/helpers/beauty-questions.helper.d.ts +9 -0
- package/src/domain/shop-settings/helpers/index.d.ts +1 -0
- package/src/domain/shop-settings/index.d.ts +4 -0
- package/src/domain/shop-settings/models/campaign-banner.d.ts +11 -0
- package/src/domain/shop-settings/models/campaign.d.ts +10 -0
- package/src/domain/shop-settings/models/home.d.ts +18 -0
- package/src/domain/shop-settings/models/index.d.ts +6 -0
- package/src/domain/shop-settings/models/shop-menu.d.ts +7 -0
- package/src/domain/shop-settings/models/shop-settings.d.ts +13 -0
- package/src/domain/shop-settings/models/types/banner.type.d.ts +6 -0
- package/src/domain/shop-settings/models/types/benefit.type.d.ts +5 -0
- package/src/domain/shop-settings/models/types/campaign-page.d.ts +17 -0
- package/src/domain/shop-settings/models/types/home-data.type.d.ts +15 -0
- package/src/domain/shop-settings/models/types/index.d.ts +16 -0
- package/src/domain/shop-settings/models/types/landing-page.d.ts +8 -0
- package/src/domain/shop-settings/models/types/menu-nav.type.d.ts +8 -0
- package/src/domain/shop-settings/models/types/sections.type.d.ts +34 -0
- package/src/domain/shop-settings/models/types/shop-banner.type.d.ts +13 -0
- package/src/domain/shop-settings/models/types/shop-brands.type.d.ts +10 -0
- package/src/domain/shop-settings/models/types/shop-carousel.type.d.ts +4 -0
- package/src/domain/shop-settings/models/types/shop-collection.type.d.ts +9 -0
- package/src/domain/shop-settings/models/types/shop-gift.type.d.ts +8 -0
- package/src/domain/shop-settings/models/types/shop-home.d.ts +12 -0
- package/src/domain/shop-settings/models/types/shop-post.type.d.ts +7 -0
- package/src/domain/shop-settings/models/types/shop-section.type.d.ts +12 -0
- package/src/domain/shop-settings/models/types/sub-menu.type.d.ts +8 -0
- package/src/domain/shop-settings/repositories/campaign-banner.repository.d.ts +4 -0
- package/src/domain/shop-settings/repositories/campaign.repository.d.ts +4 -0
- package/src/domain/shop-settings/repositories/home.repository.d.ts +4 -0
- package/src/domain/shop-settings/repositories/index.d.ts +5 -0
- package/src/domain/shop-settings/repositories/shop-menu.repository.d.ts +4 -0
- package/src/domain/shop-settings/repositories/shop-settings.repository.d.ts +4 -0
- package/src/domain/shopping/index.d.ts +2 -0
- package/src/domain/shopping/models/buy-2-win.d.ts +18 -0
- package/src/domain/shopping/models/campaign-dashboard.d.ts +15 -0
- package/src/domain/shopping/models/campaign-hashtag.d.ts +18 -0
- package/src/domain/shopping/models/checkout.d.ts +26 -0
- package/src/domain/shopping/models/coupons/coupon.d.ts +60 -0
- package/src/domain/shopping/models/coupons/enums/coupon-club-mens.enum.d.ts +5 -0
- package/src/domain/shopping/models/coupons/enums/coupon-subtypes.enum.d.ts +4 -0
- package/src/domain/shopping/models/coupons/enums/coupon-types.enum.d.ts +4 -0
- package/src/domain/shopping/models/coupons/enums/exclusivities.enum.d.ts +8 -0
- package/src/domain/shopping/models/coupons/enums/index.d.ts +3 -0
- package/src/domain/shopping/models/coupons/index.d.ts +2 -0
- package/src/domain/shopping/models/enums/checkout-types.enum.d.ts +5 -0
- package/src/domain/shopping/models/enums/index.d.ts +2 -0
- package/src/domain/shopping/models/enums/order-status.enum.d.ts +10 -0
- package/src/domain/shopping/models/index.d.ts +12 -0
- package/src/domain/shopping/models/line-item.d.ts +8 -0
- package/src/domain/shopping/models/order.d.ts +10 -0
- package/src/domain/shopping/models/payment.d.ts +67 -0
- package/src/domain/shopping/models/shipping-method.d.ts +17 -0
- package/src/domain/shopping/models/subscription/checkout.d.ts +20 -0
- package/src/domain/shopping/models/subscription/index.d.ts +2 -0
- package/src/domain/shopping/models/subscription/plan.d.ts +10 -0
- package/src/domain/shopping/models/types/index.d.ts +7 -0
- package/src/domain/shopping/models/types/payment-address.type.d.ts +12 -0
- package/src/domain/shopping/models/types/payment-billing.type.d.ts +7 -0
- package/src/domain/shopping/models/types/payment-card.type.d.ts +14 -0
- package/src/domain/shopping/models/types/payment-customer.type.d.ts +18 -0
- package/src/domain/shopping/models/types/payment-document.type.d.ts +6 -0
- package/src/domain/shopping/models/types/payment-item.type.d.ts +11 -0
- package/src/domain/shopping/models/types/payment-shipping.type.d.ts +10 -0
- package/src/domain/shopping/repositories/buy-2-win.repository.d.ts +4 -0
- package/src/domain/shopping/repositories/campaign-dashboard.repository.d.ts +4 -0
- package/src/domain/shopping/repositories/campaign-hashtag.repository.d.ts +4 -0
- package/src/domain/shopping/repositories/checkout.repository.d.ts +4 -0
- package/src/domain/shopping/repositories/coupon.repository.d.ts +4 -0
- package/src/domain/shopping/repositories/index.d.ts +9 -0
- package/src/domain/shopping/repositories/legacy-order.repository.d.ts +3 -0
- package/src/domain/shopping/repositories/order.repository.d.ts +4 -0
- package/src/domain/shopping/repositories/payment.repository.d.ts +4 -0
- package/src/domain/shopping/repositories/subscription/checkout.repository.d.ts +4 -0
- package/src/domain/shopping/repositories/subscription/index.d.ts +2 -0
- package/src/domain/shopping/repositories/subscription/plan.repository.d.ts +4 -0
- package/src/domain/users/errors/index.d.ts +3 -0
- package/src/domain/users/errors/unauthorized.error.d.ts +4 -0
- package/src/domain/users/errors/user-already-registered.error.d.ts +4 -0
- package/src/domain/users/errors/weak-password.error.d.ts +4 -0
- package/src/domain/users/index.d.ts +5 -0
- package/src/domain/users/models/beauty-profile.d.ts +11 -0
- package/src/domain/users/models/enums/accessory-importances.enum.d.ts +5 -0
- package/src/domain/users/models/enums/area.enum.d.ts +11 -0
- package/src/domain/users/models/enums/beard-problems.enum.d.ts +9 -0
- package/src/domain/users/models/enums/beard-sizes.enum.d.ts +7 -0
- package/src/domain/users/models/enums/beauty-product-importances.enum.d.ts +6 -0
- package/src/domain/users/models/enums/body-problems.enum.d.ts +11 -0
- package/src/domain/users/models/enums/body-shapes.enum.d.ts +7 -0
- package/src/domain/users/models/enums/body-tattoos.enum.d.ts +5 -0
- package/src/domain/users/models/enums/face-skin-oilinesses.enum.d.ts +7 -0
- package/src/domain/users/models/enums/face-skin-problems.enum.d.ts +10 -0
- package/src/domain/users/models/enums/face-skin-tones.enum.d.ts +8 -0
- package/src/domain/users/models/enums/family-incomes.enum.d.ts +8 -0
- package/src/domain/users/models/enums/fragrance-importances.enum.d.ts +5 -0
- package/src/domain/users/models/enums/hair-colors.enum.d.ts +10 -0
- package/src/domain/users/models/enums/hair-problems.enum.d.ts +10 -0
- package/src/domain/users/models/enums/hair-strands.enum.d.ts +8 -0
- package/src/domain/users/models/enums/hair-types.enum.d.ts +7 -0
- package/src/domain/users/models/enums/index.d.ts +20 -0
- package/src/domain/users/models/enums/office-position.enum.d.ts +6 -0
- package/src/domain/users/models/enums/product-spents.enum.d.ts +8 -0
- package/src/domain/users/models/enums/user-type.enum.d.ts +8 -0
- package/src/domain/users/models/index.d.ts +7 -0
- package/src/domain/users/models/lead.d.ts +8 -0
- package/src/domain/users/models/subscription/edition.d.ts +16 -0
- package/src/domain/users/models/subscription/enums/billing-status.enum.d.ts +3 -0
- package/src/domain/users/models/subscription/enums/edition-status.enum.d.ts +4 -0
- package/src/domain/users/models/subscription/enums/index.d.ts +4 -0
- package/src/domain/users/models/subscription/enums/payment-type.enum.d.ts +5 -0
- package/src/domain/users/models/subscription/enums/status.enum.d.ts +4 -0
- package/src/domain/users/models/subscription/index.d.ts +4 -0
- package/src/domain/users/models/subscription/payment.d.ts +13 -0
- package/src/domain/users/models/subscription/subscription.d.ts +28 -0
- package/src/domain/users/models/user-address.d.ts +6 -0
- package/src/domain/users/models/user-payment-method.d.ts +14 -0
- package/src/domain/users/models/user.d.ts +27 -0
- package/src/domain/users/repositories/beauty-profile.repository.d.ts +4 -0
- package/src/domain/users/repositories/edition.repository.d.ts +4 -0
- package/src/domain/users/repositories/index.d.ts +8 -0
- package/src/domain/users/repositories/lead.repository.d.ts +4 -0
- package/src/domain/users/repositories/subscription-payment.repository.d.ts +4 -0
- package/src/domain/users/repositories/subscription.repository.d.ts +4 -0
- package/src/domain/users/repositories/user-address.repository.d.ts +4 -0
- package/src/domain/users/repositories/user-payment-method.repository.d.ts +4 -0
- package/src/domain/users/repositories/user.repository.d.ts +6 -0
- package/src/domain/users/services/authentication.service.d.ts +12 -0
- package/src/domain/users/services/index.d.ts +3 -0
- package/src/domain/users/services/register.service.d.ts +7 -0
- package/src/domain/users/services/types/basic-user-data.type.d.ts +4 -0
- package/src/domain/users/services/types/index.d.ts +1 -0
- package/src/domain/users/use-cases/authentication.d.ts +21 -0
- package/src/domain/users/use-cases/index.d.ts +4 -0
- package/src/domain/users/use-cases/recovery-password.d.ts +6 -0
- package/src/domain/users/use-cases/register.d.ts +13 -0
- package/src/domain/users/use-cases/signout.d.ts +6 -0
- package/src/errors/duplicated-results.error.d.ts +4 -0
- package/src/errors/index.d.ts +4 -0
- package/src/errors/invalid-argument.error.d.ts +4 -0
- package/src/errors/not-found.error.d.ts +4 -0
- package/src/errors/required-argument.error.d.ts +6 -0
- package/src/index.d.ts +5 -0
- package/src/infra/elasticsearch/adapters/axios.adapter.d.ts +16 -0
- package/src/infra/elasticsearch/adapters/elastic-search.adapter.d.ts +8 -0
- package/src/infra/elasticsearch/adapters/index.d.ts +2 -0
- package/src/infra/elasticsearch/index.d.ts +3 -0
- package/src/infra/elasticsearch/indexes/index.d.ts +1 -0
- package/src/infra/elasticsearch/indexes/products-index.d.ts +13 -0
- package/src/infra/elasticsearch/types/elastic-search-result.d.ts +9 -0
- package/src/infra/elasticsearch/types/index.d.ts +1 -0
- package/src/infra/firebase/auth/authentication-firebase-auth.service.d.ts +12 -0
- package/src/infra/firebase/auth/index.d.ts +2 -0
- package/src/infra/firebase/auth/register-firebase-auth.service.d.ts +8 -0
- package/src/infra/firebase/auth/types/firebase-user-with-id.type.d.ts +5 -0
- package/src/infra/firebase/auth/types/index.d.ts +1 -0
- package/src/infra/firebase/firestore/enums/firestore-field-type.enum.d.ts +8 -0
- package/src/infra/firebase/firestore/enums/index.d.ts +1 -0
- package/src/infra/firebase/firestore/index.d.ts +3 -0
- package/src/infra/firebase/firestore/mixins/index.d.ts +9 -0
- package/src/infra/firebase/firestore/mixins/with-create-firestore.mixin.d.ts +4 -0
- package/src/infra/firebase/firestore/mixins/with-crud-firestore.mixin.d.ts +5 -0
- package/src/infra/firebase/firestore/mixins/with-delete-firestore.mixin.d.ts +4 -0
- package/src/infra/firebase/firestore/mixins/with-find-firestore.mixin.d.ts +4 -0
- package/src/infra/firebase/firestore/mixins/with-firestore.mixin.d.ts +13 -0
- package/src/infra/firebase/firestore/mixins/with-get-firestore.mixin.d.ts +4 -0
- package/src/infra/firebase/firestore/mixins/with-helpers.mixin.d.ts +11 -0
- package/src/infra/firebase/firestore/mixins/with-sub-collection.mixin.d.ts +11 -0
- package/src/infra/firebase/firestore/mixins/with-update-firestore.mixin.d.ts +7 -0
- package/src/infra/firebase/firestore/repositories/catalog/category-firestore.repository.d.ts +20 -0
- package/src/infra/firebase/firestore/repositories/catalog/index.d.ts +4 -0
- package/src/infra/firebase/firestore/repositories/catalog/product-firestore.repository.d.ts +12 -0
- package/src/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.d.ts +12 -0
- package/src/infra/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.d.ts +7 -0
- package/src/infra/firebase/firestore/repositories/index.d.ts +4 -0
- package/src/infra/firebase/firestore/repositories/shop-settings/home-firestore.repository.d.ts +16 -0
- package/src/infra/firebase/firestore/repositories/shop-settings/index.d.ts +3 -0
- package/src/infra/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.d.ts +7 -0
- package/src/infra/firebase/firestore/repositories/shop-settings/shop-settings-firestore.repository.d.ts +7 -0
- package/src/infra/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.d.ts +7 -0
- package/src/infra/firebase/firestore/repositories/shopping/campaign-dashboard-firestore.repository.d.ts +8 -0
- package/src/infra/firebase/firestore/repositories/shopping/campaign-hashtag-firestore.repository.d.ts +8 -0
- package/src/infra/firebase/firestore/repositories/shopping/checkout-firestore.repository.d.ts +7 -0
- package/src/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.d.ts +7 -0
- package/src/infra/firebase/firestore/repositories/shopping/coupon-firestore.repository.d.ts +12 -0
- package/src/infra/firebase/firestore/repositories/shopping/index.d.ts +10 -0
- package/src/infra/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.d.ts +6 -0
- package/src/infra/firebase/firestore/repositories/shopping/order-firestore.repository.d.ts +13 -0
- package/src/infra/firebase/firestore/repositories/shopping/payment-firestore.repository.d.ts +7 -0
- package/src/infra/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.d.ts +7 -0
- package/src/infra/firebase/firestore/repositories/users/index.d.ts +8 -0
- package/src/infra/firebase/firestore/repositories/users/lead-firestore.repository.d.ts +7 -0
- package/src/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.d.ts +12 -0
- package/src/infra/firebase/firestore/repositories/users/subscription-firestore.repository.d.ts +7 -0
- package/src/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.d.ts +12 -0
- package/src/infra/firebase/firestore/repositories/users/user-address-firestore.repository.d.ts +12 -0
- package/src/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.d.ts +12 -0
- package/src/infra/firebase/firestore/repositories/users/user-firestore.repository.d.ts +17 -0
- package/src/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.d.ts +12 -0
- package/src/infra/firebase/firestore/types/firestore-interceptors.type.d.ts +14 -0
- package/src/infra/firebase/firestore/types/firestore-sub.repository.type.d.ts +6 -0
- package/src/infra/firebase/firestore/types/firestore.helpers.type.d.ts +8 -0
- package/src/infra/firebase/firestore/types/firestore.repository.type.d.ts +16 -0
- package/src/infra/firebase/firestore/types/index.d.ts +4 -0
- package/src/infra/firebase/index.d.ts +2 -0
- package/src/infra/hasura-graphql/enums/hasura-graphql-column-type.enum.d.ts +11 -0
- package/src/infra/hasura-graphql/enums/hasura-graphql-where.enum.d.ts +15 -0
- package/src/infra/hasura-graphql/enums/index.d.ts +2 -0
- package/src/infra/hasura-graphql/index.d.ts +4 -0
- package/src/infra/hasura-graphql/mixins/helpers/attribute-option.helper.d.ts +19 -0
- package/src/infra/hasura-graphql/mixins/helpers/bind-filter-query.helper.d.ts +10 -0
- package/src/infra/hasura-graphql/mixins/helpers/filter-option.helper.d.ts +8 -0
- package/src/infra/hasura-graphql/mixins/helpers/graphql-field.helper.d.ts +12 -0
- package/src/infra/hasura-graphql/mixins/helpers/index.d.ts +4 -0
- package/src/infra/hasura-graphql/mixins/index.d.ts +7 -0
- package/src/infra/hasura-graphql/mixins/with-create-hasura-graphql.mixin.d.ts +9 -0
- package/src/infra/hasura-graphql/mixins/with-crud-hasura-graphql.mixin.d.ts +11 -0
- package/src/infra/hasura-graphql/mixins/with-delete-hasura-graphql.mixin.d.ts +7 -0
- package/src/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.d.ts +34 -0
- package/src/infra/hasura-graphql/mixins/with-get-hasura-graphql.mixin.d.ts +25 -0
- package/src/infra/hasura-graphql/mixins/with-hasura-graphql.mixin.d.ts +23 -0
- package/src/infra/hasura-graphql/mixins/with-update-hasura-graphql.mixin.d.ts +14 -0
- package/src/infra/hasura-graphql/models/category-hasura-graphql.d.ts +6 -0
- package/src/infra/hasura-graphql/models/index.d.ts +4 -0
- package/src/infra/hasura-graphql/models/kit-product-hasura-graphql.d.ts +6 -0
- package/src/infra/hasura-graphql/models/product-hasura-graphql.d.ts +18 -0
- package/src/infra/hasura-graphql/models/variant-hasura-graphql.d.ts +10 -0
- package/src/infra/hasura-graphql/repositories/catalog/category-collection-children-hasura-graphql.repository.d.ts +10 -0
- package/src/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.d.ts +12 -0
- package/src/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.d.ts +34 -0
- package/src/infra/hasura-graphql/repositories/catalog/filter-hasura-graphql.repository.d.ts +18 -0
- package/src/infra/hasura-graphql/repositories/catalog/filter-option-hasura-graphql.repository.d.ts +10 -0
- package/src/infra/hasura-graphql/repositories/catalog/index.d.ts +8 -0
- package/src/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.d.ts +30 -0
- package/src/infra/hasura-graphql/repositories/catalog/variant-hasura-graphql.repository.d.ts +14 -0
- package/src/infra/hasura-graphql/repositories/catalog/wishlist-hasura-graphql.repository.d.ts +27 -0
- package/src/infra/hasura-graphql/repositories/index.d.ts +1 -0
- package/src/infra/hasura-graphql/types/fields.type.d.ts +2 -0
- package/src/infra/hasura-graphql/types/graphql.repository.type.d.ts +24 -0
- package/src/infra/hasura-graphql/types/hasura-graphql-auth-options.type.d.ts +8 -0
- package/src/infra/hasura-graphql/types/hasura-graphql-fields.type.d.ts +44 -0
- package/src/infra/hasura-graphql/types/hasura-graphql-headers.type.d.ts +7 -0
- package/src/infra/hasura-graphql/types/index.d.ts +8 -0
- package/src/infra/hasura-graphql/types/nested-field.type.d.ts +7 -0
- package/src/infra/hasura-graphql/types/query-builder-options.type.d.ts +7 -0
- package/src/infra/hasura-graphql/types/variable-options.type.d.ts +9 -0
- package/src/infra/index.d.ts +3 -0
- package/src/utils/decorators/debug.class.decorator.d.ts +2 -0
- package/src/utils/decorators/index.d.ts +2 -0
- package/src/utils/decorators/trace.method.decorator.d.ts +14 -0
- package/src/utils/get.d.ts +1 -0
- package/src/utils/helpers/class-name.helper.d.ts +3 -0
- package/src/utils/helpers/debug-decorator.helper.d.ts +9 -0
- package/src/utils/helpers/debug.helper.d.ts +60 -0
- package/src/utils/helpers/index.d.ts +4 -0
- package/src/utils/helpers/reflect.helper.d.ts +50 -0
- package/src/utils/index.d.ts +13 -0
- package/src/utils/is-uuid.d.ts +1 -0
- package/src/utils/is.d.ts +1 -0
- package/src/utils/log.utils.d.ts +7 -0
- package/src/utils/mixins/base.mixin.d.ts +3 -0
- package/src/utils/mixins/index.d.ts +3 -0
- package/src/utils/mixins/merge-constructor-params.type.d.ts +3 -0
- package/src/utils/mixins/mixin-ctor.type.d.ts +1 -0
- package/src/utils/parse-datetime.d.ts +1 -0
- package/src/utils/types/array-element.type.d.ts +1 -0
- package/src/utils/types/index.d.ts +2 -0
- package/src/utils/types/prop.type.d.ts +1 -0
- package/teste2.d.ts +1 -0
- package/README.md +0 -24
- package/domain/catalog/helpers/index.d.ts +0 -1
- package/domain/catalog/helpers/round-product-price.helper.d.ts +0 -4
- package/domain/catalog/index.d.ts +0 -3
- package/domain/catalog/models/category-base.d.ts +0 -30
- package/domain/catalog/models/category-collection-children.d.ts +0 -13
- package/domain/catalog/models/category-filter.d.ts +0 -13
- package/domain/catalog/models/category-for-product.d.ts +0 -5
- package/domain/catalog/models/category.d.ts +0 -7
- package/domain/catalog/models/enums/index.d.ts +0 -2
- package/domain/catalog/models/enums/product-genders.enum.d.ts +0 -5
- package/domain/catalog/models/enums/shops.enum.d.ts +0 -6
- package/domain/catalog/models/filter-option.d.ts +0 -9
- package/domain/catalog/models/filter.d.ts +0 -12
- package/domain/catalog/models/index.d.ts +0 -11
- package/domain/catalog/models/kit-product.d.ts +0 -12
- package/domain/catalog/models/product-base.d.ts +0 -40
- package/domain/catalog/models/product-for-category.d.ts +0 -7
- package/domain/catalog/models/product-for-kit.d.ts +0 -7
- package/domain/catalog/models/product.d.ts +0 -9
- package/domain/catalog/models/types/category-condition.type.d.ts +0 -4
- package/domain/catalog/models/types/category-metadata.type.d.ts +0 -4
- package/domain/catalog/models/types/category-product.d.ts +0 -4
- package/domain/catalog/models/types/index.d.ts +0 -11
- package/domain/catalog/models/types/product-evaluation.type.d.ts +0 -6
- package/domain/catalog/models/types/product-gender.type.d.ts +0 -1
- package/domain/catalog/models/types/product-metadata.type.d.ts +0 -4
- package/domain/catalog/models/types/product-review.type.d.ts +0 -17
- package/domain/catalog/models/types/shop-description.type.d.ts +0 -8
- package/domain/catalog/models/types/shop-price.type.d.ts +0 -6
- package/domain/catalog/models/types/stock.type.d.ts +0 -3
- package/domain/catalog/models/types/variant-grade.type.d.ts +0 -4
- package/domain/catalog/models/variant.d.ts +0 -17
- package/domain/catalog/models/wishlist.d.ts +0 -8
- package/domain/catalog/repositories/category-collection-children.repository.d.ts +0 -4
- package/domain/catalog/repositories/category-filter.repository.d.ts +0 -6
- package/domain/catalog/repositories/category.repository.d.ts +0 -18
- package/domain/catalog/repositories/filter-option.repository.d.ts +0 -4
- package/domain/catalog/repositories/filter.repository.d.ts +0 -4
- package/domain/catalog/repositories/index.d.ts +0 -9
- package/domain/catalog/repositories/product.repository.d.ts +0 -15
- package/domain/catalog/repositories/subscription-product.repository.d.ts +0 -4
- package/domain/catalog/repositories/variant.repository.d.ts +0 -4
- package/domain/catalog/repositories/wishlist.repository.d.ts +0 -6
- package/domain/generic/index.d.ts +0 -2
- package/domain/generic/model/base.model.d.ts +0 -14
- package/domain/generic/model/identifier-fields.d.ts +0 -4
- package/domain/generic/model/index.d.ts +0 -3
- package/domain/generic/model/types/base-model-builder.type.d.ts +0 -17
- package/domain/generic/model/types/identifier-model.type.d.ts +0 -8
- package/domain/generic/model/types/index.d.ts +0 -5
- package/domain/generic/model/types/model-base-structure.type.d.ts +0 -12
- package/domain/generic/model/types/non-function-properties.type.d.ts +0 -12
- package/domain/generic/model/types/non-function-property-name.type.d.ts +0 -13
- package/domain/generic/repository/create.repository.d.ts +0 -8
- package/domain/generic/repository/crud.repository.d.ts +0 -19
- package/domain/generic/repository/delete.repository.d.ts +0 -7
- package/domain/generic/repository/enums/index.d.ts +0 -2
- package/domain/generic/repository/enums/update-option-actions.enum.d.ts +0 -7
- package/domain/generic/repository/enums/where.enum.d.ts +0 -14
- package/domain/generic/repository/find.repository.d.ts +0 -17
- package/domain/generic/repository/get.repository.d.ts +0 -5
- package/domain/generic/repository/index.d.ts +0 -9
- package/domain/generic/repository/read.repository.d.ts +0 -14
- package/domain/generic/repository/types/index.d.ts +0 -6
- package/domain/generic/repository/types/repository-find-filters.type.d.ts +0 -13
- package/domain/generic/repository/types/repository-find-result.type.d.ts +0 -14
- package/domain/generic/repository/types/repository-limit-options.type.d.ts +0 -4
- package/domain/generic/repository/types/repository-order-by-list.type.d.ts +0 -5
- package/domain/generic/repository/types/repository-update-params.type.d.ts +0 -11
- package/domain/generic/repository/types/where-options.type.d.ts +0 -2
- package/domain/generic/repository/update.repository.d.ts +0 -6
- package/domain/index.d.ts +0 -6
- package/domain/location/index.d.ts +0 -1
- package/domain/location/models/address.d.ts +0 -24
- package/domain/location/models/index.d.ts +0 -2
- package/domain/location/models/types/index.d.ts +0 -3
- package/domain/location/models/types/location-bound.type.d.ts +0 -6
- package/domain/location/models/types/location-geometry.type.d.ts +0 -7
- package/domain/location/models/types/location-lat-lng.type.d.ts +0 -4
- package/domain/shop-settings/enums/filter-type.enum.d.ts +0 -19
- package/domain/shop-settings/enums/index.d.ts +0 -3
- package/domain/shop-settings/enums/questions-filters.enum.d.ts +0 -19
- package/domain/shop-settings/enums/shop-page-name.enum.d.ts +0 -19
- package/domain/shop-settings/helpers/beauty-questions.helper.d.ts +0 -9
- package/domain/shop-settings/helpers/index.d.ts +0 -1
- package/domain/shop-settings/index.d.ts +0 -4
- package/domain/shop-settings/models/campaign-banner.d.ts +0 -11
- package/domain/shop-settings/models/campaign.d.ts +0 -10
- package/domain/shop-settings/models/home.d.ts +0 -18
- package/domain/shop-settings/models/index.d.ts +0 -6
- package/domain/shop-settings/models/shop-menu.d.ts +0 -7
- package/domain/shop-settings/models/shop-settings.d.ts +0 -13
- package/domain/shop-settings/models/types/banner.type.d.ts +0 -6
- package/domain/shop-settings/models/types/benefit.type.d.ts +0 -5
- package/domain/shop-settings/models/types/campaign-page.d.ts +0 -17
- package/domain/shop-settings/models/types/home-data.type.d.ts +0 -15
- package/domain/shop-settings/models/types/index.d.ts +0 -14
- package/domain/shop-settings/models/types/menu-nav.type.d.ts +0 -8
- package/domain/shop-settings/models/types/sections.type.d.ts +0 -31
- package/domain/shop-settings/models/types/shop-banner.type.d.ts +0 -13
- package/domain/shop-settings/models/types/shop-brands.type.d.ts +0 -10
- package/domain/shop-settings/models/types/shop-carousel.type.d.ts +0 -4
- package/domain/shop-settings/models/types/shop-collection.type.d.ts +0 -9
- package/domain/shop-settings/models/types/shop-gift.type.d.ts +0 -8
- package/domain/shop-settings/models/types/shop-home.d.ts +0 -12
- package/domain/shop-settings/models/types/shop-post.type.d.ts +0 -7
- package/domain/shop-settings/models/types/shop-section.type.d.ts +0 -12
- package/domain/shop-settings/models/types/sub-menu.type.d.ts +0 -8
- package/domain/shop-settings/repositories/campaign-banner.repository.d.ts +0 -4
- package/domain/shop-settings/repositories/campaign.repository.d.ts +0 -4
- package/domain/shop-settings/repositories/home.repository.d.ts +0 -4
- package/domain/shop-settings/repositories/index.d.ts +0 -5
- package/domain/shop-settings/repositories/shop-menu.repository.d.ts +0 -4
- package/domain/shop-settings/repositories/shop-settings.repository.d.ts +0 -4
- package/domain/shopping/index.d.ts +0 -2
- package/domain/shopping/models/buy-2-win.d.ts +0 -18
- package/domain/shopping/models/campaign-dashboard.d.ts +0 -15
- package/domain/shopping/models/campaign-hashtag.d.ts +0 -18
- package/domain/shopping/models/checkout.d.ts +0 -26
- package/domain/shopping/models/coupons/coupon.d.ts +0 -60
- package/domain/shopping/models/coupons/enums/coupon-club-mens.enum.d.ts +0 -5
- package/domain/shopping/models/coupons/enums/coupon-subtypes.enum.d.ts +0 -4
- package/domain/shopping/models/coupons/enums/coupon-types.enum.d.ts +0 -4
- package/domain/shopping/models/coupons/enums/exclusivities.enum.d.ts +0 -8
- package/domain/shopping/models/coupons/enums/index.d.ts +0 -3
- package/domain/shopping/models/coupons/index.d.ts +0 -2
- package/domain/shopping/models/enums/checkout-types.enum.d.ts +0 -5
- package/domain/shopping/models/enums/index.d.ts +0 -2
- package/domain/shopping/models/enums/order-status.enum.d.ts +0 -10
- package/domain/shopping/models/index.d.ts +0 -12
- package/domain/shopping/models/line-item.d.ts +0 -8
- package/domain/shopping/models/order.d.ts +0 -10
- package/domain/shopping/models/payment.d.ts +0 -67
- package/domain/shopping/models/shipping-method.d.ts +0 -17
- package/domain/shopping/models/subscription/checkout.d.ts +0 -20
- package/domain/shopping/models/subscription/index.d.ts +0 -2
- package/domain/shopping/models/subscription/plan.d.ts +0 -10
- package/domain/shopping/models/types/index.d.ts +0 -7
- package/domain/shopping/models/types/payment-address.type.d.ts +0 -12
- package/domain/shopping/models/types/payment-billing.type.d.ts +0 -7
- package/domain/shopping/models/types/payment-card.type.d.ts +0 -14
- package/domain/shopping/models/types/payment-customer.type.d.ts +0 -18
- package/domain/shopping/models/types/payment-document.type.d.ts +0 -6
- package/domain/shopping/models/types/payment-item.type.d.ts +0 -11
- package/domain/shopping/models/types/payment-shipping.type.d.ts +0 -10
- package/domain/shopping/repositories/buy-2-win.repository.d.ts +0 -4
- package/domain/shopping/repositories/campaign-dashboard.repository.d.ts +0 -4
- package/domain/shopping/repositories/campaign-hashtag.repository.d.ts +0 -4
- package/domain/shopping/repositories/checkout.repository.d.ts +0 -4
- package/domain/shopping/repositories/coupon.repository.d.ts +0 -4
- package/domain/shopping/repositories/index.d.ts +0 -9
- package/domain/shopping/repositories/legacy-order.repository.d.ts +0 -3
- package/domain/shopping/repositories/order.repository.d.ts +0 -4
- package/domain/shopping/repositories/payment.repository.d.ts +0 -4
- package/domain/shopping/repositories/subscription/checkout.repository.d.ts +0 -4
- package/domain/shopping/repositories/subscription/index.d.ts +0 -2
- package/domain/shopping/repositories/subscription/plan.repository.d.ts +0 -4
- package/domain/users/errors/index.d.ts +0 -3
- package/domain/users/errors/unauthorized.error.d.ts +0 -4
- package/domain/users/errors/user-already-registered.error.d.ts +0 -4
- package/domain/users/errors/weak-password.error.d.ts +0 -4
- package/domain/users/index.d.ts +0 -5
- package/domain/users/models/beauty-profile.d.ts +0 -11
- package/domain/users/models/enums/accessory-importances.enum.d.ts +0 -5
- package/domain/users/models/enums/area.enum.d.ts +0 -11
- package/domain/users/models/enums/beard-problems.enum.d.ts +0 -9
- package/domain/users/models/enums/beard-sizes.enum.d.ts +0 -7
- package/domain/users/models/enums/beauty-product-importances.enum.d.ts +0 -6
- package/domain/users/models/enums/body-problems.enum.d.ts +0 -11
- package/domain/users/models/enums/body-shapes.enum.d.ts +0 -7
- package/domain/users/models/enums/body-tattoos.enum.d.ts +0 -5
- package/domain/users/models/enums/face-skin-oilinesses.enum.d.ts +0 -7
- package/domain/users/models/enums/face-skin-problems.enum.d.ts +0 -10
- package/domain/users/models/enums/face-skin-tones.enum.d.ts +0 -8
- package/domain/users/models/enums/family-incomes.enum.d.ts +0 -8
- package/domain/users/models/enums/fragrance-importances.enum.d.ts +0 -5
- package/domain/users/models/enums/hair-colors.enum.d.ts +0 -10
- package/domain/users/models/enums/hair-problems.enum.d.ts +0 -10
- package/domain/users/models/enums/hair-strands.enum.d.ts +0 -8
- package/domain/users/models/enums/hair-types.enum.d.ts +0 -7
- package/domain/users/models/enums/index.d.ts +0 -20
- package/domain/users/models/enums/office-position.enum.d.ts +0 -6
- package/domain/users/models/enums/product-spents.enum.d.ts +0 -8
- package/domain/users/models/enums/user-type.enum.d.ts +0 -8
- package/domain/users/models/index.d.ts +0 -7
- package/domain/users/models/lead.d.ts +0 -8
- package/domain/users/models/subscription/edition.d.ts +0 -16
- package/domain/users/models/subscription/enums/billing-status.enum.d.ts +0 -3
- package/domain/users/models/subscription/enums/edition-status.enum.d.ts +0 -4
- package/domain/users/models/subscription/enums/index.d.ts +0 -4
- package/domain/users/models/subscription/enums/payment-type.enum.d.ts +0 -5
- package/domain/users/models/subscription/enums/status.enum.d.ts +0 -4
- package/domain/users/models/subscription/index.d.ts +0 -4
- package/domain/users/models/subscription/payment.d.ts +0 -13
- package/domain/users/models/subscription/subscription.d.ts +0 -28
- package/domain/users/models/user-address.d.ts +0 -6
- package/domain/users/models/user-payment-method.d.ts +0 -14
- package/domain/users/models/user.d.ts +0 -27
- package/domain/users/repositories/beauty-profile.repository.d.ts +0 -4
- package/domain/users/repositories/edition.repository.d.ts +0 -4
- package/domain/users/repositories/index.d.ts +0 -8
- package/domain/users/repositories/lead.repository.d.ts +0 -4
- package/domain/users/repositories/subscription-payment.repository.d.ts +0 -4
- package/domain/users/repositories/subscription.repository.d.ts +0 -4
- package/domain/users/repositories/user-address.repository.d.ts +0 -4
- package/domain/users/repositories/user-payment-method.repository.d.ts +0 -4
- package/domain/users/repositories/user.repository.d.ts +0 -6
- package/domain/users/services/authentication.service.d.ts +0 -12
- package/domain/users/services/index.d.ts +0 -3
- package/domain/users/services/register.service.d.ts +0 -7
- package/domain/users/services/types/basic-user-data.type.d.ts +0 -4
- package/domain/users/services/types/index.d.ts +0 -1
- package/domain/users/use-cases/authentication.d.ts +0 -21
- package/domain/users/use-cases/index.d.ts +0 -4
- package/domain/users/use-cases/recovery-password.d.ts +0 -6
- package/domain/users/use-cases/register.d.ts +0 -13
- package/domain/users/use-cases/signout.d.ts +0 -6
- package/errors/duplicated-results.error.d.ts +0 -4
- package/errors/index.d.ts +0 -4
- package/errors/invalid-argument.error.d.ts +0 -4
- package/errors/not-found.error.d.ts +0 -4
- package/errors/required-argument.error.d.ts +0 -6
- package/esm2020/domain/catalog/helpers/index.mjs +0 -2
- package/esm2020/domain/catalog/helpers/round-product-price.helper.mjs +0 -15
- package/esm2020/domain/catalog/index.mjs +0 -4
- package/esm2020/domain/catalog/models/category-base.mjs +0 -18
- package/esm2020/domain/catalog/models/category-collection-children.mjs +0 -13
- package/esm2020/domain/catalog/models/category-filter.mjs +0 -19
- package/esm2020/domain/catalog/models/category-for-product.mjs +0 -7
- package/esm2020/domain/catalog/models/category.mjs +0 -14
- package/esm2020/domain/catalog/models/enums/index.mjs +0 -3
- package/esm2020/domain/catalog/models/enums/product-genders.enum.mjs +0 -7
- package/esm2020/domain/catalog/models/enums/shops.enum.mjs +0 -8
- package/esm2020/domain/catalog/models/filter-option.mjs +0 -7
- package/esm2020/domain/catalog/models/filter.mjs +0 -7
- package/esm2020/domain/catalog/models/index.mjs +0 -12
- package/esm2020/domain/catalog/models/kit-product.mjs +0 -18
- package/esm2020/domain/catalog/models/product-base.mjs +0 -25
- package/esm2020/domain/catalog/models/product-for-category.mjs +0 -14
- package/esm2020/domain/catalog/models/product-for-kit.mjs +0 -14
- package/esm2020/domain/catalog/models/product.mjs +0 -19
- package/esm2020/domain/catalog/models/types/category-condition.type.mjs +0 -2
- package/esm2020/domain/catalog/models/types/category-metadata.type.mjs +0 -2
- package/esm2020/domain/catalog/models/types/category-product.mjs +0 -2
- package/esm2020/domain/catalog/models/types/index.mjs +0 -12
- package/esm2020/domain/catalog/models/types/product-evaluation.type.mjs +0 -2
- package/esm2020/domain/catalog/models/types/product-gender.type.mjs +0 -2
- package/esm2020/domain/catalog/models/types/product-metadata.type.mjs +0 -2
- package/esm2020/domain/catalog/models/types/product-review.type.mjs +0 -2
- package/esm2020/domain/catalog/models/types/shop-description.type.mjs +0 -2
- package/esm2020/domain/catalog/models/types/shop-price.type.mjs +0 -2
- package/esm2020/domain/catalog/models/types/stock.type.mjs +0 -2
- package/esm2020/domain/catalog/models/types/variant-grade.type.mjs +0 -2
- package/esm2020/domain/catalog/models/variant.mjs +0 -7
- package/esm2020/domain/catalog/models/wishlist.mjs +0 -7
- package/esm2020/domain/catalog/repositories/category-collection-children.repository.mjs +0 -2
- package/esm2020/domain/catalog/repositories/category-filter.repository.mjs +0 -2
- package/esm2020/domain/catalog/repositories/category.repository.mjs +0 -2
- package/esm2020/domain/catalog/repositories/filter-option.repository.mjs +0 -2
- package/esm2020/domain/catalog/repositories/filter.repository.mjs +0 -2
- package/esm2020/domain/catalog/repositories/index.mjs +0 -10
- package/esm2020/domain/catalog/repositories/product.repository.mjs +0 -2
- package/esm2020/domain/catalog/repositories/subscription-product.repository.mjs +0 -2
- package/esm2020/domain/catalog/repositories/variant.repository.mjs +0 -2
- package/esm2020/domain/catalog/repositories/wishlist.repository.mjs +0 -2
- package/esm2020/domain/generic/index.mjs +0 -3
- package/esm2020/domain/generic/model/base.model.mjs +0 -24
- package/esm2020/domain/generic/model/identifier-fields.mjs +0 -2
- package/esm2020/domain/generic/model/index.mjs +0 -4
- package/esm2020/domain/generic/model/types/base-model-builder.type.mjs +0 -2
- package/esm2020/domain/generic/model/types/identifier-model.type.mjs +0 -2
- package/esm2020/domain/generic/model/types/index.mjs +0 -6
- package/esm2020/domain/generic/model/types/model-base-structure.type.mjs +0 -2
- package/esm2020/domain/generic/model/types/non-function-properties.type.mjs +0 -2
- package/esm2020/domain/generic/model/types/non-function-property-name.type.mjs +0 -2
- package/esm2020/domain/generic/repository/create.repository.mjs +0 -2
- package/esm2020/domain/generic/repository/crud.repository.mjs +0 -2
- package/esm2020/domain/generic/repository/delete.repository.mjs +0 -2
- package/esm2020/domain/generic/repository/enums/index.mjs +0 -3
- package/esm2020/domain/generic/repository/enums/update-option-actions.enum.mjs +0 -9
- package/esm2020/domain/generic/repository/enums/where.enum.mjs +0 -16
- package/esm2020/domain/generic/repository/find.repository.mjs +0 -2
- package/esm2020/domain/generic/repository/get.repository.mjs +0 -2
- package/esm2020/domain/generic/repository/index.mjs +0 -10
- package/esm2020/domain/generic/repository/read.repository.mjs +0 -2
- package/esm2020/domain/generic/repository/types/index.mjs +0 -7
- package/esm2020/domain/generic/repository/types/repository-find-filters.type.mjs +0 -2
- package/esm2020/domain/generic/repository/types/repository-find-result.type.mjs +0 -2
- package/esm2020/domain/generic/repository/types/repository-limit-options.type.mjs +0 -2
- package/esm2020/domain/generic/repository/types/repository-order-by-list.type.mjs +0 -2
- package/esm2020/domain/generic/repository/types/repository-update-params.type.mjs +0 -2
- package/esm2020/domain/generic/repository/types/where-options.type.mjs +0 -2
- package/esm2020/domain/generic/repository/update.repository.mjs +0 -2
- package/esm2020/domain/index.mjs +0 -7
- package/esm2020/domain/location/index.mjs +0 -2
- package/esm2020/domain/location/models/address.mjs +0 -7
- package/esm2020/domain/location/models/index.mjs +0 -3
- package/esm2020/domain/location/models/types/index.mjs +0 -4
- package/esm2020/domain/location/models/types/location-bound.type.mjs +0 -2
- package/esm2020/domain/location/models/types/location-geometry.type.mjs +0 -2
- package/esm2020/domain/location/models/types/location-lat-lng.type.mjs +0 -2
- package/esm2020/domain/shop-settings/enums/filter-type.enum.mjs +0 -21
- package/esm2020/domain/shop-settings/enums/index.mjs +0 -4
- package/esm2020/domain/shop-settings/enums/questions-filters.enum.mjs +0 -21
- package/esm2020/domain/shop-settings/enums/shop-page-name.enum.mjs +0 -21
- package/esm2020/domain/shop-settings/helpers/beauty-questions.helper.mjs +0 -47
- package/esm2020/domain/shop-settings/helpers/index.mjs +0 -2
- package/esm2020/domain/shop-settings/index.mjs +0 -5
- package/esm2020/domain/shop-settings/models/campaign-banner.mjs +0 -7
- package/esm2020/domain/shop-settings/models/campaign.mjs +0 -7
- package/esm2020/domain/shop-settings/models/home.mjs +0 -7
- package/esm2020/domain/shop-settings/models/index.mjs +0 -7
- package/esm2020/domain/shop-settings/models/shop-menu.mjs +0 -7
- package/esm2020/domain/shop-settings/models/shop-settings.mjs +0 -7
- package/esm2020/domain/shop-settings/models/types/banner.type.mjs +0 -2
- package/esm2020/domain/shop-settings/models/types/benefit.type.mjs +0 -2
- package/esm2020/domain/shop-settings/models/types/campaign-page.mjs +0 -2
- package/esm2020/domain/shop-settings/models/types/home-data.type.mjs +0 -2
- package/esm2020/domain/shop-settings/models/types/index.mjs +0 -15
- package/esm2020/domain/shop-settings/models/types/menu-nav.type.mjs +0 -2
- package/esm2020/domain/shop-settings/models/types/sections.type.mjs +0 -2
- package/esm2020/domain/shop-settings/models/types/shop-banner.type.mjs +0 -2
- package/esm2020/domain/shop-settings/models/types/shop-brands.type.mjs +0 -2
- package/esm2020/domain/shop-settings/models/types/shop-carousel.type.mjs +0 -2
- package/esm2020/domain/shop-settings/models/types/shop-collection.type.mjs +0 -2
- package/esm2020/domain/shop-settings/models/types/shop-gift.type.mjs +0 -2
- package/esm2020/domain/shop-settings/models/types/shop-home.mjs +0 -2
- package/esm2020/domain/shop-settings/models/types/shop-post.type.mjs +0 -2
- package/esm2020/domain/shop-settings/models/types/shop-section.type.mjs +0 -2
- package/esm2020/domain/shop-settings/models/types/sub-menu.type.mjs +0 -2
- package/esm2020/domain/shop-settings/repositories/campaign-banner.repository.mjs +0 -2
- package/esm2020/domain/shop-settings/repositories/campaign.repository.mjs +0 -2
- package/esm2020/domain/shop-settings/repositories/home.repository.mjs +0 -2
- package/esm2020/domain/shop-settings/repositories/index.mjs +0 -6
- package/esm2020/domain/shop-settings/repositories/shop-menu.repository.mjs +0 -2
- package/esm2020/domain/shop-settings/repositories/shop-settings.repository.mjs +0 -2
- package/esm2020/domain/shopping/index.mjs +0 -3
- package/esm2020/domain/shopping/models/buy-2-win.mjs +0 -14
- package/esm2020/domain/shopping/models/campaign-dashboard.mjs +0 -7
- package/esm2020/domain/shopping/models/campaign-hashtag.mjs +0 -7
- package/esm2020/domain/shopping/models/checkout.mjs +0 -37
- package/esm2020/domain/shopping/models/coupons/coupon.mjs +0 -38
- package/esm2020/domain/shopping/models/coupons/enums/coupon-club-mens.enum.mjs +0 -7
- package/esm2020/domain/shopping/models/coupons/enums/coupon-subtypes.enum.mjs +0 -6
- package/esm2020/domain/shopping/models/coupons/enums/coupon-types.enum.mjs +0 -10
- package/esm2020/domain/shopping/models/coupons/enums/exclusivities.enum.mjs +0 -10
- package/esm2020/domain/shopping/models/coupons/enums/index.mjs +0 -4
- package/esm2020/domain/shopping/models/coupons/index.mjs +0 -3
- package/esm2020/domain/shopping/models/enums/checkout-types.enum.mjs +0 -7
- package/esm2020/domain/shopping/models/enums/index.mjs +0 -3
- package/esm2020/domain/shopping/models/enums/order-status.enum.mjs +0 -12
- package/esm2020/domain/shopping/models/index.mjs +0 -13
- package/esm2020/domain/shopping/models/line-item.mjs +0 -4
- package/esm2020/domain/shopping/models/order.mjs +0 -11
- package/esm2020/domain/shopping/models/payment.mjs +0 -169
- package/esm2020/domain/shopping/models/shipping-method.mjs +0 -7
- package/esm2020/domain/shopping/models/subscription/checkout.mjs +0 -28
- package/esm2020/domain/shopping/models/subscription/index.mjs +0 -3
- package/esm2020/domain/shopping/models/subscription/plan.mjs +0 -7
- package/esm2020/domain/shopping/models/types/index.mjs +0 -8
- package/esm2020/domain/shopping/models/types/payment-address.type.mjs +0 -2
- package/esm2020/domain/shopping/models/types/payment-billing.type.mjs +0 -2
- package/esm2020/domain/shopping/models/types/payment-card.type.mjs +0 -2
- package/esm2020/domain/shopping/models/types/payment-customer.type.mjs +0 -2
- package/esm2020/domain/shopping/models/types/payment-document.type.mjs +0 -2
- package/esm2020/domain/shopping/models/types/payment-item.type.mjs +0 -2
- package/esm2020/domain/shopping/models/types/payment-shipping.type.mjs +0 -2
- package/esm2020/domain/shopping/repositories/buy-2-win.repository.mjs +0 -2
- package/esm2020/domain/shopping/repositories/campaign-dashboard.repository.mjs +0 -2
- package/esm2020/domain/shopping/repositories/campaign-hashtag.repository.mjs +0 -2
- package/esm2020/domain/shopping/repositories/checkout.repository.mjs +0 -2
- package/esm2020/domain/shopping/repositories/coupon.repository.mjs +0 -2
- package/esm2020/domain/shopping/repositories/index.mjs +0 -10
- package/esm2020/domain/shopping/repositories/legacy-order.repository.mjs +0 -2
- package/esm2020/domain/shopping/repositories/order.repository.mjs +0 -2
- package/esm2020/domain/shopping/repositories/payment.repository.mjs +0 -2
- package/esm2020/domain/shopping/repositories/subscription/checkout.repository.mjs +0 -2
- package/esm2020/domain/shopping/repositories/subscription/index.mjs +0 -3
- package/esm2020/domain/shopping/repositories/subscription/plan.repository.mjs +0 -2
- package/esm2020/domain/users/errors/index.mjs +0 -4
- package/esm2020/domain/users/errors/unauthorized.error.mjs +0 -7
- package/esm2020/domain/users/errors/user-already-registered.error.mjs +0 -7
- package/esm2020/domain/users/errors/weak-password.error.mjs +0 -7
- package/esm2020/domain/users/index.mjs +0 -6
- package/esm2020/domain/users/models/beauty-profile.mjs +0 -12
- package/esm2020/domain/users/models/enums/accessory-importances.enum.mjs +0 -7
- package/esm2020/domain/users/models/enums/area.enum.mjs +0 -13
- package/esm2020/domain/users/models/enums/beard-problems.enum.mjs +0 -11
- package/esm2020/domain/users/models/enums/beard-sizes.enum.mjs +0 -9
- package/esm2020/domain/users/models/enums/beauty-product-importances.enum.mjs +0 -8
- package/esm2020/domain/users/models/enums/body-problems.enum.mjs +0 -13
- package/esm2020/domain/users/models/enums/body-shapes.enum.mjs +0 -9
- package/esm2020/domain/users/models/enums/body-tattoos.enum.mjs +0 -7
- package/esm2020/domain/users/models/enums/face-skin-oilinesses.enum.mjs +0 -9
- package/esm2020/domain/users/models/enums/face-skin-problems.enum.mjs +0 -12
- package/esm2020/domain/users/models/enums/face-skin-tones.enum.mjs +0 -10
- package/esm2020/domain/users/models/enums/family-incomes.enum.mjs +0 -10
- package/esm2020/domain/users/models/enums/fragrance-importances.enum.mjs +0 -7
- package/esm2020/domain/users/models/enums/hair-colors.enum.mjs +0 -12
- package/esm2020/domain/users/models/enums/hair-problems.enum.mjs +0 -12
- package/esm2020/domain/users/models/enums/hair-strands.enum.mjs +0 -10
- package/esm2020/domain/users/models/enums/hair-types.enum.mjs +0 -9
- package/esm2020/domain/users/models/enums/index.mjs +0 -21
- package/esm2020/domain/users/models/enums/office-position.enum.mjs +0 -8
- package/esm2020/domain/users/models/enums/product-spents.enum.mjs +0 -10
- package/esm2020/domain/users/models/enums/user-type.enum.mjs +0 -10
- package/esm2020/domain/users/models/index.mjs +0 -8
- package/esm2020/domain/users/models/lead.mjs +0 -7
- package/esm2020/domain/users/models/subscription/edition.mjs +0 -7
- package/esm2020/domain/users/models/subscription/enums/billing-status.enum.mjs +0 -5
- package/esm2020/domain/users/models/subscription/enums/edition-status.enum.mjs +0 -6
- package/esm2020/domain/users/models/subscription/enums/index.mjs +0 -5
- package/esm2020/domain/users/models/subscription/enums/payment-type.enum.mjs +0 -7
- package/esm2020/domain/users/models/subscription/enums/status.enum.mjs +0 -6
- package/esm2020/domain/users/models/subscription/index.mjs +0 -5
- package/esm2020/domain/users/models/subscription/payment.mjs +0 -14
- package/esm2020/domain/users/models/subscription/subscription.mjs +0 -43
- package/esm2020/domain/users/models/user-address.mjs +0 -7
- package/esm2020/domain/users/models/user-payment-method.mjs +0 -7
- package/esm2020/domain/users/models/user.mjs +0 -26
- package/esm2020/domain/users/repositories/beauty-profile.repository.mjs +0 -2
- package/esm2020/domain/users/repositories/edition.repository.mjs +0 -2
- package/esm2020/domain/users/repositories/index.mjs +0 -9
- package/esm2020/domain/users/repositories/lead.repository.mjs +0 -2
- package/esm2020/domain/users/repositories/subscription-payment.repository.mjs +0 -2
- package/esm2020/domain/users/repositories/subscription.repository.mjs +0 -2
- package/esm2020/domain/users/repositories/user-address.repository.mjs +0 -2
- package/esm2020/domain/users/repositories/user-payment-method.repository.mjs +0 -2
- package/esm2020/domain/users/repositories/user.repository.mjs +0 -2
- package/esm2020/domain/users/services/authentication.service.mjs +0 -2
- package/esm2020/domain/users/services/index.mjs +0 -4
- package/esm2020/domain/users/services/register.service.mjs +0 -2
- package/esm2020/domain/users/services/types/basic-user-data.type.mjs +0 -2
- package/esm2020/domain/users/services/types/index.mjs +0 -2
- package/esm2020/domain/users/use-cases/authentication.mjs +0 -43
- package/esm2020/domain/users/use-cases/index.mjs +0 -5
- package/esm2020/domain/users/use-cases/recovery-password.mjs +0 -9
- package/esm2020/domain/users/use-cases/register.mjs +0 -38
- package/esm2020/domain/users/use-cases/signout.mjs +0 -9
- package/esm2020/errors/duplicated-results.error.mjs +0 -7
- package/esm2020/errors/index.mjs +0 -5
- package/esm2020/errors/invalid-argument.error.mjs +0 -7
- package/esm2020/errors/not-found.error.mjs +0 -7
- package/esm2020/errors/required-argument.error.mjs +0 -9
- package/esm2020/index.mjs +0 -6
- package/esm2020/infra/elasticsearch/adapters/axios.adapter.mjs +0 -67
- package/esm2020/infra/elasticsearch/adapters/elastic-search.adapter.mjs +0 -2
- package/esm2020/infra/elasticsearch/adapters/index.mjs +0 -3
- package/esm2020/infra/elasticsearch/index.mjs +0 -4
- package/esm2020/infra/elasticsearch/indexes/index.mjs +0 -2
- package/esm2020/infra/elasticsearch/indexes/products-index.mjs +0 -104
- package/esm2020/infra/elasticsearch/types/elastic-search-result.mjs +0 -2
- package/esm2020/infra/elasticsearch/types/index.mjs +0 -2
- package/esm2020/infra/firebase/auth/authentication-firebase-auth.service.mjs +0 -41
- package/esm2020/infra/firebase/auth/index.mjs +0 -3
- package/esm2020/infra/firebase/auth/register-firebase-auth.service.mjs +0 -33
- package/esm2020/infra/firebase/auth/types/firebase-user-with-id.type.mjs +0 -2
- package/esm2020/infra/firebase/firestore/enums/firestore-field-type.enum.mjs +0 -10
- package/esm2020/infra/firebase/firestore/enums/index.mjs +0 -2
- package/esm2020/infra/firebase/firestore/index.mjs +0 -4
- package/esm2020/infra/firebase/firestore/mixins/index.mjs +0 -10
- package/esm2020/infra/firebase/firestore/mixins/with-create-firestore.mixin.mjs +0 -31
- package/esm2020/infra/firebase/firestore/mixins/with-crud-firestore.mixin.mjs +0 -10
- package/esm2020/infra/firebase/firestore/mixins/with-delete-firestore.mixin.mjs +0 -18
- package/esm2020/infra/firebase/firestore/mixins/with-find-firestore.mixin.mjs +0 -110
- package/esm2020/infra/firebase/firestore/mixins/with-firestore.mixin.mjs +0 -80
- package/esm2020/infra/firebase/firestore/mixins/with-get-firestore.mixin.mjs +0 -23
- package/esm2020/infra/firebase/firestore/mixins/with-helpers.mixin.mjs +0 -17
- package/esm2020/infra/firebase/firestore/mixins/with-sub-collection.mixin.mjs +0 -13
- package/esm2020/infra/firebase/firestore/mixins/with-update-firestore.mixin.mjs +0 -51
- package/esm2020/infra/firebase/firestore/repositories/catalog/category-firestore.repository.mjs +0 -67
- package/esm2020/infra/firebase/firestore/repositories/catalog/index.mjs +0 -5
- package/esm2020/infra/firebase/firestore/repositories/catalog/product-firestore.repository.mjs +0 -54
- package/esm2020/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.mjs +0 -16
- package/esm2020/infra/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.mjs +0 -14
- package/esm2020/infra/firebase/firestore/repositories/index.mjs +0 -5
- package/esm2020/infra/firebase/firestore/repositories/shop-settings/home-firestore.repository.mjs +0 -60
- package/esm2020/infra/firebase/firestore/repositories/shop-settings/index.mjs +0 -4
- package/esm2020/infra/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.mjs +0 -14
- package/esm2020/infra/firebase/firestore/repositories/shop-settings/shop-settings-firestore.repository.mjs +0 -14
- package/esm2020/infra/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.mjs +0 -14
- package/esm2020/infra/firebase/firestore/repositories/shopping/campaign-dashboard-firestore.repository.mjs +0 -14
- package/esm2020/infra/firebase/firestore/repositories/shopping/campaign-hashtag-firestore.repository.mjs +0 -14
- package/esm2020/infra/firebase/firestore/repositories/shopping/checkout-firestore.repository.mjs +0 -14
- package/esm2020/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.mjs +0 -14
- package/esm2020/infra/firebase/firestore/repositories/shopping/coupon-firestore.repository.mjs +0 -31
- package/esm2020/infra/firebase/firestore/repositories/shopping/index.mjs +0 -11
- package/esm2020/infra/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.mjs +0 -11
- package/esm2020/infra/firebase/firestore/repositories/shopping/order-firestore.repository.mjs +0 -40
- package/esm2020/infra/firebase/firestore/repositories/shopping/payment-firestore.repository.mjs +0 -14
- package/esm2020/infra/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.mjs +0 -14
- package/esm2020/infra/firebase/firestore/repositories/users/index.mjs +0 -9
- package/esm2020/infra/firebase/firestore/repositories/users/lead-firestore.repository.mjs +0 -14
- package/esm2020/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.mjs +0 -16
- package/esm2020/infra/firebase/firestore/repositories/users/subscription-firestore.repository.mjs +0 -14
- package/esm2020/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.mjs +0 -16
- package/esm2020/infra/firebase/firestore/repositories/users/user-address-firestore.repository.mjs +0 -16
- package/esm2020/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.mjs +0 -16
- package/esm2020/infra/firebase/firestore/repositories/users/user-firestore.repository.mjs +0 -50
- package/esm2020/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.mjs +0 -16
- package/esm2020/infra/firebase/firestore/types/firestore-interceptors.type.mjs +0 -2
- package/esm2020/infra/firebase/firestore/types/firestore-sub.repository.type.mjs +0 -2
- package/esm2020/infra/firebase/firestore/types/firestore.helpers.type.mjs +0 -2
- package/esm2020/infra/firebase/firestore/types/firestore.repository.type.mjs +0 -2
- package/esm2020/infra/firebase/firestore/types/index.mjs +0 -5
- package/esm2020/infra/firebase/index.mjs +0 -3
- package/esm2020/infra/hasura-graphql/enums/hasura-graphql-column-type.enum.mjs +0 -13
- package/esm2020/infra/hasura-graphql/enums/hasura-graphql-where.enum.mjs +0 -17
- package/esm2020/infra/hasura-graphql/enums/index.mjs +0 -3
- package/esm2020/infra/hasura-graphql/index.mjs +0 -5
- package/esm2020/infra/hasura-graphql/mixins/helpers/attribute-option.helper.mjs +0 -35
- package/esm2020/infra/hasura-graphql/mixins/helpers/bind-filter-query.helper.mjs +0 -71
- package/esm2020/infra/hasura-graphql/mixins/helpers/filter-option.helper.mjs +0 -22
- package/esm2020/infra/hasura-graphql/mixins/helpers/graphql-field.helper.mjs +0 -125
- package/esm2020/infra/hasura-graphql/mixins/helpers/index.mjs +0 -5
- package/esm2020/infra/hasura-graphql/mixins/index.mjs +0 -8
- package/esm2020/infra/hasura-graphql/mixins/with-create-hasura-graphql.mixin.mjs +0 -39
- package/esm2020/infra/hasura-graphql/mixins/with-crud-hasura-graphql.mixin.mjs +0 -10
- package/esm2020/infra/hasura-graphql/mixins/with-delete-hasura-graphql.mixin.mjs +0 -31
- package/esm2020/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.mjs +0 -152
- package/esm2020/infra/hasura-graphql/mixins/with-get-hasura-graphql.mixin.mjs +0 -37
- package/esm2020/infra/hasura-graphql/mixins/with-hasura-graphql.mixin.mjs +0 -108
- package/esm2020/infra/hasura-graphql/mixins/with-update-hasura-graphql.mixin.mjs +0 -62
- package/esm2020/infra/hasura-graphql/models/category-hasura-graphql.mjs +0 -4
- package/esm2020/infra/hasura-graphql/models/index.mjs +0 -5
- package/esm2020/infra/hasura-graphql/models/kit-product-hasura-graphql.mjs +0 -15
- package/esm2020/infra/hasura-graphql/models/product-hasura-graphql.mjs +0 -11
- package/esm2020/infra/hasura-graphql/models/variant-hasura-graphql.mjs +0 -9
- package/esm2020/infra/hasura-graphql/repositories/catalog/category-collection-children-hasura-graphql.repository.mjs +0 -39
- package/esm2020/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.mjs +0 -107
- package/esm2020/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.mjs +0 -338
- package/esm2020/infra/hasura-graphql/repositories/catalog/filter-hasura-graphql.repository.mjs +0 -105
- package/esm2020/infra/hasura-graphql/repositories/catalog/filter-option-hasura-graphql.repository.mjs +0 -22
- package/esm2020/infra/hasura-graphql/repositories/catalog/index.mjs +0 -9
- package/esm2020/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.mjs +0 -516
- package/esm2020/infra/hasura-graphql/repositories/catalog/variant-hasura-graphql.repository.mjs +0 -114
- package/esm2020/infra/hasura-graphql/repositories/catalog/wishlist-hasura-graphql.repository.mjs +0 -238
- package/esm2020/infra/hasura-graphql/repositories/index.mjs +0 -2
- package/esm2020/infra/hasura-graphql/types/fields.type.mjs +0 -2
- package/esm2020/infra/hasura-graphql/types/graphql.repository.type.mjs +0 -2
- package/esm2020/infra/hasura-graphql/types/hasura-graphql-auth-options.type.mjs +0 -2
- package/esm2020/infra/hasura-graphql/types/hasura-graphql-fields.type.mjs +0 -2
- package/esm2020/infra/hasura-graphql/types/hasura-graphql-headers.type.mjs +0 -2
- package/esm2020/infra/hasura-graphql/types/index.mjs +0 -9
- package/esm2020/infra/hasura-graphql/types/nested-field.type.mjs +0 -2
- package/esm2020/infra/hasura-graphql/types/query-builder-options.type.mjs +0 -2
- package/esm2020/infra/hasura-graphql/types/variable-options.type.mjs +0 -2
- package/esm2020/infra/index.mjs +0 -4
- package/esm2020/infrab4a-connect.mjs +0 -5
- package/esm2020/utils/decorators/debug.class.decorator.mjs +0 -7
- package/esm2020/utils/decorators/index.mjs +0 -3
- package/esm2020/utils/decorators/trace.method.decorator.mjs +0 -81
- package/esm2020/utils/get.mjs +0 -3
- package/esm2020/utils/helpers/class-name.helper.mjs +0 -15
- package/esm2020/utils/helpers/debug-decorator.helper.mjs +0 -18
- package/esm2020/utils/helpers/debug.helper.mjs +0 -150
- package/esm2020/utils/helpers/index.mjs +0 -5
- package/esm2020/utils/helpers/reflect.helper.mjs +0 -165
- package/esm2020/utils/index.mjs +0 -13
- package/esm2020/utils/is-uuid.mjs +0 -3
- package/esm2020/utils/is.mjs +0 -4
- package/esm2020/utils/log.utils.mjs +0 -9
- package/esm2020/utils/mixins/base.mixin.mjs +0 -6
- package/esm2020/utils/mixins/index.mjs +0 -4
- package/esm2020/utils/mixins/merge-constructor-params.type.mjs +0 -2
- package/esm2020/utils/mixins/mixin-ctor.type.mjs +0 -2
- package/esm2020/utils/parse-datetime.mjs +0 -14
- package/esm2020/utils/types/array-element.type.mjs +0 -2
- package/esm2020/utils/types/index.mjs +0 -3
- package/esm2020/utils/types/prop.type.mjs +0 -2
- package/fesm2015/infrab4a-connect.mjs +0 -4976
- package/fesm2015/infrab4a-connect.mjs.map +0 -1
- package/fesm2020/infrab4a-connect.mjs +0 -4890
- package/fesm2020/infrab4a-connect.mjs.map +0 -1
- package/infra/elasticsearch/adapters/axios.adapter.d.ts +0 -16
- package/infra/elasticsearch/adapters/elastic-search.adapter.d.ts +0 -8
- package/infra/elasticsearch/adapters/index.d.ts +0 -2
- package/infra/elasticsearch/index.d.ts +0 -3
- package/infra/elasticsearch/indexes/index.d.ts +0 -1
- package/infra/elasticsearch/indexes/products-index.d.ts +0 -13
- package/infra/elasticsearch/types/elastic-search-result.d.ts +0 -9
- package/infra/elasticsearch/types/index.d.ts +0 -1
- package/infra/firebase/auth/authentication-firebase-auth.service.d.ts +0 -12
- package/infra/firebase/auth/index.d.ts +0 -2
- package/infra/firebase/auth/register-firebase-auth.service.d.ts +0 -8
- package/infra/firebase/auth/types/firebase-user-with-id.type.d.ts +0 -5
- package/infra/firebase/firestore/enums/firestore-field-type.enum.d.ts +0 -8
- package/infra/firebase/firestore/enums/index.d.ts +0 -1
- package/infra/firebase/firestore/index.d.ts +0 -3
- package/infra/firebase/firestore/mixins/index.d.ts +0 -9
- package/infra/firebase/firestore/mixins/with-create-firestore.mixin.d.ts +0 -4
- package/infra/firebase/firestore/mixins/with-crud-firestore.mixin.d.ts +0 -5
- package/infra/firebase/firestore/mixins/with-delete-firestore.mixin.d.ts +0 -4
- package/infra/firebase/firestore/mixins/with-find-firestore.mixin.d.ts +0 -4
- package/infra/firebase/firestore/mixins/with-firestore.mixin.d.ts +0 -13
- package/infra/firebase/firestore/mixins/with-get-firestore.mixin.d.ts +0 -4
- package/infra/firebase/firestore/mixins/with-helpers.mixin.d.ts +0 -11
- package/infra/firebase/firestore/mixins/with-sub-collection.mixin.d.ts +0 -11
- package/infra/firebase/firestore/mixins/with-update-firestore.mixin.d.ts +0 -7
- package/infra/firebase/firestore/repositories/catalog/category-firestore.repository.d.ts +0 -20
- package/infra/firebase/firestore/repositories/catalog/index.d.ts +0 -4
- package/infra/firebase/firestore/repositories/catalog/product-firestore.repository.d.ts +0 -12
- package/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.d.ts +0 -12
- package/infra/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.d.ts +0 -7
- package/infra/firebase/firestore/repositories/index.d.ts +0 -4
- package/infra/firebase/firestore/repositories/shop-settings/home-firestore.repository.d.ts +0 -16
- package/infra/firebase/firestore/repositories/shop-settings/index.d.ts +0 -3
- package/infra/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.d.ts +0 -7
- package/infra/firebase/firestore/repositories/shop-settings/shop-settings-firestore.repository.d.ts +0 -7
- package/infra/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.d.ts +0 -7
- package/infra/firebase/firestore/repositories/shopping/campaign-dashboard-firestore.repository.d.ts +0 -8
- package/infra/firebase/firestore/repositories/shopping/campaign-hashtag-firestore.repository.d.ts +0 -8
- package/infra/firebase/firestore/repositories/shopping/checkout-firestore.repository.d.ts +0 -7
- package/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.d.ts +0 -7
- package/infra/firebase/firestore/repositories/shopping/coupon-firestore.repository.d.ts +0 -12
- package/infra/firebase/firestore/repositories/shopping/index.d.ts +0 -10
- package/infra/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.d.ts +0 -6
- package/infra/firebase/firestore/repositories/shopping/order-firestore.repository.d.ts +0 -13
- package/infra/firebase/firestore/repositories/shopping/payment-firestore.repository.d.ts +0 -7
- package/infra/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.d.ts +0 -7
- package/infra/firebase/firestore/repositories/users/index.d.ts +0 -8
- package/infra/firebase/firestore/repositories/users/lead-firestore.repository.d.ts +0 -7
- package/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.d.ts +0 -12
- package/infra/firebase/firestore/repositories/users/subscription-firestore.repository.d.ts +0 -7
- package/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.d.ts +0 -12
- package/infra/firebase/firestore/repositories/users/user-address-firestore.repository.d.ts +0 -12
- package/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.d.ts +0 -12
- package/infra/firebase/firestore/repositories/users/user-firestore.repository.d.ts +0 -17
- package/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.d.ts +0 -12
- package/infra/firebase/firestore/types/firestore-interceptors.type.d.ts +0 -14
- package/infra/firebase/firestore/types/firestore-sub.repository.type.d.ts +0 -6
- package/infra/firebase/firestore/types/firestore.helpers.type.d.ts +0 -8
- package/infra/firebase/firestore/types/firestore.repository.type.d.ts +0 -16
- package/infra/firebase/firestore/types/index.d.ts +0 -4
- package/infra/firebase/index.d.ts +0 -2
- package/infra/hasura-graphql/enums/hasura-graphql-column-type.enum.d.ts +0 -11
- package/infra/hasura-graphql/enums/hasura-graphql-where.enum.d.ts +0 -15
- package/infra/hasura-graphql/enums/index.d.ts +0 -2
- package/infra/hasura-graphql/index.d.ts +0 -4
- package/infra/hasura-graphql/mixins/helpers/attribute-option.helper.d.ts +0 -19
- package/infra/hasura-graphql/mixins/helpers/bind-filter-query.helper.d.ts +0 -10
- package/infra/hasura-graphql/mixins/helpers/filter-option.helper.d.ts +0 -8
- package/infra/hasura-graphql/mixins/helpers/graphql-field.helper.d.ts +0 -12
- package/infra/hasura-graphql/mixins/helpers/index.d.ts +0 -4
- package/infra/hasura-graphql/mixins/index.d.ts +0 -7
- package/infra/hasura-graphql/mixins/with-create-hasura-graphql.mixin.d.ts +0 -9
- package/infra/hasura-graphql/mixins/with-crud-hasura-graphql.mixin.d.ts +0 -11
- package/infra/hasura-graphql/mixins/with-delete-hasura-graphql.mixin.d.ts +0 -7
- package/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.d.ts +0 -34
- package/infra/hasura-graphql/mixins/with-get-hasura-graphql.mixin.d.ts +0 -25
- package/infra/hasura-graphql/mixins/with-hasura-graphql.mixin.d.ts +0 -23
- package/infra/hasura-graphql/mixins/with-update-hasura-graphql.mixin.d.ts +0 -14
- package/infra/hasura-graphql/models/category-hasura-graphql.d.ts +0 -6
- package/infra/hasura-graphql/models/index.d.ts +0 -4
- package/infra/hasura-graphql/models/kit-product-hasura-graphql.d.ts +0 -6
- package/infra/hasura-graphql/models/product-hasura-graphql.d.ts +0 -18
- package/infra/hasura-graphql/models/variant-hasura-graphql.d.ts +0 -10
- package/infra/hasura-graphql/repositories/catalog/category-collection-children-hasura-graphql.repository.d.ts +0 -10
- package/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.d.ts +0 -12
- package/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.d.ts +0 -34
- package/infra/hasura-graphql/repositories/catalog/filter-hasura-graphql.repository.d.ts +0 -18
- package/infra/hasura-graphql/repositories/catalog/filter-option-hasura-graphql.repository.d.ts +0 -10
- package/infra/hasura-graphql/repositories/catalog/index.d.ts +0 -8
- package/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.d.ts +0 -30
- package/infra/hasura-graphql/repositories/catalog/variant-hasura-graphql.repository.d.ts +0 -14
- package/infra/hasura-graphql/repositories/catalog/wishlist-hasura-graphql.repository.d.ts +0 -27
- package/infra/hasura-graphql/repositories/index.d.ts +0 -1
- package/infra/hasura-graphql/types/fields.type.d.ts +0 -2
- package/infra/hasura-graphql/types/graphql.repository.type.d.ts +0 -24
- package/infra/hasura-graphql/types/hasura-graphql-auth-options.type.d.ts +0 -8
- package/infra/hasura-graphql/types/hasura-graphql-fields.type.d.ts +0 -44
- package/infra/hasura-graphql/types/hasura-graphql-headers.type.d.ts +0 -7
- package/infra/hasura-graphql/types/index.d.ts +0 -8
- package/infra/hasura-graphql/types/nested-field.type.d.ts +0 -7
- package/infra/hasura-graphql/types/query-builder-options.type.d.ts +0 -7
- package/infra/hasura-graphql/types/variable-options.type.d.ts +0 -9
- package/infra/index.d.ts +0 -3
- package/utils/decorators/debug.class.decorator.d.ts +0 -2
- package/utils/decorators/index.d.ts +0 -2
- package/utils/decorators/trace.method.decorator.d.ts +0 -14
- package/utils/get.d.ts +0 -1
- package/utils/helpers/class-name.helper.d.ts +0 -3
- package/utils/helpers/debug-decorator.helper.d.ts +0 -9
- package/utils/helpers/debug.helper.d.ts +0 -60
- package/utils/helpers/index.d.ts +0 -4
- package/utils/helpers/reflect.helper.d.ts +0 -50
- package/utils/index.d.ts +0 -13
- package/utils/is-uuid.d.ts +0 -1
- package/utils/is.d.ts +0 -1
- package/utils/log.utils.d.ts +0 -7
- package/utils/mixins/base.mixin.d.ts +0 -3
- package/utils/mixins/index.d.ts +0 -3
- package/utils/mixins/merge-constructor-params.type.d.ts +0 -3
- package/utils/mixins/mixin-ctor.type.d.ts +0 -1
- package/utils/parse-datetime.d.ts +0 -1
- package/utils/types/array-element.type.d.ts +0 -1
- package/utils/types/index.d.ts +0 -2
- package/utils/types/prop.type.d.ts +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"infrab4a-connect.mjs","sources":["../../../projects/connect/src/domain/generic/model/base.model.ts","../../../projects/connect/src/domain/generic/repository/enums/where.enum.ts","../../../projects/connect/src/domain/generic/repository/enums/update-option-actions.enum.ts","../../../projects/connect/src/domain/users/models/enums/accessory-importances.enum.ts","../../../projects/connect/src/domain/users/models/enums/area.enum.ts","../../../projects/connect/src/domain/users/models/enums/beard-problems.enum.ts","../../../projects/connect/src/domain/users/models/enums/beard-sizes.enum.ts","../../../projects/connect/src/domain/users/models/enums/beauty-product-importances.enum.ts","../../../projects/connect/src/domain/users/models/enums/body-problems.enum.ts","../../../projects/connect/src/domain/users/models/enums/body-shapes.enum.ts","../../../projects/connect/src/domain/users/models/enums/body-tattoos.enum.ts","../../../projects/connect/src/domain/users/models/enums/face-skin-oilinesses.enum.ts","../../../projects/connect/src/domain/users/models/enums/face-skin-problems.enum.ts","../../../projects/connect/src/domain/users/models/enums/face-skin-tones.enum.ts","../../../projects/connect/src/domain/users/models/enums/family-incomes.enum.ts","../../../projects/connect/src/domain/users/models/enums/fragrance-importances.enum.ts","../../../projects/connect/src/domain/users/models/enums/hair-colors.enum.ts","../../../projects/connect/src/domain/users/models/enums/hair-problems.enum.ts","../../../projects/connect/src/domain/users/models/enums/hair-strands.enum.ts","../../../projects/connect/src/domain/users/models/enums/hair-types.enum.ts","../../../projects/connect/src/domain/users/models/enums/office-position.enum.ts","../../../projects/connect/src/domain/users/models/enums/product-spents.enum.ts","../../../projects/connect/src/domain/users/models/enums/user-type.enum.ts","../../../projects/connect/src/domain/users/models/subscription/enums/billing-status.enum.ts","../../../projects/connect/src/domain/users/models/subscription/enums/edition-status.enum.ts","../../../projects/connect/src/domain/users/models/subscription/enums/payment-type.enum.ts","../../../projects/connect/src/domain/users/models/subscription/enums/status.enum.ts","../../../projects/connect/src/domain/users/models/subscription/edition.ts","../../../projects/connect/src/domain/shopping/models/payment.ts","../../../projects/connect/src/domain/users/models/subscription/payment.ts","../../../projects/connect/src/utils/log.utils.ts","../../../projects/connect/src/utils/helpers/reflect.helper.ts","../../../projects/connect/src/utils/helpers/debug-decorator.helper.ts","../../../projects/connect/src/utils/helpers/class-name.helper.ts","../../../projects/connect/src/utils/helpers/debug.helper.ts","../../../projects/connect/src/utils/decorators/debug.class.decorator.ts","../../../projects/connect/src/utils/decorators/trace.method.decorator.ts","../../../projects/connect/src/utils/get.ts","../../../projects/connect/src/utils/is.ts","../../../projects/connect/src/utils/is-uuid.ts","../../../projects/connect/src/utils/mixins/base.mixin.ts","../../../projects/connect/src/utils/parse-datetime.ts","../../../projects/connect/src/domain/shopping/models/enums/checkout-types.enum.ts","../../../projects/connect/src/domain/shopping/models/coupons/enums/coupon-types.enum.ts","../../../projects/connect/src/domain/shopping/models/coupons/enums/coupon-subtypes.enum.ts","../../../projects/connect/src/domain/shopping/models/coupons/enums/exclusivities.enum.ts","../../../projects/connect/src/domain/shopping/models/coupons/coupon.ts","../../../projects/connect/src/domain/shopping/models/subscription/plan.ts","../../../projects/connect/src/domain/users/models/beauty-profile.ts","../../../projects/connect/src/domain/users/models/user.ts","../../../projects/connect/src/domain/location/models/address.ts","../../../projects/connect/src/domain/users/models/user-address.ts","../../../projects/connect/src/domain/users/models/subscription/subscription.ts","../../../projects/connect/src/domain/users/models/user-payment-method.ts","../../../projects/connect/src/domain/users/models/lead.ts","../../../projects/connect/src/domain/users/errors/unauthorized.error.ts","../../../projects/connect/src/domain/users/use-cases/authentication.ts","../../../projects/connect/src/domain/users/errors/user-already-registered.error.ts","../../../projects/connect/src/domain/users/errors/weak-password.error.ts","../../../projects/connect/src/domain/users/use-cases/register.ts","../../../projects/connect/src/domain/users/use-cases/signout.ts","../../../projects/connect/src/domain/users/use-cases/recovery-password.ts","../../../projects/connect/src/domain/catalog/models/filter.ts","../../../projects/connect/src/domain/catalog/models/category-base.ts","../../../projects/connect/src/domain/catalog/models/category-for-product.ts","../../../projects/connect/src/domain/catalog/models/product-base.ts","../../../projects/connect/src/domain/catalog/models/product-for-kit.ts","../../../projects/connect/src/domain/catalog/models/kit-product.ts","../../../projects/connect/src/domain/catalog/models/product-for-category.ts","../../../projects/connect/src/domain/catalog/models/category.ts","../../../projects/connect/src/domain/catalog/models/category-collection-children.ts","../../../projects/connect/src/domain/catalog/models/category-filter.ts","../../../projects/connect/src/domain/catalog/models/enums/product-genders.enum.ts","../../../projects/connect/src/domain/catalog/models/enums/shops.enum.ts","../../../projects/connect/src/domain/catalog/models/filter-option.ts","../../../projects/connect/src/domain/catalog/models/product.ts","../../../projects/connect/src/domain/catalog/models/variant.ts","../../../projects/connect/src/domain/catalog/models/wishlist.ts","../../../projects/connect/src/domain/shopping/models/buy-2-win.ts","../../../projects/connect/src/domain/shopping/models/campaign-dashboard.ts","../../../projects/connect/src/domain/shopping/models/campaign-hashtag.ts","../../../projects/connect/src/domain/shopping/models/line-item.ts","../../../projects/connect/src/domain/shopping/models/shipping-method.ts","../../../projects/connect/src/domain/shopping/models/checkout.ts","../../../projects/connect/src/domain/shopping/models/enums/order-status.enum.ts","../../../projects/connect/src/domain/shopping/models/order.ts","../../../projects/connect/src/domain/shopping/models/subscription/checkout.ts","../../../projects/connect/src/domain/catalog/helpers/round-product-price.helper.ts","../../../projects/connect/src/domain/shop-settings/enums/filter-type.enum.ts","../../../projects/connect/src/domain/shop-settings/enums/questions-filters.enum.ts","../../../projects/connect/src/domain/shop-settings/enums/shop-page-name.enum.ts","../../../projects/connect/src/domain/shop-settings/helpers/beauty-questions.helper.ts","../../../projects/connect/src/domain/shop-settings/models/campaign.ts","../../../projects/connect/src/domain/shop-settings/models/campaign-banner.ts","../../../projects/connect/src/domain/shop-settings/models/home.ts","../../../projects/connect/src/domain/shop-settings/models/shop-menu.ts","../../../projects/connect/src/domain/shop-settings/models/shop-settings.ts","../../../projects/connect/src/errors/invalid-argument.error.ts","../../../projects/connect/src/errors/required-argument.error.ts","../../../projects/connect/src/errors/not-found.error.ts","../../../projects/connect/src/errors/duplicated-results.error.ts","../../../projects/connect/src/infra/elasticsearch/adapters/axios.adapter.ts","../../../projects/connect/src/infra/elasticsearch/indexes/products-index.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-helpers.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-get-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/enums/firestore-field-type.enum.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-find-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-create-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-update-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-delete-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-sub-collection.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-crud-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/lead-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/subscription-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/user-address-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/user-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/catalog/category-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/catalog/product-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/campaign-dashboard-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/campaign-hashtag-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/checkout-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/coupon-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/order-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/payment-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shop-settings/home-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shop-settings/shop-settings-firestore.repository.ts","../../../projects/connect/src/infra/firebase/auth/authentication-firebase-auth.service.ts","../../../projects/connect/src/infra/firebase/auth/register-firebase-auth.service.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/helpers/attribute-option.helper.ts","../../../projects/connect/src/infra/hasura-graphql/enums/hasura-graphql-where.enum.ts","../../../projects/connect/src/infra/hasura-graphql/enums/hasura-graphql-column-type.enum.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/helpers/filter-option.helper.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/helpers/bind-filter-query.helper.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/helpers/graphql-field.helper.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-create-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-delete-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-update-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-get-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-crud-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/models/category-hasura-graphql.ts","../../../projects/connect/src/infra/hasura-graphql/models/product-hasura-graphql.ts","../../../projects/connect/src/infra/hasura-graphql/models/kit-product-hasura-graphql.ts","../../../projects/connect/src/infra/hasura-graphql/models/variant-hasura-graphql.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/category-collection-children-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/filter-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/filter-option-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/variant-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/wishlist-hasura-graphql.repository.ts","../../../projects/connect/src/infrab4a-connect.ts"],"sourcesContent":["import { instanceToPlain, plainToInstance } from 'class-transformer'\nimport {\n BaseModelBuilder,\n ModelBaseStructure,\n NonFunctionAndIdentifierProperties,\n NonFunctionAndIdentifierPropertyNames,\n} from './types'\n\nexport type GenericIdentifier<M = { id: string }, T = NonFunctionAndIdentifierPropertyNames<M>> = T\n\nexport class BaseModel<Model extends ModelBaseStructure<Model, Identifiers>, Identifiers = GenericIdentifier>\n implements ModelBaseStructure<Model, Identifiers>\n{\n get identifier(): { [key in Extract<NonFunctionAndIdentifierPropertyNames<Model>, Identifiers>]: Model[key] } {\n const fields = (this.constructor as BaseModelBuilder<Model>).identifiersFields.filter(\n (field) => field !== 'identifier',\n )\n const data: Record<string, any> = this\n\n return fields.reduce((object, field) => ({ ...object, [field]: data[field] }), {})\n }\n\n get identifiersFields(): Identifiers[] {\n return (this.constructor as BaseModelBuilder<Model, Identifiers>).identifiersFields\n }\n\n constructor(args?: Partial<Model>) {\n Object.assign(this, args)\n }\n\n static toInstance<T>(this: new () => T, data?: Partial<NonFunctionAndIdentifierProperties<T>>): T {\n return plainToInstance(this, data || {})\n }\n\n static isModel<T extends ModelBaseStructure>(this: new () => T, value: any): value is T {\n return value instanceof this\n }\n\n toPlain(): any {\n return instanceToPlain(this)\n }\n}\n","export enum Where {\n EQUALS = '==',\n NOTEQUALS = '!=',\n GT = '>',\n GTE = '>=',\n IN = 'in',\n NOTIN = 'not in',\n LT = '<',\n LTE = '<=',\n LIKE = 'like',\n NOTLIKE = 'not like',\n ISNULL = 'is null',\n ISNOTNULL = 'is not null',\n}\n","export enum UpdateOptionActions {\n UPDATE = 'update',\n MERGE = 'merge',\n REMOVE = 'remove',\n REMOVE_FIELD = 'removeField',\n NULL = 'null',\n}\n","export enum AccessoryImportances {\n NOT_INTERESTED = 'Não tenho interesse',\n LIKE_RARELY_USE = 'Gosto, mas uso poucos',\n LIKE_ALWAYS_FOLLOW_FASHION = 'Gosto muito de acessórios e sempre procuro acompanhar a moda',\n}\n","export enum Area {\n GP = 'Geral',\n CRM = 'CRM',\n MediaProd = 'Media Production',\n Tech = 'Tecnologia',\n Transactional = 'Transacional',\n Operations = 'Opera\\u00E7\\u00F5es',\n Sales = 'Comercial',\n Finantial = 'Financeiro',\n HR = 'RH',\n}\n","export enum BeardProblems {\n NO_PROBLEMS = 'Sem problemas',\n DRY = 'Barba Seca',\n OILY = 'Barba Oleaosa',\n DANCRUFF = 'Barba com Caspa',\n INGROWN_HAIRS = 'Pêlos Encravados',\n DOESNT_GROW = 'Não Cresce',\n SPARSE_BEARD = 'Barba Rala',\n}\n","export enum BeardSizes {\n BIG = 'Grande',\n MEDIUM = 'Média',\n SHORT = 'Curta',\n MUSTACHE = 'Bigode',\n NOTHING = 'Sem Barba',\n}\n","export enum BeautyProductImportances {\n KNOW_LITTLE_ABOUT = 'Conheço bem pouco de produtos de beleza e rotinas de cuidados',\n ALREADY_BOUGHT_NOTHING_SPECIALIZED = 'Já comprei alguns produtos básicos para cuidar de mim, mas nada muito especializado',\n GOOD_CARE_MYSELF = 'Me considero um homem que se cuida bem. Conheço sobre produtos especializados e me preocupo em ter uma rotina de cuidados',\n PERSONAL_CARE_EXPERT = 'Sou um expert em cuidados pessoais',\n}\n","export enum BodyProblems {\n NO_WORRIES = 'Sem preocupações',\n FLACCIDITY = 'Flacidez',\n LOCALIZED_FAT = 'Gordura Localizada',\n STRETCH_MARKS = 'Estrias',\n SENSITIVE_SKIN = 'Pele Sensível',\n DRY_SKIN = 'Pele Seca',\n OILY_ACNE = 'Oleosa/Acne',\n SKIN_FRECKLES = 'Pele com Sardas',\n PHOTOSENSITIVE_SKIN = 'Pele Fotossensível',\n}\n","export enum BodyShapes {\n LEAN = 'Magro',\n REGULAR = 'Regular',\n OVERWEIGHT = 'Acima do Peso',\n ATHLETIC = 'Atlético',\n MUSCULAR = 'Musculoso',\n}\n","export enum BodyTattoos {\n NONE = 'Nenhuma',\n HAS_DOESNT_CARE = 'Tenho mas não cuido',\n HAS_CARE_LOT = 'Tenho e cuido bastante',\n}\n","export enum FaceSkinOilinesses {\n DRY = 'Seca',\n OILY = 'Oleaosa',\n MIXED = 'Mista',\n NORMAL = 'Normal',\n DONT_KNOW = 'Eu não sei como dizer',\n}\n","export enum FaceSkinProblems {\n NO_PROBLEMS = 'Sem problemas',\n DARK_CIRCLES = 'Olheiras',\n WRINKLES = 'Rugas',\n BLACKHEADS_PIMPLES = 'Cravos e Espinhas',\n STAINS = 'Manchas',\n FRECKLES = 'Sardas',\n SENSITIVE = 'Sensível',\n PHOTOSENSITIVE = 'Fotossensível',\n}\n","export enum FaceSkinTones {\n VERY_CLEAR = 'Muito Clara',\n CLEAR = 'Clara',\n MEDIUM_LIGHT = 'Clara Média',\n MEDIUM_DARK = 'Escura Média',\n DARK = 'Escura',\n VERY_DARK = 'Muito Escura',\n}\n","export enum FamilyIncomes {\n UNTIL_3000 = 'Até R$3.000',\n SINCE_3001_TO_7000 = 'De R$3.001 a R$7.000',\n SINCE_7001_TO_10000 = 'De R$7.001 a R$10.000',\n SINCE_10001_TO_15000 = 'De R$10.001 a R$15.000',\n GRAN_THAN_15000 = 'Mais de R$15.000',\n NOW_ANSWER = 'Prefiro nao responder',\n}\n","export enum FragranceImportances {\n NOT_INTERESTED = 'Não tenho interesse',\n LIKE_ALWAYS_USE_SAME = 'Gosto de perfumes, mas uso sempre os mesmos',\n LIKE_INNOVATE = 'Gosto de inovar e conhecer novas fragrâncias',\n}\n","export enum HairColors {\n BLACK = 'Preto',\n DARK_BROWN = 'Castanho Escuro',\n LIGHT_BROWN = 'Castanho Claro',\n DARK_BLONDE = 'Loiro Escuro',\n LIGHT_BLONDE = 'Loiro Claro',\n WHITE_GRAY = 'Branco/Grisalho',\n REDHEAD = 'Ruivo',\n OTHER = 'RuiOutroo',\n}\n","export enum HairProblems {\n NO_PROBLEMS = 'Sem problemas',\n DANCRUFF = 'Caspa',\n LOSS = 'Queda',\n OILY = 'Oleosidade',\n DRYNESS = 'Ressecamento',\n CHEMICAL = 'Quimica',\n WHITE_HAIR = 'Cabelos Brancos',\n REBEL_WIRES = 'Fios Rebeldes',\n}\n","export enum HairStrands {\n NORMAL = 'Fio Normal',\n DRY = 'Fio Seco',\n OILY = 'Fio Oleoso',\n MIXED = 'Fio Misto',\n FINE = 'Fio Fino',\n THICK = 'Fio Grosso',\n}\n","export enum HairTypes {\n Smooth = 'Liso',\n WAVY = 'Ondulado',\n CURLY = 'Cacheado',\n FRIZZY = 'Crespo',\n BALD = 'Sou careca',\n}\n","export enum OfficePosition {\n Intern = 'Estagi\\u00E1rio',\n Analyst = 'Analista',\n Manager = 'Gerente',\n Director = 'Diretor',\n}\n","export enum ProductSpents {\n UNTIL_50 = 'Até R$50',\n SINCE_51_TO_100 = 'De R$51 a R$100',\n SINCE_101_TO_200 = 'De R$101 a R$200',\n SINCE_201_TO_300 = 'De R$201 a R$300',\n GRAN_THAN_300 = 'Mais de R$300',\n NOW_ANSWER = 'Prefiro nao responder',\n}\n","export enum UserType {\n B2C = 'Cliente Transacional',\n GlamGirl = 'Glamgirl',\n MensBoy = 'Mensboy',\n B2B = 'Company',\n Collaborator = 'Funcionário',\n Influencer = 'Influencer',\n}\n","export enum BillingStatus {\n PAYED = 'PAGO',\n}\n","export enum EditionStatus {\n ALLOCATION_WAITING = 'Aguardando alocação',\n SHIPPED = 'Enviado',\n}\n","export enum PaymentType {\n AQUISITION = 'Aquisição',\n RENEWAL = 'Renovação',\n FREIGHT = 'mudança de endereço, Frete',\n}\n","export enum Status {\n ACTIVE = 'active',\n CANCELLED = 'Cancelado',\n}\n","import { BaseModel } from '../../../generic/model/base.model'\n\nimport { EditionStatus, BillingStatus } from './enums'\n\nexport type EditionIdentifiers = 'id' | 'subscriptionId'\n\nexport class Edition extends BaseModel<Edition, EditionIdentifiers> {\n id: string\n subscriptionId: string\n billingStatus: BillingStatus\n editionId: number\n editionStatus: EditionStatus\n installment: number\n paymentId: string\n draftId?: string\n createdAt: Date\n updatedAt: Date\n\n static get identifiersFields(): EditionIdentifiers[] {\n return ['id', 'subscriptionId']\n }\n}\n","import { Expose } from 'class-transformer'\n\nimport { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\n\nimport { PaymentBilling, PaymentCard, PaymentCustomer, PaymentItem, PaymentShipping } from './types'\n\nexport class Payment extends BaseModel<Payment> {\n id: number\n object: string\n status: string\n tid: number\n nsu: number\n amount: number\n cost: number\n installments: number\n referer: string\n ip: string\n phone: string\n address: string\n metadata: any\n device: string\n payment: string\n addition: string\n discount: string\n customer: PaymentCustomer\n billing: PaymentBilling\n shipping: PaymentShipping\n items: PaymentItem[]\n card: PaymentCard\n\n @Expose({ name: 'refuse_reason' })\n refuseReason: string\n @Expose({ name: 'status_reason' })\n statusReason: string\n @Expose({ name: 'acquirer_response_code' })\n acquirerResponseCode: string\n @Expose({ name: 'acquirer_name' })\n acquirerName: string\n @Expose({ name: 'acquirer_id' })\n acquirerId: string\n @Expose({ name: 'authorization_code' })\n authorizationCode: string\n @Expose({ name: 'soft_descriptor' })\n softDescriptor: string\n @Expose({ name: 'date_created' })\n dateCreated: string\n @Expose({ name: 'date_updated' })\n dateUpdated: string\n @Expose({ name: 'authorized_amount' })\n authorizedAmount: number\n @Expose({ name: 'paid_amount' })\n paidAmount: number\n @Expose({ name: 'refunded_amount' })\n refundedAmount: number\n @Expose({ name: 'card_holder_name' })\n cardHolderName: string\n @Expose({ name: 'card_last_digits' })\n cardLastDigits: string\n @Expose({ name: 'card_first_digits' })\n cardFirstDigits: string\n @Expose({ name: 'card_brand' })\n cardBrand: string\n @Expose({ name: 'card_pin_mode' })\n cardPinMode: string\n @Expose({ name: 'card_magstripe_fallback' })\n cardMagstripeFallback: boolean\n @Expose({ name: 'cvm_pin' })\n cvmPin: boolean\n @Expose({ name: 'postback_url' })\n postbackUrl: string\n @Expose({ name: 'payment_method' })\n paymentMethod: string\n @Expose({ name: 'capture_method' })\n captureMethod: string\n @Expose({ name: 'antifraud_score' })\n antifraudScore: string\n @Expose({ name: 'boleto_url' })\n boletoUrl: string\n @Expose({ name: 'boleto_barcode' })\n boletoBarcode: string\n @Expose({ name: 'boleto_expiration_date' })\n boletoExpirationDate: string\n @Expose({ name: 'subscription_id' })\n subscriptionId: string\n @Expose({ name: 'split_rules' })\n splitRules: string\n @Expose({ name: 'antifraud_metadata' })\n antifraudMetadata: any\n @Expose({ name: 'reference_key' })\n referenceKey: string\n @Expose({ name: 'local_transaction_id' })\n localTransactionId: string\n @Expose({ name: 'local_time' })\n localTime: string\n @Expose({ name: 'fraud_covered' })\n fraudCovered: boolean\n @Expose({ name: 'fraud_reimbursed' })\n fraudReimbursed: string\n @Expose({ name: 'order_id' })\n orderId: string\n @Expose({ name: 'risk_level' })\n riskLevel: string\n @Expose({ name: 'receipt_url' })\n receiptUrl: string\n @Expose({ name: 'private_label' })\n privateLabel: string\n @Expose({ name: 'pix_qr_code' })\n pixQrCode: string\n @Expose({ name: 'pix_expiration_date' })\n pixExpirationDate: string\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { BaseModel } from '../../../generic/model/base.model'\nimport { Payment } from '../../../shopping/models/payment'\n\nimport { PaymentType } from './enums/payment-type.enum'\n\nexport type SubscriptionPaymentIdentifiers = 'id' | 'subscriptionId'\n\nexport class SubscriptionPayment extends BaseModel<SubscriptionPayment, SubscriptionPaymentIdentifiers> {\n id: string\n subscriptionId: string\n paymentType: PaymentType\n createdAt: Date\n attempts?: number\n\n @Type(() => Payment)\n payment: Payment\n\n static get identifiersFields(): SubscriptionPaymentIdentifiers[] {\n return ['id', 'subscriptionId']\n }\n}\n","import { debug, Debugger } from 'debug'\n\nexport enum DebugNamespaces {\n ROOT = 'connect',\n TRACE = 'trace',\n ERROR = 'error',\n}\n\nexport const Logger: Debugger = debug(DebugNamespaces.ROOT)\n","import { first, flatten, isArray, isNil, last } from 'lodash'\nimport 'reflect-metadata'\n\ntype Dictionary<T> = {\n [key: string]: T\n}\nexport type MetaArgs = {\n key: keyof MetaStorage | string\n target: any\n property?: string | symbol\n own?: boolean\n propertyDescriptor?: PropertyDescriptor\n}\nexport type MetaValueArgs<T = any> = MetaArgs & {\n value: T\n}\ntype MetaProperties<T = any> = Dictionary<T>\ntype MetaTargets = Dictionary<MetaProperties>\ntype MetaKeys = Dictionary<MetaTargets>\ntype MetaStorage = {\n value?: any\n object?: any\n values?: MetaKeys\n} & Record<string, any>\n\nexport class ReflectHelper {\n static get items(): MetaStorage {\n return this._items\n }\n\n static get keys(): Array<string> {\n return Object.keys(ReflectHelper.items)\n }\n\n static has(key: keyof MetaStorage, target?: any, property?: string | symbol): boolean {\n return (\n !isNil(key) &&\n !isNil(ReflectHelper.items[key]) &&\n (isNil(target) ||\n (!isNil(ReflectHelper.items[key][target]) &&\n (isNil(property) || !isNil(ReflectHelper.items[key][target][String(property)]))))\n )\n }\n\n static get<T = any>({ key, target, property, own = true }: MetaArgs): Array<T> {\n try {\n if (own) {\n return Reflect.getOwnMetadata(key, target, property) || null\n } else {\n return Reflect.getMetadata(key, target, property) || null\n }\n } catch (_err) {\n return null\n }\n }\n\n static first<T = any>({ key, target, property, own = true }: MetaArgs): T {\n const values = ReflectHelper.get<T>({ key, target, property, own })\n\n return isArray(values) ? first(values) : values\n }\n\n static last<T = any>({ key, target, property, own = true }: MetaArgs): T {\n const values = ReflectHelper.get<T>({ key, target, property, own })\n\n return isArray(values) ? last(values) : values\n }\n\n static set<T = any>({ key, target, property, value, propertyDescriptor }: MetaValueArgs<T>): void {\n Reflect.defineMetadata(key, value, target, property)\n\n ReflectHelper.put<T>({ key, target, property, value, propertyDescriptor })\n }\n\n static add<T = any>({ key, target, property, value, propertyDescriptor }: MetaValueArgs<T>): void {\n let values: Array<T> = ReflectHelper.get<T>({ key, target, property }) || new Array<T>()\n\n if (!Array.isArray(values)) values = [values]\n\n values.push(value)\n\n ReflectHelper.set<Array<T>>({ key, target, property, value: values, propertyDescriptor })\n }\n\n static all<T = any>({ key }: Partial<MetaArgs>): Array<MetaValueArgs<T>> {\n const items = ReflectHelper.items[key] || {}\n\n return flatten(Object.keys(items).map((item) => flatten(this.allFrom(key, items[item]))))\n }\n\n static allFrom(key: string, target: any): any {\n return Object.keys(target)\n .filter((property) => property !== 'object')\n .map((property) => this.allValuesFrom(key, target, property))\n }\n\n static allValuesFrom(key: string, target: any, property: any): any {\n const values = target[property]\n let value = values.value\n const propertyDescriptor = values.propertyDescriptor\n\n if (!isArray(value)) value = [value]\n\n return flatten(\n value.map((val: any) => {\n return {\n key,\n target: target.object,\n property,\n value: val,\n propertyDescriptor,\n }\n }),\n )\n }\n\n static delete({ key, target, property }: MetaArgs): boolean {\n Reflect.deleteMetadata(key, target, property)\n\n return ReflectHelper.remove(key, target, property)\n }\n\n static clear(key?: string): void {\n if (!key) {\n ReflectHelper.keys.forEach((storedKey) => {\n ReflectHelper.clear(storedKey)\n })\n } else {\n if (ReflectHelper.keys.includes(key)) {\n Object.values<MetaStorage>(ReflectHelper.items[key]).forEach((target) => {\n if (ReflectHelper.has(key, target)) {\n Object.values(ReflectHelper.items[key][target.toString()]).forEach((property) => {\n ReflectHelper.delete({\n key,\n target: target.object,\n property: String(property),\n })\n ReflectHelper.remove(key, target, String(property))\n })\n }\n\n ReflectHelper.delete({ key, target: target.object })\n ReflectHelper.remove(key, target)\n })\n }\n }\n }\n\n static getType({ target, propertyKey }: { target: string; propertyKey: string }): any {\n return Reflect.getMetadata('design:type', target, propertyKey)\n }\n\n static getReturntype({ target, propertyKey }: { target: string; propertyKey: string }): any {\n return Reflect.getMetadata('design:returntype', target, propertyKey)\n }\n\n static getAllMethods(target: any): string[] {\n const props = []\n let obj = target\n\n do {\n props.push(...Object.getOwnPropertyNames(obj))\n } while ((obj = Object.getPrototypeOf(obj)))\n\n return props.sort().filter((e, i, arr) => {\n if (\n [\n '__defineGetter__',\n '__defineSetter__',\n '__lookupGetter__',\n '__lookupSetter__',\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf',\n ].includes(e)\n )\n return false\n if (e != arr[i + 1] && typeof target[e] === 'function') return true\n })\n }\n\n private static _items: MetaStorage = {}\n\n private static put<T = any>({ key, target, property, value, propertyDescriptor }: MetaValueArgs<T>): void {\n const index = target.constructor.name\n\n ReflectHelper.items[key] = ReflectHelper.items[key] || {}\n ReflectHelper.items[key][index] = ReflectHelper.items[key][index] || {}\n ReflectHelper.items[key][index].object = target\n\n if (isNil(property)) {\n ReflectHelper.items[key][index].value = {\n value,\n propertyDescriptor,\n }\n } else {\n ReflectHelper.items[key][index][String(property)] = ReflectHelper.items[key][index][String(property)] || {}\n ReflectHelper.items[key][index][String(property)] = {\n value,\n propertyDescriptor,\n }\n }\n }\n\n private static remove(key: string, target?: any, property?: string | symbol): boolean {\n if (ReflectHelper.has(key, target, property)) return delete ReflectHelper.items[key][target][String(property)]\n else if (ReflectHelper.has(key, target)) return delete ReflectHelper.items[key][target]\n else if (ReflectHelper.has(key)) return delete ReflectHelper.items[key]\n else return false\n }\n}\n","import { ReflectHelper } from './reflect.helper'\n\nexport type DebugOptions = {\n name?: string\n namespaces?: Array<string>\n}\n\nexport class DebugDecoratorHelper {\n static DebugNamingMetadataKey = 'model:naming:decorator'\n\n static set(target: object, options: DebugOptions): void {\n ReflectHelper.add<DebugOptions>({\n key: DebugDecoratorHelper.DebugNamingMetadataKey,\n target,\n value: options,\n })\n }\n\n static get(target: object): DebugOptions {\n return ReflectHelper.first<DebugOptions>({\n key: DebugDecoratorHelper.DebugNamingMetadataKey,\n target,\n })\n }\n}\n","import { compact, get } from 'lodash'\n\nexport class ClassNameHelper {\n static get(clazz: any): string {\n if (!clazz) return null\n\n const prototype = Object.getPrototypeOf(clazz)\n const names = compact([\n get(clazz, 'constructor.name'),\n get(prototype, 'constructor.name'),\n get(prototype, '__proto__.constructor.name'),\n ])\n\n return names.find((name) => name !== 'class_1')\n }\n}\n","import { Debugger } from 'debug'\nimport { compact, flatten, get, isNil } from 'lodash'\nimport { Subject } from 'rxjs'\n\nimport { DebugNamespaces, Logger } from '../log.utils'\n\nimport { DebugDecoratorHelper } from './debug-decorator.helper'\nimport { ClassNameHelper } from './class-name.helper'\n\nexport type Debuggable = {\n debug: DebugHelper\n}\n\ntype DebugLog = {\n namespace: string\n message: string\n args: Array<any>\n}\n\ntype DebugError = {\n namespace: string\n error: any\n args: Array<any>\n}\n\nexport const isDebuggable = (object: any): object is Debuggable => {\n return 'debug' in object\n}\n\nexport class DebugHelper {\n static logs$ = new Subject<DebugLog>()\n static traces$ = new Subject<DebugLog>()\n static errors$ = new Subject<DebugError>()\n static isDebuggable = isDebuggable\n\n static namespacesFor(target: object): Array<string> {\n if (isNil(target)) return []\n\n const decorator = DebugDecoratorHelper.get(Object.getPrototypeOf(target))\n const namespaces = get(decorator, 'namespaces', [])\n const name = get(decorator, 'name', ClassNameHelper.get(target))\n\n return [...namespaces, name]\n }\n\n static as(...namespaces: Array<string>): DebugHelper {\n return new DebugHelper(...namespaces)\n }\n\n static for(target: object, ...namespaces: Array<string>): DebugHelper {\n const targetNamespaces = this.namespacesFor(target)\n\n return new DebugHelper(...targetNamespaces, ...namespaces)\n }\n\n static from(target: object, ...namespaces: Array<string>): DebugHelper {\n if (this.isDebuggable(target)) {\n const debug = target.debug\n\n if (namespaces) debug.push(...namespaces)\n\n return debug\n }\n\n return DebugHelper.for(target, ...namespaces)\n }\n\n static clonedFrom(target: object, ...namespaces: Array<string>): DebugHelper {\n if (this.isDebuggable(target)) {\n namespaces.push(...target.debug.entries)\n } else if (!isNil(target)) {\n namespaces.push(...this.namespacesFor(target))\n }\n\n return DebugHelper.for(target, ...namespaces)\n }\n\n static clone(target: object, ...namespaces: Array<string>): { original: DebugHelper; debug: DebugHelper } {\n let original: DebugHelper\n\n if (this.isDebuggable(target)) {\n original = target.debug\n namespaces.push(...original.entries)\n }\n\n return {\n original,\n debug: DebugHelper.for(target, ...namespaces),\n }\n }\n\n static replace(target: any, attrs: { with: DebugHelper }): void {\n if (this.isDebuggable(target)) target.debug = attrs.with\n }\n\n static mock(target: object, ...namespaces: Array<string>): { original: DebugHelper; debug: DebugHelper } {\n const { original, debug } = DebugHelper.clone(target, ...namespaces)\n\n DebugHelper.replace(target, { with: debug })\n\n return { original, debug }\n }\n\n logger: Debugger\n tracer: Debugger\n err: Debugger\n namespaces: Set<string>\n\n constructor(...namespace: Array<string>) {\n this.namespaces = new Set<string>()\n this.push(...namespace)\n }\n\n get entries(): Array<string> {\n return Array.from(get(this, 'namespaces', []))\n }\n\n get namespace(): string {\n return compact(flatten(this.entries)).join(':')\n }\n\n log(message?: any, ...args: Array<any>): DebugHelper {\n this.logger(JSON.stringify(message), ...args.map((element) => JSON.stringify(element)))\n DebugHelper.logs$.next({ namespace: this.namespace, message, args })\n\n return this\n }\n\n trace(message?: any, ...args: Array<any>): DebugHelper {\n this.logger.extend(DebugNamespaces.TRACE)(message, ...args)\n DebugHelper.traces$.next({ namespace: this.namespace, message, args })\n\n return this\n }\n\n error(error: any, ...args: Array<any>): DebugHelper {\n this.logger.extend(DebugNamespaces.ERROR)(JSON.stringify(error), ...args.map((element) => JSON.stringify(element)))\n DebugHelper.errors$.next({ namespace: this.namespace, error, args })\n\n return this\n }\n\n build(): DebugHelper {\n this.logger = Logger\n this.tracer = Logger\n this.err = Logger\n\n this.entries.forEach((namespace) => {\n this.logger = this.logger.extend(namespace)\n this.tracer = this.tracer.extend(namespace)\n this.err = this.err.extend(namespace)\n })\n\n return this\n }\n\n with(...namespace: Array<string>): DebugHelper {\n return new DebugHelper(...this.entries, ...namespace)\n }\n\n push(...namespace: Array<string>): DebugHelper {\n if (namespace) {\n namespace.filter((item) => Boolean(item)).forEach((item) => this.namespaces.add(item))\n }\n\n return this.build()\n }\n\n unshift(...namespace: Array<string>): DebugHelper {\n if (namespace) {\n return this.reset(...namespace, ...this.entries)\n }\n\n return this\n }\n\n reset(...namespace: Array<string>): DebugHelper {\n this.namespaces = new Set(flatten(compact(namespace)))\n\n return this.build()\n }\n\n startWith(...namespace: Array<string>): DebugHelper {\n const current = this.namespaces\n\n this.namespaces = new Set(flatten([compact(namespace), ...current]))\n\n return this.build()\n }\n\n shift(): DebugHelper {\n const list = this.entries\n\n list.shift()\n\n return this.reset(...list)\n }\n\n pop(): DebugHelper {\n const list = this.entries\n\n list.pop()\n\n return this.reset(...list)\n }\n\n clear(): DebugHelper {\n return this.reset()\n }\n\n remove(...namespace: Array<string>): DebugHelper {\n if (namespace) {\n namespace.filter((item) => Boolean(item)).forEach((item) => this.namespaces.delete(item))\n }\n\n return this.build()\n }\n\n puts(...args: Array<string>): string {\n return [`[${this.namespace}]`, ...args].join(' ')\n }\n}\n","import { DebugDecoratorHelper, DebugOptions } from '../helpers'\n\nexport function Debug(opts?: DebugOptions): ClassDecorator {\n return function <TFunction>(target: any): TFunction | void {\n DebugDecoratorHelper.set(target.prototype, opts)\n }\n}\n","import { get } from 'lodash'\n\nimport { Debuggable, DebugHelper } from '../helpers'\n\nexport type CallbackFnArgs<T, Result> = {\n target: T\n result: Result\n args: Array<any>\n namespace?: Array<string>\n}\n\ntype CallbackFn<T, Result> = (opts: CallbackFnArgs<T, Result>) => void\n\ntype TraceOptions<T, Result> = {\n callbackFn?: CallbackFn<T, Result>\n level?: 'trace' | 'log'\n}\n\ntype Tracer<T, Result> = {\n options: TraceOptions<T, Result>\n method: any\n target: T & Debuggable\n propertyDescriptor: PropertyDescriptor\n propertyKey: string\n}\n\ntype CallTracerArgs = {\n target: any\n propertyKey: string\n propertyDescriptor: PropertyDescriptor\n args: Array<any>\n}\n\nconst ASYNC_IDENTIFIER = 'async'\n\nexport function Log<T, Result>(options: TraceOptions<T, Result> = {}) {\n return Trace<T, Result>({ level: 'log', ...options })\n}\n\nexport function Trace<T, Result>(options: TraceOptions<T, Result> = {}) {\n return function (target: any, propertyKey: string, propertyDescriptor: PropertyDescriptor) {\n const method = propertyDescriptor.value\n const isPromise = method.toString().includes(ASYNC_IDENTIFIER)\n const args = {\n options,\n method,\n target,\n propertyKey,\n propertyDescriptor,\n }\n\n propertyDescriptor.value = isPromise ? promiseTracer(args) : functionTracer(args)\n\n return propertyDescriptor\n }\n}\n\nconst traceCall = function ({ target, propertyKey, propertyDescriptor, args }: CallTracerArgs): DebugHelper {\n if (!target.debug) target.debug = DebugHelper.for(target, propertyKey)\n\n return target.debug.push(propertyKey).trace('called', { target, propertyKey, propertyDescriptor, args })\n}\n\nconst promiseTracer = function <T, Result>({ options, method, propertyKey, propertyDescriptor }: Tracer<T, Result>) {\n return function (this: any, ...args: Array<any>): any {\n return new Promise((resolve, reject) => {\n const debug = traceCall({ target: this, propertyDescriptor, propertyKey, args })\n\n if (get(options, 'level', '') === 'log') {\n debug.with('params').log(args)\n }\n\n return method\n .apply(this, args)\n .then((result: any) => {\n if (options.callbackFn) {\n options.callbackFn({ target: this, result, args, namespace: [propertyKey] })\n }\n\n if (get(options, 'level', '') === 'log') {\n debug.with('returns').log(result === undefined ? 'void' : result)\n }\n\n return resolve(result)\n })\n .catch((error: Error) => {\n debug.error(error, ...args)\n debug.with('stack').error(error.stack).pop()\n\n return reject(error)\n })\n .finally(() => {\n return debug.trace('finally', { args }).pop()\n })\n })\n }\n}\n\nconst functionTracer = function <T, Result>({\n options,\n target,\n method,\n propertyKey,\n propertyDescriptor,\n}: Tracer<T, Result>) {\n return function (this: any, ...args: Array<any>): any {\n const debug = traceCall({ target: this || target, propertyDescriptor, propertyKey, args })\n\n if (get(options, 'level', '') === 'log') {\n debug.with('params').log(args)\n }\n\n let result: any\n\n try {\n result = method.apply(this, args)\n\n if (options.callbackFn) options.callbackFn({ target: this, result, args, namespace: [propertyKey] })\n\n if (get(options, 'level', '') === 'log') {\n debug.with('returns').log(result === undefined ? 'void' : result)\n }\n\n return result\n } catch (error) {\n debug.error(error, ...args).pop()\n\n throw error\n } finally {\n debug.trace('finally', { args }).pop()\n }\n }\n}\n","import { get as getLodash } from 'lodash'\n\nexport const get = (object: any, path: string, defaultValue?: any) => getLodash(object, path, defaultValue)\n","export function is<T>(value: any): T {\n return value\n}\n","import { isString } from 'lodash'\n\nexport const isUUID = (value: string): boolean =>\n isString(value) && /[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}/.test(value)\n","export class Base {\n constructor(...args: Array<any>) {\n Object.assign(this, ...args)\n }\n}\n","import { isString } from 'lodash'\nimport { parseISO } from 'date-fns'\n\nexport const parseDateTime = (value: string): string | Date => {\n if (!isString(value)) return value\n if (\n !/^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/.test(value) &&\n !/^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T\\d{2}:\\d{2}:\\d{2}/.test(value)\n )\n return value\n\n const date = parseISO(value)\n\n if (isNaN(date.getTime())) return value\n\n return date\n}\n","export enum CheckoutTypes {\n ECOMMERCE = 1,\n SUBSCRIPTION = 2,\n ALL = 3,\n}\n","export enum CouponTypes {\n ABSOLUTE = 1,\n PERCENTAGE = 2,\n // FINANCIAL = 1,\n // PRODUCT,\n // GIFTCARD,\n // VOUCHER,\n}\n","export enum CouponSubtypes {\n ABSOLUTE = 1,\n PERCENTAGE = 2,\n}\n","export enum Exclusivities {\n ALL_USERS = 1,\n SPECIFIC_USER = 2,\n COLLABORATORS = 3,\n ACTIVE_SUBSCRIBER = 4,\n INACTIVE_SUBSCRIBER = 5,\n NON_SUBSCRIBER = 6,\n}\n","import { isNil } from '../../../../utils'\nimport { Shops } from '../../../catalog/models/enums/shops.enum'\nimport { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\nimport { CheckoutTypes } from '../enums/checkout-types.enum'\nimport { CouponTypes, Exclusivities } from './enums'\nimport { ClubeDaMensPlan } from './enums/coupon-club-mens.enum'\n\nconst COUPON_EXPIRATION = +1000 * 60 * 60 * 24 * 30\n\nexport class Coupon extends BaseModel<Coupon> {\n id: string\n category?: string\n discount: {\n subscriber: {\n type: CouponTypes\n value: number\n }\n non_subscriber: {\n type: CouponTypes\n value: number\n }\n subscription?: {\n type: CouponTypes\n value: number\n }\n }\n useLimits: {\n subscriber: {\n unlimited?: boolean\n total?: number\n limitedPerUser?: boolean\n }\n non_subscriber: {\n unlimited?: boolean\n total?: number\n limitedPerUser?: boolean\n }\n subscription?: {\n unlimited?: boolean\n total?: number\n limitedPerUser?: boolean\n }\n }\n user?: string\n userExclusiveEmail?: string[]\n campaign?: string\n nickname: string\n beginAt: Date\n expiresIn?: Date\n // unlimited?: boolean\n // useLimit?: number\n // useLimitPerUser?: boolean\n shopAvailability: Shops\n personId?: number\n influencerEmail?: string\n plan?: ClubeDaMensPlan\n productsCategories: string[]\n minSubTotalValue?: number\n active?: Boolean\n createdAt: Date\n updatedAt?: Date\n checkoutType: CheckoutTypes\n exclusivityType?: [Exclusivities]\n\n get isInfluencer(): boolean {\n return !isNil(this.influencerEmail)\n }\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n\n static createCoupon(userId: string): Coupon {\n return this.toInstance({\n nickname: `${Date.now()}`,\n checkoutType: CheckoutTypes.ECOMMERCE,\n discount: {\n subscriber: {\n type: CouponTypes.ABSOLUTE,\n value: 10,\n },\n non_subscriber: {\n type: CouponTypes.ABSOLUTE,\n value: 10,\n },\n subscription: {\n type: CouponTypes.ABSOLUTE,\n value: 10,\n },\n },\n user: userId,\n createdAt: new Date(Date.now()),\n beginAt: new Date(Date.now()),\n expiresIn: new Date(Date.now() + COUPON_EXPIRATION),\n })\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\n\nexport class SubscriptionPlan extends BaseModel<SubscriptionPlan> {\n id: string\n name: string\n billingPrice: number\n recurrencePrice: number\n recurrenceCycle: number\n maxAttempts: number\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel } from '../../generic/model/base.model'\n\nimport { BeardSizes, HairTypes } from './enums'\n\nexport type BeautyProfileIdentifiers = 'id' | 'userId'\n\nexport class BeautyProfile extends BaseModel<BeautyProfile, BeautyProfileIdentifiers> {\n id: string\n userId: string\n beardSize?: BeardSizes\n hairType?: HairTypes\n\n override toPlain(): any {\n const plain = super.toPlain()\n\n delete plain.id\n\n return plain\n }\n\n static get identifiersFields(): BeautyProfileIdentifiers[] {\n return ['id', 'userId']\n }\n}\n","import { Type } from 'class-transformer'\nimport { isNil } from '../../../utils'\nimport { BaseModel, GenericIdentifier, NonFunctionAndIdentifierProperties } from '../../generic'\nimport { BeautyProfile } from './beauty-profile'\nimport { Area, OfficePosition, UserType } from './enums'\n\nexport class User extends BaseModel<User> {\n id: string\n cpf?: string\n email: string\n firstName?: string\n lastName?: string\n displayName?: string\n phone?: string\n birthday?: Date\n acceptsNewsletter?: boolean\n type?: UserType\n area?: Area\n officePosition?: OfficePosition\n isSubscriber?: boolean\n subscriptionPlan?: string\n badgeId?: number\n badgeMultiplier?: number\n dateCreated?: Date\n dateModified?: Date\n\n @Type(() => BeautyProfile)\n beautyProfile?: BeautyProfile\n\n static override toInstance<T>(this: new () => T, data?: Partial<NonFunctionAndIdentifierProperties<User>>): T {\n const instance = super.toInstance(data) as unknown as User\n\n if (!isNil(data.firstName))\n instance.displayName = `${data.firstName}${!isNil(data.lastName) ? ` ${data.lastName}` : ''}`\n\n return instance as unknown as T\n }\n\n override toPlain(): Record<string, any> {\n const plain = super.toPlain()\n\n delete plain.beautyProfile\n\n return plain\n }\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier, ModelBaseStructure } from '../../generic'\nimport { LocationGeometry } from './types/location-geometry.type'\n\nexport abstract class Address<\n ChildAddress extends ModelBaseStructure<ChildAddress, Identifiers>,\n Identifiers = ChildAddress['identifiersFields'],\n> extends BaseModel<ChildAddress, Identifiers> {\n id: string\n default?: boolean\n recipient?: string\n zip?: string\n street?: string\n number?: string\n extension?: string\n reference?: string\n district?: string\n city?: string\n regionalPole?: string\n region?: string\n state?: string\n country?: string\n mailbox?: boolean\n mailboxNumber?: string\n formattedAddress?: string\n placeId?: string\n geometry?: LocationGeometry\n\n static get identifiersFields(): Array<GenericIdentifier | {}> {\n return ['id']\n }\n}\n","import { Address } from '../../location/models/address'\n\nexport type UserAddressIdentifiers = 'id' | 'userId'\n\nexport class UserAddress extends Address<UserAddress, UserAddressIdentifiers> {\n userId: string\n\n static override get identifiersFields(): UserAddressIdentifiers[] {\n return ['id', 'userId']\n }\n}\n","import { Type } from 'class-transformer'\nimport { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\nimport { Coupon } from '../../../shopping/models/coupons/coupon'\nimport { SubscriptionPlan } from '../../../shopping/models/subscription/plan'\nimport { User } from '../user'\nimport { UserAddress } from '../user-address'\nimport { Edition } from './edition'\nimport { Status } from './enums/status.enum'\nimport { SubscriptionPayment } from './payment'\n\nexport class Subscription extends BaseModel<Subscription> {\n id: string\n nextPayment: Date\n recurrence: boolean\n status: Status\n cardToken: string\n subtotalPrice?: number\n discount?: number\n totalPrice?: number\n createdAt: Date\n updatedAt: Date\n\n @Type(() => User)\n user: User\n @Type(() => SubscriptionPlan)\n subscriptionPlan: SubscriptionPlan\n @Type(() => UserAddress)\n shippingAddress: UserAddress\n @Type(() => UserAddress)\n billingAddress?: UserAddress\n @Type(() => Coupon)\n coupon?: Coupon\n @Type(() => Edition)\n editions: Edition[]\n @Type(() => SubscriptionPayment)\n payment?: SubscriptionPayment[]\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel } from '../../generic/model/base.model'\n\nexport type UserPaymentIdentifiers = 'id' | 'userId'\n\nexport class UserPaymentMethod extends BaseModel<UserPaymentMethod, UserPaymentIdentifiers> {\n brand: string\n cpf: string\n holderName: string\n last4: string\n pagarmeToken: string\n validUntil: string\n userId: string\n id: string\n fingerprint: string\n\n static get identifiersFields(): UserPaymentIdentifiers[] {\n return ['id', 'userId']\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\n\nexport class Lead extends BaseModel<Lead> {\n id: string\n acceptsNewsletter: boolean\n email: string\n source: string\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { CustomError } from 'ts-custom-error'\n\nexport class UnauthorizedError extends CustomError {\n constructor(message: string) {\n super(message)\n }\n}\n","import { isNil } from '../../../utils'\nimport { UnauthorizedError } from '../errors/unauthorized.error'\nimport { Area, OfficePosition, User, UserType } from '../models'\nimport { UserRepository } from '../repositories/user.repository'\nimport { AuthenticationService } from '../services/authentication.service'\n\nexport enum SignInMethods {\n EMAIL_PASSWORD = 'email_password',\n GOOGLE = 'google',\n}\n\ntype SignInMethod = Lowercase<keyof typeof SignInMethods>\n\ntype SignInParams = {\n email?: string\n password?: string\n}\n\nexport class Authentication {\n constructor(private readonly authService: AuthenticationService, private readonly userRepository: UserRepository) {}\n\n async signIn({ email, password }: SignInParams, signInMethod: SignInMethod): Promise<User> {\n const method = this.getServiceByMethod(signInMethod)\n const userAuth = await this.authService[method]({ email, password })\n const user = this.userRepository.get({ id: userAuth.id })\n\n if (!isNil(user)) return user\n if (/^.+@b4a.com.br$/.test(userAuth.email)) return this.createsUserByCredential(userAuth)\n\n throw new UnauthorizedError('Invalid credentials')\n }\n\n private getServiceByMethod(\n signInMethod: SignInMethod,\n ): keyof Pick<AuthenticationService, 'signInWithEmailAndPassword' | 'signInWithGoogle'> {\n return signInMethod === SignInMethods.EMAIL_PASSWORD ? 'signInWithEmailAndPassword' : 'signInWithGoogle'\n }\n\n private async createsUserByCredential(user: Partial<User>): Promise<User> {\n const [firstName, lastName] = user.displayName?.split(/\\s/)\n const person = User.toInstance({\n ...user,\n cpf: '',\n birthday: new Date(),\n firstName,\n lastName,\n acceptsNewsletter: false,\n area: Area.Transactional,\n officePosition: OfficePosition.Intern,\n type: UserType.Collaborator,\n })\n\n return this.userRepository.create(person)\n }\n}\n","import { CustomError } from 'ts-custom-error'\n\nexport class UserAlreadyRegisteredError extends CustomError {\n constructor(message: string) {\n super(message)\n }\n}\n","import { CustomError } from 'ts-custom-error'\n\nexport class WeakPasswordError extends CustomError {\n constructor(message = 'Weak password') {\n super(message)\n }\n}\n","import { User, UserType } from '../models'\nimport { RegisterService } from '../services/register.service'\nimport { UserAlreadyRegisteredError } from '../errors'\nimport { UserRepository } from '../repositories/user.repository'\n\ntype RegisterParams = Partial<User> & { password: string }\n\nexport class Register {\n constructor(private readonly registerService: RegisterService, private readonly userRepository: UserRepository) {}\n\n async register(params: RegisterParams): Promise<User> {\n const email = params.email.toLocaleLowerCase()\n const displayName = `${params.firstName} ${params.lastName}`\n\n if (await this.userRepository.checkIfExistsByField('cpf', params.cpf))\n throw new UserAlreadyRegisteredError(`Usuário com CPF ${params.cpf} já registrado.`)\n if (await this.userRepository.checkIfExistsByField('email', params.email))\n throw new UserAlreadyRegisteredError(`Usuário com e-mail ${params.email} já registrado.`)\n\n const auth = await this.registerService.register({\n birthday: params.birthday,\n email,\n firstName: params.firstName,\n lastName: params.lastName,\n cpf: params.cpf,\n displayName,\n phone: params.phone,\n password: params.password,\n })\n\n delete params.password\n\n const user = await this.userRepository.create({\n ...params,\n id: auth.id,\n email,\n displayName,\n type: UserType.B2C,\n dateCreated: new Date(),\n dateModified: new Date(),\n })\n\n return user\n }\n}\n","import { AuthenticationService } from '../services/authentication.service'\n\nexport class SignOut {\n constructor(private readonly authService: AuthenticationService) {}\n\n async signOut(): Promise<void> {\n await this.authService.signOut()\n }\n}\n","import { AuthenticationService } from '../services/authentication.service'\n\nexport class RecoveryPassword {\n constructor(private readonly authService: AuthenticationService) {}\n\n async sendEmail(email: string): Promise<void> {\n await this.authService.sendPasswordResetEmail(email)\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model'\nimport { FilterOption } from './filter-option'\n\nexport class Filter extends BaseModel<Filter> {\n id: number\n description: string\n slug: string\n enabled: boolean\n options?: FilterOption[]\n createdAt?: Date\n updatedAt?: Date\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\nimport { BaseModel, GenericIdentifier, ModelBaseStructure } from '../../generic/model'\nimport { Shops } from './enums'\nimport { Filter } from './filter'\nimport { CategoryCondition, CategoryMetadata } from './types'\n\nexport class CategoryBase<\n ChildCategory extends ModelBaseStructure<ChildCategory, Identifiers> = ModelBaseStructure<any, any>,\n Identifiers = ChildCategory['identifiersFields'],\n> extends BaseModel<ChildCategory, Identifiers> {\n id: string\n brandCategory: boolean\n brandLogo?: string\n name: string\n slug: string\n image?: string\n brandCategoryBanner?: string\n brandCategoryBannerMobile?: string\n description: string\n conditions?: CategoryCondition\n products?: string[]\n createdAt?: Date\n updatedAt?: Date\n shop?: Shops\n shops?: string[]\n published: boolean\n metadata: CategoryMetadata\n isCollection?: boolean\n isWishlist?: boolean\n reference?: string\n parentId?: number\n\n @Type(() => CategoryBase)\n parent?: CategoryBase\n\n @Type(() => Filter)\n filters?: Filter[]\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { GenericIdentifier } from '../../generic/model'\nimport { CategoryBase } from './category-base'\n\nexport class CategoryForProduct extends CategoryBase<CategoryForProduct, GenericIdentifier> {\n static override get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier, ModelBaseStructure } from '../../generic/model'\nimport {\n ProductEvaluation,\n ProductGender,\n ProductMetadata,\n ProductReview,\n ShopDescription,\n ShopPrice,\n Stock,\n} from './types'\nimport { Variant } from './variant'\n\nexport class ProductBase<\n ChildProduct extends ModelBaseStructure<ChildProduct, Identifiers>,\n Identifiers = ChildProduct['identifiersFields'],\n> extends BaseModel<ChildProduct, Identifiers> {\n id: string\n name: string\n slug: string\n description: ShopDescription\n sku: string\n price: ShopPrice\n hasVariants: boolean\n NCM: string\n EAN: string\n CEST: string\n weight: number\n stock: Stock\n costPrice: number\n images?: string[]\n miniatures?: string[]\n published: boolean\n createdAt?: Date\n updatedAt?: Date\n brand: string\n tags?: string[]\n filters?: string[]\n type?: string\n categories?: string[]\n reviews?: ProductReview[]\n variant?: Variant\n video?: string\n isKit?: boolean\n rate?: number\n gender?: ProductGender\n shoppingCount?: number\n metadata: ProductMetadata\n\n private reviewsTotal?: number\n\n get evaluation(): ProductEvaluation {\n return {\n reviews: this.reviews,\n count: this.reviewsTotal,\n rating: this.rate,\n }\n }\n\n set evaluation(evaluation: ProductEvaluation) {\n if (!evaluation) {\n this.reviews = null\n this.reviewsTotal = null\n this.rate = null\n\n return\n }\n\n this.reviews = evaluation.reviews || this.reviews\n this.reviewsTotal = evaluation.count || this.reviewsTotal\n this.rate = evaluation.rating || this.rate\n }\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\nimport { GenericIdentifier } from '../../generic/model'\nimport { CategoryForProduct } from './category-for-product'\nimport { ProductBase } from './product-base'\n\nexport class ProductForKit extends ProductBase<ProductForKit, GenericIdentifier> {\n @Type(() => CategoryForProduct)\n category: CategoryForProduct\n\n static override get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\nimport { BaseModel } from '../../generic/model'\nimport { ProductForKit } from './product-for-kit'\n\ntype KitProductIdentifiers = 'productId' | 'kitProductId'\n\nexport class KitProduct extends BaseModel<KitProduct, KitProductIdentifiers> {\n productId: string\n kitProductId: string\n quantity: number\n\n @Type(() => ProductForKit)\n kit: ProductForKit\n\n @Type(() => ProductForKit)\n product: ProductForKit\n\n static get identifiersFields(): KitProductIdentifiers[] {\n return ['productId', 'kitProductId']\n }\n}\n","import { Type } from 'class-transformer'\nimport { GenericIdentifier } from '../../generic/model'\nimport { KitProduct } from './kit-product'\nimport { ProductBase } from './product-base'\n\nexport class ProductForCategory extends ProductBase<ProductForCategory, GenericIdentifier> {\n @Type(() => KitProduct)\n kitProducts?: KitProduct[]\n\n static override get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\nimport { GenericIdentifier } from '../../generic/model'\nimport { CategoryBase } from './category-base'\nimport { ProductForCategory } from './product-for-category'\n\nexport class Category extends CategoryBase<Category, GenericIdentifier> {\n @Type(() => ProductForCategory)\n childrenProducts?: ProductForCategory[]\n\n static override get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\nimport { BaseModel } from '../../generic/model'\n\nexport type CategoryCollectionChildrenIdentifiers = 'collectionId' | 'categoryId'\n\nexport class CategoryCollectionChildren extends BaseModel<\n CategoryCollectionChildren,\n CategoryCollectionChildrenIdentifiers\n> {\n collectionId: number\n categoryId: number\n parentCollectionId?: number\n parentCategoryId?: number\n name: string\n slug: string\n reference?: string\n\n @Type(() => CategoryCollectionChildren)\n parent?: CategoryCollectionChildren\n\n static get identifiersFields(): CategoryCollectionChildrenIdentifiers[] {\n return ['collectionId', 'categoryId']\n }\n}\n","import { Type } from 'class-transformer'\nimport { BaseModel } from '../../generic/model'\nimport { Category } from './category'\nimport { Filter } from './filter'\n\ntype CategoryFilterIdentifiers = 'id' | 'filterId' | 'categoryId'\n\nexport class CategoryFilter extends BaseModel<CategoryFilter, CategoryFilterIdentifiers> {\n id: number\n filterId: number\n categoryId: number\n\n @Type(() => Filter)\n filter?: Filter\n\n @Type(() => Category)\n category?: Category\n\n static get identifiersFields(): CategoryFilterIdentifiers[] {\n return ['id']\n }\n}\n","export enum GenderDestination {\n FEMALE = 'female',\n MALE = 'male',\n UNISEX = 'unisex',\n}\n","export enum Shops {\n MENSMARKET = `mensmarket`,\n GLAMSHOP = 'Glamshop',\n GLAMPOINTS = 'Glampoints',\n ALL = 'ALL'\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model'\n\nexport class FilterOption extends BaseModel<FilterOption> {\n id: string\n filterId: number\n description: string\n createdAt?: Date\n updatedAt?: Date\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\nimport { GenericIdentifier } from '../../generic/model'\nimport { CategoryForProduct } from './category-for-product'\nimport { KitProduct } from './kit-product'\nimport { ProductBase } from './product-base'\n\nexport class Product extends ProductBase<Product, GenericIdentifier> {\n @Type(() => CategoryForProduct)\n category: CategoryForProduct\n\n @Type(() => KitProduct)\n kitProducts?: KitProduct[]\n\n static override get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel } from '../../generic/model'\nimport { ShopPrice, Stock, VariantGrade } from './types'\n\nexport type ProductVariantIdentifiers = 'id' | 'productId'\n\nexport class Variant extends BaseModel<Variant, ProductVariantIdentifiers> {\n id: string\n productId: string\n sku: string\n price: ShopPrice\n EAN: string\n stock: Stock\n grade?: VariantGrade[]\n costPrice: number\n weight: number\n createdAt?: Date\n updatedAt?: Date\n\n static get identifiersFields(): ProductVariantIdentifiers[] {\n return ['id', 'productId']\n }\n}\n","import { GenericIdentifier } from '../../generic/model'\nimport { Category } from './category'\n\nexport class Wishlist extends Category {\n personId?: string\n personName?: string\n personPhoto?: string\n\n static override get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { Category, Shops } from '../../catalog/models'\nimport { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\n\nexport class Buy2Win extends BaseModel<Buy2Win> {\n active: boolean\n cartValue: number\n createdAt: Date\n endDate: Date\n id?: string\n name: string\n products?: string[]\n shop: Shops\n activeCategory?: boolean\n cartValueMin?: number\n startDate: Date\n updatedAt?: Date\n\n @Type(() => Category)\n categories: Category[]\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier } from \"../../generic\"\n\nexport class CampaignDashboard extends BaseModel <CampaignDashboard> {\n\n id: string\n status: string\n updatedAt?: string\n environment: string\n bannerAlt: string\n imgMob: string\n imgDesk: string\n urlBanner?: string\n positionBanner?: number\n startDate?: Date\n endDate?: Date\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}","import { BaseModel, GenericIdentifier } from \"../../generic\"\n\nexport class CampaignHashtag extends BaseModel <CampaignHashtag> {\n\n id: string\n status?: string\n updatedAt?: string\n environment: string\n campaignName?: string\n campaignImage?: string \n campaignMinGlampoints?: number\n campaignMaxGlampoints?: number\n campaignReferCode?: string\n campaignDescription?: string\n startDate?: Date\n endDate?: Date\n campaignSubscribed: boolean\n rules?: string[]\n \n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n\n} ","import { Product } from '../../catalog/models/product'\n\nexport class LineItem extends Product {\n parentId?: string\n quantity: number\n isGift?: boolean\n pricePaid?: number\n image?: string\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\n\nexport class ShippingMethod extends BaseModel<ShippingMethod> {\n id: string\n CNPJ: string\n DaysToDelivery: number\n MaxGrams: number\n MinGrams: number\n ServiceCompanyRangeId: number\n ShippingCompanyId: number\n ShippingCompanyName: string\n ShippingPrice: number\n State: string\n ZipEnd: number\n ZipStart: number\n invoiceNumber?: string\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\nimport { Shops } from '../../catalog/models/enums/shops.enum'\nimport { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\nimport { User, UserAddress } from '../../users'\nimport { Coupon } from './coupons/coupon'\nimport { LineItem } from './line-item'\nimport { ShippingMethod } from './shipping-method'\n\nexport class Checkout extends BaseModel<Checkout> {\n id?: string\n paymentId?: string\n status?: any\n createdAt?: Date\n updatedAt?: Date\n completedAt?: Date\n discount?: number\n subTotalPrice?: number\n totalPrice?: number\n shop: Shops\n glampoints?: number\n\n @Type(() => LineItem)\n lineItems?: LineItem[]\n @Type(() => User)\n user?: User\n @Type(() => UserAddress)\n shippingAddress?: UserAddress\n @Type(() => UserAddress)\n billingAddress?: UserAddress\n @Type(() => ShippingMethod)\n shipping?: ShippingMethod\n @Type(() => Coupon)\n coupon?: Coupon\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","export enum OrderStatus {\n AGUARDANDO_PAGAMENTO = 'Aguardando pagamento',\n EM_PREPARO = 'Preparando pedido',\n NF_EMITIDA = 'Nota Fiscal Emitida',\n AGUARDANDO_ENVIO = 'Aguardando Transaportadora',\n ENVIADO = 'Enviado',\n ENTREGUE = 'Entregue',\n CANCELADO = 'Cancelado',\n CREDIT_CARD = 'credit_card',\n}\n","import { Type } from 'class-transformer'\nimport { Checkout } from './checkout'\nimport { OrderStatus } from './enums/order-status.enum'\nimport { Payment } from './payment'\n\nexport class Order extends Checkout {\n override status: OrderStatus\n orderNumber?: string\n trackingCode?: string\n trackingUrl?: string\n\n @Type(() => Payment)\n payment: Payment\n}\n","import { Type } from 'class-transformer'\nimport { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\nimport { User, UserAddress } from '../../../users'\nimport { Coupon } from '../coupons/coupon'\nimport { SubscriptionPlan } from './plan'\n\nexport class CheckoutSubscription extends BaseModel<CheckoutSubscription> {\n id?: string\n user: User\n createdAt: Date\n updatedAt: Date\n completedAt?: Date\n userId?: string\n discount?: number\n subTotalPrice?: number\n totalPrice?: number\n\n @Type(() => UserAddress)\n shippingAddress: UserAddress\n @Type(() => UserAddress)\n billingAddress?: UserAddress\n @Type(() => SubscriptionPlan)\n subscriptionPlan: SubscriptionPlan\n @Type(() => Coupon)\n coupon?: Coupon\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { LineItem } from '../../shopping'\nimport { Product } from '../models'\n\nexport class RoundProductPricesHelper {\n public static roundProductPrices(product: Product): Product {\n product.price.price = Number(product.price.price.toFixed(2))\n product.price.fullPrice = Number(product.price.fullPrice.toFixed(2))\n if (product.price.subscriberPrice) {\n product.price.subscriberPrice = Number(product.price.subscriberPrice.toFixed(2))\n }\n if (product instanceof LineItem && product.pricePaid) {\n product.pricePaid = Number(product.pricePaid.toFixed(2))\n }\n\n return product\n }\n}\n","export enum FilterType {\n ACCESSORY_IMPORTANCE = 'accessoryImportance',\n BEARD_PROBLEMS = 'beardProblems',\n BEARD_SIZE = 'beardSize',\n BEAUTY_PRODUCT_IMPORTANCE = 'beautyProductImportance',\n BODY_PROBLEMS = 'bodyProblems',\n BODY_SHAPE = 'bodyShape',\n BODY_TATTOOS = 'bodyTattoos',\n FACE_SKIN_OILINESS = 'faceSkinOiliness',\n FACE_SKIN_PROBLEMS = 'faceSkinProblems',\n FACE_SKIN_TONE = 'faceSkinTone',\n FAMILY_INCOME = 'familyIncome',\n FRAGRANCE_IMPORTANCE = 'fragranceImportance',\n HAIR_COLOR = 'hairColor',\n HAIR_PROBLEMS = 'hairProblems',\n HAIR_STRANDS = 'hairStrands',\n HAIR_TYPE = 'hairType',\n PRODUCT_SPENT = 'productSpent',\n}\n","export enum QuestionsFilters {\n ACCESSORY_IMPORTANCE = 'Você gosta de usar acessórios masculinos?',\n BEARD_PROBLEMS = 'Quais problemas de barba você tem?',\n BEARD_SIZE = 'Quais caracteristicas se aplicam à sua BARBA/BIGODE?',\n BEAUTY_PRODUCT_IMPORTANCE = 'O que descreve melhor a sua relação com produtos de beleza e cuidados pessoais?',\n BODY_PROBLEMS = 'Qual ou quais preocupações você tem com a pele do seu corpo?',\n BODY_SHAPE = 'Qual e seu tipo de CORPO?',\n BODY_TATTOOS = 'Você tem alguma tatuagem?',\n FACE_SKIN_OILINESS = 'Quais caracteristicas se aplicam à pele do seu ROSTO?',\n FACE_SKIN_PROBLEMS = 'Quais problemas a pele do seu rosto tem?',\n FACE_SKIN_TONE = 'Qual seu tom de pele?',\n FAMILY_INCOME = 'Qual a sua renda familiar mensal (considerando a renda de todas as pessoas que moram com você)?',\n FRAGRANCE_IMPORTANCE = 'O quanto você gosta de experimentar perfumes?',\n HAIR_COLOR = 'Seu cabelo é naturalmente de qual COR?',\n HAIR_PROBLEMS = 'Qual ou quais problemas/característica de cabelo te preocupam?',\n HAIR_STRANDS = 'Como são seus fios?',\n HAIR_TYPE = 'Como é o seu cabelo?',\n PRODUCT_SPENT = 'Qual é o seu nivel de gasto mensal em produtos de beleza e cuidados pessoais?',\n}\n","export enum ShopPageName {\n LP_CLUB = 'LP_CLUBE',\n SUBSCRIBER_PANEL = 'SUBSCRIBER_PANEL',\n INVITE_FRIENDS = 'INVITE_FRIENDS',\n INVITE_AND_WIN = 'INVITE_AND_WIN',\n WIN_GLAMPOINTS = 'WIN_GLAMPOINTS',\n POSTS = 'POSTS',\n GLAMPOINTS_SHOWCASE = 'GLAMPOINTS_SHOWCASE',\n LP_EDITIONS = 'LP_EDITIONS',\n LP_GLAMBOX_EDITION = 'LP_GLAMBOX_EDITION',\n LP_GLAMBOX_PROMOTION = 'LP_GLAMBOX_PROMOTION',\n LP_GLAMBAG_PROMOTION = 'LP_GLAMBAG_PROMOTION',\n LP_GLAMPASS_PROMOTION = 'LP_GLAMPASS_PROMOTION',\n LP_SUBSCRIPTION_PROMOTION = 'LP_SUBSCRIPTION_PROMOTION',\n LP_GLAMPARTNER_PROMOTION = 'LP_GLAMPARTNER_PROMOTION',\n LP_GLAMQUEENS = 'LP_GLAMQUEENS',\n LP_INVITE = 'LP_INVITE',\n LP_LIVELO = 'LP_LIVELO',\n}\n","import * as Answers from '../../users/models/enums'\nimport { FilterType, QuestionsFilters } from '../enums'\n\ntype FilterAnswers = {\n [key: string]: string\n}\n\nexport class BeautyQuestionsHelper {\n static getAnswers(filter: FilterType): FilterAnswers {\n switch (filter) {\n case FilterType.ACCESSORY_IMPORTANCE:\n return Answers.AccessoryImportances\n case FilterType.BEARD_PROBLEMS:\n return Answers.BeardProblems\n case FilterType.BEARD_SIZE:\n return Answers.BeardSizes\n case FilterType.BEAUTY_PRODUCT_IMPORTANCE:\n return Answers.BeautyProductImportances\n case FilterType.BODY_PROBLEMS:\n return Answers.BodyProblems\n case FilterType.BODY_SHAPE:\n return Answers.BodyShapes\n case FilterType.BODY_TATTOOS:\n return Answers.BodyTattoos\n case FilterType.FACE_SKIN_OILINESS:\n return Answers.FaceSkinOilinesses\n case FilterType.FACE_SKIN_PROBLEMS:\n return Answers.FaceSkinProblems\n case FilterType.FACE_SKIN_TONE:\n return Answers.FaceSkinTones\n case FilterType.FAMILY_INCOME:\n return Answers.FamilyIncomes\n case FilterType.FRAGRANCE_IMPORTANCE:\n return Answers.FragranceImportances\n case FilterType.HAIR_COLOR:\n return Answers.HairColors\n case FilterType.HAIR_PROBLEMS:\n return Answers.HairProblems\n case FilterType.HAIR_STRANDS:\n return Answers.HairStrands\n case FilterType.HAIR_TYPE:\n return Answers.HairTypes\n case FilterType.PRODUCT_SPENT:\n return Answers.ProductSpents\n }\n }\n\n static getQuestions(filter: FilterType): string {\n const filterKey = Object.keys(FilterType)[Object.values(FilterType).indexOf(filter)] as keyof typeof FilterType\n\n return QuestionsFilters[filterKey]\n }\n}\n","import { Shops } from '../../catalog'\nimport { BaseModel, GenericIdentifier } from '../../generic'\nimport { CampaignPage } from './types/campaign-page'\n\nexport class Campaign extends BaseModel<Campaign> {\n pages: CampaignPage\n publishDate: Date\n endDate: Date\n shop: Shops\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic'\n\nexport class CampaignBanner extends BaseModel<CampaignBanner> {\n imageDesk: string\n imageMobile: string\n titleMeta: string\n imageMeta: string\n title: string\n redirectLink: string\n altText: string\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model'\nimport { Banner, Benefit, HomeDataStructure } from './types'\n\nexport class Home extends BaseModel<Home> {\n benefitsSection: Benefit[]\n blockBanners: Banner[]\n blogBanner: Banner\n brandsCarousel: Banner[]\n buyToWinBanner: Banner\n discoverCategories: string[]\n featuredCampaignBanner: Banner\n featuredCategories: string[]\n heroCarousel: Banner[]\n verticalCarousels: string[]\n id: string\n data: HomeDataStructure\n minValueForFreeShipping: number\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model'\nimport { MenuNav } from './types/menu-nav.type'\n\nexport class ShopMenu extends BaseModel<ShopMenu> {\n menuNav: MenuNav[]\n id: string\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { BaseModel, GenericIdentifier } from '../../generic/model'\nimport { ShopPageName } from '../enums'\nimport { Section } from './types'\n\nexport class ShopSettings extends BaseModel<ShopSettings> {\n id: string | ShopPageName\n name: string\n shop: string\n sections: Section<any>\n descriptionMeta?: string\n titleMeta?: string\n imageMeta?: string\n\n static get identifiersFields(): GenericIdentifier[] {\n return ['id']\n }\n}\n","import { CustomError } from 'ts-custom-error'\n\nexport class InvalidArgumentError extends CustomError {\n constructor(message: string) {\n super(message)\n }\n}\n","import { CustomError } from 'ts-custom-error'\n\nexport class RequiredArgumentError extends CustomError {\n arguments: string[]\n\n constructor(readonly args: string[]) {\n super(`Required arguments: ${args.join(', ')}`)\n\n this.arguments = args\n }\n}\n","import { CustomError } from 'ts-custom-error'\n\nexport class NotFoundError extends CustomError {\n constructor(message: string) {\n super(message)\n }\n}\n","import { CustomError } from 'ts-custom-error'\n\nexport class DuplicatedResultsError extends CustomError {\n constructor(message: string) {\n super(message)\n }\n}\n","import axios from 'axios'\nimport { ModelBaseStructure } from '../../../domain'\nimport { NotFoundError } from '../../../errors'\nimport { ElasticSearchResult } from '../types/elastic-search-result'\nimport { ElasticSearchAdapter } from './elastic-search.adapter'\n\nexport type AxiosElasticSearchConfig = {\n url: string\n credential: string\n}\n\nexport class AxiosAdapter<T extends ModelBaseStructure<T>> implements ElasticSearchAdapter<T> {\n constructor(private readonly config: AxiosElasticSearchConfig) {}\n\n async get(index: string, id: string): Promise<T> {\n try {\n const { data } = await axios({\n url: `${this.config.url}/${index}/_doc/${id}`,\n method: 'GET',\n responseType: 'json',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `ApiKey ${this.config.credential}`,\n },\n })\n\n return data._source\n } catch (error) {\n if (!(error instanceof Error)) throw error\n\n throw new NotFoundError(error.message)\n }\n }\n\n async query(index: string, query: any): Promise<ElasticSearchResult<T>> {\n const { data } = await axios({\n url: `${this.config.url}/${index}/_search`,\n method: 'POST',\n responseType: 'json',\n headers: {\n Accept: 'application/vnd.elasticsearch+json;compatible-with=7',\n 'Content-Type': 'application/vnd.elasticsearch+json;compatible-with=7',\n Authorization: `ApiKey ${this.config.credential}`,\n },\n data: query,\n })\n\n return {\n total: data.hits.total.value,\n hits: data.hits.hits,\n }\n }\n\n async save(index: string, data: Partial<T>): Promise<void> {\n await axios({\n url: `${this.config.url}/${index}/_doc`,\n method: 'POST',\n headers: { Authorization: `ApiKey ${this.config.credential}` },\n data,\n })\n }\n\n async update(index: string, id: string, data: Partial<T>): Promise<void> {\n await axios({\n url: `${this.config.url}/${index}/_update/${id}`,\n method: 'PUT',\n headers: { Authorization: `ApiKey ${this.config.credential}` },\n data,\n })\n }\n\n async delete(index: string, id: string): Promise<void> {\n await axios({\n url: `${this.config.url}/${index}/_doc/${id}`,\n method: 'DELETE',\n headers: { Authorization: `ApiKey ${this.config.credential}` },\n })\n }\n}\n","import { Product, RoundProductPricesHelper, Shops } from '../../../domain'\nimport { ProductHasuraGraphQL } from '../../hasura-graphql'\nimport { ElasticSearchAdapter } from '../adapters'\n\nexport class ProductsIndex {\n private index = `products`\n constructor(private readonly adapter: ElasticSearchAdapter<Product>) {}\n\n async getById(id: string): Promise<Product> {\n const data = await this.adapter.get(this.index, id)\n return Product.toInstance(data)\n }\n\n async search(searchTerm: string, total: number, shop: string) {\n const size: number = total || 9\n\n const fields = [\n 'EAN',\n 'brand',\n 'id',\n 'images',\n 'miniatures',\n 'name',\n 'price',\n 'sku',\n 'stock',\n 'slug',\n 'reviews',\n 'hasVariants',\n 'rate',\n ]\n\n const filter: Array<{ term: { [key: string]: string | boolean | number } }> = [{ term: { published: true } }]\n\n if (size > 9) {\n fields.push(...['pricePaid', 'isGift', 'stock', 'weight', 'tags'])\n } else {\n filter.push({ term: { tags: shop == Shops.GLAMSHOP ? 'feminino' : 'masculino' } })\n }\n\n const search = await this.adapter.query(this.index, {\n size,\n _source: fields,\n query: {\n bool: {\n must: {\n multi_match: {\n query: `${searchTerm}`,\n type: 'bool_prefix',\n fields: [\n 'name',\n 'name.folded',\n 'name.search',\n 'description',\n 'description.search',\n 'description.folded',\n 'brand',\n 'brand.search',\n 'brand.folded',\n ],\n fuzziness: 2,\n },\n },\n should: {\n match_phrase_prefix: {\n 'name.search': {\n query: `${searchTerm}`,\n slop: 10,\n },\n },\n },\n filter,\n },\n },\n })\n\n search.hits = search.hits\n .filter((e: any) => e._source.name !== '')\n .map((hit) => {\n RoundProductPricesHelper.roundProductPrices(hit._source)\n return hit\n })\n\n return search\n }\n\n async save(product: ProductHasuraGraphQL): Promise<void> {\n try {\n const { createdAt, updatedAt, kitProducts, ...data } = product\n\n this.adapter.save(this.index, data)\n } catch (error) {\n console.error(error)\n }\n }\n\n async update(product: ProductHasuraGraphQL) {\n try {\n await this.adapter.update(this.index, product.id, product)\n } catch (error) {\n console.error(error)\n }\n }\n\n async delete(id: string): Promise<void> {\n try {\n await this.adapter.delete(this.index, id)\n } catch (error) {\n console.error(error)\n }\n }\n}\n","import { collection, CollectionReference, DocumentData, Firestore, QueryDocumentSnapshot } from 'firebase/firestore'\nimport {\n BaseModelBuilder,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertiesWithNoPartial,\n NonFunctionAndIdentifierPropertyNames,\n} from '../../../../domain'\nimport { each, isObject, MergeConstructorParams, MixinCtor, unset } from '../../../../utils'\nimport { FirestoreFieldType } from '../enums'\nimport { FirestoreInterceptors, FirestoreRepository } from '../types'\n\nexport type FirestoreConstructorParams<Model extends ModelBaseStructure<Model>> = {\n firestore: Firestore\n collectionName: string\n model: BaseModelBuilder<Model>\n fields?: Partial<Record<NonFunctionAndIdentifierPropertyNames<Model>, FirestoreFieldType>>\n interceptors?: FirestoreInterceptors<Model>\n}\n\nexport const withFirestore = <TBase extends ModelBaseStructure<TBase>, T extends MixinCtor = MixinCtor>(\n MixinBase: T,\n): MixinCtor<FirestoreRepository<TBase>, MergeConstructorParams<any[], FirestoreConstructorParams<TBase>[]>> => {\n const isObjectsAndNoDate = (data: any): boolean =>\n data &&\n !Array.isArray(data) &&\n typeof data === 'object' &&\n data?.constructor.name !== 'Timestamp' &&\n !('seconds' in data)\n const bindDate = (data: any, keyName: string): Record<string, any> => {\n if (data?.constructor.name === 'Timestamp') return data.toDate()\n if (data && typeof data === 'object' && 'seconds' in data) return new Date(data.seconds * 1000)\n if (typeof data === 'number' && ['createdAt', 'updatedAt'].includes(keyName)) return new Date(data)\n\n return data\n }\n const bindAllDateFromObject = (data: Record<string, any>): NonFunctionAndIdentifierPropertiesWithNoPartial<TBase> => {\n return Object.keys(data).reduce(\n (object, key) => ({\n ...object,\n [key]: isObjectsAndNoDate(data[key])\n ? bindAllDateFromObject(data[key])\n : Array.isArray(data[key])\n ? data[key].map((element: any) => (isObjectsAndNoDate(element) ? bindAllDateFromObject(element) : element))\n : bindDate(data[key], key),\n }),\n {} as NonFunctionAndIdentifierPropertiesWithNoPartial<TBase>,\n )\n }\n const omitByRecursivelyInPlace = (value: any, iteratee: (value: any, key: string) => boolean): any => {\n each(value, (v, k) => {\n if (iteratee(v, k)) {\n unset(value, k)\n } else if (isObject(v)) {\n omitByRecursivelyInPlace(v, iteratee)\n }\n })\n\n return value\n }\n\n return class extends MixinBase implements FirestoreRepository<TBase> {\n firestore: Firestore\n fields: Partial<Record<NonFunctionAndIdentifierPropertyNames<TBase>, FirestoreFieldType>> = {}\n interceptors: FirestoreInterceptors<TBase> = {}\n collectionName: string = ''\n model: BaseModelBuilder<TBase>\n\n constructor(...params: any[]) {\n super(...params)\n\n const options: FirestoreConstructorParams<TBase> = params[0]\n\n this.firestore = options.firestore\n this.collectionName = options.collectionName\n this.model = options.model\n this.fields = options.fields\n this.interceptors = options.interceptors\n }\n\n collection(path?: string): CollectionReference<TBase> {\n return collection(this.firestore, path || this.collectionName).withConverter(this.buildModelInstance())\n }\n\n buildModelInstance(): {\n toFirestore: (data: TBase) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<TBase>) => TBase\n } {\n return {\n toFirestore: (data: TBase): DocumentData => {\n const plain = data?.toPlain ? data.toPlain() : data\n\n return omitByRecursivelyInPlace(plain, (value) => value === undefined)\n },\n fromFirestore: (snap: QueryDocumentSnapshot<TBase>): TBase => {\n const data = snap.data()\n let bindedData: NonFunctionAndIdentifierPropertiesWithNoPartial<TBase> = null\n\n try {\n const ids = { id: snap.id }\n\n bindedData = bindAllDateFromObject(data)\n\n return this.model.toInstance({ ...bindedData, ...ids })\n } catch (error) {\n console.info('id', snap.id)\n console.info('data', JSON.stringify(bindedData))\n console.error(error)\n\n throw error\n }\n },\n }\n }\n }\n}\n","import { QueryDocumentSnapshot, QuerySnapshot } from 'firebase/firestore'\n\nimport { ModelBaseStructure } from '../../../../domain'\nimport { isNil, MixinCtor } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository, FirestoreSubRepository } from '../types'\n\nexport const withHelpers = <TMixinBase extends MixinCtor = MixinCtor>(MixinBase: MixinCtor & TMixinBase) => {\n return class extends MixinBase implements FirestoreHelpers {\n toArray<T extends ModelBaseStructure<T>>(snapShot: QuerySnapshot<T> | QueryDocumentSnapshot<T>[]): T[] {\n if (Array.isArray(snapShot)) {\n return snapShot.map((doc: QueryDocumentSnapshot<T>) => doc.data())\n } else {\n return snapShot.docs.map((doc: QueryDocumentSnapshot<T>) => doc.data())\n }\n }\n\n isSubCollection<T extends ModelBaseStructure<T>, E extends ModelBaseStructure<E>>(\n repository: FirestoreRepository<T> | FirestoreSubRepository<T, E>,\n ): repository is FirestoreSubRepository<T, E> {\n return !isNil(Object.keys(this).find((key) => key === 'parentRepository'))\n }\n }\n}\n","import { doc, getDoc } from 'firebase/firestore'\n\nimport { GetRepository, IdentifiersModel, ModelBaseStructure } from '../../../../domain'\nimport { NotFoundError } from '../../../../errors'\nimport { isNil, MixinCtor } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\n\nexport const withGetFirestore = <\n TBase extends ModelBaseStructure<TBase>,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<FirestoreRepository<TBase> & InstanceType<TMixinBase> & GetRepository<TBase> & FirestoreHelpers, []> => {\n return class GetFirestore extends MixinBase implements GetRepository<TBase> {\n async get(identifiers: IdentifiersModel<TBase>): Promise<TBase> {\n const instance = this.model.toInstance(\n this.model.identifiersFields.reduce(\n (acc, field) => ({ ...acc, [field]: identifiers[field as keyof IdentifiersModel<TBase>] }),\n {},\n ),\n )\n const intercepted = await this.interceptors?.request?.({ instance })\n const builded = intercepted?.instance || instance\n const docRef = await getDoc(\n doc(\n await this.collection(this.buildCollectionPathForGet(identifiers)),\n Object.values(builded.identifier).shift().toString(),\n ),\n )\n const data = docRef.data()\n\n if (isNil(data)) throw new NotFoundError(`Document ${JSON.stringify(identifiers)} not found`)\n\n return this.interceptors?.response?.(data, intercepted) || data\n }\n\n buildCollectionPathForGet(identifiers: IdentifiersModel<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\n : this.collectionName\n }\n } as any\n}\n","export enum FirestoreFieldType {\n String = 'string',\n Number = 'number',\n Boolean = 'boolean',\n Timestamp = 'timestamp',\n Array = 'array',\n Map = 'map',\n}\n","import {\n CollectionReference,\n doc,\n getDoc,\n getDocs,\n limit,\n orderBy,\n query,\n QueryConstraint,\n startAfter,\n startAt,\n where,\n WhereFilterOp,\n} from 'firebase/firestore'\n\nimport {\n FindRepository,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertyNames,\n NonFunctionPropertyNames,\n RepositoryFindField,\n RepositoryFindFielters,\n RepositoryFindFieltersOptions,\n RepositoryFindResult,\n RepositoryLimitOptions,\n RepositoryOrderBy,\n Where,\n} from '../../../../domain'\nimport { is, isDate, isNil, isNumber, isObject, isString, MixinCtor, set } from '../../../../utils'\nimport { FirestoreFieldType } from '../enums'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\n\nexport const withFindFirestore = <\n TBase extends ModelBaseStructure<TBase>,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<FirestoreRepository<TBase> & InstanceType<TMixinBase> & FindRepository<TBase> & FirestoreHelpers, []> => {\n const checkIfIsFilterOption = (filter: any): filter is RepositoryFindFieltersOptions<TBase, any> =>\n !isNil(filter?.operator)\n const getValueFromFilter = (filter: RepositoryFindField<TBase, any>): any => {\n return checkIfIsFilterOption(filter) ? filter.value : filter\n }\n const getFinalValueFrom = (value: any) =>\n isNumber(value) || isString(value) || isDate(value) || Array.isArray(value)\n ? value\n : Object.values(getFinalValueFrom)\n\n return class FindFirestore extends MixinBase implements FindRepository<TBase> {\n async find(\n find: {\n filters?: RepositoryFindFielters<TBase>\n limits?: RepositoryLimitOptions<TBase>\n orderBy?: RepositoryOrderBy<TBase>\n options?: { enableCount?: boolean }\n } = {},\n ): Promise<RepositoryFindResult<TBase>> {\n const collection: CollectionReference<TBase> = this.collection(this.buildCollectionPathForFind(find.filters))\n const enableCount = find?.options?.enableCount ?? true\n const intercepted = await this.interceptors?.request?.({ find })\n const { filters, limits, orderBy } = intercepted.find || find\n const queries = this.makeFirestoreWhere(filters || {})\n const ordination = this.makeFirestoreOrderBy(filters, orderBy)\n const offsets = await this.defineLimits(filters, limits)\n const queryArgumments: QueryConstraint[] = [...queries, ...ordination, ...offsets]\n const docs = await getDocs(query(collection, ...queryArgumments))\n const data = docs.docs.map((doc) => doc.data())\n\n return {\n data: (await this.interceptors?.response?.(data, intercepted)) || data,\n count: enableCount ? this.calculateCount(data, limits) : Infinity,\n }\n }\n\n buildCollectionPathForFind(filters: RepositoryFindFielters<TBase>): string {\n if (!this.isSubCollection(this)) return this.collectionName\n\n const parentIdField = this.parentIdField as NonFunctionAndIdentifierPropertyNames<TBase>\n const parentId = getValueFromFilter(filters?.[parentIdField])\n\n return `${this.parentRepository.collectionName}/${parentId}/${this.collectionName}`\n }\n\n makeFirestoreWhere = (filter: RepositoryFindFielters<TBase>): QueryConstraint[] =>\n Object.keys(filter).reduce(\n (queries: QueryConstraint[], fieldName: string) => [\n ...queries,\n ...this.buildWhereSentence(fieldName, is(filter[fieldName as NonFunctionPropertyNames<TBase>])),\n ],\n [],\n )\n\n buildWhereSentence = (\n fieldName: NonFunctionPropertyNames<TBase> | string,\n options: RepositoryFindFieltersOptions<TBase, NonFunctionPropertyNames<TBase>>,\n ): QueryConstraint[] => {\n if (this.isSubCollection(this) && fieldName === this.parentIdField) return []\n\n const value = options?.value || options\n const object = {}\n\n set(object, fieldName, value)\n\n const plainInstance = new this.model(object).toPlain()\n const firestoreFieldName =\n fieldName.toString().indexOf('.') > -1\n ? fieldName.toString()\n : Object.keys(plainInstance).find((key) => plainInstance[key])\n\n if (options?.operator === Where.LIKE) {\n if (\n Array.isArray(options?.value) &&\n (this.fields[firestoreFieldName as NonFunctionAndIdentifierPropertyNames<TBase>] ===\n FirestoreFieldType.Array ||\n !this.fields[firestoreFieldName as NonFunctionAndIdentifierPropertyNames<TBase>])\n )\n return [where(firestoreFieldName, 'array-contains-any', options.value)]\n\n return [where(firestoreFieldName, '>=', options.value), where(firestoreFieldName, '<=', `${options.value}~`)]\n }\n if (\n options?.operator === Where.IN &&\n Array.isArray(options?.value) &&\n (this.fields[firestoreFieldName as NonFunctionAndIdentifierPropertyNames<TBase>] === FirestoreFieldType.Array ||\n !this.fields[firestoreFieldName as NonFunctionAndIdentifierPropertyNames<TBase>])\n )\n return [where(firestoreFieldName, 'array-contains', options.value)]\n if (isObject(options) && isNil(options?.operator) && isNil(options?.value)) {\n return Object.keys(options).reduce(\n (queries, key) => [\n ...queries,\n ...this.buildWhereSentence(`${fieldName.toString()}.${key}`, is<Record<string, any>>(options)[key]),\n ],\n [],\n )\n }\n\n return [where(firestoreFieldName, (options?.operator as WhereFilterOp) || '==', options?.value || options)]\n }\n\n makeFirestoreOrderBy = (\n filters: RepositoryFindFielters<TBase>,\n fieldsToOrderBy?: RepositoryOrderBy<TBase>,\n ): QueryConstraint[] => {\n const orderByKeys = Object.keys(fieldsToOrderBy || {})\n\n if (!orderByKeys.length) return []\n\n const filtersKeysWithUnordered = Object.keys(filters || {}).filter(\n (filterKey) => !orderByKeys.includes(filterKey),\n )\n\n if (filtersKeysWithUnordered.length)\n filtersKeysWithUnordered.forEach(\n (filterKey) =>\n (fieldsToOrderBy = {\n ...(![Where.EQUALS].includes(\n is<RepositoryFindFieltersOptions<TBase, NonFunctionPropertyNames<TBase>>>(\n filters[filterKey as NonFunctionPropertyNames<TBase>],\n ).operator,\n )\n ? { [filterKey]: 'asc' }\n : {}),\n ...fieldsToOrderBy,\n }),\n )\n\n return Object.keys(fieldsToOrderBy).map((fieldName) =>\n orderBy(fieldName, fieldsToOrderBy[fieldName as NonFunctionPropertyNames<TBase>]),\n )\n }\n\n async defineLimits(\n filters: RepositoryFindFielters<TBase>,\n limits: RepositoryLimitOptions<TBase>,\n ): Promise<QueryConstraint[]> {\n const queries = []\n\n if (limits?.offset) {\n if (this.model.isModel(limits.offset))\n queries.push(\n startAfter(\n await getDoc(\n doc(\n this.collection(this.buildCollectionPathForFind(filters)),\n Object.values(limits.offset.identifier).shift()?.toString(),\n ),\n ),\n ),\n )\n else if (isNumber(limits.offset) || isString(limits.offset)) queries.push(startAt(limits.offset))\n }\n if (limits?.limit) queries.push(limit(limits.limit))\n\n return queries\n }\n\n calculateCount(data: TBase[], limits: RepositoryLimitOptions<TBase>): number {\n if (data.length <= 0) return 0\n if (data.length < limits?.limit) return data.length\n\n return Infinity\n }\n } as any\n}\n","import { addDoc, doc, DocumentReference, getDoc, setDoc } from 'firebase/firestore'\n\nimport { CreateRepository, CreateRepositoryParams, ModelBaseStructure } from '../../../../domain'\nimport { isEmpty, MixinCtor } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\n\nexport const withCreateFirestore = <\n TBase extends ModelBaseStructure<TBase>,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<\n FirestoreRepository<TBase> & InstanceType<TMixinBase> & CreateRepository<TBase> & FirestoreHelpers,\n []\n> => {\n return class CreateFirestore extends MixinBase implements CreateRepository<TBase> {\n async create(data: CreateRepositoryParams<TBase>): Promise<TBase> {\n const instance = this.model.toInstance(data as any)\n const intercepted = await this.interceptors?.request?.({ instance })\n const builded = intercepted?.instance || instance\n const docRef = await this.save(builded)\n const doc = await getDoc(docRef)\n const docBuilded = (await this.interceptors?.response?.(doc.data(), intercepted)) || doc.data()\n\n return docBuilded\n }\n\n async save(data: TBase): Promise<DocumentReference<TBase>> {\n const id = Object.values(data.identifier)?.shift()?.toString()\n const collectionPath = this.buildCollectionPathForAdd(data)\n const collection = this.collection(collectionPath)\n\n if (isEmpty(id)) return addDoc(collection, data)\n\n const docRef = doc(collection, id)\n await setDoc(docRef, data)\n\n return docRef\n }\n\n buildCollectionPathForAdd(identifiers: Partial<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\n : this.collectionName\n }\n } as any\n}\n","import { arrayRemove, arrayUnion, deleteField, doc, FieldValue, getDoc, setDoc } from 'firebase/firestore'\n\nimport {\n IdentifierModel,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertyNames,\n RepositoryUpdateParams,\n UpdateOptionActions,\n UpdateOptions,\n UpdateRepository,\n} from '../../../../domain'\nimport { is, isNil, MixinCtor, PropType } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\n\nexport type UpdateFirestoreRepositoryType<MBase extends ModelBaseStructure<MBase>> = UpdateRepository<MBase> & {\n paramsToPlain(params: RepositoryUpdateParams<MBase>): Partial<MBase>\n}\n\nexport const withUpdateFirestore = <\n TBase extends ModelBaseStructure<TBase>,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<\n FirestoreRepository<TBase> & UpdateRepository<TBase> & InstanceType<TMixinBase> & FirestoreHelpers,\n []\n> => {\n const getValueFromParams = (\n params: RepositoryUpdateParams<TBase>,\n field: NonFunctionAndIdentifierPropertyNames<TBase> | IdentifierModel<TBase>,\n ): PropType<TBase, NonFunctionAndIdentifierPropertyNames<TBase>> =>\n (isNil(is<UpdateOptions<PropType<TBase, NonFunctionAndIdentifierPropertyNames<TBase>>>>(params[field])?.value)\n ? is<PropType<TBase, NonFunctionAndIdentifierPropertyNames<TBase>>>(params[field])\n : is<UpdateOptions<PropType<TBase, NonFunctionAndIdentifierPropertyNames<TBase>>>>(params[field]).value) || null\n const getValueByAction = (options: UpdateOptions<TBase>): FieldValue | unknown => {\n if (isNil(options?.action)) return options\n if (options?.action === UpdateOptionActions.REMOVE_FIELD) return deleteField()\n if (options?.action === UpdateOptionActions.NULL) return null\n if (Array.isArray(options?.value)) {\n if (options?.action === UpdateOptionActions.MERGE) return arrayUnion(...options.value)\n if (options?.action === UpdateOptionActions.REMOVE) return arrayRemove(...options.value)\n }\n\n return options?.value\n }\n\n return class UpdateFirestore extends MixinBase implements UpdateRepository<TBase> {\n async update(data: RepositoryUpdateParams<TBase>): Promise<TBase> {\n const model = new this.model()\n const keyField = model.identifiersFields.shift()\n const docRef = doc(\n this.collection(this.buildCollectionPathForUpdate(data)),\n getValueFromParams(data, keyField as IdentifierModel<TBase>).toString(),\n )\n const plainFromData = this.model.toInstance(this.paramsToPlain(data))\n const intercepted = await this.interceptors?.request?.({ instance: plainFromData })\n const builded = intercepted?.instance || plainFromData\n\n await setDoc(docRef, builded.toPlain(), { merge: true })\n\n const docData = await getDoc(docRef).then((doc) => doc.data())\n\n return this.interceptors?.response?.(docData, intercepted) || docData\n }\n\n buildCollectionPathForUpdate(identifiers: RepositoryUpdateParams<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${getValueFromParams(identifiers, this.parentIdField)}/${\n this.collectionName\n }`\n : this.collectionName\n }\n\n paramsToPlain(params: RepositoryUpdateParams<TBase>): Partial<TBase> {\n const model = this.model\n\n if (model.isModel(params)) return params.toPlain()\n\n return Object.keys(params).reduce(\n (data, currentKey) => ({\n ...data,\n ...((value): Record<string, any> => (value === undefined ? {} : { [currentKey]: value }))(\n getValueByAction(params[currentKey as never]),\n ),\n }),\n {},\n )\n }\n } as any\n}\n","import { deleteDoc, doc } from 'firebase/firestore'\n\nimport { DeleteRepository, DeleteRepositoryParams, IdentifiersModel, ModelBaseStructure } from '../../../../domain'\nimport { MixinCtor } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\n\nexport const withDeleteFirestore = <\n TBase extends ModelBaseStructure<TBase>,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<\n FirestoreRepository<TBase> & InstanceType<TMixinBase> & DeleteRepository<TBase> & FirestoreHelpers,\n []\n> => {\n return class DeleteFirestore extends MixinBase implements DeleteRepository<TBase> {\n async delete(identifiers: DeleteRepositoryParams<TBase>): Promise<void> {\n const instance = this.model.toInstance(\n this.model.identifiersFields.reduce(\n (acc, field) => ({ ...acc, [field]: identifiers[field as keyof IdentifiersModel<TBase>] }),\n {},\n ),\n )\n const intercepted = await this.interceptors?.request?.({ instance })\n const builded = intercepted?.instance || instance\n\n await deleteDoc(\n doc(\n this.collection(this.buildCollectionPathForRemove(identifiers)),\n Object.values(builded.identifier).shift().toString(),\n ),\n )\n\n await this.interceptors?.response?.(instance, intercepted)\n }\n\n buildCollectionPathForRemove(identifiers: IdentifiersModel<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\n : this.collectionName\n }\n } as any\n}\n","import { CollectionReference } from 'firebase/firestore'\n\nimport { IdentifiersModel, ModelBaseStructure } from '../../../../domain'\nimport { MergeConstructorParams, MixinCtor } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository, FirestoreSubRepository } from '../types'\nimport { FirestoreConstructorParams } from './with-firestore.mixin'\n\nexport type FirestoreSubCollectionConstructorParams<TBase extends ModelBaseStructure> = {\n parentIdField: keyof IdentifiersModel<TBase>\n}\n\nexport const withSubCollection = <\n TBase extends ModelBaseStructure<TBase>,\n TBaseParent extends ModelBaseStructure<TBaseParent>,\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase>> & TMixinBase,\n ParentModel: new () => TBaseParent,\n): MixinCtor<\n FirestoreRepository<TBase> &\n InstanceType<TMixinBase> &\n FirestoreSubRepository<TBase, InstanceType<typeof ParentModel>> &\n FirestoreHelpers,\n MergeConstructorParams<\n [FirestoreConstructorParams<TBase> & FirestoreSubCollectionConstructorParams<TBase>, ...any[]],\n ConstructorParameters<TMixinBase>\n >\n> => {\n return class SubCollectionMix\n extends MixinBase\n implements FirestoreSubRepository<TBase, InstanceType<typeof ParentModel>>\n {\n readonly parentRepository: FirestoreRepository<InstanceType<typeof ParentModel>>\n parentIdField: keyof IdentifiersModel<TBase>\n\n constructor(...params: any[]) {\n const options: FirestoreSubCollectionConstructorParams<TBase> = params[0]\n\n super(...params)\n\n this.parentIdField = options.parentIdField\n }\n\n override collection(path?: string): CollectionReference<TBase> {\n return super.collection(path)\n }\n } as any\n}\n","import { CrudRepository, ModelBaseStructure } from '../../../../domain'\nimport { MergeConstructorParams, MixinCtor } from '../../../../utils'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { withCreateFirestore } from './with-create-firestore.mixin'\nimport { withDeleteFirestore } from './with-delete-firestore.mixin'\nimport { withFindFirestore } from './with-find-firestore.mixin'\nimport { FirestoreConstructorParams } from './with-firestore.mixin'\nimport { withGetFirestore } from './with-get-firestore.mixin'\nimport { withUpdateFirestore } from './with-update-firestore.mixin'\n\nexport const withCrudFirestore = <\n TBase extends ModelBaseStructure<TBase>,\n Repository = CrudRepository<TBase>,\n TMixinBase extends MixinCtor = MixinCtor,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n): MixinCtor<\n FirestoreRepository<TBase> & Repository & FirestoreHelpers,\n MergeConstructorParams<[FirestoreConstructorParams<TBase>, ...any[]], ConstructorParameters<TMixinBase>>\n> => {\n return class CrudFirestore\n extends withUpdateFirestore(\n withGetFirestore(\n withFindFirestore(\n withDeleteFirestore(\n withCreateFirestore(MixinBase as MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers>),\n ),\n ),\n ),\n )\n implements CrudRepository<TBase> {} as any\n}\n","import { Lead, LeadRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\n\nimport { FirestoreConstructorParams, withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class LeadFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Lead>(Base)))\n implements LeadRepository\n{\n constructor({ firestore, interceptors }: Pick<FirestoreConstructorParams<Lead>, 'firestore' | 'interceptors'>) {\n super({\n firestore,\n collectionName: 'leads',\n model: Lead,\n interceptors,\n })\n }\n}\n","import { Edition, EditionRepository, Subscription } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\nimport {\n FirestoreConstructorParams,\n withCrudFirestore,\n withFirestore,\n withHelpers,\n withSubCollection,\n} from '../../mixins'\nimport { SubscriptionFirestoreRepository } from './subscription-firestore.repository'\n\nexport class SubscriptionEditionFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<Edition>(Base))), Subscription)\n implements EditionRepository\n{\n constructor(\n { firestore, interceptors }: Pick<FirestoreConstructorParams<Edition>, 'firestore' | 'interceptors'>,\n override readonly parentRepository: SubscriptionFirestoreRepository,\n ) {\n super({\n firestore,\n collectionName: 'editions',\n parentIdField: 'subscriptionId',\n model: Edition,\n interceptors,\n })\n }\n}\n","import { Subscription, SubscriptionRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\n\nimport { FirestoreConstructorParams, withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class SubscriptionFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Subscription>(Base)))\n implements SubscriptionRepository\n{\n constructor({\n firestore,\n interceptors,\n }: Pick<FirestoreConstructorParams<Subscription>, 'firestore' | 'interceptors'>) {\n super({\n firestore,\n collectionName: 'subscription',\n model: Subscription,\n interceptors,\n })\n }\n}\n","import { Subscription, SubscriptionPayment, SubscriptionPaymentRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\nimport {\n FirestoreConstructorParams,\n withCrudFirestore,\n withFirestore,\n withHelpers,\n withSubCollection,\n} from '../../mixins'\nimport { SubscriptionFirestoreRepository } from './subscription-firestore.repository'\n\nexport class SubscriptionPaymentFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<SubscriptionPayment>(Base))), Subscription)\n implements SubscriptionPaymentRepository\n{\n constructor(\n { firestore, interceptors }: Pick<FirestoreConstructorParams<SubscriptionPayment>, 'firestore' | 'interceptors'>,\n override readonly parentRepository: SubscriptionFirestoreRepository,\n ) {\n super({\n firestore,\n collectionName: 'payments',\n parentIdField: 'subscriptionId',\n model: SubscriptionPayment,\n interceptors,\n })\n }\n}\n","import { User, UserAddress, UserAddressRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\nimport {\n FirestoreConstructorParams,\n withCrudFirestore,\n withFirestore,\n withHelpers,\n withSubCollection,\n} from '../../mixins'\nimport { UserFirestoreRepository } from './user-firestore.repository'\n\nexport class UserAddressFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<UserAddress>(Base))), User)\n implements UserAddressRepository\n{\n constructor(\n { firestore, interceptors }: Pick<FirestoreConstructorParams<UserAddress>, 'firestore' | 'interceptors'>,\n override readonly parentRepository: UserFirestoreRepository,\n ) {\n super({\n firestore,\n collectionName: 'address',\n parentIdField: 'userId',\n model: UserAddress,\n interceptors,\n })\n }\n}\n","import { BeautyProfile, BeautyProfileRepository, User } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\nimport {\n FirestoreConstructorParams,\n withCrudFirestore,\n withFirestore,\n withHelpers,\n withSubCollection,\n} from '../../mixins'\nimport { UserFirestoreRepository } from './user-firestore.repository'\n\nexport class UserBeautyProfileFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<BeautyProfile>(Base))), User)\n implements BeautyProfileRepository\n{\n constructor(\n { firestore, interceptors }: Pick<FirestoreConstructorParams<BeautyProfile>, 'firestore' | 'interceptors'>,\n override readonly parentRepository: UserFirestoreRepository,\n ) {\n super({\n firestore,\n collectionName: 'CX',\n parentIdField: 'userId',\n model: BeautyProfile,\n interceptors,\n })\n }\n}\n","import { doc, DocumentData, getDoc, getDocs, query, QueryDocumentSnapshot, where } from 'firebase/firestore'\n\nimport { BeautyProfile, User, UserRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\nimport { FirestoreConstructorParams, withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class UserFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<User>(Base)))\n implements UserRepository\n{\n constructor({ firestore, interceptors }: Pick<FirestoreConstructorParams<User>, 'firestore' | 'interceptors'>) {\n super({\n firestore,\n collectionName: 'users',\n model: User,\n interceptors,\n })\n }\n\n override async get(identifiers: Partial<User>): Promise<User> {\n const user = await super.get({ id: identifiers.id })\n\n user.beautyProfile = await this.getBeautyProfile(user.id)\n user.isSubscriber = await this.checkIfIsSubscriber(user.id)\n\n return user\n }\n\n async checkIfExistsByField(field: string, value: string): Promise<boolean> {\n const result = await this.find({ filters: { [field]: value } })\n\n return result.count > 0\n }\n\n override buildModelInstance(): {\n toFirestore: (data: User) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<User>) => User\n } {\n const { fromFirestore, toFirestore } = super.buildModelInstance()\n\n return {\n toFirestore: (data: User): DocumentData => {\n const plain = toFirestore(data) as DocumentData & { isSubscriber: boolean }\n\n delete plain.isSubscriber\n\n return plain\n },\n fromFirestore,\n }\n }\n\n private async getBeautyProfile(userId: string): Promise<BeautyProfile> {\n const beautyProfile = await getDoc(\n doc(\n this.collection(`${this.collectionName}/${userId}/CX`).withConverter(this.buildBeautyProfileModelInstance()),\n 'beautyProfile',\n ),\n )\n\n return beautyProfile.data()\n }\n\n private async checkIfIsSubscriber(userId: string): Promise<boolean> {\n const docs = await getDocs(\n query(this.collection('subscription'), where('user.id', '==', userId), where('status', '==', 'active')),\n )\n\n return !!docs && !!docs.size\n }\n\n private buildBeautyProfileModelInstance(): {\n toFirestore: (data: BeautyProfile) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<BeautyProfile>) => BeautyProfile\n } {\n return {\n toFirestore: (data: BeautyProfile): DocumentData => data.toPlain(),\n fromFirestore: (snap: QueryDocumentSnapshot<BeautyProfile>): BeautyProfile =>\n BeautyProfile.toInstance(snap.data()),\n }\n }\n}\n","import { User, UserPaymentMethod, UserPaymentMethodRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\nimport {\n FirestoreConstructorParams,\n withCrudFirestore,\n withFirestore,\n withHelpers,\n withSubCollection,\n} from '../../mixins'\nimport { UserFirestoreRepository } from './user-firestore.repository'\n\nexport class UserPaymentMethodFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<UserPaymentMethod>(Base))), User)\n implements UserPaymentMethodRepository\n{\n constructor(\n { firestore, interceptors }: Pick<FirestoreConstructorParams<UserPaymentMethod>, 'firestore' | 'interceptors'>,\n override readonly parentRepository: UserFirestoreRepository,\n ) {\n super({\n firestore,\n collectionName: 'payment_method',\n parentIdField: 'userId',\n model: UserPaymentMethod,\n interceptors,\n })\n }\n}\n","import { getDocs, limit, query, QueryConstraint, where } from 'firebase/firestore'\n\nimport { Category, CategoryRepository, Product, Shops } from '../../../../../domain'\nimport { Base, chunk, is } from '../../../../../utils'\n\nimport { DuplicatedResultsError, NotFoundError, RequiredArgumentError } from '../../../../../errors'\nimport { FirestoreConstructorParams, withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CategoryFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Category>(Base)))\n implements CategoryRepository\n{\n constructor({ firestore, interceptors }: Pick<FirestoreConstructorParams<Category>, 'firestore' | 'interceptors'>) {\n super({\n firestore,\n collectionName: 'categories',\n model: Category,\n interceptors,\n })\n }\n\n async getCategoryBySlug(slug: string, shop: Shops): Promise<Category> {\n const categoryDocs = await getDocs(\n query(\n this.collection(this.collectionName),\n where('slug', '==', slug),\n where('shop', '==', shop),\n where('published', '==', true),\n ),\n )\n\n if (categoryDocs.size > 1) throw new DuplicatedResultsError('Query returned duplicated values')\n if (categoryDocs.empty) throw new NotFoundError(`Document with slug ${slug} not found`)\n\n return categoryDocs.docs[0].data()\n }\n\n async getCategoriesForHome(\n categoryIds: string[],\n limit = 4,\n gender?: string,\n ): Promise<{ category: Category; products: Product[] }[]> {\n const categorySnap = await getDocs(\n query(\n this.collection(this.collectionName),\n where('id', 'in', categoryIds.filter(Boolean)),\n where('published', '==', true),\n ),\n )\n\n if (categorySnap.empty) throw new NotFoundError('Categories not found')\n\n const categories = categorySnap.docs.map((doc) => doc.data())\n const homeSections = await Promise.all(\n categories.map(async (category) => ({\n category,\n products: await this.mountCategory(category, { limit, hasStock: true, gender }),\n })),\n )\n\n return homeSections\n }\n\n async mountCategory(\n category: Category,\n options?: { limit?: number; hasStock?: boolean; gender?: string },\n ): Promise<Product[]> {\n if (!category.products) throw new RequiredArgumentError(['Category products is empty'])\n\n const chunks = chunk(category.products, 10)\n const products = []\n const wheres: QueryConstraint[] = []\n\n for (const productIds of chunks) {\n if (options?.limit && products.length >= options?.limit) break\n\n wheres.push(where('published', '==', true), where('id', 'in', productIds))\n\n if (options?.hasStock) wheres.push(where('stock.quantity', '>', 0))\n if (options?.gender) wheres.push(where('tags', 'array-contains', options?.gender))\n if (options?.limit) wheres.push(limit(options?.limit))\n\n const productSnap = await getDocs(query(this.collection('productsErpVitrine'), ...wheres))\n\n if (productSnap.empty) continue\n\n products.push(...productSnap.docs)\n }\n\n return is<Product[]>(products)\n }\n\n getCategoryByShop(shop: string): Promise<Category[]> {\n return\n }\n\n getChildren(parentId: number): Promise<Category[]> {\n return\n }\n\n isChild(id: number, parentId: number): Promise<boolean> {\n return\n }\n}\n","import {\n FindRepositoryParams,\n Product,\n ProductRepository,\n RepositoryFindResult,\n ReviewStatusParams,\n ReviewWithProductData,\n Where,\n} from '../../../../../domain'\nimport { Base } from '../../../../../utils'\n\nimport { FirestoreConstructorParams, withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class ProductFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Product>(Base)))\n implements ProductRepository\n{\n private reviews: Partial<Record<ReviewStatusParams, ReviewWithProductData[]>> = {}\n\n constructor({ firestore, interceptors }: Pick<FirestoreConstructorParams<Product>, 'firestore' | 'interceptors'>) {\n super({\n firestore,\n collectionName: 'productsErpVitrine',\n model: Product,\n interceptors,\n })\n }\n\n async getBySlug(slug: string): Promise<Product> {\n const result = await this.find({\n filters: {\n slug: { operator: Where.EQUALS, value: slug },\n },\n })\n\n return result?.data?.shift()\n }\n\n async fetchReviews(status: ReviewStatusParams): Promise<ReviewWithProductData[]> {\n const { data: products } = await this.find()\n\n products.forEach((product) => {\n if ([undefined, 0].includes(product.reviews?.length)) return\n\n const productInfo = {\n productId: product.id,\n productName: product.name,\n productSku: product.sku,\n }\n\n this.reviews.pending = []\n this.reviews.approved = []\n this.reviews.rejected = []\n\n product.reviews.forEach((review) => {\n if ([null, undefined].includes(review.status)) return this.reviews.pending.push({ ...review, ...productInfo })\n if (review.status === false) return this.reviews.rejected.push({ ...review, ...productInfo })\n if (!!review.status) return this.reviews.approved.push({ ...review, ...productInfo })\n\n return review\n })\n })\n\n return this.reviews[status]\n }\n\n cleanShoppingCountFromIds(): Promise<void> {\n return\n }\n\n findCatalog(params: FindRepositoryParams<Product>): Promise<RepositoryFindResult<Product>> {\n return this.find(params)\n }\n}\n","import { Product, Variant, VariantRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\nimport {\n FirestoreConstructorParams,\n withCrudFirestore,\n withFirestore,\n withHelpers,\n withSubCollection,\n} from '../../mixins'\n\nimport { ProductFirestoreRepository } from './product-firestore.repository'\n\nexport class ProductVariantFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<Variant>(Base))), Product)\n implements VariantRepository\n{\n constructor(\n { firestore, interceptors }: Pick<FirestoreConstructorParams<Variant>, 'firestore' | 'interceptors'>,\n override readonly parentRepository: ProductFirestoreRepository,\n ) {\n super({\n firestore,\n collectionName: 'variants',\n parentIdField: 'productId',\n model: Variant,\n interceptors,\n })\n }\n}\n","import { Product, SubscriptionProductRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\n\nimport { FirestoreConstructorParams, withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class SubscriptionProductFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Product>(Base)))\n implements SubscriptionProductRepository\n{\n constructor({ firestore, interceptors }: Pick<FirestoreConstructorParams<Product>, 'firestore' | 'interceptors'>) {\n super({\n firestore,\n collectionName: 'subscriptionProducts',\n model: Product,\n interceptors,\n })\n }\n}\n","import { Buy2Win, Buy2WinRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\n\nimport { FirestoreConstructorParams, withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class Buy2WinFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Buy2Win>(Base)))\n implements Buy2WinRepository\n{\n constructor({ firestore, interceptors }: Pick<FirestoreConstructorParams<Buy2Win>, 'firestore' | 'interceptors'>) {\n super({\n firestore,\n collectionName: 'buy2win',\n model: Buy2Win,\n interceptors,\n })\n }\n}\n","import { Base } from '../../../../../utils'\n\nimport { CampaignDashboard } from '../../../../../domain/shopping/models/campaign-dashboard'\nimport { CampaignDashboardRepository } from '../../../../../domain/shopping/repositories/campaign-dashboard.repository'\nimport { FirestoreConstructorParams, withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CampaignDashboardFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<CampaignDashboard>(Base)))\n implements CampaignDashboardRepository\n{\n constructor({\n firestore,\n interceptors,\n }: Pick<FirestoreConstructorParams<CampaignDashboard>, 'firestore' | 'interceptors'>) {\n super({\n firestore,\n collectionName: 'dashboardCampaignsAuto',\n model: CampaignDashboard,\n interceptors,\n })\n }\n}\n","import { Base } from '../../../../../utils'\n\nimport { CampaignHashtag } from '../../../../../domain/shopping/models/campaign-hashtag'\nimport { CampaignHashtagRepository } from '../../../../../domain/shopping/repositories/campaign-hashtag.repository'\nimport { FirestoreConstructorParams, withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CampaignHashtagFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<CampaignHashtag>(Base)))\n implements CampaignHashtagRepository\n{\n constructor({\n firestore,\n interceptors,\n }: Pick<FirestoreConstructorParams<CampaignHashtag>, 'firestore' | 'interceptors'>) {\n super({\n firestore,\n collectionName: 'hashtagCampaignsAuto',\n model: CampaignHashtag,\n interceptors,\n })\n }\n}\n","import { Checkout, CheckoutRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\n\nimport { FirestoreConstructorParams, withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CheckoutFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Checkout>(Base)))\n implements CheckoutRepository\n{\n constructor({ firestore, interceptors }: Pick<FirestoreConstructorParams<Checkout>, 'firestore' | 'interceptors'>) {\n super({\n firestore,\n collectionName: 'checkouts',\n model: Checkout,\n interceptors,\n })\n }\n}\n","import { CheckoutSubscription, CheckoutSubscriptionRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\n\nimport { FirestoreConstructorParams, withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CheckoutSubscriptionFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<CheckoutSubscription>(Base)))\n implements CheckoutSubscriptionRepository\n{\n constructor({\n firestore,\n interceptors,\n }: Pick<FirestoreConstructorParams<CheckoutSubscription>, 'firestore' | 'interceptors'>) {\n super({\n firestore,\n collectionName: 'checkoutsSubscription',\n model: CheckoutSubscription,\n interceptors,\n })\n }\n}\n","import { DocumentData, QueryDocumentSnapshot } from 'firebase/firestore'\n\nimport { Coupon, CouponRepository } from '../../../../../domain'\nimport { Base, isNil } from '../../../../../utils'\n\nimport { FirestoreConstructorParams, withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CouponFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Coupon>(Base)))\n implements CouponRepository\n{\n constructor({ firestore, interceptors }: Pick<FirestoreConstructorParams<Coupon>, 'firestore' | 'interceptors'>) {\n super({\n firestore,\n collectionName: 'coupons',\n model: Coupon,\n interceptors,\n })\n }\n\n override buildModelInstance(): {\n toFirestore: (data: Coupon) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<Coupon>) => Coupon\n } {\n const { fromFirestore, toFirestore } = super.buildModelInstance()\n\n return {\n toFirestore: (data: Coupon): DocumentData => {\n const plain = toFirestore(data) as DocumentData & { expiresIn: number }\n\n if (!!data.expiresIn) plain.expiresIn = data.expiresIn.getTime()\n\n return plain\n },\n fromFirestore: (snap: QueryDocumentSnapshot<Coupon>): Coupon => {\n const instance = fromFirestore(snap)\n\n if (!isNil(instance.expiresIn)) instance.expiresIn = new Date(snap.data().expiresIn)\n\n return instance\n },\n }\n }\n}\n","import { DocumentData, QueryDocumentSnapshot } from 'firebase/firestore'\n\nimport { Order, OrderRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\nimport { FirestoreFieldType } from '../../enums'\n\nimport { FirestoreConstructorParams, withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class OrderFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Order>(Base)))\n implements OrderRepository\n{\n constructor({ firestore, interceptors }: Pick<FirestoreConstructorParams<Order>, 'firestore' | 'interceptors'>) {\n super({\n firestore,\n collectionName: 'orders',\n model: Order,\n interceptors,\n fields: {\n status: FirestoreFieldType.String,\n },\n })\n }\n\n override buildModelInstance(): {\n toFirestore: (data: Order) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<Order>) => Order\n } {\n const { fromFirestore, toFirestore } = super.buildModelInstance()\n return {\n toFirestore: (data: Order): DocumentData => toFirestore(data?.toPlain ? data.toPlain() : data),\n fromFirestore: (snap: QueryDocumentSnapshot<Order>): Order => {\n const instance = fromFirestore(snap)\n\n return this.orderFromFirestore(instance)\n },\n }\n }\n\n private orderFromFirestore = (order: Order): Order => {\n if (!!order?.lineItems?.length) {\n order.lineItems = order.lineItems.map((lineItem) => {\n const prices = !!lineItem.price as any\n const shopPrice = prices[order.shop]\n\n if (!!shopPrice) lineItem.price = shopPrice\n\n return lineItem\n })\n }\n\n return order\n }\n}\n","import { LegacyOrderRepository, Order } from '../../../../../domain'\nimport { FirestoreConstructorParams } from '../../mixins'\n\nimport { OrderFirestoreRepository } from './order-firestore.repository'\n\nexport class LegacyOrderFirestoreRepository extends OrderFirestoreRepository implements LegacyOrderRepository {\n constructor({ firestore, interceptors }: Pick<FirestoreConstructorParams<Order>, 'firestore' | 'interceptors'>) {\n super({\n firestore,\n interceptors,\n })\n this.collectionName = 'legacyOrders'\n }\n}\n","import { Payment, PaymentRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\n\nimport { FirestoreConstructorParams, withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class PaymentFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Payment>(Base)))\n implements PaymentRepository\n{\n constructor({ firestore, interceptors }: Pick<FirestoreConstructorParams<Payment>, 'firestore' | 'interceptors'>) {\n super({\n firestore,\n collectionName: 'payments',\n model: Payment,\n interceptors,\n })\n }\n}\n","import { SubscriptionPlan, SubscriptionPlanRepository } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\n\nimport { FirestoreConstructorParams, withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class SubscriptionPlanFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<SubscriptionPlan>(Base)))\n implements SubscriptionPlanRepository\n{\n constructor({\n firestore,\n interceptors,\n }: Pick<FirestoreConstructorParams<SubscriptionPlan>, 'firestore' | 'interceptors'>) {\n super({\n firestore,\n collectionName: 'subscriptionPlans',\n model: SubscriptionPlan,\n interceptors,\n })\n }\n}\n","import { DocumentData, QueryDocumentSnapshot, Timestamp } from 'firebase/firestore'\nimport { Category, Home, HomeCategoryGroup, HomeRepository, Product } from '../../../../../domain'\nimport { Base } from '../../../../../utils'\nimport { FirestoreConstructorParams, withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class HomeFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Home>(Base)))\n implements HomeRepository\n{\n constructor({ firestore, interceptors }: Pick<FirestoreConstructorParams<Home>, 'firestore' | 'interceptors'>) {\n super({\n firestore,\n collectionName: 'dms',\n model: Home,\n interceptors,\n })\n }\n\n override buildModelInstance(): {\n toFirestore: (data: Home) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<Home>) => Home\n } {\n const { fromFirestore, toFirestore } = super.buildModelInstance()\n\n return {\n toFirestore: (data: Home): DocumentData => {\n const modifiedData = this.homeToFirestore(data)\n\n return toFirestore(modifiedData)\n },\n fromFirestore: (snap: QueryDocumentSnapshot<Home>): Home => {\n const instance = fromFirestore(snap)\n\n return this.homeFromFirestore(instance)\n },\n }\n }\n\n private homeToFirestore(home: Home): Home {\n if (home.data?.data) {\n home.data.data.discoverProducts = home.data.data.discoverProducts?.map(this.homeCategoryGroupToPlain) || []\n home.data.data.featuredProducts = home.data.data.featuredProducts?.map(this.homeCategoryGroupToPlain) || []\n home.data.data.verticalProducts = home.data.data.verticalProducts?.map(this.homeCategoryGroupToPlain) || []\n }\n\n return home\n }\n\n private homeCategoryGroupToPlain = (homeCategoryGroup: HomeCategoryGroup) => ({\n category: homeCategoryGroup?.category?.toPlain\n ? homeCategoryGroup?.category?.toPlain()\n : homeCategoryGroup?.category,\n products:\n homeCategoryGroup?.products\n ?.map((product) => (product?.toPlain ? product?.toPlain() : product))\n .filter(Boolean) || [],\n })\n\n private homeFromFirestore(home: Home): Home {\n if (home.data?.data) {\n home.data.data.discoverProducts = home.data.data.discoverProducts.map(this.plainToHomeCategoryGroup)\n home.data.data.featuredProducts = home.data.data.featuredProducts.map(this.plainToHomeCategoryGroup)\n home.data.data.verticalProducts = home.data.data.verticalProducts.map(this.plainToHomeCategoryGroup)\n home.data.createdAt =\n home.data.createdAt instanceof Timestamp ? home.data.createdAt.toDate() : home.data.createdAt\n home.data.expiresAt =\n home.data.expiresAt instanceof Timestamp ? home.data.expiresAt.toDate() : home.data.expiresAt\n }\n\n return home\n }\n\n private plainToHomeCategoryGroup = (homeCategoryGroup: HomeCategoryGroup) => ({\n category: Category.toInstance(homeCategoryGroup?.category),\n products: homeCategoryGroup.products?.map((product) => Product.toInstance(product)),\n })\n}\n","import { ShopMenu, ShopMenuRepository } from '../../../../../domain'\n\nimport { Base } from '../../../../../utils'\n\nimport { FirestoreConstructorParams, withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class ShopMenuFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<ShopMenu>(Base)))\n implements ShopMenuRepository\n{\n constructor({ firestore, interceptors }: Pick<FirestoreConstructorParams<ShopMenu>, 'firestore' | 'interceptors'>) {\n super({\n firestore,\n collectionName: 'shopMenus',\n model: ShopMenu,\n interceptors,\n })\n }\n}\n","import { ShopSettings, ShopSettingsRepository } from '../../../../../domain'\n\nimport { Base } from '../../../../../utils'\n\nimport { FirestoreConstructorParams, withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class ShopSettingsFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<ShopSettings>(Base)))\n implements ShopSettingsRepository\n{\n constructor({\n firestore,\n interceptors,\n }: Pick<FirestoreConstructorParams<ShopSettings>, 'firestore' | 'interceptors'>) {\n super({\n firestore,\n collectionName: 'shopSettings',\n model: ShopSettings,\n interceptors,\n })\n }\n}\n","import {\n Auth,\n GoogleAuthProvider,\n sendPasswordResetEmail,\n signInAnonymously,\n signInWithEmailAndPassword,\n signInWithPopup,\n} from 'firebase/auth'\n\nimport { AuthenticationService, BasicUserData, LoginAndPasswordParams } from '../../../domain'\n\nimport { FirebaseUserWithId } from './types/firebase-user-with-id.type'\n\nexport class AuthenticationFirebaseAuthService implements AuthenticationService {\n constructor(private readonly firebaseAuth: Auth) {}\n\n async signInWithEmailAndPassword(data: LoginAndPasswordParams): Promise<BasicUserData> {\n const credentials = await signInWithEmailAndPassword(this.firebaseAuth, data.email, data.password)\n const user = credentials.user\n\n return {\n id: user.uid,\n displayName: user.displayName,\n email: user.email,\n phone: user.phoneNumber,\n isAnonymous: false,\n }\n }\n\n async signInWithGoogle(): Promise<BasicUserData> {\n const credentials = await signInWithPopup(this.firebaseAuth, new GoogleAuthProvider())\n const user = credentials.user\n\n return {\n id: user.uid,\n displayName: user.displayName,\n email: user.email,\n phone: user.phoneNumber,\n isAnonymous: false,\n }\n }\n\n async signOut(): Promise<void> {\n this.firebaseAuth.signOut()\n }\n\n async signInAnonymously(): Promise<FirebaseUserWithId> {\n const auth = await signInAnonymously(this.firebaseAuth)\n const user = auth.user as FirebaseUserWithId\n\n user.id = auth.user.uid\n\n return user\n }\n\n async sendPasswordResetEmail(email: string): Promise<void> {\n return sendPasswordResetEmail(this.firebaseAuth, email)\n }\n}\n","import { FirebaseError } from 'firebase/app'\nimport { Auth, createUserWithEmailAndPassword, sendEmailVerification } from 'firebase/auth'\n\nimport { RegisterParams, RegisterService, UserAlreadyRegisteredError, WeakPasswordError } from '../../../domain'\nimport { RequiredArgumentError } from '../../../errors'\nimport { is } from '../../../utils'\n\nimport { FirebaseUserWithId } from './types/firebase-user-with-id.type'\n\nexport class RegisterFirebaseAuthService implements RegisterService {\n constructor(private readonly firebaseAuth: Auth) {}\n\n async register(params: RegisterParams): Promise<FirebaseUserWithId> {\n if (!params.email) throw new RequiredArgumentError(['email'])\n\n try {\n const auth = await createUserWithEmailAndPassword(this.firebaseAuth, params.email, params.password)\n const user = is<FirebaseUserWithId>(auth.user)\n\n if (!user) throw new Error('User not created')\n\n await sendEmailVerification(user)\n user.id = user.uid\n\n return user\n } catch (error) {\n if (!(error instanceof Error)) throw error\n\n const firebaseError = error as FirebaseError\n\n if (firebaseError.code === 'auth/email-already-in-use')\n throw new UserAlreadyRegisteredError('Email already registered')\n if (firebaseError.code === 'auth/weak-password') throw new WeakPasswordError()\n\n throw error\n }\n }\n}\n","import { ModelBaseStructure, NonFunctionAndIdentifierPropertyNames } from '../../../../domain'\nimport { is, isNil, isObject } from '../../../../utils'\nimport { ColumnOptions, HasuraGraphQLFields } from '../../types'\n\ntype FindByAttributeResult<\n MBase extends ModelBaseStructure<MBase>,\n Attribute extends NonFunctionAndIdentifierPropertyNames<MBase>,\n> = ColumnOptions<MBase[Attribute], MBase> & { attributeName: Attribute }\n\nexport class AttributeOptionHelper {\n static FindByAttribute = <\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n Attribute extends NonFunctionAndIdentifierPropertyNames<MBase> = NonFunctionAndIdentifierPropertyNames<MBase>,\n >(\n attributeName: Attribute,\n fields: HasuraGraphQLFields<MBase>,\n ): FindByAttributeResult<MBase, Attribute> => {\n if (fields.includes(attributeName as any))\n return { columnName: attributeName.toString(), attributeName, to: (value) => value, from: (value) => value }\n\n const field = fields.find(\n (columnOption) => isObject(columnOption) && Object.keys(columnOption).includes(attributeName.toString()),\n )\n const fieldOption = is<Record<Attribute, ColumnOptions<MBase[Attribute], MBase>>>(field)?.[attributeName]\n\n if (isNil(fieldOption)) return { columnName: attributeName.toString(), attributeName }\n if (Array.isArray(fieldOption)) return { columnName: attributeName.toString(), attributeName, fields: fieldOption }\n\n return { attributeName, columnName: attributeName.toString(), ...fieldOption }\n }\n\n static CheckIsColumnOption = <Model extends ModelBaseStructure<Model>, ParentModel extends ModelBaseStructure>(\n fieldValue: ColumnOptions<Model, ParentModel> | any,\n ): fieldValue is ColumnOptions<Model, ParentModel> => !!fieldValue?.columnName\n\n static FindColumnOptionFromList = <Model extends ModelBaseStructure, ParentModel extends ModelBaseStructure>(\n columnName: string,\n fields: HasuraGraphQLFields<ParentModel>,\n ): ColumnOptions<Model, ParentModel> & { attributeName: NonFunctionAndIdentifierPropertyNames<ParentModel> } => {\n if (fields.includes(columnName as HasuraGraphQLFields<ParentModel>[number]))\n return { columnName, attributeName: columnName as NonFunctionAndIdentifierPropertyNames<ParentModel> }\n\n const field = is<Record<NonFunctionAndIdentifierPropertyNames<ParentModel>, ColumnOptions<Model, ParentModel>>>(\n fields.find((field) => {\n if (!isObject(field)) return false\n\n const columnOption = Object.values(field).find((option) =>\n AttributeOptionHelper.CheckIsColumnOption(option) && option.columnName === columnName ? option : {},\n )\n\n return AttributeOptionHelper.CheckIsColumnOption(columnOption) && columnOption?.columnName === columnName\n }) || {},\n )\n const attributeName = Object.keys(field).find(\n (fieldOptionFromList) =>\n AttributeOptionHelper.CheckIsColumnOption(\n field[fieldOptionFromList as NonFunctionAndIdentifierPropertyNames<ParentModel>],\n ) || Array.isArray(field[fieldOptionFromList as NonFunctionAndIdentifierPropertyNames<ParentModel>]),\n ) as NonFunctionAndIdentifierPropertyNames<ParentModel>\n const fieldOption = field?.[attributeName]\n\n if (Array.isArray(fieldOption))\n return { attributeName: attributeName as NonFunctionAndIdentifierPropertyNames<ParentModel>, fields: fieldOption }\n\n return {\n attributeName: attributeName || (columnName as NonFunctionAndIdentifierPropertyNames<ParentModel>),\n columnName,\n ...fieldOption,\n }\n }\n}\n","export enum HasuraGraphQLWhere {\n EQUALS = '_eq',\n GT = '_gt',\n GTE = '_gte',\n IN = '_in',\n NOTIN = '_nin',\n LT = '_lt',\n LTE = '_lte',\n LIKE = '_like',\n NOTLIKE = '_nlike',\n ISNULL = '_is_null',\n ISNOTNULL = '_is_null',\n JSON_CONTAINS = '_contains',\n JSON_HAS_KEYS_ANY = '_has_keys_any',\n}\n","export enum HasuraGraphQLColumnType {\n Int = 'Int',\n Float = 'Float',\n Boolean = 'Boolean',\n String = 'String',\n DateTime = 'timestampz',\n Json = 'json',\n Jsonb = 'jsonb',\n Enum = 'enum',\n Uuid = 'uuid',\n}\n","import { ModelBaseStructure, RepositoryFindFieltersOptions, Where } from '../../../../domain'\nimport { isNil } from '../../../../utils'\nimport { ColumnOptions } from '../../types'\n\nexport class FilterOptionHelper {\n static CheckIfIsFilterOption = <Model extends ModelBaseStructure>(\n filter: any,\n ): filter is RepositoryFindFieltersOptions<Model, any> => !isNil(filter?.operator)\n\n static GetValueFromFilter = <Model extends ModelBaseStructure<Model>>(\n filter: RepositoryFindFieltersOptions<Model, any>,\n fieldOption: ColumnOptions<any, any>,\n ): any => {\n if (!FilterOptionHelper.CheckIfIsFilterOption(filter)) return filter\n if (filter.operator === Where.ISNULL) return true\n if (filter.operator === Where.ISNOTNULL) return false\n\n const converter = fieldOption.to\n ? fieldOption.to\n : (value: any) =>\n filter.operator === Where.LIKE && !Array.isArray(filter.value) && value.indexOf('%') < 0\n ? `%${value}%`\n : value\n\n return Array.isArray(filter.value) && !fieldOption.fields && [Where.IN, Where.NOTIN].includes(filter.operator)\n ? filter.value.map((fieldValue) => converter(fieldValue))\n : converter(filter.value as any)\n }\n}\n","import {\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertyNames,\n NonFunctionPropertyNames,\n RepositoryFindFielters,\n RepositoryFindFieltersOptions,\n Where,\n} from '../../../../domain'\nimport { is, isNil, isObject } from '../../../../utils'\nimport { HasuraGraphQLColumnType, HasuraGraphQLWhere } from '../../enums'\nimport { ColumnOptions, HasuraGraphQLFields, VariableOptions } from '../../types'\nimport { AttributeOptionHelper } from './attribute-option.helper'\nimport { FilterOptionHelper } from './filter-option.helper'\n\nexport class BindFilterQueryHelper {\n static MakeGraphQLWhere = <MBase extends ModelBaseStructure<MBase>>(\n filter: RepositoryFindFielters<MBase>,\n fields: HasuraGraphQLFields<MBase>,\n ): VariableOptions =>\n Object.keys(filter).reduce((variables: VariableOptions, fieldName: string) => {\n const columnOption = AttributeOptionHelper.FindByAttribute(\n fieldName as NonFunctionAndIdentifierPropertyNames<MBase>,\n fields,\n )\n\n if (!columnOption.bindFindFilter)\n return {\n ...variables,\n ...{\n [columnOption.columnName]: BindFilterQueryHelper.BuildWhereSentence(\n fieldName as NonFunctionAndIdentifierPropertyNames<MBase>,\n filter[fieldName as NonFunctionAndIdentifierPropertyNames<MBase>] as RepositoryFindFieltersOptions<\n MBase,\n NonFunctionAndIdentifierPropertyNames<MBase>\n >,\n fields,\n ),\n },\n }\n\n const builtFilter: RepositoryFindFielters<MBase> = columnOption.bindFindFilter(\n filter[fieldName as NonFunctionPropertyNames<MBase>] as RepositoryFindFieltersOptions<\n MBase,\n NonFunctionPropertyNames<MBase>\n >,\n )\n\n return {\n ...variables,\n ...Object.keys(builtFilter).reduce(\n (variablesList: VariableOptions, columnName: string) => ({\n ...variablesList,\n [columnName]: BindFilterQueryHelper.BuildWhereSentence(\n fieldName as NonFunctionAndIdentifierPropertyNames<MBase>,\n builtFilter[columnName as NonFunctionAndIdentifierPropertyNames<MBase>] as RepositoryFindFieltersOptions<\n MBase,\n NonFunctionAndIdentifierPropertyNames<MBase>\n >,\n fields,\n ),\n }),\n {},\n ),\n }\n }, {})\n\n static BuildWhereSentence = <MBase extends ModelBaseStructure<MBase>>(\n field: NonFunctionAndIdentifierPropertyNames<MBase>,\n options: RepositoryFindFieltersOptions<MBase, NonFunctionAndIdentifierPropertyNames<MBase>>,\n fields: HasuraGraphQLFields<MBase>,\n ): VariableOptions => {\n const fieldSentenceOptions = AttributeOptionHelper.FindByAttribute<MBase>(field, fields)\n const isNestedField =\n !Array.isArray(options) &&\n isObject(options) &&\n isNil(options?.operator) &&\n isNil(options?.value) &&\n isNil(fieldSentenceOptions?.to)\n\n if (isNestedField)\n return Object.keys(options).reduce((variables, key) => {\n const fieldOptions = AttributeOptionHelper.FindByAttribute<MBase>(\n key as NonFunctionAndIdentifierPropertyNames<MBase>,\n fieldSentenceOptions?.fields || (fields as any),\n )\n const columnName = fieldOptions.columnName\n const columnFields = fieldOptions.fields\n\n return {\n ...variables,\n [columnName]: BindFilterQueryHelper.BuildWhereSentence<MBase>(\n key as NonFunctionAndIdentifierPropertyNames<MBase>,\n is<RepositoryFindFieltersOptions<MBase, NonFunctionAndIdentifierPropertyNames<MBase>>>(\n is<RepositoryFindFielters<MBase>>(options)[key as NonFunctionAndIdentifierPropertyNames<MBase>],\n ),\n fieldSentenceOptions?.fields || columnFields || (fields as any),\n ),\n }\n }, {})\n\n if (!Array.isArray(options) && !isNil(fieldSentenceOptions.fields))\n return {\n [fieldSentenceOptions.fields[0] as NonFunctionAndIdentifierPropertyNames<MBase>]:\n BindFilterQueryHelper.BuildOperatorSentence(\n options,\n fieldSentenceOptions as ColumnOptions<MBase[NonFunctionAndIdentifierPropertyNames<MBase>], MBase>,\n ),\n }\n\n if (!Array.isArray(options) && isObject(options) && !FilterOptionHelper.CheckIfIsFilterOption(options))\n options = Object.values(options)[0] as RepositoryFindFieltersOptions<MBase, any>\n\n return Array.isArray(options)\n ? options.reduce(\n (whereSentence, option) => ({\n ...whereSentence,\n ...BindFilterQueryHelper.BuildOperatorSentence(\n option,\n fieldSentenceOptions as ColumnOptions<MBase[NonFunctionAndIdentifierPropertyNames<MBase>], MBase>,\n ),\n }),\n {},\n )\n : BindFilterQueryHelper.BuildOperatorSentence(\n options,\n fieldSentenceOptions as ColumnOptions<MBase[NonFunctionAndIdentifierPropertyNames<MBase>], MBase>,\n )\n }\n\n static BuildOperatorSentence = <MBase extends ModelBaseStructure<MBase>>(\n options: RepositoryFindFieltersOptions<MBase, any>,\n fieldOption: ColumnOptions<any, any>,\n ): VariableOptions => ({\n [BindFilterQueryHelper.GetHasuraOperator(options, fieldOption)]: FilterOptionHelper.GetValueFromFilter(\n options,\n fieldOption,\n ),\n })\n\n static GetHasuraOperator = <MBase extends ModelBaseStructure<MBase>>(\n options: RepositoryFindFieltersOptions<MBase, NonFunctionPropertyNames<MBase>>,\n fieldOption: ColumnOptions<any, any>,\n ): HasuraGraphQLWhere =>\n FilterOptionHelper.CheckIfIsFilterOption(options)\n ? fieldOption.type === HasuraGraphQLColumnType.Jsonb\n ? BindFilterQueryHelper.GetHasuraJsonbOperator(options)\n : HasuraGraphQLWhere[\n Object.keys(HasuraGraphQLWhere).find(\n (graphQLOperator) =>\n graphQLOperator ===\n Object.keys(Where).find((operator) => Where[operator as keyof typeof Where] === options?.operator),\n ) as keyof typeof HasuraGraphQLWhere\n ]\n : HasuraGraphQLWhere.EQUALS\n\n static GetHasuraJsonbOperator = <MBase extends ModelBaseStructure<MBase>>(\n options: RepositoryFindFieltersOptions<MBase, NonFunctionPropertyNames<MBase>>,\n ): HasuraGraphQLWhere =>\n options.operator === Where.IN\n ? HasuraGraphQLWhere.JSON_CONTAINS\n : options.operator === Where.LIKE\n ? HasuraGraphQLWhere.JSON_HAS_KEYS_ANY\n : HasuraGraphQLWhere[\n Object.keys(HasuraGraphQLWhere).find(\n (graphQLOperator) =>\n graphQLOperator ===\n Object.keys(Where).find((operator) => Where[operator as keyof typeof Where] === options?.operator),\n ) as keyof typeof HasuraGraphQLWhere\n ]\n}\n","import { IOperation } from 'gql-query-builder/build/IQueryBuilderOptions'\nimport {\n BaseModel,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertiesWithNoPartial,\n NonFunctionAndIdentifierPropertyNames,\n PartialIdentifiersModel,\n} from '../../../../domain'\nimport { is, isDate, isEmpty, isNil, isObject, isString, parseDateTime } from '../../../../utils'\nimport { ColumnOptions, Fields, GraphQLParams, HasuraGraphQLFields } from '../../types'\nimport { AttributeOptionHelper } from './attribute-option.helper'\nimport { BindFilterQueryHelper } from './bind-filter-query.helper'\n\nexport class GraphQLFieldHelper {\n static CheckIsGraphQLParams = <Model extends ModelBaseStructure<Model>>(\n params: string | IOperation | GraphQLParams<Model>[],\n ): params is GraphQLParams<Model>[] =>\n !isString(params) && Array.isArray(params) && params.length >= 0 && !!params[0].operation\n\n static ConvertModelFieldsToGraphQLFields = <Model extends ModelBaseStructure<Model>>(\n fields: HasuraGraphQLFields<Model>,\n ): Fields => {\n return fields\n ?.map((field) => {\n if (isString(field)) return field.toString()\n if (field === 'affected_rows') return field\n\n const fieldName = Object.keys(field).shift()\n const fieldValue = is<ColumnOptions<any, Model>>(field[fieldName as keyof typeof field])\n\n if (Array.isArray(fieldValue))\n return { [fieldName]: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fieldValue) }\n if (!AttributeOptionHelper.CheckIsColumnOption(fieldValue)) return\n\n const isNestedField = !!fieldValue.fields\n\n if (isNestedField) return GraphQLFieldHelper.ConvertNestedFieldsToGraphQLFields(fieldName, fieldValue as any)\n\n return fieldValue.columnName\n })\n .filter((field) => !!field)\n }\n\n static ConvertFieldValueFrom = <\n Model extends ModelBaseStructure,\n RecordDataType extends string | number | DataType | Date,\n DataType extends Record<string, RecordDataType | RecordDataType[]>,\n >(\n data: DataType,\n fields: HasuraGraphQLFields<Model>,\n ): NonFunctionAndIdentifierPropertiesWithNoPartial<Model> | PartialIdentifiersModel<Model> =>\n Object.keys(data).reduce((result, columnName) => {\n const {\n attributeName,\n fields: attributeFields,\n from,\n } = AttributeOptionHelper.FindColumnOptionFromList(columnName, fields)\n\n if (!!attributeFields && Array.isArray(attributeFields)) {\n if (Array.isArray(data[columnName]))\n return {\n ...result,\n [attributeName]: from\n ? from(data[columnName], data)\n : is<RecordDataType[]>(data[columnName]).map((value) =>\n GraphQLFieldHelper.ConvertFieldValueFrom(is<DataType>(value), attributeFields),\n ),\n }\n if (isObject(data[columnName]))\n return {\n ...result,\n [attributeName]: !!from\n ? from(data[columnName])\n : GraphQLFieldHelper.ConvertFieldValueFrom(is<DataType>(data[columnName]), attributeFields),\n }\n }\n\n if (!!from) return { ...result, [attributeName]: from(data[columnName], data) }\n\n return {\n ...result,\n [attributeName]: isString(data[columnName]) ? parseDateTime(data[columnName].toString()) : data[columnName],\n }\n }, {})\n\n static ConvertFieldValueTo = <\n Model extends ModelBaseStructure<Model>,\n DataType extends Record<string, string | number | DataType | Date>,\n >(\n instance: Model,\n fields: HasuraGraphQLFields<Model>,\n update = false,\n ): DataType => {\n const data: Partial<Model> = instance.toPlain?.() || instance\n\n return Object.keys(data).reduce((result, attributeName) => {\n const {\n columnName,\n fields: attributeFields,\n foreignKeyColumn,\n to,\n bindPersistData,\n } = AttributeOptionHelper.FindByAttribute(attributeName as NonFunctionAndIdentifierPropertyNames<Model>, fields)\n\n if (bindPersistData)\n return {\n ...result,\n ...bindPersistData(data[attributeName as NonFunctionAndIdentifierPropertyNames<Model>], instance),\n }\n if (isNil(columnName)) return result\n if (\n !!foreignKeyColumn &&\n !isEmpty(foreignKeyColumn) &&\n !Object.keys(foreignKeyColumn).filter(\n (key) =>\n !is<Record<string, string>>(data[attributeName as NonFunctionAndIdentifierPropertyNames<Model>])?.[key],\n ).length\n )\n return Object.keys(foreignKeyColumn).reduce(\n (object, current) => {\n const { columnName: foreignColumnName } = AttributeOptionHelper.FindByAttribute(\n foreignKeyColumn[current as keyof HasuraGraphQLFields<Model>[number]],\n fields,\n )\n\n return {\n ...object,\n [foreignColumnName]: data[attributeName as keyof HasuraGraphQLFields<Model>[number]]?.[current],\n }\n },\n { ...result },\n )\n\n if (\n update &&\n isObject(data[attributeName as keyof HasuraGraphQLFields<Model>[number]]) &&\n !isNil(attributeFields) &&\n !isDate(data[attributeName as keyof HasuraGraphQLFields<Model>[number]])\n )\n return result\n\n if (\n !!columnName &&\n Array.isArray(attributeFields) &&\n isObject(data[attributeName as keyof HasuraGraphQLFields<Model>[number]])\n ) {\n const converted =\n !isNil(columnName) && to\n ? to(instance[attributeName as keyof HasuraGraphQLFields<Model>[number]], instance)\n : data[attributeName as keyof HasuraGraphQLFields<Model>[number]]\n\n return {\n ...result,\n ...(converted !== undefined\n ? {\n [columnName]: {\n data:\n instance[attributeName as NonFunctionAndIdentifierPropertyNames<Model>] instanceof BaseModel\n ? GraphQLFieldHelper.ConvertFieldValueTo(\n data[attributeName as keyof HasuraGraphQLFields<Model>[number]],\n attributeFields as HasuraGraphQLFields<Model>,\n )\n : converted,\n },\n }\n : {}),\n }\n }\n\n if (!!to)\n return {\n ...result,\n [columnName]: to(instance[attributeName as keyof HasuraGraphQLFields<Model>[number]], instance),\n }\n\n return { ...result, [columnName]: data[attributeName as keyof HasuraGraphQLFields<Model>[number]] }\n }, {} as DataType)\n }\n\n private static ConvertNestedFieldsToGraphQLFields = <\n T extends ModelBaseStructure<T>,\n P extends ModelBaseStructure<P>,\n >(\n fieldName: string,\n fieldValue: ColumnOptions<T, P>,\n ) => {\n const hasCustomFilters = !!fieldValue.filters\n\n if (hasCustomFilters)\n return {\n operation: fieldValue.columnName || fieldName,\n fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fieldValue.fields),\n variables: {\n [`${fieldValue.columnName}_where`]: {\n name: 'where',\n type: fieldValue.filters.filterType,\n value: BindFilterQueryHelper.MakeGraphQLWhere(fieldValue.filters.filters, fieldValue.fields),\n required: true,\n },\n },\n }\n\n return {\n [fieldValue.columnName || fieldName]: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fieldValue.fields),\n }\n }\n}\n","import { CreateRepository, CreateRepositoryParams, ModelBaseStructure } from '../../../domain'\nimport { DebugHelper, MergeConstructorParams, MixinCtor } from '../../../utils'\nimport { GraphQLRepository, HasuraGraphQLFields } from '../types'\n\nimport { AttributeOptionHelper } from './helpers'\n\nexport type CreateConstructorParams = {\n insertGraphQLOperation?: string\n insertAllGraphQLOperation?: string\n insertGraphQLObjectType?: string\n}\n\nexport const withCreateHasuraGraphQL = <\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n TMixinBase extends MixinCtor<GraphQLRepository<MBase>>,\n>(\n MixinBase: MixinCtor<GraphQLRepository<MBase>> & TMixinBase,\n): MixinCtor<\n GraphQLRepository<MBase> & InstanceType<TMixinBase> & CreateRepository<MBase>,\n MergeConstructorParams<[CreateConstructorParams, ...any[]], ConstructorParameters<TMixinBase>>\n> => {\n return class CreateHasuraGraphQLMixin extends MixinBase implements CreateRepository<MBase> {\n insertGraphQLOperation: string\n insertGraphQLObjectType: string\n\n constructor(...params: any[]) {\n const options: CreateConstructorParams = params?.[0]\n\n super(...params)\n\n this.insertGraphQLOperation = options?.insertGraphQLOperation || `insert_${this.tableName}_one`\n this.insertGraphQLObjectType = options?.insertGraphQLObjectType || `${this.tableName}_insert_input`\n }\n\n async create(data: CreateRepositoryParams<MBase>): Promise<MBase> {\n this.logger = DebugHelper.from(this, 'create')\n\n const newData = await this.save(this.model.toInstance(data))\n\n return this.model.toInstance(newData)\n }\n\n async save(data: MBase): Promise<Partial<MBase>> {\n const primaryKeyColumns = this.model.identifiersFields.map(\n (field) => AttributeOptionHelper.FindByAttribute(field, this.fields).columnName,\n ) as HasuraGraphQLFields<MBase>\n const foreignKeyColumns = this.fields\n .map((field) => {\n const columnOptions = Object.values(field).shift()\n\n return (\n AttributeOptionHelper.CheckIsColumnOption(columnOptions) &&\n columnOptions.foreignKeyColumn && [\n ...Object.values(columnOptions.foreignKeyColumn).map(\n (foreignKeyName) =>\n AttributeOptionHelper.FindByAttribute(foreignKeyName as any, this.fields)?.columnName,\n ),\n {\n [columnOptions.columnName]: Object.keys(columnOptions.foreignKeyColumn).map(\n (foreignKeyField) =>\n AttributeOptionHelper.FindByAttribute(foreignKeyField as any, columnOptions?.fields as any)\n ?.columnName || foreignKeyField,\n ),\n },\n ]\n )\n })\n .filter(Boolean)\n .reduce((keys, current) => [...keys, ...current], [])\n\n const result = await this.mutation<Record<string, Record<string, any>>>(\n this.insertGraphQLOperation,\n [...primaryKeyColumns, ...foreignKeyColumns] as HasuraGraphQLFields<MBase>,\n {\n object: { type: this.insertGraphQLObjectType, required: true, value: this.convertDataToHasura(data) },\n },\n )\n\n return { ...data.toPlain(), ...this.convertDataFromHasura(result[this.insertGraphQLOperation]).toPlain() }\n }\n } as any\n}\n","import {\n DeleteRepository,\n DeleteRepositoryParams,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertyNames,\n} from '../../../domain'\nimport { DebugHelper, isNil, MergeConstructorParams, MixinCtor } from '../../../utils'\nimport { GraphQLRepository, HasuraGraphQLFields } from '../types'\n\nimport { AttributeOptionHelper } from './helpers'\n\nexport type DeleteConstructorParams = {\n deleteGraphQLOperation?: string\n}\n\nexport const withDeleteHasuraGraphQL = <\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n TMixinBase extends MixinCtor<GraphQLRepository<MBase>>,\n>(\n MixinBase: MixinCtor<GraphQLRepository<MBase>> & TMixinBase,\n): MixinCtor<\n GraphQLRepository<MBase> & DeleteRepository<MBase> & InstanceType<TMixinBase>,\n MergeConstructorParams<[DeleteConstructorParams, ...any[]], ConstructorParameters<TMixinBase>>\n> => {\n return class DeleteHasuraGraphQLMixin extends MixinBase implements DeleteRepository<MBase> {\n deleteGraphQLOperation: string\n\n constructor(...params: any[]) {\n const options: DeleteConstructorParams = params?.[0]\n\n super(...params)\n\n this.deleteGraphQLOperation = options?.deleteGraphQLOperation || `delete_${this.tableName}_by_pk`\n }\n\n async delete(identifiers: DeleteRepositoryParams<MBase>): Promise<void> {\n this.logger = DebugHelper.from(this, 'delete')\n\n const instance = this.model.toInstance(identifiers)\n\n await this.mutation(\n this.deleteGraphQLOperation,\n this.model.identifiersFields.map(\n (field) => AttributeOptionHelper.FindByAttribute(field, this.fields).columnName,\n ) as HasuraGraphQLFields<MBase>,\n this.model.identifiersFields.reduce((ids, identifier) => {\n const identifierBinded: Extract<\n NonFunctionAndIdentifierPropertyNames<MBase>,\n MBase['identifiersFields'][number]\n > = identifier\n\n if (isNil(instance.identifier[identifierBinded])) return ids\n\n const columnOption = AttributeOptionHelper.FindByAttribute(identifier, this.fields)\n const value = columnOption.to(identifiers[identifier as keyof DeleteRepositoryParams<MBase>], instance)\n\n return {\n ...ids,\n [columnOption.columnName]: {\n type: this.getAttributeGraphQLTypeOf(columnOption.type || value),\n value,\n required: true,\n },\n }\n }, {}),\n )\n }\n } as any\n}\n","import axios from 'axios'\nimport { mutation, query } from 'gql-query-builder'\nimport { IOperation } from 'gql-query-builder/build/IQueryBuilderOptions'\nimport { BaseModelBuilder, ModelBaseStructure } from '../../../domain'\nimport {\n DebugHelper,\n isBoolean,\n isInteger,\n isNaN,\n isNil,\n isNumber,\n isString,\n isUUID,\n MergeConstructorParams,\n MixinCtor,\n parseISO,\n} from '../../../utils'\nimport {\n Fields,\n GraphQLParams,\n GraphQLRepository,\n HasuraGraphQLAuthOptions,\n HasuraGraphQLFields,\n HasuraGraphQLHeaders,\n VariableOptions,\n} from '../types'\nimport { GraphQLFieldHelper } from './helpers'\n\ntype QueryBuilderOptions = {\n operation: string | IOperation\n fields: Fields\n variables?: VariableOptions\n}\n\ntype HasuraGraphQLInterceptors<P = QueryBuilderOptions | QueryBuilderOptions[]> = {\n request?: <R>(request: P) => Promise<P & R>\n response?: <R>(response: R, request: P) => Promise<R>\n}\n\nexport type HasuraConstructorParams<Model extends ModelBaseStructure<Model, Model['identifiersFields'][number]>> = {\n tableName: string\n model: BaseModelBuilder<Model>\n fields: HasuraGraphQLFields<Model>\n endpoint: string\n interceptors?: HasuraGraphQLInterceptors\n authOptions: HasuraGraphQLAuthOptions\n}\n\nexport const withHasuraGraphQL = <\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n T extends MixinCtor = MixinCtor,\n>(\n MixinBase: T,\n): MixinCtor<GraphQLRepository<MBase>, MergeConstructorParams<any[], HasuraConstructorParams<MBase>[]>> => {\n return class HasuraGraphQLMixin extends MixinBase implements GraphQLRepository<MBase> {\n tableName: string\n endpoint: string\n authOptions: HasuraGraphQLAuthOptions\n interceptors: HasuraGraphQLInterceptors\n model: BaseModelBuilder<MBase>\n fields: HasuraGraphQLFields<MBase>\n logger: DebugHelper\n\n get headers(): HasuraGraphQLHeaders {\n return {\n 'Content-Type': 'application/json',\n ...(isNil(this.authOptions?.authToken) ? {} : { Authorization: this.authOptions?.authToken }),\n ...(isNil(this.authOptions?.adminSecret) ? {} : { 'X-Hasura-Admin-Secret': this.authOptions?.adminSecret }),\n ...(isNil(this.authOptions?.authRole)\n ? {}\n : {\n 'X-Hasura-Role': this.authOptions.authRole.role,\n 'X-Hasura-User-Id': this.authOptions?.authRole?.userId,\n }),\n }\n }\n\n constructor(...params: any[]) {\n const options: HasuraConstructorParams<MBase> = params[0]\n\n super(...params)\n\n this.tableName = options.tableName\n this.endpoint = options.endpoint\n this.authOptions = options.authOptions\n this.model = options.model\n this.fields = options.fields || (this.model.identifiersFields as HasuraGraphQLFields<MBase>)\n this.logger = DebugHelper.from(this)\n }\n\n async mutation<ReturnFields = any>(\n operation: string | IOperation,\n fields?: string[] | HasuraGraphQLFields<MBase>,\n variables?: VariableOptions,\n ): Promise<ReturnFields> {\n const resultQuery = mutation({\n operation,\n variables,\n fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fields as HasuraGraphQLFields<MBase>),\n })\n\n return this.fetch(resultQuery)\n }\n\n async query<ReturnFields = any>(\n operation: string | IOperation | GraphQLParams<MBase>[],\n fields?: string[] | HasuraGraphQLFields<MBase>,\n variables?: VariableOptions,\n ): Promise<ReturnFields> {\n const builded = this.buildHasuraQueryFields({\n operation,\n fields: fields as HasuraGraphQLFields<MBase>,\n variables,\n })\n const interpected = (await this.interceptors?.request?.(builded)) || builded\n const resultQuery = query(interpected)\n const result = await this.fetch(resultQuery)\n\n return (await this.interceptors?.response?.(result, interpected)) || result\n }\n\n async fetch<ReturnFields = any>(params: { variables: any; query: string }): Promise<ReturnFields> {\n this.logger.with('params').log(params)\n\n const headers = this.headers\n const { data: result } = await axios({\n url: `${this.endpoint}`,\n method: 'POST',\n data: params,\n headers,\n })\n\n if (!isNil(result.errors)) throw new Error(JSON.stringify(result.errors))\n\n this.logger.with('returns').log(result)\n\n return result.data\n }\n\n getAttributeGraphQLTypeOf<FieldType>(value: FieldType): string {\n if (isUUID(value as any)) return 'uuid'\n if (isString(value)) return 'String'\n if (isBoolean(value)) return 'Boolean'\n if (value instanceof Date) return 'timestamptz'\n if (isInteger(value)) return 'Int'\n if (isNumber(value)) return 'numeric'\n\n throw new Error('Type not implemented yet')\n }\n\n checkIfIsDateTimeAndParse(value: string): Date | string {\n if (!/^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/.test(value)) return value\n\n const date = parseISO(value)\n\n if (isNaN(date.getTime())) return value\n\n return date\n }\n\n convertDataFromHasura(\n data: Record<string, string | number>,\n fields?: string[] | HasuraGraphQLFields<MBase>,\n ): MBase {\n const plain = GraphQLFieldHelper.ConvertFieldValueFrom(\n data,\n (fields as HasuraGraphQLFields<MBase>) || this.fields,\n )\n\n return this.model.toInstance(plain)\n }\n\n convertDataToHasura(instance: MBase, update = false): Record<string, string | number> {\n return GraphQLFieldHelper.ConvertFieldValueTo(instance, this.fields, update)\n }\n\n buildHasuraQueryFields({\n operation,\n fields,\n variables,\n }: {\n operation: string | IOperation | GraphQLParams<MBase>[]\n fields?: HasuraGraphQLFields<MBase>\n variables?: VariableOptions\n }): QueryBuilderOptions | QueryBuilderOptions[] {\n return GraphQLFieldHelper.CheckIsGraphQLParams(operation)\n ? operation.map((option) => ({\n operation: option.operation,\n variables: option.variables,\n fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(option.fields),\n }))\n : {\n operation,\n variables,\n fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fields),\n }\n }\n }\n}\n","import {\n BaseModel,\n ModelBaseStructure,\n NonFunctionAndIdentifierProperties,\n NonFunctionAndIdentifierPropertyNames,\n RepositoryUpdateParams,\n UpdateOptionActions,\n UpdateOptions,\n UpdateRepository,\n} from '../../../domain'\nimport { DebugHelper, is, isNil, MergeConstructorParams, MixinCtor } from '../../../utils'\nimport { GraphQLRepository, HasuraGraphQLFields } from '../types'\n\nimport { AttributeOptionHelper } from './helpers'\n\nexport type UpdateHasuraGraphQLRepositoryType<\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n> = UpdateRepository<MBase> & {\n paramsToPlain(params: RepositoryUpdateParams<MBase>): Partial<MBase>\n}\n\nexport type UpdateConstructorParams = {\n updateGraphQLOperation?: string\n updateGraphQLObjectType?: string\n updateGraphQLPKType?: string\n}\n\nexport const withUpdateHasuraGraphQL = <\n MBase extends ModelBaseStructure<MBase>,\n TMixinBase extends MixinCtor<GraphQLRepository<MBase>>,\n>(\n MixinBase: MixinCtor<GraphQLRepository<MBase>> & TMixinBase,\n): MixinCtor<\n GraphQLRepository<MBase> & UpdateHasuraGraphQLRepositoryType<MBase> & InstanceType<TMixinBase>,\n MergeConstructorParams<[UpdateConstructorParams, ...any[]], ConstructorParameters<TMixinBase>>\n> => {\n const getValueByAction = (options: UpdateOptions<MBase>): unknown => {\n if (options instanceof BaseModel) return options.toPlain()\n if (isNil(options?.action)) return options\n if ([UpdateOptionActions.REMOVE_FIELD.toString(), UpdateOptionActions.NULL.toString()].includes(options.action))\n return null\n\n return options.value\n }\n\n return class UpdateHasuraGraphQLMixin extends MixinBase implements UpdateRepository<MBase> {\n updateGraphQLOperation: string\n updateGraphQLObjectType: string\n updateGraphQLPKType: string\n\n constructor(...params: any[]) {\n const options: UpdateConstructorParams = params?.[0]\n\n super(...params)\n\n this.updateGraphQLOperation = options?.updateGraphQLOperation || `update_${this.tableName}_by_pk`\n this.updateGraphQLObjectType = options?.updateGraphQLObjectType || `${this.tableName}_set_input`\n this.updateGraphQLPKType = options?.updateGraphQLPKType || `${this.tableName}_pk_columns_input`\n }\n\n async update(data: RepositoryUpdateParams<MBase>): Promise<MBase> {\n this.logger = DebugHelper.from(this, 'update')\n\n const plainData = this.paramsToPlain(data)\n\n await this.mutation(\n this.updateGraphQLOperation,\n this.model.identifiersFields.map(\n (field) => AttributeOptionHelper.FindByAttribute(field, this.fields).columnName,\n ) as HasuraGraphQLFields<MBase>,\n {\n _set: {\n type: this.updateGraphQLObjectType,\n value: this.convertDataToHasura(this.model.toInstance(plainData), true),\n required: true,\n },\n pk_columns: { type: this.updateGraphQLPKType, value: this.getUpdateModelKeys(plainData), required: true },\n },\n )\n\n return this.model.toInstance(plainData)\n }\n\n paramsToPlain(params: RepositoryUpdateParams<MBase>): Partial<MBase> {\n const model = this.model\n\n if (model.isModel(params)) return params.toPlain()\n\n return Object.keys(params).reduce(\n (data, currentKey) => ({\n ...data,\n ...(params[currentKey as keyof RepositoryUpdateParams<MBase>] !== undefined && {\n [currentKey]: getValueByAction(\n is<UpdateOptions<MBase>>(params[currentKey as keyof RepositoryUpdateParams<MBase>]),\n ),\n }),\n }),\n {},\n )\n }\n\n getUpdateModelKeys(data: Partial<MBase>): NonFunctionAndIdentifierProperties<MBase> {\n const instance = this.model.toInstance(data)\n\n return this.model.identifiersFields.reduce((ids, identifier) => {\n const identifierBinded: Extract<\n NonFunctionAndIdentifierPropertyNames<MBase>,\n MBase['identifiersFields'][number]\n > = identifier\n\n if (isNil(instance.identifier[identifierBinded])) return ids\n\n const columnOption = AttributeOptionHelper.FindByAttribute<MBase, NonFunctionAndIdentifierPropertyNames<MBase>>(\n identifierBinded,\n this.fields,\n )\n const value = columnOption?.to?.(data[identifierBinded], instance) || data[columnOption.attributeName]\n\n return {\n ...ids,\n [columnOption.columnName]: value,\n }\n }, {} as NonFunctionAndIdentifierProperties<MBase>)\n }\n } as any\n}\n","import {\n GetRepository,\n GetRepositoryParams,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertyNames,\n} from '../../../domain'\nimport { NotFoundError } from '../../../errors'\nimport { DebugHelper, MixinCtor, isNil } from '../../../utils'\nimport { GraphQLRepository } from '../types'\n\nimport { AttributeOptionHelper } from './helpers'\n\nexport type GetConstructorParams = {\n getGraphQLOperation?: string\n}\n\nexport const withGetHasuraGraphQL = <\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n TMixinBase extends MixinCtor<GraphQLRepository<MBase>>,\n>(\n MixinBase: MixinCtor<GraphQLRepository<MBase>> & TMixinBase,\n) => {\n return class GetHasuraGraphQLMixin extends MixinBase implements GetRepository<MBase> {\n getGraphQLOperation: string\n\n constructor(...params: any[]) {\n const options: GetConstructorParams = params?.[0]\n\n super(...params)\n\n this.getGraphQLOperation = options?.getGraphQLOperation || `${this.tableName}_by_pk`\n }\n\n async get(identifiers: GetRepositoryParams<MBase>): Promise<MBase> {\n this.logger = DebugHelper.from(this, 'get')\n\n const instance = this.model.toInstance(identifiers)\n const result = await this.query(\n this.getGraphQLOperation,\n this.fields,\n this.model.identifiersFields.reduce((ids, identifier) => {\n const identifierBinded: Extract<\n NonFunctionAndIdentifierPropertyNames<MBase>,\n MBase['identifiersFields'][number]\n > = identifier\n\n if (isNil(instance[identifierBinded])) return ids\n\n const columnOption = AttributeOptionHelper.FindByAttribute(identifier, this.fields)\n const value =\n columnOption?.to?.(identifiers[identifier as keyof typeof identifiers], instance) ||\n identifiers[identifier as keyof typeof identifiers]\n\n return {\n ...ids,\n [columnOption.columnName]: {\n type: this.getAttributeGraphQLTypeOf(columnOption.type || value),\n value,\n required: true,\n },\n }\n }, {}),\n )\n const data = result[this.getGraphQLOperation]\n\n if (isNil(data)) throw new NotFoundError(`${instance.constructor.name} not found`)\n\n return this.convertDataFromHasura(result[this.getGraphQLOperation])\n }\n }\n}\n","import {\n FindRepository,\n FindRepositoryParams,\n ModelBaseStructure,\n NonFunctionAndIdentifierPropertyNames,\n RepositoryFindResult,\n RepositoryOrderBy,\n} from '../../../domain'\nimport { DebugHelper, isNil, MixinCtor, set } from '../../../utils'\nimport { GraphQLParams, GraphQLRepository, HasuraGraphQLFields } from '../types'\nimport { AttributeOptionHelper, BindFilterQueryHelper } from './helpers'\n\nexport const withFindHasuraGraphQL = <\n MBase extends ModelBaseStructure<MBase, MBase['identifiersFields'][number]>,\n TMixinBase extends MixinCtor<GraphQLRepository<MBase>>,\n>(\n MixinBase: MixinCtor<GraphQLRepository<MBase>> & TMixinBase,\n) => {\n return class FindHasuraGraphQLMixin extends MixinBase implements FindRepository<MBase> {\n async find(params?: FindRepositoryParams<MBase>): Promise<RepositoryFindResult<MBase>> {\n this.logger = DebugHelper.from(this, 'find')\n\n const { filters, limits, orderBy, options } = params || {}\n const enableCount = options?.enableCount ?? true\n const variablesFilters = isNil(filters)\n ? {}\n : {\n where: {\n value: BindFilterQueryHelper.MakeGraphQLWhere(filters, this.fields),\n type: `${this.tableName}_bool_exp`,\n required: true,\n },\n }\n const variablesCount = {\n ...(isNil(orderBy)\n ? {}\n : {\n order_by: {\n type: `${this.tableName}_order_by!`,\n list: true,\n value: this.bindOrderByAttributes(orderBy, this.fields),\n },\n }),\n ...variablesFilters,\n }\n const variables = {\n ...(isNil(limits) ? {} : limits),\n ...variablesCount,\n }\n const aggregateFields = [\n ...(enableCount ? ['count'] : []),\n ...this.bindAggretageAttributes(params.options, this.fields),\n ]\n const result = await this.query([\n {\n operation: this.tableName,\n fields: params.fields\n ? params.fields\n .map(\n (fieldName) =>\n this.fields.find((fieldOption) => fieldOption === fieldName) ??\n this.fields.find((fieldOption) => Object.keys(fieldOption).shift() === fieldName),\n )\n .filter(Boolean)\n : this.fields,\n variables,\n },\n ...(aggregateFields.length > 0\n ? [\n {\n operation: `${this.tableName}_aggregate`,\n fields: [\n {\n aggregate: aggregateFields,\n },\n ],\n variables: variablesCount,\n } as GraphQLParams<MBase>,\n ]\n : []),\n ...((!params.limits?.offset &&\n params.options?.distinct?.map((distinct) => {\n const distinctOption =\n this.fields.find((fieldOption) => fieldOption === distinct) ??\n this.fields.find((fieldOption) => Object.keys(fieldOption).shift() === distinct)\n const fieldName = Object.values(distinctOption).shift()?.columnName || distinct\n\n return {\n operation: {\n name: `${this.tableName}`,\n alias: `${this.tableName}_${distinct.toString()}_distinct`,\n },\n fields: [distinctOption],\n variables: {\n ...variablesFilters,\n [`${this.tableName}_${fieldName}_distinct`]: {\n type: `${this.tableName}_select_column!`,\n list: true,\n value: fieldName,\n name: 'distinct_on',\n },\n },\n } as GraphQLParams<MBase>\n })) ||\n []),\n ])\n const data: MBase[] = result[this.tableName].map((row: Record<string, string | number>) =>\n this.convertDataFromHasura(row),\n )\n\n return {\n data,\n count: enableCount ? result[`${this.tableName}_aggregate`].aggregate.count : Infinity,\n ...(options?.minimal?.length\n ? {\n minimal: options.minimal.reduce(\n (minimals, current) => ({\n ...(minimals as any),\n ...set(\n minimals as any,\n current as any,\n result[`${this.tableName}_aggregate`].aggregate.min[\n AttributeOptionHelper.FindByAttribute(\n current.toString().split('.').pop() as NonFunctionAndIdentifierPropertyNames<MBase>,\n this.fields,\n )?.columnName || (current as any)\n ],\n ),\n }),\n {},\n ) as RepositoryFindResult<MBase>['minimal'],\n }\n : {}),\n ...(options?.maximum?.length\n ? {\n maximum: options.maximum.reduce(\n (maximums, current) => ({\n ...(maximums as any),\n ...set(\n maximums as any,\n current as any,\n result[`${this.tableName}_aggregate`].aggregate.max[\n AttributeOptionHelper.FindByAttribute(\n current.toString().split('.').pop() as NonFunctionAndIdentifierPropertyNames<MBase>,\n this.fields,\n )?.columnName || (current as any)\n ],\n ),\n }),\n {},\n ) as RepositoryFindResult<MBase>['maximum'],\n }\n : {}),\n ...(!params.limits?.offset &&\n options?.distinct?.length && {\n distinct: options?.distinct.reduce((distinct, current) => {\n const distinctOption =\n this.fields.find((fieldOption) => fieldOption === current) ??\n this.fields.find((fieldOption) => Object.keys(fieldOption).shift() === current)\n const fieldName = Object.values(distinctOption).shift()?.columnName || current\n\n return {\n ...distinct,\n [current.toString()]: result[`${this.tableName}_${current.toString()}_distinct`].map(\n (obj: Record<string, string | number>) => obj[fieldName],\n ),\n }\n }, {} as any),\n }),\n }\n }\n\n bindOrderByAttributes = (orderBy: RepositoryOrderBy<MBase>, fields: HasuraGraphQLFields<MBase>) =>\n Object.keys(orderBy).reduce(\n (acc, current) => [\n ...acc,\n {\n [AttributeOptionHelper.FindByAttribute(current as NonFunctionAndIdentifierPropertyNames<MBase>, fields)\n .columnName]:\n orderBy[current as NonFunctionAndIdentifierPropertyNames<MBase>] === 'asc'\n ? 'asc_nulls_last'\n : 'desc_nulls_last',\n },\n ],\n [],\n )\n\n bindAggretageAttributes = (\n aggregates: {\n minimal?: FindRepositoryParams<MBase>['options']['minimal']\n maximum?: FindRepositoryParams<MBase>['options']['maximum']\n },\n fields: HasuraGraphQLFields<MBase>,\n ) => [\n ...(aggregates?.minimal?.length\n ? [\n {\n min: this.bindAttributesToColumns(aggregates?.minimal, fields),\n },\n ]\n : []),\n ...(aggregates?.maximum?.length\n ? [\n {\n max: this.bindAttributesToColumns(aggregates?.maximum, fields),\n },\n ]\n : []),\n ]\n\n bindDistinctAttributes = (\n distinct: FindRepositoryParams<MBase>['options']['distinct'],\n fields: HasuraGraphQLFields<MBase>,\n ) => this.bindAttributesToColumns(distinct, fields)\n\n bindAttributesToColumns = (\n attributes: Array<NonFunctionAndIdentifierPropertyNames<MBase> | {}>,\n fields: HasuraGraphQLFields<MBase>,\n ) =>\n attributes.map(\n (attr) =>\n AttributeOptionHelper.FindByAttribute(\n attr.toString().split('.').pop() as NonFunctionAndIdentifierPropertyNames<MBase>,\n fields,\n )?.columnName || attr,\n )\n }\n}\n","import { CrudRepository, ModelBaseStructure } from '../../../domain'\nimport { MergeConstructorParams, MixinCtor } from '../../../utils'\nimport { GraphQLRepository } from '../types'\n\nimport { CreateConstructorParams, withCreateHasuraGraphQL } from './with-create-hasura-graphql.mixin'\nimport { DeleteConstructorParams, withDeleteHasuraGraphQL } from './with-delete-hasura-graphql.mixin'\nimport { withFindHasuraGraphQL } from './with-find-hasura-graphql.mixin'\nimport { GetConstructorParams, withGetHasuraGraphQL } from './with-get-hasura-graphql.mixin'\nimport { HasuraConstructorParams } from './with-hasura-graphql.mixin'\nimport {\n UpdateConstructorParams,\n UpdateHasuraGraphQLRepositoryType,\n withUpdateHasuraGraphQL,\n} from './with-update-hasura-graphql.mixin'\n\nexport const withCrudHasuraGraphQL = <\n TBase extends ModelBaseStructure<TBase, TBase['identifiersFields'][number]>,\n Repository = CrudRepository<TBase>,\n TMixinBase extends MixinCtor = MixinCtor,\n>(\n MixinBase: MixinCtor<GraphQLRepository<TBase>> & TMixinBase,\n): MixinCtor<\n GraphQLRepository<TBase> & Repository & UpdateHasuraGraphQLRepositoryType<TBase>,\n MergeConstructorParams<\n [\n HasuraConstructorParams<TBase> &\n CreateConstructorParams &\n DeleteConstructorParams &\n GetConstructorParams &\n UpdateConstructorParams,\n ...any[],\n ],\n ConstructorParameters<TMixinBase>\n >\n> => {\n return class CrudHasuraGraphQLMixin\n extends withUpdateHasuraGraphQL(\n withGetHasuraGraphQL(\n withFindHasuraGraphQL(\n withDeleteHasuraGraphQL(withCreateHasuraGraphQL(MixinBase as MixinCtor<GraphQLRepository<TBase>>)),\n ),\n ),\n )\n implements CrudRepository<TBase> {} as any\n}\n","import { Category } from '../../../domain'\n\nexport class CategoryHasuraGraphQL extends Category {\n firestoreId?: string\n brandCondition?: string\n tagCondition?: string[]\n}\n","import { Type } from 'class-transformer'\nimport { Product } from '../../../domain'\nimport { KitProductHasuraGraphQL } from './kit-product-hasura-graphql'\n\nexport class ProductHasuraGraphQL extends Product {\n firestoreId?: string\n fullPrice?: number\n subscriberDiscountPercentage?: number\n subscriberPrice?: number\n productId?: number\n differentials?: string\n whoMustUse?: string\n howToUse?: string\n brandDescription?: string\n categoryId?: number\n ingredients?: string\n hasStock?: boolean\n intGender?: number\n\n @Type(() => KitProductHasuraGraphQL)\n override kitProducts?: KitProductHasuraGraphQL[]\n}\n","import { Type } from 'class-transformer'\n\nimport { KitProduct } from '../../../domain'\n\nimport { ProductHasuraGraphQL } from './product-hasura-graphql'\n\nexport class KitProductHasuraGraphQL extends KitProduct {\n @Type(() => ProductHasuraGraphQL)\n override kit: ProductHasuraGraphQL\n\n @Type(() => ProductHasuraGraphQL)\n override product: ProductHasuraGraphQL\n}\n","import { Variant } from '../../../domain'\n\nexport class VariantHasuraGraphQL extends Variant {\n firestoreId?: string\n fullPrice?: number\n subscriberDiscountPercentage?: number\n subscriberPrice?: number\n hasStock?: boolean\n\n name? = ''\n hasVariants? = false\n}\n","import { CategoryCollectionChildren } from '../../../../domain'\nimport { CategoryCollectionChildrenRepository } from '../../../../domain/catalog/repositories/category-collection-children.repository'\nimport { Base } from '../../../../utils'\nimport { HasuraConstructorParams, withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\n\nexport class CategoryCollectionChildrenHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<CategoryCollectionChildren>(Base))\n implements CategoryCollectionChildrenRepository\n{\n constructor({\n endpoint,\n authOptions,\n interceptors,\n }: Pick<HasuraConstructorParams<CategoryCollectionChildren>, 'endpoint' | 'authOptions' | 'interceptors'>) {\n super({\n tableName: 'category_collection_children',\n model: CategoryCollectionChildren,\n endpoint,\n authOptions,\n interceptors,\n fields: [\n { collectionId: { columnName: 'collection_id' } },\n { categoryId: { columnName: 'category_id' } },\n 'name',\n 'slug',\n 'reference',\n { parentCollectionId: { columnName: 'parent_collection_id' } },\n { parentCategoryId: { columnName: 'parent_category_id' } },\n {\n parent: {\n columnName: 'parent',\n foreignKeyColumn: { collectionId: 'parentCollectionId', categoryId: 'parentCategoryId' },\n fields: [\n { collectionId: { columnName: 'collection_id' } },\n { categoryId: { columnName: 'category_id' } },\n 'name',\n 'slug',\n 'reference',\n { parentCollectionId: { columnName: 'parent_collection_id' } },\n { parentCategoryId: { columnName: 'parent_category_id' } },\n ],\n },\n },\n ],\n })\n }\n}\n","import { CategoryFilter } from '../../../../domain'\nimport { CategoryFilterRepository } from '../../../../domain/catalog/repositories'\nimport { Base } from '../../../../utils'\nimport { HasuraConstructorParams, withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\n\nexport class CategoryFilterHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<CategoryFilter>(Base))\n implements CategoryFilterRepository\n{\n constructor({\n endpoint,\n authOptions,\n interceptors,\n }: Pick<HasuraConstructorParams<CategoryFilter>, 'endpoint' | 'authOptions' | 'interceptors'>) {\n super({\n tableName: 'category_filter',\n model: CategoryFilter,\n endpoint,\n authOptions,\n interceptors,\n fields: [\n 'id',\n { filterId: { columnName: 'filter_id' } },\n { categoryId: { columnName: 'category_id' } },\n {\n filter: {\n columnName: 'filter',\n foreignKeyColumn: { id: 'filterId' },\n fields: [\n 'id',\n 'description',\n 'slug',\n 'enabled',\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n {\n options: {\n columnName: 'options',\n foreignKeyColumn: { filterId: 'id' },\n fields: [\n 'id',\n { filterId: { columnName: 'filter_id' } },\n 'description',\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n ],\n },\n },\n ],\n },\n },\n {\n category: {\n columnName: 'category',\n foreignKeyColumn: { id: 'categoryId' },\n fields: [\n 'id',\n 'description',\n {\n products: {\n columnName: 'products',\n fields: ['product_id'],\n from: (value: { product_id: number }[]) => value.map((product) => product.product_id.toString()),\n to: (productIds: string[]) =>\n productIds.map((productId) => ({\n product_id: +productId,\n })),\n },\n },\n {\n childrenProducts: {\n columnName: 'children_products',\n foreignKeyColumn: { category_id: 'id' },\n fields: [\n 'id',\n 'name',\n 'slug',\n {\n categories: {\n columnName: 'categories',\n fields: ['category_id'],\n bindPersistData: (value) => ({\n categories: { data: value.map((category: string) => ({ category_id: +category })) },\n }),\n to: (categories: string[]) => categories.map((categoryId) => +categoryId),\n from: (categories: { category_id: number }[]) =>\n categories?.map((category) => category?.category_id?.toString()) || [],\n },\n },\n ],\n },\n },\n ],\n },\n },\n ],\n })\n }\n\n deleteByCategory(categoryId: number): Promise<any> {\n return this.mutation('delete_category_filter', ['affected_rows'], {\n where: {\n type: 'category_filter_bool_exp',\n required: true,\n value: { category_id: { _eq: categoryId } },\n },\n })\n }\n\n deleteByCategoryAndFilter(categoryId: number, filterId: number): Promise<any> {\n return this.mutation('delete_category_filter', ['affected_rows'], {\n where: {\n type: 'category_filter_bool_exp',\n required: true,\n value: { category_id: { _eq: categoryId }, filter_id: { _eq: filterId } },\n },\n })\n }\n}\n","import {\n Category,\n CategoryMetadata,\n CategoryRepository,\n CreateRepositoryParams,\n Filter,\n GetRepositoryParams,\n Product,\n ProductMetadata,\n Shops,\n UpdateRepositoryParams,\n Where,\n} from '../../../../domain'\nimport { DuplicatedResultsError, NotFoundError } from '../../../../errors'\nimport { Base, omit } from '../../../../utils'\nimport { HasuraGraphQLColumnType } from '../../enums'\nimport { HasuraConstructorParams, withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\nimport { CategoryHasuraGraphQL } from '../../models'\nimport { CategoryFilterHasuraGraphQLRepository } from './category-filter-hasura-graphql.repository'\nimport { ProductHasuraGraphQLRepository } from './product-hasura-graphql.repository'\n\nexport class CategoryHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<CategoryHasuraGraphQL>(Base))\n implements CategoryRepository\n{\n constructor(\n {\n endpoint,\n authOptions,\n interceptors,\n }: Pick<HasuraConstructorParams<CategoryHasuraGraphQL>, 'endpoint' | 'authOptions' | 'interceptors'>,\n private readonly productRepository: ProductHasuraGraphQLRepository,\n private readonly categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,\n ) {\n super({\n tableName: 'category',\n model: Category,\n endpoint,\n authOptions,\n interceptors,\n fields: [\n { id: { columnName: 'id', to: (value: string) => +value, from: (value: number) => value.toString() } },\n { firestoreId: { columnName: 'firestore_id' } },\n 'name',\n 'description',\n 'image',\n 'published',\n 'shop',\n { shops: { columnName: 'shops', type: HasuraGraphQLColumnType.Jsonb } },\n 'slug',\n { brandCategory: { columnName: 'brand_category' } },\n { brandCategoryBanner: { columnName: 'brand_banner' } },\n { brandCategoryBannerMobile: { columnName: 'brand_banner_mobile' } },\n { brandLogo: { columnName: 'brand_logo' } },\n { brandCondition: { columnName: 'brand_condition' } },\n {\n conditions: {\n columnName: 'tag_condition',\n type: HasuraGraphQLColumnType.Jsonb,\n from: (tags: unknown, row: Record<'brand_condition', any>) => ({\n brand: row.brand_condition,\n tags: Array.isArray(tags) ? tags : [],\n }),\n bindPersistData: (value: CategoryHasuraGraphQL['conditions']) => {\n return {\n brand_condition: value.brand,\n tag_condition: value?.tags || [],\n }\n },\n bindFindFilter: (sentence: any) => {\n return {\n ...(sentence.brand ? { brand_condition: sentence.brand } : {}),\n ...(sentence.tags ? { tag_condition: sentence.tags } : {}),\n }\n },\n },\n },\n {\n filters: {\n columnName: 'filters',\n foreignKeyColumn: { filter_id: 'id' },\n fields: [{ filter: ['id', 'description', 'slug', 'enabled'] }],\n bindPersistData: (value: CategoryHasuraGraphQL['filters']) => ({\n filters: { data: value.map((filter) => ({ filter_id: filter.id })) },\n }),\n from: (filters: { filter: { id: number; description: string; slug: string; enabled: boolean } }[]) =>\n filters?.map((filter) => filter?.filter) || [],\n },\n },\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n {\n products: {\n columnName: 'products',\n fields: ['product_id'],\n from: (value: { product_id: number }[]) => value.map((product) => product.product_id.toString()),\n to: (productIds: string[]) =>\n productIds.map((productId) => ({\n product_id: +productId,\n })),\n },\n },\n {\n metadata: {\n columnName: 'metadata',\n fields: ['title', 'description'],\n bindPersistData: (value: ProductMetadata): Record<string, any> => ({\n metadata: { data: value },\n }),\n },\n },\n { isCollection: { columnName: 'is_collection' } },\n { isWishlist: { columnName: 'is_wishlist' } },\n 'reference',\n { parentId: { columnName: 'parent_id' } },\n {\n parent: {\n columnName: 'parent',\n foreignKeyColumn: { id: 'parentId' },\n fields: ['id', 'name', 'reference', 'slug'],\n },\n },\n ],\n })\n }\n\n override async create(params: CreateRepositoryParams<CategoryHasuraGraphQL>): Promise<CategoryHasuraGraphQL> {\n const { metadata, ...data } = params\n\n return super.create({ ...data, isWishlist: false, metadata: metadata || { description: null, title: null } })\n }\n\n override async get(identifiers: GetRepositoryParams<CategoryHasuraGraphQL>): Promise<CategoryHasuraGraphQL> {\n return Number.isNaN(+identifiers.id)\n ? (await this.find({ filters: { firestoreId: identifiers.id }, options: { enableCount: false } })).data?.[0]\n : super.get(identifiers)\n }\n\n override async update(params: UpdateRepositoryParams<CategoryHasuraGraphQL>): Promise<CategoryHasuraGraphQL> {\n const { products, id: checkId, metadata, filters, ...data } = params\n const plainData = this.paramsToPlain({ id: checkId })\n const id = await this.getId(plainData.id)\n const category = await super.update({ id, ...data, isWishlist: false })\n\n category.products = products && (await this.updateProducts(+id, { products }))\n category.metadata = metadata && (await this.updateMetadata(+id, { metadata }))\n category.filters = filters && (await this.updateFilters(+id, { filters }))\n\n return category\n }\n\n async getCategoryBySlug(slug: string, shop: Shops): Promise<Category> {\n if (!slug) return null\n\n const { data } = await this.find({\n filters: {\n slug,\n shops: { operator: Where.IN, value: [shop] },\n published: { operator: Where.EQUALS, value: true },\n },\n options: {\n enableCount: false,\n },\n })\n\n if (!data.length) throw new NotFoundError(`Category with slug ${slug} not found`)\n if (data.length > 1) throw new DuplicatedResultsError('Query returned duplicated values')\n\n return data.shift()\n }\n\n async getCategoryByShop(shop: string): Promise<Category[]> {\n if (!shop) return\n\n const { data } = await this.find({\n filters: {\n shops: { operator: Where.IN, value: [shop] },\n published: { operator: Where.EQUALS, value: true },\n isWishlist: { operator: Where.EQUALS, value: false },\n },\n options: {\n enableCount: false,\n },\n })\n\n return data\n }\n\n async getCategoriesForHome(\n categoryIds: string[],\n limit = 4,\n gender?: string,\n ): Promise<{ category: Category; products: Product[] }[]> {\n if (!categoryIds?.length) return []\n\n const categoriesFirestore = categoryIds.filter((categoryId) => Number.isNaN(+categoryId))\n const categoriesHasura = categoryIds.filter((categoryId) => +categoryId > 0)\n const categories = []\n\n if (categoriesFirestore.length)\n categories.push(\n ...(await this.find({\n filters: { firestoreId: { operator: Where.IN, value: categoriesFirestore.filter(Boolean) }, published: true },\n }).then(({ data }) => data)),\n )\n if (categoriesHasura.length)\n categories.push(\n ...(await this.find({\n filters: { id: { operator: Where.IN, value: categoriesHasura.filter(Boolean) }, published: true },\n }).then(({ data }) => data)),\n )\n\n if (!categories.length) return []\n\n const homeSections = await Promise.all(\n categories.map(async (category) => ({\n category,\n products: await this.mountCategory(category, { limit, hasStock: true, gender }),\n })),\n )\n\n return homeSections\n }\n\n async mountCategory(\n category: Category,\n options?: { limit?: number; hasStock?: boolean; gender?: string },\n ): Promise<Product[]> {\n if (!category?.products?.length) return []\n\n const products = []\n const { data: productsData } = await this.productRepository.find({\n filters: {\n id: { operator: Where.IN, value: category.products },\n published: true,\n ...(options?.hasStock ? { stock: { quantity: { operator: Where.GT, value: 0 } } } : {}),\n ...(options?.gender ? { tags: { operator: Where.IN, value: [options?.gender] } } : {}),\n },\n fields: [\n 'id',\n 'name',\n 'slug',\n 'images',\n 'miniatures',\n 'price',\n 'fullPrice',\n 'subscriberDiscountPercentage',\n 'subscriberPrice',\n 'stock',\n 'published',\n 'CEST',\n 'EAN',\n 'NCM',\n 'brand',\n 'costPrice',\n 'hasVariants',\n 'isKit',\n 'sku',\n 'rate',\n 'tags',\n 'type',\n 'shoppingCount',\n 'gender',\n 'createdAt',\n ],\n ...(options?.limit ? { limits: { limit: options?.limit } } : {}),\n options: { enableCount: false },\n })\n\n products.push(...productsData)\n\n return products\n }\n\n private async getId(id: string): Promise<string> {\n if (!Number.isNaN(+id)) return id\n\n const { data } = await this.find({ filters: { firestoreId: id }, options: { enableCount: false } })\n\n if (data?.[0]?.id) return data?.[0]?.id\n\n throw new NotFoundError(`Category with id ${id} not found`)\n }\n\n private async updateProducts(\n categoryId: number,\n { products }: Pick<UpdateRepositoryParams<CategoryHasuraGraphQL>, 'products'>,\n ): Promise<CategoryHasuraGraphQL['products']> {\n if ('action' in products && products.action === 'remove') {\n await this.mutation('delete_category_product', ['affected_rows'], {\n where: {\n type: 'category_product_bool_exp',\n required: true,\n value: { category_id: { _eq: categoryId } },\n },\n })\n\n return []\n }\n\n const plainData = this.paramsToPlain({ products })\n\n if (!plainData.products || plainData.products.length <= 0) return []\n\n await this.mutation('delete_category_product', ['affected_rows'], {\n where: {\n type: 'category_product_bool_exp',\n required: true,\n value: { category_id: { _eq: categoryId } },\n },\n })\n\n await this.mutation('insert_category_product', ['affected_rows'], {\n objects: {\n type: '[category_product_insert_input!]',\n required: true,\n value: plainData.products.map((productId) => ({ category_id: categoryId, product_id: productId })),\n },\n })\n\n return plainData.products\n }\n\n private async updateMetadata(\n categoryId: number,\n { metadata }: Pick<UpdateRepositoryParams<CategoryHasuraGraphQL>, 'metadata'>,\n ): Promise<CategoryMetadata> {\n const plainData = this.paramsToPlain({ metadata })\n\n if (!plainData.metadata) return null\n\n await this.mutation('update_category_metadata_by_pk', ['category_id'], {\n pk_columns: {\n value: { category_id: categoryId },\n type: 'category_metadata_pk_columns_input',\n required: true,\n },\n _set: {\n value: omit(metadata, ['category_id']),\n type: 'category_metadata_set_input',\n required: true,\n },\n })\n\n return plainData.metadata\n }\n\n private async updateFilters(\n categoryId: number,\n { filters }: Pick<UpdateRepositoryParams<CategoryHasuraGraphQL>, 'filters'>,\n ): Promise<Filter[]> {\n if ('action' in filters && filters.action === 'remove' && filters.value.length) {\n for (let i = 0; i < filters.value.length; i++) {\n await this.categoryFilterRepository.deleteByCategoryAndFilter(categoryId, filters.value[i].id)\n }\n\n return []\n }\n\n if ('action' in filters && filters.action === 'merge' && filters.value.length) {\n let filtersList = []\n\n const currentFilters = await this.categoryFilterRepository\n .find({\n filters: {\n categoryId,\n },\n })\n .then((res) => res.data)\n\n const currentFiltersId = currentFilters.map((f) => f.id)\n const filtersUpdatedId = filters.value.map((f) => f.id)\n\n const filterToBeDeleted = currentFiltersId.filter((c) => !filtersUpdatedId.includes(c))\n const filterToBeInserted = filtersUpdatedId.filter((c) => !currentFiltersId.includes(c))\n\n for (const filter of filterToBeDeleted) {\n const index = currentFilters.findIndex((f) => f.id == filter)\n if (index != -1) {\n currentFilters.splice(index, 1)\n }\n await this.categoryFilterRepository.deleteByCategoryAndFilter(categoryId, filter)\n }\n\n for (const filter of filterToBeInserted) {\n const newCategoryFilter = await this.categoryFilterRepository.create({\n filterId: filter,\n categoryId,\n })\n\n filtersList.push(filter)\n }\n\n return filters.value\n }\n\n if (Array.isArray(filters) && filters.length) {\n await this.categoryFilterRepository.deleteByCategory(categoryId)\n let filtersList = []\n\n for (let i = 0; i < filters.length; i++) {\n const newCategoryFilter = await this.categoryFilterRepository.create({\n filterId: filters[i].id,\n categoryId,\n })\n filtersList.push(newCategoryFilter)\n }\n\n return filters\n }\n }\n\n public async getChildren(parentId: number): Promise<Category[]> {\n const { category_tree } = await this.query('category_tree', ['id', 'name', 'parent_id'], {\n args: {\n type: 'category_tree_args',\n value: { parentid: parentId },\n required: true,\n },\n })\n\n return category_tree.map((category: Record<string, any>) => Category.toInstance(category))\n }\n\n public async isChild(id: number, parentId: number): Promise<boolean> {\n const categoryTree = await this.getChildren(parentId)\n\n return categoryTree.some((c) => c.id == id.toString())\n }\n}\n","import { DeleteRepositoryParams, Filter, UpdateRepositoryParams } from '../../../../domain'\nimport { FilterRepository } from '../../../../domain/catalog/repositories'\nimport { Base } from '../../../../utils'\nimport { HasuraConstructorParams, withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\nimport { CategoryFilterHasuraGraphQLRepository } from './category-filter-hasura-graphql.repository'\nimport { FilterOptionHasuraGraphQLRepository } from './filter-option-hasura-graphql.repository'\n\nexport class FilterHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<Filter>(Base))\n implements FilterRepository\n{\n constructor(\n {\n endpoint,\n authOptions,\n interceptors,\n }: Pick<HasuraConstructorParams<Filter>, 'endpoint' | 'authOptions' | 'interceptors'>,\n private readonly filterOptionRepository: FilterOptionHasuraGraphQLRepository,\n private readonly categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,\n ) {\n super({\n tableName: 'filter',\n model: Filter,\n endpoint,\n authOptions,\n interceptors,\n fields: [\n 'id',\n 'description',\n 'slug',\n 'enabled',\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n {\n options: {\n columnName: 'options',\n foreignKeyColumn: { filterId: 'id' },\n fields: [\n 'id',\n { filterId: { columnName: 'filter_id' } },\n 'description',\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n ],\n },\n },\n ],\n })\n }\n\n override async update(params: UpdateRepositoryParams<Filter>): Promise<Filter> {\n const { options, ...data } = params\n\n const filter = await super.update(data)\n\n filter.options = await this.updateOptions(+data.id, { options })\n\n return filter\n }\n\n async updateOptions(filterId: number, { options }: Pick<UpdateRepositoryParams<Filter>, 'options'>) {\n if (!options) return []\n\n if ('action' in options && options.action === 'remove' && options.value.length) {\n for (let i = 0; i < options.value.length; i++) {\n await this.filterOptionRepository.delete({ id: options.value[i].id })\n }\n\n return []\n }\n\n if ('action' in options && options.action === 'merge' && options.value.length) {\n let filterOptions = []\n\n for (let i = 0; i < options.value.length; i++) {\n try {\n const hasFilter = await this.filterOptionRepository.get({ id: options.value[i].id })\n if (hasFilter) filterOptions.push(hasFilter)\n } catch (error) {\n const newOption = await this.filterOptionRepository.create({ ...options.value[i], filterId })\n filterOptions.push(newOption)\n }\n }\n\n return filterOptions\n }\n\n if (Array.isArray(options) && options.length) {\n let filterOptions = []\n\n for (let i = 0; i < options.length; i++) {\n try {\n const hasFilter = await this.filterOptionRepository.get({ id: options[i].id })\n if (hasFilter) filterOptions.push(hasFilter)\n } catch (error) {\n const newOption = await this.filterOptionRepository.create({ ...options[i], filterId })\n filterOptions.push(newOption)\n }\n }\n }\n\n return []\n }\n\n override async delete(params: DeleteRepositoryParams<Filter>): Promise<void> {\n const { data: categoryFilters } = await this.categoryFilterRepository.find({\n filters: {\n filterId: params.id,\n },\n })\n\n if (categoryFilters.length) throw new Error('Erro: o filtro está associado a uma ou mais categoria(s)')\n\n await this.deleteOptions(+params.id)\n await super.delete({ id: +params.id })\n\n return\n }\n\n async deleteOptions(filterId: number): Promise<void> {\n await this.mutation('delete_filter_option', ['affected_rows'], {\n where: {\n type: 'filter_option_bool_exp',\n required: true,\n value: { filter_id: { _eq: filterId } },\n },\n })\n }\n}\n","import { FilterOption } from '../../../../domain'\nimport { FilterOptionRepository } from '../../../../domain/catalog/repositories'\nimport { Base } from '../../../../utils'\nimport { HasuraConstructorParams, withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\n\nexport class FilterOptionHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<FilterOption>(Base))\n implements FilterOptionRepository\n{\n constructor({\n endpoint,\n authOptions,\n interceptors,\n }: Pick<HasuraConstructorParams<FilterOption>, 'endpoint' | 'authOptions' | 'interceptors'>) {\n super({\n tableName: 'filter_option',\n model: FilterOption,\n endpoint,\n authOptions,\n interceptors,\n fields: [\n 'id',\n 'description',\n { filterId: { columnName: 'filter_id' } },\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n ],\n })\n }\n}\n","import {\n CreateRepositoryParams,\n FindRepositoryParams,\n GetRepositoryParams,\n NonFunctionPropertyNames,\n ProductGender,\n ProductMetadata,\n ProductRepository,\n ProductReview,\n RepositoryFindResult,\n ReviewStatusParams,\n ReviewWithProductData,\n RoundProductPricesHelper,\n ShopPrice,\n Shops,\n UpdateRepositoryParams,\n Where,\n} from '../../../../domain'\nimport { NotFoundError } from '../../../../errors'\nimport { Base, is, isNil, omit } from '../../../../utils'\nimport { HasuraGraphQLColumnType, HasuraGraphQLWhere } from '../../enums'\nimport { HasuraConstructorParams, withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\nimport { ProductHasuraGraphQL } from '../../models'\nimport { HasuraGraphQLFields } from '../../types'\n\ntype ProductReviewFields = {\n id?: string\n shop: Shops\n rate: number\n author?: string\n email?: string\n location?: string\n review?: string\n status?: boolean\n title?: string\n person_id?: number\n points?: number\n order_id?: string\n created_at?: Date\n updated_at?: Date\n}\n\nexport class ProductHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<ProductHasuraGraphQL>(Base))\n implements ProductRepository\n{\n private get reviewsFields(): any {\n return [\n 'id',\n 'shop',\n 'rate',\n 'author',\n 'email',\n 'location',\n 'review',\n 'status',\n 'title',\n { personId: { columnName: 'person_id' } },\n 'points',\n { orderId: { columnName: 'order_id' } },\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n ]\n }\n\n constructor({\n endpoint,\n authOptions,\n interceptors,\n }: Pick<HasuraConstructorParams<ProductHasuraGraphQL>, 'endpoint' | 'authOptions' | 'interceptors'>) {\n super({\n tableName: 'product',\n model: ProductHasuraGraphQL,\n endpoint,\n authOptions,\n interceptors,\n fields: [],\n })\n\n const commonFields: HasuraGraphQLFields<ProductHasuraGraphQL> = [\n { id: { columnName: 'id', to: (value: string) => +value, from: (value) => value.toString() } },\n { firestoreId: { columnName: 'firestore_id' } },\n { productId: { columnName: 'main_product_id' } },\n { CEST: { columnName: 'cest' } },\n { EAN: { columnName: 'ean' } },\n { NCM: { columnName: 'ncm' } },\n 'brand',\n { costPrice: { columnName: 'cost_price' } },\n {\n description: {\n columnName: 'description',\n from: (description, data) => ({\n description,\n differentials: data.differentials,\n whoMustUse: data.who_must_use,\n howToUse: data.how_to_use,\n brand: data.brand_description,\n ingredients: data.ingredients,\n }),\n bindFindFilter: (filters: any) => {\n return {\n ...(filters?.description && { description: filters.description }),\n ...(filters.differentials && { differentials: filters.differentials }),\n ...(filters.whoMustUse && {\n who_must_use: filters.whoMustUse,\n }),\n ...(filters.howToUse && {\n how_to_use: filters.howToUse,\n }),\n ...(filters.brand && {\n brand_description: filters.brand,\n }),\n ...(filters.ingredients && {\n ingredients: filters.ingredients,\n }),\n }\n },\n bindPersistData: (descriptionData: ProductHasuraGraphQL['description']) => ({\n ...(descriptionData?.description && { description: descriptionData.description }),\n ...(descriptionData.differentials && { differentials: descriptionData.differentials }),\n ...(descriptionData.whoMustUse && {\n who_must_use: descriptionData.whoMustUse,\n }),\n ...(descriptionData.howToUse && { how_to_use: descriptionData.howToUse }),\n ...(descriptionData.brand && { brand_description: descriptionData.brand }),\n ...(descriptionData.ingredients && { ingredients: descriptionData.ingredients }),\n }),\n },\n },\n { differentials: { columnName: 'differentials' } },\n { whoMustUse: { columnName: 'who_must_use' } },\n { howToUse: { columnName: 'how_to_use' } },\n { brandDescription: { columnName: 'brand_description' } },\n { ingredients: { columnName: 'ingredients' } },\n { hasVariants: { columnName: 'has_variants' } },\n {\n images: {\n columnName: 'images',\n to: (value: string[]) => (value?.length > 0 ? `{\"${value?.join?.(`\",\"`) || ''}\"}` : `{}`),\n },\n },\n {\n miniatures: {\n columnName: 'miniatures',\n to: (value: string[]) => (value?.length > 0 ? `{\"${value?.join?.(`\",\"`) || ''}\"}` : `{}`),\n },\n },\n 'name',\n {\n price: {\n columnName: 'price',\n from: (price, data): ShopPrice => ({\n price,\n fullPrice: data.full_price,\n subscriberDiscountPercentage: data.subscriber_discount_percentage,\n subscriberPrice: data.subscriber_price,\n }),\n bindFindFilter: (filters: any) => {\n return {\n ...((filters?.price || filters?.price === 0) && { price: filters.price }),\n ...((filters.fullPrice || filters.fullPrice === 0) && { full_price: filters.fullPrice }),\n ...((filters.subscriberDiscountPercentage || filters.subscriberDiscountPercentage === 0) && {\n subscriber_discount_percentage: filters.subscriberDiscountPercentage,\n }),\n ...((filters.subscriberPrice || filters.subscriberPrice === 0) && {\n subscriber_price: filters.subscriberPrice,\n }),\n }\n },\n bindPersistData: (priceData: ProductHasuraGraphQL['price']) => ({\n ...(priceData?.price >= 0 && { price: priceData.price }),\n ...(priceData.fullPrice >= 0 && { full_price: priceData.fullPrice }),\n ...(priceData.subscriberDiscountPercentage >= 0 && {\n subscriber_discount_percentage: priceData.subscriberDiscountPercentage,\n }),\n ...(priceData.subscriberPrice >= 0 && { subscriber_price: priceData.subscriberPrice }),\n }),\n },\n },\n { fullPrice: { columnName: 'full_price' } },\n { subscriberDiscountPercentage: { columnName: 'subscriber_discount_percentage' } },\n { subscriberPrice: { columnName: 'subscriber_price' } },\n 'published',\n 'sku',\n {\n stock: {\n columnName: 'stock',\n from: (quantity: number) => ({ quantity }),\n to: (value: ProductHasuraGraphQL['stock']) => (isNil(value?.quantity) ? value : value?.quantity),\n },\n },\n { hasStock: { columnName: 'has_stock' } },\n 'slug',\n 'type',\n 'video',\n 'weight',\n 'gender',\n { intGender: { columnName: 'int_gender' } },\n { tags: { columnName: 'tags', type: HasuraGraphQLColumnType.Jsonb } },\n { filters: { columnName: 'filters', type: HasuraGraphQLColumnType.Jsonb } },\n { isKit: { columnName: 'is_kit' } },\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n { rate: { columnName: 'rating' } },\n { reviewsTotal: { columnName: 'reviews_total' } },\n { shoppingCount: { columnName: 'shopping_count' } },\n { categoryId: { columnName: 'category_id' } },\n {\n category: {\n columnName: 'category',\n foreignKeyColumn: { id: 'categoryId' },\n fields: ['id', 'name', 'reference', 'slug'],\n },\n },\n ]\n\n this.fields = [\n ...commonFields,\n {\n categories: {\n columnName: 'categories',\n fields: ['category_id'],\n bindPersistData: (value: ProductHasuraGraphQL['categories']) => ({\n categories: { data: value.map((category) => ({ category_id: +category })) },\n }),\n to: (categories: string[]) => categories.map((categoryId) => +categoryId),\n from: (categories: { category_id: number }[]) =>\n categories?.map((category) => category?.category_id?.toString()) || [],\n },\n },\n {\n kitProducts: {\n columnName: 'kit_products',\n foreignKeyColumn: { productId: 'id' },\n fields: [\n { productId: { columnName: 'product_id' } },\n { kitProductId: { columnName: 'kit_product_id' } },\n 'quantity',\n { product: { columnName: 'product', foreignKeyColumn: { id: 'product_id' }, fields: commonFields } },\n ],\n },\n },\n {\n reviews: {\n columnName: 'reviews',\n foreignKeyColumn: { product_id: 'id' },\n fields: this.reviewsFields,\n },\n },\n {\n metadata: {\n columnName: 'metadata',\n fields: ['title', 'description'],\n bindPersistData: (value: ProductHasuraGraphQL['metadata']) => ({\n metadata: { data: value },\n }),\n },\n },\n ]\n }\n\n override async create(params: CreateRepositoryParams<ProductHasuraGraphQL>): Promise<ProductHasuraGraphQL> {\n const { metadata, ...data } = params\n const product = await super.create(\n omit({ ...data, metadata: metadata || { description: null, title: null } }, ['reviews']),\n )\n\n try {\n product.reviews = data.reviews && (await this.updateReviews(+product.id, data))\n } catch (error) {\n await this.delete({ id: product.id })\n\n throw error\n }\n\n return product\n }\n\n override async get(identifiers: GetRepositoryParams<ProductHasuraGraphQL>): Promise<ProductHasuraGraphQL> {\n const product = Number.isNaN(+identifiers.id)\n ? (await this.find({ filters: { firestoreId: identifiers.id }, options: { enableCount: false } })).data?.[0]\n : await super.get(identifiers)\n\n if (product.productId) throw new NotFoundError('Product not found, it is a variant')\n\n product.reviews = product.reviews || (await this.findReviewsByProduct(+product.id))\n\n return product\n }\n\n override async find(\n params?: FindRepositoryParams<ProductHasuraGraphQL>,\n ): Promise<RepositoryFindResult<ProductHasuraGraphQL>> {\n const { filters, fields, ...options } = params || {}\n const bindFields =\n fields ||\n (this.fields\n .map((field) => (typeof field === 'string' ? field : Object.keys(field).shift()))\n .filter((field) => field !== 'reviews') as NonFunctionPropertyNames<\n ProductHasuraGraphQL,\n keyof ProductHasuraGraphQL\n >[])\n\n if (options.options?.minimal?.includes('price'))\n options.options?.minimal.push('price.price', 'price.fullPrice', 'price.subscriberPrice')\n if (options.options?.maximum?.includes('price'))\n options.options?.maximum.push('price.price', 'price.fullPrice', 'price.subscriberPrice')\n\n options.options?.minimal?.splice(options.options?.minimal.indexOf('price'), 1)\n options.options?.maximum?.splice(options.options?.maximum.indexOf('price'), 1)\n\n return super.find({\n ...options,\n filters: { ...filters, productId: { operator: Where.ISNULL } },\n fields: [\n ...bindFields,\n ...(bindFields.includes('price')\n ? ([\n 'subscriberPrice',\n 'subscriberDiscountPercentage',\n 'fullPrice',\n ] as NonFunctionPropertyNames<ProductHasuraGraphQL>[])\n : []),\n ],\n })\n }\n\n async getBySlug(slug: string): Promise<ProductHasuraGraphQL> {\n const result = await this.find({\n filters: {\n slug,\n },\n fields: this.fields.map((field) =>\n typeof field === 'string' ? field : Object.keys(field).shift(),\n ) as NonFunctionPropertyNames<ProductHasuraGraphQL, keyof ProductHasuraGraphQL>[],\n options: {\n enableCount: false,\n },\n })\n\n const product = result?.data?.shift()\n\n RoundProductPricesHelper.roundProductPrices(product)\n\n return product\n }\n\n override async update(params: UpdateRepositoryParams<ProductHasuraGraphQL>): Promise<ProductHasuraGraphQL> {\n const { categories, kitProducts, reviews, id: checkId, rate, metadata, ...data } = params\n const plainData = this.paramsToPlain({ id: checkId })\n const id = await this.getId(plainData.id)\n const product = await super.update({ id, ...data })\n\n product.categories = categories && (await this.updateCategories(+id, { categories }))\n product.kitProducts = kitProducts && (await this.updateKitProducts(+id, { kitProducts }))\n product.reviews = reviews && (await this.updateReviews(+id, { reviews }))\n product.metadata = metadata && (await this.updateMetadata(+id, { metadata }))\n\n return product\n }\n\n async fetchReviews(status: ReviewStatusParams): Promise<ReviewWithProductData[]> {\n const reviewsExpression = {\n status:\n status === 'pending'\n ? { [HasuraGraphQLWhere.ISNULL]: true }\n : { [HasuraGraphQLWhere.EQUALS]: status === 'approved' },\n }\n const { product: data } = await this.query(\n 'product',\n ['id', 'name', 'sku', { reviews: { columnName: 'reviews', fields: this.reviewsFields } }],\n {\n where: { value: { reviews: reviewsExpression }, type: 'product_bool_exp', required: true },\n },\n )\n\n return data.reduce(\n (\n reviews: ReviewWithProductData[],\n product: Omit<ProductHasuraGraphQL, 'reviews'> & {\n reviews: Array<Record<'person_id' | 'order_id' | 'created_at' | 'updated_at' | 'status', any>>\n },\n ) => [\n ...reviews,\n ...product.reviews\n .filter(\n (review) =>\n (status === 'pending' && [undefined, null].includes(review.status)) ||\n (status === 'approved' && review.status === true) ||\n (status === 'rejected' && review.status === false),\n )\n .map((review) => ({\n ...this.bindReviewToModel(review),\n productId: product.id,\n productName: product.name,\n productSku: product.sku,\n })),\n ],\n [] as ReviewWithProductData[],\n )\n }\n\n async findCatalog(\n params: FindRepositoryParams<ProductHasuraGraphQL>,\n mainGender?: Extract<ProductGender, 'female' | 'male'>,\n ): Promise<RepositoryFindResult<ProductHasuraGraphQL>> {\n return this.find({\n ...params,\n filters: { ...params.filters, published: true },\n orderBy: {\n hasStock: 'desc',\n ...(!mainGender ? {} : { intGender: mainGender === 'female' ? 'desc' : 'asc' }),\n ...omit(params.orderBy, ['hasStock', 'intGender']),\n },\n })\n }\n\n private async updateCategories(\n productId: number,\n { categories }: Pick<UpdateRepositoryParams<ProductHasuraGraphQL>, 'categories'>,\n ): Promise<ProductHasuraGraphQL['categories']> {\n if ('action' in categories && categories.action === 'remove') {\n await this.mutation('delete_category_product', ['affected_rows'], {\n where: {\n type: 'category_product_bool_exp',\n required: true,\n value: { product_id: { _eq: productId } },\n },\n })\n\n return []\n }\n\n const plainData = this.paramsToPlain({ categories })\n\n if (!plainData.categories || plainData.categories.length <= 0) return []\n\n await this.mutation('delete_category_product', ['affected_rows'], {\n where: {\n type: 'category_product_bool_exp',\n required: true,\n value: { product_id: { _eq: productId } },\n },\n })\n\n await this.mutation('insert_category_product', ['affected_rows'], {\n objects: {\n type: '[category_product_insert_input!]',\n required: true,\n value: plainData.categories.map((categoryId) => ({ category_id: categoryId, product_id: productId })),\n },\n })\n\n return plainData.categories\n }\n\n private async updateKitProducts(\n productId: number,\n { kitProducts }: Pick<UpdateRepositoryParams<ProductHasuraGraphQL>, 'kitProducts'>,\n ): Promise<ProductHasuraGraphQL['kitProducts']> {\n const plainData = this.paramsToPlain({ kitProducts })\n\n await this.mutation('delete_product_kit', ['affected_rows'], {\n where: {\n type: 'product_kit_bool_exp',\n required: true,\n value: { kit_product_id: { _eq: productId } },\n },\n })\n\n await this.mutation('insert_product_kit', ['affected_rows'], {\n objects: {\n type: '[product_kit_insert_input!]',\n required: true,\n value: plainData.kitProducts.map((kitProduct) => ({\n kit_product_id: productId,\n product_id: kitProduct.productId || kitProduct.product.id,\n quantity: kitProduct.quantity,\n })),\n },\n })\n\n return plainData.kitProducts\n }\n\n private async updateReviews(\n productId: number,\n { reviews }: Pick<UpdateRepositoryParams<ProductHasuraGraphQL>, 'reviews'>,\n ): Promise<ProductReview[]> {\n if (!reviews) return []\n if ('action' in reviews && reviews.action === 'remove') {\n const reviewIds = await Promise.all(\n reviews.value.map(async (reviewData) => {\n const review = await this.findReview(reviewData, productId)\n\n return review?.id\n }),\n )\n\n await this.mutation('delete_product_review', ['affected_rows'], {\n where: { value: { id: { _in: reviewIds.filter(Boolean) } }, type: 'product_review_bool_exp', required: true },\n })\n\n return reviews.value.map((review, index) => !reviewIds[index] && review).filter(Boolean)\n }\n\n const plainData = this.paramsToPlain({ reviews })\n\n if (!plainData.reviews || plainData.reviews.length <= 0) return []\n\n return Promise.all(\n plainData.reviews.map(async (reviewData) => {\n const review = await this.findReview(reviewData, productId)\n\n if (review.id)\n return this.bindReviewToModel(\n (\n await this.mutation('update_product_review_by_pk', this.reviewsFields, {\n pk_columns: {\n value: { id: review.id },\n type: 'product_review_pk_columns_input',\n required: true,\n },\n _set: {\n value: omit(this.bindReviewToHasura(reviewData), ['id', 'product_id']),\n type: 'product_review_set_input',\n required: true,\n },\n })\n ).update_product_review_by_pk,\n )\n\n return this.bindReviewToModel(\n (\n await this.mutation('insert_product_review_one', this.reviewsFields, {\n object: {\n value: omit({ ...this.bindReviewToHasura(reviewData), product_id: productId }, ['id']),\n type: 'product_review_insert_input',\n required: true,\n },\n })\n ).insert_product_review_one,\n )\n }),\n )\n }\n\n private async updateMetadata(\n productId: number,\n { metadata }: Pick<UpdateRepositoryParams<ProductHasuraGraphQL>, 'metadata'>,\n ): Promise<ProductMetadata> {\n const plainData = this.paramsToPlain({ metadata })\n\n if (!plainData.metadata) return null\n\n await this.mutation('update_product_metadata_by_pk', ['product_id'], {\n pk_columns: {\n value: { product_id: productId },\n type: 'product_metadata_pk_columns_input',\n required: true,\n },\n _set: {\n value: omit(metadata, ['product_id']),\n type: 'product_metadata_set_input',\n required: true,\n },\n })\n\n return plainData.metadata\n }\n\n private async getId(id: string): Promise<string> {\n if (!Number.isNaN(+id)) return id\n\n const { data } = await this.find({ filters: { firestoreId: id }, options: { enableCount: false } })\n\n if (data?.[0]?.id) return data?.[0]?.id\n\n throw new NotFoundError(`Product with id ${id} not found`)\n }\n\n private async findReviewsByProduct(productId: number): Promise<ProductReview[]> {\n const { product_review: data } = await this.query('product_review', this.reviewsFields, {\n where: {\n value: {\n product_id: { _eq: productId },\n },\n type: 'product_review_bool_exp',\n required: true,\n },\n })\n\n return data && data.map((review: Record<string, any>) => this.bindReviewToModel(review))\n }\n\n private async findReview(review: ProductReview, productId: number): Promise<ProductReview> {\n if (review.id) return review\n\n let loadedReview: ProductReview\n\n if (review.personId) loadedReview = await this.getReviewByPersonId(review.personId, productId, review.orderId)\n if (!loadedReview && review.author && review.email)\n loadedReview = await this.getReviewByAuthorAndEmail(review.author, review.email, productId, review.orderId)\n\n return loadedReview || review\n }\n\n private async getReviewByPersonId(personId: number, productId: number, orderId?: string): Promise<ProductReview> {\n const { product_review: data } = await this.query('product_review', this.reviewsFields, {\n where: {\n value: {\n product_id: { _eq: productId },\n person_id: { _eq: personId },\n ...(orderId && { order_id: { _eq: orderId } }),\n },\n type: `product_review_bool_exp`,\n required: true,\n },\n })\n\n return data && data[0] && this.bindReviewToModel(data[0])\n }\n\n private async getReviewByAuthorAndEmail(\n author: string,\n email: string,\n productId: number,\n orderId?: string,\n ): Promise<ProductReview> {\n const { product_review: data } = await this.query('product_review', this.reviewsFields, {\n where: {\n value: {\n product_id: { _eq: productId },\n author: { _eq: author },\n email: { _eq: email },\n ...(orderId && { order_id: { _eq: orderId } }),\n },\n type: `product_review_bool_exp`,\n required: true,\n },\n })\n\n return data && data[0] && this.bindReviewToModel(data[0])\n }\n\n private bindReviewToModel = (\n plain: Record<'person_id' | 'order_id' | 'created_at' | 'updated_at', any>,\n ): ProductReview => ({\n ...is<ProductReview>(omit(plain, ['product_id', 'created_at', 'updated_at', 'person_id', 'order_id'])),\n createdAt: typeof plain.created_at === 'string' ? new Date(plain.created_at) : plain.created_at,\n updatedAt: typeof plain.updated_at === 'string' ? new Date(plain.updated_at) : plain.updated_at,\n personId: plain.person_id,\n orderId: plain.order_id,\n })\n\n private bindReviewToHasura = (review: ProductReview): ProductReviewFields => ({\n ...is<ProductReviewFields>(omit(review, ['productId', 'createdAt', 'updatedAt', 'personId', 'orderId'])),\n person_id: review.personId,\n order_id: review.orderId,\n })\n\n async cleanShoppingCountFromIds(ids: string[]): Promise<void> {\n return await this.mutation('update_product', ['affected_rows'], {\n where: {\n value: { id: { _nin: ids } },\n type: 'product_bool_exp',\n required: true,\n },\n _set: {\n value: { shopping_count: 0 },\n type: 'product_set_input',\n },\n })\n }\n}\n","import {\n FindRepositoryParams,\n GetRepositoryParams,\n RepositoryFindResult,\n ShopPrice,\n UpdateRepositoryParams,\n VariantRepository,\n Where,\n} from '../../../../domain'\nimport { NotFoundError } from '../../../../errors'\nimport { Base, isNil } from '../../../../utils'\nimport { HasuraGraphQLColumnType } from '../../enums'\nimport { HasuraConstructorParams, withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\nimport { VariantHasuraGraphQL } from '../../models'\n\nexport class VariantHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<VariantHasuraGraphQL>(Base))\n implements VariantRepository\n{\n constructor({\n endpoint,\n authOptions,\n interceptors,\n }: Pick<HasuraConstructorParams<VariantHasuraGraphQL>, 'endpoint' | 'authOptions' | 'interceptors'>) {\n super({\n tableName: 'product',\n model: VariantHasuraGraphQL,\n endpoint,\n authOptions,\n interceptors,\n fields: [\n { id: { columnName: 'id', to: (value: string) => +value, from: (value: number) => value.toString() } },\n { firestoreId: { columnName: 'firestore_id' } },\n {\n productId: {\n columnName: 'main_product_id',\n to: (value: string) => +value,\n from: (value: number) => value?.toString(),\n },\n },\n { EAN: { columnName: 'ean' } },\n { costPrice: { columnName: 'cost_price' } },\n {\n price: {\n columnName: 'price',\n from: (\n price: number,\n data: Record<'price' | 'full_price' | 'subscriber_discount_percentage' | 'subscriber_price', any>,\n ): ShopPrice => ({\n price,\n fullPrice: data.full_price,\n subscriberDiscountPercentage: data.subscriber_discount_percentage,\n subscriberPrice: data.subscriber_price,\n }),\n bindFindFilter: (sentence) => {\n const filters = Object.values(sentence).shift()\n\n return {\n ...((filters?.price || filters?.price === 0) && { price: filters.price }),\n ...((filters.fullPrice || filters.fullPrice === 0) && { full_price: filters.fullPrice }),\n ...((filters.subscriberDiscountPercentage || filters.subscriberDiscountPercentage === 0) && {\n subscriber_discount_percentage: filters.subscriberDiscountPercentage,\n }),\n ...((filters.subscriberPrice || filters.subscriberPrice === 0) && {\n subscriber_price: filters.subscriberPrice,\n }),\n }\n },\n bindPersistData: (priceData: VariantHasuraGraphQL['price']) => ({\n ...((priceData?.price || 0) >= 0 && { price: priceData.price }),\n ...((priceData?.fullPrice || 0) >= 0 && { full_price: priceData.fullPrice }),\n ...((priceData?.subscriberDiscountPercentage || 0) >= 0 && {\n subscriber_discount_percentage: priceData.subscriberDiscountPercentage,\n }),\n ...((priceData?.subscriberPrice || 0) >= 0 && { subscriber_price: priceData.subscriberPrice }),\n }),\n },\n },\n { fullPrice: { columnName: 'full_price' } },\n { subscriberDiscountPercentage: { columnName: 'subscriber_discount_percentage' } },\n { subscriberPrice: { columnName: 'subscriber_price' } },\n 'sku',\n {\n stock: {\n columnName: 'stock',\n from: (quantity: number) => ({ quantity }),\n to: (value: VariantHasuraGraphQL['stock']) => (isNil(value?.quantity) ? value : value?.quantity),\n },\n },\n { hasStock: { columnName: 'has_stock' } },\n 'weight',\n { name: { to: () => '', from: (): undefined => undefined } },\n { hasVariants: { columnName: 'has_variants', to: () => false, from: (): undefined => undefined } },\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n {\n grade: {\n columnName: 'grade',\n type: HasuraGraphQLColumnType.Jsonb,\n },\n },\n ],\n })\n }\n\n override async get(identifiers: GetRepositoryParams<VariantHasuraGraphQL>): Promise<VariantHasuraGraphQL> {\n const variant = Number.isNaN(+identifiers.id!)\n ? (await this.find({ filters: { firestoreId: identifiers.id } })).data?.[0]\n : await super.get(identifiers)\n\n if (!variant.productId) throw new NotFoundError(`Variant not found, it is a product`)\n\n return variant\n }\n\n override async find(\n params?: FindRepositoryParams<VariantHasuraGraphQL>,\n ): Promise<RepositoryFindResult<VariantHasuraGraphQL>> {\n const { filters, ...options } = params || {}\n\n return super.find({ ...options, filters: { productId: { operator: Where.ISNOTNULL }, ...filters } })\n }\n\n override async update(params: UpdateRepositoryParams<VariantHasuraGraphQL>): Promise<VariantHasuraGraphQL> {\n const { productId, id: checkId, ...data } = params\n const dataWithProductId = this.paramsToPlain({ id: checkId, productId })\n const id = await this.getId(dataWithProductId.id!)\n const product = await super.update({ id, ...data })\n\n product.productId = dataWithProductId.productId!\n\n return product\n }\n\n private async getId(id: string): Promise<string> {\n if (!Number.isNaN(+id)) return id\n\n const { data } = await this.find({ filters: { firestoreId: id }, options: { enableCount: false } })\n\n if (data?.[0]?.id) return data?.[0]?.id\n\n throw new NotFoundError(`Product with id ${id} not found`)\n }\n}\n","import {\n Category,\n CategoryMetadata,\n CreateRepositoryParams,\n GetRepositoryParams,\n Product,\n ProductMetadata,\n Shops,\n UpdateRepositoryParams,\n Where,\n Wishlist,\n WishlistRepository,\n} from '../../../../domain'\nimport { DuplicatedResultsError, NotFoundError } from '../../../../errors'\nimport { Base, omit } from '../../../../utils'\nimport { HasuraGraphQLColumnType } from '../../enums'\nimport { HasuraConstructorParams, withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\nimport { CategoryHasuraGraphQL } from '../../models'\nimport { CategoryFilterHasuraGraphQLRepository } from './category-filter-hasura-graphql.repository'\n\nexport class WishlistHasuraGraphQLRepository\n extends withCrudHasuraGraphQL(withHasuraGraphQL<Wishlist>(Base))\n implements WishlistRepository\n{\n constructor(\n {\n endpoint,\n authOptions,\n interceptors,\n }: Pick<HasuraConstructorParams<Wishlist>, 'endpoint' | 'authOptions' | 'interceptors'>,\n private readonly categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,\n ) {\n super({\n tableName: 'category',\n model: Wishlist,\n endpoint,\n authOptions,\n interceptors,\n fields: [\n { id: { columnName: 'id', to: (value: string) => +value, from: (value) => value.toString() } },\n { firestoreId: { columnName: 'firestore_id' } },\n 'name',\n 'description',\n 'image',\n 'published',\n 'shop',\n { shops: { columnName: 'shops', type: HasuraGraphQLColumnType.Jsonb } },\n 'slug',\n { brandCategory: { columnName: 'brand_category' } },\n { brandCategoryBanner: { columnName: 'brand_banner' } },\n { brandCategoryBannerMobile: { columnName: 'brand_banner_mobile' } },\n { brandLogo: { columnName: 'brand_logo' } },\n { brandCondition: { columnName: 'brand_condition' } },\n {\n conditions: {\n columnName: 'tag_condition',\n type: HasuraGraphQLColumnType.Jsonb,\n from: (tags: unknown, row) => ({ brand: row.brand_condition, tags: Array.isArray(tags) ? tags : [] }),\n bindPersistData: (value: CategoryHasuraGraphQL['conditions']) => {\n return {\n brand_condition: value.brand,\n tag_condition: value?.tags || [],\n }\n },\n bindFindFilter: (sentence: any) => {\n return {\n ...(sentence.brand ? { brand_condition: sentence.brand } : {}),\n ...(sentence.tags ? { tag_condition: sentence.tags } : {}),\n }\n },\n },\n },\n {\n filters: {\n columnName: 'filters',\n foreignKeyColumn: { filter_id: 'id' },\n fields: [{ filter: ['id', 'description', 'slug', 'enabled'] }],\n bindPersistData: (value: CategoryHasuraGraphQL['filters']) => ({\n filters: { data: value.map((filter) => ({ filter_id: filter.id })) },\n }),\n from: (filters: { filter: { id: number; description: string; slug: string; enabled: boolean } }[]) =>\n filters?.map((filter) => filter?.filter) || [],\n },\n },\n { createdAt: { columnName: 'created_at' } },\n { updatedAt: { columnName: 'updated_at' } },\n {\n products: {\n columnName: 'products',\n fields: ['product_id'],\n from: (value: { product_id: number }[]) => value.map((product) => product.product_id.toString()),\n to: (productIds: string[]) =>\n productIds.map((productId) => ({\n product_id: +productId,\n })),\n },\n },\n {\n metadata: {\n columnName: 'metadata',\n fields: ['title', 'description'],\n bindPersistData: (value: ProductMetadata) => ({\n metadata: { data: value },\n }),\n },\n },\n { isCollection: { columnName: 'is_collection' } },\n { isWishlist: { columnName: 'is_wishlist' } },\n 'reference',\n { parentId: { columnName: 'parent_id' } },\n {\n parent: {\n columnName: 'parent',\n foreignKeyColumn: { id: 'parentId' },\n fields: ['id', 'name', 'reference', 'slug'],\n },\n },\n { personId: { columnName: 'person_id' } },\n { personName: { columnName: 'person_name' } },\n { personPhoto: { columnName: 'person_photo' } },\n ],\n })\n }\n\n override async create(params: CreateRepositoryParams<Wishlist>): Promise<Wishlist> {\n const { metadata, ...data } = params\n\n return super.create({\n ...data,\n isWishlist: true,\n isCollection: true,\n brandCategory: false,\n metadata: metadata || { description: data.description, title: data.name },\n })\n }\n\n override async get(identifiers: GetRepositoryParams<Wishlist>): Promise<Wishlist> {\n const data = await super.get(identifiers)\n\n if (!data.isWishlist) throw new NotFoundError(`Category with id ${identifiers.id} is not a wishlist`)\n\n return data\n }\n\n override async update(params: UpdateRepositoryParams<Wishlist>): Promise<Wishlist> {\n const { products, id: checkId, metadata, filters, ...data } = params\n const plainData = this.paramsToPlain({ id: checkId })\n const id = plainData.id\n const category = await super.update({ id, ...data, isWishlist: true, isCollection: true, brandCategory: false })\n\n category.products = products && (await this.updateProducts(+id, { products }))\n category.metadata = metadata && (await this.updateMetadata(+id, { metadata }))\n\n return category\n }\n\n async getWishlistBySlug(slug: string): Promise<Wishlist> {\n if (!slug) return\n\n const { data } = await this.find({\n filters: {\n slug,\n isWishlist: { operator: Where.EQUALS, value: true },\n },\n options: {\n enableCount: false,\n },\n })\n\n if (!data.length) throw new NotFoundError(`Wishlist with slug ${slug} not found`)\n if (data.length > 1) throw new DuplicatedResultsError('Query returned duplicated values')\n\n return data.shift()\n }\n\n async getWishlistByPerson(personId: string): Promise<Wishlist[]> {\n if (!personId) return\n\n const { data } = await this.find({\n filters: {\n personId: { operator: Where.EQUALS, value: personId },\n isWishlist: { operator: Where.EQUALS, value: true },\n },\n options: {\n enableCount: false,\n },\n })\n\n if (!data.length) throw new NotFoundError(`Wishlists from person ${personId} not found`)\n\n return data\n }\n\n private async updateProducts(\n categoryId: number,\n { products }: Pick<UpdateRepositoryParams<CategoryHasuraGraphQL>, 'products'>,\n ): Promise<CategoryHasuraGraphQL['products']> {\n if ('action' in products && products.action === 'remove') {\n await this.mutation('delete_category_product', ['affected_rows'], {\n where: {\n type: 'category_product_bool_exp',\n required: true,\n value: { category_id: { _eq: categoryId } },\n },\n })\n\n await this.categoryFilterRepository.deleteByCategory(categoryId)\n\n return []\n }\n\n const plainData = this.paramsToPlain({ products })\n\n if (!plainData.products || plainData.products.length <= 0) return []\n\n await this.mutation('delete_category_product', ['affected_rows'], {\n where: {\n type: 'category_product_bool_exp',\n required: true,\n value: { category_id: { _eq: categoryId } },\n },\n })\n\n await this.categoryFilterRepository.deleteByCategory(categoryId)\n\n await this.mutation('insert_category_product', ['affected_rows'], {\n objects: {\n type: '[category_product_insert_input!]',\n required: true,\n value: plainData.products.map((productId) => ({ category_id: categoryId, product_id: productId })),\n },\n })\n\n return plainData.products\n }\n\n private async updateMetadata(\n categoryId: number,\n { metadata }: Pick<UpdateRepositoryParams<CategoryHasuraGraphQL>, 'metadata'>,\n ): Promise<CategoryMetadata> {\n const plainData = this.paramsToPlain({ metadata })\n\n if (!plainData.metadata) return\n\n await this.mutation('update_category_metadata_by_pk', ['category_id'], {\n pk_columns: {\n value: { category_id: categoryId },\n type: 'category_metadata_pk_columns_input',\n required: true,\n },\n _set: {\n value: omit(metadata, ['category_id']),\n type: 'category_metadata_set_input',\n required: true,\n },\n })\n\n return plainData.metadata\n }\n\n getCategoryBySlug(slug: string, _shop: Shops): Promise<Wishlist> {\n return this.getWishlistBySlug(slug)\n }\n\n async getCategoryByShop(shop: string): Promise<any> {\n if (!shop) return\n\n const { data } = await this.find({\n filters: {\n shops: { operator: Where.IN, value: [shop] },\n published: { operator: Where.EQUALS, value: true },\n isWishlist: { operator: Where.EQUALS, value: true },\n },\n options: {\n enableCount: false,\n },\n })\n\n return data\n }\n\n getCategoriesForHome(categoryIds: string[], limit?: number, gender?: string): any {\n return\n }\n\n mountCategory(category: Category, options?: { limit?: number; hasStock?: boolean }): Promise<Product[]> {\n return\n }\n\n getChildren(parentId: number): Promise<Category[]> {\n return\n }\n\n isChild(id: number, parentId: number): Promise<boolean> {\n return\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["get","getLodash","Answers.AccessoryImportances","Answers.BeardProblems","Answers.BeardSizes","Answers.BeautyProductImportances","Answers.BodyProblems","Answers.BodyShapes","Answers.BodyTattoos","Answers.FaceSkinOilinesses","Answers.FaceSkinProblems","Answers.FaceSkinTones","Answers.FamilyIncomes","Answers.FragranceImportances","Answers.HairColors","Answers.HairProblems","Answers.HairStrands","Answers.HairTypes","Answers.ProductSpents","query","isNaN"],"mappings":"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"}
|