@usereactify/search 5.59.1-beta.0 → 5.60.0-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 +6 -2
  2. package/dist/package.json +5 -7
  3. package/dist/src/components/ClearAll/ClearAll.d.ts +1 -1
  4. package/dist/src/components/ClearAll/ClearAll.js +9 -4
  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 +5 -2
  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 +7 -3
  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 +66 -31
  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 +12 -2
  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 +18 -11
  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 +8 -3
  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 +24 -3
  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 +10 -3
  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 +8 -3
  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 +1 -2
  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 +47 -14
  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 +6 -2
  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 +6 -2
  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 +6 -2
  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 +4 -2
  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 +12 -2
  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 +5 -2
  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 +5 -2
  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 +7 -2
  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 +20 -6
  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 +10 -7
  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 +5 -2
  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 +8 -2
  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 +7 -2
  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 +35 -30
  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 +6 -3
  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 +9 -4
  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 +8 -20
  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 +2 -3
  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 +3 -4
  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 +6 -3
  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 +6 -3
  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 +6 -3
  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 +6 -3
  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 +52 -50
  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 +6 -3
  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/SensorCollectionWeighted.d.ts +1 -0
  134. package/dist/src/components/Sensor/SensorCollectionWeighted.js +21 -0
  135. package/dist/src/components/Sensor/SensorCollectionWeighted.js.map +1 -0
  136. package/dist/src/components/Sensor/SensorCustom.d.ts +2 -1
  137. package/dist/src/components/Sensor/SensorCustom.js +6 -5
  138. package/dist/src/components/Sensor/SensorCustom.js.map +1 -1
  139. package/dist/src/components/Sensor/SensorExplain.js +2 -2
  140. package/dist/src/components/Sensor/SensorExplain.js.map +1 -1
  141. package/dist/src/components/Sensor/SensorInventoryAvailable.d.ts +1 -1
  142. package/dist/src/components/Sensor/SensorInventoryAvailable.js +2 -2
  143. package/dist/src/components/Sensor/SensorInventoryAvailable.js.map +1 -1
  144. package/dist/src/components/Sensor/SensorPublished.d.ts +1 -1
  145. package/dist/src/components/Sensor/SensorPublished.js +2 -2
  146. package/dist/src/components/Sensor/SensorPublished.js.map +1 -1
  147. package/dist/src/components/Sensor/SensorSearchTerm.d.ts +2 -1
  148. package/dist/src/components/Sensor/SensorSearchTerm.js +124 -19
  149. package/dist/src/components/Sensor/SensorSearchTerm.js.map +1 -1
  150. package/dist/src/components/Sensor/SensorSearchWeighted.d.ts +1 -0
  151. package/dist/src/components/Sensor/SensorSearchWeighted.js +22 -0
  152. package/dist/src/components/Sensor/SensorSearchWeighted.js.map +1 -0
  153. package/dist/src/components/Sensor/SensorSort.d.ts +1 -1
  154. package/dist/src/components/Sensor/SensorSort.js +2 -2
  155. package/dist/src/components/Sensor/SensorSort.js.map +1 -1
  156. package/dist/src/components/Sensor/Sensors.d.ts +3 -1
  157. package/dist/src/components/Sensor/Sensors.js +48 -14
  158. package/dist/src/components/Sensor/Sensors.js.map +1 -1
  159. package/dist/src/components/Sensor/index.d.ts +9 -7
  160. package/dist/src/components/Sensor/index.js +10 -6
  161. package/dist/src/components/Sensor/index.js.map +1 -1
  162. package/dist/src/components/SortBy/SortBy.d.ts +1 -1
  163. package/dist/src/components/SortBy/SortBy.js +6 -3
  164. package/dist/src/components/SortBy/SortBy.js.map +1 -1
  165. package/dist/src/components/Stats/Stats.d.ts +2 -2
  166. package/dist/src/components/Stats/Stats.js +5 -2
  167. package/dist/src/components/Stats/Stats.js.map +1 -1
  168. package/dist/src/components/Suggestions/Suggestions.d.ts +1 -1
  169. package/dist/src/components/Suggestions/Suggestions.js +8 -7
  170. package/dist/src/components/Suggestions/Suggestions.js.map +1 -1
  171. package/dist/src/components/Utility/UtilityAuthenticatedReactiveBase.d.ts +1 -1
  172. package/dist/src/components/Utility/UtilityAuthenticatedReactiveBase.js +3 -3
  173. package/dist/src/components/Utility/UtilityAuthenticatedReactiveBase.js.map +1 -1
  174. package/dist/src/components/Utility/index.js.map +1 -1
  175. package/dist/src/components/index.d.ts +2 -2
  176. package/dist/src/components/index.js +2 -2
  177. package/dist/src/components/index.js.map +1 -1
  178. package/dist/src/hooks/index.d.ts +11 -11
  179. package/dist/src/hooks/index.js +11 -11
  180. package/dist/src/hooks/index.js.map +1 -1
  181. package/dist/src/hooks/react-slider/useReactSliderProps.d.ts +2 -2
  182. package/dist/src/hooks/react-slider/useReactSliderProps.js +6 -6
  183. package/dist/src/hooks/react-slider/useReactSliderProps.js.map +1 -1
  184. package/dist/src/hooks/reactivesearch/useReactiveBaseProps.d.ts +1 -1
  185. package/dist/src/hooks/reactivesearch/useReactiveBaseProps.js +2 -2
  186. package/dist/src/hooks/reactivesearch/useReactiveBaseProps.js.map +1 -1
  187. package/dist/src/hooks/useAnalytics.js.map +1 -1
  188. package/dist/src/hooks/useConfig.d.ts +1 -1
  189. package/dist/src/hooks/useConfig.js +1 -1
  190. package/dist/src/hooks/useConfig.js.map +1 -1
  191. package/dist/src/hooks/useCuration.d.ts +1 -1
  192. package/dist/src/hooks/useCuration.js +25 -9
  193. package/dist/src/hooks/useCuration.js.map +1 -1
  194. package/dist/src/hooks/useDebugger.js +3 -3
  195. package/dist/src/hooks/useDebugger.js.map +1 -1
  196. package/dist/src/hooks/useFilterCollapsedState.d.ts +1 -1
  197. package/dist/src/hooks/useFilterCollapsedState.js.map +1 -1
  198. package/dist/src/hooks/useFilterListProps.d.ts +2 -2
  199. package/dist/src/hooks/useFilterListProps.js +11 -7
  200. package/dist/src/hooks/useFilterListProps.js.map +1 -1
  201. package/dist/src/hooks/useFilterRangeProps.d.ts +1 -1
  202. package/dist/src/hooks/useFilterRangeProps.js +14 -11
  203. package/dist/src/hooks/useFilterRangeProps.js.map +1 -1
  204. package/dist/src/hooks/useFilterSliderProps.d.ts +1 -1
  205. package/dist/src/hooks/useFilterSliderProps.js +9 -10
  206. package/dist/src/hooks/useFilterSliderProps.js.map +1 -1
  207. package/dist/src/hooks/useFilters.d.ts +1 -1
  208. package/dist/src/hooks/useFilters.js +7 -4
  209. package/dist/src/hooks/useFilters.js.map +1 -1
  210. package/dist/src/hooks/useIndices.js +2 -2
  211. package/dist/src/hooks/useIndices.js.map +1 -1
  212. package/dist/src/hooks/usePagination.d.ts +1 -1
  213. package/dist/src/hooks/usePagination.js +14 -6
  214. package/dist/src/hooks/usePagination.js.map +1 -1
  215. package/dist/src/hooks/usePaginationLoadable.d.ts +1 -1
  216. package/dist/src/hooks/usePaginationLoadable.js +5 -3
  217. package/dist/src/hooks/usePaginationLoadable.js.map +1 -1
  218. package/dist/src/hooks/useProductPrice.d.ts +1 -1
  219. package/dist/src/hooks/useProductPrice.js +1 -3
  220. package/dist/src/hooks/useProductPrice.js.map +1 -1
  221. package/dist/src/hooks/useReactifySearchContext.d.ts +1 -1
  222. package/dist/src/hooks/useReactifySearchContext.js.map +1 -1
  223. package/dist/src/hooks/useResults.d.ts +1 -1
  224. package/dist/src/hooks/useResults.js +4 -4
  225. package/dist/src/hooks/useResults.js.map +1 -1
  226. package/dist/src/hooks/useSearch.d.ts +1 -1
  227. package/dist/src/hooks/useSearch.js +9 -8
  228. package/dist/src/hooks/useSearch.js.map +1 -1
  229. package/dist/src/hooks/useSortBy.d.ts +1 -1
  230. package/dist/src/hooks/useSortBy.js +1 -1
  231. package/dist/src/hooks/useSortBy.js.map +1 -1
  232. package/dist/src/index.js.map +1 -1
  233. package/dist/src/types/config.d.ts +1 -1
  234. package/dist/src/types/config.js.map +1 -1
  235. package/dist/src/types/elastic.d.ts +11 -8
  236. package/dist/src/types/elastic.js.map +1 -1
  237. package/dist/src/types/firestore.d.ts +5 -5
  238. package/dist/src/types/firestore.js.map +1 -1
  239. package/dist/src/types/index.js.map +1 -1
  240. package/dist/src/types/reactivesearch.d.ts +1 -1
  241. package/dist/src/types/reactivesearch.js.map +1 -1
  242. package/dist/src/types/shopify.d.ts +1 -1
  243. package/dist/src/types/shopify.js.map +1 -1
  244. package/dist/src/utility/config.d.ts +3 -3
  245. package/dist/src/utility/config.js +9 -6
  246. package/dist/src/utility/config.js.map +1 -1
  247. package/dist/src/utility/curation.d.ts +2 -2
  248. package/dist/src/utility/curation.js +1 -1
  249. package/dist/src/utility/curation.js.map +1 -1
  250. package/dist/src/utility/debug.js +1 -1
  251. package/dist/src/utility/debug.js.map +1 -1
  252. package/dist/src/utility/filters.d.ts +2 -2
  253. package/dist/src/utility/filters.js.map +1 -1
  254. package/dist/src/utility/liquid.d.ts +2 -2
  255. package/dist/src/utility/liquid.js +5 -2
  256. package/dist/src/utility/liquid.js.map +1 -1
  257. package/dist/src/utility/props.d.ts +226 -7
  258. package/dist/src/utility/props.js +109 -62
  259. package/dist/src/utility/props.js.map +1 -1
  260. package/dist/src/utility/queries.d.ts +393 -0
  261. package/dist/src/utility/queries.js +197 -0
  262. package/dist/src/utility/queries.js.map +1 -0
  263. package/dist/src/utility/server.d.ts +1 -1
  264. package/dist/src/utility/server.js +4 -4
  265. package/dist/src/utility/server.js.map +1 -1
  266. package/dist/src/utility/sortOption.d.ts +2 -2
  267. package/dist/src/utility/sortOption.js.map +1 -1
  268. package/package.json +5 -7
  269. package/dist/src/search-request-builder/base-builders.d.ts +0 -18
  270. package/dist/src/search-request-builder/base-builders.js +0 -184
  271. package/dist/src/search-request-builder/base-builders.js.map +0 -1
  272. package/dist/src/search-request-builder/curation-builders.d.ts +0 -2
  273. package/dist/src/search-request-builder/curation-builders.js +0 -44
  274. package/dist/src/search-request-builder/curation-builders.js.map +0 -1
  275. package/dist/src/search-request-builder/index.d.ts +0 -3
  276. package/dist/src/search-request-builder/index.js +0 -12
  277. package/dist/src/search-request-builder/index.js.map +0 -1
  278. package/dist/src/search-request-builder/search-request-builder.d.ts +0 -3
  279. package/dist/src/search-request-builder/search-request-builder.js +0 -54
  280. package/dist/src/search-request-builder/search-request-builder.js.map +0 -1
  281. package/dist/src/search-request-builder/types.d.ts +0 -105
  282. package/dist/src/search-request-builder/types.js +0 -30
  283. package/dist/src/search-request-builder/types.js.map +0 -1
  284. package/dist/src/search-request-builder/utils.d.ts +0 -27
  285. package/dist/src/search-request-builder/utils.js +0 -144
  286. package/dist/src/search-request-builder/utils.js.map +0 -1
