@infrab4a/connect 3.14.2 → 3.14.3-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -24
- package/bundles/infrab4a-connect.umd.js +6106 -6056
- package/bundles/infrab4a-connect.umd.js.map +1 -1
- package/domain/catalog/helpers/index.d.ts +1 -1
- package/domain/catalog/helpers/round-product-price.helper.d.ts +4 -4
- package/domain/catalog/index.d.ts +3 -3
- package/domain/catalog/models/category-collection-children.d.ts +13 -13
- package/domain/catalog/models/category-filter.d.ts +13 -11
- package/domain/catalog/models/category.d.ts +31 -29
- package/domain/catalog/models/enums/index.d.ts +2 -2
- package/domain/catalog/models/enums/product-genders.enum.d.ts +5 -5
- package/domain/catalog/models/enums/shops.enum.d.ts +6 -6
- package/domain/catalog/models/filter-option.d.ts +9 -9
- package/domain/catalog/models/filter.d.ts +12 -12
- package/domain/catalog/models/index.d.ts +10 -10
- package/domain/catalog/models/kit-product.d.ts +12 -12
- package/domain/catalog/models/product.d.ts +44 -44
- package/domain/catalog/models/types/category-condition.type.d.ts +4 -4
- package/domain/catalog/models/types/category-metadata.type.d.ts +4 -4
- package/domain/catalog/models/types/category-product.d.ts +4 -4
- package/domain/catalog/models/types/index.d.ts +11 -11
- package/domain/catalog/models/types/product-evaluation.type.d.ts +6 -6
- package/domain/catalog/models/types/product-gender.type.d.ts +1 -1
- package/domain/catalog/models/types/product-metadata.type.d.ts +4 -4
- package/domain/catalog/models/types/product-review.type.d.ts +17 -17
- package/domain/catalog/models/types/shop-description.type.d.ts +8 -8
- package/domain/catalog/models/types/shop-price.type.d.ts +6 -6
- package/domain/catalog/models/types/stock.type.d.ts +3 -3
- package/domain/catalog/models/types/variant-grade.type.d.ts +4 -4
- package/domain/catalog/models/variant.d.ts +17 -17
- package/domain/catalog/repositories/category-collection-children.repository.d.ts +4 -4
- package/domain/catalog/repositories/category-filter.repository.d.ts +5 -5
- package/domain/catalog/repositories/category.repository.d.ts +18 -18
- package/domain/catalog/repositories/filter-option.repository.d.ts +4 -4
- package/domain/catalog/repositories/filter.repository.d.ts +4 -4
- package/domain/catalog/repositories/index.d.ts +8 -8
- package/domain/catalog/repositories/product.repository.d.ts +15 -15
- package/domain/catalog/repositories/subscription-product.repository.d.ts +4 -4
- package/domain/catalog/repositories/variant.repository.d.ts +4 -4
- package/domain/generic/index.d.ts +2 -2
- package/domain/generic/model/base.model.d.ts +14 -14
- package/domain/generic/model/identifier-fields.d.ts +4 -4
- package/domain/generic/model/index.d.ts +3 -3
- package/domain/generic/model/types/base-model-builder.type.d.ts +17 -17
- package/domain/generic/model/types/identifier-model.type.d.ts +8 -8
- package/domain/generic/model/types/index.d.ts +5 -5
- package/domain/generic/model/types/model-base-structure.type.d.ts +12 -12
- package/domain/generic/model/types/non-function-properties.type.d.ts +12 -12
- package/domain/generic/model/types/non-function-property-name.type.d.ts +13 -13
- package/domain/generic/repository/create.repository.d.ts +8 -8
- package/domain/generic/repository/crud.repository.d.ts +19 -19
- package/domain/generic/repository/delete.repository.d.ts +7 -7
- package/domain/generic/repository/enums/index.d.ts +2 -2
- package/domain/generic/repository/enums/update-option-actions.enum.d.ts +7 -7
- package/domain/generic/repository/enums/where.enum.d.ts +14 -14
- package/domain/generic/repository/find.repository.d.ts +16 -16
- package/domain/generic/repository/get.repository.d.ts +5 -5
- package/domain/generic/repository/index.d.ts +9 -9
- package/domain/generic/repository/read.repository.d.ts +14 -14
- package/domain/generic/repository/types/index.d.ts +6 -6
- package/domain/generic/repository/types/repository-find-filters.type.d.ts +13 -13
- package/domain/generic/repository/types/repository-find-result.type.d.ts +11 -11
- package/domain/generic/repository/types/repository-limit-options.type.d.ts +4 -4
- package/domain/generic/repository/types/repository-order-by-list.type.d.ts +5 -5
- package/domain/generic/repository/types/repository-update-params.type.d.ts +11 -11
- package/domain/generic/repository/types/where-options.type.d.ts +2 -2
- package/domain/generic/repository/update.repository.d.ts +6 -6
- package/domain/index.d.ts +6 -6
- package/domain/location/index.d.ts +1 -1
- package/domain/location/models/address.d.ts +24 -24
- package/domain/location/models/index.d.ts +2 -2
- package/domain/location/models/types/index.d.ts +3 -3
- package/domain/location/models/types/location-bound.type.d.ts +6 -6
- package/domain/location/models/types/location-geometry.type.d.ts +7 -7
- package/domain/location/models/types/location-lat-lng.type.d.ts +4 -4
- package/domain/shop-settings/enums/filter-type.enum.d.ts +19 -19
- package/domain/shop-settings/enums/index.d.ts +2 -2
- package/domain/shop-settings/enums/questions-filters.enum.d.ts +19 -19
- package/domain/shop-settings/helpers/beauty-questions.helper.d.ts +9 -9
- package/domain/shop-settings/helpers/index.d.ts +1 -1
- package/domain/shop-settings/index.d.ts +4 -4
- package/domain/shop-settings/models/home.d.ts +18 -18
- package/domain/shop-settings/models/index.d.ts +4 -4
- package/domain/shop-settings/models/shop-menu.d.ts +7 -7
- package/domain/shop-settings/models/shop-settings.d.ts +9 -9
- package/domain/shop-settings/models/types/banner.type.d.ts +6 -6
- package/domain/shop-settings/models/types/benefit.type.d.ts +5 -5
- package/domain/shop-settings/models/types/home-data.type.d.ts +15 -15
- package/domain/shop-settings/models/types/index.d.ts +10 -10
- package/domain/shop-settings/models/types/menu-nav.type.d.ts +8 -8
- package/domain/shop-settings/models/types/shop-banner.type.d.ts +12 -12
- package/domain/shop-settings/models/types/shop-brands.type.d.ts +10 -10
- package/domain/shop-settings/models/types/shop-carousel.type.d.ts +5 -5
- package/domain/shop-settings/models/types/shop-collection.type.d.ts +9 -9
- package/domain/shop-settings/models/types/shop-section.type.d.ts +9 -9
- package/domain/shop-settings/models/types/sub-menu.type.d.ts +8 -8
- package/domain/shop-settings/repositories/home.repository.d.ts +4 -4
- package/domain/shop-settings/repositories/index.d.ts +3 -3
- package/domain/shop-settings/repositories/shop-menu.repository.d.ts +4 -4
- package/domain/shop-settings/repositories/shop-settings.repository.d.ts +4 -4
- package/domain/shopping/index.d.ts +2 -2
- package/domain/shopping/models/buy-2-win.d.ts +18 -18
- package/domain/shopping/models/campaign-dashboard.d.ts +15 -15
- package/domain/shopping/models/campaign-hashtag.d.ts +18 -18
- package/domain/shopping/models/checkout.d.ts +26 -26
- package/domain/shopping/models/coupons/coupon.d.ts +60 -60
- package/domain/shopping/models/coupons/enums/coupon-club-mens.enum.d.ts +5 -5
- package/domain/shopping/models/coupons/enums/coupon-subtypes.enum.d.ts +4 -4
- package/domain/shopping/models/coupons/enums/coupon-types.enum.d.ts +4 -4
- package/domain/shopping/models/coupons/enums/exclusivities.enum.d.ts +8 -8
- package/domain/shopping/models/coupons/enums/index.d.ts +3 -3
- package/domain/shopping/models/coupons/index.d.ts +2 -2
- package/domain/shopping/models/enums/checkout-types.enum.d.ts +5 -5
- package/domain/shopping/models/enums/index.d.ts +2 -2
- package/domain/shopping/models/enums/order-status.enum.d.ts +10 -10
- package/domain/shopping/models/index.d.ts +12 -12
- package/domain/shopping/models/line-item.d.ts +8 -8
- package/domain/shopping/models/order.d.ts +10 -10
- package/domain/shopping/models/payment.d.ts +67 -67
- package/domain/shopping/models/shipping-method.d.ts +17 -17
- package/domain/shopping/models/subscription/checkout.d.ts +20 -20
- package/domain/shopping/models/subscription/index.d.ts +2 -2
- package/domain/shopping/models/subscription/plan.d.ts +10 -10
- package/domain/shopping/models/types/index.d.ts +7 -7
- package/domain/shopping/models/types/payment-address.type.d.ts +12 -12
- package/domain/shopping/models/types/payment-billing.type.d.ts +7 -7
- package/domain/shopping/models/types/payment-card.type.d.ts +14 -14
- package/domain/shopping/models/types/payment-customer.type.d.ts +18 -18
- package/domain/shopping/models/types/payment-document.type.d.ts +6 -6
- package/domain/shopping/models/types/payment-item.type.d.ts +11 -11
- package/domain/shopping/models/types/payment-shipping.type.d.ts +10 -10
- package/domain/shopping/repositories/buy-2-win.repository.d.ts +4 -4
- package/domain/shopping/repositories/campaign-dashboard.repository.d.ts +4 -4
- package/domain/shopping/repositories/campaign-hashtag.repository.d.ts +4 -4
- package/domain/shopping/repositories/checkout.repository.d.ts +4 -4
- package/domain/shopping/repositories/coupon.repository.d.ts +4 -4
- package/domain/shopping/repositories/index.d.ts +9 -9
- package/domain/shopping/repositories/legacy-order.repository.d.ts +3 -3
- package/domain/shopping/repositories/order.repository.d.ts +4 -4
- package/domain/shopping/repositories/payment.repository.d.ts +4 -4
- package/domain/shopping/repositories/subscription/checkout.repository.d.ts +4 -4
- package/domain/shopping/repositories/subscription/index.d.ts +2 -2
- package/domain/shopping/repositories/subscription/plan.repository.d.ts +4 -4
- package/domain/users/errors/index.d.ts +3 -3
- package/domain/users/errors/unauthorized.error.d.ts +5 -5
- package/domain/users/errors/user-already-registered.error.d.ts +5 -5
- package/domain/users/errors/weak-password.error.d.ts +5 -5
- package/domain/users/index.d.ts +5 -5
- package/domain/users/models/beauty-profile.d.ts +11 -11
- package/domain/users/models/enums/accessory-importances.enum.d.ts +5 -5
- package/domain/users/models/enums/area.enum.d.ts +11 -11
- package/domain/users/models/enums/beard-problems.enum.d.ts +9 -9
- package/domain/users/models/enums/beard-sizes.enum.d.ts +7 -7
- package/domain/users/models/enums/beauty-product-importances.enum.d.ts +6 -6
- package/domain/users/models/enums/body-problems.enum.d.ts +11 -11
- package/domain/users/models/enums/body-shapes.enum.d.ts +7 -7
- package/domain/users/models/enums/body-tattoos.enum.d.ts +5 -5
- package/domain/users/models/enums/face-skin-oilinesses.enum.d.ts +7 -7
- package/domain/users/models/enums/face-skin-problems.enum.d.ts +10 -10
- package/domain/users/models/enums/face-skin-tones.enum.d.ts +8 -8
- package/domain/users/models/enums/family-incomes.enum.d.ts +8 -8
- package/domain/users/models/enums/fragrance-importances.enum.d.ts +5 -5
- package/domain/users/models/enums/hair-colors.enum.d.ts +10 -10
- package/domain/users/models/enums/hair-problems.enum.d.ts +10 -10
- package/domain/users/models/enums/hair-strands.enum.d.ts +8 -8
- package/domain/users/models/enums/hair-types.enum.d.ts +7 -7
- package/domain/users/models/enums/index.d.ts +20 -20
- package/domain/users/models/enums/office-position.enum.d.ts +6 -6
- package/domain/users/models/enums/product-spents.enum.d.ts +8 -8
- package/domain/users/models/enums/user-type.enum.d.ts +8 -8
- package/domain/users/models/index.d.ts +7 -7
- package/domain/users/models/lead.d.ts +8 -8
- package/domain/users/models/subscription/edition.d.ts +16 -16
- package/domain/users/models/subscription/enums/billing-status.enum.d.ts +3 -3
- package/domain/users/models/subscription/enums/edition-status.enum.d.ts +4 -4
- package/domain/users/models/subscription/enums/index.d.ts +4 -4
- package/domain/users/models/subscription/enums/payment-type.enum.d.ts +5 -5
- package/domain/users/models/subscription/enums/status.enum.d.ts +4 -4
- package/domain/users/models/subscription/index.d.ts +4 -4
- package/domain/users/models/subscription/payment.d.ts +13 -13
- package/domain/users/models/subscription/subscription.d.ts +28 -28
- package/domain/users/models/user-address.d.ts +7 -7
- package/domain/users/models/user-payment-method.d.ts +14 -14
- package/domain/users/models/user.d.ts +27 -27
- package/domain/users/repositories/beauty-profile.repository.d.ts +4 -4
- package/domain/users/repositories/edition.repository.d.ts +4 -4
- package/domain/users/repositories/index.d.ts +8 -8
- package/domain/users/repositories/lead.repository.d.ts +4 -4
- package/domain/users/repositories/subscription-payment.repository.d.ts +4 -4
- package/domain/users/repositories/subscription.repository.d.ts +4 -4
- package/domain/users/repositories/user-address.repository.d.ts +4 -4
- package/domain/users/repositories/user-payment-method.repository.d.ts +4 -4
- package/domain/users/repositories/user.repository.d.ts +6 -6
- package/domain/users/services/authentication.service.d.ts +12 -12
- package/domain/users/services/index.d.ts +3 -3
- package/domain/users/services/register.service.d.ts +7 -7
- package/domain/users/services/types/basic-user-data.type.d.ts +4 -4
- package/domain/users/services/types/index.d.ts +1 -1
- package/domain/users/use-cases/authentication.d.ts +21 -21
- package/domain/users/use-cases/index.d.ts +4 -4
- package/domain/users/use-cases/recovery-password.d.ts +6 -6
- package/domain/users/use-cases/register.d.ts +13 -13
- package/domain/users/use-cases/signout.d.ts +6 -6
- package/errors/duplicated-results.error.d.ts +5 -5
- package/errors/index.d.ts +4 -4
- package/errors/invalid-argument.error.d.ts +5 -5
- package/errors/not-found.error.d.ts +5 -5
- package/errors/required-argument.error.d.ts +6 -6
- package/esm2015/domain/catalog/helpers/index.js +2 -2
- package/esm2015/domain/catalog/helpers/round-product-price.helper.js +15 -15
- package/esm2015/domain/catalog/index.js +4 -4
- package/esm2015/domain/catalog/models/category-collection-children.js +13 -13
- package/esm2015/domain/catalog/models/category-filter.js +19 -14
- package/esm2015/domain/catalog/models/category.js +23 -18
- package/esm2015/domain/catalog/models/enums/index.js +3 -3
- package/esm2015/domain/catalog/models/enums/product-genders.enum.js +7 -7
- package/esm2015/domain/catalog/models/enums/shops.enum.js +8 -8
- package/esm2015/domain/catalog/models/filter-option.js +7 -7
- package/esm2015/domain/catalog/models/filter.js +7 -7
- package/esm2015/domain/catalog/models/index.js +11 -11
- package/esm2015/domain/catalog/models/kit-product.js +18 -18
- package/esm2015/domain/catalog/models/product.js +37 -37
- package/esm2015/domain/catalog/models/types/category-condition.type.js +2 -2
- package/esm2015/domain/catalog/models/types/category-metadata.type.js +2 -2
- package/esm2015/domain/catalog/models/types/category-product.js +2 -2
- package/esm2015/domain/catalog/models/types/index.js +12 -12
- package/esm2015/domain/catalog/models/types/product-evaluation.type.js +2 -2
- package/esm2015/domain/catalog/models/types/product-gender.type.js +2 -2
- package/esm2015/domain/catalog/models/types/product-metadata.type.js +2 -2
- package/esm2015/domain/catalog/models/types/product-review.type.js +2 -2
- package/esm2015/domain/catalog/models/types/shop-description.type.js +2 -2
- package/esm2015/domain/catalog/models/types/shop-price.type.js +2 -2
- package/esm2015/domain/catalog/models/types/stock.type.js +2 -2
- package/esm2015/domain/catalog/models/types/variant-grade.type.js +2 -2
- package/esm2015/domain/catalog/models/variant.js +7 -7
- package/esm2015/domain/catalog/repositories/category-collection-children.repository.js +2 -2
- package/esm2015/domain/catalog/repositories/category-filter.repository.js +2 -2
- package/esm2015/domain/catalog/repositories/category.repository.js +2 -2
- package/esm2015/domain/catalog/repositories/filter-option.repository.js +2 -2
- package/esm2015/domain/catalog/repositories/filter.repository.js +2 -2
- package/esm2015/domain/catalog/repositories/index.js +9 -9
- package/esm2015/domain/catalog/repositories/product.repository.js +2 -2
- package/esm2015/domain/catalog/repositories/subscription-product.repository.js +2 -2
- package/esm2015/domain/catalog/repositories/variant.repository.js +2 -2
- package/esm2015/domain/generic/index.js +3 -3
- package/esm2015/domain/generic/model/base.model.js +24 -24
- package/esm2015/domain/generic/model/identifier-fields.js +2 -2
- package/esm2015/domain/generic/model/index.js +4 -4
- package/esm2015/domain/generic/model/types/base-model-builder.type.js +2 -2
- package/esm2015/domain/generic/model/types/identifier-model.type.js +2 -2
- package/esm2015/domain/generic/model/types/index.js +6 -6
- package/esm2015/domain/generic/model/types/model-base-structure.type.js +2 -2
- package/esm2015/domain/generic/model/types/non-function-properties.type.js +2 -2
- package/esm2015/domain/generic/model/types/non-function-property-name.type.js +2 -2
- package/esm2015/domain/generic/repository/create.repository.js +2 -2
- package/esm2015/domain/generic/repository/crud.repository.js +2 -2
- package/esm2015/domain/generic/repository/delete.repository.js +2 -2
- package/esm2015/domain/generic/repository/enums/index.js +3 -3
- package/esm2015/domain/generic/repository/enums/update-option-actions.enum.js +9 -9
- package/esm2015/domain/generic/repository/enums/where.enum.js +16 -16
- package/esm2015/domain/generic/repository/find.repository.js +2 -2
- package/esm2015/domain/generic/repository/get.repository.js +2 -2
- package/esm2015/domain/generic/repository/index.js +10 -10
- package/esm2015/domain/generic/repository/read.repository.js +2 -2
- package/esm2015/domain/generic/repository/types/index.js +7 -7
- package/esm2015/domain/generic/repository/types/repository-find-filters.type.js +2 -2
- package/esm2015/domain/generic/repository/types/repository-find-result.type.js +2 -2
- package/esm2015/domain/generic/repository/types/repository-limit-options.type.js +2 -2
- package/esm2015/domain/generic/repository/types/repository-order-by-list.type.js +2 -2
- package/esm2015/domain/generic/repository/types/repository-update-params.type.js +2 -2
- package/esm2015/domain/generic/repository/types/where-options.type.js +2 -2
- package/esm2015/domain/generic/repository/update.repository.js +2 -2
- package/esm2015/domain/index.js +7 -7
- package/esm2015/domain/location/index.js +2 -2
- package/esm2015/domain/location/models/address.js +7 -7
- package/esm2015/domain/location/models/index.js +3 -3
- package/esm2015/domain/location/models/types/index.js +4 -4
- package/esm2015/domain/location/models/types/location-bound.type.js +2 -2
- package/esm2015/domain/location/models/types/location-geometry.type.js +2 -2
- package/esm2015/domain/location/models/types/location-lat-lng.type.js +2 -2
- package/esm2015/domain/shop-settings/enums/filter-type.enum.js +21 -21
- package/esm2015/domain/shop-settings/enums/index.js +3 -3
- package/esm2015/domain/shop-settings/enums/questions-filters.enum.js +21 -21
- package/esm2015/domain/shop-settings/helpers/beauty-questions.helper.js +46 -46
- package/esm2015/domain/shop-settings/helpers/index.js +2 -2
- package/esm2015/domain/shop-settings/index.js +5 -5
- package/esm2015/domain/shop-settings/models/home.js +7 -7
- package/esm2015/domain/shop-settings/models/index.js +5 -5
- package/esm2015/domain/shop-settings/models/shop-menu.js +7 -7
- package/esm2015/domain/shop-settings/models/shop-settings.js +7 -7
- package/esm2015/domain/shop-settings/models/types/banner.type.js +2 -2
- package/esm2015/domain/shop-settings/models/types/benefit.type.js +2 -2
- package/esm2015/domain/shop-settings/models/types/home-data.type.js +2 -2
- package/esm2015/domain/shop-settings/models/types/index.js +11 -11
- package/esm2015/domain/shop-settings/models/types/menu-nav.type.js +2 -2
- package/esm2015/domain/shop-settings/models/types/shop-banner.type.js +2 -2
- package/esm2015/domain/shop-settings/models/types/shop-brands.type.js +2 -2
- package/esm2015/domain/shop-settings/models/types/shop-carousel.type.js +2 -2
- package/esm2015/domain/shop-settings/models/types/shop-collection.type.js +2 -2
- package/esm2015/domain/shop-settings/models/types/shop-section.type.js +2 -2
- package/esm2015/domain/shop-settings/models/types/sub-menu.type.js +2 -2
- package/esm2015/domain/shop-settings/repositories/home.repository.js +2 -2
- package/esm2015/domain/shop-settings/repositories/index.js +4 -4
- package/esm2015/domain/shop-settings/repositories/shop-menu.repository.js +2 -2
- package/esm2015/domain/shop-settings/repositories/shop-settings.repository.js +2 -2
- package/esm2015/domain/shopping/index.js +3 -3
- package/esm2015/domain/shopping/models/buy-2-win.js +14 -14
- package/esm2015/domain/shopping/models/campaign-dashboard.js +7 -7
- package/esm2015/domain/shopping/models/campaign-hashtag.js +7 -7
- package/esm2015/domain/shopping/models/checkout.js +37 -37
- package/esm2015/domain/shopping/models/coupons/coupon.js +38 -38
- package/esm2015/domain/shopping/models/coupons/enums/coupon-club-mens.enum.js +7 -7
- package/esm2015/domain/shopping/models/coupons/enums/coupon-subtypes.enum.js +6 -6
- package/esm2015/domain/shopping/models/coupons/enums/coupon-types.enum.js +10 -10
- package/esm2015/domain/shopping/models/coupons/enums/exclusivities.enum.js +10 -10
- package/esm2015/domain/shopping/models/coupons/enums/index.js +4 -4
- package/esm2015/domain/shopping/models/coupons/index.js +3 -3
- package/esm2015/domain/shopping/models/enums/checkout-types.enum.js +7 -7
- package/esm2015/domain/shopping/models/enums/index.js +3 -3
- package/esm2015/domain/shopping/models/enums/order-status.enum.js +12 -12
- package/esm2015/domain/shopping/models/index.js +13 -13
- package/esm2015/domain/shopping/models/line-item.js +4 -4
- package/esm2015/domain/shopping/models/order.js +11 -11
- package/esm2015/domain/shopping/models/payment.js +169 -169
- package/esm2015/domain/shopping/models/shipping-method.js +7 -7
- package/esm2015/domain/shopping/models/subscription/checkout.js +28 -28
- package/esm2015/domain/shopping/models/subscription/index.js +3 -3
- package/esm2015/domain/shopping/models/subscription/plan.js +7 -7
- package/esm2015/domain/shopping/models/types/index.js +8 -8
- package/esm2015/domain/shopping/models/types/payment-address.type.js +2 -2
- package/esm2015/domain/shopping/models/types/payment-billing.type.js +2 -2
- package/esm2015/domain/shopping/models/types/payment-card.type.js +2 -2
- package/esm2015/domain/shopping/models/types/payment-customer.type.js +2 -2
- package/esm2015/domain/shopping/models/types/payment-document.type.js +2 -2
- package/esm2015/domain/shopping/models/types/payment-item.type.js +2 -2
- package/esm2015/domain/shopping/models/types/payment-shipping.type.js +2 -2
- package/esm2015/domain/shopping/repositories/buy-2-win.repository.js +2 -2
- package/esm2015/domain/shopping/repositories/campaign-dashboard.repository.js +2 -2
- package/esm2015/domain/shopping/repositories/campaign-hashtag.repository.js +2 -2
- package/esm2015/domain/shopping/repositories/checkout.repository.js +2 -2
- package/esm2015/domain/shopping/repositories/coupon.repository.js +2 -2
- package/esm2015/domain/shopping/repositories/index.js +10 -10
- package/esm2015/domain/shopping/repositories/legacy-order.repository.js +2 -2
- package/esm2015/domain/shopping/repositories/order.repository.js +2 -2
- package/esm2015/domain/shopping/repositories/payment.repository.js +2 -2
- package/esm2015/domain/shopping/repositories/subscription/checkout.repository.js +2 -2
- package/esm2015/domain/shopping/repositories/subscription/index.js +3 -3
- package/esm2015/domain/shopping/repositories/subscription/plan.repository.js +2 -2
- package/esm2015/domain/users/errors/index.js +4 -4
- package/esm2015/domain/users/errors/unauthorized.error.js +8 -8
- package/esm2015/domain/users/errors/user-already-registered.error.js +8 -8
- package/esm2015/domain/users/errors/weak-password.error.js +8 -8
- package/esm2015/domain/users/index.js +6 -6
- package/esm2015/domain/users/models/beauty-profile.js +12 -12
- package/esm2015/domain/users/models/enums/accessory-importances.enum.js +7 -7
- package/esm2015/domain/users/models/enums/area.enum.js +13 -13
- package/esm2015/domain/users/models/enums/beard-problems.enum.js +11 -11
- package/esm2015/domain/users/models/enums/beard-sizes.enum.js +9 -9
- package/esm2015/domain/users/models/enums/beauty-product-importances.enum.js +8 -8
- package/esm2015/domain/users/models/enums/body-problems.enum.js +13 -13
- package/esm2015/domain/users/models/enums/body-shapes.enum.js +9 -9
- package/esm2015/domain/users/models/enums/body-tattoos.enum.js +7 -7
- package/esm2015/domain/users/models/enums/face-skin-oilinesses.enum.js +9 -9
- package/esm2015/domain/users/models/enums/face-skin-problems.enum.js +12 -12
- package/esm2015/domain/users/models/enums/face-skin-tones.enum.js +10 -10
- package/esm2015/domain/users/models/enums/family-incomes.enum.js +10 -10
- package/esm2015/domain/users/models/enums/fragrance-importances.enum.js +7 -7
- package/esm2015/domain/users/models/enums/hair-colors.enum.js +12 -12
- package/esm2015/domain/users/models/enums/hair-problems.enum.js +12 -12
- package/esm2015/domain/users/models/enums/hair-strands.enum.js +10 -10
- package/esm2015/domain/users/models/enums/hair-types.enum.js +9 -9
- package/esm2015/domain/users/models/enums/index.js +21 -21
- package/esm2015/domain/users/models/enums/office-position.enum.js +8 -8
- package/esm2015/domain/users/models/enums/product-spents.enum.js +10 -10
- package/esm2015/domain/users/models/enums/user-type.enum.js +10 -10
- package/esm2015/domain/users/models/index.js +8 -8
- package/esm2015/domain/users/models/lead.js +7 -7
- package/esm2015/domain/users/models/subscription/edition.js +7 -7
- package/esm2015/domain/users/models/subscription/enums/billing-status.enum.js +5 -5
- package/esm2015/domain/users/models/subscription/enums/edition-status.enum.js +6 -6
- package/esm2015/domain/users/models/subscription/enums/index.js +5 -5
- package/esm2015/domain/users/models/subscription/enums/payment-type.enum.js +7 -7
- package/esm2015/domain/users/models/subscription/enums/status.enum.js +6 -6
- package/esm2015/domain/users/models/subscription/index.js +5 -5
- package/esm2015/domain/users/models/subscription/payment.js +14 -14
- package/esm2015/domain/users/models/subscription/subscription.js +43 -43
- package/esm2015/domain/users/models/user-address.js +7 -7
- package/esm2015/domain/users/models/user-payment-method.js +7 -7
- package/esm2015/domain/users/models/user.js +26 -26
- package/esm2015/domain/users/repositories/beauty-profile.repository.js +2 -2
- package/esm2015/domain/users/repositories/edition.repository.js +2 -2
- package/esm2015/domain/users/repositories/index.js +9 -9
- package/esm2015/domain/users/repositories/lead.repository.js +2 -2
- package/esm2015/domain/users/repositories/subscription-payment.repository.js +2 -2
- package/esm2015/domain/users/repositories/subscription.repository.js +2 -2
- package/esm2015/domain/users/repositories/user-address.repository.js +2 -2
- package/esm2015/domain/users/repositories/user-payment-method.repository.js +2 -2
- package/esm2015/domain/users/repositories/user.repository.js +2 -2
- package/esm2015/domain/users/services/authentication.service.js +2 -2
- package/esm2015/domain/users/services/index.js +4 -4
- package/esm2015/domain/users/services/register.service.js +2 -2
- package/esm2015/domain/users/services/types/basic-user-data.type.js +2 -2
- package/esm2015/domain/users/services/types/index.js +2 -2
- package/esm2015/domain/users/use-cases/authentication.js +40 -40
- package/esm2015/domain/users/use-cases/index.js +5 -5
- package/esm2015/domain/users/use-cases/recovery-password.js +12 -12
- package/esm2015/domain/users/use-cases/register.js +34 -34
- package/esm2015/domain/users/use-cases/signout.js +12 -12
- package/esm2015/errors/duplicated-results.error.js +8 -8
- package/esm2015/errors/index.js +5 -5
- package/esm2015/errors/invalid-argument.error.js +8 -8
- package/esm2015/errors/not-found.error.js +8 -8
- package/esm2015/errors/required-argument.error.js +9 -9
- package/esm2015/index.js +6 -6
- package/esm2015/infra/elasticsearch/adapters/axios.adapter.js +76 -76
- package/esm2015/infra/elasticsearch/adapters/elastic-search.adapter.js +2 -2
- package/esm2015/infra/elasticsearch/adapters/index.js +3 -3
- package/esm2015/infra/elasticsearch/index.js +4 -4
- package/esm2015/infra/elasticsearch/indexes/index.js +2 -2
- package/esm2015/infra/elasticsearch/indexes/products-index.js +115 -115
- package/esm2015/infra/elasticsearch/types/elastic-search-result.js +2 -2
- package/esm2015/infra/elasticsearch/types/index.js +2 -2
- package/esm2015/infra/firebase/auth/authentication-firebase-auth.service.js +52 -52
- package/esm2015/infra/firebase/auth/index.js +3 -3
- package/esm2015/infra/firebase/auth/register-firebase-auth.service.js +26 -26
- package/esm2015/infra/firebase/auth/types/firebase-user-with-id.type.js +2 -2
- package/esm2015/infra/firebase/firestore/enums/firestore-field-type.enum.js +10 -10
- package/esm2015/infra/firebase/firestore/enums/index.js +2 -2
- package/esm2015/infra/firebase/firestore/index.js +4 -4
- package/esm2015/infra/firebase/firestore/mixins/index.js +10 -10
- package/esm2015/infra/firebase/firestore/mixins/with-create-firestore.mixin.js +31 -31
- package/esm2015/infra/firebase/firestore/mixins/with-crud-firestore.mixin.js +10 -10
- package/esm2015/infra/firebase/firestore/mixins/with-delete-firestore.mixin.js +18 -18
- package/esm2015/infra/firebase/firestore/mixins/with-find-firestore.mixin.js +98 -98
- package/esm2015/infra/firebase/firestore/mixins/with-firestore.mixin.js +64 -64
- package/esm2015/infra/firebase/firestore/mixins/with-get-firestore.mixin.js +24 -24
- package/esm2015/infra/firebase/firestore/mixins/with-helpers.mixin.js +17 -17
- package/esm2015/infra/firebase/firestore/mixins/with-sub-collection.mixin.js +11 -11
- package/esm2015/infra/firebase/firestore/mixins/with-update-firestore.mixin.js +45 -45
- package/esm2015/infra/firebase/firestore/repositories/catalog/category-firestore.repository.js +82 -82
- package/esm2015/infra/firebase/firestore/repositories/catalog/index.js +5 -5
- package/esm2015/infra/firebase/firestore/repositories/catalog/product-firestore.repository.js +58 -58
- package/esm2015/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.js +14 -14
- package/esm2015/infra/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.js +12 -12
- package/esm2015/infra/firebase/firestore/repositories/index.js +5 -5
- package/esm2015/infra/firebase/firestore/repositories/shop-settings/home-firestore.repository.js +56 -56
- package/esm2015/infra/firebase/firestore/repositories/shop-settings/index.js +4 -4
- package/esm2015/infra/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.js +12 -12
- package/esm2015/infra/firebase/firestore/repositories/shop-settings/shop-settings-firestore.repository.js +12 -12
- package/esm2015/infra/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.js +12 -12
- package/esm2015/infra/firebase/firestore/repositories/shopping/campaign-dashboard-firestore.repository.js +12 -12
- package/esm2015/infra/firebase/firestore/repositories/shopping/campaign-hashtag-firestore.repository.js +12 -12
- package/esm2015/infra/firebase/firestore/repositories/shopping/checkout-firestore.repository.js +12 -12
- package/esm2015/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.js +12 -12
- package/esm2015/infra/firebase/firestore/repositories/shopping/coupon-firestore.repository.js +29 -29
- package/esm2015/infra/firebase/firestore/repositories/shopping/index.js +11 -11
- package/esm2015/infra/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.js +9 -9
- package/esm2015/infra/firebase/firestore/repositories/shopping/order-firestore.repository.js +40 -40
- package/esm2015/infra/firebase/firestore/repositories/shopping/payment-firestore.repository.js +12 -12
- package/esm2015/infra/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.js +12 -12
- package/esm2015/infra/firebase/firestore/repositories/users/index.js +9 -9
- package/esm2015/infra/firebase/firestore/repositories/users/lead-firestore.repository.js +12 -12
- package/esm2015/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.js +14 -14
- package/esm2015/infra/firebase/firestore/repositories/users/subscription-firestore.repository.js +12 -12
- package/esm2015/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.js +14 -14
- package/esm2015/infra/firebase/firestore/repositories/users/user-address-firestore.repository.js +14 -14
- package/esm2015/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.js +14 -14
- package/esm2015/infra/firebase/firestore/repositories/users/user-firestore.repository.js +68 -68
- package/esm2015/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.js +14 -14
- package/esm2015/infra/firebase/firestore/types/firestore-sub.repository.type.js +2 -2
- package/esm2015/infra/firebase/firestore/types/firestore.helpers.type.js +2 -2
- package/esm2015/infra/firebase/firestore/types/firestore.repository.type.js +2 -2
- package/esm2015/infra/firebase/firestore/types/index.js +4 -4
- package/esm2015/infra/firebase/index.js +3 -3
- package/esm2015/infra/hasura-graphql/enums/hasura-graphql-column-type.enum.js +13 -13
- package/esm2015/infra/hasura-graphql/enums/hasura-graphql-where.enum.js +15 -15
- package/esm2015/infra/hasura-graphql/enums/index.js +3 -3
- package/esm2015/infra/hasura-graphql/index.js +5 -5
- package/esm2015/infra/hasura-graphql/mixins/helpers/attribute-option.helper.js +31 -31
- package/esm2015/infra/hasura-graphql/mixins/helpers/bind-filter-query.helper.js +58 -58
- package/esm2015/infra/hasura-graphql/mixins/helpers/filter-option.helper.js +22 -22
- package/esm2015/infra/hasura-graphql/mixins/helpers/graphql-field.helper.js +95 -95
- package/esm2015/infra/hasura-graphql/mixins/helpers/index.js +5 -5
- package/esm2015/infra/hasura-graphql/mixins/index.js +8 -8
- package/esm2015/infra/hasura-graphql/mixins/with-create-hasura-graphql.mixin.js +61 -61
- package/esm2015/infra/hasura-graphql/mixins/with-crud-hasura-graphql.mixin.js +10 -10
- package/esm2015/infra/hasura-graphql/mixins/with-delete-hasura-graphql.mixin.js +31 -31
- package/esm2015/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.js +109 -109
- package/esm2015/infra/hasura-graphql/mixins/with-get-hasura-graphql.mixin.js +37 -37
- package/esm2015/infra/hasura-graphql/mixins/with-hasura-graphql.mixin.js +97 -97
- package/esm2015/infra/hasura-graphql/mixins/with-update-hasura-graphql.mixin.js +58 -58
- package/esm2015/infra/hasura-graphql/models/category-hasura-graphql.js +4 -4
- package/esm2015/infra/hasura-graphql/models/index.js +5 -5
- package/esm2015/infra/hasura-graphql/models/kit-product-hasura-graphql.js +15 -15
- package/esm2015/infra/hasura-graphql/models/product-hasura-graphql.js +11 -11
- package/esm2015/infra/hasura-graphql/models/variant-hasura-graphql.js +9 -9
- package/esm2015/infra/hasura-graphql/repositories/catalog/category-collection-children-hasura-graphql.repository.js +38 -38
- package/esm2015/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.js +97 -55
- package/esm2015/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.js +377 -377
- package/esm2015/infra/hasura-graphql/repositories/catalog/filter-hasura-graphql.repository.js +123 -123
- package/esm2015/infra/hasura-graphql/repositories/catalog/filter-option-hasura-graphql.repository.js +21 -21
- package/esm2015/infra/hasura-graphql/repositories/catalog/index.js +8 -8
- package/esm2015/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.js +506 -506
- package/esm2015/infra/hasura-graphql/repositories/catalog/variant-hasura-graphql.repository.js +117 -117
- package/esm2015/infra/hasura-graphql/repositories/index.js +2 -2
- package/esm2015/infra/hasura-graphql/types/fields.type.js +2 -2
- package/esm2015/infra/hasura-graphql/types/graphql.repository.type.js +2 -2
- package/esm2015/infra/hasura-graphql/types/hasura-graphql-auth-options.type.js +2 -2
- package/esm2015/infra/hasura-graphql/types/hasura-graphql-fields.type.js +2 -2
- package/esm2015/infra/hasura-graphql/types/hasura-graphql-headers.type.js +2 -2
- package/esm2015/infra/hasura-graphql/types/index.js +9 -9
- package/esm2015/infra/hasura-graphql/types/nested-field.type.js +2 -2
- package/esm2015/infra/hasura-graphql/types/query-builder-options.type.js +2 -2
- package/esm2015/infra/hasura-graphql/types/variable-options.type.js +2 -2
- package/esm2015/infra/index.js +4 -4
- package/esm2015/infrab4a-connect.js +4 -4
- package/esm2015/utils/decorators/debug.class.decorator.js +7 -7
- package/esm2015/utils/decorators/index.js +3 -3
- package/esm2015/utils/decorators/trace.method.decorator.js +81 -81
- package/esm2015/utils/helpers/class-name.helper.js +15 -15
- package/esm2015/utils/helpers/debug-decorator.helper.js +18 -18
- package/esm2015/utils/helpers/debug.helper.js +150 -150
- package/esm2015/utils/helpers/index.js +5 -5
- package/esm2015/utils/helpers/reflect.helper.js +165 -165
- package/esm2015/utils/index.js +11 -11
- package/esm2015/utils/is-uuid.js +3 -3
- package/esm2015/utils/log.utils.js +9 -9
- package/esm2015/utils/mixins/base.mixin.js +6 -6
- package/esm2015/utils/mixins/index.js +4 -4
- package/esm2015/utils/mixins/merge-constructor-params.type.js +2 -2
- package/esm2015/utils/mixins/mixin-ctor.type.js +2 -2
- package/esm2015/utils/parse-datetime.js +14 -14
- package/esm2015/utils/types/array-element.type.js +2 -2
- package/esm2015/utils/types/index.js +3 -3
- package/esm2015/utils/types/prop.type.js +2 -2
- package/fesm2015/infrab4a-connect.js +4178 -4128
- package/fesm2015/infrab4a-connect.js.map +1 -1
- package/index.d.ts +5 -5
- package/infra/elasticsearch/adapters/axios.adapter.d.ts +16 -16
- package/infra/elasticsearch/adapters/elastic-search.adapter.d.ts +8 -8
- package/infra/elasticsearch/adapters/index.d.ts +2 -2
- package/infra/elasticsearch/index.d.ts +3 -3
- package/infra/elasticsearch/indexes/index.d.ts +1 -1
- package/infra/elasticsearch/indexes/products-index.d.ts +13 -13
- package/infra/elasticsearch/types/elastic-search-result.d.ts +9 -9
- package/infra/elasticsearch/types/index.d.ts +1 -1
- package/infra/firebase/auth/authentication-firebase-auth.service.d.ts +12 -12
- package/infra/firebase/auth/index.d.ts +2 -2
- package/infra/firebase/auth/register-firebase-auth.service.d.ts +8 -8
- package/infra/firebase/auth/types/firebase-user-with-id.type.d.ts +3 -3
- package/infra/firebase/firestore/enums/firestore-field-type.enum.d.ts +8 -8
- package/infra/firebase/firestore/enums/index.d.ts +1 -1
- package/infra/firebase/firestore/index.d.ts +3 -3
- package/infra/firebase/firestore/mixins/index.d.ts +9 -9
- package/infra/firebase/firestore/mixins/with-create-firestore.mixin.d.ts +4 -4
- package/infra/firebase/firestore/mixins/with-crud-firestore.mixin.d.ts +4 -4
- package/infra/firebase/firestore/mixins/with-delete-firestore.mixin.d.ts +4 -4
- package/infra/firebase/firestore/mixins/with-find-firestore.mixin.d.ts +4 -4
- package/infra/firebase/firestore/mixins/with-firestore.mixin.d.ts +4 -4
- package/infra/firebase/firestore/mixins/with-get-firestore.mixin.d.ts +4 -4
- package/infra/firebase/firestore/mixins/with-helpers.mixin.d.ts +11 -11
- package/infra/firebase/firestore/mixins/with-sub-collection.mixin.d.ts +7 -7
- package/infra/firebase/firestore/mixins/with-update-firestore.mixin.d.ts +7 -7
- package/infra/firebase/firestore/repositories/catalog/category-firestore.repository.d.ts +21 -21
- package/infra/firebase/firestore/repositories/catalog/index.d.ts +4 -4
- package/infra/firebase/firestore/repositories/catalog/product-firestore.repository.d.ts +13 -13
- package/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.d.ts +13 -13
- package/infra/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.d.ts +8 -8
- package/infra/firebase/firestore/repositories/index.d.ts +4 -4
- package/infra/firebase/firestore/repositories/shop-settings/home-firestore.repository.d.ts +16 -16
- package/infra/firebase/firestore/repositories/shop-settings/index.d.ts +3 -3
- package/infra/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.d.ts +8 -8
- package/infra/firebase/firestore/repositories/shop-settings/shop-settings-firestore.repository.d.ts +8 -8
- package/infra/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.d.ts +8 -8
- package/infra/firebase/firestore/repositories/shopping/campaign-dashboard-firestore.repository.d.ts +9 -9
- package/infra/firebase/firestore/repositories/shopping/campaign-hashtag-firestore.repository.d.ts +9 -9
- package/infra/firebase/firestore/repositories/shopping/checkout-firestore.repository.d.ts +8 -8
- package/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.d.ts +8 -8
- package/infra/firebase/firestore/repositories/shopping/coupon-firestore.repository.d.ts +12 -12
- package/infra/firebase/firestore/repositories/shopping/index.d.ts +10 -10
- package/infra/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.d.ts +7 -7
- package/infra/firebase/firestore/repositories/shopping/order-firestore.repository.d.ts +13 -13
- package/infra/firebase/firestore/repositories/shopping/payment-firestore.repository.d.ts +8 -8
- package/infra/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.d.ts +8 -8
- package/infra/firebase/firestore/repositories/users/index.d.ts +8 -8
- package/infra/firebase/firestore/repositories/users/lead-firestore.repository.d.ts +8 -8
- package/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.d.ts +13 -13
- package/infra/firebase/firestore/repositories/users/subscription-firestore.repository.d.ts +8 -8
- package/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.d.ts +13 -13
- package/infra/firebase/firestore/repositories/users/user-address-firestore.repository.d.ts +13 -13
- package/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.d.ts +13 -13
- package/infra/firebase/firestore/repositories/users/user-firestore.repository.d.ts +17 -17
- package/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.d.ts +13 -13
- package/infra/firebase/firestore/types/firestore-sub.repository.type.d.ts +6 -6
- package/infra/firebase/firestore/types/firestore.helpers.type.d.ts +8 -8
- package/infra/firebase/firestore/types/firestore.repository.type.d.ts +14 -14
- package/infra/firebase/firestore/types/index.d.ts +3 -3
- package/infra/firebase/index.d.ts +2 -2
- package/infra/hasura-graphql/enums/hasura-graphql-column-type.enum.d.ts +11 -11
- package/infra/hasura-graphql/enums/hasura-graphql-where.enum.d.ts +13 -13
- package/infra/hasura-graphql/enums/index.d.ts +2 -2
- package/infra/hasura-graphql/index.d.ts +4 -4
- package/infra/hasura-graphql/mixins/helpers/attribute-option.helper.d.ts +15 -15
- package/infra/hasura-graphql/mixins/helpers/bind-filter-query.helper.d.ts +10 -10
- package/infra/hasura-graphql/mixins/helpers/filter-option.helper.d.ts +8 -8
- package/infra/hasura-graphql/mixins/helpers/graphql-field.helper.d.ts +9 -9
- package/infra/hasura-graphql/mixins/helpers/index.d.ts +4 -4
- package/infra/hasura-graphql/mixins/index.d.ts +7 -7
- package/infra/hasura-graphql/mixins/with-create-hasura-graphql.mixin.d.ts +9 -9
- package/infra/hasura-graphql/mixins/with-crud-hasura-graphql.mixin.d.ts +11 -11
- package/infra/hasura-graphql/mixins/with-delete-hasura-graphql.mixin.d.ts +7 -7
- package/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.d.ts +33 -33
- package/infra/hasura-graphql/mixins/with-get-hasura-graphql.mixin.d.ts +25 -25
- package/infra/hasura-graphql/mixins/with-hasura-graphql.mixin.d.ts +11 -11
- package/infra/hasura-graphql/mixins/with-update-hasura-graphql.mixin.d.ts +14 -14
- package/infra/hasura-graphql/models/category-hasura-graphql.d.ts +6 -6
- package/infra/hasura-graphql/models/index.d.ts +4 -4
- package/infra/hasura-graphql/models/kit-product-hasura-graphql.d.ts +6 -6
- package/infra/hasura-graphql/models/product-hasura-graphql.d.ts +18 -18
- package/infra/hasura-graphql/models/variant-hasura-graphql.d.ts +10 -10
- package/infra/hasura-graphql/repositories/catalog/category-collection-children-hasura-graphql.repository.d.ts +10 -10
- package/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.d.ts +11 -11
- package/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.d.ts +34 -34
- package/infra/hasura-graphql/repositories/catalog/filter-hasura-graphql.repository.d.ts +18 -18
- package/infra/hasura-graphql/repositories/catalog/filter-option-hasura-graphql.repository.d.ts +10 -10
- package/infra/hasura-graphql/repositories/catalog/index.d.ts +7 -7
- package/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.d.ts +30 -30
- package/infra/hasura-graphql/repositories/catalog/variant-hasura-graphql.repository.d.ts +14 -14
- package/infra/hasura-graphql/repositories/index.d.ts +1 -1
- package/infra/hasura-graphql/types/fields.type.d.ts +2 -2
- package/infra/hasura-graphql/types/graphql.repository.type.d.ts +23 -23
- package/infra/hasura-graphql/types/hasura-graphql-auth-options.type.d.ts +8 -8
- package/infra/hasura-graphql/types/hasura-graphql-fields.type.d.ts +44 -44
- package/infra/hasura-graphql/types/hasura-graphql-headers.type.d.ts +7 -7
- package/infra/hasura-graphql/types/index.d.ts +8 -8
- package/infra/hasura-graphql/types/nested-field.type.d.ts +7 -7
- package/infra/hasura-graphql/types/query-builder-options.type.d.ts +7 -7
- package/infra/hasura-graphql/types/variable-options.type.d.ts +9 -9
- package/infra/index.d.ts +3 -3
- package/infrab4a-connect.d.ts +5 -5
- package/package.json +1 -1
- package/utils/decorators/debug.class.decorator.d.ts +2 -2
- package/utils/decorators/index.d.ts +2 -2
- package/utils/decorators/trace.method.decorator.d.ts +14 -14
- package/utils/helpers/class-name.helper.d.ts +3 -3
- package/utils/helpers/debug-decorator.helper.d.ts +9 -9
- package/utils/helpers/debug.helper.d.ts +60 -60
- package/utils/helpers/index.d.ts +4 -4
- package/utils/helpers/reflect.helper.d.ts +50 -50
- package/utils/index.d.ts +10 -10
- package/utils/is-uuid.d.ts +1 -1
- package/utils/log.utils.d.ts +7 -7
- package/utils/mixins/base.mixin.d.ts +3 -3
- package/utils/mixins/index.d.ts +3 -3
- package/utils/mixins/merge-constructor-params.type.d.ts +3 -3
- package/utils/mixins/mixin-ctor.type.d.ts +1 -1
- package/utils/parse-datetime.d.ts +1 -1
- package/utils/types/array-element.type.d.ts +1 -1
- package/utils/types/index.d.ts +2 -2
- package/utils/types/prop.type.d.ts +1 -1
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { UserAlreadyRegisteredError, WeakPasswordError } from '../../../domain';
|
|
3
|
-
export class RegisterFirebaseAuthService {
|
|
4
|
-
constructor(firebaseAuth) {
|
|
5
|
-
this.firebaseAuth = firebaseAuth;
|
|
6
|
-
}
|
|
7
|
-
register(params) {
|
|
8
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
9
|
-
try {
|
|
10
|
-
const auth = yield this.firebaseAuth.createUserWithEmailAndPassword(params.email, params.password);
|
|
11
|
-
const user = auth.user;
|
|
12
|
-
user.sendEmailVerification();
|
|
13
|
-
user.id = auth.user.uid;
|
|
14
|
-
return user;
|
|
15
|
-
}
|
|
16
|
-
catch (error) {
|
|
17
|
-
if (error.code === 'auth/email-already-in-use')
|
|
18
|
-
throw new UserAlreadyRegisteredError('Email already registered');
|
|
19
|
-
if (error.code === 'auth/weak-password')
|
|
20
|
-
throw new WeakPasswordError();
|
|
21
|
-
throw error;
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { UserAlreadyRegisteredError, WeakPasswordError } from '../../../domain';
|
|
3
|
+
export class RegisterFirebaseAuthService {
|
|
4
|
+
constructor(firebaseAuth) {
|
|
5
|
+
this.firebaseAuth = firebaseAuth;
|
|
6
|
+
}
|
|
7
|
+
register(params) {
|
|
8
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
9
|
+
try {
|
|
10
|
+
const auth = yield this.firebaseAuth.createUserWithEmailAndPassword(params.email, params.password);
|
|
11
|
+
const user = auth.user;
|
|
12
|
+
user.sendEmailVerification();
|
|
13
|
+
user.id = auth.user.uid;
|
|
14
|
+
return user;
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
if (error.code === 'auth/email-already-in-use')
|
|
18
|
+
throw new UserAlreadyRegisteredError('Email already registered');
|
|
19
|
+
if (error.code === 'auth/weak-password')
|
|
20
|
+
throw new WeakPasswordError();
|
|
21
|
+
throw error;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItZmlyZWJhc2UtYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC9zcmMvaW5mcmEvZmlyZWJhc2UvYXV0aC9yZWdpc3Rlci1maXJlYmFzZS1hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBbUMsMEJBQTBCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUloSCxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLFlBQTZCLFlBQWdDO1FBQWhDLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtJQUFHLENBQUM7SUFFM0QsUUFBUSxDQUFDLE1BQXNCOztZQUNuQyxJQUFJO2dCQUNGLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFDbEcsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQTBCLENBQUE7Z0JBRTVDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFBO2dCQUM1QixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFBO2dCQUV2QixPQUFPLElBQUksQ0FBQTthQUNaO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLDJCQUEyQjtvQkFBRSxNQUFNLElBQUksMEJBQTBCLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtnQkFDaEgsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLG9CQUFvQjtvQkFBRSxNQUFNLElBQUksaUJBQWlCLEVBQUUsQ0FBQTtnQkFFdEUsTUFBTSxLQUFLLENBQUE7YUFDWjtRQUNILENBQUM7S0FBQTtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZpcmViYXNlIGZyb20gJ2ZpcmViYXNlJ1xuXG5pbXBvcnQgeyBSZWdpc3RlclBhcmFtcywgUmVnaXN0ZXJTZXJ2aWNlLCBVc2VyQWxyZWFkeVJlZ2lzdGVyZWRFcnJvciwgV2Vha1Bhc3N3b3JkRXJyb3IgfSBmcm9tICcuLi8uLi8uLi9kb21haW4nXG5cbmltcG9ydCB7IEZpcmViYXNlVXNlcldpdGhJZCB9IGZyb20gJy4vdHlwZXMvZmlyZWJhc2UtdXNlci13aXRoLWlkLnR5cGUnXG5cbmV4cG9ydCBjbGFzcyBSZWdpc3RlckZpcmViYXNlQXV0aFNlcnZpY2UgaW1wbGVtZW50cyBSZWdpc3RlclNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpcmViYXNlQXV0aDogZmlyZWJhc2UuYXV0aC5BdXRoKSB7fVxuXG4gIGFzeW5jIHJlZ2lzdGVyKHBhcmFtczogUmVnaXN0ZXJQYXJhbXMpOiBQcm9taXNlPEZpcmViYXNlVXNlcldpdGhJZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhdXRoID0gYXdhaXQgdGhpcy5maXJlYmFzZUF1dGguY3JlYXRlVXNlcldpdGhFbWFpbEFuZFBhc3N3b3JkKHBhcmFtcy5lbWFpbCwgcGFyYW1zLnBhc3N3b3JkKVxuICAgICAgY29uc3QgdXNlciA9IGF1dGgudXNlciBhcyBGaXJlYmFzZVVzZXJXaXRoSWRcblxuICAgICAgdXNlci5zZW5kRW1haWxWZXJpZmljYXRpb24oKVxuICAgICAgdXNlci5pZCA9IGF1dGgudXNlci51aWRcblxuICAgICAgcmV0dXJuIHVzZXJcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yLmNvZGUgPT09ICdhdXRoL2VtYWlsLWFscmVhZHktaW4tdXNlJykgdGhyb3cgbmV3IFVzZXJBbHJlYWR5UmVnaXN0ZXJlZEVycm9yKCdFbWFpbCBhbHJlYWR5IHJlZ2lzdGVyZWQnKVxuICAgICAgaWYgKGVycm9yLmNvZGUgPT09ICdhdXRoL3dlYWstcGFzc3dvcmQnKSB0aHJvdyBuZXcgV2Vha1Bhc3N3b3JkRXJyb3IoKVxuXG4gICAgICB0aHJvdyBlcnJvclxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UtdXNlci13aXRoLWlkLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9pbmZyYS9maXJlYmFzZS9hdXRoL3R5cGVzL2ZpcmViYXNlLXVzZXItd2l0aC1pZC50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBGaXJlYmFzZVVzZXJXaXRoSWQgPSBmaXJlYmFzZS5Vc2VyICYgeyBpZDogc3RyaW5nIH1cbiJdfQ==
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export var FirestoreFieldType;
|
|
2
|
-
(function (FirestoreFieldType) {
|
|
3
|
-
FirestoreFieldType["String"] = "string";
|
|
4
|
-
FirestoreFieldType["Number"] = "number";
|
|
5
|
-
FirestoreFieldType["Boolean"] = "boolean";
|
|
6
|
-
FirestoreFieldType["Timestamp"] = "timestamp";
|
|
7
|
-
FirestoreFieldType["Array"] = "array";
|
|
8
|
-
FirestoreFieldType["Map"] = "map";
|
|
9
|
-
})(FirestoreFieldType || (FirestoreFieldType = {}));
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export var FirestoreFieldType;
|
|
2
|
+
(function (FirestoreFieldType) {
|
|
3
|
+
FirestoreFieldType["String"] = "string";
|
|
4
|
+
FirestoreFieldType["Number"] = "number";
|
|
5
|
+
FirestoreFieldType["Boolean"] = "boolean";
|
|
6
|
+
FirestoreFieldType["Timestamp"] = "timestamp";
|
|
7
|
+
FirestoreFieldType["Array"] = "array";
|
|
8
|
+
FirestoreFieldType["Map"] = "map";
|
|
9
|
+
})(FirestoreFieldType || (FirestoreFieldType = {}));
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZXN0b3JlLWZpZWxkLXR5cGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL2luZnJhL2ZpcmViYXNlL2ZpcmVzdG9yZS9lbnVtcy9maXJlc3RvcmUtZmllbGQtdHlwZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGtCQU9YO0FBUEQsV0FBWSxrQkFBa0I7SUFDNUIsdUNBQWlCLENBQUE7SUFDakIsdUNBQWlCLENBQUE7SUFDakIseUNBQW1CLENBQUE7SUFDbkIsNkNBQXVCLENBQUE7SUFDdkIscUNBQWUsQ0FBQTtJQUNmLGlDQUFXLENBQUE7QUFDYixDQUFDLEVBUFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQU83QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEZpcmVzdG9yZUZpZWxkVHlwZSB7XG4gIFN0cmluZyA9ICdzdHJpbmcnLFxuICBOdW1iZXIgPSAnbnVtYmVyJyxcbiAgQm9vbGVhbiA9ICdib29sZWFuJyxcbiAgVGltZXN0YW1wID0gJ3RpbWVzdGFtcCcsXG4gIEFycmF5ID0gJ2FycmF5JyxcbiAgTWFwID0gJ21hcCcsXG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './firestore-field-type.enum';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './firestore-field-type.enum';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9pbmZyYS9maXJlYmFzZS9maXJlc3RvcmUvZW51bXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZmlyZXN0b3JlLWZpZWxkLXR5cGUuZW51bSdcbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './mixins';
|
|
2
|
-
export * from './types';
|
|
3
|
-
export * from './repositories';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './mixins';
|
|
2
|
+
export * from './types';
|
|
3
|
+
export * from './repositories';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9pbmZyYS9maXJlYmFzZS9maXJlc3RvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxnQkFBZ0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbWl4aW5zJ1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcydcbmV4cG9ydCAqIGZyb20gJy4vcmVwb3NpdG9yaWVzJ1xuIl19
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export * from './with-firestore.mixin';
|
|
2
|
-
export * from './with-helpers.mixin';
|
|
3
|
-
export * from './with-get-firestore.mixin';
|
|
4
|
-
export * from './with-find-firestore.mixin';
|
|
5
|
-
export * from './with-create-firestore.mixin';
|
|
6
|
-
export * from './with-update-firestore.mixin';
|
|
7
|
-
export * from './with-delete-firestore.mixin';
|
|
8
|
-
export * from './with-sub-collection.mixin';
|
|
9
|
-
export * from './with-crud-firestore.mixin';
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './with-firestore.mixin';
|
|
2
|
+
export * from './with-helpers.mixin';
|
|
3
|
+
export * from './with-get-firestore.mixin';
|
|
4
|
+
export * from './with-find-firestore.mixin';
|
|
5
|
+
export * from './with-create-firestore.mixin';
|
|
6
|
+
export * from './with-update-firestore.mixin';
|
|
7
|
+
export * from './with-delete-firestore.mixin';
|
|
8
|
+
export * from './with-sub-collection.mixin';
|
|
9
|
+
export * from './with-crud-firestore.mixin';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9pbmZyYS9maXJlYmFzZS9maXJlc3RvcmUvbWl4aW5zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQTtBQUNwQyxjQUFjLDRCQUE0QixDQUFBO0FBQzFDLGNBQWMsNkJBQTZCLENBQUE7QUFDM0MsY0FBYywrQkFBK0IsQ0FBQTtBQUM3QyxjQUFjLCtCQUErQixDQUFBO0FBQzdDLGNBQWMsK0JBQStCLENBQUE7QUFDN0MsY0FBYyw2QkFBNkIsQ0FBQTtBQUMzQyxjQUFjLDZCQUE2QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi93aXRoLWZpcmVzdG9yZS5taXhpbidcbmV4cG9ydCAqIGZyb20gJy4vd2l0aC1oZWxwZXJzLm1peGluJ1xuZXhwb3J0ICogZnJvbSAnLi93aXRoLWdldC1maXJlc3RvcmUubWl4aW4nXG5leHBvcnQgKiBmcm9tICcuL3dpdGgtZmluZC1maXJlc3RvcmUubWl4aW4nXG5leHBvcnQgKiBmcm9tICcuL3dpdGgtY3JlYXRlLWZpcmVzdG9yZS5taXhpbidcbmV4cG9ydCAqIGZyb20gJy4vd2l0aC11cGRhdGUtZmlyZXN0b3JlLm1peGluJ1xuZXhwb3J0ICogZnJvbSAnLi93aXRoLWRlbGV0ZS1maXJlc3RvcmUubWl4aW4nXG5leHBvcnQgKiBmcm9tICcuL3dpdGgtc3ViLWNvbGxlY3Rpb24ubWl4aW4nXG5leHBvcnQgKiBmcm9tICcuL3dpdGgtY3J1ZC1maXJlc3RvcmUubWl4aW4nXG4iXX0=
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { isEmpty } from '../../../../utils';
|
|
3
|
-
export const withCreateFirestore = (MixinBase) => {
|
|
4
|
-
return class CreateFirestore extends MixinBase {
|
|
5
|
-
create(data) {
|
|
6
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
7
|
-
const docRef = yield this.save(this.model.toInstance(data));
|
|
8
|
-
const doc = yield docRef.get();
|
|
9
|
-
return doc.data();
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
save(data) {
|
|
13
|
-
var _a, _b;
|
|
14
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
15
|
-
const id = (_b = (_a = Object.values(data.identifier)) === null || _a === void 0 ? void 0 : _a.shift()) === null || _b === void 0 ? void 0 : _b.toString();
|
|
16
|
-
const collectionPath = this.buildCollectionPathForAdd(data);
|
|
17
|
-
if (isEmpty(id))
|
|
18
|
-
return this.collection(collectionPath).add(data);
|
|
19
|
-
const docRef = this.collection(collectionPath).doc(id);
|
|
20
|
-
yield docRef.set(data);
|
|
21
|
-
return docRef;
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
buildCollectionPathForAdd(identifiers) {
|
|
25
|
-
return this.isSubCollection(this)
|
|
26
|
-
? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`
|
|
27
|
-
: this.collectionName;
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { isEmpty } from '../../../../utils';
|
|
3
|
+
export const withCreateFirestore = (MixinBase) => {
|
|
4
|
+
return class CreateFirestore extends MixinBase {
|
|
5
|
+
create(data) {
|
|
6
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
7
|
+
const docRef = yield this.save(this.model.toInstance(data));
|
|
8
|
+
const doc = yield docRef.get();
|
|
9
|
+
return doc.data();
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
save(data) {
|
|
13
|
+
var _a, _b;
|
|
14
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
15
|
+
const id = (_b = (_a = Object.values(data.identifier)) === null || _a === void 0 ? void 0 : _a.shift()) === null || _b === void 0 ? void 0 : _b.toString();
|
|
16
|
+
const collectionPath = this.buildCollectionPathForAdd(data);
|
|
17
|
+
if (isEmpty(id))
|
|
18
|
+
return this.collection(collectionPath).add(data);
|
|
19
|
+
const docRef = this.collection(collectionPath).doc(id);
|
|
20
|
+
yield docRef.set(data);
|
|
21
|
+
return docRef;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
buildCollectionPathForAdd(identifiers) {
|
|
25
|
+
return this.isSubCollection(this)
|
|
26
|
+
? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`
|
|
27
|
+
: this.collectionName;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1jcmVhdGUtZmlyZXN0b3JlLm1peGluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC9zcmMvaW5mcmEvZmlyZWJhc2UvZmlyZXN0b3JlL21peGlucy93aXRoLWNyZWF0ZS1maXJlc3RvcmUubWl4aW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQWEsTUFBTSxtQkFBbUIsQ0FBQTtBQUd0RCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUlqQyxTQUFnRixFQUloRixFQUFFO0lBQ0YsT0FBTyxNQUFNLGVBQWdCLFNBQVEsU0FBUztRQUN0QyxNQUFNLENBQUMsSUFBbUM7O2dCQUM5QyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBVyxDQUFDLENBQUMsQ0FBQTtnQkFDbEUsTUFBTSxHQUFHLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUE7Z0JBRTlCLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFBO1lBQ25CLENBQUM7U0FBQTtRQUVLLElBQUksQ0FBQyxJQUFXOzs7Z0JBQ3BCLE1BQU0sRUFBRSxHQUFHLE1BQUEsTUFBQSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsMENBQUUsS0FBSyxFQUFFLDBDQUFFLFFBQVEsRUFBRSxDQUFBO2dCQUM5RCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBRTNELElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFBRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUVqRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtnQkFDdEQsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUV0QixPQUFPLE1BQU0sQ0FBQTs7U0FDZDtRQUVELHlCQUF5QixDQUFDLFdBQTJCO1lBQ25ELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7Z0JBQy9CLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUNyRyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQTtRQUN6QixDQUFDO0tBQ0ssQ0FBQTtBQUNWLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERvY3VtZW50UmVmZXJlbmNlIH0gZnJvbSAnQGZpcmViYXNlL2ZpcmVzdG9yZS10eXBlcydcbmltcG9ydCB7IENyZWF0ZVJlcG9zaXRvcnksIENyZWF0ZVJlcG9zaXRvcnlQYXJhbXMsIE1vZGVsQmFzZVN0cnVjdHVyZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RvbWFpbidcbmltcG9ydCB7IGlzRW1wdHksIE1peGluQ3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgRmlyZXN0b3JlSGVscGVycywgRmlyZXN0b3JlUmVwb3NpdG9yeSB9IGZyb20gJy4uL3R5cGVzJ1xuXG5leHBvcnQgY29uc3Qgd2l0aENyZWF0ZUZpcmVzdG9yZSA9IDxcbiAgVEJhc2UgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8VEJhc2U+LFxuICBUTWl4aW5CYXNlIGV4dGVuZHMgTWl4aW5DdG9yPEZpcmVzdG9yZVJlcG9zaXRvcnk8VEJhc2U+Pixcbj4oXG4gIE1peGluQmFzZTogTWl4aW5DdG9yPEZpcmVzdG9yZVJlcG9zaXRvcnk8VEJhc2U+ICYgRmlyZXN0b3JlSGVscGVycz4gJiBUTWl4aW5CYXNlLFxuKTogTWl4aW5DdG9yPFxuICBGaXJlc3RvcmVSZXBvc2l0b3J5PFRCYXNlPiAmIEluc3RhbmNlVHlwZTxUTWl4aW5CYXNlPiAmIENyZWF0ZVJlcG9zaXRvcnk8VEJhc2U+ICYgRmlyZXN0b3JlSGVscGVycyxcbiAgW11cbj4gPT4ge1xuICByZXR1cm4gY2xhc3MgQ3JlYXRlRmlyZXN0b3JlIGV4dGVuZHMgTWl4aW5CYXNlIGltcGxlbWVudHMgQ3JlYXRlUmVwb3NpdG9yeTxUQmFzZT4ge1xuICAgIGFzeW5jIGNyZWF0ZShkYXRhOiBDcmVhdGVSZXBvc2l0b3J5UGFyYW1zPFRCYXNlPik6IFByb21pc2U8VEJhc2U+IHtcbiAgICAgIGNvbnN0IGRvY1JlZiA9IGF3YWl0IHRoaXMuc2F2ZSh0aGlzLm1vZGVsLnRvSW5zdGFuY2UoZGF0YSBhcyBhbnkpKVxuICAgICAgY29uc3QgZG9jID0gYXdhaXQgZG9jUmVmLmdldCgpXG5cbiAgICAgIHJldHVybiBkb2MuZGF0YSgpXG4gICAgfVxuXG4gICAgYXN5bmMgc2F2ZShkYXRhOiBUQmFzZSk6IFByb21pc2U8RG9jdW1lbnRSZWZlcmVuY2U8VEJhc2U+PiB7XG4gICAgICBjb25zdCBpZCA9IE9iamVjdC52YWx1ZXMoZGF0YS5pZGVudGlmaWVyKT8uc2hpZnQoKT8udG9TdHJpbmcoKVxuICAgICAgY29uc3QgY29sbGVjdGlvblBhdGggPSB0aGlzLmJ1aWxkQ29sbGVjdGlvblBhdGhGb3JBZGQoZGF0YSlcblxuICAgICAgaWYgKGlzRW1wdHkoaWQpKSByZXR1cm4gdGhpcy5jb2xsZWN0aW9uKGNvbGxlY3Rpb25QYXRoKS5hZGQoZGF0YSlcblxuICAgICAgY29uc3QgZG9jUmVmID0gdGhpcy5jb2xsZWN0aW9uKGNvbGxlY3Rpb25QYXRoKS5kb2MoaWQpXG4gICAgICBhd2FpdCBkb2NSZWYuc2V0KGRhdGEpXG5cbiAgICAgIHJldHVybiBkb2NSZWZcbiAgICB9XG5cbiAgICBidWlsZENvbGxlY3Rpb25QYXRoRm9yQWRkKGlkZW50aWZpZXJzOiBQYXJ0aWFsPFRCYXNlPik6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdGhpcy5pc1N1YkNvbGxlY3Rpb24odGhpcylcbiAgICAgICAgPyBgJHt0aGlzLnBhcmVudFJlcG9zaXRvcnkuY29sbGVjdGlvbk5hbWV9LyR7aWRlbnRpZmllcnNbdGhpcy5wYXJlbnRJZEZpZWxkXX0vJHt0aGlzLmNvbGxlY3Rpb25OYW1lfWBcbiAgICAgICAgOiB0aGlzLmNvbGxlY3Rpb25OYW1lXG4gICAgfVxuICB9IGFzIGFueVxufVxuIl19
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { withCreateFirestore } from './with-create-firestore.mixin';
|
|
2
|
-
import { withDeleteFirestore } from './with-delete-firestore.mixin';
|
|
3
|
-
import { withFindFirestore } from './with-find-firestore.mixin';
|
|
4
|
-
import { withGetFirestore } from './with-get-firestore.mixin';
|
|
5
|
-
import { withUpdateFirestore } from './with-update-firestore.mixin';
|
|
6
|
-
export const withCrudFirestore = (MixinBase) => {
|
|
7
|
-
return class CrudFirestore extends withUpdateFirestore(withGetFirestore(withFindFirestore(withDeleteFirestore(withCreateFirestore(MixinBase))))) {
|
|
8
|
-
};
|
|
9
|
-
};
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { withCreateFirestore } from './with-create-firestore.mixin';
|
|
2
|
+
import { withDeleteFirestore } from './with-delete-firestore.mixin';
|
|
3
|
+
import { withFindFirestore } from './with-find-firestore.mixin';
|
|
4
|
+
import { withGetFirestore } from './with-get-firestore.mixin';
|
|
5
|
+
import { withUpdateFirestore } from './with-update-firestore.mixin';
|
|
6
|
+
export const withCrudFirestore = (MixinBase) => {
|
|
7
|
+
return class CrudFirestore extends withUpdateFirestore(withGetFirestore(withFindFirestore(withDeleteFirestore(withCreateFirestore(MixinBase))))) {
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1jcnVkLWZpcmVzdG9yZS5taXhpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL2luZnJhL2ZpcmViYXNlL2ZpcmVzdG9yZS9taXhpbnMvd2l0aC1jcnVkLWZpcmVzdG9yZS5taXhpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUVuRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUsvQixTQUFnRixFQUNMLEVBQUU7SUFDN0UsT0FBTyxNQUFNLGFBQ1gsU0FBUSxtQkFBbUIsQ0FDekIsZ0JBQWdCLENBQ2QsaUJBQWlCLENBQ2YsbUJBQW1CLENBQ2pCLG1CQUFtQixDQUFDLFNBQXFFLENBQUMsQ0FDM0YsQ0FDRixDQUNGLENBQ0Y7S0FDeUMsQ0FBQTtBQUM5QyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcnVkUmVwb3NpdG9yeSwgTW9kZWxCYXNlU3RydWN0dXJlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZG9tYWluJ1xuaW1wb3J0IHsgTWl4aW5DdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBGaXJlc3RvcmVIZWxwZXJzLCBGaXJlc3RvcmVSZXBvc2l0b3J5IH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyB3aXRoQ3JlYXRlRmlyZXN0b3JlIH0gZnJvbSAnLi93aXRoLWNyZWF0ZS1maXJlc3RvcmUubWl4aW4nXG5pbXBvcnQgeyB3aXRoRGVsZXRlRmlyZXN0b3JlIH0gZnJvbSAnLi93aXRoLWRlbGV0ZS1maXJlc3RvcmUubWl4aW4nXG5pbXBvcnQgeyB3aXRoRmluZEZpcmVzdG9yZSB9IGZyb20gJy4vd2l0aC1maW5kLWZpcmVzdG9yZS5taXhpbidcbmltcG9ydCB7IHdpdGhHZXRGaXJlc3RvcmUgfSBmcm9tICcuL3dpdGgtZ2V0LWZpcmVzdG9yZS5taXhpbidcbmltcG9ydCB7IHdpdGhVcGRhdGVGaXJlc3RvcmUgfSBmcm9tICcuL3dpdGgtdXBkYXRlLWZpcmVzdG9yZS5taXhpbidcblxuZXhwb3J0IGNvbnN0IHdpdGhDcnVkRmlyZXN0b3JlID0gPFxuICBUQmFzZSBleHRlbmRzIE1vZGVsQmFzZVN0cnVjdHVyZTxUQmFzZT4sXG4gIFJlcG9zaXRvcnkgPSBDcnVkUmVwb3NpdG9yeTxUQmFzZT4sXG4gIFRNaXhpbkJhc2UgZXh0ZW5kcyBNaXhpbkN0b3IgPSBNaXhpbkN0b3IsXG4+KFxuICBNaXhpbkJhc2U6IE1peGluQ3RvcjxGaXJlc3RvcmVSZXBvc2l0b3J5PFRCYXNlPiAmIEZpcmVzdG9yZUhlbHBlcnM+ICYgVE1peGluQmFzZSxcbik6IE1peGluQ3RvcjxGaXJlc3RvcmVSZXBvc2l0b3J5PFRCYXNlPiAmIFJlcG9zaXRvcnkgJiBGaXJlc3RvcmVIZWxwZXJzLCBbXT4gPT4ge1xuICByZXR1cm4gY2xhc3MgQ3J1ZEZpcmVzdG9yZVxuICAgIGV4dGVuZHMgd2l0aFVwZGF0ZUZpcmVzdG9yZShcbiAgICAgIHdpdGhHZXRGaXJlc3RvcmUoXG4gICAgICAgIHdpdGhGaW5kRmlyZXN0b3JlKFxuICAgICAgICAgIHdpdGhEZWxldGVGaXJlc3RvcmUoXG4gICAgICAgICAgICB3aXRoQ3JlYXRlRmlyZXN0b3JlKE1peGluQmFzZSBhcyBNaXhpbkN0b3I8RmlyZXN0b3JlUmVwb3NpdG9yeTxUQmFzZT4gJiBGaXJlc3RvcmVIZWxwZXJzPiksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKVxuICAgIGltcGxlbWVudHMgQ3J1ZFJlcG9zaXRvcnk8VEJhc2U+IHt9IGFzIGFueVxufVxuIl19
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
export const withDeleteFirestore = (MixinBase) => {
|
|
3
|
-
return class DeleteFirestore extends MixinBase {
|
|
4
|
-
delete(identifiers) {
|
|
5
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
6
|
-
yield this.collection(this.buildCollectionPathForRemove(identifiers))
|
|
7
|
-
.doc(Object.values(identifiers).shift().toString())
|
|
8
|
-
.delete();
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
buildCollectionPathForRemove(identifiers) {
|
|
12
|
-
return this.isSubCollection(this)
|
|
13
|
-
? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`
|
|
14
|
-
: this.collectionName;
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
export const withDeleteFirestore = (MixinBase) => {
|
|
3
|
+
return class DeleteFirestore extends MixinBase {
|
|
4
|
+
delete(identifiers) {
|
|
5
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
6
|
+
yield this.collection(this.buildCollectionPathForRemove(identifiers))
|
|
7
|
+
.doc(Object.values(identifiers).shift().toString())
|
|
8
|
+
.delete();
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
buildCollectionPathForRemove(identifiers) {
|
|
12
|
+
return this.isSubCollection(this)
|
|
13
|
+
? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`
|
|
14
|
+
: this.collectionName;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kZWxldGUtZmlyZXN0b3JlLm1peGluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC9zcmMvaW5mcmEvZmlyZWJhc2UvZmlyZXN0b3JlL21peGlucy93aXRoLWRlbGV0ZS1maXJlc3RvcmUubWl4aW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUlBLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBSWpDLFNBQWdGLEVBSWhGLEVBQUU7SUFDRixPQUFPLE1BQU0sZUFBZ0IsU0FBUSxTQUFTO1FBQ3RDLE1BQU0sQ0FBQyxXQUEwQzs7Z0JBQ3JELE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsV0FBVyxDQUFDLENBQUM7cUJBQ2xFLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO3FCQUNsRCxNQUFNLEVBQUUsQ0FBQTtZQUNiLENBQUM7U0FBQTtRQUVELDRCQUE0QixDQUFDLFdBQW9DO1lBQy9ELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7Z0JBQy9CLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUNyRyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQTtRQUN6QixDQUFDO0tBQ0ssQ0FBQTtBQUNWLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlbGV0ZVJlcG9zaXRvcnksIERlbGV0ZVJlcG9zaXRvcnlQYXJhbXMsIElkZW50aWZpZXJzTW9kZWwsIE1vZGVsQmFzZVN0cnVjdHVyZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RvbWFpbidcbmltcG9ydCB7IE1peGluQ3RvciB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgRmlyZXN0b3JlSGVscGVycywgRmlyZXN0b3JlUmVwb3NpdG9yeSB9IGZyb20gJy4uL3R5cGVzJ1xuXG5leHBvcnQgY29uc3Qgd2l0aERlbGV0ZUZpcmVzdG9yZSA9IDxcbiAgVEJhc2UgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8VEJhc2U+LFxuICBUTWl4aW5CYXNlIGV4dGVuZHMgTWl4aW5DdG9yPEZpcmVzdG9yZVJlcG9zaXRvcnk8VEJhc2U+Pixcbj4oXG4gIE1peGluQmFzZTogTWl4aW5DdG9yPEZpcmVzdG9yZVJlcG9zaXRvcnk8VEJhc2U+ICYgRmlyZXN0b3JlSGVscGVycz4gJiBUTWl4aW5CYXNlLFxuKTogTWl4aW5DdG9yPFxuICBGaXJlc3RvcmVSZXBvc2l0b3J5PFRCYXNlPiAmIEluc3RhbmNlVHlwZTxUTWl4aW5CYXNlPiAmIERlbGV0ZVJlcG9zaXRvcnk8VEJhc2U+ICYgRmlyZXN0b3JlSGVscGVycyxcbiAgW11cbj4gPT4ge1xuICByZXR1cm4gY2xhc3MgRGVsZXRlRmlyZXN0b3JlIGV4dGVuZHMgTWl4aW5CYXNlIGltcGxlbWVudHMgRGVsZXRlUmVwb3NpdG9yeTxUQmFzZT4ge1xuICAgIGFzeW5jIGRlbGV0ZShpZGVudGlmaWVyczogRGVsZXRlUmVwb3NpdG9yeVBhcmFtczxUQmFzZT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGF3YWl0IHRoaXMuY29sbGVjdGlvbih0aGlzLmJ1aWxkQ29sbGVjdGlvblBhdGhGb3JSZW1vdmUoaWRlbnRpZmllcnMpKVxuICAgICAgICAuZG9jKE9iamVjdC52YWx1ZXMoaWRlbnRpZmllcnMpLnNoaWZ0KCkudG9TdHJpbmcoKSlcbiAgICAgICAgLmRlbGV0ZSgpXG4gICAgfVxuXG4gICAgYnVpbGRDb2xsZWN0aW9uUGF0aEZvclJlbW92ZShpZGVudGlmaWVyczogSWRlbnRpZmllcnNNb2RlbDxUQmFzZT4pOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIHRoaXMuaXNTdWJDb2xsZWN0aW9uKHRoaXMpXG4gICAgICAgID8gYCR7dGhpcy5wYXJlbnRSZXBvc2l0b3J5LmNvbGxlY3Rpb25OYW1lfS8ke2lkZW50aWZpZXJzW3RoaXMucGFyZW50SWRGaWVsZF19LyR7dGhpcy5jb2xsZWN0aW9uTmFtZX1gXG4gICAgICAgIDogdGhpcy5jb2xsZWN0aW9uTmFtZVxuICAgIH1cbiAgfSBhcyBhbnlcbn1cbiJdfQ==
|
|
@@ -1,98 +1,98 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Where, } from '../../../../domain';
|
|
3
|
-
import { isDate, isNil, isNumber, isObject, isString, set } from '../../../../utils';
|
|
4
|
-
import { FirestoreFieldType } from '../enums';
|
|
5
|
-
export const withFindFirestore = (MixinBase) => {
|
|
6
|
-
const checkIfIsFilterOption = (filter) => !isNil(filter === null || filter === void 0 ? void 0 : filter.operator);
|
|
7
|
-
const getValueFromFilter = (filter) => {
|
|
8
|
-
return checkIfIsFilterOption(filter) ? filter.value : filter;
|
|
9
|
-
};
|
|
10
|
-
const getFinalValueFrom = (value) => isNumber(value) || isString(value) || isDate(value) || Array.isArray(value)
|
|
11
|
-
? value
|
|
12
|
-
: Object.values(getFinalValueFrom);
|
|
13
|
-
return class FindFirestore extends MixinBase {
|
|
14
|
-
constructor() {
|
|
15
|
-
super(...arguments);
|
|
16
|
-
this.makeFirestoreWhere = (queryReference, filter) => Object.keys(filter).reduce((query, fieldName) => this.buildWhereSentence(query, fieldName, filter[fieldName]), queryReference);
|
|
17
|
-
this.buildWhereSentence = (queryReference, fieldName, options) => {
|
|
18
|
-
if (this.isSubCollection(this) && fieldName === this.parentIdField)
|
|
19
|
-
return queryReference;
|
|
20
|
-
const value = (options === null || options === void 0 ? void 0 : options.value) || options;
|
|
21
|
-
const object = {};
|
|
22
|
-
set(object, fieldName, value);
|
|
23
|
-
const plainInstance = new this.model(object).toPlain();
|
|
24
|
-
const firestoreFieldName = fieldName.toString().indexOf('.') > -1
|
|
25
|
-
? fieldName.toString()
|
|
26
|
-
: Object.keys(plainInstance).find((key) => plainInstance[key]);
|
|
27
|
-
if ((options === null || options === void 0 ? void 0 : options.operator) === Where.LIKE) {
|
|
28
|
-
if (Array.isArray(options === null || options === void 0 ? void 0 : options.value) &&
|
|
29
|
-
(this.fields[firestoreFieldName] === FirestoreFieldType.Array || !this.fields[firestoreFieldName]))
|
|
30
|
-
return queryReference.where(firestoreFieldName, 'array-contains-any', options.value);
|
|
31
|
-
queryReference = queryReference.where(firestoreFieldName, '>=', options.value);
|
|
32
|
-
queryReference = queryReference.where(firestoreFieldName, '<=', `${options.value}~`);
|
|
33
|
-
return queryReference;
|
|
34
|
-
}
|
|
35
|
-
if ((options === null || options === void 0 ? void 0 : options.operator) === Where.IN &&
|
|
36
|
-
Array.isArray(options === null || options === void 0 ? void 0 : options.value) &&
|
|
37
|
-
(this.fields[firestoreFieldName] === FirestoreFieldType.Array || !this.fields[firestoreFieldName]))
|
|
38
|
-
return queryReference.where(firestoreFieldName, 'array-contains', options.value);
|
|
39
|
-
if (isObject(options) && isNil(options === null || options === void 0 ? void 0 : options.operator) && isNil(options === null || options === void 0 ? void 0 : options.value)) {
|
|
40
|
-
return Object.keys(options).reduce((queryReferenceWithWhere, key) => this.buildWhereSentence(queryReferenceWithWhere, `${fieldName.toString()}.${key}`, options[key]), queryReference);
|
|
41
|
-
}
|
|
42
|
-
return queryReference.where(firestoreFieldName, (options === null || options === void 0 ? void 0 : options.operator) || '==', (options === null || options === void 0 ? void 0 : options.value) || options);
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
find({ filters, limits, orderBy, options } = {}) {
|
|
46
|
-
var _a;
|
|
47
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
-
const orderByKeys = Object.keys(orderBy || {});
|
|
49
|
-
const enableCount = (_a = options === null || options === void 0 ? void 0 : options.enableCount) !== null && _a !== void 0 ? _a : true;
|
|
50
|
-
let query = this.collection(this.buildCollectionPathForFind(filters || {}));
|
|
51
|
-
query = this.makeFirestoreWhere(query, filters || {});
|
|
52
|
-
if (orderByKeys.length) {
|
|
53
|
-
const filtersKeysWithUnordered = Object.keys(filters || {}).filter((filterKey) => !orderByKeys.includes(filterKey));
|
|
54
|
-
if (filtersKeysWithUnordered.length)
|
|
55
|
-
filtersKeysWithUnordered.forEach((filterKey) => (orderBy = Object.assign(Object.assign({}, (![Where.EQUALS].includes(filters[filterKey].operator) ? { [filterKey]: 'asc' } : {})), orderBy)));
|
|
56
|
-
Object.keys(orderBy).forEach((fieldName) => (query = query.orderBy(fieldName, orderBy[fieldName])));
|
|
57
|
-
}
|
|
58
|
-
query = yield this.defineLimits(query, filters, limits);
|
|
59
|
-
const docs = yield query.get();
|
|
60
|
-
const data = docs.docs.map((doc) => doc.data());
|
|
61
|
-
return {
|
|
62
|
-
data,
|
|
63
|
-
count: enableCount ? this.calculateCount(data, limits) : Infinity,
|
|
64
|
-
};
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
buildCollectionPathForFind(filters) {
|
|
68
|
-
if (!this.isSubCollection(this))
|
|
69
|
-
return this.collectionName;
|
|
70
|
-
const parentIdField = this.parentIdField;
|
|
71
|
-
const parentId = getValueFromFilter(filters === null || filters === void 0 ? void 0 : filters[parentIdField]);
|
|
72
|
-
return `${this.parentRepository.collectionName}/${parentId}/${this.collectionName}`;
|
|
73
|
-
}
|
|
74
|
-
defineLimits(query, filters, limits) {
|
|
75
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
-
if (limits === null || limits === void 0 ? void 0 : limits.offset) {
|
|
77
|
-
if (this.model.isModel(limits.offset))
|
|
78
|
-
query = query.startAfter(yield this.collection(this.buildCollectionPathForFind(filters))
|
|
79
|
-
.doc(limits.offset[limits.offset.identifiersFields.shift()])
|
|
80
|
-
.get());
|
|
81
|
-
else if (isNumber(limits.offset) || isString(limits.offset))
|
|
82
|
-
query = query.startAt(limits.offset);
|
|
83
|
-
}
|
|
84
|
-
if (limits === null || limits === void 0 ? void 0 : limits.limit)
|
|
85
|
-
query = query.limit(limits.limit);
|
|
86
|
-
return query;
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
calculateCount(data, limits) {
|
|
90
|
-
if (data.length <= 0)
|
|
91
|
-
return 0;
|
|
92
|
-
if (data.length < (limits === null || limits === void 0 ? void 0 : limits.limit))
|
|
93
|
-
return data.length;
|
|
94
|
-
return Infinity;
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
};
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1maW5kLWZpcmVzdG9yZS5taXhpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL2luZnJhL2ZpcmViYXNlL2ZpcmVzdG9yZS9taXhpbnMvd2l0aC1maW5kLWZpcmVzdG9yZS5taXhpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQVdMLEtBQUssR0FDTixNQUFNLG9CQUFvQixDQUFBO0FBQzNCLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFhLEdBQUcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQy9GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUc3QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUkvQixTQUFnRixFQUNpQyxFQUFFO0lBQ25ILE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxNQUFXLEVBQXVELEVBQUUsQ0FDakcsQ0FBQyxLQUFLLENBQUMsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQzFCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUF1QyxFQUFPLEVBQUU7UUFDMUUsT0FBTyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBO0lBQzlELENBQUMsQ0FBQTtJQUNELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUN2QyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUN6RSxDQUFDLENBQUMsS0FBSztRQUNQLENBQUMsQ0FBQyxNQUFNLENBQUMs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LE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQzt3QkFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7aUJBQ2xHO2dCQUNELElBQUksTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEtBQUs7b0JBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUVwRCxPQUFPLEtBQUssQ0FBQTtZQUNkLENBQUM7U0FBQTtRQUVELGNBQWMsQ0FBQyxJQUFhLEVBQUUsTUFBcUM7WUFDakUsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUM7Z0JBQUUsT0FBTyxDQUFDLENBQUE7WUFDOUIsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFHLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxLQUFLLENBQUE7Z0JBQUUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFBO1lBRW5ELE9BQU8sUUFBUSxDQUFBO1FBQ2pCLENBQUM7S0FDSyxDQUFBO0FBQ1YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sbGVjdGlvblJlZmVyZW5jZSwgUXVlcnksIFdoZXJlRmlsdGVyT3AgfSBmcm9tICdAZmlyZWJhc2UvZmlyZXN0b3JlLXR5cGVzJ1xyXG5pbXBvcnQge1xyXG4gIEZpbmRSZXBvc2l0b3J5LFxyXG4gIEZpbmRSZXBvc2l0b3J5UGFyYW1zLFxyXG4gIE1vZGVsQmFzZVN0cnVjdHVyZSxcclxuICBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzLFxyXG4gIE5vbkZ1bmN0aW9uUHJvcGVydHlOYW1lcyxcclxuICBSZXBvc2l0b3J5RmluZEZpZWxkLFxyXG4gIFJlcG9zaXRvcnlGaW5kRmllbHRlcnMsXHJcbiAgUmVwb3NpdG9yeUZpbmRGaWVsdGVyc09wdGlvbnMsXHJcbiAgUmVwb3NpdG9yeUZpbmRSZXN1bHQsXHJcbiAgUmVwb3NpdG9yeUxpbWl0T3B0aW9ucyxcclxuICBXaGVyZSxcclxufSBmcm9tICcuLi8uLi8uLi8uLi9kb21haW4nXHJcbmltcG9ydCB7IGlzRGF0ZSwgaXNOaWwsIGlzTnVtYmVyLCBpc09iamVjdCwgaXNTdHJpbmcsIE1peGluQ3Rvciwgc2V0IH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnXHJcbmltcG9ydCB7IEZpcmVzdG9yZUZpZWxkVHlwZSB9IGZyb20gJy4uL2VudW1zJ1xyXG5pbXBvcnQgeyBGaXJlc3RvcmVIZWxwZXJzLCBGaXJlc3RvcmVSZXBvc2l0b3J5IH0gZnJvbSAnLi4vdHlwZXMnXHJcblxyXG5leHBvcnQgY29uc3Qgd2l0aEZpbmRGaXJlc3RvcmUgPSA8XHJcbiAgVEJhc2UgZXh0ZW5kcyBNb2RlbEJhc2VTdHJ1Y3R1cmU8VEJhc2U+LFxyXG4gIFRNaXhpbkJhc2UgZXh0ZW5kcyBNaXhpbkN0b3I8RmlyZXN0b3JlUmVwb3NpdG9yeTxUQmFzZT4+LFxyXG4+KFxyXG4gIE1peGluQmFzZTogTWl4aW5DdG9yPEZpcmVzdG9yZVJlcG9zaXRvcnk8VEJhc2U+ICYgRmlyZXN0b3JlSGVscGVycz4gJiBUTWl4aW5CYXNlLFxyXG4pOiBNaXhpbkN0b3I8RmlyZXN0b3JlUmVwb3NpdG9yeTxUQmFzZT4gJiBJbnN0YW5jZVR5cGU8VE1peGluQmFzZT4gJiBGaW5kUmVwb3NpdG9yeTxUQmFzZT4gJiBGaXJlc3RvcmVIZWxwZXJzLCBbXT4gPT4ge1xyXG4gIGNvbnN0IGNoZWNrSWZJc0ZpbHRlck9wdGlvbiA9IChmaWx0ZXI6IGFueSk6IGZpbHRlciBpcyBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzT3B0aW9uczxUQmFzZSwgYW55PiA9PlxyXG4gICAgIWlzTmlsKGZpbHRlcj8ub3BlcmF0b3IpXHJcbiAgY29uc3QgZ2V0VmFsdWVGcm9tRmlsdGVyID0gKGZpbHRlcjogUmVwb3NpdG9yeUZpbmRGaWVsZDxUQmFzZSwgYW55Pik6IGFueSA9PiB7XHJcbiAgICByZXR1cm4gY2hlY2tJZklzRmlsdGVyT3B0aW9uKGZpbHRlcikgPyBmaWx0ZXIudmFsdWUgOiBmaWx0ZXJcclxuICB9XHJcbiAgY29uc3QgZ2V0RmluYWxWYWx1ZUZyb20gPSAodmFsdWU6IGFueSkgPT5cclxuICAgIGlzTnVtYmVyKHZhbHVlKSB8fCBpc1N0cmluZyh2YWx1ZSkgfHwgaXNEYXRlKHZhbHVlKSB8fCBBcnJheS5pc0FycmF5KHZhbHVlKVxyXG4gICAgICA/IHZhbHVlXHJcbiAgICAgIDogT2JqZWN0LnZhbHVlcyhnZXRGaW5hbFZhbHVlRnJvbSlcclxuXHJcbiAgcmV0dXJuIGNsYXNzIEZpbmRGaXJlc3RvcmUgZXh0ZW5kcyBNaXhpbkJhc2UgaW1wbGVtZW50cyBGaW5kUmVwb3NpdG9yeTxUQmFzZT4ge1xyXG4gICAgYXN5bmMgZmluZCh7IGZpbHRlcnMsIGxpbWl0cywgb3JkZXJCeSwgb3B0aW9ucyB9OiBGaW5kUmVwb3NpdG9yeVBhcmFtczxUQmFzZT4gPSB7fSk6IFByb21pc2U8XHJcbiAgICAgIFJlcG9zaXRvcnlGaW5kUmVzdWx0PFRCYXNlPlxyXG4gICAgPiB7XHJcbiAgICAgIGNvbnN0IG9yZGVyQnlLZXlzID0gT2JqZWN0LmtleXMob3JkZXJCeSB8fCB7fSlcclxuICAgICAgY29uc3QgZW5hYmxlQ291bnQgPSBvcHRpb25zPy5lbmFibGVDb3VudCA/PyB0cnVlXHJcbiAgICAgIGxldCBxdWVyeTogQ29sbGVjdGlvblJlZmVyZW5jZTxUQmFzZT4gfCBRdWVyeTxUQmFzZT4gPSB0aGlzLmNvbGxlY3Rpb24oXHJcbiAgICAgICAgdGhpcy5idWlsZENvbGxlY3Rpb25QYXRoRm9yRmluZChmaWx0ZXJzIHx8IHt9KSxcclxuICAgICAgKVxyXG5cclxuICAgICAgcXVlcnkgPSB0aGlzLm1ha2VGaXJlc3RvcmVXaGVyZShxdWVyeSwgZmlsdGVycyB8fCB7fSlcclxuXHJcbiAgICAgIGlmIChvcmRlckJ5S2V5cy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJzS2V5c1dpdGhVbm9yZGVyZWQgPSBPYmplY3Qua2V5cyhmaWx0ZXJzIHx8IHt9KS5maWx0ZXIoXHJcbiAgICAgICAgICAoZmlsdGVyS2V5KSA9PiAhb3JkZXJCeUtleXMuaW5jbHVkZXMoZmlsdGVyS2V5KSxcclxuICAgICAgICApXHJcblxyXG4gICAgICAgIGlmIChmaWx0ZXJzS2V5c1dpdGhVbm9yZGVyZWQubGVuZ3RoKVxyXG4gICAgICAgICAgZmlsdGVyc0tleXNXaXRoVW5vcmRlcmVkLmZvckVhY2goXHJcbiAgICAgICAgICAgIChmaWx0ZXJLZXkpID0+XHJcbiAgICAgICAgICAgICAgKG9yZGVyQnkgPSB7XHJcbiAgICAgICAgICAgICAgICAuLi4oIVtXaGVyZS5FUVVBTFNdLmluY2x1ZGVzKGZpbHRlcnNbZmlsdGVyS2V5XS5vcGVyYXRvcikgPyB7IFtmaWx0ZXJLZXldOiAnYXNjJyB9IDoge30pLFxyXG4gICAgICAgICAgICAgICAgLi4ub3JkZXJCeSxcclxuICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgIClcclxuXHJcbiAgICAgICAgT2JqZWN0LmtleXMob3JkZXJCeSkuZm9yRWFjaCgoZmllbGROYW1lKSA9PiAocXVlcnkgPSBxdWVyeS5vcmRlckJ5KGZpZWxkTmFtZSwgb3JkZXJCeVtmaWVsZE5hbWVdKSkpXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHF1ZXJ5ID0gYXdhaXQgdGhpcy5kZWZpbmVMaW1pdHMocXVlcnksIGZpbHRlcnMsIGxpbWl0cylcclxuXHJcbiAgICAgIGNvbnN0IGRvY3MgPSBhd2FpdCBxdWVyeS5nZXQoKVxyXG4gICAgICBjb25zdCBkYXRhID0gZG9jcy5kb2NzLm1hcCgoZG9jKSA9PiBkb2MuZGF0YSgpKVxyXG5cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIGNvdW50OiBlbmFibGVDb3VudCA/IHRoaXMuY2FsY3VsYXRlQ291bnQoZGF0YSwgbGltaXRzKSA6IEluZmluaXR5LFxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYnVpbGRDb2xsZWN0aW9uUGF0aEZvckZpbmQoZmlsdGVyczogUmVwb3NpdG9yeUZpbmRGaWVsdGVyczxUQmFzZT4pOiBzdHJpbmcge1xyXG4gICAgICBpZiAoIXRoaXMuaXNTdWJDb2xsZWN0aW9uKHRoaXMpKSByZXR1cm4gdGhpcy5jb2xsZWN0aW9uTmFtZVxyXG5cclxuICAgICAgY29uc3QgcGFyZW50SWRGaWVsZCA9IHRoaXMucGFyZW50SWRGaWVsZCBhcyBOb25GdW5jdGlvbkFuZElkZW50aWZpZXJQcm9wZXJ0eU5hbWVzPFRCYXNlPlxyXG4gICAgICBjb25zdCBwYXJlbnRJZCA9IGdldFZhbHVlRnJvbUZpbHRlcihmaWx0ZXJzPy5bcGFyZW50SWRGaWVsZF0pXHJcblxyXG4gICAgICByZXR1cm4gYCR7dGhpcy5wYXJlbnRSZXBvc2l0b3J5LmNvbGxlY3Rpb25OYW1lfS8ke3BhcmVudElkfS8ke3RoaXMuY29sbGVjdGlvbk5hbWV9YFxyXG4gICAgfVxyXG5cclxuICAgIG1ha2VGaXJlc3RvcmVXaGVyZSA9IChcclxuICAgICAgcXVlcnlSZWZlcmVuY2U6IENvbGxlY3Rpb25SZWZlcmVuY2U8VEJhc2U+IHwgUXVlcnk8VEJhc2U+LFxyXG4gICAgICBmaWx0ZXI6IFJlcG9zaXRvcnlGaW5kRmllbHRlcnM8VEJhc2U+LFxyXG4gICAgKTogUXVlcnk8VEJhc2U+ID0+XHJcbiAgICAgIE9iamVjdC5rZXlzKGZpbHRlcikucmVkdWNlKFxyXG4gICAgICAgIChxdWVyeTogUXVlcnk8VEJhc2U+LCBmaWVsZE5hbWU6IHN0cmluZykgPT4gdGhpcy5idWlsZFdoZXJlU2VudGVuY2UocXVlcnksIGZpZWxkTmFtZSwgZmlsdGVyW2ZpZWxkTmFtZV0pLFxyXG4gICAgICAgIHF1ZXJ5UmVmZXJlbmNlLFxyXG4gICAgICApXHJcblxyXG4gICAgYnVpbGRXaGVyZVNlbnRlbmNlID0gKFxyXG4gICAgICBxdWVyeVJlZmVyZW5jZTogQ29sbGVjdGlvblJlZmVyZW5jZTxUQmFzZT4gfCBRdWVyeTxUQmFzZT4sXHJcbiAgICAgIGZpZWxkTmFtZTogTm9uRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzPFRCYXNlPiB8IHN0cmluZyxcclxuICAgICAgb3B0aW9uczogUmVwb3NpdG9yeUZpbmRGaWVsdGVyc09wdGlvbnM8VEJhc2UsIE5vbkZ1bmN0aW9uUHJvcGVydHlOYW1lczxUQmFzZT4+LFxyXG4gICAgKTogUXVlcnk8VEJhc2U+ID0+IHtcclxuICAgICAgaWYgKHRoaXMuaXNTdWJDb2xsZWN0aW9uKHRoaXMpICYmIGZpZWxkTmFtZSA9PT0gdGhpcy5wYXJlbnRJZEZpZWxkKSByZXR1cm4gcXVlcnlSZWZlcmVuY2VcclxuXHJcbiAgICAgIGNvbnN0IHZhbHVlID0gb3B0aW9ucz8udmFsdWUgfHwgb3B0aW9uc1xyXG4gICAgICBjb25zdCBvYmplY3QgPSB7fVxyXG5cclxuICAgICAgc2V0KG9iamVjdCwgZmllbGROYW1lLCB2YWx1ZSlcclxuXHJcbiAgICAgIGNvbnN0IHBsYWluSW5zdGFuY2UgPSBuZXcgdGhpcy5tb2RlbChvYmplY3QpLnRvUGxhaW4oKVxyXG4gICAgICBjb25zdCBmaXJlc3RvcmVGaWVsZE5hbWUgPVxyXG4gICAgICAgIGZpZWxkTmFtZS50b1N0cmluZygpLmluZGV4T2YoJy4nKSA+IC0xXHJcbiAgICAgICAgICA/IGZpZWxkTmFtZS50b1N0cmluZygpXHJcbiAgICAgICAgICA6IE9iamVjdC5rZXlzKHBsYWluSW5zdGFuY2UpLmZpbmQoKGtleSkgPT4gcGxhaW5JbnN0YW5jZVtrZXldKVxyXG5cclxuICAgICAgaWYgKG9wdGlvbnM/Lm9wZXJhdG9yID09PSBXaGVyZS5MSUtFKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgQXJyYXkuaXNBcnJheShvcHRpb25zPy52YWx1ZSkgJiZcclxuICAgICAgICAgICh0aGlzLmZpZWxkc1tmaXJlc3RvcmVGaWVsZE5hbWVdID09PSBGaXJlc3RvcmVGaWVsZFR5cGUuQXJyYXkgfHwgIXRoaXMuZmllbGRzW2ZpcmVzdG9yZUZpZWxkTmFtZV0pXHJcbiAgICAgICAgKVxyXG4gICAgICAgICAgcmV0dXJuIHF1ZXJ5UmVmZXJlbmNlLndoZXJlKGZpcmVzdG9yZUZpZWxkTmFtZSwgJ2FycmF5LWNvbnRhaW5zLWFueScsIG9wdGlvbnMudmFsdWUpXHJcblxyXG4gICAgICAgIHF1ZXJ5UmVmZXJlbmNlID0gcXVlcnlSZWZlcmVuY2Uud2hlcmUoZmlyZXN0b3JlRmllbGROYW1lLCAnPj0nLCBvcHRpb25zLnZhbHVlKVxyXG4gICAgICAgIHF1ZXJ5UmVmZXJlbmNlID0gcXVlcnlSZWZlcmVuY2Uud2hlcmUoZmlyZXN0b3JlRmllbGROYW1lLCAnPD0nLCBgJHtvcHRpb25zLnZhbHVlfX5gKVxyXG5cclxuICAgICAgICByZXR1cm4gcXVlcnlSZWZlcmVuY2VcclxuICAgICAgfVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgb3B0aW9ucz8ub3BlcmF0b3IgPT09IFdoZXJlLklOICYmXHJcbiAgICAgICAgQXJyYXkuaXNBcnJheShvcHRpb25zPy52YWx1ZSkgJiZcclxuICAgICAgICAodGhpcy5maWVsZHNbZmlyZXN0b3JlRmllbGROYW1lXSA9PT0gRmlyZXN0b3JlRmllbGRUeXBlLkFycmF5IHx8ICF0aGlzLmZpZWxkc1tmaXJlc3RvcmVGaWVsZE5hbWVdKVxyXG4gICAgICApXHJcbiAgICAgICAgcmV0dXJuIHF1ZXJ5UmVmZXJlbmNlLndoZXJlKGZpcmVzdG9yZUZpZWxkTmFtZSwgJ2FycmF5LWNvbnRhaW5zJywgb3B0aW9ucy52YWx1ZSlcclxuICAgICAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpICYmIGlzTmlsKG9wdGlvbnM/Lm9wZXJhdG9yKSAmJiBpc05pbChvcHRpb25zPy52YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMob3B0aW9ucykucmVkdWNlKFxyXG4gICAgICAgICAgKHF1ZXJ5UmVmZXJlbmNlV2l0aFdoZXJlLCBrZXkpID0+XHJcbiAgICAgICAgICAgIHRoaXMuYnVpbGRXaGVyZVNlbnRlbmNlKHF1ZXJ5UmVmZXJlbmNlV2l0aFdoZXJlLCBgJHtmaWVsZE5hbWUudG9TdHJpbmcoKX0uJHtrZXl9YCwgb3B0aW9uc1trZXldKSxcclxuICAgICAgICAgIHF1ZXJ5UmVmZXJlbmNlLFxyXG4gICAgICAgIClcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHF1ZXJ5UmVmZXJlbmNlLndoZXJlKFxyXG4gICAgICAgIGZpcmVzdG9yZUZpZWxkTmFtZSxcclxuICAgICAgICAob3B0aW9ucz8ub3BlcmF0b3IgYXMgV2hlcmVGaWx0ZXJPcCkgfHwgJz09JyxcclxuICAgICAgICBvcHRpb25zPy52YWx1ZSB8fCBvcHRpb25zLFxyXG4gICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZGVmaW5lTGltaXRzKFxyXG4gICAgICBxdWVyeTogQ29sbGVjdGlvblJlZmVyZW5jZTxUQmFzZT4gfCBRdWVyeTxUQmFzZT4sXHJcbiAgICAgIGZpbHRlcnM6IFJlcG9zaXRvcnlGaW5kRmllbHRlcnM8VEJhc2U+LFxyXG4gICAgICBsaW1pdHM6IFJlcG9zaXRvcnlMaW1pdE9wdGlvbnM8VEJhc2U+LFxyXG4gICAgKTogUHJvbWlzZTxRdWVyeTxUQmFzZT4+IHtcclxuICAgICAgaWYgKGxpbWl0cz8ub2Zmc2V0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMubW9kZWwuaXNNb2RlbChsaW1pdHMub2Zmc2V0KSlcclxuICAgICAgICAgIHF1ZXJ5ID0gcXVlcnkuc3RhcnRBZnRlcihcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5jb2xsZWN0aW9uKHRoaXMuYnVpbGRDb2xsZWN0aW9uUGF0aEZvckZpbmQoZmlsdGVycykpXHJcbiAgICAgICAgICAgICAgLmRvYyhsaW1pdHMub2Zmc2V0W2xpbWl0cy5vZmZzZXQuaWRlbnRpZmllcnNGaWVsZHMuc2hpZnQoKSBhcyBzdHJpbmddKVxyXG4gICAgICAgICAgICAgIC5nZXQoKSxcclxuICAgICAgICAgIClcclxuICAgICAgICBlbHNlIGlmIChpc051bWJlcihsaW1pdHMub2Zmc2V0KSB8fCBpc1N0cmluZyhsaW1pdHMub2Zmc2V0KSkgcXVlcnkgPSBxdWVyeS5zdGFydEF0KGxpbWl0cy5vZmZzZXQpXHJcbiAgICAgIH1cclxuICAgICAgaWYgKGxpbWl0cz8ubGltaXQpIHF1ZXJ5ID0gcXVlcnkubGltaXQobGltaXRzLmxpbWl0KVxyXG5cclxuICAgICAgcmV0dXJuIHF1ZXJ5XHJcbiAgICB9XHJcblxyXG4gICAgY2FsY3VsYXRlQ291bnQoZGF0YTogVEJhc2VbXSwgbGltaXRzOiBSZXBvc2l0b3J5TGltaXRPcHRpb25zPFRCYXNlPik6IG51bWJlciB7XHJcbiAgICAgIGlmIChkYXRhLmxlbmd0aCA8PSAwKSByZXR1cm4gMFxyXG4gICAgICBpZiAoZGF0YS5sZW5ndGggPCBsaW1pdHM/LmxpbWl0KSByZXR1cm4gZGF0YS5sZW5ndGhcclxuXHJcbiAgICAgIHJldHVybiBJbmZpbml0eVxyXG4gICAgfVxyXG4gIH0gYXMgYW55XHJcbn1cclxuIl19
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Where, } from '../../../../domain';
|
|
3
|
+
import { isDate, isNil, isNumber, isObject, isString, set } from '../../../../utils';
|
|
4
|
+
import { FirestoreFieldType } from '../enums';
|
|
5
|
+
export const withFindFirestore = (MixinBase) => {
|
|
6
|
+
const checkIfIsFilterOption = (filter) => !isNil(filter === null || filter === void 0 ? void 0 : filter.operator);
|
|
7
|
+
const getValueFromFilter = (filter) => {
|
|
8
|
+
return checkIfIsFilterOption(filter) ? filter.value : filter;
|
|
9
|
+
};
|
|
10
|
+
const getFinalValueFrom = (value) => isNumber(value) || isString(value) || isDate(value) || Array.isArray(value)
|
|
11
|
+
? value
|
|
12
|
+
: Object.values(getFinalValueFrom);
|
|
13
|
+
return class FindFirestore extends MixinBase {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.makeFirestoreWhere = (queryReference, filter) => Object.keys(filter).reduce((query, fieldName) => this.buildWhereSentence(query, fieldName, filter[fieldName]), queryReference);
|
|
17
|
+
this.buildWhereSentence = (queryReference, fieldName, options) => {
|
|
18
|
+
if (this.isSubCollection(this) && fieldName === this.parentIdField)
|
|
19
|
+
return queryReference;
|
|
20
|
+
const value = (options === null || options === void 0 ? void 0 : options.value) || options;
|
|
21
|
+
const object = {};
|
|
22
|
+
set(object, fieldName, value);
|
|
23
|
+
const plainInstance = new this.model(object).toPlain();
|
|
24
|
+
const firestoreFieldName = fieldName.toString().indexOf('.') > -1
|
|
25
|
+
? fieldName.toString()
|
|
26
|
+
: Object.keys(plainInstance).find((key) => plainInstance[key]);
|
|
27
|
+
if ((options === null || options === void 0 ? void 0 : options.operator) === Where.LIKE) {
|
|
28
|
+
if (Array.isArray(options === null || options === void 0 ? void 0 : options.value) &&
|
|
29
|
+
(this.fields[firestoreFieldName] === FirestoreFieldType.Array || !this.fields[firestoreFieldName]))
|
|
30
|
+
return queryReference.where(firestoreFieldName, 'array-contains-any', options.value);
|
|
31
|
+
queryReference = queryReference.where(firestoreFieldName, '>=', options.value);
|
|
32
|
+
queryReference = queryReference.where(firestoreFieldName, '<=', `${options.value}~`);
|
|
33
|
+
return queryReference;
|
|
34
|
+
}
|
|
35
|
+
if ((options === null || options === void 0 ? void 0 : options.operator) === Where.IN &&
|
|
36
|
+
Array.isArray(options === null || options === void 0 ? void 0 : options.value) &&
|
|
37
|
+
(this.fields[firestoreFieldName] === FirestoreFieldType.Array || !this.fields[firestoreFieldName]))
|
|
38
|
+
return queryReference.where(firestoreFieldName, 'array-contains', options.value);
|
|
39
|
+
if (isObject(options) && isNil(options === null || options === void 0 ? void 0 : options.operator) && isNil(options === null || options === void 0 ? void 0 : options.value)) {
|
|
40
|
+
return Object.keys(options).reduce((queryReferenceWithWhere, key) => this.buildWhereSentence(queryReferenceWithWhere, `${fieldName.toString()}.${key}`, options[key]), queryReference);
|
|
41
|
+
}
|
|
42
|
+
return queryReference.where(firestoreFieldName, (options === null || options === void 0 ? void 0 : options.operator) || '==', (options === null || options === void 0 ? void 0 : options.value) || options);
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
find({ filters, limits, orderBy, options } = {}) {
|
|
46
|
+
var _a;
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
const orderByKeys = Object.keys(orderBy || {});
|
|
49
|
+
const enableCount = (_a = options === null || options === void 0 ? void 0 : options.enableCount) !== null && _a !== void 0 ? _a : true;
|
|
50
|
+
let query = this.collection(this.buildCollectionPathForFind(filters || {}));
|
|
51
|
+
query = this.makeFirestoreWhere(query, filters || {});
|
|
52
|
+
if (orderByKeys.length) {
|
|
53
|
+
const filtersKeysWithUnordered = Object.keys(filters || {}).filter((filterKey) => !orderByKeys.includes(filterKey));
|
|
54
|
+
if (filtersKeysWithUnordered.length)
|
|
55
|
+
filtersKeysWithUnordered.forEach((filterKey) => (orderBy = Object.assign(Object.assign({}, (![Where.EQUALS].includes(filters[filterKey].operator) ? { [filterKey]: 'asc' } : {})), orderBy)));
|
|
56
|
+
Object.keys(orderBy).forEach((fieldName) => (query = query.orderBy(fieldName, orderBy[fieldName])));
|
|
57
|
+
}
|
|
58
|
+
query = yield this.defineLimits(query, filters, limits);
|
|
59
|
+
const docs = yield query.get();
|
|
60
|
+
const data = docs.docs.map((doc) => doc.data());
|
|
61
|
+
return {
|
|
62
|
+
data,
|
|
63
|
+
count: enableCount ? this.calculateCount(data, limits) : Infinity,
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
buildCollectionPathForFind(filters) {
|
|
68
|
+
if (!this.isSubCollection(this))
|
|
69
|
+
return this.collectionName;
|
|
70
|
+
const parentIdField = this.parentIdField;
|
|
71
|
+
const parentId = getValueFromFilter(filters === null || filters === void 0 ? void 0 : filters[parentIdField]);
|
|
72
|
+
return `${this.parentRepository.collectionName}/${parentId}/${this.collectionName}`;
|
|
73
|
+
}
|
|
74
|
+
defineLimits(query, filters, limits) {
|
|
75
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
if (limits === null || limits === void 0 ? void 0 : limits.offset) {
|
|
77
|
+
if (this.model.isModel(limits.offset))
|
|
78
|
+
query = query.startAfter(yield this.collection(this.buildCollectionPathForFind(filters))
|
|
79
|
+
.doc(limits.offset[limits.offset.identifiersFields.shift()])
|
|
80
|
+
.get());
|
|
81
|
+
else if (isNumber(limits.offset) || isString(limits.offset))
|
|
82
|
+
query = query.startAt(limits.offset);
|
|
83
|
+
}
|
|
84
|
+
if (limits === null || limits === void 0 ? void 0 : limits.limit)
|
|
85
|
+
query = query.limit(limits.limit);
|
|
86
|
+
return query;
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
calculateCount(data, limits) {
|
|
90
|
+
if (data.length <= 0)
|
|
91
|
+
return 0;
|
|
92
|
+
if (data.length < (limits === null || limits === void 0 ? void 0 : limits.limit))
|
|
93
|
+
return data.length;
|
|
94
|
+
return Infinity;
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1maW5kLWZpcmVzdG9yZS5taXhpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL2luZnJhL2ZpcmViYXNlL2ZpcmVzdG9yZS9taXhpbnMvd2l0aC1maW5kLWZpcmVzdG9yZS5taXhpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQVdMLEtBQUssR0FDTixNQUFNLG9CQUFvQixDQUFBO0FBQzNCLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFhLEdBQUcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQy9GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUc3QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUkvQixTQUFnRixFQUNpQyxFQUFFO0lBQ25ILE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxNQUFXLEVBQXVELEVBQUUsQ0FDakcsQ0FBQyxLQUFLLENBQUMsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQzFCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUF1QyxFQUFPLEVBQUU7UUFDMUUsT0FBTyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBO0lBQzlELENBQUMsQ0FBQTtJQUNELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUN2QyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUN6RSxDQUFDLENBQUMsS0FBSztRQUNQLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7SUFFdEMsT0FBTyxNQUFNLGFBQWMsU0FBUSxTQUFTO1FBQXJDOztZQWlETCx1QkFBa0IsR0FBRyxDQUNuQixjQUF5RCxFQUN6RCxNQUFxQyxFQUN2QixFQUFFLENBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUN4QixDQUFDLEtBQW1CLEVBQUUsU0FBaUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQ3hHLGNBQWMsQ0FDZixDQUFBO1lBRUgsdUJBQWtCLEdBQUcsQ0FDbkIsY0FBeUQsRUFDekQsU0FBbUQsRUFDbkQsT0FBOEUsRUFDaEUsRUFBRTtnQkFDaEIsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsS0FBSyxJQUFJLENBQUMsYUFBYTtvQkFBRSxPQUFPLGNBQWMsQ0FBQTtnQkFFekYsTUFBTSxLQUFLLEdBQUcsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsS0FBSyxLQUFJLE9BQU8sQ0FBQTtnQkFDdkMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFBO2dCQUVqQixHQUFHLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQTtnQkFFN0IsTUFBTSxhQUFhLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFBO2dCQUN0RCxNQUFNLGtCQUFrQixHQUN0QixTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDcEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUU7b0JBQ3RCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7Z0JBRWxFLElBQUksQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsUUFBUSxNQUFLLEtBQUssQ0FBQyxJQUFJLEVBQUU7b0JBQ3BDLElBQ0UsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsS0FBSyxDQUFDO3dCQUM3QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBSyxrQkFBa0IsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7d0JBRWxHLE9BQU8sY0FBYyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7b0JBRXRGLGNBQWMsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7b0JBQzlFLGNBQWMsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFBO29CQUVwRixPQUFPLGNBQWMsQ0FBQTtpQkFDdEI7Z0JBQ0QsSUFDRSxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxRQUFRLE1BQUssS0FBSyxDQUFDLEVBQUU7b0JBQzlCLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEtBQUssQ0FBQztvQkFDN0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQUssa0JBQWtCLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO29CQUVsRyxPQUFPLGNBQWMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUNsRixJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsS0FBSyxDQUFDLEVBQUU7b0JBQzFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQ2hDLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHVCQUF1QixFQUFFLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNsRyxjQUFjLENBQ2YsQ0FBQTtpQkFDRjtnQkFFRCxPQUFPLGNBQWMsQ0FBQyxLQUFLLENBQ3pCLGtCQUFrQixFQUNsQixDQUFDLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxRQUEwQixLQUFJLElBQUksRUFDNUMsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsS0FBSyxLQUFJLE9BQU8sQ0FDMUIsQ0FBQTtZQUNILENBQUMsQ0FBQTtRQTJCSCxDQUFDO1FBcklPLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sS0FBa0MsRUFBRTs7O2dCQUdoRixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQTtnQkFDOUMsTUFBTSxXQUFXLEdBQUcsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsV0FBVyxtQ0FBSSxJQUFJLENBQUE7Z0JBQ2hELElBQUksS0FBSyxHQUE4QyxJQUFJLENBQUMsVUFBVSxDQUNwRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUMvQyxDQUFBO2dCQUVELEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQTtnQkFFckQsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFO29CQUN0QixNQUFNLHdCQUF3QixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FDaEUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FDaEQsQ0FBQTtvQkFFRCxJQUFJLHdCQUF3QixDQUFDLE1BQU07d0JBQ2pDLHdCQUF3QixDQUFDLE9BQU8sQ0FDOUIsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUNaLENBQUMsT0FBTyxtQ0FDSCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FDckYsT0FBTyxDQUNYLENBQUMsQ0FDTCxDQUFBO29CQUVILE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7aUJBQ3BHO2dCQUVELEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQTtnQkFFdkQsTUFBTSxJQUFJLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUE7Z0JBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtnQkFFL0MsT0FBTztvQkFDTCxJQUFJO29CQUNKLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRO2lCQUNsRSxDQUFBOztTQUNGO1FBRUQsMEJBQTBCLENBQUMsT0FBc0M7WUFDL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO2dCQUFFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQTtZQUUzRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBNkQsQ0FBQTtZQUN4RixNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQTtZQUU3RCxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFBO1FBQ3JGLENBQUM7UUE4REssWUFBWSxDQUNoQixLQUFnRCxFQUNoRCxPQUFzQyxFQUN0QyxNQUFxQzs7Z0JBRXJDLElBQUksTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE1BQU0sRUFBRTtvQkFDbEIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO3dCQUNuQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FDdEIsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsQ0FBQzs2QkFDNUQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQVksQ0FBQyxDQUFDOzZCQUNyRSxHQUFHLEVBQUUsQ0FDVCxDQUFBO3lCQUNFLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQzt3QkFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7aUJBQ2xHO2dCQUNELElBQUksTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEtBQUs7b0JBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUVwRCxPQUFPLEtBQUssQ0FBQTtZQUNkLENBQUM7U0FBQTtRQUVELGNBQWMsQ0FBQyxJQUFhLEVBQUUsTUFBcUM7WUFDakUsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUM7Z0JBQUUsT0FBTyxDQUFDLENBQUE7WUFDOUIsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFHLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxLQUFLLENBQUE7Z0JBQUUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFBO1lBRW5ELE9BQU8sUUFBUSxDQUFBO1FBQ2pCLENBQUM7S0FDSyxDQUFBO0FBQ1YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sbGVjdGlvblJlZmVyZW5jZSwgUXVlcnksIFdoZXJlRmlsdGVyT3AgfSBmcm9tICdAZmlyZWJhc2UvZmlyZXN0b3JlLXR5cGVzJ1xuaW1wb3J0IHtcbiAgRmluZFJlcG9zaXRvcnksXG4gIEZpbmRSZXBvc2l0b3J5UGFyYW1zLFxuICBNb2RlbEJhc2VTdHJ1Y3R1cmUsXG4gIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXMsXG4gIE5vbkZ1bmN0aW9uUHJvcGVydHlOYW1lcyxcbiAgUmVwb3NpdG9yeUZpbmRGaWVsZCxcbiAgUmVwb3NpdG9yeUZpbmRGaWVsdGVycyxcbiAgUmVwb3NpdG9yeUZpbmRGaWVsdGVyc09wdGlvbnMsXG4gIFJlcG9zaXRvcnlGaW5kUmVzdWx0LFxuICBSZXBvc2l0b3J5TGltaXRPcHRpb25zLFxuICBXaGVyZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vZG9tYWluJ1xuaW1wb3J0IHsgaXNEYXRlLCBpc05pbCwgaXNOdW1iZXIsIGlzT2JqZWN0LCBpc1N0cmluZywgTWl4aW5DdG9yLCBzZXQgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscydcbmltcG9ydCB7IEZpcmVzdG9yZUZpZWxkVHlwZSB9IGZyb20gJy4uL2VudW1zJ1xuaW1wb3J0IHsgRmlyZXN0b3JlSGVscGVycywgRmlyZXN0b3JlUmVwb3NpdG9yeSB9IGZyb20gJy4uL3R5cGVzJ1xuXG5leHBvcnQgY29uc3Qgd2l0aEZpbmRGaXJlc3RvcmUgPSA8XG4gIFRCYXNlIGV4dGVuZHMgTW9kZWxCYXNlU3RydWN0dXJlPFRCYXNlPixcbiAgVE1peGluQmFzZSBleHRlbmRzIE1peGluQ3RvcjxGaXJlc3RvcmVSZXBvc2l0b3J5PFRCYXNlPj4sXG4+KFxuICBNaXhpbkJhc2U6IE1peGluQ3RvcjxGaXJlc3RvcmVSZXBvc2l0b3J5PFRCYXNlPiAmIEZpcmVzdG9yZUhlbHBlcnM+ICYgVE1peGluQmFzZSxcbik6IE1peGluQ3RvcjxGaXJlc3RvcmVSZXBvc2l0b3J5PFRCYXNlPiAmIEluc3RhbmNlVHlwZTxUTWl4aW5CYXNlPiAmIEZpbmRSZXBvc2l0b3J5PFRCYXNlPiAmIEZpcmVzdG9yZUhlbHBlcnMsIFtdPiA9PiB7XG4gIGNvbnN0IGNoZWNrSWZJc0ZpbHRlck9wdGlvbiA9IChmaWx0ZXI6IGFueSk6IGZpbHRlciBpcyBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzT3B0aW9uczxUQmFzZSwgYW55PiA9PlxuICAgICFpc05pbChmaWx0ZXI/Lm9wZXJhdG9yKVxuICBjb25zdCBnZXRWYWx1ZUZyb21GaWx0ZXIgPSAoZmlsdGVyOiBSZXBvc2l0b3J5RmluZEZpZWxkPFRCYXNlLCBhbnk+KTogYW55ID0+IHtcbiAgICByZXR1cm4gY2hlY2tJZklzRmlsdGVyT3B0aW9uKGZpbHRlcikgPyBmaWx0ZXIudmFsdWUgOiBmaWx0ZXJcbiAgfVxuICBjb25zdCBnZXRGaW5hbFZhbHVlRnJvbSA9ICh2YWx1ZTogYW55KSA9PlxuICAgIGlzTnVtYmVyKHZhbHVlKSB8fCBpc1N0cmluZyh2YWx1ZSkgfHwgaXNEYXRlKHZhbHVlKSB8fCBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgPyB2YWx1ZVxuICAgICAgOiBPYmplY3QudmFsdWVzKGdldEZpbmFsVmFsdWVGcm9tKVxuXG4gIHJldHVybiBjbGFzcyBGaW5kRmlyZXN0b3JlIGV4dGVuZHMgTWl4aW5CYXNlIGltcGxlbWVudHMgRmluZFJlcG9zaXRvcnk8VEJhc2U+IHtcbiAgICBhc3luYyBmaW5kKHsgZmlsdGVycywgbGltaXRzLCBvcmRlckJ5LCBvcHRpb25zIH06IEZpbmRSZXBvc2l0b3J5UGFyYW1zPFRCYXNlPiA9IHt9KTogUHJvbWlzZTxcbiAgICAgIFJlcG9zaXRvcnlGaW5kUmVzdWx0PFRCYXNlPlxuICAgID4ge1xuICAgICAgY29uc3Qgb3JkZXJCeUtleXMgPSBPYmplY3Qua2V5cyhvcmRlckJ5IHx8IHt9KVxuICAgICAgY29uc3QgZW5hYmxlQ291bnQgPSBvcHRpb25zPy5lbmFibGVDb3VudCA/PyB0cnVlXG4gICAgICBsZXQgcXVlcnk6IENvbGxlY3Rpb25SZWZlcmVuY2U8VEJhc2U+IHwgUXVlcnk8VEJhc2U+ID0gdGhpcy5jb2xsZWN0aW9uKFxuICAgICAgICB0aGlzLmJ1aWxkQ29sbGVjdGlvblBhdGhGb3JGaW5kKGZpbHRlcnMgfHwge30pLFxuICAgICAgKVxuXG4gICAgICBxdWVyeSA9IHRoaXMubWFrZUZpcmVzdG9yZVdoZXJlKHF1ZXJ5LCBmaWx0ZXJzIHx8IHt9KVxuXG4gICAgICBpZiAob3JkZXJCeUtleXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlcnNLZXlzV2l0aFVub3JkZXJlZCA9IE9iamVjdC5rZXlzKGZpbHRlcnMgfHwge30pLmZpbHRlcihcbiAgICAgICAgICAoZmlsdGVyS2V5KSA9PiAhb3JkZXJCeUtleXMuaW5jbHVkZXMoZmlsdGVyS2V5KSxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmIChmaWx0ZXJzS2V5c1dpdGhVbm9yZGVyZWQubGVuZ3RoKVxuICAgICAgICAgIGZpbHRlcnNLZXlzV2l0aFVub3JkZXJlZC5mb3JFYWNoKFxuICAgICAgICAgICAgKGZpbHRlcktleSkgPT5cbiAgICAgICAgICAgICAgKG9yZGVyQnkgPSB7XG4gICAgICAgICAgICAgICAgLi4uKCFbV2hlcmUuRVFVQUxTXS5pbmNsdWRlcyhmaWx0ZXJzW2ZpbHRlcktleV0ub3BlcmF0b3IpID8geyBbZmlsdGVyS2V5XTogJ2FzYycgfSA6IHt9KSxcbiAgICAgICAgICAgICAgICAuLi5vcmRlckJ5LFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG5cbiAgICAgICAgT2JqZWN0LmtleXMob3JkZXJCeSkuZm9yRWFjaCgoZmllbGROYW1lKSA9PiAocXVlcnkgPSBxdWVyeS5vcmRlckJ5KGZpZWxkTmFtZSwgb3JkZXJCeVtmaWVsZE5hbWVdKSkpXG4gICAgICB9XG5cbiAgICAgIHF1ZXJ5ID0gYXdhaXQgdGhpcy5kZWZpbmVMaW1pdHMocXVlcnksIGZpbHRlcnMsIGxpbWl0cylcblxuICAgICAgY29uc3QgZG9jcyA9IGF3YWl0IHF1ZXJ5LmdldCgpXG4gICAgICBjb25zdCBkYXRhID0gZG9jcy5kb2NzLm1hcCgoZG9jKSA9PiBkb2MuZGF0YSgpKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhLFxuICAgICAgICBjb3VudDogZW5hYmxlQ291bnQgPyB0aGlzLmNhbGN1bGF0ZUNvdW50KGRhdGEsIGxpbWl0cykgOiBJbmZpbml0eSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBidWlsZENvbGxlY3Rpb25QYXRoRm9yRmluZChmaWx0ZXJzOiBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPFRCYXNlPik6IHN0cmluZyB7XG4gICAgICBpZiAoIXRoaXMuaXNTdWJDb2xsZWN0aW9uKHRoaXMpKSByZXR1cm4gdGhpcy5jb2xsZWN0aW9uTmFtZVxuXG4gICAgICBjb25zdCBwYXJlbnRJZEZpZWxkID0gdGhpcy5wYXJlbnRJZEZpZWxkIGFzIE5vbkZ1bmN0aW9uQW5kSWRlbnRpZmllclByb3BlcnR5TmFtZXM8VEJhc2U+XG4gICAgICBjb25zdCBwYXJlbnRJZCA9IGdldFZhbHVlRnJvbUZpbHRlcihmaWx0ZXJzPy5bcGFyZW50SWRGaWVsZF0pXG5cbiAgICAgIHJldHVybiBgJHt0aGlzLnBhcmVudFJlcG9zaXRvcnkuY29sbGVjdGlvbk5hbWV9LyR7cGFyZW50SWR9LyR7dGhpcy5jb2xsZWN0aW9uTmFtZX1gXG4gICAgfVxuXG4gICAgbWFrZUZpcmVzdG9yZVdoZXJlID0gKFxuICAgICAgcXVlcnlSZWZlcmVuY2U6IENvbGxlY3Rpb25SZWZlcmVuY2U8VEJhc2U+IHwgUXVlcnk8VEJhc2U+LFxuICAgICAgZmlsdGVyOiBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPFRCYXNlPixcbiAgICApOiBRdWVyeTxUQmFzZT4gPT5cbiAgICAgIE9iamVjdC5rZXlzKGZpbHRlcikucmVkdWNlKFxuICAgICAgICAocXVlcnk6IFF1ZXJ5PFRCYXNlPiwgZmllbGROYW1lOiBzdHJpbmcpID0+IHRoaXMuYnVpbGRXaGVyZVNlbnRlbmNlKHF1ZXJ5LCBmaWVsZE5hbWUsIGZpbHRlcltmaWVsZE5hbWVdKSxcbiAgICAgICAgcXVlcnlSZWZlcmVuY2UsXG4gICAgICApXG5cbiAgICBidWlsZFdoZXJlU2VudGVuY2UgPSAoXG4gICAgICBxdWVyeVJlZmVyZW5jZTogQ29sbGVjdGlvblJlZmVyZW5jZTxUQmFzZT4gfCBRdWVyeTxUQmFzZT4sXG4gICAgICBmaWVsZE5hbWU6IE5vbkZ1bmN0aW9uUHJvcGVydHlOYW1lczxUQmFzZT4gfCBzdHJpbmcsXG4gICAgICBvcHRpb25zOiBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzT3B0aW9uczxUQmFzZSwgTm9uRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzPFRCYXNlPj4sXG4gICAgKTogUXVlcnk8VEJhc2U+ID0+IHtcbiAgICAgIGlmICh0aGlzLmlzU3ViQ29sbGVjdGlvbih0aGlzKSAmJiBmaWVsZE5hbWUgPT09IHRoaXMucGFyZW50SWRGaWVsZCkgcmV0dXJuIHF1ZXJ5UmVmZXJlbmNlXG5cbiAgICAgIGNvbnN0IHZhbHVlID0gb3B0aW9ucz8udmFsdWUgfHwgb3B0aW9uc1xuICAgICAgY29uc3Qgb2JqZWN0ID0ge31cblxuICAgICAgc2V0KG9iamVjdCwgZmllbGROYW1lLCB2YWx1ZSlcblxuICAgICAgY29uc3QgcGxhaW5JbnN0YW5jZSA9IG5ldyB0aGlzLm1vZGVsKG9iamVjdCkudG9QbGFpbigpXG4gICAgICBjb25zdCBmaXJlc3RvcmVGaWVsZE5hbWUgPVxuICAgICAgICBmaWVsZE5hbWUudG9TdHJpbmcoKS5pbmRleE9mKCcuJykgPiAtMVxuICAgICAgICAgID8gZmllbGROYW1lLnRvU3RyaW5nKClcbiAgICAgICAgICA6IE9iamVjdC5rZXlzKHBsYWluSW5zdGFuY2UpLmZpbmQoKGtleSkgPT4gcGxhaW5JbnN0YW5jZVtrZXldKVxuXG4gICAgICBpZiAob3B0aW9ucz8ub3BlcmF0b3IgPT09IFdoZXJlLkxJS0UpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIEFycmF5LmlzQXJyYXkob3B0aW9ucz8udmFsdWUpICYmXG4gICAgICAgICAgKHRoaXMuZmllbGRzW2ZpcmVzdG9yZUZpZWxkTmFtZV0gPT09IEZpcmVzdG9yZUZpZWxkVHlwZS5BcnJheSB8fCAhdGhpcy5maWVsZHNbZmlyZXN0b3JlRmllbGROYW1lXSlcbiAgICAgICAgKVxuICAgICAgICAgIHJldHVybiBxdWVyeVJlZmVyZW5jZS53aGVyZShmaXJlc3RvcmVGaWVsZE5hbWUsICdhcnJheS1jb250YWlucy1hbnknLCBvcHRpb25zLnZhbHVlKVxuXG4gICAgICAgIHF1ZXJ5UmVmZXJlbmNlID0gcXVlcnlSZWZlcmVuY2Uud2hlcmUoZmlyZXN0b3JlRmllbGROYW1lLCAnPj0nLCBvcHRpb25zLnZhbHVlKVxuICAgICAgICBxdWVyeVJlZmVyZW5jZSA9IHF1ZXJ5UmVmZXJlbmNlLndoZXJlKGZpcmVzdG9yZUZpZWxkTmFtZSwgJzw9JywgYCR7b3B0aW9ucy52YWx1ZX1+YClcblxuICAgICAgICByZXR1cm4gcXVlcnlSZWZlcmVuY2VcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgb3B0aW9ucz8ub3BlcmF0b3IgPT09IFdoZXJlLklOICYmXG4gICAgICAgIEFycmF5LmlzQXJyYXkob3B0aW9ucz8udmFsdWUpICYmXG4gICAgICAgICh0aGlzLmZpZWxkc1tmaXJlc3RvcmVGaWVsZE5hbWVdID09PSBGaXJlc3RvcmVGaWVsZFR5cGUuQXJyYXkgfHwgIXRoaXMuZmllbGRzW2ZpcmVzdG9yZUZpZWxkTmFtZV0pXG4gICAgICApXG4gICAgICAgIHJldHVybiBxdWVyeVJlZmVyZW5jZS53aGVyZShmaXJlc3RvcmVGaWVsZE5hbWUsICdhcnJheS1jb250YWlucycsIG9wdGlvbnMudmFsdWUpXG4gICAgICBpZiAoaXNPYmplY3Qob3B0aW9ucykgJiYgaXNOaWwob3B0aW9ucz8ub3BlcmF0b3IpICYmIGlzTmlsKG9wdGlvbnM/LnZhbHVlKSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMob3B0aW9ucykucmVkdWNlKFxuICAgICAgICAgIChxdWVyeVJlZmVyZW5jZVdpdGhXaGVyZSwga2V5KSA9PlxuICAgICAgICAgICAgdGhpcy5idWlsZFdoZXJlU2VudGVuY2UocXVlcnlSZWZlcmVuY2VXaXRoV2hlcmUsIGAke2ZpZWxkTmFtZS50b1N0cmluZygpfS4ke2tleX1gLCBvcHRpb25zW2tleV0pLFxuICAgICAgICAgIHF1ZXJ5UmVmZXJlbmNlLFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBxdWVyeVJlZmVyZW5jZS53aGVyZShcbiAgICAgICAgZmlyZXN0b3JlRmllbGROYW1lLFxuICAgICAgICAob3B0aW9ucz8ub3BlcmF0b3IgYXMgV2hlcmVGaWx0ZXJPcCkgfHwgJz09JyxcbiAgICAgICAgb3B0aW9ucz8udmFsdWUgfHwgb3B0aW9ucyxcbiAgICAgIClcbiAgICB9XG5cbiAgICBhc3luYyBkZWZpbmVMaW1pdHMoXG4gICAgICBxdWVyeTogQ29sbGVjdGlvblJlZmVyZW5jZTxUQmFzZT4gfCBRdWVyeTxUQmFzZT4sXG4gICAgICBmaWx0ZXJzOiBSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPFRCYXNlPixcbiAgICAgIGxpbWl0czogUmVwb3NpdG9yeUxpbWl0T3B0aW9uczxUQmFzZT4sXG4gICAgKTogUHJvbWlzZTxRdWVyeTxUQmFzZT4+IHtcbiAgICAgIGlmIChsaW1pdHM/Lm9mZnNldCkge1xuICAgICAgICBpZiAodGhpcy5tb2RlbC5pc01vZGVsKGxpbWl0cy5vZmZzZXQpKVxuICAgICAgICAgIHF1ZXJ5ID0gcXVlcnkuc3RhcnRBZnRlcihcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY29sbGVjdGlvbih0aGlzLmJ1aWxkQ29sbGVjdGlvblBhdGhGb3JGaW5kKGZpbHRlcnMpKVxuICAgICAgICAgICAgICAuZG9jKGxpbWl0cy5vZmZzZXRbbGltaXRzLm9mZnNldC5pZGVudGlmaWVyc0ZpZWxkcy5zaGlmdCgpIGFzIHN0cmluZ10pXG4gICAgICAgICAgICAgIC5nZXQoKSxcbiAgICAgICAgICApXG4gICAgICAgIGVsc2UgaWYgKGlzTnVtYmVyKGxpbWl0cy5vZmZzZXQpIHx8IGlzU3RyaW5nKGxpbWl0cy5vZmZzZXQpKSBxdWVyeSA9IHF1ZXJ5LnN0YXJ0QXQobGltaXRzLm9mZnNldClcbiAgICAgIH1cbiAgICAgIGlmIChsaW1pdHM/LmxpbWl0KSBxdWVyeSA9IHF1ZXJ5LmxpbWl0KGxpbWl0cy5saW1pdClcblxuICAgICAgcmV0dXJuIHF1ZXJ5XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlQ291bnQoZGF0YTogVEJhc2VbXSwgbGltaXRzOiBSZXBvc2l0b3J5TGltaXRPcHRpb25zPFRCYXNlPik6IG51bWJlciB7XG4gICAgICBpZiAoZGF0YS5sZW5ndGggPD0gMCkgcmV0dXJuIDBcbiAgICAgIGlmIChkYXRhLmxlbmd0aCA8IGxpbWl0cz8ubGltaXQpIHJldHVybiBkYXRhLmxlbmd0aFxuXG4gICAgICByZXR1cm4gSW5maW5pdHlcbiAgICB9XG4gIH0gYXMgYW55XG59XG4iXX0=
|