@infrab4a/connect-angular 4.0.1-beta.0 → 4.0.2-beta.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.
Files changed (126) hide show
  1. package/angular-connect.module.d.ts +22 -19
  2. package/angular-elastic-search.module.d.ts +9 -9
  3. package/angular-firebase-auth.module.d.ts +12 -10
  4. package/angular-firestore.module.d.ts +18 -15
  5. package/angular-hasura-graphql.module.d.ts +16 -16
  6. package/consts/backend-url.const.d.ts +1 -1
  7. package/consts/category-structure.d.ts +1 -0
  8. package/consts/default-shop.const.d.ts +1 -1
  9. package/consts/es-config.const.d.ts +1 -1
  10. package/consts/firebase-const.d.ts +3 -0
  11. package/consts/hasura-options.const.d.ts +1 -1
  12. package/consts/index.d.ts +6 -4
  13. package/esm2020/angular-connect.module.mjs +66 -0
  14. package/esm2020/angular-elastic-search.module.mjs +34 -0
  15. package/esm2020/angular-firebase-auth.module.mjs +130 -0
  16. package/esm2020/angular-firestore.module.mjs +459 -0
  17. package/esm2020/angular-hasura-graphql.module.mjs +243 -0
  18. package/{esm2015/consts/backend-url.const.js → esm2020/consts/backend-url.const.mjs} +1 -1
  19. package/esm2020/consts/category-structure.mjs +2 -0
  20. package/{esm2015/consts/default-shop.const.js → esm2020/consts/default-shop.const.mjs} +2 -2
  21. package/{esm2015/consts/es-config.const.js → esm2020/consts/es-config.const.mjs} +2 -2
  22. package/esm2020/consts/firebase-const.mjs +4 -0
  23. package/{esm2015/consts/hasura-options.const.js → esm2020/consts/hasura-options.const.mjs} +2 -2
  24. package/esm2020/consts/index.mjs +7 -0
  25. package/esm2020/helpers/index.mjs +2 -0
  26. package/esm2020/helpers/mobile-operation-system-checker.helper.mjs +7 -0
  27. package/esm2020/index.mjs +6 -0
  28. package/{esm2015/infrab4a-connect-angular.js → esm2020/infrab4a-connect-angular.mjs} +4 -4
  29. package/esm2020/services/auth.service.mjs +37 -0
  30. package/esm2020/services/cart.service.mjs +281 -0
  31. package/esm2020/services/catalog/adapters/category-structure.adapter.mjs +2 -0
  32. package/esm2020/services/catalog/adapters/index.mjs +4 -0
  33. package/esm2020/services/catalog/adapters/new-category-structure.adapter.mjs +41 -0
  34. package/esm2020/services/catalog/adapters/old-category-structure.adapter.mjs +23 -0
  35. package/esm2020/services/catalog/catalog.service.mjs +122 -0
  36. package/esm2020/services/catalog/category.service.mjs +51 -0
  37. package/esm2020/services/catalog/enums/index.mjs +2 -0
  38. package/esm2020/services/catalog/enums/product-sorts.enum.mjs +11 -0
  39. package/esm2020/services/catalog/index.mjs +7 -0
  40. package/esm2020/services/catalog/models/category-with-tree.model.mjs +10 -0
  41. package/esm2020/services/catalog/models/index.mjs +2 -0
  42. package/esm2020/services/catalog/types/index.mjs +2 -0
  43. package/esm2020/services/catalog/types/product-sort.type.mjs +2 -0
  44. package/esm2020/services/catalog/wishlist.service.mjs +102 -0
  45. package/esm2020/services/checkout-subscription.service.mjs +53 -0
  46. package/esm2020/services/checkout.service.mjs +71 -0
  47. package/esm2020/services/coupon.service.mjs +218 -0
  48. package/esm2020/services/helpers/index.mjs +2 -0
  49. package/esm2020/services/helpers/util.helper.mjs +18 -0
  50. package/esm2020/services/home-shop.service.mjs +114 -0
  51. package/esm2020/services/index.mjs +11 -0
  52. package/esm2020/services/order.service.mjs +30 -0
  53. package/esm2020/services/shipping.service.mjs +96 -0
  54. package/{esm2015/services/types/index.js → esm2020/services/types/index.mjs} +3 -3
  55. package/{esm2015/services/types/required-checkout-data.type.js → esm2020/services/types/required-checkout-data.type.mjs} +2 -2
  56. package/{esm2015/services/types/required-checkout-subscription-data.type.js → esm2020/services/types/required-checkout-subscription-data.type.mjs} +2 -2
  57. package/esm2020/services/types/shipping-methods.type.mjs +2 -0
  58. package/esm2020/types/firebase-app-config.type.mjs +2 -0
  59. package/esm2020/types/index.mjs +2 -0
  60. package/fesm2015/infrab4a-connect-angular.mjs +2188 -0
  61. package/fesm2015/infrab4a-connect-angular.mjs.map +1 -0
  62. package/fesm2020/infrab4a-connect-angular.mjs +2121 -0
  63. package/fesm2020/infrab4a-connect-angular.mjs.map +1 -0
  64. package/helpers/index.d.ts +1 -0
  65. package/helpers/mobile-operation-system-checker.helper.d.ts +3 -0
  66. package/index.d.ts +5 -5
  67. package/package.json +25 -13
  68. package/services/auth.service.d.ts +18 -19
  69. package/services/cart.service.d.ts +42 -35
  70. package/services/catalog/adapters/category-structure.adapter.d.ts +4 -0
  71. package/services/catalog/adapters/index.d.ts +3 -0
  72. package/services/catalog/adapters/new-category-structure.adapter.d.ts +12 -0
  73. package/services/catalog/adapters/old-category-structure.adapter.d.ts +10 -0
  74. package/services/catalog/catalog.service.d.ts +80 -0
  75. package/services/catalog/category.service.d.ts +15 -0
  76. package/services/catalog/enums/index.d.ts +1 -0
  77. package/services/catalog/enums/product-sorts.enum.d.ts +9 -0
  78. package/services/catalog/index.d.ts +6 -0
  79. package/services/catalog/models/category-with-tree.model.d.ts +4 -0
  80. package/services/catalog/models/index.d.ts +1 -0
  81. package/services/catalog/types/index.d.ts +1 -0
  82. package/services/catalog/types/product-sort.type.d.ts +2 -0
  83. package/services/catalog/wishlist.service.d.ts +22 -0
  84. package/services/checkout-subscription.service.d.ts +18 -18
  85. package/services/checkout.service.d.ts +23 -23
  86. package/services/coupon.service.d.ts +28 -26
  87. package/services/helpers/index.d.ts +1 -0
  88. package/services/helpers/util.helper.d.ts +3 -0
  89. package/services/home-shop.service.d.ts +25 -25
  90. package/services/index.d.ts +10 -8
  91. package/services/order.service.d.ts +13 -13
  92. package/services/shipping.service.d.ts +19 -19
  93. package/services/types/index.d.ts +2 -2
  94. package/services/types/required-checkout-data.type.d.ts +2 -2
  95. package/services/types/required-checkout-subscription-data.type.d.ts +2 -2
  96. package/services/types/shipping-methods.type.d.ts +12 -12
  97. package/types/firebase-app-config.type.d.ts +1 -0
  98. package/types/index.d.ts +1 -0
  99. package/bundles/infrab4a-connect-angular.umd.js +0 -1978
  100. package/bundles/infrab4a-connect-angular.umd.js.map +0 -1
  101. package/esm2015/angular-connect.module.js +0 -52
  102. package/esm2015/angular-elastic-search.module.js +0 -38
  103. package/esm2015/angular-firebase-auth.module.js +0 -113
  104. package/esm2015/angular-firestore.module.js +0 -366
  105. package/esm2015/angular-hasura-graphql.module.js +0 -90
  106. package/esm2015/consts/index.js +0 -5
  107. package/esm2015/index.js +0 -6
  108. package/esm2015/services/auth.service.js +0 -42
  109. package/esm2015/services/cart.service.js +0 -148
  110. package/esm2015/services/checkout-subscription.service.js +0 -51
  111. package/esm2015/services/checkout.service.js +0 -75
  112. package/esm2015/services/coupon.service.js +0 -266
  113. package/esm2015/services/errors/group-invalid-coupon.error.js +0 -8
  114. package/esm2015/services/errors/index.js +0 -3
  115. package/esm2015/services/errors/invalid-coupon.error.js +0 -8
  116. package/esm2015/services/home-shop.service.js +0 -116
  117. package/esm2015/services/index.js +0 -9
  118. package/esm2015/services/order.service.js +0 -32
  119. package/esm2015/services/shipping.service.js +0 -99
  120. package/esm2015/services/types/shipping-methods.type.js +0 -2
  121. package/fesm2015/infrab4a-connect-angular.js +0 -1432
  122. package/fesm2015/infrab4a-connect-angular.js.map +0 -1
  123. package/infrab4a-connect-angular.d.ts +0 -5
  124. package/services/errors/group-invalid-coupon.error.d.ts +0 -6
  125. package/services/errors/index.d.ts +0 -2
  126. package/services/errors/invalid-coupon.error.d.ts +0 -5
