@esolve/ng-esolve-connect 0.40.0 → 0.42.0
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/esm2022/esolve-ng-esolve-connect.mjs +5 -0
- package/esm2022/index.mjs +67 -0
- package/esm2022/lib/account/address/esolve-address-record.interface.mjs +2 -0
- package/esm2022/lib/account/address/esolve-address-response.interface.mjs +2 -0
- package/esm2022/lib/account/address/esolve-address-result.model.mjs +11 -0
- package/esm2022/lib/account/address/esolve-address-set-data.interface.mjs +2 -0
- package/esm2022/lib/account/address/esolve-address-type.type.mjs +2 -0
- package/esm2022/lib/account/address/esolve-address.model.mjs +19 -0
- package/esm2022/lib/account/address/index.mjs +7 -0
- package/esm2022/lib/account/confirmation/esolve-account-confirmation-post-response-item.interface.mjs +2 -0
- package/esm2022/lib/account/confirmation/esolve-account-confirmation-result.model.mjs +10 -0
- package/esm2022/lib/account/confirmation/index.mjs +3 -0
- package/esm2022/lib/account/esolve-account.service.mjs +429 -0
- package/esm2022/lib/account/esolve-geocode-result.interface.mjs +2 -0
- package/esm2022/lib/account/index.mjs +8 -0
- package/esm2022/lib/account/location/classes/esolve-location-update-result.model.mjs +11 -0
- package/esm2022/lib/account/location/classes/index.mjs +2 -0
- package/esm2022/lib/account/location/index.mjs +3 -0
- package/esm2022/lib/account/location/interfaces/esolve-location-options.interface.mjs +2 -0
- package/esm2022/lib/account/location/interfaces/index.mjs +2 -0
- package/esm2022/lib/account/password/esolve-change-password-result.model.mjs +8 -0
- package/esm2022/lib/account/password/esolve-forgot-password-get-result.interface.mjs +2 -0
- package/esm2022/lib/account/password/esolve-forgot-password-response.interface.mjs +2 -0
- package/esm2022/lib/account/password/esolve-reset-password-result.model.mjs +11 -0
- package/esm2022/lib/account/password/index.mjs +5 -0
- package/esm2022/lib/account/registration/esolve-registration-data.interface.mjs +2 -0
- package/esm2022/lib/account/registration/esolve-registration-post-response-item.interface.mjs +2 -0
- package/esm2022/lib/account/registration/esolve-registration-result.model.mjs +12 -0
- package/esm2022/lib/account/registration/index.mjs +4 -0
- package/esm2022/lib/account/user-account/classes/esolve-statement-ageing.model.mjs +9 -0
- package/esm2022/lib/account/user-account/classes/esolve-statement-balances.model.mjs +11 -0
- package/esm2022/lib/account/user-account/classes/esolve-statement-transaction.model.mjs +15 -0
- package/esm2022/lib/account/user-account/classes/esolve-statement.model.mjs +12 -0
- package/esm2022/lib/account/user-account/classes/esolve-user-account-business.model.mjs +11 -0
- package/esm2022/lib/account/user-account/classes/esolve-user-account-contact.model.mjs +10 -0
- package/esm2022/lib/account/user-account/classes/esolve-user-account-result.model.mjs +9 -0
- package/esm2022/lib/account/user-account/classes/esolve-user-account.model.mjs +24 -0
- package/esm2022/lib/account/user-account/classes/esolve-user-client-account-balances.model.mjs +13 -0
- package/esm2022/lib/account/user-account/classes/esolve-user-client-account.model.mjs +48 -0
- package/esm2022/lib/account/user-account/classes/index.mjs +11 -0
- package/esm2022/lib/account/user-account/index.mjs +3 -0
- package/esm2022/lib/account/user-account/interfaces/esolve-statement-ageing-record.interface.mjs +2 -0
- package/esm2022/lib/account/user-account/interfaces/esolve-statement-balances-record.interface.mjs +2 -0
- package/esm2022/lib/account/user-account/interfaces/esolve-statement-record.interface.mjs +2 -0
- package/esm2022/lib/account/user-account/interfaces/esolve-statement-transaction-record.interface.mjs +2 -0
- package/esm2022/lib/account/user-account/interfaces/esolve-user-account-data.interface.mjs +2 -0
- package/esm2022/lib/account/user-account/interfaces/esolve-user-account-record.interface.mjs +2 -0
- package/esm2022/lib/account/user-account/interfaces/esolve-user-client-account-balances-record.interface.mjs +2 -0
- package/esm2022/lib/account/user-account/interfaces/esolve-user-client-account-record.interface.mjs +2 -0
- package/esm2022/lib/account/user-account/interfaces/index.mjs +9 -0
- package/esm2022/lib/auth/esolve-auth-interceptor.service.mjs +45 -0
- package/esm2022/lib/auth/esolve-auth.service.mjs +236 -0
- package/esm2022/lib/auth/index.mjs +6 -0
- package/esm2022/lib/auth/interfaces/esolve-auth-check-data.interface.mjs +2 -0
- package/esm2022/lib/auth/interfaces/esolve-auth-data.interface.mjs +2 -0
- package/esm2022/lib/auth/interfaces/esolve-auth-get-data.interface.mjs +2 -0
- package/esm2022/lib/auth/interfaces/esolve-auth-response.interface.mjs +2 -0
- package/esm2022/lib/auth/interfaces/esolve-login-post-response-item.interface.mjs +2 -0
- package/esm2022/lib/auth/interfaces/index.mjs +6 -0
- package/esm2022/lib/auth/providers/esolve-eurus-auto-login.provider.mjs +12 -0
- package/esm2022/lib/auth/providers/index.mjs +2 -0
- package/esm2022/lib/auth/types/esolve-auth-check-response.type.mjs +2 -0
- package/esm2022/lib/auth/types/esolve-auth-get-response.type.mjs +2 -0
- package/esm2022/lib/auth/types/esolve-auth-response-data.type.mjs +2 -0
- package/esm2022/lib/auth/types/esolve-auth-result.type.mjs +2 -0
- package/esm2022/lib/auth/types/index.mjs +5 -0
- package/esm2022/lib/banners/esolve-banner-image-hotspot-coords.interface.mjs +2 -0
- package/esm2022/lib/banners/esolve-banner-image-hotspot-record.interface.mjs +2 -0
- package/esm2022/lib/banners/esolve-banner-image-hotspot.model.mjs +9 -0
- package/esm2022/lib/banners/esolve-banner-image-record.interface.mjs +2 -0
- package/esm2022/lib/banners/esolve-banner-image-set.interface.mjs +2 -0
- package/esm2022/lib/banners/esolve-banner-image-type.type.mjs +2 -0
- package/esm2022/lib/banners/esolve-banner-image.model.mjs +14 -0
- package/esm2022/lib/banners/esolve-banner-link.interface.mjs +2 -0
- package/esm2022/lib/banners/esolve-banner-record.interface.mjs +2 -0
- package/esm2022/lib/banners/esolve-banner-type.type.mjs +2 -0
- package/esm2022/lib/banners/esolve-banner.model.mjs +25 -0
- package/esm2022/lib/banners/esolve-banner.service.mjs +102 -0
- package/esm2022/lib/banners/index.mjs +14 -0
- package/esm2022/lib/cart/classes/esolve-cart-item.model.mjs +27 -0
- package/esm2022/lib/cart/classes/esolve-cart-stock-item.model.mjs +51 -0
- package/esm2022/lib/cart/classes/esolve-cart-totals.model.mjs +39 -0
- package/esm2022/lib/cart/classes/esolve-checkout-result.model.mjs +10 -0
- package/esm2022/lib/cart/classes/esolve-empty-cart-result.model.mjs +4 -0
- package/esm2022/lib/cart/classes/esolve-transaction-analytics-data.model.mjs +14 -0
- package/esm2022/lib/cart/classes/index.mjs +7 -0
- package/esm2022/lib/cart/esolve-cart.service.mjs +234 -0
- package/esm2022/lib/cart/index.mjs +5 -0
- package/esm2022/lib/cart/interfaces/esolve-cart-additional-where.interface.mjs +2 -0
- package/esm2022/lib/cart/interfaces/esolve-cart-item-record.interface.mjs +2 -0
- package/esm2022/lib/cart/interfaces/esolve-cart-item-response.interface.mjs +2 -0
- package/esm2022/lib/cart/interfaces/esolve-cart-set-item.interface.mjs +2 -0
- package/esm2022/lib/cart/interfaces/esolve-cart-totals-record.interface.mjs +2 -0
- package/esm2022/lib/cart/interfaces/esolve-checkout-response.interface.mjs +2 -0
- package/esm2022/lib/cart/interfaces/esolve-time-slot-checkout.interface.mjs +2 -0
- package/esm2022/lib/cart/interfaces/esolve-tracking-code.interface.mjs +2 -0
- package/esm2022/lib/cart/interfaces/esolve-transaction-analytics-data-record.interface.mjs +2 -0
- package/esm2022/lib/cart/interfaces/index.mjs +10 -0
- package/esm2022/lib/cart/types/esolve-cart-empty-response.type.mjs +2 -0
- package/esm2022/lib/cart/types/esolve-cart-set-action.type.mjs +2 -0
- package/esm2022/lib/cart/types/esolve-cart.type.mjs +2 -0
- package/esm2022/lib/cart/types/index.mjs +4 -0
- package/esm2022/lib/category-tree/esolve-category-identifier.interface.mjs +2 -0
- package/esm2022/lib/category-tree/esolve-category-record.interface.mjs +2 -0
- package/esm2022/lib/category-tree/esolve-category-tree-item-options.interface.mjs +2 -0
- package/esm2022/lib/category-tree/esolve-category-tree-item-record.interface.mjs +2 -0
- package/esm2022/lib/category-tree/esolve-category-tree-item.model.mjs +48 -0
- package/esm2022/lib/category-tree/esolve-category-tree.service.mjs +154 -0
- package/esm2022/lib/category-tree/esolve-subcategory-record.interface.mjs +2 -0
- package/esm2022/lib/category-tree/index.mjs +7 -0
- package/esm2022/lib/core/esolve-config.service.mjs +52 -0
- package/esm2022/lib/core/esolve-connect-config.constant.mjs +3 -0
- package/esm2022/lib/core/esolve-connect.config.mjs +2 -0
- package/esm2022/lib/core/index.mjs +4 -0
- package/esm2022/lib/coupons/classes/esolve-coupon.model.mjs +29 -0
- package/esm2022/lib/coupons/classes/index.mjs +2 -0
- package/esm2022/lib/coupons/esolve-coupons.service.mjs +231 -0
- package/esm2022/lib/coupons/index.mjs +9 -0
- package/esm2022/lib/coupons/interfaces/esolve-coupon-record.interface.mjs +2 -0
- package/esm2022/lib/coupons/interfaces/esolve-coupon-validation-error.interface.mjs +2 -0
- package/esm2022/lib/coupons/interfaces/esolve-coupon-validation-result.interface.mjs +2 -0
- package/esm2022/lib/coupons/interfaces/esolve-coupon-validation.interface.mjs +2 -0
- package/esm2022/lib/coupons/interfaces/index.mjs +5 -0
- package/esm2022/lib/coupons/types/esolve-coupons-cache.type.mjs +2 -0
- package/esm2022/lib/coupons/types/index.mjs +2 -0
- package/esm2022/lib/enquiry/esolve-enquiry-response.type.mjs +2 -0
- package/esm2022/lib/enquiry/esolve-enquiry-result.model.mjs +9 -0
- package/esm2022/lib/enquiry/esolve-enquiry.service.mjs +43 -0
- package/esm2022/lib/enquiry/index.mjs +4 -0
- package/esm2022/lib/images/directives/cdn-src.directive.mjs +73 -0
- package/esm2022/lib/images/directives/index.mjs +2 -0
- package/esm2022/lib/images/esolve-image-loader.provider.mjs +13 -0
- package/esm2022/lib/images/functions/index.mjs +4 -0
- package/esm2022/lib/images/functions/is-esolve-cdn-path.function.mjs +5 -0
- package/esm2022/lib/images/functions/is-legacy-esolve-cdn-path.function.mjs +5 -0
- package/esm2022/lib/images/functions/process-image-src.function.mjs +33 -0
- package/esm2022/lib/images/index.mjs +4 -0
- package/esm2022/lib/locations/classes/esolve-location-address.model.mjs +13 -0
- package/esm2022/lib/locations/classes/esolve-location-contact-info.model.mjs +9 -0
- package/esm2022/lib/locations/classes/esolve-location-geo.model.mjs +8 -0
- package/esm2022/lib/locations/classes/esolve-location-pobox-address.model.mjs +8 -0
- package/esm2022/lib/locations/classes/esolve-location-trading-day.model.mjs +7 -0
- package/esm2022/lib/locations/classes/esolve-location-trading-times.model.mjs +14 -0
- package/esm2022/lib/locations/classes/esolve-location.model.mjs +49 -0
- package/esm2022/lib/locations/classes/index.mjs +9 -0
- package/esm2022/lib/locations/esolve-locations.service.mjs +83 -0
- package/esm2022/lib/locations/index.mjs +4 -0
- package/esm2022/lib/locations/interfaces/esolve-location-record.interface.mjs +2 -0
- package/esm2022/lib/locations/interfaces/index.mjs +2 -0
- package/esm2022/lib/manufacturers/esolve-manufacturer-image-size.type.mjs +2 -0
- package/esm2022/lib/manufacturers/esolve-manufacturer-options.interface.mjs +2 -0
- package/esm2022/lib/manufacturers/esolve-manufacturer-record.interface.mjs +2 -0
- package/esm2022/lib/manufacturers/esolve-manufacturer.model.mjs +61 -0
- package/esm2022/lib/manufacturers/esolve-manufacturers.service.mjs +72 -0
- package/esm2022/lib/manufacturers/index.mjs +10 -0
- package/esm2022/lib/menu/classes/esolve-menu-item.model.mjs +31 -0
- package/esm2022/lib/menu/classes/index.mjs +2 -0
- package/esm2022/lib/menu/esolve-menu.service.mjs +46 -0
- package/esm2022/lib/menu/index.mjs +5 -0
- package/esm2022/lib/menu/interfaces/esolve-menu-tree-record.interface.mjs +2 -0
- package/esm2022/lib/menu/interfaces/index.mjs +2 -0
- package/esm2022/lib/menu/types/esolve-menu.type.mjs +2 -0
- package/esm2022/lib/menu/types/index.mjs +2 -0
- package/esm2022/lib/news/esolve-news-article-author-record.interface.mjs +2 -0
- package/esm2022/lib/news/esolve-news-article-author.model.mjs +9 -0
- package/esm2022/lib/news/esolve-news-article-list.model.mjs +8 -0
- package/esm2022/lib/news/esolve-news-article-options.interface.mjs +2 -0
- package/esm2022/lib/news/esolve-news-article-record.interface.mjs +2 -0
- package/esm2022/lib/news/esolve-news-article.model.mjs +73 -0
- package/esm2022/lib/news/esolve-news-group-record.interface.mjs +2 -0
- package/esm2022/lib/news/esolve-news-group.model.mjs +25 -0
- package/esm2022/lib/news/esolve-news.service.mjs +118 -0
- package/esm2022/lib/news/index.mjs +10 -0
- package/esm2022/lib/ng-esolve-connect.module.mjs +43 -0
- package/esm2022/lib/payment/classes/esolve-banking-details.model.mjs +11 -0
- package/esm2022/lib/payment/classes/esolve-payment-method.model.mjs +37 -0
- package/esm2022/lib/payment/classes/esolve-payment-result.model.mjs +37 -0
- package/esm2022/lib/payment/classes/esolve-vault-item-result.model.mjs +20 -0
- package/esm2022/lib/payment/classes/esolve-vault-item.model.mjs +20 -0
- package/esm2022/lib/payment/classes/index.mjs +6 -0
- package/esm2022/lib/payment/esolve-payment.service.mjs +235 -0
- package/esm2022/lib/payment/index.mjs +5 -0
- package/esm2022/lib/payment/interfaces/esolve-card-data.interface.mjs +2 -0
- package/esm2022/lib/payment/interfaces/esolve-payment-form-input.interface.mjs +2 -0
- package/esm2022/lib/payment/interfaces/esolve-payment-method-options.interface.mjs +2 -0
- package/esm2022/lib/payment/interfaces/esolve-payment-method-record.interface.mjs +2 -0
- package/esm2022/lib/payment/interfaces/esolve-payment-redirect-links.interface.mjs +2 -0
- package/esm2022/lib/payment/interfaces/esolve-payment-response.interface.mjs +2 -0
- package/esm2022/lib/payment/interfaces/esolve-payment-set-body.interface.mjs +2 -0
- package/esm2022/lib/payment/interfaces/esolve-payment-status.interface.mjs +2 -0
- package/esm2022/lib/payment/interfaces/esolve-vault-record.interface.mjs +2 -0
- package/esm2022/lib/payment/interfaces/esolve-vault-response.interface.mjs +2 -0
- package/esm2022/lib/payment/interfaces/index.mjs +10 -0
- package/esm2022/lib/payment/types/esolve-integration-type.type.mjs +2 -0
- package/esm2022/lib/payment/types/esolve-service-provider.type.mjs +2 -0
- package/esm2022/lib/payment/types/index.mjs +3 -0
- package/esm2022/lib/ranges/esolve-range-options.interface.mjs +2 -0
- package/esm2022/lib/ranges/esolve-range-record.interface.mjs +2 -0
- package/esm2022/lib/ranges/esolve-range.model.mjs +54 -0
- package/esm2022/lib/ranges/esolve-ranges.service.mjs +77 -0
- package/esm2022/lib/ranges/index.mjs +5 -0
- package/esm2022/lib/session/esolve-session-metadata.service.mjs +76 -0
- package/esm2022/lib/session/esolve-session.service.mjs +182 -0
- package/esm2022/lib/session/index.mjs +4 -0
- package/esm2022/lib/session/interfaces/esolve-session-data.interface.mjs +2 -0
- package/esm2022/lib/session/interfaces/esolve-session.interface.mjs +2 -0
- package/esm2022/lib/session/interfaces/index.mjs +3 -0
- package/esm2022/lib/shared/assets/esolve-asset-list.type.mjs +2 -0
- package/esm2022/lib/shared/assets/esolve-asset-options.interface.mjs +2 -0
- package/esm2022/lib/shared/assets/esolve-asset-record.interface.mjs +2 -0
- package/esm2022/lib/shared/assets/esolve-asset-type.type.mjs +2 -0
- package/esm2022/lib/shared/assets/esolve-asset.model.mjs +77 -0
- package/esm2022/lib/shared/assets/esolve-assets.service.mjs +103 -0
- package/esm2022/lib/shared/assets/esolve-linked-asset-record.interface.mjs +2 -0
- package/esm2022/lib/shared/assets/esolve-linked-asset.model.mjs +10 -0
- package/esm2022/lib/shared/assets/index.mjs +13 -0
- package/esm2022/lib/shared/cookie/esolve-cookie.service.mjs +31 -0
- package/esm2022/lib/shared/custom-fields/esolve-custom-fields.interface.mjs +2 -0
- package/esm2022/lib/shared/custom-fields/index.mjs +2 -0
- package/esm2022/lib/shared/errors/esolve-error-handler.service.mjs +95 -0
- package/esm2022/lib/shared/errors/esolve-http-error.model.mjs +15 -0
- package/esm2022/lib/shared/errors/index.mjs +3 -0
- package/esm2022/lib/shared/esolve-hex-hash.function.mjs +26 -0
- package/esm2022/lib/shared/esolve-list.model.mjs +9 -0
- package/esm2022/lib/shared/esolve-result.model.mjs +8 -0
- package/esm2022/lib/shared/esolve-url-target.type.mjs +2 -0
- package/esm2022/lib/shared/filters/classes/esolve-multiple-select-filter.model.mjs +30 -0
- package/esm2022/lib/shared/filters/classes/esolve-range-filter.model.mjs +45 -0
- package/esm2022/lib/shared/filters/classes/esolve-single-select-filter.model.mjs +33 -0
- package/esm2022/lib/shared/filters/classes/esolve-toggle-filter.model.mjs +21 -0
- package/esm2022/lib/shared/filters/classes/index.mjs +6 -0
- package/esm2022/lib/shared/filters/esolve-filter-factory.mjs +59 -0
- package/esm2022/lib/shared/filters/index.mjs +5 -0
- package/esm2022/lib/shared/filters/interfaces/esolve-filter-definitions.interface.mjs +2 -0
- package/esm2022/lib/shared/filters/interfaces/esolve-filter-record.interface.mjs +2 -0
- package/esm2022/lib/shared/filters/interfaces/esolve-filter.interface.mjs +2 -0
- package/esm2022/lib/shared/filters/interfaces/esolve-range-filter-record.interface.mjs +2 -0
- package/esm2022/lib/shared/filters/interfaces/esolve-select-filter-record.interface.mjs +2 -0
- package/esm2022/lib/shared/filters/interfaces/esolve-select-filter.interface.mjs +2 -0
- package/esm2022/lib/shared/filters/interfaces/index.mjs +8 -0
- package/esm2022/lib/shared/filters/types/esolve-filter-list.type.mjs +2 -0
- package/esm2022/lib/shared/filters/types/esolve-filter-record-list.type.mjs +2 -0
- package/esm2022/lib/shared/filters/types/esolve-filter-toggle.type.mjs +2 -0
- package/esm2022/lib/shared/filters/types/esolve-filter-type.type.mjs +2 -0
- package/esm2022/lib/shared/filters/types/esolve-range-filter-type.type.mjs +2 -0
- package/esm2022/lib/shared/filters/types/esolve-select-filter-type.type.mjs +2 -0
- package/esm2022/lib/shared/filters/types/index.mjs +7 -0
- package/esm2022/lib/shared/geocoder/esolve-geocode-address-record.interface.mjs +2 -0
- package/esm2022/lib/shared/geocoder/esolve-geocode-address-result.model.mjs +12 -0
- package/esm2022/lib/shared/geocoder/esolve-geocode-coords-result.model.mjs +7 -0
- package/esm2022/lib/shared/geocoder/esolve-geocode-result-record.interface.mjs +2 -0
- package/esm2022/lib/shared/geocoder/esolve-geocode-result.model.mjs +11 -0
- package/esm2022/lib/shared/geocoder/esolve-geocoder.service.mjs +73 -0
- package/esm2022/lib/shared/geocoder/index.mjs +7 -0
- package/esm2022/lib/shared/response/esolve-delete-response.interface.mjs +2 -0
- package/esm2022/lib/shared/response/esolve-delete-result.interface.mjs +2 -0
- package/esm2022/lib/shared/response/esolve-get-response.interface.mjs +2 -0
- package/esm2022/lib/shared/response/esolve-post-response-item.interface.mjs +2 -0
- package/esm2022/lib/shared/response/esolve-post-response-status.interface.mjs +2 -0
- package/esm2022/lib/shared/response/esolve-response-handler.service.mjs +34 -0
- package/esm2022/lib/shared/response/esolve-response-log-item.interface.mjs +2 -0
- package/esm2022/lib/shared/response/esolve-response-result.model.mjs +9 -0
- package/esm2022/lib/shared/response/esolve-response.interface.mjs +2 -0
- package/esm2022/lib/shared/response/esolve-set-response.interface.mjs +2 -0
- package/esm2022/lib/shared/response/index.mjs +11 -0
- package/esm2022/lib/shared/seo/esolve-seo-details.interface.mjs +2 -0
- package/esm2022/lib/shared/seo/esolve-seo-info.model.mjs +11 -0
- package/esm2022/lib/shared/seo/esolve-seo.service.mjs +107 -0
- package/esm2022/lib/shared/seo/index.mjs +4 -0
- package/esm2022/lib/shared/sort/esolve-sort-order.type.mjs +2 -0
- package/esm2022/lib/shared/sort/esolve-sort.interface.mjs +2 -0
- package/esm2022/lib/shared/sort/index.mjs +5 -0
- package/esm2022/lib/shipping/classes/esolve-shipping-cost.model.mjs +12 -0
- package/esm2022/lib/shipping/classes/esolve-shipping-method.model.mjs +33 -0
- package/esm2022/lib/shipping/classes/esolve-shipping-totals.model.mjs +8 -0
- package/esm2022/lib/shipping/classes/esolve-time-slot-config.model.mjs +17 -0
- package/esm2022/lib/shipping/classes/esolve-time-slot-date.model.mjs +14 -0
- package/esm2022/lib/shipping/classes/esolve-time-slot-days.model.mjs +21 -0
- package/esm2022/lib/shipping/classes/esolve-time-slot-times.model.mjs +11 -0
- package/esm2022/lib/shipping/classes/esolve-time-slot.model.mjs +19 -0
- package/esm2022/lib/shipping/classes/index.mjs +9 -0
- package/esm2022/lib/shipping/esolve-shipping.service.mjs +151 -0
- package/esm2022/lib/shipping/index.mjs +5 -0
- package/esm2022/lib/shipping/interfaces/esolve-shipping-cost-record.interface.mjs +2 -0
- package/esm2022/lib/shipping/interfaces/esolve-shipping-method-options.interface.mjs +2 -0
- package/esm2022/lib/shipping/interfaces/esolve-shipping-method-record.interface.mjs +2 -0
- package/esm2022/lib/shipping/interfaces/esolve-time-slot-config-record.interface.mjs +2 -0
- package/esm2022/lib/shipping/interfaces/esolve-time-slot-date-record.interface.mjs +2 -0
- package/esm2022/lib/shipping/interfaces/esolve-time-slot-days-record.interface.mjs +2 -0
- package/esm2022/lib/shipping/interfaces/esolve-time-slot-record.interface.mjs +2 -0
- package/esm2022/lib/shipping/interfaces/esolve-time-slot-times-record.interface.mjs +2 -0
- package/esm2022/lib/shipping/interfaces/index.mjs +9 -0
- package/esm2022/lib/shipping/types/esolve-insurance-calculation-method.type.mjs +2 -0
- package/esm2022/lib/shipping/types/esolve-shipping-calculation-method.type.mjs +2 -0
- package/esm2022/lib/shipping/types/esolve-shipping-location.type.mjs +2 -0
- package/esm2022/lib/shipping/types/index.mjs +4 -0
- package/esm2022/lib/specials/esolve-special-dates.model.mjs +7 -0
- package/esm2022/lib/specials/esolve-special-image-collection-record.interface.mjs +2 -0
- package/esm2022/lib/specials/esolve-special-image-collection.model.mjs +25 -0
- package/esm2022/lib/specials/esolve-special-image-record.interface.mjs +2 -0
- package/esm2022/lib/specials/esolve-special-image.model.mjs +9 -0
- package/esm2022/lib/specials/esolve-special-options.interface.mjs +2 -0
- package/esm2022/lib/specials/esolve-special-record.interface.mjs +2 -0
- package/esm2022/lib/specials/esolve-special.model.mjs +40 -0
- package/esm2022/lib/specials/esolve-specials.service.mjs +83 -0
- package/esm2022/lib/specials/index.mjs +10 -0
- package/esm2022/lib/stock/classes/esolve-additional-stock-image.model.mjs +21 -0
- package/esm2022/lib/stock/classes/esolve-colour.model.mjs +8 -0
- package/esm2022/lib/stock/classes/esolve-dependant-item.model.mjs +11 -0
- package/esm2022/lib/stock/classes/esolve-linked-stock-item.model.mjs +9 -0
- package/esm2022/lib/stock/classes/esolve-media-stock-item.model.mjs +7 -0
- package/esm2022/lib/stock/classes/esolve-recipe-stock-item.model.mjs +9 -0
- package/esm2022/lib/stock/classes/esolve-stock-badge.model.mjs +11 -0
- package/esm2022/lib/stock/classes/esolve-stock-group-item.model.mjs +7 -0
- package/esm2022/lib/stock/classes/esolve-stock-group.model.mjs +13 -0
- package/esm2022/lib/stock/classes/esolve-stock-image-collection.model.mjs +25 -0
- package/esm2022/lib/stock/classes/esolve-stock-image.model.mjs +50 -0
- package/esm2022/lib/stock/classes/esolve-stock-item-base.model.mjs +312 -0
- package/esm2022/lib/stock/classes/esolve-stock-item-list.model.mjs +11 -0
- package/esm2022/lib/stock/classes/esolve-stock-item.model.mjs +24 -0
- package/esm2022/lib/stock/classes/esolve-stock-lead-times.model.mjs +9 -0
- package/esm2022/lib/stock/classes/esolve-stock-price.model.mjs +52 -0
- package/esm2022/lib/stock/classes/esolve-stock-transaction-history.model.mjs +7 -0
- package/esm2022/lib/stock/classes/index.mjs +18 -0
- package/esm2022/lib/stock/esolve-stock.service.mjs +419 -0
- package/esm2022/lib/stock/index.mjs +6 -0
- package/esm2022/lib/stock/interfaces/esolve-additional-stock-image-record.interface.mjs +2 -0
- package/esm2022/lib/stock/interfaces/esolve-colour-record.interface.mjs +2 -0
- package/esm2022/lib/stock/interfaces/esolve-dependant-item-record.interface.mjs +2 -0
- package/esm2022/lib/stock/interfaces/esolve-linked-stock-record.interface.mjs +2 -0
- package/esm2022/lib/stock/interfaces/esolve-media-stock-item-options.interface.mjs +2 -0
- package/esm2022/lib/stock/interfaces/esolve-recipe-item-record.interface.mjs +2 -0
- package/esm2022/lib/stock/interfaces/esolve-recipe-stock-options.interface.mjs +2 -0
- package/esm2022/lib/stock/interfaces/esolve-stock-badge-record.interface.mjs +2 -0
- package/esm2022/lib/stock/interfaces/esolve-stock-base-record.interface.mjs +2 -0
- package/esm2022/lib/stock/interfaces/esolve-stock-filter-options.interface.mjs +2 -0
- package/esm2022/lib/stock/interfaces/esolve-stock-image-collection-record.interface.mjs +2 -0
- package/esm2022/lib/stock/interfaces/esolve-stock-item-options.interface.mjs +2 -0
- package/esm2022/lib/stock/interfaces/esolve-stock-lead-times-record.interface.mjs +2 -0
- package/esm2022/lib/stock/interfaces/esolve-stock-linked-category-record.interface.mjs +2 -0
- package/esm2022/lib/stock/interfaces/esolve-stock-record.interface.mjs +2 -0
- package/esm2022/lib/stock/interfaces/index.mjs +17 -0
- package/esm2022/lib/stock/types/esolve-media-stock-item-list.type.mjs +2 -0
- package/esm2022/lib/stock/types/esolve-media-stock-item-record.type.mjs +2 -0
- package/esm2022/lib/stock/types/esolve-media-stock-sort-field.type.mjs +2 -0
- package/esm2022/lib/stock/types/esolve-stock-group-item-record.type.mjs +2 -0
- package/esm2022/lib/stock/types/esolve-stock-image-size.type.mjs +2 -0
- package/esm2022/lib/stock/types/esolve-stock-sort-field.type.mjs +2 -0
- package/esm2022/lib/stock/types/esolve-stock-unit-of-measure.type.mjs +2 -0
- package/esm2022/lib/stock/types/index.mjs +9 -0
- package/esm2022/lib/suppliers/classes/esolve-supplier.model.mjs +27 -0
- package/esm2022/lib/suppliers/classes/index.mjs +2 -0
- package/esm2022/lib/suppliers/esolve-suppliers.service.mjs +59 -0
- package/esm2022/lib/suppliers/index.mjs +5 -0
- package/esm2022/lib/suppliers/interfaces/esolve-supplier-options.interface.mjs +2 -0
- package/esm2022/lib/suppliers/interfaces/esolve-supplier-record.interface.mjs +2 -0
- package/esm2022/lib/suppliers/interfaces/index.mjs +3 -0
- package/esm2022/lib/tags/esolve-tag-options.interface.mjs +2 -0
- package/esm2022/lib/tags/esolve-tag-phrase-match-mode.type.mjs +2 -0
- package/esm2022/lib/tags/esolve-tag-record.interface.mjs +2 -0
- package/esm2022/lib/tags/esolve-tag.model.mjs +35 -0
- package/esm2022/lib/tags/esolve-tags.service.mjs +79 -0
- package/esm2022/lib/tags/index.mjs +10 -0
- package/esm2022/lib/topics/esolve-topic-record.interface.mjs +2 -0
- package/esm2022/lib/topics/esolve-topic.model.mjs +15 -0
- package/esm2022/lib/topics/esolve-topic.service.mjs +56 -0
- package/esm2022/lib/topics/index.mjs +4 -0
- package/esm2022/lib/transactions/classes/esolve-transaction-address.model.mjs +16 -0
- package/esm2022/lib/transactions/classes/esolve-transaction-client.model.mjs +13 -0
- package/esm2022/lib/transactions/classes/esolve-transaction-item-price.model.mjs +25 -0
- package/esm2022/lib/transactions/classes/esolve-transaction-item.model.mjs +72 -0
- package/esm2022/lib/transactions/classes/esolve-transaction-list.model.mjs +4 -0
- package/esm2022/lib/transactions/classes/esolve-transaction-location.model.mjs +4 -0
- package/esm2022/lib/transactions/classes/esolve-transaction-payment-method.model.mjs +10 -0
- package/esm2022/lib/transactions/classes/esolve-transaction-shipping-method.model.mjs +12 -0
- package/esm2022/lib/transactions/classes/esolve-transaction-user.model.mjs +11 -0
- package/esm2022/lib/transactions/classes/esolve-transaction.model.mjs +55 -0
- package/esm2022/lib/transactions/classes/index.mjs +11 -0
- package/esm2022/lib/transactions/esolve-transactions.service.mjs +133 -0
- package/esm2022/lib/transactions/index.mjs +5 -0
- package/esm2022/lib/transactions/interfaces/esolve-transaction-client-record.interface.mjs +2 -0
- package/esm2022/lib/transactions/interfaces/esolve-transaction-item-record.interface.mjs +2 -0
- package/esm2022/lib/transactions/interfaces/esolve-transaction-options.interface.mjs +2 -0
- package/esm2022/lib/transactions/interfaces/esolve-transaction-payment-method-record.interface.mjs +2 -0
- package/esm2022/lib/transactions/interfaces/esolve-transaction-record.interface.mjs +2 -0
- package/esm2022/lib/transactions/interfaces/esolve-transaction-shipping-method-record.interface.mjs +2 -0
- package/esm2022/lib/transactions/interfaces/esolve-transaction-user-record.interface.mjs +2 -0
- package/esm2022/lib/transactions/interfaces/index.mjs +8 -0
- package/esm2022/lib/transactions/types/esolve-transaction-location-record.type.mjs +2 -0
- package/esm2022/lib/transactions/types/esolve-transaction-type.type.mjs +2 -0
- package/esm2022/lib/transactions/types/index.mjs +3 -0
- package/esm2022/lib/wishlist/classes/esolve-empty-wishlist-result.model.mjs +4 -0
- package/esm2022/lib/wishlist/classes/esolve-wishlist-item.model.mjs +14 -0
- package/esm2022/lib/wishlist/classes/index.mjs +3 -0
- package/esm2022/lib/wishlist/esolve-wishlist.service.mjs +120 -0
- package/esm2022/lib/wishlist/index.mjs +6 -0
- package/esm2022/lib/wishlist/interfaces/esolve-wishlist-item-record.interface.mjs +2 -0
- package/esm2022/lib/wishlist/interfaces/esolve-wishlist-item-response.interface.mjs +2 -0
- package/esm2022/lib/wishlist/interfaces/esolve-wishlist-set-item.interface.mjs +2 -0
- package/esm2022/lib/wishlist/interfaces/index.mjs +4 -0
- package/esm2022/lib/wishlist/types/esolve-wishlist-set-action.type.mjs +2 -0
- package/esm2022/lib/wishlist/types/esolve-wishlist.type.mjs +2 -0
- package/esm2022/lib/wishlist/types/index.mjs +3 -0
- package/esm2022/media/esolve-ng-esolve-connect-media.mjs +5 -0
- package/esm2022/media/index.mjs +9 -0
- package/esm2022/media/lib/classes/esolve-heading.model.mjs +7 -0
- package/esm2022/media/lib/classes/esolve-media-article.model.mjs +72 -0
- package/esm2022/media/lib/classes/esolve-media-group.model.mjs +15 -0
- package/esm2022/media/lib/classes/esolve-media-layout-section.model.mjs +18 -0
- package/esm2022/media/lib/classes/esolve-media-link.model.mjs +8 -0
- package/esm2022/media/lib/classes/index.mjs +6 -0
- package/esm2022/media/lib/components/index.mjs +3 -0
- package/esm2022/media/lib/components/media-layout/esolve-media-layout.component.mjs +35 -0
- package/esm2022/media/lib/components/media-section/esolve-media-section.component.mjs +47 -0
- package/esm2022/media/lib/esolve-connect-media-config.token.mjs +3 -0
- package/esm2022/media/lib/esolve-connect-media.config.mjs +2 -0
- package/esm2022/media/lib/interfaces/esolve-heading-record.interface.mjs +2 -0
- package/esm2022/media/lib/interfaces/esolve-layout-config.interface.mjs +2 -0
- package/esm2022/media/lib/interfaces/esolve-layout-section-config.interface.mjs +2 -0
- package/esm2022/media/lib/interfaces/esolve-media-group-record.interface.mjs +2 -0
- package/esm2022/media/lib/interfaces/esolve-media-layout-section-record.interface.mjs +2 -0
- package/esm2022/media/lib/interfaces/esolve-media-link-record.interface.mjs +2 -0
- package/esm2022/media/lib/interfaces/esolve-media-record.interface.mjs +2 -0
- package/esm2022/media/lib/interfaces/index.mjs +8 -0
- package/esm2022/media/lib/ng-esolve-connect-media.module.mjs +45 -0
- package/esm2022/media/lib/services/esolve-media-layout.service.mjs +146 -0
- package/esm2022/media/lib/services/esolve-media.service.mjs +115 -0
- package/esm2022/media/lib/services/index.mjs +3 -0
- package/esm2022/media/lib/types/esolve-media-layout-section-type.type.mjs +2 -0
- package/esm2022/media/lib/types/index.mjs +2 -0
- package/esm2022/notifications/esolve-ng-esolve-connect-notifications.mjs +5 -0
- package/esm2022/notifications/index.mjs +6 -0
- package/esm2022/notifications/lib/classes/esolve-notification-button-action.model.mjs +15 -0
- package/esm2022/notifications/lib/classes/esolve-notification-dates.model.mjs +7 -0
- package/esm2022/notifications/lib/classes/esolve-system-notification-type.model.mjs +16 -0
- package/esm2022/notifications/lib/classes/esolve-system-notification.model.mjs +28 -0
- package/esm2022/notifications/lib/classes/index.mjs +5 -0
- package/esm2022/notifications/lib/interfaces/esolve-notification-button-action-record.interface.mjs +2 -0
- package/esm2022/notifications/lib/interfaces/esolve-notification-date-record.interface.mjs +2 -0
- package/esm2022/notifications/lib/interfaces/esolve-notification-dates-record.interface.mjs +2 -0
- package/esm2022/notifications/lib/interfaces/esolve-system-notification-options.interface.mjs +2 -0
- package/esm2022/notifications/lib/interfaces/esolve-system-notification-record.interface.mjs +2 -0
- package/esm2022/notifications/lib/interfaces/esolve-system-notification-type-record.interface.mjs +2 -0
- package/esm2022/notifications/lib/interfaces/index.mjs +7 -0
- package/esm2022/notifications/lib/ng-esolve-connect-notifications.module.mjs +16 -0
- package/esm2022/notifications/lib/services/esolve-notifications.service.mjs +50 -0
- package/esm2022/notifications/lib/services/index.mjs +2 -0
- package/esm2022/notifications/lib/types/esolve-notification-position.type.mjs +2 -0
- package/esm2022/notifications/lib/types/esolve-notification-size.type.mjs +2 -0
- package/esm2022/notifications/lib/types/esolve-notification-type.type.mjs +2 -0
- package/esm2022/notifications/lib/types/index.mjs +4 -0
- package/esm2022/survey/esolve-ng-esolve-connect-survey.mjs +5 -0
- package/esm2022/survey/index.mjs +6 -0
- package/esm2022/survey/lib/classes/esolve-survey-answer-result.model.mjs +11 -0
- package/esm2022/survey/lib/classes/esolve-survey-check-question.model.mjs +11 -0
- package/esm2022/survey/lib/classes/esolve-survey-input-question.model.mjs +11 -0
- package/esm2022/survey/lib/classes/esolve-survey-options-question.model.mjs +24 -0
- package/esm2022/survey/lib/classes/esolve-survey-question.model.mjs +10 -0
- package/esm2022/survey/lib/classes/esolve-survey-radio-question.model.mjs +11 -0
- package/esm2022/survey/lib/classes/esolve-survey-rating-question.model.mjs +17 -0
- package/esm2022/survey/lib/classes/esolve-survey-select-question.model.mjs +27 -0
- package/esm2022/survey/lib/classes/esolve-survey-text-question.model.mjs +10 -0
- package/esm2022/survey/lib/classes/esolve-survey-textarea-question.model.mjs +11 -0
- package/esm2022/survey/lib/classes/esolve-survey-values-question.model.mjs +11 -0
- package/esm2022/survey/lib/classes/esolve-survey.model.mjs +60 -0
- package/esm2022/survey/lib/classes/index.mjs +13 -0
- package/esm2022/survey/lib/interfaces/esolve-survey-answer-response.interface.mjs +2 -0
- package/esm2022/survey/lib/interfaces/esolve-survey-option.interface.mjs +2 -0
- package/esm2022/survey/lib/interfaces/esolve-survey-options-question-record.interface.mjs +2 -0
- package/esm2022/survey/lib/interfaces/esolve-survey-options.interface.mjs +2 -0
- package/esm2022/survey/lib/interfaces/esolve-survey-question-record.type.mjs +2 -0
- package/esm2022/survey/lib/interfaces/esolve-survey-record.interface.mjs +2 -0
- package/esm2022/survey/lib/interfaces/esolve-survey-text-question-record.interface.mjs +2 -0
- package/esm2022/survey/lib/interfaces/esolve-survey-values-question-record.interface.mjs +2 -0
- package/esm2022/survey/lib/interfaces/index.mjs +9 -0
- package/esm2022/survey/lib/ng-esolve-connect-survey.module.mjs +16 -0
- package/esm2022/survey/lib/services/esolve-survey.service.mjs +106 -0
- package/esm2022/survey/lib/services/index.mjs +2 -0
- package/esm2022/survey/lib/types/esolve-survey-options-question-type.type.mjs +2 -0
- package/esm2022/survey/lib/types/esolve-survey-question-record-list.type.mjs +2 -0
- package/esm2022/survey/lib/types/esolve-survey-question-type.type.mjs +2 -0
- package/esm2022/survey/lib/types/esolve-survey-text-question-type.type.mjs +2 -0
- package/esm2022/survey/lib/types/esolve-survey-type.type.mjs +2 -0
- package/esm2022/survey/lib/types/esolve-survey-values-question-type.type.mjs +2 -0
- package/esm2022/survey/lib/types/index.mjs +7 -0
- package/fesm2022/esolve-ng-esolve-connect-media.mjs +485 -0
- package/fesm2022/esolve-ng-esolve-connect-media.mjs.map +1 -0
- package/fesm2022/esolve-ng-esolve-connect-notifications.mjs +131 -0
- package/fesm2022/esolve-ng-esolve-connect-notifications.mjs.map +1 -0
- package/fesm2022/esolve-ng-esolve-connect-survey.mjs +321 -0
- package/fesm2022/esolve-ng-esolve-connect-survey.mjs.map +1 -0
- package/fesm2022/esolve-ng-esolve-connect.mjs +6301 -0
- package/fesm2022/esolve-ng-esolve-connect.mjs.map +1 -0
- package/index.d.ts +38 -38
- package/lib/account/address/esolve-address-record.interface.d.ts +18 -18
- package/lib/account/address/esolve-address-response.interface.d.ts +8 -8
- package/lib/account/address/esolve-address-result.model.d.ts +10 -10
- package/lib/account/address/esolve-address-set-data.interface.d.ts +17 -17
- package/lib/account/address/esolve-address-type.type.d.ts +1 -1
- package/lib/account/address/esolve-address.model.d.ts +18 -18
- package/lib/account/address/index.d.ts +6 -6
- package/lib/account/confirmation/esolve-account-confirmation-post-response-item.interface.d.ts +7 -7
- package/lib/account/confirmation/esolve-account-confirmation-result.model.d.ts +8 -8
- package/lib/account/confirmation/index.d.ts +2 -2
- package/lib/account/esolve-account.service.d.ts +64 -64
- package/lib/account/esolve-geocode-result.interface.d.ts +16 -16
- package/lib/account/index.d.ts +7 -7
- package/lib/account/location/classes/esolve-location-update-result.model.d.ts +5 -5
- package/lib/account/location/classes/index.d.ts +1 -1
- package/lib/account/location/index.d.ts +2 -2
- package/lib/account/location/interfaces/esolve-location-options.interface.d.ts +4 -4
- package/lib/account/location/interfaces/index.d.ts +1 -1
- package/lib/account/password/esolve-change-password-result.model.d.ts +5 -5
- package/lib/account/password/esolve-forgot-password-get-result.interface.d.ts +3 -3
- package/lib/account/password/esolve-forgot-password-response.interface.d.ts +9 -9
- package/lib/account/password/esolve-reset-password-result.model.d.ts +9 -9
- package/lib/account/password/index.d.ts +4 -4
- package/lib/account/registration/esolve-registration-data.interface.d.ts +15 -15
- package/lib/account/registration/esolve-registration-post-response-item.interface.d.ts +9 -9
- package/lib/account/registration/esolve-registration-result.model.d.ts +10 -10
- package/lib/account/registration/index.d.ts +3 -3
- package/lib/account/user-account/classes/esolve-statement-ageing.model.d.ts +6 -6
- package/lib/account/user-account/classes/esolve-statement-balances.model.d.ts +7 -7
- package/lib/account/user-account/classes/esolve-statement-transaction.model.d.ts +12 -12
- package/lib/account/user-account/classes/esolve-statement.model.d.ts +8 -8
- package/lib/account/user-account/classes/esolve-user-account-business.model.d.ts +8 -8
- package/lib/account/user-account/classes/esolve-user-account-contact.model.d.ts +7 -7
- package/lib/account/user-account/classes/esolve-user-account-result.model.d.ts +5 -5
- package/lib/account/user-account/classes/esolve-user-account.model.d.ts +21 -21
- package/lib/account/user-account/classes/esolve-user-client-account-balances.model.d.ts +12 -12
- package/lib/account/user-account/classes/esolve-user-client-account.model.d.ts +43 -43
- package/lib/account/user-account/classes/index.d.ts +10 -10
- package/lib/account/user-account/index.d.ts +2 -2
- package/lib/account/user-account/interfaces/esolve-statement-ageing-record.interface.d.ts +4 -4
- package/lib/account/user-account/interfaces/esolve-statement-balances-record.interface.d.ts +5 -5
- package/lib/account/user-account/interfaces/esolve-statement-record.interface.d.ts +6 -6
- package/lib/account/user-account/interfaces/esolve-statement-transaction-record.interface.d.ts +10 -10
- package/lib/account/user-account/interfaces/esolve-user-account-data.interface.d.ts +17 -17
- package/lib/account/user-account/interfaces/esolve-user-account-record.interface.d.ts +23 -23
- package/lib/account/user-account/interfaces/esolve-user-client-account-balances-record.interface.d.ts +11 -11
- package/lib/account/user-account/interfaces/esolve-user-client-account-record.interface.d.ts +41 -41
- package/lib/account/user-account/interfaces/index.d.ts +8 -8
- package/lib/auth/esolve-auth-interceptor.service.d.ts +13 -13
- package/lib/auth/esolve-auth.service.d.ts +26 -26
- package/lib/auth/index.d.ts +5 -5
- package/lib/auth/interfaces/esolve-auth-check-data.interface.d.ts +4 -4
- package/lib/auth/interfaces/esolve-auth-data.interface.d.ts +7 -7
- package/lib/auth/interfaces/esolve-auth-get-data.interface.d.ts +3 -3
- package/lib/auth/interfaces/esolve-auth-response.interface.d.ts +7 -7
- package/lib/auth/interfaces/esolve-login-post-response-item.interface.d.ts +6 -6
- package/lib/auth/interfaces/index.d.ts +5 -5
- package/lib/auth/providers/esolve-eurus-auto-login.provider.d.ts +2 -2
- package/lib/auth/providers/index.d.ts +1 -1
- package/lib/auth/types/esolve-auth-check-response.type.d.ts +2 -2
- package/lib/auth/types/esolve-auth-get-response.type.d.ts +2 -2
- package/lib/auth/types/esolve-auth-response-data.type.d.ts +2 -2
- package/lib/auth/types/esolve-auth-result.type.d.ts +3 -3
- package/lib/auth/types/index.d.ts +4 -4
- package/lib/banners/esolve-banner-image-hotspot-coords.interface.d.ts +4 -4
- package/lib/banners/esolve-banner-image-hotspot-record.interface.d.ts +8 -8
- package/lib/banners/esolve-banner-image-hotspot.model.d.ts +9 -9
- package/lib/banners/esolve-banner-image-record.interface.d.ts +10 -10
- package/lib/banners/esolve-banner-image-set.interface.d.ts +6 -6
- package/lib/banners/esolve-banner-image-type.type.d.ts +1 -1
- package/lib/banners/esolve-banner-image.model.d.ts +12 -12
- package/lib/banners/esolve-banner-link.interface.d.ts +5 -5
- package/lib/banners/esolve-banner-record.interface.d.ts +18 -18
- package/lib/banners/esolve-banner-type.type.d.ts +1 -1
- package/lib/banners/esolve-banner.model.d.ts +18 -18
- package/lib/banners/esolve-banner.service.d.ts +26 -26
- package/lib/banners/index.d.ts +9 -9
- package/lib/cart/classes/esolve-cart-item.model.d.ts +26 -25
- package/lib/cart/classes/esolve-cart-stock-item.model.d.ts +35 -35
- package/lib/cart/classes/esolve-cart-totals.model.d.ts +50 -50
- package/lib/cart/classes/esolve-checkout-result.model.d.ts +7 -7
- package/lib/cart/classes/esolve-empty-cart-result.model.d.ts +3 -3
- package/lib/cart/classes/esolve-transaction-analytics-data.model.d.ts +11 -11
- package/lib/cart/classes/index.d.ts +6 -6
- package/lib/cart/esolve-cart.service.d.ts +85 -85
- package/lib/cart/index.d.ts +4 -4
- package/lib/cart/interfaces/esolve-cart-additional-where.interface.d.ts +6 -6
- package/lib/cart/interfaces/esolve-cart-item-record.interface.d.ts +40 -39
- package/lib/cart/interfaces/esolve-cart-item-response.interface.d.ts +5 -5
- package/lib/cart/interfaces/esolve-cart-set-item.interface.d.ts +7 -7
- package/lib/cart/interfaces/esolve-cart-totals-record.interface.d.ts +7 -7
- package/lib/cart/interfaces/esolve-checkout-response.interface.d.ts +5 -5
- package/lib/cart/interfaces/esolve-time-slot-checkout.interface.d.ts +5 -5
- package/lib/cart/interfaces/esolve-tracking-code.interface.d.ts +3 -3
- package/lib/cart/interfaces/esolve-transaction-analytics-data-record.interface.d.ts +6 -6
- package/lib/cart/interfaces/index.d.ts +9 -9
- package/lib/cart/types/esolve-cart-empty-response.type.d.ts +2 -2
- package/lib/cart/types/esolve-cart-set-action.type.d.ts +1 -1
- package/lib/cart/types/esolve-cart.type.d.ts +2 -2
- package/lib/cart/types/index.d.ts +3 -3
- package/lib/category-tree/esolve-category-identifier.interface.d.ts +4 -4
- package/lib/category-tree/esolve-category-record.interface.d.ts +18 -18
- package/lib/category-tree/esolve-category-tree-item-options.interface.d.ts +18 -18
- package/lib/category-tree/esolve-category-tree-item-record.interface.d.ts +17 -17
- package/lib/category-tree/esolve-category-tree-item.model.d.ts +24 -24
- package/lib/category-tree/esolve-category-tree.service.d.ts +41 -41
- package/lib/category-tree/esolve-subcategory-record.interface.d.ts +18 -18
- package/lib/category-tree/index.d.ts +6 -6
- package/lib/core/esolve-config.service.d.ts +22 -22
- package/lib/core/esolve-connect-config.constant.d.ts +3 -3
- package/lib/core/esolve-connect.config.d.ts +73 -73
- package/lib/core/index.d.ts +3 -3
- package/lib/coupons/classes/esolve-coupon.model.d.ts +20 -20
- package/lib/coupons/classes/index.d.ts +1 -1
- package/lib/coupons/esolve-coupons.service.d.ts +40 -40
- package/lib/coupons/index.d.ts +4 -4
- package/lib/coupons/interfaces/esolve-coupon-record.interface.d.ts +8 -8
- package/lib/coupons/interfaces/esolve-coupon-validation-error.interface.d.ts +4 -4
- package/lib/coupons/interfaces/esolve-coupon-validation-result.interface.d.ts +4 -4
- package/lib/coupons/interfaces/esolve-coupon-validation.interface.d.ts +6 -6
- package/lib/coupons/interfaces/index.d.ts +4 -4
- package/lib/coupons/types/esolve-coupons-cache.type.d.ts +1 -1
- package/lib/coupons/types/index.d.ts +1 -1
- package/lib/enquiry/esolve-enquiry-response.type.d.ts +2 -2
- package/lib/enquiry/esolve-enquiry-result.model.d.ts +6 -6
- package/lib/enquiry/esolve-enquiry.service.d.ts +17 -17
- package/lib/enquiry/index.d.ts +3 -3
- package/lib/images/directives/cdn-src.directive.d.ts +22 -22
- package/lib/images/directives/index.d.ts +1 -1
- package/lib/images/esolve-image-loader.provider.d.ts +2 -2
- package/lib/images/functions/index.d.ts +3 -3
- package/lib/images/functions/is-esolve-cdn-path.function.d.ts +1 -1
- package/lib/images/functions/is-legacy-esolve-cdn-path.function.d.ts +1 -1
- package/lib/images/functions/process-image-src.function.d.ts +1 -1
- package/lib/images/index.d.ts +3 -3
- package/lib/locations/classes/esolve-location-address.model.d.ts +11 -11
- package/lib/locations/classes/esolve-location-contact-info.model.d.ts +7 -7
- package/lib/locations/classes/esolve-location-geo.model.d.ts +6 -6
- package/lib/locations/classes/esolve-location-pobox-address.model.d.ts +6 -6
- package/lib/locations/classes/esolve-location-trading-day.model.d.ts +5 -5
- package/lib/locations/classes/esolve-location-trading-times.model.d.ts +13 -13
- package/lib/locations/classes/esolve-location.model.d.ts +28 -28
- package/lib/locations/classes/index.d.ts +7 -7
- package/lib/locations/esolve-locations.service.d.ts +37 -37
- package/lib/locations/index.d.ts +3 -3
- package/lib/locations/interfaces/esolve-location-record.interface.d.ts +53 -53
- package/lib/locations/interfaces/index.d.ts +1 -1
- package/lib/manufacturers/esolve-manufacturer-image-size.type.d.ts +1 -1
- package/lib/manufacturers/esolve-manufacturer-options.interface.d.ts +3 -3
- package/lib/manufacturers/esolve-manufacturer-record.interface.d.ts +16 -16
- package/lib/manufacturers/esolve-manufacturer.model.d.ts +22 -22
- package/lib/manufacturers/esolve-manufacturers.service.d.ts +19 -19
- package/lib/manufacturers/index.d.ts +5 -5
- package/lib/menu/classes/esolve-menu-item.model.d.ts +13 -13
- package/lib/menu/classes/index.d.ts +1 -1
- package/lib/menu/esolve-menu.service.d.ts +14 -14
- package/lib/menu/index.d.ts +4 -4
- package/lib/menu/interfaces/esolve-menu-tree-record.interface.d.ts +20 -20
- package/lib/menu/interfaces/index.d.ts +1 -1
- package/lib/menu/types/esolve-menu.type.d.ts +2 -2
- package/lib/menu/types/index.d.ts +1 -1
- package/lib/news/esolve-news-article-author-record.interface.d.ts +9 -9
- package/lib/news/esolve-news-article-author.model.d.ts +7 -7
- package/lib/news/esolve-news-article-list.model.d.ts +7 -7
- package/lib/news/esolve-news-article-options.interface.d.ts +12 -12
- package/lib/news/esolve-news-article-record.interface.d.ts +31 -31
- package/lib/news/esolve-news-article.model.d.ts +28 -28
- package/lib/news/esolve-news-group-record.interface.d.ts +7 -7
- package/lib/news/esolve-news-group.model.d.ts +11 -11
- package/lib/news/esolve-news.service.d.ts +21 -21
- package/lib/news/index.d.ts +9 -9
- package/lib/ng-esolve-connect.module.d.ts +11 -11
- package/lib/payment/classes/esolve-banking-details.model.d.ts +9 -9
- package/lib/payment/classes/esolve-payment-method.model.d.ts +36 -36
- package/lib/payment/classes/esolve-payment-result.model.d.ts +28 -28
- package/lib/payment/classes/esolve-vault-item-result.model.d.ts +10 -10
- package/lib/payment/classes/esolve-vault-item.model.d.ts +11 -11
- package/lib/payment/classes/index.d.ts +5 -5
- package/lib/payment/esolve-payment.service.d.ts +94 -94
- package/lib/payment/index.d.ts +4 -4
- package/lib/payment/interfaces/esolve-card-data.interface.d.ts +7 -7
- package/lib/payment/interfaces/esolve-payment-form-input.interface.d.ts +4 -4
- package/lib/payment/interfaces/esolve-payment-method-options.interface.d.ts +5 -5
- package/lib/payment/interfaces/esolve-payment-method-record.interface.d.ts +38 -38
- package/lib/payment/interfaces/esolve-payment-redirect-links.interface.d.ts +4 -4
- package/lib/payment/interfaces/esolve-payment-response.interface.d.ts +28 -28
- package/lib/payment/interfaces/esolve-payment-set-body.interface.d.ts +15 -15
- package/lib/payment/interfaces/esolve-payment-status.interface.d.ts +3 -3
- package/lib/payment/interfaces/esolve-vault-record.interface.d.ts +11 -11
- package/lib/payment/interfaces/esolve-vault-response.interface.d.ts +9 -9
- package/lib/payment/interfaces/index.d.ts +8 -8
- package/lib/payment/types/esolve-integration-type.type.d.ts +1 -1
- package/lib/payment/types/esolve-service-provider.type.d.ts +1 -1
- package/lib/payment/types/index.d.ts +2 -2
- package/lib/ranges/esolve-range-options.interface.d.ts +4 -4
- package/lib/ranges/esolve-range-record.interface.d.ts +17 -17
- package/lib/ranges/esolve-range.model.d.ts +19 -19
- package/lib/ranges/esolve-ranges.service.d.ts +19 -19
- package/lib/ranges/index.d.ts +4 -4
- package/lib/session/esolve-session-metadata.service.d.ts +19 -19
- package/lib/session/esolve-session.service.d.ts +56 -56
- package/lib/session/index.d.ts +3 -3
- package/lib/session/interfaces/esolve-session-data.interface.d.ts +3 -3
- package/lib/session/interfaces/esolve-session.interface.d.ts +5 -5
- package/lib/session/interfaces/index.d.ts +2 -2
- package/lib/shared/assets/esolve-asset-list.type.d.ts +3 -3
- package/lib/shared/assets/esolve-asset-options.interface.d.ts +15 -15
- package/lib/shared/assets/esolve-asset-record.interface.d.ts +27 -27
- package/lib/shared/assets/esolve-asset-type.type.d.ts +1 -1
- package/lib/shared/assets/esolve-asset.model.d.ts +39 -39
- package/lib/shared/assets/esolve-assets.service.d.ts +19 -19
- package/lib/shared/assets/esolve-linked-asset-record.interface.d.ts +8 -8
- package/lib/shared/assets/esolve-linked-asset.model.d.ts +10 -10
- package/lib/shared/assets/index.d.ts +8 -8
- package/lib/shared/cookie/esolve-cookie.service.d.ts +12 -12
- package/lib/shared/custom-fields/esolve-custom-fields.interface.d.ts +3 -3
- package/lib/shared/custom-fields/index.d.ts +1 -1
- package/lib/shared/errors/esolve-error-handler.service.d.ts +17 -17
- package/lib/shared/errors/esolve-http-error.model.d.ts +6 -6
- package/lib/shared/errors/index.d.ts +2 -2
- package/lib/shared/esolve-hex-hash.function.d.ts +13 -13
- package/lib/shared/esolve-list.model.d.ts +7 -7
- package/lib/shared/esolve-result.model.d.ts +6 -6
- package/lib/shared/esolve-url-target.type.d.ts +1 -1
- package/lib/shared/filters/classes/esolve-multiple-select-filter.model.d.ts +14 -14
- package/lib/shared/filters/classes/esolve-range-filter.model.d.ts +18 -18
- package/lib/shared/filters/classes/esolve-single-select-filter.model.d.ts +15 -15
- package/lib/shared/filters/classes/esolve-toggle-filter.model.d.ts +12 -12
- package/lib/shared/filters/classes/index.d.ts +4 -4
- package/lib/shared/filters/esolve-filter-factory.d.ts +12 -12
- package/lib/shared/filters/index.d.ts +4 -4
- package/lib/shared/filters/interfaces/esolve-filter-definitions.interface.d.ts +6 -6
- package/lib/shared/filters/interfaces/esolve-filter-record.interface.d.ts +5 -5
- package/lib/shared/filters/interfaces/esolve-filter.interface.d.ts +10 -10
- package/lib/shared/filters/interfaces/esolve-range-filter-record.interface.d.ts +7 -7
- package/lib/shared/filters/interfaces/esolve-select-filter-record.interface.d.ts +6 -6
- package/lib/shared/filters/interfaces/esolve-select-filter.interface.d.ts +4 -4
- package/lib/shared/filters/interfaces/index.d.ts +6 -6
- package/lib/shared/filters/types/esolve-filter-list.type.d.ts +2 -2
- package/lib/shared/filters/types/esolve-filter-record-list.type.d.ts +2 -2
- package/lib/shared/filters/types/esolve-filter-toggle.type.d.ts +1 -1
- package/lib/shared/filters/types/esolve-filter-type.type.d.ts +4 -4
- package/lib/shared/filters/types/esolve-range-filter-type.type.d.ts +1 -1
- package/lib/shared/filters/types/esolve-select-filter-type.type.d.ts +1 -1
- package/lib/shared/filters/types/index.d.ts +5 -5
- package/lib/shared/geocoder/esolve-geocode-address-record.interface.d.ts +9 -9
- package/lib/shared/geocoder/esolve-geocode-address-result.model.d.ts +10 -10
- package/lib/shared/geocoder/esolve-geocode-coords-result.model.d.ts +5 -5
- package/lib/shared/geocoder/esolve-geocode-result-record.interface.d.ts +10 -10
- package/lib/shared/geocoder/esolve-geocode-result.model.d.ts +11 -11
- package/lib/shared/geocoder/esolve-geocoder.service.d.ts +15 -15
- package/lib/shared/geocoder/index.d.ts +6 -6
- package/lib/shared/response/esolve-delete-response.interface.d.ts +5 -5
- package/lib/shared/response/esolve-delete-result.interface.d.ts +6 -6
- package/lib/shared/response/esolve-get-response.interface.d.ts +4 -4
- package/lib/shared/response/esolve-post-response-item.interface.d.ts +9 -9
- package/lib/shared/response/esolve-post-response-status.interface.d.ts +5 -5
- package/lib/shared/response/esolve-response-handler.service.d.ts +17 -17
- package/lib/shared/response/esolve-response-log-item.interface.d.ts +5 -5
- package/lib/shared/response/esolve-response-result.model.d.ts +7 -7
- package/lib/shared/response/esolve-response.interface.d.ts +8 -8
- package/lib/shared/response/esolve-set-response.interface.d.ts +5 -5
- package/lib/shared/response/index.d.ts +10 -10
- package/lib/shared/seo/esolve-seo-details.interface.d.ts +4 -4
- package/lib/shared/seo/esolve-seo-info.model.d.ts +9 -9
- package/lib/shared/seo/esolve-seo.service.d.ts +28 -28
- package/lib/shared/seo/index.d.ts +3 -3
- package/lib/shared/sort/esolve-sort-order.type.d.ts +1 -1
- package/lib/shared/sort/esolve-sort.interface.d.ts +5 -5
- package/lib/shared/sort/index.d.ts +2 -2
- package/lib/shipping/classes/esolve-shipping-cost.model.d.ts +6 -6
- package/lib/shipping/classes/esolve-shipping-method.model.d.ts +32 -32
- package/lib/shipping/classes/esolve-shipping-totals.model.d.ts +6 -6
- package/lib/shipping/classes/esolve-time-slot-config.model.d.ts +8 -8
- package/lib/shipping/classes/esolve-time-slot-date.model.d.ts +7 -7
- package/lib/shipping/classes/esolve-time-slot-days.model.d.ts +11 -11
- package/lib/shipping/classes/esolve-time-slot-times.model.d.ts +6 -6
- package/lib/shipping/classes/esolve-time-slot.model.d.ts +12 -12
- package/lib/shipping/classes/index.d.ts +8 -8
- package/lib/shipping/esolve-shipping.service.d.ts +55 -55
- package/lib/shipping/index.d.ts +4 -4
- package/lib/shipping/interfaces/esolve-shipping-cost-record.interface.d.ts +9 -9
- package/lib/shipping/interfaces/esolve-shipping-method-options.interface.d.ts +4 -4
- package/lib/shipping/interfaces/esolve-shipping-method-record.interface.d.ts +31 -31
- package/lib/shipping/interfaces/esolve-time-slot-config-record.interface.d.ts +6 -6
- package/lib/shipping/interfaces/esolve-time-slot-date-record.interface.d.ts +6 -6
- package/lib/shipping/interfaces/esolve-time-slot-days-record.interface.d.ts +9 -9
- package/lib/shipping/interfaces/esolve-time-slot-record.interface.d.ts +10 -10
- package/lib/shipping/interfaces/esolve-time-slot-times-record.interface.d.ts +4 -4
- package/lib/shipping/interfaces/index.d.ts +8 -8
- package/lib/shipping/types/esolve-insurance-calculation-method.type.d.ts +1 -1
- package/lib/shipping/types/esolve-shipping-calculation-method.type.d.ts +1 -1
- package/lib/shipping/types/esolve-shipping-location.type.d.ts +1 -1
- package/lib/shipping/types/index.d.ts +3 -3
- package/lib/specials/esolve-special-dates.model.d.ts +5 -5
- package/lib/specials/esolve-special-image-collection-record.interface.d.ts +6 -6
- package/lib/specials/esolve-special-image-collection.model.d.ts +9 -9
- package/lib/specials/esolve-special-image-record.interface.d.ts +6 -6
- package/lib/specials/esolve-special-image.model.d.ts +8 -8
- package/lib/specials/esolve-special-options.interface.d.ts +6 -6
- package/lib/specials/esolve-special-record.interface.d.ts +26 -26
- package/lib/specials/esolve-special.model.d.ts +23 -23
- package/lib/specials/esolve-specials.service.d.ts +19 -19
- package/lib/specials/index.d.ts +9 -9
- package/lib/stock/classes/esolve-additional-stock-image.model.d.ts +10 -10
- package/lib/stock/classes/esolve-colour.model.d.ts +7 -7
- package/lib/stock/classes/esolve-dependant-item.model.d.ts +8 -8
- package/lib/stock/classes/esolve-linked-stock-item.model.d.ts +7 -7
- package/lib/stock/classes/esolve-media-stock-item.model.d.ts +6 -6
- package/lib/stock/classes/esolve-recipe-stock-item.model.d.ts +7 -7
- package/lib/stock/classes/esolve-stock-badge.model.d.ts +9 -9
- package/lib/stock/classes/esolve-stock-group-item.model.d.ts +6 -6
- package/lib/stock/classes/esolve-stock-group.model.d.ts +8 -8
- package/lib/stock/classes/esolve-stock-image-collection.model.d.ts +9 -9
- package/lib/stock/classes/esolve-stock-image.model.d.ts +27 -27
- package/lib/stock/classes/esolve-stock-item-base.model.d.ts +231 -231
- package/lib/stock/classes/esolve-stock-item-list.model.d.ts +11 -11
- package/lib/stock/classes/esolve-stock-item.model.d.ts +16 -16
- package/lib/stock/classes/esolve-stock-lead-times.model.d.ts +6 -6
- package/lib/stock/classes/esolve-stock-price.model.d.ts +57 -57
- package/lib/stock/classes/esolve-stock-transaction-history.model.d.ts +5 -5
- package/lib/stock/classes/index.d.ts +16 -16
- package/lib/stock/esolve-stock.service.d.ts +99 -99
- package/lib/stock/index.d.ts +4 -4
- package/lib/stock/interfaces/esolve-additional-stock-image-record.interface.d.ts +8 -8
- package/lib/stock/interfaces/esolve-colour-record.interface.d.ts +5 -5
- package/lib/stock/interfaces/esolve-dependant-item-record.interface.d.ts +6 -6
- package/lib/stock/interfaces/esolve-linked-stock-record.interface.d.ts +7 -7
- package/lib/stock/interfaces/esolve-media-stock-item-options.interface.d.ts +13 -13
- package/lib/stock/interfaces/esolve-recipe-item-record.interface.d.ts +7 -7
- package/lib/stock/interfaces/esolve-recipe-stock-options.interface.d.ts +7 -7
- package/lib/stock/interfaces/esolve-stock-badge-record.interface.d.ts +8 -8
- package/lib/stock/interfaces/esolve-stock-base-record.interface.d.ts +73 -73
- package/lib/stock/interfaces/esolve-stock-filter-options.interface.d.ts +8 -8
- package/lib/stock/interfaces/esolve-stock-image-collection-record.interface.d.ts +7 -7
- package/lib/stock/interfaces/esolve-stock-item-options.interface.d.ts +22 -22
- package/lib/stock/interfaces/esolve-stock-lead-times-record.interface.d.ts +4 -4
- package/lib/stock/interfaces/esolve-stock-linked-category-record.interface.d.ts +5 -5
- package/lib/stock/interfaces/esolve-stock-record.interface.d.ts +11 -11
- package/lib/stock/interfaces/index.d.ts +15 -15
- package/lib/stock/types/esolve-media-stock-item-list.type.d.ts +7 -7
- package/lib/stock/types/esolve-media-stock-item-record.type.d.ts +3 -3
- package/lib/stock/types/esolve-media-stock-sort-field.type.d.ts +2 -2
- package/lib/stock/types/esolve-stock-group-item-record.type.d.ts +3 -3
- package/lib/stock/types/esolve-stock-image-size.type.d.ts +1 -1
- package/lib/stock/types/esolve-stock-sort-field.type.d.ts +1 -1
- package/lib/stock/types/esolve-stock-unit-of-measure.type.d.ts +1 -1
- package/lib/stock/types/index.d.ts +7 -7
- package/lib/suppliers/classes/esolve-supplier.model.d.ts +26 -26
- package/lib/suppliers/classes/index.d.ts +1 -1
- package/lib/suppliers/esolve-suppliers.service.d.ts +16 -16
- package/lib/suppliers/index.d.ts +3 -3
- package/lib/suppliers/interfaces/esolve-supplier-options.interface.d.ts +4 -4
- package/lib/suppliers/interfaces/esolve-supplier-record.interface.d.ts +24 -24
- package/lib/suppliers/interfaces/index.d.ts +2 -2
- package/lib/tags/esolve-tag-options.interface.d.ts +6 -6
- package/lib/tags/esolve-tag-phrase-match-mode.type.d.ts +1 -1
- package/lib/tags/esolve-tag-record.interface.d.ts +7 -7
- package/lib/tags/esolve-tag.model.d.ts +18 -18
- package/lib/tags/esolve-tags.service.d.ts +22 -22
- package/lib/tags/index.d.ts +5 -5
- package/lib/topics/esolve-topic-record.interface.d.ts +6 -6
- package/lib/topics/esolve-topic.model.d.ts +7 -7
- package/lib/topics/esolve-topic.service.d.ts +20 -20
- package/lib/topics/index.d.ts +3 -3
- package/lib/transactions/classes/esolve-transaction-address.model.d.ts +15 -15
- package/lib/transactions/classes/esolve-transaction-client.model.d.ts +11 -11
- package/lib/transactions/classes/esolve-transaction-item-price.model.d.ts +35 -35
- package/lib/transactions/classes/esolve-transaction-item.model.d.ts +39 -39
- package/lib/transactions/classes/esolve-transaction-list.model.d.ts +4 -4
- package/lib/transactions/classes/esolve-transaction-location.model.d.ts +3 -3
- package/lib/transactions/classes/esolve-transaction-payment-method.model.d.ts +8 -8
- package/lib/transactions/classes/esolve-transaction-shipping-method.model.d.ts +10 -10
- package/lib/transactions/classes/esolve-transaction-user.model.d.ts +9 -9
- package/lib/transactions/classes/esolve-transaction.model.d.ts +39 -39
- package/lib/transactions/classes/index.d.ts +10 -10
- package/lib/transactions/esolve-transactions.service.d.ts +24 -24
- package/lib/transactions/index.d.ts +4 -4
- package/lib/transactions/interfaces/esolve-transaction-client-record.interface.d.ts +10 -10
- package/lib/transactions/interfaces/esolve-transaction-item-record.interface.d.ts +21 -21
- package/lib/transactions/interfaces/esolve-transaction-options.interface.d.ts +11 -11
- package/lib/transactions/interfaces/esolve-transaction-payment-method-record.interface.d.ts +7 -7
- package/lib/transactions/interfaces/esolve-transaction-record.interface.d.ts +51 -51
- package/lib/transactions/interfaces/esolve-transaction-shipping-method-record.interface.d.ts +9 -9
- package/lib/transactions/interfaces/esolve-transaction-user-record.interface.d.ts +8 -8
- package/lib/transactions/interfaces/index.d.ts +7 -7
- package/lib/transactions/types/esolve-transaction-location-record.type.d.ts +2 -2
- package/lib/transactions/types/esolve-transaction-type.type.d.ts +1 -1
- package/lib/transactions/types/index.d.ts +2 -2
- package/lib/wishlist/classes/esolve-empty-wishlist-result.model.d.ts +3 -3
- package/lib/wishlist/classes/esolve-wishlist-item.model.d.ts +13 -13
- package/lib/wishlist/classes/index.d.ts +2 -2
- package/lib/wishlist/esolve-wishlist.service.d.ts +53 -53
- package/lib/wishlist/index.d.ts +4 -4
- package/lib/wishlist/interfaces/esolve-wishlist-item-record.interface.d.ts +13 -13
- package/lib/wishlist/interfaces/esolve-wishlist-item-response.interface.d.ts +6 -6
- package/lib/wishlist/interfaces/esolve-wishlist-set-item.interface.d.ts +7 -7
- package/lib/wishlist/interfaces/index.d.ts +3 -3
- package/lib/wishlist/types/esolve-wishlist-set-action.type.d.ts +1 -1
- package/lib/wishlist/types/esolve-wishlist.type.d.ts +2 -2
- package/lib/wishlist/types/index.d.ts +2 -2
- package/media/index.d.ts +8 -8
- package/media/lib/classes/esolve-heading.model.d.ts +5 -5
- package/media/lib/classes/esolve-media-article.model.d.ts +23 -23
- package/media/lib/classes/esolve-media-group.model.d.ts +8 -8
- package/media/lib/classes/esolve-media-layout-section.model.d.ts +10 -10
- package/media/lib/classes/esolve-media-link.model.d.ts +8 -8
- package/media/lib/classes/index.d.ts +5 -5
- package/media/lib/components/index.d.ts +2 -2
- package/media/lib/components/media-layout/esolve-media-layout.component.d.ts +14 -14
- package/media/lib/components/media-section/esolve-media-section.component.d.ts +14 -14
- package/media/lib/esolve-connect-media-config.token.d.ts +3 -3
- package/media/lib/esolve-connect-media.config.d.ts +6 -6
- package/media/lib/interfaces/esolve-heading-record.interface.d.ts +5 -5
- package/media/lib/interfaces/esolve-layout-config.interface.d.ts +9 -9
- package/media/lib/interfaces/esolve-layout-section-config.interface.d.ts +7 -7
- package/media/lib/interfaces/esolve-media-group-record.interface.d.ts +6 -6
- package/media/lib/interfaces/esolve-media-layout-section-record.interface.d.ts +7 -7
- package/media/lib/interfaces/esolve-media-link-record.interface.d.ts +6 -6
- package/media/lib/interfaces/esolve-media-record.interface.d.ts +41 -41
- package/media/lib/interfaces/index.d.ts +7 -7
- package/media/lib/ng-esolve-connect-media.module.d.ts +15 -15
- package/media/lib/services/esolve-media-layout.service.d.ts +23 -23
- package/media/lib/services/esolve-media.service.d.ts +48 -48
- package/media/lib/services/index.d.ts +2 -2
- package/media/lib/types/esolve-media-layout-section-type.type.d.ts +1 -1
- package/media/lib/types/index.d.ts +1 -1
- package/notifications/index.d.ts +5 -5
- package/notifications/lib/classes/esolve-notification-button-action.model.d.ts +9 -9
- package/notifications/lib/classes/esolve-notification-dates.model.d.ts +6 -6
- package/notifications/lib/classes/esolve-system-notification-type.model.d.ts +12 -12
- package/notifications/lib/classes/esolve-system-notification.model.d.ts +16 -16
- package/notifications/lib/classes/index.d.ts +4 -4
- package/notifications/lib/interfaces/esolve-notification-button-action-record.interface.d.ts +7 -7
- package/notifications/lib/interfaces/esolve-notification-date-record.interface.d.ts +4 -4
- package/notifications/lib/interfaces/esolve-notification-dates-record.interface.d.ts +5 -5
- package/notifications/lib/interfaces/esolve-system-notification-options.interface.d.ts +3 -3
- package/notifications/lib/interfaces/esolve-system-notification-record.interface.d.ts +14 -14
- package/notifications/lib/interfaces/esolve-system-notification-type-record.interface.d.ts +10 -10
- package/notifications/lib/interfaces/index.d.ts +6 -6
- package/notifications/lib/ng-esolve-connect-notifications.module.d.ts +7 -7
- package/notifications/lib/services/esolve-notifications.service.d.ts +15 -15
- package/notifications/lib/services/index.d.ts +1 -1
- package/notifications/lib/types/esolve-notification-position.type.d.ts +1 -1
- package/notifications/lib/types/esolve-notification-size.type.d.ts +1 -1
- package/notifications/lib/types/esolve-notification-type.type.d.ts +1 -1
- package/notifications/lib/types/index.d.ts +3 -3
- package/package.json +14 -26
- package/survey/index.d.ts +5 -5
- package/survey/lib/classes/esolve-survey-answer-result.model.d.ts +6 -6
- package/survey/lib/classes/esolve-survey-check-question.model.d.ts +6 -6
- package/survey/lib/classes/esolve-survey-input-question.model.d.ts +6 -6
- package/survey/lib/classes/esolve-survey-options-question.model.d.ts +8 -8
- package/survey/lib/classes/esolve-survey-question.model.d.ts +11 -11
- package/survey/lib/classes/esolve-survey-radio-question.model.d.ts +6 -6
- package/survey/lib/classes/esolve-survey-rating-question.model.d.ts +7 -7
- package/survey/lib/classes/esolve-survey-select-question.model.d.ts +9 -9
- package/survey/lib/classes/esolve-survey-text-question.model.d.ts +7 -7
- package/survey/lib/classes/esolve-survey-textarea-question.model.d.ts +6 -6
- package/survey/lib/classes/esolve-survey-values-question.model.d.ts +6 -6
- package/survey/lib/classes/esolve-survey.model.d.ts +15 -15
- package/survey/lib/classes/index.d.ts +12 -12
- package/survey/lib/interfaces/esolve-survey-answer-response.interface.d.ts +4 -4
- package/survey/lib/interfaces/esolve-survey-option.interface.d.ts +4 -4
- package/survey/lib/interfaces/esolve-survey-options-question-record.interface.d.ts +7 -7
- package/survey/lib/interfaces/esolve-survey-options.interface.d.ts +5 -5
- package/survey/lib/interfaces/esolve-survey-question-record.type.d.ts +9 -9
- package/survey/lib/interfaces/esolve-survey-record.interface.d.ts +9 -9
- package/survey/lib/interfaces/esolve-survey-text-question-record.interface.d.ts +7 -7
- package/survey/lib/interfaces/esolve-survey-values-question-record.interface.d.ts +6 -6
- package/survey/lib/interfaces/index.d.ts +8 -8
- package/survey/lib/ng-esolve-connect-survey.module.d.ts +7 -7
- package/survey/lib/services/esolve-survey.service.d.ts +84 -84
- package/survey/lib/services/index.d.ts +1 -1
- package/survey/lib/types/esolve-survey-options-question-type.type.d.ts +1 -1
- package/survey/lib/types/esolve-survey-question-record-list.type.d.ts +2 -2
- package/survey/lib/types/esolve-survey-question-type.type.d.ts +4 -4
- package/survey/lib/types/esolve-survey-text-question-type.type.d.ts +1 -1
- package/survey/lib/types/esolve-survey-type.type.d.ts +1 -1
- package/survey/lib/types/esolve-survey-values-question-type.type.d.ts +1 -1
- package/survey/lib/types/index.d.ts +6 -6
- package/esm2020/esolve-ng-esolve-connect.mjs +0 -5
- package/esm2020/index.mjs +0 -67
- package/esm2020/lib/account/address/esolve-address-record.interface.mjs +0 -2
- package/esm2020/lib/account/address/esolve-address-response.interface.mjs +0 -2
- package/esm2020/lib/account/address/esolve-address-result.model.mjs +0 -11
- package/esm2020/lib/account/address/esolve-address-set-data.interface.mjs +0 -2
- package/esm2020/lib/account/address/esolve-address-type.type.mjs +0 -2
- package/esm2020/lib/account/address/esolve-address.model.mjs +0 -19
- package/esm2020/lib/account/address/index.mjs +0 -7
- package/esm2020/lib/account/confirmation/esolve-account-confirmation-post-response-item.interface.mjs +0 -2
- package/esm2020/lib/account/confirmation/esolve-account-confirmation-result.model.mjs +0 -10
- package/esm2020/lib/account/confirmation/index.mjs +0 -3
- package/esm2020/lib/account/esolve-account.service.mjs +0 -428
- package/esm2020/lib/account/esolve-geocode-result.interface.mjs +0 -2
- package/esm2020/lib/account/index.mjs +0 -8
- package/esm2020/lib/account/location/classes/esolve-location-update-result.model.mjs +0 -11
- package/esm2020/lib/account/location/classes/index.mjs +0 -2
- package/esm2020/lib/account/location/index.mjs +0 -3
- package/esm2020/lib/account/location/interfaces/esolve-location-options.interface.mjs +0 -2
- package/esm2020/lib/account/location/interfaces/index.mjs +0 -2
- package/esm2020/lib/account/password/esolve-change-password-result.model.mjs +0 -8
- package/esm2020/lib/account/password/esolve-forgot-password-get-result.interface.mjs +0 -2
- package/esm2020/lib/account/password/esolve-forgot-password-response.interface.mjs +0 -2
- package/esm2020/lib/account/password/esolve-reset-password-result.model.mjs +0 -11
- package/esm2020/lib/account/password/index.mjs +0 -5
- package/esm2020/lib/account/registration/esolve-registration-data.interface.mjs +0 -2
- package/esm2020/lib/account/registration/esolve-registration-post-response-item.interface.mjs +0 -2
- package/esm2020/lib/account/registration/esolve-registration-result.model.mjs +0 -12
- package/esm2020/lib/account/registration/index.mjs +0 -4
- package/esm2020/lib/account/user-account/classes/esolve-statement-ageing.model.mjs +0 -9
- package/esm2020/lib/account/user-account/classes/esolve-statement-balances.model.mjs +0 -11
- package/esm2020/lib/account/user-account/classes/esolve-statement-transaction.model.mjs +0 -15
- package/esm2020/lib/account/user-account/classes/esolve-statement.model.mjs +0 -12
- package/esm2020/lib/account/user-account/classes/esolve-user-account-business.model.mjs +0 -11
- package/esm2020/lib/account/user-account/classes/esolve-user-account-contact.model.mjs +0 -10
- package/esm2020/lib/account/user-account/classes/esolve-user-account-result.model.mjs +0 -9
- package/esm2020/lib/account/user-account/classes/esolve-user-account.model.mjs +0 -24
- package/esm2020/lib/account/user-account/classes/esolve-user-client-account-balances.model.mjs +0 -13
- package/esm2020/lib/account/user-account/classes/esolve-user-client-account.model.mjs +0 -48
- package/esm2020/lib/account/user-account/classes/index.mjs +0 -11
- package/esm2020/lib/account/user-account/index.mjs +0 -3
- package/esm2020/lib/account/user-account/interfaces/esolve-statement-ageing-record.interface.mjs +0 -2
- package/esm2020/lib/account/user-account/interfaces/esolve-statement-balances-record.interface.mjs +0 -2
- package/esm2020/lib/account/user-account/interfaces/esolve-statement-record.interface.mjs +0 -2
- package/esm2020/lib/account/user-account/interfaces/esolve-statement-transaction-record.interface.mjs +0 -2
- package/esm2020/lib/account/user-account/interfaces/esolve-user-account-data.interface.mjs +0 -2
- package/esm2020/lib/account/user-account/interfaces/esolve-user-account-record.interface.mjs +0 -2
- package/esm2020/lib/account/user-account/interfaces/esolve-user-client-account-balances-record.interface.mjs +0 -2
- package/esm2020/lib/account/user-account/interfaces/esolve-user-client-account-record.interface.mjs +0 -2
- package/esm2020/lib/account/user-account/interfaces/index.mjs +0 -9
- package/esm2020/lib/auth/esolve-auth-interceptor.service.mjs +0 -44
- package/esm2020/lib/auth/esolve-auth.service.mjs +0 -236
- package/esm2020/lib/auth/index.mjs +0 -6
- package/esm2020/lib/auth/interfaces/esolve-auth-check-data.interface.mjs +0 -2
- package/esm2020/lib/auth/interfaces/esolve-auth-data.interface.mjs +0 -2
- package/esm2020/lib/auth/interfaces/esolve-auth-get-data.interface.mjs +0 -2
- package/esm2020/lib/auth/interfaces/esolve-auth-response.interface.mjs +0 -2
- package/esm2020/lib/auth/interfaces/esolve-login-post-response-item.interface.mjs +0 -2
- package/esm2020/lib/auth/interfaces/index.mjs +0 -6
- package/esm2020/lib/auth/providers/esolve-eurus-auto-login.provider.mjs +0 -12
- package/esm2020/lib/auth/providers/index.mjs +0 -2
- package/esm2020/lib/auth/types/esolve-auth-check-response.type.mjs +0 -2
- package/esm2020/lib/auth/types/esolve-auth-get-response.type.mjs +0 -2
- package/esm2020/lib/auth/types/esolve-auth-response-data.type.mjs +0 -2
- package/esm2020/lib/auth/types/esolve-auth-result.type.mjs +0 -2
- package/esm2020/lib/auth/types/index.mjs +0 -5
- package/esm2020/lib/banners/esolve-banner-image-hotspot-coords.interface.mjs +0 -2
- package/esm2020/lib/banners/esolve-banner-image-hotspot-record.interface.mjs +0 -2
- package/esm2020/lib/banners/esolve-banner-image-hotspot.model.mjs +0 -9
- package/esm2020/lib/banners/esolve-banner-image-record.interface.mjs +0 -2
- package/esm2020/lib/banners/esolve-banner-image-set.interface.mjs +0 -2
- package/esm2020/lib/banners/esolve-banner-image-type.type.mjs +0 -2
- package/esm2020/lib/banners/esolve-banner-image.model.mjs +0 -14
- package/esm2020/lib/banners/esolve-banner-link.interface.mjs +0 -2
- package/esm2020/lib/banners/esolve-banner-record.interface.mjs +0 -2
- package/esm2020/lib/banners/esolve-banner-type.type.mjs +0 -2
- package/esm2020/lib/banners/esolve-banner.model.mjs +0 -25
- package/esm2020/lib/banners/esolve-banner.service.mjs +0 -101
- package/esm2020/lib/banners/index.mjs +0 -14
- package/esm2020/lib/cart/classes/esolve-cart-item.model.mjs +0 -26
- package/esm2020/lib/cart/classes/esolve-cart-stock-item.model.mjs +0 -51
- package/esm2020/lib/cart/classes/esolve-cart-totals.model.mjs +0 -39
- package/esm2020/lib/cart/classes/esolve-checkout-result.model.mjs +0 -10
- package/esm2020/lib/cart/classes/esolve-empty-cart-result.model.mjs +0 -4
- package/esm2020/lib/cart/classes/esolve-transaction-analytics-data.model.mjs +0 -14
- package/esm2020/lib/cart/classes/index.mjs +0 -7
- package/esm2020/lib/cart/esolve-cart.service.mjs +0 -233
- package/esm2020/lib/cart/index.mjs +0 -5
- package/esm2020/lib/cart/interfaces/esolve-cart-additional-where.interface.mjs +0 -2
- package/esm2020/lib/cart/interfaces/esolve-cart-item-record.interface.mjs +0 -2
- package/esm2020/lib/cart/interfaces/esolve-cart-item-response.interface.mjs +0 -2
- package/esm2020/lib/cart/interfaces/esolve-cart-set-item.interface.mjs +0 -2
- package/esm2020/lib/cart/interfaces/esolve-cart-totals-record.interface.mjs +0 -2
- package/esm2020/lib/cart/interfaces/esolve-checkout-response.interface.mjs +0 -2
- package/esm2020/lib/cart/interfaces/esolve-time-slot-checkout.interface.mjs +0 -2
- package/esm2020/lib/cart/interfaces/esolve-tracking-code.interface.mjs +0 -2
- package/esm2020/lib/cart/interfaces/esolve-transaction-analytics-data-record.interface.mjs +0 -2
- package/esm2020/lib/cart/interfaces/index.mjs +0 -10
- package/esm2020/lib/cart/types/esolve-cart-empty-response.type.mjs +0 -2
- package/esm2020/lib/cart/types/esolve-cart-set-action.type.mjs +0 -2
- package/esm2020/lib/cart/types/esolve-cart.type.mjs +0 -2
- package/esm2020/lib/cart/types/index.mjs +0 -4
- package/esm2020/lib/category-tree/esolve-category-identifier.interface.mjs +0 -2
- package/esm2020/lib/category-tree/esolve-category-record.interface.mjs +0 -2
- package/esm2020/lib/category-tree/esolve-category-tree-item-options.interface.mjs +0 -2
- package/esm2020/lib/category-tree/esolve-category-tree-item-record.interface.mjs +0 -2
- package/esm2020/lib/category-tree/esolve-category-tree-item.model.mjs +0 -48
- package/esm2020/lib/category-tree/esolve-category-tree.service.mjs +0 -153
- package/esm2020/lib/category-tree/esolve-subcategory-record.interface.mjs +0 -2
- package/esm2020/lib/category-tree/index.mjs +0 -7
- package/esm2020/lib/core/esolve-config.service.mjs +0 -51
- package/esm2020/lib/core/esolve-connect-config.constant.mjs +0 -3
- package/esm2020/lib/core/esolve-connect.config.mjs +0 -2
- package/esm2020/lib/core/index.mjs +0 -4
- package/esm2020/lib/coupons/classes/esolve-coupon.model.mjs +0 -29
- package/esm2020/lib/coupons/classes/index.mjs +0 -2
- package/esm2020/lib/coupons/esolve-coupons.service.mjs +0 -230
- package/esm2020/lib/coupons/index.mjs +0 -9
- package/esm2020/lib/coupons/interfaces/esolve-coupon-record.interface.mjs +0 -2
- package/esm2020/lib/coupons/interfaces/esolve-coupon-validation-error.interface.mjs +0 -2
- package/esm2020/lib/coupons/interfaces/esolve-coupon-validation-result.interface.mjs +0 -2
- package/esm2020/lib/coupons/interfaces/esolve-coupon-validation.interface.mjs +0 -2
- package/esm2020/lib/coupons/interfaces/index.mjs +0 -5
- package/esm2020/lib/coupons/types/esolve-coupons-cache.type.mjs +0 -2
- package/esm2020/lib/coupons/types/index.mjs +0 -2
- package/esm2020/lib/enquiry/esolve-enquiry-response.type.mjs +0 -2
- package/esm2020/lib/enquiry/esolve-enquiry-result.model.mjs +0 -9
- package/esm2020/lib/enquiry/esolve-enquiry.service.mjs +0 -42
- package/esm2020/lib/enquiry/index.mjs +0 -4
- package/esm2020/lib/images/directives/cdn-src.directive.mjs +0 -72
- package/esm2020/lib/images/directives/index.mjs +0 -2
- package/esm2020/lib/images/esolve-image-loader.provider.mjs +0 -13
- package/esm2020/lib/images/functions/index.mjs +0 -4
- package/esm2020/lib/images/functions/is-esolve-cdn-path.function.mjs +0 -5
- package/esm2020/lib/images/functions/is-legacy-esolve-cdn-path.function.mjs +0 -5
- package/esm2020/lib/images/functions/process-image-src.function.mjs +0 -33
- package/esm2020/lib/images/index.mjs +0 -4
- package/esm2020/lib/locations/classes/esolve-location-address.model.mjs +0 -13
- package/esm2020/lib/locations/classes/esolve-location-contact-info.model.mjs +0 -9
- package/esm2020/lib/locations/classes/esolve-location-geo.model.mjs +0 -8
- package/esm2020/lib/locations/classes/esolve-location-pobox-address.model.mjs +0 -8
- package/esm2020/lib/locations/classes/esolve-location-trading-day.model.mjs +0 -7
- package/esm2020/lib/locations/classes/esolve-location-trading-times.model.mjs +0 -14
- package/esm2020/lib/locations/classes/esolve-location.model.mjs +0 -49
- package/esm2020/lib/locations/classes/index.mjs +0 -9
- package/esm2020/lib/locations/esolve-locations.service.mjs +0 -82
- package/esm2020/lib/locations/index.mjs +0 -4
- package/esm2020/lib/locations/interfaces/esolve-location-record.interface.mjs +0 -2
- package/esm2020/lib/locations/interfaces/index.mjs +0 -2
- package/esm2020/lib/manufacturers/esolve-manufacturer-image-size.type.mjs +0 -2
- package/esm2020/lib/manufacturers/esolve-manufacturer-options.interface.mjs +0 -2
- package/esm2020/lib/manufacturers/esolve-manufacturer-record.interface.mjs +0 -2
- package/esm2020/lib/manufacturers/esolve-manufacturer.model.mjs +0 -61
- package/esm2020/lib/manufacturers/esolve-manufacturers.service.mjs +0 -71
- package/esm2020/lib/manufacturers/index.mjs +0 -10
- package/esm2020/lib/menu/classes/esolve-menu-item.model.mjs +0 -31
- package/esm2020/lib/menu/classes/index.mjs +0 -2
- package/esm2020/lib/menu/esolve-menu.service.mjs +0 -45
- package/esm2020/lib/menu/index.mjs +0 -5
- package/esm2020/lib/menu/interfaces/esolve-menu-tree-record.interface.mjs +0 -2
- package/esm2020/lib/menu/interfaces/index.mjs +0 -2
- package/esm2020/lib/menu/types/esolve-menu.type.mjs +0 -2
- package/esm2020/lib/menu/types/index.mjs +0 -2
- package/esm2020/lib/news/esolve-news-article-author-record.interface.mjs +0 -2
- package/esm2020/lib/news/esolve-news-article-author.model.mjs +0 -9
- package/esm2020/lib/news/esolve-news-article-list.model.mjs +0 -8
- package/esm2020/lib/news/esolve-news-article-options.interface.mjs +0 -2
- package/esm2020/lib/news/esolve-news-article-record.interface.mjs +0 -2
- package/esm2020/lib/news/esolve-news-article.model.mjs +0 -73
- package/esm2020/lib/news/esolve-news-group-record.interface.mjs +0 -2
- package/esm2020/lib/news/esolve-news-group.model.mjs +0 -25
- package/esm2020/lib/news/esolve-news.service.mjs +0 -117
- package/esm2020/lib/news/index.mjs +0 -10
- package/esm2020/lib/ng-esolve-connect.module.mjs +0 -42
- package/esm2020/lib/payment/classes/esolve-banking-details.model.mjs +0 -11
- package/esm2020/lib/payment/classes/esolve-payment-method.model.mjs +0 -37
- package/esm2020/lib/payment/classes/esolve-payment-result.model.mjs +0 -37
- package/esm2020/lib/payment/classes/esolve-vault-item-result.model.mjs +0 -20
- package/esm2020/lib/payment/classes/esolve-vault-item.model.mjs +0 -20
- package/esm2020/lib/payment/classes/index.mjs +0 -6
- package/esm2020/lib/payment/esolve-payment.service.mjs +0 -234
- package/esm2020/lib/payment/index.mjs +0 -5
- package/esm2020/lib/payment/interfaces/esolve-card-data.interface.mjs +0 -2
- package/esm2020/lib/payment/interfaces/esolve-payment-form-input.interface.mjs +0 -2
- package/esm2020/lib/payment/interfaces/esolve-payment-method-options.interface.mjs +0 -2
- package/esm2020/lib/payment/interfaces/esolve-payment-method-record.interface.mjs +0 -2
- package/esm2020/lib/payment/interfaces/esolve-payment-redirect-links.interface.mjs +0 -2
- package/esm2020/lib/payment/interfaces/esolve-payment-response.interface.mjs +0 -2
- package/esm2020/lib/payment/interfaces/esolve-payment-set-body.interface.mjs +0 -2
- package/esm2020/lib/payment/interfaces/esolve-payment-status.interface.mjs +0 -2
- package/esm2020/lib/payment/interfaces/esolve-vault-record.interface.mjs +0 -2
- package/esm2020/lib/payment/interfaces/esolve-vault-response.interface.mjs +0 -2
- package/esm2020/lib/payment/interfaces/index.mjs +0 -10
- package/esm2020/lib/payment/types/esolve-integration-type.type.mjs +0 -2
- package/esm2020/lib/payment/types/esolve-service-provider.type.mjs +0 -2
- package/esm2020/lib/payment/types/index.mjs +0 -3
- package/esm2020/lib/ranges/esolve-range-options.interface.mjs +0 -2
- package/esm2020/lib/ranges/esolve-range-record.interface.mjs +0 -2
- package/esm2020/lib/ranges/esolve-range.model.mjs +0 -54
- package/esm2020/lib/ranges/esolve-ranges.service.mjs +0 -76
- package/esm2020/lib/ranges/index.mjs +0 -5
- package/esm2020/lib/session/esolve-session-metadata.service.mjs +0 -75
- package/esm2020/lib/session/esolve-session.service.mjs +0 -181
- package/esm2020/lib/session/index.mjs +0 -4
- package/esm2020/lib/session/interfaces/esolve-session-data.interface.mjs +0 -2
- package/esm2020/lib/session/interfaces/esolve-session.interface.mjs +0 -2
- package/esm2020/lib/session/interfaces/index.mjs +0 -3
- package/esm2020/lib/shared/assets/esolve-asset-list.type.mjs +0 -2
- package/esm2020/lib/shared/assets/esolve-asset-options.interface.mjs +0 -2
- package/esm2020/lib/shared/assets/esolve-asset-record.interface.mjs +0 -2
- package/esm2020/lib/shared/assets/esolve-asset-type.type.mjs +0 -2
- package/esm2020/lib/shared/assets/esolve-asset.model.mjs +0 -77
- package/esm2020/lib/shared/assets/esolve-assets.service.mjs +0 -102
- package/esm2020/lib/shared/assets/esolve-linked-asset-record.interface.mjs +0 -2
- package/esm2020/lib/shared/assets/esolve-linked-asset.model.mjs +0 -10
- package/esm2020/lib/shared/assets/index.mjs +0 -13
- package/esm2020/lib/shared/cookie/esolve-cookie.service.mjs +0 -30
- package/esm2020/lib/shared/custom-fields/esolve-custom-fields.interface.mjs +0 -2
- package/esm2020/lib/shared/custom-fields/index.mjs +0 -2
- package/esm2020/lib/shared/errors/esolve-error-handler.service.mjs +0 -94
- package/esm2020/lib/shared/errors/esolve-http-error.model.mjs +0 -15
- package/esm2020/lib/shared/errors/index.mjs +0 -3
- package/esm2020/lib/shared/esolve-hex-hash.function.mjs +0 -26
- package/esm2020/lib/shared/esolve-list.model.mjs +0 -9
- package/esm2020/lib/shared/esolve-result.model.mjs +0 -8
- package/esm2020/lib/shared/esolve-url-target.type.mjs +0 -2
- package/esm2020/lib/shared/filters/classes/esolve-multiple-select-filter.model.mjs +0 -30
- package/esm2020/lib/shared/filters/classes/esolve-range-filter.model.mjs +0 -45
- package/esm2020/lib/shared/filters/classes/esolve-single-select-filter.model.mjs +0 -33
- package/esm2020/lib/shared/filters/classes/esolve-toggle-filter.model.mjs +0 -21
- package/esm2020/lib/shared/filters/classes/index.mjs +0 -6
- package/esm2020/lib/shared/filters/esolve-filter-factory.mjs +0 -59
- package/esm2020/lib/shared/filters/index.mjs +0 -5
- package/esm2020/lib/shared/filters/interfaces/esolve-filter-definitions.interface.mjs +0 -2
- package/esm2020/lib/shared/filters/interfaces/esolve-filter-record.interface.mjs +0 -2
- package/esm2020/lib/shared/filters/interfaces/esolve-filter.interface.mjs +0 -2
- package/esm2020/lib/shared/filters/interfaces/esolve-range-filter-record.interface.mjs +0 -2
- package/esm2020/lib/shared/filters/interfaces/esolve-select-filter-record.interface.mjs +0 -2
- package/esm2020/lib/shared/filters/interfaces/esolve-select-filter.interface.mjs +0 -2
- package/esm2020/lib/shared/filters/interfaces/index.mjs +0 -8
- package/esm2020/lib/shared/filters/types/esolve-filter-list.type.mjs +0 -2
- package/esm2020/lib/shared/filters/types/esolve-filter-record-list.type.mjs +0 -2
- package/esm2020/lib/shared/filters/types/esolve-filter-toggle.type.mjs +0 -2
- package/esm2020/lib/shared/filters/types/esolve-filter-type.type.mjs +0 -2
- package/esm2020/lib/shared/filters/types/esolve-range-filter-type.type.mjs +0 -2
- package/esm2020/lib/shared/filters/types/esolve-select-filter-type.type.mjs +0 -2
- package/esm2020/lib/shared/filters/types/index.mjs +0 -7
- package/esm2020/lib/shared/geocoder/esolve-geocode-address-record.interface.mjs +0 -2
- package/esm2020/lib/shared/geocoder/esolve-geocode-address-result.model.mjs +0 -12
- package/esm2020/lib/shared/geocoder/esolve-geocode-coords-result.model.mjs +0 -7
- package/esm2020/lib/shared/geocoder/esolve-geocode-result-record.interface.mjs +0 -2
- package/esm2020/lib/shared/geocoder/esolve-geocode-result.model.mjs +0 -11
- package/esm2020/lib/shared/geocoder/esolve-geocoder.service.mjs +0 -72
- package/esm2020/lib/shared/geocoder/index.mjs +0 -7
- package/esm2020/lib/shared/response/esolve-delete-response.interface.mjs +0 -2
- package/esm2020/lib/shared/response/esolve-delete-result.interface.mjs +0 -2
- package/esm2020/lib/shared/response/esolve-get-response.interface.mjs +0 -2
- package/esm2020/lib/shared/response/esolve-post-response-item.interface.mjs +0 -2
- package/esm2020/lib/shared/response/esolve-post-response-status.interface.mjs +0 -2
- package/esm2020/lib/shared/response/esolve-response-handler.service.mjs +0 -33
- package/esm2020/lib/shared/response/esolve-response-log-item.interface.mjs +0 -2
- package/esm2020/lib/shared/response/esolve-response-result.model.mjs +0 -9
- package/esm2020/lib/shared/response/esolve-response.interface.mjs +0 -2
- package/esm2020/lib/shared/response/esolve-set-response.interface.mjs +0 -2
- package/esm2020/lib/shared/response/index.mjs +0 -11
- package/esm2020/lib/shared/seo/esolve-seo-details.interface.mjs +0 -2
- package/esm2020/lib/shared/seo/esolve-seo-info.model.mjs +0 -11
- package/esm2020/lib/shared/seo/esolve-seo.service.mjs +0 -106
- package/esm2020/lib/shared/seo/index.mjs +0 -4
- package/esm2020/lib/shared/sort/esolve-sort-order.type.mjs +0 -2
- package/esm2020/lib/shared/sort/esolve-sort.interface.mjs +0 -2
- package/esm2020/lib/shared/sort/index.mjs +0 -5
- package/esm2020/lib/shipping/classes/esolve-shipping-cost.model.mjs +0 -12
- package/esm2020/lib/shipping/classes/esolve-shipping-method.model.mjs +0 -33
- package/esm2020/lib/shipping/classes/esolve-shipping-totals.model.mjs +0 -8
- package/esm2020/lib/shipping/classes/esolve-time-slot-config.model.mjs +0 -17
- package/esm2020/lib/shipping/classes/esolve-time-slot-date.model.mjs +0 -14
- package/esm2020/lib/shipping/classes/esolve-time-slot-days.model.mjs +0 -21
- package/esm2020/lib/shipping/classes/esolve-time-slot-times.model.mjs +0 -11
- package/esm2020/lib/shipping/classes/esolve-time-slot.model.mjs +0 -19
- package/esm2020/lib/shipping/classes/index.mjs +0 -9
- package/esm2020/lib/shipping/esolve-shipping.service.mjs +0 -150
- package/esm2020/lib/shipping/index.mjs +0 -5
- package/esm2020/lib/shipping/interfaces/esolve-shipping-cost-record.interface.mjs +0 -2
- package/esm2020/lib/shipping/interfaces/esolve-shipping-method-options.interface.mjs +0 -2
- package/esm2020/lib/shipping/interfaces/esolve-shipping-method-record.interface.mjs +0 -2
- package/esm2020/lib/shipping/interfaces/esolve-time-slot-config-record.interface.mjs +0 -2
- package/esm2020/lib/shipping/interfaces/esolve-time-slot-date-record.interface.mjs +0 -2
- package/esm2020/lib/shipping/interfaces/esolve-time-slot-days-record.interface.mjs +0 -2
- package/esm2020/lib/shipping/interfaces/esolve-time-slot-record.interface.mjs +0 -2
- package/esm2020/lib/shipping/interfaces/esolve-time-slot-times-record.interface.mjs +0 -2
- package/esm2020/lib/shipping/interfaces/index.mjs +0 -9
- package/esm2020/lib/shipping/types/esolve-insurance-calculation-method.type.mjs +0 -2
- package/esm2020/lib/shipping/types/esolve-shipping-calculation-method.type.mjs +0 -2
- package/esm2020/lib/shipping/types/esolve-shipping-location.type.mjs +0 -2
- package/esm2020/lib/shipping/types/index.mjs +0 -4
- package/esm2020/lib/specials/esolve-special-dates.model.mjs +0 -7
- package/esm2020/lib/specials/esolve-special-image-collection-record.interface.mjs +0 -2
- package/esm2020/lib/specials/esolve-special-image-collection.model.mjs +0 -25
- package/esm2020/lib/specials/esolve-special-image-record.interface.mjs +0 -2
- package/esm2020/lib/specials/esolve-special-image.model.mjs +0 -9
- package/esm2020/lib/specials/esolve-special-options.interface.mjs +0 -2
- package/esm2020/lib/specials/esolve-special-record.interface.mjs +0 -2
- package/esm2020/lib/specials/esolve-special.model.mjs +0 -40
- package/esm2020/lib/specials/esolve-specials.service.mjs +0 -82
- package/esm2020/lib/specials/index.mjs +0 -10
- package/esm2020/lib/stock/classes/esolve-additional-stock-image.model.mjs +0 -21
- package/esm2020/lib/stock/classes/esolve-colour.model.mjs +0 -8
- package/esm2020/lib/stock/classes/esolve-dependant-item.model.mjs +0 -11
- package/esm2020/lib/stock/classes/esolve-linked-stock-item.model.mjs +0 -9
- package/esm2020/lib/stock/classes/esolve-media-stock-item.model.mjs +0 -7
- package/esm2020/lib/stock/classes/esolve-recipe-stock-item.model.mjs +0 -9
- package/esm2020/lib/stock/classes/esolve-stock-badge.model.mjs +0 -11
- package/esm2020/lib/stock/classes/esolve-stock-group-item.model.mjs +0 -7
- package/esm2020/lib/stock/classes/esolve-stock-group.model.mjs +0 -13
- package/esm2020/lib/stock/classes/esolve-stock-image-collection.model.mjs +0 -25
- package/esm2020/lib/stock/classes/esolve-stock-image.model.mjs +0 -50
- package/esm2020/lib/stock/classes/esolve-stock-item-base.model.mjs +0 -312
- package/esm2020/lib/stock/classes/esolve-stock-item-list.model.mjs +0 -11
- package/esm2020/lib/stock/classes/esolve-stock-item.model.mjs +0 -24
- package/esm2020/lib/stock/classes/esolve-stock-lead-times.model.mjs +0 -9
- package/esm2020/lib/stock/classes/esolve-stock-price.model.mjs +0 -52
- package/esm2020/lib/stock/classes/esolve-stock-transaction-history.model.mjs +0 -7
- package/esm2020/lib/stock/classes/index.mjs +0 -18
- package/esm2020/lib/stock/esolve-stock.service.mjs +0 -418
- package/esm2020/lib/stock/index.mjs +0 -6
- package/esm2020/lib/stock/interfaces/esolve-additional-stock-image-record.interface.mjs +0 -2
- package/esm2020/lib/stock/interfaces/esolve-colour-record.interface.mjs +0 -2
- package/esm2020/lib/stock/interfaces/esolve-dependant-item-record.interface.mjs +0 -2
- package/esm2020/lib/stock/interfaces/esolve-linked-stock-record.interface.mjs +0 -2
- package/esm2020/lib/stock/interfaces/esolve-media-stock-item-options.interface.mjs +0 -2
- package/esm2020/lib/stock/interfaces/esolve-recipe-item-record.interface.mjs +0 -2
- package/esm2020/lib/stock/interfaces/esolve-recipe-stock-options.interface.mjs +0 -2
- package/esm2020/lib/stock/interfaces/esolve-stock-badge-record.interface.mjs +0 -2
- package/esm2020/lib/stock/interfaces/esolve-stock-base-record.interface.mjs +0 -2
- package/esm2020/lib/stock/interfaces/esolve-stock-filter-options.interface.mjs +0 -2
- package/esm2020/lib/stock/interfaces/esolve-stock-image-collection-record.interface.mjs +0 -2
- package/esm2020/lib/stock/interfaces/esolve-stock-item-options.interface.mjs +0 -2
- package/esm2020/lib/stock/interfaces/esolve-stock-lead-times-record.interface.mjs +0 -2
- package/esm2020/lib/stock/interfaces/esolve-stock-linked-category-record.interface.mjs +0 -2
- package/esm2020/lib/stock/interfaces/esolve-stock-record.interface.mjs +0 -2
- package/esm2020/lib/stock/interfaces/index.mjs +0 -17
- package/esm2020/lib/stock/types/esolve-media-stock-item-list.type.mjs +0 -2
- package/esm2020/lib/stock/types/esolve-media-stock-item-record.type.mjs +0 -2
- package/esm2020/lib/stock/types/esolve-media-stock-sort-field.type.mjs +0 -2
- package/esm2020/lib/stock/types/esolve-stock-group-item-record.type.mjs +0 -2
- package/esm2020/lib/stock/types/esolve-stock-image-size.type.mjs +0 -2
- package/esm2020/lib/stock/types/esolve-stock-sort-field.type.mjs +0 -2
- package/esm2020/lib/stock/types/esolve-stock-unit-of-measure.type.mjs +0 -2
- package/esm2020/lib/stock/types/index.mjs +0 -9
- package/esm2020/lib/suppliers/classes/esolve-supplier.model.mjs +0 -27
- package/esm2020/lib/suppliers/classes/index.mjs +0 -2
- package/esm2020/lib/suppliers/esolve-suppliers.service.mjs +0 -58
- package/esm2020/lib/suppliers/index.mjs +0 -5
- package/esm2020/lib/suppliers/interfaces/esolve-supplier-options.interface.mjs +0 -2
- package/esm2020/lib/suppliers/interfaces/esolve-supplier-record.interface.mjs +0 -2
- package/esm2020/lib/suppliers/interfaces/index.mjs +0 -3
- package/esm2020/lib/tags/esolve-tag-options.interface.mjs +0 -2
- package/esm2020/lib/tags/esolve-tag-phrase-match-mode.type.mjs +0 -2
- package/esm2020/lib/tags/esolve-tag-record.interface.mjs +0 -2
- package/esm2020/lib/tags/esolve-tag.model.mjs +0 -35
- package/esm2020/lib/tags/esolve-tags.service.mjs +0 -78
- package/esm2020/lib/tags/index.mjs +0 -10
- package/esm2020/lib/topics/esolve-topic-record.interface.mjs +0 -2
- package/esm2020/lib/topics/esolve-topic.model.mjs +0 -15
- package/esm2020/lib/topics/esolve-topic.service.mjs +0 -55
- package/esm2020/lib/topics/index.mjs +0 -4
- package/esm2020/lib/transactions/classes/esolve-transaction-address.model.mjs +0 -16
- package/esm2020/lib/transactions/classes/esolve-transaction-client.model.mjs +0 -13
- package/esm2020/lib/transactions/classes/esolve-transaction-item-price.model.mjs +0 -25
- package/esm2020/lib/transactions/classes/esolve-transaction-item.model.mjs +0 -72
- package/esm2020/lib/transactions/classes/esolve-transaction-list.model.mjs +0 -4
- package/esm2020/lib/transactions/classes/esolve-transaction-location.model.mjs +0 -4
- package/esm2020/lib/transactions/classes/esolve-transaction-payment-method.model.mjs +0 -10
- package/esm2020/lib/transactions/classes/esolve-transaction-shipping-method.model.mjs +0 -12
- package/esm2020/lib/transactions/classes/esolve-transaction-user.model.mjs +0 -11
- package/esm2020/lib/transactions/classes/esolve-transaction.model.mjs +0 -55
- package/esm2020/lib/transactions/classes/index.mjs +0 -11
- package/esm2020/lib/transactions/esolve-transactions.service.mjs +0 -132
- package/esm2020/lib/transactions/index.mjs +0 -5
- package/esm2020/lib/transactions/interfaces/esolve-transaction-client-record.interface.mjs +0 -2
- package/esm2020/lib/transactions/interfaces/esolve-transaction-item-record.interface.mjs +0 -2
- package/esm2020/lib/transactions/interfaces/esolve-transaction-options.interface.mjs +0 -2
- package/esm2020/lib/transactions/interfaces/esolve-transaction-payment-method-record.interface.mjs +0 -2
- package/esm2020/lib/transactions/interfaces/esolve-transaction-record.interface.mjs +0 -2
- package/esm2020/lib/transactions/interfaces/esolve-transaction-shipping-method-record.interface.mjs +0 -2
- package/esm2020/lib/transactions/interfaces/esolve-transaction-user-record.interface.mjs +0 -2
- package/esm2020/lib/transactions/interfaces/index.mjs +0 -8
- package/esm2020/lib/transactions/types/esolve-transaction-location-record.type.mjs +0 -2
- package/esm2020/lib/transactions/types/esolve-transaction-type.type.mjs +0 -2
- package/esm2020/lib/transactions/types/index.mjs +0 -3
- package/esm2020/lib/wishlist/classes/esolve-empty-wishlist-result.model.mjs +0 -4
- package/esm2020/lib/wishlist/classes/esolve-wishlist-item.model.mjs +0 -14
- package/esm2020/lib/wishlist/classes/index.mjs +0 -3
- package/esm2020/lib/wishlist/esolve-wishlist.service.mjs +0 -119
- package/esm2020/lib/wishlist/index.mjs +0 -6
- package/esm2020/lib/wishlist/interfaces/esolve-wishlist-item-record.interface.mjs +0 -2
- package/esm2020/lib/wishlist/interfaces/esolve-wishlist-item-response.interface.mjs +0 -2
- package/esm2020/lib/wishlist/interfaces/esolve-wishlist-set-item.interface.mjs +0 -2
- package/esm2020/lib/wishlist/interfaces/index.mjs +0 -4
- package/esm2020/lib/wishlist/types/esolve-wishlist-set-action.type.mjs +0 -2
- package/esm2020/lib/wishlist/types/esolve-wishlist.type.mjs +0 -2
- package/esm2020/lib/wishlist/types/index.mjs +0 -3
- package/esm2020/media/esolve-ng-esolve-connect-media.mjs +0 -5
- package/esm2020/media/index.mjs +0 -9
- package/esm2020/media/lib/classes/esolve-heading.model.mjs +0 -7
- package/esm2020/media/lib/classes/esolve-media-article.model.mjs +0 -72
- package/esm2020/media/lib/classes/esolve-media-group.model.mjs +0 -15
- package/esm2020/media/lib/classes/esolve-media-layout-section.model.mjs +0 -18
- package/esm2020/media/lib/classes/esolve-media-link.model.mjs +0 -8
- package/esm2020/media/lib/classes/index.mjs +0 -6
- package/esm2020/media/lib/components/index.mjs +0 -3
- package/esm2020/media/lib/components/media-layout/esolve-media-layout.component.mjs +0 -34
- package/esm2020/media/lib/components/media-section/esolve-media-section.component.mjs +0 -46
- package/esm2020/media/lib/esolve-connect-media-config.token.mjs +0 -3
- package/esm2020/media/lib/esolve-connect-media.config.mjs +0 -2
- package/esm2020/media/lib/interfaces/esolve-heading-record.interface.mjs +0 -2
- package/esm2020/media/lib/interfaces/esolve-layout-config.interface.mjs +0 -2
- package/esm2020/media/lib/interfaces/esolve-layout-section-config.interface.mjs +0 -2
- package/esm2020/media/lib/interfaces/esolve-media-group-record.interface.mjs +0 -2
- package/esm2020/media/lib/interfaces/esolve-media-layout-section-record.interface.mjs +0 -2
- package/esm2020/media/lib/interfaces/esolve-media-link-record.interface.mjs +0 -2
- package/esm2020/media/lib/interfaces/esolve-media-record.interface.mjs +0 -2
- package/esm2020/media/lib/interfaces/index.mjs +0 -8
- package/esm2020/media/lib/ng-esolve-connect-media.module.mjs +0 -44
- package/esm2020/media/lib/services/esolve-media-layout.service.mjs +0 -145
- package/esm2020/media/lib/services/esolve-media.service.mjs +0 -114
- package/esm2020/media/lib/services/index.mjs +0 -3
- package/esm2020/media/lib/types/esolve-media-layout-section-type.type.mjs +0 -2
- package/esm2020/media/lib/types/index.mjs +0 -2
- package/esm2020/notifications/esolve-ng-esolve-connect-notifications.mjs +0 -5
- package/esm2020/notifications/index.mjs +0 -6
- package/esm2020/notifications/lib/classes/esolve-notification-button-action.model.mjs +0 -15
- package/esm2020/notifications/lib/classes/esolve-notification-dates.model.mjs +0 -7
- package/esm2020/notifications/lib/classes/esolve-system-notification-type.model.mjs +0 -16
- package/esm2020/notifications/lib/classes/esolve-system-notification.model.mjs +0 -28
- package/esm2020/notifications/lib/classes/index.mjs +0 -5
- package/esm2020/notifications/lib/interfaces/esolve-notification-button-action-record.interface.mjs +0 -2
- package/esm2020/notifications/lib/interfaces/esolve-notification-date-record.interface.mjs +0 -2
- package/esm2020/notifications/lib/interfaces/esolve-notification-dates-record.interface.mjs +0 -2
- package/esm2020/notifications/lib/interfaces/esolve-system-notification-options.interface.mjs +0 -2
- package/esm2020/notifications/lib/interfaces/esolve-system-notification-record.interface.mjs +0 -2
- package/esm2020/notifications/lib/interfaces/esolve-system-notification-type-record.interface.mjs +0 -2
- package/esm2020/notifications/lib/interfaces/index.mjs +0 -7
- package/esm2020/notifications/lib/ng-esolve-connect-notifications.module.mjs +0 -15
- package/esm2020/notifications/lib/services/esolve-notifications.service.mjs +0 -49
- package/esm2020/notifications/lib/services/index.mjs +0 -2
- package/esm2020/notifications/lib/types/esolve-notification-position.type.mjs +0 -2
- package/esm2020/notifications/lib/types/esolve-notification-size.type.mjs +0 -2
- package/esm2020/notifications/lib/types/esolve-notification-type.type.mjs +0 -2
- package/esm2020/notifications/lib/types/index.mjs +0 -4
- package/esm2020/survey/esolve-ng-esolve-connect-survey.mjs +0 -5
- package/esm2020/survey/index.mjs +0 -6
- package/esm2020/survey/lib/classes/esolve-survey-answer-result.model.mjs +0 -11
- package/esm2020/survey/lib/classes/esolve-survey-check-question.model.mjs +0 -11
- package/esm2020/survey/lib/classes/esolve-survey-input-question.model.mjs +0 -11
- package/esm2020/survey/lib/classes/esolve-survey-options-question.model.mjs +0 -24
- package/esm2020/survey/lib/classes/esolve-survey-question.model.mjs +0 -10
- package/esm2020/survey/lib/classes/esolve-survey-radio-question.model.mjs +0 -11
- package/esm2020/survey/lib/classes/esolve-survey-rating-question.model.mjs +0 -17
- package/esm2020/survey/lib/classes/esolve-survey-select-question.model.mjs +0 -27
- package/esm2020/survey/lib/classes/esolve-survey-text-question.model.mjs +0 -10
- package/esm2020/survey/lib/classes/esolve-survey-textarea-question.model.mjs +0 -11
- package/esm2020/survey/lib/classes/esolve-survey-values-question.model.mjs +0 -11
- package/esm2020/survey/lib/classes/esolve-survey.model.mjs +0 -60
- package/esm2020/survey/lib/classes/index.mjs +0 -13
- package/esm2020/survey/lib/interfaces/esolve-survey-answer-response.interface.mjs +0 -2
- package/esm2020/survey/lib/interfaces/esolve-survey-option.interface.mjs +0 -2
- package/esm2020/survey/lib/interfaces/esolve-survey-options-question-record.interface.mjs +0 -2
- package/esm2020/survey/lib/interfaces/esolve-survey-options.interface.mjs +0 -2
- package/esm2020/survey/lib/interfaces/esolve-survey-question-record.type.mjs +0 -2
- package/esm2020/survey/lib/interfaces/esolve-survey-record.interface.mjs +0 -2
- package/esm2020/survey/lib/interfaces/esolve-survey-text-question-record.interface.mjs +0 -2
- package/esm2020/survey/lib/interfaces/esolve-survey-values-question-record.interface.mjs +0 -2
- package/esm2020/survey/lib/interfaces/index.mjs +0 -9
- package/esm2020/survey/lib/ng-esolve-connect-survey.module.mjs +0 -15
- package/esm2020/survey/lib/services/esolve-survey.service.mjs +0 -105
- package/esm2020/survey/lib/services/index.mjs +0 -2
- package/esm2020/survey/lib/types/esolve-survey-options-question-type.type.mjs +0 -2
- package/esm2020/survey/lib/types/esolve-survey-question-record-list.type.mjs +0 -2
- package/esm2020/survey/lib/types/esolve-survey-question-type.type.mjs +0 -2
- package/esm2020/survey/lib/types/esolve-survey-text-question-type.type.mjs +0 -2
- package/esm2020/survey/lib/types/esolve-survey-type.type.mjs +0 -2
- package/esm2020/survey/lib/types/esolve-survey-values-question-type.type.mjs +0 -2
- package/esm2020/survey/lib/types/index.mjs +0 -7
- package/fesm2015/esolve-ng-esolve-connect-media.mjs +0 -493
- package/fesm2015/esolve-ng-esolve-connect-media.mjs.map +0 -1
- package/fesm2015/esolve-ng-esolve-connect-notifications.mjs +0 -133
- package/fesm2015/esolve-ng-esolve-connect-notifications.mjs.map +0 -1
- package/fesm2015/esolve-ng-esolve-connect-survey.mjs +0 -323
- package/fesm2015/esolve-ng-esolve-connect-survey.mjs.map +0 -1
- package/fesm2015/esolve-ng-esolve-connect.mjs +0 -6382
- package/fesm2015/esolve-ng-esolve-connect.mjs.map +0 -1
- package/fesm2020/esolve-ng-esolve-connect-media.mjs +0 -485
- package/fesm2020/esolve-ng-esolve-connect-media.mjs.map +0 -1
- package/fesm2020/esolve-ng-esolve-connect-notifications.mjs +0 -131
- package/fesm2020/esolve-ng-esolve-connect-notifications.mjs.map +0 -1
- package/fesm2020/esolve-ng-esolve-connect-survey.mjs +0 -321
- package/fesm2020/esolve-ng-esolve-connect-survey.mjs.map +0 -1
- package/fesm2020/esolve-ng-esolve-connect.mjs +0 -6301
- package/fesm2020/esolve-ng-esolve-connect.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"esolve-ng-esolve-connect.mjs","sources":["../../../../libs/ng-esolve-connect/src/lib/core/esolve-connect-config.constant.ts","../../../../libs/ng-esolve-connect/src/lib/core/esolve-config.service.ts","../../../../libs/ng-esolve-connect/src/lib/shared/esolve-hex-hash.function.ts","../../../../libs/ng-esolve-connect/src/lib/shared/cookie/esolve-cookie.service.ts","../../../../libs/ng-esolve-connect/src/lib/session/esolve-session.service.ts","../../../../libs/ng-esolve-connect/src/lib/shared/esolve-result.model.ts","../../../../libs/ng-esolve-connect/src/lib/shared/response/esolve-response-result.model.ts","../../../../libs/ng-esolve-connect/src/lib/shared/response/esolve-response-handler.service.ts","../../../../libs/ng-esolve-connect/src/lib/shared/errors/esolve-http-error.model.ts","../../../../libs/ng-esolve-connect/src/lib/shared/errors/esolve-error-handler.service.ts","../../../../libs/ng-esolve-connect/src/lib/session/esolve-session-metadata.service.ts","../../../../libs/ng-esolve-connect/src/lib/auth/esolve-auth.service.ts","../../../../libs/ng-esolve-connect/src/lib/auth/esolve-auth-interceptor.service.ts","../../../../libs/ng-esolve-connect/src/lib/auth/providers/esolve-eurus-auto-login.provider.ts","../../../../libs/ng-esolve-connect/src/lib/ng-esolve-connect.module.ts","../../../../libs/ng-esolve-connect/src/lib/images/functions/is-esolve-cdn-path.function.ts","../../../../libs/ng-esolve-connect/src/lib/images/functions/is-legacy-esolve-cdn-path.function.ts","../../../../libs/ng-esolve-connect/src/lib/images/functions/process-image-src.function.ts","../../../../libs/ng-esolve-connect/src/lib/images/esolve-image-loader.provider.ts","../../../../libs/ng-esolve-connect/src/lib/images/directives/cdn-src.directive.ts","../../../../libs/ng-esolve-connect/src/lib/shared/esolve-list.model.ts","../../../../libs/ng-esolve-connect/src/lib/shared/filters/classes/esolve-multiple-select-filter.model.ts","../../../../libs/ng-esolve-connect/src/lib/shared/filters/classes/esolve-range-filter.model.ts","../../../../libs/ng-esolve-connect/src/lib/shared/filters/classes/esolve-single-select-filter.model.ts","../../../../libs/ng-esolve-connect/src/lib/shared/filters/classes/esolve-toggle-filter.model.ts","../../../../libs/ng-esolve-connect/src/lib/shared/filters/classes/index.ts","../../../../libs/ng-esolve-connect/src/lib/shared/filters/interfaces/index.ts","../../../../libs/ng-esolve-connect/src/lib/shared/filters/types/index.ts","../../../../libs/ng-esolve-connect/src/lib/shared/filters/esolve-filter-factory.ts","../../../../libs/ng-esolve-connect/src/lib/shared/sort/index.ts","../../../../libs/ng-esolve-connect/src/lib/shared/seo/esolve-seo-info.model.ts","../../../../libs/ng-esolve-connect/src/lib/shared/seo/esolve-seo.service.ts","../../../../libs/ng-esolve-connect/src/lib/shared/geocoder/esolve-geocode-address-result.model.ts","../../../../libs/ng-esolve-connect/src/lib/shared/geocoder/esolve-geocode-coords-result.model.ts","../../../../libs/ng-esolve-connect/src/lib/shared/geocoder/esolve-geocode-result.model.ts","../../../../libs/ng-esolve-connect/src/lib/shared/geocoder/esolve-geocoder.service.ts","../../../../libs/ng-esolve-connect/src/lib/shared/assets/esolve-linked-asset.model.ts","../../../../libs/ng-esolve-connect/src/lib/category-tree/esolve-category-tree-item.model.ts","../../../../libs/ng-esolve-connect/src/lib/category-tree/esolve-category-tree.service.ts","../../../../libs/ng-esolve-connect/src/lib/manufacturers/esolve-manufacturer.model.ts","../../../../libs/ng-esolve-connect/src/lib/manufacturers/esolve-manufacturers.service.ts","../../../../libs/ng-esolve-connect/src/lib/manufacturers/index.ts","../../../../libs/ng-esolve-connect/src/lib/ranges/esolve-range.model.ts","../../../../libs/ng-esolve-connect/src/lib/ranges/esolve-ranges.service.ts","../../../../libs/ng-esolve-connect/src/lib/tags/esolve-tag.model.ts","../../../../libs/ng-esolve-connect/src/lib/tags/esolve-tags.service.ts","../../../../libs/ng-esolve-connect/src/lib/tags/index.ts","../../../../libs/ng-esolve-connect/src/lib/topics/esolve-topic.model.ts","../../../../libs/ng-esolve-connect/src/lib/topics/esolve-topic.service.ts","../../../../libs/ng-esolve-connect/src/lib/shared/assets/esolve-asset.model.ts","../../../../libs/ng-esolve-connect/src/lib/shared/assets/esolve-assets.service.ts","../../../../libs/ng-esolve-connect/src/lib/shared/assets/index.ts","../../../../libs/ng-esolve-connect/src/lib/account/address/esolve-address.model.ts","../../../../libs/ng-esolve-connect/src/lib/account/address/esolve-address-result.model.ts","../../../../libs/ng-esolve-connect/src/lib/account/user-account/classes/esolve-user-account-business.model.ts","../../../../libs/ng-esolve-connect/src/lib/account/user-account/classes/esolve-user-account-contact.model.ts","../../../../libs/ng-esolve-connect/src/lib/account/user-account/classes/esolve-user-account-result.model.ts","../../../../libs/ng-esolve-connect/src/lib/account/user-account/classes/esolve-statement-ageing.model.ts","../../../../libs/ng-esolve-connect/src/lib/account/user-account/classes/esolve-statement-balances.model.ts","../../../../libs/ng-esolve-connect/src/lib/account/user-account/classes/esolve-statement-transaction.model.ts","../../../../libs/ng-esolve-connect/src/lib/account/user-account/classes/esolve-statement.model.ts","../../../../libs/ng-esolve-connect/src/lib/account/user-account/classes/esolve-user-client-account.model.ts","../../../../libs/ng-esolve-connect/src/lib/account/user-account/classes/esolve-user-account.model.ts","../../../../libs/ng-esolve-connect/src/lib/account/user-account/classes/esolve-user-client-account-balances.model.ts","../../../../libs/ng-esolve-connect/src/lib/account/password/esolve-change-password-result.model.ts","../../../../libs/ng-esolve-connect/src/lib/account/password/esolve-reset-password-result.model.ts","../../../../libs/ng-esolve-connect/src/lib/account/registration/esolve-registration-result.model.ts","../../../../libs/ng-esolve-connect/src/lib/account/confirmation/esolve-account-confirmation-result.model.ts","../../../../libs/ng-esolve-connect/src/lib/account/location/classes/esolve-location-update-result.model.ts","../../../../libs/ng-esolve-connect/src/lib/transactions/classes/esolve-transaction-address.model.ts","../../../../libs/ng-esolve-connect/src/lib/transactions/classes/esolve-transaction-client.model.ts","../../../../libs/ng-esolve-connect/src/lib/transactions/classes/esolve-transaction-item-price.model.ts","../../../../libs/ng-esolve-connect/src/lib/transactions/classes/esolve-transaction-item.model.ts","../../../../libs/ng-esolve-connect/src/lib/transactions/classes/esolve-transaction-list.model.ts","../../../../libs/ng-esolve-connect/src/lib/locations/classes/esolve-location-address.model.ts","../../../../libs/ng-esolve-connect/src/lib/locations/classes/esolve-location-contact-info.model.ts","../../../../libs/ng-esolve-connect/src/lib/locations/classes/esolve-location-geo.model.ts","../../../../libs/ng-esolve-connect/src/lib/locations/classes/esolve-location-pobox-address.model.ts","../../../../libs/ng-esolve-connect/src/lib/locations/classes/esolve-location-trading-day.model.ts","../../../../libs/ng-esolve-connect/src/lib/locations/classes/esolve-location-trading-times.model.ts","../../../../libs/ng-esolve-connect/src/lib/locations/classes/esolve-location.model.ts","../../../../libs/ng-esolve-connect/src/lib/locations/classes/index.ts","../../../../libs/ng-esolve-connect/src/lib/locations/esolve-locations.service.ts","../../../../libs/ng-esolve-connect/src/lib/transactions/classes/esolve-transaction-location.model.ts","../../../../libs/ng-esolve-connect/src/lib/transactions/classes/esolve-transaction-payment-method.model.ts","../../../../libs/ng-esolve-connect/src/lib/transactions/classes/esolve-transaction-shipping-method.model.ts","../../../../libs/ng-esolve-connect/src/lib/transactions/classes/esolve-transaction-user.model.ts","../../../../libs/ng-esolve-connect/src/lib/transactions/classes/esolve-transaction.model.ts","../../../../libs/ng-esolve-connect/src/lib/transactions/esolve-transactions.service.ts","../../../../libs/ng-esolve-connect/src/lib/cart/classes/esolve-empty-cart-result.model.ts","../../../../libs/ng-esolve-connect/src/lib/cart/classes/esolve-checkout-result.model.ts","../../../../libs/ng-esolve-connect/src/lib/cart/classes/esolve-cart-stock-item.model.ts","../../../../libs/ng-esolve-connect/src/lib/cart/classes/esolve-cart-item.model.ts","../../../../libs/ng-esolve-connect/src/lib/cart/classes/esolve-cart-totals.model.ts","../../../../libs/ng-esolve-connect/src/lib/cart/classes/esolve-transaction-analytics-data.model.ts","../../../../libs/ng-esolve-connect/src/lib/coupons/classes/esolve-coupon.model.ts","../../../../libs/ng-esolve-connect/src/lib/coupons/esolve-coupons.service.ts","../../../../libs/ng-esolve-connect/src/lib/coupons/index.ts","../../../../libs/ng-esolve-connect/src/lib/cart/esolve-cart.service.ts","../../../../libs/ng-esolve-connect/src/lib/account/esolve-account.service.ts","../../../../libs/ng-esolve-connect/src/lib/banners/esolve-banner.model.ts","../../../../libs/ng-esolve-connect/src/lib/banners/esolve-banner-image.model.ts","../../../../libs/ng-esolve-connect/src/lib/banners/esolve-banner-image-hotspot.model.ts","../../../../libs/ng-esolve-connect/src/lib/banners/esolve-banner.service.ts","../../../../libs/ng-esolve-connect/src/lib/banners/index.ts","../../../../libs/ng-esolve-connect/src/lib/menu/classes/esolve-menu-item.model.ts","../../../../libs/ng-esolve-connect/src/lib/menu/esolve-menu.service.ts","../../../../libs/ng-esolve-connect/src/lib/news/esolve-news-group.model.ts","../../../../libs/ng-esolve-connect/src/lib/news/esolve-news-article-author.model.ts","../../../../libs/ng-esolve-connect/src/lib/news/esolve-news-article.model.ts","../../../../libs/ng-esolve-connect/src/lib/news/esolve-news-article-list.model.ts","../../../../libs/ng-esolve-connect/src/lib/news/esolve-news.service.ts","../../../../libs/ng-esolve-connect/src/lib/stock/types/index.ts","../../../../libs/ng-esolve-connect/src/lib/stock/classes/esolve-colour.model.ts","../../../../libs/ng-esolve-connect/src/lib/stock/classes/esolve-stock-badge.model.ts","../../../../libs/ng-esolve-connect/src/lib/stock/classes/esolve-stock-price.model.ts","../../../../libs/ng-esolve-connect/src/lib/stock/classes/esolve-stock-lead-times.model.ts","../../../../libs/ng-esolve-connect/src/lib/stock/classes/esolve-stock-transaction-history.model.ts","../../../../libs/ng-esolve-connect/src/lib/stock/classes/esolve-stock-item-base.model.ts","../../../../libs/ng-esolve-connect/src/lib/stock/classes/esolve-dependant-item.model.ts","../../../../libs/ng-esolve-connect/src/lib/stock/classes/esolve-stock-group-item.model.ts","../../../../libs/ng-esolve-connect/src/lib/stock/classes/esolve-stock-group.model.ts","../../../../libs/ng-esolve-connect/src/lib/stock/classes/esolve-stock-item.model.ts","../../../../libs/ng-esolve-connect/src/lib/stock/classes/esolve-stock-item-list.model.ts","../../../../libs/ng-esolve-connect/src/lib/stock/classes/esolve-recipe-stock-item.model.ts","../../../../libs/ng-esolve-connect/src/lib/stock/classes/esolve-linked-stock-item.model.ts","../../../../libs/ng-esolve-connect/src/lib/stock/classes/esolve-media-stock-item.model.ts","../../../../libs/ng-esolve-connect/src/lib/stock/classes/esolve-stock-image.model.ts","../../../../libs/ng-esolve-connect/src/lib/stock/classes/esolve-additional-stock-image.model.ts","../../../../libs/ng-esolve-connect/src/lib/stock/classes/esolve-stock-image-collection.model.ts","../../../../libs/ng-esolve-connect/src/lib/stock/classes/index.ts","../../../../libs/ng-esolve-connect/src/lib/stock/interfaces/index.ts","../../../../libs/ng-esolve-connect/src/lib/stock/esolve-stock.service.ts","../../../../libs/ng-esolve-connect/src/lib/specials/esolve-special-image.model.ts","../../../../libs/ng-esolve-connect/src/lib/specials/esolve-special-image-collection.model.ts","../../../../libs/ng-esolve-connect/src/lib/specials/esolve-special-dates.model.ts","../../../../libs/ng-esolve-connect/src/lib/specials/esolve-special.model.ts","../../../../libs/ng-esolve-connect/src/lib/specials/esolve-specials.service.ts","../../../../libs/ng-esolve-connect/src/lib/payment/interfaces/index.ts","../../../../libs/ng-esolve-connect/src/lib/payment/classes/esolve-banking-details.model.ts","../../../../libs/ng-esolve-connect/src/lib/payment/classes/esolve-payment-method.model.ts","../../../../libs/ng-esolve-connect/src/lib/payment/classes/esolve-payment-result.model.ts","../../../../libs/ng-esolve-connect/src/lib/payment/classes/esolve-vault-item-result.model.ts","../../../../libs/ng-esolve-connect/src/lib/payment/classes/esolve-vault-item.model.ts","../../../../libs/ng-esolve-connect/src/lib/payment/esolve-payment.service.ts","../../../../libs/ng-esolve-connect/src/lib/shipping/classes/esolve-shipping-totals.model.ts","../../../../libs/ng-esolve-connect/src/lib/shipping/classes/esolve-shipping-cost.model.ts","../../../../libs/ng-esolve-connect/src/lib/shipping/classes/esolve-shipping-method.model.ts","../../../../libs/ng-esolve-connect/src/lib/shipping/classes/esolve-time-slot-date.model.ts","../../../../libs/ng-esolve-connect/src/lib/shipping/classes/esolve-time-slot-days.model.ts","../../../../libs/ng-esolve-connect/src/lib/shipping/classes/esolve-time-slot-times.model.ts","../../../../libs/ng-esolve-connect/src/lib/shipping/classes/esolve-time-slot.model.ts","../../../../libs/ng-esolve-connect/src/lib/shipping/classes/esolve-time-slot-config.model.ts","../../../../libs/ng-esolve-connect/src/lib/shipping/esolve-shipping.service.ts","../../../../libs/ng-esolve-connect/src/lib/enquiry/esolve-enquiry-result.model.ts","../../../../libs/ng-esolve-connect/src/lib/enquiry/esolve-enquiry.service.ts","../../../../libs/ng-esolve-connect/src/lib/wishlist/classes/esolve-wishlist-item.model.ts","../../../../libs/ng-esolve-connect/src/lib/wishlist/classes/esolve-empty-wishlist-result.model.ts","../../../../libs/ng-esolve-connect/src/lib/wishlist/esolve-wishlist.service.ts","../../../../libs/ng-esolve-connect/src/lib/suppliers/classes/esolve-supplier.model.ts","../../../../libs/ng-esolve-connect/src/lib/suppliers/esolve-suppliers.service.ts","../../../../libs/ng-esolve-connect/src/index.ts","../../../../libs/ng-esolve-connect/src/esolve-ng-esolve-connect.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport { EsolveConnectConfig } from './esolve-connect.config';\n\nexport const ESOLVE_CONNECT_CONFIG = new InjectionToken<EsolveConnectConfig>(\n 'esolve.connect.config',\n);\n","import { Injectable, Inject } from '@angular/core';\nimport { EsolveConnectConfig } from './esolve-connect.config';\nimport { ESOLVE_CONNECT_CONFIG } from './esolve-connect-config.constant';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveConfigService implements EsolveConnectConfig {\n public api_url = '';\n public wsid = '';\n public title_prefix: string;\n public title_suffix: string;\n public title_separator = '|';\n public default_seo_title: string;\n public default_seo_description: string;\n public default_seo_keywords: string;\n public native: boolean;\n public session_storage_key = '_ng_eslv_token';\n public coupon_storage_key = '_ng_eslv_coupons';\n public device_designation = 'web';\n\n public legacy_cdn?: string;\n public cdn?: string;\n public error_image_path?: string;\n\n constructor(@Inject(ESOLVE_CONNECT_CONFIG) config: EsolveConnectConfig) {\n if (config.api_url === '' || config.wsid === '') {\n throw new Error('Invalid eSolve Eurus config');\n }\n\n this.api_url = config.api_url;\n this.wsid = config.wsid;\n\n this.title_prefix = config.title_prefix ?? '';\n this.title_suffix = config.title_suffix ?? '';\n this.default_seo_title = config.default_seo_title ?? '';\n this.default_seo_description = config.default_seo_description ?? '';\n this.default_seo_keywords = config.default_seo_keywords ?? '';\n\n this.native = config.native ?? false;\n\n if (config.session_storage_key) {\n this.session_storage_key = config.session_storage_key;\n }\n\n if (config.title_separator) {\n this.title_separator = config.title_separator;\n }\n\n if (config.coupon_storage_key) {\n this.coupon_storage_key = config.coupon_storage_key;\n }\n\n if (this.native && config.device_designation) {\n this.device_designation = config.device_designation;\n }\n\n this.legacy_cdn = config.legacy_cdn;\n this.cdn = config.cdn;\n this.error_image_path = config.error_image_path;\n }\n}\n","/**\n * Generates a short hexadecimal hash that will be used to indicate a change in\n * state.\n *\n * NOTE: Not to be confused with an actual hash checksum, like MD5 or SHA256.\n * It should only be used to indicate that a state has changed. It should not be\n * used for encryption.\n *\n * @param values Raw strings and numbers to hash\n *\n * @returns Hexadecimal hash value\n */\nexport function esolveHexHash(...values: (string | number)[]): string {\n // Add an extra value to pad out hash\n values.push('esolve_eurus');\n\n // Create a string from the values\n const string = values.join('::');\n\n let hash = 0;\n\n for (let x = 0; x < string.length; x++) {\n const ch = string.charCodeAt(x);\n hash = (hash << 5) - hash + ch;\n hash = hash & hash;\n }\n\n return Math.abs(hash).toString(16);\n}\n","import { Injectable } from '@angular/core';\n\nimport { SsrCookieService } from 'ngx-cookie-service-ssr';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveCookieService {\n constructor(private cookieService: SsrCookieService) {}\n\n public check(name: string): boolean {\n return this.cookieService.check(name);\n }\n\n public get(name: string): string {\n return this.cookieService.get(name);\n }\n\n public set(\n name: string,\n value: string,\n expires?: Date,\n path?: string,\n domain?: string,\n secure?: boolean,\n ): void {\n this.cookieService.set(name, value, expires, path, domain, secure);\n }\n\n public delete(\n name: string,\n path?: string,\n domain?: string,\n secure?: boolean,\n ): void {\n this.cookieService.delete(name, path, domain, secure);\n }\n}\n","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n switchMap,\n takeUntil,\n timer,\n combineLatest,\n map,\n shareReplay,\n filter,\n distinctUntilChanged,\n} from 'rxjs';\n\nimport { fromUnixTime } from 'date-fns';\n\nimport { EsolveConfigService } from '../core';\nimport { EsolveCookieService } from '../shared/cookie/esolve-cookie.service';\nimport { esolveHexHash } from '../shared/esolve-hex-hash.function';\nimport { EsolveSession } from './interfaces';\n\ninterface SessionUpdateOptions {\n user_id?: number;\n location_id?: number;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveSessionService {\n private token$ = new BehaviorSubject<string>('');\n private user_id$ = new BehaviorSubject<number>(0);\n private location_id$ = new BehaviorSubject<number>(0);\n private state_hash = '';\n\n private _session: Observable<EsolveSession>;\n\n private storage_key = '';\n private is_browser: boolean;\n\n /* These are RxJS subjects used for managing the expiration of the user session. */\n private timer_start = new Subject<number | Date>();\n private timer_stop = new Subject<void>();\n private expire = new Subject<void>();\n private session_end = new Subject<void>();\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: object,\n private config: EsolveConfigService,\n private cookieService: EsolveCookieService,\n ) {\n this.setStorageKey();\n this._session = this.initSession();\n this.is_browser = isPlatformBrowser(this.platformId);\n\n this.getSession()\n .pipe(\n map(({ token, user_id, location_id }) => {\n return esolveHexHash(token, user_id, location_id);\n }),\n )\n .subscribe((hash) => {\n this.state_hash = hash;\n });\n\n this.timer_start\n .pipe(\n switchMap((time) => {\n return timer(time).pipe(takeUntil(this.timer_stop));\n }),\n )\n .subscribe(() => {\n // Stored time expired. Check if session is valid\n this.session_end.next();\n });\n\n // Kill session and reset state\n this.onExpire().subscribe(() => {\n this.reset();\n });\n }\n\n private initSession(): Observable<EsolveSession> {\n const session = {\n token: this.onTokenUpdate(),\n user_id: this.onUserIdUpdate(),\n location_id: this.onLocationIdUpdate(),\n };\n\n return combineLatest(session).pipe(shareReplay(1));\n }\n\n public isValid() {\n return this.getToken() !== '';\n }\n\n public getSession(): Observable<EsolveSession> {\n return this._session;\n }\n\n public getSessionValue(): EsolveSession {\n return {\n token: this.token$.getValue(),\n user_id: this.user_id$.getValue(),\n location_id: this.location_id$.getValue(),\n };\n }\n\n public onSessionEnd(): Observable<void> {\n return this.session_end.asObservable();\n }\n\n public onExpire(): Observable<void> {\n return this.expire.asObservable();\n }\n\n public expireSession(): void {\n this.expire.next();\n }\n\n public getToken(): string {\n return this.token$.getValue();\n }\n\n public onTokenUpdate(): Observable<string> {\n return this.token$.asObservable().pipe(\n filter((token) => token !== ''),\n distinctUntilChanged(),\n );\n }\n\n public updateToken(token: string): void {\n this.token$.next(token);\n }\n\n public getUserId(): number {\n return this.user_id$.getValue();\n }\n\n public onUserIdUpdate(): Observable<number> {\n return this.user_id$.asObservable().pipe(distinctUntilChanged());\n }\n\n public updateUserId(user_id: number): void {\n this.user_id$.next(user_id);\n }\n\n public getLocationId(): number {\n return this.location_id$.getValue();\n }\n\n public onLocationIdUpdate(): Observable<number> {\n return this.location_id$.asObservable().pipe(distinctUntilChanged());\n }\n\n public updateLocationId(location_id: number): void {\n this.location_id$.next(location_id);\n }\n\n public getStateHash(): string {\n return this.state_hash;\n }\n\n public stopTimer(): void {\n this.timer_stop.next();\n }\n\n public startTimer(time: number | Date): void {\n this.timer_start.next(time);\n }\n\n public getCachedSession(): string | null {\n return this.getCache();\n }\n\n public reset(): void {\n this.removeCache();\n this.timer_stop.next();\n }\n\n public handleSession(\n session: EsolveSession,\n expiry_date_unix: number,\n grace_unix: number,\n ): void {\n const expiry_date = fromUnixTime(expiry_date_unix);\n const grace_expiry_date = fromUnixTime(expiry_date_unix + grace_unix);\n\n this.setCache(session.token, grace_expiry_date);\n this.updateToken(session.token);\n this.updateUserId(session.user_id);\n this.updateLocationId(session.location_id);\n\n this.startTimer(expiry_date);\n }\n\n public handleUpdateSession({\n user_id,\n location_id,\n }: SessionUpdateOptions): void {\n if (typeof user_id !== 'undefined') {\n this.updateUserId(user_id);\n }\n\n if (typeof location_id !== 'undefined') {\n this.updateLocationId(location_id);\n }\n }\n\n private setStorageKey(): void {\n if (\n typeof this.config.session_storage_key === 'string' &&\n this.config.session_storage_key !== ''\n ) {\n this.storage_key = this.config.session_storage_key;\n }\n }\n\n private getCache(): string | null {\n const data = this.cookieService.get(this.storage_key);\n\n if (data !== '') {\n return data;\n }\n\n if (!this.is_browser || !localStorage) {\n return null;\n }\n\n return localStorage.getItem(this.storage_key);\n }\n\n private setCache(data: string, expiration_date?: Date): void {\n this.cookieService.set(this.storage_key, data, expiration_date, '/');\n\n if (!this.is_browser || !localStorage) {\n return;\n }\n\n localStorage.setItem(this.storage_key, data);\n }\n\n private removeCache(): void {\n this.cookieService.delete(this.storage_key, '/');\n\n if (!this.is_browser || !localStorage) {\n return;\n }\n\n localStorage.removeItem(this.storage_key);\n }\n}\n","export class EsolveResult {\n constructor(\n public status: string,\n public code: string,\n public message: string,\n ) {}\n}\n","import { EsolveResponseLogItem } from './esolve-response-log-item.interface';\nimport { EsolvePostResponseItem } from './esolve-post-response-item.interface';\n\nexport class EsolveResponseResult {\n public success_log: EsolveResponseLogItem[] = [];\n public error_log: EsolveResponseLogItem[] = [];\n\n constructor(response: EsolvePostResponseItem) {\n this.error_log.push(\n ...response.log.filter((log_item) => log_item.type === 'error'),\n );\n this.success_log.push(\n ...response.log.filter((log_item) => log_item.type === 'success'),\n );\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { EsolvePostResponseItem } from './esolve-post-response-item.interface';\nimport { EsolveSetResponse } from './esolve-set-response.interface';\nimport { EsolveResponseResult } from './esolve-response-result.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveResponseHandlerService {\n /**\n * Parse single HTTP response\n *\n * @param http_response HTTP Response to eSolve service\n * @param resultHandler Function to parse response to a result\n *\n * @returns Parsed result of response\n */\n public validateSingleHttpResponse<\n R extends EsolveResponseResult,\n T extends EsolvePostResponseItem,\n >(\n http_response: EsolveSetResponse<T>,\n resultHandler: (response: T) => R,\n ): R {\n if (\n http_response.responses === undefined ||\n http_response.responses.length <= 0\n ) {\n throw http_response;\n }\n\n const response = http_response.responses[0];\n\n if (\n response.status.state === 'error' ||\n response.status.state === 'none'\n ) {\n throw response;\n }\n\n return resultHandler(response);\n }\n}\n","export class EsolveHttpError extends Error {\n public readonly http_error = true;\n public type: 'error' | 'exception';\n public error_code: string;\n\n constructor(\n type: 'error' | 'exception',\n code: string,\n message: string,\n ...params: any[]\n ) {\n // Pass remaining arguments (including vendor specific ones) to parent constructor\n super(...[message, ...params]);\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, EsolveHttpError);\n }\n\n this.name = 'EsolveHttpError';\n this.type = type;\n this.error_code = code;\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { Observable, throwError } from 'rxjs';\n\nimport {\n EsolveResponse,\n EsolveDeleteResult,\n EsolvePostResponseItem,\n EsolveDeleteResponse,\n EsolveSetResponse,\n} from '../response';\nimport { EsolveHttpError } from './esolve-http-error.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveErrorHandlerService {\n public throwError(code: string, message: string): void {\n throw new EsolveHttpError('error', code, message);\n }\n\n public emitError(code: string, message: string): Observable<never> {\n return throwError(() => new EsolveHttpError('error', code, message));\n }\n\n public handleHttpPostError(\n service_type: string,\n errorRes:\n | HttpErrorResponse\n | EsolveSetResponse\n | EsolvePostResponseItem,\n ): Observable<never> {\n if (\n !(errorRes instanceof HttpErrorResponse) &&\n !('service_type' in errorRes) &&\n 'id' in errorRes &&\n 'esolve_id' in errorRes &&\n 'transaction_type' in errorRes &&\n 'status' in errorRes &&\n 'log' in errorRes\n ) {\n return throwError(() => this.parsePostErrors(errorRes));\n }\n\n return this.handleHttpError(service_type, errorRes);\n }\n\n public handleHttpDeleteError(\n service_type: string,\n errorRes: HttpErrorResponse | EsolveDeleteResponse | EsolveDeleteResult,\n ): Observable<never> {\n const is_not_base =\n !(errorRes instanceof HttpErrorResponse) &&\n !('service_type' in errorRes) &&\n 'id' in errorRes &&\n 'status' in errorRes &&\n 'message' in errorRes &&\n 'code' in errorRes;\n\n if (is_not_base) {\n return throwError(() => this.parseDeleteError(errorRes));\n }\n\n return this.handleHttpError(service_type, errorRes);\n }\n\n private handleHttpError(\n service_type: string,\n error_response: HttpErrorResponse | EsolveResponse,\n ): Observable<never> {\n if (error_response instanceof HttpErrorResponse) {\n if (error_response.status === 500) {\n const server_error = error_response.error;\n\n if (\n 'service_type' in server_error &&\n server_error.service_type === service_type\n ) {\n return throwError(() =>\n this.parseException(server_error as EsolveResponse),\n );\n }\n }\n } else {\n if (\n 'service_type' in error_response &&\n error_response.service_type === service_type\n ) {\n if (error_response.type === 'exception') {\n return throwError(() =>\n this.parseException(error_response),\n );\n } else if (error_response.type === 'error') {\n return throwError(() =>\n this.parseResponseError(error_response),\n );\n }\n }\n }\n\n return throwError(() => error_response);\n }\n\n private parseException(exception: EsolveResponse): EsolveHttpError {\n const error = new EsolveHttpError(\n 'exception',\n exception.additional_data.exception_type || 'unknown',\n exception.message || 'Unknown exception has occurred',\n );\n\n return error;\n }\n\n private parseResponseError(exception: EsolveResponse): EsolveHttpError {\n const error = new EsolveHttpError(\n 'error',\n exception.code || 'unknown',\n exception.message || 'Unknown error has occurred',\n );\n\n return error;\n }\n\n private parsePostErrors(response: EsolvePostResponseItem): EsolveHttpError {\n let error_code = 'unknown';\n let message = 'Unknown error has occurred';\n\n if (response.status.state === 'none' && response.log.length > 0) {\n error_code = 'no_response';\n message = 'Response was provided';\n } else if (response.status.state === 'error') {\n const login_error_log = response.log[0];\n\n error_code = login_error_log.message_code;\n message = login_error_log.message;\n }\n\n return new EsolveHttpError('error', error_code, message);\n }\n\n private parseDeleteError(result: EsolveDeleteResult): EsolveHttpError {\n return new EsolveHttpError('error', result.code, result.message);\n }\n}\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { EsolveConfigService } from '../core';\nimport { EsolveErrorHandlerService } from '../shared/errors';\nimport { EsolveResult } from '../shared/esolve-result.model';\nimport {\n EsolveDeleteResponse,\n EsolveGetResponse,\n EsolvePostResponseItem,\n EsolveResponseHandlerService,\n EsolveResponseResult,\n EsolveSetResponse,\n} from '../shared/response';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveSessionMetadataService {\n constructor(\n private config: EsolveConfigService,\n private http: HttpClient,\n private errorHandler: EsolveErrorHandlerService,\n private responseHandler: EsolveResponseHandlerService,\n ) {}\n\n public set(type: string, metadata: any): Observable<EsolveResponseResult> {\n return this.http\n .post<EsolveSetResponse<EsolvePostResponseItem>>(\n `${this.config.api_url}/set-sessions-metadata.php`,\n metadata,\n {\n headers: {\n 'Content-Type':\n 'application/x-www-form-urlencoded;charset=utf-8;',\n },\n responseType: 'json',\n observe: 'body',\n params: { type },\n },\n )\n .pipe(\n map((http_response) =>\n this.responseHandler.validateSingleHttpResponse(\n http_response,\n (response) => new EsolveResponseResult(response),\n ),\n ),\n catchError((errorRes: HttpErrorResponse | any) => {\n return this.errorHandler.handleHttpPostError(\n 'set-sessions-metadata',\n errorRes,\n );\n }),\n );\n }\n\n public get<T>(type: string): Observable<T> {\n return this.http\n .get<EsolveGetResponse<T>>(\n `${this.config.api_url}/get-sessions-metadata.php`,\n {\n params: { type },\n },\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n (Array.isArray(response.records) &&\n response.records.length === 0)\n ) {\n throw response;\n }\n\n return response.records as T;\n }),\n );\n }\n\n public delete(type: string): Observable<EsolveResult> {\n return this.http\n .delete<EsolveDeleteResponse>(\n `${this.config.api_url}/delete-sessions-metadata.php`,\n {\n params: { type },\n responseType: 'json',\n observe: 'body',\n },\n )\n .pipe(\n map((http_response) => {\n if (\n http_response.result === undefined ||\n http_response.result === null ||\n http_response.result.status !== 'success'\n ) {\n throw http_response;\n }\n\n return new EsolveResult(\n http_response.result.status,\n http_response.result.code,\n http_response.result.message,\n );\n }),\n catchError((errorRes: HttpErrorResponse | any) => {\n return this.errorHandler.handleHttpDeleteError(\n 'delete-sessions-metadata',\n errorRes,\n );\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpClient,\n HttpParams,\n HttpErrorResponse,\n HttpHeaders,\n} from '@angular/common/http';\n\nimport { firstValueFrom, Observable, of, throwError } from 'rxjs';\nimport { tap, catchError, map, switchMap } from 'rxjs/operators';\n\nimport { EsolveConfigService } from '../core';\nimport { EsolveErrorHandlerService } from '../shared/errors/esolve-error-handler.service';\nimport { EsolveSetResponse } from '../shared/response';\n\nimport { EsolveSessionService } from '../session';\n\nimport { EsolveLoginPostResponseItem } from './interfaces';\nimport {\n EsolveAuthGetResponse,\n EsolveAuthCheckResponse,\n EsolveAuthResult,\n} from './types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveAuthService {\n constructor(\n private config: EsolveConfigService,\n private http: HttpClient,\n private session: EsolveSessionService,\n private errorHandler: EsolveErrorHandlerService,\n ) {\n this.session\n .onSessionEnd()\n .pipe(\n switchMap(() => this.checkAccessToken()),\n catchError(() => of(null)),\n )\n .subscribe((result) => {\n if (result) {\n this.session.handleSession(\n {\n token: result.key,\n user_id: result.user_id,\n location_id: result.location_id,\n },\n result.expiry_time,\n result.grace_period,\n );\n } else {\n this.session.expireSession();\n }\n });\n\n this.session.onExpire().subscribe(() => {\n this.logout().catch(() => {\n // Deal with error gracefully\n });\n });\n }\n\n public getAccessToken(\n email: string,\n password: string,\n anonymous = false,\n ): Observable<EsolveAuthGetResponse> {\n let params = new HttpParams();\n\n if (anonymous) {\n params = params.set('anonymous', true);\n }\n\n if (email !== '') {\n params = params.set('email', email);\n }\n\n if (password !== '') {\n params = params.set('password', password);\n }\n\n return this.http\n .get<EsolveAuthGetResponse>(\n `${this.config.api_url}/get-access-token.php`,\n {\n params,\n headers: new HttpHeaders({\n 'Accept-Language': '*',\n }),\n },\n )\n .pipe(\n tap((response) => {\n if (\n response.type === 'error' ||\n response.type === 'exception'\n ) {\n throw response;\n }\n }),\n catchError(this.handleError),\n tap((response) => {\n this.handleAuthentication(response.additional_data);\n }),\n );\n }\n\n public getAnonymousSession(): Observable<EsolveAuthGetResponse> {\n return this.getAccessToken('', '', true);\n }\n\n public async autoLogin(): Promise<void> {\n let result = await this.restore();\n\n try {\n if (!result) {\n const response = await firstValueFrom(\n this.getAnonymousSession(),\n );\n\n result = response.additional_data;\n }\n\n this.handleAuthentication(result);\n } catch (error) {\n console.error(error);\n }\n }\n\n public login(email: string, password: string): Observable<number> {\n const body = {\n login: {\n email,\n password,\n },\n };\n\n return this.http\n .post<\n EsolveSetResponse<EsolveLoginPostResponseItem, EsolveAuthResult>\n >(`${this.config.api_url}/set-login.php`, body, {\n headers: {\n 'Content-Type':\n 'application/x-www-form-urlencoded;charset=utf-8;',\n },\n responseType: 'json',\n observe: 'body',\n })\n .pipe(\n map((response) => {\n if (\n response.responses === undefined ||\n response.responses.length <= 0\n ) {\n throw response;\n }\n\n const login_response = response.responses[0];\n const result = response.additional_data;\n\n if (\n login_response.status.state !== 'success' &&\n login_response.status.state !== 'warning'\n ) {\n throw login_response;\n }\n\n for (const response_log of login_response.log) {\n if (\n response_log.type === 'success' &&\n response_log.message_code === 'login_success'\n ) {\n const user_id = +login_response.esolve_id;\n\n if (Array.isArray(result)) {\n throw new Error('Invalid login');\n }\n\n this.handleAuthentication({\n key: result.key,\n user_id: result.user_id,\n location_id: result.location_id,\n expires: result.expires,\n expiry_time: result.expiry_time,\n grace_period: result.grace_period,\n });\n\n return user_id;\n }\n }\n\n throw login_response;\n }),\n catchError((errorRes: HttpErrorResponse) => {\n return this.errorHandler.handleHttpPostError(\n 'set-login',\n errorRes,\n );\n }),\n );\n }\n\n public async logout(): Promise<EsolveAuthGetResponse> {\n this.session.stopTimer();\n\n const response = await firstValueFrom(\n this.getAccessToken('', '', true),\n );\n\n return response;\n }\n\n public async validateCachedTokens(): Promise<boolean> {\n let valid = false;\n\n try {\n const session = this.session.getCachedSession();\n\n if (!session) {\n throw new Error('Invalid session');\n }\n\n const result = await this.checkAccessToken(session);\n\n if (!result.key) {\n throw new Error('Invalid key');\n }\n\n valid = true;\n } catch (error) {\n this.session.reset();\n }\n\n return valid;\n }\n\n private async checkAccessToken(\n token = this.session.getToken(),\n ): Promise<EsolveAuthResult> {\n if (token === '') {\n throw new Error('Invalid Token');\n }\n\n const response = await firstValueFrom(\n this.http.get<EsolveAuthCheckResponse>(\n `${this.config.api_url}/get-access-token.php`,\n {\n params: { key: token },\n headers: new HttpHeaders({\n 'Accept-Language': '*',\n Authorization: `Bearer ${token}`,\n }),\n },\n ),\n );\n\n if (response.type === 'error' || response.type === 'exception') {\n throw response;\n }\n\n const additional_data = response.additional_data;\n\n if (!additional_data.key_okay) {\n throw response;\n }\n\n if (additional_data.key) {\n token = additional_data.key;\n }\n\n const result: EsolveAuthResult = {\n key: token,\n expires: +additional_data.expires,\n expiry_time: +additional_data.expiry_time,\n grace_period: +additional_data.grace_period,\n location_id: +additional_data.location_id,\n user_id: +additional_data.user_id,\n };\n\n return result;\n }\n\n private async restore(): Promise<EsolveAuthResult | null> {\n try {\n const token = this.session.getCachedSession();\n\n if (!token) {\n throw new Error('Invalid token');\n }\n\n const result = await this.checkAccessToken(token);\n\n return result;\n } catch (error) {\n this.session.reset();\n }\n\n return null;\n }\n\n // Handlers\n\n private handleAuthentication(result: EsolveAuthResult): void {\n if (!result.key) {\n return;\n }\n\n this.session.handleSession(\n {\n token: result.key,\n user_id: +result.user_id,\n location_id: +result.location_id,\n },\n +result.expiry_time,\n +result.grace_period,\n );\n }\n\n private handleError(\n errorRes: EsolveAuthGetResponse | EsolveAuthCheckResponse,\n ): Observable<never> {\n const error = {\n message: 'An unknown error occurred',\n data: {},\n };\n\n if (!errorRes.type || !errorRes.service_type || !errorRes.message) {\n return throwError(() => error);\n }\n\n if (errorRes.message.trim() !== '') {\n error.message = errorRes.message;\n }\n\n if (errorRes.additional_data) {\n error.data = errorRes.additional_data;\n }\n\n return throwError(() => error);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpInterceptor,\n HttpRequest,\n HttpHandler,\n HttpEvent,\n} from '@angular/common/http';\n\nimport { Observable } from 'rxjs';\n\nimport { EsolveSessionService } from '../session';\nimport { EsolveConfigService } from '../core';\n\n@Injectable()\nexport class EsolveAuthInterceptorService implements HttpInterceptor {\n constructor(\n private config: EsolveConfigService,\n private session: EsolveSessionService,\n ) {}\n\n public intercept(\n req: HttpRequest<any>,\n next: HttpHandler,\n ): Observable<HttpEvent<any>> {\n if (req.url.startsWith(`${this.config.api_url}/`)) {\n const service_identifier = req.url.replace(\n `${this.config.api_url}/`,\n '',\n );\n\n const modified_url = req.url;\n let params = req.params;\n let headers = req.headers;\n\n if (this.session.isValid()) {\n if (service_identifier !== 'get-access-token.php') {\n headers = headers.set(\n 'Authorization',\n `Bearer ${this.session.getToken()}`,\n );\n }\n\n const state_hash = this.session.getStateHash();\n headers = headers.set('X-Esolve-State-Hash', state_hash);\n }\n\n params = params.set('ws_id', this.config.wsid);\n\n if (this.config.native && this.config.device_designation) {\n headers = headers.set(\n 'X-Device-Designation',\n this.config.device_designation,\n );\n }\n\n const modified_req = req.clone({\n url: modified_url,\n params,\n headers,\n });\n\n return next.handle(modified_req);\n }\n\n return next.handle(req);\n }\n}\n","import { APP_INITIALIZER, Provider } from '@angular/core';\n\nimport { EsolveAuthService } from '../esolve-auth.service';\n\nexport const ESOLVE_EURUS_AUTO_LOGIN: Provider = {\n provide: APP_INITIALIZER,\n multi: true,\n deps: [EsolveAuthService],\n useFactory: (auth: EsolveAuthService) => async () => {\n await auth.autoLogin();\n\n return true;\n },\n};\n","import { CommonModule } from '@angular/common';\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule, Provider } from '@angular/core';\n\nimport { SsrCookieService } from 'ngx-cookie-service-ssr';\n\nimport { ESOLVE_CONNECT_CONFIG, EsolveConnectConfig } from './core';\n\nimport { ESOLVE_EURUS_AUTO_LOGIN, EsolveAuthInterceptorService } from './auth';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, HttpClientModule],\n providers: [SsrCookieService],\n exports: [],\n})\nexport class NgEsolveConnectModule {\n public static forRoot(\n config: EsolveConnectConfig,\n auto_login = false,\n ): ModuleWithProviders<NgEsolveConnectModule> {\n const providers: Provider[] = [\n {\n provide: ESOLVE_CONNECT_CONFIG,\n useValue: config,\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: EsolveAuthInterceptorService,\n multi: true,\n },\n ];\n\n if (auto_login) {\n providers.push(ESOLVE_EURUS_AUTO_LOGIN);\n }\n\n return {\n ngModule: NgEsolveConnectModule,\n providers,\n };\n }\n}\n","export function isEsolveCdnPath(path: string): boolean {\n const cdn_regex =\n /^\\/?images\\/(?:stock|media|news|assets|banners|documents|manufacturers|ranges|categories|subcategories|tags)\\//;\n\n return cdn_regex.test(path);\n}\n","export function isLegacyEsolveCdnPath(path: string): boolean {\n const cdn_regex =\n /^\\/?images\\/(?:media|news|assets|banners|documents|manufacturers|ranges|categories|subcategories|tags)\\//;\n\n return cdn_regex.test(path);\n}\n","import { isEsolveCdnPath } from './is-esolve-cdn-path.function';\nimport { isLegacyEsolveCdnPath } from './is-legacy-esolve-cdn-path.function';\n\nfunction isAbsoluteUrl(src: string): boolean {\n return /^https?:\\/\\//.test(src);\n}\nfunction normalizePath(path: string): string {\n return path.endsWith('/') ? path.slice(0, -1) : path;\n}\n\nfunction normalizeSrc(src: string): string {\n return src.startsWith('/') ? src.slice(1) : src;\n}\n\nexport function processEsolveImageSrc(\n src: string,\n cdn_url = '',\n legacy_cdn_url = '',\n) {\n if (isAbsoluteUrl(src)) {\n return src;\n }\n\n cdn_url = normalizePath(cdn_url);\n legacy_cdn_url = normalizePath(legacy_cdn_url);\n\n if (cdn_url === '') {\n return src;\n }\n\n if (legacy_cdn_url === '') {\n legacy_cdn_url = cdn_url;\n }\n\n if (!isEsolveCdnPath(src)) {\n return src;\n }\n\n src = normalizeSrc(src);\n\n if (isLegacyEsolveCdnPath(src)) {\n return `${legacy_cdn_url}/${src}`;\n }\n\n return `${cdn_url}/${src}`;\n}\n","import { ImageLoaderConfig, IMAGE_LOADER } from '@angular/common';\nimport { Provider } from '@angular/core';\n\nimport { EsolveConfigService } from '../core';\nimport { processEsolveImageSrc } from './functions';\n\nexport const ESOLVE_IMAGE_LOADER_PROVIDER: Provider = {\n provide: IMAGE_LOADER,\n useFactory: (esolveConfig: EsolveConfigService) => {\n return (config: ImageLoaderConfig) => {\n return processEsolveImageSrc(\n config.src,\n esolveConfig.cdn,\n esolveConfig.legacy_cdn,\n );\n };\n },\n deps: [EsolveConfigService],\n};\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnChanges,\n} from '@angular/core';\n\nimport { EsolveConfigService } from '../../core';\nimport { processEsolveImageSrc } from '../functions';\n\n/**\n * An alternative to optimised images to load a new image\n */\n@Directive({\n selector: '[eslvCdnSrc]',\n standalone: true,\n})\nexport class EsolveCdnSrcDirective implements OnChanges {\n @Input('eslvCdnSrc') public src = '';\n private no_image = false;\n private error_image_path = '/assets/no_image.jpg';\n\n constructor(\n private el: ElementRef<HTMLImageElement | HTMLSourceElement>,\n private config: EsolveConfigService,\n ) {\n if (this.config.error_image_path) {\n this.error_image_path = this.config.error_image_path;\n }\n\n if (this.isImage(this.el.nativeElement)) {\n this.el.nativeElement.loading = 'lazy';\n }\n }\n\n public ngOnChanges(): void {\n this.init();\n }\n\n @HostListener('error')\n public onError() {\n this.setErrorImage();\n }\n\n public init(): void {\n this.no_image = false;\n\n if (this.src === '') {\n this.setErrorImage();\n\n return;\n }\n\n const image_src = processEsolveImageSrc(\n this.src,\n this.config.cdn,\n this.config.legacy_cdn,\n );\n\n this.setSrc(image_src);\n }\n\n private setSrc(src: string) {\n if (this.isImage(this.el.nativeElement)) {\n this.el.nativeElement.src = src;\n } else {\n this.el.nativeElement.srcset = src;\n }\n }\n\n private setErrorImage() {\n if (this.no_image) {\n return;\n }\n\n this.setSrc(this.error_image_path);\n this.no_image = true;\n }\n\n private isImage(\n el: HTMLImageElement | HTMLSourceElement,\n ): el is HTMLImageElement {\n return 'loading' in this.el.nativeElement;\n }\n}\n","export class EsolveList<T> {\n constructor(\n public items: T[] = [],\n public page: number = 0,\n public rows: number = 0,\n public total: number = 0,\n ) {}\n}\n","import { HttpParams } from '@angular/common/http';\n\nimport { EsolveSelectFilter } from '../interfaces';\n\nexport class EsolveMultipleSelectFilter implements EsolveSelectFilter {\n public readonly type = 'multiple';\n public options: (string | number)[] = [];\n\n private values?: (string | number)[];\n\n constructor(public field: string, options?: (string | number)[]) {\n if (options) {\n this.options = options;\n }\n }\n\n public setValue(values: (string | number)[]) {\n this.values = values;\n }\n\n public toHttpParams(): { [x: string]: string | (string | number)[] };\n public toHttpParams(http_params: HttpParams): HttpParams;\n public toHttpParams(\n http_params?: HttpParams,\n ): HttpParams | { [x: string]: string | (string | number)[] } {\n if (!this.values) {\n throw new Error('No values set');\n }\n\n const base_property = `filter[${this.field}]`;\n const type_property = base_property + '[type]';\n const values_property = base_property + '[values][]';\n\n const params = {\n [type_property]: this.type,\n [values_property]: this.values,\n };\n\n if (http_params) {\n return http_params.appendAll(params);\n }\n\n return params;\n }\n}\n","import { HttpParams } from '@angular/common/http';\n\nimport { EsolveFilter } from '../interfaces';\n\nexport class EsolveRangeFilter implements EsolveFilter {\n public readonly type = 'range';\n public min = 0;\n public max = 0;\n public options = {\n min: 0,\n max: 0,\n };\n\n constructor(public field: string, min = 0, max = 0) {\n this.options.min = min;\n this.options.max = max;\n\n if (max > 0 && min > max) {\n this.options.min = max;\n this.options.max = min;\n }\n }\n\n public setValue(min: number, max: number): void {\n this.min = min;\n this.max = max;\n\n if (max > 0 && min > max) {\n this.min = max;\n this.max = min;\n }\n }\n\n public toHttpParams(): { [x: string]: string | number };\n public toHttpParams(http_params: HttpParams): HttpParams;\n public toHttpParams(\n http_params?: HttpParams,\n ): HttpParams | { [x: string]: string | number } {\n if (this.min <= 0 && this.max <= 0) {\n throw new Error('No values set');\n }\n\n const base_property = `filter[${this.field}]`;\n const type_property = base_property + '[type]';\n const min_property = base_property + '[min]';\n const max_property = base_property + '[max]';\n\n const params = {\n [type_property]: this.type,\n [min_property]: this.min,\n [max_property]: this.max,\n };\n\n if (http_params) {\n return http_params.appendAll(params);\n }\n\n return params;\n }\n}\n","import { HttpParams } from '@angular/common/http';\n\nimport { EsolveSelectFilter } from '../interfaces';\n\nexport class EsolveSingleSelectFilter implements EsolveSelectFilter {\n public readonly type = 'single';\n public options: (string | number)[] = [];\n\n private value?: string | number;\n\n constructor(field: string, options: (string | number)[]);\n constructor(field: string, value: string | number);\n constructor(\n public field: string,\n options_or_value: string | number | (string | number)[],\n ) {\n if (Array.isArray(options_or_value)) {\n this.options = options_or_value;\n } else {\n this.setValue(options_or_value);\n }\n }\n\n public setValue(value: string | number) {\n this.value = value;\n }\n\n public toHttpParams(): { [x: string]: string | number };\n public toHttpParams(http_params: HttpParams): HttpParams;\n public toHttpParams(\n http_params?: HttpParams,\n ): HttpParams | { [x: string]: string | number } {\n if (!this.value) {\n throw new Error('No values set');\n }\n\n const base_property = `filter[${this.field}]`;\n const type_property = base_property + '[type]';\n const values_property = base_property + '[value]';\n\n const params = {\n [type_property]: this.type,\n [values_property]: this.value,\n };\n\n if (http_params) {\n return http_params.appendAll(params);\n }\n\n return params;\n }\n}\n","import { HttpParams } from '@angular/common/http';\nimport { EsolveFilter } from '../interfaces';\n\nexport class EsolveToggleFilter implements EsolveFilter {\n public readonly type = 'toggle';\n\n constructor(public field: string, private value: boolean) {}\n\n public toHttpParams(): { [x: string]: string | number };\n public toHttpParams(http_params: HttpParams): HttpParams;\n public toHttpParams(\n http_params?: HttpParams,\n ): HttpParams | { [x: string]: string | number } {\n const base_property = `filter[${this.field}]`;\n const type_property = base_property + '[type]';\n const values_property = base_property + '[value]';\n\n const params = {\n [type_property]: this.type,\n [values_property]: this.value ? 1 : 0,\n };\n\n if (http_params) {\n return http_params.appendAll(params);\n }\n\n return params;\n }\n}\n","// Classes\nexport * from './esolve-multiple-select-filter.model';\nexport * from './esolve-range-filter.model';\nexport * from './esolve-single-select-filter.model';\nexport * from './esolve-toggle-filter.model';\n","// Interfaces\nexport * from './esolve-filter-definitions.interface';\nexport * from './esolve-filter-record.interface';\nexport * from './esolve-filter.interface';\nexport * from './esolve-range-filter-record.interface';\nexport * from './esolve-select-filter-record.interface';\nexport * from './esolve-select-filter.interface';\n","// Types\nexport * from './esolve-filter-list.type';\nexport * from './esolve-filter-record-list.type';\nexport * from './esolve-filter-type.type';\nexport * from './esolve-range-filter-type.type';\nexport * from './esolve-select-filter-type.type';\n","import { HttpParams } from '@angular/common/http';\n\nimport {\n EsolveMultipleSelectFilter,\n EsolveRangeFilter,\n EsolveSingleSelectFilter,\n EsolveToggleFilter,\n} from './classes';\nimport { EsolveFilter, EsolveFilterDefinitions } from './interfaces';\n\nexport function createRangeWithValue(\n field: string,\n min = 0,\n max = 0,\n): EsolveRangeFilter {\n const filter = new EsolveRangeFilter(field);\n filter.setValue(min, max);\n\n return filter;\n}\n\nexport function createSingleSelectWithValue(\n field: string,\n value: string | number,\n): EsolveSingleSelectFilter {\n const filter = new EsolveSingleSelectFilter(field, value);\n\n return filter;\n}\n\nexport function createToggleSelectWithValue(\n field: string,\n value: boolean,\n): EsolveToggleFilter {\n const filter = new EsolveToggleFilter(field, value);\n\n return filter;\n}\n\nexport function createMultipleSelectWithValue(\n field: string,\n value: (string | number)[],\n): EsolveMultipleSelectFilter {\n const filter = new EsolveMultipleSelectFilter(field);\n filter.setValue(value);\n\n return filter;\n}\n\nexport function covertFromObj(obj: EsolveFilterDefinitions): EsolveFilter[] {\n const filters: EsolveFilter[] = [];\n\n for (const field in obj) {\n const value = obj[field];\n let filter = null;\n\n if (Array.isArray(value)) {\n filter = createMultipleSelectWithValue(field, value);\n } else if (typeof value === 'object') {\n filter = createRangeWithValue(field, value.min, value.max);\n } else if (typeof value === 'boolean') {\n filter = createToggleSelectWithValue(field, value);\n } else {\n filter = createSingleSelectWithValue(field, value);\n }\n\n if (filter) {\n filters.push(filter);\n }\n }\n\n return filters;\n}\n\nexport function convertToHttpParams(filters: EsolveFilter[]): {\n [x: string]: string | number | (string | number)[];\n};\n\nexport function convertToHttpParams(\n filters: EsolveFilter[],\n http_params: HttpParams,\n): HttpParams;\n\nexport function convertToHttpParams(\n filters: EsolveFilter[],\n http_params?: HttpParams,\n): HttpParams | { [x: string]: string | number | (string | number)[] } {\n if (http_params) {\n for (const filter of filters) {\n http_params = filter.toHttpParams(http_params);\n }\n\n return http_params;\n }\n\n let params = {};\n\n for (const filter of filters) {\n params = {\n ...params,\n ...filter.toHttpParams(),\n };\n }\n\n return params;\n}\n","// Types\nexport * from './esolve-sort-order.type';\n// Interfaces\nexport * from './esolve-sort.interface';\n","/**\n * Search Engine Optimization information.\n */\nexport class EsolveSeoInfo {\n constructor(\n public title: string = '',\n public description: string = '',\n public keywords: string = '',\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\n\nimport { EsolveConfigService } from '../../core/esolve-config.service';\nimport { EsolveSeoInfo } from './esolve-seo-info.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveSeoService {\n private title_prefix = '';\n private title_suffix = '';\n private title_separator = '|';\n\n private default_seo_title = '';\n private default_seo_description = '';\n private default_seo_keywords = '';\n\n constructor(\n private config: EsolveConfigService,\n private title: Title,\n private meta: Meta,\n ) {\n this.init();\n }\n\n /**\n * Sets SEO tags for page\n * @param seoInfo SEO object\n */\n public setTags(seoInfo: EsolveSeoInfo): void {\n seoInfo = this.validateAndSanitizeSeoInfo(seoInfo);\n\n this.setPageTitleTags(seoInfo.title);\n this.setPageDescriptionTags(seoInfo.description);\n this.setPageKeywordsTags(seoInfo.keywords);\n }\n\n private init(): void {\n this.title_prefix = this.config.title_prefix;\n this.title_suffix = this.config.title_suffix;\n this.title_separator = this.config.title_separator;\n this.default_seo_title = this.config.default_seo_title;\n this.default_seo_description = this.config.default_seo_description;\n this.default_seo_keywords = this.config.default_seo_keywords;\n }\n\n private setPageTitleTags(title: string): void {\n this.title.setTitle(title);\n this.meta.updateTag({ property: 'og:title', content: title });\n }\n\n private setPageDescriptionTags(description: string): void {\n this.meta.updateTag({ name: 'description', content: description });\n this.meta.updateTag({\n property: 'og:description',\n content: description,\n });\n }\n\n private setPageKeywordsTags(keywords: string): void {\n this.meta.updateTag({ name: 'keywords', content: keywords });\n }\n\n private validateAndSanitizeSeoInfo(seo_info: EsolveSeoInfo): EsolveSeoInfo {\n const pageSeo = new EsolveSeoInfo(\n this.default_seo_title,\n this.default_seo_description,\n this.default_seo_keywords,\n );\n\n if (seo_info.description.trim() !== '') {\n pageSeo.description = seo_info.description;\n }\n\n if (seo_info.title.trim() !== '') {\n const titlePartsArray = [];\n\n if (this.title_prefix !== '') {\n titlePartsArray.push(this.title_prefix);\n\n if (this.title_separator !== '') {\n titlePartsArray.push(this.title_separator);\n }\n }\n\n titlePartsArray.push(seo_info.title);\n\n if (this.title_suffix !== '') {\n if (this.title_separator !== '') {\n titlePartsArray.push(this.title_separator);\n }\n\n titlePartsArray.push(this.title_suffix);\n }\n\n pageSeo.title = titlePartsArray.join(' ');\n\n if (seo_info.keywords.trim() === '') {\n const clean_title = seo_info.title\n .replace(/[^a-z0-9. ]+/gi, '')\n .trim();\n const keywords = clean_title.split(' ');\n const clean_keywords: string[] = [];\n\n for (let keyword of keywords) {\n keyword = keyword.trim();\n if (keyword.length > 2) {\n keyword = keyword.toLocaleLowerCase();\n if (!clean_keywords.includes(keyword)) {\n clean_keywords.push(keyword);\n }\n }\n }\n\n seo_info.keywords = clean_keywords.join(',');\n }\n }\n\n if (seo_info.keywords.trim() !== '') {\n pageSeo.keywords = seo_info.keywords;\n }\n\n return pageSeo;\n }\n}\n","export class EsolveGeocodeAddressResult {\n constructor(\n public street_number: string,\n public street: string,\n public suburb: string,\n public city: string,\n public province: string,\n public country: string,\n public postal_code: string,\n ) {}\n}\n","export class EsolveGeocodeCoordsResult {\n constructor(public latitude: number, public longitude: number) {}\n}\n","import { EsolveGeocodeAddressResult } from './esolve-geocode-address-result.model';\nimport { EsolveGeocodeCoordsResult } from './esolve-geocode-coords-result.model';\n\nexport class EsolveGeocodeResult {\n constructor(\n public formatted_address: string,\n public address: EsolveGeocodeAddressResult,\n public coords: EsolveGeocodeCoordsResult,\n public status: string,\n public checksum: string,\n public cached: boolean,\n ) {}\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { EsolveConnectConfig } from '../../core/esolve-connect.config';\nimport { ESOLVE_CONNECT_CONFIG } from '../../core/esolve-connect-config.constant';\nimport { EsolveGetResponse } from '../response';\n\nimport { EsolveGeocodeResultRecord } from './esolve-geocode-result-record.interface';\nimport { EsolveGeocodeResult } from './esolve-geocode-result.model';\nimport { EsolveGeocodeAddressResult } from './esolve-geocode-address-result.model';\nimport { EsolveGeocodeCoordsResult } from './esolve-geocode-coords-result.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveGeocoderService {\n constructor(\n @Inject(ESOLVE_CONNECT_CONFIG) private config: EsolveConnectConfig,\n private http: HttpClient,\n ) {}\n\n public geocode(\n street_number: string,\n street: string,\n suburb: string,\n city: string,\n province: string,\n country: string,\n postal_code: string,\n ): Observable<EsolveGeocodeResult> {\n return this.http\n .get<EsolveGetResponse<EsolveGeocodeResultRecord>>(\n `${this.config.api_url}/get-geocode.php`,\n {\n params: {\n street_number,\n street,\n suburb,\n city,\n province,\n country,\n postal_code,\n },\n },\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n Array.isArray(response.records)\n ) {\n throw response;\n }\n\n const record = response.records;\n\n return this.processGeocodeResult(record);\n }),\n );\n }\n\n public reverseGeocode(\n latitude: number,\n longitude: number,\n ): Observable<EsolveGeocodeResult> {\n return this.http\n .get<EsolveGetResponse<EsolveGeocodeResultRecord>>(\n `${this.config.api_url}/get-geocode.php`,\n {\n params: {\n latitude: latitude,\n longitude: longitude,\n },\n },\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n Array.isArray(response.records)\n ) {\n throw response;\n }\n\n const record = response.records;\n\n return this.processGeocodeResult(record);\n }),\n );\n }\n\n private processGeocodeResult(\n record: EsolveGeocodeResultRecord,\n ): EsolveGeocodeResult {\n const geocode_address = new EsolveGeocodeAddressResult(\n record.address.street_number,\n record.address.street,\n record.address.suburb,\n record.address.city,\n record.address.province,\n record.address.country,\n record.address.postal_code,\n );\n\n const geocode_coords = new EsolveGeocodeCoordsResult(\n record.latitude,\n record.longitude,\n );\n\n const geocode_result = new EsolveGeocodeResult(\n record.formatted_address,\n geocode_address,\n geocode_coords,\n record.status,\n record.checksum,\n record.cached,\n );\n\n return geocode_result;\n }\n}\n","import { EsolveAssetType } from './esolve-asset-type.type';\nimport { EsolveLinkedAssetRecord } from './esolve-linked-asset-record.interface';\n\nexport class EsolveLinkedAsset {\n public id: number;\n public name: string;\n public type: EsolveAssetType;\n public description: string;\n public src: string;\n\n constructor(record: EsolveLinkedAssetRecord) {\n this.id = +record.id;\n this.name = record.name;\n this.type = record.type;\n this.description = record.description;\n this.src = record.src;\n }\n}\n","import { EsolveSeoInfo } from '../shared/seo/esolve-seo-info.model';\nimport { EsolveSeoDetails } from '../shared/seo/esolve-seo-details.interface';\n\nexport class EsolveCategoryTreeItem implements EsolveSeoDetails {\n public id = '';\n public seo_details: EsolveSeoInfo;\n public total_stock?: number;\n public children?: EsolveCategoryTreeItem[];\n\n private image_path = '';\n\n public get small_image_src(): string {\n return this.getImagePath('small');\n }\n\n public get thumbnail_image_src(): string {\n return this.getImagePath('thumb');\n }\n\n public get tiny_image_src(): string {\n return this.getImagePath('tiny');\n }\n\n constructor(\n public type: 'category' | 'subcategory',\n public esolve_id: string | number,\n public parent_id: string,\n public description: string,\n public sef_description: string,\n public short_description: string,\n public sort_priority: number,\n public active: boolean,\n public display_only: boolean,\n private image_name: string,\n seo_title: string,\n seo_keywords: string,\n seo_description: string,\n children?: EsolveCategoryTreeItem[],\n ) {\n if (this.type === 'category') {\n this.id = `<<CAT>>${this.esolve_id}`;\n\n if (children != null) {\n this.children = children;\n }\n\n this.image_path = '/images/categories/';\n } else {\n this.id = `<<SUB>>${this.esolve_id}`;\n this.image_path = '/images/subcategories/';\n }\n\n if (seo_title.trim() === '') {\n seo_title = this.description;\n }\n\n this.seo_details = new EsolveSeoInfo(\n seo_title,\n seo_description,\n seo_keywords,\n );\n }\n\n public getImagePath(image_size: 'small' | 'thumb' | 'tiny'): string {\n if (this.image_name !== '') {\n return `${this.image_path}${image_size}/${this.image_name}`;\n }\n\n return '';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\n\nimport { Observable, throwError } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { EsolveGetResponse } from '../shared/response';\nimport { EsolveConfigService } from '../core';\n\nimport { EsolveCategoryRecord } from './esolve-category-record.interface';\nimport { EsolveSubcategoryRecord } from './esolve-subcategory-record.interface';\nimport { EsolveCategoryTreeItem } from './esolve-category-tree-item.model';\nimport { EsolveCategoryTreeItemRecord } from './esolve-category-tree-item-record.interface';\nimport { EsolveCategoryTreeItemOptions } from './esolve-category-tree-item-options.interface';\nimport { EsolveCategoryIdentifier } from './esolve-category-identifier.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveCategoryTreeService {\n constructor(\n private config: EsolveConfigService,\n private http: HttpClient,\n ) {}\n\n /**\n * Retrieves the category tree from eSolve instance and coverts it to the correct format.\n */\n public getCategoryTree(\n identifier?: string,\n ): Observable<EsolveCategoryTreeItem[]> {\n let params = new HttpParams();\n\n if (identifier) {\n params = params.set('identifier', identifier);\n }\n\n return this.http\n .get<\n EsolveGetResponse<\n (EsolveCategoryRecord | EsolveSubcategoryRecord)[]\n >\n >(`${this.config.api_url}/get-tree.php`, { params })\n .pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n return this.processTree(response.records);\n }),\n );\n }\n\n /**\n * Retrieve the special tree structure for a specific special from the eSolve\n * instance and converts it into the correct format\n *\n * @param special_id Id of to special to get tree for\n *\n * @returns Observable containing special tree data\n */\n public getSpecialTree(\n special_id: number,\n ): Observable<EsolveCategoryTreeItem[]> {\n let params = new HttpParams();\n\n params = params.set('special_id', special_id);\n\n return this.http\n .get<\n EsolveGetResponse<\n (EsolveCategoryRecord | EsolveSubcategoryRecord)[]\n >\n >(`${this.config.api_url}/get-special-tree.php`, { params })\n .pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n return this.processTree(response.records);\n }),\n );\n }\n\n /**\n * Retrieve the details of a category tree item from the eSolve instance and\n * converts it to the correct format.\n *\n * @param options Filter options\n */\n public getCategoryTreeItem(\n options: EsolveCategoryTreeItemOptions,\n ): Observable<EsolveCategoryTreeItem> {\n let type!: 'category' | 'subcategory';\n let esolve_id!: number | string;\n let sef_description;\n\n if (options.id) {\n const categoryIdentifier = this.processID(options.id);\n\n if (categoryIdentifier) {\n type = categoryIdentifier.type;\n esolve_id = categoryIdentifier.esolve_id;\n }\n } else if (options.type) {\n type = options.type;\n\n if (options.esolve_id) {\n esolve_id = options.esolve_id;\n } else if (options.sef_description) {\n sef_description = options.sef_description;\n }\n }\n\n if (type && (esolve_id || sef_description)) {\n let params = new HttpParams();\n\n params = params.set('type', type);\n\n if (esolve_id) {\n params = params.set('id', esolve_id);\n }\n\n if (sef_description) {\n params = params.set('sef_description', sef_description);\n }\n\n return this.http\n .get<EsolveGetResponse<EsolveCategoryTreeItemRecord[]>>(\n `${this.config.api_url}/get-tree-item.php`,\n { params },\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n response.records.length <= 0\n ) {\n throw response;\n }\n\n return this.processTreeItem(response.records[0]);\n }),\n );\n }\n\n return throwError(() => 'Invalid options');\n }\n\n /**\n * Processes the eSolve tree records and converts them into the correct format.\n *\n * @param tree_records Records to process\n */\n private processTree(\n tree_records: (EsolveCategoryRecord | EsolveSubcategoryRecord)[],\n ): EsolveCategoryTreeItem[] {\n const tree_items: EsolveCategoryTreeItem[] = [];\n\n if (tree_records) {\n for (const tree_record of tree_records) {\n let esolve_id: string | number = '';\n let parent_id = '';\n let children: EsolveCategoryTreeItem[] = [];\n\n if (tree_record.type === 'category') {\n children = this.processTree(tree_record.children);\n esolve_id = tree_record.menu_id;\n parent_id = tree_record.owner_menu_id;\n } else {\n esolve_id = tree_record.id;\n parent_id = tree_record.menu_id;\n }\n\n tree_items.push(\n new EsolveCategoryTreeItem(\n tree_record.type,\n esolve_id,\n parent_id,\n tree_record.description,\n tree_record.sef_description,\n tree_record.seo_description,\n tree_record.sort_priority,\n tree_record.active,\n tree_record.display_only,\n tree_record.image,\n tree_record.seo_page_title,\n tree_record.seo_keywords,\n tree_record.short_description,\n children,\n ),\n );\n }\n }\n\n return tree_items;\n }\n\n private processTreeItem(\n record: EsolveCategoryTreeItemRecord,\n ): EsolveCategoryTreeItem {\n return new EsolveCategoryTreeItem(\n record.type,\n record.id,\n record.parent_id,\n record.description,\n record.sef_description,\n record.short_description,\n record.sort_priority,\n record.active,\n record.display_only,\n record.image,\n record.seo_page_title,\n record.seo_keywords,\n record.seo_description,\n );\n }\n\n private processID(id: string): EsolveCategoryIdentifier | null {\n let type: 'category' | 'subcategory';\n let esolve_id: number | string;\n\n const type_code_regex = /^<<(CAT|SUB)>>/g;\n const match_results = id.match(type_code_regex);\n\n if (match_results) {\n const type_code = match_results[0];\n\n type = type_code === '<<CAT>>' ? 'category' : 'subcategory';\n esolve_id = id.replace(type_code_regex, '');\n\n return {\n type,\n esolve_id,\n };\n }\n\n return null;\n }\n}\n","import { EsolveSeoInfo } from '../shared/seo/esolve-seo-info.model';\nimport { EsolveSeoDetails } from '../shared/seo/esolve-seo-details.interface';\n\nimport { EsolveManufacturerRecord } from './esolve-manufacturer-record.interface';\nimport { EsolveManufacturerImageSize } from './esolve-manufacturer-image-size.type';\n\nexport class EsolveManufacturer implements EsolveSeoDetails {\n public id = 0;\n public manufacturer = '';\n public sef_manufacturer = '';\n public title = '';\n public article = '';\n public sort_priority = 0;\n public is_active = false;\n public featured = false;\n public image_name = '';\n public seo_details: EsolveSeoInfo;\n\n public get original_image_src(): string {\n return this.getImagePath('original');\n }\n\n public get small_image_src(): string {\n return this.getImagePath('small');\n }\n\n public get thumbnail_image_src(): string {\n return this.getImagePath('thumb');\n }\n\n public get tiny_image_src(): string {\n return this.getImagePath('tiny');\n }\n\n constructor(record?: Partial<EsolveManufacturerRecord>) {\n let seo_title = '';\n let seo_keywords = '';\n let seo_description = '';\n\n if (record) {\n this.id = +(record.id ?? 0);\n this.manufacturer = record.manufacturer ?? '';\n this.sef_manufacturer = record.sef_manufacturer ?? '';\n this.title = record.title ?? '';\n this.article = record.article ?? '';\n this.sort_priority = +(record.sort_priority ?? 0);\n this.image_name = record.image_name ?? '';\n\n seo_title = record.seo_page_title ?? '';\n seo_keywords = record.seo_keywords ?? '';\n seo_description = record.seo_description ?? '';\n\n if (record.is_active) {\n this.is_active = !!+record.is_active;\n }\n\n if (record.featured) {\n this.featured = !!+record.featured;\n }\n }\n\n if (this.title.trim() === '') {\n this.title = this.manufacturer;\n }\n\n if (seo_title.trim() === '') {\n seo_title = this.title;\n }\n\n this.seo_details = new EsolveSeoInfo(\n seo_title,\n seo_description,\n seo_keywords,\n );\n }\n\n public getImagePath(image_size: EsolveManufacturerImageSize): string {\n if (this.image_name !== '') {\n return `/images/manufacturers/${image_size}/${this.image_name}`;\n }\n\n return '';\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { EsolveConfigService } from '../core';\nimport { EsolveGetResponse } from '../shared/response';\n\nimport { EsolveManufacturer } from './esolve-manufacturer.model';\nimport { EsolveManufacturerOptions } from './esolve-manufacturer-options.interface';\nimport { EsolveManufacturerRecord } from './esolve-manufacturer-record.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveManufacturersService {\n constructor(\n private config: EsolveConfigService,\n private http: HttpClient,\n ) {}\n\n public getManufacturer(id: number): Observable<EsolveManufacturer> {\n const params = new HttpParams({\n fromObject: { manufacturers_id: id },\n });\n\n return this.getManufacturerSingle(params);\n }\n\n public getManufacturerFromSEF(\n sef_manufacturer: string,\n ): Observable<EsolveManufacturer> {\n const params = new HttpParams({\n fromObject: { sef_manufacturer },\n });\n\n return this.getManufacturerSingle(params);\n }\n\n public getManufacturers(\n options?: EsolveManufacturerOptions,\n ): Observable<EsolveManufacturer[]> {\n let params = new HttpParams();\n\n if (options?.featured_only) {\n params = params.set('featured_only', options.featured_only);\n }\n\n return this.getManufacturerRecords(params).pipe(\n map((records) => {\n const manufacturers: EsolveManufacturer[] = [];\n\n for (const record of records) {\n manufacturers.push(this.processManufacturer(record));\n }\n\n return manufacturers;\n }),\n catchError(() => {\n return of<EsolveManufacturer[]>([]);\n }),\n );\n }\n\n private getManufacturerSingle(\n params: HttpParams,\n ): Observable<EsolveManufacturer> {\n return this.getManufacturerRecords(params).pipe(\n map((records) => {\n const record = records[0];\n\n return this.processManufacturer(record);\n }),\n );\n }\n\n private getManufacturerRecords(\n params?: HttpParams,\n ): Observable<EsolveManufacturerRecord[]> {\n return this.http\n .get<EsolveGetResponse<EsolveManufacturerRecord[]>>(\n `${this.config.api_url}/get-manufacturers.php`,\n { params },\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n response.records.length <= 0\n ) {\n throw response;\n }\n\n return response.records;\n }),\n );\n }\n\n private processManufacturer(\n record: EsolveManufacturerRecord,\n ): EsolveManufacturer {\n return new EsolveManufacturer(record);\n }\n}\n","// Types\nexport * from './esolve-manufacturer-image-size.type';\n// Interfaces\nexport * from './esolve-manufacturer-record.interface';\nexport * from './esolve-manufacturer-options.interface';\n// Classes\nexport * from './esolve-manufacturer.model';\n// Service\nexport * from './esolve-manufacturers.service';\n","import { EsolveSeoInfo } from '../shared/seo/esolve-seo-info.model';\nimport { EsolveSeoDetails } from '../shared/seo/esolve-seo-details.interface';\n\nimport { EsolveRangeRecord } from './esolve-range-record.interface';\n\nexport class EsolveRange implements EsolveSeoDetails {\n public id = 0;\n public range = '';\n public sef_range = '';\n public manufacturers_id = 0;\n public title = '';\n public article = '';\n public is_active = false;\n public featured = false;\n public sort_priority = 0;\n public image_name = '';\n public seo_details: EsolveSeoInfo;\n\n public get image_src(): string {\n return this.getImagePath();\n }\n\n constructor(record?: Partial<EsolveRangeRecord>) {\n let seo_title = '';\n let seo_keywords = '';\n let seo_description = '';\n\n if (record) {\n this.id = +(record.id ?? 0);\n this.range = record.range ?? '';\n this.sef_range = record.sef_range ?? '';\n this.manufacturers_id = +(record.manufacturers_id ?? 0);\n this.title = record.title ?? '';\n this.article = record.article ?? '';\n this.sort_priority = +(record.sort_priority ?? 0);\n this.image_name = record.image_name ?? '';\n\n if (record.is_active) {\n this.is_active = !!+record.is_active;\n }\n\n if (record.featured) {\n this.featured = !!+record.featured;\n }\n\n seo_title = record.seo_page_title ?? '';\n seo_keywords = record.seo_keywords ?? '';\n seo_description = record.seo_description ?? '';\n }\n\n if (this.title.trim() === '') {\n this.title = this.range;\n }\n\n if (seo_title.trim() === '') {\n seo_title = this.title;\n }\n\n this.seo_details = new EsolveSeoInfo(\n seo_title,\n seo_description,\n seo_keywords,\n );\n }\n\n public getImagePath(): string {\n if (this.image_name !== '') {\n return `/images/ranges/${this.image_name}`;\n }\n\n return '';\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\n\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { EsolveConnectConfig } from '../core/esolve-connect.config';\nimport { ESOLVE_CONNECT_CONFIG } from '../core/esolve-connect-config.constant';\nimport { EsolveGetResponse } from '../shared/response';\n\nimport { EsolveRange } from './esolve-range.model';\nimport { EsolveRangeOptions } from './esolve-range-options.interface';\nimport { EsolveRangeRecord } from './esolve-range-record.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveRangesService {\n constructor(\n @Inject(ESOLVE_CONNECT_CONFIG) private config: EsolveConnectConfig,\n private http: HttpClient,\n ) {}\n\n public getRange(id: number): Observable<EsolveRange> {\n const params = new HttpParams({\n fromObject: { ranges_id: id },\n });\n\n return this.getRangeSingle(params);\n }\n\n public getRangeFromSEF(sef_range: string): Observable<EsolveRange> {\n const params = new HttpParams({\n fromObject: { sef_range },\n });\n\n return this.getRangeSingle(params);\n }\n\n public getRanges(options?: EsolveRangeOptions): Observable<EsolveRange[]> {\n let params = new HttpParams();\n\n if (options?.featured_only) {\n params = params.set('featured_only', options.featured_only);\n }\n\n if (options?.manufacturers_id) {\n params = params.set('manufacturers_id', options.manufacturers_id);\n }\n\n return this.getRangeRecords(params).pipe(\n map((records) => {\n const ranges: EsolveRange[] = [];\n\n for (const record of records) {\n ranges.push(this.processRange(record));\n }\n\n return ranges;\n }),\n catchError(() => {\n return of<EsolveRange[]>([]);\n }),\n );\n }\n\n private getRangeSingle(params: HttpParams): Observable<EsolveRange> {\n return this.getRangeRecords(params).pipe(\n map((records) => {\n const record = records[0];\n\n return this.processRange(record);\n }),\n );\n }\n\n private getRangeRecords(\n params?: HttpParams,\n ): Observable<EsolveRangeRecord[]> {\n return this.http\n .get<EsolveGetResponse<EsolveRangeRecord[]>>(\n `${this.config.api_url}/get-ranges.php`,\n { params },\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n response.records.length <= 0\n ) {\n throw response;\n }\n\n return response.records;\n }),\n );\n }\n\n private processRange(record: EsolveRangeRecord): EsolveRange {\n return new EsolveRange(record);\n }\n}\n","import { EsolveTagRecord } from './esolve-tag-record.interface';\n\nexport class EsolveTag {\n public id = 0;\n public phrase = '';\n public weight = 0;\n public description = '';\n public image_name = '';\n\n /**\n * @deprecated To be removed in the future. Use `EsolveTag.phrase` instead\n */\n public get tag_phrase(): string {\n return this.phrase;\n }\n\n /**\n * @deprecated To be removed in the future. Use `EsolveTag.weight` instead\n */\n public get tag_weight(): number {\n return this.weight;\n }\n\n constructor(record?: Partial<EsolveTagRecord>) {\n if (record) {\n this.id = +(record.id ?? 0);\n this.phrase = record.tag_phrase ?? '';\n this.weight = +(record.tag_weight ?? 0);\n this.description = record.description ?? '';\n this.image_name = record.image_name ?? '';\n }\n }\n\n public getImagePath(): string {\n if (this.image_name !== '') {\n return `/images/tags/${this.image_name}`;\n }\n\n return '';\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { ESOLVE_CONNECT_CONFIG } from '../core/esolve-connect-config.constant';\nimport { EsolveConnectConfig } from '../core/esolve-connect.config';\nimport { EsolveGetResponse } from '../shared/response';\n\nimport { EsolveTag } from './esolve-tag.model';\nimport { EsolveTagRecord } from './esolve-tag-record.interface';\nimport { EsolveTagOptions } from './esolve-tag-options.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveTagsService {\n constructor(\n @Inject(ESOLVE_CONNECT_CONFIG) private config: EsolveConnectConfig,\n private http: HttpClient,\n ) {}\n\n /**\n * Retrieves active topics from the list of topic ID's. Note that inactive or expired\n * topics will not be retrieved.\n *\n * @param options Tag filters\n */\n public getTags(options?: EsolveTagOptions): Observable<EsolveTag[]> {\n const params = this.parseOptions(options);\n\n return this.http\n .get<EsolveGetResponse<EsolveTagRecord[]>>(\n `${this.config.api_url}/get-tags.php`,\n { params },\n )\n .pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n return this.processTags(response.records);\n }),\n );\n }\n\n private parseOptions(options?: EsolveTagOptions) {\n let params = new HttpParams();\n\n if (options) {\n if (options.tags_id) {\n if (Array.isArray(options.tags_id)) {\n const tag_list = options.tags_id;\n\n if (tag_list.length > 0) {\n params = params.append('tags_id', tag_list.join(','));\n }\n } else {\n params = params.append('tags_id', options.tags_id);\n }\n } else {\n if (options.phrase && options.phrase !== '') {\n params = params.append('phrase', options.phrase);\n\n const phrase_match_mode = options.phrase_match_mode;\n\n if (phrase_match_mode) {\n params = params.append(\n 'phrase_match_mode',\n phrase_match_mode,\n );\n }\n }\n }\n }\n\n return params;\n }\n\n private processTags(records: EsolveTagRecord[]): EsolveTag[] {\n const tags: EsolveTag[] = [];\n\n if (records) {\n for (const record of records) {\n const tag = new EsolveTag(record);\n\n tags.push(tag);\n }\n }\n\n return tags;\n }\n}\n","// Types\nexport * from './esolve-tag-phrase-match-mode.type';\n// Interfaces\nexport * from './esolve-tag-record.interface';\nexport * from './esolve-tag-options.interface';\n// Classes\nexport * from './esolve-tag.model';\n// Service\nexport * from './esolve-tags.service';\n","export class EsolveTopic {\n public id = 0;\n public name = '';\n public short_description = '';\n public sort_priority = 0;\n\n constructor(record?: Partial<EsolveTopic>) {\n if (record) {\n this.id = +(record.id ?? 0);\n this.name = record.name ?? '';\n this.short_description = record.short_description ?? '';\n this.sort_priority = +(record.sort_priority ?? 0);\n }\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\n\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { EsolveConnectConfig } from '../core/esolve-connect.config';\nimport { ESOLVE_CONNECT_CONFIG } from '../core/esolve-connect-config.constant';\nimport { EsolveGetResponse } from '../shared/response';\nimport { EsolveTopic } from './esolve-topic.model';\nimport { EsolveTopicRecord } from './esolve-topic-record.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveTopicService {\n constructor(\n @Inject(ESOLVE_CONNECT_CONFIG) private config: EsolveConnectConfig,\n private http: HttpClient,\n ) {}\n\n /**\n * Retrieves active topics from the list of topic ID's. Note that inactive or expired\n * topics will not be retrieved.\n *\n * @param topic_id_list List of topic ID's that need to be retrieved\n */\n public getTopics(\n topic_id_list: readonly number[] = [],\n ): Observable<EsolveTopic[]> {\n let params = new HttpParams();\n\n if (topic_id_list.length > 0) {\n params = params.append('topic_id', topic_id_list.join(','));\n }\n\n return this.http\n .get<EsolveGetResponse<EsolveTopicRecord[]>>(\n `${this.config.api_url}/get-topics.php`,\n { params },\n )\n .pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n return this.processTopics(response.records);\n }),\n );\n }\n\n private processTopics(records: EsolveTopicRecord[]): EsolveTopic[] {\n const topics: EsolveTopic[] = [];\n\n if (records) {\n for (const record of records) {\n const topic = new EsolveTopic(record);\n\n topics.push(topic);\n }\n }\n\n return topics;\n }\n}\n","import { EsolveCategoryTreeItem } from '../../category-tree';\nimport { EsolveManufacturer } from '../../manufacturers';\nimport { EsolveRange } from '../../ranges';\nimport { EsolveTag } from '../../tags';\nimport { EsolveTopic } from '../../topics';\n\nimport { EsolveAssetType } from './esolve-asset-type.type';\nimport { EsolveAssetRecord } from './esolve-asset-record.interface';\n\nexport class EsolveAsset {\n public id = 0;\n public src = '';\n public name = '';\n public type?: EsolveAssetType;\n public description = '';\n public document_number = '';\n public document_type = '';\n public area_of_application = '';\n public asset_category = '';\n public asset_sub_category = '';\n public sort_priority = 0;\n public created?: string;\n public category?: EsolveCategoryTreeItem;\n public subcategory?: EsolveCategoryTreeItem;\n public manufacturer?: EsolveManufacturer;\n public range?: EsolveRange;\n public topics: EsolveTopic[] = [];\n public tags: EsolveTag[] = [];\n\n private image_name = '';\n\n /**\n * Shortcut to `getImagePath()`\n */\n public get image_src(): string {\n return this.getImagePath();\n }\n\n constructor(record: EsolveAssetRecord) {\n this.id = +record.id;\n this.src = record.src;\n this.name = record.name;\n this.type = record.type;\n this.description = record.description;\n\n this.document_number = record.document_number ?? '';\n this.document_type = record.document_type ?? '';\n this.area_of_application = record.area_of_application ?? '';\n this.asset_category = record.asset_category ?? '';\n this.asset_sub_category = record.asset_sub_category ?? '';\n this.sort_priority = +(record.sort_priority ?? '');\n this.image_name = record.image_name ?? '';\n\n if (record.created) {\n this.created = record.created;\n }\n\n if (record.category) {\n this.category = new EsolveCategoryTreeItem(\n record.category.type,\n record.category.id,\n record.category.parent_id,\n record.category.description,\n record.category.sef_description,\n record.category.short_description,\n record.category.sort_priority,\n record.category.active,\n record.category.display_only,\n record.category.image,\n record.category.seo_page_title,\n record.category.seo_keywords,\n record.category.seo_description,\n );\n }\n\n if (record.subcategory) {\n this.subcategory = new EsolveCategoryTreeItem(\n record.subcategory.type,\n record.subcategory.id,\n record.subcategory.parent_id,\n record.subcategory.description,\n record.subcategory.sef_description,\n record.subcategory.short_description,\n record.subcategory.sort_priority,\n record.subcategory.active,\n record.subcategory.display_only,\n record.subcategory.image,\n record.subcategory.seo_page_title,\n record.subcategory.seo_keywords,\n record.subcategory.seo_description,\n );\n }\n\n if (record.manufacturer) {\n this.manufacturer = new EsolveManufacturer(record.manufacturer);\n }\n\n if (record.range) {\n this.range = new EsolveRange(record.range);\n }\n\n if (record.topics && record.topics.length > 0) {\n for (const topic of record.topics) {\n this.topics.push(new EsolveTopic(topic));\n }\n }\n\n if (record.tags && record.tags.length > 0) {\n for (const tag of record.tags) {\n this.tags.push(new EsolveTag(tag));\n }\n }\n }\n\n /**\n * Retrieve image path\n *\n * @returns Image path on CDN, else empty string if no image exists\n */\n public getImagePath(): string {\n if (this.image_name !== '') {\n return `/images/documents/${this.image_name}`;\n }\n\n return '';\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\n\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { ESOLVE_CONNECT_CONFIG } from '../../core/esolve-connect-config.constant';\nimport { EsolveConnectConfig } from '../../core/esolve-connect.config';\nimport { EsolveGetResponse } from '../response';\nimport { EsolveList } from '../esolve-list.model';\n\nimport { EsolveAssetOptions } from './esolve-asset-options.interface';\nimport { EsolveAssetRecord } from './esolve-asset-record.interface';\nimport { EsolveAsset } from './esolve-asset.model';\nimport { EsolveAssetList } from './esolve-asset-list.type';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveAssetsService {\n constructor(\n @Inject(ESOLVE_CONNECT_CONFIG) private config: EsolveConnectConfig,\n private http: HttpClient,\n ) {}\n\n public getAsset(id: number): Observable<EsolveAsset> {\n const params = new HttpParams({ fromObject: { assets_id: id } });\n\n return this.getAssetRecords(params).pipe(\n map((response) => {\n if (\n response.records === undefined ||\n response.records.length <= 0\n ) {\n throw response;\n }\n\n const record = response.records[0];\n\n return this.processAsset(record);\n }),\n );\n }\n\n public getAssets(\n options?: EsolveAssetOptions,\n ): Observable<EsolveAssetList> {\n const params = this.parseOptions(options);\n\n return this.getAssetRecords(params).pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n const assets: EsolveAsset[] = [];\n\n for (const record of response.records) {\n assets.push(this.processAsset(record));\n }\n\n const page = options?.page ?? 0;\n const rows = options?.rows ?? 0;\n const total = +response.additional_data.total_records;\n\n return new EsolveList(assets, page, rows, total);\n }),\n );\n }\n\n private processAsset(record: EsolveAssetRecord): EsolveAsset {\n return new EsolveAsset(record);\n }\n\n private getAssetRecords(\n params: HttpParams,\n ): Observable<EsolveGetResponse<EsolveAssetRecord[]>> {\n return this.http.get<EsolveGetResponse<EsolveAssetRecord[]>>(\n `${this.config.api_url}/get-assets.php`,\n { params },\n );\n }\n\n private parseOptions(options?: EsolveAssetOptions): HttpParams {\n let params = new HttpParams();\n\n if (!options) {\n return params;\n }\n\n if (options.page) {\n params = params.set('page', options.page);\n }\n\n if (options.rows) {\n params = params.set('rows', options.rows);\n }\n\n if (options.asset_type) {\n params = params.set('asset_type', options.asset_type);\n }\n\n if (options.category_id) {\n params = params.set('category_id', options.category_id);\n }\n\n if (options.subcategory_id) {\n params = params.set('subcategory_id', options.subcategory_id);\n }\n\n if (options.manufacturers_id) {\n params = params.set('manufacturers_id', options.manufacturers_id);\n }\n\n if (options.ranges_id) {\n params = params.set('ranges_id', options.ranges_id);\n }\n\n if (options.asset_category) {\n params = params.set('asset_category', options.asset_category);\n }\n\n if (options.asset_sub_category) {\n params = params.set(\n 'asset_sub_category',\n options.asset_sub_category,\n );\n }\n\n if (options.document_number) {\n params = params.set('document_number', options.document_number);\n }\n\n if (options.document_type) {\n params = params.set('document_type', options.document_type);\n }\n\n if (options.area_of_application) {\n params = params.set(\n 'area_of_application',\n options.area_of_application,\n );\n }\n\n return params;\n }\n}\n","// Types\nexport * from './esolve-asset-list.type';\nexport * from './esolve-asset-type.type';\n// Interfaces\nexport * from './esolve-linked-asset-record.interface';\nexport * from './esolve-asset-options.interface';\nexport * from './esolve-asset-record.interface';\n// Classes\nexport * from './esolve-linked-asset.model';\nexport * from './esolve-asset.model';\n// Service\nexport * from './esolve-assets.service';\n","import { EsolveAddressType } from './esolve-address-type.type';\n\nexport class EsolveAddress {\n constructor(\n public id: number,\n public recipient: string,\n public address_type: EsolveAddressType,\n public pobox: string,\n public place_name: string,\n public street_number: string,\n public street: string,\n public suburb: string,\n public city: string,\n public province: string,\n public country: string,\n public postal_code: string,\n public latitude: number,\n public longitude: number,\n ) {}\n}\n","import { EsolveAddressResponse } from './esolve-address-response.interface';\nimport { EsolveGeocodeResult } from '../esolve-geocode-result.interface';\nimport { EsolveResponseResult } from '../../shared/response';\n\nexport class EsolveAddressResult extends EsolveResponseResult {\n public id: number;\n public address_validated: boolean;\n public geocode_status: string;\n public geocode_result: EsolveGeocodeResult | null;\n\n constructor(response: EsolveAddressResponse) {\n super(response);\n\n this.id = response.esolve_id;\n this.address_validated = response.address_validated;\n this.geocode_status = response.geocode_status;\n this.geocode_result = response.geocode_result;\n }\n}\n","import { EsolveUserAccountRecord } from '../interfaces';\n\nexport class EsolveUserAccountBusiness {\n public name?: string;\n public vat_number?: string;\n public description?: string;\n public type?: string;\n\n constructor(record?: Partial<EsolveUserAccountRecord>) {\n if (record) {\n this.name = record.busname ?? '';\n this.vat_number = record.vatnum ?? '';\n this.description = record.busdescript ?? '';\n this.type = record.business_type ?? '';\n }\n }\n}\n","import { EsolveUserAccountRecord } from '../interfaces';\n\nexport class EsolveUserAccountContact {\n public tel_number?: string;\n public cell_number?: string;\n public fax_number?: string;\n\n constructor(record?: Partial<EsolveUserAccountRecord>) {\n if (record) {\n this.tel_number = record.telnumber ?? '';\n this.cell_number = record.cellnumber ?? '';\n this.fax_number = record.fax ?? '';\n }\n }\n}\n","import {\n EsolvePostResponseItem,\n EsolveResponseResult,\n} from '../../../shared/response';\n\nexport class EsolveUserAccountResult extends EsolveResponseResult {\n public id = 0;\n\n constructor(response: EsolvePostResponseItem) {\n super(response);\n\n this.id = +response.esolve_id;\n }\n}\n","import { EsolveStatementAgeingRecord } from '../interfaces';\n\nexport class EsolveStatementAgeing {\n public days?: number;\n public amount?: number;\n\n constructor(record?: Partial<EsolveStatementAgeingRecord>) {\n if (record) {\n this.days = +(record.days ?? 0);\n this.amount = +(record.amount ?? 0);\n }\n }\n}\n","import { EsolveStatementBalancesRecord } from '../interfaces';\n\nimport { EsolveStatementAgeing } from './esolve-statement-ageing.model';\n\nexport class EsolveStatementBalances {\n public total?: number;\n public ageing?: EsolveStatementAgeing[];\n\n constructor(record?: Partial<EsolveStatementBalancesRecord>) {\n if (record) {\n this.total = +(record.total ?? 0);\n this.ageing =\n record.ageing?.map((e) => new EsolveStatementAgeing(e)) ?? [];\n }\n }\n}\n","import { EsolveStatementTransactionRecord } from '../interfaces';\n\nexport class EsolveStatementTransaction {\n public order_date?: string;\n public order_number?: string;\n public comment?: string;\n public account?: string;\n public iq_reference?: string;\n public total?: number;\n public amount_due?: number;\n public is_debit?: boolean;\n\n constructor(record?: Partial<EsolveStatementTransactionRecord>) {\n if (record) {\n this.order_date = record.order_date ?? '';\n this.order_number = record.order_number ?? '';\n this.comment = record.comment ?? '';\n this.account = record.account ?? '';\n this.iq_reference = record.iq_reference ?? '';\n this.total = +(record.total ?? 0);\n this.amount_due = +(record.amount_due ?? 0);\n this.is_debit = !!+(record.is_debit ?? true);\n }\n }\n}\n","import { EsolveStatementRecord } from '../interfaces';\n\nimport { EsolveStatementBalances } from './esolve-statement-balances.model';\nimport { EsolveStatementTransaction } from './esolve-statement-transaction.model';\n\nexport class EsolveStatement {\n public balances?: EsolveStatementBalances;\n public transactions?: EsolveStatementTransaction[];\n\n constructor(record?: Partial<EsolveStatementRecord>) {\n if (record) {\n this.balances = new EsolveStatementBalances(record.balances);\n this.transactions =\n record.transactions?.map(\n (e) => new EsolveStatementTransaction(e),\n ) ?? [];\n }\n }\n}\n","import { EsolveUserClientAccountRecord } from '../interfaces';\n\nimport { EsolveStatement } from './esolve-statement.model';\n\nexport class EsolveUserClientAccount {\n public account?: string;\n public branch_code?: string;\n public account_group?: string;\n public pricing_group?: string;\n public company_name?: string;\n public client_contact_person?: string;\n public client_firstname?: string;\n public client_surname?: string;\n public client_email?: string;\n public client_contact_number?: string;\n public client_fax_number?: string;\n public client_cellphone_number?: string;\n public client_id_number?: string;\n public address_description?: string;\n public street?: string;\n public suburb?: string;\n public city?: string;\n public province?: string;\n public country?: string;\n public postal_code?: string;\n public postal_address?: string;\n public delivery_address?: string;\n public vat_number?: string;\n public ageing?: string;\n public balance_last_updated?: string;\n public client_classification?: string;\n public override_stock_listing_identifiers?: string;\n public requires_transaction_approval?: string;\n public latitude?: number;\n public longitude?: number;\n public price_list?: number;\n public loyalty_classification_id?: number;\n public credit_limit?: number;\n public pending_invoice_balance?: number;\n public external_account_balance?: number;\n public default_sellprice?: number;\n public is_active?: boolean;\n public external_statement?: EsolveStatement;\n\n constructor(record?: Partial<EsolveUserClientAccountRecord>) {\n if (record) {\n this.account = record.account ?? '';\n this.branch_code = record.branch_code ?? '';\n this.account_group = record.account_group ?? '';\n this.pricing_group = record.pricing_group ?? '';\n this.company_name = record.company_name ?? '';\n this.client_contact_person = record.client_contact_person ?? '';\n this.client_firstname = record.client_firstname ?? '';\n this.client_surname = record.client_surname ?? '';\n this.client_email = record.client_email ?? '';\n this.client_contact_number = record.client_contact_number ?? '';\n this.client_fax_number = record.client_fax_number ?? '';\n this.client_cellphone_number = record.client_cellphone_number ?? '';\n this.client_id_number = record.client_id_number ?? '';\n this.address_description = record.address_description ?? '';\n this.street = record.street ?? '';\n this.suburb = record.suburb;\n this.city = record.city ?? '';\n this.province = record.province ?? '';\n this.country = record.country ?? '';\n this.postal_code = record.postal_code ?? '';\n this.postal_address = record.postal_address ?? '';\n this.delivery_address = record.delivery_address ?? '';\n this.vat_number = record.vat_number ?? '';\n this.ageing = record.ageing ?? '';\n this.balance_last_updated = record.balance_last_updated ?? '';\n this.client_classification = record.client_classification ?? '';\n this.override_stock_listing_identifiers =\n record.override_stock_listing_identifiers ?? '';\n this.requires_transaction_approval =\n record.requires_transaction_approval ?? '';\n this.latitude = +(record.latitude ?? 0);\n this.longitude = +(record.longitude ?? 0);\n this.price_list = +(record.price_list ?? 0);\n this.loyalty_classification_id = +(\n record.loyalty_classification_id ?? 0\n );\n this.credit_limit = +(record.credit_limit ?? 0);\n this.pending_invoice_balance = +(\n record.pending_invoice_balance ?? 0\n );\n this.external_account_balance = +(\n record.external_account_balance ?? 0\n );\n this.default_sellprice = +(record.default_sellprice ?? 0);\n this.is_active = !!+(record.is_active ?? false);\n\n this.external_statement = new EsolveStatement(\n record.external_statement,\n );\n }\n }\n}\n","import { EsolveUserAccountRecord } from '../interfaces';\nimport { EsolveUserAccountBusiness } from './esolve-user-account-business.model';\nimport { EsolveUserAccountContact } from './esolve-user-account-contact.model';\nimport { EsolveUserClientAccount } from './esolve-user-client-account.model';\n\nexport class EsolveUserAccount {\n public esolve_id?: number;\n public email?: string;\n public registration_type?: string;\n public title?: string;\n public first_name?: string;\n public last_name?: string;\n public initials?: string;\n public gender?: string;\n public identification_number?: string;\n public account_number?: string;\n public loyalty_number?: string;\n public business_details?: EsolveUserAccountBusiness;\n public contact_details?: EsolveUserAccountContact;\n public client_details?: EsolveUserClientAccount;\n\n constructor(record?: Partial<EsolveUserAccountRecord>) {\n if (record) {\n this.esolve_id = +(record.userid ?? 0);\n this.email = record.email ?? '';\n this.registration_type = record.registration_type ?? '';\n this.title = record.title ?? '';\n this.first_name = record.firstname ?? '';\n this.last_name = record.surname ?? '';\n this.initials = record.initials ?? '';\n this.gender = record.gender ?? '';\n this.identification_number = record.idnumber ?? '';\n\n this.contact_details = new EsolveUserAccountContact(record);\n this.business_details = new EsolveUserAccountBusiness(record);\n\n if (record.client_details && record.client_details.account !== '') {\n this.client_details = new EsolveUserClientAccount(\n record.client_details,\n );\n }\n }\n }\n}\n","import { EsolveCartTotals } from '../../../cart';\n\nexport class EsolveUserClientAccountBalances {\n constructor(\n public clients_id?: number,\n public account?: string,\n public cart_totals?: EsolveCartTotals,\n public credit_limit?: number,\n public external_account_balance?: number,\n public external_available_balance?: number,\n public new_external_available_balance?: number,\n public credit_limit_okay?: boolean,\n ) {}\n}\n","import {\n EsolvePostResponseItem,\n EsolveResponseResult,\n} from '../../shared/response';\n\nexport class EsolveChangePasswordResult extends EsolveResponseResult {\n public password_updated: boolean;\n\n constructor(response: EsolvePostResponseItem) {\n super(response);\n\n this.password_updated = response.status.state === 'success';\n }\n}\n","import { EsolveResponseResult } from '../../shared/response';\nimport { EsolveForgotPasswordResponse } from './esolve-forgot-password-response.interface';\n\nexport class EsolveResetPasswordResult extends EsolveResponseResult {\n public id: number;\n public reset_success: boolean;\n public password_matches_old: boolean;\n public login_required: boolean;\n\n constructor(response: EsolveForgotPasswordResponse) {\n super(response);\n\n this.id = response.esolve_id;\n this.reset_success = response.reset_success;\n this.password_matches_old = response.password_matches_old;\n this.login_required = response.login_required;\n }\n}\n","import { EsolveResponseResult } from '../../shared/response';\nimport { EsolveRegistrationPostResponseItem } from './esolve-registration-post-response-item.interface';\n\nexport class EsolveRegistrationResult extends EsolveResponseResult {\n public user_id: number;\n public guest: boolean;\n public authentication_required: boolean;\n public auto_login: boolean;\n public location_id: number;\n\n constructor(response: EsolveRegistrationPostResponseItem) {\n super(response);\n\n this.user_id = response.esolve_id;\n this.guest = response.guest;\n this.auto_login = response.auto_login;\n this.authentication_required = response.authentication_required;\n this.location_id = response.session_data.location_id;\n }\n}\n","import { EsolveResponseResult } from '../../shared/response';\nimport { EsolveAccountConfirmationPostResponseItem } from './esolve-account-confirmation-post-response-item.interface';\n\nexport class EsolveAccountConfirmationResult extends EsolveResponseResult {\n public user_id: number;\n public location_id: number;\n public recalculated_cart: boolean;\n\n constructor(response: EsolveAccountConfirmationPostResponseItem) {\n super(response);\n\n this.user_id = +response.esolve_id;\n this.location_id = +response.location_id;\n this.recalculated_cart = !!+response.recalculated_cart;\n }\n}\n","import {\n EsolvePostResponseItem,\n EsolveResponseResult,\n} from '../../../shared/response';\n\nexport class EsolveLocationUpdateResult extends EsolveResponseResult {\n public location_updated: boolean;\n\n constructor(response: EsolvePostResponseItem) {\n super(response);\n\n if (typeof response.esolve_id === 'string') {\n throw new Error('Invalid response id.');\n }\n\n this.location_updated = response.esolve_id > 0;\n }\n}\n","import { EsolveAddressType } from '../../account';\n\nexport class EsolveTransactionAddress {\n constructor(\n public recipient: string,\n public address_type: EsolveAddressType,\n public address_description: string,\n public street_number: string,\n public street: string,\n public suburb: string,\n public city: string,\n public province: string,\n public country: string,\n public postal_code: string,\n public pobox: string,\n ) {}\n}\n","export class EsolveTransactionClient {\n constructor(\n public id: number,\n public account: string,\n public company_name: string,\n public branch_code: string,\n public email: string,\n public first_name: string,\n public last_name: string,\n public contact_number: string,\n ) {}\n}\n","export class EsolveTransactionItemPrice {\n constructor(\n /**\n * Price without tax\n */\n public price: number,\n /**\n * Price with tax\n */\n public price_with_tax: number,\n /**\n * Price without tax and with discounts applied if applicable\n */\n public price_discounted: number,\n /**\n * Price with tax and with discounts applied if applicable\n */\n public price_with_tax_discounted: number,\n ) {}\n}\n","import { EsolveStockImageSize } from '../../stock';\n\nimport { EsolveTransactionItemRecord } from '../interfaces';\n\nimport { EsolveTransactionItemPrice } from './esolve-transaction-item-price.model';\n\nexport class EsolveTransactionItem {\n public code = '';\n public name = '';\n public sef_name = '';\n public image_name = '';\n public image_last_modified = '';\n public pack_description = '';\n public pack_size = 0;\n public qty = 0;\n public discount = 0;\n public vat_rate = 0;\n public price: EsolveTransactionItemPrice;\n public line_total: EsolveTransactionItemPrice;\n\n /**\n * Path to tiny stock image\n */\n public get tiny_image_src(): string {\n return this.getImagePath('tiny');\n }\n\n /**\n * Path to thumbnail stock image\n */\n public get thumbnail_image_src(): string {\n return this.getImagePath('thumb');\n }\n\n /**\n * Path to small stock image\n */\n public get small_image_src(): string {\n return this.getImagePath('small');\n }\n\n /**\n * Path to big stock image\n */\n public get big_image_src(): string {\n return this.getImagePath('big');\n }\n\n /**\n * Path to original stock image\n */\n public get original_image_src(): string {\n return this.getImagePath('original');\n }\n\n constructor(record?: EsolveTransactionItemRecord) {\n this.price = new EsolveTransactionItemPrice(0, 0, 0, 0);\n this.line_total = new EsolveTransactionItemPrice(0, 0, 0, 0);\n\n if (record) {\n this.code = record.code ?? '';\n this.name = record.name ?? '';\n this.sef_name = record.sef_name ?? '';\n this.image_name = record.image_name ?? '';\n this.image_last_modified = record.image_last_modified ?? '';\n this.pack_description = record.pack_description ?? '';\n this.pack_size = +(record.items_in_pack ?? 0);\n this.qty = +(record.qty ?? 0);\n this.discount = +(record.discount ?? 0);\n this.vat_rate = +(record.vat_rate ?? 0);\n\n this.price = new EsolveTransactionItemPrice(\n +record.price_exclusive,\n +record.price_inclusive,\n +record.price_exclusive_after_discount,\n +record.price_inclusive_after_discount,\n );\n\n this.line_total = new EsolveTransactionItemPrice(\n +record.line_total_exclusive,\n +record.line_total_inclusive,\n +record.line_total_exclusive_after_discount,\n +record.line_total_inclusive_after_discount,\n );\n }\n }\n\n public getImagePath(image_size: EsolveStockImageSize): string {\n if (this.image_name !== '') {\n let param = '';\n\n if (this.image_last_modified !== '') {\n param = `?t=${this.image_last_modified}`;\n }\n\n return `/images/stock/${image_size}/${this.image_name}${param}`;\n }\n\n return '';\n }\n}\n","import { EsolveList } from '../../shared/esolve-list.model';\n\nimport { EsolveTransaction } from './esolve-transaction.model';\n\nexport class EsolveTransactionList extends EsolveList<EsolveTransaction> {}\n","export class EsolveLocationAddress {\n constructor(\n public street: string,\n public suburb: string,\n public city: string,\n public province: string,\n public country: string,\n public postal_code: string,\n public latitude: number,\n public longitude: number,\n ) {}\n}\n","export class EsolveLocationContactInfo {\n constructor(\n public telnumber: string[],\n public cellnumber: string,\n public email: string,\n public fax: string,\n ) {}\n}\n","export class EsolveLocationGEO {\n constructor(\n public distance: number,\n public range: number,\n public target_description: string,\n ) {}\n}\n","export class EsolveLocationPOBoxAddress {\n constructor(\n public pobox: string,\n public city: string,\n public postal_code: string,\n ) {}\n}\n","export class EsolveLocationTradingDay {\n constructor(public open: string, public close: string) {}\n}\n","import { EsolveLocationTradingDay } from './esolve-location-trading-day.model';\n\nexport class EsolveLocationTradingTimes {\n constructor(\n public monday: EsolveLocationTradingDay,\n public tuesday: EsolveLocationTradingDay,\n public wednesday: EsolveLocationTradingDay,\n public thursday: EsolveLocationTradingDay,\n public friday: EsolveLocationTradingDay,\n public saturday: EsolveLocationTradingDay,\n public sunday: EsolveLocationTradingDay,\n public public_holiday: EsolveLocationTradingDay,\n public trading_hours_additional_info: string = '',\n ) {}\n}\n","import { EsolveLocationRecord } from '../interfaces/esolve-location-record.interface';\nimport { EsolveLocationAddress } from './esolve-location-address.model';\nimport { EsolveLocationContactInfo } from './esolve-location-contact-info.model';\nimport { EsolveLocationPOBoxAddress } from './esolve-location-pobox-address.model';\nimport { EsolveLocationTradingTimes } from './esolve-location-trading-times.model';\nimport { EsolveLocationTradingDay } from './esolve-location-trading-day.model';\nimport { EsolveLocationGEO } from './esolve-location-geo.model';\n\nexport class EsolveLocation {\n public id: number;\n public identifier: string;\n public description: string;\n public head_office: boolean;\n public default_location_for_payment_methods: boolean;\n public external_system_code: string;\n public erp_identifier: string;\n public userid: number;\n public importance: number;\n public active: boolean;\n public dispatches_stock: boolean;\n public include_on_enquiries: boolean;\n public include_on_store_locator: boolean;\n public website_url: string;\n\n public address: EsolveLocationAddress;\n public pobox_address: EsolveLocationPOBoxAddress;\n public contact_info: EsolveLocationContactInfo;\n public trading_times: EsolveLocationTradingTimes;\n public geo?: EsolveLocationGEO;\n\n constructor(record: EsolveLocationRecord) {\n this.id = +record.id;\n this.identifier = record.identifier;\n this.description = record.description;\n this.head_office = !!+record.head_office;\n this.erp_identifier = record.erp_identifier;\n this.external_system_code = record.external_system_code;\n this.default_location_for_payment_methods =\n !!+record.default_location_for_payment_methods;\n this.userid = +record.userid;\n this.importance = +record.importance;\n this.active = !!+record.is_active;\n this.dispatches_stock = !!+record.dispatches_stock;\n this.include_on_enquiries = !!+record.include_on_enquiries;\n this.include_on_store_locator = !!+record.include_on_store_locator;\n this.website_url = record.website_url;\n\n this.address = new EsolveLocationAddress(\n record.street,\n record.suburb,\n record.city,\n record.province,\n record.country,\n record.postal_code,\n +record.latitude,\n +record.longitude,\n );\n\n this.pobox_address = new EsolveLocationPOBoxAddress(\n record.pobox,\n record.pobox_city,\n record.pobox_postal_code,\n );\n\n const telnumbers = [];\n\n if (record.branch_telnumber.length > 0) {\n telnumbers.push(record.branch_telnumber);\n }\n\n if (record.branch_telnumber_2.length > 0) {\n telnumbers.push(record.branch_telnumber_2);\n }\n\n if (record.branch_telnumber_3.length > 0) {\n telnumbers.push(record.branch_telnumber_3);\n }\n\n this.contact_info = new EsolveLocationContactInfo(\n telnumbers,\n record.branch_cellnumber,\n record.branch_email,\n record.branch_fax,\n );\n\n const monday = new EsolveLocationTradingDay(\n record.monday_open_time,\n record.monday_close_time,\n );\n\n const tuesday = new EsolveLocationTradingDay(\n record.tuesday_open_time,\n record.tuesday_close_time,\n );\n\n const wednesday = new EsolveLocationTradingDay(\n record.wednesday_open_time,\n record.wednesday_close_time,\n );\n\n const thursday = new EsolveLocationTradingDay(\n record.thursday_open_time,\n record.thursday_close_time,\n );\n\n const friday = new EsolveLocationTradingDay(\n record.friday_open_time,\n record.friday_close_time,\n );\n\n const saturday = new EsolveLocationTradingDay(\n record.saturday_open_time,\n record.saturday_close_time,\n );\n\n const sunday = new EsolveLocationTradingDay(\n record.sunday_open_time,\n record.sunday_close_time,\n );\n\n const public_holiday = new EsolveLocationTradingDay(\n record.public_holiday_open_time,\n record.public_holiday_close_time,\n );\n\n this.trading_times = new EsolveLocationTradingTimes(\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday,\n public_holiday,\n record.trading_hours_additional_info,\n );\n\n this.geo = new EsolveLocationGEO(\n record.distance,\n record.range,\n record.target_description,\n );\n }\n}\n","// Classes\nexport * from './esolve-location-address.model';\nexport * from './esolve-location-contact-info.model';\nexport * from './esolve-location-geo.model';\nexport * from './esolve-location-pobox-address.model';\nexport * from './esolve-location-trading-day.model';\nexport * from './esolve-location-trading-times.model';\nexport * from './esolve-location.model';\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { EsolveConnectConfig } from '../core/esolve-connect.config';\nimport { ESOLVE_CONNECT_CONFIG } from '../core/esolve-connect-config.constant';\nimport { EsolveGetResponse } from '../shared/response';\n\nimport { EsolveLocation } from './classes/esolve-location.model';\nimport { EsolveLocationRecord } from './interfaces/esolve-location-record.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveLocationsService {\n constructor(\n @Inject(ESOLVE_CONNECT_CONFIG) private config: EsolveConnectConfig,\n private http: HttpClient,\n ) {}\n\n /**\n * Retrieves a list of stock locations\n *\n * @returns An `Observable` with an array of stock locations\n */\n public getStockLocations(): Observable<EsolveLocation[]> {\n return this.http\n .get<EsolveGetResponse<EsolveLocationRecord[]>>(\n `${this.config.api_url}/get-locations.php`,\n )\n .pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n return this.processStockLocations(response.records);\n }),\n );\n }\n\n /**\n * Retrieves a list of stock locations using the address_id as parameter or the latitude and longitude.\n * Set the addresses_id to 0 and the gps coordinates in order to retrieve the locations list when the address isn't\n * yet saved.\n *\n * @param addresses_id if supplied, the latitude and longitude on the address will be used.\n * @param latitude if supplied and address_id > 0, the value is ignored.\n * @param longitude if supplied and address_id > 0, the value is ignored.\n *\n * @returns An `Observable` with an array of stock locations\n */\n public getStockLocationsGeo(\n addresses_id = 0,\n latitude = 0,\n longitude = 0,\n ): Observable<EsolveLocation[]> {\n return this.http\n .get<EsolveGetResponse<EsolveLocationRecord[]>>(\n `${this.config.api_url}/get-locations-geo.php`,\n {\n params: {\n addresses_id,\n latitude,\n longitude,\n },\n },\n )\n .pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n return this.processStockLocations(response.records);\n }),\n );\n }\n\n /**\n * Processes the eSolve stock location records.\n *\n * @param records Records to process\n * @returns An array of processed stock location records\n */\n private processStockLocations(\n records: EsolveLocationRecord[],\n ): EsolveLocation[] {\n const stock_locations: EsolveLocation[] = [];\n\n if (records) {\n for (const record of records) {\n stock_locations.push(new EsolveLocation(record));\n }\n }\n\n return stock_locations;\n }\n}\n","import { EsolveLocation } from '../../locations';\n\nexport class EsolveTransactionLocation extends EsolveLocation {}\n","export class EsolveTransactionPaymentMethod {\n constructor(\n public id: number,\n public name: string,\n public description: string,\n public integration_type: string,\n public service_provider: string,\n ) {}\n}\n","export class EsolveTransactionShippingMethod {\n constructor(\n public id: number,\n public name: string,\n public delivery_category: string,\n public location: string,\n public description: string,\n public pricing: string,\n public client_to_collect: boolean,\n ) {}\n}\n","export class EsolveTransactionUser {\n constructor(\n public id: number,\n public email: string,\n public first_name: string,\n public last_name: string,\n public tel_number: string,\n public cell_number: string,\n ) {}\n}\n","import { EsolveTransactionType } from '../types';\nimport {\n EsolveTransactionRecord,\n EsolveTransactionItemRecord,\n} from '../interfaces';\n\nimport { EsolveTransactionAddress } from './esolve-transaction-address.model';\nimport { EsolveTransactionClient } from './esolve-transaction-client.model';\nimport { EsolveTransactionItem } from './esolve-transaction-item.model';\nimport { EsolveTransactionLocation } from './esolve-transaction-location.model';\nimport { EsolveTransactionPaymentMethod } from './esolve-transaction-payment-method.model';\nimport { EsolveTransactionShippingMethod } from './esolve-transaction-shipping-method.model';\nimport { EsolveTransactionUser } from './esolve-transaction-user.model';\n\nexport class EsolveTransaction {\n public id: number;\n public type: EsolveTransactionType;\n public status: string;\n public comment: string;\n public loyalty_number: string;\n public external_order_number: string;\n public external_invoice_number: string;\n\n // Dates\n public date: Date;\n public expected_date: Date;\n\n public client?: EsolveTransactionClient;\n public user?: EsolveTransactionUser;\n\n // Location\n public location?: EsolveTransactionLocation;\n\n // Totals\n public invoice_amount: number;\n public vat: number;\n public discount: number;\n public total: number;\n public shipping_total: number;\n public insurance_total: number;\n\n // Payment\n public payment_method?: EsolveTransactionPaymentMethod;\n public payment: number;\n public gateway_transaction_id: string;\n public payment_reference: string;\n public payment_description: string;\n\n // Shipping\n public shipping_method?: EsolveTransactionShippingMethod;\n\n // Address Details\n public address: EsolveTransactionAddress;\n\n // Transaction Items\n public items: EsolveTransactionItem[] = [];\n\n constructor(record: EsolveTransactionRecord) {\n this.id = +record.id;\n this.type = record.transaction_type;\n this.status = record.status;\n this.comment = record.comment ?? '';\n this.loyalty_number = record.loyaltynumber;\n this.external_order_number = record.external_order_number;\n this.external_invoice_number = record.external_invoice_number;\n\n this.date = new Date(+record.txdate_timestamp * 1000);\n this.expected_date = new Date(+record.expected_date_timestamp * 1000);\n\n this.invoice_amount = +record.invoice_amount;\n this.vat = +record.vat;\n this.discount = +record.discount;\n this.total = +record.total;\n this.shipping_total = +record.shipping_total;\n this.insurance_total = +record.insurance_total;\n\n this.payment = +record.payment;\n this.payment_reference = record.payment_reference;\n this.payment_description = record.payment_description;\n this.gateway_transaction_id = record.gateway_transaction_id;\n\n this.address = new EsolveTransactionAddress(\n record.recipient,\n record.address_type,\n record.address_description,\n record.street_number,\n record.street,\n record.suburb,\n record.city,\n record.province,\n record.country,\n record.postal_code,\n record.pobox,\n );\n\n if (record.user) {\n this.user = new EsolveTransactionUser(\n +record.user.id,\n record.user.email,\n record.user.firstname,\n record.user.surname,\n record.user.telnumber,\n record.user.cellnumber,\n );\n }\n\n if (record.client) {\n this.client = new EsolveTransactionClient(\n +record.client.id,\n record.client.account,\n record.client.company_name,\n record.client.branch_code,\n record.client.email,\n record.client.firstname,\n record.client.surname,\n record.client.contact_number,\n );\n }\n\n if (record.location_details) {\n this.location = new EsolveTransactionLocation(\n record.location_details,\n );\n }\n\n if (record.payment_method_details) {\n this.payment_method = new EsolveTransactionPaymentMethod(\n record.payment_method_details.id,\n record.payment_method_details.paymethod_name,\n record.payment_method_details.description,\n record.payment_method_details.integration_type,\n record.payment_method_details.service_provider,\n );\n }\n\n if (record.shipping_method_details) {\n this.shipping_method = new EsolveTransactionShippingMethod(\n +record.shipping_method_details.id,\n record.shipping_method_details.carrier_name,\n record.shipping_method_details.delivery_category,\n record.shipping_method_details.location,\n record.shipping_method_details.description,\n record.shipping_method_details.pricing,\n !!record.shipping_method_details.client_to_collect,\n );\n }\n\n this.parseTransactionItems(record.transaction_items);\n }\n\n private parseTransactionItems(\n record_items: EsolveTransactionItemRecord[],\n ): void {\n for (const record_item of record_items) {\n this.items.push(new EsolveTransactionItem(record_item));\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\n\nimport { Observable, map, throwError } from 'rxjs';\n\nimport { EsolveConfigService } from '../core';\nimport { EsolveFilterFactory } from '../shared/filters';\nimport { EsolveGetResponse } from '../shared/response';\nimport { EsolveErrorHandlerService } from '../shared/errors';\nimport { EsolveSessionService } from '../session';\nimport {\n EsolveTransactionOptions,\n EsolveTransactionRecord,\n} from './interfaces';\nimport { EsolveTransaction, EsolveTransactionList } from './classes';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveTransactionsService {\n private _user_id = 0;\n\n public get user_id(): number {\n return this._user_id;\n }\n\n public set user_id(value: number) {\n value = value > 0 ? value : 0;\n\n if (this._user_id !== value) {\n this._user_id = value;\n }\n }\n\n constructor(\n private config: EsolveConfigService,\n private http: HttpClient,\n private sessionService: EsolveSessionService,\n private errorHandler: EsolveErrorHandlerService,\n ) {\n this.sessionService.getSession().subscribe((session) => {\n if (session.token !== '') {\n this.user_id = session.user_id;\n }\n });\n }\n\n public getTransactions(\n options: EsolveTransactionOptions = {},\n ): Observable<EsolveTransactionList> {\n try {\n this.loginGuard();\n\n let params = new HttpParams();\n\n params = params.set('user_id', this.user_id);\n\n if (options.user_id && options.user_id === -1) {\n params = params.set('user_id', -1);\n }\n\n if (options.type) {\n params = params.set('type', options.type);\n }\n\n if (options.page) {\n params = params.set('page', options.page);\n }\n\n if (options.rows) {\n params = params.set('rows', options.rows);\n }\n\n if (options.from_date) {\n params = params.set('from_date', options.from_date);\n }\n\n if (options.to_date) {\n params = params.set('to_date', options.to_date);\n }\n\n if (options.filters) {\n let filters = options.filters;\n\n if (!Array.isArray(filters)) {\n filters = EsolveFilterFactory.covertFromObj(filters);\n }\n\n params = EsolveFilterFactory.convertToHttpParams(\n filters,\n params,\n );\n }\n\n return this.http\n .get<EsolveGetResponse<EsolveTransactionRecord[]>>(\n `${this.config.api_url}/get-transactions.php`,\n {\n params: params,\n },\n )\n .pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n const items = this.processTransactions(\n response.records,\n );\n const total =\n +response.additional_data.total_records ?? 0;\n const rows = options.rows ?? total;\n const page = options.page || 1;\n\n return new EsolveTransactionList(\n items,\n page,\n rows,\n total,\n );\n }),\n );\n } catch (error) {\n return throwError(() => error);\n }\n }\n\n public getTransaction(\n id: number,\n user_id?: number,\n ): Observable<EsolveTransaction> {\n try {\n this.loginGuard();\n\n return this.http\n .get<EsolveGetResponse<EsolveTransactionRecord[]>>(\n `${this.config.api_url}/get-transactions.php`,\n {\n params: {\n user_id: user_id ?? this.user_id,\n transaction_id: id,\n },\n },\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n response.records.length <= 0\n ) {\n throw response;\n }\n\n const items = this.processTransactions(\n response.records,\n );\n\n return items[0];\n }),\n );\n } catch (error) {\n return throwError(() => error);\n }\n }\n\n private loginGuard(): void {\n if (this.user_id <= 0) {\n this.errorHandler.throwError('login_required', 'Login is required');\n }\n }\n\n private processTransactions(\n records: EsolveTransactionRecord[],\n ): EsolveTransaction[] {\n const transactions: EsolveTransaction[] = [];\n\n if (records) {\n for (const record of records) {\n const transaction = new EsolveTransaction(record);\n\n transactions.push(transaction);\n }\n }\n\n return transactions;\n }\n}\n","import { EsolveResponseResult } from '../../shared/response';\n\nexport class EsolveEmptyCartResult extends EsolveResponseResult {}\n","import { EsolveResponseResult } from '../../shared/response';\n\nimport { EsolveCheckoutResponse } from '../interfaces';\n\nexport class EsolveCheckoutResult extends EsolveResponseResult {\n public id = 0;\n public process_payment: boolean;\n\n constructor(response: EsolveCheckoutResponse) {\n super(response);\n\n this.id = +response.esolve_id;\n this.process_payment = response.process_payment ?? false;\n }\n}\n","import { EsolveCartItemRecord } from '../interfaces';\n\nexport class EsolveCartStockItem {\n public code: string;\n public name: string;\n public sef_name: string;\n public description: string;\n public delivery_category: string;\n public pack_description: string;\n public pack_size: number;\n public onhand: number;\n public active: boolean;\n\n private image_name: string;\n\n /**\n * Path to tiny stock image\n */\n public get tiny_image_src(): string {\n return this.getImagePath('tiny');\n }\n\n /**\n * Path to thumbnail stock image\n */\n public get thumbnail_image_src(): string {\n return this.getImagePath('thumb');\n }\n\n /**\n * Path to small stock image\n */\n public get small_image_src(): string {\n return this.getImagePath('small');\n }\n\n /**\n * Path to big stock image\n */\n public get big_image_src(): string {\n return this.getImagePath('big');\n }\n\n /**\n * Path to original stock image\n */\n public get original_image_src(): string {\n return this.getImagePath('original');\n }\n\n constructor(record: EsolveCartItemRecord) {\n this.code = record.code ?? '';\n this.name = record.name ?? '';\n this.sef_name = record.sef_name ?? '';\n this.description = record.description ?? '';\n this.delivery_category = record.delivery_category ?? '';\n this.image_name = record.image_name ?? '';\n this.pack_description = record.pack_description ?? '';\n this.pack_size = +(record.items_in_pack ?? 0);\n this.onhand = +(record.onhand ?? 0);\n this.active = record.is_active ?? false;\n }\n\n public getImagePath(\n image_size: 'tiny' | 'thumb' | 'small' | 'big' | 'original',\n ): string {\n if (this.image_name !== '') {\n return `/images/stock/${image_size}/${this.image_name}`;\n }\n\n return '';\n }\n}\n","import { EsolveCartItemRecord } from '../interfaces';\nimport { EsolveCartStockItem } from './esolve-cart-stock-item.model';\n\nexport class EsolveCartItem {\n public delivery_category: string;\n public type: string;\n public id: number;\n public qty: number;\n public price: number;\n public discount: number;\n public discount_interval: number;\n public vat_rate: number;\n public price_incl: number;\n public discount_price: number;\n public discount_price_incl: number;\n public discount_total: number;\n public vat_total: number;\n public total: number;\n public total_incl: number;\n public allow_quotes: boolean;\n public allow_orders: boolean;\n public must_collect: boolean;\n public requested_assembly: boolean;\n public stock_item!: EsolveCartStockItem;\n\n constructor(record: EsolveCartItemRecord) {\n this.delivery_category = record.delivery_category ?? '';\n this.type = record.type ?? '';\n this.id = +(record.id ?? 0);\n this.qty = +(record.qty ?? 0);\n this.price = +(record.price ?? 0);\n this.discount = +(record.discount ?? 0);\n this.discount_interval = +(record.discount_interval ?? 0);\n this.vat_rate = +(record.vat_rate ?? 0);\n this.price_incl = +(record.price_incl ?? 0);\n this.discount_price = +(record.discount_price ?? 0);\n this.discount_price_incl = +(record.discount_price_incl ?? 0);\n this.discount_total = +(record.discount_total ?? 0);\n this.vat_total = +(record.vat_total ?? 0);\n this.total = +(record.line_total ?? 0);\n this.total_incl = +(record.line_total_incl ?? 0);\n this.allow_quotes = record.allow_quotes ?? false;\n this.allow_orders = record.allow_orders ?? false;\n this.must_collect = record.must_collect ?? false;\n this.requested_assembly = record.requested_assembly ?? false;\n\n this.stock_item = new EsolveCartStockItem(record);\n }\n}\n","/**\n * Totals in cart\n */\nexport class EsolveCartTotals {\n /**\n * Grand total of cart which includes discount and VAT (NOTE: shipping and insurance is not included)\n */\n public get total(): number {\n return this.sub_total + this.vat_total - this.discount_total;\n }\n\n constructor(\n /**\n * Number of unique records in cart\n */\n public records: number = 0,\n /**\n * Total quantity of all items in a cart\n */\n public items: number = 0,\n /**\n * Total in cart before discount and VAT is added\n */\n public sub_total: number = 0,\n /**\n * Total VAT of all the items in the cart\n */\n public vat_total: number = 0,\n /**\n * Total discount of all the item in the cart\n */\n public discount_total: number = 0,\n ) {}\n}\n","import { EsolveTransactionType } from '../../transactions';\nimport { EsolveTransactionAnalyticsDataRecord } from '../interfaces';\n\nexport class EsolveTransactionAnalyticsData<T = any> {\n public transaction_id = 0;\n public transaction_type: EsolveTransactionType = 'order';\n /**\n * Data generated for analytics\n */\n public analytics_data?: T;\n\n constructor(record?: Partial<EsolveTransactionAnalyticsDataRecord<T>>) {\n if (record) {\n this.transaction_id = +(record.transaction_id ?? 0);\n this.transaction_type = record.transaction_type ?? 'order';\n\n if (record.analytics_data) {\n this.analytics_data = record.analytics_data;\n }\n }\n }\n}\n","import { EsolveCouponRecord } from '../interfaces';\n\nexport class EsolveCoupon {\n public id = 0;\n public identifier = '';\n public discount = 0;\n /**\n * Shows either the short code or the coupon key (if short code is not set)\n */\n public coupon_code = '';\n /**\n * Limit of the number of items it can apply to\n */\n public apply_on = 0;\n /**\n * Indicates if the discount does not apply to specified products, meaning\n * all items get the discount\n */\n public apply_to_full_cart = false;\n\n constructor(record?: EsolveCouponRecord) {\n if (record) {\n this.id = +record.id;\n this.identifier = record.identifier;\n this.discount = +record.discount;\n this.coupon_code = record.coupon_code;\n this.apply_on = +record.apply_on;\n this.apply_to_full_cart = record.apply_to_full_cart;\n }\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\n\nimport { BehaviorSubject, firstValueFrom, Observable, of, Subject } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { ESOLVE_CONNECT_CONFIG } from '../core/esolve-connect-config.constant';\nimport { EsolveConnectConfig } from '../core/esolve-connect.config';\n\nimport { EsolveCookieService } from '../shared/cookie/esolve-cookie.service';\nimport { EsolveGetResponse } from '../shared/response';\n\nimport { EsolveCoupon } from './classes';\nimport {\n EsolveCouponRecord,\n EsolveCouponValidation,\n EsolveCouponValidationError,\n EsolveCouponValidationResult,\n} from './interfaces';\nimport { EsolveCouponsCache } from './types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveCouponsService {\n private storage_key = '_ng_eslv_coupons';\n private coupons_cache: EsolveCouponsCache = new Map();\n private applied = new BehaviorSubject<void>(undefined);\n private validation_error = new Subject<\n EsolveCouponValidationError | undefined\n >();\n private is_browser: boolean;\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: object,\n @Inject(ESOLVE_CONNECT_CONFIG) private config: EsolveConnectConfig,\n private http: HttpClient,\n private cookieService: EsolveCookieService,\n ) {\n this.setStorageKey();\n this.coupons_cache = this.retrieveCache();\n this.is_browser = isPlatformBrowser(this.platformId);\n }\n\n public onValidationError(): Observable<\n EsolveCouponValidationError | undefined\n > {\n return this.validation_error.asObservable();\n }\n\n public onApplied(): Observable<void> {\n return this.applied.asObservable();\n }\n\n public validate(\n coupon_key: string,\n ): Observable<EsolveCouponValidationResult> {\n return this.http\n .get<EsolveGetResponse<EsolveCouponValidation>>(\n `${this.config.api_url}/get-validate-coupon.php`,\n {\n params: {\n coupon_key,\n },\n },\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n Array.isArray(response.records)\n ) {\n throw response;\n }\n\n const valid = response.records.valid;\n\n const result: EsolveCouponValidationResult = {\n valid,\n };\n\n if (!valid) {\n const error = response.records.error;\n this.validation_error.next(error);\n } else if (valid) {\n result.id = response.records.id;\n }\n\n return result;\n }),\n catchError(() => {\n this.validation_error.next(undefined);\n\n return of({ valid: false });\n }),\n );\n }\n\n public async applyCoupon(coupon_key: string): Promise<boolean> {\n try {\n if (coupon_key.trim() === '') {\n return false;\n }\n\n const result = await firstValueFrom(this.validate(coupon_key));\n\n if (result.valid && result.id) {\n this.addCoupon(result.id, coupon_key);\n }\n\n return result.valid;\n } catch (error) {\n return false;\n }\n }\n\n public removeCoupon(id: number): void {\n this.coupons_cache.delete(id);\n\n this.cacheCoupons();\n this.applied.next();\n }\n\n public getAppliedCouponKeys(): string[] {\n return [...this.coupons_cache.values()];\n }\n\n public getAppliedCoupons(): Observable<EsolveCoupon[]> {\n const coupon_ids = [...this.coupons_cache.keys()];\n\n return this.http\n .get<EsolveGetResponse<EsolveCouponRecord[]>>(\n `${this.config.api_url}/get-applied-coupons.php`,\n {\n params: {\n coupons: coupon_ids.join(','),\n },\n },\n )\n .pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n return this.processCoupons(response.records);\n }),\n );\n }\n\n public reset() {\n this.deleteCoupons();\n }\n\n private retrieveCache(): EsolveCouponsCache {\n if (this.cookieService.check(this.storage_key) || this.getBackup()) {\n let coupons_json = this.cookieService.get(this.storage_key);\n\n if (coupons_json === '') {\n const local_store_data = this.getBackup();\n\n if (local_store_data) {\n coupons_json = local_store_data;\n }\n }\n\n try {\n return this.jsonDecodeMap(coupons_json);\n } catch (error) {\n // soft error\n }\n }\n\n return new Map();\n }\n\n private cacheCoupons(): void {\n if (this.coupons_cache.size > 0) {\n const coupons_json = this.jsonEncodeMap(this.coupons_cache);\n\n this.cookieService.set(\n this.storage_key,\n coupons_json,\n undefined,\n '/',\n );\n\n this.setBackup(coupons_json);\n } else {\n this.deleteCoupons();\n }\n }\n\n private deleteCoupons(): void {\n this.coupons_cache.clear();\n this.cookieService.delete(this.storage_key, '/');\n\n this.removeBackup();\n }\n\n private getBackup(): string | null {\n if (!this.is_browser) {\n return null;\n }\n\n if (!localStorage) {\n return null;\n }\n\n return localStorage.getItem(this.storage_key);\n }\n\n private setBackup(data: string): void {\n if (!this.is_browser) {\n return;\n }\n\n if (!localStorage) {\n return;\n }\n\n localStorage.setItem(this.storage_key, data);\n }\n\n private removeBackup(): void {\n if (!this.is_browser) {\n return;\n }\n\n if (!localStorage) {\n return;\n }\n\n localStorage.removeItem(this.storage_key);\n }\n\n private addCoupon(id: number, key: string): void {\n if (!this.coupons_cache.has(id)) {\n this.coupons_cache.set(id, key);\n this.cacheCoupons();\n }\n\n this.applied.next();\n }\n\n private setStorageKey(): void {\n if (\n typeof this.config.coupon_storage_key === 'string' &&\n this.config.coupon_storage_key !== ''\n ) {\n this.storage_key = this.config.coupon_storage_key;\n }\n }\n\n private jsonEncodeMap(data: EsolveCouponsCache): string {\n if (!(data instanceof Map)) {\n throw new Error('Invalid map type');\n }\n\n return JSON.stringify(data, (key, value) => {\n if (value instanceof Map) {\n return {\n dataType: 'Map',\n value: [...value],\n };\n } else {\n return value;\n }\n });\n }\n\n private jsonDecodeMap(json_data: string): EsolveCouponsCache {\n const data = JSON.parse(json_data, (key, value) => {\n if (typeof value === 'object' && value !== null) {\n if (value.dataType === 'Map') {\n return new Map(value.value);\n }\n }\n\n return value;\n });\n\n if (data instanceof Map) {\n return data;\n }\n\n throw new Error('Invalid map type');\n }\n\n private processCoupons(records: EsolveCouponRecord[]): EsolveCoupon[] {\n const coupons: EsolveCoupon[] = [];\n\n if (records) {\n for (const record of records) {\n const coupon = new EsolveCoupon(record);\n\n coupons.push(coupon);\n }\n }\n\n return coupons;\n }\n}\n","// Classes\nexport * from './classes';\n\n// Interfaces\nexport * from './interfaces';\n\n// Types\nexport * from './types';\n\n// Service\nexport * from './esolve-coupons.service';\n","import { Inject, Injectable } from '@angular/core';\n\nimport {\n HttpClient,\n HttpErrorResponse,\n HttpParams,\n} from '@angular/common/http';\n\nimport { iif, Observable, of } from 'rxjs';\nimport { catchError, map, switchMap } from 'rxjs/operators';\n\nimport { EsolveConnectConfig } from '../core/esolve-connect.config';\nimport { ESOLVE_CONNECT_CONFIG } from '../core/esolve-connect-config.constant';\nimport { EsolveErrorHandlerService } from '../shared/errors/esolve-error-handler.service';\nimport {\n EsolveGetResponse,\n EsolveResponseHandlerService,\n EsolveSetResponse,\n} from '../shared/response';\n\nimport { EsolveCouponsService } from '../coupons';\n\nimport {\n EsolveCartItem,\n EsolveCartTotals,\n EsolveCheckoutResult,\n EsolveEmptyCartResult,\n EsolveTransactionAnalyticsData,\n} from './classes';\nimport {\n EsolveAdditionalWhere,\n EsolveCartItemRecord,\n EsolveCartItemResponse,\n EsolveCartSetItem,\n EsolveCartTotalsRecord,\n EsolveCheckoutResponse,\n EsolveTimeSlotCheckout,\n EsolveTrackingCode,\n EsolveTransactionAnalyticsDataRecord,\n} from './interfaces';\nimport {\n EsolveCart,\n EsolveCartSetAction,\n EsolveCartEmptyResponse,\n} from './types';\nimport { EsolveTransactionType } from '../transactions';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveCartService {\n private _cached_tracking = 0;\n\n constructor(\n @Inject(ESOLVE_CONNECT_CONFIG) private config: EsolveConnectConfig,\n private http: HttpClient,\n private errorHandler: EsolveErrorHandlerService,\n private responseHandler: EsolveResponseHandlerService,\n private coupons: EsolveCouponsService,\n ) {}\n\n /**\n * Retrieves the current cart\n *\n * @returns An `Observable` with an array of cart items\n */\n public getCart(): Observable<EsolveCart> {\n let params = new HttpParams();\n\n const coupons = this.coupons.getAppliedCouponKeys();\n\n if (coupons.length > 0) {\n params = params.set('coupons', coupons.join(','));\n }\n\n return this.http\n .get<EsolveGetResponse<EsolveCartItemRecord[]>>(\n `${this.config.api_url}/get-cart.php`,\n { params },\n )\n .pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n return this.processCart(response.records);\n }),\n );\n }\n\n /**\n * Updates the cart by preforming various actions, such as adding, editing or removing items from the cart.\n *\n * @param items An array of options to update the cart\n * @param action The default action to preform\n *\n * @returns An `Observable` with an array of responses that gives feedback on the requested changes\n */\n public setCart(\n items: EsolveCartSetItem[],\n action: EsolveCartSetAction = 'add',\n ): Observable<EsolveCartItemResponse[]> {\n const body = {\n items,\n action,\n };\n\n return this.http\n .post<EsolveSetResponse<EsolveCartItemResponse>>(\n `${this.config.api_url}/set-cart-item.php`,\n body,\n {\n headers: {\n 'Content-Type':\n 'application/x-www-form-urlencoded;charset=utf-8;',\n },\n responseType: 'json',\n observe: 'body',\n },\n )\n .pipe(\n map((response) => {\n if (response.responses === undefined) {\n throw response;\n }\n\n return response.responses;\n }),\n );\n }\n\n public setCartEmpty(\n type: EsolveTransactionType,\n additional_where: EsolveAdditionalWhere[],\n ): Observable<EsolveEmptyCartResult> {\n const body = {\n type,\n additional_where,\n };\n\n return this.http\n .post<EsolveSetResponse<EsolveCartEmptyResponse>>(\n `${this.config.api_url}/set-cart-empty.php`,\n body,\n {\n headers: {\n 'Content-Type':\n 'application/x-www-form-urlencoded;charset=utf-8;',\n },\n responseType: 'json',\n observe: 'body',\n },\n )\n .pipe(\n map((http_response) =>\n this.responseHandler.validateSingleHttpResponse(\n http_response,\n (response) => {\n this._cached_tracking = 0;\n\n return new EsolveEmptyCartResult(response);\n },\n ),\n ),\n catchError((errorRes: HttpErrorResponse | any) => {\n return this.errorHandler.handleHttpPostError(\n 'set-cart-empty',\n errorRes,\n );\n }),\n );\n }\n\n /**\n * Retrieves the totals of the cart with all the totals calculated\n *\n * @returns An `Observable` with an object containing cart totals\n */\n public getTotals(\n type?: EsolveTransactionType,\n ): Observable<EsolveCartTotals> {\n return this.http\n .get<EsolveGetResponse<EsolveCartTotalsRecord>>(\n `${this.config.api_url}/get-cart-totals.php`,\n {\n params: {\n type: type ?? '',\n },\n },\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n Array.isArray(response.records)\n ) {\n throw response;\n }\n\n return this.processCartTotals(response.records);\n }),\n );\n }\n\n /**\n * Retrieves a tracking code for the cart\n *\n * @returns An `Observable` with the cart tracking code\n */\n public getTrackingCode(): Observable<number> {\n return iif(\n () => this._cached_tracking > 0,\n of(this._cached_tracking),\n this.http\n .get<EsolveGetResponse<EsolveTrackingCode>>(\n `${this.config.api_url}/get-checkout-tracking.php`,\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n Array.isArray(response.records)\n ) {\n throw response;\n }\n\n this._cached_tracking = response.records.tracking;\n\n return response.records.tracking;\n }),\n ),\n );\n }\n\n /**\n * Get the data of the transaction for the analytics\n *\n * @param transaction_id ID of the transaction used in eSolve\n *\n * @returns An `Observable` with the analytics data\n */\n public getTransactionAnalyticsData<T = any>(\n transaction_id: number,\n ): Observable<EsolveTransactionAnalyticsData<T>> {\n return this.http\n .get<EsolveGetResponse<EsolveTransactionAnalyticsDataRecord<T>>>(\n `${this.config.api_url}/get-transaction-analytics-data.php`,\n {\n params: {\n transaction_id,\n },\n },\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n Array.isArray(response.records)\n ) {\n throw response;\n }\n\n return new EsolveTransactionAnalyticsData<T>(\n response.records,\n );\n }),\n );\n }\n\n /**\n * Initiates checkout of the cart items\n *\n * @param type The cart type that needs to be checked out\n * @param addresses_id The ID of the delivery address\n * @param shipping_id The ID of the shipping method\n * @param payment_method_id The ID of the selected payment method\n * @param location_id The ID of the selected branch from with shipping needs to be calculated\n * @param comments Additional comments on the cart\n *\n * @returns An `Observable` with the transaction ID\n */\n public checkout(\n type: EsolveTransactionType,\n addresses_id: number,\n shipping_id: number,\n payment_method_id = 0,\n location_id = 0,\n comments = '',\n time_slot?: EsolveTimeSlotCheckout,\n ): Observable<EsolveCheckoutResult> {\n const body = {\n type,\n addresses_id,\n shipping_id,\n payment_method_id,\n location_id,\n comments,\n tracking: 0,\n time_slot,\n };\n\n return this.getTrackingCode().pipe(\n switchMap((tracking) => {\n if (tracking <= 0) {\n throw tracking;\n }\n\n body.tracking = tracking;\n\n return this.http\n .post<EsolveSetResponse<EsolveCheckoutResponse>>(\n `${this.config.api_url}/set-checkout.php`,\n body,\n {\n headers: {\n 'Content-Type':\n 'application/x-www-form-urlencoded;charset=utf-8;',\n },\n responseType: 'json',\n observe: 'body',\n },\n )\n .pipe(\n map((http_response) =>\n this.responseHandler.validateSingleHttpResponse(\n http_response,\n (response) => {\n this._cached_tracking = 0;\n this.coupons.reset();\n\n return new EsolveCheckoutResult(response);\n },\n ),\n ),\n catchError((errorRes: HttpErrorResponse | any) => {\n return this.errorHandler.handleHttpPostError(\n 'set-checkout',\n errorRes,\n );\n }),\n );\n }),\n );\n }\n\n /**\n * Processes the eSolve tree records\n *\n * @param cart_item_records Records to process\n * @returns An array of processed cart items\n */\n private processCart(cart_item_records: EsolveCartItemRecord[]): EsolveCart {\n const cart_items: EsolveCartItem[] = [];\n\n if (cart_item_records) {\n for (const cart_item_record of cart_item_records) {\n cart_items.push(new EsolveCartItem(cart_item_record));\n }\n }\n\n return cart_items;\n }\n\n /**\n * Processes the eSolve cart totals\n *\n * @param record Data to process\n * @returns Processed cart totals\n */\n private processCartTotals(\n record: EsolveCartTotalsRecord,\n ): EsolveCartTotals {\n const cart_totals = new EsolveCartTotals(\n +record.records,\n +record.items,\n +record.total,\n +record.vat,\n +record.discount,\n );\n\n return cart_totals;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpClient,\n HttpErrorResponse,\n HttpParams,\n} from '@angular/common/http';\n\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { EsolveResult } from '../shared/esolve-result.model';\nimport { EsolveErrorHandlerService } from '../shared/errors';\nimport { EsolveFilterFactory } from '../shared/filters';\nimport {\n EsolveDeleteResponse,\n EsolveSetResponse,\n EsolveGetResponse,\n EsolveResponseHandlerService,\n} from '../shared/response';\n\nimport { EsolveSessionService } from '../session/esolve-session.service';\n\nimport {\n EsolveRegistrationPostResponseItem,\n EsolveRegistrationData,\n EsolveRegistrationResult,\n} from './registration';\nimport {\n EsolveAddress,\n EsolveAddressRecord,\n EsolveAddressResult,\n EsolveAddressPostData,\n EsolveAddressResponse,\n} from './address';\nimport {\n EsolveChangePasswordResult,\n EsolveResetPasswordResult,\n EsolveForgotPasswordResponse,\n EsolveForgotPasswordGetResult,\n} from './password';\nimport {\n EsolveTransactionRecord,\n EsolveTransaction,\n EsolveTransactionOptions,\n EsolveTransactionList,\n} from '../transactions';\nimport {\n EsolveUserAccount,\n EsolveUserAccountData,\n EsolveUserAccountRecord,\n EsolveUserAccountResult,\n EsolveUserClientAccountBalances,\n EsolveUserClientAccountBalancesRecord,\n} from './user-account';\nimport {\n EsolveAccountConfirmationPostResponseItem,\n EsolveAccountConfirmationResult,\n} from './confirmation';\nimport { EsolveLocationOption, EsolveLocationUpdateResult } from './location';\nimport { EsolveCartTotals } from '../cart';\nimport { EsolveConfigService } from '../core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveAccountService {\n private _user_id = 0;\n\n public get user_id(): number {\n return this._user_id;\n }\n\n public set user_id(value: number) {\n value = value > 0 ? value : 0;\n\n if (this._user_id !== value) {\n this._user_id = value;\n }\n }\n\n constructor(\n private config: EsolveConfigService,\n private http: HttpClient,\n private sessionService: EsolveSessionService,\n private errorHandler: EsolveErrorHandlerService,\n private responseHandler: EsolveResponseHandlerService,\n ) {\n this.sessionService.getSession().subscribe((session) => {\n if (session.token !== '') {\n this.user_id = session.user_id;\n }\n });\n }\n\n public updateUserAccount(\n user_account_data: EsolveUserAccountData,\n ): Observable<EsolveUserAccountResult> {\n const body = {\n account: user_account_data,\n };\n\n return this.http\n .post<EsolveSetResponse>(\n `${this.config.api_url}/set-user-account.php`,\n body,\n {\n headers: {\n 'Content-Type':\n 'application/x-www-form-urlencoded;charset=utf-8;',\n },\n responseType: 'json',\n observe: 'body',\n },\n )\n .pipe(\n map((http_response) =>\n this.responseHandler.validateSingleHttpResponse(\n http_response,\n (response) => new EsolveUserAccountResult(response),\n ),\n ),\n catchError((errorRes: HttpErrorResponse | any) => {\n return this.errorHandler.handleHttpPostError(\n 'set-user-account',\n errorRes,\n );\n }),\n );\n }\n\n public getUserAccount(): Observable<EsolveUserAccount> {\n return this.http\n .get<EsolveGetResponse<EsolveUserAccountRecord[]>>(\n `${this.config.api_url}/get-account.php`,\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n response.records.length === 0\n ) {\n throw response;\n }\n\n const record = response.records[0];\n\n return this.processUserAccount(record);\n }),\n );\n }\n\n public deleteUserAccount(): Observable<EsolveResult> {\n return this.http\n .delete<EsolveDeleteResponse>(\n `${this.config.api_url}/delete-account.php`,\n {\n responseType: 'json',\n observe: 'body',\n },\n )\n .pipe(\n map((http_response) => {\n if (\n http_response.result === undefined ||\n http_response.result === null ||\n http_response.result.status !== 'success'\n ) {\n throw http_response;\n }\n\n return new EsolveResult(\n http_response.result.status,\n http_response.result.code,\n http_response.result.message,\n );\n }),\n catchError((errorRes: HttpErrorResponse | any) => {\n return this.errorHandler.handleHttpDeleteError(\n 'delete-account',\n errorRes,\n );\n }),\n );\n }\n\n public setAddress(\n address_post_data: EsolveAddressPostData,\n ): Observable<EsolveAddressResult> {\n const body = {\n address: address_post_data,\n };\n\n return this.http\n .post<EsolveSetResponse<EsolveAddressResponse>>(\n `${this.config.api_url}/set-address.php`,\n body,\n {\n headers: {\n 'Content-Type':\n 'application/x-www-form-urlencoded;charset=utf-8;',\n },\n responseType: 'json',\n observe: 'body',\n },\n )\n .pipe(\n map((http_response) =>\n this.responseHandler.validateSingleHttpResponse(\n http_response,\n (response) => new EsolveAddressResult(response),\n ),\n ),\n catchError((errorRes: HttpErrorResponse | any) => {\n return this.errorHandler.handleHttpPostError(\n 'set-address',\n errorRes,\n );\n }),\n );\n }\n\n public getAddresses(): Observable<EsolveAddress[]> {\n try {\n this.loginGuard();\n\n return this.http\n .get<EsolveGetResponse<EsolveAddressRecord[]>>(\n `${this.config.api_url}/get-addresses.php`,\n {\n params: { user_id: this.user_id },\n },\n )\n .pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n return this.processUserAddress(response.records);\n }),\n );\n } catch (error) {\n return throwError(() => error);\n }\n }\n\n public deleteAddress(id: number): Observable<EsolveResult> {\n return this.http\n .delete<EsolveDeleteResponse>(\n `${this.config.api_url}/delete-address.php`,\n {\n params: { id },\n responseType: 'json',\n observe: 'body',\n },\n )\n .pipe(\n map((http_response) => {\n if (\n http_response.result === undefined ||\n http_response.result === null ||\n http_response.result.status !== 'success'\n ) {\n throw http_response;\n }\n\n return new EsolveResult(\n http_response.result.status,\n http_response.result.code,\n http_response.result.message,\n );\n }),\n catchError((errorRes: HttpErrorResponse | any) => {\n return this.errorHandler.handleHttpDeleteError(\n 'delete-address',\n errorRes,\n );\n }),\n );\n }\n\n public register(\n user_registration: EsolveRegistrationData,\n guest = false,\n ): Observable<EsolveRegistrationResult> {\n const body = {\n user: user_registration,\n guest_registration: guest,\n };\n\n return this.http\n .post<EsolveSetResponse<EsolveRegistrationPostResponseItem>>(\n `${this.config.api_url}/set-registration.php`,\n body,\n {\n headers: {\n 'Content-Type':\n 'application/x-www-form-urlencoded;charset=utf-8;',\n },\n responseType: 'json',\n observe: 'body',\n },\n )\n .pipe(\n map((http_response) =>\n this.responseHandler.validateSingleHttpResponse(\n http_response,\n (response) => {\n if (response.auto_login) {\n this.sessionService.handleUpdateSession({\n user_id: +response.esolve_id,\n location_id:\n +response.session_data.location_id,\n });\n }\n\n return new EsolveRegistrationResult(response);\n },\n ),\n ),\n catchError((errorRes: HttpErrorResponse | any) => {\n return this.errorHandler.handleHttpPostError(\n 'set-registration',\n errorRes,\n );\n }),\n );\n }\n\n public changePassword(\n password: string,\n confirm_password: string,\n ): Observable<EsolveChangePasswordResult> {\n const body = {\n password,\n confirm_password,\n };\n\n return this.http\n .post<EsolveSetResponse>(\n `${this.config.api_url}/set-change-password.php`,\n body,\n {\n headers: {\n 'Content-Type':\n 'application/x-www-form-urlencoded;charset=utf-8;',\n },\n responseType: 'json',\n observe: 'body',\n },\n )\n .pipe(\n map((http_response) =>\n this.responseHandler.validateSingleHttpResponse(\n http_response,\n (response) => {\n return new EsolveChangePasswordResult(response);\n },\n ),\n ),\n catchError((errorRes: HttpErrorResponse | any) => {\n return this.errorHandler.handleHttpPostError(\n 'set-change-password',\n errorRes,\n );\n }),\n );\n }\n\n /**\n * Submits the users confirmation key to the relevant backend server in order to\n * confirm the accounts validity. The key was emailed to the user hence if he received\n * it and enters the value, the email account can be seen as valid.\n *\n * @param key The key that was emailed to the registered user's email account.\n * @returns An `Observable` that contains the result of the account confirmation request.\n */\n public accountConfirmationRequest(\n key: string,\n ): Observable<EsolveAccountConfirmationResult> {\n const body = {\n key,\n };\n\n return this.http\n .post<EsolveSetResponse<EsolveAccountConfirmationPostResponseItem>>(\n `${this.config.api_url}/set-account-confirmation.php`,\n body,\n {\n headers: {\n 'Content-Type':\n 'application/x-www-form-urlencoded;charset=utf-8;',\n },\n responseType: 'json',\n observe: 'body',\n },\n )\n .pipe(\n map((http_response) =>\n this.responseHandler.validateSingleHttpResponse(\n http_response,\n (response) => {\n if (response.auto_login) {\n this.sessionService.handleUpdateSession({\n user_id: +response.esolve_id,\n location_id: +response.location_id,\n });\n }\n\n return new EsolveAccountConfirmationResult(\n response,\n );\n },\n ),\n ),\n catchError((errorRes: HttpErrorResponse | any) => {\n return this.errorHandler.handleHttpPostError(\n 'set-account-confirmation',\n errorRes,\n );\n }),\n );\n }\n\n public sendForgotPasswordRequest(email: string): Observable<boolean> {\n return this.http\n .get<EsolveGetResponse<EsolveForgotPasswordGetResult>>(\n `${this.config.api_url}/get-forgot-password.php`,\n { params: { email } },\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n !('reset_link_sent' in response.records)\n ) {\n throw response;\n }\n\n return response.records.reset_link_sent;\n }),\n );\n }\n\n public resetPassword(\n reset_key: string,\n password: string,\n confirm_password: string,\n auto_login = true,\n ): Observable<EsolveResetPasswordResult> {\n return this.http\n .post<EsolveSetResponse<EsolveForgotPasswordResponse>>(\n `${this.config.api_url}/set-forgot-password.php`,\n {\n reset_key,\n password,\n confirm_password,\n auto_login,\n },\n {\n headers: {\n 'Content-Type':\n 'application/x-www-form-urlencoded;charset=utf-8;',\n },\n responseType: 'json',\n observe: 'body',\n },\n )\n .pipe(\n map((http_response) =>\n this.responseHandler.validateSingleHttpResponse(\n http_response,\n (response) => {\n if (!response.login_required) {\n this.sessionService.handleUpdateSession({\n user_id: +response.esolve_id,\n location_id:\n +response.session_data.location_id,\n });\n }\n\n return new EsolveResetPasswordResult(response);\n },\n ),\n ),\n catchError((errorRes: HttpErrorResponse | any) => {\n return this.errorHandler.handleHttpPostError(\n 'set-forgot-password',\n errorRes,\n );\n }),\n );\n }\n\n public updateLocation(\n location_id: number,\n ): Observable<EsolveLocationUpdateResult> {\n return this.updateUserLocation({ location_id });\n }\n\n public updateLocationOnErp(\n erp: string,\n ): Observable<EsolveLocationUpdateResult> {\n return this.updateUserLocation({ erp });\n }\n\n /**\n * @deprecated Use EsolveTransactionsService for future transaction requests\n */\n public getTransactions(\n options: EsolveTransactionOptions = {},\n ): Observable<EsolveTransactionList> {\n try {\n this.loginGuard();\n\n let params = new HttpParams();\n\n params = params.set('user_id', this.user_id);\n\n if (options.type) {\n params = params.set('type', options.type);\n }\n\n if (options.page) {\n params = params.set('page', options.page);\n }\n\n if (options.rows) {\n params = params.set('rows', options.rows);\n }\n\n if (options.from_date) {\n params = params.set('from_date', options.from_date);\n }\n\n if (options.to_date) {\n params = params.set('to_date', options.to_date);\n }\n\n if (options.filters) {\n let filters = options.filters;\n\n if (!Array.isArray(filters)) {\n filters = EsolveFilterFactory.covertFromObj(filters);\n }\n\n params = EsolveFilterFactory.convertToHttpParams(\n filters,\n params,\n );\n }\n\n return this.http\n .get<EsolveGetResponse<EsolveTransactionRecord[]>>(\n `${this.config.api_url}/get-transactions.php`,\n { params },\n )\n .pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n const items = this.processTransactions(\n response.records,\n );\n const total =\n +response.additional_data.total_records ?? 0;\n const rows = options.rows ?? total;\n const page = options.page || 1;\n\n return new EsolveTransactionList(\n items,\n page,\n rows,\n total,\n );\n }),\n );\n } catch (error) {\n return throwError(() => error);\n }\n }\n\n /**\n * @deprecated Use EsolveTransactionsService for future transaction requests\n */\n public getTransaction(id: number): Observable<EsolveTransaction> {\n try {\n this.loginGuard();\n\n return this.http\n .get<EsolveGetResponse<EsolveTransactionRecord[]>>(\n `${this.config.api_url}/get-transactions.php`,\n {\n params: {\n user_id: this.user_id,\n transaction_id: id,\n },\n },\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n response.records.length <= 0\n ) {\n throw response;\n }\n\n const items = this.processTransactions(\n response.records,\n );\n\n return items[0];\n }),\n );\n } catch (error) {\n return throwError(() => error);\n }\n }\n\n public getClientAccountBalances(): Observable<\n EsolveUserClientAccountBalances | undefined\n > {\n try {\n this.loginGuard();\n\n return this.http\n .get<\n EsolveGetResponse<EsolveUserClientAccountBalancesRecord[]>\n >(`${this.config.api_url}/get-client-account-balances.php`)\n .pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n return this.processClientBalances(response.records);\n }),\n );\n } catch (error) {\n return throwError(() => error);\n }\n }\n\n private processUserAccount(\n record: EsolveUserAccountRecord,\n ): EsolveUserAccount {\n if (!record) {\n throw new Error('Invalid record');\n }\n\n if (+record.userid !== this._user_id) {\n throw new Error('Invalid user account retrieved');\n }\n\n return new EsolveUserAccount(record);\n }\n\n private processUserAddress(\n records: EsolveAddressRecord[],\n ): EsolveAddress[] {\n const user_addresses: EsolveAddress[] = [];\n\n if (!records || this._user_id === 0) {\n return user_addresses;\n }\n\n for (const record of records) {\n if (+record.userid !== this._user_id) {\n continue;\n }\n\n user_addresses.push(\n new EsolveAddress(\n +record.id,\n record.recipient,\n record.address_type,\n record.pobox,\n record.place_name,\n record.street_number,\n record.street,\n record.suburb,\n record.city,\n record.province,\n record.country,\n record.postal_code,\n +record.latitude,\n +record.longitude,\n ),\n );\n }\n\n return user_addresses;\n }\n\n private processTransactions(\n records: EsolveTransactionRecord[],\n ): EsolveTransaction[] {\n const transactions: EsolveTransaction[] = [];\n\n if (records) {\n for (const record of records) {\n const transaction = new EsolveTransaction(record);\n\n transactions.push(transaction);\n }\n }\n\n return transactions;\n }\n\n private processClientBalances(\n records: EsolveUserClientAccountBalancesRecord[],\n ): EsolveUserClientAccountBalances | undefined {\n for (const record of records) {\n if (+record.clients_id <= 0) {\n return undefined;\n }\n\n const cart_totals = new EsolveCartTotals(\n record.cart_totals.records,\n +record.cart_totals.items,\n +record.cart_totals.total,\n +record.cart_totals.vat,\n +record.cart_totals.discount,\n );\n\n return new EsolveUserClientAccountBalances(\n +record.clients_id,\n record.account,\n cart_totals,\n +record.credit_limit,\n +record.external_account_balance,\n +record.external_available_balance,\n +record.new_external_available_balance,\n !!+record.credit_limit_okay,\n );\n }\n\n return undefined;\n }\n\n private loginGuard(): void {\n if (this.user_id <= 0) {\n this.errorHandler.throwError('login_required', 'Login is required');\n }\n }\n\n private updateUserLocation(\n body: EsolveLocationOption,\n ): Observable<EsolveLocationUpdateResult> {\n return this.http\n .post<EsolveSetResponse>(\n `${this.config.api_url}/set-session-location.php`,\n body,\n {\n headers: {\n 'Content-Type':\n 'application/x-www-form-urlencoded;charset=utf-8;',\n },\n responseType: 'json',\n observe: 'body',\n },\n )\n .pipe(\n map((http_response) =>\n this.responseHandler.validateSingleHttpResponse(\n http_response,\n (response) => {\n if (typeof response.esolve_id === 'string') {\n throw new Error('Invalid response id.');\n }\n\n this.sessionService.handleUpdateSession({\n location_id: response.esolve_id,\n });\n\n return new EsolveLocationUpdateResult(response);\n },\n ),\n ),\n );\n }\n}\n","import { EsolveBannerType } from './esolve-banner-type.type';\nimport { EsolveBannerLink } from './esolve-banner-link.interface';\nimport { EsolveBannerImage } from './esolve-banner-image.model';\nimport { EsolveBannerImageSet } from './esolve-banner-image-set.interface';\n\nexport class EsolveBanner {\n public desktop_images: EsolveBannerImage[] = [];\n public mobile_images: EsolveBannerImage[] = [];\n public sub_images: EsolveBannerImage[] = [];\n\n constructor(\n public id: number,\n public banner_display_container: string,\n public identifier: string,\n public type: EsolveBannerType,\n public title: string,\n public article: string,\n public sort_priority: number,\n public link: EsolveBannerLink,\n images: EsolveBannerImageSet,\n ) {\n if (images.desktop) {\n this.desktop_images = images.desktop;\n }\n\n if (images.mobile) {\n this.mobile_images = images.mobile;\n }\n\n if (images.sub) {\n this.sub_images = images.sub;\n }\n }\n}\n","import { EsolveBannerImageType } from './esolve-banner-image-type.type';\nimport { EsolveBannerImageHotspot } from './esolve-banner-image-hotspot.model';\n\nexport class EsolveBannerImage {\n constructor(\n public id: number,\n public image_type: EsolveBannerImageType,\n public width: number,\n public height: number,\n public filename: string,\n public hotspots?: EsolveBannerImageHotspot[],\n ) {}\n\n public get src(): string {\n return '/images/banners/' + this.filename;\n }\n}\n","import { EsolveUrlTarget } from '../shared/esolve-url-target.type';\nimport { EsolveBannerImageHotspotCoords } from './esolve-banner-image-hotspot-coords.interface';\n\nexport class EsolveBannerImageHotspot {\n constructor(\n public url: string,\n public target: EsolveUrlTarget,\n public coords: EsolveBannerImageHotspotCoords[],\n public coords_string: string,\n ) {}\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { EsolveConfigService } from '../core';\nimport { EsolveGetResponse } from '../shared/response';\n\nimport { EsolveBannerType } from './esolve-banner-type.type';\nimport { EsolveBanner } from './esolve-banner.model';\nimport { EsolveBannerImageSet } from './esolve-banner-image-set.interface';\nimport { EsolveBannerImage } from './esolve-banner-image.model';\nimport { EsolveBannerImageHotspot } from './esolve-banner-image-hotspot.model';\nimport { EsolveBannerRecord } from './esolve-banner-record.interface';\nimport { EsolveBannerImageHotspotRecord } from './esolve-banner-image-hotspot-record.interface';\nimport { EsolveBannerImageRecord } from './esolve-banner-image-record.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveBannerService {\n constructor(\n private config: EsolveConfigService,\n private http: HttpClient,\n ) {}\n\n /**\n * Retrieves banners records from eSolve instance\n *\n * @returns An observable of eSolve banners.\n */\n public getBanners(\n identifier?: string,\n banner_display_container?: string,\n enable_date_filter = false,\n ): Observable<EsolveBanner[]> {\n let params = new HttpParams({\n fromObject: { enable_date_filter },\n });\n\n if (identifier) {\n params = params.set('identifier', identifier);\n }\n\n if (banner_display_container) {\n params = params.set(\n 'banner_display_container',\n banner_display_container,\n );\n }\n\n return this.http\n .get<EsolveGetResponse<EsolveBannerRecord[]>>(\n `${this.config.api_url}/get-banners.php`,\n { params },\n )\n .pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n return this.processBanners(response.records);\n }),\n );\n }\n\n private processBannerImageHotspots(\n hotspot_records: EsolveBannerImageHotspotRecord[],\n ): EsolveBannerImageHotspot[] {\n const hotspots: EsolveBannerImageHotspot[] = [];\n\n if (hotspot_records.length > 0) {\n for (const hotspot_record of hotspot_records) {\n const hotspot = new EsolveBannerImageHotspot(\n hotspot_record.url,\n hotspot_record.target,\n hotspot_record.coords,\n hotspot_record.coords_string,\n );\n\n hotspots.push(hotspot);\n }\n }\n\n return hotspots;\n }\n\n private processBannerImages(\n image_records: EsolveBannerImageRecord[],\n banner_type: EsolveBannerType,\n ): EsolveBannerImage[] {\n const images: EsolveBannerImage[] = [];\n\n if (image_records.length > 0) {\n for (const image_record of image_records) {\n const image = new EsolveBannerImage(\n +image_record.id,\n image_record.image_type,\n +image_record.width,\n +image_record.height,\n image_record.filename,\n );\n\n if (banner_type === 'hotspot' && image_record.hotspots) {\n const hotspots = this.processBannerImageHotspots(\n image_record.hotspots,\n );\n image.hotspots = hotspots;\n }\n\n images.push(image);\n }\n }\n\n return images;\n }\n\n /**\n * Process banner records into banner objects\n * @param records Array of records\n * @returns List of banners\n */\n private processBanners(records: EsolveBannerRecord[]): EsolveBanner[] {\n const banners: EsolveBanner[] = [];\n\n if (records && records.length > 0) {\n for (const record of records) {\n const image_sets: EsolveBannerImageSet = {};\n\n if (record.images.desktop) {\n image_sets.desktop = this.processBannerImages(\n record.images.desktop,\n record.type,\n );\n }\n\n if (record.images.mobile) {\n image_sets.mobile = this.processBannerImages(\n record.images.mobile,\n record.type,\n );\n }\n\n if (record.images.sub) {\n image_sets.sub = this.processBannerImages(\n record.images.sub,\n record.type,\n );\n }\n\n const banner = new EsolveBanner(\n +record.id,\n record.banner_display_container,\n record.identifier,\n record.type,\n record.title,\n record.article,\n +record.sort_priority,\n {\n url: record.link.url,\n target: record.link.target,\n },\n image_sets,\n );\n\n banners.push(banner);\n }\n }\n\n return banners;\n }\n}\n","// Types\nexport * from './esolve-banner-image-type.type';\n\n// Classes\nexport * from './esolve-banner.model';\nexport * from './esolve-banner-image.model';\nexport * from './esolve-banner-image-hotspot.model';\n\n// Interfaces\nexport * from './esolve-banner-image-set.interface';\nexport * from './esolve-banner-image-record.interface';\nexport * from './esolve-banner-image-hotspot-coords.interface';\nexport * from './esolve-banner-image-hotspot-record.interface';\n\n// Service\nexport * from './esolve-banner.service';\n","import { EsolveUrlTarget } from '../../shared/esolve-url-target.type';\n\nimport { EsolveMenuTreeRecord } from '../interfaces';\n\nexport class EsolveMenuItem {\n public id = 0;\n public selected_id = '';\n public url = '';\n public name = '';\n public module = '';\n public sort_priority = 0;\n public target: EsolveUrlTarget = '_self';\n public children: EsolveMenuItem[] = [];\n\n constructor(record?: Partial<EsolveMenuTreeRecord>) {\n if (record) {\n this.id = +(record.id ?? 0);\n this.selected_id = record.selected_id ?? '';\n this.url = record.sef_url ?? '';\n this.name = record.name ?? '';\n this.module = record.module ?? '';\n this.sort_priority = +(record.sort_priority ?? 0);\n\n if (\n record.target &&\n (record.target === '_self' || record.target === '_blank')\n ) {\n this.target = record.target;\n }\n\n if (\n typeof record.children !== 'undefined' &&\n Array.isArray(record.children)\n ) {\n for (const child of record.children) {\n this.children.push(new EsolveMenuItem(child));\n }\n }\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { EsolveConfigService } from '../core';\nimport { EsolveGetResponse } from '../shared/response';\n\nimport { EsolveMenuItem } from './classes';\nimport { EsolveMenuTreeRecord } from './interfaces';\nimport { EsolveMenu } from './types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveMenuService {\n constructor(\n private config: EsolveConfigService,\n private http: HttpClient,\n ) {}\n\n public getMenuTree(identifier: string): Observable<EsolveMenu> {\n return this.http\n .get<EsolveGetResponse<EsolveMenuTreeRecord[]>>(\n `${this.config.api_url}/get-menu-tree.php`,\n { params: { identifier } },\n )\n .pipe(\n map((response) => {\n if (!response || response.records === undefined) {\n throw response;\n } else if (response.records.length === 0) {\n return [];\n }\n\n return this.handleMenu(response.records);\n }),\n );\n }\n\n private handleMenu(records?: EsolveMenuTreeRecord[]): EsolveMenu {\n const menu: EsolveMenu = [];\n\n if (typeof records !== 'undefined') {\n for (const record of records) {\n menu.push(new EsolveMenuItem(record));\n }\n }\n\n return menu;\n }\n}\n","import { EsolveNewsGroupRecord } from './esolve-news-group-record.interface';\n\nexport class EsolveNewsGroup {\n public id = 0;\n public name = '';\n public description = '';\n public sef_name = '';\n private image?: string;\n\n public get image_src(): string {\n return this.getImagePath();\n }\n\n constructor(record: EsolveNewsGroupRecord) {\n this.id = +record.id;\n this.name = record.name;\n this.description = record.description;\n this.sef_name = record.sef_name;\n\n if (record.image && record.image !== '') {\n this.image = record.image;\n }\n }\n\n public getImagePath(): string {\n if (!this.image) {\n return '';\n }\n\n return `/images/assets/${this.image}`;\n }\n}\n","export class EsolveNewsArticleAuthor {\n constructor(\n public userid: number,\n public email: string,\n public firstname: string,\n public surname: string,\n ) {}\n}\n","import { EsolveSeoInfo } from '../shared/seo/esolve-seo-info.model';\nimport { EsolveSeoDetails } from '../shared/seo/esolve-seo-details.interface';\n\nimport { EsolveTag } from '../tags';\nimport { EsolveTopic } from '../topics';\nimport { EsolveManufacturer } from '../manufacturers';\nimport { EsolveRange } from '../ranges';\n\nimport { EsolveNewsGroup } from './esolve-news-group.model';\nimport { EsolveNewsArticleAuthor } from './esolve-news-article-author.model';\nimport { EsolveNewsArticleRecord } from './esolve-news-article-record.interface';\n\nexport class EsolveNewsArticle implements EsolveSeoDetails {\n public id = 0;\n public title = '';\n public sef_title = '';\n public article = '';\n public short_description = '';\n public txdate = '';\n public active = false;\n public image = '';\n public featured = false;\n public topics: EsolveTopic[] = [];\n public tags: EsolveTag[] = [];\n public author?: EsolveNewsArticleAuthor;\n public group?: EsolveNewsGroup;\n public manufacturer?: EsolveManufacturer;\n public range?: EsolveRange;\n public seo_details: EsolveSeoInfo;\n\n constructor(record?: Partial<EsolveNewsArticleRecord>) {\n let seo_title = '';\n let seo_description = '';\n let seo_keywords = '';\n\n if (record) {\n this.id = +(record.id ?? 0);\n this.title = record.title ?? '';\n this.sef_title = record.sef_title ?? '';\n this.article = record.article ?? '';\n this.txdate = record.txdate ?? '';\n this.image = record.image ?? '';\n this.short_description = record.short_description ?? '';\n\n if (record.active) {\n this.active = !!+record.active;\n }\n\n if (record.featured) {\n this.featured = !!+record.featured;\n }\n\n seo_title = record.seo_page_title ?? '';\n seo_description = record.short_description ?? '';\n seo_keywords = record.seo_keywords ?? '';\n\n if (record.news_group) {\n const group_record = record.news_group;\n\n this.group = new EsolveNewsGroup(group_record);\n }\n\n if (record.user) {\n this.author = new EsolveNewsArticleAuthor(\n record.user.userid,\n record.user.email,\n record.user.firstname,\n record.user.surname,\n );\n }\n\n if (record.manufacturer) {\n this.manufacturer = new EsolveManufacturer(record.manufacturer);\n }\n\n if (record.range) {\n this.range = new EsolveRange(record.range);\n }\n\n if (record.topics && record.topics.length > 0) {\n const topics = record.topics;\n\n for (const topic of topics) {\n this.topics.push(new EsolveTopic(topic));\n }\n }\n\n if (record.tags && record.tags.length > 0) {\n const tags = record.tags;\n\n for (const tag of tags) {\n this.tags.push(new EsolveTag(tag));\n }\n }\n }\n\n if (seo_title.trim() === '') {\n seo_title = this.title;\n }\n\n this.seo_details = new EsolveSeoInfo(\n seo_title,\n seo_description,\n seo_keywords,\n );\n }\n}\n","import { EsolveNewsArticle } from './esolve-news-article.model';\n\nexport class EsolveNewsArticleList {\n constructor(\n public newsArticles: EsolveNewsArticle[],\n public total: number,\n public page: number,\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\n\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { EsolveGetResponse } from '../shared/response';\n\nimport { EsolveNewsArticle } from './esolve-news-article.model';\nimport { EsolveNewsGroup } from './esolve-news-group.model';\nimport { EsolveNewsArticleRecord } from './esolve-news-article-record.interface';\nimport { EsolveNewsGroupRecord } from './esolve-news-group-record.interface';\nimport { EsolveNewsArticleList } from './esolve-news-article-list.model';\nimport { EsolveNewsArticleOptions } from './esolve-news-article-options.interface';\nimport { EsolveConfigService } from '../core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveNewsService {\n constructor(\n private config: EsolveConfigService,\n private http: HttpClient,\n ) {}\n\n public getNewsArticle(identifier: string): Observable<EsolveNewsArticle> {\n const params = new HttpParams({\n fromObject: { sef_title: identifier },\n });\n\n return this.getNewsRecords(params).pipe(\n map((response) => {\n if (\n response.records === undefined ||\n response.records.length <= 0\n ) {\n throw response;\n }\n\n const record = response.records[0];\n\n if (!record.active) {\n throw response;\n }\n\n return this.processNewsArticle(record);\n }),\n );\n }\n\n public getNewsArticles(\n options?: EsolveNewsArticleOptions,\n ): Observable<EsolveNewsArticleList> {\n const params = this.parseOptions(options);\n\n return this.getNewsRecords(params).pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n const news_articles: EsolveNewsArticle[] = [];\n\n for (const record of response.records) {\n news_articles.push(this.processNewsArticle(record));\n }\n\n const page = options?.page ?? 0;\n const total_records = +response.additional_data.total_records;\n\n return new EsolveNewsArticleList(\n news_articles,\n total_records,\n page,\n );\n }),\n );\n }\n\n public getNewsGroups(enable_images = false): Observable<EsolveNewsGroup[]> {\n return this.http\n .get<EsolveGetResponse<EsolveNewsGroupRecord[]>>(\n `${this.config.api_url}/get-news-groups.php`,\n {\n params: {\n enable_images,\n },\n },\n )\n .pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n const news_groups: EsolveNewsGroup[] = [];\n\n for (const record of response.records) {\n news_groups.push(new EsolveNewsGroup(record));\n }\n\n return news_groups;\n }),\n );\n }\n\n private processNewsArticle(\n record: EsolveNewsArticleRecord,\n ): EsolveNewsArticle {\n return new EsolveNewsArticle(record);\n }\n\n private getNewsRecords(\n params: HttpParams,\n ): Observable<EsolveGetResponse<EsolveNewsArticleRecord[]>> {\n return this.http.get<EsolveGetResponse<EsolveNewsArticleRecord[]>>(\n `${this.config.api_url}/get-news.php`,\n { params },\n );\n }\n\n private parseOptions(options?: EsolveNewsArticleOptions): HttpParams {\n let params = new HttpParams();\n\n if (!options) {\n return params;\n }\n\n if (options.news_group_id) {\n params = params.set('news_group_id', options.news_group_id);\n } else if (options.news_group_sef) {\n params = params.set('news_group_sef', options.news_group_sef);\n }\n\n if (options.page) {\n params = params.set('page', options.page);\n }\n\n if (options.rows) {\n params = params.set('rows', options.rows);\n }\n\n if (options.feature_only) {\n params = params.set('feature_only', options.feature_only);\n }\n\n if (options.manufacturers_id) {\n params = params.set('manufacturers_id', options.manufacturers_id);\n }\n\n if (options.ranges_id) {\n params = params.set('ranges_id', options.ranges_id);\n }\n\n if (options.from_date) {\n params = params.set('from_date', options.from_date);\n }\n\n if (options.to_date) {\n params = params.set('to_date', options.to_date);\n }\n\n if (options.search_phrase) {\n params = params.set('search_phrase', options.search_phrase);\n }\n\n return params;\n }\n}\n","// Types\nexport * from './esolve-stock-image-size.type';\nexport * from './esolve-media-stock-item-list.type';\nexport * from './esolve-stock-unit-of-measure.type';\nexport * from './esolve-stock-sort-field.type';\nexport * from './esolve-media-stock-sort-field.type';\nexport * from './esolve-stock-group-item-record.type';\nexport * from './esolve-media-stock-item-record.type';\n","import { EsolveColourRecord } from '../interfaces';\n\nexport class EsolveColour {\n public id: number;\n public colour: string;\n public description: string;\n\n constructor(record: Partial<EsolveColourRecord>) {\n this.id = record.id ?? 0;\n this.colour = record.colour ?? '';\n this.description = record.description ?? '';\n }\n}\n","export class EsolveStockBadge {\n constructor(\n public id: number,\n public text: string,\n public identifier: string,\n public font_colour: string,\n public badge_colour: string,\n public sort_priority: number,\n ) {}\n}\n","/**\n * Price of eSolve stock item\n */\nexport class EsolveStockPrice {\n public taxed: boolean;\n\n /**\n * Create stock price instance\n *\n * @param base_price Price without tax\n * @param base_price_with_tax Price with tax\n * @param sell_price Price without tax and with discounts applied if applicable\n * @param sell_price_with_tax Price with tax and with discounts applied if applicable\n * @param tax_rate Tax rate of the item\n * @param taxed Whether tax has been applied\n */\n constructor(\n /**\n * Price without tax\n */\n public base_price: number = 0,\n\n /**\n * Price with tax\n */\n public base_price_with_tax: number = 0,\n\n /**\n * Price without tax and with discounts applied if applicable\n */\n public sell_price: number = 0,\n\n /**\n * Price with tax and with discounts applied if applicable\n */\n public sell_price_with_tax: number = 0,\n\n /**\n * Vat Rate for the item\n */\n public tax_rate: number = 0,\n\n taxed?: boolean,\n ) {\n if (this.base_price === 0 && this.sell_price > 0) {\n this.base_price = this.sell_price;\n this.base_price_with_tax = this.sell_price_with_tax;\n } else if (this.base_price > 0 && this.sell_price === 0) {\n this.sell_price = this.base_price;\n this.sell_price_with_tax = this.base_price_with_tax;\n }\n\n this.taxed = taxed ?? this.base_price !== this.base_price_with_tax;\n }\n}\n","import { EsolveStockLeadTimesRecord } from '../interfaces';\n\nexport class EsolveStockLeadTimes {\n public min = 0;\n public max = 0;\n\n constructor(lead_times: EsolveStockLeadTimesRecord) {\n this.min = lead_times.min;\n this.max = lead_times.max;\n }\n}\n","export class EsolveStockTransactionHistory {\n constructor(\n public total_order_qty: number = 0,\n public total_quote_qty: number = 0,\n ) {}\n}\n","import { EsolveCustomFields } from '../../shared/custom-fields';\nimport { EsolveSeoDetails, EsolveSeoInfo } from '../../shared/seo';\n\nimport { EsolveCategoryTreeItem } from '../../category-tree';\nimport { EsolveManufacturer } from '../../manufacturers';\nimport { EsolveRange } from '../../ranges';\nimport { EsolveTag } from '../../tags';\nimport { EsolveTopic } from '../../topics';\n\nimport { EsolveStockImageSize, EsolveStockUnitOfMeasure } from '../types';\nimport { EsolveStockBaseRecord } from '../interfaces';\nimport { EsolveStockBadge } from './esolve-stock-badge.model';\nimport { EsolveStockPrice } from './esolve-stock-price.model';\nimport { EsolveColour } from './esolve-colour.model';\nimport { EsolveStockLeadTimes } from './esolve-stock-lead-times.model';\nimport { EsolveStockTransactionHistory } from './esolve-stock-transaction-history.model';\n\nexport class EsolveStockItemBase<\n T extends EsolveCustomFields = EsolveCustomFields,\n> implements EsolveSeoDetails\n{\n /**\n * eSolve Generated ID\n */\n public id = 0;\n /**\n * Code identifying the stock item\n */\n public code = '';\n /**\n * Name of the stock item\n */\n public name = '';\n /**\n * Search engine friendly name\n */\n public sef_name = '';\n /**\n * Search composite field made up of key phrases\n */\n public search_composite = '';\n /**\n * Type field. General high grouping\n */\n public type = '';\n /**\n * Sub type field. General high grouping\n */\n public sub_type = '';\n /**\n * Short description of stock item\n */\n public description = '';\n /**\n * Full description of stock item\n */\n public extended_description = '';\n /**\n * Active state\n */\n public active = false;\n /**\n * Featured state\n */\n public featured = false;\n /**\n * Display Only state\n */\n public display_only = false;\n /**\n * Quotable state\n */\n public allow_quotes = true;\n /**\n * Orderable state\n */\n public allow_orders = true;\n /**\n * Item must be collected, not delivery possible\n */\n public must_collect = false;\n /**\n * Item needs to be assembled after purchase\n */\n public requires_assembly = false;\n /**\n * The type of delivery category associated with the item\n */\n public delivery_category = 'regular_item';\n /**\n * Custom stock label added on to item to display for user\n */\n public custom_label = '';\n /**\n * Number of stock available\n */\n public amount_in_stock = 0;\n /**\n * Total items linked to the item as a recipe\n */\n public total_recipe_items = 0;\n /**\n * Height measured in meters (m)\n */\n public height = 0;\n /**\n * Width measured in meters (m)\n */\n public width = 0;\n /**\n * Length / depth measured in meters (m)\n */\n public length = 0;\n /**\n * Weight measured in kilograms (kg)\n */\n public weight = 0;\n /**\n * Number of items in a pack\n */\n public pack_size = 0;\n /**\n * Description of the pack\n */\n public pack_description = '';\n /**\n * Units used to measure the quantity\n */\n public unit_of_measure: EsolveStockUnitOfMeasure = 'unit';\n /**\n * ID of default category linked to the stock item\n *\n * @deprecated Use `category.esolve_id` field instead\n */\n public category_id = '';\n /**\n * Default linked category\n */\n public category?: EsolveCategoryTreeItem;\n /**\n * ID of default subcategory linked to the stock item\n *\n * @deprecated Use `subcategory.esolve_id` field instead\n */\n public subcategory_id = 0;\n /**\n * Default linked subcategory\n */\n public subcategory?: EsolveCategoryTreeItem;\n /**\n * ID of linked manufacturer\n *\n * @deprecated Use `manufacturer.id` field instead\n */\n public manufacturers_id = 0;\n /**\n * Linked manufacturer\n */\n public manufacturer?: EsolveManufacturer;\n /**\n * ID of linked range\n *\n * @deprecated Use `range.id` field instead\n */\n public ranges_id = 0;\n /**\n * Linked range\n */\n public range?: EsolveRange;\n /**\n * Default price\n */\n public price: EsolveStockPrice;\n /**\n * SEO page details\n */\n public seo_details: EsolveSeoInfo;\n /**\n * Linked tags\n */\n public tags: EsolveTag[] = [];\n /**\n * Linked topics\n */\n public topics: EsolveTopic[] = [];\n /**\n * Stock badges\n */\n public badges: EsolveStockBadge[] = [];\n /**\n * Stock item custom fields.\n */\n public custom_fields?: T;\n /**\n * Colours\n */\n public colours: EsolveColour[] = [];\n /**\n * Stock Item Lead Times for supply\n */\n public lead_times?: EsolveStockLeadTimes;\n /**\n * Linked manufacturer\n */\n public history?: EsolveStockTransactionHistory;\n\n /**\n * Image filename\n */\n private image_name = '';\n\n /**\n * Image Last modified\n */\n private image_last_modified = '';\n\n /**\n * Path to tiny stock image\n */\n public get tiny_image_src(): string {\n return this.getImagePath('tiny');\n }\n\n /**\n * Path to thumbnail stock image\n */\n public get thumbnail_image_src(): string {\n return this.getImagePath('thumb');\n }\n\n /**\n * Path to small stock image\n */\n public get small_image_src(): string {\n return this.getImagePath('small');\n }\n\n /**\n * Path to big stock image\n */\n public get big_image_src(): string {\n return this.getImagePath('big');\n }\n\n /**\n * Path to original stock image\n */\n public get original_image_src(): string {\n return this.getImagePath('original');\n }\n\n public get available(): boolean {\n return this.amount_in_stock > 0;\n }\n\n constructor(record: Partial<EsolveStockBaseRecord<T>> = {}) {\n let seo_title = '';\n let seo_keywords = '';\n let base_price = 0;\n let base_price_with_tax = 0;\n let sell_price = 0;\n let sell_price_with_tax = 0;\n\n if (record) {\n this.id = +(record.id ?? 0);\n this.code = record.code ?? '';\n this.name = record.name ?? '';\n this.sef_name = record.sef_name ?? '';\n this.search_composite = record.search_composite ?? '';\n this.type = record.type ?? '';\n this.sub_type = record.sub_type ?? '';\n this.description = record.description ?? '';\n this.extended_description = record.extended_description ?? '';\n this.image_name = record.image_name ?? '';\n this.image_last_modified = record.image_last_modified ?? '';\n\n this.category_id = record.category_id ?? '';\n this.subcategory_id = +(record.subcategory_id ?? 0);\n this.manufacturers_id = +(record.manufacturers_id ?? 0);\n this.ranges_id = +(record.ranges_id ?? 0);\n this.delivery_category = record.delivery_category ?? 'regular_item';\n this.custom_label = record.custom_label ?? '';\n\n this.must_collect = !!+(record.must_collect ?? false);\n this.requires_assembly = !!+(record.requires_assembly ?? false);\n this.active = !!+(record.is_active ?? false);\n this.featured = !!+(record.is_featured ?? false);\n this.display_only = !!+(record.display_only ?? false);\n this.allow_quotes = record.allow_quotes ?? true;\n this.allow_orders = record.allow_orders ?? true;\n\n this.amount_in_stock = +(record.onhand ?? 0);\n this.total_recipe_items = +(record.total_recipe_items ?? 0);\n\n this.pack_size = +(record.items_in_pack ?? 0);\n this.pack_description = record.pack_description ?? '';\n\n this.height = +(record.height ?? 0);\n this.width = +(record.width ?? 0);\n this.length = +(record.length ?? 0);\n this.weight = +(record.weight ?? 0);\n\n if (record.unit_of_measure) {\n this.unit_of_measure = record.unit_of_measure;\n }\n\n base_price = +(record.regular_sellprice ?? 0);\n base_price_with_tax = +(record.regular_sellprice_inclusive ?? 0);\n sell_price = +(record.sellprice ?? 0);\n sell_price_with_tax = +(record.sellprice_inclusive ?? 0);\n\n if (record.tags && record.tags.length > 0) {\n for (const tag of record.tags) {\n this.tags.push(new EsolveTag(tag));\n }\n }\n\n if (record.topics && record.topics.length > 0) {\n for (const topic of record.topics) {\n this.topics.push(new EsolveTopic(topic));\n }\n }\n\n if (record.badges && record.badges.length > 0) {\n for (const badge of record.badges) {\n this.badges.push(\n new EsolveStockBadge(\n +badge.id,\n badge.text,\n badge.identifier,\n badge.font_colour,\n badge.badge_colour,\n +badge.sort_priority,\n ),\n );\n }\n }\n\n if (record.category) {\n this.category = new EsolveCategoryTreeItem(\n record.category.type,\n record.category.id,\n record.category.parent_id,\n record.category.description,\n record.category.sef_description,\n record.category.short_description,\n record.category.sort_priority,\n record.category.active,\n record.category.display_only,\n record.category.image,\n record.category.seo_page_title,\n record.category.seo_keywords,\n record.category.seo_description,\n );\n }\n\n if (record.subcategory) {\n this.subcategory = new EsolveCategoryTreeItem(\n record.subcategory.type,\n record.subcategory.id,\n record.subcategory.parent_id,\n record.subcategory.description,\n record.subcategory.sef_description,\n record.subcategory.short_description,\n record.subcategory.sort_priority,\n record.subcategory.active,\n record.subcategory.display_only,\n record.subcategory.image,\n record.subcategory.seo_page_title,\n record.subcategory.seo_keywords,\n record.subcategory.seo_description,\n );\n }\n\n if (record.manufacturer) {\n this.manufacturer = new EsolveManufacturer(record.manufacturer);\n }\n\n if (record.range) {\n this.range = new EsolveRange(record.range);\n }\n\n if (record.colours && record.colours.length > 0) {\n for (const colour of record.colours) {\n this.colours.push(new EsolveColour(colour));\n }\n }\n\n if (record.lead_times) {\n this.lead_times = new EsolveStockLeadTimes(record.lead_times);\n }\n\n if (record.custom_fields) {\n this.custom_fields = record.custom_fields;\n }\n\n if (record.total_order_qty || record.total_quote_qty) {\n const total_order_qty = +(record.total_order_qty ?? 0);\n const total_quote_qty = +(record.total_quote_qty ?? 0);\n this.history = new EsolveStockTransactionHistory(\n total_order_qty,\n total_quote_qty,\n );\n }\n\n seo_title = record.seo_page_title ?? '';\n seo_keywords = record.seo_keywords ?? '';\n }\n\n this.price = new EsolveStockPrice(\n base_price,\n base_price_with_tax,\n sell_price,\n sell_price_with_tax,\n record.vat_rate,\n record.vat_item,\n );\n\n if (seo_title.trim() === '') {\n seo_title = this.name;\n }\n\n this.seo_details = new EsolveSeoInfo(\n seo_title,\n this.description,\n seo_keywords,\n );\n }\n\n public getImagePath(image_size: EsolveStockImageSize): string {\n if (this.image_name !== '') {\n let param = '';\n\n if (this.image_last_modified !== '') {\n param = `?t=${this.image_last_modified}`;\n }\n\n return `/images/stock/${image_size}/${this.image_name}${param}`;\n }\n\n return '';\n }\n}\n","import { EsolveCustomFields } from '../../shared/custom-fields';\n\nimport { EsolveDependantItemRecord } from '../interfaces';\nimport { EsolveStockItemBase } from './esolve-stock-item-base.model';\n\nexport class EsolveDependantItem<\n T extends EsolveCustomFields = EsolveCustomFields,\n> extends EsolveStockItemBase<T> {\n public qty = 0;\n public dependency_description = '';\n\n constructor(record?: Partial<EsolveDependantItemRecord<T>>) {\n super(record);\n\n this.qty = +(record?.qty ?? 0);\n this.dependency_description = record?.dependency_description ?? '';\n }\n}\n","import { EsolveCustomFields } from '../../shared/custom-fields';\nimport { EsolveStockGroupItemRecord } from '../types';\n\nimport { EsolveStockItemBase } from './esolve-stock-item-base.model';\n\nexport class EsolveStockGroupItem<\n T extends EsolveCustomFields = EsolveCustomFields,\n> extends EsolveStockItemBase<T> {\n constructor(record?: Partial<EsolveStockGroupItemRecord<T>>) {\n super(record);\n }\n}\n","import { EsolveCustomFields } from '../../shared/custom-fields';\nimport { EsolveStockGroupItemRecord } from '../types';\n\nimport { EsolveStockGroupItem } from './esolve-stock-group-item.model';\n\nexport class EsolveStockGroup<\n T extends EsolveCustomFields = EsolveCustomFields,\n> {\n public items: EsolveStockGroupItem<T>[] = [];\n\n constructor(\n public group: string,\n records: EsolveStockGroupItemRecord<T>[] = [],\n ) {\n if (records.length > 0) {\n for (const record of records) {\n this.items.push(new EsolveStockGroupItem(record));\n }\n }\n }\n}\n","import { EsolveCustomFields } from '../../shared/custom-fields';\n\nimport { EsolveStockRecord } from '../interfaces';\nimport { EsolveStockItemBase } from './esolve-stock-item-base.model';\nimport { EsolveDependantItem } from './esolve-dependant-item.model';\nimport { EsolveStockGroup } from './esolve-stock-group.model';\n\n/**\n * Stock Item object. It can be a service or a product (physical and/or digital).\n */\nexport class EsolveStockItem<\n T extends EsolveCustomFields = EsolveCustomFields,\n> extends EsolveStockItemBase<T> {\n public group?: EsolveStockGroup<T>;\n public dependencies?: EsolveDependantItem<T>[];\n\n /**\n * Constructs an instance of EsolveStockItem\n */\n constructor(record?: Partial<EsolveStockRecord<T>>) {\n super(record);\n\n if (record?.group && record.grouped_items) {\n this.group = new EsolveStockGroup(\n record.group,\n record.grouped_items,\n );\n }\n\n if (record?.dependencies) {\n this.dependencies = [];\n\n for (const dependant of record.dependencies) {\n this.dependencies.push(new EsolveDependantItem(dependant));\n }\n }\n }\n}\n","import { EsolveCustomFields } from '../../shared/custom-fields';\n\nimport { EsolveStockItem } from './esolve-stock-item.model';\n\n/**\n * Stock item object list\n */\nexport class EsolveStockItemList<\n T extends EsolveCustomFields = EsolveCustomFields,\n> {\n constructor(\n public stock_items: EsolveStockItem<T>[],\n public total: number,\n public page: number,\n ) {}\n}\n","import { EsolveCustomFields } from '../../shared/custom-fields';\n\nimport { EsolveRecipeItemRecord } from '../interfaces';\nimport { EsolveStockItemBase } from './esolve-stock-item-base.model';\n\nexport class EsolveRecipeStockItem<\n T extends EsolveCustomFields = EsolveCustomFields,\n> extends EsolveStockItemBase<T> {\n public qty = 0;\n\n constructor(record?: Partial<EsolveRecipeItemRecord<T>>) {\n super(record);\n\n this.qty = +(record?.qty ?? 0);\n }\n}\n","import { EsolveCustomFields } from '../../shared/custom-fields';\n\nimport { EsolveLinkedStockRecord } from '../interfaces';\nimport { EsolveStockItemBase } from './esolve-stock-item-base.model';\n\nexport class EsolveLinkedStockItem<\n T extends EsolveCustomFields = EsolveCustomFields,\n> extends EsolveStockItemBase<T> {\n public qty = 0;\n\n constructor(record?: Partial<EsolveLinkedStockRecord<T>>) {\n super(record);\n\n this.qty = +(record?.qty ?? 0);\n }\n}\n","import { EsolveCustomFields } from '../../shared/custom-fields';\nimport { EsolveMediaStockItemRecord } from '../types';\n\nimport { EsolveStockItemBase } from './esolve-stock-item-base.model';\n\nexport class EsolveMediaStockItem<\n T extends EsolveCustomFields = EsolveCustomFields,\n> extends EsolveStockItemBase<T> {\n constructor(record?: Partial<EsolveMediaStockItemRecord<T>>) {\n super(record);\n }\n}\n","import { EsolveStockImageSize } from '../types';\n\nexport class EsolveStockImage {\n /**\n * Path to tiny stock image\n */\n public get tiny_src(): string {\n return this.getImagePath('tiny');\n }\n\n /**\n * Path to thumbnail stock image\n */\n public get thumbnail_src(): string {\n return this.getImagePath('thumb');\n }\n\n /**\n * Path to small stock image\n */\n public get small_src(): string {\n return this.getImagePath('small');\n }\n\n /**\n * Path to big stock image\n */\n public get big_src(): string {\n return this.getImagePath('big');\n }\n\n /**\n * Path to original stock image\n */\n public get original_src(): string {\n return this.getImagePath('original');\n }\n\n constructor(\n private image_name: string,\n private last_modified: string = '',\n ) {\n if (this.image_name === 'no_image.jpg') {\n this.image_name = '';\n }\n }\n\n public getImagePath(image_size: EsolveStockImageSize): string {\n if (this.image_name !== '') {\n let param = '';\n\n if (this.last_modified !== '') {\n param = `?t=${this.last_modified}`;\n }\n\n return `/images/stock/${image_size}/${this.image_name}${param}`;\n }\n\n return '';\n }\n}\n","import { EsolveAdditionalStockImageRecord } from '../interfaces';\n\nexport class EsolveAdditionalStockImage {\n public id = 0;\n public type = '';\n public url = '';\n public name = '';\n public etag?: string;\n public key?: string;\n\n constructor(record?: Partial<EsolveAdditionalStockImageRecord>) {\n if (record) {\n this.id = record.id ?? 0;\n this.type = record.type ?? '';\n this.url = record.url ?? '';\n this.name = record.name ?? '';\n\n if (record.etag) {\n this.etag = record.etag;\n }\n\n if (record.key) {\n this.key = record.key;\n }\n }\n }\n}\n","import { EsolveStockImageCollectionRecord } from '../interfaces';\nimport { EsolveAdditionalStockImage } from './esolve-additional-stock-image.model';\nimport { EsolveStockImage } from './esolve-stock-image.model';\n\nexport class EsolveStockImageCollection {\n public default_image: EsolveStockImage;\n public alt_images: EsolveStockImage[] = [];\n public additional_images: EsolveAdditionalStockImage[] = [];\n\n constructor(record?: Partial<EsolveStockImageCollectionRecord>) {\n this.default_image = new EsolveStockImage(\n record?.default_image ?? '',\n record?.default_image_last_modified ?? '',\n );\n\n if (!record) {\n return;\n }\n\n if (record.alt_images && record.alt_images.length > 0) {\n for (const alt_image_name of record.alt_images) {\n const alt_image = new EsolveStockImage(alt_image_name);\n\n this.alt_images.push(alt_image);\n }\n }\n\n if (record.additional_images && record.additional_images.length > 0) {\n for (const additional_image_record of record.additional_images) {\n const additional_image = new EsolveAdditionalStockImage(\n additional_image_record,\n );\n\n this.additional_images.push(additional_image);\n }\n }\n }\n}\n","// Classes\nexport * from './esolve-colour.model';\nexport * from './esolve-stock-item.model';\nexport * from './esolve-stock-price.model';\nexport * from './esolve-stock-badge.model';\nexport * from './esolve-stock-group.model';\nexport * from './esolve-stock-item-base.model';\nexport * from './esolve-stock-item-list.model';\nexport * from './esolve-stock-group-item.model';\nexport * from './esolve-recipe-stock-item.model';\nexport * from './esolve-linked-stock-item.model';\nexport * from './esolve-dependant-item.model';\nexport * from './esolve-stock-lead-times.model';\nexport * from './esolve-media-stock-item.model';\nexport * from './esolve-stock-image.model';\nexport * from './esolve-stock-image-collection.model';\nexport * from './esolve-additional-stock-image.model';\n","// Interfaces\nexport * from './esolve-stock-record.interface';\nexport * from './esolve-colour-record.interface';\nexport * from './esolve-stock-base-record.interface';\nexport * from './esolve-stock-item-options.interface';\nexport * from './esolve-stock-badge-record.interface';\nexport * from './esolve-recipe-item-record.interface';\nexport * from './esolve-stock-filter-options.interface';\nexport * from './esolve-recipe-stock-options.interface';\nexport * from './esolve-linked-stock-record.interface';\nexport * from './esolve-stock-linked-category-record.interface';\nexport * from './esolve-stock-lead-times-record.interface';\nexport * from './esolve-stock-image-collection-record.interface';\nexport * from './esolve-additional-stock-image-record.interface';\nexport * from './esolve-media-stock-item-options.interface';\nexport * from './esolve-dependant-item-record.interface';\n","import { Inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\n\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { EsolveConnectConfig } from '../core/esolve-connect.config';\nimport { ESOLVE_CONNECT_CONFIG } from '../core/esolve-connect-config.constant';\n\nimport { EsolveList } from '../shared/esolve-list.model';\nimport { EsolveGetResponse } from '../shared/response';\nimport { EsolveCustomFields } from '../shared/custom-fields';\nimport {\n EsolveFilterFactory,\n EsolveFilterList,\n EsolveFilterRecordList,\n EsolveMultipleSelectFilter,\n EsolveRangeFilter,\n EsolveSingleSelectFilter,\n} from '../shared/filters';\n\nimport { EsolveMediaStockItemRecord, EsolveMediaStockItemList } from './types';\nimport {\n EsolveStockRecord,\n EsolveStockItemOptions,\n EsolveRecipeItemRecord,\n EsolveLinkedStockRecord,\n EsolveRecipeStockOptions,\n EsolveMediaStockItemOptions,\n EsolveStockImageCollectionRecord,\n EsolveStockFilterOptions,\n} from './interfaces';\nimport {\n EsolveStockItem,\n EsolveStockItemList,\n EsolveMediaStockItem,\n EsolveRecipeStockItem,\n EsolveLinkedStockItem,\n EsolveStockImageCollection,\n} from './classes';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveStockService<\n T extends EsolveCustomFields = EsolveCustomFields,\n> {\n constructor(\n @Inject(ESOLVE_CONNECT_CONFIG) private config: EsolveConnectConfig,\n private http: HttpClient,\n ) {}\n\n /**\n * Retrieves the stock record from the eSolve instance using the code.\n *\n * @param code eSolve stock code\n */\n public getStockItem(code: string): Observable<EsolveStockItem<T>> {\n const params = new HttpParams({\n fromObject: {\n code,\n },\n });\n\n return this.getStockRecords(params).pipe(\n map((response) => {\n if (\n response.records === undefined ||\n response.records.length <= 0\n ) {\n throw response;\n }\n\n const stockRecord = response.records[0];\n\n return this.processStockItem(stockRecord);\n }),\n );\n }\n\n /**\n * Retrieves the stock record from the eSolve instance using the SEF name.\n *\n * @param sef_name SEF name of the stock item\n */\n public getStockItemFromSEF(\n sef_name: string,\n ): Observable<EsolveStockItem<T>> {\n const params = new HttpParams({\n fromObject: {\n sef_name,\n },\n });\n\n return this.getStockRecords(params).pipe(\n map((response) => {\n if (\n response.records === undefined ||\n response.records.length <= 0\n ) {\n throw response;\n }\n\n const stockRecord = response.records[0];\n\n return this.processStockItem(stockRecord);\n }),\n );\n }\n\n /**\n * Retrieves list of stock from the eSolve instance using info provided\n *\n * @param options Stock filter options\n */\n public getStockItems(\n options: EsolveStockItemOptions,\n ): Observable<EsolveStockItemList<T>> {\n let params = new HttpParams();\n\n if (options.page) {\n params = params.set('page', options.page);\n }\n\n if (options.rows) {\n params = params.set('rows', options.rows);\n }\n\n if (options.sort) {\n const sort = options.sort;\n\n if (sort.field) {\n params = params.set('sort', sort.field);\n }\n\n if (sort.order) {\n params = params.set('order', sort.order);\n }\n }\n\n if (options.search_phrase) {\n params = params.set('search_phrase', options.search_phrase);\n }\n\n if (options.display_only) {\n params = params.set('display_only', options.display_only);\n }\n\n if (options.is_active) {\n params = params.set('is_active', options.is_active);\n }\n\n if (options.category_id) {\n params = params.set('category_id', options.category_id);\n }\n\n if (options.subcategory_id) {\n params = params.set('subcategory_id', options.subcategory_id);\n }\n\n if (options.manufacturers_id) {\n params = params.set('manufacturers_id', options.manufacturers_id);\n }\n\n if (options.ranges_id) {\n params = params.set('ranges_id', options.ranges_id);\n }\n\n if (options.specials_id) {\n params = params.set('specials_id', options.specials_id);\n }\n\n if (options.tag_id_list && options.tag_id_list.length > 0) {\n params = params.set('tag_id', options.tag_id_list.join(','));\n }\n\n if (options.topic_id_list && options.topic_id_list.length > 0) {\n params = params.set('topic_id', options.topic_id_list.join(','));\n }\n\n if (options.filters) {\n let filters = options.filters;\n\n if (!Array.isArray(filters)) {\n filters = EsolveFilterFactory.covertFromObj(filters);\n }\n\n params = EsolveFilterFactory.convertToHttpParams(filters, params);\n }\n\n return this.getStockRecords(params).pipe(\n map((response) => {\n if (\n response.records === undefined ||\n response.records.length <= 0\n ) {\n throw response;\n }\n\n const stockItems: EsolveStockItem<T>[] = [];\n\n response.records.forEach((stockRecord) => {\n stockItems.push(this.processStockItem(stockRecord));\n });\n\n return new EsolveStockItemList(\n stockItems,\n +response.additional_data.total_records,\n options.page ?? 0,\n );\n }),\n );\n }\n\n /**\n * Retrieves list of stock from the eSolve instance using info provided\n *\n * @param options Stock filter options\n */\n public getStockItemsTransactionHistory(\n options: EsolveStockItemOptions,\n ): Observable<EsolveStockItemList<T>> {\n let params = new HttpParams();\n\n if (options.page) {\n params = params.set('page', options.page);\n }\n\n if (options.rows) {\n params = params.set('rows', options.rows);\n }\n\n if (options.sort) {\n const sort = options.sort;\n\n if (sort.field) {\n params = params.set('sort', sort.field);\n }\n\n if (sort.order) {\n params = params.set('order', sort.order);\n }\n }\n\n if (options.search_phrase) {\n params = params.set('search_phrase', options.search_phrase);\n }\n\n if (options.display_only) {\n params = params.set('display_only', options.display_only);\n }\n\n if (options.is_active) {\n params = params.set('is_active', options.is_active);\n }\n\n if (options.category_id) {\n params = params.set('category_id', options.category_id);\n }\n\n if (options.subcategory_id) {\n params = params.set('subcategory_id', options.subcategory_id);\n }\n\n if (options.manufacturers_id) {\n params = params.set('manufacturers_id', options.manufacturers_id);\n }\n\n if (options.ranges_id) {\n params = params.set('ranges_id', options.ranges_id);\n }\n\n if (options.specials_id) {\n params = params.set('specials_id', options.specials_id);\n }\n\n if (options.tag_id_list && options.tag_id_list.length > 0) {\n params = params.set('tag_id', options.tag_id_list.join(','));\n }\n\n if (options.topic_id_list && options.topic_id_list.length > 0) {\n params = params.set('topic_id', options.topic_id_list.join(','));\n }\n\n if (options.filters) {\n let filters = options.filters;\n\n if (!Array.isArray(filters)) {\n filters = EsolveFilterFactory.covertFromObj(filters);\n }\n\n params = EsolveFilterFactory.convertToHttpParams(filters, params);\n }\n\n return this.getStockHistoryRecords(params).pipe(\n map((response) => {\n if (\n response.records === undefined ||\n response.records.length <= 0\n ) {\n throw response;\n }\n\n const stockItems: EsolveStockItem<T>[] = [];\n\n response.records.forEach((stockRecord) => {\n stockItems.push(this.processStockItem(stockRecord));\n });\n\n return new EsolveStockItemList(\n stockItems,\n +response.additional_data.total_records,\n options.page ?? 0,\n );\n }),\n );\n }\n\n /**\n * Retrieve list of stock items linked to a stock item from the eSolve API\n *\n * @param code Stock item code\n */\n public getLinkedItems(\n code: string,\n ): Observable<EsolveLinkedStockItem<T>[]> {\n return this.http\n .get<EsolveGetResponse<EsolveLinkedStockRecord<T>[]>>(\n `${this.config.api_url}/get-linked-items.php`,\n { params: { code } },\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n response.records.length <= 0\n ) {\n throw response;\n }\n\n return this.processLinkedItems(response.records);\n }),\n );\n }\n\n /**\n * Retrieve list of stock items on a recipe from the eSolve API\n *\n * @param code Stock item code\n */\n public getRecipeItems(\n code: string,\n options?: EsolveRecipeStockOptions,\n ): Observable<EsolveRecipeStockItem<T>[]> {\n let params = new HttpParams().set('code', code);\n\n if (options) {\n if (options.page) {\n params = params.set('page', options.page);\n }\n\n if (options.rows) {\n params = params.set('rows', options.rows);\n }\n\n if (options.sort) {\n const sort = options.sort;\n\n if (sort.field) {\n params = params.set('sort', sort.field);\n }\n\n if (sort.order) {\n params = params.set('order', sort.order);\n }\n }\n }\n\n return this.http\n .get<EsolveGetResponse<EsolveRecipeItemRecord<T>[]>>(\n `${this.config.api_url}/get-recipe-items.php`,\n { params },\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n response.records.length <= 0\n ) {\n throw response;\n }\n\n return this.processRecipeItems(response.records);\n }),\n );\n }\n\n /**\n * Retrieve list of stock items linked to a stock item from the eSolve API\n *\n * @param options Filter options\n */\n public getMediaLinkedItems(\n options: EsolveMediaStockItemOptions,\n ): Observable<EsolveMediaStockItemList<T>> {\n let params = new HttpParams({\n fromObject: {\n rows: options.rows ?? 0,\n page: options.page ?? 0,\n ranges_id: options.ranges_id ?? 0,\n manufacturers_id: options.manufacturers_id ?? 0,\n display_only: options.display_only ?? false,\n is_active: options.is_active ?? true,\n },\n });\n\n if (options.sort) {\n const sort = options.sort;\n\n if (sort.field) {\n params = params.set('sort', sort.field);\n }\n\n if (sort.order) {\n params = params.set('order', sort.order);\n }\n }\n\n if (options.media_identifier) {\n params = params.append(\n 'media_identifier',\n options.media_identifier,\n );\n }\n\n if (options.media_id) {\n params = params.append('media_id', options.media_id);\n }\n\n return this.http\n .get<EsolveGetResponse<EsolveMediaStockItemRecord<T>[]>>(\n `${this.config.api_url}/get-media-linked-items.php`,\n { params },\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n response.records.length <= 0\n ) {\n throw response;\n }\n\n const items = this.processMediaStockItems(response.records);\n\n return new EsolveList(\n items,\n options.page,\n options.rows,\n +response.additional_data.total_records,\n );\n }),\n );\n }\n\n /**\n * Retrieves the full image collection of a stock item\n *\n * @param code Stock item code\n */\n public getStockImageCollection(\n code: string,\n ): Observable<EsolveStockImageCollection> {\n return this.http\n .get<EsolveGetResponse<EsolveStockImageCollectionRecord>>(\n `${this.config.api_url}/get-item-image-collection.php`,\n { params: { code } },\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n Array.isArray(response.records)\n ) {\n throw response;\n }\n\n const collection = new EsolveStockImageCollection(\n response.records,\n );\n\n return collection;\n }),\n );\n }\n\n public getStockFilters(\n options: EsolveStockFilterOptions,\n ): Observable<EsolveFilterList> {\n const params = new HttpParams({\n fromObject: {\n category_id: options.category_id ?? '',\n subcategory_id: options.subcategory_id ?? 0,\n ranges_id: options.ranges_id ?? 0,\n manufacturers_id: options.manufacturers_id ?? 0,\n specials_id: options.specials_id ?? 0,\n fields: options.fields.join(','),\n },\n });\n\n return this.http\n .get<EsolveGetResponse<EsolveFilterRecordList>>(\n `${this.config.api_url}/get-item-filters.php`,\n { params },\n )\n .pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n const filters = [];\n\n for (const record of response.records) {\n let filter = null;\n\n if (record.type === 'range') {\n filter = new EsolveRangeFilter(\n record.field,\n +record.min,\n +record.max,\n );\n } else if (record.type === 'single') {\n filter = new EsolveSingleSelectFilter(\n record.field,\n record.values,\n );\n } else if (record.type === 'multiple') {\n filter = new EsolveMultipleSelectFilter(\n record.field,\n record.values,\n );\n }\n\n if (filter) {\n filters.push(filter);\n }\n }\n\n return filters;\n }),\n );\n }\n\n /**\n * Processes the eSolve stock item record and converts it to an object.\n *\n * @param record eSolve stock item record\n */\n private processStockItem(record: EsolveStockRecord<T>): EsolveStockItem<T> {\n return new EsolveStockItem<T>(record);\n }\n\n /**\n * Processes the linked eSolve stock item records and converts them to objects.\n *\n * @param records Linked eSolve stock item records\n */\n private processLinkedItems(\n records: EsolveLinkedStockRecord<T>[],\n ): EsolveLinkedStockItem<T>[] {\n const items: EsolveLinkedStockItem<T>[] = [];\n\n if (records.length > 0) {\n for (const record of records) {\n items.push(new EsolveLinkedStockItem<T>(record));\n }\n }\n\n return items;\n }\n\n /**\n * Processes the recipe eSolve stock item records and converts them to objects.\n *\n * @param records Recipe eSolve stock item records\n */\n private processRecipeItems(\n records: EsolveRecipeItemRecord<T>[],\n ): EsolveRecipeStockItem<T>[] {\n const items: EsolveRecipeStockItem<T>[] = [];\n\n if (records.length > 0) {\n for (const record of records) {\n items.push(new EsolveRecipeStockItem<T>(record));\n }\n }\n\n return items;\n }\n\n /**\n * Processes the linked eSolve stock item records and converts them to objects.\n *\n * @param records Linked eSolve stock item records\n */\n private processMediaStockItems(\n records: EsolveMediaStockItemRecord<T>[],\n ): EsolveMediaStockItem<T>[] {\n const items: EsolveMediaStockItem<T>[] = [];\n\n if (records.length > 0) {\n for (const record of records) {\n items.push(new EsolveMediaStockItem<T>(record));\n }\n }\n\n return items;\n }\n\n /**\n * Retrieves stock records from HTTP params.\n * @param params HTTP client parameters\n */\n private getStockRecords(\n params: HttpParams,\n ): Observable<EsolveGetResponse<EsolveStockRecord<T>[]>> {\n return this.http.get<EsolveGetResponse<EsolveStockRecord<T>[]>>(\n `${this.config.api_url}/get-items.php`,\n { params },\n );\n }\n\n /**\n * Retrieves stock transaction history records from HTTP params.\n * @param params HTTP client parameters\n */\n private getStockHistoryRecords(\n params: HttpParams,\n ): Observable<EsolveGetResponse<EsolveStockRecord<T>[]>> {\n return this.http.get<EsolveGetResponse<EsolveStockRecord<T>[]>>(\n `${this.config.api_url}/get-items-transaction-history.php`,\n { params },\n );\n }\n}\n","import { EsolveSpecialImageRecord } from './esolve-special-image-record.interface';\n\nexport class EsolveSpecialImage {\n public id: number;\n public width: number;\n public height: number;\n public src: string;\n\n constructor(record: EsolveSpecialImageRecord) {\n this.id = +record.id;\n this.width = +record.width;\n this.height = +record.height;\n this.src = record.src;\n }\n}\n","import { EsolveSpecialImage } from './esolve-special-image.model';\nimport { EsolveSpecialImageCollectionRecord } from './esolve-special-image-collection-record.interface';\n\nexport class EsolveSpecialImageCollection {\n public thumb?: EsolveSpecialImage[];\n public banner?: EsolveSpecialImage[];\n public banner_mobile?: EsolveSpecialImage[];\n\n constructor(\n public image_container: string,\n images: EsolveSpecialImageCollectionRecord,\n ) {\n if (images.thumb && images.thumb.length > 0) {\n this.thumb = [];\n\n for (const image_record of images.thumb) {\n this.thumb.push(new EsolveSpecialImage(image_record));\n }\n }\n\n if (images.banner && images.banner.length > 0) {\n this.banner = [];\n\n for (const image_record of images.banner) {\n this.banner.push(new EsolveSpecialImage(image_record));\n }\n }\n\n if (images.banner_mobile && images.banner_mobile.length > 0) {\n this.banner_mobile = [];\n\n for (const image_record of images.banner_mobile) {\n this.banner_mobile.push(new EsolveSpecialImage(image_record));\n }\n }\n }\n}\n","export class EsolveSpecialDates {\n constructor(public start: Date, public end: Date) {}\n}\n","import { EsolveLinkedAsset } from '../shared/assets';\nimport { EsolveSeoInfo } from '../shared/seo/esolve-seo-info.model';\nimport { EsolveSeoDetails } from '../shared/seo/esolve-seo-details.interface';\nimport { EsolveSpecialImageCollection } from './esolve-special-image-collection.model';\nimport { EsolveSpecialRecord } from './esolve-special-record.interface';\nimport { EsolveSpecialDates } from './esolve-special-dates.model';\n\nexport class EsolveSpecial implements EsolveSeoDetails {\n public id: number;\n public identifier: string;\n public sort_priority: number;\n public name: string;\n public description: string;\n public discount_type: number;\n public special_type: string;\n public location_id: number;\n public active: boolean;\n public featured: boolean;\n public assets: EsolveLinkedAsset[];\n public seo_details: EsolveSeoInfo;\n public images?: EsolveSpecialImageCollection;\n public dates?: EsolveSpecialDates;\n\n constructor(record: EsolveSpecialRecord) {\n this.id = +record.id;\n this.identifier = record.identifier;\n this.sort_priority = +record.sort_priority;\n this.name = record.name;\n this.description = record.description;\n this.discount_type = +record.discount_type;\n this.special_type = record.special_type;\n this.location_id = +record.location_id;\n this.active = !!+record.active;\n this.featured = !!+record.featured;\n this.assets = [];\n\n if (record.assets.length > 0) {\n for (const asset_record of record.assets) {\n this.assets.push(new EsolveLinkedAsset(asset_record));\n }\n }\n\n if (\n record.images &&\n ((record.images.thumb && record.images.thumb.length > 0) ||\n (record.images.banner && record.images.banner.length > 0) ||\n (record.images.banner_mobile &&\n record.images.banner_mobile.length > 0)) &&\n record.image_container.trim() !== ''\n ) {\n this.images = new EsolveSpecialImageCollection(\n record.image_container,\n record.images,\n );\n }\n\n const start_date = new Date(+record.from_date_timestamp * 1000);\n const end_date = new Date(+record.to_date_timestamp * 1000);\n\n this.dates = new EsolveSpecialDates(start_date, end_date);\n\n if (record.seo_page_title.trim() === '') {\n record.seo_page_title = this.name;\n }\n\n this.seo_details = new EsolveSeoInfo(\n record.seo_page_title,\n record.seo_description,\n record.seo_keywords,\n );\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\n\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { EsolveConnectConfig } from '../core/esolve-connect.config';\nimport { ESOLVE_CONNECT_CONFIG } from '../core/esolve-connect-config.constant';\nimport { EsolveGetResponse } from '../shared/response';\n\nimport { EsolveSpecial } from './esolve-special.model';\nimport { EsolveSpecialOptions } from './esolve-special-options.interface';\nimport { EsolveSpecialRecord } from './esolve-special-record.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveSpecialsService {\n constructor(\n @Inject(ESOLVE_CONNECT_CONFIG) private config: EsolveConnectConfig,\n private http: HttpClient,\n ) {}\n\n public getSpecial(specials_id: number): Observable<EsolveSpecial> {\n const params = new HttpParams({\n fromObject: { specials_id },\n });\n\n return this.getSpecialSingle(params);\n }\n\n public getSpecialFromIdentifier(\n identifier: string,\n ): Observable<EsolveSpecial> {\n const params = new HttpParams({\n fromObject: { identifier },\n });\n\n return this.getSpecialSingle(params);\n }\n\n public getSpecials(\n options?: EsolveSpecialOptions,\n ): Observable<EsolveSpecial[]> {\n let params = new HttpParams();\n\n if (options?.featured_only) {\n params = params.set('featured_only', options.featured_only);\n }\n\n if (options?.image_container) {\n params = params.set('image_container', options.image_container);\n }\n\n if (options?.location_id) {\n params = params.set('location_id', options.location_id);\n }\n\n if (options?.special_type) {\n params = params.set('special_type', options.special_type);\n }\n\n return this.getSpecialRecords(params).pipe(\n map((records) => {\n const specials: EsolveSpecial[] = [];\n\n for (const record of records) {\n specials.push(this.processSpecial(record));\n }\n\n return specials;\n }),\n catchError(() => {\n return of<EsolveSpecial[]>([]);\n }),\n );\n }\n\n private getSpecialSingle(params: HttpParams): Observable<EsolveSpecial> {\n return this.getSpecialRecords(params).pipe(\n map((records) => {\n const record = records[0];\n\n return this.processSpecial(record);\n }),\n );\n }\n\n private getSpecialRecords(\n params?: HttpParams,\n ): Observable<EsolveSpecialRecord[]> {\n return this.http\n .get<EsolveGetResponse<EsolveSpecialRecord[]>>(\n `${this.config.api_url}/get-specials.php`,\n { params },\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n response.records.length <= 0\n ) {\n throw response;\n }\n\n return response.records;\n }),\n );\n }\n\n private processSpecial(record: EsolveSpecialRecord): EsolveSpecial {\n return new EsolveSpecial(record);\n }\n}\n","// Only export the types that are accessible to the public API\nexport * from './esolve-card-data.interface';\nexport * from './esolve-payment-form-input.interface';\nexport * from './esolve-vault-response.interface';\nexport * from './esolve-vault-record.interface';\nexport * from './esolve-payment-response.interface';\nexport * from './esolve-payment-method-options.interface';\nexport * from './esolve-payment-method-record.interface';\nexport * from './esolve-payment-redirect-links.interface';\n","export class EsolveBankingDetails {\n constructor(\n public bank_name: string,\n public account_holder: string,\n public account: string,\n public account_type: string,\n public swift_number: string,\n public branch_code: string,\n ) {}\n}\n","import { EsolveIntegrationType } from '../types';\nimport { EsolvePaymentMethodRecord } from '../interfaces';\nimport { EsolveBankingDetails } from './esolve-banking-details.model';\n\nexport class EsolvePaymentMethod {\n public id: number;\n public location_id: number;\n public paymethod_name: string;\n public description: string;\n public display_banking_details: boolean;\n public currency_code: string;\n public merchant_id: string;\n public application_id: string;\n public api_signature: string;\n public is_gateway: boolean;\n public must_store_card_details: boolean;\n public allow_budget: boolean;\n public integration_type: EsolveIntegrationType;\n public bank_gateway_id: string;\n public accepted_card_types: string[];\n public post_transactions_to_gateway: boolean;\n public three_d_secure_url: string;\n public gateway_url: string;\n public generate_token_url: string;\n public widget_url: string;\n public successful_url: string;\n public failed_url: string;\n public enable_callback: boolean;\n public live: boolean;\n public default_module_id: number;\n public service_provider: string;\n public on_account: boolean;\n public sort_priority: number;\n public image_url: string;\n\n public banking_details: EsolveBankingDetails;\n\n constructor(record: EsolvePaymentMethodRecord) {\n this.id = +record.id;\n this.location_id = +record.location_id;\n this.paymethod_name = record.paymethod_name;\n this.description = record.description;\n this.display_banking_details = !!+record.display_banking_details;\n this.currency_code = record.currency_code;\n this.merchant_id = record.merchant_id;\n this.application_id = record.application_id;\n this.api_signature = record.api_signature;\n this.is_gateway = !!+record.is_gateway;\n this.must_store_card_details = !!+record.must_store_card_details;\n this.allow_budget = !!+record.allow_budget;\n this.integration_type = record.integration_type;\n this.bank_gateway_id = record.bank_gateway_id;\n this.accepted_card_types = record.accepted_card_types;\n this.post_transactions_to_gateway =\n !!+record.post_transactions_to_gateway;\n this.three_d_secure_url = record.three_d_secure_url;\n this.gateway_url = record.gateway_url;\n this.generate_token_url = record.generate_token_url;\n this.widget_url = record.widget_url;\n this.successful_url = record.successful_url;\n this.failed_url = record.failed_url;\n this.enable_callback = !!+record.enable_callback;\n this.live = !!+record.live;\n this.default_module_id = +record.default_module_id;\n this.service_provider = record.service_provider;\n this.on_account = !!+record.on_account;\n this.sort_priority = +record.sort_priority;\n this.image_url = record.image_url;\n\n this.banking_details = new EsolveBankingDetails(\n record.bank_name,\n record.account_holder,\n record.account,\n record.account_type,\n record.swift_number,\n record.branch_code,\n );\n }\n}\n","import { EsolveResponseResult } from '../../shared/response';\n\nimport { EsolveServiceProvider } from '../types';\nimport { EsolvePaymentResponse, EsolvePaymentFormInput } from '../interfaces';\n\nexport class EsolvePaymentResult extends EsolveResponseResult {\n public gateway_error_message: string;\n public redirect_required = false;\n public service_provider?: EsolveServiceProvider;\n public redirect_url?: string;\n /**\n * Form post variables\n *\n * Not available to SnapScan\n */\n public form_inputs?: EsolvePaymentFormInput[];\n /**\n * Form post content type\n *\n * Not available to SnapScan\n */\n public form_enctype?: string;\n /**\n * QR code image url\n *\n * Only available to SnapScan integrations\n */\n public qr_code_url?: string;\n\n constructor(response: EsolvePaymentResponse) {\n super(response);\n\n if (typeof response.service_provider !== 'undefined') {\n this.service_provider = response.service_provider;\n }\n\n if (typeof response.redirect_required !== 'undefined') {\n this.redirect_required = response.redirect_required;\n }\n\n this.gateway_error_message = response.gateway_error_message ?? '';\n\n // Check if redirect settings need to be set\n if (this.redirect_required && this.service_provider) {\n if (typeof response.redirect_url !== 'undefined') {\n this.redirect_url = response.redirect_url;\n }\n\n // Check integration specific settings\n if (this.service_provider === 'snapscan') {\n // QR code scan is required\n if (typeof response.qr_code_url !== 'undefined') {\n this.qr_code_url = response.qr_code_url;\n }\n } else {\n // Normal form posting redirect\n if (typeof response.form_inputs !== 'undefined') {\n this.form_inputs = response.form_inputs;\n }\n\n if (typeof response.form_enctype !== 'undefined') {\n this.form_enctype = response.form_enctype;\n }\n }\n }\n }\n}\n","import { EsolveResponseResult } from '../../shared/response';\n\nimport { EsolveVaultResponse } from '../interfaces';\n\nexport class EsolveVaultItemResult extends EsolveResponseResult {\n public id: number;\n public token?: string;\n public card_valid?: boolean;\n public card_details_validated?: boolean;\n public gateway_error_message?: string;\n\n constructor(response: EsolveVaultResponse) {\n super(response);\n\n this.id = +response.esolve_id;\n\n if (typeof response.token !== 'undefined') {\n this.token = response.token;\n }\n\n if (typeof response.card_valid !== 'undefined') {\n this.card_valid = response.card_valid;\n }\n\n if (typeof response.card_details_validated !== 'undefined') {\n this.card_details_validated = response.card_details_validated;\n }\n\n if (typeof response.gateway_error_message !== 'undefined') {\n this.gateway_error_message = response.gateway_error_message;\n }\n }\n}\n","export class EsolveVaultItem {\n private expiry: Date;\n\n public get expiry_month(): string {\n const month = this.expiry.getMonth() + 1;\n\n return month.toString().padStart(2, '0');\n }\n\n public get expiry_year(): number {\n return this.expiry.getFullYear();\n }\n\n public get masked_number(): string {\n return this.last4.padStart(19, '**** ');\n }\n\n constructor(\n public id: number,\n public payment_methods_id: number,\n public last4: string,\n public brand: string,\n expiry_timestamp: number,\n ) {\n this.expiry = new Date(expiry_timestamp * 1000);\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport {\n HttpClient,\n HttpErrorResponse,\n HttpParams,\n} from '@angular/common/http';\n\nimport { Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { ESOLVE_CONNECT_CONFIG } from '../core/esolve-connect-config.constant';\nimport { EsolveConnectConfig } from '../core/esolve-connect.config';\nimport { EsolveErrorHandlerService } from '../shared/errors/esolve-error-handler.service';\nimport { EsolveResult } from '../shared/esolve-result.model';\nimport {\n EsolveDeleteResponse,\n EsolveGetResponse,\n EsolveResponseHandlerService,\n EsolveSetResponse,\n} from '../shared/response';\n\nimport {\n EsolvePaymentMethod,\n EsolvePaymentResult,\n EsolveVaultItem,\n EsolveVaultItemResult,\n} from './classes';\nimport {\n EsolveCardData,\n EsolvePaymentMethodOptions,\n EsolvePaymentMethodRecord,\n EsolvePaymentRedirectLinks,\n EsolvePaymentResponse,\n EsolveVaultRecord,\n EsolveVaultResponse,\n} from './interfaces';\nimport { EsolvePaymentSetBody } from './interfaces/esolve-payment-set-body.interface';\nimport { EsolvePaymentStatus } from './interfaces/esolve-payment-status.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolvePaymentService {\n constructor(\n @Inject(ESOLVE_CONNECT_CONFIG) private config: EsolveConnectConfig,\n private http: HttpClient,\n private errorHandler: EsolveErrorHandlerService,\n private responseHandler: EsolveResponseHandlerService,\n ) {}\n\n /**\n * Retrieves a list of payment methods.\n *\n * @param options Filter options\n *\n * @returns An `Observable` with an array of payment methods\n */\n public getPaymentMethods(\n options?: EsolvePaymentMethodOptions,\n ): Observable<EsolvePaymentMethod[]> {\n return this.http\n .get<EsolveGetResponse<EsolvePaymentMethodRecord[]>>(\n `${this.config.api_url}/get-payment-methods.php`,\n { params: { ...options } },\n )\n .pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n return this.processPaymentMethods(response.records);\n }),\n );\n }\n\n /**\n * Retrieve the payment status of the specified transaction\n *\n * @param transaction_id ID of the transaction\n *\n * @returns An `Observable` with the success status of the payment\n */\n public getPaymentStatus(transaction_id: number): Observable<boolean> {\n return this.http\n .get<EsolveGetResponse<EsolvePaymentStatus>>(\n `${this.config.api_url}/get-payment-status.php`,\n { params: { cart_id: transaction_id } },\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n Array.isArray(response.records)\n ) {\n throw response;\n }\n\n return response.records.success;\n }),\n );\n }\n\n /**\n * Retrieves a list of saved cards from the vault.\n *\n * @param payment_methods_id eSolve ID of a payment method\n *\n * @returns An `Observable` with an array of saved bank cards\n */\n public getVault(\n payment_methods_id?: number,\n ): Observable<EsolveVaultItem[]> {\n let params = new HttpParams();\n\n if (typeof payment_methods_id !== 'undefined') {\n params = params.set('payment_methods_id', payment_methods_id);\n }\n\n return this.http\n .get<EsolveGetResponse<EsolveVaultRecord[]>>(\n `${this.config.api_url}/get-vault.php`,\n { params },\n )\n .pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n return this.processVaultItems(response.records);\n }),\n );\n }\n\n /**\n * Sets a new card in the vault OR updates an existing one.\n *\n * @param payment_methods_id Selected payment method\n * @param card_data Information of bank card\n *\n * @returns An `Observable` with the result of the vault set.\n */\n public setVaultItem(\n payment_methods_id: number,\n card_data: EsolveCardData,\n ): Observable<EsolveVaultItemResult> {\n const body = {\n vault: {\n payment_methods_id,\n card_number: card_data.card_number,\n card_name: card_data.name,\n card_cvv: card_data.cvv,\n card_expiry: this.generateExpiry(card_data),\n },\n };\n\n return this.http\n .post<EsolveSetResponse<EsolveVaultResponse>>(\n `${this.config.api_url}/set-vault.php`,\n body,\n {\n headers: {\n 'Content-Type':\n 'application/x-www-form-urlencoded;charset=utf-8;',\n },\n responseType: 'json',\n observe: 'body',\n },\n )\n .pipe(\n map((http_response) =>\n this.responseHandler.validateSingleHttpResponse(\n http_response,\n (response) => new EsolveVaultItemResult(response),\n ),\n ),\n catchError((errorRes: HttpErrorResponse | any) => {\n return this.errorHandler.handleHttpPostError(\n 'set-vault',\n errorRes,\n );\n }),\n );\n }\n\n /**\n * Delete a card in the vault\n *\n * @param id ID of the vault item\n *\n * @returns An `Observable` with the result of the vault delete.\n */\n public deleteVaultItem(id: number): Observable<EsolveResult> {\n return this.http\n .delete<EsolveDeleteResponse>(\n `${this.config.api_url}/delete-vault.php`,\n {\n params: { id },\n responseType: 'json',\n observe: 'body',\n },\n )\n .pipe(\n map((http_response) => {\n if (\n http_response.result === undefined ||\n http_response.result === null ||\n http_response.result.status !== 'success'\n ) {\n throw http_response;\n }\n\n return new EsolveResult(\n http_response.result.status,\n http_response.result.code,\n http_response.result.message,\n );\n }),\n catchError((errorRes: HttpErrorResponse | any) => {\n return this.errorHandler.handleHttpDeleteError(\n 'delete-vault',\n errorRes,\n );\n }),\n );\n }\n\n /**\n * Sets the payment for the specified transaction using selected payment\n * method.\n *\n * @param transaction_id eSolve ID to the transaction\n * @param payment_methods_id eSolve ID to the selected payment method\n * @param card ID of selected card from the vault or information to a brand new card\n *\n * @returns An `Observable` with the result of the payment\n */\n public setPayment(\n transaction_id: number,\n payment_methods_id: number,\n card?: EsolveCardData | number,\n links?: EsolvePaymentRedirectLinks,\n ): Observable<EsolvePaymentResult> {\n const body: EsolvePaymentSetBody = {\n payment: {\n cart_id: transaction_id,\n payment_methods_id,\n },\n };\n\n if (card) {\n if (typeof card === 'number') {\n body.payment.user_vault_id = card;\n } else {\n body.card = {\n card_number: card.card_number,\n card_name: card.name,\n card_cvv: card.cvv,\n card_expiry: this.generateExpiry(card),\n };\n }\n }\n\n if (links) {\n body.links = links;\n }\n\n return this.http\n .post<EsolveSetResponse<EsolvePaymentResponse>>(\n `${this.config.api_url}/set-payment.php`,\n body,\n {\n headers: {\n 'Content-Type':\n 'application/x-www-form-urlencoded;charset=utf-8;',\n },\n responseType: 'json',\n observe: 'body',\n },\n )\n .pipe(\n map((http_response) =>\n this.responseHandler.validateSingleHttpResponse(\n http_response,\n (response) => new EsolvePaymentResult(response),\n ),\n ),\n catchError((errorRes: HttpErrorResponse | any) => {\n return this.errorHandler.handleHttpPostError(\n 'set-payment',\n errorRes,\n );\n }),\n );\n }\n\n /**\n * Processes the eSolve payment method records.\n *\n * @param records Records to process\n *\n * @returns An array of processed payment methods.\n */\n private processPaymentMethods(\n records: EsolvePaymentMethodRecord[],\n ): EsolvePaymentMethod[] {\n const payment_methods: EsolvePaymentMethod[] = [];\n\n if (records) {\n for (const record of records) {\n const payment_method = new EsolvePaymentMethod(record);\n\n payment_methods.push(payment_method);\n }\n }\n\n return payment_methods;\n }\n\n /**\n * Processes the eSolve vault records.\n *\n * @param records Records to process\n *\n * @returns An array of processed vault items (a.k.a. cards)\n */\n private processVaultItems(records: EsolveVaultRecord[]): EsolveVaultItem[] {\n const vault: EsolveVaultItem[] = [];\n\n if (records) {\n for (const record of records) {\n const vault_item = new EsolveVaultItem(\n +record.id,\n +record.payment_methods_id,\n record.last4,\n record.brand,\n record.expiry_timestamp,\n );\n\n vault.push(vault_item);\n }\n }\n\n return vault;\n }\n\n /**\n * Generate a concatenated string with the expiry month and year\n *\n * @param card_data Credit card data\n *\n * @returns Expiry string\n */\n private generateExpiry(card_data: EsolveCardData): string {\n const month_string = card_data.expiry_month.padStart(2, '0');\n const year_string = card_data.expiry_year.padStart(4, '0');\n\n return `${month_string}${year_string}`;\n }\n}\n","export class EsolveShippingTotals {\n constructor(\n public total: number,\n public vat: number,\n public savings: number,\n ) {}\n}\n","import { EsolveShippingTotals } from './esolve-shipping-totals.model';\n\nexport class EsolveShippingCost {\n public shipping: EsolveShippingTotals;\n public insurance: EsolveShippingTotals;\n\n constructor(\n // Shipping\n shipping_total = 0,\n shipping_vat = 0,\n shipping_total_savings = 0,\n // Insurance\n insurance_total = 0,\n insurance_vat = 0,\n insurance_total_savings = 0,\n ) {\n this.shipping = new EsolveShippingTotals(\n shipping_total,\n shipping_vat,\n shipping_total_savings,\n );\n\n this.insurance = new EsolveShippingTotals(\n insurance_total,\n insurance_vat,\n insurance_total_savings,\n );\n }\n}\n","import {\n EsolveShippingLocation,\n EsolveShippingCalculationMethod,\n EsolveInsuranceCalculationMethod,\n} from '../types';\n\nexport class EsolveShippingMethod {\n constructor(\n public id: number,\n public carrier_name: string,\n public delivery_category: string,\n public description: string,\n public location: EsolveShippingLocation,\n public pricing: string,\n public link_to_carrier_website: string,\n public days_to_deliver: number,\n public shipping_cost_calculation_method: EsolveShippingCalculationMethod,\n public insurance_cost_calculation_method: EsolveInsuranceCalculationMethod,\n public insurance_cost_percentage: number,\n public metric_factor: number,\n public allow_immediate_payment_processing: boolean,\n public allow_postal_address: boolean,\n public allow_physical_address: boolean,\n public client_to_collect: boolean,\n public is_default: boolean,\n public location_id: number,\n public use_zones: boolean,\n public min_distance: number,\n public max_distance: number,\n public shipping_surge_condition: number,\n public shipping_surge_percentage: number,\n public sort_priority: number,\n public shipping_group: string,\n public shipping_slot_identifier: string,\n public shipping_slot_delay_hours: number,\n public image_url: string,\n ) {}\n}\n","import { EsolveTimeSlotDateRecord } from '../interfaces';\n\nexport class EsolveTimeSlotDate {\n public time_slots_id = 0;\n public available = 0;\n public date: Date;\n\n constructor(record?: EsolveTimeSlotDateRecord) {\n let timestamp = 0;\n\n if (record) {\n this.time_slots_id = record.time_slots_id;\n this.available = record.available;\n timestamp = record.timestamp * 1000;\n }\n\n this.date = new Date(timestamp);\n }\n}\n","import { EsolveTimeSlotDaysRecord } from '../interfaces';\n\nexport class EsolveTimeSlotDays {\n public mon = false;\n public tue = false;\n public wed = false;\n public thu = false;\n public fri = false;\n public sat = false;\n public sun = false;\n\n constructor(record?: EsolveTimeSlotDaysRecord) {\n if (record) {\n this.mon = record.mon;\n this.tue = record.tue;\n this.wed = record.wed;\n this.thu = record.thu;\n this.fri = record.fri;\n this.sat = record.sat;\n this.sun = record.sun;\n }\n }\n}\n","import { EsolveTimeSlotTimesRecord } from '../interfaces';\n\nexport class EsolveTimeSlotTimes {\n public open = '00:00';\n public close = '23:59';\n\n constructor(record?: EsolveTimeSlotTimesRecord) {\n if (record) {\n this.open = record.open;\n this.close = record.close;\n }\n }\n}\n","import { EsolveTimeSlotRecord } from '../interfaces';\n\nimport { EsolveTimeSlotDays } from './esolve-time-slot-days.model';\nimport { EsolveTimeSlotTimes } from './esolve-time-slot-times.model';\n\nexport class EsolveTimeSlot {\n public id = 0;\n public identifier = '';\n public name = '';\n public limit = 0;\n\n public days: EsolveTimeSlotDays;\n public times: EsolveTimeSlotTimes;\n\n constructor(record?: EsolveTimeSlotRecord) {\n if (record) {\n this.id = record.id;\n this.identifier = record.identifier;\n this.name = record.name;\n this.limit = record.limit;\n }\n\n this.days = new EsolveTimeSlotDays(record?.days);\n this.times = new EsolveTimeSlotTimes(record?.times);\n }\n}\n","import { EsolveTimeSlotConfigRecord } from '../interfaces';\n\nimport { EsolveTimeSlotDate } from './esolve-time-slot-date.model';\nimport { EsolveTimeSlot } from './esolve-time-slot.model';\n\nexport class EsolveTimeSlotConfig {\n public slots: EsolveTimeSlot[] = [];\n public dates: EsolveTimeSlotDate[] = [];\n\n constructor(record?: EsolveTimeSlotConfigRecord) {\n if (record) {\n for (const slot_record of record.slots) {\n this.slots.push(new EsolveTimeSlot(slot_record));\n }\n\n for (const date_record of record.dates) {\n this.dates.push(new EsolveTimeSlotDate(date_record));\n }\n }\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\n\nimport { Observable, throwError } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { EsolveConnectConfig } from '../core/esolve-connect.config';\nimport { ESOLVE_CONNECT_CONFIG } from '../core/esolve-connect-config.constant';\nimport { EsolveGetResponse } from '../shared/response';\n\nimport {\n EsolveShippingCost,\n EsolveShippingMethod,\n EsolveTimeSlotConfig,\n} from './classes';\nimport {\n EsolveShippingCostRecord,\n EsolveShippingMethodRecord,\n EsolveShippingMethodOptions,\n EsolveTimeSlotConfigRecord,\n} from './interfaces';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveShippingService {\n constructor(\n @Inject(ESOLVE_CONNECT_CONFIG) private config: EsolveConnectConfig,\n private http: HttpClient,\n ) {}\n\n /**\n * Retrieves a list of shipping methods\n *\n * @param options Filter options\n *\n * @returns An `Observable` with an array of shipping methods\n */\n public getShippingMethods(\n options?: EsolveShippingMethodOptions,\n ): Observable<EsolveShippingMethod[]> {\n let params = new HttpParams();\n\n if (options) {\n if (typeof options.addresses_id !== 'undefined') {\n params = params.set('addresses_id', options.addresses_id);\n }\n\n if (typeof options.location_id !== 'undefined') {\n params = params.set('location_id', options.location_id);\n }\n }\n\n return this.http\n .get<EsolveGetResponse<EsolveShippingMethodRecord[]>>(\n `${this.config.api_url}/get-shipping-methods.php`,\n { params },\n )\n .pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n return this.processShippingMethods(response.records);\n }),\n );\n }\n\n /**\n * Retrieves the shipping costs\n *\n * @param shipping_id\n * @param addresses_id\n * @param location_id\n *\n * @returns An `Observable` with the shipping costs\n */\n public getShippingCost(\n shipping_id: number,\n addresses_id: number,\n location_id?: number,\n ): Observable<EsolveShippingCost> {\n try {\n let params = new HttpParams();\n\n if (typeof shipping_id === 'undefined') {\n throw new Error('Shipping ID is required');\n } else {\n params = params.set('shipping_id', shipping_id);\n }\n\n if (typeof addresses_id === 'undefined') {\n throw new Error('Address ID is required');\n } else {\n params = params.set('addresses_id', addresses_id);\n }\n\n if (typeof location_id !== 'undefined') {\n params = params.set('location_id', location_id);\n }\n\n return this.http\n .get<EsolveGetResponse<EsolveShippingCostRecord[]>>(\n `${this.config.api_url}/get-shipping-cost.php`,\n { params },\n )\n .pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n return this.processShippingCost(response.records[0]);\n }),\n );\n } catch (err) {\n return throwError(() => err);\n }\n }\n\n /**\n * Retrieves the time slot config from a shipping method\n *\n * @param shipping_id\n *\n * @returns An `Observable` with the time slots configurations\n */\n public getTimeSlots(shipping_id: number): Observable<EsolveTimeSlotConfig> {\n try {\n let params = new HttpParams();\n\n if (typeof shipping_id === 'undefined') {\n throw new Error('Shipping ID is required');\n } else {\n params = params.set('shipping_id', shipping_id);\n }\n\n return this.http\n .get<EsolveGetResponse<EsolveTimeSlotConfigRecord>>(\n `${this.config.api_url}/get-time-slots.php`,\n { params },\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n Array.isArray(response.records)\n ) {\n throw response;\n }\n\n return new EsolveTimeSlotConfig(response.records);\n }),\n );\n } catch (err) {\n return throwError(() => err);\n }\n }\n\n /**\n * Processes the eSolve shipping method records.\n *\n * @param records Records to process\n *\n * @returns An array of processed shipping methods\n */\n private processShippingMethods(\n records: EsolveShippingMethodRecord[],\n ): EsolveShippingMethod[] {\n const shipping_methods: EsolveShippingMethod[] = [];\n\n if (records) {\n for (const record of records) {\n const shipping_method = new EsolveShippingMethod(\n +record.id,\n record.carrier_name,\n record.delivery_category,\n record.description,\n record.location,\n record.pricing,\n record.link_to_carrier_website,\n +record.days_to_deliver,\n record.shipping_cost_calculation_method,\n record.insurance_cost_calculation_method,\n +record.insurance_cost_percentage,\n +record.metric_factor,\n record.allow_immediate_payment_processing,\n record.allow_postal_address,\n record.allow_physical_address,\n record.client_to_collect,\n record.is_default_shipping_method,\n +record.location_id,\n record.use_zones,\n +record.min_distance,\n +record.max_distance,\n +record.shipping_surge_condition,\n +record.shipping_surge_percentage,\n +record.sort_priority,\n record.shipping_group,\n record.shipping_slot_identifier,\n +record.shipping_slot_delay_hours,\n record.image_url,\n );\n\n shipping_methods.push(shipping_method);\n }\n }\n\n return shipping_methods;\n }\n\n /**\n * Processes the eSolve shipping costs record.+\n *\n * @param record Data to process\n *\n * @returns Processed shipping costs\n */\n private processShippingCost(\n record: EsolveShippingCostRecord,\n ): EsolveShippingCost {\n const shipping_cost = new EsolveShippingCost(\n +record.shipping_total,\n +record.vat_on_shipping,\n +record.total_saving_on_shipping,\n +record.insurance_total,\n +record.vat_on_insurance,\n +record.total_saving_on_insurance,\n );\n\n return shipping_cost;\n }\n}\n","import { EsolveResponseResult } from '../shared/response';\n\nimport { EsolveEnquiryResponse } from './esolve-enquiry-response.type';\n\nexport class EsolveEnquiryResult extends EsolveResponseResult {\n public id = 0;\n\n constructor(response: EsolveEnquiryResponse) {\n super(response);\n\n this.id = +response.esolve_id;\n }\n}\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { EsolveErrorHandlerService } from '../shared/errors';\nimport {\n EsolveResponseHandlerService,\n EsolveSetResponse,\n} from '../shared/response';\n\nimport { EsolveEnquiryResult } from './esolve-enquiry-result.model';\nimport { EsolveEnquiryResponse } from './esolve-enquiry-response.type';\nimport { EsolveConfigService } from '../core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveEnquiryService {\n constructor(\n private config: EsolveConfigService,\n private http: HttpClient,\n private errorHandler: EsolveErrorHandlerService,\n private responseHandler: EsolveResponseHandlerService,\n ) {}\n\n public send(form_data: FormData): Observable<EsolveEnquiryResult> {\n if (!form_data.has('email')) {\n return this.errorHandler.emitError(\n 'email_required',\n 'Email is required',\n );\n }\n\n return this.http\n .post<EsolveSetResponse<EsolveEnquiryResponse>>(\n `${this.config.api_url}/set-enquiry.php`,\n form_data,\n {\n responseType: 'json',\n observe: 'body',\n },\n )\n .pipe(\n map((http_response) =>\n this.responseHandler.validateSingleHttpResponse(\n http_response,\n (response) => new EsolveEnquiryResult(response),\n ),\n ),\n catchError((errorRes: HttpErrorResponse | any) => {\n return this.errorHandler.handleHttpPostError(\n 'set-enquiry',\n errorRes,\n );\n }),\n );\n }\n}\n","import { EsolveStockItem } from '../../stock';\n\nexport class EsolveWishlistItem {\n constructor(\n public id: number,\n public qty: number,\n public vat_rate: number,\n public price: number,\n public price_incl: number,\n public vat_total: number,\n public total: number,\n public total_incl: number,\n public stock_item?: EsolveStockItem,\n ) {}\n}\n","import { EsolveResponseResult } from '../../shared/response';\n\nexport class EsolveEmptyWishlistResult extends EsolveResponseResult {}\n","import { Inject, Injectable } from '@angular/core';\nimport {\n HttpClient,\n HttpErrorResponse,\n HttpParams,\n} from '@angular/common/http';\n\nimport { Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { EsolveConnectConfig } from '../core/esolve-connect.config';\nimport { ESOLVE_CONNECT_CONFIG } from '../core/esolve-connect-config.constant';\nimport {\n EsolveSetResponse,\n EsolveGetResponse,\n EsolveResponseHandlerService,\n} from '../shared/response';\nimport { EsolveErrorHandlerService } from '../shared/errors';\nimport { EsolveStockItem } from '../stock';\n\nimport { EsolveWishlist, EsolveWishlistSetAction } from './types';\nimport { EsolveWishlistItem, EsolveEmptyWishlistResult } from './classes';\nimport {\n EsolveWishlistItemRecord,\n EsolveWishlistItemResponse,\n EsolveWishlistSetItem,\n} from './interfaces';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveWishlistService {\n constructor(\n @Inject(ESOLVE_CONNECT_CONFIG) private config: EsolveConnectConfig,\n private http: HttpClient,\n private errorHandler: EsolveErrorHandlerService,\n private responseHandler: EsolveResponseHandlerService,\n ) {}\n\n /**\n * Retrieves the current wishlist\n *\n * @returns An `Observable` with an array of cart items\n */\n public getWishlist(): Observable<EsolveWishlist> {\n return this.getWishlistRecords().pipe(\n map((response) => {\n if (response.records === undefined) {\n throw response;\n }\n\n return this.processWishlist(response.records);\n }),\n );\n }\n\n /**\n * Updates the wishlist by preforming various actions, such as adding, editing or removing items from the list.\n *\n * @param items An array of options to update the wishlist\n * @param default_action The default action to preform\n *\n * @returns An `Observable` with an array of responses that gives feedback on the requested changes\n */\n public setWishlist(\n items: EsolveWishlistSetItem[],\n default_action: EsolveWishlistSetAction = 'add',\n ): Observable<EsolveWishlistItemResponse[]> {\n const body = {\n items,\n default_action,\n };\n\n return this.http\n .post<EsolveSetResponse<EsolveWishlistItemResponse>>(\n `${this.config.api_url}/set-wishlist-item.php`,\n body,\n {\n headers: {\n 'Content-Type':\n 'application/x-www-form-urlencoded;charset=utf-8;',\n },\n responseType: 'json',\n observe: 'body',\n },\n )\n .pipe(\n map((response) => {\n if (response.responses === undefined) {\n throw response;\n }\n\n return response.responses;\n }),\n );\n }\n\n /**\n * Empties the wishlist for the logged in user.\n *\n * @returns Observable of type EsolveEmptyWishlistResult\n */\n public setWishlistEmpty(): Observable<EsolveEmptyWishlistResult> {\n return this.http\n .post<EsolveSetResponse<EsolveWishlistItemResponse>>(\n `${this.config.api_url}/set-wishlist-empty.php`,\n { empty: true },\n {\n headers: {\n 'Content-Type':\n 'application/x-www-form-urlencoded;charset=utf-8;',\n },\n responseType: 'json',\n observe: 'body',\n },\n )\n .pipe(\n map((http_response) =>\n this.responseHandler.validateSingleHttpResponse(\n http_response,\n (response) => {\n return new EsolveEmptyWishlistResult(response);\n },\n ),\n ),\n catchError((errorRes: HttpErrorResponse | any) => {\n return this.errorHandler.handleHttpPostError(\n 'set-wishlist-empty',\n errorRes,\n );\n }),\n );\n }\n\n /**\n * Processes the eSolve wishlist records\n *\n * @param wishlist_item_records Records to process\n *\n * @returns An array of processed cart items\n */\n private processWishlist(\n wishlist_item_records: EsolveWishlistItemRecord[],\n ): EsolveWishlist {\n const wishlist_items: EsolveWishlist = [];\n\n if (wishlist_item_records) {\n for (const item of wishlist_item_records) {\n const stock_item = new EsolveStockItem(item.stock_item);\n\n const wishlist_item = new EsolveWishlistItem(\n +item.id,\n +item.qty,\n +item.vat_rate,\n +item.price,\n +item.price_incl,\n +item.vat_total,\n +item.line_total,\n +item.line_total_incl,\n stock_item,\n );\n\n wishlist_items.push(wishlist_item);\n }\n }\n\n return wishlist_items;\n }\n\n /**\n * Retrieves stock records from HTTP params.\n *\n * @param params HTTP client parameters\n */\n private getWishlistRecords(\n params?: HttpParams,\n ): Observable<EsolveGetResponse<EsolveWishlistItemRecord[]>> {\n return this.http.get<EsolveGetResponse<EsolveWishlistItemRecord[]>>(\n `${this.config.api_url}/get-wishlist.php`,\n { params },\n );\n }\n}\n","import { EsolveSupplierRecord } from '../interfaces';\n\nexport class EsolveSupplier {\n public id?: number;\n public internal_account?: string;\n public external_account?: string;\n public company_name: string;\n public owner_firstname: string;\n public owner_surname: string;\n public owner_email: string;\n public owner_contact_number: string;\n public rep_firstname: string;\n public rep_surname: string;\n public rep_email: string;\n public rep_contact_number: string;\n public street: string;\n public suburb: string;\n public city: string;\n public province: string;\n public country: string;\n public postal_code: string;\n public catalogue_ref_1: string;\n public catalogue_ref_2: string;\n public is_active?: boolean;\n public industry_type: string;\n\n constructor(record?: Partial<EsolveSupplierRecord>) {\n this.id = record?.id;\n this.internal_account = record?.internal_account;\n this.external_account = record?.external_account;\n this.company_name = record?.company_name ?? '';\n this.owner_firstname = record?.owner_firstname ?? '';\n this.owner_surname = record?.owner_surname ?? '';\n this.owner_email = record?.owner_email ?? '';\n this.owner_contact_number = record?.owner_contact_number ?? '';\n this.rep_firstname = record?.rep_firstname ?? '';\n this.rep_surname = record?.rep_surname ?? '';\n this.rep_email = record?.rep_email ?? '';\n this.rep_contact_number = record?.rep_contact_number ?? '';\n this.street = record?.street ?? '';\n this.suburb = record?.suburb ?? '';\n this.city = record?.city ?? '';\n this.province = record?.province ?? '';\n this.country = record?.country ?? '';\n this.postal_code = record?.postal_code ?? '';\n this.catalogue_ref_1 = record?.catalogue_ref_1 ?? '';\n this.catalogue_ref_2 = record?.catalogue_ref_2 ?? '';\n this.is_active = record?.is_active;\n this.industry_type = record?.industry_type ?? '';\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\n\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { EsolveConnectConfig } from '../core/esolve-connect.config';\nimport { ESOLVE_CONNECT_CONFIG } from '../core/esolve-connect-config.constant';\nimport { EsolveGetResponse } from '../shared/response';\n\nimport { EsolveSupplier } from './classes';\nimport { EsolveSupplierRecord, EsolveSupplierOptions } from './interfaces';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EsolveSuppliersService {\n constructor(\n @Inject(ESOLVE_CONNECT_CONFIG) private config: EsolveConnectConfig,\n private http: HttpClient,\n ) {}\n\n public getSuppliers(\n options?: EsolveSupplierOptions,\n ): Observable<EsolveSupplier[]> {\n let params = new HttpParams();\n\n if (options?.industry_type) {\n params = params.set('industry_type', options.industry_type);\n }\n if (options?.internal_account) {\n params = params.set('internal_account', options.internal_account);\n }\n\n return this.getSupplierRecords(params).pipe(\n map((records) => {\n const suppliers: EsolveSupplier[] = [];\n\n for (const record of records) {\n suppliers.push(this.processSuppliers(record));\n }\n\n return suppliers;\n }),\n catchError(() => {\n return of<EsolveSupplier[]>([]);\n }),\n );\n }\n\n private getSupplierRecords(\n params: HttpParams,\n ): Observable<EsolveSupplierRecord[]> {\n return this.http\n .get<EsolveGetResponse<EsolveSupplierRecord[]>>(\n `${this.config.api_url}/get-suppliers.php`,\n { params },\n )\n .pipe(\n map((response) => {\n if (\n response.records === undefined ||\n response.records.length === 0\n ) {\n throw response;\n }\n\n return response.records;\n }),\n );\n }\n\n private processSuppliers(record: EsolveSupplierRecord): EsolveSupplier {\n return new EsolveSupplier(record);\n }\n}\n","/*\n * Public API Surface of ng-esolve-connect\n */\n\nexport * from './lib/ng-esolve-connect.module';\nexport * from './lib/core';\nexport * from './lib/images';\n\nexport * from './lib/shared/esolve-list.model';\nexport * from './lib/shared/esolve-result.model';\nexport * from './lib/shared/esolve-url-target.type';\nexport * from './lib/shared/esolve-hex-hash.function';\nexport * from './lib/shared/custom-fields';\nexport * from './lib/shared/filters';\nexport * from './lib/shared/response';\nexport * from './lib/shared/errors';\nexport * from './lib/shared/cookie/esolve-cookie.service';\nexport * from './lib/shared/sort';\n\n// SEO\nexport * from './lib/shared/seo';\n\n// Geocoder\nexport * from './lib/shared/geocoder';\n\n// Assets\nexport * from './lib/shared/assets';\n\n// Session\nexport * from './lib/session';\n\n// Auth\nexport * from './lib/auth';\n\n// Account\nexport * from './lib/account';\n\n// Banners\nexport * from './lib/banners';\n\n// Menu\nexport * from './lib/menu';\n\n// News\nexport * from './lib/news';\n\n// Topics\nexport * from './lib/topics';\n\n// Tags\nexport * from './lib/tags';\n\n// Stock\nexport * from './lib/stock';\n\n// Category Tree\nexport * from './lib/category-tree';\n\n// Manufacturers\nexport * from './lib/manufacturers';\n\n// Ranges\nexport * from './lib/ranges';\n\n// Specials\nexport * from './lib/specials';\n\n// Cart\nexport * from './lib/cart';\n\n// Payment\nexport * from './lib/payment';\n\n// Shipping\nexport * from './lib/shipping';\n\n// Locations\nexport * from './lib/locations';\n\n// Enquiry\nexport * from './lib/enquiry';\n\n// Wishlist\nexport * from './lib/wishlist';\n\n// Suppliers\nexport * from './lib/suppliers';\n\n// Coupons\nexport * from './lib/coupons';\n\n// Transactions\nexport * from './lib/transactions';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.EsolveConfigService","i2.EsolveCookieService","map","i2","i3.EsolveErrorHandlerService","i4.EsolveResponseHandlerService","switchMap","i3.EsolveSessionService","i4.EsolveErrorHandlerService","i2.EsolveSessionService","i1","EsolveFilterFactory.covertFromObj","EsolveFilterFactory.convertToHttpParams","i2.EsolveErrorHandlerService","i3.EsolveResponseHandlerService","i4.EsolveCouponsService","i5.EsolveResponseHandlerService"],"mappings":"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"}
|