@infrab4a/connect-angular 5.0.0-alpha.1 → 5.0.0-alpha.11

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 (289) 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 +289 -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 +541 -0
  21. package/esm2020/angular-hasura-graphql.module.mjs +333 -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 +39 -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 +57 -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 +39 -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 +256 -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 +10 -0
  102. package/esm2020/services/order.service.mjs +30 -0
  103. package/esm2020/services/shared/configuration.facade.mjs +29 -0
  104. package/esm2020/services/shared/index.mjs +2 -0
  105. package/esm2020/services/types/index.mjs +3 -0
  106. package/esm2020/services/types/required-checkout-data.type.mjs +2 -0
  107. package/esm2020/services/types/required-checkout-subscription-data.type.mjs +2 -0
  108. package/esm2020/types/firebase-app-config.type.mjs +2 -0
  109. package/esm2020/types/index.mjs +2 -0
  110. package/fesm2015/infrab4a-connect-angular.mjs +3373 -0
  111. package/fesm2015/infrab4a-connect-angular.mjs.map +1 -0
  112. package/fesm2020/infrab4a-connect-angular.mjs +3278 -0
  113. package/fesm2020/infrab4a-connect-angular.mjs.map +1 -0
  114. package/helpers/index.d.ts +1 -0
  115. package/helpers/mobile-operation-system-checker.helper.d.ts +3 -0
  116. package/index.d.ts +6 -0
  117. package/interfaces/catalog-strategies.interface.d.ts +31 -0
  118. package/interfaces/category-facades.interface.d.ts +6 -0
  119. package/interfaces/index.d.ts +2 -0
  120. package/package.json +24 -4
  121. package/persistence/cookie-data-persistence.d.ts +10 -0
  122. package/persistence/data-persistence.d.ts +6 -0
  123. package/persistence/index.d.ts +2 -0
  124. package/services/auth.service.d.ts +18 -0
  125. package/services/cart/cart-services.facade.d.ts +12 -0
  126. package/services/cart/index.d.ts +1 -0
  127. package/services/cart.service.d.ts +26 -0
  128. package/services/catalog/adapters/category-structure.adapter.d.ts +4 -0
  129. package/services/catalog/adapters/index.d.ts +3 -0
  130. package/services/catalog/adapters/new-category-structure.adapter.d.ts +12 -0
  131. package/services/catalog/adapters/old-category-structure.adapter.d.ts +10 -0
  132. package/services/catalog/catalog.service.d.ts +24 -0
  133. package/services/catalog/category.service.d.ts +22 -0
  134. package/services/catalog/context/catalog-search.context.d.ts +14 -0
  135. package/services/catalog/enums/index.d.ts +1 -0
  136. package/services/catalog/enums/product-sorts.enum.d.ts +9 -0
  137. package/services/catalog/facades/catalog-service.facade.d.ts +15 -0
  138. package/services/catalog/facades/catalog-strategies.facade.d.ts +10 -0
  139. package/services/catalog/facades/category-repository.facade.d.ts +9 -0
  140. package/services/catalog/facades/category-service.facade.d.ts +15 -0
  141. package/{src/services/catalog/facades/index.ts → services/catalog/facades/index.d.ts} +5 -5
  142. package/services/catalog/facades/product-catalog.facade.d.ts +10 -0
  143. package/services/catalog/helpers/brand-manager.helper.d.ts +14 -0
  144. package/services/catalog/helpers/catalog-filter.helper.d.ts +8 -0
  145. package/services/catalog/helpers/catalog-sort.helper.d.ts +7 -0
  146. package/services/catalog/helpers/index.d.ts +4 -0
  147. package/services/catalog/helpers/product-fields.helper.d.ts +7 -0
  148. package/services/catalog/index.d.ts +7 -0
  149. package/services/catalog/models/category-with-tree.model.d.ts +4 -0
  150. package/services/catalog/models/index.d.ts +1 -0
  151. package/services/catalog/services/catalog-helpers.service.d.ts +17 -0
  152. package/services/catalog/services/catalog-operations.facade.d.ts +13 -0
  153. package/services/catalog/services/catalog-repository.service.d.ts +12 -0
  154. package/{src/services/catalog/services/index.ts → services/catalog/services/index.d.ts} +4 -4
  155. package/services/catalog/services/product-management.facade.d.ts +12 -0
  156. package/services/catalog/strategies/category-search.strategy.d.ts +19 -0
  157. package/services/catalog/strategies/index.d.ts +3 -0
  158. package/services/catalog/strategies/profile-search.strategy.d.ts +14 -0
  159. package/services/catalog/strategies/term-search.strategy.d.ts +20 -0
  160. package/services/catalog/strategies/types/strategy-params.type.d.ts +58 -0
  161. package/services/catalog/types/fetch-products-options.type.d.ts +8 -0
  162. package/services/catalog/types/fetch-products-params.type.d.ts +25 -0
  163. package/services/catalog/types/fetch-products-response.type.d.ts +19 -0
  164. package/services/catalog/types/index.d.ts +5 -0
  165. package/services/catalog/types/method-params.type.d.ts +17 -0
  166. package/services/catalog/types/product-sort.type.d.ts +2 -0
  167. package/services/catalog/wishlist.service.d.ts +58 -0
  168. package/services/checkout/checkout-dependencies.facade.d.ts +10 -0
  169. package/services/checkout/checkout-repositories.facade.d.ts +9 -0
  170. package/{src/services/checkout/index.ts → services/checkout/index.d.ts} +2 -2
  171. package/services/checkout-subscription.service.d.ts +19 -0
  172. package/services/checkout.service.d.ts +30 -0
  173. package/services/coupon/coupon-repositories.facade.d.ts +10 -0
  174. package/{src/services/coupon/index.ts → services/coupon/index.d.ts} +1 -1
  175. package/services/coupon/types/coupon-params.type.d.ts +13 -0
  176. package/services/coupon.service.d.ts +36 -0
  177. package/services/helpers/index.d.ts +1 -0
  178. package/services/helpers/util.helper.d.ts +3 -0
  179. package/services/home-shop/home-shop-repositories.facade.d.ts +10 -0
  180. package/{src/services/home-shop/index.ts → services/home-shop/index.d.ts} +1 -1
  181. package/services/home-shop.service.d.ts +26 -0
  182. package/services/index.d.ts +9 -0
  183. package/services/order.service.d.ts +13 -0
  184. package/services/shared/configuration.facade.d.ts +12 -0
  185. package/services/shared/index.d.ts +1 -0
  186. package/services/types/index.d.ts +2 -0
  187. package/services/types/required-checkout-data.type.d.ts +2 -0
  188. package/services/types/required-checkout-subscription-data.type.d.ts +2 -0
  189. package/types/firebase-app-config.type.d.ts +1 -0
  190. package/types/index.d.ts +1 -0
  191. package/eslint.config.js +0 -18
  192. package/index.ts +0 -1
  193. package/karma.conf.js +0 -32
  194. package/ng-package.json +0 -8
  195. package/project.json +0 -37
  196. package/src/angular-connect.module.ts +0 -256
  197. package/src/angular-elastic-search.module.ts +0 -23
  198. package/src/angular-firebase-auth.module.ts +0 -101
  199. package/src/angular-firestore.module.ts +0 -371
  200. package/src/angular-hasura-graphql.module.ts +0 -219
  201. package/src/angular-vertex-search.module.ts +0 -23
  202. package/src/consts/backend-url.const.ts +0 -1
  203. package/src/consts/category-structure.ts +0 -1
  204. package/src/consts/default-shop.const.ts +0 -1
  205. package/src/consts/es-config.const.ts +0 -1
  206. package/src/consts/firebase-const.ts +0 -5
  207. package/src/consts/hasura-options.const.ts +0 -1
  208. package/src/consts/index.ts +0 -8
  209. package/src/consts/persistence.const.ts +0 -1
  210. package/src/consts/storage-base-url.const.ts +0 -1
  211. package/src/consts/vertex-config.const.ts +0 -1
  212. package/src/helpers/index.ts +0 -1
  213. package/src/helpers/mobile-operation-system-checker.helper.ts +0 -10
  214. package/src/index.ts +0 -6
  215. package/src/interfaces/catalog-strategies.interface.ts +0 -36
  216. package/src/interfaces/category-facades.interface.ts +0 -7
  217. package/src/interfaces/index.ts +0 -2
  218. package/src/persistence/cookie-data-persistence.ts +0 -21
  219. package/src/persistence/data-persistence.ts +0 -7
  220. package/src/persistence/index.ts +0 -2
  221. package/src/services/auth.service.ts +0 -39
  222. package/src/services/cart/cart-services.facade.ts +0 -14
  223. package/src/services/cart/index.ts +0 -1
  224. package/src/services/cart.service.ts +0 -124
  225. package/src/services/catalog/adapters/category-structure.adapter.ts +0 -5
  226. package/src/services/catalog/adapters/index.ts +0 -3
  227. package/src/services/catalog/adapters/new-category-structure.adapter.ts +0 -42
  228. package/src/services/catalog/adapters/old-category-structure.adapter.ts +0 -17
  229. package/src/services/catalog/catalog.service.ts +0 -153
  230. package/src/services/catalog/category.service.ts +0 -52
  231. package/src/services/catalog/context/catalog-search.context.ts +0 -61
  232. package/src/services/catalog/enums/index.ts +0 -1
  233. package/src/services/catalog/enums/product-sorts.enum.ts +0 -9
  234. package/src/services/catalog/facades/catalog-service.facade.ts +0 -32
  235. package/src/services/catalog/facades/catalog-strategies.facade.ts +0 -12
  236. package/src/services/catalog/facades/category-repository.facade.ts +0 -10
  237. package/src/services/catalog/facades/category-service.facade.ts +0 -25
  238. package/src/services/catalog/facades/product-catalog.facade.ts +0 -13
  239. package/src/services/catalog/helpers/brand-manager.helper.ts +0 -63
  240. package/src/services/catalog/helpers/catalog-filter.helper.ts +0 -50
  241. package/src/services/catalog/helpers/catalog-sort.helper.ts +0 -54
  242. package/src/services/catalog/helpers/index.ts +0 -4
  243. package/src/services/catalog/helpers/product-fields.helper.ts +0 -35
  244. package/src/services/catalog/index.ts +0 -7
  245. package/src/services/catalog/models/category-with-tree.model.ts +0 -7
  246. package/src/services/catalog/models/index.ts +0 -1
  247. package/src/services/catalog/services/catalog-helpers.service.ts +0 -35
  248. package/src/services/catalog/services/catalog-operations.facade.ts +0 -24
  249. package/src/services/catalog/services/catalog-repository.service.ts +0 -20
  250. package/src/services/catalog/services/product-management.facade.ts +0 -20
  251. package/src/services/catalog/strategies/category-search.strategy.ts +0 -172
  252. package/src/services/catalog/strategies/index.ts +0 -3
  253. package/src/services/catalog/strategies/profile-search.strategy.ts +0 -51
  254. package/src/services/catalog/strategies/term-search.strategy.ts +0 -178
  255. package/src/services/catalog/strategies/types/strategy-params.type.ts +0 -58
  256. package/src/services/catalog/types/fetch-products-options.type.ts +0 -10
  257. package/src/services/catalog/types/fetch-products-params.type.ts +0 -27
  258. package/src/services/catalog/types/fetch-products-response.type.ts +0 -11
  259. package/src/services/catalog/types/index.ts +0 -5
  260. package/src/services/catalog/types/method-params.type.ts +0 -21
  261. package/src/services/catalog/types/product-sort.type.ts +0 -3
  262. package/src/services/catalog/wishlist.service.ts +0 -368
  263. package/src/services/checkout/checkout-dependencies.facade.ts +0 -13
  264. package/src/services/checkout/checkout-repositories.facade.ts +0 -10
  265. package/src/services/checkout-subscription.service.ts +0 -76
  266. package/src/services/checkout.service.ts +0 -196
  267. package/src/services/coupon/coupon-repositories.facade.ts +0 -11
  268. package/src/services/coupon/types/coupon-params.type.ts +0 -15
  269. package/src/services/coupon.service.ts +0 -347
  270. package/src/services/errors/group-invalid-coupon.error.ts +0 -9
  271. package/src/services/errors/index.ts +0 -2
  272. package/src/services/errors/invalid-coupon.error.ts +0 -7
  273. package/src/services/helpers/index.ts +0 -1
  274. package/src/services/helpers/util.helper.ts +0 -17
  275. package/src/services/home-shop/home-shop-repositories.facade.ts +0 -11
  276. package/src/services/home-shop.service.ts +0 -196
  277. package/src/services/index.ts +0 -9
  278. package/src/services/order.service.ts +0 -23
  279. package/src/services/shared/configuration.facade.ts +0 -21
  280. package/src/services/shared/index.ts +0 -1
  281. package/src/services/types/index.ts +0 -2
  282. package/src/services/types/required-checkout-data.type.ts +0 -3
  283. package/src/services/types/required-checkout-subscription-data.type.ts +0 -3
  284. package/src/types/firebase-app-config.type.ts +0 -1
  285. package/src/types/index.ts +0 -1
  286. package/tsconfig.json +0 -17
  287. package/tsconfig.lib.json +0 -13
  288. package/tsconfig.lib.prod.json +0 -13
  289. package/tsconfig.spec.json +0 -17
