@infrab4a/connect-angular 5.5.0-alpha.2 → 5.5.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/angular-connect.module.d.ts +33 -0
  2. package/angular-elastic-search.module.d.ts +9 -0
  3. package/angular-firebase-auth.module.d.ts +10 -0
  4. package/angular-firestore.module.d.ts +16 -0
  5. package/angular-hasura-graphql.module.d.ts +14 -0
  6. package/angular-vertex-search.module.d.ts +9 -0
  7. package/consts/backend-url.const.d.ts +1 -0
  8. package/consts/category-structure.d.ts +1 -0
  9. package/consts/default-shop.const.d.ts +1 -0
  10. package/consts/es-config.const.d.ts +1 -0
  11. package/consts/firebase-const.d.ts +4 -0
  12. package/consts/hasura-options.const.d.ts +1 -0
  13. package/consts/index.d.ts +8 -0
  14. package/consts/persistence.const.d.ts +1 -0
  15. package/consts/storage-base-url.const.d.ts +1 -0
  16. package/consts/vertex-config.const.d.ts +1 -0
  17. package/esm2022/angular-connect.module.mjs +288 -0
  18. package/esm2022/angular-elastic-search.module.mjs +34 -0
  19. package/esm2022/angular-firebase-auth.module.mjs +140 -0
  20. package/esm2022/angular-firestore.module.mjs +538 -0
  21. package/esm2022/angular-hasura-graphql.module.mjs +333 -0
  22. package/esm2022/angular-vertex-search.module.mjs +34 -0
  23. package/esm2022/consts/backend-url.const.mjs +2 -0
  24. package/esm2022/consts/category-structure.mjs +2 -0
  25. package/esm2022/consts/default-shop.const.mjs +2 -0
  26. package/esm2022/consts/es-config.const.mjs +2 -0
  27. package/esm2022/consts/firebase-const.mjs +5 -0
  28. package/esm2022/consts/hasura-options.const.mjs +2 -0
  29. package/esm2022/consts/index.mjs +9 -0
  30. package/esm2022/consts/persistence.const.mjs +2 -0
  31. package/esm2022/consts/storage-base-url.const.mjs +2 -0
  32. package/esm2022/consts/vertex-config.const.mjs +2 -0
  33. package/esm2022/helpers/index.mjs +2 -0
  34. package/esm2022/helpers/mobile-operation-system-checker.helper.mjs +7 -0
  35. package/esm2022/index.mjs +7 -0
  36. package/esm2022/infrab4a-connect-angular.mjs +5 -0
  37. package/esm2022/interfaces/catalog-strategies.interface.mjs +2 -0
  38. package/esm2022/interfaces/category-facades.interface.mjs +2 -0
  39. package/esm2022/interfaces/index.mjs +3 -0
  40. package/esm2022/persistence/cookie-data-persistence.mjs +22 -0
  41. package/esm2022/persistence/data-persistence.mjs +2 -0
  42. package/esm2022/persistence/index.mjs +3 -0
  43. package/esm2022/services/auth.service.mjs +37 -0
  44. package/esm2022/services/cart/cart-services.facade.mjs +21 -0
  45. package/esm2022/services/cart/index.mjs +2 -0
  46. package/esm2022/services/cart.service.mjs +73 -0
  47. package/esm2022/services/catalog/adapters/category-structure.adapter.mjs +2 -0
  48. package/esm2022/services/catalog/adapters/index.mjs +4 -0
  49. package/esm2022/services/catalog/adapters/new-category-structure.adapter.mjs +43 -0
  50. package/esm2022/services/catalog/adapters/old-category-structure.adapter.mjs +23 -0
  51. package/esm2022/services/catalog/catalog.service.mjs +111 -0
  52. package/esm2022/services/catalog/category.service.mjs +42 -0
  53. package/esm2022/services/catalog/context/catalog-search.context.mjs +40 -0
  54. package/esm2022/services/catalog/enums/index.mjs +2 -0
  55. package/esm2022/services/catalog/enums/product-sorts.enum.mjs +11 -0
  56. package/esm2022/services/catalog/facades/catalog-service.facade.mjs +32 -0
  57. package/esm2022/services/catalog/facades/catalog-strategies.facade.mjs +17 -0
  58. package/esm2022/services/catalog/facades/category-repository.facade.mjs +20 -0
  59. package/esm2022/services/catalog/facades/category-service.facade.mjs +30 -0
  60. package/esm2022/services/catalog/facades/index.mjs +6 -0
  61. package/esm2022/services/catalog/facades/product-catalog.facade.mjs +21 -0
  62. package/esm2022/services/catalog/helpers/brand-manager.helper.mjs +57 -0
  63. package/esm2022/services/catalog/helpers/catalog-filter.helper.mjs +44 -0
  64. package/esm2022/services/catalog/helpers/catalog-sort.helper.mjs +52 -0
  65. package/esm2022/services/catalog/helpers/index.mjs +5 -0
  66. package/esm2022/services/catalog/helpers/product-fields.helper.mjs +40 -0
  67. package/esm2022/services/catalog/index.mjs +8 -0
  68. package/esm2022/services/catalog/models/category-with-tree.model.mjs +10 -0
  69. package/esm2022/services/catalog/models/index.mjs +2 -0
  70. package/esm2022/services/catalog/services/catalog-helpers.service.mjs +33 -0
  71. package/esm2022/services/catalog/services/catalog-operations.facade.mjs +26 -0
  72. package/esm2022/services/catalog/services/catalog-repository.service.mjs +25 -0
  73. package/esm2022/services/catalog/services/index.mjs +5 -0
  74. package/esm2022/services/catalog/services/product-management.facade.mjs +25 -0
  75. package/esm2022/services/catalog/strategies/category-search.strategy.mjs +133 -0
  76. package/esm2022/services/catalog/strategies/index.mjs +4 -0
  77. package/esm2022/services/catalog/strategies/profile-search.strategy.mjs +42 -0
  78. package/esm2022/services/catalog/strategies/term-search.strategy.mjs +123 -0
  79. package/esm2022/services/catalog/strategies/types/strategy-params.type.mjs +2 -0
  80. package/esm2022/services/catalog/types/fetch-products-options.type.mjs +2 -0
  81. package/esm2022/services/catalog/types/fetch-products-params.type.mjs +2 -0
  82. package/esm2022/services/catalog/types/fetch-products-response.type.mjs +2 -0
  83. package/esm2022/services/catalog/types/index.mjs +6 -0
  84. package/esm2022/services/catalog/types/method-params.type.mjs +2 -0
  85. package/esm2022/services/catalog/types/product-sort.type.mjs +2 -0
  86. package/esm2022/services/catalog/wishlist.service.mjs +254 -0
  87. package/esm2022/services/checkout/checkout-dependencies.facade.mjs +20 -0
  88. package/esm2022/services/checkout/checkout-repositories.facade.mjs +20 -0
  89. package/esm2022/services/checkout/index.mjs +3 -0
  90. package/esm2022/services/checkout-subscription.service.mjs +55 -0
  91. package/esm2022/services/checkout.service.mjs +106 -0
  92. package/esm2022/services/coupon/coupon-repositories.facade.mjs +24 -0
  93. package/esm2022/services/coupon/index.mjs +2 -0
  94. package/esm2022/services/coupon/types/coupon-params.type.mjs +2 -0
  95. package/esm2022/services/coupon.service.mjs +248 -0
  96. package/esm2022/services/helpers/index.mjs +2 -0
  97. package/esm2022/services/helpers/util.helper.mjs +18 -0
  98. package/esm2022/services/home-shop/home-shop-repositories.facade.mjs +24 -0
  99. package/esm2022/services/home-shop/index.mjs +2 -0
  100. package/esm2022/services/home-shop.service.mjs +119 -0
  101. package/esm2022/services/index.mjs +11 -0
  102. package/esm2022/services/order-product-review.service.mjs +110 -0
  103. package/esm2022/services/order.service.mjs +30 -0
  104. package/esm2022/services/shared/configuration.facade.mjs +29 -0
  105. package/esm2022/services/shared/index.mjs +2 -0
  106. package/esm2022/services/types/index.mjs +5 -0
  107. package/esm2022/services/types/pending-product-review.type.mjs +2 -0
  108. package/esm2022/services/types/product-review-create.type.mjs +2 -0
  109. package/esm2022/services/types/required-checkout-data.type.mjs +2 -0
  110. package/esm2022/services/types/required-checkout-subscription-data.type.mjs +2 -0
  111. package/esm2022/types/firebase-app-config.type.mjs +2 -0
  112. package/esm2022/types/index.mjs +2 -0
  113. package/fesm2022/infrab4a-connect-angular.mjs +246 -286
  114. package/fesm2022/infrab4a-connect-angular.mjs.map +1 -1
  115. package/helpers/index.d.ts +1 -0
  116. package/helpers/mobile-operation-system-checker.helper.d.ts +3 -0
  117. package/index.d.ts +6 -755
  118. package/interfaces/catalog-strategies.interface.d.ts +31 -0
  119. package/interfaces/category-facades.interface.d.ts +6 -0
  120. package/interfaces/index.d.ts +2 -0
  121. package/package.json +7 -5
  122. package/persistence/cookie-data-persistence.d.ts +10 -0
  123. package/persistence/data-persistence.d.ts +6 -0
  124. package/persistence/index.d.ts +2 -0
  125. package/services/auth.service.d.ts +18 -0
  126. package/services/cart/cart-services.facade.d.ts +12 -0
  127. package/services/cart/index.d.ts +1 -0
  128. package/services/cart.service.d.ts +26 -0
  129. package/services/catalog/adapters/category-structure.adapter.d.ts +4 -0
  130. package/services/catalog/adapters/index.d.ts +3 -0
  131. package/services/catalog/adapters/new-category-structure.adapter.d.ts +12 -0
  132. package/services/catalog/adapters/old-category-structure.adapter.d.ts +10 -0
  133. package/services/catalog/catalog.service.d.ts +24 -0
  134. package/services/catalog/category.service.d.ts +23 -0
  135. package/services/catalog/context/catalog-search.context.d.ts +14 -0
  136. package/services/catalog/enums/index.d.ts +1 -0
  137. package/services/catalog/enums/product-sorts.enum.d.ts +9 -0
  138. package/services/catalog/facades/catalog-service.facade.d.ts +15 -0
  139. package/services/catalog/facades/catalog-strategies.facade.d.ts +10 -0
  140. package/services/catalog/facades/category-repository.facade.d.ts +9 -0
  141. package/services/catalog/facades/category-service.facade.d.ts +15 -0
  142. package/services/catalog/facades/index.d.ts +5 -0
  143. package/services/catalog/facades/product-catalog.facade.d.ts +10 -0
  144. package/services/catalog/helpers/brand-manager.helper.d.ts +14 -0
  145. package/services/catalog/helpers/catalog-filter.helper.d.ts +8 -0
  146. package/services/catalog/helpers/catalog-sort.helper.d.ts +7 -0
  147. package/services/catalog/helpers/index.d.ts +4 -0
  148. package/services/catalog/helpers/product-fields.helper.d.ts +7 -0
  149. package/services/catalog/index.d.ts +7 -0
  150. package/services/catalog/models/category-with-tree.model.d.ts +4 -0
  151. package/services/catalog/models/index.d.ts +1 -0
  152. package/services/catalog/services/catalog-helpers.service.d.ts +17 -0
  153. package/services/catalog/services/catalog-operations.facade.d.ts +13 -0
  154. package/services/catalog/services/catalog-repository.service.d.ts +12 -0
  155. package/services/catalog/services/index.d.ts +4 -0
  156. package/services/catalog/services/product-management.facade.d.ts +12 -0
  157. package/services/catalog/strategies/category-search.strategy.d.ts +19 -0
  158. package/services/catalog/strategies/index.d.ts +3 -0
  159. package/services/catalog/strategies/profile-search.strategy.d.ts +14 -0
  160. package/services/catalog/strategies/term-search.strategy.d.ts +20 -0
  161. package/services/catalog/strategies/types/strategy-params.type.d.ts +58 -0
  162. package/services/catalog/types/fetch-products-options.type.d.ts +8 -0
  163. package/services/catalog/types/fetch-products-params.type.d.ts +25 -0
  164. package/services/catalog/types/fetch-products-response.type.d.ts +19 -0
  165. package/services/catalog/types/index.d.ts +5 -0
  166. package/services/catalog/types/method-params.type.d.ts +17 -0
  167. package/services/catalog/types/product-sort.type.d.ts +2 -0
  168. package/services/catalog/wishlist.service.d.ts +59 -0
  169. package/services/checkout/checkout-dependencies.facade.d.ts +10 -0
  170. package/services/checkout/checkout-repositories.facade.d.ts +9 -0
  171. package/services/checkout/index.d.ts +2 -0
  172. package/services/checkout-subscription.service.d.ts +19 -0
  173. package/services/checkout.service.d.ts +30 -0
  174. package/services/coupon/coupon-repositories.facade.d.ts +10 -0
  175. package/services/coupon/index.d.ts +1 -0
  176. package/services/coupon/types/coupon-params.type.d.ts +13 -0
  177. package/services/coupon.service.d.ts +36 -0
  178. package/services/helpers/index.d.ts +1 -0
  179. package/services/helpers/util.helper.d.ts +3 -0
  180. package/services/home-shop/home-shop-repositories.facade.d.ts +10 -0
  181. package/services/home-shop/index.d.ts +1 -0
  182. package/services/home-shop.service.d.ts +26 -0
  183. package/services/index.d.ts +10 -0
  184. package/services/order-product-review.service.d.ts +16 -0
  185. package/services/order.service.d.ts +13 -0
  186. package/services/shared/configuration.facade.d.ts +12 -0
  187. package/services/shared/index.d.ts +1 -0
  188. package/services/types/index.d.ts +4 -0
  189. package/services/types/pending-product-review.type.d.ts +12 -0
  190. package/services/types/product-review-create.type.d.ts +14 -0
  191. package/services/types/required-checkout-data.type.d.ts +2 -0
  192. package/services/types/required-checkout-subscription-data.type.d.ts +2 -0
  193. package/types/firebase-app-config.type.d.ts +1 -0
  194. package/types/index.d.ts +1 -0
