algoliasearch-helper 3.8.1 → 3.9.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.
package/CHANGELOG CHANGED
@@ -1,3 +1,15 @@
1
+ 3.9.0 - 2022-06-20
2
+ * feat(searchForFacetValues): fall back to client.search if it's present (#906) https://github.com/algolia/algoliasearch-helper-js/commit/d9ebb01382ec83e0c579c393c3e9df83a9261699
3
+ * fix(requests): send a sorted object of parameters (#911) https://github.com/algolia/algoliasearch-helper-js/commit/832507fae48c54ab41d3241254753100bb86910b
4
+
5
+ 3.8.3 - 2022-06-15
6
+ * chore: update yarn lockfile (#909) https://github.com/algolia/algoliasearch-helper-js/commit/e561c35ce30dc36c162886b828835bf18887dab1
7
+ * doc(readme): fix api parameter links (#904) https://github.com/algolia/algoliasearch-helper-js/commit/64356a40bd88972bcd256acb5c6f483982d4557d, closes https://github.com/algolia/algoliasearch-helper-js/issues/904
8
+ * fix(facetValues): retrieve all hierarchical facet parent values (#908) https://github.com/algolia/algoliasearch-helper-js/commit/420111b29f82fe3af8e5861a977f024a61f4025f
9
+
10
+ 3.8.2 - 2022-04-08
11
+ * fix(types): correct type for addTag (#903) https://github.com/algolia/algoliasearch-helper-js/commit/ca82ef302ceff8e0e31767c90e2f272914c703af
12
+
1
13
  3.8.1 - 2022-04-05
2
14
  * fix(disjunctiveFacets): avoid escaping non-string values (#902) https://github.com/algolia/algoliasearch-helper-js/commit/4ac67bda2a8e5a2b8c53c960637b72a77951af76
3
15
 
package/README.md CHANGED
@@ -801,7 +801,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
801
801
  </td>
802
802
  <td valign="top" class="td6">
803
803
  <p class="p4"><span class="s1">Enable the advanced syntax.</span></p>
804
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-advancedSyntax">advancedSyntax on Algolia.com<span class="s3"></span></a></span></p>
804
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/advancedSyntax/">advancedSyntax on Algolia.com<span class="s3"></span></a></span></p>
805
805
  </td>
806
806
  </tr>
807
807
  <tr>
@@ -813,7 +813,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
813
813
  </td>
814
814
  <td valign="top" class="td6">
815
815
  <p class="p4"><span class="s1">Should the engine allow typos on numerics.</span></p>
816
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-allowTyposOnNumericTokens">allowTyposOnNumericTokens on Algolia.com<span class="s3"></span></a></span></p>
816
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/allowTyposOnNumericTokens/">allowTyposOnNumericTokens on Algolia.com<span class="s3"></span></a></span></p>
817
817
  </td>
818
818
  </tr>
819
819
  <tr>
@@ -825,7 +825,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
825
825
  </td>
826
826
  <td valign="top" class="td6">
827
827
  <p class="p4"><span class="s1">Enable the analytics</span></p>
828
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-analytics">analytics on Algolia.com<span class="s3"></span></a></span></p>
828
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/analytics/">analytics on Algolia.com<span class="s3"></span></a></span></p>
829
829
  </td>
830
830
  </tr>
831
831
  <tr>
@@ -837,7 +837,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
837
837
  </td>
838
838
  <td valign="top" class="td6">
839
839
  <p class="p4"><span class="s1">Tag of the query in the analytics.</span></p>
840
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-analyticsTags">analyticsTags on Algolia.com<span class="s3"></span></a></span></p>
840
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/analyticsTags/">analyticsTags on Algolia.com<span class="s3"></span></a></span></p>
841
841
  </td>
842
842
  </tr>
843
843
  <tr>
@@ -849,7 +849,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
849
849
  </td>
850
850
  <td valign="top" class="td6">
851
851
  <p class="p4"><span class="s1">Center of the geo search.</span></p>
852
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-aroundLatLng">aroundLatLng on Algolia.com<span class="s3"></span></a></span></p>
852
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/aroundLatLng/">aroundLatLng on Algolia.com<span class="s3"></span></a></span></p>
853
853
  </td>
854
854
  </tr>
855
855
  <tr>
@@ -861,7 +861,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
861
861
  </td>
862
862
  <td valign="top" class="td6">
863
863
  <p class="p4"><span class="s1">Center of the search, retrieve from the user IP.</span></p>
864
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-aroundLatLngViaIP">aroundLatLngViaIP on Algolia.com<span class="s3"></span></a></span></p>
864
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/aroundLatLngViaIP/">aroundLatLngViaIP on Algolia.com<span class="s3"></span></a></span></p>
865
865
  </td>
866
866
  </tr>
867
867
  <tr>
@@ -873,7 +873,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
873
873
  </td>
874
874
  <td valign="top" class="td6">
875
875
  <p class="p4"><span class="s1">Precision of the geo search.</span></p>
876
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-aroundPrecision">aroundPrecision on Algolia.com<span class="s3"></span></a></span></p>
876
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/aroundPrecision/">aroundPrecision on Algolia.com<span class="s3"></span></a></span></p>
877
877
  </td>
878
878
  </tr>
879
879
  <tr>
@@ -885,7 +885,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
885
885
  </td>
886
886
  <td valign="top" class="td6">
887
887
  <p class="p4"><span class="s1">Radius of the geo search.</span></p>
888
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-aroundRadius">aroundRadius on Algolia.com<span class="s3"></span></a></span></p>
888
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/aroundRadius/">aroundRadius on Algolia.com<span class="s3"></span></a></span></p>
889
889
  </td>
890
890
  </tr>
891
891
  <tr>
@@ -897,7 +897,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
897
897
  </td>
898
898
  <td valign="top" class="td6">
899
899
  <p class="p4"><span class="s1">Minimum radius of the geo search.</span></p>
900
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-minimumAroundRadius">minimumAroundRadius on Algolia.com<span class="s3"></span></a></span></p>
900
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/minimumAroundRadius/">minimumAroundRadius on Algolia.com<span class="s3"></span></a></span></p>
901
901
  </td>
902
902
  </tr>
903
903
  <tr>
@@ -909,7 +909,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
909
909
  </td>
910
910
  <td valign="top" class="td6">
911
911
  <p class="p4"><span class="s1">List of attributes to highlight</span></p>
912
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-attributesToHighlight">attributesToHighlight on Algolia.com<span class="s3"></span></a></span></p>
912
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/attributesToHighlight/">attributesToHighlight on Algolia.com<span class="s3"></span></a></span></p>
913
913
  </td>
914
914
  </tr>
915
915
  <tr>
@@ -921,7 +921,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
921
921
  </td>
922
922
  <td valign="top" class="td6">
923
923
  <p class="p4"><span class="s1">List of attributes to retrieve</span></p>
924
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-attributesToRetrieve">attributesToRetrieve on Algolia.com<span class="s3"></span></a></span></p>
924
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/attributesToRetrieve/">attributesToRetrieve on Algolia.com<span class="s3"></span></a></span></p>
925
925
  </td>
926
926
  </tr>
927
927
  <tr>
@@ -933,7 +933,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
933
933
  </td>
934
934
  <td valign="top" class="td6">
935
935
  <p class="p4"><span class="s1">List of attributes to snippet</span></p>
936
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-attributesToSnippet">attributesToSnippet on Algolia.com<span class="s3"></span></a></span></p>
936
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/attributesToSnippet/">attributesToSnippet on Algolia.com<span class="s3"></span></a></span></p>
937
937
  </td>
938
938
  </tr>
939
939
  <tr>
@@ -956,7 +956,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
956
956
  </td>
957
957
  <td valign="top" class="td6">
958
958
  <p class="p4"><span class="s1">Remove duplicates based on the index setting attributeForDistinct</span></p>
959
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-distinct">distinct on Algolia.com<span class="s3"></span></a></span></p>
959
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/distinct/">distinct on Algolia.com<span class="s3"></span></a></span></p>
960
960
  </td>
961
961
  </tr>
962
962
  <tr>
@@ -991,7 +991,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
991
991
  </td>
992
992
  <td valign="top" class="td6">
993
993
  <p class="p4"><span class="s1">Enable the ranking informations in the response</span></p>
994
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-getRankingInfo">getRankingInfo on Algolia.com<span class="s3"></span></a></span></p>
994
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/getRankingInfo/">getRankingInfo on Algolia.com<span class="s3"></span></a></span></p>
995
995
  </td>
996
996
  </tr>
997
997
  <tr>
@@ -1003,7 +1003,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
1003
1003
  </td>
1004
1004
  <td valign="top" class="td6">
1005
1005
  <p class="p4"><span class="s1">Number of hits to be returned by the search API</span></p>
1006
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-hitsPerPage">hitsPerPage on Algolia.com<span class="s3"></span></a></span></p>
1006
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/hitsPerPage/">hitsPerPage on Algolia.com<span class="s3"></span></a></span></p>
1007
1007
  </td>
1008
1008
  </tr>
1009
1009
  <tr>
@@ -1015,7 +1015,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
1015
1015
  </td>
1016
1016
  <td valign="top" class="td6">
1017
1017
  <p class="p4"><span class="s1">Should the plurals be ignored</span></p>
1018
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-ignorePlurals">ignorePlurals on Algolia.com<span class="s3"></span></a></span></p>
1018
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/ignorePlurals/">ignorePlurals on Algolia.com<span class="s3"></span></a></span></p>
1019
1019
  </td>
1020
1020
  </tr>
1021
1021
  <tr>
@@ -1027,7 +1027,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
1027
1027
  </td>
1028
1028
  <td valign="top" class="td6">
1029
1029
  <p class="p4"><span class="s1">Geo search inside a box.</span></p>
1030
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-insideBoundingBox">insideBoundingBox on Algolia.com<span class="s3"></span></a></span></p>
1030
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/insideBoundingBox/">insideBoundingBox on Algolia.com<span class="s3"></span></a></span></p>
1031
1031
  </td>
1032
1032
  </tr>
1033
1033
  <tr>
@@ -1039,7 +1039,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
1039
1039
  </td>
1040
1040
  <td valign="top" class="td6">
1041
1041
  <p class="p4"><span class="s1">Geo search inside a polygon.</span></p>
1042
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-insidePolygon">insidePolygon on Algolia.com<span class="s3"></span></a></span></p>
1042
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/insidePolygon/">insidePolygon on Algolia.com<span class="s3"></span></a></span></p>
1043
1043
  </td>
1044
1044
  </tr>
1045
1045
  <tr>
@@ -1051,7 +1051,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
1051
1051
  </td>
1052
1052
  <td valign="top" class="td6">
1053
1053
  <p class="p4"><span class="s1">Number of values for each facetted attribute</span></p>
1054
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-maxValuesPerFacet">maxValuesPerFacet on Algolia.com<span class="s3"></span></a></span></p>
1054
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/maxValuesPerFacet/">maxValuesPerFacet on Algolia.com<span class="s3"></span></a></span></p>
1055
1055
  </td>
1056
1056
  </tr>
1057
1057
  <tr>
@@ -1063,7 +1063,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
1063
1063
  </td>
1064
1064
  <td valign="top" class="td6">
1065
1065
  <p class="p4"><span class="s1">Number of characters to wait before doing one character replacement.</span></p>
1066
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-minWordSizefor1Typo">minWordSizefor1Typo on Algolia.com<span class="s3"></span></a></span></p>
1066
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/minWordSizefor1Typo/">minWordSizefor1Typo on Algolia.com<span class="s3"></span></a></span></p>
1067
1067
  </td>
1068
1068
  </tr>
1069
1069
  <tr>
@@ -1075,7 +1075,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
1075
1075
  </td>
1076
1076
  <td valign="top" class="td6">
1077
1077
  <p class="p4"><span class="s1">Number of characters to wait before doing a second character replacement.</span></p>
1078
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-minWordSizefor2Typos">minWordSizefor2Typos on Algolia.com<span class="s3"></span></a></span></p>
1078
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/minWordSizefor2Typos/">minWordSizefor2Typos on Algolia.com<span class="s3"></span></a></span></p>
1079
1079
  </td>
1080
1080
  </tr>
1081
1081
  <tr>
@@ -1087,7 +1087,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
1087
1087
  </td>
1088
1088
  <td valign="top" class="td6">
1089
1089
  <p class="p4"><span class="s1">Add some optional words to those defined in the dashboard</span></p>
1090
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-optionalWords">optionalWords on Algolia.com<span class="s3"></span></a></span></p>
1090
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/optionalWords/">optionalWords on Algolia.com<span class="s3"></span></a></span></p>
1091
1091
  </td>
1092
1092
  </tr>
1093
1093
  <tr>
@@ -1099,7 +1099,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
1099
1099
  </td>
1100
1100
  <td valign="top" class="td6">
1101
1101
  <p class="p4"><span class="s1">The current page number</span></p>
1102
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-page">page on Algolia.com<span class="s3"></span></a></span></p>
1102
+ <p class="p5"><span class="s1"><a href="algolia.com/doc/api-reference/api-parameters/page/">page on Algolia.com<span class="s3"></span></a></span></p>
1103
1103
  </td>
1104
1104
  </tr>
1105
1105
  <tr>
@@ -1111,7 +1111,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
1111
1111
  </td>
1112
1112
  <td valign="top" class="td6">
1113
1113
  <p class="p4"><span class="s1">Query string of the instant search. The empty string is a valid query.</span></p>
1114
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-query">query on Algolia.com<span class="s3"></span></a></span></p>
1114
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/query/">query on Algolia.com<span class="s3"></span></a></span></p>
1115
1115
  </td>
1116
1116
  </tr>
1117
1117
  <tr>
@@ -1123,7 +1123,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
1123
1123
  </td>
1124
1124
  <td valign="top" class="td6">
1125
1125
  <p class="p4"><span class="s1">How the query should be treated by the search engine. Possible values: prefixAll, prefixLast, prefixNone</span></p>
1126
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-queryType">queryType on Algolia.com<span class="s3"></span></a></span></p>
1126
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/queryType/">queryType on Algolia.com<span class="s3"></span></a></span></p>
1127
1127
  </td>
1128
1128
  </tr>
1129
1129
  <tr>
@@ -1135,7 +1135,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
1135
1135
  </td>
1136
1136
  <td valign="top" class="td6">
1137
1137
  <p class="p4"><span class="s1">Possible values are "lastWords" "firstWords" "allOptional" "none" (default)</span></p>
1138
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-removeWordsIfNoResults">removeWordsIfNoResults on Algolia.com<span class="s3"></span></a></span></p>
1138
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/removeWordsIfNoResults/">removeWordsIfNoResults on Algolia.com<span class="s3"></span></a></span></p>
1139
1139
  </td>
1140
1140
  </tr>
1141
1141
  <tr>
@@ -1147,7 +1147,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
1147
1147
  </td>
1148
1148
  <td valign="top" class="td6">
1149
1149
  <p class="p4"><span class="s1">Should the engine replace the synonyms in the highlighted results.</span></p>
1150
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-replaceSynonymsInHighlight">replaceSynonymsInHighlight on Algolia.com<span class="s3"></span></a></span></p>
1150
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/replaceSynonymsInHighlight/">replaceSynonymsInHighlight on Algolia.com<span class="s3"></span></a></span></p>
1151
1151
  </td>
1152
1152
  </tr>
1153
1153
  <tr>
@@ -1159,7 +1159,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
1159
1159
  </td>
1160
1160
  <td valign="top" class="td6">
1161
1161
  <p class="p4"><span class="s1">Restrict which attribute is searched.</span></p>
1162
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-restrictSearchableAttributes">restrictSearchableAttributes on Algolia.com<span class="s3"></span></a></span></p>
1162
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/restrictSearchableAttributes/">restrictSearchableAttributes on Algolia.com<span class="s3"></span></a></span></p>
1163
1163
  </td>
1164
1164
  </tr>
1165
1165
  <tr>
@@ -1171,7 +1171,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
1171
1171
  </td>
1172
1172
  <td valign="top" class="td6">
1173
1173
  <p class="p4"><span class="s1">Enable the synonyms</span></p>
1174
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-synonyms">synonyms on Algolia.com<span class="s3"></span></a></span></p>
1174
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/synonyms/">synonyms on Algolia.com<span class="s3"></span></a></span></p>
1175
1175
  </td>
1176
1176
  </tr>
1177
1177
  <tr>
@@ -1183,7 +1183,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
1183
1183
  </td>
1184
1184
  <td valign="top" class="td6">
1185
1185
  <p class="p4"><span class="s1">Contains the tag filters in the raw format of the Algolia API. Setting this parameter is not compatible with the of the add/remove/toggle methods of the tag api.</span></p>
1186
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-tagFilters">tagFilters on Algolia.com<span class="s3"></span></a></span></p>
1186
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/tagFilters/">tagFilters on Algolia.com<span class="s3"></span></a></span></p>
1187
1187
  </td>
1188
1188
  </tr>
1189
1189
  <tr>
@@ -1195,7 +1195,7 @@ helper.setQueryParameter('hitsPerPage', 20).search();
1195
1195
  </td>
1196
1196
  <td valign="top" class="td6">
1197
1197
  <p class="p4"><span class="s1">How the typo tolerance behave in the search engine. Possible values: true, false, min, strict</span></p>
1198
- <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/ruby#param-typoTolerance">typoTolerance on Algolia.com<span class="s3"></span></a></span></p>
1198
+ <p class="p5"><span class="s1"><a href="https://www.algolia.com/doc/api-reference/api-parameters/typoTolerance/">typoTolerance on Algolia.com<span class="s3"></span></a></span></p>
1199
1199
  </td>
1200
1200
  </tr>
1201
1201
  </tbody>
@@ -2806,7 +2806,7 @@ function SearchResults(state, results, options) {
2806
2806
  nextDisjunctiveResult++;
2807
2807
  });
2808
2808
 
2809
- // if we have some root level values for hierarchical facets, merge them
2809
+ // if we have some parent level values for hierarchical facets, merge them
2810
2810
  state.getRefinedHierarchicalFacets().forEach(function(refinedFacet) {
2811
2811
  var hierarchicalFacet = state.getHierarchicalFacetByName(refinedFacet);
2812
2812
  var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);
@@ -2818,47 +2818,49 @@ function SearchResults(state, results, options) {
2818
2818
  return;
2819
2819
  }
2820
2820
 
2821
- var result = results[nextDisjunctiveResult];
2822
- var facets = result && result.facets
2823
- ? result.facets
2824
- : {};
2825
- Object.keys(facets).forEach(function(dfacet) {
2826
- var facetResults = facets[dfacet];
2827
- var position = findIndex(state.hierarchicalFacets, function(f) {
2828
- return f.name === hierarchicalFacet.name;
2829
- });
2830
- var attributeIndex = findIndex(self.hierarchicalFacets[position], function(f) {
2831
- return f.attribute === dfacet;
2832
- });
2821
+ results.slice(nextDisjunctiveResult).forEach(function(result) {
2822
+ var facets = result && result.facets
2823
+ ? result.facets
2824
+ : {};
2833
2825
 
2834
- // previous refinements and no results so not able to find it
2835
- if (attributeIndex === -1) {
2836
- return;
2837
- }
2826
+ Object.keys(facets).forEach(function(dfacet) {
2827
+ var facetResults = facets[dfacet];
2828
+ var position = findIndex(state.hierarchicalFacets, function(f) {
2829
+ return f.name === hierarchicalFacet.name;
2830
+ });
2831
+ var attributeIndex = findIndex(self.hierarchicalFacets[position], function(f) {
2832
+ return f.attribute === dfacet;
2833
+ });
2838
2834
 
2839
- // when we always get root levels, if the hits refinement is `beers > IPA` (count: 5),
2840
- // then the disjunctive values will be `beers` (count: 100),
2841
- // but we do not want to display
2842
- // | beers (100)
2843
- // > IPA (5)
2844
- // We want
2845
- // | beers (5)
2846
- // > IPA (5)
2847
- var defaultData = {};
2848
-
2849
- if (currentRefinement.length > 0) {
2850
- var root = currentRefinement[0].split(separator)[0];
2851
- defaultData[root] = self.hierarchicalFacets[position][attributeIndex].data[root];
2852
- }
2835
+ // previous refinements and no results so not able to find it
2836
+ if (attributeIndex === -1) {
2837
+ return;
2838
+ }
2853
2839
 
2854
- self.hierarchicalFacets[position][attributeIndex].data = defaultsPure(
2855
- defaultData,
2856
- facetResults,
2857
- self.hierarchicalFacets[position][attributeIndex].data
2858
- );
2859
- });
2840
+ // when we always get root levels, if the hits refinement is `beers > IPA` (count: 5),
2841
+ // then the disjunctive values will be `beers` (count: 100),
2842
+ // but we do not want to display
2843
+ // | beers (100)
2844
+ // > IPA (5)
2845
+ // We want
2846
+ // | beers (5)
2847
+ // > IPA (5)
2848
+ var defaultData = {};
2849
+
2850
+ if (currentRefinement.length > 0) {
2851
+ var root = currentRefinement[0].split(separator)[0];
2852
+ defaultData[root] = self.hierarchicalFacets[position][attributeIndex].data[root];
2853
+ }
2860
2854
 
2861
- nextDisjunctiveResult++;
2855
+ self.hierarchicalFacets[position][attributeIndex].data = defaultsPure(
2856
+ defaultData,
2857
+ facetResults,
2858
+ self.hierarchicalFacets[position][attributeIndex].data
2859
+ );
2860
+ });
2861
+
2862
+ nextDisjunctiveResult++;
2863
+ });
2862
2864
  });
2863
2865
 
2864
2866
  // add the excludes
@@ -3645,20 +3647,51 @@ AlgoliaSearchHelper.prototype.findAnswers = function(options) {
3645
3647
  */
3646
3648
  AlgoliaSearchHelper.prototype.searchForFacetValues = function(facet, query, maxFacetHits, userState) {
3647
3649
  var clientHasSFFV = typeof this.client.searchForFacetValues === 'function';
3650
+ var clientHasInitIndex = typeof this.client.initIndex === 'function';
3648
3651
  if (
3649
3652
  !clientHasSFFV &&
3650
- typeof this.client.initIndex !== 'function'
3653
+ !clientHasInitIndex &&
3654
+ typeof this.client.search !== 'function'
3651
3655
  ) {
3652
3656
  throw new Error(
3653
3657
  'search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues or client.initIndex(index).searchForFacetValues'
3654
3658
  );
3655
3659
  }
3660
+
3656
3661
  var state = this.state.setQueryParameters(userState || {});
3657
3662
  var isDisjunctive = state.isDisjunctiveFacet(facet);
3658
3663
  var algoliaQuery = requestBuilder.getSearchForFacetQuery(facet, query, maxFacetHits, state);
3659
3664
 
3660
3665
  this._currentNbQueries++;
3661
3666
  var self = this;
3667
+ var searchForFacetValuesPromise;
3668
+ // newer algoliasearch ^3.27.1 - ~4.0.0
3669
+ if (clientHasSFFV) {
3670
+ searchForFacetValuesPromise = this.client.searchForFacetValues([
3671
+ {indexName: state.index, params: algoliaQuery}
3672
+ ]);
3673
+ // algoliasearch < 3.27.1
3674
+ } else if (clientHasInitIndex) {
3675
+ searchForFacetValuesPromise = this.client
3676
+ .initIndex(state.index)
3677
+ .searchForFacetValues(algoliaQuery);
3678
+ // algoliasearch ~5.0.0
3679
+ } else {
3680
+ // @MAJOR only use client.search
3681
+ delete algoliaQuery.facetName;
3682
+ searchForFacetValuesPromise = this.client
3683
+ .search([
3684
+ {
3685
+ type: 'facet',
3686
+ facet: facet,
3687
+ indexName: state.index,
3688
+ params: algoliaQuery
3689
+ }
3690
+ ])
3691
+ .then(function processResponse(response) {
3692
+ return response.results[0];
3693
+ });
3694
+ }
3662
3695
 
3663
3696
  this.emit('searchForFacetValues', {
3664
3697
  state: state,
@@ -3666,10 +3699,6 @@ AlgoliaSearchHelper.prototype.searchForFacetValues = function(facet, query, maxF
3666
3699
  query: query
3667
3700
  });
3668
3701
 
3669
- var searchForFacetValuesPromise = clientHasSFFV
3670
- ? this.client.searchForFacetValues([{indexName: state.index, params: algoliaQuery}])
3671
- : this.client.initIndex(state.index).searchForFacetValues(algoliaQuery);
3672
-
3673
3702
  return searchForFacetValuesPromise.then(function addIsRefined(content) {
3674
3703
  self._currentNbQueries--;
3675
3704
  if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');
@@ -5167,6 +5196,17 @@ module.exports = valToNumber;
5167
5196
 
5168
5197
  var merge = require('./functions/merge');
5169
5198
 
5199
+ function sortObject(obj) {
5200
+ return Object.keys(obj)
5201
+ .sort(function(a, b) {
5202
+ return a.localeCompare(b);
5203
+ })
5204
+ .reduce(function(acc, curr) {
5205
+ acc[curr] = obj[curr];
5206
+ return acc;
5207
+ }, {});
5208
+ }
5209
+
5170
5210
  var requestBuilder = {
5171
5211
  /**
5172
5212
  * Get all the queries to send to the client, those queries can used directly
@@ -5191,18 +5231,38 @@ var requestBuilder = {
5191
5231
  });
5192
5232
  });
5193
5233
 
5194
- // maybe more to get the root level of hierarchical facets when activated
5234
+ // More to get the parent levels of the hierarchical facets when refined
5195
5235
  state.getRefinedHierarchicalFacets().forEach(function(refinedFacet) {
5196
5236
  var hierarchicalFacet = state.getHierarchicalFacetByName(refinedFacet);
5197
-
5198
5237
  var currentRefinement = state.getHierarchicalRefinement(refinedFacet);
5199
- // if we are deeper than level 0 (starting from `beer > IPA`)
5200
- // we want to get the root values
5201
5238
  var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);
5239
+
5240
+ // If we are deeper than level 0 (starting from `beer > IPA`)
5241
+ // we want to get all parent values
5202
5242
  if (currentRefinement.length > 0 && currentRefinement[0].split(separator).length > 1) {
5203
- queries.push({
5204
- indexName: index,
5205
- params: requestBuilder._getDisjunctiveFacetSearchParams(state, refinedFacet, true)
5243
+ // We generate a map of the filters we will use for our facet values queries
5244
+ var filtersMap = currentRefinement[0].split(separator).slice(0, -1).reduce(
5245
+ function createFiltersMap(map, segment, level) {
5246
+ return map.concat({
5247
+ attribute: hierarchicalFacet.attributes[level],
5248
+ value: level === 0
5249
+ ? segment
5250
+ : [map[map.length - 1].value, segment].join(separator)
5251
+ });
5252
+ }
5253
+ , []);
5254
+
5255
+ filtersMap.forEach(function(filter, level) {
5256
+ var params = requestBuilder._getDisjunctiveFacetSearchParams(
5257
+ state,
5258
+ filter.attribute,
5259
+ level === 0
5260
+ );
5261
+
5262
+ var parent = filtersMap[level - 1];
5263
+ params.facetFilters = level > 0 ? [parent.attribute + ':' + parent.value] : undefined;
5264
+
5265
+ queries.push({indexName: index, params: params});
5206
5266
  });
5207
5267
  }
5208
5268
  });
@@ -5237,7 +5297,7 @@ var requestBuilder = {
5237
5297
  additionalParams.numericFilters = numericFilters;
5238
5298
  }
5239
5299
 
5240
- return merge({}, state.getQueryParams(), additionalParams);
5300
+ return sortObject(merge({}, state.getQueryParams(), additionalParams));
5241
5301
  },
5242
5302
 
5243
5303
  /**
@@ -5282,7 +5342,7 @@ var requestBuilder = {
5282
5342
  additionalParams.facetFilters = facetFilters;
5283
5343
  }
5284
5344
 
5285
- return merge({}, state.getQueryParams(), additionalParams);
5345
+ return sortObject(merge({}, state.getQueryParams(), additionalParams));
5286
5346
  },
5287
5347
 
5288
5348
  /**
@@ -5475,11 +5535,11 @@ var requestBuilder = {
5475
5535
  if (typeof maxFacetHits === 'number') {
5476
5536
  searchForFacetSearchParameters.maxFacetHits = maxFacetHits;
5477
5537
  }
5478
- return merge(
5538
+ return sortObject(merge(
5479
5539
  {},
5480
5540
  requestBuilder._getHitsSearchParams(stateForSearchForFacetValues),
5481
5541
  searchForFacetSearchParameters
5482
- );
5542
+ ));
5483
5543
  }
5484
5544
  };
5485
5545
 
@@ -5498,7 +5558,7 @@ module.exports = function isValidUserToken(userToken) {
5498
5558
  },{}],24:[function(require,module,exports){
5499
5559
  'use strict';
5500
5560
 
5501
- module.exports = '3.8.1';
5561
+ module.exports = '3.9.0';
5502
5562
 
5503
5563
  },{}]},{},[1])(1)
5504
5564
  });