@infrab4a/connect-angular 5.7.5-beta.0 → 5.7.5

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 (198) hide show
  1. package/angular-connect.module.d.ts +36 -0
  2. package/angular-elastic-search.module.d.ts +9 -0
  3. package/angular-firebase-auth.module.d.ts +11 -0
  4. package/angular-firestore.module.d.ts +17 -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/esm2020/angular-connect.module.mjs +291 -0
  18. package/esm2020/angular-elastic-search.module.mjs +34 -0
  19. package/esm2020/angular-firebase-auth.module.mjs +141 -0
  20. package/esm2020/angular-firestore.module.mjs +569 -0
  21. package/esm2020/angular-hasura-graphql.module.mjs +421 -0
  22. package/esm2020/angular-vertex-search.module.mjs +34 -0
  23. package/esm2020/consts/backend-url.const.mjs +2 -0
  24. package/esm2020/consts/category-structure.mjs +2 -0
  25. package/esm2020/consts/default-shop.const.mjs +2 -0
  26. package/esm2020/consts/es-config.const.mjs +2 -0
  27. package/esm2020/consts/firebase-const.mjs +5 -0
  28. package/esm2020/consts/hasura-options.const.mjs +2 -0
  29. package/esm2020/consts/index.mjs +9 -0
  30. package/esm2020/consts/persistence.const.mjs +2 -0
  31. package/esm2020/consts/storage-base-url.const.mjs +2 -0
  32. package/esm2020/consts/vertex-config.const.mjs +2 -0
  33. package/esm2020/helpers/index.mjs +2 -0
  34. package/esm2020/helpers/mobile-operation-system-checker.helper.mjs +7 -0
  35. package/esm2020/index.mjs +7 -0
  36. package/esm2020/infrab4a-connect-angular.mjs +5 -0
  37. package/esm2020/interfaces/catalog-strategies.interface.mjs +2 -0
  38. package/esm2020/interfaces/category-facades.interface.mjs +2 -0
  39. package/esm2020/interfaces/index.mjs +3 -0
  40. package/esm2020/persistence/cookie-data-persistence.mjs +22 -0
  41. package/esm2020/persistence/data-persistence.mjs +2 -0
  42. package/esm2020/persistence/index.mjs +3 -0
  43. package/esm2020/services/auth.service.mjs +37 -0
  44. package/esm2020/services/cart/cart-services.facade.mjs +21 -0
  45. package/esm2020/services/cart/index.mjs +2 -0
  46. package/esm2020/services/cart.service.mjs +73 -0
  47. package/esm2020/services/catalog/adapters/category-structure.adapter.mjs +2 -0
  48. package/esm2020/services/catalog/adapters/index.mjs +4 -0
  49. package/esm2020/services/catalog/adapters/new-category-structure.adapter.mjs +43 -0
  50. package/esm2020/services/catalog/adapters/old-category-structure.adapter.mjs +23 -0
  51. package/esm2020/services/catalog/catalog.service.mjs +111 -0
  52. package/esm2020/services/catalog/category.service.mjs +42 -0
  53. package/esm2020/services/catalog/context/catalog-search.context.mjs +40 -0
  54. package/esm2020/services/catalog/enums/index.mjs +2 -0
  55. package/esm2020/services/catalog/enums/product-sorts.enum.mjs +11 -0
  56. package/esm2020/services/catalog/facades/catalog-service.facade.mjs +32 -0
  57. package/esm2020/services/catalog/facades/catalog-strategies.facade.mjs +17 -0
  58. package/esm2020/services/catalog/facades/category-repository.facade.mjs +20 -0
  59. package/esm2020/services/catalog/facades/category-service.facade.mjs +30 -0
  60. package/esm2020/services/catalog/facades/index.mjs +6 -0
  61. package/esm2020/services/catalog/facades/product-catalog.facade.mjs +21 -0
  62. package/esm2020/services/catalog/helpers/brand-manager.helper.mjs +62 -0
  63. package/esm2020/services/catalog/helpers/catalog-filter.helper.mjs +44 -0
  64. package/esm2020/services/catalog/helpers/catalog-sort.helper.mjs +52 -0
  65. package/esm2020/services/catalog/helpers/index.mjs +5 -0
  66. package/esm2020/services/catalog/helpers/product-fields.helper.mjs +43 -0
  67. package/esm2020/services/catalog/index.mjs +8 -0
  68. package/esm2020/services/catalog/models/category-with-tree.model.mjs +10 -0
  69. package/esm2020/services/catalog/models/index.mjs +2 -0
  70. package/esm2020/services/catalog/services/catalog-helpers.service.mjs +33 -0
  71. package/esm2020/services/catalog/services/catalog-operations.facade.mjs +26 -0
  72. package/esm2020/services/catalog/services/catalog-repository.service.mjs +25 -0
  73. package/esm2020/services/catalog/services/index.mjs +5 -0
  74. package/esm2020/services/catalog/services/product-management.facade.mjs +25 -0
  75. package/esm2020/services/catalog/strategies/category-search.strategy.mjs +133 -0
  76. package/esm2020/services/catalog/strategies/index.mjs +4 -0
  77. package/esm2020/services/catalog/strategies/profile-search.strategy.mjs +42 -0
  78. package/esm2020/services/catalog/strategies/term-search.strategy.mjs +126 -0
  79. package/esm2020/services/catalog/strategies/types/strategy-params.type.mjs +2 -0
  80. package/esm2020/services/catalog/types/fetch-products-options.type.mjs +2 -0
  81. package/esm2020/services/catalog/types/fetch-products-params.type.mjs +2 -0
  82. package/esm2020/services/catalog/types/fetch-products-response.type.mjs +2 -0
  83. package/esm2020/services/catalog/types/index.mjs +6 -0
  84. package/esm2020/services/catalog/types/method-params.type.mjs +2 -0
  85. package/esm2020/services/catalog/types/product-sort.type.mjs +2 -0
  86. package/esm2020/services/catalog/wishlist.service.mjs +258 -0
  87. package/esm2020/services/checkout/checkout-dependencies.facade.mjs +20 -0
  88. package/esm2020/services/checkout/checkout-repositories.facade.mjs +20 -0
  89. package/esm2020/services/checkout/index.mjs +3 -0
  90. package/esm2020/services/checkout-subscription.service.mjs +55 -0
  91. package/esm2020/services/checkout.service.mjs +106 -0
  92. package/esm2020/services/coupon/coupon-repositories.facade.mjs +24 -0
  93. package/esm2020/services/coupon/index.mjs +2 -0
  94. package/esm2020/services/coupon/types/coupon-params.type.mjs +2 -0
  95. package/esm2020/services/coupon.service.mjs +248 -0
  96. package/esm2020/services/helpers/index.mjs +2 -0
  97. package/esm2020/services/helpers/util.helper.mjs +18 -0
  98. package/esm2020/services/home-shop/home-shop-repositories.facade.mjs +24 -0
  99. package/esm2020/services/home-shop/index.mjs +2 -0
  100. package/esm2020/services/home-shop.service.mjs +119 -0
  101. package/esm2020/services/index.mjs +11 -0
  102. package/esm2020/services/order-product-review.service.mjs +126 -0
  103. package/esm2020/services/order.service.mjs +30 -0
  104. package/esm2020/services/shared/configuration.facade.mjs +29 -0
  105. package/esm2020/services/shared/index.mjs +2 -0
  106. package/esm2020/services/types/index.mjs +5 -0
  107. package/esm2020/services/types/pending-product-review.type.mjs +2 -0
  108. package/esm2020/services/types/product-review-create.type.mjs +2 -0
  109. package/esm2020/services/types/required-checkout-data.type.mjs +2 -0
  110. package/esm2020/services/types/required-checkout-subscription-data.type.mjs +2 -0
  111. package/esm2020/types/firebase-app-config.type.mjs +2 -0
  112. package/esm2020/types/index.mjs +2 -0
  113. package/fesm2015/infrab4a-connect-angular.mjs +3630 -0
  114. package/fesm2015/infrab4a-connect-angular.mjs.map +1 -0
  115. package/{fesm2022 → fesm2020}/infrab4a-connect-angular.mjs +3433 -3384
  116. package/fesm2020/infrab4a-connect-angular.mjs.map +1 -0
  117. package/helpers/index.d.ts +1 -0
  118. package/helpers/mobile-operation-system-checker.helper.d.ts +3 -0
  119. package/index.d.ts +6 -0
  120. package/interfaces/catalog-strategies.interface.d.ts +31 -0
  121. package/interfaces/category-facades.interface.d.ts +6 -0
  122. package/interfaces/index.d.ts +2 -0
  123. package/package.json +19 -12
  124. package/persistence/cookie-data-persistence.d.ts +10 -0
  125. package/persistence/data-persistence.d.ts +6 -0
  126. package/persistence/index.d.ts +2 -0
  127. package/services/auth.service.d.ts +18 -0
  128. package/services/cart/cart-services.facade.d.ts +12 -0
  129. package/services/cart/index.d.ts +1 -0
  130. package/services/cart.service.d.ts +26 -0
  131. package/services/catalog/adapters/category-structure.adapter.d.ts +4 -0
  132. package/services/catalog/adapters/index.d.ts +3 -0
  133. package/services/catalog/adapters/new-category-structure.adapter.d.ts +12 -0
  134. package/services/catalog/adapters/old-category-structure.adapter.d.ts +10 -0
  135. package/services/catalog/catalog.service.d.ts +24 -0
  136. package/services/catalog/category.service.d.ts +23 -0
  137. package/services/catalog/context/catalog-search.context.d.ts +14 -0
  138. package/services/catalog/enums/index.d.ts +1 -0
  139. package/services/catalog/enums/product-sorts.enum.d.ts +9 -0
  140. package/services/catalog/facades/catalog-service.facade.d.ts +15 -0
  141. package/services/catalog/facades/catalog-strategies.facade.d.ts +10 -0
  142. package/services/catalog/facades/category-repository.facade.d.ts +9 -0
  143. package/services/catalog/facades/category-service.facade.d.ts +15 -0
  144. package/services/catalog/facades/index.d.ts +5 -0
  145. package/services/catalog/facades/product-catalog.facade.d.ts +10 -0
  146. package/services/catalog/helpers/brand-manager.helper.d.ts +14 -0
  147. package/services/catalog/helpers/catalog-filter.helper.d.ts +8 -0
  148. package/services/catalog/helpers/catalog-sort.helper.d.ts +7 -0
  149. package/services/catalog/helpers/index.d.ts +4 -0
  150. package/services/catalog/helpers/product-fields.helper.d.ts +7 -0
  151. package/services/catalog/index.d.ts +7 -0
  152. package/services/catalog/models/category-with-tree.model.d.ts +4 -0
  153. package/services/catalog/models/index.d.ts +1 -0
  154. package/services/catalog/services/catalog-helpers.service.d.ts +17 -0
  155. package/services/catalog/services/catalog-operations.facade.d.ts +13 -0
  156. package/services/catalog/services/catalog-repository.service.d.ts +12 -0
  157. package/services/catalog/services/index.d.ts +4 -0
  158. package/services/catalog/services/product-management.facade.d.ts +12 -0
  159. package/services/catalog/strategies/category-search.strategy.d.ts +19 -0
  160. package/services/catalog/strategies/index.d.ts +3 -0
  161. package/services/catalog/strategies/profile-search.strategy.d.ts +14 -0
  162. package/services/catalog/strategies/term-search.strategy.d.ts +20 -0
  163. package/services/catalog/strategies/types/strategy-params.type.d.ts +59 -0
  164. package/services/catalog/types/fetch-products-options.type.d.ts +8 -0
  165. package/services/catalog/types/fetch-products-params.type.d.ts +25 -0
  166. package/services/catalog/types/fetch-products-response.type.d.ts +19 -0
  167. package/services/catalog/types/index.d.ts +5 -0
  168. package/services/catalog/types/method-params.type.d.ts +17 -0
  169. package/services/catalog/types/product-sort.type.d.ts +2 -0
  170. package/services/catalog/wishlist.service.d.ts +60 -0
  171. package/services/checkout/checkout-dependencies.facade.d.ts +10 -0
  172. package/services/checkout/checkout-repositories.facade.d.ts +9 -0
  173. package/services/checkout/index.d.ts +2 -0
  174. package/services/checkout-subscription.service.d.ts +19 -0
  175. package/services/checkout.service.d.ts +30 -0
  176. package/services/coupon/coupon-repositories.facade.d.ts +10 -0
  177. package/services/coupon/index.d.ts +1 -0
  178. package/services/coupon/types/coupon-params.type.d.ts +13 -0
  179. package/services/coupon.service.d.ts +36 -0
  180. package/services/helpers/index.d.ts +1 -0
  181. package/services/helpers/util.helper.d.ts +3 -0
  182. package/services/home-shop/home-shop-repositories.facade.d.ts +10 -0
  183. package/services/home-shop/index.d.ts +1 -0
  184. package/services/home-shop.service.d.ts +26 -0
  185. package/services/index.d.ts +10 -0
  186. package/services/order-product-review.service.d.ts +18 -0
  187. package/services/order.service.d.ts +13 -0
  188. package/services/shared/configuration.facade.d.ts +12 -0
  189. package/services/shared/index.d.ts +1 -0
  190. package/services/types/index.d.ts +4 -0
  191. package/services/types/pending-product-review.type.d.ts +12 -0
  192. package/services/types/product-review-create.type.d.ts +14 -0
  193. package/services/types/required-checkout-data.type.d.ts +2 -0
  194. package/services/types/required-checkout-subscription-data.type.d.ts +2 -0
  195. package/types/firebase-app-config.type.d.ts +1 -0
  196. package/types/index.d.ts +1 -0
  197. package/fesm2022/infrab4a-connect-angular.mjs.map +0 -1
  198. package/types/infrab4a-connect-angular.d.ts +0 -758