@@ -0,0 +1,42 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Shops, Where } from '@infrab4a/connect';
3
+ import { CatalogHelpersService, CatalogRepositoryService } from '../services';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../services";
6
+ export class ProfileSearchStrategy {
7
+ constructor(repositoryService, helpersService) {
8
+ this.repositoryService = repositoryService;
9
+ this.helpersService = helpersService;
10
+ }
11
+ async search(params, shop, optionsCache) {
12
+ const { profile, filters, limits, sort, mainGender } = params;
13
+ if (!profile) {
14
+ throw new Error('Profile is required for ProfileSearchStrategy');
15
+ }
16
+ const productCatalog = this.repositoryService.getProductCatalog();
17
+ const filterHelper = this.helpersService.getFilterHelper();
18
+ const sortHelper = this.helpersService.getSortHelper();
19
+ const fieldsHelper = this.helpersService.getFieldsHelper();
20
+ const repoParams = {
21
+ fields: fieldsHelper.getStandardFields(),
22
+ filters: {
23
+ tags: { operator: Where.LIKE, value: profile },
24
+ ...filterHelper.buildFilterQuery(filters || {}),
25
+ },
26
+ ...(sort ? { orderBy: sortHelper.buildSortQuery(sort) } : {}),
27
+ limits,
28
+ options: {
29
+ minimal: ['price'],
30
+ maximum: ['price'],
31
+ distinct: ['brand'],
32
+ },
33
+ };
34
+ return productCatalog.productRepository.findCatalog(repoParams, mainGender || (shop === Shops.MENSMARKET ? 'male' : 'female'), optionsCache);
35
+ }
36
+ }
37
+ ProfileSearchStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: ProfileSearchStrategy, deps: [{ token: i1.CatalogRepositoryService }, { token: i1.CatalogHelpersService }], target: i0.ɵɵFactoryTarget.Injectable });
38
+ ProfileSearchStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: ProfileSearchStrategy });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: ProfileSearchStrategy, decorators: [{
40
+ type: Injectable
41
+ }], ctorParameters: function () { return [{ type: i1.CatalogRepositoryService }, { type: i1.CatalogHelpersService }]; } });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1zZWFyY2guc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NhdGFsb2cvc3RyYXRlZ2llcy9wcm9maWxlLXNlYXJjaC5zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBeUQsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBR3ZHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTs7O0FBRzdFLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFDbUIsaUJBQTJDLEVBQzNDLGNBQXFDO1FBRHJDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7UUFDM0MsbUJBQWMsR0FBZCxjQUFjLENBQXVCO0lBQ3JELENBQUM7SUFFSixLQUFLLENBQUMsTUFBTSxDQUNWLE1BQTJCLEVBQzNCLElBQVcsRUFDWCxZQUFpRDtRQUVqRCxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQTtRQUU3RCxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFBO1NBQ2pFO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixFQUFFLENBQUE7UUFDakUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsQ0FBQTtRQUMxRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ3RELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLENBQUE7UUFFMUQsTUFBTSxVQUFVLEdBQUc7WUFDakIsTUFBTSxFQUFFLFlBQVksQ0FBQyxpQkFBaUIsRUFBRTtZQUN4QyxPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtnQkFDOUMsR0FBRyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQzthQUNoRDtZQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdELE1BQU07WUFDTixPQUFPLEVBQUU7Z0JBQ1AsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO2dCQUNsQixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7Z0JBQ2xCLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQzthQUNwQjtTQUNGLENBQUE7UUFFRCxPQUFPLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQ2pELFVBQVUsRUFDVixVQUFVLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFDN0QsWUFBWSxDQUNiLENBQUE7SUFDSCxDQUFDOztrSEExQ1UscUJBQXFCO3NIQUFyQixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgUHJvZHVjdCwgUmVwb3NpdG9yeUNhY2hlT3B0aW9ucywgUmVwb3NpdG9yeUZpbmRSZXN1bHQsIFNob3BzLCBXaGVyZSB9IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xuXG5pbXBvcnQgeyBDYXRhbG9nU2VhcmNoUGFyYW1zLCBDYXRhbG9nU2VhcmNoU3RyYXRlZ3kgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJ1xuaW1wb3J0IHsgQ2F0YWxvZ0hlbHBlcnNTZXJ2aWNlLCBDYXRhbG9nUmVwb3NpdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcydcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFByb2ZpbGVTZWFyY2hTdHJhdGVneSBpbXBsZW1lbnRzIENhdGFsb2dTZWFyY2hTdHJhdGVneSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVwb3NpdG9yeVNlcnZpY2U6IENhdGFsb2dSZXBvc2l0b3J5U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhlbHBlcnNTZXJ2aWNlOiBDYXRhbG9nSGVscGVyc1NlcnZpY2UsXG4gICkge31cblxuICBhc3luYyBzZWFyY2goXG4gICAgcGFyYW1zOiBDYXRhbG9nU2VhcmNoUGFyYW1zLFxuICAgIHNob3A6IFNob3BzLFxuICAgIG9wdGlvbnNDYWNoZT86IHsgY2FjaGU/OiBSZXBvc2l0b3J5Q2FjaGVPcHRpb25zIH0sXG4gICk6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRSZXN1bHQ8UHJvZHVjdD4+IHtcbiAgICBjb25zdCB7IHByb2ZpbGUsIGZpbHRlcnMsIGxpbWl0cywgc29ydCwgbWFpbkdlbmRlciB9ID0gcGFyYW1zXG5cbiAgICBpZiAoIXByb2ZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUHJvZmlsZSBpcyByZXF1aXJlZCBmb3IgUHJvZmlsZVNlYXJjaFN0cmF0ZWd5JylcbiAgICB9XG5cbiAgICBjb25zdCBwcm9kdWN0Q2F0YWxvZyA9IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZ2V0UHJvZHVjdENhdGFsb2coKVxuICAgIGNvbnN0IGZpbHRlckhlbHBlciA9IHRoaXMuaGVscGVyc1NlcnZpY2UuZ2V0RmlsdGVySGVscGVyKClcbiAgICBjb25zdCBzb3J0SGVscGVyID0gdGhpcy5oZWxwZXJzU2VydmljZS5nZXRTb3J0SGVscGVyKClcbiAgICBjb25zdCBmaWVsZHNIZWxwZXIgPSB0aGlzLmhlbHBlcnNTZXJ2aWNlLmdldEZpZWxkc0hlbHBlcigpXG5cbiAgICBjb25zdCByZXBvUGFyYW1zID0ge1xuICAgICAgZmllbGRzOiBmaWVsZHNIZWxwZXIuZ2V0U3RhbmRhcmRGaWVsZHMoKSxcbiAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgdGFnczogeyBvcGVyYXRvcjogV2hlcmUuTElLRSwgdmFsdWU6IHByb2ZpbGUgfSxcbiAgICAgICAgLi4uZmlsdGVySGVscGVyLmJ1aWxkRmlsdGVyUXVlcnkoZmlsdGVycyB8fCB7fSksXG4gICAgICB9LFxuICAgICAgLi4uKHNvcnQgPyB7IG9yZGVyQnk6IHNvcnRIZWxwZXIuYnVpbGRTb3J0UXVlcnkoc29ydCkgfSA6IHt9KSxcbiAgICAgIGxpbWl0cyxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgbWluaW1hbDogWydwcmljZSddLFxuICAgICAgICBtYXhpbXVtOiBbJ3ByaWNlJ10sXG4gICAgICAgIGRpc3RpbmN0OiBbJ2JyYW5kJ10sXG4gICAgICB9LFxuICAgIH1cblxuICAgIHJldHVybiBwcm9kdWN0Q2F0YWxvZy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhcbiAgICAgIHJlcG9QYXJhbXMsXG4gICAgICBtYWluR2VuZGVyIHx8IChzaG9wID09PSBTaG9wcy5NRU5TTUFSS0VUID8gJ21hbGUnIDogJ2ZlbWFsZScpLFxuICAgICAgb3B0aW9uc0NhY2hlLFxuICAgIClcbiAgfVxufVxuIl19
@@ -0,0 +1,126 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Shops, Where, isEmpty, } from '@infrab4a/connect';
3
+ import { CatalogHelpersService, CatalogRepositoryService } from '../services';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../services";
6
+ export class TermSearchStrategy {
7
+ constructor(repositoryService, helpersService) {
8
+ this.repositoryService = repositoryService;
9
+ this.helpersService = helpersService;
10
+ this.productsByTerm = {};
11
+ }
12
+ async search(params, shop, _optionsCache) {
13
+ const { term, filters, limits, sort, mainGender } = params;
14
+ if (!term) {
15
+ throw new Error('Term is required for TermSearchStrategy');
16
+ }
17
+ const productIds = await this.findCatalogIdsBySearch(term, shop);
18
+ if (sort === 'most-relevant') {
19
+ return this.searchWithMostRelevant({
20
+ productIds,
21
+ filters,
22
+ limits,
23
+ shop,
24
+ mainGender,
25
+ });
26
+ }
27
+ return this.searchDefault({
28
+ productIds,
29
+ filters,
30
+ limits,
31
+ shop,
32
+ mainGender,
33
+ fields: this.helpersService.getFieldsHelper().getStandardFields(),
34
+ });
35
+ }
36
+ async searchWithMostRelevant(params) {
37
+ const { productIds, filters, shop, mainGender } = params;
38
+ const productCatalog = this.repositoryService.getProductCatalog();
39
+ const filterHelper = this.helpersService.getFilterHelper();
40
+ const totalResult = await productCatalog.productRepository.findCatalog({
41
+ fields: ['id', 'stock', 'gender'],
42
+ filters: {
43
+ id: { operator: Where.IN, value: productIds },
44
+ published: { operator: Where.EQUALS, value: true },
45
+ ...filterHelper.buildFilterQuery(filters || {}),
46
+ },
47
+ options: {
48
+ minimal: ['price'],
49
+ maximum: ['price'],
50
+ ...(isEmpty(filters?.brands) ? { distinct: ['brand'] } : {}),
51
+ },
52
+ }, mainGender || (shop === Shops.MENSMARKET ? 'male' : 'female'));
53
+ return this.sortByTermRelevance({
54
+ productIds,
55
+ totalResult,
56
+ limits: params.limits,
57
+ filters,
58
+ fieldsHelper: this.helpersService.getFieldsHelper(),
59
+ });
60
+ }
61
+ async searchDefault(params) {
62
+ const { productIds, filters, limits, shop, mainGender, fields } = params;
63
+ const productCatalog = this.repositoryService.getProductCatalog();
64
+ const filterHelper = this.helpersService.getFilterHelper();
65
+ return productCatalog.productRepository.findCatalog({
66
+ fields,
67
+ filters: {
68
+ id: { operator: Where.IN, value: productIds },
69
+ published: { operator: Where.EQUALS, value: true },
70
+ ...filterHelper.buildFilterQuery(filters || {}),
71
+ },
72
+ limits,
73
+ options: {
74
+ minimal: ['price'],
75
+ maximum: ['price'],
76
+ distinct: ['brand'],
77
+ },
78
+ }, mainGender || (shop === Shops.MENSMARKET ? 'male' : 'female'));
79
+ }
80
+ sortByTermRelevance(params) {
81
+ const { productIds, totalResult, limits, filters, fieldsHelper } = params;
82
+ const defaultGender = filters?.gender?.at(0) || 'male';
83
+ const stockData = totalResult.data.filter((product) => product.stock.quantity > 0);
84
+ const stockOut = totalResult.data.filter((product) => product.stock.quantity <= 0);
85
+ const productIdsStockGender = productIds.filter((product) => stockData.some((result) => result.id === product && (result.gender?.includes(defaultGender) || result.gender?.includes('unisex'))));
86
+ const productIdsStockNotGender = productIds.filter((product) => stockData.some((result) => result.id === product && !result.gender?.includes(defaultGender) && !result.gender?.includes('unisex')));
87
+ const productIdsStock = productIdsStockGender.concat(productIdsStockNotGender);
88
+ const productIdsStockOut = productIds.filter((product) => stockOut.some((result) => result.id === product));
89
+ const limitedProductId = productIdsStock
90
+ .concat(productIdsStockOut)
91
+ .slice(limits.offset, limits.offset + limits.limit);
92
+ const orderedId = productIds.filter((product) => limitedProductId.includes(product));
93
+ return this.getDetailedProducts(orderedId, totalResult, fieldsHelper);
94
+ }
95
+ async getDetailedProducts(orderedId, totalResult, fieldsHelper) {
96
+ const productCatalog = this.repositoryService.getProductCatalog();
97
+ const fields = fieldsHelper.getStandardFields();
98
+ const productResult = await productCatalog.productRepository.findCatalog({
99
+ filters: {
100
+ id: { operator: Where.IN, value: orderedId },
101
+ },
102
+ fields,
103
+ });
104
+ return {
105
+ data: orderedId.map((id) => productResult.data.find((product) => product.id === id)).filter(Boolean),
106
+ count: totalResult.count,
107
+ maximum: totalResult.maximum,
108
+ minimal: totalResult.minimal,
109
+ distinct: totalResult.distinct,
110
+ };
111
+ }
112
+ async findCatalogIdsBySearch(term, shop) {
113
+ if (this.productsByTerm[term])
114
+ return this.productsByTerm[term];
115
+ const productServices = this.repositoryService.getProductServices();
116
+ return (this.productsByTerm[term] = await productServices.productSearch
117
+ .search(term, 999, shop === Shops.GLAMSHOP ? 'female' : 'male')
118
+ .then((products) => [...new Set(products.map((product) => product.id))]));
119
+ }
120
+ }
121
+ TermSearchStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: TermSearchStrategy, deps: [{ token: i1.CatalogRepositoryService }, { token: i1.CatalogHelpersService }], target: i0.ɵɵFactoryTarget.Injectable });
122
+ TermSearchStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: TermSearchStrategy });
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: TermSearchStrategy, decorators: [{
124
+ type: Injectable
125
+ }], ctorParameters: function () { return [{ type: i1.CatalogRepositoryService }, { type: i1.CatalogHelpersService }]; } });
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybS1zZWFyY2guc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NhdGFsb2cvc3RyYXRlZ2llcy90ZXJtLXNlYXJjaC5zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFLTCxLQUFLLEVBQ0wsS0FBSyxFQUNMLE9BQU8sR0FDUixNQUFNLG1CQUFtQixDQUFBO0FBRzFCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTs7O0FBUzdFLE1BQU0sT0FBTyxrQkFBa0I7SUFHN0IsWUFDbUIsaUJBQTJDLEVBQzNDLGNBQXFDO1FBRHJDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7UUFDM0MsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBSmhELG1CQUFjLEdBQTZCLEVBQUUsQ0FBQTtJQUtsRCxDQUFDO0lBRUosS0FBSyxDQUFDLE1BQU0sQ0FDVixNQUEyQixFQUMzQixJQUFXLEVBQ1gsYUFBa0Q7UUFFbEQsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLENBQUE7UUFFMUQsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQTtTQUMzRDtRQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUVoRSxJQUFJLElBQUksS0FBSyxlQUFlLEVBQUU7WUFDNUIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7Z0JBQ2pDLFVBQVU7Z0JBQ1YsT0FBTztnQkFDUCxNQUFNO2dCQUNOLElBQUk7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UUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDN0UsQ0FBQzs7K0dBM0pVLGtCQUFrQjttSEFBbEIsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIFByb2R1Y3QsXG4gIFByb2R1Y3RTZWFyY2gsXG4gIFJlcG9zaXRvcnlDYWNoZU9wdGlvbnMsXG4gIFJlcG9zaXRvcnlGaW5kUmVzdWx0LFxuICBTaG9wcyxcbiAgV2hlcmUsXG4gIGlzRW1wdHksXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xuXG5pbXBvcnQgeyBDYXRhbG9nU2VhcmNoUGFyYW1zLCBDYXRhbG9nU2VhcmNoU3RyYXRlZ3kgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJ1xuaW1wb3J0IHsgQ2F0YWxvZ0hlbHBlcnNTZXJ2aWNlLCBDYXRhbG9nUmVwb3NpdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcydcblxuaW1wb3J0IHtcbiAgU29ydEJ5VGVybVJlbGV2YW5jZVBhcmFtcyxcbiAgVGVybVNlYXJjaERlZmF1bHRQYXJhbXMsXG4gIFRlcm1TZWFyY2hNb3N0UmVsZXZhbnRQYXJhbXMsXG59IGZyb20gJy4vdHlwZXMvc3RyYXRlZ3ktcGFyYW1zLnR5cGUnXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUZXJtU2VhcmNoU3RyYXRlZ3kgaW1wbGVtZW50cyBDYXRhbG9nU2VhcmNoU3RyYXRlZ3kge1xuICBwcml2YXRlIHByb2R1Y3RzQnlUZXJtOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVwb3NpdG9yeVNlcnZpY2U6IENhdGFsb2dSZXBvc2l0b3J5U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhlbHBlcnNTZXJ2aWNlOiBDYXRhbG9nSGVscGVyc1NlcnZpY2UsXG4gICkge31cblxuICBhc3luYyBzZWFyY2goXG4gICAgcGFyYW1zOiBDYXRhbG9nU2VhcmNoUGFyYW1zLFxuICAgIHNob3A6IFNob3BzLFxuICAgIF9vcHRpb25zQ2FjaGU/OiB7IGNhY2hlPzogUmVwb3NpdG9yeUNhY2hlT3B0aW9ucyB9LFxuICApOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PFByb2R1Y3Q+PiB7XG4gICAgY29uc3QgeyB0ZXJtLCBmaWx0ZXJzLCBsaW1pdHMsIHNvcnQsIG1haW5HZW5kZXIgfSA9IHBhcmFtc1xuXG4gICAgaWYgKCF0ZXJtKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Rlcm0gaXMgcmVxdWlyZWQgZm9yIFRlcm1TZWFyY2hTdHJhdGVneScpXG4gICAgfVxuXG4gICAgY29uc3QgcHJvZHVjdElkcyA9IGF3YWl0IHRoaXMuZmluZENhdGFsb2dJZHNCeVNlYXJjaCh0ZXJtLCBzaG9wKVxuXG4gICAgaWYgKHNvcnQgPT09ICdtb3N0LXJlbGV2YW50Jykge1xuICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoV2l0aE1vc3RSZWxldmFudCh7XG4gICAgICAgIHByb2R1Y3RJZHMsXG4gICAgICAgIGZpbHRlcnMsXG4gICAgICAgIGxpbWl0cyxcbiAgICAgICAgc2hvcCxcbiAgICAgICAgbWFpbkdlbmRlcixcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoRGVmYXVsdCh7XG4gICAgICBwcm9kdWN0SWRzLFxuICAgICAgZmlsdGVycyxcbiAgICAgIGxpbWl0cyxcbiAgICAgIHNob3AsXG4gICAgICBtYWluR2VuZGVyLFxuICAgICAgZmllbGRzOiB0aGlzLmhlbHBlcnNTZXJ2aWNlLmdldEZpZWxkc0hlbHBlcigpLmdldFN0YW5kYXJkRmllbGRzKCksXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VhcmNoV2l0aE1vc3RSZWxldmFudChwYXJhbXM6IFRlcm1TZWFyY2hNb3N0UmVsZXZhbnRQYXJhbXMpOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PFByb2R1Y3Q+PiB7XG4gICAgY29uc3QgeyBwcm9kdWN0SWRzLCBmaWx0ZXJzLCBzaG9wLCBtYWluR2VuZGVyIH0gPSBwYXJhbXNcbiAgICBjb25zdCBwcm9kdWN0Q2F0YWxvZyA9IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZ2V0UHJvZHVjdENhdGFsb2coKVxuICAgIGNvbnN0IGZpbHRlckhlbHBlciA9IHRoaXMuaGVscGVyc1NlcnZpY2UuZ2V0RmlsdGVySGVscGVyKClcblxuICAgIGNvbnN0IHRvdGFsUmVzdWx0ID0gYXdhaXQgcHJvZHVjdENhdGFsb2cucHJvZHVjdFJlcG9zaXRvcnkuZmluZENhdGFsb2coXG4gICAgICB7XG4gICAgICAgIGZpZWxkczogWydpZCcsICdzdG9jaycsICdnZW5kZXInXSxcbiAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgIGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IHByb2R1Y3RJZHMgfSxcbiAgICAgICAgICBwdWJsaXNoZWQ6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IHRydWUgfSxcbiAgICAgICAgICAuLi5maWx0ZXJIZWxwZXIuYnVpbGRGaWx0ZXJRdWVyeShmaWx0ZXJzIHx8IHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIG1pbmltYWw6IFsncHJpY2UnXSxcbiAgICAgICAgICBtYXhpbXVtOiBbJ3ByaWNlJ10sXG4gICAgICAgICAgLi4uKGlzRW1wdHkoZmlsdGVycz8uYnJhbmRzKSA/IHsgZGlzdGluY3Q6IFsnYnJhbmQnXSB9IDoge30pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG1haW5HZW5kZXIgfHwgKHNob3AgPT09IFNob3BzLk1FTlNNQVJLRVQgPyAnbWFsZScgOiAnZmVtYWxlJyksXG4gICAgKVxuXG4gICAgcmV0dXJuIHRoaXMuc29ydEJ5VGVybVJlbGV2YW5jZSh7XG4gICAgICBwcm9kdWN0SWRzLFxuICAgICAgdG90YWxSZXN1bHQsXG4gICAgICBsaW1pdHM6IHBhcmFtcy5saW1pdHMsXG4gICAgICBmaWx0ZXJzLFxuICAgICAgZmllbGRzSGVscGVyOiB0aGlzLmhlbHBlcnNTZXJ2aWNlLmdldEZpZWxkc0hlbHBlcigpLFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlYXJjaERlZmF1bHQocGFyYW1zOiBUZXJtU2VhcmNoRGVmYXVsdFBhcmFtcyk6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRSZXN1bHQ8UHJvZHVjdD4+IHtcbiAgICBjb25zdCB7IHByb2R1Y3RJZHMsIGZpbHRlcnMsIGxpbWl0cywgc2hvcCwgbWFpbkdlbmRlciwgZmllbGRzIH0gPSBwYXJhbXNcbiAgICBjb25zdCBwcm9kdWN0Q2F0YWxvZyA9IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZ2V0UHJvZHVjdENhdGFsb2coKVxuICAgIGNvbnN0IGZpbHRlckhlbHBlciA9IHRoaXMuaGVscGVyc1NlcnZpY2UuZ2V0RmlsdGVySGVscGVyKClcblxuICAgIHJldHVybiBwcm9kdWN0Q2F0YWxvZy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhcbiAgICAgIHtcbiAgICAgICAgZmllbGRzLFxuICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgaWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogcHJvZHVjdElkcyB9LFxuICAgICAgICAgIHB1Ymxpc2hlZDogeyBvcGVyYXRvcjogV2hlcmUuRVFVQUxTLCB2YWx1ZTogdHJ1ZSB9LFxuICAgICAgICAgIC4uLmZpbHRlckhlbHBlci5idWlsZEZpbHRlclF1ZXJ5KGZpbHRlcnMgfHwge30pLFxuICAgICAgICB9LFxuICAgICAgICBsaW1pdHMsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBtaW5pbWFsOiBbJ3ByaWNlJ10sXG4gICAgICAgICAgbWF4aW11bTogWydwcmljZSddLFxuICAgICAgICAgIGRpc3RpbmN0OiBbJ2JyYW5kJ10sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbWFpbkdlbmRlciB8fCAoc2hvcCA9PT0gU2hvcHMuTUVOU01BUktFVCA/ICdtYWxlJyA6ICdmZW1hbGUnKSxcbiAgICApXG4gIH1cblxuICBwcml2YXRlIHNvcnRCeVRlcm1SZWxldmFuY2UocGFyYW1zOiBTb3J0QnlUZXJtUmVsZXZhbmNlUGFyYW1zKSB7XG4gICAgY29uc3QgeyBwcm9kdWN0SWRzLCB0b3RhbFJlc3VsdCwgbGltaXRzLCBmaWx0ZXJzLCBmaWVsZHNIZWxwZXIgfSA9IHBhcmFtc1xuICAgIGNvbnN0IGRlZmF1bHRHZW5kZXIgPSBmaWx0ZXJzPy5nZW5kZXI/LmF0KDApIHx8ICdtYWxlJ1xuICAgIGNvbnN0IHN0b2NrRGF0YSA9IHRvdGFsUmVzdWx0LmRhdGEuZmlsdGVyKChwcm9kdWN0OiBhbnkpID0+IHByb2R1Y3Quc3RvY2sucXVhbnRpdHkgPiAwKVxuICAgIGNvbnN0IHN0b2NrT3V0ID0gdG90YWxSZXN1bHQuZGF0YS5maWx0ZXIoKHByb2R1Y3Q6IGFueSkgPT4gcHJvZHVjdC5zdG9jay5xdWFudGl0eSA8PSAwKVxuXG4gICAgY29uc3QgcHJvZHVjdElkc1N0b2NrR2VuZGVyID0gcHJvZHVjdElkcy5maWx0ZXIoKHByb2R1Y3QpID0+XG4gICAgICBzdG9ja0RhdGEuc29tZShcbiAgICAgICAgKHJlc3VsdDogYW55KSA9PlxuICAgICAgICAgIHJlc3VsdC5pZCA9PT0gcHJvZHVjdCAmJiAocmVzdWx0LmdlbmRlcj8uaW5jbHVkZXMoZGVmYXVsdEdlbmRlcikgfHwgcmVzdWx0LmdlbmRlcj8uaW5jbHVkZXMoJ3VuaXNleCcpKSxcbiAgICAgICksXG4gICAgKVxuXG4gICAgY29uc3QgcHJvZHVjdElkc1N0b2NrTm90R2VuZGVyID0gcHJvZHVjdElkcy5maWx0ZXIoKHByb2R1Y3QpID0+XG4gICAgICBzdG9ja0RhdGEuc29tZShcbiAgICAgICAgKHJlc3VsdDogYW55KSA9PlxuICAgICAgICAgIHJlc3VsdC5pZCA9PT0gcHJvZHVjdCAmJiAhcmVzdWx0LmdlbmRlcj8uaW5jbHVkZXMoZGVmYXVsdEdlbmRlcikgJiYgIXJlc3VsdC5nZW5kZXI/LmluY2x1ZGVzKCd1bmlzZXgnKSxcbiAgICAgICksXG4gICAgKVxuXG4gICAgY29uc3QgcHJvZHVjdElkc1N0b2NrID0gcHJvZHVjdElkc1N0b2NrR2VuZGVyLmNvbmNhdChwcm9kdWN0SWRzU3RvY2tOb3RHZW5kZXIpXG4gICAgY29uc3QgcHJvZHVjdElkc1N0b2NrT3V0ID0gcHJvZHVjdElkcy5maWx0ZXIoKHByb2R1Y3QpID0+IHN0b2NrT3V0LnNvbWUoKHJlc3VsdDogYW55KSA9PiByZXN1bHQuaWQgPT09IHByb2R1Y3QpKVxuXG4gICAgY29uc3QgbGltaXRlZFByb2R1Y3RJZCA9IHByb2R1Y3RJZHNTdG9ja1xuICAgICAgLmNvbmNhdChwcm9kdWN0SWRzU3RvY2tPdXQpXG4gICAgICAuc2xpY2UobGltaXRzLm9mZnNldCwgbGltaXRzLm9mZnNldCArIGxpbWl0cy5saW1pdClcblxuICAgIGNvbnN0IG9yZGVyZWRJZCA9IHByb2R1Y3RJZHMuZmlsdGVyKChwcm9kdWN0KSA9PiBsaW1pdGVkUHJvZHVjdElkLmluY2x1ZGVzKHByb2R1Y3QpKVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0RGV0YWlsZWRQcm9kdWN0cyhvcmRlcmVkSWQsIHRvdGFsUmVzdWx0LCBmaWVsZHNIZWxwZXIpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldERldGFpbGVkUHJvZHVjdHMob3JkZXJlZElkOiBzdHJpbmdbXSwgdG90YWxSZXN1bHQ6IGFueSwgZmllbGRzSGVscGVyOiBhbnkpIHtcbiAgICBjb25zdCBwcm9kdWN0Q2F0YWxvZyA9IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZ2V0UHJvZHVjdENhdGFsb2coKVxuICAgIGNvbnN0IGZpZWxkcyA9IGZpZWxkc0hlbHBlci5nZXRTdGFuZGFyZEZpZWxkcygpXG4gICAgY29uc3QgcHJvZHVjdFJlc3VsdCA9IGF3YWl0IHByb2R1Y3RDYXRhbG9nLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmRDYXRhbG9nKHtcbiAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgaWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogb3JkZXJlZElkIH0sXG4gICAgICB9LFxuICAgICAgZmllbGRzLFxuICAgIH0pXG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogb3JkZXJlZElkLm1hcCgoaWQpID0+IHByb2R1Y3RSZXN1bHQuZGF0YS5maW5kKChwcm9kdWN0KSA9PiBwcm9kdWN0LmlkID09PSBpZCkpLmZpbHRlcihCb29sZWFuKSxcbiAgICAgIGNvdW50OiB0b3RhbFJlc3VsdC5jb3VudCxcbiAgICAgIG1heGltdW06IHRvdGFsUmVzdWx0Lm1heGltdW0sXG4gICAgICBtaW5pbWFsOiB0b3RhbFJlc3VsdC5taW5pbWFsLFxuICAgICAgZGlzdGluY3Q6IHRvdGFsUmVzdWx0LmRpc3RpbmN0LFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmluZENhdGFsb2dJZHNCeVNlYXJjaCh0ZXJtOiBzdHJpbmcsIHNob3A6IFNob3BzKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGlmICh0aGlzLnByb2R1Y3RzQnlUZXJtW3Rlcm1dKSByZXR1cm4gdGhpcy5wcm9kdWN0c0J5VGVybVt0ZXJtXVxuXG4gICAgY29uc3QgcHJvZHVjdFNlcnZpY2VzID0gdGhpcy5yZXBvc2l0b3J5U2VydmljZS5nZXRQcm9kdWN0U2VydmljZXMoKVxuXG4gICAgcmV0dXJuICh0aGlzLnByb2R1Y3RzQnlUZXJtW3Rlcm1dID0gYXdhaXQgcHJvZHVjdFNlcnZpY2VzLnByb2R1Y3RTZWFyY2hcbiAgICAgIC5zZWFyY2g8UHJvZHVjdFNlYXJjaD4odGVybSwgOTk5LCBzaG9wID09PSBTaG9wcy5HTEFNU0hPUCA/ICdmZW1hbGUnIDogJ21hbGUnKVxuICAgICAgLnRoZW4oKHByb2R1Y3RzKSA9PiBbLi4ubmV3IFNldChwcm9kdWN0cy5tYXAoKHByb2R1Y3QpID0+IHByb2R1Y3QuaWQpKV0pKVxuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyYXRlZ3ktcGFyYW1zLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NhdGFsb2cvc3RyYXRlZ2llcy90eXBlcy9zdHJhdGVneS1wYXJhbXMudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVwb3NpdG9yeUNhY2hlT3B0aW9ucywgU2hvcHMgfSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcblxuZXhwb3J0IHR5cGUgU2VhcmNoV2l0aE1vc3RSZWxldmFudFBhcmFtcyA9IHtcbiAgY2F0ZWdvcnk6IGFueVxuICBmaWx0ZXJzOiBhbnlcbiAgbGltaXRzOiBhbnlcbiAgc2hvcDogU2hvcHNcbiAgbWFpbkdlbmRlcjogYW55XG4gIG9wdGlvbnNDYWNoZTogeyBjYWNoZT86IFJlcG9zaXRvcnlDYWNoZU9wdGlvbnMgfSB8IHVuZGVmaW5lZFxuICBmaWVsZHM6IGFueVxufVxuXG5leHBvcnQgdHlwZSBTZWFyY2hEZWZhdWx0UGFyYW1zID0ge1xuICBjYXRlZ29yeTogYW55XG4gIGZpbHRlcnM6IGFueVxuICBsaW1pdHM6IGFueVxuICBzaG9wOiBTaG9wc1xuICBtYWluR2VuZGVyOiBhbnlcbiAgc29ydDogYW55XG4gIG9wdGlvbnNDYWNoZTogeyBjYWNoZT86IFJlcG9zaXRvcnlDYWNoZU9wdGlvbnMgfSB8IHVuZGVmaW5lZFxuICBmaWVsZHM6IGFueVxufVxuXG5leHBvcnQgdHlwZSBGaW5kQW5kU29ydEJ5TW9zdFJlbGV2YW50UGFyYW1zID0ge1xuICBtb3N0UmVsZXZhbnRzOiBzdHJpbmdbXVxuICBwcm9kdWN0SWRzOiBzdHJpbmdbXVxuICBmaWx0ZXJzOiBhbnlcbiAgbGltaXRzOiBhbnlcbiAgc2hvcDogU2hvcHNcbiAgbWFpbkdlbmRlcjogYW55XG4gIG9wdGlvbnNDYWNoZTogeyBjYWNoZT86IFJlcG9zaXRvcnlDYWNoZU9wdGlvbnMgfSB8IHVuZGVmaW5lZFxuICBmaWVsZHM6IGFueVxufVxuXG5leHBvcnQgdHlwZSBUZXJtU2VhcmNoTW9zdFJlbGV2YW50UGFyYW1zID0ge1xuICBwcm9kdWN0SWRzOiBzdHJpbmdbXVxuICBmaWx0ZXJzOiBhbnlcbiAgbGltaXRzOiBhbnlcbiAgbWFpbkdlbmRlcjogYW55XG4gIHNob3A6IFNob3BzXG59XG5cbmV4cG9ydCB0eXBlIFRlcm1TZWFyY2hEZWZhdWx0UGFyYW1zID0ge1xuICBwcm9kdWN0SWRzOiBzdHJpbmdbXVxuICBmaWx0ZXJzOiBhbnlcbiAgbGltaXRzOiBhbnlcbiAgbWFpbkdlbmRlcjogYW55XG4gIHNob3A6IFNob3BzXG4gIGZpZWxkczogYW55XG59XG5cbmV4cG9ydCB0eXBlIFNvcnRCeVRlcm1SZWxldmFuY2VQYXJhbXMgPSB7XG4gIHByb2R1Y3RJZHM6IHN0cmluZ1tdXG4gIHRvdGFsUmVzdWx0OiBhbnlcbiAgbGltaXRzOiBhbnlcbiAgZmlsdGVyczogYW55XG4gIGZpZWxkc0hlbHBlcjogYW55XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2gtcHJvZHVjdHMtb3B0aW9ucy50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL3R5cGVzL2ZldGNoLXByb2R1Y3RzLW9wdGlvbnMudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvZHVjdEdlbmRlciB9IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xuXG5pbXBvcnQgeyBQcm9kdWN0U29ydCB9IGZyb20gJy4vcHJvZHVjdC1zb3J0LnR5cGUnXG5cbmV4cG9ydCB0eXBlIEZldGNoUHJvZHVjdHNPcHRpb25zID0ge1xuICBwYWdlPzogbnVtYmVyXG4gIHBlclBhZ2U/OiBudW1iZXJcbiAgc29ydD86IFByb2R1Y3RTb3J0XG4gIG1haW5HZW5kZXI/OiBQcm9kdWN0R2VuZGVyXG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2gtcHJvZHVjdHMtcGFyYW1zLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NhdGFsb2cvdHlwZXMvZmV0Y2gtcHJvZHVjdHMtcGFyYW1zLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhdGVnb3J5IH0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5cbmltcG9ydCB7IENhdGFsb2dGaWx0ZXJzIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcydcblxuaW1wb3J0IHsgRmV0Y2hQcm9kdWN0c09wdGlvbnMgfSBmcm9tICcuL2ZldGNoLXByb2R1Y3RzLW9wdGlvbnMudHlwZSdcblxuZXhwb3J0IHR5cGUgRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VCBleHRlbmRzIENhdGVnb3J5PiA9IHtcbiAgY2F0ZWdvcnk/OiBUXG4gIHByb2ZpbGU/OiBzdHJpbmdbXVxuICB0ZXJtPzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIEZldGNoUHJvZHVjdHNQYXJhbXM8VCBleHRlbmRzIENhdGVnb3J5PiA9IEZldGNoUHJvZHVjdHNPcHRpb25zICZcbiAgKFxuICAgIHwge1xuICAgICAgICBjYXRlZ29yeTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ2NhdGVnb3J5J11cbiAgICAgICAgZmlsdGVycz86IENhdGFsb2dGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxuICAgICAgfVxuICAgIHwge1xuICAgICAgICBwcm9maWxlOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsncHJvZmlsZSddXG4gICAgICAgIGZpbHRlcnM/OiBDYXRhbG9nRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyOyB0YWdzPzogbmV2ZXIgfVxuICAgICAgfVxuICAgIHwge1xuICAgICAgICB0ZXJtOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsndGVybSddXG4gICAgICAgIGZpbHRlcnM/OiBDYXRhbG9nRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyIH1cbiAgICAgIH1cbiAgKVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2gtcHJvZHVjdHMtcmVzcG9uc2UudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2F0YWxvZy90eXBlcy9mZXRjaC1wcm9kdWN0cy1yZXNwb25zZS50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9kdWN0IH0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5cbmV4cG9ydCB0eXBlIEZldGNoUHJvZHVjdHNSZXNwb25zZSA9IHtcbiAgcHJvZHVjdHM6IHsgZGF0YTogUHJvZHVjdFtdOyB0b3RhbDogbnVtYmVyIH1cbiAgcGFnZXM6IG51bWJlclxuICBwcmljZXM6IHtcbiAgICBwcmljZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfVxuICAgIHN1YnNjcmliZXJQcmljZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfVxuICB9XG4gIGJyYW5kcz86IHN0cmluZ1tdXG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export * from './fetch-products-options.type';
2
+ export * from './fetch-products-params.type';
3
+ export * from './fetch-products-response.type';
4
+ export * from './method-params.type';
5
+ export * from './product-sort.type';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NhdGFsb2cvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywrQkFBK0IsQ0FBQTtBQUM3QyxjQUFjLDhCQUE4QixDQUFBO0FBQzVDLGNBQWMsZ0NBQWdDLENBQUE7QUFDOUMsY0FBYyxzQkFBc0IsQ0FBQTtBQUNwQyxjQUFjLHFCQUFxQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9mZXRjaC1wcm9kdWN0cy1vcHRpb25zLnR5cGUnXG5leHBvcnQgKiBmcm9tICcuL2ZldGNoLXByb2R1Y3RzLXBhcmFtcy50eXBlJ1xuZXhwb3J0ICogZnJvbSAnLi9mZXRjaC1wcm9kdWN0cy1yZXNwb25zZS50eXBlJ1xuZXhwb3J0ICogZnJvbSAnLi9tZXRob2QtcGFyYW1zLnR5cGUnXG5leHBvcnQgKiBmcm9tICcuL3Byb2R1Y3Qtc29ydC50eXBlJ1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0aG9kLXBhcmFtcy50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL3R5cGVzL21ldGhvZC1wYXJhbXMudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2F0ZWdvcnksIFByb2R1Y3QsIFNob3BzIH0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5cbmltcG9ydCB7IENhdGFsb2dTZWFyY2hQYXJhbXMgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJ1xuXG5pbXBvcnQgeyBGZXRjaFByb2R1Y3RzUGFyYW1zIH0gZnJvbSAnLi9mZXRjaC1wcm9kdWN0cy1wYXJhbXMudHlwZSdcblxuZXhwb3J0IHR5cGUgU3RvY2tOb3RpZmljYXRpb25QYXJhbXMgPSB7XG4gIHNob3A6IFNob3BzXG4gIHByb2R1Y3RJZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBlbWFpbDogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIEJ1aWxkUmVzcG9uc2VQYXJhbXM8VCBleHRlbmRzIENhdGVnb3J5ID0gQ2F0ZWdvcnk+ID0ge1xuICBkYXRhOiBQcm9kdWN0W11cbiAgdG90YWw6IG51bWJlclxuICBtYXhpbXVtOiBhbnlcbiAgbWluaW1hbDogYW55XG4gIHNlYXJjaFBhcmFtczogQ2F0YWxvZ1NlYXJjaFBhcmFtc1xuICBvcHRpb25zOiBGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1zb3J0LnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NhdGFsb2cvdHlwZXMvcHJvZHVjdC1zb3J0LnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2R1Y3RTb3J0cyB9IGZyb20gJy4uL2VudW1zJ1xuXG5leHBvcnQgdHlwZSBQcm9kdWN0U29ydCA9IGAke1Byb2R1Y3RTb3J0c31gXG4iXX0=
@@ -0,0 +1,256 @@
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, shop, logRepository) {
8
+ this.wishlistRepository = wishlistRepository;
9
+ this.shop = shop;
10
+ this.logRepository = logRepository;
11
+ }
12
+ initializeServices(catalogServiceFacade, categoryServiceFacade) {
13
+ this.catalogService = catalogServiceFacade.getCatalogService();
14
+ this.categoryService = categoryServiceFacade.getCategoryService();
15
+ }
16
+ getCatalogService() {
17
+ return this.catalogService;
18
+ }
19
+ getCategoryService() {
20
+ return this.categoryService;
21
+ }
22
+ async create({ personId, title, description, published, userFullName, userPhoto, theme, bannerUrl, personType, personIsSubscriber, }) {
23
+ const wishlistData = this.buildWishlistData({
24
+ title,
25
+ description,
26
+ published,
27
+ userFullName,
28
+ userPhoto,
29
+ theme,
30
+ bannerUrl,
31
+ personType,
32
+ personIsSubscriber,
33
+ personId,
34
+ });
35
+ const existingWishlist = await this.findExistingWishlistByPersonId(personId);
36
+ await this.createWishlistLog(WishlistLogType.CREATE, wishlistData);
37
+ if (existingWishlist)
38
+ return existingWishlist;
39
+ return this.createNewWishlist(wishlistData);
40
+ }
41
+ buildWishlistData({ title, description, published, userFullName, userPhoto, theme, bannerUrl, personType, personIsSubscriber, personId, }) {
42
+ return {
43
+ slug: '',
44
+ name: title,
45
+ description,
46
+ metadatas: [
47
+ {
48
+ shop: this.shop,
49
+ title: `${userFullName} - ${title}`,
50
+ description: `${userFullName} - ${description}`,
51
+ },
52
+ ],
53
+ shop: this.shop,
54
+ shops: [this.shop],
55
+ personId,
56
+ personName: userFullName,
57
+ personPhoto: userPhoto,
58
+ brandCategory: false,
59
+ published,
60
+ theme,
61
+ bannerUrl,
62
+ personType: personType ?? PersonTypes.NONE,
63
+ personIsSubscriber: personIsSubscriber ?? false,
64
+ };
65
+ }
66
+ async findExistingWishlistByPersonId(personId) {
67
+ const hasWishlist = await this.wishlistRepository
68
+ .find({
69
+ filters: {
70
+ personId,
71
+ },
72
+ options: {
73
+ enableCount: false,
74
+ },
75
+ orderBy: {
76
+ id: 'asc',
77
+ },
78
+ })
79
+ .then((res) => res.data);
80
+ return hasWishlist.length ? hasWishlist.at(0) : null;
81
+ }
82
+ async createNewWishlist(data) {
83
+ const newWishlist = await this.wishlistRepository.create(data);
84
+ await this.wishlistRepository.update({ id: newWishlist.id, slug: newWishlist.id });
85
+ return Wishlist.toInstance({ ...newWishlist.toPlain(), slug: newWishlist.id });
86
+ }
87
+ async update({ id, title, description, published, userFullName, userPhoto, theme, bannerUrl, personType, personIsSubscriber, }) {
88
+ const data = {
89
+ id,
90
+ name: title,
91
+ description,
92
+ published,
93
+ metadatas: [
94
+ {
95
+ shop: this.shop,
96
+ title: `${userFullName} - ${title}`,
97
+ description: `${userFullName} - ${description}`,
98
+ },
99
+ ],
100
+ personName: userFullName,
101
+ personPhoto: userPhoto,
102
+ theme,
103
+ bannerUrl,
104
+ personType: personType ?? PersonTypes.NONE,
105
+ personIsSubscriber: personIsSubscriber ?? false,
106
+ };
107
+ await this.createWishlistLog(WishlistLogType.UPDATE, data);
108
+ return this.wishlistRepository.update(data);
109
+ }
110
+ async delete(wishlistId) {
111
+ const wishlist = await this.findById(wishlistId);
112
+ await this.createWishlistLog(WishlistLogType.DELETE, wishlist);
113
+ return this.wishlistRepository.delete({ id: wishlistId });
114
+ }
115
+ getWishlistBySlug(slug) {
116
+ const [id] = slug.split('-');
117
+ if (+id)
118
+ return this.wishlistRepository.get({ id });
119
+ return this.wishlistRepository.getWishlistBySlug(slug);
120
+ }
121
+ getWishlistsByPerson(personId) {
122
+ return this.wishlistRepository.getWishlistByPerson(personId);
123
+ }
124
+ async addProduct(wishlistId, productId) {
125
+ const wishlist = await this.wishlistRepository.get({ id: wishlistId });
126
+ const hasProduct = wishlist.products.some((p) => p == productId);
127
+ const wishlistData = await this.findById(wishlistId);
128
+ const productData = await this.findProductById(productId);
129
+ await this.createWishlistLog(WishlistLogType.ADD_PRODUCT, wishlistData, productData);
130
+ if (!hasProduct) {
131
+ wishlist.products = [...wishlist.products, productId];
132
+ await this.wishlistRepository.addProduct(wishlistId, productId);
133
+ }
134
+ return wishlist;
135
+ }
136
+ async removeProduct(wishlistId, productId) {
137
+ const wishlist = await this.wishlistRepository.get({ id: wishlistId });
138
+ const productIndex = wishlist.products.findIndex((p) => p == productId);
139
+ if (productIndex != -1) {
140
+ wishlist.products.splice(productIndex, 1);
141
+ const wishlistData = await this.findById(wishlistId);
142
+ const productData = await this.findProductById(productId);
143
+ await this.createWishlistLog(WishlistLogType.REMOVE_PRODUCT, wishlistData, productData);
144
+ await this.wishlistRepository.removeProduct(wishlistId, productId);
145
+ }
146
+ return wishlist;
147
+ }
148
+ async findById(id) {
149
+ return this.wishlistRepository
150
+ .find({
151
+ fields: ['id', 'name', 'description', 'personId', 'personIsSubscriber', 'personType', 'personName'],
152
+ filters: {
153
+ id,
154
+ },
155
+ })
156
+ .then((res) => res.data.at(0));
157
+ }
158
+ async findProductById(id) {
159
+ if (!this.catalogService) {
160
+ throw new Error('CatalogService not initialized. Call initializeServices first.');
161
+ }
162
+ // Acessar o ProductRepository através do CatalogHelpersService
163
+ const helpersService = this.catalogService['helpersService'];
164
+ const productServices = helpersService.getProductServices();
165
+ return productServices.productRepository
166
+ .find({
167
+ fields: ['id', 'sku', 'EAN', 'name', 'brand'],
168
+ filters: {
169
+ id,
170
+ },
171
+ })
172
+ .then((res) => res.data.at(0));
173
+ }
174
+ async createWishlistLog(type, wishlist, product) {
175
+ switch (type) {
176
+ case WishlistLogType.CREATE:
177
+ case WishlistLogType.UPDATE:
178
+ case WishlistLogType.DELETE:
179
+ await this.createWishlistOperationLog(type, wishlist);
180
+ break;
181
+ case WishlistLogType.ADD_PRODUCT:
182
+ case WishlistLogType.REMOVE_PRODUCT:
183
+ await this.createWishlistProductLog(type, wishlist, product);
184
+ break;
185
+ default:
186
+ break;
187
+ }
188
+ }
189
+ async createWishlistOperationLog(type, wishlist) {
190
+ const operation = this.getOperationTypeFromWishlistLogType(type);
191
+ await this.logRepository.create({
192
+ collection: 'wishlist',
193
+ date: new Date(),
194
+ operation,
195
+ documentId: wishlist.id,
196
+ document: this.buildWishlistLogDocument(wishlist, type),
197
+ });
198
+ }
199
+ async createWishlistProductLog(type, wishlist, product) {
200
+ await this.logRepository.create({
201
+ collection: 'wishlist',
202
+ date: new Date(),
203
+ operation: 'UPDATE',
204
+ documentId: wishlist.id,
205
+ document: {
206
+ ...this.buildWishlistLogDocument(wishlist, type),
207
+ ...this.buildProductLogData(product),
208
+ },
209
+ });
210
+ }
211
+ getOperationTypeFromWishlistLogType(type) {
212
+ if (type === WishlistLogType.CREATE)
213
+ return 'CREATE';
214
+ if (type === WishlistLogType.UPDATE)
215
+ return 'UPDATE';
216
+ return 'DELETE';
217
+ }
218
+ buildWishlistLogDocument(wishlist, type) {
219
+ return {
220
+ id: wishlist.id,
221
+ shop: this.shop,
222
+ name: wishlist.name,
223
+ description: wishlist.description,
224
+ published: wishlist.published,
225
+ type: type,
226
+ personType: wishlist.personType,
227
+ personId: wishlist.personId,
228
+ personName: wishlist.personName,
229
+ personIsSubscriber: wishlist.personIsSubscriber,
230
+ };
231
+ }
232
+ buildProductLogData(product) {
233
+ return {
234
+ productId: product.id,
235
+ productEAN: product.EAN,
236
+ productSKU: product.sku,
237
+ productName: product.name,
238
+ productBrand: product.brand,
239
+ };
240
+ }
241
+ }
242
+ WishlistService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: WishlistService, deps: [{ token: 'WishlistRepository' }, { token: DEFAULT_SHOP }, { token: 'LogRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
243
+ WishlistService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: WishlistService });
244
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: WishlistService, decorators: [{
245
+ type: Injectable
246
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
247
+ type: Inject,
248
+ args: ['WishlistRepository']
249
+ }] }, { type: i1.Shops, decorators: [{
250
+ type: Inject,
251
+ args: [DEFAULT_SHOP]
252
+ }] }, { type: undefined, decorators: [{
253
+ type: Inject,
254
+ args: ['LogRepository']
255
+ }] }]; } });
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lzaGxpc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2F0YWxvZy93aXNobGlzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFHTCxXQUFXLEVBRVgsS0FBSyxFQUNMLFFBQVEsRUFDUixlQUFlLEdBRWhCLE1BQU0sbUJBQW1CLENBQUE7QUFFMUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQTs7O0FBTzNDLE1BQU0sT0FBTyxlQUFlO0lBSTFCLFlBQ2lELGtCQUFzQyxFQUM5QyxJQUFXLEVBQ1IsYUFBNEI7UUFGdkIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUM5QyxTQUFJLEdBQUosSUFBSSxDQUFPO1FBQ1Isa0JBQWEsR0FBYixhQUFhLENBQWU7SUFDckUsQ0FBQztJQUVKLGtCQUFrQixDQUFDLG9CQUEwQyxFQUFFLHFCQUE0QztRQUN6RyxJQUFJLENBQUMsY0FBYyxHQUFHLG9CQUFvQixDQUFDLGlCQUFpQixFQUFFLENBQUE7UUFDOUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxxQkFBcUIsQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO0lBQ25FLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUE7SUFDNUIsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUE7SUFDN0IsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsRUFDWCxRQUFRLEVBQ1IsS0FBSyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixrQkFBa0IsR0FZbkI7UUFD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Q0wsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFO1lBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO1lBQ25CLFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVztZQUNqQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7WUFDN0IsSUFBSSxFQUFFLElBQUk7WUFDVixVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVU7WUFDL0IsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRO1lBQzNCLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtZQUMvQixrQkFBa0IsRUFBRSxRQUFRLENBQUMsa0JBQWtCO1NBQ2hELENBQUE7SUFDSCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsT0FBZ0I7UUFDMUMsT0FBTztZQUNMLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUNyQixVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUc7WUFDdkIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHO1lBQ3ZCLFdBQVcsRUFBRSxPQUFPLENBQUMsSUFBSTtZQUN6QixZQUFZLEVBQUUsT0FBTyxDQUFDLEtBQUs7U0FDNUIsQ0FBQTtJQUNILENBQUM7OzRHQTNWVSxlQUFlLGtCQUtoQixvQkFBb0IsYUFDcEIsWUFBWSxhQUNaLGVBQWU7Z0hBUGQsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixVQUFVOzswQkFNTixNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQzNCLE1BQU07MkJBQUMsWUFBWTs7MEJBQ25CLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBMb2dSZXBvc2l0b3J5LFxuICBQZXJzb25UeXBlLFxuICBQZXJzb25UeXBlcyxcbiAgUHJvZHVjdCxcbiAgU2hvcHMsXG4gIFdpc2hsaXN0LFxuICBXaXNobGlzdExvZ1R5cGUsXG4gIFdpc2hsaXN0UmVwb3NpdG9yeSxcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5cbmltcG9ydCB7IERFRkFVTFRfU0hPUCB9IGZyb20gJy4uLy4uL2NvbnN0cydcblxuaW1wb3J0IHsgQ2F0YWxvZ1NlcnZpY2UgfSBmcm9tICcuL2NhdGFsb2cuc2VydmljZSdcbmltcG9ydCB7IENhdGVnb3J5U2VydmljZSB9IGZyb20gJy4vY2F0ZWdvcnkuc2VydmljZSdcbmltcG9ydCB7IENhdGFsb2dTZXJ2aWNlRmFjYWRlLCBDYXRlZ29yeVNlcnZpY2VGYWNhZGUgfSBmcm9tICcuL2ZhY2FkZXMnXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBXaXNobGlzdFNlcnZpY2Uge1xuICBwcml2YXRlIGNhdGFsb2dTZXJ2aWNlOiBDYXRhbG9nU2VydmljZVxuICBwcml2YXRlIGNhdGVnb3J5U2VydmljZTogQ2F0ZWdvcnlTZXJ2aWNlXG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgnV2lzaGxpc3RSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSB3aXNobGlzdFJlcG9zaXRvcnk6IFdpc2hsaXN0UmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBzaG9wOiBTaG9wcyxcbiAgICBASW5qZWN0KCdMb2dSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBsb2dSZXBvc2l0b3J5OiBMb2dSZXBvc2l0b3J5LFxuICApIHt9XG5cbiAgaW5pdGlhbGl6ZVNlcnZpY2VzKGNhdGFsb2dTZXJ2aWNlRmFjYWRlOiBDYXRhbG9nU2VydmljZUZhY2FkZSwgY2F0ZWdvcnlTZXJ2aWNlRmFjYWRlOiBDYXRlZ29yeVNlcnZpY2VGYWNhZGUpOiB2b2lkIHtcbiAgICB0aGlzLmNhdGFsb2dTZXJ2aWNlID0gY2F0YWxvZ1NlcnZpY2VGYWNhZGUuZ2V0Q2F0YWxvZ1NlcnZpY2UoKVxuICAgIHRoaXMuY2F0ZWdvcnlTZXJ2aWNlID0gY2F0ZWdvcnlTZXJ2aWNlRmFjYWRlLmdldENhdGVnb3J5U2VydmljZSgpXG4gIH1cblxuICBnZXRDYXRhbG9nU2VydmljZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jYXRhbG9nU2VydmljZVxuICB9XG5cbiAgZ2V0Q2F0ZWdvcnlTZXJ2aWNlKCkge1xuICAgIHJldHVybiB0aGlzLmNhdGVnb3J5U2VydmljZVxuICB9XG5cbiAgYXN5bmMgY3JlYXRlKHtcbiAgICBwZXJzb25JZCxcbiAgICB0aXRsZSxcbiAgICBkZXNjcmlwdGlvbixcbiAgICBwdWJsaXNoZWQsXG4gICAgdXNlckZ1bGxOYW1lLFxuICAgIHVzZXJQaG90byxcbiAgICB0aGVtZSxcbiAgICBiYW5uZXJVcmwsXG4gICAgcGVyc29uVHlwZSxcbiAgICBwZXJzb25Jc1N1YnNjcmliZXIsXG4gIH06IHtcbiAgICBwZXJzb25JZDogc3RyaW5nXG4gICAgdGl0bGU6IHN0cmluZ1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmdcbiAgICBwdWJsaXNoZWQ6IGJvb2xlYW5cbiAgICB1c2VyRnVsbE5hbWU6IHN0cmluZ1xuICAgIHVzZXJQaG90bz86IHN0cmluZ1xuICAgIHRoZW1lPzogc3RyaW5nXG4gICAgYmFubmVyVXJsPzogc3RyaW5nXG4gICAgcGVyc29uVHlwZT86IFBlcnNvblR5cGVcbiAgICBwZXJzb25Jc1N1YnNjcmliZXI/OiBib29sZWFuXG4gIH0pOiBQcm9taXNlPFdpc2hsaXN0PiB7XG4gICAgY29uc3Qgd2lzaGxpc3REYXRhID0gdGhpcy5idWlsZFdpc2hsaXN0RGF0YSh7XG4gICAgICB0aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgcHVibGlzaGVkLFxuICAgICAgdXNlckZ1bGxOYW1lLFxuICAgICAgdXNlclBob3RvLFxuICAgICAgdGhlbWUsXG4gICAgICBiYW5uZXJVcmwsXG4gICAgICBwZXJzb25UeXBlLFxuICAgICAgcGVyc29uSXNTdWJzY3JpYmVyLFxuICAgICAgcGVyc29uSWQsXG4gICAgfSlcblxuICAgIGNvbnN0IGV4aXN0aW5nV2lzaGxpc3QgPSBhd2FpdCB0aGlzLmZpbmRFeGlzdGluZ1dpc2hsaXN0QnlQZXJzb25JZChwZXJzb25JZClcblxuICAgIGF3YWl0IHRoaXMuY3JlYXRlV2lzaGxpc3RMb2coV2lzaGxpc3RMb2dUeXBlLkNSRUFURSwgd2lzaGxpc3REYXRhIGFzIFdpc2hsaXN0KVxuXG4gICAgaWYgKGV4aXN0aW5nV2lzaGxpc3QpIHJldHVybiBleGlzdGluZ1dpc2hsaXN0XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVOZXdXaXNobGlzdCh3aXNobGlzdERhdGEpXG4gIH1cblxuICBwcml2YXRlIGJ1aWxkV2lzaGxpc3REYXRhKHtcbiAgICB0aXRsZSxcbiAgICBkZXNjcmlwdGlvbixcbiAgICBwdWJsaXNoZWQsXG4gICAgdXNlckZ1bGxOYW1lLFxuICAgIHVzZXJQaG90byxcbiAgICB0aGVtZSxcbiAgICBiYW5uZXJVcmwsXG4gICAgcGVyc29uVHlwZSxcbiAgICBwZXJzb25Jc1N1YnNjcmliZXIsXG4gICAgcGVyc29uSWQsXG4gIH06IHtcbiAgICB0aXRsZTogc3RyaW5nXG4gICAgZGVzY3JpcHRpb246IHN0cmluZ1xuICAgIHB1Ymxpc2hlZDogYm9vbGVhblxuICAgIHVzZXJGdWxsTmFtZTogc3RyaW5nXG4gICAgdXNlclBob3RvPzogc3RyaW5nXG4gICAgdGhlbWU/OiBzdHJpbmdcbiAgICBiYW5uZXJVcmw/OiBzdHJpbmdcbiAgICBwZXJzb25UeXBlPzogUGVyc29uVHlwZVxuICAgIHBlcnNvbklzU3Vic2NyaWJlcj86IGJvb2xlYW5cbiAgICBwZXJzb25JZDogc3RyaW5nXG4gIH0pIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2x1ZzogJycsXG4gICAgICBuYW1lOiB0aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgbWV0YWRhdGFzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzaG9wOiB0aGlzLnNob3AsXG4gICAgICAgICAgdGl0bGU6IGAke3VzZXJGdWxsTmFtZX0gLSAke3RpdGxlfWAsXG4gICAgICAgICAgZGVzY3JpcHRpb246IGAke3VzZXJGdWxsTmFtZX0gLSAke2Rlc2NyaXB0aW9ufWAsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgc2hvcDogdGhpcy5zaG9wLFxuICAgICAgc2hvcHM6IFt0aGlzLnNob3BdLFxuICAgICAgcGVyc29uSWQsXG4gICAgICBwZXJzb25OYW1lOiB1c2VyRnVsbE5hbWUsXG4gICAgICBwZXJzb25QaG90bzogdXNlclBob3RvLFxuICAgICAgYnJhbmRDYXRlZ29yeTogZmFsc2UsXG4gICAgICBwdWJsaXNoZWQsXG4gICAgICB0aGVtZSxcbiAgICAgIGJhbm5lclVybCxcbiAgICAgIHBlcnNvblR5cGU6IHBlcnNvblR5cGUgPz8gUGVyc29uVHlwZXMuTk9ORSxcbiAgICAgIHBlcnNvbklzU3Vic2NyaWJlcjogcGVyc29uSXNTdWJzY3JpYmVyID8/IGZhbHNlLFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmluZEV4aXN0aW5nV2lzaGxpc3RCeVBlcnNvbklkKHBlcnNvbklkOiBzdHJpbmcpOiBQcm9taXNlPFdpc2hsaXN0IHwgbnVsbD4ge1xuICAgIGNvbnN0IGhhc1dpc2hsaXN0ID0gYXdhaXQgdGhpcy53aXNobGlzdFJlcG9zaXRvcnlcbiAgICAgIC5maW5kKHtcbiAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgIHBlcnNvbklkLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgZW5hYmxlQ291bnQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBvcmRlckJ5OiB7XG4gICAgICAgICAgaWQ6ICdhc2MnLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC50aGVuKChyZXMpID0+IHJlcy5kYXRhKVxuXG4gICAgcmV0dXJuIGhhc1dpc2hsaXN0Lmxlbmd0aCA/IGhhc1dpc2hsaXN0LmF0KDApIDogbnVsbFxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVOZXdXaXNobGlzdChkYXRhOiBhbnkpOiBQcm9taXNlPFdpc2hsaXN0PiB7XG4gICAgY29uc3QgbmV3V2lzaGxpc3QgPSBhd2FpdCB0aGlzLndpc2hsaXN0UmVwb3NpdG9yeS5jcmVhdGUoZGF0YSlcblxuICAgIGF3YWl0IHRoaXMud2lzaGxpc3RSZXBvc2l0b3J5LnVwZGF0ZSh7IGlkOiBuZXdXaXNobGlzdC5pZCwgc2x1ZzogbmV3V2lzaGxpc3QuaWQgfSlcblxuICAgIHJldHVybiBXaXNobGlzdC50b0luc3RhbmNlKHsgLi4ubmV3V2lzaGxpc3QudG9QbGFpbigpLCBzbHVnOiBuZXdXaXNobGlzdC5pZCB9KVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlKHtcbiAgICBpZCxcbiAgICB0aXRsZSxcbiAgICBkZXNjcmlwdGlvbixcbiAgICBwdWJsaXNoZWQsXG4gICAgdXNlckZ1bGxOYW1lLFxuICAgIHVzZXJQaG90byxcbiAgICB0aGVtZSxcbiAgICBiYW5uZXJVcmwsXG4gICAgcGVyc29uVHlwZSxcbiAgICBwZXJzb25Jc1N1YnNjcmliZXIsXG4gIH06IHtcbiAgICBpZDogc3RyaW5nXG4gICAgdGl0bGU6IHN0cmluZ1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmdcbiAgICBwdWJsaXNoZWQ6IGJvb2xlYW5cbiAgICB1c2VyRnVsbE5hbWU6IHN0cmluZ1xuICAgIHVzZXJQaG90bz86IHN0cmluZ1xuICAgIHRoZW1lPzogc3RyaW5nXG4gICAgYmFubmVyVXJsPzogc3RyaW5nXG4gICAgcGVyc29uVHlwZT86IFBlcnNvblR5cGVcbiAgICBwZXJzb25Jc1N1YnNjcmliZXI/OiBib29sZWFuXG4gIH0pOiBQcm9taXNlPFdpc2hsaXN0PiB7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGlkLFxuICAgICAgbmFtZTogdGl0bGUsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIHB1Ymxpc2hlZCxcbiAgICAgIG1ldGFkYXRhczogW1xuICAgICAgICB7XG4gICAgICAgICAgc2hvcDogdGhpcy5zaG9wLFxuICAgICAgICAgIHRpdGxlOiBgJHt1c2VyRnVsbE5hbWV9IC0gJHt0aXRsZX1gLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgJHt1c2VyRnVsbE5hbWV9IC0gJHtkZXNjcmlwdGlvbn1gLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHBlcnNvbk5hbWU6IHVzZXJGdWxsTmFtZSxcbiAgICAgIHBlcnNvblBob3RvOiB1c2VyUGhvdG8sXG4gICAgICB0aGVtZSxcbiAgICAgIGJhbm5lclVybCxcbiAgICAgIHBlcnNvblR5cGU6IHBlcnNvblR5cGUgPz8gUGVyc29uVHlwZXMuTk9ORSxcbiAgICAgIHBlcnNvbklzU3Vic2NyaWJlcjogcGVyc29uSXNTdWJzY3JpYmVyID8/IGZhbHNlLFxuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuY3JlYXRlV2lzaGxpc3RMb2coV2lzaGxpc3RMb2dUeXBlLlVQREFURSwgZGF0YSBhcyBXaXNobGlzdClcblxuICAgIHJldHVybiB0aGlzLndpc2hsaXN0UmVwb3NpdG9yeS51cGRhdGUoZGF0YSlcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZSh3aXNobGlzdElkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB3aXNobGlzdCA9IGF3YWl0IHRoaXMuZmluZEJ5SWQod2lzaGxpc3RJZClcblxuICAgIGF3YWl0IHRoaXMuY3JlYXRlV2lzaGxpc3RMb2coV2lzaGxpc3RMb2dUeXBlLkRFTEVURSwgd2lzaGxpc3QpXG5cbiAgICByZXR1cm4gdGhpcy53aXNobGlzdFJlcG9zaXRvcnkuZGVsZXRlKHsgaWQ6IHdpc2hsaXN0SWQgfSlcbiAgfVxuXG4gIGdldFdpc2hsaXN0QnlTbHVnKHNsdWc6IHN0cmluZyk6IFByb21pc2U8V2lzaGxpc3Q+IHtcbiAgICBjb25zdCBbaWRdID0gc2x1Zy5zcGxpdCgnLScpXG5cbiAgICBpZiAoK2lkKSByZXR1cm4gdGhpcy53aXNobGlzdFJlcG9zaXRvcnkuZ2V0KHsgaWQgfSlcblxuICAgIHJldHVybiB0aGlzLndpc2hsaXN0UmVwb3NpdG9yeS5nZXRXaXNobGlzdEJ5U2x1ZyhzbHVnKVxuICB9XG5cbiAgZ2V0V2lzaGxpc3RzQnlQZXJzb24ocGVyc29uSWQ6IHN0cmluZyk6IFByb21pc2U8V2lzaGxpc3RbXT4ge1xuICAgIHJldHVybiB0aGlzLndpc2hsaXN0UmVwb3NpdG9yeS5nZXRXaXNobGlzdEJ5UGVyc29uKHBlcnNvbklkKVxuICB9XG5cbiAgYXN5bmMgYWRkUHJvZHVjdCh3aXNobGlzdElkOiBzdHJpbmcsIHByb2R1Y3RJZDogc3RyaW5nKTogUHJvbWlzZTxXaXNobGlzdD4ge1xuICAgIGNvbnN0IHdpc2hsaXN0ID0gYXdhaXQgdGhpcy53aXNobGlzdFJlcG9zaXRvcnkuZ2V0KHsgaWQ6IHdpc2hsaXN0SWQgfSlcbiAgICBjb25zdCBoYXNQcm9kdWN0ID0gd2lzaGxpc3QucHJvZHVjdHMuc29tZSgocCkgPT4gcCA9PSBwcm9kdWN0SWQpXG5cbiAgICBjb25zdCB3aXNobGlzdERhdGEgPSBhd2FpdCB0aGlzLmZpbmRCeUlkKHdpc2hsaXN0SWQpXG4gICAgY29uc3QgcHJvZHVjdERhdGEgPSBhd2FpdCB0aGlzLmZpbmRQcm9kdWN0QnlJZChwcm9kdWN0SWQpXG5cbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVdpc2hsaXN0TG9nKFdpc2hsaXN0TG9nVHlwZS5BRERfUFJPRFVDVCwgd2lzaGxpc3REYXRhLCBwcm9kdWN0RGF0YSlcblxuICAgIGlmICghaGFzUHJvZHVjdCkge1xuICAgICAgd2lzaGxpc3QucHJvZHVjdHMgPSBbLi4ud2lzaGxpc3QucHJvZHVjdHMsIHByb2R1Y3RJZF1cbiAgICAgIGF3YWl0IHRoaXMud2lzaGxpc3RSZXBvc2l0b3J5LmFkZFByb2R1Y3Qod2lzaGxpc3RJZCwgcHJvZHVjdElkKVxuICAgIH1cblxuICAgIHJldHVybiB3aXNobGlzdFxuICB9XG5cbiAgYXN5bmMgcmVtb3ZlUHJvZHVjdCh3aXNobGlzdElkOiBzdHJpbmcsIHByb2R1Y3RJZDogc3RyaW5nKTogUHJvbWlzZTxXaXNobGlzdD4ge1xuICAgIGNvbnN0IHdpc2hsaXN0ID0gYXdhaXQgdGhpcy53aXNobGlzdFJlcG9zaXRvcnkuZ2V0KHsgaWQ6IHdpc2hsaXN0SWQgfSlcbiAgICBjb25zdCBwcm9kdWN0SW5kZXggPSB3aXNobGlzdC5wcm9kdWN0cy5maW5kSW5kZXgoKHApID0+IHAgPT0gcHJvZHVjdElkKVxuXG4gICAgaWYgKHByb2R1Y3RJbmRleCAhPSAtMSkge1xuICAgICAgd2lzaGxpc3QucHJvZHVjdHMuc3BsaWNlKHByb2R1Y3RJbmRleCwgMSlcbiAgICAgIGNvbnN0IHdpc2hsaXN0RGF0YSA9IGF3YWl0IHRoaXMuZmluZEJ5SWQod2lzaGxpc3RJZClcbiAgICAgIGNvbnN0IHByb2R1Y3REYXRhID0gYXdhaXQgdGhpcy5maW5kUHJvZHVjdEJ5SWQocHJvZHVjdElkKVxuXG4gICAgICBhd2FpdCB0aGlzLmNyZWF0ZVdpc2hsaXN0TG9nKFdpc2hsaXN0TG9nVHlwZS5SRU1PVkVfUFJPRFVDVCwgd2lzaGxpc3REYXRhLCBwcm9kdWN0RGF0YSlcbiAgICAgIGF3YWl0IHRoaXMud2lzaGxpc3RSZXBvc2l0b3J5LnJlbW92ZVByb2R1Y3Qod2lzaGxpc3RJZCwgcHJvZHVjdElkKVxuICAgIH1cblxuICAgIHJldHVybiB3aXNobGlzdFxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmaW5kQnlJZChpZDogc3RyaW5nKTogUHJvbWlzZTxXaXNobGlzdD4ge1xuICAgIHJldHVybiB0aGlzLndpc2hsaXN0UmVwb3NpdG9yeVxuICAgICAgLmZpbmQoe1xuICAgICAgICBmaWVsZHM6IFsnaWQnLCAnbmFtZScsICdkZXNjcmlwdGlvbicsICdwZXJzb25JZCcsICdwZXJzb25Jc1N1YnNjcmliZXInLCAncGVyc29uVHlwZScsICdwZXJzb25OYW1lJ10sXG4gICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAudGhlbigocmVzKSA9PiByZXMuZGF0YS5hdCgwKSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmluZFByb2R1Y3RCeUlkKGlkOiBzdHJpbmcpOiBQcm9taXNlPFByb2R1Y3Q+IHtcbiAgICBpZiAoIXRoaXMuY2F0YWxvZ1NlcnZpY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2F0YWxvZ1NlcnZpY2Ugbm90IGluaXRpYWxpemVkLiBDYWxsIGluaXRpYWxpemVTZXJ2aWNlcyBmaXJzdC4nKVxuICAgIH1cblxuICAgIC8vIEFjZXNzYXIgbyBQcm9kdWN0UmVwb3NpdG9yeSBhdHJhdsOpcyBkbyBDYXRhbG9nSGVscGVyc1NlcnZpY2VcbiAgICBjb25zdCBoZWxwZXJzU2VydmljZSA9IHRoaXMuY2F0YWxvZ1NlcnZpY2VbJ2hlbHBlcnNTZXJ2aWNlJ10gYXMgYW55XG4gICAgY29uc3QgcHJvZHVjdFNlcnZpY2VzID0gaGVscGVyc1NlcnZpY2UuZ2V0UHJvZHVjdFNlcnZpY2VzKClcblxuICAgIHJldHVybiBwcm9kdWN0U2VydmljZXMucHJvZHVjdFJlcG9zaXRvcnlcbiAgICAgIC5maW5kKHtcbiAgICAgICAgZmllbGRzOiBbJ2lkJywgJ3NrdScsICdFQU4nLCAnbmFtZScsICdicmFuZCddLFxuICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgaWQsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLnRoZW4oKHJlcykgPT4gcmVzLmRhdGEuYXQoMCkpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZVdpc2hsaXN0TG9nKHR5cGU6IFdpc2hsaXN0TG9nVHlwZSwgd2lzaGxpc3Q6IFdpc2hsaXN0LCBwcm9kdWN0PzogUHJvZHVjdCkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBXaXNobGlzdExvZ1R5cGUuQ1JFQVRFOlxuICAgICAgY2FzZSBXaXNobGlzdExvZ1R5cGUuVVBEQVRFOlxuICAgICAgY2FzZSBXaXNobGlzdExvZ1R5cGUuREVMRVRFOlxuICAgICAgICBhd2FpdCB0aGlzLmNyZWF0ZVdpc2hsaXN0T3BlcmF0aW9uTG9nKHR5cGUsIHdpc2hsaXN0KVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIFdpc2hsaXN0TG9nVHlwZS5BRERfUFJPRFVDVDpcbiAgICAgIGNhc2UgV2lzaGxpc3RMb2dUeXBlLlJFTU9WRV9QUk9EVUNUOlxuICAgICAgICBhd2FpdCB0aGlzLmNyZWF0ZVdpc2hsaXN0UHJvZHVjdExvZyh0eXBlLCB3aXNobGlzdCwgcHJvZHVjdClcbiAgICAgICAgYnJlYWtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZVdpc2hsaXN0T3BlcmF0aW9uTG9nKHR5cGU6IFdpc2hsaXN0TG9nVHlwZSwgd2lzaGxpc3Q6IFdpc2hsaXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb3BlcmF0aW9uID0gdGhpcy5nZXRPcGVyYXRpb25UeXBlRnJvbVdpc2hsaXN0TG9nVHlwZSh0eXBlKVxuXG4gICAgYXdhaXQgdGhpcy5sb2dSZXBvc2l0b3J5LmNyZWF0ZSh7XG4gICAgICBjb2xsZWN0aW9uOiAnd2lzaGxpc3QnLFxuICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgIG9wZXJhdGlvbixcbiAgICAgIGRvY3VtZW50SWQ6IHdpc2hsaXN0LmlkLFxuICAgICAgZG9jdW1lbnQ6IHRoaXMuYnVpbGRXaXNobGlzdExvZ0RvY3VtZW50KHdpc2hsaXN0LCB0eXBlKSxcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVXaXNobGlzdFByb2R1Y3RMb2codHlwZTogV2lzaGxpc3RMb2dUeXBlLCB3aXNobGlzdDogV2lzaGxpc3QsIHByb2R1Y3Q6IFByb2R1Y3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmxvZ1JlcG9zaXRvcnkuY3JlYXRlKHtcbiAgICAgIGNvbGxlY3Rpb246ICd3aXNobGlzdCcsXG4gICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgb3BlcmF0aW9uOiAnVVBEQVRFJyxcbiAgICAgIGRvY3VtZW50SWQ6IHdpc2hsaXN0LmlkLFxuICAgICAgZG9jdW1lbnQ6IHtcbiAgICAgICAgLi4udGhpcy5idWlsZFdpc2hsaXN0TG9nRG9jdW1lbnQod2lzaGxpc3QsIHR5cGUpLFxuICAgICAgICAuLi50aGlzLmJ1aWxkUHJvZHVjdExvZ0RhdGEocHJvZHVjdCksXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGdldE9wZXJhdGlvblR5cGVGcm9tV2lzaGxpc3RMb2dUeXBlKHR5cGU6IFdpc2hsaXN0TG9nVHlwZSk6ICdDUkVBVEUnIHwgJ1VQREFURScgfCAnREVMRVRFJyB7XG4gICAgaWYgKHR5cGUgPT09IFdpc2hsaXN0TG9nVHlwZS5DUkVBVEUpIHJldHVybiAnQ1JFQVRFJ1xuXG4gICAgaWYgKHR5cGUgPT09IFdpc2hsaXN0TG9nVHlwZS5VUERBVEUpIHJldHVybiAnVVBEQVRFJ1xuXG4gICAgcmV0dXJuICdERUxFVEUnXG4gIH1cblxuICBwcml2YXRlIGJ1aWxkV2lzaGxpc3RMb2dEb2N1bWVudCh3aXNobGlzdDogV2lzaGxpc3QsIHR5cGU6IFdpc2hsaXN0TG9nVHlwZSkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogd2lzaGxpc3QuaWQsXG4gICAgICBzaG9wOiB0aGlzLnNob3AsXG4gICAgICBuYW1lOiB3aXNobGlzdC5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHdpc2hsaXN0LmRlc2NyaXB0aW9uLFxuICAgICAgcHVibGlzaGVkOiB3aXNobGlzdC5wdWJsaXNoZWQsXG4gICAgICB0eXBlOiB0eXBlLFxuICAgICAgcGVyc29uVHlwZTogd2lzaGxpc3QucGVyc29uVHlwZSxcbiAgICAgIHBlcnNvbklkOiB3aXNobGlzdC5wZXJzb25JZCxcbiAgICAgIHBlcnNvbk5hbWU6IHdpc2hsaXN0LnBlcnNvbk5hbWUsXG4gICAgICBwZXJzb25Jc1N1YnNjcmliZXI6IHdpc2hsaXN0LnBlcnNvbklzU3Vic2NyaWJlcixcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUHJvZHVjdExvZ0RhdGEocHJvZHVjdDogUHJvZHVjdCkge1xuICAgIHJldHVybiB7XG4gICAgICBwcm9kdWN0SWQ6IHByb2R1Y3QuaWQsXG4gICAgICBwcm9kdWN0RUFOOiBwcm9kdWN0LkVBTixcbiAgICAgIHByb2R1Y3RTS1U6IHByb2R1Y3Quc2t1LFxuICAgICAgcHJvZHVjdE5hbWU6IHByb2R1Y3QubmFtZSxcbiAgICAgIHByb2R1Y3RCcmFuZDogcHJvZHVjdC5icmFuZCxcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtZGVwZW5kZW5jaWVzLmZhY2FkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2hlY2tvdXQvY2hlY2tvdXQtZGVwZW5kZW5jaWVzLmZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFBOzs7QUFJbkQsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUNnRCxlQUFnQyxFQUM5RCxVQUFzQjtRQURRLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUM5RCxlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQ3JDLENBQUM7O3VIQUpPLDBCQUEwQixrQkFFM0Isb0JBQW9COzJIQUZuQiwwQkFBMEI7MkZBQTFCLDBCQUEwQjtrQkFEdEMsVUFBVTs7MEJBR04sTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5pbXBvcnQgeyBQRVJTSVNURU5DRV9QUk9WSURFUiB9IGZyb20gJy4uLy4uL2NvbnN0cydcbmltcG9ydCB7IERhdGFQZXJzaXN0ZW5jZSB9IGZyb20gJy4uLy4uL3BlcnNpc3RlbmNlJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2hlY2tvdXREZXBlbmRlbmNpZXNGYWNhZGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFBFUlNJU1RFTkNFX1BST1ZJREVSKSBwdWJsaWMgcmVhZG9ubHkgZGF0YVBlcnNpc3RlbmNlOiBEYXRhUGVyc2lzdGVuY2UsXG4gICAgcHVibGljIHJlYWRvbmx5IGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICkge31cbn1cbiJdfQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtcmVwb3NpdG9yaWVzLmZhY2FkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2hlY2tvdXQvY2hlY2tvdXQtcmVwb3NpdG9yaWVzLmZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTs7QUFJbEQsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUNnRCxrQkFBc0MsRUFDMUMsY0FBOEI7UUFEMUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUMxQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFDdkUsQ0FBQzs7dUhBSk8sMEJBQTBCLGtCQUUzQixvQkFBb0IsYUFDcEIsZ0JBQWdCOzJIQUhmLDBCQUEwQjsyRkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVOzswQkFHTixNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQzNCLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IENoZWNrb3V0UmVwb3NpdG9yeSwgVXNlclJlcG9zaXRvcnkgfSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENoZWNrb3V0UmVwb3NpdG9yaWVzRmFjYWRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgnQ2hlY2tvdXRSZXBvc2l0b3J5JykgcHVibGljIHJlYWRvbmx5IGNoZWNrb3V0UmVwb3NpdG9yeTogQ2hlY2tvdXRSZXBvc2l0b3J5LFxuICAgIEBJbmplY3QoJ1VzZXJSZXBvc2l0b3J5JykgcHVibGljIHJlYWRvbmx5IHVzZXJSZXBvc2l0b3J5OiBVc2VyUmVwb3NpdG9yeSxcbiAgKSB7fVxufVxuIl19
@@ -0,0 +1,3 @@
1
+ export { CheckoutRepositoriesFacade } from './checkout-repositories.facade';
2
+ export { CheckoutDependenciesFacade } from './checkout-dependencies.facade';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NoZWNrb3V0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQzNFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQ2hlY2tvdXRSZXBvc2l0b3JpZXNGYWNhZGUgfSBmcm9tICcuL2NoZWNrb3V0LXJlcG9zaXRvcmllcy5mYWNhZGUnXG5leHBvcnQgeyBDaGVja291dERlcGVuZGVuY2llc0ZhY2FkZSB9IGZyb20gJy4vY2hlY2tvdXQtZGVwZW5kZW5jaWVzLmZhY2FkZSdcbiJdfQ==