ng-easycommerce-v18 0.0.1 → 0.0.2
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 -27
- package/{projects/ng-easycommerce/src/lib/assets → assets}/ec-i18n/ct.json +273 -273
- package/{projects/ng-easycommerce/src/lib/assets → assets}/ec-i18n/en.json +0 -0
- package/{projects/ng-easycommerce/src/lib/assets → assets}/ec-i18n/es.json +387 -387
- package/{projects/ng-easycommerce/src/lib/assets → assets}/ec-i18n/fr.json +0 -0
- package/{projects/ng-easycommerce/src/lib/assets → assets}/ec-i18n/gl.json +273 -273
- package/{projects/ng-easycommerce/src/lib/assets → assets}/ec-i18n/pr.json +273 -273
- package/{projects/ng-easycommerce/src/lib/assets → assets}/recaptcha/recaptcha-site-keys.json +3 -3
- package/{projects/ng-easycommerce/src/lib/assets → assets}/recaptcha/recaptcha-sites-prod.json +38 -38
- package/{projects/ng-easycommerce/src/lib/assets → assets}/recaptcha/recaptcha-sites.json +52 -52
- package/esm2022/lib/api/connection.service.mjs +75 -0
- package/esm2022/lib/api/index.mjs +2 -0
- package/esm2022/lib/classes/checkout/index.mjs +2 -0
- package/esm2022/lib/classes/checkout/steps.mjs +29 -0
- package/esm2022/lib/classes/filters/attributes-filter.mjs +73 -0
- package/esm2022/lib/classes/filters/category-filter.mjs +59 -0
- package/esm2022/lib/classes/filters/dynamics-filter.mjs +58 -0
- package/esm2022/lib/classes/filters/filter-factory.mjs +21 -0
- package/esm2022/lib/classes/filters/filter.mjs +83 -0
- package/esm2022/lib/classes/filters/index.mjs +7 -0
- package/esm2022/lib/classes/filters/sort-filter.mjs +88 -0
- package/esm2022/lib/classes/index.mjs +4 -0
- package/esm2022/lib/classes/user.mjs +59 -0
- package/esm2022/lib/constants/api.constants.service.mjs +71 -0
- package/esm2022/lib/constants/core.constants.service.mjs +196 -0
- package/esm2022/lib/constants/index.mjs +3 -0
- package/esm2022/lib/ec-components/abstractions-components/block-ec.component.mjs +110 -0
- package/esm2022/lib/ec-components/abstractions-components/index.mjs +3 -0
- package/esm2022/lib/ec-components/abstractions-components/menu-ec.component.mjs +97 -0
- package/esm2022/lib/ec-components/account-ec/account-ec.component.mjs +22 -0
- package/esm2022/lib/ec-components/account-ec/index.mjs +4 -0
- package/esm2022/lib/ec-components/account-ec/order-ec/order-ec.component.mjs +16 -0
- package/esm2022/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.mjs +150 -0
- package/esm2022/lib/ec-components/auth-ec/auth-ec.component.mjs +12 -0
- package/esm2022/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.mjs +30 -0
- package/esm2022/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.mjs +54 -0
- package/esm2022/lib/ec-components/auth-ec/index.mjs +7 -0
- package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +91 -0
- package/esm2022/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.mjs +105 -0
- package/esm2022/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.mjs +153 -0
- package/esm2022/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.mjs +104 -0
- package/esm2022/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.mjs +87 -0
- package/esm2022/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.mjs +87 -0
- package/esm2022/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.mjs +37 -0
- package/esm2022/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.mjs +78 -0
- package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +109 -0
- package/esm2022/lib/ec-components/blocks-ec/blocks-ec.component.mjs +99 -0
- package/esm2022/lib/ec-components/blocks-ec/index.mjs +5 -0
- package/esm2022/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.mjs +27 -0
- package/esm2022/lib/ec-components/cart-ec/cart-ec.component.mjs +21 -0
- package/esm2022/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.mjs +47 -0
- package/esm2022/lib/ec-components/cart-ec/index.mjs +3 -0
- package/esm2022/lib/ec-components/checkout-ec/checkout-ec.component.mjs +60 -0
- package/esm2022/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.mjs +271 -0
- package/esm2022/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.mjs +51 -0
- package/esm2022/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.mjs +45 -0
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.mjs +92 -0
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.mjs +30 -0
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/index.mjs +4 -0
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.mjs +119 -0
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.mjs +32 -0
- package/esm2022/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.mjs +96 -0
- package/esm2022/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.mjs +35 -0
- package/esm2022/lib/ec-components/checkout-ec/success-ec/success-ec.component.mjs +55 -0
- package/esm2022/lib/ec-components/collection-ec/collection-ec.component.mjs +72 -0
- package/esm2022/lib/ec-components/coupon-ec/coupon-ec.component.mjs +29 -0
- package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +38 -0
- package/esm2022/lib/ec-components/filters-sort-ec/filters-sort-ec.component.mjs +36 -0
- package/esm2022/lib/ec-components/footer-ec/footer-ec.component.mjs +17 -0
- package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +18 -0
- package/esm2022/lib/ec-components/home-ec/home-ec.component.mjs +14 -0
- package/esm2022/lib/ec-components/index.mjs +19 -0
- package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +74 -0
- package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +51 -0
- package/esm2022/lib/ec-components/variants-ec/variants-ec.component.mjs +18 -0
- package/esm2022/lib/ec-components/widgets-ec/index.mjs +5 -0
- package/esm2022/lib/ec-components/widgets-ec/loading/index.mjs +4 -0
- package/esm2022/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.mjs +11 -0
- package/esm2022/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.mjs +16 -0
- package/esm2022/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.mjs +12 -0
- package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +178 -0
- package/esm2022/lib/ec-components/widgets-ec/price-ec/price-ec.component.mjs +27 -0
- package/esm2022/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.mjs +71 -0
- package/esm2022/lib/ec-guards/auth.guard.mjs +18 -0
- package/esm2022/lib/ec-guards/index.mjs +2 -0
- package/esm2022/lib/ec-pipe/ec-currency-symbol.pipe.mjs +98 -0
- package/esm2022/lib/ec-pipe/index.mjs +2 -0
- package/esm2022/lib/ec-services/addressing.service.mjs +185 -0
- package/esm2022/lib/ec-services/analytics/analytics.service.mjs +80 -0
- package/esm2022/lib/ec-services/analytics/doppler.service.mjs +47 -0
- package/esm2022/lib/ec-services/analytics/facebook-pixel.service.mjs +212 -0
- package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +283 -0
- package/esm2022/lib/ec-services/analytics/gtm.service.mjs +414 -0
- package/esm2022/lib/ec-services/analytics/index.mjs +7 -0
- package/esm2022/lib/ec-services/analytics/metricool-pixel.service.mjs +55 -0
- package/esm2022/lib/ec-services/auth.service.mjs +440 -0
- package/esm2022/lib/ec-services/auth.storage.service.mjs +54 -0
- package/esm2022/lib/ec-services/blocks-repository.service.mjs +64 -0
- package/esm2022/lib/ec-services/blocks.service.mjs +52 -0
- package/esm2022/lib/ec-services/cart.service.mjs +465 -0
- package/esm2022/lib/ec-services/channel.service.mjs +83 -0
- package/esm2022/lib/ec-services/checkout.service.mjs +180 -0
- package/esm2022/lib/ec-services/currency.service.mjs +177 -0
- package/esm2022/lib/ec-services/filters.service.mjs +134 -0
- package/esm2022/lib/ec-services/form.service.mjs +81 -0
- package/esm2022/lib/ec-services/index.mjs +27 -0
- package/esm2022/lib/ec-services/local-storage.service.mjs +58 -0
- package/esm2022/lib/ec-services/ngx-local-storage.service.mjs +66 -0
- package/esm2022/lib/ec-services/options.service.mjs +273 -0
- package/esm2022/lib/ec-services/order-utility.service.mjs +61 -0
- package/esm2022/lib/ec-services/orders.service.mjs +48 -0
- package/esm2022/lib/ec-services/pagination.service.mjs +163 -0
- package/esm2022/lib/ec-services/parameters.service.mjs +65 -0
- package/esm2022/lib/ec-services/payment.service.mjs +54 -0
- package/esm2022/lib/ec-services/product-detail.service.mjs +285 -0
- package/esm2022/lib/ec-services/products.service.mjs +148 -0
- package/esm2022/lib/ec-services/re-captcha.service.mjs +114 -0
- package/esm2022/lib/ec-services/shipment.service.mjs +158 -0
- package/esm2022/lib/ec-services/stores.service.mjs +27 -0
- package/esm2022/lib/ec-services/test.service.mjs +16 -0
- package/esm2022/lib/ec-services/toast.service.mjs +81 -0
- package/esm2022/lib/interceptors/auth.interceptor.mjs +35 -0
- package/esm2022/lib/interceptors/index.mjs +2 -0
- package/esm2022/lib/interfaces/analytics/event-key.mjs +2 -0
- package/esm2022/lib/interfaces/analytics/facebook-pixel-data.mjs +2 -0
- package/esm2022/lib/interfaces/analytics/gtm-config.mjs +2 -0
- package/esm2022/lib/interfaces/analytics/index.mjs +4 -0
- package/esm2022/lib/interfaces/blocks.mjs +2 -0
- package/esm2022/lib/interfaces/checkout.mjs +2 -0
- package/esm2022/lib/interfaces/connection.mjs +2 -0
- package/esm2022/lib/interfaces/coupon.mjs +2 -0
- package/esm2022/lib/interfaces/currency.mjs +2 -0
- package/esm2022/lib/interfaces/deserializable.mjs +2 -0
- package/esm2022/lib/interfaces/environment.mjs +2 -0
- package/esm2022/lib/interfaces/filter.mjs +2 -0
- package/esm2022/lib/interfaces/index.mjs +19 -0
- package/esm2022/lib/interfaces/options.mjs +2 -0
- package/esm2022/lib/interfaces/pagination.mjs +2 -0
- package/esm2022/lib/interfaces/parameter.mjs +2 -0
- package/esm2022/lib/interfaces/product.mjs +2 -0
- package/esm2022/lib/interfaces/step.mjs +2 -0
- package/esm2022/lib/interfaces/storage.mjs +2 -0
- package/esm2022/lib/interfaces/store.mjs +2 -0
- package/esm2022/lib/interfaces/types/index.mjs +2 -0
- package/esm2022/lib/interfaces/types/user.type.mjs +2 -0
- package/esm2022/lib/providers/index.mjs +2 -0
- package/esm2022/lib/providers/provideEnvironment.mjs +20 -0
- package/esm2022/lib/stores/currency.store.mjs +10 -0
- package/esm2022/lib/stores/index.mjs +2 -0
- package/esm2022/ng-easycommerce-v18.mjs +5 -0
- package/esm2022/public-api.mjs +20 -0
- package/fesm2022/ng-easycommerce-v18.mjs +8190 -0
- package/fesm2022/ng-easycommerce-v18.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/api/connection.service.d.ts +52 -0
- package/lib/api/index.d.ts +1 -0
- package/lib/classes/checkout/index.d.ts +1 -0
- package/lib/classes/checkout/steps.d.ts +15 -0
- package/lib/classes/filters/attributes-filter.d.ts +14 -0
- package/lib/classes/filters/category-filter.d.ts +14 -0
- package/lib/classes/filters/dynamics-filter.d.ts +13 -0
- package/lib/classes/filters/filter-factory.d.ts +5 -0
- package/lib/classes/filters/filter.d.ts +19 -0
- package/lib/classes/filters/index.d.ts +6 -0
- package/lib/classes/filters/sort-filter.d.ts +14 -0
- package/{projects/ng-easycommerce/src/lib/classes/index.ts → lib/classes/index.d.ts} +3 -3
- package/lib/classes/user.d.ts +50 -0
- package/lib/constants/api.constants.service.d.ts +54 -0
- package/lib/constants/core.constants.service.d.ts +109 -0
- package/lib/constants/index.d.ts +2 -0
- package/lib/ec-components/abstractions-components/block-ec.component.d.ts +62 -0
- package/lib/ec-components/abstractions-components/index.d.ts +2 -0
- package/lib/ec-components/abstractions-components/menu-ec.component.d.ts +67 -0
- package/lib/ec-components/account-ec/account-ec.component.d.ts +10 -0
- package/lib/ec-components/account-ec/index.d.ts +3 -0
- package/lib/ec-components/account-ec/order-ec/order-ec.component.d.ts +8 -0
- package/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.d.ts +55 -0
- package/lib/ec-components/auth-ec/auth-ec.component.d.ts +5 -0
- package/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.d.ts +11 -0
- package/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.d.ts +27 -0
- package/{projects/ng-easycommerce/src/lib/ec-components/auth-ec/index.ts → lib/ec-components/auth-ec/index.d.ts} +6 -6
- package/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.d.ts +42 -0
- package/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.d.ts +39 -0
- package/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.d.ts +62 -0
- package/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.d.ts +46 -0
- package/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.d.ts +54 -0
- package/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.d.ts +21 -0
- package/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.d.ts +25 -0
- package/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.d.ts +17 -0
- package/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.d.ts +51 -0
- package/lib/ec-components/blocks-ec/blocks-ec.component.d.ts +59 -0
- package/{projects/ng-easycommerce/src/lib/ec-components/blocks-ec/index.ts → lib/ec-components/blocks-ec/index.d.ts} +4 -4
- package/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.d.ts +11 -0
- package/lib/ec-components/cart-ec/cart-ec.component.d.ts +12 -0
- package/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.d.ts +17 -0
- package/lib/ec-components/cart-ec/index.d.ts +2 -0
- package/lib/ec-components/checkout-ec/checkout-ec.component.d.ts +20 -0
- package/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.d.ts +83 -0
- package/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.d.ts +14 -0
- package/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.d.ts +11 -0
- package/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.d.ts +37 -0
- package/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.d.ts +11 -0
- package/{projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/index.ts → lib/ec-components/checkout-ec/payment-ec/payment-methods/index.d.ts} +3 -3
- package/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.d.ts +30 -0
- package/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.d.ts +11 -0
- package/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.d.ts +30 -0
- package/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.d.ts +11 -0
- package/lib/ec-components/checkout-ec/success-ec/success-ec.component.d.ts +30 -0
- package/lib/ec-components/collection-ec/collection-ec.component.d.ts +37 -0
- package/lib/ec-components/coupon-ec/coupon-ec.component.d.ts +12 -0
- package/lib/ec-components/filters-ec/filters-ec.component.d.ts +14 -0
- package/lib/ec-components/filters-sort-ec/filters-sort-ec.component.d.ts +14 -0
- package/lib/ec-components/footer-ec/footer-ec.component.d.ts +10 -0
- package/lib/ec-components/header-ec/header-ec.component.d.ts +12 -0
- package/lib/ec-components/home-ec/home-ec.component.d.ts +8 -0
- package/{projects/ng-easycommerce/src/lib/ec-components/index.ts → lib/ec-components/index.d.ts} +18 -17
- package/lib/ec-components/product-detail-ec/product-detail-ec.component.d.ts +35 -0
- package/lib/ec-components/product-ec/product-ec.component.d.ts +31 -0
- package/lib/ec-components/variants-ec/variants-ec.component.d.ts +8 -0
- package/{projects/ng-easycommerce/src/lib/ec-components/widgets-ec/index.ts → lib/ec-components/widgets-ec/index.d.ts} +4 -4
- package/{projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/index.ts → lib/ec-components/widgets-ec/loading/index.d.ts} +3 -3
- package/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.d.ts +5 -0
- package/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.d.ts +6 -0
- package/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.d.ts +5 -0
- package/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.d.ts +70 -0
- package/lib/ec-components/widgets-ec/price-ec/price-ec.component.d.ts +16 -0
- package/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.d.ts +26 -0
- package/lib/ec-guards/auth.guard.d.ts +8 -0
- package/lib/ec-guards/index.d.ts +1 -0
- package/lib/ec-pipe/ec-currency-symbol.pipe.d.ts +54 -0
- package/lib/ec-pipe/index.d.ts +1 -0
- package/lib/ec-services/addressing.service.d.ts +233 -0
- package/lib/ec-services/analytics/analytics.service.d.ts +50 -0
- package/lib/ec-services/analytics/doppler.service.d.ts +26 -0
- package/lib/ec-services/analytics/facebook-pixel.service.d.ts +102 -0
- package/lib/ec-services/analytics/google-analytics.service.d.ts +118 -0
- package/lib/ec-services/analytics/gtm.service.d.ts +153 -0
- package/{projects/ng-easycommerce/src/lib/ec-services/analytics/index.ts → lib/ec-services/analytics/index.d.ts} +6 -6
- package/lib/ec-services/analytics/metricool-pixel.service.d.ts +26 -0
- package/lib/ec-services/auth.service.d.ts +229 -0
- package/lib/ec-services/auth.storage.service.d.ts +24 -0
- package/lib/ec-services/blocks-repository.service.d.ts +40 -0
- package/lib/ec-services/blocks.service.d.ts +38 -0
- package/lib/ec-services/cart.service.d.ts +211 -0
- package/lib/ec-services/channel.service.d.ts +59 -0
- package/lib/ec-services/checkout.service.d.ts +49 -0
- package/lib/ec-services/currency.service.d.ts +108 -0
- package/lib/ec-services/filters.service.d.ts +56 -0
- package/lib/ec-services/form.service.d.ts +50 -0
- package/{projects/ng-easycommerce/src/lib/ec-services/index.ts → lib/ec-services/index.d.ts} +26 -24
- package/lib/ec-services/local-storage.service.d.ts +40 -0
- package/lib/ec-services/ngx-local-storage.service.d.ts +42 -0
- package/lib/ec-services/options.service.d.ts +121 -0
- package/lib/ec-services/order-utility.service.d.ts +15 -0
- package/lib/ec-services/orders.service.d.ts +14 -0
- package/lib/ec-services/pagination.service.d.ts +89 -0
- package/lib/ec-services/parameters.service.d.ts +41 -0
- package/lib/ec-services/payment.service.d.ts +22 -0
- package/lib/ec-services/product-detail.service.d.ts +97 -0
- package/lib/ec-services/products.service.d.ts +48 -0
- package/lib/ec-services/re-captcha.service.d.ts +65 -0
- package/lib/ec-services/shipment.service.d.ts +49 -0
- package/lib/ec-services/stores.service.d.ts +12 -0
- package/lib/ec-services/test.service.d.ts +6 -0
- package/lib/ec-services/toast.service.d.ts +59 -0
- package/lib/interceptors/auth.interceptor.d.ts +2 -0
- package/lib/interceptors/index.d.ts +1 -0
- package/lib/interfaces/analytics/event-key.d.ts +1 -0
- package/lib/interfaces/analytics/facebook-pixel-data.d.ts +5 -0
- package/{projects/ng-easycommerce/src/lib/interfaces/analytics/gtm-config.ts → lib/interfaces/analytics/gtm-config.d.ts} +6 -6
- package/{projects/ng-easycommerce/src/lib/interfaces/analytics/index.ts → lib/interfaces/analytics/index.d.ts} +3 -3
- package/lib/interfaces/blocks.d.ts +41 -0
- package/{projects/ng-easycommerce/src/lib/interfaces/checkout.ts → lib/interfaces/checkout.d.ts} +12 -14
- package/{projects/ng-easycommerce/src/lib/interfaces/connection.ts → lib/interfaces/connection.d.ts} +7 -8
- package/lib/interfaces/coupon.d.ts +5 -0
- package/lib/interfaces/currency.d.ts +9 -0
- package/{projects/ng-easycommerce/src/lib/interfaces/deserializable.ts → lib/interfaces/deserializable.d.ts} +3 -3
- package/{projects/ng-easycommerce/src/lib/interfaces/environment.ts → lib/interfaces/environment.d.ts} +6 -6
- package/{projects/ng-easycommerce/src/lib/interfaces/filter.ts → lib/interfaces/filter.d.ts} +38 -59
- package/{projects/ng-easycommerce/src/lib/interfaces/index.ts → lib/interfaces/index.d.ts} +16 -18
- package/lib/interfaces/options.d.ts +26 -0
- package/lib/interfaces/pagination.d.ts +24 -0
- package/lib/interfaces/parameter.d.ts +14 -0
- package/{projects/ng-easycommerce/src/lib/interfaces/product.ts → lib/interfaces/product.d.ts} +73 -81
- package/lib/interfaces/step.d.ts +15 -0
- package/lib/interfaces/storage.d.ts +7 -0
- package/{projects/ng-easycommerce/src/lib/interfaces/store.ts → lib/interfaces/store.d.ts} +17 -17
- package/lib/interfaces/types/index.d.ts +1 -0
- package/lib/interfaces/types/user.type.d.ts +5 -0
- package/lib/providers/index.d.ts +1 -0
- package/lib/providers/provideEnvironment.d.ts +13 -0
- package/lib/stores/currency.store.d.ts +7 -0
- package/lib/stores/index.d.ts +1 -0
- package/package.json +29 -58
- package/{projects/ng-easycommerce/src/public-api.ts → public-api.d.ts} +8 -24
- package/.editorconfig +0 -16
- package/angular.json +0 -48
- package/projects/ng-easycommerce/README.md +0 -24
- package/projects/ng-easycommerce/ng-package.json +0 -7
- package/projects/ng-easycommerce/package.json +0 -12
- package/projects/ng-easycommerce/src/lib/api/connection.service.ts +0 -79
- package/projects/ng-easycommerce/src/lib/api/index.ts +0 -1
- package/projects/ng-easycommerce/src/lib/classes/checkout/index.ts +0 -1
- package/projects/ng-easycommerce/src/lib/classes/checkout/steps.ts +0 -37
- package/projects/ng-easycommerce/src/lib/classes/filters/attributes-filter.ts +0 -74
- package/projects/ng-easycommerce/src/lib/classes/filters/category-filter.ts +0 -57
- package/projects/ng-easycommerce/src/lib/classes/filters/dynamics-filter.ts +0 -57
- package/projects/ng-easycommerce/src/lib/classes/filters/filter-factory.ts +0 -23
- package/projects/ng-easycommerce/src/lib/classes/filters/filter.ts +0 -89
- package/projects/ng-easycommerce/src/lib/classes/filters/index.ts +0 -6
- package/projects/ng-easycommerce/src/lib/classes/filters/sort-filter.ts +0 -93
- package/projects/ng-easycommerce/src/lib/classes/user.ts +0 -68
- package/projects/ng-easycommerce/src/lib/constants/api.constants.service.ts +0 -69
- package/projects/ng-easycommerce/src/lib/constants/core.constants.service.ts +0 -210
- package/projects/ng-easycommerce/src/lib/constants/index.ts +0 -2
- package/projects/ng-easycommerce/src/lib/ec-components/abstractions-components/block-ec.component.ts +0 -107
- package/projects/ng-easycommerce/src/lib/ec-components/abstractions-components/index.ts +0 -2
- package/projects/ng-easycommerce/src/lib/ec-components/abstractions-components/menu-ec.component.ts +0 -102
- package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/auth-ec.component.html +0 -10
- package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/auth-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/auth-ec.component.ts +0 -13
- package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.html +0 -19
- package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.ts +0 -34
- package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.html +0 -31
- package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.ts +0 -55
- package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.html +0 -30
- package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.ts +0 -92
- package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.html +0 -55
- package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.ts +0 -102
- package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.html +0 -233
- package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.ts +0 -149
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.html +0 -113
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.scss +0 -12
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.ts +0 -100
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.html +0 -111
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.ts +0 -77
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.html +0 -62
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.ts +0 -89
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.html +0 -1
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.ts +0 -33
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.html +0 -1
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.ts +0 -81
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.html +0 -40
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.ts +0 -97
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/blocks-ec.component.html +0 -41
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/blocks-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/blocks-ec.component.ts +0 -86
- package/projects/ng-easycommerce/src/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.html +0 -20
- package/projects/ng-easycommerce/src/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.ts +0 -30
- package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-ec.component.html +0 -1
- package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-ec.component.ts +0 -24
- package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.html +0 -1
- package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.ts +0 -51
- package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/index.ts +0 -2
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/checkout-ec.component.html +0 -56
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/checkout-ec.component.scss +0 -38
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/checkout-ec.component.ts +0 -67
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.html +0 -836
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.ts +0 -302
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.html +0 -32
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.ts +0 -52
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.html +0 -12
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.ts +0 -48
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.html +0 -195
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.ts +0 -103
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.html +0 -28
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.ts +0 -26
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.html +0 -33
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.ts +0 -116
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.html +0 -13
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.ts +0 -26
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.html +0 -111
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.ts +0 -111
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.html +0 -33
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.ts +0 -39
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/success-ec/success-ec.component.html +0 -59
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/success-ec/success-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/success-ec/success-ec.component.ts +0 -65
- package/projects/ng-easycommerce/src/lib/ec-components/collection-ec/collection-ec.component.html +0 -16
- package/projects/ng-easycommerce/src/lib/ec-components/collection-ec/collection-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/collection-ec/collection-ec.component.ts +0 -83
- package/projects/ng-easycommerce/src/lib/ec-components/coupon-ec/coupon-ec.component.html +0 -1
- package/projects/ng-easycommerce/src/lib/ec-components/coupon-ec/coupon-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/coupon-ec/coupon-ec.component.ts +0 -32
- package/projects/ng-easycommerce/src/lib/ec-components/filters-ec/filters-ec.component.html +0 -1
- package/projects/ng-easycommerce/src/lib/ec-components/filters-ec/filters-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/filters-ec/filters-ec.component.ts +0 -45
- package/projects/ng-easycommerce/src/lib/ec-components/filters-sort-ec/filters-sort-ec.component.html +0 -1
- package/projects/ng-easycommerce/src/lib/ec-components/filters-sort-ec/filters-sort-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/filters-sort-ec/filters-sort-ec.component.ts +0 -49
- package/projects/ng-easycommerce/src/lib/ec-components/footer-ec/footer-ec.component.html +0 -1
- package/projects/ng-easycommerce/src/lib/ec-components/footer-ec/footer-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/footer-ec/footer-ec.component.spec.ts +0 -23
- package/projects/ng-easycommerce/src/lib/ec-components/footer-ec/footer-ec.component.ts +0 -18
- package/projects/ng-easycommerce/src/lib/ec-components/header-ec/header-ec.component.html +0 -1
- package/projects/ng-easycommerce/src/lib/ec-components/header-ec/header-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/header-ec/header-ec.component.spec.ts +0 -23
- package/projects/ng-easycommerce/src/lib/ec-components/header-ec/header-ec.component.ts +0 -22
- package/projects/ng-easycommerce/src/lib/ec-components/home-ec/home-ec.component.html +0 -1
- package/projects/ng-easycommerce/src/lib/ec-components/home-ec/home-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/home-ec/home-ec.component.spec.ts +0 -23
- package/projects/ng-easycommerce/src/lib/ec-components/home-ec/home-ec.component.ts +0 -16
- package/projects/ng-easycommerce/src/lib/ec-components/product-detail-ec/product-detail-ec.component.html +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/product-detail-ec/product-detail-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/product-detail-ec/product-detail-ec.component.ts +0 -82
- package/projects/ng-easycommerce/src/lib/ec-components/product-ec/product-ec.component.html +0 -31
- package/projects/ng-easycommerce/src/lib/ec-components/product-ec/product-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/product-ec/product-ec.component.ts +0 -46
- package/projects/ng-easycommerce/src/lib/ec-components/variants-ec/variants-ec.component.html +0 -65
- package/projects/ng-easycommerce/src/lib/ec-components/variants-ec/variants-ec.component.scss +0 -8
- package/projects/ng-easycommerce/src/lib/ec-components/variants-ec/variants-ec.component.ts +0 -20
- package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.html +0 -7
- package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.ts +0 -13
- package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.html +0 -5
- package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.ts +0 -13
- package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.html +0 -3
- package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.ts +0 -13
- package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.html +0 -11
- package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.ts +0 -177
- package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/price-ec/price-ec.component.html +0 -47
- package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/price-ec/price-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/price-ec/price-ec.component.ts +0 -22
- package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.html +0 -6
- package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.scss +0 -0
- package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.ts +0 -70
- package/projects/ng-easycommerce/src/lib/ec-guards/auth.guard.ts +0 -19
- package/projects/ng-easycommerce/src/lib/ec-guards/index.ts +0 -1
- package/projects/ng-easycommerce/src/lib/ec-pipe/ec-currency-symbol.pipe.ts +0 -99
- package/projects/ng-easycommerce/src/lib/ec-pipe/index.ts +0 -1
- package/projects/ng-easycommerce/src/lib/ec-services/addressing.service.ts +0 -199
- package/projects/ng-easycommerce/src/lib/ec-services/analytics/analytics.service.ts +0 -76
- package/projects/ng-easycommerce/src/lib/ec-services/analytics/doppler.service.ts +0 -38
- package/projects/ng-easycommerce/src/lib/ec-services/analytics/facebook-pixel.service.ts +0 -214
- package/projects/ng-easycommerce/src/lib/ec-services/analytics/google-analytics.service.ts +0 -284
- package/projects/ng-easycommerce/src/lib/ec-services/analytics/gtm.service.ts +0 -413
- package/projects/ng-easycommerce/src/lib/ec-services/analytics/metricool-pixel.service.ts +0 -46
- package/projects/ng-easycommerce/src/lib/ec-services/auth.service.ts +0 -438
- package/projects/ng-easycommerce/src/lib/ec-services/auth.storage.service.ts +0 -54
- package/projects/ng-easycommerce/src/lib/ec-services/blocks-repository.service.ts +0 -67
- package/projects/ng-easycommerce/src/lib/ec-services/blocks.service.ts +0 -48
- package/projects/ng-easycommerce/src/lib/ec-services/cart.service.ts +0 -492
- package/projects/ng-easycommerce/src/lib/ec-services/channel.service.ts +0 -81
- package/projects/ng-easycommerce/src/lib/ec-services/checkout.service.ts +0 -196
- package/projects/ng-easycommerce/src/lib/ec-services/currency.service.ts +0 -179
- package/projects/ng-easycommerce/src/lib/ec-services/filters.service.ts +0 -133
- package/projects/ng-easycommerce/src/lib/ec-services/form.service.ts +0 -82
- package/projects/ng-easycommerce/src/lib/ec-services/local-storage.service.ts +0 -54
- package/projects/ng-easycommerce/src/lib/ec-services/ngx-local-storage.service.ts +0 -66
- package/projects/ng-easycommerce/src/lib/ec-services/options.service.ts +0 -274
- package/projects/ng-easycommerce/src/lib/ec-services/order-utility.service.ts +0 -52
- package/projects/ng-easycommerce/src/lib/ec-services/pagination.service.ts +0 -172
- package/projects/ng-easycommerce/src/lib/ec-services/parameters.service.ts +0 -67
- package/projects/ng-easycommerce/src/lib/ec-services/payment.service.ts +0 -63
- package/projects/ng-easycommerce/src/lib/ec-services/product-detail.service.ts +0 -288
- package/projects/ng-easycommerce/src/lib/ec-services/products.service.ts +0 -162
- package/projects/ng-easycommerce/src/lib/ec-services/re-captcha.service.ts +0 -126
- package/projects/ng-easycommerce/src/lib/ec-services/shipment.service.ts +0 -174
- package/projects/ng-easycommerce/src/lib/ec-services/stores.service.ts +0 -27
- package/projects/ng-easycommerce/src/lib/ec-services/toast.service.ts +0 -84
- package/projects/ng-easycommerce/src/lib/interceptors/auth.interceptor.ts +0 -43
- package/projects/ng-easycommerce/src/lib/interceptors/index.ts +0 -1
- package/projects/ng-easycommerce/src/lib/interfaces/analytics/event-key.ts +0 -14
- package/projects/ng-easycommerce/src/lib/interfaces/analytics/facebook-pixel-data.ts +0 -5
- package/projects/ng-easycommerce/src/lib/interfaces/blocks.ts +0 -56
- package/projects/ng-easycommerce/src/lib/interfaces/coupon.ts +0 -5
- package/projects/ng-easycommerce/src/lib/interfaces/currency.ts +0 -10
- package/projects/ng-easycommerce/src/lib/interfaces/options.ts +0 -28
- package/projects/ng-easycommerce/src/lib/interfaces/pagination.ts +0 -27
- package/projects/ng-easycommerce/src/lib/interfaces/parameter.ts +0 -15
- package/projects/ng-easycommerce/src/lib/interfaces/step.ts +0 -19
- package/projects/ng-easycommerce/src/lib/interfaces/storage.ts +0 -7
- package/projects/ng-easycommerce/src/lib/interfaces/types/index.ts +0 -1
- package/projects/ng-easycommerce/src/lib/interfaces/types/user.type.ts +0 -5
- package/projects/ng-easycommerce/src/lib/providers/index.ts +0 -1
- package/projects/ng-easycommerce/src/lib/providers/provideEnvironment.ts +0 -24
- package/projects/ng-easycommerce/src/lib/stores/currency.store.ts +0 -20
- package/projects/ng-easycommerce/src/lib/stores/index.ts +0 -1
- package/projects/ng-easycommerce/tsconfig.lib.json +0 -15
- package/projects/ng-easycommerce/tsconfig.lib.prod.json +0 -11
- package/projects/ng-easycommerce/tsconfig.spec.json +0 -15
- package/tsconfig.doc.json +0 -4
- package/tsconfig.json +0 -37
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
import { inject, Injectable, PLATFORM_ID, signal } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, catchError, map, of } from 'rxjs';
|
|
3
|
+
import { ConnectionService } from '../api';
|
|
4
|
+
import { User } from '../classes';
|
|
5
|
+
import moment from 'moment';
|
|
6
|
+
import { ChannelService } from './channel.service';
|
|
7
|
+
import { ApiConstantsService, CoreConstantsService } from '../constants';
|
|
8
|
+
import { LocalStorageService } from './local-storage.service';
|
|
9
|
+
import { AuthStorageService } from './auth.storage.service';
|
|
10
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
/**
|
|
13
|
+
* Servicio de autentificación del usuario en la plataforma.
|
|
14
|
+
*/
|
|
15
|
+
export class AuthService {
|
|
16
|
+
_localStorage = inject(LocalStorageService);
|
|
17
|
+
_connection = inject(ConnectionService);
|
|
18
|
+
_channelService = inject(ChannelService);
|
|
19
|
+
_constants = inject(CoreConstantsService);
|
|
20
|
+
_apiConsts = inject(ApiConstantsService);
|
|
21
|
+
_authStorage = inject(AuthStorageService);
|
|
22
|
+
// Contantes para el storage.
|
|
23
|
+
JWT_TOKEN = 'JWT_TOKEN';
|
|
24
|
+
REFRESH_TOKEN = 'REFRESH_TOKEN';
|
|
25
|
+
EXPIRATES_IN = 'EXPIRATES_IN';
|
|
26
|
+
USER = 'USER';
|
|
27
|
+
MAIL = 'mail';
|
|
28
|
+
LOCALE = 'LOCALE';
|
|
29
|
+
CHANNEL = 'CHANNEL';
|
|
30
|
+
CUSTOMER = 'CUSTOMER';
|
|
31
|
+
CHANNELSELLER = 'CHANNELSELLER';
|
|
32
|
+
channelsUserSubject = new BehaviorSubject([]);
|
|
33
|
+
channels$ = this.channelsUserSubject.asObservable();
|
|
34
|
+
_channel$ = this._channelService.getChannel();
|
|
35
|
+
_userInSubject = new BehaviorSubject(null);
|
|
36
|
+
_loggedInSubject = new BehaviorSubject(false);
|
|
37
|
+
loggedIn$ = this._loggedInSubject.asObservable();
|
|
38
|
+
_loggingInSubject = new BehaviorSubject(false);
|
|
39
|
+
loggingIn$ = this._loggingInSubject.asObservable();
|
|
40
|
+
/**
|
|
41
|
+
* Para indicar si un canal cambio.
|
|
42
|
+
*/
|
|
43
|
+
_activeChannelChange = false;
|
|
44
|
+
/**
|
|
45
|
+
* Guarda los datos del usuario
|
|
46
|
+
*/
|
|
47
|
+
_user = null;
|
|
48
|
+
_customer = null;
|
|
49
|
+
/**
|
|
50
|
+
* Guarda los datos del canal
|
|
51
|
+
*/
|
|
52
|
+
channel = [];
|
|
53
|
+
channels = [];
|
|
54
|
+
/**
|
|
55
|
+
* Utilizado para resolver hacia donde se tiene que redireccionar
|
|
56
|
+
* la pagina tras un evento.
|
|
57
|
+
*/
|
|
58
|
+
_homeResolver;
|
|
59
|
+
/**
|
|
60
|
+
* Signal para guardar el token de usuario una vez logueado
|
|
61
|
+
*/
|
|
62
|
+
_tokenSignal = signal(null);
|
|
63
|
+
/**
|
|
64
|
+
* Signal para guardar el usuario
|
|
65
|
+
*/
|
|
66
|
+
_userSignal = signal(null);
|
|
67
|
+
//APIs
|
|
68
|
+
shopApi = this._apiConsts.SHOP_API_URL;
|
|
69
|
+
channelApi = this._apiConsts.CHANNEL;
|
|
70
|
+
tokenApi() { return this.shopApi + 'login_check'; }
|
|
71
|
+
recoverPasswordApi() { return `${this.shopApi}${this.channelApi}/request-password-reset`; }
|
|
72
|
+
confirmAccountApi(token) { return `${this.shopApi}${this.channelApi}/verify-account?token=${token}`; }
|
|
73
|
+
registerApi() { return `${this.shopApi}${this.channelApi}/register`; }
|
|
74
|
+
registerWholesalerApi() { return `${this.shopApi}${this.channelApi}/register-wholesaler`; }
|
|
75
|
+
platformId = inject(PLATFORM_ID);
|
|
76
|
+
window;
|
|
77
|
+
localStorage;
|
|
78
|
+
constructor() {
|
|
79
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
80
|
+
this.window = window;
|
|
81
|
+
this.localStorage = localStorage;
|
|
82
|
+
}
|
|
83
|
+
this.loadTokenFromStorage();
|
|
84
|
+
this.isAuthenticated() && this._loggedInSubject.next(true);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Loguea al usuario en la aplicación.
|
|
88
|
+
* @param user datos del usuario
|
|
89
|
+
* @param withRoles roles del usuario
|
|
90
|
+
* @returns
|
|
91
|
+
*/
|
|
92
|
+
login(user, withRoles = []) {
|
|
93
|
+
this._channel$.subscribe(ch => this.channel = ch);
|
|
94
|
+
this.channels$.subscribe(ch => this.channels = ch);
|
|
95
|
+
this._loggingInSubject.next(true);
|
|
96
|
+
user = { ...user, ...this.loginExtraData() };
|
|
97
|
+
return this._connection.post(this.tokenApi(), user).pipe(map((res) => {
|
|
98
|
+
if (this.channelAccessPermission({ ...user, ...res }) && this.isAllowedRole(withRoles, res.type)) {
|
|
99
|
+
this.doLoginUser({ ...user, ...res });
|
|
100
|
+
return 'ok';
|
|
101
|
+
}
|
|
102
|
+
return 'error';
|
|
103
|
+
}), catchError((error) => {
|
|
104
|
+
this._loggingInSubject.next(false);
|
|
105
|
+
return of(error.toString());
|
|
106
|
+
}));
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Controla que el usuario logueado tenga permisos
|
|
110
|
+
* para el canal actual de la aplicación.
|
|
111
|
+
* @param res
|
|
112
|
+
* @returns
|
|
113
|
+
*/
|
|
114
|
+
channelAccessPermission(res) {
|
|
115
|
+
//console.log('channelAccess', res);
|
|
116
|
+
this.channelsUserSubject.next([]);
|
|
117
|
+
/* No authorized channels */
|
|
118
|
+
if (res.channels?.length == 0) {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
/* Some authorized channel(s) including current channel */
|
|
122
|
+
if (res.channels.find((userchannel) => userchannel.code === this.channel.code)) {
|
|
123
|
+
/* Multiple authorized channels including current channel */
|
|
124
|
+
if (res.channels?.length > 1 && this._activeChannelChange)
|
|
125
|
+
this.channelsUserSubject.next(res.channels);
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
/* One authorized channel not including current channel */
|
|
129
|
+
if (res.channels?.length == 1 && this._activeChannelChange) {
|
|
130
|
+
delete res.password;
|
|
131
|
+
this.channelAccess(res.channels[0], res);
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
/* Multiple authorized channels not including current channel */
|
|
135
|
+
if (this._activeChannelChange) {
|
|
136
|
+
this.channelsUserSubject.next(res.channels);
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Controla el acceso al canal, de ser otro nuevo cambia los valores.
|
|
143
|
+
* @param channel
|
|
144
|
+
* @param user
|
|
145
|
+
*/
|
|
146
|
+
channelAccess(channel, user = null) {
|
|
147
|
+
if (this.window?.location.hostname != channel.hostname) {
|
|
148
|
+
let encoded = btoa(JSON.stringify(user != null ? user : this._user));
|
|
149
|
+
this.window?.location.replace(`${this.window?.location.protocol}//${channel.hostname}/auth/redirect/${encoded}`);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
this._constants.modifyChannelConfig(channel);
|
|
153
|
+
this.window?.location.reload();
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Controla que el rol del usuario sea un rol permitido por la aplicación.
|
|
158
|
+
* @param allowedRoles roles que permite la aplicación.
|
|
159
|
+
* @param role rol del usuarios
|
|
160
|
+
* @returns
|
|
161
|
+
*/
|
|
162
|
+
isAllowedRole(allowedRoles, role) {
|
|
163
|
+
return allowedRoles.length
|
|
164
|
+
? allowedRoles.includes(role)
|
|
165
|
+
: true;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Tras un logueo exitoso, guarda los datos necesarios en el storage y demás
|
|
169
|
+
* configuraciones necesarias.
|
|
170
|
+
* @param tokens
|
|
171
|
+
*/
|
|
172
|
+
doLoginUser(tokens) {
|
|
173
|
+
this._user = new User();
|
|
174
|
+
this._user.initilized(tokens);
|
|
175
|
+
this.forceChannelsForSeller(tokens);
|
|
176
|
+
//Channel
|
|
177
|
+
const userJsonify = this._user.jsonify();
|
|
178
|
+
this._localStorage.setItem(this.USER, JSON.stringify(userJsonify));
|
|
179
|
+
this._localStorage.setItem(this.EXPIRATES_IN, moment(tokens.expire_in).add(1, 'h').format());
|
|
180
|
+
this._localStorage.setItem(this.REFRESH_TOKEN, moment(tokens.expire_in).add(1, 'h').format());
|
|
181
|
+
this._localStorage.setItem(this.JWT_TOKEN, tokens.token);
|
|
182
|
+
this._authStorage.setAuthToken(tokens.token);
|
|
183
|
+
this._tokenSignal.set(tokens.token);
|
|
184
|
+
this._localStorage.setItem(this.MAIL, tokens.username);
|
|
185
|
+
//Observables
|
|
186
|
+
this._userInSubject.next(this._user);
|
|
187
|
+
this._loggedInSubject.next(true);
|
|
188
|
+
this._loggingInSubject.next(false);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Cambia la funcion que se encarga de resolver hacia donde se redirige el frontend
|
|
192
|
+
* tras una acción
|
|
193
|
+
* @param resolverFunction
|
|
194
|
+
*/
|
|
195
|
+
setHomeResolver(resolverFunction) { this._homeResolver = resolverFunction; }
|
|
196
|
+
/**
|
|
197
|
+
* Obtiene la funcion que se encarga de resolver hacia donde se redirige el frontend.
|
|
198
|
+
* @returns
|
|
199
|
+
*/
|
|
200
|
+
getHomeResolver() { return this._homeResolver; }
|
|
201
|
+
/**
|
|
202
|
+
* Obtiene el token del storage y lo guarda en la signal.
|
|
203
|
+
*/
|
|
204
|
+
loadTokenFromStorage() {
|
|
205
|
+
const token = this._localStorage.getItem(this.JWT_TOKEN);
|
|
206
|
+
if (token) {
|
|
207
|
+
this._tokenSignal.set(token);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Desloguea al usuario.
|
|
212
|
+
*/
|
|
213
|
+
logout() {
|
|
214
|
+
this.doLogoutUser();
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Retorna si hay un usuario logueado o no.
|
|
218
|
+
* @returns
|
|
219
|
+
*/
|
|
220
|
+
isAuthenticated() {
|
|
221
|
+
//console.log("isAuthenticated",this.isTokenExpired(), this._tokenSignal() );
|
|
222
|
+
if (this.isTokenExpired()) {
|
|
223
|
+
this.doLogoutUser();
|
|
224
|
+
}
|
|
225
|
+
this.getCurrentUserAsUser();
|
|
226
|
+
this._userInSubject.next(this._user);
|
|
227
|
+
//console.log(this.getToken(), !this.isTokenExpired() , this._user != null);
|
|
228
|
+
return this.getToken() && !this.isTokenExpired() && this._user != null;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Retorna el token de usuario
|
|
232
|
+
* @returns
|
|
233
|
+
*/
|
|
234
|
+
getToken() {
|
|
235
|
+
return this._tokenSignal();
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Limpia el storage y las configuraciones internas
|
|
239
|
+
*/
|
|
240
|
+
doLogoutUser() {
|
|
241
|
+
this._user = null;
|
|
242
|
+
this._localStorage.removeItem(this.USER);
|
|
243
|
+
this._localStorage.removeItem(this.EXPIRATES_IN);
|
|
244
|
+
this._localStorage.removeItem(this.JWT_TOKEN);
|
|
245
|
+
this._authStorage.setAuthToken(null);
|
|
246
|
+
this._localStorage.removeItem(this.REFRESH_TOKEN);
|
|
247
|
+
this._localStorage.removeItem('cart_token');
|
|
248
|
+
this._localStorage.removeItem(this.MAIL);
|
|
249
|
+
this._localStorage.removeItem(this.CHANNEL);
|
|
250
|
+
this._localStorage.removeItem(this.CHANNELSELLER);
|
|
251
|
+
this._localStorage.removeItem(this.LOCALE);
|
|
252
|
+
this._localStorage.removeItem(this.CUSTOMER);
|
|
253
|
+
this._localStorage.removeItem('MASTER_CHANNEL');
|
|
254
|
+
this._loggedInSubject.next(false);
|
|
255
|
+
this._userInSubject.next(this._user);
|
|
256
|
+
this.channelsUserSubject.next([]);
|
|
257
|
+
this._tokenSignal.set(null);
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Devuelve `true`si el token expiro, `false` caso contrario.
|
|
261
|
+
* @returns
|
|
262
|
+
*/
|
|
263
|
+
isTokenExpired() {
|
|
264
|
+
const fecha_expiracion = this.getExpiratesAt();
|
|
265
|
+
const result = moment() >= moment(fecha_expiracion);
|
|
266
|
+
return result;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Obtiene la fecha de expiración del token.
|
|
270
|
+
* @returns
|
|
271
|
+
*/
|
|
272
|
+
getExpiratesAt() {
|
|
273
|
+
return this._localStorage.getItem(this.EXPIRATES_IN);
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Obtiene al usuario actual y lo convierte en una instancia de `User`
|
|
277
|
+
* @returns
|
|
278
|
+
*/
|
|
279
|
+
getCurrentUserAsUser() {
|
|
280
|
+
this._user = new User();
|
|
281
|
+
if (!this.loadUserFromStorage()) {
|
|
282
|
+
this._user = null;
|
|
283
|
+
}
|
|
284
|
+
else if (this._user?.channels.find((userchannel) => userchannel?.code === this._apiConsts.CHANNEL)) {
|
|
285
|
+
return this._user;
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
this.logout();
|
|
289
|
+
}
|
|
290
|
+
return this._user;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Obtiene el usuario del storage.
|
|
294
|
+
* @param key
|
|
295
|
+
* @returns
|
|
296
|
+
*/
|
|
297
|
+
loadUserFromStorage(key = this.USER) {
|
|
298
|
+
if (this._localStorage.getItem(key)) {
|
|
299
|
+
this._user = JSON.parse(this._localStorage.getItem(key));
|
|
300
|
+
return true;
|
|
301
|
+
}
|
|
302
|
+
return false;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Envia la solicitud para cambiar la contraseña.
|
|
306
|
+
* @param email email del solicitante.
|
|
307
|
+
* @returns
|
|
308
|
+
*/
|
|
309
|
+
recoverPassword(email) {
|
|
310
|
+
return this._connection.put(this.recoverPasswordApi(), { email });
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Para confirmar el registro de usuario.
|
|
314
|
+
* @param token
|
|
315
|
+
* @returns
|
|
316
|
+
*/
|
|
317
|
+
confirmAccount(token) {
|
|
318
|
+
return this._connection.get(this.confirmAccountApi(token));
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Para registrar a un usuario común
|
|
322
|
+
* @param data
|
|
323
|
+
* @returns
|
|
324
|
+
*/
|
|
325
|
+
singUp(data) {
|
|
326
|
+
return this._connection.post(this.registerApi(), data);
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Para registrar a un usuario mayorista.
|
|
330
|
+
* @param data
|
|
331
|
+
* @returns
|
|
332
|
+
*/
|
|
333
|
+
signUpWholesaler(data) {
|
|
334
|
+
return this._connection.post(this.registerWholesalerApi(), data);
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Chequea si un usuario esta habilitado a comprar o no.
|
|
338
|
+
* @returns
|
|
339
|
+
*/
|
|
340
|
+
isAbleToBuy() {
|
|
341
|
+
const currentUser = this.getUserProfileAsUser();
|
|
342
|
+
const isSeller = currentUser.typeUser && currentUser.typeUser == 'seller' || false;
|
|
343
|
+
return !isSeller || !this.getCustomer();
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Retorna un usuario de tipo cliente.
|
|
347
|
+
* @returns
|
|
348
|
+
*/
|
|
349
|
+
getCustomer() {
|
|
350
|
+
return this._customer || JSON.parse(this._localStorage.getItem(this.CUSTOMER));
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Devuelve el usuario actual logueado.
|
|
354
|
+
* @returns
|
|
355
|
+
*/
|
|
356
|
+
getUserProfileAsUser() {
|
|
357
|
+
return this._user || this.getCurrentUserAsUser();
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Agrega data extra al objecto de Usuario.
|
|
361
|
+
* @returns
|
|
362
|
+
*/
|
|
363
|
+
loginExtraData = () => {
|
|
364
|
+
return {
|
|
365
|
+
client_id: 'demo_client',
|
|
366
|
+
client_secret: 'secret_demo_client',
|
|
367
|
+
grant_type: 'password'
|
|
368
|
+
};
|
|
369
|
+
};
|
|
370
|
+
/* Please remove this ASAP - Needs *channels* array in user object ALWAYS */
|
|
371
|
+
forceChannelsForSeller(tokens) {
|
|
372
|
+
if ("seller" /* UserRoleType.SELLER */ == tokens.type)
|
|
373
|
+
this.channels?.length
|
|
374
|
+
? this._user.setChannels(...this.channels)
|
|
375
|
+
: this._user.setChannels(this.channel);
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Carga el cliente con el que se realizaran pedidos. Si recibe el valor null
|
|
379
|
+
* se vuelve a cargar el vendedor para su uso.
|
|
380
|
+
* @param customer
|
|
381
|
+
*/
|
|
382
|
+
setCustomer(customer) {
|
|
383
|
+
let refreshPage = false;
|
|
384
|
+
this._customer = customer;
|
|
385
|
+
this._localStorage.setItem(this.CUSTOMER, JSON.stringify(customer));
|
|
386
|
+
let sameChannel = customer ? this.sameChannel(customer.channels[0].code, customer.channels[0].locales.code) : null;
|
|
387
|
+
if (customer) {
|
|
388
|
+
if (!sameChannel) {
|
|
389
|
+
!this.localStorage?.getItem(this.CHANNELSELLER) ?
|
|
390
|
+
this.localStorage?.setItem(this.CHANNELSELLER, JSON.stringify({
|
|
391
|
+
channel: this._apiConsts.CHANNEL,
|
|
392
|
+
locale: this._apiConsts.LOCALE
|
|
393
|
+
})) : null;
|
|
394
|
+
this.changeChannel({
|
|
395
|
+
channel: customer.channels[0].code,
|
|
396
|
+
locale: customer.channels[0].locales.code
|
|
397
|
+
});
|
|
398
|
+
refreshPage = true;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
else {
|
|
402
|
+
let res = JSON.parse(this._localStorage.getItem(this.CHANNELSELLER));
|
|
403
|
+
if (res) {
|
|
404
|
+
if (!this.sameChannel(res.channel, res.locale)) {
|
|
405
|
+
this.changeChannel(res);
|
|
406
|
+
refreshPage = true;
|
|
407
|
+
}
|
|
408
|
+
this.localStorage?.removeItem(this.CHANNELSELLER);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
//this._cartService.clearAndResetCustomerCart()
|
|
412
|
+
refreshPage ? location.href = location.href : null;
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Comprueba si los valores del canal actual son iguales a los ingresado por parametros.
|
|
416
|
+
* @param {string} channel Nombre del canal
|
|
417
|
+
* @param {string} locale Locale del canal
|
|
418
|
+
* @returns {boolean} True si es el mismo canal, False caso contrario.
|
|
419
|
+
*/
|
|
420
|
+
sameChannel = (channel, locale) => (channel == this._apiConsts.CHANNEL) && (locale == this._apiConsts.LOCALE);
|
|
421
|
+
/**
|
|
422
|
+
* Cambia de canal
|
|
423
|
+
* @param channelConfig debe ser un objeto que contenga al menos las keys channel y locale.
|
|
424
|
+
*/
|
|
425
|
+
changeChannel = (channelConfig) => {
|
|
426
|
+
this._constants.modifyChannelConfig({
|
|
427
|
+
channel: channelConfig.channel,
|
|
428
|
+
locale: channelConfig.locale
|
|
429
|
+
});
|
|
430
|
+
};
|
|
431
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
432
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AuthService, providedIn: 'root' });
|
|
433
|
+
}
|
|
434
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AuthService, decorators: [{
|
|
435
|
+
type: Injectable,
|
|
436
|
+
args: [{
|
|
437
|
+
providedIn: 'root'
|
|
438
|
+
}]
|
|
439
|
+
}], ctorParameters: () => [] });
|
|
440
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBQ3BEOztHQUVHO0FBSUgsTUFBTSxPQUFPLFdBQVc7SUFDZixhQUFhLEdBQXdCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0lBQ2hFLFdBQVcsR0FBc0IsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM0QsZUFBZSxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDekQsVUFBVSxHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNoRSxVQUFVLEdBQXdCLE1BQU0sQ0FBQyxtQkFBbUIs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QUFDLENBQUE7b0JBQ3ZCLFdBQVcsR0FBRyxJQUFJLENBQUE7Z0JBQ3RCLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3RELENBQUM7UUFDTCxDQUFDO1FBQ0QsK0NBQStDO1FBQy9DLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFDdEQsQ0FBQztJQUVKOzs7OztPQUtNO0lBQ0ssV0FBVyxHQUFHLENBQUMsT0FBYyxFQUFFLE1BQWEsRUFBVSxFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBRTlJOzs7T0FHTTtJQUNLLGFBQWEsR0FBRyxDQUFDLGFBQWlCLEVBQUUsRUFBRTtRQUMxQyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDO1lBQ2hDLE9BQU8sRUFBRSxhQUFhLENBQUMsT0FBTztZQUM5QixNQUFNLEVBQUUsYUFBYSxDQUFDLE1BQU07U0FDL0IsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFBO3VHQTFhUSxXQUFXOzJHQUFYLFdBQVcsY0FGWCxNQUFNOzsyRkFFTixXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXNlclJvbGVUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNhdGNoRXJyb3IsIG1hcCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi9jbGFzc2VzJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBpQ29uc3RhbnRzU2VydmljZSwgQ29yZUNvbnN0YW50c1NlcnZpY2UgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vYXV0aC5zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG4vKipcbiAqIFNlcnZpY2lvIGRlIGF1dGVudGlmaWNhY2nDs24gZGVsIHVzdWFyaW8gZW4gbGEgcGxhdGFmb3JtYS5cbiAqL1xuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuXHRwcml2YXRlIF9sb2NhbFN0b3JhZ2U6IExvY2FsU3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoTG9jYWxTdG9yYWdlU2VydmljZSlcblx0cHJpdmF0ZSBfY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UgPSBpbmplY3QoQ29ubmVjdGlvblNlcnZpY2UpO1xuXHRwcml2YXRlIF9jaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2UgPSBpbmplY3QoQ2hhbm5lbFNlcnZpY2UpO1xuXHRwcml2YXRlIF9jb25zdGFudHM6IENvcmVDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KENvcmVDb25zdGFudHNTZXJ2aWNlKTtcblx0cHJpdmF0ZSBfYXBpQ29uc3RzOiBBcGlDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xuXHRwcml2YXRlIF9hdXRoU3RvcmFnZTogQXV0aFN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KEF1dGhTdG9yYWdlU2VydmljZSk7XG5cblx0Ly8gQ29udGFudGVzIHBhcmEgZWwgc3RvcmFnZS5cblx0cHJpdmF0ZSByZWFkb25seSBKV1RfVE9LRU4gPSAnSldUX1RPS0VOJ1xuXHRwcml2YXRlIHJlYWRvbmx5IFJFRlJFU0hfVE9LRU4gPSAnUkVGUkVTSF9UT0tFTidcblx0cHJpdmF0ZSByZWFkb25seSBFWFBJUkFURVNfSU4gPSAnRVhQSVJBVEVTX0lOJ1xuXHRwcml2YXRlIHJlYWRvbmx5IFVTRVIgPSAnVVNFUidcblx0cHJpdmF0ZSByZWFkb25seSBNQUlMID0gJ21haWwnXG5cdHByaXZhdGUgcmVhZG9ubHkgTE9DQUxFID0gJ0xPQ0FMRSdcblx0cHJpdmF0ZSByZWFkb25seSBDSEFOTkVMID0gJ0NIQU5ORUwnXG5cdHByaXZhdGUgcmVhZG9ubHkgQ1VTVE9NRVIgPSAnQ1VTVE9NRVInXG5cdHByaXZhdGUgcmVhZG9ubHkgQ0hBTk5FTFNFTExFUiA9ICdDSEFOTkVMU0VMTEVSJ1xuXG5cdHByaXZhdGUgY2hhbm5lbHNVc2VyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKVxuXHRwdWJsaWMgY2hhbm5lbHMkID0gdGhpcy5jaGFubmVsc1VzZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXG5cdHByaXZhdGUgX2NoYW5uZWwkID0gdGhpcy5fY2hhbm5lbFNlcnZpY2UuZ2V0Q2hhbm5lbCgpXG5cdHByaXZhdGUgX3VzZXJJblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVzZXIgfCBudWxsPihudWxsKVxuXHRwcml2YXRlIF9sb2dnZWRJblN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXHRwdWJsaWMgbG9nZ2VkSW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5fbG9nZ2VkSW5TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXHRwcml2YXRlIF9sb2dnaW5nSW5TdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblx0cHVibGljIGxvZ2dpbmdJbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9sb2dnaW5nSW5TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG5cdC8qKlxuXHQgKiBQYXJhIGluZGljYXIgc2kgdW4gY2FuYWwgY2FtYmlvLlxuXHQgKi9cblx0cHJpdmF0ZSBfYWN0aXZlQ2hhbm5lbENoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuXHQvKipcblx0ICogR3VhcmRhIGxvcyBkYXRvcyBkZWwgdXN1YXJpb1xuXHQgKi9cblx0cHJpdmF0ZSBfdXNlcjogVXNlciB8IG51bGwgPSBudWxsO1xuXHRwcml2YXRlIF9jdXN0b21lciA9IG51bGw7XG5cdC8qKlxuXHQgKiBHdWFyZGEgbG9zIGRhdG9zIGRlbCBjYW5hbFxuXHQgKi9cblx0cHVibGljIGNoYW5uZWw6IGFueSA9IFtdXG5cdHB1YmxpYyBjaGFubmVsczogYW55W10gPSBbXVxuXHQvKipcblx0ICogVXRpbGl6YWRvIHBhcmEgcmVzb2x2ZXIgaGFjaWEgZG9uZGUgc2UgdGllbmUgcXVlIHJlZGlyZWNjaW9uYXJcblx0ICogbGEgcGFnaW5hIHRyYXMgdW4gZXZlbnRvLlxuXHQgKi9cblx0cHJpdmF0ZSBfaG9tZVJlc29sdmVyOiBhbnk7XG5cdC8qKlxuXHQgKiBTaWduYWwgcGFyYSBndWFyZGFyIGVsIHRva2VuIGRlIHVzdWFyaW8gdW5hIHZleiBsb2d1ZWFkb1xuXHQgKi9cblx0cHJpdmF0ZSBfdG9rZW5TaWduYWwgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cdC8qKlxuXHQgKiBTaWduYWwgcGFyYSBndWFyZGFyIGVsIHVzdWFyaW9cblx0ICovXG5cdHByaXZhdGUgX3VzZXJTaWduYWwgPSBzaWduYWw8VXNlciB8IG51bGw+KG51bGwpO1xuXHQvL0FQSXNcblx0cHJpdmF0ZSBzaG9wQXBpOiBzdHJpbmcgPSB0aGlzLl9hcGlDb25zdHMuU0hPUF9BUElfVVJMXG5cdHByaXZhdGUgY2hhbm5lbEFwaTogc3RyaW5nID0gdGhpcy5fYXBpQ29uc3RzLkNIQU5ORUxcblx0cHJpdmF0ZSB0b2tlbkFwaSgpIHsgcmV0dXJuIHRoaXMuc2hvcEFwaSArICdsb2dpbl9jaGVjaycgfVxuXHRwcml2YXRlIHJlY292ZXJQYXNzd29yZEFwaSgpIHsgcmV0dXJuIGAke3RoaXMuc2hvcEFwaX0ke3RoaXMuY2hhbm5lbEFwaX0vcmVxdWVzdC1wYXNzd29yZC1yZXNldGAgfVxuXHRwcml2YXRlIGNvbmZpcm1BY2NvdW50QXBpKHRva2VuOiBzdHJpbmcpIHsgcmV0dXJuIGAke3RoaXMuc2hvcEFwaX0ke3RoaXMuY2hhbm5lbEFwaX0vdmVyaWZ5LWFjY291bnQ/dG9rZW49JHt0b2tlbn1gIH1cblx0cHJpdmF0ZSByZWdpc3RlckFwaSgpIHsgcmV0dXJuIGAke3RoaXMuc2hvcEFwaX0ke3RoaXMuY2hhbm5lbEFwaX0vcmVnaXN0ZXJgIH1cblx0cHJpdmF0ZSByZWdpc3Rlcldob2xlc2FsZXJBcGkoKSB7IHJldHVybiBgJHt0aGlzLnNob3BBcGl9JHt0aGlzLmNoYW5uZWxBcGl9L3JlZ2lzdGVyLXdob2xlc2FsZXJgfVxuXHRwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSA9IGluamVjdChQTEFURk9STV9JRClcblx0XG5cdHB1YmxpYyB3aW5kb3c/OldpbmRvdztcblx0cHVibGljIGxvY2FsU3RvcmFnZT86U3RvcmFnZTtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0aWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcblx0XHRcdHRoaXMud2luZG93ID0gd2luZG93XG5cdFx0XHR0aGlzLmxvY2FsU3RvcmFnZSA9IGxvY2FsU3RvcmFnZTtcblx0XHR9XG5cdFx0dGhpcy5sb2FkVG9rZW5Gcm9tU3RvcmFnZSgpO1xuXHRcdHRoaXMuaXNBdXRoZW50aWNhdGVkKCkgJiYgdGhpcy5fbG9nZ2VkSW5TdWJqZWN0Lm5leHQodHJ1ZSk7XG5cdH1cblx0LyoqXG5cdCAqIExvZ3VlYSBhbCB1c3VhcmlvIGVuIGxhIGFwbGljYWNpw7NuLlxuXHQgKiBAcGFyYW0gdXNlciBkYXRvcyBkZWwgdXN1YXJpb1xuXHQgKiBAcGFyYW0gd2l0aFJvbGVzIHJvbGVzIGRlbCB1c3VhcmlvXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0bG9naW4odXNlcjogeyB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nIH0sIHdpdGhSb2xlczogVXNlclJvbGVUeXBlW10gPSBbXSk6IE9ic2VydmFibGU8YW55PiB7XG5cdFx0dGhpcy5fY2hhbm5lbCQuc3Vic2NyaWJlKGNoID0+IHRoaXMuY2hhbm5lbCA9IGNoKTtcblx0XHR0aGlzLmNoYW5uZWxzJC5zdWJzY3JpYmUoY2ggPT4gdGhpcy5jaGFubmVscyA9IGNoKTtcblx0XHR0aGlzLl9sb2dnaW5nSW5TdWJqZWN0Lm5leHQodHJ1ZSk7XG5cdFx0dXNlciA9IHsuLi51c2VyLCAuLi50aGlzLmxvZ2luRXh0cmFEYXRhKCkgfVxuXHRcdHJldHVybiB0aGlzLl9jb25uZWN0aW9uLnBvc3QodGhpcy50b2tlbkFwaSgpLCB1c2VyKS5waXBlKFxuXHRcdFx0bWFwKChyZXM6IGFueSkgPT4ge1xuXHRcdFx0XHRpZiAodGhpcy5jaGFubmVsQWNjZXNzUGVybWlzc2lvbih7IC4uLnVzZXIsIC4uLnJlcyB9KSAmJiB0aGlzLmlzQWxsb3dlZFJvbGUod2l0aFJvbGVzLCByZXMudHlwZSkpIHtcblx0XHRcdFx0XHR0aGlzLmRvTG9naW5Vc2VyKHsgLi4udXNlciwgLi4ucmVzIH0pO1xuXHRcdFx0XHRcdHJldHVybiAnb2snO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiAnZXJyb3InO1xuXHRcdFx0fSksXG5cdFx0XHRjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XG5cdFx0XHRcdHRoaXMuX2xvZ2dpbmdJblN1YmplY3QubmV4dChmYWxzZSk7XG5cdFx0XHRcdHJldHVybiBvZihlcnJvci50b1N0cmluZygpKTtcblx0XHRcdH0pXG5cdFx0KVxuXHR9XG5cdC8qKlxuXHQgKiBDb250cm9sYSBxdWUgZWwgdXN1YXJpbyBsb2d1ZWFkbyB0ZW5nYSBwZXJtaXNvcyBcblx0ICogcGFyYSBlbCBjYW5hbCBhY3R1YWwgZGUgbGEgYXBsaWNhY2nDs24uXG5cdCAqIEBwYXJhbSByZXMgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSBjaGFubmVsQWNjZXNzUGVybWlzc2lvbihyZXM6IGFueSkge1xuXHRcdC8vY29uc29sZS5sb2coJ2NoYW5uZWxBY2Nlc3MnLCByZXMpO1xuXHRcdHRoaXMuY2hhbm5lbHNVc2VyU3ViamVjdC5uZXh0KFtdKTtcblxuXHRcdC8qIE5vIGF1dGhvcml6ZWQgY2hhbm5lbHMgKi9cblx0XHRpZiAocmVzLmNoYW5uZWxzPy5sZW5ndGggPT0gMCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlXG5cdFx0fVxuXHRcdC8qIFNvbWUgYXV0aG9yaXplZCBjaGFubmVsKHMpIGluY2x1ZGluZyBjdXJyZW50IGNoYW5uZWwgKi9cblx0XHRpZiAocmVzLmNoYW5uZWxzLmZpbmQoKHVzZXJjaGFubmVsOiBhbnkpID0+IHVzZXJjaGFubmVsLmNvZGUgPT09IHRoaXMuY2hhbm5lbC5jb2RlKSkge1xuXHRcdFx0LyogTXVsdGlwbGUgYXV0aG9yaXplZCBjaGFubmVscyBpbmNsdWRpbmcgY3VycmVudCBjaGFubmVsICovXG5cdFx0XHRpZiAocmVzLmNoYW5uZWxzPy5sZW5ndGggPiAxICYmIHRoaXMuX2FjdGl2ZUNoYW5uZWxDaGFuZ2UpXG5cdFx0XHRcdHRoaXMuY2hhbm5lbHNVc2VyU3ViamVjdC5uZXh0KHJlcy5jaGFubmVscylcblx0XHRcdHJldHVybiB0cnVlXG5cdFx0fVxuXHRcdC8qIE9uZSBhdXRob3JpemVkIGNoYW5uZWwgbm90IGluY2x1ZGluZyBjdXJyZW50IGNoYW5uZWwgKi9cblx0XHRpZiAocmVzLmNoYW5uZWxzPy5sZW5ndGggPT0gMSAmJiB0aGlzLl9hY3RpdmVDaGFubmVsQ2hhbmdlKSB7XG5cdFx0XHRkZWxldGUgcmVzLnBhc3N3b3JkXG5cdFx0XHR0aGlzLmNoYW5uZWxBY2Nlc3MocmVzLmNoYW5uZWxzWzBdLCByZXMpXG5cdFx0XHRyZXR1cm4gdHJ1ZVxuXHRcdH1cblx0XHQvKiBNdWx0aXBsZSBhdXRob3JpemVkIGNoYW5uZWxzIG5vdCBpbmNsdWRpbmcgY3VycmVudCBjaGFubmVsICovXG5cdFx0aWYgKHRoaXMuX2FjdGl2ZUNoYW5uZWxDaGFuZ2UpIHtcblx0XHRcdHRoaXMuY2hhbm5lbHNVc2VyU3ViamVjdC5uZXh0KHJlcy5jaGFubmVscylcblx0XHRcdHJldHVybiB0cnVlXG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZVxuXHR9XG5cdC8qKlxuXHQgKiBDb250cm9sYSBlbCBhY2Nlc28gYWwgY2FuYWwsIGRlIHNlciBvdHJvIG51ZXZvIGNhbWJpYSBsb3MgdmFsb3Jlcy5cblx0ICogQHBhcmFtIGNoYW5uZWwgXG5cdCAqIEBwYXJhbSB1c2VyIFxuXHQgKi9cblx0Y2hhbm5lbEFjY2VzcyhjaGFubmVsOiBhbnksIHVzZXIgPSBudWxsKSB7XG5cdFx0aWYgKHRoaXMud2luZG93Py5sb2NhdGlvbi5ob3N0bmFtZSAhPSBjaGFubmVsLmhvc3RuYW1lKSB7XG5cdFx0XHRsZXQgZW5jb2RlZCA9IGJ0b2EoSlNPTi5zdHJpbmdpZnkodXNlciAhPSBudWxsID8gdXNlciA6IHRoaXMuX3VzZXIpKVxuXHRcdFx0dGhpcy53aW5kb3c/LmxvY2F0aW9uLnJlcGxhY2UoYCR7dGhpcy53aW5kb3c/LmxvY2F0aW9uLnByb3RvY29sfS8vJHtjaGFubmVsLmhvc3RuYW1lfS9hdXRoL3JlZGlyZWN0LyR7ZW5jb2RlZH1gKVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9jb25zdGFudHMubW9kaWZ5Q2hhbm5lbENvbmZpZyhjaGFubmVsKVxuXHRcdFx0dGhpcy53aW5kb3c/LmxvY2F0aW9uLnJlbG9hZCgpXG5cdFx0fVxuXHR9XG5cdC8qKlxuXHQgKiBDb250cm9sYSBxdWUgZWwgcm9sIGRlbCB1c3VhcmlvIHNlYSB1biByb2wgcGVybWl0aWRvIHBvciBsYSBhcGxpY2FjacOzbi5cblx0ICogQHBhcmFtIGFsbG93ZWRSb2xlcyByb2xlcyBxdWUgcGVybWl0ZSBsYSBhcGxpY2FjacOzbi5cblx0ICogQHBhcmFtIHJvbGUgcm9sIGRlbCB1c3Vhcmlvc1xuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgaXNBbGxvd2VkUm9sZShhbGxvd2VkUm9sZXM6IFVzZXJSb2xlVHlwZVtdLCByb2xlOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gYWxsb3dlZFJvbGVzLmxlbmd0aFxuXHRcdFx0PyBhbGxvd2VkUm9sZXMuaW5jbHVkZXMocm9sZSBhcyBVc2VyUm9sZVR5cGUpXG5cdFx0XHQ6IHRydWVcblx0fVxuXHQvKipcblx0ICogVHJhcyB1biBsb2d1ZW8gZXhpdG9zbywgZ3VhcmRhIGxvcyBkYXRvcyBuZWNlc2FyaW9zIGVuIGVsIHN0b3JhZ2UgeSBkZW3DoXNcblx0ICogY29uZmlndXJhY2lvbmVzIG5lY2VzYXJpYXMuXG5cdCAqIEBwYXJhbSB0b2tlbnMgXG5cdCAqL1xuXHRwcml2YXRlIGRvTG9naW5Vc2VyKHRva2VuczogYW55KSB7XG5cdFx0dGhpcy5fdXNlciA9IG5ldyBVc2VyKClcblx0XHR0aGlzLl91c2VyLmluaXRpbGl6ZWQodG9rZW5zKVxuXHRcdFxuXHRcdHRoaXMuZm9yY2VDaGFubmVsc0ZvclNlbGxlcih0b2tlbnMpXG5cdFx0Ly9DaGFubmVsXG5cdFx0Y29uc3QgdXNlckpzb25pZnkgPSB0aGlzLl91c2VyLmpzb25pZnkoKVxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuVVNFUiwgSlNPTi5zdHJpbmdpZnkodXNlckpzb25pZnkpKVxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuRVhQSVJBVEVTX0lOLCBtb21lbnQodG9rZW5zLmV4cGlyZV9pbikuYWRkKDEsICdoJykuZm9ybWF0KCkpO1xuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuUkVGUkVTSF9UT0tFTiwgbW9tZW50KHRva2Vucy5leHBpcmVfaW4pLmFkZCgxLCAnaCcpLmZvcm1hdCgpKTtcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkpXVF9UT0tFTiwgdG9rZW5zLnRva2VuKTtcblx0XHR0aGlzLl9hdXRoU3RvcmFnZS5zZXRBdXRoVG9rZW4odG9rZW5zLnRva2VuKVxuXHRcdHRoaXMuX3Rva2VuU2lnbmFsLnNldCh0b2tlbnMudG9rZW4pO1xuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuTUFJTCwgdG9rZW5zLnVzZXJuYW1lKTtcblx0XHQvL09ic2VydmFibGVzXG5cdFx0dGhpcy5fdXNlckluU3ViamVjdC5uZXh0KHRoaXMuX3VzZXIpO1xuXHRcdHRoaXMuX2xvZ2dlZEluU3ViamVjdC5uZXh0KHRydWUpO1xuXHRcdHRoaXMuX2xvZ2dpbmdJblN1YmplY3QubmV4dChmYWxzZSk7XG5cdH1cblx0LyoqXG5cdCAqIENhbWJpYSBsYSBmdW5jaW9uIHF1ZSBzZSBlbmNhcmdhIGRlIHJlc29sdmVyIGhhY2lhIGRvbmRlIHNlIHJlZGlyaWdlIGVsIGZyb250ZW5kXG5cdCAqIHRyYXMgdW5hIGFjY2nDs25cblx0ICogQHBhcmFtIHJlc29sdmVyRnVuY3Rpb24gXG5cdCAqL1xuXHRwdWJsaWMgc2V0SG9tZVJlc29sdmVyKHJlc29sdmVyRnVuY3Rpb246IGFueSkgeyB0aGlzLl9ob21lUmVzb2x2ZXIgPSByZXNvbHZlckZ1bmN0aW9uIH1cblx0LyoqXG5cdCAqIE9idGllbmUgbGEgZnVuY2lvbiBxdWUgc2UgZW5jYXJnYSBkZSByZXNvbHZlciBoYWNpYSBkb25kZSBzZSByZWRpcmlnZSBlbCBmcm9udGVuZC5cblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwdWJsaWMgZ2V0SG9tZVJlc29sdmVyKCkgeyByZXR1cm4gdGhpcy5faG9tZVJlc29sdmVyIH1cblx0LyoqXG5cdCAqIE9idGllbmUgZWwgdG9rZW4gZGVsIHN0b3JhZ2UgeSBsbyBndWFyZGEgZW4gbGEgc2lnbmFsLlxuXHQgKi9cblx0cHVibGljIGxvYWRUb2tlbkZyb21TdG9yYWdlKCkge1xuXHRcdGNvbnN0IHRva2VuID0gdGhpcy5fbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5KV1RfVE9LRU4pO1xuXHRcdGlmICh0b2tlbikge1xuXHRcdFx0dGhpcy5fdG9rZW5TaWduYWwuc2V0KHRva2VuKTtcblx0XHR9XG5cdH1cblx0LyoqXG5cdCAqIERlc2xvZ3VlYSBhbCB1c3VhcmlvLlxuXHQgKi9cblx0cHVibGljIGxvZ291dCgpIHtcblx0XHR0aGlzLmRvTG9nb3V0VXNlcigpO1xuXHR9XG5cdC8qKlxuXHQgKiBSZXRvcm5hIHNpIGhheSB1biB1c3VhcmlvIGxvZ3VlYWRvIG8gbm8uXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHVibGljIGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHtcblx0XHQvL2NvbnNvbGUubG9nKFwiaXNBdXRoZW50aWNhdGVkXCIsdGhpcy5pc1Rva2VuRXhwaXJlZCgpLCB0aGlzLl90b2tlblNpZ25hbCgpICk7XG5cdFx0aWYgKHRoaXMuaXNUb2tlbkV4cGlyZWQoKSkge1xuXHRcdFx0dGhpcy5kb0xvZ291dFVzZXIoKVxuXHRcdH1cblx0XHR0aGlzLmdldEN1cnJlbnRVc2VyQXNVc2VyKClcblx0XHR0aGlzLl91c2VySW5TdWJqZWN0Lm5leHQodGhpcy5fdXNlcik7XG5cdFx0Ly9jb25zb2xlLmxvZyh0aGlzLmdldFRva2VuKCksICF0aGlzLmlzVG9rZW5FeHBpcmVkKCkgLCB0aGlzLl91c2VyICE9IG51bGwpO1xuXHRcdHJldHVybiB0aGlzLmdldFRva2VuKCkgJiYgIXRoaXMuaXNUb2tlbkV4cGlyZWQoKSAmJiB0aGlzLl91c2VyICE9IG51bGw7XG5cdH1cblx0LyoqXG5cdCAqIFJldG9ybmEgZWwgdG9rZW4gZGUgdXN1YXJpb1xuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHB1YmxpYyBnZXRUb2tlbigpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLl90b2tlblNpZ25hbCgpO1xuXHR9XG5cdC8qKlxuXHQgKiBMaW1waWEgZWwgc3RvcmFnZSB5IGxhcyBjb25maWd1cmFjaW9uZXMgaW50ZXJuYXNcblx0ICovXG5cdHB1YmxpYyBkb0xvZ291dFVzZXIoKSB7XG5cdFx0dGhpcy5fdXNlciA9IG51bGxcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlVTRVIpO1xuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuRVhQSVJBVEVTX0lOKTtcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkpXVF9UT0tFTik7XG5cdFx0dGhpcy5fYXV0aFN0b3JhZ2Uuc2V0QXV0aFRva2VuKG51bGwpO1xuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuUkVGUkVTSF9UT0tFTik7XG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2NhcnRfdG9rZW4nKTtcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLk1BSUwpO1xuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuQ0hBTk5FTCk7XG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5DSEFOTkVMU0VMTEVSKTtcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkxPQ0FMRSk7XG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5DVVNUT01FUik7XG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ01BU1RFUl9DSEFOTkVMJyk7XG5cdFx0dGhpcy5fbG9nZ2VkSW5TdWJqZWN0Lm5leHQoZmFsc2UpO1xuXHRcdHRoaXMuX3VzZXJJblN1YmplY3QubmV4dCh0aGlzLl91c2VyKTtcblx0XHR0aGlzLmNoYW5uZWxzVXNlclN1YmplY3QubmV4dChbXSlcblx0XHR0aGlzLl90b2tlblNpZ25hbC5zZXQobnVsbClcblx0fVxuXHQvKipcblx0ICogRGV2dWVsdmUgYHRydWVgc2kgZWwgdG9rZW4gZXhwaXJvLCBgZmFsc2VgIGNhc28gY29udHJhcmlvLlxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgaXNUb2tlbkV4cGlyZWQoKSB7XG5cdFx0Y29uc3QgZmVjaGFfZXhwaXJhY2lvbiA9IHRoaXMuZ2V0RXhwaXJhdGVzQXQoKTtcblx0XHRjb25zdCByZXN1bHQgPSBtb21lbnQoKSA+PSBtb21lbnQoZmVjaGFfZXhwaXJhY2lvbik7XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXHQvKipcblx0ICogT2J0aWVuZSBsYSBmZWNoYSBkZSBleHBpcmFjacOzbiBkZWwgdG9rZW4uXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSBnZXRFeHBpcmF0ZXNBdCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5FWFBJUkFURVNfSU4pO1xuXHR9XG5cdC8qKlxuXHQgKiBPYnRpZW5lIGFsIHVzdWFyaW8gYWN0dWFsIHkgbG8gY29udmllcnRlIGVuIHVuYSBpbnN0YW5jaWEgZGUgYFVzZXJgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSBnZXRDdXJyZW50VXNlckFzVXNlcigpOiBVc2VyIHwgbnVsbCB7XG5cdFx0dGhpcy5fdXNlciA9IG5ldyBVc2VyKCk7XG5cdFx0aWYgKCF0aGlzLmxvYWRVc2VyRnJvbVN0b3JhZ2UoKSkge1xuXHRcdFx0dGhpcy5fdXNlciA9IG51bGxcblx0XHR9XG5cdFx0ZWxzZSBpZiAodGhpcy5fdXNlcj8uY2hhbm5lbHMuZmluZCgodXNlcmNoYW5uZWw6IGFueSkgPT4gdXNlcmNoYW5uZWw/LmNvZGUgPT09IHRoaXMuX2FwaUNvbnN0cy5DSEFOTkVMKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuX3VzZXI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMubG9nb3V0KClcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuX3VzZXI7XG5cdH1cblx0LyoqXG5cdCAqIE9idGllbmUgZWwgdXN1YXJpbyBkZWwgc3RvcmFnZS5cblx0ICogQHBhcmFtIGtleSBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwcml2YXRlIGxvYWRVc2VyRnJvbVN0b3JhZ2Uoa2V5ID0gdGhpcy5VU0VSKSB7XG5cdFx0aWYgKHRoaXMuX2xvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpIHtcblx0XHRcdHRoaXMuX3VzZXIgPSBKU09OLnBhcnNlKHRoaXMuX2xvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpO1xuXHRcdFx0cmV0dXJuIHRydWVcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlXG5cdH1cblx0LyoqXG5cdCAqIEVudmlhIGxhIHNvbGljaXR1ZCBwYXJhIGNhbWJpYXIgbGEgY29udHJhc2XDsWEuXG5cdCAqIEBwYXJhbSBlbWFpbCBlbWFpbCBkZWwgc29saWNpdGFudGUuXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cmVjb3ZlclBhc3N3b3JkKGVtYWlsOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5wdXQodGhpcy5yZWNvdmVyUGFzc3dvcmRBcGkoKSwgeyBlbWFpbCB9KTtcblx0fVxuXHQvKipcblx0ICogUGFyYSBjb25maXJtYXIgZWwgcmVnaXN0cm8gZGUgdXN1YXJpby5cblx0ICogQHBhcmFtIHRva2VuIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdGNvbmZpcm1BY2NvdW50KHRva2VuOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5nZXQodGhpcy5jb25maXJtQWNjb3VudEFwaSh0b2tlbikpO1xuXHR9XG5cdC8qKlxuXHQgKiBQYXJhIHJlZ2lzdHJhciBhIHVuIHVzdWFyaW8gY29tw7puXG5cdCAqIEBwYXJhbSBkYXRhIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHNpbmdVcChkYXRhOiBhbnkpIHtcblx0XHRyZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5wb3N0KHRoaXMucmVnaXN0ZXJBcGkoKSwgZGF0YSk7XG5cdH1cblx0LyoqXG5cdCAqIFBhcmEgcmVnaXN0cmFyIGEgdW4gdXN1YXJpbyBtYXlvcmlzdGEuXG5cdCAqIEBwYXJhbSBkYXRhIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHNpZ25VcFdob2xlc2FsZXIoZGF0YTogYW55KSB7XG5cdFx0cmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb24ucG9zdCh0aGlzLnJlZ2lzdGVyV2hvbGVzYWxlckFwaSgpLGRhdGEpO1xuXHR9XG5cdC8qKlxuXHQgKiBDaGVxdWVhIHNpIHVuIHVzdWFyaW8gZXN0YSBoYWJpbGl0YWRvIGEgY29tcHJhciBvIG5vLlxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdGlzQWJsZVRvQnV5KCk6Ym9vbGVhbiB7XG5cdFx0Y29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmdldFVzZXJQcm9maWxlQXNVc2VyKCkgYXMgVXNlcjtcblx0XHRjb25zdCBpc1NlbGxlciA9IGN1cnJlbnRVc2VyLnR5cGVVc2VyICYmIGN1cnJlbnRVc2VyLnR5cGVVc2VyID09ICdzZWxsZXInIHx8IGZhbHNlXG5cdFx0cmV0dXJuICFpc1NlbGxlciB8fCAhdGhpcy5nZXRDdXN0b21lcigpO1xuXHR9XG5cdC8qKlxuXHQgKiBSZXRvcm5hIHVuIHVzdWFyaW8gZGUgdGlwbyBjbGllbnRlLlxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdGdldEN1c3RvbWVyKCkge1xuXHRcdHJldHVybiB0aGlzLl9jdXN0b21lciB8fCBKU09OLnBhcnNlKHRoaXMuX2xvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ1VTVE9NRVIpKVxuXHR9XG5cdC8qKlxuXHQgKiBEZXZ1ZWx2ZSBlbCB1c3VhcmlvIGFjdHVhbCBsb2d1ZWFkby5cblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRnZXRVc2VyUHJvZmlsZUFzVXNlcigpOiBVc2VyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXIhIGFzIFVzZXIgfHwgdGhpcy5nZXRDdXJyZW50VXNlckFzVXNlcigpO1xuICAgIH1cblx0LyoqXG5cdCAqIEFncmVnYSBkYXRhIGV4dHJhIGFsIG9iamVjdG8gZGUgVXN1YXJpby5cblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRsb2dpbkV4dHJhRGF0YSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNsaWVudF9pZDogJ2RlbW9fY2xpZW50JyxcbiAgICAgICAgICAgIGNsaWVudF9zZWNyZXQ6ICdzZWNyZXRfZGVtb19jbGllbnQnLFxuICAgICAgICAgICAgZ3JhbnRfdHlwZTogJ3Bhc3N3b3JkJ1xuICAgICAgICB9XG4gICAgfVxuXHQvKiBQbGVhc2UgcmVtb3ZlIHRoaXMgQVNBUCAtIE5lZWRzICpjaGFubmVscyogYXJyYXkgaW4gdXNlciBvYmplY3QgQUxXQVlTICovXG4gICAgcHJpdmF0ZSBmb3JjZUNoYW5uZWxzRm9yU2VsbGVyKHRva2Vuczphbnkpe1xuICAgICAgICBpZiAoVXNlclJvbGVUeXBlLlNFTExFUiA9PSB0b2tlbnMudHlwZSBhcyBVc2VyUm9sZVR5cGUpXG4gICAgICAgICAgICB0aGlzLmNoYW5uZWxzPy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IHRoaXMuX3VzZXIhLnNldENoYW5uZWxzKC4uLnRoaXMuY2hhbm5lbHMpXG4gICAgICAgICAgICAgICAgOiB0aGlzLl91c2VyIS5zZXRDaGFubmVscyh0aGlzLmNoYW5uZWwpXG4gICAgfVxuXG5cdCAvKipcbiAgICAgKiBDYXJnYSBlbCBjbGllbnRlIGNvbiBlbCBxdWUgc2UgcmVhbGl6YXJhbiBwZWRpZG9zLiBTaSByZWNpYmUgZWwgdmFsb3IgbnVsbFxuICAgICAqIHNlIHZ1ZWx2ZSBhIGNhcmdhciBlbCB2ZW5kZWRvciBwYXJhIHN1IHVzby4gIFxuICAgICAqIEBwYXJhbSBjdXN0b21lciBcbiAgICAgKi9cblx0IHB1YmxpYyBzZXRDdXN0b21lcihjdXN0b21lcjphbnkpe1xuICAgICAgICBsZXQgcmVmcmVzaFBhZ2UgPSBmYWxzZVxuICAgICAgICB0aGlzLl9jdXN0b21lciA9IGN1c3RvbWVyXG4gICAgICAgIHRoaXMuX2xvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuQ1VTVE9NRVIsIEpTT04uc3RyaW5naWZ5KGN1c3RvbWVyKSlcbiAgICAgICAgXG4gICAgICAgIGxldCBzYW1lQ2hhbm5lbCA9IGN1c3RvbWVyID8gdGhpcy5zYW1lQ2hhbm5lbChjdXN0b21lci5jaGFubmVsc1swXS5jb2RlLCBjdXN0b21lci5jaGFubmVsc1swXS5sb2NhbGVzLmNvZGUpIDogbnVsbFxuICAgICAgICBcbiAgICAgICAgaWYgKGN1c3RvbWVyKSB7XG4gICAgICAgICAgICBpZighc2FtZUNoYW5uZWwpe1xuICAgICAgICAgICAgICAgICF0aGlzLmxvY2FsU3RvcmFnZT8uZ2V0SXRlbSh0aGlzLkNIQU5ORUxTRUxMRVIpID9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2U/LnNldEl0ZW0odGhpcy5DSEFOTkVMU0VMTEVSLCBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsOiB0aGlzLl9hcGlDb25zdHMuQ0hBTk5FTCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZTogdGhpcy5fYXBpQ29uc3RzLkxPQ0FMRVxuICAgICAgICAgICAgICAgICAgICB9KSkgOiBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlQ2hhbm5lbCh7XG4gICAgICAgICAgICAgICAgICAgIGNoYW5uZWw6IGN1c3RvbWVyLmNoYW5uZWxzWzBdLmNvZGUsXG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZTogY3VzdG9tZXIuY2hhbm5lbHNbMF0ubG9jYWxlcy5jb2RlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCByZXMgPSBKU09OLnBhcnNlKHRoaXMuX2xvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ0hBTk5FTFNFTExFUikpXG4gICAgICAgICAgICBpZihyZXMpe1xuICAgICAgICAgICAgICAgIGlmKCF0aGlzLnNhbWVDaGFubmVsKHJlcy5jaGFubmVsLCByZXMubG9jYWxlKSl7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlQ2hhbm5lbChyZXMpXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlID0gdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZT8ucmVtb3ZlSXRlbSh0aGlzLkNIQU5ORUxTRUxMRVIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vdGhpcy5fY2FydFNlcnZpY2UuY2xlYXJBbmRSZXNldEN1c3RvbWVyQ2FydCgpXG4gICAgICAgIHJlZnJlc2hQYWdlID8gbG9jYXRpb24uaHJlZiA9IGxvY2F0aW9uLmhyZWYgOiBudWxsXG4gICAgfVxuXG5cdC8qKlxuICAgICAqIENvbXBydWViYSBzaSBsb3MgdmFsb3JlcyBkZWwgY2FuYWwgYWN0dWFsIHNvbiBpZ3VhbGVzIGEgbG9zIGluZ3Jlc2FkbyBwb3IgcGFyYW1ldHJvcy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhbm5lbCBOb21icmUgZGVsIGNhbmFsXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2FsZSAgTG9jYWxlIGRlbCBjYW5hbFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIHNpIGVzIGVsIG1pc21vIGNhbmFsLCBGYWxzZSBjYXNvIGNvbnRyYXJpby5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNhbWVDaGFubmVsID0gKGNoYW5uZWw6c3RyaW5nLCBsb2NhbGU6c3RyaW5nKTpib29sZWFuID0+IChjaGFubmVsID09IHRoaXMuX2FwaUNvbnN0cy5DSEFOTkVMKSAmJiAobG9jYWxlID09IHRoaXMuX2FwaUNvbnN0cy5MT0NBTEUpXG5cblx0LyoqXG4gICAgICogQ2FtYmlhIGRlIGNhbmFsXG4gICAgICogQHBhcmFtIGNoYW5uZWxDb25maWcgZGViZSBzZXIgdW4gb2JqZXRvIHF1ZSBjb250ZW5nYSBhbCBtZW5vcyBsYXMga2V5cyBjaGFubmVsIHkgbG9jYWxlLlxuICAgICAqL1xuICAgIHByaXZhdGUgY2hhbmdlQ2hhbm5lbCA9IChjaGFubmVsQ29uZmlnOmFueSkgPT4ge1xuICAgICAgICB0aGlzLl9jb25zdGFudHMubW9kaWZ5Q2hhbm5lbENvbmZpZyh7XG4gICAgICAgICAgICBjaGFubmVsOiBjaGFubmVsQ29uZmlnLmNoYW5uZWwsXG4gICAgICAgICAgICBsb2NhbGU6IGNoYW5uZWxDb25maWcubG9jYWxlXG4gICAgICAgIH0pXG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { inject, Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import { LocalStorageService } from './local-storage.service';
|
|
4
|
+
import moment from 'moment';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class AuthStorageService {
|
|
7
|
+
_localStorage = inject(LocalStorageService);
|
|
8
|
+
_authTokenSubject = new BehaviorSubject(null);
|
|
9
|
+
// Contantes para el storage.
|
|
10
|
+
JWT_TOKEN = 'JWT_TOKEN';
|
|
11
|
+
REFRESH_TOKEN = 'REFRESH_TOKEN';
|
|
12
|
+
EXPIRATES_IN = 'EXPIRATES_IN';
|
|
13
|
+
constructor() { }
|
|
14
|
+
setAuthToken(token) {
|
|
15
|
+
this._authTokenSubject.next(token);
|
|
16
|
+
}
|
|
17
|
+
getAuthToken$() {
|
|
18
|
+
return this._authTokenSubject.asObservable();
|
|
19
|
+
}
|
|
20
|
+
getAuthToken() {
|
|
21
|
+
if (!this._authTokenSubject.value) {
|
|
22
|
+
const res = this._localStorage.getItem(this.JWT_TOKEN);
|
|
23
|
+
return res ? res : null;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
return this._authTokenSubject.value;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Devuelve `true`si el token expiro, `false` caso contrario.
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
33
|
+
isTokenExpired() {
|
|
34
|
+
const fecha_expiracion = this.getExpiratesAt();
|
|
35
|
+
const result = moment() >= moment(fecha_expiracion);
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Obtiene la fecha de expiración del token.
|
|
40
|
+
* @returns
|
|
41
|
+
*/
|
|
42
|
+
getExpiratesAt() {
|
|
43
|
+
return this._localStorage.getItem(this.EXPIRATES_IN);
|
|
44
|
+
}
|
|
45
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AuthStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
46
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AuthStorageService, providedIn: 'root' });
|
|
47
|
+
}
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AuthStorageService, decorators: [{
|
|
49
|
+
type: Injectable,
|
|
50
|
+
args: [{
|
|
51
|
+
providedIn: 'root'
|
|
52
|
+
}]
|
|
53
|
+
}], ctorParameters: () => [] });
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvYXV0aC5zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBTyxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7O0FBSzVCLE1BQU0sT0FBTyxrQkFBa0I7SUFDdEIsYUFBYSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRTVDLGlCQUFpQixHQUFHLElBQUksZUFBZSxDQUFnQixJQUFJLENBQUMsQ0FBQTtJQUVwRSw2QkFBNkI7SUFDWixTQUFTLEdBQUcsV0FBVyxDQUFBO0lBQ3ZCLGFBQWEsR0FBRyxlQUFlLENBQUE7SUFDL0IsWUFBWSxHQUFHLGNBQWMsQ0FBQTtJQUM5QyxnQkFBZ0IsQ0FBQztJQUVqQixZQUFZLENBQUMsS0FBb0I7UUFDaEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsYUFBYTtRQUNaLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRCxZQUFZO1FBQ1gsSUFBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUMsQ0FBQztZQUNqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDdEQsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3pCLENBQUM7YUFBTSxDQUFDO1lBQ1AsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDO1FBQ3JDLENBQUM7SUFDRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssY0FBYztRQUNyQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMvQyxNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwRCxPQUFPLE1BQU0sQ0FBQztJQUNmLENBQUM7SUFDRDs7O09BR0c7SUFDSyxjQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RELENBQUM7dUdBM0NXLGtCQUFrQjsyR0FBbEIsa0JBQWtCLGNBRmxCLE1BQU07OzJGQUVOLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZ3hMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9uZ3gtbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbkBJbmplY3RhYmxlKHtcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhTdG9yYWdlU2VydmljZSB7XG5cdHByaXZhdGUgX2xvY2FsU3RvcmFnZSA9IGluamVjdChMb2NhbFN0b3JhZ2VTZXJ2aWNlKTtcblxuXHRwcml2YXRlIF9hdXRoVG9rZW5TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPihudWxsKVxuXG5cdC8vIENvbnRhbnRlcyBwYXJhIGVsIHN0b3JhZ2UuXG5cdHByaXZhdGUgcmVhZG9ubHkgSldUX1RPS0VOID0gJ0pXVF9UT0tFTidcblx0cHJpdmF0ZSByZWFkb25seSBSRUZSRVNIX1RPS0VOID0gJ1JFRlJFU0hfVE9LRU4nXG5cdHByaXZhdGUgcmVhZG9ubHkgRVhQSVJBVEVTX0lOID0gJ0VYUElSQVRFU19JTidcblx0Y29uc3RydWN0b3IoKSB7IH1cblxuXHRzZXRBdXRoVG9rZW4odG9rZW46IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcblx0XHR0aGlzLl9hdXRoVG9rZW5TdWJqZWN0Lm5leHQodG9rZW4pO1xuXHR9XG5cblx0Z2V0QXV0aFRva2VuJCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fYXV0aFRva2VuU3ViamVjdC5hc09ic2VydmFibGUoKTtcblx0fVxuXG5cdGdldEF1dGhUb2tlbigpOiBzdHJpbmcgfCBudWxsIHtcblx0XHRpZighdGhpcy5fYXV0aFRva2VuU3ViamVjdC52YWx1ZSl7XG5cdFx0XHRjb25zdCByZXMgPSB0aGlzLl9sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkpXVF9UT0tFTilcblx0XHRcdHJldHVybiByZXMgPyByZXMgOiBudWxsO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fYXV0aFRva2VuU3ViamVjdC52YWx1ZTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRGV2dWVsdmUgYHRydWVgc2kgZWwgdG9rZW4gZXhwaXJvLCBgZmFsc2VgIGNhc28gY29udHJhcmlvLlxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgaXNUb2tlbkV4cGlyZWQoKSB7XG5cdFx0Y29uc3QgZmVjaGFfZXhwaXJhY2lvbiA9IHRoaXMuZ2V0RXhwaXJhdGVzQXQoKTtcblx0XHRjb25zdCByZXN1bHQgPSBtb21lbnQoKSA+PSBtb21lbnQoZmVjaGFfZXhwaXJhY2lvbik7XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXHQvKipcblx0ICogT2J0aWVuZSBsYSBmZWNoYSBkZSBleHBpcmFjacOzbiBkZWwgdG9rZW4uXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSBnZXRFeHBpcmF0ZXNBdCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5FWFBJUkFURVNfSU4pO1xuXHR9XG59XG4iXX0=
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { inject, Injectable } from '@angular/core';
|
|
2
|
+
import { ApiConstantsService } from '../constants';
|
|
3
|
+
import { BehaviorSubject, map, shareReplay } from 'rxjs';
|
|
4
|
+
import { ConnectionService } from '../api';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Servicio que maneja los bloques como repositorio.
|
|
8
|
+
* @class BlocksRepositoryService
|
|
9
|
+
*/
|
|
10
|
+
export class BlocksRepositoryService {
|
|
11
|
+
/**
|
|
12
|
+
* Constantes de la API
|
|
13
|
+
*/
|
|
14
|
+
apiConstants = inject(ApiConstantsService);
|
|
15
|
+
/**
|
|
16
|
+
* Menaja las conexiones con la API
|
|
17
|
+
*/
|
|
18
|
+
connection = inject(ConnectionService);
|
|
19
|
+
/**
|
|
20
|
+
* Subject para manejar los bloques recibidos.
|
|
21
|
+
*/
|
|
22
|
+
blocksSubject = new BehaviorSubject([]);
|
|
23
|
+
/**
|
|
24
|
+
* Observable de bloques.
|
|
25
|
+
*/
|
|
26
|
+
blocks$ = this.blocksSubject.asObservable();
|
|
27
|
+
//API URLS
|
|
28
|
+
/**
|
|
29
|
+
* Devuelve la url para obtener los bloques segun la sección.
|
|
30
|
+
* @param section
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
33
|
+
blocksAPI(section) { return `${this.apiConstants.CMS_URL}${this.apiConstants.CHANNEL}/blocks/section/${section}?locale=${this.apiConstants.LOCALE}`; }
|
|
34
|
+
/**
|
|
35
|
+
* Obtiene los bloques segun la seccion del Backend.
|
|
36
|
+
* @param section
|
|
37
|
+
* @returns Un observable de los bloques.
|
|
38
|
+
*/
|
|
39
|
+
getBlocks(section) {
|
|
40
|
+
//if(this.blocksSubject.getValue() != null){
|
|
41
|
+
this.connection.get(this.blocksAPI(section)).pipe(shareReplay(1), map((response) => {
|
|
42
|
+
//console.log(response)
|
|
43
|
+
this.blocksSubject.next(response.items);
|
|
44
|
+
return response;
|
|
45
|
+
})).subscribe();
|
|
46
|
+
//}
|
|
47
|
+
return this.blocks$;
|
|
48
|
+
}
|
|
49
|
+
/* private hasSectionBlocks = (section: string) => {
|
|
50
|
+
|
|
51
|
+
} */
|
|
52
|
+
appendBlock = (blocks, section) => {
|
|
53
|
+
const new_block = { section, blocks };
|
|
54
|
+
};
|
|
55
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: BlocksRepositoryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
56
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: BlocksRepositoryService, providedIn: 'root' });
|
|
57
|
+
}
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: BlocksRepositoryService, decorators: [{
|
|
59
|
+
type: Injectable,
|
|
60
|
+
args: [{
|
|
61
|
+
providedIn: 'root'
|
|
62
|
+
}]
|
|
63
|
+
}] });
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tzLXJlcG9zaXRvcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9ibG9ja3MtcmVwb3NpdG9yeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDOztBQUMzQzs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sdUJBQXVCO0lBQ25DOztPQUVHO0lBQ0ssWUFBWSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ25EOztPQUVHO0lBQ0ssVUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBQzlDOztPQUVHO0lBQ0ssYUFBYSxHQUFHLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFBO0lBQ3pEOztPQUVHO0lBQ0ssT0FBTyxHQUF5QixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTFFLFVBQVU7SUFDVjs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLE9BQWUsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLG1CQUFtQixPQUFPLFdBQVcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQSxDQUFDLENBQUM7SUFFN0o7Ozs7T0FJRztJQUNJLFNBQVMsQ0FBQyxPQUFlO1FBQy9CLDRDQUE0QztRQUM1QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNoRCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDckIsdUJBQXVCO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUN2QyxPQUFPLFFBQVEsQ0FBQTtRQUNoQixDQUFDLENBQUMsQ0FDRixDQUFDLFNBQVMsRUFBRSxDQUFBO1FBQ2IsR0FBRztRQUNILE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNwQixDQUFDO0lBRUQ7O1FBRUk7SUFFSSxXQUFXLEdBQUcsQ0FBQyxNQUFnQixFQUFFLE9BQWUsRUFBRSxFQUFFO1FBQzNELE1BQU0sU0FBUyxHQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBRW5ELENBQUMsQ0FBQTt1R0FwRFcsdUJBQXVCOzJHQUF2Qix1QkFBdUIsY0FGdkIsTUFBTTs7MkZBRU4sdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBpQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElCbG9jaywgSUJsb2NrSW5mbyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9hcGknO1xuLyoqXG4gKiBTZXJ2aWNpbyBxdWUgbWFuZWphIGxvcyBibG9xdWVzIGNvbW8gcmVwb3NpdG9yaW8uXG4gKiBAY2xhc3MgQmxvY2tzUmVwb3NpdG9yeVNlcnZpY2VcbiAqL1xuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmxvY2tzUmVwb3NpdG9yeVNlcnZpY2Uge1xuXHQvKipcblx0ICogQ29uc3RhbnRlcyBkZSBsYSBBUElcblx0ICovXG5cdHByaXZhdGUgYXBpQ29uc3RhbnRzID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xuXHQvKipcblx0ICogTWVuYWphIGxhcyBjb25leGlvbmVzIGNvbiBsYSBBUElcblx0ICovXG5cdHByaXZhdGUgY29ubmVjdGlvbiA9IGluamVjdChDb25uZWN0aW9uU2VydmljZSlcblx0LyoqXG5cdCAqIFN1YmplY3QgcGFyYSBtYW5lamFyIGxvcyBibG9xdWVzIHJlY2liaWRvcy5cblx0ICovXG5cdHByaXZhdGUgYmxvY2tzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUJsb2NrW10+KFtdKVxuXHQvKipcblx0ICogT2JzZXJ2YWJsZSBkZSBibG9xdWVzLlxuXHQgKi9cblx0cHJpdmF0ZSBibG9ja3MkOiBPYnNlcnZhYmxlPElCbG9ja1tdPiA9IHRoaXMuYmxvY2tzU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuXHQvL0FQSSBVUkxTXG5cdC8qKlxuXHQgKiBEZXZ1ZWx2ZSBsYSB1cmwgcGFyYSBvYnRlbmVyIGxvcyBibG9xdWVzIHNlZ3VuIGxhIHNlY2Npw7NuLlxuXHQgKiBAcGFyYW0gc2VjdGlvbiBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRibG9ja3NBUEkoc2VjdGlvbjogc3RyaW5nKSB7IHJldHVybiBgJHt0aGlzLmFwaUNvbnN0YW50cy5DTVNfVVJMfSR7dGhpcy5hcGlDb25zdGFudHMuQ0hBTk5FTH0vYmxvY2tzL3NlY3Rpb24vJHtzZWN0aW9ufT9sb2NhbGU9JHt0aGlzLmFwaUNvbnN0YW50cy5MT0NBTEV9YCB9XG5cblx0LyoqXG5cdCAqIE9idGllbmUgbG9zIGJsb3F1ZXMgc2VndW4gbGEgc2VjY2lvbiBkZWwgQmFja2VuZC5cblx0ICogQHBhcmFtIHNlY3Rpb24gXG5cdCAqIEByZXR1cm5zIFVuIG9ic2VydmFibGUgZGUgbG9zIGJsb3F1ZXMuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0QmxvY2tzKHNlY3Rpb246IHN0cmluZyk6IE9ic2VydmFibGU8SUJsb2NrW10+IHtcblx0XHQvL2lmKHRoaXMuYmxvY2tzU3ViamVjdC5nZXRWYWx1ZSgpICE9IG51bGwpe1xuXHRcdHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5ibG9ja3NBUEkoc2VjdGlvbikpLnBpcGUoXG5cdFx0XHRzaGFyZVJlcGxheSgxKSxcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuXHRcdFx0XHQvL2NvbnNvbGUubG9nKHJlc3BvbnNlKVxuXHRcdFx0XHR0aGlzLmJsb2Nrc1N1YmplY3QubmV4dChyZXNwb25zZS5pdGVtcylcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlXG5cdFx0XHR9KVxuXHRcdCkuc3Vic2NyaWJlKClcblx0XHQvL31cblx0XHRyZXR1cm4gdGhpcy5ibG9ja3MkXG5cdH1cblxuXHQvKiBwcml2YXRlIGhhc1NlY3Rpb25CbG9ja3MgPSAoc2VjdGlvbjogc3RyaW5nKSA9PiB7XG5cdFx0XG5cdH0gKi9cblxuXHRwcml2YXRlIGFwcGVuZEJsb2NrID0gKGJsb2NrczogSUJsb2NrW10sIHNlY3Rpb246IHN0cmluZykgPT4ge1xuXHRcdGNvbnN0IG5ld19ibG9jazogSUJsb2NrSW5mbyA9IHsgc2VjdGlvbiwgYmxvY2tzIH07XG5cblx0fVxuXG59XG4iXX0=
|