@@ -0,0 +1,393 @@
1
+ import { Boosting, Curation, CurationType, SearchableField } from "../types/firestore";
2
+ export declare const generateQuerySearchWeighted: (options: {
3
+ curation: Curation & {
4
+ type: CurationType.Search;
5
+ };
6
+ searchableFields: SearchableField[];
7
+ currentMarket?: string;
8
+ }) => {
9
+ query: {
10
+ bool: {
11
+ should: {
12
+ match: {
13
+ [x: string]: {
14
+ query: string;
15
+ fuzziness: number;
16
+ analyzer: string;
17
+ };
18
+ };
19
+ }[];
20
+ terms?: {
21
+ markets: string[];
22
+ } | undefined;
23
+ };
24
+ };
25
+ functions: ({
26
+ filter: {
27
+ wildcard: {
28
+ [x: string]: string;
29
+ };
30
+ bool?: undefined;
31
+ term?: undefined;
32
+ range?: undefined;
33
+ };
34
+ weight: number;
35
+ } | {
36
+ filter: {
37
+ bool: {
38
+ must_not: {
39
+ wildcard: {
40
+ [x: string]: string;
41
+ };
42
+ };
43
+ };
44
+ wildcard?: undefined;
45
+ term?: undefined;
46
+ range?: undefined;
47
+ };
48
+ weight: number;
49
+ } | {
50
+ filter: {
51
+ term: {
52
+ [x: string]: string;
53
+ };
54
+ wildcard?: undefined;
55
+ bool?: undefined;
56
+ range?: undefined;
57
+ };
58
+ weight: number;
59
+ } | {
60
+ filter: {
61
+ range: {
62
+ [x: string]: {
63
+ gt: number;
64
+ };
65
+ };
66
+ wildcard?: undefined;
67
+ bool?: undefined;
68
+ term?: undefined;
69
+ };
70
+ weight: number;
71
+ } | {
72
+ filter: {
73
+ range: {
74
+ [x: string]: {
75
+ lt: number;
76
+ };
77
+ };
78
+ wildcard?: undefined;
79
+ bool?: undefined;
80
+ term?: undefined;
81
+ };
82
+ weight: number;
83
+ } | {
84
+ filter: {
85
+ match: {
86
+ [x: string]: {
87
+ query: string;
88
+ fuzziness: number;
89
+ analyzer: string;
90
+ };
91
+ };
92
+ bool?: undefined;
93
+ };
94
+ weight: number;
95
+ } | {
96
+ filter: {
97
+ bool: {
98
+ must_not: {
99
+ match: {
100
+ [x: string]: {
101
+ query: string;
102
+ fuzziness: number;
103
+ analyzer: string;
104
+ };
105
+ };
106
+ };
107
+ must: {
108
+ match: {
109
+ [x: string]: {
110
+ query: string;
111
+ fuzziness: number;
112
+ analyzer: string;
113
+ };
114
+ };
115
+ };
116
+ };
117
+ match?: undefined;
118
+ };
119
+ weight: number;
120
+ })[];
121
+ score_mode: string;
122
+ boost_mode: string;
123
+ };
124
+ export declare const generateQueryCollectionWeighted: (options: {
125
+ curation: Curation & {
126
+ type: CurationType.Collection;
127
+ };
128
+ currentMarket?: string;
129
+ }) => {
130
+ function_score: {
131
+ query: {
132
+ bool: {
133
+ must: Record<string, any>[];
134
+ };
135
+ };
136
+ functions: ({
137
+ filter: {
138
+ wildcard: {
139
+ [x: string]: string;
140
+ };
141
+ bool?: undefined;
142
+ term?: undefined;
143
+ range?: undefined;
144
+ };
145
+ weight: number;
146
+ } | {
147
+ filter: {
148
+ bool: {
149
+ must_not: {
150
+ wildcard: {
151
+ [x: string]: string;
152
+ };
153
+ };
154
+ };
155
+ wildcard?: undefined;
156
+ term?: undefined;
157
+ range?: undefined;
158
+ };
159
+ weight: number;
160
+ } | {
161
+ filter: {
162
+ term: {
163
+ [x: string]: string;
164
+ };
165
+ wildcard?: undefined;
166
+ bool?: undefined;
167
+ range?: undefined;
168
+ };
169
+ weight: number;
170
+ } | {
171
+ filter: {
172
+ range: {
173
+ [x: string]: {
174
+ gt: number;
175
+ };
176
+ };
177
+ wildcard?: undefined;
178
+ bool?: undefined;
179
+ term?: undefined;
180
+ };
181
+ weight: number;
182
+ } | {
183
+ filter: {
184
+ range: {
185
+ [x: string]: {
186
+ lt: number;
187
+ };
188
+ };
189
+ wildcard?: undefined;
190
+ bool?: undefined;
191
+ term?: undefined;
192
+ };
193
+ weight: number;
194
+ })[];
195
+ score_mode: string;
196
+ boost_mode: string;
197
+ };
198
+ };
199
+ export declare const generateSearchFunctionScore: (options: {
200
+ searchTerm: string;
201
+ searchableFields: SearchableField[];
202
+ boostingRules: Boosting[];
203
+ curationMarkets: string[];
204
+ currentMarket?: string;
205
+ }) => {
206
+ query: {
207
+ bool: {
208
+ should: {
209
+ match: {
210
+ [x: string]: {
211
+ query: string;
212
+ fuzziness: number;
213
+ analyzer: string;
214
+ };
215
+ };
216
+ }[];
217
+ terms?: {
218
+ markets: string[];
219
+ } | undefined;
220
+ };
221
+ };
222
+ functions: ({
223
+ filter: {
224
+ wildcard: {
225
+ [x: string]: string;
226
+ };
227
+ bool?: undefined;
228
+ term?: undefined;
229
+ range?: undefined;
230
+ };
231
+ weight: number;
232
+ } | {
233
+ filter: {
234
+ bool: {
235
+ must_not: {
236
+ wildcard: {
237
+ [x: string]: string;
238
+ };
239
+ };
240
+ };
241
+ wildcard?: undefined;
242
+ term?: undefined;
243
+ range?: undefined;
244
+ };
245
+ weight: number;
246
+ } | {
247
+ filter: {
248
+ term: {
249
+ [x: string]: string;
250
+ };
251
+ wildcard?: undefined;
252
+ bool?: undefined;
253
+ range?: undefined;
254
+ };
255
+ weight: number;
256
+ } | {
257
+ filter: {
258
+ range: {
259
+ [x: string]: {
260
+ gt: number;
261
+ };
262
+ };
263
+ wildcard?: undefined;
264
+ bool?: undefined;
265
+ term?: undefined;
266
+ };
267
+ weight: number;
268
+ } | {
269
+ filter: {
270
+ range: {
271
+ [x: string]: {
272
+ lt: number;
273
+ };
274
+ };
275
+ wildcard?: undefined;
276
+ bool?: undefined;
277
+ term?: undefined;
278
+ };
279
+ weight: number;
280
+ } | {
281
+ filter: {
282
+ match: {
283
+ [x: string]: {
284
+ query: string;
285
+ fuzziness: number;
286
+ analyzer: string;
287
+ };
288
+ };
289
+ bool?: undefined;
290
+ };
291
+ weight: number;
292
+ } | {
293
+ filter: {
294
+ bool: {
295
+ must_not: {
296
+ match: {
297
+ [x: string]: {
298
+ query: string;
299
+ fuzziness: number;
300
+ analyzer: string;
301
+ };
302
+ };
303
+ };
304
+ must: {
305
+ match: {
306
+ [x: string]: {
307
+ query: string;
308
+ fuzziness: number;
309
+ analyzer: string;
310
+ };
311
+ };
312
+ };
313
+ };
314
+ match?: undefined;
315
+ };
316
+ weight: number;
317
+ })[];
318
+ score_mode: string;
319
+ boost_mode: string;
320
+ };
321
+ export declare const generateCollectionFunctionScore: (options: {
322
+ collectionHandle: string;
323
+ boostingRules: Boosting[];
324
+ curationMarkets: string[];
325
+ currentMarket?: string;
326
+ }) => {
327
+ query: {
328
+ bool: {
329
+ must: Record<string, any>[];
330
+ };
331
+ };
332
+ functions: ({
333
+ filter: {
334
+ wildcard: {
335
+ [x: string]: string;
336
+ };
337
+ bool?: undefined;
338
+ term?: undefined;
339
+ range?: undefined;
340
+ };
341
+ weight: number;
342
+ } | {
343
+ filter: {
344
+ bool: {
345
+ must_not: {
346
+ wildcard: {
347
+ [x: string]: string;
348
+ };
349
+ };
350
+ };
351
+ wildcard?: undefined;
352
+ term?: undefined;
353
+ range?: undefined;
354
+ };
355
+ weight: number;
356
+ } | {
357
+ filter: {
358
+ term: {
359
+ [x: string]: string;
360
+ };
361
+ wildcard?: undefined;
362
+ bool?: undefined;
363
+ range?: undefined;
364
+ };
365
+ weight: number;
366
+ } | {
367
+ filter: {
368
+ range: {
369
+ [x: string]: {
370
+ gt: number;
371
+ };
372
+ };
373
+ wildcard?: undefined;
374
+ bool?: undefined;
375
+ term?: undefined;
376
+ };
377
+ weight: number;
378
+ } | {
379
+ filter: {
380
+ range: {
381
+ [x: string]: {
382
+ lt: number;
383
+ };
384
+ };
385
+ wildcard?: undefined;
386
+ bool?: undefined;
387
+ term?: undefined;
388
+ };
389
+ weight: number;
390
+ })[];
391
+ score_mode: string;
392
+ boost_mode: string;
393
+ };
@@ -0,0 +1,197 @@
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
+ curationMarkets: options.curation.markets,
12
+ currentMarket: options.currentMarket,
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
+ curationMarkets: options.curation.markets,
22
+ currentMarket: options.currentMarket,
23
+ });
24
+ return { function_score: collectionFunctionScore };
25
+ };
26
+ exports.generateQueryCollectionWeighted = generateQueryCollectionWeighted;
27
+ const generateMarketsClause = (curationMarkets) => {
28
+ if (!curationMarkets.length)
29
+ return null;
30
+ return { terms: { markets: curationMarkets } };
31
+ };
32
+ const generateQueryField = (options) => {
33
+ if (!options.currentMarket) {
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.currentMarket}`;
40
+ }
41
+ if (options.fieldName === "price_min") {
42
+ return `price_min_market_${options.currentMarket}`;
43
+ }
44
+ if (options.fieldName === "price_max") {
45
+ return `price_max_market_${options.currentMarket}`;
46
+ }
47
+ if (options.fieldName === "inventory_total") {
48
+ return `inventory_quantity_market_${options.currentMarket}`;
49
+ }
50
+ return options.fieldName;
51
+ };
52
+ const generateBoostingRule = (options) => {
53
+ const fieldName = generateQueryField({
54
+ fieldName: options.boostingRule.fieldName,
55
+ currentMarket: options.currentMarket,
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, currentMarket: options.currentMarket }))
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.curationMarkets)), { should: [...searchQueries] }),
160
+ },
161
+ functions: [
162
+ ...searchScores,
163
+ ...generateBoostingRules({ boostingRules: options.boostingRules, currentMarket: options.currentMarket }),
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.curationMarkets);
182
+ if (marketClause)
183
+ mustClauses.push(marketClause);
184
+ return {
185
+ query: {
186
+ bool: { must: mustClauses },
187
+ },
188
+ functions: generateBoostingRules({
189
+ boostingRules: options.boostingRules,
190
+ currentMarket: options.currentMarket,
191
+ }),
192
+ score_mode: "sum",
193
+ boost_mode: "replace",
194
+ };
195
+ };
196
+ exports.generateCollectionFunctionScore = generateCollectionFunctionScore;
197
+ //# sourceMappingURL=queries.js.map
@@ -0,0 +1 @@
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 currentMarket?: string;\n}) => {\n return generateSearchFunctionScore({\n searchTerm: options.curation.searchTerm ?? \"\",\n searchableFields: options.searchableFields,\n boostingRules: options.curation.boostings ?? [],\n curationMarkets: options.curation.markets,\n currentMarket: options.currentMarket,\n });\n};\n\nexport const generateQueryCollectionWeighted = (options: {\n curation: Curation & { type: CurationType.Collection };\n currentMarket?: string;\n}) => {\n const collectionFunctionScore = generateCollectionFunctionScore({\n collectionHandle: options.curation.collectionHandle ?? \"\",\n boostingRules: options.curation.boostings ?? [],\n curationMarkets: options.curation.markets,\n currentMarket: options.currentMarket,\n });\n return { function_score: collectionFunctionScore };\n};\n\nconst generateMarketsClause = (curationMarkets: string[]) => {\n if (!curationMarkets.length) return null;\n return { terms: { markets: curationMarkets } };\n};\n\nconst generateQueryField = (options: { fieldName: string; currentMarket?: string }) => {\n if (!options.currentMarket) {\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.currentMarket}`;\n }\n if (options.fieldName === \"price_min\") {\n return `price_min_market_${options.currentMarket}`;\n }\n if (options.fieldName === \"price_max\") {\n return `price_max_market_${options.currentMarket}`;\n }\n if (options.fieldName === \"inventory_total\") {\n return `inventory_quantity_market_${options.currentMarket}`;\n }\n\n return options.fieldName;\n};\n\nconst generateBoostingRule = (options: { boostingRule: Boosting; currentMarket?: string }) => {\n const fieldName = generateQueryField({\n fieldName: options.boostingRule.fieldName,\n currentMarket: options.currentMarket,\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[]; currentMarket?: string }) => {\n return options.boostingRules\n .map((boostingRule) => generateBoostingRule({ boostingRule: boostingRule, currentMarket: options.currentMarket }))\n .filter(Boolean);\n};\n\nexport const generateSearchFunctionScore = (options: {\n searchTerm: string;\n searchableFields: SearchableField[];\n boostingRules: Boosting[];\n curationMarkets: string[];\n currentMarket?: 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.curationMarkets), should: [...searchQueries] },\n },\n functions: [\n ...searchScores,\n ...generateBoostingRules({ boostingRules: options.boostingRules, currentMarket: options.currentMarket }),\n ],\n score_mode: \"sum\",\n boost_mode: \"replace\",\n };\n};\n\nexport const generateCollectionFunctionScore = (options: {\n collectionHandle: string;\n boostingRules: Boosting[];\n curationMarkets: string[];\n currentMarket?: 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.curationMarkets);\n if (marketClause) mustClauses.push(marketClause);\n\n return {\n query: {\n bool: { must: mustClauses },\n },\n functions: generateBoostingRules({\n boostingRules: options.boostingRules,\n currentMarket: options.currentMarket,\n }),\n score_mode: \"sum\",\n boost_mode: \"replace\",\n };\n};\n"]}
@@ -1,4 +1,4 @@
1
- import type { ReactifySearchProviderProps } from "../components";
1
+ import { ReactifySearchProviderProps } from "../components";
2
2
  export declare const generateProviderProps: (options: ReactifySearchProviderProps & {
3
3
  query: Record<string, string>;
4
4
  }) => Promise<ReactifySearchProviderProps>;