@@ -1,148 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { Inject, Injectable } from '@angular/core';
3
- import { Checkout, isNil, LineItem, Shops } from '@infrab4a/connect';
4
- import { from, iif, of, Subject } from 'rxjs';
5
- import { catchError, concatMap, map, mergeMap, tap } from 'rxjs/operators';
6
- import { DEFAULT_SHOP } from '../consts';
7
- import { AuthService } from './auth.service';
8
- import { CheckoutService } from './checkout.service';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "./auth.service";
11
- import * as i2 from "./checkout.service";
12
- import * as i3 from "@infrab4a/connect";
13
- export class CartService {
14
- constructor(authService, checkoutService, defaultShop, productRepository) {
15
- this.authService = authService;
16
- this.checkoutService = checkoutService;
17
- this.defaultShop = defaultShop;
18
- this.productRepository = productRepository;
19
- this.cartSubject = new Subject();
20
- this.updateLineItemInCart = (lineItem, quantity, checkout) => (isNil(checkout) ? this.checkoutService.getCheckout() : of(checkout)).pipe(concatMap((checkoutLoaded) => {
21
- var _a;
22
- const items = [];
23
- const index = (_a = checkoutLoaded.lineItems) === null || _a === void 0 ? void 0 : _a.map((checkoutItem) => checkoutItem.sku).indexOf(lineItem.sku);
24
- if (index > -1) {
25
- checkoutLoaded.lineItems[index].quantity += quantity;
26
- checkoutLoaded.lineItems[index].pricePaid = lineItem.pricePaid;
27
- }
28
- else
29
- checkoutLoaded.lineItems = items.concat(checkoutLoaded.lineItems ? checkoutLoaded.lineItems.concat([lineItem]) : [lineItem]);
30
- return this.checkoutService
31
- .updateCheckoutLineItems(checkoutLoaded)
32
- .pipe(map((updatedCheckout) => this.generateCartObject(updatedCheckout.lineItems)));
33
- }));
34
- this.generateCartObject = (items) => {
35
- const cart = {};
36
- items === null || items === void 0 ? void 0 : items.forEach((item) => {
37
- var _a;
38
- return (cart[item.sku] = LineItem.toInstance(Object.assign(Object.assign({}, (cart[item.sku] || item)), { quantity: (((_a = cart[item.sku]) === null || _a === void 0 ? void 0 : _a.quantity) || 0) + (item.quantity ? item.quantity : 1) })));
39
- });
40
- return cart;
41
- };
42
- this.buildLineItem = ({ checkout, item, quantity, }) => __awaiter(this, void 0, void 0, function* () {
43
- var _a, _b, _c, _d, _e, _f, _g;
44
- const product = yield this.productRepository.get({ id: item.id });
45
- item.quantity = (item === null || item === void 0 ? void 0 : item.quantity) || ((_b = (_a = checkout === null || checkout === void 0 ? void 0 : checkout.lineItems) === null || _a === void 0 ? void 0 : _a.find((lineItem) => lineItem.sku === item.sku)) === null || _b === void 0 ? void 0 : _b.quantity) || 0;
46
- if (this.checkMaxStock(item, quantity || 0))
47
- throw new Error('Desculpe! Temos apenas ' + ((_c = item.stock) === null || _c === void 0 ? void 0 : _c.quantity) + ' em estoque.');
48
- const image = item.image || ((_d = item.images) === null || _d === void 0 ? void 0 : _d.shift());
49
- const { id, name, EAN, brand, slug, stock, price, weight, categories, sku, type } = item;
50
- const isGift = item.isGift || null;
51
- const pricePaid = this.getProductPrice({
52
- product: item,
53
- shop: checkout.shop || this.defaultShop,
54
- isSubscriber: (_e = checkout.user) === null || _e === void 0 ? void 0 : _e.isSubscriber,
55
- });
56
- return {
57
- checkout,
58
- lineItem: LineItem.toInstance({
59
- id,
60
- name: name !== null && name !== void 0 ? name : product.name,
61
- EAN: EAN !== null && EAN !== void 0 ? EAN : product.EAN,
62
- brand: product.brand,
63
- slug: slug !== null && slug !== void 0 ? slug : product.slug,
64
- sku: sku !== null && sku !== void 0 ? sku : product.sku,
65
- stock,
66
- price,
67
- image,
68
- weight: weight !== null && weight !== void 0 ? weight : product.weight,
69
- quantity: (item.quantity || 0) + (quantity || 0),
70
- pricePaid,
71
- categories: (_f = product.categories) !== null && _f !== void 0 ? _f : [],
72
- isGift: isGift !== null && isGift !== void 0 ? isGift : null,
73
- costPrice: (_g = product.costPrice) !== null && _g !== void 0 ? _g : 0,
74
- type,
75
- }),
76
- };
77
- });
78
- this.getProductPrice = ({ product, isSubscriber, }) => {
79
- const info = product.price;
80
- if (product.isGift)
81
- return 0;
82
- return isSubscriber && info.subscriberPrice > 0 ? info.subscriberPrice : info.price;
83
- };
84
- this.checkMaxStock = (item, quantity) => {
85
- var _a;
86
- const maxStock = ((_a = item.stock) === null || _a === void 0 ? void 0 : _a.quantity) || 0;
87
- const currentItemAmount = item.quantity || 0;
88
- return currentItemAmount + quantity > maxStock;
89
- };
90
- }
91
- addItem(item, quantity = 1) {
92
- return from(this.checkoutService.getCheckout()).pipe(concatMap((checkout) => __awaiter(this, void 0, void 0, function* () { return yield this.buildLineItem({ checkout, item, quantity: quantity || 1 }); })), mergeMap(({ checkout, lineItem }) => this.updateLineItemInCart(lineItem, quantity || 1, checkout)), tap((cart) => this.cartSubject.next(cart)));
93
- }
94
- decreaseItem(item) {
95
- return this.checkoutService.getCheckout().pipe(map((checkout) => {
96
- var _a;
97
- const checkoutItem = (_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.find((lineItem) => lineItem.sku === item.sku);
98
- if (!isNil(checkoutItem))
99
- checkoutItem.quantity -= checkoutItem.quantity > 1 ? 1 : 0;
100
- return checkout;
101
- }), concatMap((checkout) => this.checkoutService.updateCheckoutLineItems(checkout)), map((checkout) => this.generateCartObject(checkout.lineItems)), tap((cart) => this.cartSubject.next(cart)));
102
- }
103
- getCart(checkout) {
104
- this.buildCartFromCheckout(checkout).subscribe((cart) => this.cartSubject.next(cart));
105
- return this.cartSubject;
106
- }
107
- /**
108
- * @deprecated The method should not be used
109
- */
110
- getVariantPriceDiscount(item) {
111
- return this.authService.getUser().pipe(concatMap((user) => iif(() => user.isSubscriber && !!item.price.subscriberPrice, of(item.price.subscriberPrice), of(item.price.price))), catchError(() => of(item.price.price)));
112
- }
113
- removeItem(item) {
114
- return this.checkoutService.getCheckout().pipe(map((checkout) => {
115
- const index = checkout.lineItems.findIndex((lineItem) => lineItem.sku === item.sku);
116
- if (index >= 0)
117
- checkout.lineItems.splice(index, 1);
118
- return checkout;
119
- }), concatMap((checkout) => this.checkoutService.updateCheckoutLineItems(checkout)), map((checkout) => this.generateCartObject(checkout.lineItems)), tap((cart) => this.cartSubject.next(cart)));
120
- }
121
- updateUserCart(user) {
122
- return this.checkoutService.getCheckout().pipe(concatMap((checkout) => this.checkoutService.updateCheckoutUser(Checkout.toInstance(Object.assign(Object.assign({}, checkout.toPlain()), { user })))), concatMap((checkout) => __awaiter(this, void 0, void 0, function* () {
123
- var _a, _b;
124
- return this.checkoutService.updateCheckoutLineItems(Checkout.toInstance(Object.assign(Object.assign({}, checkout.toPlain()), { lineItems: ((_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.length) ? yield Promise.all((_b = checkout.lineItems) === null || _b === void 0 ? void 0 : _b.map((item) => __awaiter(this, void 0, void 0, function* () { return (yield this.buildLineItem({ checkout, item })).lineItem; }))) : [] }))).toPromise();
125
- })), map(checkout => this.generateCartObject(checkout.lineItems)), tap((cart) => this.cartSubject.next(cart)));
126
- }
127
- clearCart() {
128
- return this.checkoutService.getCheckout().pipe(map((checkout) => {
129
- this.checkoutService.clearCheckoutFromSession();
130
- return checkout;
131
- }), concatMap((oldCheckout) => this.buildCartFromCheckout(oldCheckout)), tap((cart) => this.cartSubject.next(cart)));
132
- }
133
- buildCartFromCheckout(checkoutData) {
134
- return this.checkoutService.getCheckout(checkoutData).pipe(map((checkout) => checkout.lineItems), concatMap((lineItems) => of(this.generateCartObject(lineItems))));
135
- }
136
- }
137
- CartService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CartService, deps: [{ token: i1.AuthService }, { token: i2.CheckoutService }, { token: DEFAULT_SHOP }, { token: 'ProductRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
138
- CartService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CartService });
139
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CartService, decorators: [{
140
- type: Injectable
141
- }], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i2.CheckoutService }, { type: i3.Shops, decorators: [{
142
- type: Inject,
143
- args: [DEFAULT_SHOP]
144
- }] }, { type: undefined, decorators: [{
145
- type: Inject,
146
- args: ['ProductRepository']
147
- }] }]; } });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBcUIsS0FBSyxFQUFRLE1BQU0sbUJBQW1CLENBQUE7QUFDN0YsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRTFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTs7Ozs7QUFRcEQsTUFBTSxPQUFPLFdBQVc7SUFHdEIsWUFDbUIsV0FBd0IsRUFDeEIsZUFBZ0MsRUFDVixXQUFrQixFQUNYLGlCQUFvQztRQUhqRSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDVixnQkFBVyxHQUFYLFdBQVcsQ0FBTztRQUNYLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFONUUsZ0JBQVcsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQTtRQTBHMUMseUJBQW9CLEdBQUcsQ0FBQyxRQUFrQixFQUFFLFFBQWdCLEVBQUUsUUFBbUIsRUFBb0IsRUFBRSxDQUM3RyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMs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LE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUN4RCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFDckMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FDakUsQ0FBQTtJQUNILENBQUM7O3lHQXpHVSxXQUFXLDRFQU1aLFlBQVksYUFDWixtQkFBbUI7NkdBUGxCLFdBQVc7NEZBQVgsV0FBVztrQkFEdkIsVUFBVTs7MEJBT04sTUFBTTsyQkFBQyxZQUFZOzswQkFDbkIsTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBDaGVja291dCwgaXNOaWwsIExpbmVJdGVtLCBQcm9kdWN0UmVwb3NpdG9yeSwgU2hvcHMsIFVzZXIgfSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcclxuaW1wb3J0IHsgZnJvbSwgaWlmLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGNvbmNhdE1hcCwgbWFwLCBtZXJnZU1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcblxyXG5pbXBvcnQgeyBERUZBVUxUX1NIT1AgfSBmcm9tICcuLi9jb25zdHMnXHJcblxyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBDaGVja291dFNlcnZpY2UgfSBmcm9tICcuL2NoZWNrb3V0LnNlcnZpY2UnXHJcbmltcG9ydCB7IFJlcXVpcmVkQ2hlY2tvdXREYXRhIH0gZnJvbSAnLi90eXBlcydcclxuXHJcbmV4cG9ydCB0eXBlIENhcnQgPSB7XHJcbiAgW2lkOiBzdHJpbmddOiBMaW5lSXRlbVxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDYXJ0U2VydmljZSB7XHJcbiAgcHJpdmF0ZSBjYXJ0U3ViamVjdDogU3ViamVjdDxDYXJ0PiA9IG5ldyBTdWJqZWN0KClcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hlY2tvdXRTZXJ2aWNlOiBDaGVja291dFNlcnZpY2UsXHJcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0U2hvcDogU2hvcHMsXHJcbiAgICBASW5qZWN0KCdQcm9kdWN0UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdFJlcG9zaXRvcnk6IFByb2R1Y3RSZXBvc2l0b3J5LFxyXG4gICkge31cclxuXHJcbiAgYWRkSXRlbShpdGVtOiBMaW5lSXRlbSwgcXVhbnRpdHk6IG51bWJlciA9IDEpOiBPYnNlcnZhYmxlPENhcnQ+IHtcclxuICAgIHJldHVybiBmcm9tKHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmdldENoZWNrb3V0KCkpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcChhc3luYyAoY2hlY2tvdXQpID0+IGF3YWl0IHRoaXMuYnVpbGRMaW5lSXRlbSh7IGNoZWNrb3V0LCBpdGVtLCBxdWFudGl0eTogcXVhbnRpdHkgfHwgMSB9KSksXHJcbiAgICAgIG1lcmdlTWFwKCh7IGNoZWNrb3V0LCBsaW5lSXRlbSB9KSA9PiB0aGlzLnVwZGF0ZUxpbmVJdGVtSW5DYXJ0KGxpbmVJdGVtLCBxdWFudGl0eSB8fCAxLCBjaGVja291dCBhcyBDaGVja291dCkpLFxyXG4gICAgICB0YXAoKGNhcnQpID0+IHRoaXMuY2FydFN1YmplY3QubmV4dChjYXJ0KSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBkZWNyZWFzZUl0ZW0oaXRlbTogTGluZUl0ZW0pOiBPYnNlcnZhYmxlPENhcnQ+IHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRDaGVja291dCgpLnBpcGUoXHJcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IHtcclxuICAgICAgICBjb25zdCBjaGVja291dEl0ZW0gPSBjaGVja291dC5saW5lSXRlbXM/LmZpbmQoKGxpbmVJdGVtKSA9PiBsaW5lSXRlbS5za3UgPT09IGl0ZW0uc2t1KVxyXG5cclxuICAgICAgICBpZiAoIWlzTmlsKGNoZWNrb3V0SXRlbSkpIGNoZWNrb3V0SXRlbS5xdWFudGl0eSAtPSBjaGVja291dEl0ZW0ucXVhbnRpdHkgPiAxID8gMSA6IDBcclxuXHJcbiAgICAgICAgcmV0dXJuIGNoZWNrb3V0XHJcbiAgICAgIH0pLFxyXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PiB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVDaGVja291dExpbmVJdGVtcyhjaGVja291dCkpLFxyXG4gICAgICBtYXAoKGNoZWNrb3V0KSA9PiB0aGlzLmdlbmVyYXRlQ2FydE9iamVjdChjaGVja291dC5saW5lSXRlbXMpKSxcclxuICAgICAgdGFwKChjYXJ0KSA9PiB0aGlzLmNhcnRTdWJqZWN0Lm5leHQoY2FydCkpLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0Q2FydChjaGVja291dD86IFJlcXVpcmVkQ2hlY2tvdXREYXRhKTogT2JzZXJ2YWJsZTxDYXJ0PiB7XHJcbiAgICB0aGlzLmJ1aWxkQ2FydEZyb21DaGVja291dChjaGVja291dCkuc3Vic2NyaWJlKChjYXJ0KSA9PiB0aGlzLmNhcnRTdWJqZWN0Lm5leHQoY2FydCkpXHJcblxyXG4gICAgcmV0dXJuIHRoaXMuY2FydFN1YmplY3RcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFRoZSBtZXRob2Qgc2hvdWxkIG5vdCBiZSB1c2VkXHJcbiAgICovXHJcbiAgZ2V0VmFyaWFudFByaWNlRGlzY291bnQoaXRlbTogTGluZUl0ZW0pOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlcigpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgodXNlcikgPT5cclxuICAgICAgICBpaWYoXHJcbiAgICAgICAgICAoKSA9PiB1c2VyLmlzU3Vic2NyaWJlciAmJiAhIWl0ZW0ucHJpY2Uuc3Vic2NyaWJlclByaWNlLFxyXG4gICAgICAgICAgb2YoaXRlbS5wcmljZS5zdWJzY3JpYmVyUHJpY2UpLFxyXG4gICAgICAgICAgb2YoaXRlbS5wcmljZS5wcmljZSksXHJcbiAgICAgICAgKSxcclxuICAgICAgKSxcclxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihpdGVtLnByaWNlLnByaWNlKSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICByZW1vdmVJdGVtKGl0ZW06IExpbmVJdGVtKTogT2JzZXJ2YWJsZTxDYXJ0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoKS5waXBlKFxyXG4gICAgICBtYXAoKGNoZWNrb3V0KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBjaGVja291dC5saW5lSXRlbXMuZmluZEluZGV4KChsaW5lSXRlbSkgPT4gbGluZUl0ZW0uc2t1ID09PSBpdGVtLnNrdSlcclxuXHJcbiAgICAgICAgaWYgKGluZGV4ID49IDApIGNoZWNrb3V0LmxpbmVJdGVtcy5zcGxpY2UoaW5kZXgsIDEpXHJcblxyXG4gICAgICAgIHJldHVybiBjaGVja291dFxyXG4gICAgICB9KSxcclxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT4gdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoY2hlY2tvdXQpKSxcclxuICAgICAgbWFwKChjaGVja291dCkgPT4gdGhpcy5nZW5lcmF0ZUNhcnRPYmplY3QoY2hlY2tvdXQubGluZUl0ZW1zKSksXHJcbiAgICAgIHRhcCgoY2FydCkgPT4gdGhpcy5jYXJ0U3ViamVjdC5uZXh0KGNhcnQpKSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIHVwZGF0ZVVzZXJDYXJ0KHVzZXI6IFVzZXIpOiBPYnNlcnZhYmxlPENhcnQ+IHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRDaGVja291dCgpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XHJcbiAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQ2hlY2tvdXRVc2VyKENoZWNrb3V0LnRvSW5zdGFuY2UoeyAuLi5jaGVja291dC50b1BsYWluKCksIHVzZXIgfSkpLFxyXG4gICAgICApLFxyXG4gICAgICBjb25jYXRNYXAoYXN5bmMgKGNoZWNrb3V0KSA9PiB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVDaGVja291dExpbmVJdGVtcyhcclxuICAgICAgICAgIENoZWNrb3V0LnRvSW5zdGFuY2Uoe1xyXG4gICAgICAgICAgICAuLi5jaGVja291dC50b1BsYWluKCksXHJcbiAgICAgICAgICAgIGxpbmVJdGVtczogY2hlY2tvdXQubGluZUl0ZW1zPy5sZW5ndGggPyBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgICBjaGVja291dC5saW5lSXRlbXM/Lm1hcChhc3luYyAoaXRlbSkgPT4gKGF3YWl0IHRoaXMuYnVpbGRMaW5lSXRlbSh7IGNoZWNrb3V0LCBpdGVtIH0pKS5saW5lSXRlbSlcclxuICAgICAgICAgICAgICApIDogW10sXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICApLnRvUHJvbWlzZSgpXHJcbiAgICAgICksXHJcbiAgICAgIG1hcChjaGVja291dCA9PiB0aGlzLmdlbmVyYXRlQ2FydE9iamVjdChjaGVja291dC5saW5lSXRlbXMpKSxcclxuICAgICAgdGFwKChjYXJ0KSA9PiB0aGlzLmNhcnRTdWJqZWN0Lm5leHQoY2FydCkpXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBjbGVhckNhcnQoKTogT2JzZXJ2YWJsZTxDYXJ0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoKS5waXBlKFxyXG4gICAgICBtYXAoKGNoZWNrb3V0KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UuY2xlYXJDaGVja291dEZyb21TZXNzaW9uKClcclxuICAgICAgICByZXR1cm4gY2hlY2tvdXRcclxuICAgICAgfSksXHJcbiAgICAgIGNvbmNhdE1hcCgob2xkQ2hlY2tvdXQpID0+IHRoaXMuYnVpbGRDYXJ0RnJvbUNoZWNrb3V0KG9sZENoZWNrb3V0KSksXHJcbiAgICAgIHRhcCgoY2FydCkgPT4gdGhpcy5jYXJ0U3ViamVjdC5uZXh0KGNhcnQpKSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRDYXJ0RnJvbUNoZWNrb3V0KGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXREYXRhKTogT2JzZXJ2YWJsZTxDYXJ0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoY2hlY2tvdXREYXRhKS5waXBlKFxyXG4gICAgICBtYXAoKGNoZWNrb3V0KSA9PiBjaGVja291dC5saW5lSXRlbXMpLFxyXG4gICAgICBjb25jYXRNYXAoKGxpbmVJdGVtcykgPT4gb2YodGhpcy5nZW5lcmF0ZUNhcnRPYmplY3QobGluZUl0ZW1zKSkpLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVMaW5lSXRlbUluQ2FydCA9IChsaW5lSXRlbTogTGluZUl0ZW0sIHF1YW50aXR5OiBudW1iZXIsIGNoZWNrb3V0PzogQ2hlY2tvdXQpOiBPYnNlcnZhYmxlPENhcnQ+ID0+XHJcbiAgICAoaXNOaWwoY2hlY2tvdXQpID8gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoKSA6IG9mKGNoZWNrb3V0KSkucGlwZShcclxuICAgICAgY29uY2F0TWFwKChjaGVja291dExvYWRlZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1zOiBMaW5lSXRlbVtdID0gW11cclxuICAgICAgICBjb25zdCBpbmRleCA9IGNoZWNrb3V0TG9hZGVkLmxpbmVJdGVtcz8ubWFwKChjaGVja291dEl0ZW0pID0+IGNoZWNrb3V0SXRlbS5za3UpLmluZGV4T2YobGluZUl0ZW0uc2t1KVxyXG5cclxuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zW2luZGV4XS5xdWFudGl0eSArPSBxdWFudGl0eVxyXG4gICAgICAgICAgY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zW2luZGV4XS5wcmljZVBhaWQgPSBsaW5lSXRlbS5wcmljZVBhaWRcclxuICAgICAgICB9IGVsc2VcclxuICAgICAgICAgIGNoZWNrb3V0TG9hZGVkLmxpbmVJdGVtcyA9IGl0ZW1zLmNvbmNhdChcclxuICAgICAgICAgICAgY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zID8gY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zLmNvbmNhdChbbGluZUl0ZW1dKSA6IFtsaW5lSXRlbV0sXHJcbiAgICAgICAgICApXHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrb3V0U2VydmljZVxyXG4gICAgICAgICAgLnVwZGF0ZUNoZWNrb3V0TGluZUl0ZW1zKGNoZWNrb3V0TG9hZGVkKVxyXG4gICAgICAgICAgLnBpcGUobWFwKCh1cGRhdGVkQ2hlY2tvdXQpID0+IHRoaXMuZ2VuZXJhdGVDYXJ0T2JqZWN0KHVwZGF0ZWRDaGVja291dC5saW5lSXRlbXMpKSlcclxuICAgICAgfSksXHJcbiAgICApXHJcblxyXG4gIHByaXZhdGUgZ2VuZXJhdGVDYXJ0T2JqZWN0ID0gKGl0ZW1zOiBMaW5lSXRlbVtdKTogQ2FydCA9PiB7XHJcbiAgICBjb25zdCBjYXJ0OiBDYXJ0ID0ge31cclxuXHJcbiAgICBpdGVtcz8uZm9yRWFjaChcclxuICAgICAgKGl0ZW0pID0+XHJcbiAgICAgICAgKGNhcnRbaXRlbS5za3VdID0gTGluZUl0ZW0udG9JbnN0YW5jZSh7XHJcbiAgICAgICAgICAuLi4oY2FydFtpdGVtLnNrdV0gfHwgaXRlbSksXHJcbiAgICAgICAgICBxdWFudGl0eTogKGNhcnRbaXRlbS5za3VdPy5xdWFudGl0eSB8fCAwKSArIChpdGVtLnF1YW50aXR5ID8gaXRlbS5xdWFudGl0eSA6IDEpLFxyXG4gICAgICAgIH0pKSxcclxuICAgIClcclxuXHJcbiAgICByZXR1cm4gY2FydFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZExpbmVJdGVtID0gYXN5bmMgKHtcclxuICAgIGNoZWNrb3V0LFxyXG4gICAgaXRlbSxcclxuICAgIHF1YW50aXR5LFxyXG4gIH06IHtcclxuICAgIGNoZWNrb3V0OiBSZXF1aXJlZENoZWNrb3V0RGF0YVxyXG4gICAgaXRlbTogTGluZUl0ZW1cclxuICAgIHF1YW50aXR5PzogbnVtYmVyXHJcbiAgfSk6IFByb21pc2U8e2NoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0PiwgbGluZUl0ZW06IExpbmVJdGVtfT4gPT4ge1xyXG4gICAgXHJcbiAgICBjb25zdCBwcm9kdWN0ID0gYXdhaXQgdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5nZXQoeyBpZDogaXRlbS5pZCB9KVxyXG5cclxuICAgIGl0ZW0ucXVhbnRpdHkgPSBpdGVtPy5xdWFudGl0eSB8fCBjaGVja291dD8ubGluZUl0ZW1zPy5maW5kKChsaW5lSXRlbSkgPT4gbGluZUl0ZW0uc2t1ID09PSBpdGVtLnNrdSk/LnF1YW50aXR5IHx8IDBcclxuXHJcbiAgICBpZiAodGhpcy5jaGVja01heFN0b2NrKGl0ZW0sIHF1YW50aXR5IHx8IDApKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rlc2N1bHBlISBUZW1vcyBhcGVuYXMgJyArIGl0ZW0uc3RvY2s/LnF1YW50aXR5ICsgJyBlbSBlc3RvcXVlLicpXHJcblxyXG4gICAgY29uc3QgaW1hZ2UgPSBpdGVtLmltYWdlIHx8IGl0ZW0uaW1hZ2VzPy5zaGlmdCgpXHJcbiAgICBjb25zdCB7IGlkLCBuYW1lLCBFQU4sIGJyYW5kLCBzbHVnLCBzdG9jaywgcHJpY2UsIHdlaWdodCwgY2F0ZWdvcmllcywgc2t1LCB0eXBlIH0gPSBpdGVtXHJcbiAgICBjb25zdCBpc0dpZnQgPSBpdGVtLmlzR2lmdCB8fCBudWxsXHJcbiAgICBjb25zdCBwcmljZVBhaWQgPSB0aGlzLmdldFByb2R1Y3RQcmljZSh7XHJcbiAgICAgIHByb2R1Y3Q6IGl0ZW0sXHJcbiAgICAgIHNob3A6IGNoZWNrb3V0LnNob3AgfHwgdGhpcy5kZWZhdWx0U2hvcCxcclxuICAgICAgaXNTdWJzY3JpYmVyOiBjaGVja291dC51c2VyPy5pc1N1YnNjcmliZXIsXHJcbiAgICB9KVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNoZWNrb3V0LFxyXG4gICAgICBsaW5lSXRlbTogTGluZUl0ZW0udG9JbnN0YW5jZSh7XHJcbiAgICAgICAgaWQsXHJcbiAgICAgICAgbmFtZTogbmFtZSA/PyBwcm9kdWN0Lm5hbWUsXHJcbiAgICAgICAgRUFOOiBFQU4gPz8gcHJvZHVjdC5FQU4sXHJcbiAgICAgICAgYnJhbmQ6IHByb2R1Y3QuYnJhbmQsXHJcbiAgICAgICAgc2x1Zzogc2x1ZyA/PyBwcm9kdWN0LnNsdWcsXHJcbiAgICAgICAgc2t1OiBza3UgPz8gcHJvZHVjdC5za3UsXHJcbiAgICAgICAgc3RvY2ssXHJcbiAgICAgICAgcHJpY2UsXHJcbiAgICAgICAgaW1hZ2UsXHJcbiAgICAgICAgd2VpZ2h0OiB3ZWlnaHQgPz8gcHJvZHVjdC53ZWlnaHQsXHJcbiAgICAgICAgcXVhbnRpdHk6IChpdGVtLnF1YW50aXR5IHx8IDApICsgKHF1YW50aXR5IHx8IDApLFxyXG4gICAgICAgIHByaWNlUGFpZCxcclxuICAgICAgICBjYXRlZ29yaWVzOiBwcm9kdWN0LmNhdGVnb3JpZXMgPz8gW10sXHJcbiAgICAgICAgaXNHaWZ0OiBpc0dpZnQgPz8gbnVsbCxcclxuICAgICAgICBjb3N0UHJpY2U6IHByb2R1Y3QuY29zdFByaWNlID8/IDAsXHJcbiAgICAgICAgdHlwZSxcclxuICAgICAgfSksXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFByb2R1Y3RQcmljZSA9ICh7XHJcbiAgICBwcm9kdWN0LFxyXG4gICAgaXNTdWJzY3JpYmVyLFxyXG4gIH06IHtcclxuICAgIHByb2R1Y3Q6IExpbmVJdGVtXHJcbiAgICBzaG9wOiBTaG9wc1xyXG4gICAgaXNTdWJzY3JpYmVyOiBib29sZWFuXHJcbiAgfSk6IG51bWJlciA9PiB7XHJcbiAgICBjb25zdCBpbmZvID0gcHJvZHVjdC5wcmljZVxyXG5cclxuICAgIGlmIChwcm9kdWN0LmlzR2lmdCkgcmV0dXJuIDBcclxuXHJcbiAgICByZXR1cm4gaXNTdWJzY3JpYmVyICYmIGluZm8uc3Vic2NyaWJlclByaWNlID4gMCA/IGluZm8uc3Vic2NyaWJlclByaWNlIDogaW5mby5wcmljZVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja01heFN0b2NrID0gKGl0ZW06IExpbmVJdGVtLCBxdWFudGl0eTogbnVtYmVyKSA9PiB7XHJcbiAgICBjb25zdCBtYXhTdG9jayA9IGl0ZW0uc3RvY2s/LnF1YW50aXR5IHx8IDBcclxuICAgIGNvbnN0IGN1cnJlbnRJdGVtQW1vdW50ID0gaXRlbS5xdWFudGl0eSB8fCAwXHJcblxyXG4gICAgcmV0dXJuIGN1cnJlbnRJdGVtQW1vdW50ICsgcXVhbnRpdHkgPiBtYXhTdG9ja1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,51 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { Inject, Injectable } from '@angular/core';
3
- import { CheckoutSubscription, CheckoutTypes, isNil, pick } from '@infrab4a/connect';
4
- import cookie from 'js-cookie';
5
- import { from, of } from 'rxjs';
6
- import { concatMap } from 'rxjs/operators';
7
- import { CouponService } from './coupon.service';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "./coupon.service";
10
- export class CheckoutSubscriptionService {
11
- constructor(checkoutSubscriptionRepository, subscriptionRepository, couponService) {
12
- this.checkoutSubscriptionRepository = checkoutSubscriptionRepository;
13
- this.subscriptionRepository = subscriptionRepository;
14
- this.couponService = couponService;
15
- }
16
- getCheckoutSubscription(checkoutData) {
17
- const checkoutId = cookie.get('checkoutSubscriptionId');
18
- if (!isNil(checkoutId))
19
- return from(this.checkoutSubscriptionRepository.get({ id: checkoutId }));
20
- return from(this.createCheckoutSubscription(checkoutData));
21
- }
22
- createCheckoutSubscription(checkoutData) {
23
- return __awaiter(this, void 0, void 0, function* () {
24
- const checkout = yield this.checkoutSubscriptionRepository.create(Object.assign({ createdAt: new Date() }, CheckoutSubscription.toInstance(pick(checkoutData, ['user', 'shop'])).toPlain()));
25
- cookie.set('checkoutSubscriptionId', checkout.id);
26
- return checkout;
27
- });
28
- }
29
- clearCheckoutSubscriptionFromSession() {
30
- cookie.remove('checkoutSubscriptionId');
31
- return of();
32
- }
33
- checkCoupon(nickname, userEmail) {
34
- return this.getCheckoutSubscription().pipe(concatMap((checkout) => this.couponService.checkCoupon(nickname, userEmail, CheckoutTypes.SUBSCRIPTION, checkout.subscriptionPlan.name, null, true).pipe()));
35
- }
36
- calcDiscountSubscription(coupon) {
37
- return this.getCheckoutSubscription().pipe(concatMap((checkout) => this.couponService.calcDiscountSubscription(coupon, checkout).pipe()));
38
- }
39
- }
40
- CheckoutSubscriptionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CheckoutSubscriptionService, deps: [{ token: 'CheckoutSubscriptionRepository' }, { token: 'SubscriptionRepository' }, { token: i1.CouponService }], target: i0.ɵɵFactoryTarget.Injectable });
41
- CheckoutSubscriptionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CheckoutSubscriptionService });
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CheckoutSubscriptionService, decorators: [{
43
- type: Injectable
44
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
45
- type: Inject,
46
- args: ['CheckoutSubscriptionRepository']
47
- }] }, { type: undefined, decorators: [{
48
- type: Inject,
49
- args: ['SubscriptionRepository']
50
- }] }, { type: i1.CouponService }]; } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtc3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NoZWNrb3V0LXN1YnNjcmlwdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBQ0wsb0JBQW9CLEVBRXBCLGFBQWEsRUFFYixLQUFLLEVBQ0wsSUFBSSxFQUVMLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFBO0FBQzlCLE9BQU8sRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUcxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7OztBQUdoRCxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLFlBRW1CLDhCQUE4RCxFQUM1QixzQkFBOEMsRUFDaEYsYUFBNEI7UUFGNUIsbUNBQThCLEdBQTlCLDhCQUE4QixDQUFnQztRQUM1QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQ2hGLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQzNDLENBQUM7SUFFTCx1QkFBdUIsQ0FBQyxZQUErQztRQUNyRSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUE7UUFFdkQsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUVoRyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQTtJQUM1RCxDQUFDO0lBRWEsMEJBQTBCLENBQ3RDLFlBQStDOztZQUUvQyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxNQUFNLGlCQUMvRCxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsSUFDbEIsb0JBQW9CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUNsRixDQUFBO1lBRUYsTUFBTSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7WUFFakQsT0FBTyxRQUFRLENBQUE7UUFDakIsQ0FBQztLQUFBO0lBRUQsb0NBQW9DO1FBQ2xDLE1BQU0sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtRQUV2QyxPQUFPLEVBQUUsRUFBRSxDQUFBO0lBQ2IsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFnQixFQUFFLFNBQWlCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsSUFBSSxDQUN4QyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLGFBQWEsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQ25JLENBQ0YsQ0FBQTtJQUNILENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxNQUFjO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsSUFBSSxDQUN4QyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FDckUsQ0FDRixDQUFBO0lBQ0gsQ0FBQzs7eUhBakRVLDJCQUEyQixrQkFFNUIsZ0NBQWdDLGFBRWhDLHdCQUF3Qjs2SEFKdkIsMkJBQTJCOzRGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVU7OzBCQUdOLE1BQU07MkJBQUMsZ0NBQWdDOzswQkFFdkMsTUFBTTsyQkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQge1xyXG4gIENoZWNrb3V0U3Vic2NyaXB0aW9uLFxyXG4gIENoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcclxuICBDaGVja291dFR5cGVzLFxyXG4gIENvdXBvbixcclxuICBpc05pbCxcclxuICBwaWNrLFxyXG4gIFN1YnNjcmlwdGlvblJlcG9zaXRvcnlcclxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcclxuaW1wb3J0IGNvb2tpZSBmcm9tICdqcy1jb29raWUnXHJcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgY29uY2F0TWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcbmltcG9ydCB7IFJlcXVpcmVkQ2hlY2tvdXRTdWJzY3JpcHRpb25EYXRhIH0gZnJvbSAnLi90eXBlcydcclxuXHJcbmltcG9ydCB7IENvdXBvblNlcnZpY2UgfSBmcm9tICcuL2NvdXBvbi5zZXJ2aWNlJ1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2hlY2tvdXRTdWJzY3JpcHRpb25TZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoJ0NoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeScpXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeTogQ2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnU3Vic2NyaXB0aW9uUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeTogU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY291cG9uU2VydmljZTogQ291cG9uU2VydmljZSxcclxuICApIHsgfVxyXG5cclxuICBnZXRDaGVja291dFN1YnNjcmlwdGlvbihjaGVja291dERhdGE/OiBSZXF1aXJlZENoZWNrb3V0U3Vic2NyaXB0aW9uRGF0YSk6IE9ic2VydmFibGU8Q2hlY2tvdXRTdWJzY3JpcHRpb24+IHtcclxuICAgIGNvbnN0IGNoZWNrb3V0SWQgPSBjb29raWUuZ2V0KCdjaGVja291dFN1YnNjcmlwdGlvbklkJylcclxuXHJcbiAgICBpZiAoIWlzTmlsKGNoZWNrb3V0SWQpKSByZXR1cm4gZnJvbSh0aGlzLmNoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeS5nZXQoeyBpZDogY2hlY2tvdXRJZCB9KSlcclxuXHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmNyZWF0ZUNoZWNrb3V0U3Vic2NyaXB0aW9uKGNoZWNrb3V0RGF0YSkpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZUNoZWNrb3V0U3Vic2NyaXB0aW9uKFxyXG4gICAgY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dFN1YnNjcmlwdGlvbkRhdGEsXHJcbiAgKTogUHJvbWlzZTxDaGVja291dFN1YnNjcmlwdGlvbj4ge1xyXG4gICAgY29uc3QgY2hlY2tvdXQgPSBhd2FpdCB0aGlzLmNoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeS5jcmVhdGUoe1xyXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCksXHJcbiAgICAgIC4uLkNoZWNrb3V0U3Vic2NyaXB0aW9uLnRvSW5zdGFuY2UocGljayhjaGVja291dERhdGEsIFsndXNlcicsICdzaG9wJ10pKS50b1BsYWluKCksXHJcbiAgICB9KVxyXG5cclxuICAgIGNvb2tpZS5zZXQoJ2NoZWNrb3V0U3Vic2NyaXB0aW9uSWQnLCBjaGVja291dC5pZClcclxuXHJcbiAgICByZXR1cm4gY2hlY2tvdXRcclxuICB9XHJcblxyXG4gIGNsZWFyQ2hlY2tvdXRTdWJzY3JpcHRpb25Gcm9tU2Vzc2lvbigpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgIGNvb2tpZS5yZW1vdmUoJ2NoZWNrb3V0U3Vic2NyaXB0aW9uSWQnKVxyXG5cclxuICAgIHJldHVybiBvZigpXHJcbiAgfVxyXG5cclxuICBjaGVja0NvdXBvbihuaWNrbmFtZTogc3RyaW5nLCB1c2VyRW1haWw6IHN0cmluZyk6IE9ic2VydmFibGU8Q291cG9uPiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja291dFN1YnNjcmlwdGlvbigpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XHJcbiAgICAgICAgdGhpcy5jb3Vwb25TZXJ2aWNlLmNoZWNrQ291cG9uKG5pY2tuYW1lLCB1c2VyRW1haWwsIENoZWNrb3V0VHlwZXMuU1VCU0NSSVBUSU9OLCBjaGVja291dC5zdWJzY3JpcHRpb25QbGFuLm5hbWUsIG51bGwsIHRydWUpLnBpcGUoKVxyXG4gICAgICApLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgY2FsY0Rpc2NvdW50U3Vic2NyaXB0aW9uKGNvdXBvbjogQ291cG9uKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja291dFN1YnNjcmlwdGlvbigpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XHJcbiAgICAgICAgdGhpcy5jb3Vwb25TZXJ2aWNlLmNhbGNEaXNjb3VudFN1YnNjcmlwdGlvbihjb3Vwb24sIGNoZWNrb3V0KS5waXBlKCksXHJcbiAgICAgICksXHJcbiAgICApXHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -1,75 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { Inject, Injectable } from '@angular/core';
3
- import { Checkout, CheckoutTypes, isNil, NotFoundError, pick, Shops } from '@infrab4a/connect';
4
- import cookie from 'js-cookie';
5
- import { from, of, throwError } from 'rxjs';
6
- import { concatMap } from 'rxjs/operators';
7
- import { DEFAULT_SHOP } from '../consts';
8
- import { CouponService } from './coupon.service';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "./coupon.service";
11
- import * as i2 from "@infrab4a/connect";
12
- export class CheckoutService {
13
- constructor(couponService, checkoutRepository, orderRepository, userRepository, defaultShop) {
14
- this.couponService = couponService;
15
- this.checkoutRepository = checkoutRepository;
16
- this.orderRepository = orderRepository;
17
- this.userRepository = userRepository;
18
- this.defaultShop = defaultShop;
19
- }
20
- getCheckout(checkoutData) {
21
- const checkoutId = cookie.get('checkoutId');
22
- if (!isNil(checkoutId))
23
- return from(this.checkoutRepository.get({ id: checkoutId }));
24
- return from(this.createCheckout(checkoutData));
25
- }
26
- getUserByCheckout(checkoutId) {
27
- return from(this.checkoutRepository.get({ id: checkoutId })).pipe(concatMap((checkout) => { var _a; return ((_a = checkout === null || checkout === void 0 ? void 0 : checkout.user) === null || _a === void 0 ? void 0 : _a.id) ? of(checkout.user) : from(this.userRepository.get({ id: checkout.user.id })); }), concatMap((user) => of(user) || throwError(() => new NotFoundError('User is not found'))));
28
- }
29
- updateCheckoutLineItems(checkout) {
30
- return from(this.checkoutRepository.update(Checkout.toInstance({ id: checkout.id, lineItems: checkout.lineItems })));
31
- }
32
- updateCheckoutUser(checkout) {
33
- return from(this.checkoutRepository.update(Checkout.toInstance({ id: checkout.id, user: checkout.user })));
34
- }
35
- clearCheckoutFromSession() {
36
- cookie.remove('checkoutId');
37
- return of();
38
- }
39
- calcDiscount(coupon) {
40
- return this.getCheckout().pipe(concatMap((checkout) => __awaiter(this, void 0, void 0, function* () { return yield this.couponService.calcDiscountShopping(coupon, checkout); })));
41
- }
42
- checkCoupon(nickname, checkoutType) {
43
- return this.getCheckout().pipe(concatMap((checkout) => {
44
- var _a;
45
- return this.couponService
46
- .checkCoupon(nickname, (_a = checkout.user) === null || _a === void 0 ? void 0 : _a.email, CheckoutTypes.ECOMMERCE, checkout.user.subscriptionPlan, checkout, false)
47
- .pipe();
48
- }));
49
- }
50
- createCheckout(checkoutData) {
51
- return __awaiter(this, void 0, void 0, function* () {
52
- const checkout = yield this.checkoutRepository.create(Object.assign(Object.assign({ createdAt: new Date() }, Checkout.toInstance(pick(checkoutData, ['user', 'shop'])).toPlain()), { shop: (checkoutData === null || checkoutData === void 0 ? void 0 : checkoutData.shop) || this.defaultShop }));
53
- cookie.set('checkoutId', checkout.id);
54
- return checkout;
55
- });
56
- }
57
- }
58
- CheckoutService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CheckoutService, deps: [{ token: i1.CouponService }, { token: 'CheckoutRepository' }, { token: 'OrderRepository' }, { token: 'UserRepository' }, { token: DEFAULT_SHOP }], target: i0.ɵɵFactoryTarget.Injectable });
59
- CheckoutService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CheckoutService });
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CheckoutService, decorators: [{
61
- type: Injectable
62
- }], ctorParameters: function () { return [{ type: i1.CouponService }, { type: undefined, decorators: [{
63
- type: Inject,
64
- args: ['CheckoutRepository']
65
- }] }, { type: undefined, decorators: [{
66
- type: Inject,
67
- args: ['OrderRepository']
68
- }] }, { type: undefined, decorators: [{
69
- type: Inject,
70
- args: ['UserRepository']
71
- }] }, { type: i2.Shops, decorators: [{
72
- type: Inject,
73
- args: [DEFAULT_SHOP]
74
- }] }]; } });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2hlY2tvdXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUNMLFFBQVEsRUFFUixhQUFhLEVBRWIsS0FBSyxFQUNMLGFBQWEsRUFFYixJQUFJLEVBQ0osS0FBSyxFQUdOLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFBO0FBQzlCLE9BQU8sRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7Ozs7QUFJaEQsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFDbUIsYUFBNEIsRUFDRSxrQkFBc0MsRUFDekMsZUFBZ0MsRUFDakMsY0FBOEIsRUFDbEMsV0FBa0I7UUFKeEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDRSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3pDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDbEMsZ0JBQVcsR0FBWCxXQUFXLENBQU87SUFDeEQsQ0FBQztJQUVKLFdBQVcsQ0FBQyxZQUFtQztRQUM3QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBRTNDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTyxJQUFJLENB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QixRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUN0RSxJQUFJLEVBQUUsQ0FBQSxZQUFZLGFBQVosWUFBWSx1QkFBWixZQUFZLENBQUUsSUFBSSxLQUFJLElBQUksQ0FBQyxXQUFXLElBQzVDLENBQUE7WUFFRixNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7WUFFckMsT0FBTyxRQUFRLENBQUE7UUFDakIsQ0FBQztLQUFBOzs2R0F6RVUsZUFBZSwrQ0FHaEIsb0JBQW9CLGFBQ3BCLGlCQUFpQixhQUNqQixnQkFBZ0IsYUFDaEIsWUFBWTtpSEFOWCxlQUFlOzRGQUFmLGVBQWU7a0JBRDNCLFVBQVU7OzBCQUlOLE1BQU07MkJBQUMsb0JBQW9COzswQkFDM0IsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQ3ZCLE1BQU07MkJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7XHJcbiAgQ2hlY2tvdXQsXHJcbiAgQ2hlY2tvdXRSZXBvc2l0b3J5LFxyXG4gIENoZWNrb3V0VHlwZXMsXHJcbiAgQ291cG9uLFxyXG4gIGlzTmlsLFxyXG4gIE5vdEZvdW5kRXJyb3IsXHJcbiAgT3JkZXJSZXBvc2l0b3J5LFxyXG4gIHBpY2ssXHJcbiAgU2hvcHMsXHJcbiAgVXNlcixcclxuICBVc2VyUmVwb3NpdG9yeVxyXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xyXG5pbXBvcnQgY29va2llIGZyb20gJ2pzLWNvb2tpZSdcclxuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBjb25jYXRNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuXHJcbmltcG9ydCB7IERFRkFVTFRfU0hPUCB9IGZyb20gJy4uL2NvbnN0cydcclxuXHJcbmltcG9ydCB7IENvdXBvblNlcnZpY2UgfSBmcm9tICcuL2NvdXBvbi5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBSZXF1aXJlZENoZWNrb3V0RGF0YSB9IGZyb20gJy4vdHlwZXMnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDaGVja291dFNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3Vwb25TZXJ2aWNlOiBDb3Vwb25TZXJ2aWNlLFxyXG4gICAgQEluamVjdCgnQ2hlY2tvdXRSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjaGVja291dFJlcG9zaXRvcnk6IENoZWNrb3V0UmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoJ09yZGVyUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgb3JkZXJSZXBvc2l0b3J5OiBPcmRlclJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KCdVc2VyUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgdXNlclJlcG9zaXRvcnk6IFVzZXJSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdChERUZBVUxUX1NIT1ApIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFNob3A6IFNob3BzLFxyXG4gICkge31cclxuXHJcbiAgZ2V0Q2hlY2tvdXQoY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dERhdGEpOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XHJcbiAgICBjb25zdCBjaGVja291dElkID0gY29va2llLmdldCgnY2hlY2tvdXRJZCcpXHJcblxyXG4gICAgaWYgKCFpc05pbChjaGVja291dElkKSkgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNoZWNrb3V0SWQgfSkpXHJcblxyXG4gICAgcmV0dXJuIGZyb20odGhpcy5jcmVhdGVDaGVja291dChjaGVja291dERhdGEpKVxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckJ5Q2hlY2tvdXQoY2hlY2tvdXRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxVc2VyPiB7XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmNoZWNrb3V0UmVwb3NpdG9yeS5nZXQoeyBpZDogY2hlY2tvdXRJZCB9KSkucGlwZShcclxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT5cclxuICAgICAgICBjaGVja291dD8udXNlcj8uaWQgPyBvZihjaGVja291dC51c2VyKSA6IGZyb20odGhpcy51c2VyUmVwb3NpdG9yeS5nZXQoeyBpZDogY2hlY2tvdXQudXNlci5pZCB9KSksXHJcbiAgICAgICksXHJcbiAgICAgIGNvbmNhdE1hcCgodXNlcikgPT4gb2YodXNlcikgfHwgdGhyb3dFcnJvcigoKSA9PiBuZXcgTm90Rm91bmRFcnJvcignVXNlciBpcyBub3QgZm91bmQnKSkpLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+KTogT2JzZXJ2YWJsZTxDaGVja291dD4ge1xyXG4gICAgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFJlcG9zaXRvcnkudXBkYXRlKENoZWNrb3V0LnRvSW5zdGFuY2UoeyBpZDogY2hlY2tvdXQuaWQsIGxpbmVJdGVtczogY2hlY2tvdXQubGluZUl0ZW1zIH0pKSlcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNoZWNrb3V0VXNlcihjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmNoZWNrb3V0UmVwb3NpdG9yeS51cGRhdGUoQ2hlY2tvdXQudG9JbnN0YW5jZSh7IGlkOiBjaGVja291dC5pZCwgdXNlcjogY2hlY2tvdXQudXNlciB9KSkpXHJcbiAgfVxyXG5cclxuICBjbGVhckNoZWNrb3V0RnJvbVNlc3Npb24oKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICBjb29raWUucmVtb3ZlKCdjaGVja291dElkJylcclxuXHJcbiAgICByZXR1cm4gb2YoKVxyXG4gIH1cclxuXHJcbiAgY2FsY0Rpc2NvdW50KGNvdXBvbjogQ291cG9uKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja291dCgpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcChhc3luYyAoY2hlY2tvdXQpID0+IGF3YWl0IHRoaXMuY291cG9uU2VydmljZS5jYWxjRGlzY291bnRTaG9wcGluZyhjb3Vwb24sIGNoZWNrb3V0KSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBjaGVja0NvdXBvbihuaWNrbmFtZTogc3RyaW5nLCBjaGVja291dFR5cGU6IENoZWNrb3V0VHlwZXMpOiBPYnNlcnZhYmxlPENvdXBvbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hlY2tvdXQoKS5waXBlKFxyXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PlxyXG4gICAgICAgIHRoaXMuY291cG9uU2VydmljZVxyXG4gICAgICAgICAgLmNoZWNrQ291cG9uKFxyXG4gICAgICAgICAgICBuaWNrbmFtZSxcclxuICAgICAgICAgICAgY2hlY2tvdXQudXNlcj8uZW1haWwsXHJcbiAgICAgICAgICAgIENoZWNrb3V0VHlwZXMuRUNPTU1FUkNFLFxyXG4gICAgICAgICAgICBjaGVja291dC51c2VyLnN1YnNjcmlwdGlvblBsYW4sXHJcbiAgICAgICAgICAgIGNoZWNrb3V0LFxyXG4gICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnBpcGUoKSxcclxuICAgICAgKSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlQ2hlY2tvdXQoY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dERhdGEpOiBQcm9taXNlPENoZWNrb3V0PiB7XHJcbiAgICBjb25zdCBjaGVja291dCA9IGF3YWl0IHRoaXMuY2hlY2tvdXRSZXBvc2l0b3J5LmNyZWF0ZSh7XHJcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKSxcclxuICAgICAgLi4uQ2hlY2tvdXQudG9JbnN0YW5jZShwaWNrKGNoZWNrb3V0RGF0YSwgWyd1c2VyJywgJ3Nob3AnXSkpLnRvUGxhaW4oKSxcclxuICAgICAgc2hvcDogY2hlY2tvdXREYXRhPy5zaG9wIHx8IHRoaXMuZGVmYXVsdFNob3AsXHJcbiAgICB9KVxyXG5cclxuICAgIGNvb2tpZS5zZXQoJ2NoZWNrb3V0SWQnLCBjaGVja291dC5pZClcclxuXHJcbiAgICByZXR1cm4gY2hlY2tvdXRcclxuICB9XHJcbn1cclxuIl19