@infrab4a/connect-angular 5.2.0 → 6.0.0-alpha.1

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 (190) hide show
  1. package/angular-connect.module.d.ts +36 -36
  2. package/angular-elastic-search.module.d.ts +9 -9
  3. package/angular-firebase-auth.module.d.ts +11 -11
  4. package/angular-firestore.module.d.ts +17 -17
  5. package/angular-hasura-graphql.module.d.ts +14 -14
  6. package/angular-vertex-search.module.d.ts +9 -9
  7. package/consts/backend-url.const.d.ts +1 -1
  8. package/consts/category-structure.d.ts +1 -1
  9. package/consts/default-shop.const.d.ts +1 -1
  10. package/consts/es-config.const.d.ts +1 -1
  11. package/consts/firebase-const.d.ts +4 -4
  12. package/consts/hasura-options.const.d.ts +1 -1
  13. package/consts/index.d.ts +8 -8
  14. package/consts/persistence.const.d.ts +1 -1
  15. package/consts/storage-base-url.const.d.ts +1 -1
  16. package/consts/vertex-config.const.d.ts +1 -1
  17. package/esm2020/angular-connect.module.mjs +289 -289
  18. package/esm2020/angular-elastic-search.module.mjs +34 -34
  19. package/esm2020/angular-firebase-auth.module.mjs +141 -141
  20. package/esm2020/angular-firestore.module.mjs +541 -541
  21. package/esm2020/angular-hasura-graphql.module.mjs +333 -333
  22. package/esm2020/angular-vertex-search.module.mjs +34 -34
  23. package/esm2020/consts/backend-url.const.mjs +2 -2
  24. package/esm2020/consts/category-structure.mjs +2 -2
  25. package/esm2020/consts/default-shop.const.mjs +2 -2
  26. package/esm2020/consts/es-config.const.mjs +2 -2
  27. package/esm2020/consts/firebase-const.mjs +5 -5
  28. package/esm2020/consts/hasura-options.const.mjs +2 -2
  29. package/esm2020/consts/index.mjs +9 -9
  30. package/esm2020/consts/persistence.const.mjs +2 -2
  31. package/esm2020/consts/storage-base-url.const.mjs +2 -2
  32. package/esm2020/consts/vertex-config.const.mjs +2 -2
  33. package/esm2020/helpers/index.mjs +2 -2
  34. package/esm2020/helpers/mobile-operation-system-checker.helper.mjs +7 -7
  35. package/esm2020/index.mjs +7 -7
  36. package/esm2020/infrab4a-connect-angular.mjs +4 -4
  37. package/esm2020/interfaces/catalog-strategies.interface.mjs +2 -2
  38. package/esm2020/interfaces/category-facades.interface.mjs +2 -2
  39. package/esm2020/interfaces/index.mjs +3 -3
  40. package/esm2020/persistence/cookie-data-persistence.mjs +22 -22
  41. package/esm2020/persistence/data-persistence.mjs +2 -2
  42. package/esm2020/persistence/index.mjs +3 -3
  43. package/esm2020/services/auth.service.mjs +37 -37
  44. package/esm2020/services/cart/cart-services.facade.mjs +21 -21
  45. package/esm2020/services/cart/index.mjs +2 -2
  46. package/esm2020/services/cart.service.mjs +73 -73
  47. package/esm2020/services/catalog/adapters/category-structure.adapter.mjs +2 -2
  48. package/esm2020/services/catalog/adapters/index.mjs +4 -4
  49. package/esm2020/services/catalog/adapters/new-category-structure.adapter.mjs +43 -43
  50. package/esm2020/services/catalog/adapters/old-category-structure.adapter.mjs +23 -23
  51. package/esm2020/services/catalog/catalog.service.mjs +111 -111
  52. package/esm2020/services/catalog/category.service.mjs +39 -39
  53. package/esm2020/services/catalog/context/catalog-search.context.mjs +40 -40
  54. package/esm2020/services/catalog/enums/index.mjs +2 -2
  55. package/esm2020/services/catalog/enums/product-sorts.enum.mjs +11 -11
  56. package/esm2020/services/catalog/facades/catalog-service.facade.mjs +32 -32
  57. package/esm2020/services/catalog/facades/catalog-strategies.facade.mjs +17 -17
  58. package/esm2020/services/catalog/facades/category-repository.facade.mjs +20 -20
  59. package/esm2020/services/catalog/facades/category-service.facade.mjs +30 -30
  60. package/esm2020/services/catalog/facades/index.mjs +6 -6
  61. package/esm2020/services/catalog/facades/product-catalog.facade.mjs +21 -21
  62. package/esm2020/services/catalog/helpers/brand-manager.helper.mjs +57 -57
  63. package/esm2020/services/catalog/helpers/catalog-filter.helper.mjs +44 -44
  64. package/esm2020/services/catalog/helpers/catalog-sort.helper.mjs +52 -52
  65. package/esm2020/services/catalog/helpers/index.mjs +5 -5
  66. package/esm2020/services/catalog/helpers/product-fields.helper.mjs +39 -39
  67. package/esm2020/services/catalog/index.mjs +8 -8
  68. package/esm2020/services/catalog/models/category-with-tree.model.mjs +10 -10
  69. package/esm2020/services/catalog/models/index.mjs +2 -2
  70. package/esm2020/services/catalog/services/catalog-helpers.service.mjs +33 -33
  71. package/esm2020/services/catalog/services/catalog-operations.facade.mjs +26 -26
  72. package/esm2020/services/catalog/services/catalog-repository.service.mjs +25 -25
  73. package/esm2020/services/catalog/services/index.mjs +5 -5
  74. package/esm2020/services/catalog/services/product-management.facade.mjs +25 -25
  75. package/esm2020/services/catalog/strategies/category-search.strategy.mjs +133 -133
  76. package/esm2020/services/catalog/strategies/index.mjs +4 -4
  77. package/esm2020/services/catalog/strategies/profile-search.strategy.mjs +42 -42
  78. package/esm2020/services/catalog/strategies/term-search.strategy.mjs +126 -126
  79. package/esm2020/services/catalog/strategies/types/strategy-params.type.mjs +2 -2
  80. package/esm2020/services/catalog/types/fetch-products-options.type.mjs +2 -2
  81. package/esm2020/services/catalog/types/fetch-products-params.type.mjs +2 -2
  82. package/esm2020/services/catalog/types/fetch-products-response.type.mjs +2 -2
  83. package/esm2020/services/catalog/types/index.mjs +6 -6
  84. package/esm2020/services/catalog/types/method-params.type.mjs +2 -2
  85. package/esm2020/services/catalog/types/product-sort.type.mjs +2 -2
  86. package/esm2020/services/catalog/wishlist.service.mjs +255 -255
  87. package/esm2020/services/checkout/checkout-dependencies.facade.mjs +20 -20
  88. package/esm2020/services/checkout/checkout-repositories.facade.mjs +20 -20
  89. package/esm2020/services/checkout/index.mjs +3 -3
  90. package/esm2020/services/checkout-subscription.service.mjs +55 -55
  91. package/esm2020/services/checkout.service.mjs +106 -106
  92. package/esm2020/services/coupon/coupon-repositories.facade.mjs +24 -24
  93. package/esm2020/services/coupon/index.mjs +2 -2
  94. package/esm2020/services/coupon/types/coupon-params.type.mjs +2 -2
  95. package/esm2020/services/coupon.service.mjs +248 -248
  96. package/esm2020/services/helpers/index.mjs +2 -2
  97. package/esm2020/services/helpers/util.helper.mjs +18 -18
  98. package/esm2020/services/home-shop/home-shop-repositories.facade.mjs +24 -24
  99. package/esm2020/services/home-shop/index.mjs +2 -2
  100. package/esm2020/services/home-shop.service.mjs +119 -119
  101. package/esm2020/services/index.mjs +10 -10
  102. package/esm2020/services/order.service.mjs +30 -30
  103. package/esm2020/services/shared/configuration.facade.mjs +29 -29
  104. package/esm2020/services/shared/index.mjs +2 -2
  105. package/esm2020/services/types/index.mjs +3 -3
  106. package/esm2020/services/types/required-checkout-data.type.mjs +2 -2
  107. package/esm2020/services/types/required-checkout-subscription-data.type.mjs +2 -2
  108. package/esm2020/types/firebase-app-config.type.mjs +2 -2
  109. package/esm2020/types/index.mjs +2 -2
  110. package/fesm2015/infrab4a-connect-angular.mjs +3236 -3236
  111. package/fesm2015/infrab4a-connect-angular.mjs.map +1 -1
  112. package/fesm2020/infrab4a-connect-angular.mjs +3141 -3141
  113. package/fesm2020/infrab4a-connect-angular.mjs.map +1 -1
  114. package/helpers/index.d.ts +1 -1
  115. package/helpers/mobile-operation-system-checker.helper.d.ts +3 -3
  116. package/index.d.ts +6 -6
  117. package/interfaces/catalog-strategies.interface.d.ts +31 -31
  118. package/interfaces/category-facades.interface.d.ts +6 -6
  119. package/interfaces/index.d.ts +2 -2
  120. package/package.json +2 -2
  121. package/persistence/cookie-data-persistence.d.ts +10 -10
  122. package/persistence/data-persistence.d.ts +6 -6
  123. package/persistence/index.d.ts +2 -2
  124. package/services/auth.service.d.ts +18 -18
  125. package/services/cart/cart-services.facade.d.ts +12 -12
  126. package/services/cart/index.d.ts +1 -1
  127. package/services/cart.service.d.ts +26 -26
  128. package/services/catalog/adapters/category-structure.adapter.d.ts +4 -4
  129. package/services/catalog/adapters/index.d.ts +3 -3
  130. package/services/catalog/adapters/new-category-structure.adapter.d.ts +12 -12
  131. package/services/catalog/adapters/old-category-structure.adapter.d.ts +10 -10
  132. package/services/catalog/catalog.service.d.ts +24 -24
  133. package/services/catalog/category.service.d.ts +22 -22
  134. package/services/catalog/context/catalog-search.context.d.ts +14 -14
  135. package/services/catalog/enums/index.d.ts +1 -1
  136. package/services/catalog/enums/product-sorts.enum.d.ts +9 -9
  137. package/services/catalog/facades/catalog-service.facade.d.ts +15 -15
  138. package/services/catalog/facades/catalog-strategies.facade.d.ts +10 -10
  139. package/services/catalog/facades/category-repository.facade.d.ts +9 -9
  140. package/services/catalog/facades/category-service.facade.d.ts +15 -15
  141. package/services/catalog/facades/index.d.ts +5 -5
  142. package/services/catalog/facades/product-catalog.facade.d.ts +10 -10
  143. package/services/catalog/helpers/brand-manager.helper.d.ts +14 -14
  144. package/services/catalog/helpers/catalog-filter.helper.d.ts +8 -8
  145. package/services/catalog/helpers/catalog-sort.helper.d.ts +7 -7
  146. package/services/catalog/helpers/index.d.ts +4 -4
  147. package/services/catalog/helpers/product-fields.helper.d.ts +7 -7
  148. package/services/catalog/index.d.ts +7 -7
  149. package/services/catalog/models/category-with-tree.model.d.ts +4 -4
  150. package/services/catalog/models/index.d.ts +1 -1
  151. package/services/catalog/services/catalog-helpers.service.d.ts +17 -17
  152. package/services/catalog/services/catalog-operations.facade.d.ts +13 -13
  153. package/services/catalog/services/catalog-repository.service.d.ts +12 -12
  154. package/services/catalog/services/index.d.ts +4 -4
  155. package/services/catalog/services/product-management.facade.d.ts +12 -12
  156. package/services/catalog/strategies/category-search.strategy.d.ts +19 -19
  157. package/services/catalog/strategies/index.d.ts +3 -3
  158. package/services/catalog/strategies/profile-search.strategy.d.ts +14 -14
  159. package/services/catalog/strategies/term-search.strategy.d.ts +20 -20
  160. package/services/catalog/strategies/types/strategy-params.type.d.ts +58 -58
  161. package/services/catalog/types/fetch-products-options.type.d.ts +8 -8
  162. package/services/catalog/types/fetch-products-params.type.d.ts +25 -25
  163. package/services/catalog/types/fetch-products-response.type.d.ts +19 -19
  164. package/services/catalog/types/index.d.ts +5 -5
  165. package/services/catalog/types/method-params.type.d.ts +17 -17
  166. package/services/catalog/types/product-sort.type.d.ts +2 -2
  167. package/services/catalog/wishlist.service.d.ts +58 -58
  168. package/services/checkout/checkout-dependencies.facade.d.ts +10 -10
  169. package/services/checkout/checkout-repositories.facade.d.ts +9 -9
  170. package/services/checkout/index.d.ts +2 -2
  171. package/services/checkout-subscription.service.d.ts +19 -19
  172. package/services/checkout.service.d.ts +30 -30
  173. package/services/coupon/coupon-repositories.facade.d.ts +10 -10
  174. package/services/coupon/index.d.ts +1 -1
  175. package/services/coupon/types/coupon-params.type.d.ts +13 -13
  176. package/services/coupon.service.d.ts +36 -36
  177. package/services/helpers/index.d.ts +1 -1
  178. package/services/helpers/util.helper.d.ts +3 -3
  179. package/services/home-shop/home-shop-repositories.facade.d.ts +10 -10
  180. package/services/home-shop/index.d.ts +1 -1
  181. package/services/home-shop.service.d.ts +26 -26
  182. package/services/index.d.ts +9 -9
  183. package/services/order.service.d.ts +13 -13
  184. package/services/shared/configuration.facade.d.ts +12 -12
  185. package/services/shared/index.d.ts +1 -1
  186. package/services/types/index.d.ts +2 -2
  187. package/services/types/required-checkout-data.type.d.ts +2 -2
  188. package/services/types/required-checkout-subscription-data.type.d.ts +2 -2
  189. package/types/firebase-app-config.type.d.ts +1 -1
  190. package/types/index.d.ts +1 -1