@@ -16,13 +16,13 @@ exports.generateProviderProps = void 0;
16
16
  // @ts-expect-error missing types
17
17
  const server_1 = __importDefault(require("@usereactify/search-internals/lib/server"));
18
18
  const config_1 = require("./config");
19
- const filters_1 = require("./filters");
20
19
  const props_1 = require("./props");
20
+ const filters_1 = require("./filters");
21
21
  const generateProviderProps = (options) => __awaiter(void 0, void 0, void 0, function* () {
22
- const config = yield (0, config_1.getConfig)(options.shopifyPermanentDomain);
22
+ const config = yield (0, config_1.getConfig)(options.shopifyPermanentDomain, options.configBaseUrl);
23
23
  const filterStack = (0, filters_1.getFilterStack)({
24
24
  provider: options,
25
- config: config,
25
+ config: config
26
26
  });
27
27
  const props = (0, props_1.getPropsFilterGroup)({
28
28
  provider: options,
@@ -36,7 +36,7 @@ const generateProviderProps = (options) => __awaiter(void 0, void 0, void 0, fun
36
36
  config: config,
37
37
  provider: options,
38
38
  query: options.query,
39
- })),
39
+ }))
40
40
  } });
41
41
  });
42
42
  exports.generateProviderProps = generateProviderProps;
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/utility/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iCAAiC;AACjC,sFAA0E;AAC1E,qCAAqC;AACrC,uCAA2C;AAC3C,mCAA4D;AAGrD,MAAM,qBAAqB,GAAG,CACnC,OAAwE,EAClC,EAAE;IACxC,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAS,EAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAE/D,MAAM,WAAW,GAAG,IAAA,wBAAc,EAAC;QACjC,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,MAAM;KACf,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,IAAA,2BAAmB,EAAC;QAChC,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,WAAW;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;IAEH,uCACK,OAAO,KACV,OAAO,EAAE;YACP,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,MAAM,IAAA,gBAAkB,EAC7B,KAAK,EACL,OAAO,CAAC,KAAK,EACb,IAAA,oBAAY,EAAC;gBACX,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB,CAAC,CACH;SACF,IACD;AACJ,CAAC,CAAA,CAAC;AAhCW,QAAA,qBAAqB,yBAgChC","sourcesContent":["// @ts-expect-error missing types\nimport initReactivesearch from \"@usereactify/search-internals/lib/server\";\nimport { getConfig } from \"./config\";\nimport { getFilterStack } from \"./filters\";\nimport { getPropsBase, getPropsFilterGroup } from \"./props\";\nimport type { ReactifySearchProviderProps } from \"../components\";\n\nexport const generateProviderProps = async (\n options: ReactifySearchProviderProps & { query: Record<string, string> }\n): Promise<ReactifySearchProviderProps> => {\n const config = await getConfig(options.shopifyPermanentDomain);\n\n const filterStack = getFilterStack({\n provider: options,\n config: config,\n });\n\n const props = getPropsFilterGroup({\n provider: options,\n config: config,\n filterGroup: filterStack,\n query: options.query,\n });\n\n return {\n ...options,\n preload: {\n config: config,\n state: await initReactivesearch(\n props,\n options.query,\n getPropsBase({\n config: config,\n provider: options,\n query: options.query,\n })\n ),\n },\n };\n};\n"]}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/utility/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iCAAiC;AACjC,sFAA0E;AAE1E,qCAAqC;AACrC,mCAA4D;AAE5D,uCAA2C;AAEpC,MAAM,qBAAqB,GAAG,CAAO,OAAwE,EAAwC,EAAE;IAC5J,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAS,EAAC,OAAO,CAAC,sBAAsB,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAEtF,MAAM,WAAW,GAAG,IAAA,wBAAc,EAAC;QACjC,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,MAAM;KACf,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,IAAA,2BAAmB,EAAC;QAChC,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,WAAW;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;IAEH,uCACK,OAAO,KACV,OAAO,EAAE;YACP,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,MAAM,IAAA,gBAAkB,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAA,oBAAY,EAAC;gBACjE,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB,CAAC,CAAC;SACJ,IACF;AACH,CAAC,CAAA,CAAA;AA1BY,QAAA,qBAAqB,yBA0BjC","sourcesContent":["// @ts-expect-error missing types\nimport initReactivesearch from \"@usereactify/search-internals/lib/server\";\n\nimport { getConfig } from \"./config\";\nimport { getPropsBase, getPropsFilterGroup } from \"./props\";\nimport { ReactifySearchProviderProps } from \"../components\";\nimport { getFilterStack } from \"./filters\";\n\nexport const generateProviderProps = async (options: ReactifySearchProviderProps & { query: Record<string, string> }): Promise<ReactifySearchProviderProps> => {\n const config = await getConfig(options.shopifyPermanentDomain, options.configBaseUrl);\n\n const filterStack = getFilterStack({\n provider: options,\n config: config\n });\n\n const props = getPropsFilterGroup({\n provider: options,\n config: config,\n filterGroup: filterStack,\n query: options.query,\n });\n\n return {\n ...options,\n preload: {\n config: config,\n state: await initReactivesearch(props, options.query, getPropsBase({\n config: config,\n provider: options,\n query: options.query,\n }))\n }\n }\n}"]}
@@ -1,5 +1,5 @@
1
- import type { ReactifySearchProviderProps } from "../components";
2
- import type { Config, ConfigCuration, ConfigSort } from "../types";
1
+ import { ReactifySearchProviderProps } from "../components";
2
+ import { Config, ConfigCuration, ConfigSort } from "../types";
3
3
  export declare const getSortOptions: (options: {
4
4
  provider: ReactifySearchProviderProps;
5
5
  config: Config;