@usereactify/search 5.59.0 → 5.59.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/package.json +7 -5
  3. package/dist/src/components/ClearAll/ClearAll.d.ts +1 -1
  4. package/dist/src/components/ClearAll/ClearAll.js +4 -9
  5. package/dist/src/components/ClearAll/ClearAll.js.map +1 -1
  6. package/dist/src/components/CustomComponent/CustomComponent.d.ts +1 -1
  7. package/dist/src/components/CustomComponent/CustomComponent.js +2 -2
  8. package/dist/src/components/CustomComponent/CustomComponent.js.map +1 -1
  9. package/dist/src/components/Example/ExampleClearAll.d.ts +2 -2
  10. package/dist/src/components/Example/ExampleClearAll.js +2 -5
  11. package/dist/src/components/Example/ExampleClearAll.js.map +1 -1
  12. package/dist/src/components/Example/ExampleCustomComponent.d.ts +1 -1
  13. package/dist/src/components/Example/ExampleCustomComponent.js +3 -7
  14. package/dist/src/components/Example/ExampleCustomComponent.js.map +1 -1
  15. package/dist/src/components/Example/ExampleFilterList.d.ts +2 -2
  16. package/dist/src/components/Example/ExampleFilterList.js +31 -66
  17. package/dist/src/components/Example/ExampleFilterList.js.map +1 -1
  18. package/dist/src/components/Example/ExampleFilterRange.d.ts +2 -2
  19. package/dist/src/components/Example/ExampleFilterRange.js +2 -12
  20. package/dist/src/components/Example/ExampleFilterRange.js.map +1 -1
  21. package/dist/src/components/Example/ExampleFilterSlider.d.ts +2 -2
  22. package/dist/src/components/Example/ExampleFilterSlider.js +11 -18
  23. package/dist/src/components/Example/ExampleFilterSlider.js.map +1 -1
  24. package/dist/src/components/Example/ExampleFilters.d.ts +1 -1
  25. package/dist/src/components/Example/ExampleFilters.js +3 -8
  26. package/dist/src/components/Example/ExampleFilters.js.map +1 -1
  27. package/dist/src/components/Example/ExampleFiltersSelected.d.ts +2 -2
  28. package/dist/src/components/Example/ExampleFiltersSelected.js +3 -24
  29. package/dist/src/components/Example/ExampleFiltersSelected.js.map +1 -1
  30. package/dist/src/components/Example/ExampleHookUseFilters.d.ts +1 -1
  31. package/dist/src/components/Example/ExampleHookUseFilters.js +3 -10
  32. package/dist/src/components/Example/ExampleHookUseFilters.js.map +1 -1
  33. package/dist/src/components/Example/ExampleHookUseResults.d.ts +1 -1
  34. package/dist/src/components/Example/ExampleHookUseResults.js +3 -8
  35. package/dist/src/components/Example/ExampleHookUseResults.js.map +1 -1
  36. package/dist/src/components/Example/ExampleHookUseSearch.js +2 -2
  37. package/dist/src/components/Example/ExampleHookUseSearch.js.map +1 -1
  38. package/dist/src/components/Example/ExampleHookUseSortBy.js +2 -1
  39. package/dist/src/components/Example/ExampleHookUseSortBy.js.map +1 -1
  40. package/dist/src/components/Example/ExampleProductCardWeight.d.ts +1 -1
  41. package/dist/src/components/Example/ExampleProductCardWeight.js +14 -47
  42. package/dist/src/components/Example/ExampleProductCardWeight.js.map +1 -1
  43. package/dist/src/components/Example/ExampleReactiveSearchProviderCollection.d.ts +1 -1
  44. package/dist/src/components/Example/ExampleReactiveSearchProviderCollection.js +2 -6
  45. package/dist/src/components/Example/ExampleReactiveSearchProviderCollection.js.map +1 -1
  46. package/dist/src/components/Example/ExampleReactiveSearchProviderInstantSearch.d.ts +1 -1
  47. package/dist/src/components/Example/ExampleReactiveSearchProviderInstantSearch.js +2 -6
  48. package/dist/src/components/Example/ExampleReactiveSearchProviderInstantSearch.js.map +1 -1
  49. package/dist/src/components/Example/ExampleReactiveSearchProviderSearch.d.ts +1 -1
  50. package/dist/src/components/Example/ExampleReactiveSearchProviderSearch.js +2 -6
  51. package/dist/src/components/Example/ExampleReactiveSearchProviderSearch.js.map +1 -1
  52. package/dist/src/components/Example/ExampleResultCardCallout.d.ts +1 -1
  53. package/dist/src/components/Example/ExampleResultCardCallout.js +2 -4
  54. package/dist/src/components/Example/ExampleResultCardCallout.js.map +1 -1
  55. package/dist/src/components/Example/ExampleResultCardProduct.d.ts +2 -2
  56. package/dist/src/components/Example/ExampleResultCardProduct.js +2 -12
  57. package/dist/src/components/Example/ExampleResultCardProduct.js.map +1 -1
  58. package/dist/src/components/Example/ExampleResultPaginationInfiniteScroll.d.ts +2 -2
  59. package/dist/src/components/Example/ExampleResultPaginationInfiniteScroll.js +2 -5
  60. package/dist/src/components/Example/ExampleResultPaginationInfiniteScroll.js.map +1 -1
  61. package/dist/src/components/Example/ExampleResultPaginationLoadMore.d.ts +2 -2
  62. package/dist/src/components/Example/ExampleResultPaginationLoadMore.js +2 -5
  63. package/dist/src/components/Example/ExampleResultPaginationLoadMore.js.map +1 -1
  64. package/dist/src/components/Example/ExampleResultPaginationNextPrev.d.ts +2 -2
  65. package/dist/src/components/Example/ExampleResultPaginationNextPrev.js +2 -7
  66. package/dist/src/components/Example/ExampleResultPaginationNextPrev.js.map +1 -1
  67. package/dist/src/components/Example/ExampleResultPaginationNumbered.d.ts +2 -2
  68. package/dist/src/components/Example/ExampleResultPaginationNumbered.js +6 -20
  69. package/dist/src/components/Example/ExampleResultPaginationNumbered.js.map +1 -1
  70. package/dist/src/components/Example/ExampleResults.d.ts +1 -1
  71. package/dist/src/components/Example/ExampleResults.js +7 -10
  72. package/dist/src/components/Example/ExampleResults.js.map +1 -1
  73. package/dist/src/components/Example/ExampleSearch.d.ts +1 -1
  74. package/dist/src/components/Example/ExampleSearch.js +2 -2
  75. package/dist/src/components/Example/ExampleSearch.js.map +1 -1
  76. package/dist/src/components/Example/ExampleSortBy.d.ts +2 -2
  77. package/dist/src/components/Example/ExampleSortBy.js +2 -5
  78. package/dist/src/components/Example/ExampleSortBy.js.map +1 -1
  79. package/dist/src/components/Example/ExampleStats.d.ts +2 -2
  80. package/dist/src/components/Example/ExampleStats.js +2 -8
  81. package/dist/src/components/Example/ExampleStats.js.map +1 -1
  82. package/dist/src/components/Example/ExampleSuggestions.d.ts +2 -2
  83. package/dist/src/components/Example/ExampleSuggestions.js +2 -7
  84. package/dist/src/components/Example/ExampleSuggestions.js.map +1 -1
  85. package/dist/src/components/Example/index.d.ts +6 -6
  86. package/dist/src/components/Example/index.js +6 -6
  87. package/dist/src/components/Example/index.js.map +1 -1
  88. package/dist/src/components/Filter/Filter.d.ts +1 -1
  89. package/dist/src/components/Filter/Filter.js +30 -35
  90. package/dist/src/components/Filter/Filter.js.map +1 -1
  91. package/dist/src/components/Filter/Filters.d.ts +4 -4
  92. package/dist/src/components/Filter/Filters.js +3 -6
  93. package/dist/src/components/Filter/Filters.js.map +1 -1
  94. package/dist/src/components/Filter/FiltersSelected.d.ts +1 -1
  95. package/dist/src/components/Filter/FiltersSelected.js +4 -9
  96. package/dist/src/components/Filter/FiltersSelected.js.map +1 -1
  97. package/dist/src/components/ReactifySearchProvider/ReactifySearchProvider.d.ts +2 -2
  98. package/dist/src/components/ReactifySearchProvider/ReactifySearchProvider.js +20 -8
  99. package/dist/src/components/ReactifySearchProvider/ReactifySearchProvider.js.map +1 -1
  100. package/dist/src/components/Result/ResultCardCallout.d.ts +2 -2
  101. package/dist/src/components/Result/ResultCardCallout.js +3 -2
  102. package/dist/src/components/Result/ResultCardCallout.js.map +1 -1
  103. package/dist/src/components/Result/ResultCardProduct.d.ts +1 -1
  104. package/dist/src/components/Result/ResultCardProduct.js +4 -3
  105. package/dist/src/components/Result/ResultCardProduct.js.map +1 -1
  106. package/dist/src/components/Result/ResultPaginationInfiniteScroll.d.ts +3 -3
  107. package/dist/src/components/Result/ResultPaginationInfiniteScroll.js +3 -6
  108. package/dist/src/components/Result/ResultPaginationInfiniteScroll.js.map +1 -1
  109. package/dist/src/components/Result/ResultPaginationLoadMore.d.ts +3 -3
  110. package/dist/src/components/Result/ResultPaginationLoadMore.js +3 -6
  111. package/dist/src/components/Result/ResultPaginationLoadMore.js.map +1 -1
  112. package/dist/src/components/Result/ResultPaginationNextPrev.d.ts +3 -3
  113. package/dist/src/components/Result/ResultPaginationNextPrev.js +3 -6
  114. package/dist/src/components/Result/ResultPaginationNextPrev.js.map +1 -1
  115. package/dist/src/components/Result/ResultPaginationNumbered.d.ts +3 -3
  116. package/dist/src/components/Result/ResultPaginationNumbered.js +3 -6
  117. package/dist/src/components/Result/ResultPaginationNumbered.js.map +1 -1
  118. package/dist/src/components/Result/ResultStateProvider.d.ts +2 -2
  119. package/dist/src/components/Result/ResultStateProvider.js +3 -3
  120. package/dist/src/components/Result/ResultStateProvider.js.map +1 -1
  121. package/dist/src/components/Result/Results.d.ts +2 -2
  122. package/dist/src/components/Result/Results.js +50 -52
  123. package/dist/src/components/Result/Results.js.map +1 -1
  124. package/dist/src/components/Result/index.d.ts +4 -4
  125. package/dist/src/components/Result/index.js +4 -4
  126. package/dist/src/components/Result/index.js.map +1 -1
  127. package/dist/src/components/Search/Search.d.ts +1 -1
  128. package/dist/src/components/Search/Search.js +3 -6
  129. package/dist/src/components/Search/Search.js.map +1 -1
  130. package/dist/src/components/Sensor/SensorCollection.d.ts +1 -1
  131. package/dist/src/components/Sensor/SensorCollection.js +2 -2
  132. package/dist/src/components/Sensor/SensorCollection.js.map +1 -1
  133. package/dist/src/components/Sensor/SensorCustom.d.ts +1 -2
  134. package/dist/src/components/Sensor/SensorCustom.js +5 -6
  135. package/dist/src/components/Sensor/SensorCustom.js.map +1 -1
  136. package/dist/src/components/Sensor/SensorExplain.js +2 -2
  137. package/dist/src/components/Sensor/SensorExplain.js.map +1 -1
  138. package/dist/src/components/Sensor/SensorInventoryAvailable.d.ts +1 -1
  139. package/dist/src/components/Sensor/SensorInventoryAvailable.js +2 -2
  140. package/dist/src/components/Sensor/SensorInventoryAvailable.js.map +1 -1
  141. package/dist/src/components/Sensor/SensorPublished.d.ts +1 -1
  142. package/dist/src/components/Sensor/SensorPublished.js +2 -2
  143. package/dist/src/components/Sensor/SensorPublished.js.map +1 -1
  144. package/dist/src/components/Sensor/SensorSearchTerm.d.ts +1 -2
  145. package/dist/src/components/Sensor/SensorSearchTerm.js +19 -124
  146. package/dist/src/components/Sensor/SensorSearchTerm.js.map +1 -1
  147. package/dist/src/components/Sensor/SensorSort.d.ts +1 -1
  148. package/dist/src/components/Sensor/SensorSort.js +2 -2
  149. package/dist/src/components/Sensor/SensorSort.js.map +1 -1
  150. package/dist/src/components/Sensor/Sensors.d.ts +1 -3
  151. package/dist/src/components/Sensor/Sensors.js +13 -46
  152. package/dist/src/components/Sensor/Sensors.js.map +1 -1
  153. package/dist/src/components/Sensor/index.d.ts +7 -9
  154. package/dist/src/components/Sensor/index.js +6 -10
  155. package/dist/src/components/Sensor/index.js.map +1 -1
  156. package/dist/src/components/SortBy/SortBy.d.ts +1 -1
  157. package/dist/src/components/SortBy/SortBy.js +3 -6
  158. package/dist/src/components/SortBy/SortBy.js.map +1 -1
  159. package/dist/src/components/Stats/Stats.d.ts +2 -2
  160. package/dist/src/components/Stats/Stats.js +2 -5
  161. package/dist/src/components/Stats/Stats.js.map +1 -1
  162. package/dist/src/components/Suggestions/Suggestions.d.ts +1 -1
  163. package/dist/src/components/Suggestions/Suggestions.js +7 -8
  164. package/dist/src/components/Suggestions/Suggestions.js.map +1 -1
  165. package/dist/src/components/Utility/UtilityAuthenticatedReactiveBase.d.ts +1 -1
  166. package/dist/src/components/Utility/UtilityAuthenticatedReactiveBase.js +3 -3
  167. package/dist/src/components/Utility/UtilityAuthenticatedReactiveBase.js.map +1 -1
  168. package/dist/src/components/Utility/index.js.map +1 -1
  169. package/dist/src/components/index.d.ts +2 -2
  170. package/dist/src/components/index.js +2 -2
  171. package/dist/src/components/index.js.map +1 -1
  172. package/dist/src/hooks/index.d.ts +11 -11
  173. package/dist/src/hooks/index.js +11 -11
  174. package/dist/src/hooks/index.js.map +1 -1
  175. package/dist/src/hooks/react-slider/useReactSliderProps.d.ts +2 -2
  176. package/dist/src/hooks/react-slider/useReactSliderProps.js +6 -6
  177. package/dist/src/hooks/react-slider/useReactSliderProps.js.map +1 -1
  178. package/dist/src/hooks/reactivesearch/useReactiveBaseProps.d.ts +1 -1
  179. package/dist/src/hooks/reactivesearch/useReactiveBaseProps.js +2 -2
  180. package/dist/src/hooks/reactivesearch/useReactiveBaseProps.js.map +1 -1
  181. package/dist/src/hooks/useAnalytics.js.map +1 -1
  182. package/dist/src/hooks/useConfig.d.ts +1 -1
  183. package/dist/src/hooks/useConfig.js +1 -1
  184. package/dist/src/hooks/useConfig.js.map +1 -1
  185. package/dist/src/hooks/useCuration.d.ts +1 -1
  186. package/dist/src/hooks/useCuration.js +9 -25
  187. package/dist/src/hooks/useCuration.js.map +1 -1
  188. package/dist/src/hooks/useDebugger.js +3 -3
  189. package/dist/src/hooks/useDebugger.js.map +1 -1
  190. package/dist/src/hooks/useFilterCollapsedState.d.ts +1 -1
  191. package/dist/src/hooks/useFilterCollapsedState.js.map +1 -1
  192. package/dist/src/hooks/useFilterListProps.d.ts +2 -2
  193. package/dist/src/hooks/useFilterListProps.js +7 -11
  194. package/dist/src/hooks/useFilterListProps.js.map +1 -1
  195. package/dist/src/hooks/useFilterRangeProps.d.ts +1 -1
  196. package/dist/src/hooks/useFilterRangeProps.js +11 -14
  197. package/dist/src/hooks/useFilterRangeProps.js.map +1 -1
  198. package/dist/src/hooks/useFilterSliderProps.d.ts +1 -1
  199. package/dist/src/hooks/useFilterSliderProps.js +10 -9
  200. package/dist/src/hooks/useFilterSliderProps.js.map +1 -1
  201. package/dist/src/hooks/useFilters.d.ts +1 -1
  202. package/dist/src/hooks/useFilters.js +4 -7
  203. package/dist/src/hooks/useFilters.js.map +1 -1
  204. package/dist/src/hooks/useIndices.js +2 -2
  205. package/dist/src/hooks/useIndices.js.map +1 -1
  206. package/dist/src/hooks/usePagination.d.ts +1 -1
  207. package/dist/src/hooks/usePagination.js +6 -14
  208. package/dist/src/hooks/usePagination.js.map +1 -1
  209. package/dist/src/hooks/usePaginationLoadable.d.ts +1 -1
  210. package/dist/src/hooks/usePaginationLoadable.js +3 -5
  211. package/dist/src/hooks/usePaginationLoadable.js.map +1 -1
  212. package/dist/src/hooks/useProductPrice.d.ts +1 -1
  213. package/dist/src/hooks/useProductPrice.js +3 -1
  214. package/dist/src/hooks/useProductPrice.js.map +1 -1
  215. package/dist/src/hooks/useReactifySearchContext.d.ts +1 -1
  216. package/dist/src/hooks/useReactifySearchContext.js.map +1 -1
  217. package/dist/src/hooks/useResults.d.ts +1 -1
  218. package/dist/src/hooks/useResults.js +4 -4
  219. package/dist/src/hooks/useResults.js.map +1 -1
  220. package/dist/src/hooks/useSearch.d.ts +1 -1
  221. package/dist/src/hooks/useSearch.js +8 -9
  222. package/dist/src/hooks/useSearch.js.map +1 -1
  223. package/dist/src/hooks/useSortBy.d.ts +1 -1
  224. package/dist/src/hooks/useSortBy.js +1 -1
  225. package/dist/src/hooks/useSortBy.js.map +1 -1
  226. package/dist/src/index.js.map +1 -1
  227. package/dist/src/search-request-builder/base-builders.d.ts +18 -0
  228. package/dist/src/search-request-builder/base-builders.js +184 -0
  229. package/dist/src/search-request-builder/base-builders.js.map +1 -0
  230. package/dist/src/search-request-builder/curation-builders.d.ts +2 -0
  231. package/dist/src/search-request-builder/curation-builders.js +44 -0
  232. package/dist/src/search-request-builder/curation-builders.js.map +1 -0
  233. package/dist/src/search-request-builder/index.d.ts +3 -0
  234. package/dist/src/search-request-builder/index.js +12 -0
  235. package/dist/src/search-request-builder/index.js.map +1 -0
  236. package/dist/src/search-request-builder/search-request-builder.d.ts +3 -0
  237. package/dist/src/search-request-builder/search-request-builder.js +54 -0
  238. package/dist/src/search-request-builder/search-request-builder.js.map +1 -0
  239. package/dist/src/search-request-builder/types.d.ts +105 -0
  240. package/dist/src/search-request-builder/types.js +30 -0
  241. package/dist/src/search-request-builder/types.js.map +1 -0
  242. package/dist/src/search-request-builder/utils.d.ts +27 -0
  243. package/dist/src/search-request-builder/utils.js +144 -0
  244. package/dist/src/search-request-builder/utils.js.map +1 -0
  245. package/dist/src/types/config.d.ts +1 -1
  246. package/dist/src/types/config.js.map +1 -1
  247. package/dist/src/types/elastic.d.ts +8 -11
  248. package/dist/src/types/elastic.js.map +1 -1
  249. package/dist/src/types/firestore.d.ts +5 -5
  250. package/dist/src/types/firestore.js.map +1 -1
  251. package/dist/src/types/index.js.map +1 -1
  252. package/dist/src/types/reactivesearch.d.ts +1 -1
  253. package/dist/src/types/reactivesearch.js.map +1 -1
  254. package/dist/src/types/shopify.d.ts +1 -1
  255. package/dist/src/types/shopify.js.map +1 -1
  256. package/dist/src/utility/config.d.ts +1 -1
  257. package/dist/src/utility/config.js +1 -1
  258. package/dist/src/utility/config.js.map +1 -1
  259. package/dist/src/utility/curation.d.ts +2 -2
  260. package/dist/src/utility/curation.js +1 -1
  261. package/dist/src/utility/curation.js.map +1 -1
  262. package/dist/src/utility/debug.js +1 -1
  263. package/dist/src/utility/debug.js.map +1 -1
  264. package/dist/src/utility/filters.d.ts +2 -2
  265. package/dist/src/utility/filters.js.map +1 -1
  266. package/dist/src/utility/liquid.d.ts +2 -2
  267. package/dist/src/utility/liquid.js +2 -5
  268. package/dist/src/utility/liquid.js.map +1 -1
  269. package/dist/src/utility/props.d.ts +7 -226
  270. package/dist/src/utility/props.js +61 -108
  271. package/dist/src/utility/props.js.map +1 -1
  272. package/dist/src/utility/server.d.ts +1 -1
  273. package/dist/src/utility/server.js +3 -3
  274. package/dist/src/utility/server.js.map +1 -1
  275. package/dist/src/utility/sortOption.d.ts +2 -2
  276. package/dist/src/utility/sortOption.js.map +1 -1
  277. package/package.json +7 -5
  278. package/dist/src/components/Sensor/SensorCollectionWeighted.d.ts +0 -1
  279. package/dist/src/components/Sensor/SensorCollectionWeighted.js +0 -21
  280. package/dist/src/components/Sensor/SensorCollectionWeighted.js.map +0 -1
  281. package/dist/src/components/Sensor/SensorSearchWeighted.d.ts +0 -1
  282. package/dist/src/components/Sensor/SensorSearchWeighted.js +0 -22
  283. package/dist/src/components/Sensor/SensorSearchWeighted.js.map +0 -1
  284. package/dist/src/utility/queries.d.ts +0 -393
  285. package/dist/src/utility/queries.js +0 -197
  286. package/dist/src/utility/queries.js.map +0 -1