@@ -1,133 +1,133 @@
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 CategorySearchStrategy {
7
- constructor(repositoryService, helpersService) {
8
- this.repositoryService = repositoryService;
9
- this.helpersService = helpersService;
10
- }
11
- async search(params, shop, optionsCache) {
12
- const { category, filters, limits, sort, mainGender } = params;
13
- if (!category) {
14
- throw new Error('Category is required for CategorySearchStrategy');
15
- }
16
- const fields = this.helpersService.getFieldsHelper().getStandardFields();
17
- if (sort === 'most-relevant') {
18
- return this.searchWithMostRelevant({
19
- category,
20
- filters,
21
- limits,
22
- shop,
23
- mainGender,
24
- optionsCache,
25
- fields,
26
- });
27
- }
28
- return this.searchDefault({
29
- category,
30
- filters,
31
- limits,
32
- shop,
33
- mainGender,
34
- sort,
35
- optionsCache,
36
- fields,
37
- });
38
- }
39
- async searchWithMostRelevant(params) {
40
- const { category, filters, shop, optionsCache } = params;
41
- const mostRelevant = category.isWishlist ? [] : category.getMostRelevantByShop(shop);
42
- const productsIds = await this.getProductIds(category, filters, optionsCache);
43
- return this.findAndSortByMostRelevant({
44
- mostRelevants: mostRelevant,
45
- productIds: productsIds,
46
- filters: params.filters,
47
- limits: params.limits,
48
- shop: params.shop,
49
- mainGender: params.mainGender,
50
- optionsCache: params.optionsCache,
51
- fields: params.fields,
52
- });
53
- }
54
- async searchDefault(params) {
55
- const { category, filters, limits, shop, mainGender, sort, optionsCache, fields } = params;
56
- const productCatalog = this.repositoryService.getProductCatalog();
57
- const filterHelper = this.helpersService.getFilterHelper();
58
- const sortHelper = this.helpersService.getSortHelper();
59
- const repoParams = {
60
- fields,
61
- filters: {
62
- ...(await productCatalog.categoryStructureAdapter.buildProductFilterByCategory(category)),
63
- ...filterHelper.buildFilterQuery(filters || {}),
64
- },
65
- ...(sort ? { orderBy: sortHelper.buildSortQuery(sort) } : {}),
66
- limits,
67
- options: {
68
- minimal: ['price'],
69
- maximum: ['price'],
70
- distinct: ['brand'],
71
- },
72
- };
73
- return productCatalog.productRepository.findCatalog(repoParams, mainGender || (shop === Shops.MENSMARKET ? 'male' : 'female'), optionsCache);
74
- }
75
- async getProductIds(category, filters, optionsCache) {
76
- const productCatalog = this.repositoryService.getProductCatalog();
77
- const filterHelper = this.helpersService.getFilterHelper();
78
- return productCatalog.productRepository
79
- .findCatalog({
80
- fields: ['id'],
81
- filters: {
82
- ...(await productCatalog.categoryStructureAdapter.buildProductFilterByCategory(category)),
83
- ...filterHelper.buildFilterQuery(filters || {}),
84
- },
85
- }, undefined, optionsCache)
86
- .then((products) => products.data.map((product) => product.id));
87
- }
88
- async findAndSortByMostRelevant(params) {
89
- const { mostRelevants, productIds, filters, shop, mainGender, optionsCache, fields, limits } = params;
90
- const productCatalog = this.repositoryService.getProductCatalog();
91
- const filterHelper = this.helpersService.getFilterHelper();
92
- const sortHelper = this.helpersService.getSortHelper();
93
- const mostRelevantProductsIds = [...new Set(mostRelevants.concat(productIds))];
94
- const totalResult = await productCatalog.productRepository.findCatalog({
95
- fields,
96
- filters: {
97
- id: { operator: Where.IN, value: mostRelevantProductsIds },
98
- ...filterHelper.buildFilterQuery(filters || {}),
99
- },
100
- orderBy: sortHelper.buildSortQuery('best-sellers'),
101
- options: {
102
- minimal: ['price'],
103
- maximum: ['price'],
104
- ...(isEmpty(filters?.brands) ? { distinct: ['brand'] } : {}),
105
- },
106
- }, mainGender || (shop === Shops.MENSMARKET ? 'male' : 'female'), optionsCache);
107
- return this.sortProductsByRelevance(totalResult, mostRelevants, limits);
108
- }
109
- sortProductsByRelevance(totalResult, mostRelevants, limits) {
110
- const mostRelevantWithoutStock = totalResult.data.filter((product) => mostRelevants.includes(product.id) && product.stock.quantity <= 0);
111
- const firstProducts = totalResult.data
112
- .filter((product) => mostRelevants.includes(product.id) && product.stock.quantity > 0)
113
- .sort((a, b) => mostRelevants.indexOf(a.id) - mostRelevants.indexOf(b.id));
114
- const lastProducts = totalResult.data
115
- .filter((product) => !mostRelevants.includes(product.id))
116
- .concat(mostRelevantWithoutStock);
117
- const categoryMostRelevants = firstProducts.concat(lastProducts);
118
- const resultFinal = categoryMostRelevants.slice(limits.offset, limits.offset + limits.limit);
119
- return {
120
- data: resultFinal,
121
- count: totalResult.count,
122
- maximum: totalResult.maximum,
123
- minimal: totalResult.minimal,
124
- distinct: totalResult.distinct,
125
- };
126
- }
127
- }
128
- CategorySearchStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CategorySearchStrategy, deps: [{ token: i1.CatalogRepositoryService }, { token: i1.CatalogHelpersService }], target: i0.ɵɵFactoryTarget.Injectable });
129
- CategorySearchStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CategorySearchStrategy });
130
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CategorySearchStrategy, decorators: [{
131
- type: Injectable
132
- }], ctorParameters: function () { return [{ type: i1.CatalogRepositoryService }, { type: i1.CatalogHelpersService }]; } });
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktc2VhcmNoLnN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL3N0cmF0ZWdpZXMvY2F0ZWdvcnktc2VhcmNoLnN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUF5RCxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBR2hILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTs7O0FBUzdFLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsWUFDbUIsaUJBQTJDLEVBQzNDLGNBQXFDO1FBRHJDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7UUFDM0MsbUJBQWMsR0FBZCxjQUFjLENBQXVCO0lBQ3JELENBQUM7SUFFSixLQUFLLENBQUMsTUFBTSxDQUNWLE1BQTJCLEVBQzNCLElBQVcsRUFDWCxZQUFpRDtRQUVqRCxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQTtRQUU5RCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFBO1NBQ25FO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1FBRXhFLElBQUksSUFBSSxLQUFLLGVBQWUsRUFBRTtZQUM1QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztnQkFDakMsUUFBUTtnQkFDUixPQUFPO2dCQUNQLE1BQU07Z0JBQ04sSUFBSTtnQkFDSixVQUFVO2dCQUNWLFlB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QyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7YUFDMUYsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUN0RixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsSUFBSTthQUNsQyxNQUFNLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDN0QsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUE7UUFDbkMsTUFBTSxxQkFBcUIsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ2hFLE1BQU0sV0FBVyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRTVGLE9BQU87WUFDTCxJQUFJLEVBQUUsV0FBVztZQUNqQixLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUs7WUFDeEIsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPO1lBQzVCLE9BQU8sRUFBRSxXQUFXLENBQUMsT0FBTztZQUM1QixRQUFRLEVBQUUsV0FBVyxDQUFDLFFBQVE7U0FDL0IsQ0FBQTtJQUNILENBQUM7O21IQTdKVSxzQkFBc0I7dUhBQXRCLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IFByb2R1Y3QsIFJlcG9zaXRvcnlDYWNoZU9wdGlvbnMsIFJlcG9zaXRvcnlGaW5kUmVzdWx0LCBTaG9wcywgV2hlcmUsIGlzRW1wdHkgfSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcclxuXHJcbmltcG9ydCB7IENhdGFsb2dTZWFyY2hQYXJhbXMsIENhdGFsb2dTZWFyY2hTdHJhdGVneSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnXHJcbmltcG9ydCB7IENhdGFsb2dIZWxwZXJzU2VydmljZSwgQ2F0YWxvZ1JlcG9zaXRvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnXHJcblxyXG5pbXBvcnQge1xyXG4gIEZpbmRBbmRTb3J0QnlNb3N0UmVsZXZhbnRQYXJhbXMsXHJcbiAgU2VhcmNoRGVmYXVsdFBhcmFtcyxcclxuICBTZWFyY2hXaXRoTW9zdFJlbGV2YW50UGFyYW1zLFxyXG59IGZyb20gJy4vdHlwZXMvc3RyYXRlZ3ktcGFyYW1zLnR5cGUnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDYXRlZ29yeVNlYXJjaFN0cmF0ZWd5IGltcGxlbWVudHMgQ2F0YWxvZ1NlYXJjaFN0cmF0ZWd5IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVwb3NpdG9yeVNlcnZpY2U6IENhdGFsb2dSZXBvc2l0b3J5U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGVscGVyc1NlcnZpY2U6IENhdGFsb2dIZWxwZXJzU2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIGFzeW5jIHNlYXJjaChcclxuICAgIHBhcmFtczogQ2F0YWxvZ1NlYXJjaFBhcmFtcyxcclxuICAgIHNob3A6IFNob3BzLFxyXG4gICAgb3B0aW9uc0NhY2hlPzogeyBjYWNoZT86IFJlcG9zaXRvcnlDYWNoZU9wdGlvbnMgfSxcclxuICApOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PFByb2R1Y3Q+PiB7XHJcbiAgICBjb25zdCB7IGNhdGVnb3J5LCBmaWx0ZXJzLCBsaW1pdHMsIHNvcnQsIG1haW5HZW5kZXIgfSA9IHBhcmFtc1xyXG5cclxuICAgIGlmICghY2F0ZWdvcnkpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYXRlZ29yeSBpcyByZXF1aXJlZCBmb3IgQ2F0ZWdvcnlTZWFyY2hTdHJhdGVneScpXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5oZWxwZXJzU2VydmljZS5nZXRGaWVsZHNIZWxwZXIoKS5nZXRTdGFuZGFyZEZpZWxkcygpXHJcblxyXG4gICAgaWYgKHNvcnQgPT09ICdtb3N0LXJlbGV2YW50Jykge1xyXG4gICAgICByZXR1cm4gdGhpcy5zZWFyY2hXaXRoTW9zdFJlbGV2YW50KHtcclxuICAgICAgICBjYXRlZ29yeSxcclxuICAgICAgICBmaWx0ZXJzLFxyXG4gICAgICAgIGxpbWl0cyxcclxuICAgICAgICBzaG9wLFxyXG4gICAgICAgIG1haW5HZW5kZXIsXHJcbiAgICAgICAgb3B0aW9uc0NhY2hlLFxyXG4gICAgICAgIGZpZWxkcyxcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hEZWZhdWx0KHtcclxuICAgICAgY2F0ZWdvcnksXHJcbiAgICAgIGZpbHRlcnMsXHJcbiAgICAgIGxpbWl0cyxcclxuICAgICAgc2hvcCxcclxuICAgICAgbWFpbkdlbmRlcixcclxuICAgICAgc29ydCxcclxuICAgICAgb3B0aW9uc0NhY2hlLFxyXG4gICAgICBmaWVsZHMsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBzZWFyY2hXaXRoTW9zdFJlbGV2YW50KHBhcmFtczogU2VhcmNoV2l0aE1vc3RSZWxldmFudFBhcmFtcykge1xyXG4gICAgY29uc3QgeyBjYXRlZ29yeSwgZmlsdGVycywgc2hvcCwgb3B0aW9uc0NhY2hlIH0gPSBwYXJhbXNcclxuICAgIGNvbnN0IG1vc3RSZWxldmFudCA9IGNhdGVnb3J5LmlzV2lzaGxpc3QgPyBbXSA6IGNhdGVnb3J5LmdldE1vc3RSZWxldmFudEJ5U2hvcChzaG9wKVxyXG4gICAgY29uc3QgcHJvZHVjdHNJZHMgPSBhd2FpdCB0aGlzLmdldFByb2R1Y3RJZHMoY2F0ZWdvcnksIGZpbHRlcnMsIG9wdGlvbnNDYWNoZSlcclxuXHJcbiAgICByZXR1cm4gdGhpcy5maW5kQW5kU29ydEJ5TW9zdFJlbGV2YW50KHtcclxuICAgICAgbW9zdFJlbGV2YW50czogbW9zdFJlbGV2YW50LFxyXG4gICAgICBwcm9kdWN0SWRzOiBwcm9kdWN0c0lkcyxcclxuICAgICAgZmlsdGVyczogcGFyYW1zLmZpbHRlcnMsXHJcbiAgICAgIGxpbWl0czogcGFyYW1zLmxpbWl0cyxcclxuICAgICAgc2hvcDogcGFyYW1zLnNob3AsXHJcbiAgICAgIG1haW5HZW5kZXI6IHBhcmFtcy5tYWluR2VuZGVyLFxyXG4gICAgICBvcHRpb25zQ2FjaGU6IHBhcmFtcy5vcHRpb25zQ2FjaGUsXHJcbiAgICAgIGZpZWxkczogcGFyYW1zLmZpZWxkcyxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHNlYXJjaERlZmF1bHQocGFyYW1zOiBTZWFyY2hEZWZhdWx0UGFyYW1zKSB7XHJcbiAgICBjb25zdCB7IGNhdGVnb3J5LCBmaWx0ZXJzLCBsaW1pdHMsIHNob3AsIG1haW5HZW5kZXIsIHNvcnQsIG9wdGlvbnNDYWNoZSwgZmllbGRzIH0gPSBwYXJhbXNcclxuICAgIGNvbnN0IHByb2R1Y3RDYXRhbG9nID0gdGhpcy5yZXBvc2l0b3J5U2VydmljZS5nZXRQcm9kdWN0Q2F0YWxvZygpXHJcbiAgICBjb25zdCBmaWx0ZXJIZWxwZXIgPSB0aGlzLmhlbHBlcnNTZXJ2aWNlLmdldEZpbHRlckhlbHBlcigpXHJcbiAgICBjb25zdCBzb3J0SGVscGVyID0gdGhpcy5oZWxwZXJzU2VydmljZS5nZXRTb3J0SGVscGVyKClcclxuXHJcbiAgICBjb25zdCByZXBvUGFyYW1zID0ge1xyXG4gICAgICBmaWVsZHMsXHJcbiAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAuLi4oYXdhaXQgcHJvZHVjdENhdGFsb2cuY2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyLmJ1aWxkUHJvZHVjdEZpbHRlckJ5Q2F0ZWdvcnkoY2F0ZWdvcnkpKSxcclxuICAgICAgICAuLi5maWx0ZXJIZWxwZXIuYnVpbGRGaWx0ZXJRdWVyeShmaWx0ZXJzIHx8IHt9KSxcclxuICAgICAgfSxcclxuICAgICAgLi4uKHNvcnQgPyB7IG9yZGVyQnk6IHNvcnRIZWxwZXIuYnVpbGRTb3J0UXVlcnkoc29ydCkgfSA6IHt9KSxcclxuICAgICAgbGltaXRzLFxyXG4gICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgbWluaW1hbDogWydwcmljZSddLFxyXG4gICAgICAgIG1heGltdW06IFsncHJpY2UnXSxcclxuICAgICAgICBkaXN0aW5jdDogWydicmFuZCddLFxyXG4gICAgICB9LFxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwcm9kdWN0Q2F0YWxvZy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhcclxuICAgICAgcmVwb1BhcmFtcyxcclxuICAgICAgbWFpbkdlbmRlciB8fCAoc2hvcCA9PT0gU2hvcHMuTUVOU01BUktFVCA/ICdtYWxlJyA6ICdmZW1hbGUnKSxcclxuICAgICAgb3B0aW9uc0NhY2hlLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXRQcm9kdWN0SWRzKGNhdGVnb3J5OiBhbnksIGZpbHRlcnM6IGFueSwgb3B0aW9uc0NhY2hlOiBhbnkpOiBQcm9taXNlPHN0cmluZ1tdPiB7XHJcbiAgICBjb25zdCBwcm9kdWN0Q2F0YWxvZyA9IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZ2V0UHJvZHVjdENhdGFsb2coKVxyXG4gICAgY29uc3QgZmlsdGVySGVscGVyID0gdGhpcy5oZWxwZXJzU2VydmljZS5nZXRGaWx0ZXJIZWxwZXIoKVxyXG5cclxuICAgIHJldHVybiBwcm9kdWN0Q2F0YWxvZy5wcm9kdWN0UmVwb3NpdG9yeVxyXG4gICAgICAuZmluZENhdGFsb2coXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZmllbGRzOiBbJ2lkJ10sXHJcbiAgICAgICAgICBmaWx0ZXJzOiB7XHJcbiAgICAgICAgICAgIC4uLihhd2FpdCBwcm9kdWN0Q2F0YWxvZy5jYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXIuYnVpbGRQcm9kdWN0RmlsdGVyQnlDYXRlZ29yeShjYXRlZ29yeSkpLFxyXG4gICAgICAgICAgICAuLi5maWx0ZXJIZWxwZXIuYnVpbGRGaWx0ZXJRdWVyeShmaWx0ZXJzIHx8IHt9KSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgb3B0aW9uc0NhY2hlLFxyXG4gICAgICApXHJcbiAgICAgIC50aGVuKChwcm9kdWN0cykgPT4gcHJvZHVjdHMuZGF0YS5tYXAoKHByb2R1Y3QpID0+IHByb2R1Y3QuaWQpKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmaW5kQW5kU29ydEJ5TW9zdFJlbGV2YW50KFxyXG4gICAgcGFyYW1zOiBGaW5kQW5kU29ydEJ5TW9zdFJlbGV2YW50UGFyYW1zLFxyXG4gICk6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRSZXN1bHQ8UHJvZHVjdD4+IHtcclxuICAgIGNvbnN0IHsgbW9zdFJlbGV2YW50cywgcHJvZHVjdElkcywgZmlsdGVycywgc2hvcCwgbWFpbkdlbmRlciwgb3B0aW9uc0NhY2hlLCBmaWVsZHMsIGxpbWl0cyB9ID0gcGFyYW1zXHJcbiAgICBjb25zdCBwcm9kdWN0Q2F0YWxvZyA9IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZ2V0UHJvZHVjdENhdGFsb2coKVxyXG4gICAgY29uc3QgZmlsdGVySGVscGVyID0gdGhpcy5oZWxwZXJzU2VydmljZS5nZXRGaWx0ZXJIZWxwZXIoKVxyXG4gICAgY29uc3Qgc29ydEhlbHBlciA9IHRoaXMuaGVscGVyc1NlcnZpY2UuZ2V0U29ydEhlbHBlcigpXHJcblxyXG4gICAgY29uc3QgbW9zdFJlbGV2YW50UHJvZHVjdHNJZHMgPSBbLi4ubmV3IFNldChtb3N0UmVsZXZhbnRzLmNvbmNhdChwcm9kdWN0SWRzKSldXHJcbiAgICBjb25zdCB0b3RhbFJlc3VsdCA9IGF3YWl0IHByb2R1Y3RDYXRhbG9nLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmRDYXRhbG9nKFxyXG4gICAgICB7XHJcbiAgICAgICAgZmllbGRzLFxyXG4gICAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAgIGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IG1vc3RSZWxldmFudFByb2R1Y3RzSWRzIH0sXHJcbiAgICAgICAgICAuLi5maWx0ZXJIZWxwZXIuYnVpbGRGaWx0ZXJRdWVyeShmaWx0ZXJzIHx8IHt9KSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9yZGVyQnk6IHNvcnRIZWxwZXIuYnVpbGRTb3J0UXVlcnkoJ2Jlc3Qtc2VsbGVycycpLFxyXG4gICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgIG1pbmltYWw6IFsncHJpY2UnXSxcclxuICAgICAgICAgIG1heGltdW06IFsncHJpY2UnXSxcclxuICAgICAgICAgIC4uLihpc0VtcHR5KGZpbHRlcnM/LmJyYW5kcykgPyB7IGRpc3RpbmN0OiBbJ2JyYW5kJ10gfSA6IHt9KSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICBtYWluR2VuZGVyIHx8IChzaG9wID09PSBTaG9wcy5NRU5TTUFSS0VUID8gJ21hbGUnIDogJ2ZlbWFsZScpLFxyXG4gICAgICBvcHRpb25zQ2FjaGUsXHJcbiAgICApXHJcblxyXG4gICAgcmV0dXJuIHRoaXMuc29ydFByb2R1Y3RzQnlSZWxldmFuY2UodG90YWxSZXN1bHQsIG1vc3RSZWxldmFudHMsIGxpbWl0cylcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc29ydFByb2R1Y3RzQnlSZWxldmFuY2UodG90YWxSZXN1bHQ6IGFueSwgbW9zdFJlbGV2YW50czogc3RyaW5nW10sIGxpbWl0czogYW55KSB7XHJcbiAgICBjb25zdCBtb3N0UmVsZXZhbnRXaXRob3V0U3RvY2sgPSB0b3RhbFJlc3VsdC5kYXRhLmZpbHRlcihcclxuICAgICAgKHByb2R1Y3Q6IGFueSkgPT4gbW9zdFJlbGV2YW50cy5pbmNsdWRlcyhwcm9kdWN0LmlkKSAmJiBwcm9kdWN0LnN0b2NrLnF1YW50aXR5IDw9IDAsXHJcbiAgICApXHJcbiAgICBjb25zdCBmaXJzdFByb2R1Y3RzID0gdG90YWxSZXN1bHQuZGF0YVxyXG4gICAgICAuZmlsdGVyKChwcm9kdWN0OiBhbnkpID0+IG1vc3RSZWxldmFudHMuaW5jbHVkZXMocHJvZHVjdC5pZCkgJiYgcHJvZHVjdC5zdG9jay5xdWFudGl0eSA+IDApXHJcbiAgICAgIC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gbW9zdFJlbGV2YW50cy5pbmRleE9mKGEuaWQpIC0gbW9zdFJlbGV2YW50cy5pbmRleE9mKGIuaWQpKVxyXG4gICAgY29uc3QgbGFzdFByb2R1Y3RzID0gdG90YWxSZXN1bHQuZGF0YVxyXG4gICAgICAuZmlsdGVyKChwcm9kdWN0OiBhbnkpID0+ICFtb3N0UmVsZXZhbnRzLmluY2x1ZGVzKHByb2R1Y3QuaWQpKVxyXG4gICAgICAuY29uY2F0KG1vc3RSZWxldmFudFdpdGhvdXRTdG9jaylcclxuICAgIGNvbnN0IGNhdGVnb3J5TW9zdFJlbGV2YW50cyA9IGZpcnN0UHJvZHVjdHMuY29uY2F0KGxhc3RQcm9kdWN0cylcclxuICAgIGNvbnN0IHJlc3VsdEZpbmFsID0gY2F0ZWdvcnlNb3N0UmVsZXZhbnRzLnNsaWNlKGxpbWl0cy5vZmZzZXQsIGxpbWl0cy5vZmZzZXQgKyBsaW1pdHMubGltaXQpXHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZGF0YTogcmVzdWx0RmluYWwsXHJcbiAgICAgIGNvdW50OiB0b3RhbFJlc3VsdC5jb3VudCxcclxuICAgICAgbWF4aW11bTogdG90YWxSZXN1bHQubWF4aW11bSxcclxuICAgICAgbWluaW1hbDogdG90YWxSZXN1bHQubWluaW1hbCxcclxuICAgICAgZGlzdGluY3Q6IHRvdGFsUmVzdWx0LmRpc3RpbmN0LFxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
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 CategorySearchStrategy {
7
+ constructor(repositoryService, helpersService) {
8
+ this.repositoryService = repositoryService;
9
+ this.helpersService = helpersService;
10
+ }
11
+ async search(params, shop, optionsCache) {
12
+ const { category, filters, limits, sort, mainGender } = params;
13
+ if (!category) {
14
+ throw new Error('Category is required for CategorySearchStrategy');
15
+ }
16
+ const fields = this.helpersService.getFieldsHelper().getStandardFields();
17
+ if (sort === 'most-relevant') {
18
+ return this.searchWithMostRelevant({
19
+ category,
20
+ filters,
21
+ limits,
22
+ shop,
23
+ mainGender,
24
+ optionsCache,
25
+ fields,
26
+ });
27
+ }
28
+ return this.searchDefault({
29
+ category,
30
+ filters,
31
+ limits,
32
+ shop,
33
+ mainGender,
34
+ sort,
35
+ optionsCache,
36
+ fields,
37
+ });
38
+ }
39
+ async searchWithMostRelevant(params) {
40
+ const { category, filters, shop, optionsCache } = params;
41
+ const mostRelevant = category.isWishlist ? [] : category.getMostRelevantByShop(shop);
42
+ const productsIds = await this.getProductIds(category, filters, optionsCache);
43
+ return this.findAndSortByMostRelevant({
44
+ mostRelevants: mostRelevant,
45
+ productIds: productsIds,
46
+ filters: params.filters,
47
+ limits: params.limits,
48
+ shop: params.shop,
49
+ mainGender: params.mainGender,
50
+ optionsCache: params.optionsCache,
51
+ fields: params.fields,
52
+ });
53
+ }
54
+ async searchDefault(params) {
55
+ const { category, filters, limits, shop, mainGender, sort, optionsCache, fields } = params;
56
+ const productCatalog = this.repositoryService.getProductCatalog();
57
+ const filterHelper = this.helpersService.getFilterHelper();
58
+ const sortHelper = this.helpersService.getSortHelper();
59
+ const repoParams = {
60
+ fields,
61
+ filters: {
62
+ ...(await productCatalog.categoryStructureAdapter.buildProductFilterByCategory(category)),
63
+ ...filterHelper.buildFilterQuery(filters || {}),
64
+ },
65
+ ...(sort ? { orderBy: sortHelper.buildSortQuery(sort) } : {}),
66
+ limits,
67
+ options: {
68
+ minimal: ['price'],
69
+ maximum: ['price'],
70
+ distinct: ['brand'],
71
+ },
72
+ };
73
+ return productCatalog.productRepository.findCatalog(repoParams, mainGender || (shop === Shops.MENSMARKET ? 'male' : 'female'), optionsCache);
74
+ }
75
+ async getProductIds(category, filters, optionsCache) {
76
+ const productCatalog = this.repositoryService.getProductCatalog();
77
+ const filterHelper = this.helpersService.getFilterHelper();
78
+ return productCatalog.productRepository
79
+ .findCatalog({
80
+ fields: ['id'],
81
+ filters: {
82
+ ...(await productCatalog.categoryStructureAdapter.buildProductFilterByCategory(category)),
83
+ ...filterHelper.buildFilterQuery(filters || {}),
84
+ },
85
+ }, undefined, optionsCache)
86
+ .then((products) => products.data.map((product) => product.id));
87
+ }
88
+ async findAndSortByMostRelevant(params) {
89
+ const { mostRelevants, productIds, filters, shop, mainGender, optionsCache, fields, limits } = params;
90
+ const productCatalog = this.repositoryService.getProductCatalog();
91
+ const filterHelper = this.helpersService.getFilterHelper();
92
+ const sortHelper = this.helpersService.getSortHelper();
93
+ const mostRelevantProductsIds = [...new Set(mostRelevants.concat(productIds))];
94
+ const totalResult = await productCatalog.productRepository.findCatalog({
95
+ fields,
96
+ filters: {
97
+ id: { operator: Where.IN, value: mostRelevantProductsIds },
98
+ ...filterHelper.buildFilterQuery(filters || {}),
99
+ },
100
+ orderBy: sortHelper.buildSortQuery('best-sellers'),
101
+ options: {
102
+ minimal: ['price'],
103
+ maximum: ['price'],
104
+ ...(isEmpty(filters?.brands) ? { distinct: ['brand'] } : {}),
105
+ },
106
+ }, mainGender || (shop === Shops.MENSMARKET ? 'male' : 'female'), optionsCache);
107
+ return this.sortProductsByRelevance(totalResult, mostRelevants, limits);
108
+ }
109
+ sortProductsByRelevance(totalResult, mostRelevants, limits) {
110
+ const mostRelevantWithoutStock = totalResult.data.filter((product) => mostRelevants.includes(product.id) && product.stock.quantity <= 0);
111
+ const firstProducts = totalResult.data
112
+ .filter((product) => mostRelevants.includes(product.id) && product.stock.quantity > 0)
113
+ .sort((a, b) => mostRelevants.indexOf(a.id) - mostRelevants.indexOf(b.id));
114
+ const lastProducts = totalResult.data
115
+ .filter((product) => !mostRelevants.includes(product.id))
116
+ .concat(mostRelevantWithoutStock);
117
+ const categoryMostRelevants = firstProducts.concat(lastProducts);
118
+ const resultFinal = categoryMostRelevants.slice(limits.offset, limits.offset + limits.limit);
119
+ return {
120
+ data: resultFinal,
121
+ count: totalResult.count,
122
+ maximum: totalResult.maximum,
123
+ minimal: totalResult.minimal,
124
+ distinct: totalResult.distinct,
125
+ };
126
+ }
127
+ }
128
+ CategorySearchStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CategorySearchStrategy, deps: [{ token: i1.CatalogRepositoryService }, { token: i1.CatalogHelpersService }], target: i0.ɵɵFactoryTarget.Injectable });
129
+ CategorySearchStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CategorySearchStrategy });
130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CategorySearchStrategy, decorators: [{
131
+ type: Injectable
132
+ }], ctorParameters: function () { return [{ type: i1.CatalogRepositoryService }, { type: i1.CatalogHelpersService }]; } });
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktc2VhcmNoLnN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL3N0cmF0ZWdpZXMvY2F0ZWdvcnktc2VhcmNoLnN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUF5RCxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBR2hILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTs7O0FBUzdFLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsWUFDbUIsaUJBQTJDLEVBQzNDLGNBQXFDO1FBRHJDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7UUFDM0MsbUJBQWMsR0FBZCxjQUFjLENBQXVCO0lBQ3JELENBQUM7SUFFSixLQUFLLENBQUMsTUFBTSxDQUNWLE1BQTJCLEVBQzNCLElBQVcsRUFDWCxZQUFpRDtRQUVqRCxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQTtRQUU5RCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFBO1NBQ25FO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1FBRXhFLElBQUksSUFBSSxLQUFLLGVBQWUsRUFBRTtZQUM1QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztnQkFDakMsUUFBUTtnQkFDUixPQUFPO2dCQUNQLE1BQU07Z0JBQ04sSUFBSTtnQkFDSixVQUFVO2dCQUNWLFlB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QyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7YUFDMUYsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUN0RixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsSUFBSTthQUNsQyxNQUFNLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDN0QsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUE7UUFDbkMsTUFBTSxxQkFBcUIsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ2hFLE1BQU0sV0FBVyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRTVGLE9BQU87WUFDTCxJQUFJLEVBQUUsV0FBVztZQUNqQixLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUs7WUFDeEIsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPO1lBQzVCLE9BQU8sRUFBRSxXQUFXLENBQUMsT0FBTztZQUM1QixRQUFRLEVBQUUsV0FBVyxDQUFDLFFBQVE7U0FDL0IsQ0FBQTtJQUNILENBQUM7O21IQTdKVSxzQkFBc0I7dUhBQXRCLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBQcm9kdWN0LCBSZXBvc2l0b3J5Q2FjaGVPcHRpb25zLCBSZXBvc2l0b3J5RmluZFJlc3VsdCwgU2hvcHMsIFdoZXJlLCBpc0VtcHR5IH0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5cbmltcG9ydCB7IENhdGFsb2dTZWFyY2hQYXJhbXMsIENhdGFsb2dTZWFyY2hTdHJhdGVneSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnXG5pbXBvcnQgeyBDYXRhbG9nSGVscGVyc1NlcnZpY2UsIENhdGFsb2dSZXBvc2l0b3J5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJ1xuXG5pbXBvcnQge1xuICBGaW5kQW5kU29ydEJ5TW9zdFJlbGV2YW50UGFyYW1zLFxuICBTZWFyY2hEZWZhdWx0UGFyYW1zLFxuICBTZWFyY2hXaXRoTW9zdFJlbGV2YW50UGFyYW1zLFxufSBmcm9tICcuL3R5cGVzL3N0cmF0ZWd5LXBhcmFtcy50eXBlJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2F0ZWdvcnlTZWFyY2hTdHJhdGVneSBpbXBsZW1lbnRzIENhdGFsb2dTZWFyY2hTdHJhdGVneSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVwb3NpdG9yeVNlcnZpY2U6IENhdGFsb2dSZXBvc2l0b3J5U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhlbHBlcnNTZXJ2aWNlOiBDYXRhbG9nSGVscGVyc1NlcnZpY2UsXG4gICkge31cblxuICBhc3luYyBzZWFyY2goXG4gICAgcGFyYW1zOiBDYXRhbG9nU2VhcmNoUGFyYW1zLFxuICAgIHNob3A6IFNob3BzLFxuICAgIG9wdGlvbnNDYWNoZT86IHsgY2FjaGU/OiBSZXBvc2l0b3J5Q2FjaGVPcHRpb25zIH0sXG4gICk6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRSZXN1bHQ8UHJvZHVjdD4+IHtcbiAgICBjb25zdCB7IGNhdGVnb3J5LCBmaWx0ZXJzLCBsaW1pdHMsIHNvcnQsIG1haW5HZW5kZXIgfSA9IHBhcmFtc1xuXG4gICAgaWYgKCFjYXRlZ29yeSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYXRlZ29yeSBpcyByZXF1aXJlZCBmb3IgQ2F0ZWdvcnlTZWFyY2hTdHJhdGVneScpXG4gICAgfVxuXG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5oZWxwZXJzU2VydmljZS5nZXRGaWVsZHNIZWxwZXIoKS5nZXRTdGFuZGFyZEZpZWxkcygpXG5cbiAgICBpZiAoc29ydCA9PT0gJ21vc3QtcmVsZXZhbnQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWFyY2hXaXRoTW9zdFJlbGV2YW50KHtcbiAgICAgICAgY2F0ZWdvcnksXG4gICAgICAgIGZpbHRlcnMsXG4gICAgICAgIGxpbWl0cyxcbiAgICAgICAgc2hvcCxcbiAgICAgICAgbWFpbkdlbmRlcixcbiAgICAgICAgb3B0aW9uc0NhY2hlLFxuICAgICAgICBmaWVsZHMsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNlYXJjaERlZmF1bHQoe1xuICAgICAgY2F0ZWdvcnksXG4gICAgICBmaWx0ZXJzLFxuICAgICAgbGltaXRzLFxuICAgICAgc2hvcCxcbiAgICAgIG1haW5HZW5kZXIsXG4gICAgICBzb3J0LFxuICAgICAgb3B0aW9uc0NhY2hlLFxuICAgICAgZmllbGRzLFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlYXJjaFdpdGhNb3N0UmVsZXZhbnQocGFyYW1zOiBTZWFyY2hXaXRoTW9zdFJlbGV2YW50UGFyYW1zKSB7XG4gICAgY29uc3QgeyBjYXRlZ29yeSwgZmlsdGVycywgc2hvcCwgb3B0aW9uc0NhY2hlIH0gPSBwYXJhbXNcbiAgICBjb25zdCBtb3N0UmVsZXZhbnQgPSBjYXRlZ29yeS5pc1dpc2hsaXN0ID8gW10gOiBjYXRlZ29yeS5nZXRNb3N0UmVsZXZhbnRCeVNob3Aoc2hvcClcbiAgICBjb25zdCBwcm9kdWN0c0lkcyA9IGF3YWl0IHRoaXMuZ2V0UHJvZHVjdElkcyhjYXRlZ29yeSwgZmlsdGVycywgb3B0aW9uc0NhY2hlKVxuXG4gICAgcmV0dXJuIHRoaXMuZmluZEFuZFNvcnRCeU1vc3RSZWxldmFudCh7XG4gICAgICBtb3N0UmVsZXZhbnRzOiBtb3N0UmVsZXZhbnQsXG4gICAgICBwcm9kdWN0SWRzOiBwcm9kdWN0c0lkcyxcbiAgICAgIGZpbHRlcnM6IHBhcmFtcy5maWx0ZXJzLFxuICAgICAgbGltaXRzOiBwYXJhbXMubGltaXRzLFxuICAgICAgc2hvcDogcGFyYW1zLnNob3AsXG4gICAgICBtYWluR2VuZGVyOiBwYXJhbXMubWFpbkdlbmRlcixcbiAgICAgIG9wdGlvbnNDYWNoZTogcGFyYW1zLm9wdGlvbnNDYWNoZSxcbiAgICAgIGZpZWxkczogcGFyYW1zLmZpZWxkcyxcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZWFyY2hEZWZhdWx0KHBhcmFtczogU2VhcmNoRGVmYXVsdFBhcmFtcykge1xuICAgIGNvbnN0IHsgY2F0ZWdvcnksIGZpbHRlcnMsIGxpbWl0cywgc2hvcCwgbWFpbkdlbmRlciwgc29ydCwgb3B0aW9uc0NhY2hlLCBmaWVsZHMgfSA9IHBhcmFtc1xuICAgIGNvbnN0IHByb2R1Y3RDYXRhbG9nID0gdGhpcy5yZXBvc2l0b3J5U2VydmljZS5nZXRQcm9kdWN0Q2F0YWxvZygpXG4gICAgY29uc3QgZmlsdGVySGVscGVyID0gdGhpcy5oZWxwZXJzU2VydmljZS5nZXRGaWx0ZXJIZWxwZXIoKVxuICAgIGNvbnN0IHNvcnRIZWxwZXIgPSB0aGlzLmhlbHBlcnNTZXJ2aWNlLmdldFNvcnRIZWxwZXIoKVxuXG4gICAgY29uc3QgcmVwb1BhcmFtcyA9IHtcbiAgICAgIGZpZWxkcyxcbiAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgLi4uKGF3YWl0IHByb2R1Y3RDYXRhbG9nLmNhdGVnb3J5U3RydWN0dXJlQWRhcHRlci5idWlsZFByb2R1Y3RGaWx0ZXJCeUNhdGVnb3J5KGNhdGVnb3J5KSksXG4gICAgICAgIC4uLmZpbHRlckhlbHBlci5idWlsZEZpbHRlclF1ZXJ5KGZpbHRlcnMgfHwge30pLFxuICAgICAgfSxcbiAgICAgIC4uLihzb3J0ID8geyBvcmRlckJ5OiBzb3J0SGVscGVyLmJ1aWxkU29ydFF1ZXJ5KHNvcnQpIH0gOiB7fSksXG4gICAgICBsaW1pdHMsXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIG1pbmltYWw6IFsncHJpY2UnXSxcbiAgICAgICAgbWF4aW11bTogWydwcmljZSddLFxuICAgICAgICBkaXN0aW5jdDogWydicmFuZCddLFxuICAgICAgfSxcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvZHVjdENhdGFsb2cucHJvZHVjdFJlcG9zaXRvcnkuZmluZENhdGFsb2coXG4gICAgICByZXBvUGFyYW1zLFxuICAgICAgbWFpbkdlbmRlciB8fCAoc2hvcCA9PT0gU2hvcHMuTUVOU01BUktFVCA/ICdtYWxlJyA6ICdmZW1hbGUnKSxcbiAgICAgIG9wdGlvbnNDYWNoZSxcbiAgICApXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFByb2R1Y3RJZHMoY2F0ZWdvcnk6IGFueSwgZmlsdGVyczogYW55LCBvcHRpb25zQ2FjaGU6IGFueSk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBjb25zdCBwcm9kdWN0Q2F0YWxvZyA9IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZ2V0UHJvZHVjdENhdGFsb2coKVxuICAgIGNvbnN0IGZpbHRlckhlbHBlciA9IHRoaXMuaGVscGVyc1NlcnZpY2UuZ2V0RmlsdGVySGVscGVyKClcblxuICAgIHJldHVybiBwcm9kdWN0Q2F0YWxvZy5wcm9kdWN0UmVwb3NpdG9yeVxuICAgICAgLmZpbmRDYXRhbG9nKFxuICAgICAgICB7XG4gICAgICAgICAgZmllbGRzOiBbJ2lkJ10sXG4gICAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgICAgLi4uKGF3YWl0IHByb2R1Y3RDYXRhbG9nLmNhdGVnb3J5U3RydWN0dXJlQWRhcHRlci5idWlsZFByb2R1Y3RGaWx0ZXJCeUNhdGVnb3J5KGNhdGVnb3J5KSksXG4gICAgICAgICAgICAuLi5maWx0ZXJIZWxwZXIuYnVpbGRGaWx0ZXJRdWVyeShmaWx0ZXJzIHx8IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIG9wdGlvbnNDYWNoZSxcbiAgICAgIClcbiAgICAgIC50aGVuKChwcm9kdWN0cykgPT4gcHJvZHVjdHMuZGF0YS5tYXAoKHByb2R1Y3QpID0+IHByb2R1Y3QuaWQpKVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmaW5kQW5kU29ydEJ5TW9zdFJlbGV2YW50KFxuICAgIHBhcmFtczogRmluZEFuZFNvcnRCeU1vc3RSZWxldmFudFBhcmFtcyxcbiAgKTogUHJvbWlzZTxSZXBvc2l0b3J5RmluZFJlc3VsdDxQcm9kdWN0Pj4ge1xuICAgIGNvbnN0IHsgbW9zdFJlbGV2YW50cywgcHJvZHVjdElkcywgZmlsdGVycywgc2hvcCwgbWFpbkdlbmRlciwgb3B0aW9uc0NhY2hlLCBmaWVsZHMsIGxpbWl0cyB9ID0gcGFyYW1zXG4gICAgY29uc3QgcHJvZHVjdENhdGFsb2cgPSB0aGlzLnJlcG9zaXRvcnlTZXJ2aWNlLmdldFByb2R1Y3RDYXRhbG9nKClcbiAgICBjb25zdCBmaWx0ZXJIZWxwZXIgPSB0aGlzLmhlbHBlcnNTZXJ2aWNlLmdldEZpbHRlckhlbHBlcigpXG4gICAgY29uc3Qgc29ydEhlbHBlciA9IHRoaXMuaGVscGVyc1NlcnZpY2UuZ2V0U29ydEhlbHBlcigpXG5cbiAgICBjb25zdCBtb3N0UmVsZXZhbnRQcm9kdWN0c0lkcyA9IFsuLi5uZXcgU2V0KG1vc3RSZWxldmFudHMuY29uY2F0KHByb2R1Y3RJZHMpKV1cbiAgICBjb25zdCB0b3RhbFJlc3VsdCA9IGF3YWl0IHByb2R1Y3RDYXRhbG9nLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmRDYXRhbG9nKFxuICAgICAge1xuICAgICAgICBmaWVsZHMsXG4gICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICBpZDogeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBtb3N0UmVsZXZhbnRQcm9kdWN0c0lkcyB9LFxuICAgICAgICAgIC4uLmZpbHRlckhlbHBlci5idWlsZEZpbHRlclF1ZXJ5KGZpbHRlcnMgfHwge30pLFxuICAgICAgICB9LFxuICAgICAgICBvcmRlckJ5OiBzb3J0SGVscGVyLmJ1aWxkU29ydFF1ZXJ5KCdiZXN0LXNlbGxlcnMnKSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIG1pbmltYWw6IFsncHJpY2UnXSxcbiAgICAgICAgICBtYXhpbXVtOiBbJ3ByaWNlJ10sXG4gICAgICAgICAgLi4uKGlzRW1wdHkoZmlsdGVycz8uYnJhbmRzKSA/IHsgZGlzdGluY3Q6IFsnYnJhbmQnXSB9IDoge30pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG1haW5HZW5kZXIgfHwgKHNob3AgPT09IFNob3BzLk1FTlNNQVJLRVQgPyAnbWFsZScgOiAnZmVtYWxlJyksXG4gICAgICBvcHRpb25zQ2FjaGUsXG4gICAgKVxuXG4gICAgcmV0dXJuIHRoaXMuc29ydFByb2R1Y3RzQnlSZWxldmFuY2UodG90YWxSZXN1bHQsIG1vc3RSZWxldmFudHMsIGxpbWl0cylcbiAgfVxuXG4gIHByaXZhdGUgc29ydFByb2R1Y3RzQnlSZWxldmFuY2UodG90YWxSZXN1bHQ6IGFueSwgbW9zdFJlbGV2YW50czogc3RyaW5nW10sIGxpbWl0czogYW55KSB7XG4gICAgY29uc3QgbW9zdFJlbGV2YW50V2l0aG91dFN0b2NrID0gdG90YWxSZXN1bHQuZGF0YS5maWx0ZXIoXG4gICAgICAocHJvZHVjdDogYW55KSA9PiBtb3N0UmVsZXZhbnRzLmluY2x1ZGVzKHByb2R1Y3QuaWQpICYmIHByb2R1Y3Quc3RvY2sucXVhbnRpdHkgPD0gMCxcbiAgICApXG4gICAgY29uc3QgZmlyc3RQcm9kdWN0cyA9IHRvdGFsUmVzdWx0LmRhdGFcbiAgICAgIC5maWx0ZXIoKHByb2R1Y3Q6IGFueSkgPT4gbW9zdFJlbGV2YW50cy5pbmNsdWRlcyhwcm9kdWN0LmlkKSAmJiBwcm9kdWN0LnN0b2NrLnF1YW50aXR5ID4gMClcbiAgICAgIC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gbW9zdFJlbGV2YW50cy5pbmRleE9mKGEuaWQpIC0gbW9zdFJlbGV2YW50cy5pbmRleE9mKGIuaWQpKVxuICAgIGNvbnN0IGxhc3RQcm9kdWN0cyA9IHRvdGFsUmVzdWx0LmRhdGFcbiAgICAgIC5maWx0ZXIoKHByb2R1Y3Q6IGFueSkgPT4gIW1vc3RSZWxldmFudHMuaW5jbHVkZXMocHJvZHVjdC5pZCkpXG4gICAgICAuY29uY2F0KG1vc3RSZWxldmFudFdpdGhvdXRTdG9jaylcbiAgICBjb25zdCBjYXRlZ29yeU1vc3RSZWxldmFudHMgPSBmaXJzdFByb2R1Y3RzLmNvbmNhdChsYXN0UHJvZHVjdHMpXG4gICAgY29uc3QgcmVzdWx0RmluYWwgPSBjYXRlZ29yeU1vc3RSZWxldmFudHMuc2xpY2UobGltaXRzLm9mZnNldCwgbGltaXRzLm9mZnNldCArIGxpbWl0cy5saW1pdClcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiByZXN1bHRGaW5hbCxcbiAgICAgIGNvdW50OiB0b3RhbFJlc3VsdC5jb3VudCxcbiAgICAgIG1heGltdW06IHRvdGFsUmVzdWx0Lm1heGltdW0sXG4gICAgICBtaW5pbWFsOiB0b3RhbFJlc3VsdC5taW5pbWFsLFxuICAgICAgZGlzdGluY3Q6IHRvdGFsUmVzdWx0LmRpc3RpbmN0LFxuICAgIH1cbiAgfVxufVxuIl19
@@ -1,4 +1,4 @@
1
- export * from './category-search.strategy';
2
- export * from './profile-search.strategy';
3
- export * from './term-search.strategy';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NhdGFsb2cvc3RyYXRlZ2llcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFBO0FBQzFDLGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYyx3QkFBd0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2F0ZWdvcnktc2VhcmNoLnN0cmF0ZWd5J1xyXG5leHBvcnQgKiBmcm9tICcuL3Byb2ZpbGUtc2VhcmNoLnN0cmF0ZWd5J1xyXG5leHBvcnQgKiBmcm9tICcuL3Rlcm0tc2VhcmNoLnN0cmF0ZWd5J1xyXG4iXX0=
1
+ export * from './category-search.strategy';
2
+ export * from './profile-search.strategy';
3
+ export * from './term-search.strategy';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NhdGFsb2cvc3RyYXRlZ2llcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFBO0FBQzFDLGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYyx3QkFBd0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2F0ZWdvcnktc2VhcmNoLnN0cmF0ZWd5J1xuZXhwb3J0ICogZnJvbSAnLi9wcm9maWxlLXNlYXJjaC5zdHJhdGVneSdcbmV4cG9ydCAqIGZyb20gJy4vdGVybS1zZWFyY2guc3RyYXRlZ3knXG4iXX0=
@@ -1,42 +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1zZWFyY2guc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NhdGFsb2cvc3RyYXRlZ2llcy9wcm9maWxlLXNlYXJjaC5zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBeUQsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBR3ZHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTs7O0FBRzdFLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFDbUIsaUJBQTJDLEVBQzNDLGNBQXFDO1FBRHJDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7UUFDM0MsbUJBQWMsR0FBZCxjQUFjLENBQXVCO0lBQ3JELENBQUM7SUFFSixLQUFLLENBQUMsTUFBTSxDQUNWLE1BQTJCLEVBQzNCLElBQVcsRUFDWCxZQUFpRDtRQUVqRCxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQTtRQUU3RCxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFBO1NBQ2pFO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixFQUFFLENBQUE7UUFDakUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsQ0FBQTtRQUMxRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ3RELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLENBQUE7UUFFMUQsTUFBTSxVQUFVLEdBQUc7WUFDakIsTUFBTSxFQUFFLFlBQVksQ0FBQyxpQkFBaUIsRUFBRTtZQUN4QyxPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtnQkFDOUMsR0FBRyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQzthQUNoRDtZQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdELE1BQU07WUFDTixPQUFPLEVBQUU7Z0JBQ1AsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO2dCQUNsQixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7Z0JBQ2xCLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQzthQUNwQjtTQUNGLENBQUE7UUFFRCxPQUFPLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQ2pELFVBQVUsRUFDVixVQUFVLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFDN0QsWUFBWSxDQUNiLENBQUE7SUFDSCxDQUFDOztrSEExQ1UscUJBQXFCO3NIQUFyQixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBQcm9kdWN0LCBSZXBvc2l0b3J5Q2FjaGVPcHRpb25zLCBSZXBvc2l0b3J5RmluZFJlc3VsdCwgU2hvcHMsIFdoZXJlIH0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcblxyXG5pbXBvcnQgeyBDYXRhbG9nU2VhcmNoUGFyYW1zLCBDYXRhbG9nU2VhcmNoU3RyYXRlZ3kgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJ1xyXG5pbXBvcnQgeyBDYXRhbG9nSGVscGVyc1NlcnZpY2UsIENhdGFsb2dSZXBvc2l0b3J5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJ1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUHJvZmlsZVNlYXJjaFN0cmF0ZWd5IGltcGxlbWVudHMgQ2F0YWxvZ1NlYXJjaFN0cmF0ZWd5IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVwb3NpdG9yeVNlcnZpY2U6IENhdGFsb2dSZXBvc2l0b3J5U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGVscGVyc1NlcnZpY2U6IENhdGFsb2dIZWxwZXJzU2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIGFzeW5jIHNlYXJjaChcclxuICAgIHBhcmFtczogQ2F0YWxvZ1NlYXJjaFBhcmFtcyxcclxuICAgIHNob3A6IFNob3BzLFxyXG4gICAgb3B0aW9uc0NhY2hlPzogeyBjYWNoZT86IFJlcG9zaXRvcnlDYWNoZU9wdGlvbnMgfSxcclxuICApOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PFByb2R1Y3Q+PiB7XHJcbiAgICBjb25zdCB7IHByb2ZpbGUsIGZpbHRlcnMsIGxpbWl0cywgc29ydCwgbWFpbkdlbmRlciB9ID0gcGFyYW1zXHJcblxyXG4gICAgaWYgKCFwcm9maWxlKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignUHJvZmlsZSBpcyByZXF1aXJlZCBmb3IgUHJvZmlsZVNlYXJjaFN0cmF0ZWd5JylcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwcm9kdWN0Q2F0YWxvZyA9IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZ2V0UHJvZHVjdENhdGFsb2coKVxyXG4gICAgY29uc3QgZmlsdGVySGVscGVyID0gdGhpcy5oZWxwZXJzU2VydmljZS5nZXRGaWx0ZXJIZWxwZXIoKVxyXG4gICAgY29uc3Qgc29ydEhlbHBlciA9IHRoaXMuaGVscGVyc1NlcnZpY2UuZ2V0U29ydEhlbHBlcigpXHJcbiAgICBjb25zdCBmaWVsZHNIZWxwZXIgPSB0aGlzLmhlbHBlcnNTZXJ2aWNlLmdldEZpZWxkc0hlbHBlcigpXHJcblxyXG4gICAgY29uc3QgcmVwb1BhcmFtcyA9IHtcclxuICAgICAgZmllbGRzOiBmaWVsZHNIZWxwZXIuZ2V0U3RhbmRhcmRGaWVsZHMoKSxcclxuICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgIHRhZ3M6IHsgb3BlcmF0b3I6IFdoZXJlLkxJS0UsIHZhbHVlOiBwcm9maWxlIH0sXHJcbiAgICAgICAgLi4uZmlsdGVySGVscGVyLmJ1aWxkRmlsdGVyUXVlcnkoZmlsdGVycyB8fCB7fSksXHJcbiAgICAgIH0sXHJcbiAgICAgIC4uLihzb3J0ID8geyBvcmRlckJ5OiBzb3J0SGVscGVyLmJ1aWxkU29ydFF1ZXJ5KHNvcnQpIH0gOiB7fSksXHJcbiAgICAgIGxpbWl0cyxcclxuICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgIG1pbmltYWw6IFsncHJpY2UnXSxcclxuICAgICAgICBtYXhpbXVtOiBbJ3ByaWNlJ10sXHJcbiAgICAgICAgZGlzdGluY3Q6IFsnYnJhbmQnXSxcclxuICAgICAgfSxcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcHJvZHVjdENhdGFsb2cucHJvZHVjdFJlcG9zaXRvcnkuZmluZENhdGFsb2coXHJcbiAgICAgIHJlcG9QYXJhbXMsXHJcbiAgICAgIG1haW5HZW5kZXIgfHwgKHNob3AgPT09IFNob3BzLk1FTlNNQVJLRVQgPyAnbWFsZScgOiAnZmVtYWxlJyksXHJcbiAgICAgIG9wdGlvbnNDYWNoZSxcclxuICAgIClcclxuICB9XHJcbn1cclxuIl19
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