@@ -0,0 +1,258 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { PersonTypes, Shops, Wishlist, WishlistLogType, } from '@infrab4a/connect';
3
+ import { DEFAULT_SHOP } from '../../consts';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@infrab4a/connect";
6
+ export class WishlistService {
7
+ constructor(wishlistRepository, productRepository, productCatalogRepository, logRepository, shop) {
8
+ this.wishlistRepository = wishlistRepository;
9
+ this.productRepository = productRepository;
10
+ this.productCatalogRepository = productCatalogRepository;
11
+ this.logRepository = logRepository;
12
+ this.shop = shop;
13
+ }
14
+ initializeServices(catalogServiceFacade, categoryServiceFacade) {
15
+ this.catalogService = catalogServiceFacade.getCatalogService();
16
+ this.categoryService = categoryServiceFacade.getCategoryService();
17
+ }
18
+ getCatalogService() {
19
+ return this.catalogService;
20
+ }
21
+ getCategoryService() {
22
+ return this.categoryService;
23
+ }
24
+ async create({ personId, title, description, published, userFullName, userPhoto, theme, bannerUrl, personType, personIsSubscriber, }) {
25
+ const wishlistData = this.buildWishlistData({
26
+ title,
27
+ description,
28
+ published,
29
+ userFullName,
30
+ userPhoto,
31
+ theme,
32
+ bannerUrl,
33
+ personType,
34
+ personIsSubscriber,
35
+ personId,
36
+ });
37
+ const existingWishlist = await this.findExistingWishlistByPersonId(personId);
38
+ await this.createWishlistLog(WishlistLogType.CREATE, wishlistData);
39
+ if (existingWishlist)
40
+ return existingWishlist;
41
+ return this.createNewWishlist(wishlistData);
42
+ }
43
+ buildWishlistData({ title, description, published, userFullName, userPhoto, theme, bannerUrl, personType, personIsSubscriber, personId, }) {
44
+ return {
45
+ slug: '',
46
+ name: title,
47
+ description,
48
+ metadatas: [
49
+ {
50
+ shop: this.shop,
51
+ title: `${userFullName} - ${title}`,
52
+ description: `${userFullName} - ${description}`,
53
+ },
54
+ ],
55
+ shop: this.shop,
56
+ shops: [this.shop],
57
+ personId,
58
+ personName: userFullName,
59
+ personPhoto: userPhoto,
60
+ brandCategory: false,
61
+ published,
62
+ theme,
63
+ bannerUrl,
64
+ personType: personType ?? PersonTypes.NONE,
65
+ personIsSubscriber: personIsSubscriber ?? false,
66
+ };
67
+ }
68
+ async findExistingWishlistByPersonId(personId) {
69
+ const hasWishlist = await this.wishlistRepository
70
+ .find({
71
+ filters: {
72
+ personId,
73
+ },
74
+ options: {
75
+ enableCount: false,
76
+ },
77
+ orderBy: {
78
+ id: 'asc',
79
+ },
80
+ })
81
+ .then((res) => res.data);
82
+ return hasWishlist.length ? hasWishlist.at(0) : null;
83
+ }
84
+ async createNewWishlist(data) {
85
+ const newWishlist = await this.wishlistRepository.create(data);
86
+ await this.wishlistRepository.update({ id: newWishlist.id, slug: newWishlist.id });
87
+ return Wishlist.toInstance({ ...newWishlist.toPlain(), slug: newWishlist.id });
88
+ }
89
+ async update({ id, title, description, published, userFullName, userPhoto, theme, bannerUrl, personType, personIsSubscriber, }) {
90
+ const data = {
91
+ id,
92
+ name: title,
93
+ description,
94
+ published,
95
+ metadatas: [
96
+ {
97
+ shop: this.shop,
98
+ title: `${userFullName} - ${title}`,
99
+ description: `${userFullName} - ${description}`,
100
+ },
101
+ ],
102
+ personName: userFullName,
103
+ personPhoto: userPhoto,
104
+ theme,
105
+ bannerUrl,
106
+ personType: personType ?? PersonTypes.NONE,
107
+ personIsSubscriber: personIsSubscriber ?? false,
108
+ };
109
+ await this.createWishlistLog(WishlistLogType.UPDATE, data);
110
+ return this.wishlistRepository.update(data);
111
+ }
112
+ async delete(wishlistId) {
113
+ const wishlist = await this.findById(wishlistId);
114
+ await this.createWishlistLog(WishlistLogType.DELETE, wishlist);
115
+ return this.wishlistRepository.delete({ id: wishlistId });
116
+ }
117
+ getWishlistBySlug(slug) {
118
+ const [id] = slug.split('-');
119
+ if (+id)
120
+ return this.wishlistRepository.get({ id });
121
+ return this.wishlistRepository.getWishlistBySlug(slug);
122
+ }
123
+ getWishlistsByPerson(personId) {
124
+ return this.wishlistRepository.getWishlistByPerson(personId);
125
+ }
126
+ async addProduct(wishlistId, productId) {
127
+ const wishlist = await this.wishlistRepository.get({ id: wishlistId });
128
+ const hasProduct = wishlist.products.some((p) => p == productId);
129
+ const wishlistData = await this.findById(wishlistId);
130
+ const productData = await this.findProductById(productId);
131
+ await this.createWishlistLog(WishlistLogType.ADD_PRODUCT, wishlistData, productData);
132
+ if (!hasProduct) {
133
+ wishlist.products = [...wishlist.products, productId];
134
+ await this.wishlistRepository.addProduct(wishlistId, productId);
135
+ }
136
+ return wishlist;
137
+ }
138
+ async removeProduct(wishlistId, productId) {
139
+ const wishlist = await this.wishlistRepository.get({ id: wishlistId });
140
+ const productIndex = wishlist.products.findIndex((p) => p == productId);
141
+ if (productIndex != -1) {
142
+ wishlist.products.splice(productIndex, 1);
143
+ const wishlistData = await this.findById(wishlistId);
144
+ const productData = await this.findProductById(productId);
145
+ await this.createWishlistLog(WishlistLogType.REMOVE_PRODUCT, wishlistData, productData);
146
+ await this.wishlistRepository.removeProduct(wishlistId, productId);
147
+ }
148
+ return wishlist;
149
+ }
150
+ async findById(id) {
151
+ return this.wishlistRepository
152
+ .find({
153
+ fields: ['id', 'name', 'description', 'personId', 'personIsSubscriber', 'personType', 'personName'],
154
+ filters: {
155
+ id,
156
+ },
157
+ })
158
+ .then((res) => res.data.at(0));
159
+ }
160
+ async findProductById(id) {
161
+ return this.productCatalogRepository
162
+ .find({
163
+ fields: ['id', 'sku', 'EAN', 'name', 'brand'],
164
+ filters: {
165
+ id,
166
+ },
167
+ })
168
+ .then((res) => res.data.at(0));
169
+ }
170
+ async createWishlistLog(type, wishlist, product) {
171
+ switch (type) {
172
+ case WishlistLogType.CREATE:
173
+ case WishlistLogType.UPDATE:
174
+ case WishlistLogType.DELETE:
175
+ await this.createWishlistOperationLog(type, wishlist);
176
+ break;
177
+ case WishlistLogType.ADD_PRODUCT:
178
+ case WishlistLogType.REMOVE_PRODUCT:
179
+ await this.createWishlistProductLog(type, wishlist, product);
180
+ break;
181
+ default:
182
+ break;
183
+ }
184
+ }
185
+ async createWishlistOperationLog(type, wishlist) {
186
+ const operation = this.getOperationTypeFromWishlistLogType(type);
187
+ await this.logRepository.create({
188
+ collection: 'wishlist',
189
+ date: new Date(),
190
+ operation,
191
+ documentId: wishlist.id,
192
+ document: this.buildWishlistLogDocument(wishlist, type),
193
+ });
194
+ }
195
+ async createWishlistProductLog(type, wishlist, product) {
196
+ await this.logRepository.create({
197
+ collection: 'wishlist',
198
+ date: new Date(),
199
+ operation: 'UPDATE',
200
+ documentId: wishlist.id,
201
+ document: {
202
+ ...this.buildWishlistLogDocument(wishlist, type),
203
+ ...this.buildProductLogData(product),
204
+ },
205
+ });
206
+ }
207
+ getOperationTypeFromWishlistLogType(type) {
208
+ if (type === WishlistLogType.CREATE)
209
+ return 'CREATE';
210
+ if (type === WishlistLogType.UPDATE)
211
+ return 'UPDATE';
212
+ return 'DELETE';
213
+ }
214
+ buildWishlistLogDocument(wishlist, type) {
215
+ return {
216
+ id: wishlist.id,
217
+ shop: this.shop,
218
+ name: wishlist.name,
219
+ description: wishlist.description,
220
+ published: wishlist.published,
221
+ type: type,
222
+ personType: wishlist.personType,
223
+ personId: wishlist.personId,
224
+ personName: wishlist.personName,
225
+ personIsSubscriber: wishlist.personIsSubscriber,
226
+ };
227
+ }
228
+ buildProductLogData(product) {
229
+ return {
230
+ productId: product.id,
231
+ productEAN: product.EAN,
232
+ productSKU: product.sku,
233
+ productName: product.name,
234
+ productBrand: product.brand,
235
+ };
236
+ }
237
+ }
238
+ WishlistService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: WishlistService, deps: [{ token: 'WishlistRepository' }, { token: 'ProductRepository' }, { token: 'ProductCatalogRepository' }, { token: 'LogRepository' }, { token: DEFAULT_SHOP }], target: i0.ɵɵFactoryTarget.Injectable });
239
+ WishlistService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: WishlistService });
240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: WishlistService, decorators: [{
241
+ type: Injectable
242
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
243
+ type: Inject,
244
+ args: ['WishlistRepository']
245
+ }] }, { type: undefined, decorators: [{
246
+ type: Inject,
247
+ args: ['ProductRepository']
248
+ }] }, { type: undefined, decorators: [{
249
+ type: Inject,
250
+ args: ['ProductCatalogRepository']
251
+ }] }, { type: undefined, decorators: [{
252
+ type: Inject,
253
+ args: ['LogRepository']
254
+ }] }, { type: i1.Shops, decorators: [{
255
+ type: Inject,
256
+ args: [DEFAULT_SHOP]
257
+ }] }]; } });
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lzaGxpc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2F0YWxvZy93aXNobGlzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFHTCxXQUFXLEVBSVgsS0FBSyxFQUNMLFFBQVEsRUFDUixlQUFlLEdBRWhCLE1BQU0sbUJBQW1CLENBQUE7QUFFMUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQTs7O0FBTzNDLE1BQU0sT0FBTyxlQUFlO0lBSTFCLFlBQ2lELGtCQUFzQyxFQUN2QyxpQkFBb0MsRUFDN0Isd0JBQWtELEVBQzdELGFBQTRCLEVBQy9CLElBQVc7UUFKSCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3ZDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDN0IsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUM3RCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMvQixTQUFJLEdBQUosSUFBSSxDQUFPO0lBQ2pELENBQUM7SUFFSixrQkFBa0IsQ0FBQyxvQkFBMEMsRUFBRSxxQkFBNEM7UUFDekcsSUFBSSxDQUFDLGNBQWMsR0FBRyxvQkFBb0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1FBQzlELElBQUksQ0FBQyxlQUFlLEdBQUcscUJBQXFCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtJQUNuRSxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFBO0lBQzVCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFBO0lBQzdCLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQ1gsUUFBUSxFQUNSLEtBQUss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QyxXQUFXO1lBQ2pDLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztZQUM3QixJQUFJLEVBQUUsSUFBSTtZQUNWLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtZQUMvQixRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVE7WUFDM0IsVUFBVSxFQUFFLFFBQVEsQ0FBQyxVQUFVO1lBQy9CLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxrQkFBa0I7U0FDaEQsQ0FBQTtJQUNILENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxPQUFnQjtRQUMxQyxPQUFPO1lBQ0wsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1lBQ3JCLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRztZQUN2QixVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUc7WUFDdkIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQ3pCLFlBQVksRUFBRSxPQUFPLENBQUMsS0FBSztTQUM1QixDQUFBO0lBQ0gsQ0FBQzs7NEdBclZVLGVBQWUsa0JBS2hCLG9CQUFvQixhQUNwQixtQkFBbUIsYUFDbkIsMEJBQTBCLGFBQzFCLGVBQWUsYUFDZixZQUFZO2dIQVRYLGVBQWU7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVTs7MEJBTU4sTUFBTTsyQkFBQyxvQkFBb0I7OzBCQUMzQixNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQzFCLE1BQU07MkJBQUMsMEJBQTBCOzswQkFDakMsTUFBTTsyQkFBQyxlQUFlOzswQkFDdEIsTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHtcclxuICBMb2dSZXBvc2l0b3J5LFxyXG4gIFBlcnNvblR5cGUsXHJcbiAgUGVyc29uVHlwZXMsXHJcbiAgUHJvZHVjdCxcclxuICBQcm9kdWN0Q2F0YWxvZ1JlcG9zaXRvcnksXHJcbiAgUHJvZHVjdFJlcG9zaXRvcnksXHJcbiAgU2hvcHMsXHJcbiAgV2lzaGxpc3QsXHJcbiAgV2lzaGxpc3RMb2dUeXBlLFxyXG4gIFdpc2hsaXN0UmVwb3NpdG9yeSxcclxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcclxuXHJcbmltcG9ydCB7IERFRkFVTFRfU0hPUCB9IGZyb20gJy4uLy4uL2NvbnN0cydcclxuXHJcbmltcG9ydCB7IENhdGFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9jYXRhbG9nLnNlcnZpY2UnXHJcbmltcG9ydCB7IENhdGVnb3J5U2VydmljZSB9IGZyb20gJy4vY2F0ZWdvcnkuc2VydmljZSdcclxuaW1wb3J0IHsgQ2F0YWxvZ1NlcnZpY2VGYWNhZGUsIENhdGVnb3J5U2VydmljZUZhY2FkZSB9IGZyb20gJy4vZmFjYWRlcydcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFdpc2hsaXN0U2VydmljZSB7XHJcbiAgcHJpdmF0ZSBjYXRhbG9nU2VydmljZTogQ2F0YWxvZ1NlcnZpY2VcclxuICBwcml2YXRlIGNhdGVnb3J5U2VydmljZTogQ2F0ZWdvcnlTZXJ2aWNlXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnV2lzaGxpc3RSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSB3aXNobGlzdFJlcG9zaXRvcnk6IFdpc2hsaXN0UmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoJ1Byb2R1Y3RSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0UmVwb3NpdG9yeTogUHJvZHVjdFJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KCdQcm9kdWN0Q2F0YWxvZ1JlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RDYXRhbG9nUmVwb3NpdG9yeTogUHJvZHVjdENhdGFsb2dSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnTG9nUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgbG9nUmVwb3NpdG9yeTogTG9nUmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoREVGQVVMVF9TSE9QKSBwcml2YXRlIHJlYWRvbmx5IHNob3A6IFNob3BzLFxyXG4gICkge31cclxuXHJcbiAgaW5pdGlhbGl6ZVNlcnZpY2VzKGNhdGFsb2dTZXJ2aWNlRmFjYWRlOiBDYXRhbG9nU2VydmljZUZhY2FkZSwgY2F0ZWdvcnlTZXJ2aWNlRmFjYWRlOiBDYXRlZ29yeVNlcnZpY2VGYWNhZGUpOiB2b2lkIHtcclxuICAgIHRoaXMuY2F0YWxvZ1NlcnZpY2UgPSBjYXRhbG9nU2VydmljZUZhY2FkZS5nZXRDYXRhbG9nU2VydmljZSgpXHJcbiAgICB0aGlzLmNhdGVnb3J5U2VydmljZSA9IGNhdGVnb3J5U2VydmljZUZhY2FkZS5nZXRDYXRlZ29yeVNlcnZpY2UoKVxyXG4gIH1cclxuXHJcbiAgZ2V0Q2F0YWxvZ1NlcnZpY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jYXRhbG9nU2VydmljZVxyXG4gIH1cclxuXHJcbiAgZ2V0Q2F0ZWdvcnlTZXJ2aWNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY2F0ZWdvcnlTZXJ2aWNlXHJcbiAgfVxyXG5cclxuICBhc3luYyBjcmVhdGUoe1xyXG4gICAgcGVyc29uSWQsXHJcbiAgICB0aXRsZSxcclxuICAgIGRlc2NyaXB0aW9uLFxyXG4gICAgcHVibGlzaGVkLFxyXG4gICAgdXNlckZ1bGxOYW1lLFxyXG4gICAgdXNlclBob3RvLFxyXG4gICAgdGhlbWUsXHJcbiAgICBiYW5uZXJVcmwsXHJcbiAgICBwZXJzb25UeXBlLFxyXG4gICAgcGVyc29uSXNTdWJzY3JpYmVyLFxyXG4gIH06IHtcclxuICAgIHBlcnNvbklkOiBzdHJpbmdcclxuICAgIHRpdGxlOiBzdHJpbmdcclxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmdcclxuICAgIHB1Ymxpc2hlZDogYm9vbGVhblxyXG4gICAgdXNlckZ1bGxOYW1lOiBzdHJpbmdcclxuICAgIHVzZXJQaG90bz86IHN0cmluZ1xyXG4gICAgdGhlbWU/OiBzdHJpbmdcclxuICAgIGJhbm5lclVybD86IHN0cmluZ1xyXG4gICAgcGVyc29uVHlwZT86IFBlcnNvblR5cGVcclxuICAgIHBlcnNvbklzU3Vic2NyaWJlcj86IGJvb2xlYW5cclxuICB9KTogUHJvbWlzZTxXaXNobGlzdD4ge1xyXG4gICAgY29uc3Qgd2lzaGxpc3REYXRhID0gdGhpcy5idWlsZFdpc2hsaXN0RGF0YSh7XHJcbiAgICAgIHRpdGxlLFxyXG4gICAgICBkZXNjcmlwdGlvbixcclxuICAgICAgcHVibGlzaGVkLFxyXG4gICAgICB1c2VyRnVsbE5hbWUsXHJcbiAgICAgIHVzZXJQaG90byxcclxuICAgICAgdGhlbWUsXHJcbiAgICAgIGJhbm5lclVybCxcclxuICAgICAgcGVyc29uVHlwZSxcclxuICAgICAgcGVyc29uSXNTdWJzY3JpYmVyLFxyXG4gICAgICBwZXJzb25JZCxcclxuICAgIH0pXHJcblxyXG4gICAgY29uc3QgZXhpc3RpbmdXaXNobGlzdCA9IGF3YWl0IHRoaXMuZmluZEV4aXN0aW5nV2lzaGxpc3RCeVBlcnNvbklkKHBlcnNvbklkKVxyXG5cclxuICAgIGF3YWl0IHRoaXMuY3JlYXRlV2lzaGxpc3RMb2coV2lzaGxpc3RMb2dUeXBlLkNSRUFURSwgd2lzaGxpc3REYXRhIGFzIFdpc2hsaXN0KVxyXG5cclxuICAgIGlmIChleGlzdGluZ1dpc2hsaXN0KSByZXR1cm4gZXhpc3RpbmdXaXNobGlzdFxyXG5cclxuICAgIHJldHVybiB0aGlzLmNyZWF0ZU5ld1dpc2hsaXN0KHdpc2hsaXN0RGF0YSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRXaXNobGlzdERhdGEoe1xyXG4gICAgdGl0bGUsXHJcbiAgICBkZXNjcmlwdGlvbixcclxuICAgIHB1Ymxpc2hlZCxcclxuICAgIHVzZXJGdWxsTmFtZSxcclxuICAgIHVzZXJQaG90byxcclxuICAgIHRoZW1lLFxyXG4gICAgYmFubmVyVXJsLFxyXG4gICAgcGVyc29uVHlwZSxcclxuICAgIHBlcnNvbklzU3Vic2NyaWJlcixcclxuICAgIHBlcnNvbklkLFxyXG4gIH06IHtcclxuICAgIHRpdGxlOiBzdHJpbmdcclxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmdcclxuICAgIHB1Ymxpc2hlZDogYm9vbGVhblxyXG4gICAgdXNlckZ1bGxOYW1lOiBzdHJpbmdcclxuICAgIHVzZXJQaG90bz86IHN0cmluZ1xyXG4gICAgdGhlbWU/OiBzdHJpbmdcclxuICAgIGJhbm5lclVybD86IHN0cmluZ1xyXG4gICAgcGVyc29uVHlwZT86IFBlcnNvblR5cGVcclxuICAgIHBlcnNvbklzU3Vic2NyaWJlcj86IGJvb2xlYW5cclxuICAgIHBlcnNvbklkOiBzdHJpbmdcclxuICB9KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzbHVnOiAnJyxcclxuICAgICAgbmFtZTogdGl0bGUsXHJcbiAgICAgIGRlc2NyaXB0aW9uLFxyXG4gICAgICBtZXRhZGF0YXM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBzaG9wOiB0aGlzLnNob3AsXHJcbiAgICAgICAgICB0aXRsZTogYCR7dXNlckZ1bGxOYW1lfSAtICR7dGl0bGV9YCxcclxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgJHt1c2VyRnVsbE5hbWV9IC0gJHtkZXNjcmlwdGlvbn1gLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIHNob3A6IHRoaXMuc2hvcCxcclxuICAgICAgc2hvcHM6IFt0aGlzLnNob3BdLFxyXG4gICAgICBwZXJzb25JZCxcclxuICAgICAgcGVyc29uTmFtZTogdXNlckZ1bGxOYW1lLFxyXG4gICAgICBwZXJzb25QaG90bzogdXNlclBob3RvLFxyXG4gICAgICBicmFuZENhdGVnb3J5OiBmYWxzZSxcclxuICAgICAgcHVibGlzaGVkLFxyXG4gICAgICB0aGVtZSxcclxuICAgICAgYmFubmVyVXJsLFxyXG4gICAgICBwZXJzb25UeXBlOiBwZXJzb25UeXBlID8/IFBlcnNvblR5cGVzLk5PTkUsXHJcbiAgICAgIHBlcnNvbklzU3Vic2NyaWJlcjogcGVyc29uSXNTdWJzY3JpYmVyID8/IGZhbHNlLFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmaW5kRXhpc3RpbmdXaXNobGlzdEJ5UGVyc29uSWQocGVyc29uSWQ6IHN0cmluZyk6IFByb21pc2U8V2lzaGxpc3QgfCBudWxsPiB7XHJcbiAgICBjb25zdCBoYXNXaXNobGlzdCA9IGF3YWl0IHRoaXMud2lzaGxpc3RSZXBvc2l0b3J5XHJcbiAgICAgIC5maW5kKHtcclxuICAgICAgICBmaWx0ZXJzOiB7XHJcbiAgICAgICAgICBwZXJzb25JZCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgIGVuYWJsZUNvdW50OiBmYWxzZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9yZGVyQnk6IHtcclxuICAgICAgICAgIGlkOiAnYXNjJyxcclxuICAgICAgICB9LFxyXG4gICAgICB9KVxyXG4gICAgICAudGhlbigocmVzKSA9PiByZXMuZGF0YSlcclxuXHJcbiAgICByZXR1cm4gaGFzV2lzaGxpc3QubGVuZ3RoID8gaGFzV2lzaGxpc3QuYXQoMCkgOiBudWxsXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZU5ld1dpc2hsaXN0KGRhdGE6IGFueSk6IFByb21pc2U8V2lzaGxpc3Q+IHtcclxuICAgIGNvbnN0IG5ld1dpc2hsaXN0ID0gYXdhaXQgdGhpcy53aXNobGlzdFJlcG9zaXRvcnkuY3JlYXRlKGRhdGEpXHJcblxyXG4gICAgYXdhaXQgdGhpcy53aXNobGlzdFJlcG9zaXRvcnkudXBkYXRlKHsgaWQ6IG5ld1dpc2hsaXN0LmlkLCBzbHVnOiBuZXdXaXNobGlzdC5pZCB9KVxyXG5cclxuICAgIHJldHVybiBXaXNobGlzdC50b0luc3RhbmNlKHsgLi4ubmV3V2lzaGxpc3QudG9QbGFpbigpLCBzbHVnOiBuZXdXaXNobGlzdC5pZCB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlKHtcclxuICAgIGlkLFxyXG4gICAgdGl0bGUsXHJcbiAgICBkZXNjcmlwdGlvbixcclxuICAgIHB1Ymxpc2hlZCxcclxuICAgIHVzZXJGdWxsTmFtZSxcclxuICAgIHVzZXJQaG90byxcclxuICAgIHRoZW1lLFxyXG4gICAgYmFubmVyVXJsLFxyXG4gICAgcGVyc29uVHlwZSxcclxuICAgIHBlcnNvbklzU3Vic2NyaWJlcixcclxuICB9OiB7XHJcbiAgICBpZDogc3RyaW5nXHJcbiAgICB0aXRsZTogc3RyaW5nXHJcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nXHJcbiAgICBwdWJsaXNoZWQ6IGJvb2xlYW5cclxuICAgIHVzZXJGdWxsTmFtZTogc3RyaW5nXHJcbiAgICB1c2VyUGhvdG8/OiBzdHJpbmdcclxuICAgIHRoZW1lPzogc3RyaW5nXHJcbiAgICBiYW5uZXJVcmw/OiBzdHJpbmdcclxuICAgIHBlcnNvblR5cGU/OiBQZXJzb25UeXBlXHJcbiAgICBwZXJzb25Jc1N1YnNjcmliZXI/OiBib29sZWFuXHJcbiAgfSk6IFByb21pc2U8V2lzaGxpc3Q+IHtcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIGlkLFxyXG4gICAgICBuYW1lOiB0aXRsZSxcclxuICAgICAgZGVzY3JpcHRpb24sXHJcbiAgICAgIHB1Ymxpc2hlZCxcclxuICAgICAgbWV0YWRhdGFzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgc2hvcDogdGhpcy5zaG9wLFxyXG4gICAgICAgICAgdGl0bGU6IGAke3VzZXJGdWxsTmFtZX0gLSAke3RpdGxlfWAsXHJcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYCR7dXNlckZ1bGxOYW1lfSAtICR7ZGVzY3JpcHRpb259YCxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgICBwZXJzb25OYW1lOiB1c2VyRnVsbE5hbWUsXHJcbiAgICAgIHBlcnNvblBob3RvOiB1c2VyUGhvdG8sXHJcbiAgICAgIHRoZW1lLFxyXG4gICAgICBiYW5uZXJVcmwsXHJcbiAgICAgIHBlcnNvblR5cGU6IHBlcnNvblR5cGUgPz8gUGVyc29uVHlwZXMuTk9ORSxcclxuICAgICAgcGVyc29uSXNTdWJzY3JpYmVyOiBwZXJzb25Jc1N1YnNjcmliZXIgPz8gZmFsc2UsXHJcbiAgICB9XHJcblxyXG4gICAgYXdhaXQgdGhpcy5jcmVhdGVXaXNobGlzdExvZyhXaXNobGlzdExvZ1R5cGUuVVBEQVRFLCBkYXRhIGFzIFdpc2hsaXN0KVxyXG5cclxuICAgIHJldHVybiB0aGlzLndpc2hsaXN0UmVwb3NpdG9yeS51cGRhdGUoZGF0YSlcclxuICB9XHJcblxyXG4gIGFzeW5jIGRlbGV0ZSh3aXNobGlzdElkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHdpc2hsaXN0ID0gYXdhaXQgdGhpcy5maW5kQnlJZCh3aXNobGlzdElkKVxyXG5cclxuICAgIGF3YWl0IHRoaXMuY3JlYXRlV2lzaGxpc3RMb2coV2lzaGxpc3RMb2dUeXBlLkRFTEVURSwgd2lzaGxpc3QpXHJcblxyXG4gICAgcmV0dXJuIHRoaXMud2lzaGxpc3RSZXBvc2l0b3J5LmRlbGV0ZSh7IGlkOiB3aXNobGlzdElkIH0pXHJcbiAgfVxyXG5cclxuICBnZXRXaXNobGlzdEJ5U2x1ZyhzbHVnOiBzdHJpbmcpOiBQcm9taXNlPFdpc2hsaXN0PiB7XHJcbiAgICBjb25zdCBbaWRdID0gc2x1Zy5zcGxpdCgnLScpXHJcblxyXG4gICAgaWYgKCtpZCkgcmV0dXJuIHRoaXMud2lzaGxpc3RSZXBvc2l0b3J5LmdldCh7IGlkIH0pXHJcblxyXG4gICAgcmV0dXJuIHRoaXMud2lzaGxpc3RSZXBvc2l0b3J5LmdldFdpc2hsaXN0QnlTbHVnKHNsdWcpXHJcbiAgfVxyXG5cclxuICBnZXRXaXNobGlzdHNCeVBlcnNvbihwZXJzb25JZDogc3RyaW5nKTogUHJvbWlzZTxXaXNobGlzdFtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy53aXNobGlzdFJlcG9zaXRvcnkuZ2V0V2lzaGxpc3RCeVBlcnNvbihwZXJzb25JZClcclxuICB9XHJcblxyXG4gIGFzeW5jIGFkZFByb2R1Y3Qod2lzaGxpc3RJZDogc3RyaW5nLCBwcm9kdWN0SWQ6IHN0cmluZyk6IFByb21pc2U8V2lzaGxpc3Q+IHtcclxuICAgIGNvbnN0IHdpc2hsaXN0ID0gYXdhaXQgdGhpcy53aXNobGlzdFJlcG9zaXRvcnkuZ2V0KHsgaWQ6IHdpc2hsaXN0SWQgfSlcclxuICAgIGNvbnN0IGhhc1Byb2R1Y3QgPSB3aXNobGlzdC5wcm9kdWN0cy5zb21lKChwKSA9PiBwID09IHByb2R1Y3RJZClcclxuXHJcbiAgICBjb25zdCB3aXNobGlzdERhdGEgPSBhd2FpdCB0aGlzLmZpbmRCeUlkKHdpc2hsaXN0SWQpXHJcbiAgICBjb25zdCBwcm9kdWN0RGF0YSA9IGF3YWl0IHRoaXMuZmluZFByb2R1Y3RCeUlkKHByb2R1Y3RJZClcclxuXHJcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVdpc2hsaXN0TG9nKFdpc2hsaXN0TG9nVHlwZS5BRERfUFJPRFVDVCwgd2lzaGxpc3REYXRhLCBwcm9kdWN0RGF0YSlcclxuXHJcbiAgICBpZiAoIWhhc1Byb2R1Y3QpIHtcclxuICAgICAgd2lzaGxpc3QucHJvZHVjdHMgPSBbLi4ud2lzaGxpc3QucHJvZHVjdHMsIHByb2R1Y3RJZF1cclxuICAgICAgYXdhaXQgdGhpcy53aXNobGlzdFJlcG9zaXRvcnkuYWRkUHJvZHVjdCh3aXNobGlzdElkLCBwcm9kdWN0SWQpXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHdpc2hsaXN0XHJcbiAgfVxyXG5cclxuICBhc3luYyByZW1vdmVQcm9kdWN0KHdpc2hsaXN0SWQ6IHN0cmluZywgcHJvZHVjdElkOiBzdHJpbmcpOiBQcm9taXNlPFdpc2hsaXN0PiB7XHJcbiAgICBjb25zdCB3aXNobGlzdCA9IGF3YWl0IHRoaXMud2lzaGxpc3RSZXBvc2l0b3J5LmdldCh7IGlkOiB3aXNobGlzdElkIH0pXHJcbiAgICBjb25zdCBwcm9kdWN0SW5kZXggPSB3aXNobGlzdC5wcm9kdWN0cy5maW5kSW5kZXgoKHApID0+IHAgPT0gcHJvZHVjdElkKVxyXG5cclxuICAgIGlmIChwcm9kdWN0SW5kZXggIT0gLTEpIHtcclxuICAgICAgd2lzaGxpc3QucHJvZHVjdHMuc3BsaWNlKHByb2R1Y3RJbmRleCwgMSlcclxuICAgICAgY29uc3Qgd2lzaGxpc3REYXRhID0gYXdhaXQgdGhpcy5maW5kQnlJZCh3aXNobGlzdElkKVxyXG4gICAgICBjb25zdCBwcm9kdWN0RGF0YSA9IGF3YWl0IHRoaXMuZmluZFByb2R1Y3RCeUlkKHByb2R1Y3RJZClcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuY3JlYXRlV2lzaGxpc3RMb2coV2lzaGxpc3RMb2dUeXBlLlJFTU9WRV9QUk9EVUNULCB3aXNobGlzdERhdGEsIHByb2R1Y3REYXRhKVxyXG4gICAgICBhd2FpdCB0aGlzLndpc2hsaXN0UmVwb3NpdG9yeS5yZW1vdmVQcm9kdWN0KHdpc2hsaXN0SWQsIHByb2R1Y3RJZClcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gd2lzaGxpc3RcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmluZEJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8V2lzaGxpc3Q+IHtcclxuICAgIHJldHVybiB0aGlzLndpc2hsaXN0UmVwb3NpdG9yeVxyXG4gICAgICAuZmluZCh7XHJcbiAgICAgICAgZmllbGRzOiBbJ2lkJywgJ25hbWUnLCAnZGVzY3JpcHRpb24nLCAncGVyc29uSWQnLCAncGVyc29uSXNTdWJzY3JpYmVyJywgJ3BlcnNvblR5cGUnLCAncGVyc29uTmFtZSddLFxyXG4gICAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAgIGlkLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICAgIC50aGVuKChyZXMpID0+IHJlcy5kYXRhLmF0KDApKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmaW5kUHJvZHVjdEJ5SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8UHJvZHVjdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJvZHVjdENhdGFsb2dSZXBvc2l0b3J5XHJcbiAgICAgIC5maW5kKHtcclxuICAgICAgICBmaWVsZHM6IFsnaWQnLCAnc2t1JywgJ0VBTicsICduYW1lJywgJ2JyYW5kJ10sXHJcbiAgICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgICAgaWQsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgLnRoZW4oKHJlcykgPT4gcmVzLmRhdGEuYXQoMCkpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZVdpc2hsaXN0TG9nKHR5cGU6IFdpc2hsaXN0TG9nVHlwZSwgd2lzaGxpc3Q6IFdpc2hsaXN0LCBwcm9kdWN0PzogUHJvZHVjdCkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgV2lzaGxpc3RMb2dUeXBlLkNSRUFURTpcclxuICAgICAgY2FzZSBXaXNobGlzdExvZ1R5cGUuVVBEQVRFOlxyXG4gICAgICBjYXNlIFdpc2hsaXN0TG9nVHlwZS5ERUxFVEU6XHJcbiAgICAgICAgYXdhaXQgdGhpcy5jcmVhdGVXaXNobGlzdE9wZXJhdGlvbkxvZyh0eXBlLCB3aXNobGlzdClcclxuICAgICAgICBicmVha1xyXG5cclxuICAgICAgY2FzZSBXaXNobGlzdExvZ1R5cGUuQUREX1BST0RVQ1Q6XHJcbiAgICAgIGNhc2UgV2lzaGxpc3RMb2dUeXBlLlJFTU9WRV9QUk9EVUNUOlxyXG4gICAgICAgIGF3YWl0IHRoaXMuY3JlYXRlV2lzaGxpc3RQcm9kdWN0TG9nKHR5cGUsIHdpc2hsaXN0LCBwcm9kdWN0KVxyXG4gICAgICAgIGJyZWFrXHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZVdpc2hsaXN0T3BlcmF0aW9uTG9nKHR5cGU6IFdpc2hsaXN0TG9nVHlwZSwgd2lzaGxpc3Q6IFdpc2hsaXN0KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBvcGVyYXRpb24gPSB0aGlzLmdldE9wZXJhdGlvblR5cGVGcm9tV2lzaGxpc3RMb2dUeXBlKHR5cGUpXHJcblxyXG4gICAgYXdhaXQgdGhpcy5sb2dSZXBvc2l0b3J5LmNyZWF0ZSh7XHJcbiAgICAgIGNvbGxlY3Rpb246ICd3aXNobGlzdCcsXHJcbiAgICAgIGRhdGU6IG5ldyBEYXRlKCksXHJcbiAgICAgIG9wZXJhdGlvbixcclxuICAgICAgZG9jdW1lbnRJZDogd2lzaGxpc3QuaWQsXHJcbiAgICAgIGRvY3VtZW50OiB0aGlzLmJ1aWxkV2lzaGxpc3RMb2dEb2N1bWVudCh3aXNobGlzdCwgdHlwZSksXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVXaXNobGlzdFByb2R1Y3RMb2codHlwZTogV2lzaGxpc3RMb2dUeXBlLCB3aXNobGlzdDogV2lzaGxpc3QsIHByb2R1Y3Q6IFByb2R1Y3QpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMubG9nUmVwb3NpdG9yeS5jcmVhdGUoe1xyXG4gICAgICBjb2xsZWN0aW9uOiAnd2lzaGxpc3QnLFxyXG4gICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxyXG4gICAgICBvcGVyYXRpb246ICdVUERBVEUnLFxyXG4gICAgICBkb2N1bWVudElkOiB3aXNobGlzdC5pZCxcclxuICAgICAgZG9jdW1lbnQ6IHtcclxuICAgICAgICAuLi50aGlzLmJ1aWxkV2lzaGxpc3RMb2dEb2N1bWVudCh3aXNobGlzdCwgdHlwZSksXHJcbiAgICAgICAgLi4udGhpcy5idWlsZFByb2R1Y3RMb2dEYXRhKHByb2R1Y3QpLFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0T3BlcmF0aW9uVHlwZUZyb21XaXNobGlzdExvZ1R5cGUodHlwZTogV2lzaGxpc3RMb2dUeXBlKTogJ0NSRUFURScgfCAnVVBEQVRFJyB8ICdERUxFVEUnIHtcclxuICAgIGlmICh0eXBlID09PSBXaXNobGlzdExvZ1R5cGUuQ1JFQVRFKSByZXR1cm4gJ0NSRUFURSdcclxuXHJcbiAgICBpZiAodHlwZSA9PT0gV2lzaGxpc3RMb2dUeXBlLlVQREFURSkgcmV0dXJuICdVUERBVEUnXHJcblxyXG4gICAgcmV0dXJuICdERUxFVEUnXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkV2lzaGxpc3RMb2dEb2N1bWVudCh3aXNobGlzdDogV2lzaGxpc3QsIHR5cGU6IFdpc2hsaXN0TG9nVHlwZSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaWQ6IHdpc2hsaXN0LmlkLFxyXG4gICAgICBzaG9wOiB0aGlzLnNob3AsXHJcbiAgICAgIG5hbWU6IHdpc2hsaXN0Lm5hbWUsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiB3aXNobGlzdC5kZXNjcmlwdGlvbixcclxuICAgICAgcHVibGlzaGVkOiB3aXNobGlzdC5wdWJsaXNoZWQsXHJcbiAgICAgIHR5cGU6IHR5cGUsXHJcbiAgICAgIHBlcnNvblR5cGU6IHdpc2hsaXN0LnBlcnNvblR5cGUsXHJcbiAgICAgIHBlcnNvbklkOiB3aXNobGlzdC5wZXJzb25JZCxcclxuICAgICAgcGVyc29uTmFtZTogd2lzaGxpc3QucGVyc29uTmFtZSxcclxuICAgICAgcGVyc29uSXNTdWJzY3JpYmVyOiB3aXNobGlzdC5wZXJzb25Jc1N1YnNjcmliZXIsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkUHJvZHVjdExvZ0RhdGEocHJvZHVjdDogUHJvZHVjdCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcHJvZHVjdElkOiBwcm9kdWN0LmlkLFxyXG4gICAgICBwcm9kdWN0RUFOOiBwcm9kdWN0LkVBTixcclxuICAgICAgcHJvZHVjdFNLVTogcHJvZHVjdC5za3UsXHJcbiAgICAgIHByb2R1Y3ROYW1lOiBwcm9kdWN0Lm5hbWUsXHJcbiAgICAgIHByb2R1Y3RCcmFuZDogcHJvZHVjdC5icmFuZCxcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,20 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { Inject, Injectable } from '@angular/core';
3
+ import { PERSISTENCE_PROVIDER } from '../../consts';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common/http";
6
+ export class CheckoutDependenciesFacade {
7
+ constructor(dataPersistence, httpClient) {
8
+ this.dataPersistence = dataPersistence;
9
+ this.httpClient = httpClient;
10
+ }
11
+ }
12
+ CheckoutDependenciesFacade.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutDependenciesFacade, deps: [{ token: PERSISTENCE_PROVIDER }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
13
+ CheckoutDependenciesFacade.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutDependenciesFacade });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutDependenciesFacade, decorators: [{
15
+ type: Injectable
16
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
17
+ type: Inject,
18
+ args: [PERSISTENCE_PROVIDER]
19
+ }] }, { type: i1.HttpClient }]; } });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtZGVwZW5kZW5jaWVzLmZhY2FkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2hlY2tvdXQvY2hlY2tvdXQtZGVwZW5kZW5jaWVzLmZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFBOzs7QUFJbkQsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUNnRCxlQUFnQyxFQUM5RCxVQUFzQjtRQURRLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUM5RCxlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQ3JDLENBQUM7O3VIQUpPLDBCQUEwQixrQkFFM0Isb0JBQW9COzJIQUZuQiwwQkFBMEI7MkZBQTFCLDBCQUEwQjtrQkFEdEMsVUFBVTs7MEJBR04sTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcblxyXG5pbXBvcnQgeyBQRVJTSVNURU5DRV9QUk9WSURFUiB9IGZyb20gJy4uLy4uL2NvbnN0cydcclxuaW1wb3J0IHsgRGF0YVBlcnNpc3RlbmNlIH0gZnJvbSAnLi4vLi4vcGVyc2lzdGVuY2UnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDaGVja291dERlcGVuZGVuY2llc0ZhY2FkZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KFBFUlNJU1RFTkNFX1BST1ZJREVSKSBwdWJsaWMgcmVhZG9ubHkgZGF0YVBlcnNpc3RlbmNlOiBEYXRhUGVyc2lzdGVuY2UsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuICApIHt9XHJcbn1cclxuIl19
@@ -0,0 +1,20 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class CheckoutRepositoriesFacade {
4
+ constructor(checkoutRepository, userRepository) {
5
+ this.checkoutRepository = checkoutRepository;
6
+ this.userRepository = userRepository;
7
+ }
8
+ }
9
+ CheckoutRepositoriesFacade.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutRepositoriesFacade, deps: [{ token: 'CheckoutRepository' }, { token: 'UserRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
10
+ CheckoutRepositoriesFacade.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutRepositoriesFacade });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutRepositoriesFacade, decorators: [{
12
+ type: Injectable
13
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
14
+ type: Inject,
15
+ args: ['CheckoutRepository']
16
+ }] }, { type: undefined, decorators: [{
17
+ type: Inject,
18
+ args: ['UserRepository']
19
+ }] }]; } });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtcmVwb3NpdG9yaWVzLmZhY2FkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2hlY2tvdXQvY2hlY2tvdXQtcmVwb3NpdG9yaWVzLmZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTs7QUFJbEQsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUNnRCxrQkFBc0MsRUFDMUMsY0FBOEI7UUFEMUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUMxQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFDdkUsQ0FBQzs7dUhBSk8sMEJBQTBCLGtCQUUzQixvQkFBb0IsYUFDcEIsZ0JBQWdCOzJIQUhmLDBCQUEwQjsyRkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVOzswQkFHTixNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQzNCLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgQ2hlY2tvdXRSZXBvc2l0b3J5LCBVc2VyUmVwb3NpdG9yeSB9IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2hlY2tvdXRSZXBvc2l0b3JpZXNGYWNhZGUge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnQ2hlY2tvdXRSZXBvc2l0b3J5JykgcHVibGljIHJlYWRvbmx5IGNoZWNrb3V0UmVwb3NpdG9yeTogQ2hlY2tvdXRSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnVXNlclJlcG9zaXRvcnknKSBwdWJsaWMgcmVhZG9ubHkgdXNlclJlcG9zaXRvcnk6IFVzZXJSZXBvc2l0b3J5LFxyXG4gICkge31cclxufVxyXG4iXX0=
@@ -0,0 +1,3 @@
1
+ export { CheckoutRepositoriesFacade } from './checkout-repositories.facade';
2
+ export { CheckoutDependenciesFacade } from './checkout-dependencies.facade';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NoZWNrb3V0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQzNFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQ2hlY2tvdXRSZXBvc2l0b3JpZXNGYWNhZGUgfSBmcm9tICcuL2NoZWNrb3V0LXJlcG9zaXRvcmllcy5mYWNhZGUnXHJcbmV4cG9ydCB7IENoZWNrb3V0RGVwZW5kZW5jaWVzRmFjYWRlIH0gZnJvbSAnLi9jaGVja291dC1kZXBlbmRlbmNpZXMuZmFjYWRlJ1xyXG4iXX0=
@@ -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
+ }
44
+ CheckoutSubscriptionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutSubscriptionService, deps: [{ token: 'CheckoutSubscriptionRepository' }, { token: PERSISTENCE_PROVIDER }, { token: i1.CouponService }], target: i0.ɵɵFactoryTarget.Injectable });
45
+ CheckoutSubscriptionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutSubscriptionService });
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutSubscriptionService, decorators: [{
47
+ type: Injectable
48
+ }], ctorParameters: function () { return [{ 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtc3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NoZWNrb3V0LXN1YnNjcmlwdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFDTCxvQkFBb0IsRUFFcEIsYUFBYSxFQUViLEtBQUssRUFDTCxJQUFJLEdBQ0wsTUFBTSxtQkFBbUIsQ0FBQTtBQUUxQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHMUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sV0FBVyxDQUFBO0FBSWhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTs7O0FBR2hELE1BQU0sT0FBTywyQkFBMkI7SUFDdEMsWUFFbUIsOEJBQThELEVBQ2hDLGVBQWdDLEVBQzlELGFBQTRCO1FBRjVCLG1DQUE4QixHQUE5Qiw4QkFBOEIsQ0FBZ0M7UUFDaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzlELGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQzVDLENBQUM7SUFFSix1QkFBdUIsQ0FBQyxZQUErQztRQUNyRSxPQUFPLElBQUksQ0FBQyxlQUFlO2FBQ3hCLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQzthQUM3QixJQUFJLENBQ0gsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FDZixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxZQUFZLENBQUMsQ0FDN0csQ0FDRixDQUFBO0lBQ0wsQ0FBQztJQUVELG9DQUFvQztRQUNsQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUE7SUFDOUQsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFnQixFQUFFLFVBQWtCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsSUFBSSxDQUN4QyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUNyQixJQUFJLENBQUMsYUFBYTthQUNmLFdBQVcsQ0FBQztZQUNYLFFBQVE7WUFDUixZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQVk7WUFDeEMsUUFBUTtZQUNSLElBQUksRUFBRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSTtTQUNyQyxDQUFDO2FBQ0QsSUFBSSxFQUFFLENBQ1YsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVELHdCQUF3QixDQUFDLE1BQWM7UUFDckMsT0FBTyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxJQUFJLENBQ3hDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FDOUYsQ0FBQTtJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsMEJBQTBCLENBQ3RDLFlBQStDO1FBRS9DLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLDhCQUE4QixDQUFDLE1BQU0sQ0FBQztZQUNoRSxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDckIsR0FBRyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO1NBQ25GLENBQUMsQ0FBQTtRQUVGLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFBO1FBRWpGLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7O3dIQXREVSwyQkFBMkIsa0JBRTVCLGdDQUFnQyxhQUVoQyxvQkFBb0I7NEhBSm5CLDJCQUEyQjsyRkFBM0IsMkJBQTJCO2tCQUR2QyxVQUFVOzswQkFHTixNQUFNOzJCQUFDLGdDQUFnQzs7MEJBRXZDLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHtcclxuICBDaGVja291dFN1YnNjcmlwdGlvbixcclxuICBDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnksXHJcbiAgQ2hlY2tvdXRUeXBlcyxcclxuICBDb3Vwb24sXHJcbiAgaXNOaWwsXHJcbiAgcGljayxcclxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IGNvbmNhdE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5cclxuXHJcbmltcG9ydCB7IFBFUlNJU1RFTkNFX1BST1ZJREVSIH0gZnJvbSAnLi4vY29uc3RzJ1xyXG5pbXBvcnQgeyBEYXRhUGVyc2lzdGVuY2UgfSBmcm9tICcuLi9wZXJzaXN0ZW5jZSdcclxuXHJcbmltcG9ydCB7IFJlcXVpcmVkQ2hlY2tvdXRTdWJzY3JpcHRpb25EYXRhIH0gZnJvbSAnLi90eXBlcydcclxuaW1wb3J0IHsgQ291cG9uU2VydmljZSB9IGZyb20gJy4vY291cG9uLnNlcnZpY2UnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDaGVja291dFN1YnNjcmlwdGlvblNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnQ2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5JylcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5OiBDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KFBFUlNJU1RFTkNFX1BST1ZJREVSKSBwcml2YXRlIHJlYWRvbmx5IGRhdGFQZXJzaXN0ZW5jZTogRGF0YVBlcnNpc3RlbmNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3Vwb25TZXJ2aWNlOiBDb3Vwb25TZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgZ2V0Q2hlY2tvdXRTdWJzY3JpcHRpb24oY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dFN1YnNjcmlwdGlvbkRhdGEpOiBPYnNlcnZhYmxlPENoZWNrb3V0U3Vic2NyaXB0aW9uPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhUGVyc2lzdGVuY2VcclxuICAgICAgLmdldCgnY2hlY2tvdXRTdWJzY3JpcHRpb25JZCcpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGNvbmNhdE1hcCgoaWQpID0+XHJcbiAgICAgICAgICAhaXNOaWwoaWQpID8gdGhpcy5jaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnkuZ2V0KHsgaWQgfSkgOiB0aGlzLmNyZWF0ZUNoZWNrb3V0U3Vic2NyaXB0aW9uKGNoZWNrb3V0RGF0YSksXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gIH1cclxuXHJcbiAgY2xlYXJDaGVja291dFN1YnNjcmlwdGlvbkZyb21TZXNzaW9uKCk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVBlcnNpc3RlbmNlLnJlbW92ZSgnY2hlY2tvdXRTdWJzY3JpcHRpb25JZCcpXHJcbiAgfVxyXG5cclxuICBjaGVja0NvdXBvbihuaWNrbmFtZTogc3RyaW5nLCBfdXNlckVtYWlsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENvdXBvbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hlY2tvdXRTdWJzY3JpcHRpb24oKS5waXBlKFxyXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PlxyXG4gICAgICAgIHRoaXMuY291cG9uU2VydmljZVxyXG4gICAgICAgICAgLmNoZWNrQ291cG9uKHtcclxuICAgICAgICAgICAgbmlja25hbWUsXHJcbiAgICAgICAgICAgIGNoZWNrb3V0VHlwZTogQ2hlY2tvdXRUeXBlcy5TVUJTQ1JJUFRJT04sXHJcbiAgICAgICAgICAgIGNoZWNrb3V0LFxyXG4gICAgICAgICAgICBwbGFuOiBjaGVja291dC5zdWJzY3JpcHRpb25QbGFuLm5hbWUsXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLnBpcGUoKSxcclxuICAgICAgKSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIGNhbGNEaXNjb3VudFN1YnNjcmlwdGlvbihjb3Vwb246IENvdXBvbikge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hlY2tvdXRTdWJzY3JpcHRpb24oKS5waXBlKFxyXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PiB0aGlzLmNvdXBvblNlcnZpY2UuY2FsY0Rpc2NvdW50U3Vic2NyaXB0aW9uKGNvdXBvbiwgY2hlY2tvdXQpLnBpcGUoKSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZUNoZWNrb3V0U3Vic2NyaXB0aW9uKFxyXG4gICAgY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dFN1YnNjcmlwdGlvbkRhdGEsXHJcbiAgKTogUHJvbWlzZTxDaGVja291dFN1YnNjcmlwdGlvbj4ge1xyXG4gICAgY29uc3QgY2hlY2tvdXQgPSBhd2FpdCB0aGlzLmNoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeS5jcmVhdGUoe1xyXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCksXHJcbiAgICAgIC4uLkNoZWNrb3V0U3Vic2NyaXB0aW9uLnRvSW5zdGFuY2UocGljayhjaGVja291dERhdGEsIFsndXNlcicsICdzaG9wJ10pKS50b1BsYWluKCksXHJcbiAgICB9KVxyXG5cclxuICAgIGF3YWl0IHRoaXMuZGF0YVBlcnNpc3RlbmNlLnNldCgnY2hlY2tvdXRTdWJzY3JpcHRpb25JZCcsIGNoZWNrb3V0LmlkKS50b1Byb21pc2UoKVxyXG5cclxuICAgIHJldHVybiBjaGVja291dFxyXG4gIH1cclxufVxyXG4iXX0=
@@ -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}/checkout`, {
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
+ }
101
+ CheckoutService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutService, deps: [{ token: i1.CheckoutRepositoriesFacade }, { token: i1.CheckoutDependenciesFacade }, { token: i2.ConfigurationFacade }], target: i0.ɵɵFactoryTarget.Injectable });
102
+ CheckoutService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutService });
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutService, decorators: [{
104
+ type: Injectable
105
+ }], ctorParameters: function () { return [{ type: i1.CheckoutRepositoriesFacade }, { type: i1.CheckoutDependenciesFacade }, { type: i2.ConfigurationFacade }]; } });
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2hlY2tvdXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFDTCxRQUFRLEVBTVIsS0FBSyxFQUNMLGFBQWEsRUFDYixJQUFJLEdBS0wsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUUvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFBOzs7O0FBSTlDLE1BQU0sT0FBTyxlQUFlO0lBRzFCLFlBQ21CLGtCQUE4QyxFQUM5QyxrQkFBOEMsRUFDOUMsbUJBQXdDO1FBRnhDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBNEI7UUFDOUMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUE0QjtRQUM5Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBTG5ELGdCQUFXLEdBQVcsSUFBSSxDQUFBO1FBT2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsRUFBRSxDQUFBO0lBQzlELENBQUM7SUFFRCxXQUFXLENBQUMsWUFBbUM7UUFDN0MsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZTthQUMzQyxHQUFHLENBQUMsWUFBWSxDQUFDO2FBQ2pCLElBQUksQ0FDSCxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUNmLENBQUMsS0FB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LElBQUksRUFBRTtnQkFDSixHQUFHLGVBQWU7Z0JBQ2xCLGtCQUFrQjtnQkFDbEIsZUFBZTthQUNoQjtTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTyxLQUFLLENBQUMsY0FBYyxDQUFDLFlBQW1DO1FBQzlELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztZQUN2RSxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDckIsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtZQUN0RSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVztTQUNqRSxDQUFDLENBQUE7UUFFRixNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUE7UUFFeEYsT0FBTyxRQUFRLENBQUE7SUFDakIsQ0FBQzs7NEdBMUtVLGVBQWU7Z0hBQWYsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7XHJcbiAgQ2hlY2tvdXQsXHJcbiAgQ2hlY2tvdXRQYXlsb2FkUmVxdWVzdCxcclxuICBDaGVja291dFJlc3BvbnNlLFxyXG4gIENoZWNrb3V0U3RvY2tWYWxpZGF0aW9uLFxyXG4gIENoZWNrb3V0VHlwZXMsXHJcbiAgQ291cG9uLFxyXG4gIGlzTmlsLFxyXG4gIE5vdEZvdW5kRXJyb3IsXHJcbiAgcGljayxcclxuICBTaGlwcGluZ01ldGhvZFJlc3BvbnNlLFxyXG4gIFNoaXBwaW5nUHJvZHVjdFJlcXVlc3QsXHJcbiAgVXNlcixcclxuICBVc2VyQWRkcmVzcyxcclxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcclxuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBjb25jYXRNYXAsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5cclxuaW1wb3J0IHsgQ2hlY2tvdXREZXBlbmRlbmNpZXNGYWNhZGUsIENoZWNrb3V0UmVwb3NpdG9yaWVzRmFjYWRlIH0gZnJvbSAnLi9jaGVja291dCdcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbkZhY2FkZSB9IGZyb20gJy4vc2hhcmVkJ1xyXG5pbXBvcnQgeyBSZXF1aXJlZENoZWNrb3V0RGF0YSB9IGZyb20gJy4vdHlwZXMnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDaGVja291dFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgY2hlY2tvdXRVcmw6IHN0cmluZyA9IG51bGxcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlcG9zaXRvcmllc0ZhY2FkZTogQ2hlY2tvdXRSZXBvc2l0b3JpZXNGYWNhZGUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlcGVuZGVuY2llc0ZhY2FkZTogQ2hlY2tvdXREZXBlbmRlbmNpZXNGYWNhZGUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb25GYWNhZGU6IENvbmZpZ3VyYXRpb25GYWNhZGUsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNoZWNrb3V0VXJsID0gdGhpcy5jb25maWd1cmF0aW9uRmFjYWRlLmdldENoZWNrb3V0VXJsKClcclxuICB9XHJcblxyXG4gIGdldENoZWNrb3V0KGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXREYXRhKTogT2JzZXJ2YWJsZTxDaGVja291dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVwZW5kZW5jaWVzRmFjYWRlLmRhdGFQZXJzaXN0ZW5jZVxyXG4gICAgICAuZ2V0KCdjaGVja291dElkJylcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY29uY2F0TWFwKChpZCkgPT5cclxuICAgICAgICAgICFpc05pbChpZCkgPyB0aGlzLnJlcG9zaXRvcmllc0ZhY2FkZS5jaGVja291dFJlcG9zaXRvcnkuZ2V0KHsgaWQgfSkgOiB0aGlzLmNyZWF0ZUNoZWNrb3V0KGNoZWNrb3V0RGF0YSksXHJcbiAgICAgICAgKSxcclxuICAgICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckJ5Q2hlY2tvdXQoY2hlY2tvdXRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxVc2VyPiB7XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLnJlcG9zaXRvcmllc0ZhY2FkZS5jaGVja291dFJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNoZWNrb3V0SWQgfSkpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XHJcbiAgICAgICAgY2hlY2tvdXQ/LnVzZXI/LmlkXHJcbiAgICAgICAgICA/IG9mKGNoZWNrb3V0LnVzZXIpXHJcbiAgICAgICAgICA6IGZyb20odGhpcy5yZXBvc2l0b3JpZXNGYWNhZGUudXNlclJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNoZWNrb3V0LnVzZXIuaWQgfSkpLFxyXG4gICAgICApLFxyXG4gICAgICBjb25jYXRNYXAoKHVzZXIpID0+IG9mKHVzZXIpIHx8IHRocm93RXJyb3IoKCkgPT4gbmV3IE5vdEZvdW5kRXJyb3IoJ1VzZXIgaXMgbm90IGZvdW5kJykpKSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNoZWNrb3V0TGluZUl0ZW1zKGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pik6IE9ic2VydmFibGU8Q2hlY2tvdXQ+IHtcclxuICAgIHJldHVybiBmcm9tKFxyXG4gICAgICB0aGlzLnJlcG9zaXRvcmllc0ZhY2FkZS5jaGVja291dFJlcG9zaXRvcnkudXBkYXRlKFxyXG4gICAgICAgIENoZWNrb3V0LnRvSW5zdGFuY2UoeyBpZDogY2hlY2tvdXQuaWQsIGxpbmVJdGVtczogY2hlY2tvdXQubGluZUl0ZW1zIH0pLFxyXG4gICAgICApLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ2hlY2tvdXRVc2VyKGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pik6IE9ic2VydmFibGU8Q2hlY2tvdXQ+IHtcclxuICAgIHJldHVybiBmcm9tKFxyXG4gICAgICB0aGlzLnJlcG9zaXRvcmllc0ZhY2FkZS5jaGVja291dFJlcG9zaXRvcnkudXBkYXRlKENoZWNrb3V0LnRvSW5zdGFuY2UoeyBpZDogY2hlY2tvdXQuaWQsIHVzZXI6IGNoZWNrb3V0LnVzZXIgfSkpLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgY2xlYXJDaGVja291dEZyb21TZXNzaW9uKCk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVwZW5kZW5jaWVzRmFjYWRlLmRhdGFQZXJzaXN0ZW5jZS5yZW1vdmUoJ2NoZWNrb3V0SWQnKVxyXG4gIH1cclxuXHJcbiAgcmVzZXRDaGVja291dFZhbHVlcygpOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja291dCgpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XHJcbiAgICAgICAgdGhpcy5kZXBlbmRlbmNpZXNGYWNhZGUuaHR0cENsaWVudC5wb3N0KGAke3RoaXMuY2hlY2tvdXRVcmx9L2NoZWNrb3V0UmVzZXRWYWx1ZXNgLCB7XHJcbiAgICAgICAgICBjaGVja291dElkOiBjaGVja291dC5pZCxcclxuICAgICAgICB9KSxcclxuICAgICAgKSxcclxuICAgICAgY29uY2F0TWFwKCgpID0+IHRoaXMuZ2V0Q2hlY2tvdXQoKSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBhcHBseUNvdXBvbkRpc2NvdW50KG5pY2tuYW1lOiBzdHJpbmcsIGNoZWNrb3V0VHlwZTogQ2hlY2tvdXRUeXBlcyk6IE9ic2VydmFibGU8Q291cG9uPiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja291dCgpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XHJcbiAgICAgICAgdGhpcy5kZXBlbmRlbmNpZXNGYWNhZGUuaHR0cENsaWVudC5wb3N0KGAke3RoaXMuY2hlY2tvdXRVcmx9L2NoZWNrb3V0QXBwbHlEaXNjb3VudGAsIHtcclxuICAgICAgICAgIGNoZWNrb3V0SWQ6IGNoZWNrb3V0LmlkLFxyXG4gICAgICAgICAgY291cG9uOiBuaWNrbmFtZSxcclxuICAgICAgICAgIGNoZWNrb3V0VHlwZSxcclxuICAgICAgICB9KSxcclxuICAgICAgKSxcclxuICAgICAgY29uY2F0TWFwKCgpID0+IHRoaXMuZ2V0Q2hlY2tvdXQoKSksXHJcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IGNoZWNrb3V0LmNvdXBvbiksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICByZW1vdmVDb3Vwb25EaXNjb3VudCgpOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja291dCgpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XHJcbiAgICAgICAgdGhpcy5kZXBlbmRlbmNpZXNGYWNhZGUuaHR0cENsaWVudC5wb3N0KGAke3RoaXMuY2hlY2tvdXRVcmx9L2NoZWNrb3V0UmVtb3ZlRGlzY291bnRgLCB7XHJcbiAgICAgICAgICBjaGVja291dElkOiBjaGVja291dC5pZCxcclxuICAgICAgICB9KSxcclxuICAgICAgKSxcclxuICAgICAgY29uY2F0TWFwKCgpID0+IHRoaXMuZ2V0Q2hlY2tvdXQoKSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVN0b2NrUHJvZHVjdHMoKTogT2JzZXJ2YWJsZTxDaGVja291dFN0b2NrVmFsaWRhdGlvbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hlY2tvdXQoKS5waXBlKFxyXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PlxyXG4gICAgICAgIHRoaXMuZGVwZW5kZW5jaWVzRmFjYWRlLmh0dHBDbGllbnQucG9zdDx7XHJcbiAgICAgICAgICB2YWxpZDogYm9vbGVhblxyXG4gICAgICAgICAgb3V0T2ZTdG9jazogc3RyaW5nW11cclxuICAgICAgICAgIGxpbWl0ZWRTdG9jazogc3RyaW5nW11cclxuICAgICAgICB9PihgJHt0aGlzLmNoZWNrb3V0VXJsfS9jaGVja291dFZhbGlkYXRlUHJvZHVjdFN0b2NrYCwge1xyXG4gICAgICAgICAgY2hlY2tvdXRJZDogY2hlY2tvdXQuaWQsXHJcbiAgICAgICAgfSksXHJcbiAgICAgICksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBzZWxlY3RTaGlwcGluZ0FkZHJlc3MoYWRkcmVzczogVXNlckFkZHJlc3MpOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja291dCgpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3JpZXNGYWNhZGUuY2hlY2tvdXRSZXBvc2l0b3J5LnVwZGF0ZShcclxuICAgICAgICAgIENoZWNrb3V0LnRvSW5zdGFuY2UoeyBpZDogY2hlY2tvdXQuaWQsIHNoaXBwaW5nQWRkcmVzczogYWRkcmVzcywgYmlsbGluZ0FkZHJlc3M6IGFkZHJlc3MgfSksXHJcbiAgICAgICAgKVxyXG4gICAgICB9KSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldEF2YWlsYWJsZVNoaXBwaW5nRm9yUHJvZHVjdChwcm9kdWN0U2hpcHBpbmc6IFNoaXBwaW5nUHJvZHVjdFJlcXVlc3QpOiBPYnNlcnZhYmxlPFNoaXBwaW5nTWV0aG9kUmVzcG9uc2VbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVwZW5kZW5jaWVzRmFjYWRlLmh0dHBDbGllbnQucG9zdDxTaGlwcGluZ01ldGhvZFJlc3BvbnNlW10+KFxyXG4gICAgICBgJHt0aGlzLmNoZWNrb3V0VXJsfS9jaGVja291dEdldEF2YWlsYWJsZVNoaXBwaW5nYCxcclxuICAgICAge1xyXG4gICAgICAgIGNoZWNrb3V0SWQ6IG51bGwsXHJcbiAgICAgICAgcHJvZHVjdFNoaXBwaW5nLFxyXG4gICAgICB9LFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0QXZhaWxhYmxlU2hpcHBpbmdGb3JDaGVja291dCgpOiBPYnNlcnZhYmxlPFNoaXBwaW5nTWV0aG9kUmVzcG9uc2VbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hlY2tvdXQoKS5waXBlKFxyXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PlxyXG4gICAgICAgIHRoaXMuZGVwZW5kZW5jaWVzRmFjYWRlLmh0dHBDbGllbnQucG9zdDxTaGlwcGluZ01ldGhvZFJlc3BvbnNlW10+KFxyXG4gICAgICAgICAgYCR7dGhpcy5jaGVja291dFVybH0vY2hlY2tvdXRHZXRBdmFpbGFibGVTaGlwcGluZ2AsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGNoZWNrb3V0SWQ6IGNoZWNrb3V0LmlkLFxyXG4gICAgICAgICAgICBwcm9kdWN0U2hpcHBpbmc6IG51bGwsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICksXHJcbiAgICAgICksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBzZWxlY3RTaGlwcGluZyhvcHRpb246IHN0cmluZyk6IE9ic2VydmFibGU8Q2hlY2tvdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmdldENoZWNrb3V0KCkucGlwZShcclxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT5cclxuICAgICAgICB0aGlzLmRlcGVuZGVuY2llc0ZhY2FkZS5odHRwQ2xpZW50LnBvc3QoYCR7dGhpcy5jaGVja291dFVybH0vY2hlY2tvdXRTZWxlY3RTaGlwcGluZ2AsIHtcclxuICAgICAgICAgIGNoZWNrb3V0SWQ6IGNoZWNrb3V0LmlkLFxyXG4gICAgICAgICAgc2hpcHBpbmdPcHRpb246IG9wdGlvbixcclxuICAgICAgICB9KSxcclxuICAgICAgKSxcclxuICAgICAgY29uY2F0TWFwKCgpID0+IHRoaXMuZ2V0Q2hlY2tvdXQoKSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBjcmVhdGVPcmRlcihcclxuICAgIGNoZWNrb3V0UGF5bG9hZDogQ2hlY2tvdXRQYXlsb2FkUmVxdWVzdCxcclxuICAgIHBheW1lbnRQcm92aWRlcjogc3RyaW5nLFxyXG4gICAgYXBwbGljYXRpb25WZXJzaW9uOiBzdHJpbmcsXHJcbiAgKTogT2JzZXJ2YWJsZTxDaGVja291dFJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kZXBlbmRlbmNpZXNGYWNhZGUuaHR0cENsaWVudC5wb3N0PENoZWNrb3V0UmVzcG9uc2U+KGAke3RoaXMuY2hlY2tvdXRVcmx9L2NoZWNrb3V0YCwge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgLi4uY2hlY2tvdXRQYXlsb2FkLFxyXG4gICAgICAgIGFwcGxpY2F0aW9uVmVyc2lvbixcclxuICAgICAgICBwYXltZW50UHJvdmlkZXIsXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVDaGVja291dChjaGVja291dERhdGE/OiBSZXF1aXJlZENoZWNrb3V0RGF0YSk6IFByb21pc2U8Q2hlY2tvdXQ+IHtcclxuICAgIGNvbnN0IGNoZWNrb3V0ID0gYXdhaXQgdGhpcy5yZXBvc2l0b3JpZXNGYWNhZGUuY2hlY2tvdXRSZXBvc2l0b3J5LmNyZWF0ZSh7XHJcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKSxcclxuICAgICAgLi4uQ2hlY2tvdXQudG9JbnN0YW5jZShwaWNrKGNoZWNrb3V0RGF0YSwgWyd1c2VyJywgJ3Nob3AnXSkpLnRvUGxhaW4oKSxcclxuICAgICAgc2hvcDogY2hlY2tvdXREYXRhPy5zaG9wIHx8IHRoaXMuY29uZmlndXJhdGlvbkZhY2FkZS5kZWZhdWx0U2hvcCxcclxuICAgIH0pXHJcblxyXG4gICAgYXdhaXQgdGhpcy5kZXBlbmRlbmNpZXNGYWNhZGUuZGF0YVBlcnNpc3RlbmNlLnNldCgnY2hlY2tvdXRJZCcsIGNoZWNrb3V0LmlkKS50b1Byb21pc2UoKVxyXG5cclxuICAgIHJldHVybiBjaGVja291dFxyXG4gIH1cclxufVxyXG4iXX0=
@@ -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
+ }
10
+ CouponRepositoriesFacade.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CouponRepositoriesFacade, deps: [{ token: 'CouponRepository' }, { token: 'OrderRepository' }, { token: 'CategoryRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
11
+ CouponRepositoriesFacade.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CouponRepositoriesFacade });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CouponRepositoriesFacade, decorators: [{
13
+ type: Injectable
14
+ }], ctorParameters: function () { return [{ 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLXJlcG9zaXRvcmllcy5mYWNhZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvdXBvbi9jb3Vwb24tcmVwb3NpdG9yaWVzLmZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTs7QUFJbEQsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUM4QyxnQkFBa0MsRUFDbkMsZUFBZ0MsRUFDN0Isa0JBQXNDO1FBRnhDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbkMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzdCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7SUFDbkYsQ0FBQzs7cUhBTE8sd0JBQXdCLGtCQUV6QixrQkFBa0IsYUFDbEIsaUJBQWlCLGFBQ2pCLG9CQUFvQjt5SEFKbkIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVU7OzBCQUdOLE1BQU07MkJBQUMsa0JBQWtCOzswQkFDekIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IENhdGVnb3J5UmVwb3NpdG9yeSwgQ291cG9uUmVwb3NpdG9yeSwgT3JkZXJSZXBvc2l0b3J5IH0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDb3Vwb25SZXBvc2l0b3JpZXNGYWNhZGUge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnQ291cG9uUmVwb3NpdG9yeScpIHB1YmxpYyByZWFkb25seSBjb3Vwb25SZXBvc2l0b3J5OiBDb3Vwb25SZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnT3JkZXJSZXBvc2l0b3J5JykgcHVibGljIHJlYWRvbmx5IG9yZGVyUmVwb3NpdG9yeTogT3JkZXJSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnQ2F0ZWdvcnlSZXBvc2l0b3J5JykgcHVibGljIHJlYWRvbmx5IGNhdGVnb3J5UmVwb3NpdG9yeTogQ2F0ZWdvcnlSZXBvc2l0b3J5LFxyXG4gICkge31cclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export { CouponRepositoriesFacade } from './coupon-repositories.facade';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvdXBvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IENvdXBvblJlcG9zaXRvcmllc0ZhY2FkZSB9IGZyb20gJy4vY291cG9uLXJlcG9zaXRvcmllcy5mYWNhZGUnXHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLXBhcmFtcy50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jb3Vwb24vdHlwZXMvY291cG9uLXBhcmFtcy50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGVja291dCwgQ2hlY2tvdXRUeXBlcywgQ291cG9uIH0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcblxyXG5leHBvcnQgdHlwZSBDaGVja0NvdXBvblBhcmFtcyA9IHtcclxuICBuaWNrbmFtZTogc3RyaW5nXHJcbiAgY2hlY2tvdXRUeXBlOiBDaGVja291dFR5cGVzXHJcbiAgY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+XHJcbiAgcGxhbjogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIENvdXBvblJ1bGVzVmFsaWRhdGlvblBhcmFtcyA9IHtcclxuICBjb3Vwb246IENvdXBvblxyXG4gIGNoZWNrb3V0VHlwZTogQ2hlY2tvdXRUeXBlc1xyXG4gIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0PlxyXG4gIHBsYW46IHN0cmluZ1xyXG59XHJcbiJdfQ==