@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
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/search-request-builder/types.ts"],"names":[],"mappings":";;;AAwIA,0CAEC;AAED,kDAIC;AAED,4CAEC;AAED,oDAEC;AAxJD,kDAQ4B;AAEf,QAAA,qBAAqB,GAAG;IACnC,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;CACZ,CAAC;AAGE,QAAA,yBAAyB,GAAG;IACvC,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;CACZ,CAAC;AAoHX,wCAAwC;AACxC,SAAgB,eAAe,CAAC,OAAqC;IACnE,OAAO,YAAY,IAAI,OAAO,CAAC;AACjC,CAAC;AAED,SAAgB,mBAAmB,CACjC,OAAqC;IAErC,OAAO,kBAAkB,IAAI,OAAO,CAAC;AACvC,CAAC;AAED,SAAgB,gBAAgB,CAAC,QAAmB;IAClD,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,MAAK,wBAAY,CAAC,MAAM,CAAC;AAChD,CAAC;AAED,SAAgB,oBAAoB,CAAC,QAAmB;IACtD,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,MAAK,wBAAY,CAAC,UAAU,CAAC;AACpD,CAAC","sourcesContent":["import {\n type BoostGrouping,\n type Boosting,\n type BoostSorting,\n type Curation,\n CurationType,\n type Relevance,\n type SearchableField,\n} from \"../types/firestore\";\n\nexport const BaseSearchRequestMode = {\n Relevance: \"relevance\",\n Weighted: \"weighted\",\n} as const;\nexport type BaseSearchRequestMode = (typeof BaseSearchRequestMode)[keyof typeof BaseSearchRequestMode];\n\nexport const CurationSearchRequestMode = {\n Boosted: \"boosted\",\n Weighted: \"weighted\",\n} as const;\nexport type CurationSearchRequestMode = (typeof CurationSearchRequestMode)[keyof typeof CurationSearchRequestMode];\n\nexport interface SearchRequestModes {\n baseSearchRequestMode: BaseSearchRequestMode;\n curationSearchRequestMode: CurationSearchRequestMode;\n}\n\n// Base options shared by all search request types\nexport interface GenerateSearchRequestBaseOptions {\n relevanceFields?: Relevance[];\n searchableFields?: SearchableField[];\n market?: string;\n baseSearchRequestMode: BaseSearchRequestMode;\n curationSearchRequestMode: CurationSearchRequestMode;\n}\n\n// Search-specific options\nexport interface GenerateSearchRequestSearchOptions extends GenerateSearchRequestBaseOptions {\n searchTerm: string;\n curation?: SearchCuration;\n}\n\n// Collection-specific options\nexport interface GenerateSearchRequestCollectionOptions extends GenerateSearchRequestBaseOptions {\n collectionHandle: string;\n curation?: CollectionCuration;\n}\n\n// Union type for the main interface\nexport type GenerateSearchRequestOptions = GenerateSearchRequestSearchOptions | GenerateSearchRequestCollectionOptions;\n\n// Refined curation types with better type safety\nexport interface SearchCuration extends Curation {\n type: CurationType.Search;\n searchTerm: string;\n}\n\nexport interface CollectionCuration extends Curation {\n type: CurationType.Collection;\n collectionHandle: string;\n}\n\nexport interface CurationRules {\n boostingRules: Boosting[];\n groupings: BoostGrouping[];\n sortings: BoostSorting[];\n}\n\nexport interface TermSearchRequestOptions {\n searchTerm: string;\n baseSearchRequestMode: BaseSearchRequestMode;\n relevanceFields?: Relevance[];\n searchableFields?: SearchableField[];\n markets: string[];\n}\n\nexport interface CollectionSearchRequestOptions {\n collectionHandle: string;\n markets: string[];\n}\n\n// Elasticsearch/OpenSearch type aliases - using basic types to avoid external dependency\nexport interface SearchRequest {\n query?: QueryContainer;\n sort?: SortOptions;\n}\n\nexport interface QueryContainer {\n bool?: BoolQuery;\n function_score?: FunctionScoreQuery;\n multi_match?: MultiMatchQuery;\n match?: Record<string, any>;\n match_all?: Record<string, any>;\n term?: Record<string, any>;\n terms?: Record<string, string[]>;\n wildcard?: Record<string, string>;\n range?: Record<string, any>;\n nested?: NestedQuery;\n}\n\nexport interface BoolQuery {\n must?: QueryContainer | QueryContainer[];\n should?: QueryContainer[];\n must_not?: QueryContainer | QueryContainer[];\n filter?: QueryContainer[];\n minimum_should_match?: string | number;\n}\n\nexport interface FunctionScoreQuery {\n query: QueryContainer;\n functions: FunctionScoreContainer[];\n score_mode: FunctionScoreMode;\n boost_mode: FunctionBoostMode;\n}\n\nexport interface FunctionScoreContainer {\n filter: QueryContainer;\n weight: number;\n}\n\nexport interface MultiMatchQuery {\n query: string;\n fields: string[];\n type: \"cross_fields\" | \"phrase\" | \"phrase_prefix\";\n operator: \"and\" | \"or\";\n}\n\nexport interface NestedQuery {\n path: string;\n query: QueryContainer;\n}\n\nexport type SortOptions = Record<string, any>[] | Record<string, any>;\nexport type FunctionScoreMode = \"sum\" | \"multiply\" | \"avg\" | \"max\" | \"min\" | \"first\";\nexport type FunctionBoostMode = \"multiply\" | \"replace\" | \"sum\" | \"avg\" | \"max\" | \"min\";\n// Type guards for runtime type checking\nexport function isSearchOptions(options: GenerateSearchRequestOptions): options is GenerateSearchRequestSearchOptions {\n return \"searchTerm\" in options;\n}\n\nexport function isCollectionOptions(\n options: GenerateSearchRequestOptions\n): options is GenerateSearchRequestCollectionOptions {\n return \"collectionHandle\" in options;\n}\n\nexport function isSearchCuration(curation?: Curation): curation is SearchCuration {\n return curation?.type === CurationType.Search;\n}\n\nexport function isCollectionCuration(curation?: Curation): curation is CollectionCuration {\n return curation?.type === CurationType.Collection;\n}\n"]}
@@ -1,27 +0,0 @@
1
- import { type FunctionScoreContainer, type QueryContainer, type TermSearchRequestOptions } from "./types";
2
- import { type Boosting, type Relevance } from "../types/firestore";
3
- export declare function generateQueryField(options: {
4
- fieldName: string;
5
- market?: string;
6
- }): string;
7
- export declare function generateMarketsFilter(markets: string[]): QueryContainer[];
8
- export declare function generateMarketsClause(markets: string[]): QueryContainer | null;
9
- export declare function generateBoostingRule(options: {
10
- boostingRule: Boosting;
11
- market?: string;
12
- }): FunctionScoreContainer;
13
- export declare function generateBoostingRules(options: {
14
- boostingRules: Boosting[];
15
- market?: string;
16
- }): FunctionScoreContainer[];
17
- export declare function validateSearchInputs(options: TermSearchRequestOptions): void;
18
- export declare function prepareRelevanceFields(relevanceFields?: Relevance[]): {
19
- crossFields: string[];
20
- phrase: string[];
21
- phrasePrefix: string[];
22
- };
23
- export declare function generateMultiMatchQueries(searchTerm: string, fieldMappings: {
24
- crossFields: string[];
25
- phrase: string[];
26
- phrasePrefix: string[];
27
- }): QueryContainer[];
@@ -1,144 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateQueryField = generateQueryField;
4
- exports.generateMarketsFilter = generateMarketsFilter;
5
- exports.generateMarketsClause = generateMarketsClause;
6
- exports.generateBoostingRule = generateBoostingRule;
7
- exports.generateBoostingRules = generateBoostingRules;
8
- exports.validateSearchInputs = validateSearchInputs;
9
- exports.prepareRelevanceFields = prepareRelevanceFields;
10
- exports.generateMultiMatchQueries = generateMultiMatchQueries;
11
- const types_1 = require("./types");
12
- const firestore_1 = require("../types/firestore");
13
- // Field and market utilities
14
- function generateQueryField(options) {
15
- if (!options.market) {
16
- if (options.fieldName === "price")
17
- return "price_min";
18
- return options.fieldName;
19
- }
20
- if (options.fieldName === "price") {
21
- return `price_min_market_${options.market}`;
22
- }
23
- if (options.fieldName === "price_min") {
24
- return `price_min_market_${options.market}`;
25
- }
26
- if (options.fieldName === "price_max") {
27
- return `price_max_market_${options.market}`;
28
- }
29
- if (options.fieldName === "inventory_total") {
30
- return `inventory_quantity_market_${options.market}`;
31
- }
32
- return options.fieldName;
33
- }
34
- function generateMarketsFilter(markets) {
35
- if (!(markets === null || markets === void 0 ? void 0 : markets.length))
36
- return [];
37
- return [{ terms: { markets: markets } }];
38
- }
39
- function generateMarketsClause(markets) {
40
- if (!markets.length)
41
- return null;
42
- return { terms: { markets: markets } };
43
- }
44
- // Boosting utilities
45
- function generateBoostingRule(options) {
46
- const fieldName = generateQueryField({ fieldName: options.boostingRule.fieldName, market: options.market });
47
- if (options.boostingRule.operation === firestore_1.Operation.Contains) {
48
- return {
49
- filter: { wildcard: { [fieldName]: `*${options.boostingRule.value}*` } },
50
- weight: options.boostingRule.points,
51
- };
52
- }
53
- if (options.boostingRule.operation === firestore_1.Operation.NotContains) {
54
- return {
55
- filter: { bool: { must_not: { wildcard: { [fieldName]: `*${options.boostingRule.value}*` } } } },
56
- weight: options.boostingRule.points,
57
- };
58
- }
59
- if (options.boostingRule.operation === firestore_1.Operation.Equals) {
60
- return {
61
- filter: { term: { [fieldName]: options.boostingRule.value } },
62
- weight: options.boostingRule.points,
63
- };
64
- }
65
- if (options.boostingRule.operation === firestore_1.Operation.GreaterThan) {
66
- return {
67
- filter: { range: { [fieldName]: { gt: parseFloat(options.boostingRule.value) } } },
68
- weight: options.boostingRule.points,
69
- };
70
- }
71
- if (options.boostingRule.operation === firestore_1.Operation.LessThan) {
72
- return {
73
- filter: { range: { [fieldName]: { lt: parseFloat(options.boostingRule.value) } } },
74
- weight: options.boostingRule.points,
75
- };
76
- }
77
- throw new Error(`Unable to process rule`);
78
- }
79
- function generateBoostingRules(options) {
80
- return options.boostingRules
81
- .map((boostingRule) => generateBoostingRule({ boostingRule: boostingRule, market: options.market }))
82
- .filter(Boolean);
83
- }
84
- // Validation
85
- function validateSearchInputs(options) {
86
- var _a, _b, _c;
87
- if (!((_a = options.searchTerm) === null || _a === void 0 ? void 0 : _a.trim())) {
88
- throw new Error("Search term is required");
89
- }
90
- if (options.baseSearchRequestMode === types_1.BaseSearchRequestMode.Weighted && !((_b = options.searchableFields) === null || _b === void 0 ? void 0 : _b.length)) {
91
- throw new Error("SearchableFields required for weighted search");
92
- }
93
- if (options.baseSearchRequestMode === types_1.BaseSearchRequestMode.Relevance && !((_c = options.relevanceFields) === null || _c === void 0 ? void 0 : _c.length)) {
94
- throw new Error("RelevanceFields required for relevance search");
95
- }
96
- }
97
- // Relevance field utilities
98
- function prepareRelevanceFields(relevanceFields) {
99
- if (!relevanceFields)
100
- return { crossFields: [], phrase: [], phrasePrefix: [] };
101
- const enabledFields = relevanceFields.filter((field) => field.enabled);
102
- return {
103
- crossFields: enabledFields.map((field) => `${field.field}^${field.importance}`),
104
- phrase: enabledFields.map((field) => `${field.field}^${field.importance}`),
105
- phrasePrefix: enabledFields
106
- .filter((field) => !field.field.includes("."))
107
- .map((field) => `${field.field}^${field.importance}`),
108
- };
109
- }
110
- function generateMultiMatchQueries(searchTerm, fieldMappings) {
111
- const queries = [];
112
- if (fieldMappings.crossFields.length > 0) {
113
- queries.push({
114
- multi_match: {
115
- query: searchTerm,
116
- fields: fieldMappings.crossFields,
117
- type: "cross_fields",
118
- operator: "and",
119
- },
120
- });
121
- }
122
- if (fieldMappings.phrase.length > 0) {
123
- queries.push({
124
- multi_match: {
125
- query: searchTerm,
126
- fields: fieldMappings.phrase,
127
- type: "phrase",
128
- operator: "and",
129
- },
130
- });
131
- }
132
- if (fieldMappings.phrasePrefix.length > 0) {
133
- queries.push({
134
- multi_match: {
135
- query: searchTerm,
136
- fields: fieldMappings.phrasePrefix,
137
- type: "phrase_prefix",
138
- operator: "and",
139
- },
140
- });
141
- }
142
- return queries;
143
- }
144
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/search-request-builder/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BaseSearchRequestMode,\n type FunctionScoreContainer,\n type QueryContainer,\n type TermSearchRequestOptions,\n} from \"./types\";\nimport { type Boosting, Operation, type Relevance } from \"../types/firestore\";\n\n// Field and market utilities\nexport function 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\nexport function generateMarketsFilter(markets: string[]): QueryContainer[] {\n if (!markets?.length) return [];\n return [{ terms: { markets: markets } }];\n}\n\nexport function generateMarketsClause(markets: string[]): QueryContainer | null {\n if (!markets.length) return null;\n return { terms: { markets: markets } };\n}\n\n// Boosting utilities\nexport function generateBoostingRule(options: { boostingRule: Boosting; market?: string }): FunctionScoreContainer {\n const fieldName = generateQueryField({ fieldName: options.boostingRule.fieldName, market: options.market });\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: { bool: { must_not: { wildcard: { [fieldName]: `*${options.boostingRule.value}*` } } } },\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\nexport function generateBoostingRules(options: {\n boostingRules: Boosting[];\n market?: string;\n}): FunctionScoreContainer[] {\n return options.boostingRules\n .map((boostingRule) => generateBoostingRule({ boostingRule: boostingRule, market: options.market }))\n .filter(Boolean);\n}\n\n// Validation\nexport function validateSearchInputs(options: TermSearchRequestOptions) {\n if (!options.searchTerm?.trim()) {\n throw new Error(\"Search term is required\");\n }\n\n if (options.baseSearchRequestMode === BaseSearchRequestMode.Weighted && !options.searchableFields?.length) {\n throw new Error(\"SearchableFields required for weighted search\");\n }\n\n if (options.baseSearchRequestMode === BaseSearchRequestMode.Relevance && !options.relevanceFields?.length) {\n throw new Error(\"RelevanceFields required for relevance search\");\n }\n}\n\n// Relevance field utilities\nexport function prepareRelevanceFields(relevanceFields?: Relevance[]) {\n if (!relevanceFields) return { crossFields: [], phrase: [], phrasePrefix: [] };\n\n const enabledFields = relevanceFields.filter((field) => field.enabled);\n\n return {\n crossFields: enabledFields.map((field) => `${field.field}^${field.importance}`),\n phrase: enabledFields.map((field) => `${field.field}^${field.importance}`),\n phrasePrefix: enabledFields\n .filter((field) => !field.field.includes(\".\"))\n .map((field) => `${field.field}^${field.importance}`),\n };\n}\n\nexport function generateMultiMatchQueries(\n searchTerm: string,\n fieldMappings: { crossFields: string[]; phrase: string[]; phrasePrefix: string[] }\n): QueryContainer[] {\n const queries = [];\n\n if (fieldMappings.crossFields.length > 0) {\n queries.push({\n multi_match: {\n query: searchTerm,\n fields: fieldMappings.crossFields,\n type: \"cross_fields\" as const,\n operator: \"and\" as const,\n },\n });\n }\n\n if (fieldMappings.phrase.length > 0) {\n queries.push({\n multi_match: {\n query: searchTerm,\n fields: fieldMappings.phrase,\n type: \"phrase\" as const,\n operator: \"and\" as const,\n },\n });\n }\n\n if (fieldMappings.phrasePrefix.length > 0) {\n queries.push({\n multi_match: {\n query: searchTerm,\n fields: fieldMappings.phrasePrefix,\n type: \"phrase_prefix\" as const,\n operator: \"and\" as const,\n },\n });\n }\n\n return queries;\n}\n"]}