@@ -0,0 +1,55 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { CheckoutSubscription, CheckoutTypes, isNil, pick, } from '@infrab4a/connect';
3
+ import { concatMap } from 'rxjs/operators';
4
+ import { PERSISTENCE_PROVIDER } from '../consts';
5
+ import { CouponService } from './coupon.service';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "./coupon.service";
8
+ export class CheckoutSubscriptionService {
9
+ constructor(checkoutSubscriptionRepository, dataPersistence, couponService) {
10
+ this.checkoutSubscriptionRepository = checkoutSubscriptionRepository;
11
+ this.dataPersistence = dataPersistence;
12
+ this.couponService = couponService;
13
+ }
14
+ getCheckoutSubscription(checkoutData) {
15
+ return this.dataPersistence
16
+ .get('checkoutSubscriptionId')
17
+ .pipe(concatMap((id) => !isNil(id) ? this.checkoutSubscriptionRepository.get({ id }) : this.createCheckoutSubscription(checkoutData)));
18
+ }
19
+ clearCheckoutSubscriptionFromSession() {
20
+ return this.dataPersistence.remove('checkoutSubscriptionId');
21
+ }
22
+ checkCoupon(nickname, _userEmail) {
23
+ return this.getCheckoutSubscription().pipe(concatMap((checkout) => this.couponService
24
+ .checkCoupon({
25
+ nickname,
26
+ checkoutType: CheckoutTypes.SUBSCRIPTION,
27
+ checkout,
28
+ plan: checkout.subscriptionPlan.name,
29
+ })
30
+ .pipe()));
31
+ }
32
+ calcDiscountSubscription(coupon) {
33
+ return this.getCheckoutSubscription().pipe(concatMap((checkout) => this.couponService.calcDiscountSubscription(coupon, checkout).pipe()));
34
+ }
35
+ async createCheckoutSubscription(checkoutData) {
36
+ const checkout = await this.checkoutSubscriptionRepository.create({
37
+ createdAt: new Date(),
38
+ ...CheckoutSubscription.toInstance(pick(checkoutData, ['user', 'shop'])).toPlain(),
39
+ });
40
+ await this.dataPersistence.set('checkoutSubscriptionId', checkout.id).toPromise();
41
+ return checkout;
42
+ }
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CheckoutSubscriptionService, deps: [{ token: 'CheckoutSubscriptionRepository' }, { token: PERSISTENCE_PROVIDER }, { token: i1.CouponService }], target: i0.ɵɵFactoryTarget.Injectable }); }
44
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CheckoutSubscriptionService }); }
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CheckoutSubscriptionService, decorators: [{
47
+ type: Injectable
48
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
49
+ type: Inject,
50
+ args: ['CheckoutSubscriptionRepository']
51
+ }] }, { type: undefined, decorators: [{
52
+ type: Inject,
53
+ args: [PERSISTENCE_PROVIDER]
54
+ }] }, { type: i1.CouponService }] });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtc3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NoZWNrb3V0LXN1YnNjcmlwdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFDTCxvQkFBb0IsRUFFcEIsYUFBYSxFQUViLEtBQUssRUFDTCxJQUFJLEdBQ0wsTUFBTSxtQkFBbUIsQ0FBQTtBQUUxQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHMUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sV0FBVyxDQUFBO0FBSWhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTs7O0FBR2hELE1BQU0sT0FBTywyQkFBMkI7SUFDdEMsWUFFbUIsOEJBQThELEVBQ2hDLGVBQWdDLEVBQzlELGFBQTRCO1FBRjVCLG1DQUE4QixHQUE5Qiw4QkFBOEIsQ0FBZ0M7UUFDaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzlELGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQzVDLENBQUM7SUFFSix1QkFBdUIsQ0FBQyxZQUErQztRQUNyRSxPQUFPLElBQUksQ0FBQyxlQUFlO2FBQ3hCLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQzthQUM3QixJQUFJLENBQ0gsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FDZixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxZQUFZLENBQUMsQ0FDN0csQ0FDRixDQUFBO0lBQ0wsQ0FBQztJQUVELG9DQUFvQztRQUNsQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUE7SUFDOUQsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFnQixFQUFFLFVBQWtCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsSUFBSSxDQUN4QyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUNyQixJQUFJLENBQUMsYUFBYTthQUNmLFdBQVcsQ0FBQztZQUNYLFFBQVE7WUFDUixZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQVk7WUFDeEMsUUFBUTtZQUNSLElBQUksRUFBRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSTtTQUNyQyxDQUFDO2FBQ0QsSUFBSSxFQUFFLENBQ1YsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVELHdCQUF3QixDQUFDLE1BQWM7UUFDckMsT0FBTyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxJQUFJLENBQ3hDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FDOUYsQ0FBQTtJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsMEJBQTBCLENBQ3RDLFlBQStDO1FBRS9DLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLDhCQUE4QixDQUFDLE1BQU0sQ0FBQztZQUNoRSxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDckIsR0FBRyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO1NBQ25GLENBQUMsQ0FBQTtRQUVGLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFBO1FBRWpGLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7K0dBdERVLDJCQUEyQixrQkFFNUIsZ0NBQWdDLGFBRWhDLG9CQUFvQjttSEFKbkIsMkJBQTJCOzs0RkFBM0IsMkJBQTJCO2tCQUR2QyxVQUFVOzswQkFHTixNQUFNOzJCQUFDLGdDQUFnQzs7MEJBRXZDLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIENoZWNrb3V0U3Vic2NyaXB0aW9uLFxuICBDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnksXG4gIENoZWNrb3V0VHlwZXMsXG4gIENvdXBvbixcbiAgaXNOaWwsXG4gIHBpY2ssXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBjb25jYXRNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuXG5pbXBvcnQgeyBQRVJTSVNURU5DRV9QUk9WSURFUiB9IGZyb20gJy4uL2NvbnN0cydcbmltcG9ydCB7IERhdGFQZXJzaXN0ZW5jZSB9IGZyb20gJy4uL3BlcnNpc3RlbmNlJ1xuXG5pbXBvcnQgeyBSZXF1aXJlZENoZWNrb3V0U3Vic2NyaXB0aW9uRGF0YSB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQgeyBDb3Vwb25TZXJ2aWNlIH0gZnJvbSAnLi9jb3Vwb24uc2VydmljZSdcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENoZWNrb3V0U3Vic2NyaXB0aW9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ0NoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeScpXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnk6IENoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KFBFUlNJU1RFTkNFX1BST1ZJREVSKSBwcml2YXRlIHJlYWRvbmx5IGRhdGFQZXJzaXN0ZW5jZTogRGF0YVBlcnNpc3RlbmNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY291cG9uU2VydmljZTogQ291cG9uU2VydmljZSxcbiAgKSB7fVxuXG4gIGdldENoZWNrb3V0U3Vic2NyaXB0aW9uKGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXRTdWJzY3JpcHRpb25EYXRhKTogT2JzZXJ2YWJsZTxDaGVja291dFN1YnNjcmlwdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmRhdGFQZXJzaXN0ZW5jZVxuICAgICAgLmdldCgnY2hlY2tvdXRTdWJzY3JpcHRpb25JZCcpXG4gICAgICAucGlwZShcbiAgICAgICAgY29uY2F0TWFwKChpZCkgPT5cbiAgICAgICAgICAhaXNOaWwoaWQpID8gdGhpcy5jaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnkuZ2V0KHsgaWQgfSkgOiB0aGlzLmNyZWF0ZUNoZWNrb3V0U3Vic2NyaXB0aW9uKGNoZWNrb3V0RGF0YSksXG4gICAgICAgICksXG4gICAgICApXG4gIH1cblxuICBjbGVhckNoZWNrb3V0U3Vic2NyaXB0aW9uRnJvbVNlc3Npb24oKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVBlcnNpc3RlbmNlLnJlbW92ZSgnY2hlY2tvdXRTdWJzY3JpcHRpb25JZCcpXG4gIH1cblxuICBjaGVja0NvdXBvbihuaWNrbmFtZTogc3RyaW5nLCBfdXNlckVtYWlsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENvdXBvbj4ge1xuICAgIHJldHVybiB0aGlzLmdldENoZWNrb3V0U3Vic2NyaXB0aW9uKCkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XG4gICAgICAgIHRoaXMuY291cG9uU2VydmljZVxuICAgICAgICAgIC5jaGVja0NvdXBvbih7XG4gICAgICAgICAgICBuaWNrbmFtZSxcbiAgICAgICAgICAgIGNoZWNrb3V0VHlwZTogQ2hlY2tvdXRUeXBlcy5TVUJTQ1JJUFRJT04sXG4gICAgICAgICAgICBjaGVja291dCxcbiAgICAgICAgICAgIHBsYW46IGNoZWNrb3V0LnN1YnNjcmlwdGlvblBsYW4ubmFtZSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5waXBlKCksXG4gICAgICApLFxuICAgIClcbiAgfVxuXG4gIGNhbGNEaXNjb3VudFN1YnNjcmlwdGlvbihjb3Vwb246IENvdXBvbikge1xuICAgIHJldHVybiB0aGlzLmdldENoZWNrb3V0U3Vic2NyaXB0aW9uKCkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+IHRoaXMuY291cG9uU2VydmljZS5jYWxjRGlzY291bnRTdWJzY3JpcHRpb24oY291cG9uLCBjaGVja291dCkucGlwZSgpKSxcbiAgICApXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZUNoZWNrb3V0U3Vic2NyaXB0aW9uKFxuICAgIGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXRTdWJzY3JpcHRpb25EYXRhLFxuICApOiBQcm9taXNlPENoZWNrb3V0U3Vic2NyaXB0aW9uPiB7XG4gICAgY29uc3QgY2hlY2tvdXQgPSBhd2FpdCB0aGlzLmNoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeS5jcmVhdGUoe1xuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgLi4uQ2hlY2tvdXRTdWJzY3JpcHRpb24udG9JbnN0YW5jZShwaWNrKGNoZWNrb3V0RGF0YSwgWyd1c2VyJywgJ3Nob3AnXSkpLnRvUGxhaW4oKSxcbiAgICB9KVxuXG4gICAgYXdhaXQgdGhpcy5kYXRhUGVyc2lzdGVuY2Uuc2V0KCdjaGVja291dFN1YnNjcmlwdGlvbklkJywgY2hlY2tvdXQuaWQpLnRvUHJvbWlzZSgpXG5cbiAgICByZXR1cm4gY2hlY2tvdXRcbiAgfVxufVxuIl19
@@ -0,0 +1,106 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Checkout, isNil, NotFoundError, pick, } from '@infrab4a/connect';
3
+ import { from, of, throwError } from 'rxjs';
4
+ import { concatMap, map } from 'rxjs/operators';
5
+ import { CheckoutDependenciesFacade, CheckoutRepositoriesFacade } from './checkout';
6
+ import { ConfigurationFacade } from './shared';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "./checkout";
9
+ import * as i2 from "./shared";
10
+ export class CheckoutService {
11
+ constructor(repositoriesFacade, dependenciesFacade, configurationFacade) {
12
+ this.repositoriesFacade = repositoriesFacade;
13
+ this.dependenciesFacade = dependenciesFacade;
14
+ this.configurationFacade = configurationFacade;
15
+ this.checkoutUrl = null;
16
+ this.checkoutUrl = this.configurationFacade.getCheckoutUrl();
17
+ }
18
+ getCheckout(checkoutData) {
19
+ return this.dependenciesFacade.dataPersistence
20
+ .get('checkoutId')
21
+ .pipe(concatMap((id) => !isNil(id) ? this.repositoriesFacade.checkoutRepository.get({ id }) : this.createCheckout(checkoutData)));
22
+ }
23
+ getUserByCheckout(checkoutId) {
24
+ return from(this.repositoriesFacade.checkoutRepository.get({ id: checkoutId })).pipe(concatMap((checkout) => checkout?.user?.id
25
+ ? of(checkout.user)
26
+ : from(this.repositoriesFacade.userRepository.get({ id: checkout.user.id }))), concatMap((user) => of(user) || throwError(() => new NotFoundError('User is not found'))));
27
+ }
28
+ updateCheckoutLineItems(checkout) {
29
+ return from(this.repositoriesFacade.checkoutRepository.update(Checkout.toInstance({ id: checkout.id, lineItems: checkout.lineItems })));
30
+ }
31
+ updateCheckoutUser(checkout) {
32
+ return from(this.repositoriesFacade.checkoutRepository.update(Checkout.toInstance({ id: checkout.id, user: checkout.user })));
33
+ }
34
+ clearCheckoutFromSession() {
35
+ return this.dependenciesFacade.dataPersistence.remove('checkoutId');
36
+ }
37
+ resetCheckoutValues() {
38
+ return this.getCheckout().pipe(concatMap((checkout) => this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutResetValues`, {
39
+ checkoutId: checkout.id,
40
+ })), concatMap(() => this.getCheckout()));
41
+ }
42
+ applyCouponDiscount(nickname, checkoutType) {
43
+ return this.getCheckout().pipe(concatMap((checkout) => this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutApplyDiscount`, {
44
+ checkoutId: checkout.id,
45
+ coupon: nickname,
46
+ checkoutType,
47
+ })), concatMap(() => this.getCheckout()), map((checkout) => checkout.coupon));
48
+ }
49
+ removeCouponDiscount() {
50
+ return this.getCheckout().pipe(concatMap((checkout) => this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutRemoveDiscount`, {
51
+ checkoutId: checkout.id,
52
+ })), concatMap(() => this.getCheckout()));
53
+ }
54
+ validateStockProducts() {
55
+ return this.getCheckout().pipe(concatMap((checkout) => this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutValidateProductStock`, {
56
+ checkoutId: checkout.id,
57
+ })));
58
+ }
59
+ selectShippingAddress(address) {
60
+ return this.getCheckout().pipe(concatMap((checkout) => {
61
+ return this.repositoriesFacade.checkoutRepository.update(Checkout.toInstance({ id: checkout.id, shippingAddress: address, billingAddress: address }));
62
+ }));
63
+ }
64
+ getAvailableShippingForProduct(productShipping) {
65
+ return this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutGetAvailableShipping`, {
66
+ checkoutId: null,
67
+ productShipping,
68
+ });
69
+ }
70
+ getAvailableShippingForCheckout() {
71
+ return this.getCheckout().pipe(concatMap((checkout) => this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutGetAvailableShipping`, {
72
+ checkoutId: checkout.id,
73
+ productShipping: null,
74
+ })));
75
+ }
76
+ selectShipping(option) {
77
+ return this.getCheckout().pipe(concatMap((checkout) => this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutSelectShipping`, {
78
+ checkoutId: checkout.id,
79
+ shippingOption: option,
80
+ })), concatMap(() => this.getCheckout()));
81
+ }
82
+ createOrder(checkoutPayload, paymentProvider, applicationVersion) {
83
+ return this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutV5`, {
84
+ data: {
85
+ ...checkoutPayload,
86
+ applicationVersion,
87
+ paymentProvider,
88
+ },
89
+ });
90
+ }
91
+ async createCheckout(checkoutData) {
92
+ const checkout = await this.repositoriesFacade.checkoutRepository.create({
93
+ createdAt: new Date(),
94
+ ...Checkout.toInstance(pick(checkoutData, ['user', 'shop'])).toPlain(),
95
+ shop: checkoutData?.shop || this.configurationFacade.defaultShop,
96
+ });
97
+ await this.dependenciesFacade.dataPersistence.set('checkoutId', checkout.id).toPromise();
98
+ return checkout;
99
+ }
100
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CheckoutService, deps: [{ token: i1.CheckoutRepositoriesFacade }, { token: i1.CheckoutDependenciesFacade }, { token: i2.ConfigurationFacade }], target: i0.ɵɵFactoryTarget.Injectable }); }
101
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CheckoutService }); }
102
+ }
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CheckoutService, decorators: [{
104
+ type: Injectable
105
+ }], ctorParameters: () => [{ type: i1.CheckoutRepositoriesFacade }, { type: i1.CheckoutDependenciesFacade }, { type: i2.ConfigurationFacade }] });
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2hlY2tvdXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFDTCxRQUFRLEVBTVIsS0FBSyxFQUNMLGFBQWEsRUFDYixJQUFJLEdBS0wsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUUvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFBOzs7O0FBSTlDLE1BQU0sT0FBTyxlQUFlO0lBRzFCLFlBQ21CLGtCQUE4QyxFQUM5QyxrQkFBOEMsRUFDOUMsbUJBQXdDO1FBRnhDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBNEI7UUFDOUMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUE0QjtRQUM5Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBTG5ELGdCQUFXLEdBQVcsSUFBSSxDQUFBO1FBT2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsRUFBRSxDQUFBO0lBQzlELENBQUM7SUFFRCxXQUFXLENBQUMsWUFBbUM7UUFDN0MsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZTthQUMzQyxHQUFHLENBQUMsWUFBWSxDQUFDO2FBQ2pCLElBQUksQ0FDSCxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUNmLENBQUMsS0FB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LElBQUksRUFBRTtnQkFDSixHQUFHLGVBQWU7Z0JBQ2xCLGtCQUFrQjtnQkFDbEIsZUFBZTthQUNoQjtTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTyxLQUFLLENBQUMsY0FBYyxDQUFDLFlBQW1DO1FBQzlELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztZQUN2RSxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDckIsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtZQUN0RSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVztTQUNqRSxDQUFDLENBQUE7UUFFRixNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUE7UUFFeEYsT0FBTyxRQUFRLENBQUE7SUFDakIsQ0FBQzsrR0ExS1UsZUFBZTttSEFBZixlQUFlOzs0RkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBDaGVja291dCxcbiAgQ2hlY2tvdXRQYXlsb2FkUmVxdWVzdCxcbiAgQ2hlY2tvdXRSZXNwb25zZSxcbiAgQ2hlY2tvdXRTdG9ja1ZhbGlkYXRpb24sXG4gIENoZWNrb3V0VHlwZXMsXG4gIENvdXBvbixcbiAgaXNOaWwsXG4gIE5vdEZvdW5kRXJyb3IsXG4gIHBpY2ssXG4gIFNoaXBwaW5nTWV0aG9kUmVzcG9uc2UsXG4gIFNoaXBwaW5nUHJvZHVjdFJlcXVlc3QsXG4gIFVzZXIsXG4gIFVzZXJBZGRyZXNzLFxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNvbmNhdE1hcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IENoZWNrb3V0RGVwZW5kZW5jaWVzRmFjYWRlLCBDaGVja291dFJlcG9zaXRvcmllc0ZhY2FkZSB9IGZyb20gJy4vY2hlY2tvdXQnXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uRmFjYWRlIH0gZnJvbSAnLi9zaGFyZWQnXG5pbXBvcnQgeyBSZXF1aXJlZENoZWNrb3V0RGF0YSB9IGZyb20gJy4vdHlwZXMnXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDaGVja291dFNlcnZpY2Uge1xuICBwcml2YXRlIGNoZWNrb3V0VXJsOiBzdHJpbmcgPSBudWxsXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXBvc2l0b3JpZXNGYWNhZGU6IENoZWNrb3V0UmVwb3NpdG9yaWVzRmFjYWRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVwZW5kZW5jaWVzRmFjYWRlOiBDaGVja291dERlcGVuZGVuY2llc0ZhY2FkZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb25GYWNhZGU6IENvbmZpZ3VyYXRpb25GYWNhZGUsXG4gICkge1xuICAgIHRoaXMuY2hlY2tvdXRVcmwgPSB0aGlzLmNvbmZpZ3VyYXRpb25GYWNhZGUuZ2V0Q2hlY2tvdXRVcmwoKVxuICB9XG5cbiAgZ2V0Q2hlY2tvdXQoY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dERhdGEpOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XG4gICAgcmV0dXJuIHRoaXMuZGVwZW5kZW5jaWVzRmFjYWRlLmRhdGFQZXJzaXN0ZW5jZVxuICAgICAgLmdldCgnY2hlY2tvdXRJZCcpXG4gICAgICAucGlwZShcbiAgICAgICAgY29uY2F0TWFwKChpZCkgPT5cbiAgICAgICAgICAhaXNOaWwoaWQpID8gdGhpcy5yZXBvc2l0b3JpZXNGYWNhZGUuY2hlY2tvdXRSZXBvc2l0b3J5LmdldCh7IGlkIH0pIDogdGhpcy5jcmVhdGVDaGVja291dChjaGVja291dERhdGEpLFxuICAgICAgICApLFxuICAgICAgKVxuICB9XG5cbiAgZ2V0VXNlckJ5Q2hlY2tvdXQoY2hlY2tvdXRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxVc2VyPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5yZXBvc2l0b3JpZXNGYWNhZGUuY2hlY2tvdXRSZXBvc2l0b3J5LmdldCh7IGlkOiBjaGVja291dElkIH0pKS5waXBlKFxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT5cbiAgICAgICAgY2hlY2tvdXQ/LnVzZXI/LmlkXG4gICAgICAgICAgPyBvZihjaGVja291dC51c2VyKVxuICAgICAgICAgIDogZnJvbSh0aGlzLnJlcG9zaXRvcmllc0ZhY2FkZS51c2VyUmVwb3NpdG9yeS5nZXQoeyBpZDogY2hlY2tvdXQudXNlci5pZCB9KSksXG4gICAgICApLFxuICAgICAgY29uY2F0TWFwKCh1c2VyKSA9PiBvZih1c2VyKSB8fCB0aHJvd0Vycm9yKCgpID0+IG5ldyBOb3RGb3VuZEVycm9yKCdVc2VyIGlzIG5vdCBmb3VuZCcpKSksXG4gICAgKVxuICB9XG5cbiAgdXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+KTogT2JzZXJ2YWJsZTxDaGVja291dD4ge1xuICAgIHJldHVybiBmcm9tKFxuICAgICAgdGhpcy5yZXBvc2l0b3JpZXNGYWNhZGUuY2hlY2tvdXRSZXBvc2l0b3J5LnVwZGF0ZShcbiAgICAgICAgQ2hlY2tvdXQudG9JbnN0YW5jZSh7IGlkOiBjaGVja291dC5pZCwgbGluZUl0ZW1zOiBjaGVja291dC5saW5lSXRlbXMgfSksXG4gICAgICApLFxuICAgIClcbiAgfVxuXG4gIHVwZGF0ZUNoZWNrb3V0VXNlcihjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XG4gICAgcmV0dXJuIGZyb20oXG4gICAgICB0aGlzLnJlcG9zaXRvcmllc0ZhY2FkZS5jaGVja291dFJlcG9zaXRvcnkudXBkYXRlKENoZWNrb3V0LnRvSW5zdGFuY2UoeyBpZDogY2hlY2tvdXQuaWQsIHVzZXI6IGNoZWNrb3V0LnVzZXIgfSkpLFxuICAgIClcbiAgfVxuXG4gIGNsZWFyQ2hlY2tvdXRGcm9tU2Vzc2lvbigpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5kZXBlbmRlbmNpZXNGYWNhZGUuZGF0YVBlcnNpc3RlbmNlLnJlbW92ZSgnY2hlY2tvdXRJZCcpXG4gIH1cblxuICByZXNldENoZWNrb3V0VmFsdWVzKCk6IE9ic2VydmFibGU8Q2hlY2tvdXQ+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja291dCgpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PlxuICAgICAgICB0aGlzLmRlcGVuZGVuY2llc0ZhY2FkZS5odHRwQ2xpZW50LnBvc3QoYCR7dGhpcy5jaGVja291dFVybH0vY2hlY2tvdXRSZXNldFZhbHVlc2AsIHtcbiAgICAgICAgICBjaGVja291dElkOiBjaGVja291dC5pZCxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICAgY29uY2F0TWFwKCgpID0+IHRoaXMuZ2V0Q2hlY2tvdXQoKSksXG4gICAgKVxuICB9XG5cbiAgYXBwbHlDb3Vwb25EaXNjb3VudChuaWNrbmFtZTogc3RyaW5nLCBjaGVja291dFR5cGU6IENoZWNrb3V0VHlwZXMpOiBPYnNlcnZhYmxlPENvdXBvbj4ge1xuICAgIHJldHVybiB0aGlzLmdldENoZWNrb3V0KCkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XG4gICAgICAgIHRoaXMuZGVwZW5kZW5jaWVzRmFjYWRlLmh0dHBDbGllbnQucG9zdChgJHt0aGlzLmNoZWNrb3V0VXJsfS9jaGVja291dEFwcGx5RGlzY291bnRgLCB7XG4gICAgICAgICAgY2hlY2tvdXRJZDogY2hlY2tvdXQuaWQsXG4gICAgICAgICAgY291cG9uOiBuaWNrbmFtZSxcbiAgICAgICAgICBjaGVja291dFR5cGUsXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIGNvbmNhdE1hcCgoKSA9PiB0aGlzLmdldENoZWNrb3V0KCkpLFxuICAgICAgbWFwKChjaGVja291dCkgPT4gY2hlY2tvdXQuY291cG9uKSxcbiAgICApXG4gIH1cblxuICByZW1vdmVDb3Vwb25EaXNjb3VudCgpOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hlY2tvdXQoKS5waXBlKFxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT5cbiAgICAgICAgdGhpcy5kZXBlbmRlbmNpZXNGYWNhZGUuaHR0cENsaWVudC5wb3N0KGAke3RoaXMuY2hlY2tvdXRVcmx9L2NoZWNrb3V0UmVtb3ZlRGlzY291bnRgLCB7XG4gICAgICAgICAgY2hlY2tvdXRJZDogY2hlY2tvdXQuaWQsXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIGNvbmNhdE1hcCgoKSA9PiB0aGlzLmdldENoZWNrb3V0KCkpLFxuICAgIClcbiAgfVxuXG4gIHZhbGlkYXRlU3RvY2tQcm9kdWN0cygpOiBPYnNlcnZhYmxlPENoZWNrb3V0U3RvY2tWYWxpZGF0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hlY2tvdXQoKS5waXBlKFxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT5cbiAgICAgICAgdGhpcy5kZXBlbmRlbmNpZXNGYWNhZGUuaHR0cENsaWVudC5wb3N0PHtcbiAgICAgICAgICB2YWxpZDogYm9vbGVhblxuICAgICAgICAgIG91dE9mU3RvY2s6IHN0cmluZ1tdXG4gICAgICAgICAgbGltaXRlZFN0b2NrOiBzdHJpbmdbXVxuICAgICAgICB9PihgJHt0aGlzLmNoZWNrb3V0VXJsfS9jaGVja291dFZhbGlkYXRlUHJvZHVjdFN0b2NrYCwge1xuICAgICAgICAgIGNoZWNrb3V0SWQ6IGNoZWNrb3V0LmlkLFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgKVxuICB9XG5cbiAgc2VsZWN0U2hpcHBpbmdBZGRyZXNzKGFkZHJlc3M6IFVzZXJBZGRyZXNzKTogT2JzZXJ2YWJsZTxDaGVja291dD4ge1xuICAgIHJldHVybiB0aGlzLmdldENoZWNrb3V0KCkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVwb3NpdG9yaWVzRmFjYWRlLmNoZWNrb3V0UmVwb3NpdG9yeS51cGRhdGUoXG4gICAgICAgICAgQ2hlY2tvdXQudG9JbnN0YW5jZSh7IGlkOiBjaGVja291dC5pZCwgc2hpcHBpbmdBZGRyZXNzOiBhZGRyZXNzLCBiaWxsaW5nQWRkcmVzczogYWRkcmVzcyB9KSxcbiAgICAgICAgKVxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgZ2V0QXZhaWxhYmxlU2hpcHBpbmdGb3JQcm9kdWN0KHByb2R1Y3RTaGlwcGluZzogU2hpcHBpbmdQcm9kdWN0UmVxdWVzdCk6IE9ic2VydmFibGU8U2hpcHBpbmdNZXRob2RSZXNwb25zZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZGVwZW5kZW5jaWVzRmFjYWRlLmh0dHBDbGllbnQucG9zdDxTaGlwcGluZ01ldGhvZFJlc3BvbnNlW10+KFxuICAgICAgYCR7dGhpcy5jaGVja291dFVybH0vY2hlY2tvdXRHZXRBdmFpbGFibGVTaGlwcGluZ2AsXG4gICAgICB7XG4gICAgICAgIGNoZWNrb3V0SWQ6IG51bGwsXG4gICAgICAgIHByb2R1Y3RTaGlwcGluZyxcbiAgICAgIH0sXG4gICAgKVxuICB9XG5cbiAgZ2V0QXZhaWxhYmxlU2hpcHBpbmdGb3JDaGVja291dCgpOiBPYnNlcnZhYmxlPFNoaXBwaW5nTWV0aG9kUmVzcG9uc2VbXT4ge1xuICAgIHJldHVybiB0aGlzLmdldENoZWNrb3V0KCkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XG4gICAgICAgIHRoaXMuZGVwZW5kZW5jaWVzRmFjYWRlLmh0dHBDbGllbnQucG9zdDxTaGlwcGluZ01ldGhvZFJlc3BvbnNlW10+KFxuICAgICAgICAgIGAke3RoaXMuY2hlY2tvdXRVcmx9L2NoZWNrb3V0R2V0QXZhaWxhYmxlU2hpcHBpbmdgLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNoZWNrb3V0SWQ6IGNoZWNrb3V0LmlkLFxuICAgICAgICAgICAgcHJvZHVjdFNoaXBwaW5nOiBudWxsLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICApLFxuICAgIClcbiAgfVxuXG4gIHNlbGVjdFNoaXBwaW5nKG9wdGlvbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxDaGVja291dD4ge1xuICAgIHJldHVybiB0aGlzLmdldENoZWNrb3V0KCkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XG4gICAgICAgIHRoaXMuZGVwZW5kZW5jaWVzRmFjYWRlLmh0dHBDbGllbnQucG9zdChgJHt0aGlzLmNoZWNrb3V0VXJsfS9jaGVja291dFNlbGVjdFNoaXBwaW5nYCwge1xuICAgICAgICAgIGNoZWNrb3V0SWQ6IGNoZWNrb3V0LmlkLFxuICAgICAgICAgIHNoaXBwaW5nT3B0aW9uOiBvcHRpb24sXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIGNvbmNhdE1hcCgoKSA9PiB0aGlzLmdldENoZWNrb3V0KCkpLFxuICAgIClcbiAgfVxuXG4gIGNyZWF0ZU9yZGVyKFxuICAgIGNoZWNrb3V0UGF5bG9hZDogQ2hlY2tvdXRQYXlsb2FkUmVxdWVzdCxcbiAgICBwYXltZW50UHJvdmlkZXI6IHN0cmluZyxcbiAgICBhcHBsaWNhdGlvblZlcnNpb246IHN0cmluZyxcbiAgKTogT2JzZXJ2YWJsZTxDaGVja291dFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuZGVwZW5kZW5jaWVzRmFjYWRlLmh0dHBDbGllbnQucG9zdDxDaGVja291dFJlc3BvbnNlPihgJHt0aGlzLmNoZWNrb3V0VXJsfS9jaGVja291dFY1YCwge1xuICAgICAgZGF0YToge1xuICAgICAgICAuLi5jaGVja291dFBheWxvYWQsXG4gICAgICAgIGFwcGxpY2F0aW9uVmVyc2lvbixcbiAgICAgICAgcGF5bWVudFByb3ZpZGVyLFxuICAgICAgfSxcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVDaGVja291dChjaGVja291dERhdGE/OiBSZXF1aXJlZENoZWNrb3V0RGF0YSk6IFByb21pc2U8Q2hlY2tvdXQ+IHtcbiAgICBjb25zdCBjaGVja291dCA9IGF3YWl0IHRoaXMucmVwb3NpdG9yaWVzRmFjYWRlLmNoZWNrb3V0UmVwb3NpdG9yeS5jcmVhdGUoe1xuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgLi4uQ2hlY2tvdXQudG9JbnN0YW5jZShwaWNrKGNoZWNrb3V0RGF0YSwgWyd1c2VyJywgJ3Nob3AnXSkpLnRvUGxhaW4oKSxcbiAgICAgIHNob3A6IGNoZWNrb3V0RGF0YT8uc2hvcCB8fCB0aGlzLmNvbmZpZ3VyYXRpb25GYWNhZGUuZGVmYXVsdFNob3AsXG4gICAgfSlcblxuICAgIGF3YWl0IHRoaXMuZGVwZW5kZW5jaWVzRmFjYWRlLmRhdGFQZXJzaXN0ZW5jZS5zZXQoJ2NoZWNrb3V0SWQnLCBjaGVja291dC5pZCkudG9Qcm9taXNlKClcblxuICAgIHJldHVybiBjaGVja291dFxuICB9XG59XG4iXX0=
@@ -0,0 +1,24 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class CouponRepositoriesFacade {
4
+ constructor(couponRepository, orderRepository, categoryRepository) {
5
+ this.couponRepository = couponRepository;
6
+ this.orderRepository = orderRepository;
7
+ this.categoryRepository = categoryRepository;
8
+ }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CouponRepositoriesFacade, deps: [{ token: 'CouponRepository' }, { token: 'OrderRepository' }, { token: 'CategoryRepository' }], target: i0.ɵɵFactoryTarget.Injectable }); }
10
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CouponRepositoriesFacade }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CouponRepositoriesFacade, decorators: [{
13
+ type: Injectable
14
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
15
+ type: Inject,
16
+ args: ['CouponRepository']
17
+ }] }, { type: undefined, decorators: [{
18
+ type: Inject,
19
+ args: ['OrderRepository']
20
+ }] }, { type: undefined, decorators: [{
21
+ type: Inject,
22
+ args: ['CategoryRepository']
23
+ }] }] });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLXJlcG9zaXRvcmllcy5mYWNhZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvdXBvbi9jb3Vwb24tcmVwb3NpdG9yaWVzLmZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTs7QUFJbEQsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUM4QyxnQkFBa0MsRUFDbkMsZUFBZ0MsRUFDN0Isa0JBQXNDO1FBRnhDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbkMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzdCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7SUFDbkYsQ0FBQzsrR0FMTyx3QkFBd0Isa0JBRXpCLGtCQUFrQixhQUNsQixpQkFBaUIsYUFDakIsb0JBQW9CO21IQUpuQix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVU7OzBCQUdOLE1BQU07MkJBQUMsa0JBQWtCOzswQkFDekIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDYXRlZ29yeVJlcG9zaXRvcnksIENvdXBvblJlcG9zaXRvcnksIE9yZGVyUmVwb3NpdG9yeSB9IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ291cG9uUmVwb3NpdG9yaWVzRmFjYWRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgnQ291cG9uUmVwb3NpdG9yeScpIHB1YmxpYyByZWFkb25seSBjb3Vwb25SZXBvc2l0b3J5OiBDb3Vwb25SZXBvc2l0b3J5LFxuICAgIEBJbmplY3QoJ09yZGVyUmVwb3NpdG9yeScpIHB1YmxpYyByZWFkb25seSBvcmRlclJlcG9zaXRvcnk6IE9yZGVyUmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KCdDYXRlZ29yeVJlcG9zaXRvcnknKSBwdWJsaWMgcmVhZG9ubHkgY2F0ZWdvcnlSZXBvc2l0b3J5OiBDYXRlZ29yeVJlcG9zaXRvcnksXG4gICkge31cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export { CouponRepositoriesFacade } from './coupon-repositories.facade';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvdXBvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IENvdXBvblJlcG9zaXRvcmllc0ZhY2FkZSB9IGZyb20gJy4vY291cG9uLXJlcG9zaXRvcmllcy5mYWNhZGUnXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLXBhcmFtcy50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jb3Vwb24vdHlwZXMvY291cG9uLXBhcmFtcy50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGVja291dCwgQ2hlY2tvdXRUeXBlcywgQ291cG9uIH0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5cbmV4cG9ydCB0eXBlIENoZWNrQ291cG9uUGFyYW1zID0ge1xuICBuaWNrbmFtZTogc3RyaW5nXG4gIGNoZWNrb3V0VHlwZTogQ2hlY2tvdXRUeXBlc1xuICBjaGVja291dDogUGFydGlhbDxDaGVja291dD5cbiAgcGxhbjogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIENvdXBvblJ1bGVzVmFsaWRhdGlvblBhcmFtcyA9IHtcbiAgY291cG9uOiBDb3Vwb25cbiAgY2hlY2tvdXRUeXBlOiBDaGVja291dFR5cGVzXG4gIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0PlxuICBwbGFuOiBzdHJpbmdcbn1cbiJdfQ==
@@ -0,0 +1,248 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { CheckoutTypes, CouponTypes, Exclusivities, OrderStatus, Shops, Where, } from '@infrab4a/connect';
3
+ import { from, of } from 'rxjs';
4
+ import { concatMap, map } from 'rxjs/operators';
5
+ import { CouponRepositoriesFacade } from './coupon';
6
+ import { ConfigurationFacade } from './shared';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "./coupon";
9
+ import * as i2 from "./shared";
10
+ export class CouponService {
11
+ constructor(repositoriesFacade, configurationFacade) {
12
+ this.repositoriesFacade = repositoriesFacade;
13
+ this.configurationFacade = configurationFacade;
14
+ this.emailIsFromCollaborator = (userEmail) => !!userEmail?.match(/@b4a.com.br/g);
15
+ }
16
+ checkCoupon(params) {
17
+ const { nickname, checkoutType, checkout, plan } = params;
18
+ return from(this.repositoriesFacade.couponRepository
19
+ .find({
20
+ filters: {
21
+ nickname: { operator: Where.EQUALS, value: nickname },
22
+ active: { operator: Where.EQUALS, value: true },
23
+ },
24
+ })
25
+ .then((result) => result.data[0])).pipe(concatMap((coupon) => this.couponValidation(coupon, checkoutType)), concatMap((couponValid) => this.couponRulesValidation({ coupon: couponValid, checkoutType, checkout, plan })), map((couponValidated) => couponValidated));
26
+ }
27
+ async couponValidation(coupon, checkoutType) {
28
+ if (!coupon)
29
+ throw 'Cupom inválido.';
30
+ if (coupon?.beginAt && coupon?.beginAt.getTime() > new Date().getTime())
31
+ throw 'Cupom inválido.';
32
+ if (coupon?.expiresIn && (coupon?.expiresIn).getTime() < new Date().getTime())
33
+ throw 'Cupom expirado.';
34
+ const isInShop = coupon.shopAvailability === Shops.ALL || coupon.shopAvailability === this.configurationFacade.defaultShop;
35
+ if (!isInShop)
36
+ throw 'Cupom inválido para loja.';
37
+ const isCheckoutType = coupon.checkoutType === CheckoutTypes.ALL || coupon.checkoutType === checkoutType;
38
+ if (!isCheckoutType)
39
+ throw 'Cupom inválido. Erro de checkout.';
40
+ return coupon;
41
+ }
42
+ async couponRulesValidation(params) {
43
+ const { coupon, checkoutType, checkout, plan } = params;
44
+ if (checkoutType == CheckoutTypes.SUBSCRIPTION) {
45
+ return this.validateSubscriptionCoupon(coupon, plan);
46
+ }
47
+ return this.validateEcommerceCoupon(coupon, checkoutType, checkout);
48
+ }
49
+ validateSubscriptionCoupon(coupon, plan) {
50
+ if (coupon.plan && coupon.plan.toUpperCase() !== plan.toUpperCase()) {
51
+ throw 'Cupom inválido para sua assinatura.';
52
+ }
53
+ return coupon;
54
+ }
55
+ async validateEcommerceCoupon(coupon, checkoutType, checkout) {
56
+ this.validateUserEligibility(coupon, checkout?.user);
57
+ await this.validateUsageLimits(coupon, checkoutType, checkout);
58
+ await this.validateProductEligibility(coupon, checkout);
59
+ return coupon;
60
+ }
61
+ validateUserEligibility(coupon, user) {
62
+ const validUser = this.coupomUserValidation(coupon, user);
63
+ if (!validUser)
64
+ throw 'Usuário não elegível.';
65
+ }
66
+ async validateUsageLimits(coupon, checkoutType, checkout) {
67
+ const couponUseLimits = this.getCouponUseLimits(coupon, checkoutType, checkout.user);
68
+ if (couponUseLimits.firstOrder) {
69
+ await this.validateFirstOrderLimit(checkout.user.email);
70
+ }
71
+ if (!couponUseLimits.unlimited || couponUseLimits.limitedPerUser) {
72
+ await this.validateCouponUsageLimits(coupon, couponUseLimits, checkout.user.email);
73
+ }
74
+ }
75
+ async validateFirstOrderLimit(userEmail) {
76
+ const ordersUser = await this.getOrdersFromUser(userEmail.toLocaleLowerCase());
77
+ if (ordersUser.length >= 1)
78
+ throw 'Limite de uso atingido';
79
+ }
80
+ async validateCouponUsageLimits(coupon, couponUseLimits, userEmail) {
81
+ const ordersCoupon = await this.getOrdersWithCoupon(coupon);
82
+ if (!couponUseLimits.unlimited && couponUseLimits.total && ordersCoupon.length >= couponUseLimits.total) {
83
+ throw 'Limite de uso atingido.';
84
+ }
85
+ if (couponUseLimits.limitedPerUser) {
86
+ const ordersWithUser = this.countOrdersWithUser(ordersCoupon, userEmail);
87
+ if (ordersWithUser > 0)
88
+ throw 'Limite de uso por usuário atingido.';
89
+ }
90
+ }
91
+ async validateProductEligibility(coupon, checkout) {
92
+ const hasProductCategories = await this.hasProductCategories(coupon, checkout);
93
+ if (!hasProductCategories)
94
+ throw 'Seu carrinho não possui produtos elegíveis para desconto.';
95
+ const hasMinSubTotal = await this.hasMinSubTotal(coupon, checkout);
96
+ if (!hasMinSubTotal) {
97
+ this.throwMinSubTotalError(coupon);
98
+ }
99
+ }
100
+ throwMinSubTotalError(coupon) {
101
+ const formattedValue = Intl.NumberFormat('pt-BR', {
102
+ style: 'currency',
103
+ currency: 'BRL',
104
+ }).format(coupon.minSubTotalValue);
105
+ if (coupon.productsCategories?.length) {
106
+ throw `Valor mínimo de ${formattedValue} não atingido na(s) categoria(s) elegíveis para o desconto.`;
107
+ }
108
+ throw `Valor mínimo de ${formattedValue} não atingido.`;
109
+ }
110
+ calcDiscountSubscription(coupon, checkout) {
111
+ let discount = 0;
112
+ if (coupon.discount.subscription.type == CouponTypes.ABSOLUTE)
113
+ discount = coupon.discount.subscription.value;
114
+ else
115
+ discount = checkout.subscriptionPlan.recurrencePrice * (coupon.discount.subscription.value / 100);
116
+ return of(discount);
117
+ }
118
+ async hasMinSubTotal(coupon, checkout) {
119
+ if (!coupon.minSubTotalValue)
120
+ return true;
121
+ const lineItensDiscount = await this.getLineItensEligebleForDiscount(coupon.productsCategories, checkout);
122
+ const subTotal = this.calcCheckoutSubtotal(lineItensDiscount, checkout.user);
123
+ if (coupon.minSubTotalValue <= subTotal)
124
+ return true;
125
+ return false;
126
+ }
127
+ async hasProductCategories(coupon, checkout) {
128
+ if (!coupon.productsCategories?.length) {
129
+ return true;
130
+ }
131
+ const couponCategories = await this.getCouponCategoriesId(coupon.productsCategories);
132
+ const hasCategories = checkout.lineItems?.filter((item) => {
133
+ if (item.isGift)
134
+ return false;
135
+ if (!item.categories?.length)
136
+ return true;
137
+ return item.categories.some((c) => couponCategories.some((cat) => cat == c));
138
+ });
139
+ return hasCategories?.length ? true : false;
140
+ }
141
+ coupomUserValidation(coupon, user) {
142
+ if (!user || coupon.exclusivityType.includes(Exclusivities.ALL_USERS))
143
+ return true;
144
+ const userTypes = [];
145
+ if (coupon.exclusivityType.includes(Exclusivities.COLLABORATORS) &&
146
+ this.emailIsFromCollaborator(user.email.toLocaleLowerCase()))
147
+ userTypes.push(Exclusivities.COLLABORATORS);
148
+ if (coupon.exclusivityType.includes(Exclusivities.SPECIFIC_USER) &&
149
+ coupon.userExclusiveEmail.includes(user.email.toLocaleLowerCase()))
150
+ userTypes.push(Exclusivities.SPECIFIC_USER);
151
+ if (coupon.exclusivityType.includes(Exclusivities.ACTIVE_SUBSCRIBER) &&
152
+ user.isSubscriber &&
153
+ user.subscriptionPlan != '')
154
+ userTypes.push(Exclusivities.ACTIVE_SUBSCRIBER);
155
+ if (user.isSubscriber &&
156
+ user.subscriptionPlan == '' &&
157
+ coupon.exclusivityType.includes(Exclusivities.INACTIVE_SUBSCRIBER))
158
+ userTypes.push(Exclusivities.INACTIVE_SUBSCRIBER);
159
+ if (coupon.exclusivityType.includes(Exclusivities.NON_SUBSCRIBER) && !user.isSubscriber)
160
+ userTypes.push(Exclusivities.NON_SUBSCRIBER);
161
+ return coupon.exclusivityType.some((r) => userTypes.includes(r));
162
+ }
163
+ async getCouponCategoriesId(productsCategories) {
164
+ const couponCategories = [];
165
+ for (let index = 0; index < productsCategories.length; index++) {
166
+ const category = await this.repositoriesFacade.categoryRepository.get({
167
+ id: productsCategories[index],
168
+ });
169
+ if (category) {
170
+ const children = await this.repositoriesFacade.categoryRepository.getChildren(parseInt(productsCategories[index]));
171
+ couponCategories.push(category.id, ...children.map((c) => c.id.toString()));
172
+ }
173
+ }
174
+ return [...new Set(couponCategories)];
175
+ }
176
+ async getLineItensEligebleForDiscount(productsCategories, checkout) {
177
+ let lineItensDiscount = [];
178
+ const couponCategories = await this.getCouponCategoriesId(productsCategories);
179
+ if (productsCategories?.length) {
180
+ lineItensDiscount = checkout.lineItems?.filter((item) => {
181
+ if (item.isGift)
182
+ return false;
183
+ if (item.categories?.length) {
184
+ return item.categories.some((c) => couponCategories.some((cat) => cat == c));
185
+ }
186
+ return true;
187
+ });
188
+ }
189
+ else {
190
+ lineItensDiscount = checkout.lineItems.filter((item) => !item.isGift);
191
+ }
192
+ return lineItensDiscount;
193
+ }
194
+ calcCheckoutSubtotal(lineItens, user) {
195
+ return (lineItens
196
+ ?.filter((item) => !item.isGift)
197
+ .reduce((acc, curr) => user?.isSubscriber && curr.price?.subscriberPrice
198
+ ? acc + curr.price?.subscriberPrice * curr.quantity
199
+ : acc + curr.pricePaid * curr.quantity, 0) || 0);
200
+ }
201
+ async getOrdersWithCoupon(coupon) {
202
+ return await this.repositoriesFacade.orderRepository
203
+ .find({
204
+ filters: {
205
+ coupon: { id: coupon.id },
206
+ status: { operator: Where.NOTEQUALS, value: OrderStatus.CANCELADO },
207
+ },
208
+ })
209
+ .then((result) => result.data);
210
+ }
211
+ async getOrdersFromUser(email) {
212
+ return await this.repositoriesFacade.orderRepository
213
+ .find({
214
+ filters: {
215
+ user: { email: { operator: Where.EQUALS, value: email } },
216
+ status: { operator: Where.NOTEQUALS, value: OrderStatus.CANCELADO },
217
+ },
218
+ })
219
+ .then((result) => result.data);
220
+ }
221
+ countOrdersWithUser(orders, email) {
222
+ return orders.filter((o) => o.user.email == email).length;
223
+ }
224
+ getCouponUseLimits(coupon, checkoutType, user) {
225
+ let couponUseLimits;
226
+ if (checkoutType == CheckoutTypes.ECOMMERCE || checkoutType == CheckoutTypes.ALL) {
227
+ if (coupon.exclusivityType.length === 1 &&
228
+ (coupon.exclusivityType.at(0) === Exclusivities.SPECIFIC_USER ||
229
+ coupon.exclusivityType.at(0) === Exclusivities.COLLABORATORS))
230
+ couponUseLimits = coupon.useLimits.non_subscriber;
231
+ else
232
+ couponUseLimits = user?.isSubscriber ? coupon.useLimits.subscriber : coupon.useLimits.non_subscriber;
233
+ }
234
+ else {
235
+ couponUseLimits = coupon.useLimits.subscription;
236
+ }
237
+ return couponUseLimits;
238
+ }
239
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CouponService, deps: [{ token: i1.CouponRepositoriesFacade }, { token: i2.ConfigurationFacade }], target: i0.ɵɵFactoryTarget.Injectable }); }
240
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CouponService, providedIn: 'root' }); }
241
+ }
242
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CouponService, decorators: [{
243
+ type: Injectable,
244
+ args: [{
245
+ providedIn: 'root',
246
+ }]
247
+ }], ctorParameters: () => [{ type: i1.CouponRepositoriesFacade }, { type: i2.ConfigurationFacade }] });
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvdXBvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUlMLGFBQWEsRUFFYixXQUFXLEVBQ1gsYUFBYSxFQUdiLFdBQVcsRUFDWCxLQUFLLEVBRUwsS0FBSyxHQUNOLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUUvQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFBOzs7O0FBSzlDLE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQ21CLGtCQUE0QyxFQUM1QyxtQkFBd0M7UUFEeEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUEwQjtRQUM1Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBME9uRCw0QkFBdUIsR0FBRyxDQUFDLFNBQWlCLEVBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBek9qRyxDQUFDO0lBRUosV0FBVyxDQUFDLE1BQXlCO1FBQ25DLE1BQU0sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUE7UUFFekQsT0FBTyxJQUFJLENBQ1QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQjthQUNyQyxJQUFJLENBQUM7WUFDSixPQUFPLEVBQUU7Z0JBQ1AsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtnQkFDckQsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTthQUNoRDtTQUNGLENBQUM7YUFDRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDcEMsQ0FBQyxJQUFJLENBQ0osU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQ2xFLFNBQVMsQ0FBQyxDQUFDLFdBQW1CLEVBQUUsRUFBRSxDQUNoQyxJQUFJLENBQUMscUJBQXFCLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FDbEYsRUFDRCxHQUFHLENBQUMsQ0FBQyxlQUF1QixFQUFFLEVBQUUsQ0FBQyxlQUF5QixDQUFDLENBQzVELENBQUE7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQWMsRUFBRSxZQUEyQjtRQUN4RSxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0saUJBQWlCLENBQUE7UUFFcEMsSUFBSSxNQUFNLEVBQUUsT0FBTyxJQUFJLE1BQU0sRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUU7WUFBRSxNQUFNLGlCQUFpQixDQUFBO1FBRWhHLElBQUksTUFBTSxFQUFFLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFrQixDQUFBLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUU7WUFBRSxNQUFNLGlCQUFpQixDQUFBO1FBRTlHLE1BQU0sUUFBUSxHQUNaLE1BQU0sQ0FBQyxnQkFBZ0IsS0FBSyxLQUFLLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFBO1FBRTNHLElBQUksQ0FBQyxRQUFRO1lBQUUsTUFBTSwyQkFBMkIsQ0FBQTtRQUVoRCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsWUFBWSxLQUFLLGFBQWEsQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLFlBQVksS0FBSyxZQUFZLENBQUE7UUFFeEcsSUFBSSxDQUFDLGNBQWM7WUFBRSxNQUFNLG1DQUFtQyxDQUFBO1FBRTlELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUVPLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxNQUFtQztRQUNyRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFBO1FBRXZELElBQUksWUFBWSxJQUFJLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMvQyxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDdEQsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDckUsQ0FBQztJQUVPLDBCQUEwQixDQUFDLE1BQWMsRUFBRSxJQUFZO1FBQzdELElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3BFLE1BQU0scUNBQXFDLENBQUE7UUFDN0MsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUVPLEtBQUssQ0FBQyx1QkFBdUIsQ0FDbkMsTUFBYyxFQUNkLFlBQTJCLEVBQzNCLFFBQTJCO1FBRTNCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3BELE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDOUQsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBRXZELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUVPLHVCQUF1QixDQUFDLE1BQWMsRUFBRSxJQUFVO1FBQ3hELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFFekQsSUFBSSxDQUFDLFNBQVM7WUFBRSxNQUFNLHVCQUF1QixDQUFBO0lBQy9DLENBQUM7SUFFTyxLQUFLLENBQUMsbUJBQW1CLENBQy9CLE1BQWMsRUFDZCxZQUEyQixFQUMzQixRQUEyQjtRQUUzQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFcEYsSUFBSSxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDL0IsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN6RCxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLElBQUksZUFBZSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2pFLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNwRixDQUFDO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxTQUFpQjtRQUNyRCxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFBO1FBRTlFLElBQUksVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQUUsTUFBTSx3QkFBd0IsQ0FBQTtJQUM1RCxDQUFDO0lBRU8sS0FBSyxDQUFDLHlCQUF5QixDQUFDLE1BQWMsRUFBRSxlQUFvQixFQUFFLFNBQWlCO1FBQzdGLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRTNELElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxJQUFJLGVBQWUsQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDLE1BQU0sSUFBSSxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEcsTUFBTSx5QkFBeUIsQ0FBQTtRQUNqQyxDQUFDO1FBRUQsSUFBSSxlQUFlLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbkMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQTtZQUV4RSxJQUFJLGNBQWMsR0FBRyxDQUFDO2dCQUFFLE1BQU0scUNBQXFDLENBQUE7UUFDckUsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsMEJBQTBCLENBQUMsTUFBYyxFQUFFLFFBQTJCO1FBQ2xGLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBRTlFLElBQUksQ0FBQyxvQkFBb0I7WUFBRSxNQUFNLDJEQUEyRCxDQUFBO1FBRTVGLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFFbEUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNwQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQixDQUFDLE1BQWM7UUFDMUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUU7WUFDaEQsS0FBSyxFQUFFLFVBQVU7WUFDakIsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUVsQyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN0QyxNQUFNLG1CQUFtQixjQUFjLDZEQUE2RCxDQUFBO1FBQ3RHLENBQUM7UUFFRCxNQUFNLG1CQUFtQixjQUFjLGdCQUFnQixDQUFBO0lBQ3pELENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxNQUFjLEVBQUUsUUFBdUM7UUFDckYsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFBO1FBRWhCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLFdBQVcsQ0FBQyxRQUFRO1lBQUUsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQTs7WUFDdkcsUUFBUSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUE7UUFFdEcsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDckIsQ0FBQztJQUVPLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBYyxFQUFFLFFBQTJCO1FBQ3RFLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCO1lBQUUsT0FBTyxJQUFJLENBQUE7UUFFekMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDekcsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUU1RSxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUE7UUFFcEQsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRU8sS0FBSyxDQUFDLG9CQUFvQixDQUFDLE1BQWMsRUFBRSxRQUEyQjtRQUM1RSxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDcEYsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN4RCxJQUFJLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU8sS0FBSyxDQUFBO1lBRTdCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU07Z0JBQUUsT0FBTyxJQUFJLENBQUE7WUFFekMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM5RSxDQUFDLENBQUMsQ0FBQTtRQUVGLE9BQU8sYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7SUFDN0MsQ0FBQztJQUVPLG9CQUFvQixDQUFDLE1BQWMsRUFBRSxJQUFVO1FBQ3JELElBQUksQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFBO1FBRWxGLE1BQU0sU0FBUyxHQUFvQixFQUFFLENBQUE7UUFFckMsSUFDRSxNQUFNLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO1lBQzVELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFFNUQsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUE7UUFFN0MsSUFDRSxNQUFNLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO1lBQzVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBRWxFLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBRTdDLElBQ0UsTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDO1lBQ2hFLElBQUksQ0FBQyxZQUFZO1lBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFO1lBRTNCLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFFakQsSUFDRSxJQUFJLENBQUMsWUFBWTtZQUNqQixJQUFJLENBQUMsZ0JBQWdCLElBQUksRUFBRTtZQUMzQixNQUFNLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUM7WUFFbEUsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtRQUVuRCxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQ3JGLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBRTlDLE9BQU8sTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNsRSxDQUFDO0lBRU8sS0FBSyxDQUFDLHFCQUFxQixDQUFDLGtCQUE0QjtRQUM5RCxNQUFNLGdCQUFnQixHQUFrQixFQUFFLENBQUE7UUFFMUMsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQy9ELE1BQU0sUUFBUSxHQUF3QyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7Z0JBQ3pHLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7YUFDOUIsQ0FBQyxDQUFBO1lBRUYsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQzNFLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNwQyxDQUFBO2dCQUVELGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDN0UsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUE7SUFDdkMsQ0FBQztJQUlPLEtBQUssQ0FBQywrQkFBK0IsQ0FDM0Msa0JBQTRCLEVBQzVCLFFBQTJCO1FBRTNCLElBQUksaUJBQWlCLEdBQUcsRUFBRSxDQUFBO1FBQzFCLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtRQUU3RSxJQUFJLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQy9CLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3RELElBQUksSUFBSSxDQUFDLE1BQU07b0JBQUUsT0FBTyxLQUFLLENBQUE7Z0JBRTdCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztvQkFDNUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDOUUsQ0FBQztnQkFFRCxPQUFPLElBQUksQ0FBQTtZQUNiLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixpQkFBaUIsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDdkUsQ0FBQztRQUVELE9BQU8saUJBQWlCLENBQUE7SUFDMUIsQ0FBQztJQUVPLG9CQUFvQixDQUFDLFNBQXFCLEVBQUUsSUFBVTtRQUM1RCxPQUFPLENBQ0wsU0FBUztZQUNQLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7YUFDL0IsTUFBTSxDQUNMLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQ1osSUFBSSxFQUFFLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLGVBQWU7WUFDL0MsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUTtZQUNuRCxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFDMUMsQ0FBQyxDQUNGLElBQUksQ0FBQyxDQUNULENBQUE7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLG1CQUFtQixDQUFDLE1BQWM7UUFDOUMsT0FBTyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlO2FBQ2pELElBQUksQ0FBQztZQUNKLE9BQU8sRUFBRTtnQkFDUCxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTtnQkFDekIsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUU7YUFDcEU7U0FDRixDQUFDO2FBQ0QsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVPLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFhO1FBQzNDLE9BQU8sTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZTthQUNqRCxJQUFJLENBQUM7WUFDSixPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUN6RCxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLFNBQVMsRUFBRTthQUNwRTtTQUNGLENBQUM7YUFDRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRU8sbUJBQW1CLENBQUMsTUFBZSxFQUFFLEtBQWE7UUFDeEQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUE7SUFDM0QsQ0FBQztJQUVPLGtCQUFrQixDQUFDLE1BQWMsRUFBRSxZQUEyQixFQUFFLElBQVU7UUFDaEYsSUFBSSxlQUF3RyxDQUFBO1FBRTVHLElBQUksWUFBWSxJQUFJLGFBQWEsQ0FBQyxTQUFTLElBQUksWUFBWSxJQUFJLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNqRixJQUNFLE1BQU0sQ0FBQyxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQ25DLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssYUFBYSxDQUFDLGFBQWE7b0JBQzNELE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLGFBQWEsQ0FBQyxhQUFhLENBQUM7Z0JBRS9ELGVBQWUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQTs7Z0JBQzlDLGVBQWUsR0FBRyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUE7UUFDM0csQ0FBQzthQUFNLENBQUM7WUFDTixlQUFlLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUE7UUFDakQsQ0FBQztRQUVELE9BQU8sZUFBZSxDQUFBO0lBQ3hCLENBQUM7K0dBL1RVLGFBQWE7bUhBQWIsYUFBYSxjQUZaLE1BQU07OzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBDYXRlZ29yeSxcbiAgQ2hlY2tvdXQsXG4gIENoZWNrb3V0U3Vic2NyaXB0aW9uLFxuICBDaGVja291dFR5cGVzLFxuICBDb3Vwb24sXG4gIENvdXBvblR5cGVzLFxuICBFeGNsdXNpdml0aWVzLFxuICBMaW5lSXRlbSxcbiAgT3JkZXIsXG4gIE9yZGVyU3RhdHVzLFxuICBTaG9wcyxcbiAgVXNlcixcbiAgV2hlcmUsXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgY29uY2F0TWFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgQ291cG9uUmVwb3NpdG9yaWVzRmFjYWRlIH0gZnJvbSAnLi9jb3Vwb24nXG5pbXBvcnQgeyBDaGVja0NvdXBvblBhcmFtcywgQ291cG9uUnVsZXNWYWxpZGF0aW9uUGFyYW1zIH0gZnJvbSAnLi9jb3Vwb24vdHlwZXMvY291cG9uLXBhcmFtcy50eXBlJ1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbkZhY2FkZSB9IGZyb20gJy4vc2hhcmVkJ1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ291cG9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVwb3NpdG9yaWVzRmFjYWRlOiBDb3Vwb25SZXBvc2l0b3JpZXNGYWNhZGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWd1cmF0aW9uRmFjYWRlOiBDb25maWd1cmF0aW9uRmFjYWRlLFxuICApIHt9XG5cbiAgY2hlY2tDb3Vwb24ocGFyYW1zOiBDaGVja0NvdXBvblBhcmFtcyk6IE9ic2VydmFibGU8Q291cG9uPiB7XG4gICAgY29uc3QgeyBuaWNrbmFtZSwgY2hlY2tvdXRUeXBlLCBjaGVja291dCwgcGxhbiB9ID0gcGFyYW1zXG5cbiAgICByZXR1cm4gZnJvbShcbiAgICAgIHRoaXMucmVwb3NpdG9yaWVzRmFjYWRlLmNvdXBvblJlcG9zaXRvcnlcbiAgICAgICAgLmZpbmQoe1xuICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgIG5pY2tuYW1lOiB7IG9wZXJhdG9yOiBXaGVyZS5FUVVBTFMsIHZhbHVlOiBuaWNrbmFtZSB9LFxuICAgICAgICAgICAgYWN0aXZlOiB7IG9wZXJhdG9yOiBXaGVyZS5FUVVBTFMsIHZhbHVlOiB0cnVlIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKHJlc3VsdCkgPT4gcmVzdWx0LmRhdGFbMF0pLFxuICAgICkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoY291cG9uKSA9PiB0aGlzLmNvdXBvblZhbGlkYXRpb24oY291cG9uLCBjaGVja291dFR5cGUpKSxcbiAgICAgIGNvbmNhdE1hcCgoY291cG9uVmFsaWQ6IENvdXBvbikgPT5cbiAgICAgICAgdGhpcy5jb3Vwb25SdWxlc1ZhbGlkYXRpb24oeyBjb3Vwb246IGNvdXBvblZhbGlkLCBjaGVja291dFR5cGUsIGNoZWNrb3V0LCBwbGFuIH0pLFxuICAgICAgKSxcbiAgICAgIG1hcCgoY291cG9uVmFsaWRhdGVkOiBDb3Vwb24pID0+IGNvdXBvblZhbGlkYXRlZCBhcyBDb3Vwb24pLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY291cG9uVmFsaWRhdGlvbihjb3Vwb246IENvdXBvbiwgY2hlY2tvdXRUeXBlOiBDaGVja291dFR5cGVzKSB7XG4gICAgaWYgKCFjb3Vwb24pIHRocm93ICdDdXBvbSBpbnbDoWxpZG8uJ1xuXG4gICAgaWYgKGNvdXBvbj8uYmVnaW5BdCAmJiBjb3Vwb24/LmJlZ2luQXQuZ2V0VGltZSgpID4gbmV3IERhdGUoKS5nZXRUaW1lKCkpIHRocm93ICdDdXBvbSBpbnbDoWxpZG8uJ1xuXG4gICAgaWYgKGNvdXBvbj8uZXhwaXJlc0luICYmIChjb3Vwb24/LmV4cGlyZXNJbiBhcyBEYXRlKS5nZXRUaW1lKCkgPCBuZXcgRGF0ZSgpLmdldFRpbWUoKSkgdGhyb3cgJ0N1cG9tIGV4cGlyYWRvLidcblxuICAgIGNvbnN0IGlzSW5TaG9wID1cbiAgICAgIGNvdXBvbi5zaG9wQXZhaWxhYmlsaXR5ID09PSBTaG9wcy5BTEwgfHwgY291cG9uLnNob3BBdmFpbGFiaWxpdHkgPT09IHRoaXMuY29uZmlndXJhdGlvbkZhY2FkZS5kZWZhdWx0U2hvcFxuXG4gICAgaWYgKCFpc0luU2hvcCkgdGhyb3cgJ0N1cG9tIGludsOhbGlkbyBwYXJhIGxvamEuJ1xuXG4gICAgY29uc3QgaXNDaGVja291dFR5cGUgPSBjb3Vwb24uY2hlY2tvdXRUeXBlID09PSBDaGVja291dFR5cGVzLkFMTCB8fCBjb3Vwb24uY2hlY2tvdXRUeXBlID09PSBjaGVja291dFR5cGVcblxuICAgIGlmICghaXNDaGVja291dFR5cGUpIHRocm93ICdDdXBvbSBpbnbDoWxpZG8uIEVycm8gZGUgY2hlY2tvdXQuJ1xuXG4gICAgcmV0dXJuIGNvdXBvblxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb3Vwb25SdWxlc1ZhbGlkYXRpb24ocGFyYW1zOiBDb3Vwb25SdWxlc1ZhbGlkYXRpb25QYXJhbXMpIHtcbiAgICBjb25zdCB7IGNvdXBvbiwgY2hlY2tvdXRUeXBlLCBjaGVja291dCwgcGxhbiB9ID0gcGFyYW1zXG5cbiAgICBpZiAoY2hlY2tvdXRUeXBlID09IENoZWNrb3V0VHlwZXMuU1VCU0NSSVBUSU9OKSB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVN1YnNjcmlwdGlvbkNvdXBvbihjb3Vwb24sIHBsYW4pXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGVFY29tbWVyY2VDb3Vwb24oY291cG9uLCBjaGVja291dFR5cGUsIGNoZWNrb3V0KVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVN1YnNjcmlwdGlvbkNvdXBvbihjb3Vwb246IENvdXBvbiwgcGxhbjogc3RyaW5nKTogQ291cG9uIHtcbiAgICBpZiAoY291cG9uLnBsYW4gJiYgY291cG9uLnBsYW4udG9VcHBlckNhc2UoKSAhPT0gcGxhbi50b1VwcGVyQ2FzZSgpKSB7XG4gICAgICB0aHJvdyAnQ3Vwb20gaW52w6FsaWRvIHBhcmEgc3VhIGFzc2luYXR1cmEuJ1xuICAgIH1cblxuICAgIHJldHVybiBjb3Vwb25cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdmFsaWRhdGVFY29tbWVyY2VDb3Vwb24oXG4gICAgY291cG9uOiBDb3Vwb24sXG4gICAgY2hlY2tvdXRUeXBlOiBDaGVja291dFR5cGVzLFxuICAgIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0PixcbiAgKTogUHJvbWlzZTxDb3Vwb24+IHtcbiAgICB0aGlzLnZhbGlkYXRlVXNlckVsaWdpYmlsaXR5KGNvdXBvbiwgY2hlY2tvdXQ/LnVzZXIpXG4gICAgYXdhaXQgdGhpcy52YWxpZGF0ZVVzYWdlTGltaXRzKGNvdXBvbiwgY2hlY2tvdXRUeXBlLCBjaGVja291dClcbiAgICBhd2FpdCB0aGlzLnZhbGlkYXRlUHJvZHVjdEVsaWdpYmlsaXR5KGNvdXBvbiwgY2hlY2tvdXQpXG5cbiAgICByZXR1cm4gY291cG9uXG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlVXNlckVsaWdpYmlsaXR5KGNvdXBvbjogQ291cG9uLCB1c2VyOiBVc2VyKTogdm9pZCB7XG4gICAgY29uc3QgdmFsaWRVc2VyID0gdGhpcy5jb3Vwb21Vc2VyVmFsaWRhdGlvbihjb3Vwb24sIHVzZXIpXG5cbiAgICBpZiAoIXZhbGlkVXNlcikgdGhyb3cgJ1VzdcOhcmlvIG7Do28gZWxlZ8OtdmVsLidcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdmFsaWRhdGVVc2FnZUxpbWl0cyhcbiAgICBjb3Vwb246IENvdXBvbixcbiAgICBjaGVja291dFR5cGU6IENoZWNrb3V0VHlwZXMsXG4gICAgY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjb3Vwb25Vc2VMaW1pdHMgPSB0aGlzLmdldENvdXBvblVzZUxpbWl0cyhjb3Vwb24sIGNoZWNrb3V0VHlwZSwgY2hlY2tvdXQudXNlcilcblxuICAgIGlmIChjb3Vwb25Vc2VMaW1pdHMuZmlyc3RPcmRlcikge1xuICAgICAgYXdhaXQgdGhpcy52YWxpZGF0ZUZpcnN0T3JkZXJMaW1pdChjaGVja291dC51c2VyLmVtYWlsKVxuICAgIH1cblxuICAgIGlmICghY291cG9uVXNlTGltaXRzLnVubGltaXRlZCB8fCBjb3Vwb25Vc2VMaW1pdHMubGltaXRlZFBlclVzZXIpIHtcbiAgICAgIGF3YWl0IHRoaXMudmFsaWRhdGVDb3Vwb25Vc2FnZUxpbWl0cyhjb3Vwb24sIGNvdXBvblVzZUxpbWl0cywgY2hlY2tvdXQudXNlci5lbWFpbClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHZhbGlkYXRlRmlyc3RPcmRlckxpbWl0KHVzZXJFbWFpbDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb3JkZXJzVXNlciA9IGF3YWl0IHRoaXMuZ2V0T3JkZXJzRnJvbVVzZXIodXNlckVtYWlsLnRvTG9jYWxlTG93ZXJDYXNlKCkpXG5cbiAgICBpZiAob3JkZXJzVXNlci5sZW5ndGggPj0gMSkgdGhyb3cgJ0xpbWl0ZSBkZSB1c28gYXRpbmdpZG8nXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHZhbGlkYXRlQ291cG9uVXNhZ2VMaW1pdHMoY291cG9uOiBDb3Vwb24sIGNvdXBvblVzZUxpbWl0czogYW55LCB1c2VyRW1haWw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG9yZGVyc0NvdXBvbiA9IGF3YWl0IHRoaXMuZ2V0T3JkZXJzV2l0aENvdXBvbihjb3Vwb24pXG5cbiAgICBpZiAoIWNvdXBvblVzZUxpbWl0cy51bmxpbWl0ZWQgJiYgY291cG9uVXNlTGltaXRzLnRvdGFsICYmIG9yZGVyc0NvdXBvbi5sZW5ndGggPj0gY291cG9uVXNlTGltaXRzLnRvdGFsKSB7XG4gICAgICB0aHJvdyAnTGltaXRlIGRlIHVzbyBhdGluZ2lkby4nXG4gICAgfVxuXG4gICAgaWYgKGNvdXBvblVzZUxpbWl0cy5saW1pdGVkUGVyVXNlcikge1xuICAgICAgY29uc3Qgb3JkZXJzV2l0aFVzZXIgPSB0aGlzLmNvdW50T3JkZXJzV2l0aFVzZXIob3JkZXJzQ291cG9uLCB1c2VyRW1haWwpXG5cbiAgICAgIGlmIChvcmRlcnNXaXRoVXNlciA+IDApIHRocm93ICdMaW1pdGUgZGUgdXNvIHBvciB1c3XDoXJpbyBhdGluZ2lkby4nXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZVByb2R1Y3RFbGlnaWJpbGl0eShjb3Vwb246IENvdXBvbiwgY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaGFzUHJvZHVjdENhdGVnb3JpZXMgPSBhd2FpdCB0aGlzLmhhc1Byb2R1Y3RDYXRlZ29yaWVzKGNvdXBvbiwgY2hlY2tvdXQpXG5cbiAgICBpZiAoIWhhc1Byb2R1Y3RDYXRlZ29yaWVzKSB0aHJvdyAnU2V1IGNhcnJpbmhvIG7Do28gcG9zc3VpIHByb2R1dG9zIGVsZWfDrXZlaXMgcGFyYSBkZXNjb250by4nXG5cbiAgICBjb25zdCBoYXNNaW5TdWJUb3RhbCA9IGF3YWl0IHRoaXMuaGFzTWluU3ViVG90YWwoY291cG9uLCBjaGVja291dClcblxuICAgIGlmICghaGFzTWluU3ViVG90YWwpIHtcbiAgICAgIHRoaXMudGhyb3dNaW5TdWJUb3RhbEVycm9yKGNvdXBvbilcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRocm93TWluU3ViVG90YWxFcnJvcihjb3Vwb246IENvdXBvbik6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gSW50bC5OdW1iZXJGb3JtYXQoJ3B0LUJSJywge1xuICAgICAgc3R5bGU6ICdjdXJyZW5jeScsXG4gICAgICBjdXJyZW5jeTogJ0JSTCcsXG4gICAgfSkuZm9ybWF0KGNvdXBvbi5taW5TdWJUb3RhbFZhbHVlKVxuXG4gICAgaWYgKGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXM/Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgYFZhbG9yIG3DrW5pbW8gZGUgJHtmb3JtYXR0ZWRWYWx1ZX0gbsOjbyBhdGluZ2lkbyBuYShzKSBjYXRlZ29yaWEocykgZWxlZ8OtdmVpcyBwYXJhIG8gZGVzY29udG8uYFxuICAgIH1cblxuICAgIHRocm93IGBWYWxvciBtw61uaW1vIGRlICR7Zm9ybWF0dGVkVmFsdWV9IG7Do28gYXRpbmdpZG8uYFxuICB9XG5cbiAgcHVibGljIGNhbGNEaXNjb3VudFN1YnNjcmlwdGlvbihjb3Vwb246IENvdXBvbiwgY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXRTdWJzY3JpcHRpb24+KTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICBsZXQgZGlzY291bnQgPSAwXG5cbiAgICBpZiAoY291cG9uLmRpc2NvdW50LnN1YnNjcmlwdGlvbi50eXBlID09IENvdXBvblR5cGVzLkFCU09MVVRFKSBkaXNjb3VudCA9IGNvdXBvbi5kaXNjb3VudC5zdWJzY3JpcHRpb24udmFsdWVcbiAgICBlbHNlIGRpc2NvdW50ID0gY2hlY2tvdXQuc3Vic2NyaXB0aW9uUGxhbi5yZWN1cnJlbmNlUHJpY2UgKiAoY291cG9uLmRpc2NvdW50LnN1YnNjcmlwdGlvbi52YWx1ZSAvIDEwMClcblxuICAgIHJldHVybiBvZihkaXNjb3VudClcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFzTWluU3ViVG90YWwoY291cG9uOiBDb3Vwb24sIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghY291cG9uLm1pblN1YlRvdGFsVmFsdWUpIHJldHVybiB0cnVlXG5cbiAgICBjb25zdCBsaW5lSXRlbnNEaXNjb3VudCA9IGF3YWl0IHRoaXMuZ2V0TGluZUl0ZW5zRWxpZ2VibGVGb3JEaXNjb3VudChjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLCBjaGVja291dClcbiAgICBjb25zdCBzdWJUb3RhbCA9IHRoaXMuY2FsY0NoZWNrb3V0U3VidG90YWwobGluZUl0ZW5zRGlzY291bnQsIGNoZWNrb3V0LnVzZXIpXG5cbiAgICBpZiAoY291cG9uLm1pblN1YlRvdGFsVmFsdWUgPD0gc3ViVG90YWwpIHJldHVybiB0cnVlXG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFzUHJvZHVjdENhdGVnb3JpZXMoY291cG9uOiBDb3Vwb24sIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnN0IGNvdXBvbkNhdGVnb3JpZXMgPSBhd2FpdCB0aGlzLmdldENvdXBvbkNhdGVnb3JpZXNJZChjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzKVxuICAgIGNvbnN0IGhhc0NhdGVnb3JpZXMgPSBjaGVja291dC5saW5lSXRlbXM/LmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0uaXNHaWZ0KSByZXR1cm4gZmFsc2VcblxuICAgICAgaWYgKCFpdGVtLmNhdGVnb3JpZXM/Lmxlbmd0aCkgcmV0dXJuIHRydWVcblxuICAgICAgcmV0dXJuIGl0ZW0uY2F0ZWdvcmllcy5zb21lKChjKSA9PiBjb3Vwb25DYXRlZ29yaWVzLnNvbWUoKGNhdCkgPT4gY2F0ID09IGMpKVxuICAgIH0pXG5cbiAgICByZXR1cm4gaGFzQ2F0ZWdvcmllcz8ubGVuZ3RoID8gdHJ1ZSA6IGZhbHNlXG4gIH1cblxuICBwcml2YXRlIGNvdXBvbVVzZXJWYWxpZGF0aW9uKGNvdXBvbjogQ291cG9uLCB1c2VyOiBVc2VyKSB7XG4gICAgaWYgKCF1c2VyIHx8IGNvdXBvbi5leGNsdXNpdml0eVR5cGUuaW5jbHVkZXMoRXhjbHVzaXZpdGllcy5BTExfVVNFUlMpKSByZXR1cm4gdHJ1ZVxuXG4gICAgY29uc3QgdXNlclR5cGVzOiBFeGNsdXNpdml0aWVzW10gPSBbXVxuXG4gICAgaWYgKFxuICAgICAgY291cG9uLmV4Y2x1c2l2aXR5VHlwZS5pbmNsdWRlcyhFeGNsdXNpdml0aWVzLkNPTExBQk9SQVRPUlMpICYmXG4gICAgICB0aGlzLmVtYWlsSXNGcm9tQ29sbGFib3JhdG9yKHVzZXIuZW1haWwudG9Mb2NhbGVMb3dlckNhc2UoKSlcbiAgICApXG4gICAgICB1c2VyVHlwZXMucHVzaChFeGNsdXNpdml0aWVzLkNPTExBQk9SQVRPUlMpXG5cbiAgICBpZiAoXG4gICAgICBjb3Vwb24uZXhjbHVzaXZpdHlUeXBlLmluY2x1ZGVzKEV4Y2x1c2l2aXRpZXMuU1BFQ0lGSUNfVVNFUikgJiZcbiAgICAgIGNvdXBvbi51c2VyRXhjbHVzaXZlRW1haWwuaW5jbHVkZXModXNlci5lbWFpbC50b0xvY2FsZUxvd2VyQ2FzZSgpKVxuICAgIClcbiAgICAgIHVzZXJUeXBlcy5wdXNoKEV4Y2x1c2l2aXRpZXMuU1BFQ0lGSUNfVVNFUilcblxuICAgIGlmIChcbiAgICAgIGNvdXBvbi5leGNsdXNpdml0eVR5cGUuaW5jbHVkZXMoRXhjbHVzaXZpdGllcy5BQ1RJVkVfU1VCU0NSSUJFUikgJiZcbiAgICAgIHVzZXIuaXNTdWJzY3JpYmVyICYmXG4gICAgICB1c2VyLnN1YnNjcmlwdGlvblBsYW4gIT0gJydcbiAgICApXG4gICAgICB1c2VyVHlwZXMucHVzaChFeGNsdXNpdml0aWVzLkFDVElWRV9TVUJTQ1JJQkVSKVxuXG4gICAgaWYgKFxuICAgICAgdXNlci5pc1N1YnNjcmliZXIgJiZcbiAgICAgIHVzZXIuc3Vic2NyaXB0aW9uUGxhbiA9PSAnJyAmJlxuICAgICAgY291cG9uLmV4Y2x1c2l2aXR5VHlwZS5pbmNsdWRlcyhFeGNsdXNpdml0aWVzLklOQUNUSVZFX1NVQlNDUklCRVIpXG4gICAgKVxuICAgICAgdXNlclR5cGVzLnB1c2goRXhjbHVzaXZpdGllcy5JTkFDVElWRV9TVUJTQ1JJQkVSKVxuXG4gICAgaWYgKGNvdXBvbi5leGNsdXNpdml0eVR5cGUuaW5jbHVkZXMoRXhjbHVzaXZpdGllcy5OT05fU1VCU0NSSUJFUikgJiYgIXVzZXIuaXNTdWJzY3JpYmVyKVxuICAgICAgdXNlclR5cGVzLnB1c2goRXhjbHVzaXZpdGllcy5OT05fU1VCU0NSSUJFUilcblxuICAgIHJldHVybiBjb3Vwb24uZXhjbHVzaXZpdHlUeXBlLnNvbWUoKHIpID0+IHVzZXJUeXBlcy5pbmNsdWRlcyhyKSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0Q291cG9uQ2F0ZWdvcmllc0lkKHByb2R1Y3RzQ2F0ZWdvcmllczogc3RyaW5nW10pOiBQcm9taXNlPEFycmF5PFN0cmluZz4+IHtcbiAgICBjb25zdCBjb3Vwb25DYXRlZ29yaWVzOiBBcnJheTxTdHJpbmc+ID0gW11cblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBwcm9kdWN0c0NhdGVnb3JpZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBjYXRlZ29yeTogQ2F0ZWdvcnkgJiB7IGZpcmVzdG9yZUlkPzogc3RyaW5nIH0gPSBhd2FpdCB0aGlzLnJlcG9zaXRvcmllc0ZhY2FkZS5jYXRlZ29yeVJlcG9zaXRvcnkuZ2V0KHtcbiAgICAgICAgaWQ6IHByb2R1Y3RzQ2F0ZWdvcmllc1tpbmRleF0sXG4gICAgICB9KVxuXG4gICAgICBpZiAoY2F0ZWdvcnkpIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBhd2FpdCB0aGlzLnJlcG9zaXRvcmllc0ZhY2FkZS5jYXRlZ29yeVJlcG9zaXRvcnkuZ2V0Q2hpbGRyZW4oXG4gICAgICAgICAgcGFyc2VJbnQocHJvZHVjdHNDYXRlZ29yaWVzW2luZGV4XSksXG4gICAgICAgIClcblxuICAgICAgICBjb3Vwb25DYXRlZ29yaWVzLnB1c2goY2F0ZWdvcnkuaWQsIC4uLmNoaWxkcmVuLm1hcCgoYykgPT4gYy5pZC50b1N0cmluZygpKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gWy4uLm5ldyBTZXQoY291cG9uQ2F0ZWdvcmllcyldXG4gIH1cblxuICBwcml2YXRlIGVtYWlsSXNGcm9tQ29sbGFib3JhdG9yID0gKHVzZXJFbWFpbDogc3RyaW5nKTogYm9vbGVhbiA9PiAhIXVzZXJFbWFpbD8ubWF0Y2goL0BiNGEuY29tLmJyL2cpXG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRMaW5lSXRlbnNFbGlnZWJsZUZvckRpc2NvdW50KFxuICAgIHByb2R1Y3RzQ2F0ZWdvcmllczogc3RyaW5nW10sXG4gICAgY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+LFxuICApOiBQcm9taXNlPExpbmVJdGVtW10+IHtcbiAgICBsZXQgbGluZUl0ZW5zRGlzY291bnQgPSBbXVxuICAgIGNvbnN0IGNvdXBvbkNhdGVnb3JpZXMgPSBhd2FpdCB0aGlzLmdldENvdXBvbkNhdGVnb3JpZXNJZChwcm9kdWN0c0NhdGVnb3JpZXMpXG5cbiAgICBpZiAocHJvZHVjdHNDYXRlZ29yaWVzPy5sZW5ndGgpIHtcbiAgICAgIGxpbmVJdGVuc0Rpc2NvdW50ID0gY2hlY2tvdXQubGluZUl0ZW1zPy5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uaXNHaWZ0KSByZXR1cm4gZmFsc2VcblxuICAgICAgICBpZiAoaXRlbS5jYXRlZ29yaWVzPy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gaXRlbS5jYXRlZ29yaWVzLnNvbWUoKGMpID0+IGNvdXBvbkNhdGVnb3JpZXMuc29tZSgoY2F0KSA9PiBjYXQgPT0gYykpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgbGluZUl0ZW5zRGlzY291bnQgPSBjaGVja291dC5saW5lSXRlbXMuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5pc0dpZnQpXG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmVJdGVuc0Rpc2NvdW50XG4gIH1cblxuICBwcml2YXRlIGNhbGNDaGVja291dFN1YnRvdGFsKGxpbmVJdGVuczogTGluZUl0ZW1bXSwgdXNlcjogVXNlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIGxpbmVJdGVuc1xuICAgICAgICA/LmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uaXNHaWZ0KVxuICAgICAgICAucmVkdWNlKFxuICAgICAgICAgIChhY2MsIGN1cnIpID0+XG4gICAgICAgICAgICB1c2VyPy5pc1N1YnNjcmliZXIgJiYgY3Vyci5wcmljZT8uc3Vic2NyaWJlclByaWNlXG4gICAgICAgICAgICAgID8gYWNjICsgY3Vyci5wcmljZT8uc3Vic2NyaWJlclByaWNlICogY3Vyci5xdWFudGl0eVxuICAgICAgICAgICAgICA6IGFjYyArIGN1cnIucHJpY2VQYWlkICogY3Vyci5xdWFudGl0eSxcbiAgICAgICAgICAwLFxuICAgICAgICApIHx8IDBcbiAgICApXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldE9yZGVyc1dpdGhDb3Vwb24oY291cG9uOiBDb3Vwb24pOiBQcm9taXNlPE9yZGVyW10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5yZXBvc2l0b3JpZXNGYWNhZGUub3JkZXJSZXBvc2l0b3J5XG4gICAgICAuZmluZCh7XG4gICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICBjb3Vwb246IHsgaWQ6IGNvdXBvbi5pZCB9LFxuICAgICAgICAgIHN0YXR1czogeyBvcGVyYXRvcjogV2hlcmUuTk9URVFVQUxTLCB2YWx1ZTogT3JkZXJTdGF0dXMuQ0FOQ0VMQURPIH0sXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLnRoZW4oKHJlc3VsdCkgPT4gcmVzdWx0LmRhdGEpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldE9yZGVyc0Zyb21Vc2VyKGVtYWlsOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5yZXBvc2l0b3JpZXNGYWNhZGUub3JkZXJSZXBvc2l0b3J5XG4gICAgICAuZmluZCh7XG4gICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICB1c2VyOiB7IGVtYWlsOiB7IG9wZXJhdG9yOiBXaGVyZS5FUVVBTFMsIHZhbHVlOiBlbWFpbCB9IH0sXG4gICAgICAgICAgc3RhdHVzOiB7IG9wZXJhdG9yOiBXaGVyZS5OT1RFUVVBTFMsIHZhbHVlOiBPcmRlclN0YXR1cy5DQU5DRUxBRE8gfSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAudGhlbigocmVzdWx0KSA9PiByZXN1bHQuZGF0YSlcbiAgfVxuXG4gIHByaXZhdGUgY291bnRPcmRlcnNXaXRoVXNlcihvcmRlcnM6IE9yZGVyW10sIGVtYWlsOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiBvcmRlcnMuZmlsdGVyKChvKSA9PiBvLnVzZXIuZW1haWwgPT0gZW1haWwpLmxlbmd0aFxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb3Vwb25Vc2VMaW1pdHMoY291cG9uOiBDb3Vwb24sIGNoZWNrb3V0VHlwZTogQ2hlY2tvdXRUeXBlcywgdXNlcjogVXNlcikge1xuICAgIGxldCBjb3Vwb25Vc2VMaW1pdHM6IHsgdW5saW1pdGVkPzogYm9vbGVhbjsgdG90YWw/OiBudW1iZXI7IGxpbWl0ZWRQZXJVc2VyPzogYm9vbGVhbjsgZmlyc3RPcmRlcj86IGJvb2xlYW4gfVxuXG4gICAgaWYgKGNoZWNrb3V0VHlwZSA9PSBDaGVja291dFR5cGVzLkVDT01NRVJDRSB8fCBjaGVja291dFR5cGUgPT0gQ2hlY2tvdXRUeXBlcy5BTEwpIHtcbiAgICAgIGlmIChcbiAgICAgICAgY291cG9uLmV4Y2x1c2l2aXR5VHlwZS5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgKGNvdXBvbi5leGNsdXNpdml0eVR5cGUuYXQoMCkgPT09IEV4Y2x1c2l2aXRpZXMuU1BFQ0lGSUNfVVNFUiB8fFxuICAgICAgICAgIGNvdXBvbi5leGNsdXNpdml0eVR5cGUuYXQoMCkgPT09IEV4Y2x1c2l2aXRpZXMuQ09MTEFCT1JBVE9SUylcbiAgICAgIClcbiAgICAgICAgY291cG9uVXNlTGltaXRzID0gY291cG9uLnVzZUxpbWl0cy5ub25fc3Vic2NyaWJlclxuICAgICAgZWxzZSBjb3Vwb25Vc2VMaW1pdHMgPSB1c2VyPy5pc1N1YnNjcmliZXIgPyBjb3Vwb24udXNlTGltaXRzLnN1YnNjcmliZXIgOiBjb3Vwb24udXNlTGltaXRzLm5vbl9zdWJzY3JpYmVyXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvdXBvblVzZUxpbWl0cyA9IGNvdXBvbi51c2VMaW1pdHMuc3Vic2NyaXB0aW9uXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvdXBvblVzZUxpbWl0c1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './util.helper';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2hlbHBlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3V0aWwuaGVscGVyJ1xuIl19
@@ -0,0 +1,18 @@
1
+ export class UtilHelper {
2
+ static createSlug(name) {
3
+ return name
4
+ .toLowerCase()
5
+ .replace(/\s+/g, '-')
6
+ .replace(/[ãàáäâ]/g, 'a')
7
+ .replace(/[ẽèéëê]/g, 'e')
8
+ .replace(/[ìíïî]/g, 'i')
9
+ .replace(/[õòóöô]/g, 'o')
10
+ .replace(/[ùúüû]/g, 'u')
11
+ .replace(/[ñ]/g, 'n')
12
+ .replace(/[ç]/g, 'c')
13
+ .replace(/[&]/g, 'and')
14
+ .replace(/[^\w-]+/g, '')
15
+ .replace(/--+/g, '-');
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2hlbHBlcnMvdXRpbC5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFVBQVU7SUFDckIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFZO1FBQzVCLE9BQU8sSUFBSTthQUNSLFdBQVcsRUFBRTthQUNiLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO2FBQ3BCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDO2FBQ3hCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDO2FBQ3hCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDO2FBQ3ZCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDO2FBQ3hCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDO2FBQ3ZCLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO2FBQ3BCLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO2FBQ3BCLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO2FBQ3RCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2FBQ3ZCLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDekIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFV0aWxIZWxwZXIge1xuICBzdGF0aWMgY3JlYXRlU2x1ZyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBuYW1lXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnJlcGxhY2UoL1xccysvZywgJy0nKVxuICAgICAgLnJlcGxhY2UoL1vDo8Ogw6HDpMOiXS9nLCAnYScpXG4gICAgICAucmVwbGFjZSgvW+G6vcOow6nDq8OqXS9nLCAnZScpXG4gICAgICAucmVwbGFjZSgvW8Osw63Dr8OuXS9nLCAnaScpXG4gICAgICAucmVwbGFjZSgvW8O1w7LDs8O2w7RdL2csICdvJylcbiAgICAgIC5yZXBsYWNlKC9bw7nDusO8w7tdL2csICd1JylcbiAgICAgIC5yZXBsYWNlKC9bw7FdL2csICduJylcbiAgICAgIC5yZXBsYWNlKC9bw6ddL2csICdjJylcbiAgICAgIC5yZXBsYWNlKC9bJl0vZywgJ2FuZCcpXG4gICAgICAucmVwbGFjZSgvW15cXHctXSsvZywgJycpXG4gICAgICAucmVwbGFjZSgvLS0rL2csICctJylcbiAgfVxufVxuIl19
@@ -0,0 +1,24 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class HomeShopRepositoriesFacade {
4
+ constructor(categoryRepository, homeRepository, productRepository) {
5
+ this.categoryRepository = categoryRepository;
6
+ this.homeRepository = homeRepository;
7
+ this.productRepository = productRepository;
8
+ }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HomeShopRepositoriesFacade, deps: [{ token: 'CategoryRepository' }, { token: 'HomeRepository' }, { token: 'ProductRepository' }], target: i0.ɵɵFactoryTarget.Injectable }); }
10
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HomeShopRepositoriesFacade }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HomeShopRepositoriesFacade, decorators: [{
13
+ type: Injectable
14
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
15
+ type: Inject,
16
+ args: ['CategoryRepository']
17
+ }] }, { type: undefined, decorators: [{
18
+ type: Inject,
19
+ args: ['HomeRepository']
20
+ }] }, { type: undefined, decorators: [{
21
+ type: Inject,
22
+ args: ['ProductRepository']
23
+ }] }] });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZS1zaG9wLXJlcG9zaXRvcmllcy5mYWNhZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2hvbWUtc2hvcC9ob21lLXNob3AtcmVwb3NpdG9yaWVzLmZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTs7QUFJbEQsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUNnRCxrQkFBc0MsRUFDMUMsY0FBOEIsRUFDM0IsaUJBQW9DO1FBRm5DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDMUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzNCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFDaEYsQ0FBQzsrR0FMTywwQkFBMEIsa0JBRTNCLG9CQUFvQixhQUNwQixnQkFBZ0IsYUFDaEIsbUJBQW1CO21IQUpsQiwwQkFBMEI7OzRGQUExQiwwQkFBMEI7a0JBRHRDLFVBQVU7OzBCQUdOLE1BQU07MkJBQUMsb0JBQW9COzswQkFDM0IsTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUN2QixNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDYXRlZ29yeVJlcG9zaXRvcnksIEhvbWVSZXBvc2l0b3J5LCBQcm9kdWN0UmVwb3NpdG9yeSB9IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSG9tZVNob3BSZXBvc2l0b3JpZXNGYWNhZGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdDYXRlZ29yeVJlcG9zaXRvcnknKSBwdWJsaWMgcmVhZG9ubHkgY2F0ZWdvcnlSZXBvc2l0b3J5OiBDYXRlZ29yeVJlcG9zaXRvcnksXG4gICAgQEluamVjdCgnSG9tZVJlcG9zaXRvcnknKSBwdWJsaWMgcmVhZG9ubHkgaG9tZVJlcG9zaXRvcnk6IEhvbWVSZXBvc2l0b3J5LFxuICAgIEBJbmplY3QoJ1Byb2R1Y3RSZXBvc2l0b3J5JykgcHVibGljIHJlYWRvbmx5IHByb2R1Y3RSZXBvc2l0b3J5OiBQcm9kdWN0UmVwb3NpdG9yeSxcbiAgKSB7fVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export { HomeShopRepositoriesFacade } from './home-shop-repositories.facade';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2hvbWUtc2hvcC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEhvbWVTaG9wUmVwb3NpdG9yaWVzRmFjYWRlIH0gZnJvbSAnLi9ob21lLXNob3AtcmVwb3NpdG9yaWVzLmZhY2FkZSdcbiJdfQ==