@@ -1,197 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateCollectionFunctionScore = exports.generateSearchFunctionScore = exports.generateQueryCollectionWeighted = exports.generateQuerySearchWeighted = void 0;
4
- const firestore_1 = require("../types/firestore");
5
- const generateQuerySearchWeighted = (options) => {
6
- var _a, _b;
7
- return (0, exports.generateSearchFunctionScore)({
8
- searchTerm: (_a = options.curation.searchTerm) !== null && _a !== void 0 ? _a : "",
9
- searchableFields: options.searchableFields,
10
- boostingRules: (_b = options.curation.boostings) !== null && _b !== void 0 ? _b : [],
11
- markets: options.curation.markets,
12
- market: options.market,
13
- });
14
- };
15
- exports.generateQuerySearchWeighted = generateQuerySearchWeighted;
16
- const generateQueryCollectionWeighted = (options) => {
17
- var _a, _b;
18
- const collectionFunctionScore = (0, exports.generateCollectionFunctionScore)({
19
- collectionHandle: (_a = options.curation.collectionHandle) !== null && _a !== void 0 ? _a : "",
20
- boostingRules: (_b = options.curation.boostings) !== null && _b !== void 0 ? _b : [],
21
- markets: options.curation.markets,
22
- market: options.market,
23
- });
24
- return { function_score: collectionFunctionScore };
25
- };
26
- exports.generateQueryCollectionWeighted = generateQueryCollectionWeighted;
27
- const generateMarketsClause = (markets) => {
28
- if (!markets.length)
29
- return null;
30
- return { terms: { markets: markets } };
31
- };
32
- const generateQueryField = (options) => {
33
- if (!options.market) {
34
- if (options.fieldName === "price")
35
- return "price_min";
36
- return options.fieldName;
37
- }
38
- if (options.fieldName === "price") {
39
- return `price_min_market_${options.market}`;
40
- }
41
- if (options.fieldName === "price_min") {
42
- return `price_min_market_${options.market}`;
43
- }
44
- if (options.fieldName === "price_max") {
45
- return `price_max_market_${options.market}`;
46
- }
47
- if (options.fieldName === "inventory_total") {
48
- return `inventory_quantity_market_${options.market}`;
49
- }
50
- return options.fieldName;
51
- };
52
- const generateBoostingRule = (options) => {
53
- const fieldName = generateQueryField({
54
- fieldName: options.boostingRule.fieldName,
55
- market: options.market,
56
- });
57
- if (options.boostingRule.operation === firestore_1.Operation.Contains) {
58
- return {
59
- filter: { wildcard: { [fieldName]: `*${options.boostingRule.value}*` } },
60
- weight: options.boostingRule.points,
61
- };
62
- }
63
- if (options.boostingRule.operation === firestore_1.Operation.NotContains) {
64
- return {
65
- filter: {
66
- bool: { must_not: { wildcard: { [fieldName]: `*${options.boostingRule.value}*` } } },
67
- },
68
- weight: options.boostingRule.points,
69
- };
70
- }
71
- if (options.boostingRule.operation === firestore_1.Operation.Equals) {
72
- return {
73
- filter: { term: { [fieldName]: options.boostingRule.value } },
74
- weight: options.boostingRule.points,
75
- };
76
- }
77
- if (options.boostingRule.operation === firestore_1.Operation.GreaterThan) {
78
- return {
79
- filter: { range: { [fieldName]: { gt: parseFloat(options.boostingRule.value) } } },
80
- weight: options.boostingRule.points,
81
- };
82
- }
83
- if (options.boostingRule.operation === firestore_1.Operation.LessThan) {
84
- return {
85
- filter: { range: { [fieldName]: { lt: parseFloat(options.boostingRule.value) } } },
86
- weight: options.boostingRule.points,
87
- };
88
- }
89
- throw new Error(`Unable to process rule`);
90
- };
91
- const generateBoostingRules = (options) => {
92
- return options.boostingRules
93
- .map((boostingRule) => generateBoostingRule({ boostingRule: boostingRule, market: options.market }))
94
- .filter(Boolean);
95
- };
96
- const generateSearchFunctionScore = (options) => {
97
- var _a, _b;
98
- const searchTerms = (_b = (_a = options.searchTerm) === null || _a === void 0 ? void 0 : _a.split(" ")) !== null && _b !== void 0 ? _b : [];
99
- const searchQueries = [];
100
- for (const searchableField of options.searchableFields) {
101
- const baseField = searchableField.field;
102
- const maxEdits = searchableField.allowedMistakes;
103
- for (const searchTerm of searchTerms) {
104
- searchQueries.push({
105
- match: { [baseField]: { query: searchTerm, fuzziness: maxEdits, analyzer: "regular_analyzer" } },
106
- });
107
- if (searchableField.synyonymEnabled) {
108
- searchQueries.push({
109
- match: { [baseField]: { query: searchTerm, fuzziness: maxEdits, analyzer: "synonym_analyzer" } },
110
- });
111
- }
112
- }
113
- }
114
- const searchScores = [];
115
- for (const field of options.searchableFields) {
116
- const baseField = field.field;
117
- const maxPoints = field.points;
118
- const maxEdits = field.allowedMistakes;
119
- for (let edits = 0; edits <= maxEdits; edits++) {
120
- // The total points (e.g. 1000) minus the total mistakes (e.g. 3) multiplied by the mistakes multiplier (e.g. 10% of 1000) = 1000 - (3 * (1000 / 10)) = 700;
121
- const weightMaxEdits = Math.max(maxPoints - maxEdits * (maxPoints / (100 / field.mistakePenaltyPercent)), 0);
122
- // The total points (e.g. 1000) divided by the mistakes multiplier (e.g. 10%) = 1000 / 100 = 100;
123
- const weightSomeEdits = maxPoints / (100 / field.mistakePenaltyPercent);
124
- // Which weight to use, weightMaxEdits should be used once and weightSomeEdits every other time
125
- const weightBase = edits === maxEdits ? weightMaxEdits : weightSomeEdits;
126
- for (const searchTerm of searchTerms) {
127
- // Regular match
128
- searchScores.push({
129
- filter: {
130
- match: {
131
- [baseField]: { query: searchTerm, fuzziness: edits, analyzer: "regular_analyzer" },
132
- },
133
- },
134
- weight: weightBase,
135
- });
136
- // Synonym match _and not_ regular match
137
- if (field.synyonymEnabled && field.synonymPenaltyPercent > 0) {
138
- // The weightBase (e.g. weightMaxEdits 700 or weightSomeEdits 100) multiplied by the synonyms multiplier as a percentage of the whole points (e.g. input 5% = output 95%) = 700 * (95%)
139
- const weightSynonyms = weightBase * (1 - field.synonymPenaltyPercent / 100);
140
- searchScores.push({
141
- filter: {
142
- bool: {
143
- must_not: {
144
- match: { [baseField]: { query: searchTerm, fuzziness: edits, analyzer: "regular_analyzer" } },
145
- },
146
- must: {
147
- match: { [baseField]: { query: searchTerm, fuzziness: edits, analyzer: "synonym_analyzer" } },
148
- },
149
- },
150
- },
151
- weight: weightSynonyms,
152
- });
153
- }
154
- }
155
- }
156
- }
157
- return {
158
- query: {
159
- bool: Object.assign(Object.assign({}, generateMarketsClause(options.markets)), { should: [...searchQueries] }),
160
- },
161
- functions: [
162
- ...searchScores,
163
- ...generateBoostingRules({ boostingRules: options.boostingRules, market: options.market }),
164
- ],
165
- score_mode: "sum",
166
- boost_mode: "replace",
167
- };
168
- };
169
- exports.generateSearchFunctionScore = generateSearchFunctionScore;
170
- const generateCollectionFunctionScore = (options) => {
171
- const mustClauses = [
172
- {
173
- nested: {
174
- path: "collections",
175
- query: {
176
- term: { ["collections.handle"]: options.collectionHandle },
177
- },
178
- },
179
- },
180
- ];
181
- const marketClause = generateMarketsClause(options.markets);
182
- if (marketClause)
183
- mustClauses.push(marketClause);
184
- return {
185
- query: {
186
- bool: { must: mustClauses },
187
- },
188
- functions: generateBoostingRules({
189
- boostingRules: options.boostingRules,
190
- market: options.market,
191
- }),
192
- score_mode: "sum",
193
- boost_mode: "replace",
194
- };
195
- };
196
- exports.generateCollectionFunctionScore = generateCollectionFunctionScore;
197
- //# sourceMappingURL=queries.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/utility/queries.ts"],"names":[],"mappings":"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","sourcesContent":["import { Boosting, Curation, CurationType, Operation, SearchableField } from \"../types/firestore\";\n\nexport const generateQuerySearchWeighted = (options: {\n curation: Curation & { type: CurationType.Search };\n searchableFields: SearchableField[];\n market?: string;\n}) => {\n return generateSearchFunctionScore({\n searchTerm: options.curation.searchTerm ?? \"\",\n searchableFields: options.searchableFields,\n boostingRules: options.curation.boostings ?? [],\n markets: options.curation.markets,\n market: options.market,\n });\n};\n\nexport const generateQueryCollectionWeighted = (options: {\n curation: Curation & { type: CurationType.Collection };\n market?: string;\n}) => {\n const collectionFunctionScore = generateCollectionFunctionScore({\n collectionHandle: options.curation.collectionHandle ?? \"\",\n boostingRules: options.curation.boostings ?? [],\n markets: options.curation.markets,\n market: options.market,\n });\n return { function_score: collectionFunctionScore };\n};\n\nconst generateMarketsClause = (markets: string[]) => {\n if (!markets.length) return null;\n return { terms: { markets: markets } };\n};\n\nconst generateQueryField = (options: { fieldName: string; market?: string }) => {\n if (!options.market) {\n if (options.fieldName === \"price\") return \"price_min\";\n return options.fieldName;\n }\n\n if (options.fieldName === \"price\") {\n return `price_min_market_${options.market}`;\n }\n if (options.fieldName === \"price_min\") {\n return `price_min_market_${options.market}`;\n }\n if (options.fieldName === \"price_max\") {\n return `price_max_market_${options.market}`;\n }\n if (options.fieldName === \"inventory_total\") {\n return `inventory_quantity_market_${options.market}`;\n }\n\n return options.fieldName;\n};\n\nconst generateBoostingRule = (options: { boostingRule: Boosting; market?: string }) => {\n const fieldName = generateQueryField({\n fieldName: options.boostingRule.fieldName,\n market: options.market,\n });\n\n if (options.boostingRule.operation === Operation.Contains) {\n return {\n filter: { wildcard: { [fieldName]: `*${options.boostingRule.value}*` } },\n weight: options.boostingRule.points,\n };\n }\n if (options.boostingRule.operation === Operation.NotContains) {\n return {\n filter: {\n bool: { must_not: { wildcard: { [fieldName]: `*${options.boostingRule.value}*` } } },\n },\n weight: options.boostingRule.points,\n };\n }\n if (options.boostingRule.operation === Operation.Equals) {\n return {\n filter: { term: { [fieldName]: options.boostingRule.value } },\n weight: options.boostingRule.points,\n };\n }\n if (options.boostingRule.operation === Operation.GreaterThan) {\n return {\n filter: { range: { [fieldName]: { gt: parseFloat(options.boostingRule.value) } } },\n weight: options.boostingRule.points,\n };\n }\n if (options.boostingRule.operation === Operation.LessThan) {\n return {\n filter: { range: { [fieldName]: { lt: parseFloat(options.boostingRule.value) } } },\n weight: options.boostingRule.points,\n };\n }\n throw new Error(`Unable to process rule`);\n};\n\nconst generateBoostingRules = (options: { boostingRules: Boosting[]; market?: string }) => {\n return options.boostingRules\n .map((boostingRule) => generateBoostingRule({ boostingRule: boostingRule, market: options.market }))\n .filter(Boolean);\n};\n\nexport const generateSearchFunctionScore = (options: {\n searchTerm: string;\n searchableFields: SearchableField[];\n boostingRules: Boosting[];\n markets: string[];\n market?: string;\n}) => {\n const searchTerms = options.searchTerm?.split(\" \") ?? [];\n\n const searchQueries = [];\n for (const searchableField of options.searchableFields) {\n const baseField = searchableField.field;\n const maxEdits = searchableField.allowedMistakes;\n for (const searchTerm of searchTerms) {\n searchQueries.push({\n match: { [baseField]: { query: searchTerm, fuzziness: maxEdits, analyzer: \"regular_analyzer\" } },\n });\n if (searchableField.synyonymEnabled) {\n searchQueries.push({\n match: { [baseField]: { query: searchTerm, fuzziness: maxEdits, analyzer: \"synonym_analyzer\" } },\n });\n }\n }\n }\n\n const searchScores = [];\n for (const field of options.searchableFields) {\n const baseField = field.field;\n const maxPoints = field.points;\n const maxEdits = field.allowedMistakes;\n\n for (let edits = 0; edits <= maxEdits; edits++) {\n // The total points (e.g. 1000) minus the total mistakes (e.g. 3) multiplied by the mistakes multiplier (e.g. 10% of 1000) = 1000 - (3 * (1000 / 10)) = 700;\n const weightMaxEdits = Math.max(maxPoints - maxEdits * (maxPoints / (100 / field.mistakePenaltyPercent)), 0);\n // The total points (e.g. 1000) divided by the mistakes multiplier (e.g. 10%) = 1000 / 100 = 100;\n const weightSomeEdits = maxPoints / (100 / field.mistakePenaltyPercent);\n // Which weight to use, weightMaxEdits should be used once and weightSomeEdits every other time\n const weightBase = edits === maxEdits ? weightMaxEdits : weightSomeEdits;\n\n for (const searchTerm of searchTerms) {\n // Regular match\n searchScores.push({\n filter: {\n match: {\n [baseField]: { query: searchTerm, fuzziness: edits, analyzer: \"regular_analyzer\" },\n },\n },\n weight: weightBase,\n });\n\n // Synonym match _and not_ regular match\n if (field.synyonymEnabled && field.synonymPenaltyPercent > 0) {\n // The weightBase (e.g. weightMaxEdits 700 or weightSomeEdits 100) multiplied by the synonyms multiplier as a percentage of the whole points (e.g. input 5% = output 95%) = 700 * (95%)\n const weightSynonyms = weightBase * (1 - field.synonymPenaltyPercent / 100);\n\n searchScores.push({\n filter: {\n bool: {\n must_not: {\n match: { [baseField]: { query: searchTerm, fuzziness: edits, analyzer: \"regular_analyzer\" } },\n },\n must: {\n match: { [baseField]: { query: searchTerm, fuzziness: edits, analyzer: \"synonym_analyzer\" } },\n },\n },\n },\n weight: weightSynonyms,\n });\n }\n }\n }\n }\n return {\n query: {\n bool: { ...generateMarketsClause(options.markets), should: [...searchQueries] },\n },\n functions: [\n ...searchScores,\n ...generateBoostingRules({ boostingRules: options.boostingRules, market: options.market }),\n ],\n score_mode: \"sum\",\n boost_mode: \"replace\",\n };\n};\n\nexport const generateCollectionFunctionScore = (options: {\n collectionHandle: string;\n boostingRules: Boosting[];\n markets: string[];\n market?: string;\n}) => {\n const mustClauses: Record<string, any>[] = [\n {\n nested: {\n path: \"collections\",\n query: {\n term: { [\"collections.handle\"]: options.collectionHandle },\n },\n },\n },\n ];\n\n const marketClause = generateMarketsClause(options.markets);\n if (marketClause) mustClauses.push(marketClause);\n\n return {\n query: {\n bool: { must: mustClauses },\n },\n functions: generateBoostingRules({\n boostingRules: options.boostingRules,\n market: options.market,\n }),\n score_mode: \"sum\",\n boost_mode: \"replace\",\n };\n};\n"]}