vue-instantsearch 4.7.0 → 4.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. package/README.md +14 -2
  2. package/package.json +19 -103
  3. package/src/__tests__/index.js +12 -3
  4. package/src/components/Autocomplete.vue +4 -5
  5. package/src/components/Breadcrumb.vue +9 -6
  6. package/src/components/ClearRefinements.vue +2 -5
  7. package/src/components/Configure.js +1 -1
  8. package/src/components/CurrentRefinements.vue +6 -9
  9. package/src/components/DynamicWidgets.js +6 -4
  10. package/src/components/HierarchicalMenu.vue +4 -5
  11. package/src/components/HierarchicalMenuList.vue +3 -6
  12. package/src/components/Highlighter.vue +6 -7
  13. package/src/components/Hits.vue +4 -5
  14. package/src/components/HitsPerPage.vue +8 -13
  15. package/src/components/Index.js +1 -1
  16. package/src/components/InfiniteHits.vue +18 -10
  17. package/src/components/InstantSearch.js +1 -1
  18. package/src/components/InstantSearchSsr.js +1 -1
  19. package/src/components/Menu.vue +7 -5
  20. package/src/components/MenuSelect.vue +5 -9
  21. package/src/components/NumericMenu.vue +1 -1
  22. package/src/components/Pagination.vue +20 -30
  23. package/src/components/Panel.vue +4 -16
  24. package/src/components/PoweredBy.vue +2 -2
  25. package/src/components/QueryRuleCustomData.vue +3 -12
  26. package/src/components/RangeInput.vue +10 -8
  27. package/src/components/RatingMenu.vue +11 -22
  28. package/src/components/RefinementList.vue +12 -29
  29. package/src/components/RelevantSort.vue +9 -21
  30. package/src/components/SearchBox.vue +10 -40
  31. package/src/components/SearchInput.vue +12 -17
  32. package/src/components/SortBy.vue +4 -5
  33. package/src/components/StateResults.vue +2 -7
  34. package/src/components/Stats.vue +8 -5
  35. package/src/components/ToggleRefinement.vue +4 -5
  36. package/src/components/VoiceSearch.vue +10 -50
  37. package/src/components/__Template.vue +7 -17
  38. package/src/components/__tests__/Autocomplete.js +7 -1
  39. package/src/components/__tests__/Breadcrumb.js +7 -2
  40. package/src/components/__tests__/ClearRefinements.js +6 -1
  41. package/src/components/__tests__/Configure.js +7 -2
  42. package/src/components/__tests__/ConfigureRelatedItems.js +7 -2
  43. package/src/components/__tests__/CurrentRefinements.js +6 -0
  44. package/src/components/__tests__/DynamicWidgets.js +8 -3
  45. package/src/components/__tests__/ExperimentalDynamicWidgets.js +9 -1
  46. package/src/components/__tests__/HierarchicalMenu.js +12 -4
  47. package/src/components/__tests__/Highlight.js +5 -0
  48. package/src/components/__tests__/Hits.js +5 -0
  49. package/src/components/__tests__/HitsPerPage.js +5 -0
  50. package/src/components/__tests__/Index-integration.js +5 -0
  51. package/src/components/__tests__/Index.js +7 -1
  52. package/src/components/__tests__/InfiniteHits.js +7 -2
  53. package/src/components/__tests__/InstantSearch-integration.js +6 -1
  54. package/src/components/__tests__/InstantSearch.js +18 -5
  55. package/src/components/__tests__/InstantSearchSsr.js +6 -1
  56. package/src/components/__tests__/Menu.js +8 -3
  57. package/src/components/__tests__/MenuSelect.js +5 -0
  58. package/src/components/__tests__/NumericMenu.js +6 -1
  59. package/src/components/__tests__/Pagination.js +5 -0
  60. package/src/components/__tests__/Panel.js +5 -0
  61. package/src/components/__tests__/PoweredBy.js +6 -1
  62. package/src/components/__tests__/QueryRuleContext.js +5 -0
  63. package/src/components/__tests__/QueryRuleCustomData.js +5 -0
  64. package/src/components/__tests__/RangeInput.js +5 -0
  65. package/src/components/__tests__/RatingMenu.js +5 -0
  66. package/src/components/__tests__/RefinementList.js +7 -2
  67. package/src/components/__tests__/RelevantSort.js +7 -1
  68. package/src/components/__tests__/SearchBox.js +15 -10
  69. package/src/components/__tests__/Snippet.js +5 -0
  70. package/src/components/__tests__/SortBy.js +5 -0
  71. package/src/components/__tests__/StateResults.js +35 -9
  72. package/src/components/__tests__/Stats.js +5 -0
  73. package/src/components/__tests__/ToggleRefinement.js +5 -0
  74. package/src/components/__tests__/VoiceSearch.js +6 -1
  75. package/src/components/__tests__/__Template.js +5 -0
  76. package/src/components/__tests__/__snapshots__/PoweredBy.js.snap +2 -2
  77. package/src/components/__tests__/__snapshots__/__Template.js.snap +0 -345
  78. package/src/connectors/connectStateResults.js +31 -31
  79. package/src/mixins/__tests__/panel.test.js +4 -0
  80. package/src/mixins/__tests__/suit.test.js +4 -0
  81. package/src/mixins/__tests__/widget.test.js +8 -4
  82. package/src/mixins/panel.js +2 -2
  83. package/src/plugin.js +1 -1
  84. package/src/util/__tests__/createServerRootMixin.test.js +266 -206
  85. package/src/util/__tests__/parseAlgoliaHit.test.js +1 -1
  86. package/src/util/createInstantSearchComponent.js +7 -7
  87. package/src/util/createServerRootMixin.js +17 -16
  88. package/src/util/parseAlgoliaHit.js +3 -3
  89. package/src/util/polyfills.js +1 -0
  90. package/src/util/testutils/client.js +1 -1
  91. package/src/util/unescape.js +1 -1
  92. package/src/util/vue-compat/index-vue2.js +1 -1
  93. package/src/util/vue-compat/index-vue3.js +1 -1
  94. package/src/widgets.js +7 -21
  95. package/vue2/cjs/index.js +1 -1
  96. package/vue2/cjs/index.js.map +1 -1
  97. package/vue2/es/package.json.js +1 -1
  98. package/vue2/es/src/components/Autocomplete.vue.js +1 -1
  99. package/vue2/es/src/components/Autocomplete.vue.js.map +1 -1
  100. package/vue2/es/src/components/Autocomplete.vue_rollup-plugin-vue=script.js +2 -0
  101. package/vue2/es/src/components/Autocomplete.vue_rollup-plugin-vue=script.js.map +1 -0
  102. package/vue2/es/src/components/Breadcrumb.vue.js +1 -1
  103. package/vue2/es/src/components/Breadcrumb.vue.js.map +1 -1
  104. package/vue2/es/src/components/Breadcrumb.vue_rollup-plugin-vue=script.js +2 -0
  105. package/vue2/es/src/components/Breadcrumb.vue_rollup-plugin-vue=script.js.map +1 -0
  106. package/vue2/es/src/components/ClearRefinements.vue.js +1 -1
  107. package/vue2/es/src/components/ClearRefinements.vue.js.map +1 -1
  108. package/vue2/es/src/components/ClearRefinements.vue_rollup-plugin-vue=script.js +2 -0
  109. package/vue2/es/src/components/ClearRefinements.vue_rollup-plugin-vue=script.js.map +1 -0
  110. package/vue2/es/src/components/Configure.js.map +1 -1
  111. package/vue2/es/src/components/ConfigureRelatedItems.js.map +1 -1
  112. package/vue2/es/src/components/CurrentRefinements.vue.js +1 -1
  113. package/vue2/es/src/components/CurrentRefinements.vue.js.map +1 -1
  114. package/vue2/es/src/components/CurrentRefinements.vue_rollup-plugin-vue=script.js +2 -0
  115. package/vue2/es/src/components/CurrentRefinements.vue_rollup-plugin-vue=script.js.map +1 -0
  116. package/vue2/es/src/components/DynamicWidgets.js.map +1 -1
  117. package/vue2/es/src/components/HierarchicalMenu.vue.js +1 -1
  118. package/vue2/es/src/components/HierarchicalMenu.vue.js.map +1 -1
  119. package/vue2/es/src/components/HierarchicalMenu.vue_rollup-plugin-vue=script.js +2 -0
  120. package/vue2/es/src/components/HierarchicalMenu.vue_rollup-plugin-vue=script.js.map +1 -0
  121. package/vue2/es/src/components/HierarchicalMenuList.vue.js +1 -1
  122. package/vue2/es/src/components/HierarchicalMenuList.vue.js.map +1 -1
  123. package/vue2/es/src/components/HierarchicalMenuList.vue_rollup-plugin-vue=script.js +2 -0
  124. package/vue2/es/src/components/HierarchicalMenuList.vue_rollup-plugin-vue=script.js.map +1 -0
  125. package/vue2/es/src/components/Highlight.vue.js +1 -1
  126. package/vue2/es/src/components/Highlight.vue.js.map +1 -1
  127. package/vue2/es/src/components/Highlight.vue_rollup-plugin-vue=script.js +2 -0
  128. package/vue2/es/src/components/Highlight.vue_rollup-plugin-vue=script.js.map +1 -0
  129. package/vue2/es/src/components/Highlighter.vue.js +1 -1
  130. package/vue2/es/src/components/Highlighter.vue.js.map +1 -1
  131. package/vue2/es/src/components/Highlighter.vue_rollup-plugin-vue=script.js +2 -0
  132. package/vue2/es/src/components/Highlighter.vue_rollup-plugin-vue=script.js.map +1 -0
  133. package/vue2/es/src/components/Hits.vue.js +1 -1
  134. package/vue2/es/src/components/Hits.vue.js.map +1 -1
  135. package/vue2/es/src/components/Hits.vue_rollup-plugin-vue=script.js +2 -0
  136. package/vue2/es/src/components/Hits.vue_rollup-plugin-vue=script.js.map +1 -0
  137. package/vue2/es/src/components/HitsPerPage.vue.js +1 -1
  138. package/vue2/es/src/components/HitsPerPage.vue.js.map +1 -1
  139. package/vue2/es/src/components/HitsPerPage.vue_rollup-plugin-vue=script.js +2 -0
  140. package/vue2/es/src/components/HitsPerPage.vue_rollup-plugin-vue=script.js.map +1 -0
  141. package/vue2/es/src/components/Index.js.map +1 -1
  142. package/vue2/es/src/components/InfiniteHits.vue.js +1 -1
  143. package/vue2/es/src/components/InfiniteHits.vue.js.map +1 -1
  144. package/vue2/es/src/components/InfiniteHits.vue_rollup-plugin-vue=script.js +2 -0
  145. package/vue2/es/src/components/InfiniteHits.vue_rollup-plugin-vue=script.js.map +1 -0
  146. package/vue2/es/src/components/InstantSearch.js.map +1 -1
  147. package/vue2/es/src/components/InstantSearchSsr.js.map +1 -1
  148. package/vue2/es/src/components/Menu.vue.js +1 -1
  149. package/vue2/es/src/components/Menu.vue.js.map +1 -1
  150. package/vue2/es/src/components/Menu.vue_rollup-plugin-vue=script.js +2 -0
  151. package/vue2/es/src/components/Menu.vue_rollup-plugin-vue=script.js.map +1 -0
  152. package/vue2/es/src/components/MenuSelect.vue.js +1 -1
  153. package/vue2/es/src/components/MenuSelect.vue.js.map +1 -1
  154. package/vue2/es/src/components/MenuSelect.vue_rollup-plugin-vue=script.js +2 -0
  155. package/vue2/es/src/components/MenuSelect.vue_rollup-plugin-vue=script.js.map +1 -0
  156. package/vue2/es/src/components/NumericMenu.vue.js +1 -1
  157. package/vue2/es/src/components/NumericMenu.vue.js.map +1 -1
  158. package/vue2/es/src/components/NumericMenu.vue_rollup-plugin-vue=script.js +2 -0
  159. package/vue2/es/src/components/NumericMenu.vue_rollup-plugin-vue=script.js.map +1 -0
  160. package/vue2/es/src/components/Pagination.vue.js +1 -1
  161. package/vue2/es/src/components/Pagination.vue.js.map +1 -1
  162. package/vue2/es/src/components/Pagination.vue_rollup-plugin-vue=script.js +2 -0
  163. package/vue2/es/src/components/Pagination.vue_rollup-plugin-vue=script.js.map +1 -0
  164. package/vue2/es/src/components/Panel.vue.js +1 -1
  165. package/vue2/es/src/components/Panel.vue.js.map +1 -1
  166. package/vue2/es/src/components/Panel.vue_rollup-plugin-vue=script.js +2 -0
  167. package/vue2/es/src/components/Panel.vue_rollup-plugin-vue=script.js.map +1 -0
  168. package/vue2/es/src/components/PoweredBy.vue.js +1 -1
  169. package/vue2/es/src/components/PoweredBy.vue.js.map +1 -1
  170. package/vue2/es/src/components/PoweredBy.vue_rollup-plugin-vue=script.js +2 -0
  171. package/vue2/es/src/components/PoweredBy.vue_rollup-plugin-vue=script.js.map +1 -0
  172. package/vue2/es/src/components/QueryRuleContext.js.map +1 -1
  173. package/vue2/es/src/components/QueryRuleCustomData.vue.js +1 -1
  174. package/vue2/es/src/components/QueryRuleCustomData.vue.js.map +1 -1
  175. package/vue2/es/src/components/QueryRuleCustomData.vue_rollup-plugin-vue=script.js +2 -0
  176. package/vue2/es/src/components/QueryRuleCustomData.vue_rollup-plugin-vue=script.js.map +1 -0
  177. package/vue2/es/src/components/RangeInput.vue.js +1 -1
  178. package/vue2/es/src/components/RangeInput.vue.js.map +1 -1
  179. package/vue2/es/src/components/RangeInput.vue_rollup-plugin-vue=script.js +2 -0
  180. package/vue2/es/src/components/RangeInput.vue_rollup-plugin-vue=script.js.map +1 -0
  181. package/vue2/es/src/components/RatingMenu.vue.js +1 -1
  182. package/vue2/es/src/components/RatingMenu.vue.js.map +1 -1
  183. package/vue2/es/src/components/RatingMenu.vue_rollup-plugin-vue=script.js +2 -0
  184. package/vue2/es/src/components/RatingMenu.vue_rollup-plugin-vue=script.js.map +1 -0
  185. package/vue2/es/src/components/RefinementList.vue.js +1 -1
  186. package/vue2/es/src/components/RefinementList.vue.js.map +1 -1
  187. package/vue2/es/src/components/RefinementList.vue_rollup-plugin-vue=script.js +2 -0
  188. package/vue2/es/src/components/RefinementList.vue_rollup-plugin-vue=script.js.map +1 -0
  189. package/vue2/es/src/components/RelevantSort.vue.js +1 -1
  190. package/vue2/es/src/components/RelevantSort.vue.js.map +1 -1
  191. package/vue2/es/src/components/RelevantSort.vue_rollup-plugin-vue=script.js +2 -0
  192. package/vue2/es/src/components/RelevantSort.vue_rollup-plugin-vue=script.js.map +1 -0
  193. package/vue2/es/src/components/SearchBox.vue.js +1 -1
  194. package/vue2/es/src/components/SearchBox.vue.js.map +1 -1
  195. package/vue2/es/src/components/SearchBox.vue_rollup-plugin-vue=script.js +2 -0
  196. package/vue2/es/src/components/SearchBox.vue_rollup-plugin-vue=script.js.map +1 -0
  197. package/vue2/es/src/components/SearchInput.vue.js +1 -1
  198. package/vue2/es/src/components/SearchInput.vue.js.map +1 -1
  199. package/vue2/es/src/components/SearchInput.vue_rollup-plugin-vue=script.js +2 -0
  200. package/vue2/es/src/components/SearchInput.vue_rollup-plugin-vue=script.js.map +1 -0
  201. package/vue2/es/src/components/Snippet.vue.js +1 -1
  202. package/vue2/es/src/components/Snippet.vue.js.map +1 -1
  203. package/vue2/es/src/components/Snippet.vue_rollup-plugin-vue=script.js +2 -0
  204. package/vue2/es/src/components/Snippet.vue_rollup-plugin-vue=script.js.map +1 -0
  205. package/vue2/es/src/components/SortBy.vue.js +1 -1
  206. package/vue2/es/src/components/SortBy.vue.js.map +1 -1
  207. package/vue2/es/src/components/SortBy.vue_rollup-plugin-vue=script.js +2 -0
  208. package/vue2/es/src/components/SortBy.vue_rollup-plugin-vue=script.js.map +1 -0
  209. package/vue2/es/src/components/StateResults.vue.js +1 -1
  210. package/vue2/es/src/components/StateResults.vue.js.map +1 -1
  211. package/vue2/es/src/components/StateResults.vue_rollup-plugin-vue=script.js +2 -0
  212. package/vue2/es/src/components/StateResults.vue_rollup-plugin-vue=script.js.map +1 -0
  213. package/vue2/es/src/components/Stats.vue.js +1 -1
  214. package/vue2/es/src/components/Stats.vue.js.map +1 -1
  215. package/vue2/es/src/components/Stats.vue_rollup-plugin-vue=script.js +2 -0
  216. package/vue2/es/src/components/Stats.vue_rollup-plugin-vue=script.js.map +1 -0
  217. package/vue2/es/src/components/ToggleRefinement.vue.js +1 -1
  218. package/vue2/es/src/components/ToggleRefinement.vue.js.map +1 -1
  219. package/vue2/es/src/components/ToggleRefinement.vue_rollup-plugin-vue=script.js +2 -0
  220. package/vue2/es/src/components/ToggleRefinement.vue_rollup-plugin-vue=script.js.map +1 -0
  221. package/vue2/es/src/components/VoiceSearch.vue.js +1 -1
  222. package/vue2/es/src/components/VoiceSearch.vue.js.map +1 -1
  223. package/vue2/es/src/components/VoiceSearch.vue_rollup-plugin-vue=script.js +2 -0
  224. package/vue2/es/src/components/VoiceSearch.vue_rollup-plugin-vue=script.js.map +1 -0
  225. package/vue2/es/src/mixins/panel.js.map +1 -1
  226. package/vue2/es/src/mixins/suit.js.map +1 -1
  227. package/vue2/es/src/mixins/widget.js.map +1 -1
  228. package/vue2/es/src/plugin.js.map +1 -1
  229. package/vue2/es/src/util/createInstantSearchComponent.js +1 -1
  230. package/vue2/es/src/util/createInstantSearchComponent.js.map +1 -1
  231. package/vue2/es/src/util/createServerRootMixin.js +1 -1
  232. package/vue2/es/src/util/createServerRootMixin.js.map +1 -1
  233. package/vue2/es/src/util/parseAlgoliaHit.js.map +1 -1
  234. package/vue2/es/src/util/polyfills.js.map +1 -1
  235. package/vue2/es/src/util/suit.js.map +1 -1
  236. package/vue2/es/src/util/unescape.js.map +1 -1
  237. package/vue2/es/src/util/vue-compat/index-vue2.js.map +1 -1
  238. package/vue2/umd/index.js +1 -1
  239. package/vue2/umd/index.js.map +1 -1
  240. package/vue3/cjs/index.js +1 -1
  241. package/vue3/cjs/index.js.map +1 -1
  242. package/vue3/es/package.json.js +1 -1
  243. package/vue3/es/src/components/Autocomplete.vue.js +1 -1
  244. package/vue3/es/src/components/Autocomplete.vue_vue&type=script&lang.js.map +1 -1
  245. package/vue3/es/src/components/Autocomplete.vue_vue&type=template&id=7ca53d64&lang.js +2 -0
  246. package/vue3/es/src/components/Autocomplete.vue_vue&type=template&id=7ca53d64&lang.js.map +1 -0
  247. package/vue3/es/src/components/Breadcrumb.vue.js +1 -1
  248. package/vue3/es/src/components/Breadcrumb.vue_vue&type=script&lang.js.map +1 -1
  249. package/vue3/es/src/components/{Breadcrumb.vue_vue&type=template&id=6f46de9a&lang.js → Breadcrumb.vue_vue&type=template&id=5374ac81&lang.js} +2 -2
  250. package/vue3/es/src/components/Breadcrumb.vue_vue&type=template&id=5374ac81&lang.js.map +1 -0
  251. package/vue3/es/src/components/ClearRefinements.vue.js +1 -1
  252. package/vue3/es/src/components/ClearRefinements.vue_vue&type=script&lang.js.map +1 -1
  253. package/vue3/es/src/components/ClearRefinements.vue_vue&type=template&id=1b5799b9&lang.js +2 -0
  254. package/vue3/es/src/components/ClearRefinements.vue_vue&type=template&id=1b5799b9&lang.js.map +1 -0
  255. package/vue3/es/src/components/Configure.js.map +1 -1
  256. package/vue3/es/src/components/ConfigureRelatedItems.js.map +1 -1
  257. package/vue3/es/src/components/CurrentRefinements.vue.js +1 -1
  258. package/vue3/es/src/components/CurrentRefinements.vue_vue&type=script&lang.js.map +1 -1
  259. package/vue3/es/src/components/{CurrentRefinements.vue_vue&type=template&id=4f1917ff&lang.js → CurrentRefinements.vue_vue&type=template&id=6256a290&lang.js} +2 -2
  260. package/vue3/es/src/components/CurrentRefinements.vue_vue&type=template&id=6256a290&lang.js.map +1 -0
  261. package/vue3/es/src/components/DynamicWidgets.js.map +1 -1
  262. package/vue3/es/src/components/HierarchicalMenu.vue.js +1 -1
  263. package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=script&lang.js.map +1 -1
  264. package/vue3/es/src/components/{HierarchicalMenu.vue_vue&type=template&id=4361a0b8&lang.js → HierarchicalMenu.vue_vue&type=template&id=3548a9a1&lang.js} +2 -2
  265. package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=template&id=3548a9a1&lang.js.map +1 -0
  266. package/vue3/es/src/components/HierarchicalMenuList.vue.js +1 -1
  267. package/vue3/es/src/components/HierarchicalMenuList.vue_vue&type=script&lang.js.map +1 -1
  268. package/vue3/es/src/components/{HierarchicalMenuList.vue_vue&type=template&id=0435b314&lang.js → HierarchicalMenuList.vue_vue&type=template&id=45723c6c&lang.js} +2 -2
  269. package/vue3/es/src/components/HierarchicalMenuList.vue_vue&type=template&id=45723c6c&lang.js.map +1 -0
  270. package/vue3/es/src/components/Highlight.vue.js +1 -1
  271. package/vue3/es/src/components/{Highlight.vue_vue&type=template&id=300b0ab4&lang.js → Highlight.vue_vue&type=template&id=7592ff40&lang.js} +1 -1
  272. package/vue3/es/src/components/{Highlight.vue_vue&type=template&id=300b0ab4&lang.js.map → Highlight.vue_vue&type=template&id=7592ff40&lang.js.map} +1 -1
  273. package/vue3/es/src/components/Highlighter.vue.js +1 -1
  274. package/vue3/es/src/components/Highlighter.vue_vue&type=script&lang.js.map +1 -1
  275. package/vue3/es/src/components/{Highlighter.vue_vue&type=template&id=92153c3e&lang.js → Highlighter.vue_vue&type=template&id=11ec06d9&lang.js} +1 -1
  276. package/vue3/es/src/components/Highlighter.vue_vue&type=template&id=11ec06d9&lang.js.map +1 -0
  277. package/vue3/es/src/components/Hits.vue.js +1 -1
  278. package/vue3/es/src/components/Hits.vue_vue&type=script&lang.js.map +1 -1
  279. package/vue3/es/src/components/Hits.vue_vue&type=template&id=5bc4cfef&lang.js +2 -0
  280. package/vue3/es/src/components/Hits.vue_vue&type=template&id=5bc4cfef&lang.js.map +1 -0
  281. package/vue3/es/src/components/HitsPerPage.vue.js +1 -1
  282. package/vue3/es/src/components/HitsPerPage.vue_vue&type=script&lang.js.map +1 -1
  283. package/vue3/es/src/components/{HitsPerPage.vue_vue&type=template&id=74f3ac28&lang.js → HitsPerPage.vue_vue&type=template&id=73c9813e&lang.js} +2 -2
  284. package/vue3/es/src/components/HitsPerPage.vue_vue&type=template&id=73c9813e&lang.js.map +1 -0
  285. package/vue3/es/src/components/Index.js.map +1 -1
  286. package/vue3/es/src/components/InfiniteHits.vue.js +1 -1
  287. package/vue3/es/src/components/InfiniteHits.vue_vue&type=script&lang.js.map +1 -1
  288. package/vue3/es/src/components/InfiniteHits.vue_vue&type=template&id=0e2ba520&lang.js +2 -0
  289. package/vue3/es/src/components/InfiniteHits.vue_vue&type=template&id=0e2ba520&lang.js.map +1 -0
  290. package/vue3/es/src/components/InstantSearch.js.map +1 -1
  291. package/vue3/es/src/components/InstantSearchSsr.js.map +1 -1
  292. package/vue3/es/src/components/Menu.vue.js +1 -1
  293. package/vue3/es/src/components/Menu.vue_vue&type=script&lang.js.map +1 -1
  294. package/vue3/es/src/components/{Menu.vue_vue&type=template&id=9bcc0be2&lang.js → Menu.vue_vue&type=template&id=577979d0&lang.js} +2 -2
  295. package/vue3/es/src/components/Menu.vue_vue&type=template&id=577979d0&lang.js.map +1 -0
  296. package/vue3/es/src/components/MenuSelect.vue.js +1 -1
  297. package/vue3/es/src/components/MenuSelect.vue_vue&type=script&lang.js.map +1 -1
  298. package/vue3/es/src/components/MenuSelect.vue_vue&type=template&id=12bad393&lang.js +2 -0
  299. package/vue3/es/src/components/MenuSelect.vue_vue&type=template&id=12bad393&lang.js.map +1 -0
  300. package/vue3/es/src/components/NumericMenu.vue.js +1 -1
  301. package/vue3/es/src/components/NumericMenu.vue_vue&type=script&lang.js.map +1 -1
  302. package/vue3/es/src/components/{NumericMenu.vue_vue&type=template&id=160fae0c&lang.js → NumericMenu.vue_vue&type=template&id=ada9761c&lang.js} +2 -2
  303. package/vue3/es/src/components/NumericMenu.vue_vue&type=template&id=ada9761c&lang.js.map +1 -0
  304. package/vue3/es/src/components/Pagination.vue.js +1 -1
  305. package/vue3/es/src/components/Pagination.vue_vue&type=script&lang.js.map +1 -1
  306. package/vue3/es/src/components/Pagination.vue_vue&type=template&id=189fc463&lang.js +2 -0
  307. package/vue3/es/src/components/Pagination.vue_vue&type=template&id=189fc463&lang.js.map +1 -0
  308. package/vue3/es/src/components/Panel.vue.js +1 -1
  309. package/vue3/es/src/components/Panel.vue_vue&type=script&lang.js.map +1 -1
  310. package/vue3/es/src/components/Panel.vue_vue&type=template&id=766abb5d&lang.js +2 -0
  311. package/vue3/es/src/components/Panel.vue_vue&type=template&id=766abb5d&lang.js.map +1 -0
  312. package/vue3/es/src/components/PoweredBy.vue.js +1 -1
  313. package/vue3/es/src/components/PoweredBy.vue_vue&type=script&lang.js.map +1 -1
  314. package/vue3/es/src/components/{PoweredBy.vue_vue&type=template&id=3e8d7a5b&lang.js → PoweredBy.vue_vue&type=template&id=85db7eac&lang.js} +1 -1
  315. package/vue3/es/src/components/PoweredBy.vue_vue&type=template&id=85db7eac&lang.js.map +1 -0
  316. package/vue3/es/src/components/QueryRuleContext.js.map +1 -1
  317. package/vue3/es/src/components/QueryRuleCustomData.vue.js +1 -1
  318. package/vue3/es/src/components/QueryRuleCustomData.vue_vue&type=script&lang.js.map +1 -1
  319. package/vue3/es/src/components/QueryRuleCustomData.vue_vue&type=template&id=31c98630&lang.js +2 -0
  320. package/vue3/es/src/components/QueryRuleCustomData.vue_vue&type=template&id=31c98630&lang.js.map +1 -0
  321. package/vue3/es/src/components/RangeInput.vue.js +1 -1
  322. package/vue3/es/src/components/RangeInput.vue_vue&type=script&lang.js.map +1 -1
  323. package/vue3/es/src/components/RangeInput.vue_vue&type=template&id=2c7c21d8&lang.js +2 -0
  324. package/vue3/es/src/components/RangeInput.vue_vue&type=template&id=2c7c21d8&lang.js.map +1 -0
  325. package/vue3/es/src/components/RatingMenu.vue.js +1 -1
  326. package/vue3/es/src/components/RatingMenu.vue_vue&type=script&lang.js.map +1 -1
  327. package/vue3/es/src/components/{RatingMenu.vue_vue&type=template&id=9254de68&lang.js → RatingMenu.vue_vue&type=template&id=0fb40347&lang.js} +2 -2
  328. package/vue3/es/src/components/RatingMenu.vue_vue&type=template&id=0fb40347&lang.js.map +1 -0
  329. package/vue3/es/src/components/RefinementList.vue.js +1 -1
  330. package/vue3/es/src/components/RefinementList.vue_vue&type=script&lang.js.map +1 -1
  331. package/vue3/es/src/components/RefinementList.vue_vue&type=template&id=00083417&lang.js +2 -0
  332. package/vue3/es/src/components/RefinementList.vue_vue&type=template&id=00083417&lang.js.map +1 -0
  333. package/vue3/es/src/components/RelevantSort.vue.js +1 -1
  334. package/vue3/es/src/components/RelevantSort.vue_vue&type=script&lang.js.map +1 -1
  335. package/vue3/es/src/components/RelevantSort.vue_vue&type=template&id=0d400606&lang.js +2 -0
  336. package/vue3/es/src/components/RelevantSort.vue_vue&type=template&id=0d400606&lang.js.map +1 -0
  337. package/vue3/es/src/components/SearchBox.vue.js +1 -1
  338. package/vue3/es/src/components/SearchBox.vue_vue&type=script&lang.js.map +1 -1
  339. package/vue3/es/src/components/SearchBox.vue_vue&type=template&id=30bd05ae&lang.js +2 -0
  340. package/vue3/es/src/components/SearchBox.vue_vue&type=template&id=30bd05ae&lang.js.map +1 -0
  341. package/vue3/es/src/components/SearchInput.vue.js +1 -1
  342. package/vue3/es/src/components/SearchInput.vue_vue&type=script&lang.js.map +1 -1
  343. package/vue3/es/src/components/SearchInput.vue_vue&type=template&id=084af36e&lang.js +2 -0
  344. package/vue3/es/src/components/SearchInput.vue_vue&type=template&id=084af36e&lang.js.map +1 -0
  345. package/vue3/es/src/components/Snippet.vue.js +1 -1
  346. package/vue3/es/src/components/{Snippet.vue_vue&type=template&id=eb4966c6&lang.js → Snippet.vue_vue&type=template&id=1cd4c392&lang.js} +1 -1
  347. package/vue3/es/src/components/{Snippet.vue_vue&type=template&id=eb4966c6&lang.js.map → Snippet.vue_vue&type=template&id=1cd4c392&lang.js.map} +1 -1
  348. package/vue3/es/src/components/SortBy.vue.js +1 -1
  349. package/vue3/es/src/components/SortBy.vue_vue&type=script&lang.js.map +1 -1
  350. package/vue3/es/src/components/{SortBy.vue_vue&type=template&id=b69b3b76&lang.js → SortBy.vue_vue&type=template&id=6a94a4c1&lang.js} +2 -2
  351. package/vue3/es/src/components/SortBy.vue_vue&type=template&id=6a94a4c1&lang.js.map +1 -0
  352. package/vue3/es/src/components/StateResults.vue.js +1 -1
  353. package/vue3/es/src/components/StateResults.vue_vue&type=script&lang.js.map +1 -1
  354. package/vue3/es/src/components/StateResults.vue_vue&type=template&id=2ea5b184&lang.js +2 -0
  355. package/vue3/es/src/components/StateResults.vue_vue&type=template&id=2ea5b184&lang.js.map +1 -0
  356. package/vue3/es/src/components/Stats.vue.js +1 -1
  357. package/vue3/es/src/components/Stats.vue_vue&type=script&lang.js.map +1 -1
  358. package/vue3/es/src/components/{Stats.vue_vue&type=template&id=7337491f&lang.js → Stats.vue_vue&type=template&id=05ff9d6a&lang.js} +2 -2
  359. package/vue3/es/src/components/Stats.vue_vue&type=template&id=05ff9d6a&lang.js.map +1 -0
  360. package/vue3/es/src/components/ToggleRefinement.vue.js +1 -1
  361. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=script&lang.js.map +1 -1
  362. package/vue3/es/src/components/{ToggleRefinement.vue_vue&type=template&id=14e4586f&lang.js → ToggleRefinement.vue_vue&type=template&id=461db228&lang.js} +2 -2
  363. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=template&id=461db228&lang.js.map +1 -0
  364. package/vue3/es/src/components/VoiceSearch.vue.js +1 -1
  365. package/vue3/es/src/components/VoiceSearch.vue_vue&type=script&lang.js.map +1 -1
  366. package/vue3/es/src/components/{VoiceSearch.vue_vue&type=template&id=24b0f67a&lang.js → VoiceSearch.vue_vue&type=template&id=1cf17560&lang.js} +2 -2
  367. package/vue3/es/src/components/VoiceSearch.vue_vue&type=template&id=1cf17560&lang.js.map +1 -0
  368. package/vue3/es/src/mixins/panel.js.map +1 -1
  369. package/vue3/es/src/mixins/suit.js.map +1 -1
  370. package/vue3/es/src/mixins/widget.js.map +1 -1
  371. package/vue3/es/src/plugin.js.map +1 -1
  372. package/vue3/es/src/util/createInstantSearchComponent.js +1 -1
  373. package/vue3/es/src/util/createInstantSearchComponent.js.map +1 -1
  374. package/vue3/es/src/util/createServerRootMixin.js +1 -1
  375. package/vue3/es/src/util/createServerRootMixin.js.map +1 -1
  376. package/vue3/es/src/util/parseAlgoliaHit.js.map +1 -1
  377. package/vue3/es/src/util/polyfills.js.map +1 -1
  378. package/vue3/es/src/util/suit.js.map +1 -1
  379. package/vue3/es/src/util/unescape.js.map +1 -1
  380. package/vue3/es/src/util/vue-compat/index-vue3.js.map +1 -1
  381. package/vue3/umd/index.js +1 -1
  382. package/vue3/umd/index.js.map +1 -1
  383. package/CHANGELOG.md +0 -892
  384. package/vue3/es/src/components/Autocomplete.vue_vue&type=template&id=e7c95fd0&lang.js +0 -2
  385. package/vue3/es/src/components/Autocomplete.vue_vue&type=template&id=e7c95fd0&lang.js.map +0 -1
  386. package/vue3/es/src/components/Breadcrumb.vue_vue&type=template&id=6f46de9a&lang.js.map +0 -1
  387. package/vue3/es/src/components/ClearRefinements.vue_vue&type=template&id=410a3aaa&lang.js +0 -2
  388. package/vue3/es/src/components/ClearRefinements.vue_vue&type=template&id=410a3aaa&lang.js.map +0 -1
  389. package/vue3/es/src/components/CurrentRefinements.vue_vue&type=template&id=4f1917ff&lang.js.map +0 -1
  390. package/vue3/es/src/components/HierarchicalMenu.vue_vue&type=template&id=4361a0b8&lang.js.map +0 -1
  391. package/vue3/es/src/components/HierarchicalMenuList.vue_vue&type=template&id=0435b314&lang.js.map +0 -1
  392. package/vue3/es/src/components/Highlighter.vue_vue&type=template&id=92153c3e&lang.js.map +0 -1
  393. package/vue3/es/src/components/Hits.vue_vue&type=template&id=ef242920&lang.js +0 -2
  394. package/vue3/es/src/components/Hits.vue_vue&type=template&id=ef242920&lang.js.map +0 -1
  395. package/vue3/es/src/components/HitsPerPage.vue_vue&type=template&id=74f3ac28&lang.js.map +0 -1
  396. package/vue3/es/src/components/InfiniteHits.vue_vue&type=template&id=dcfb64b8&lang.js +0 -2
  397. package/vue3/es/src/components/InfiniteHits.vue_vue&type=template&id=dcfb64b8&lang.js.map +0 -1
  398. package/vue3/es/src/components/Menu.vue_vue&type=template&id=9bcc0be2&lang.js.map +0 -1
  399. package/vue3/es/src/components/MenuSelect.vue_vue&type=template&id=694477eb&lang.js +0 -2
  400. package/vue3/es/src/components/MenuSelect.vue_vue&type=template&id=694477eb&lang.js.map +0 -1
  401. package/vue3/es/src/components/NumericMenu.vue_vue&type=template&id=160fae0c&lang.js.map +0 -1
  402. package/vue3/es/src/components/Pagination.vue_vue&type=template&id=849a166c&lang.js +0 -2
  403. package/vue3/es/src/components/Pagination.vue_vue&type=template&id=849a166c&lang.js.map +0 -1
  404. package/vue3/es/src/components/Panel.vue_vue&type=template&id=d32d57f8&lang.js +0 -2
  405. package/vue3/es/src/components/Panel.vue_vue&type=template&id=d32d57f8&lang.js.map +0 -1
  406. package/vue3/es/src/components/PoweredBy.vue_vue&type=template&id=3e8d7a5b&lang.js.map +0 -1
  407. package/vue3/es/src/components/QueryRuleCustomData.vue_vue&type=template&id=e4da0782&lang.js +0 -2
  408. package/vue3/es/src/components/QueryRuleCustomData.vue_vue&type=template&id=e4da0782&lang.js.map +0 -1
  409. package/vue3/es/src/components/RangeInput.vue_vue&type=template&id=1e17783d&lang.js +0 -2
  410. package/vue3/es/src/components/RangeInput.vue_vue&type=template&id=1e17783d&lang.js.map +0 -1
  411. package/vue3/es/src/components/RatingMenu.vue_vue&type=template&id=9254de68&lang.js.map +0 -1
  412. package/vue3/es/src/components/RefinementList.vue_vue&type=template&id=28927239&lang.js +0 -2
  413. package/vue3/es/src/components/RefinementList.vue_vue&type=template&id=28927239&lang.js.map +0 -1
  414. package/vue3/es/src/components/RelevantSort.vue_vue&type=template&id=257b248b&lang.js +0 -2
  415. package/vue3/es/src/components/RelevantSort.vue_vue&type=template&id=257b248b&lang.js.map +0 -1
  416. package/vue3/es/src/components/SearchBox.vue_vue&type=template&id=27029d83&lang.js +0 -2
  417. package/vue3/es/src/components/SearchBox.vue_vue&type=template&id=27029d83&lang.js.map +0 -1
  418. package/vue3/es/src/components/SearchInput.vue_vue&type=template&id=2eed8ffc&lang.js +0 -2
  419. package/vue3/es/src/components/SearchInput.vue_vue&type=template&id=2eed8ffc&lang.js.map +0 -1
  420. package/vue3/es/src/components/SortBy.vue_vue&type=template&id=b69b3b76&lang.js.map +0 -1
  421. package/vue3/es/src/components/StateResults.vue_vue&type=template&id=5992f3d5&lang.js +0 -2
  422. package/vue3/es/src/components/StateResults.vue_vue&type=template&id=5992f3d5&lang.js.map +0 -1
  423. package/vue3/es/src/components/Stats.vue_vue&type=template&id=7337491f&lang.js.map +0 -1
  424. package/vue3/es/src/components/ToggleRefinement.vue_vue&type=template&id=14e4586f&lang.js.map +0 -1
  425. package/vue3/es/src/components/VoiceSearch.vue_vue&type=template&id=24b0f67a&lang.js.map +0 -1
@@ -1,3 +1,8 @@
1
+ /**
2
+ * @jest-environment jsdom
3
+ */
4
+
5
+ /* eslint-disable jest/no-done-callback */
1
6
  import { mount, createSSRApp } from '../../../test/utils';
2
7
  import Router from 'vue-router';
3
8
  import Vuex from 'vuex';
@@ -6,6 +11,7 @@ import { createServerRootMixin } from '../createServerRootMixin';
6
11
  import InstantSearchSsr from '../../components/InstantSearchSsr';
7
12
  import Configure from '../../components/Configure';
8
13
  import SearchBox from '../../components/SearchBox.vue';
14
+ import Index from '../../components/Index';
9
15
  import { createWidgetMixin } from '../../mixins/widget';
10
16
  import { createFakeClient } from '../testutils/client';
11
17
  import { createSerializedState } from '../testutils/helper';
@@ -100,7 +106,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/instantsear
100
106
  });
101
107
  });
102
108
 
103
- it('provides the instantsearch instance', done => {
109
+ it('provides the instantsearch instance', (done) => {
104
110
  const App = {
105
111
  mixins: [
106
112
  createServerRootMixin({
@@ -144,23 +150,25 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/instantsear
144
150
  });
145
151
 
146
152
  describe('findResultsState', () => {
147
- it('provides findResultsState', async done => {
148
- const app = createSSRApp({
149
- mixins: [
150
- forceIsServerMixin,
151
- createServerRootMixin({
152
- searchClient: createFakeClient(),
153
- indexName: 'hello',
154
- }),
155
- ],
156
- render: renderCompat(h => h(InstantSearchSsr, {})),
157
- created() {
158
- expect(typeof this.instantsearch.findResultsState).toBe('function');
159
- done();
160
- },
161
- });
153
+ it('provides findResultsState', () => {
154
+ return new Promise((resolve) => {
155
+ const app = createSSRApp({
156
+ mixins: [
157
+ forceIsServerMixin,
158
+ createServerRootMixin({
159
+ searchClient: createFakeClient(),
160
+ indexName: 'hello',
161
+ }),
162
+ ],
163
+ render: renderCompat((h) => h(InstantSearchSsr, {})),
164
+ created() {
165
+ expect(typeof this.instantsearch.findResultsState).toBe('function');
166
+ resolve();
167
+ },
168
+ });
162
169
 
163
- await renderToString(app);
170
+ renderToString(app);
171
+ });
164
172
  });
165
173
 
166
174
  it('requires renderToString', async () => {
@@ -174,7 +182,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/instantsear
174
182
  indexName: 'hello',
175
183
  }),
176
184
  ],
177
- render: renderCompat(h =>
185
+ render: renderCompat((h) =>
178
186
  h(InstantSearchSsr, {}, [
179
187
  h(Configure, {
180
188
  attrs: {
@@ -195,7 +203,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/instantsear
195
203
 
196
204
  const wrapper = createSSRApp({
197
205
  mixins: [forceIsServerMixin],
198
- render: renderCompat(h => h(app)),
206
+ render: renderCompat((h) => h(app)),
199
207
  });
200
208
 
201
209
  await renderToString(wrapper);
@@ -213,7 +221,7 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/instantsear
213
221
  indexName: 'hello',
214
222
  }),
215
223
  ],
216
- render: renderCompat(h =>
224
+ render: renderCompat((h) =>
217
225
  /**
218
226
  * This code triggers this warning in Vue 3:
219
227
  * > Non-function value encountered for default slot. Prefer function slots for better performance.
@@ -247,97 +255,139 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/instantsear
247
255
 
248
256
  const wrapper = createSSRApp({
249
257
  mixins: [forceIsServerMixin],
250
- render: renderCompat(h => h(app)),
258
+ render: renderCompat((h) => h(app)),
251
259
  });
252
260
 
253
261
  await renderToString(wrapper);
254
262
 
255
- expect(mainIndex.getWidgetState()).toMatchInlineSnapshot(`
256
- Object {
257
- "hello": Object {
258
- "configure": Object {
259
- "hitsPerPage": 100,
260
- },
261
- },
262
- }
263
- `);
263
+ expect(mainIndex.getWidgetUiState({})).toMatchInlineSnapshot(`
264
+ {
265
+ "hello": {
266
+ "configure": {
267
+ "hitsPerPage": 100,
268
+ },
269
+ },
270
+ }
271
+ `);
264
272
 
265
273
  expect(searchClient.search).toHaveBeenCalledTimes(1);
266
274
  expect(searchClient.search.mock.calls[0][0]).toMatchInlineSnapshot(`
267
- Array [
268
- Object {
269
- "indexName": "hello",
270
- "params": Object {
271
- "facets": Array [],
272
- "hitsPerPage": 100,
273
- "query": "",
274
- "tagFilters": "",
275
- },
276
- },
277
- ]
278
- `);
275
+ [
276
+ {
277
+ "indexName": "hello",
278
+ "params": {
279
+ "facets": [],
280
+ "hitsPerPage": 100,
281
+ "query": "",
282
+ "tagFilters": "",
283
+ },
284
+ },
285
+ ]
286
+ `);
279
287
  });
280
288
 
281
- it('returns correct results state', async done => {
289
+ it('returns correct results state', () => {
282
290
  const searchClient = createFakeClient();
283
291
 
284
- const app = {
285
- mixins: [
286
- forceIsServerMixin,
287
- createServerRootMixin({
288
- searchClient,
289
- indexName: 'hello',
290
- }),
291
- ],
292
- render: renderCompat(h =>
293
- h(InstantSearchSsr, {}, [
294
- h(Configure, {
295
- attrs: {
296
- hitsPerPage: 100,
297
- },
292
+ return new Promise((resolve, reject) => {
293
+ const app = {
294
+ mixins: [
295
+ forceIsServerMixin,
296
+ createServerRootMixin({
297
+ searchClient,
298
+ indexName: 'hello',
298
299
  }),
299
- h(SearchBox),
300
- ])
301
- ),
302
- async serverPrefetch() {
303
- const state = await this.instantsearch.findResultsState({
304
- component: this,
305
- renderToString,
306
- });
307
- expect(state).toEqual({
308
- hello: {
309
- results: [
300
+ ],
301
+ render: renderCompat((h) =>
302
+ h(InstantSearchSsr, {}, [
303
+ h(Configure, {
304
+ attrs: {
305
+ hitsPerPage: 100,
306
+ },
307
+ }),
308
+ h(SearchBox),
309
+ h(
310
+ Index,
310
311
  {
312
+ attrs: {
313
+ indexName: 'hello',
314
+ indexId: 'nestedIndex',
315
+ },
316
+ },
317
+ []
318
+ ),
319
+ ])
320
+ ),
321
+ async serverPrefetch() {
322
+ const state = await this.instantsearch.findResultsState({
323
+ component: this,
324
+ renderToString,
325
+ });
326
+
327
+ try {
328
+ expect(state).toEqual({
329
+ hello: expect.objectContaining({}),
330
+ nestedIndex: expect.objectContaining({}),
331
+ });
332
+
333
+ expect(state.hello).toEqual({
334
+ results: [
335
+ {
336
+ query: '',
337
+ },
338
+ ],
339
+ state: {
340
+ disjunctiveFacets: [],
341
+ disjunctiveFacetsRefinements: {},
342
+ facets: [],
343
+ facetsExcludes: {},
344
+ facetsRefinements: {},
345
+ hierarchicalFacets: [],
346
+ hierarchicalFacetsRefinements: {},
347
+ hitsPerPage: 100,
348
+ index: 'hello',
349
+ numericRefinements: {},
311
350
  query: '',
351
+ tagRefinements: [],
312
352
  },
313
- ],
314
- state: {
315
- disjunctiveFacets: [],
316
- disjunctiveFacetsRefinements: {},
317
- facets: [],
318
- facetsExcludes: {},
319
- facetsRefinements: {},
320
- hierarchicalFacets: [],
321
- hierarchicalFacetsRefinements: {},
322
- hitsPerPage: 100,
323
- index: 'hello',
324
- numericRefinements: {},
325
- query: '',
326
- tagRefinements: [],
327
- },
328
- },
329
- });
330
- done();
331
- return state;
332
- },
333
- };
353
+ });
354
+
355
+ // Parent's widgets state should not be merged into nested index state
356
+ expect(state.nestedIndex).toEqual({
357
+ results: [
358
+ {
359
+ query: '',
360
+ },
361
+ ],
362
+ state: {
363
+ disjunctiveFacets: [],
364
+ disjunctiveFacetsRefinements: {},
365
+ facets: [],
366
+ facetsExcludes: {},
367
+ facetsRefinements: {},
368
+ hierarchicalFacets: [],
369
+ hierarchicalFacetsRefinements: {},
370
+ index: 'hello',
371
+ numericRefinements: {},
372
+ tagRefinements: [],
373
+ },
374
+ });
375
+ } catch (err) {
376
+ reject(err);
377
+ }
334
378
 
335
- const wrapper = createSSRApp({
336
- mixins: [forceIsServerMixin],
337
- render: renderCompat(h => h(app)),
338
- });
379
+ resolve();
380
+ return state;
381
+ },
382
+ };
339
383
 
340
- await renderToString(wrapper);
384
+ const wrapper = createSSRApp({
385
+ mixins: [forceIsServerMixin],
386
+ render: renderCompat((h) => h(app)),
387
+ });
388
+
389
+ renderToString(wrapper);
390
+ });
341
391
  });
342
392
 
343
393
  it('forwards router', async () => {
@@ -372,7 +422,7 @@ Array [
372
422
  expect(this.$router).toBe(router);
373
423
  return {};
374
424
  },
375
- render: renderCompat(h =>
425
+ render: renderCompat((h) =>
376
426
  h(InstantSearchSsr, {}, [
377
427
  h(Configure, {
378
428
  attrs: {
@@ -392,7 +442,7 @@ Array [
392
442
 
393
443
  const wrapper = createSSRApp({
394
444
  mixins: [forceIsServerMixin],
395
- render: renderCompat(h => h(App)),
445
+ render: renderCompat((h) => h(App)),
396
446
  ...(isVue2 ? { router } : {}),
397
447
  });
398
448
  if (isVue3) {
@@ -425,7 +475,7 @@ Array [
425
475
  expect(this.$store).toBe(store);
426
476
  return {};
427
477
  },
428
- render: renderCompat(h =>
478
+ render: renderCompat((h) =>
429
479
  h(InstantSearchSsr, {}, [
430
480
  h(Configure, {
431
481
  attrs: {
@@ -446,7 +496,7 @@ Array [
446
496
  const wrapper = createSSRApp({
447
497
  mixins: [forceIsServerMixin],
448
498
  ...(isVue2 ? { store } : {}),
449
- render: renderCompat(h => h(App)),
499
+ render: renderCompat((h) => h(App)),
450
500
  });
451
501
 
452
502
  if (isVue3) {
@@ -483,7 +533,7 @@ Array [
483
533
  },
484
534
  },
485
535
  },
486
- render: renderCompat(h =>
536
+ render: renderCompat((h) =>
487
537
  h(InstantSearchSsr, {}, [
488
538
  h(Configure, {
489
539
  attrs: {
@@ -503,66 +553,71 @@ Array [
503
553
 
504
554
  const wrapper = createSSRApp({
505
555
  mixins: [forceIsServerMixin],
506
- render: renderCompat(h => h(App, { props: { someProp } })),
556
+ render: renderCompat((h) => h(App, { props: { someProp } })),
507
557
  });
508
558
 
509
559
  await renderToString(wrapper);
510
560
  });
511
561
 
512
- it('forwards slots', async done => {
562
+ it('forwards slots', () => {
513
563
  const searchClient = createFakeClient();
514
564
 
515
565
  expect.assertions(2);
516
566
 
517
- const App = {
518
- mixins: [
519
- forceIsServerMixin,
520
- createServerRootMixin({
521
- searchClient,
522
- indexName: 'hello',
523
- }),
524
- ],
525
- components: { InstantSearchSsr },
526
- template: `
567
+ return new Promise((resolve, reject) => {
568
+ const App = {
569
+ mixins: [
570
+ forceIsServerMixin,
571
+ createServerRootMixin({
572
+ searchClient,
573
+ indexName: 'hello',
574
+ }),
575
+ ],
576
+ components: { InstantSearchSsr },
577
+ template: `
527
578
  <InstantSearchSsr>
528
579
  <slot />
529
580
  </InstantSearchSsr>
530
581
  `,
531
- serverPrefetch() {
532
- return (
533
- this.instantsearch
534
- .findResultsState({ component: this, renderToString })
535
- .then(res => {
536
- expect(
537
- this.instantsearch.mainIndex.getWidgets().map(w => w.$$type)
538
- ).toEqual(['ais.configure']);
539
-
540
- expect(res.hello.state.hitsPerPage).toBe(100);
541
- })
542
- // jest throws an error we need to catch, since stuck in the flow
543
- .catch(e => {
544
- done.fail(e);
545
- })
546
- );
547
- },
548
- };
582
+ serverPrefetch() {
583
+ return (
584
+ this.instantsearch
585
+ .findResultsState({ component: this, renderToString })
586
+ .then((res) => {
587
+ // eslint-disable-next-line jest/no-conditional-expect
588
+ expect(
589
+ this.instantsearch.mainIndex
590
+ .getWidgets()
591
+ .map((w) => w.$$type)
592
+ ).toEqual(['ais.configure']);
593
+
594
+ // eslint-disable-next-line jest/no-conditional-expect
595
+ expect(res.hello.state.hitsPerPage).toBe(100);
596
+ })
597
+ // jest throws an error we need to catch, since stuck in the flow
598
+ .catch((e) => {
599
+ reject(e);
600
+ })
601
+ );
602
+ },
603
+ };
549
604
 
550
- const wrapper = createSSRApp({
551
- mixins: [forceIsServerMixin],
552
- components: { App, Configure },
553
- template: `
605
+ const wrapper = createSSRApp({
606
+ mixins: [forceIsServerMixin],
607
+ components: { App, Configure },
608
+ template: `
554
609
  <App>
555
610
  <Configure :hits-per-page.camel="100" />
556
611
  </App>
557
612
  `,
558
- });
613
+ });
559
614
 
560
- await renderToString(wrapper);
561
- done();
615
+ renderToString(wrapper).then(resolve);
616
+ });
562
617
  });
563
618
 
564
619
  // TODO: forwarding of scoped slots doesn't yet work.
565
- it.skip('forwards scoped slots', async done => {
620
+ it.skip('forwards scoped slots', async (done) => {
566
621
  const searchClient = createFakeClient();
567
622
 
568
623
  expect.assertions(2);
@@ -575,22 +630,26 @@ Array [
575
630
  indexName: 'hello',
576
631
  }),
577
632
  ],
578
- render: renderCompat(h =>
633
+ render: renderCompat((h) =>
579
634
  h(InstantSearchSsr, {}, [this.$scopedSlots.default({ test: true })])
580
635
  ),
581
636
  serverPrefetch() {
582
637
  return (
583
638
  this.instantsearch
584
639
  .findResultsState({ component: this, renderToString })
585
- .then(res => {
640
+ .then((res) => {
641
+ // eslint-disable-next-line jest/no-conditional-expect
586
642
  expect(
587
- this.instantsearch.mainIndex.getWidgets().map(w => w.$$type)
643
+ this.instantsearch.mainIndex
644
+ .getWidgets()
645
+ .map((w) => w.$$type)
588
646
  ).toEqual(['ais.configure']);
589
647
 
648
+ // eslint-disable-next-line jest/no-conditional-expect
590
649
  expect(res.hello._state.hitsPerPage).toBe(100);
591
650
  })
592
651
  // jest throws an error we need to catch, since stuck in the flow
593
- .catch(e => {
652
+ .catch((e) => {
594
653
  done.fail(e);
595
654
  })
596
655
  );
@@ -599,7 +658,7 @@ Array [
599
658
 
600
659
  const wrapper = createSSRApp({
601
660
  mixins: [forceIsServerMixin],
602
- render: renderCompat(h =>
661
+ render: renderCompat((h) =>
603
662
  h(App, {
604
663
  scopedSlots: {
605
664
  default({ test }) {
@@ -633,7 +692,8 @@ Array [
633
692
  indexName: 'hello',
634
693
  }),
635
694
  ],
636
- render: renderCompat(function(h) {
695
+ render: renderCompat(function (h) {
696
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
637
697
  expect(this.$root).toBe(wrapper);
638
698
  return h(InstantSearchSsr, {}, [
639
699
  h(Configure, {
@@ -654,7 +714,7 @@ Array [
654
714
 
655
715
  const wrapper = createSSRApp({
656
716
  mixins: [forceIsServerMixin],
657
- render: renderCompat(h => h(App)),
717
+ render: renderCompat((h) => h(App)),
658
718
  });
659
719
 
660
720
  await renderToString(wrapper);
@@ -688,7 +748,7 @@ Array [
688
748
  expect(this.$nuxt).toEqual(1);
689
749
  return {};
690
750
  },
691
- render: renderCompat(h =>
751
+ render: renderCompat((h) =>
692
752
  h(InstantSearchSsr, {}, [
693
753
  h(Configure, {
694
754
  attrs: {
@@ -708,7 +768,7 @@ Array [
708
768
 
709
769
  const wrapper = createSSRApp({
710
770
  mixins: [forceIsServerMixin],
711
- render: renderCompat(h => h(App)),
771
+ render: renderCompat((h) => h(App)),
712
772
  });
713
773
 
714
774
  await renderToString(wrapper);
@@ -724,7 +784,7 @@ Array [
724
784
  indexName: 'hello',
725
785
  }),
726
786
  ],
727
- render: renderCompat(h =>
787
+ render: renderCompat((h) =>
728
788
  /**
729
789
  * This code triggers this warning in Vue 3:
730
790
  * > Non-function value encountered for default slot. Prefer function slots for better performance.
@@ -755,25 +815,25 @@ Array [
755
815
 
756
816
  const wrapper = createSSRApp({
757
817
  mixins: [forceIsServerMixin],
758
- render: renderCompat(h => h(app)),
818
+ render: renderCompat((h) => h(app)),
759
819
  });
760
820
 
761
821
  await renderToString(wrapper);
762
822
 
763
823
  expect(searchClient.search).toHaveBeenCalledTimes(1);
764
824
  expect(searchClient.search.mock.calls[0][0]).toMatchInlineSnapshot(`
765
- Array [
766
- Object {
767
- "indexName": "hello",
768
- "params": Object {
769
- "facets": Array [],
770
- "hitsPerPage": 100,
771
- "query": "",
772
- "tagFilters": "",
773
- },
774
- },
775
- ]
776
- `);
825
+ [
826
+ {
827
+ "indexName": "hello",
828
+ "params": {
829
+ "facets": [],
830
+ "hitsPerPage": 100,
831
+ "query": "",
832
+ "tagFilters": "",
833
+ },
834
+ },
835
+ ]
836
+ `);
777
837
  });
778
838
 
779
839
  it('works when component is at root (and therefore has no $vnode)', async () => {
@@ -781,7 +841,7 @@ Array [
781
841
  let mainIndex;
782
842
 
783
843
  const app = {
784
- render: renderCompat(h =>
844
+ render: renderCompat((h) =>
785
845
  /**
786
846
  * This code triggers this warning in Vue 3:
787
847
  * > Non-function value encountered for default slot. Prefer function slots for better performance.
@@ -821,35 +881,35 @@ Array [
821
881
  created() {
822
882
  mainIndex = this.instantsearch.mainIndex;
823
883
  },
824
- render: renderCompat(h => h(app)),
884
+ render: renderCompat((h) => h(app)),
825
885
  });
826
886
 
827
887
  await renderToString(wrapper);
828
888
 
829
- expect(mainIndex.getWidgetState()).toMatchInlineSnapshot(`
830
- Object {
831
- "hello": Object {
832
- "configure": Object {
833
- "hitsPerPage": 100,
834
- },
835
- },
836
- }
837
- `);
889
+ expect(mainIndex.getWidgetUiState({})).toMatchInlineSnapshot(`
890
+ {
891
+ "hello": {
892
+ "configure": {
893
+ "hitsPerPage": 100,
894
+ },
895
+ },
896
+ }
897
+ `);
838
898
 
839
899
  expect(searchClient.search).toHaveBeenCalledTimes(1);
840
900
  expect(searchClient.search.mock.calls[0][0]).toMatchInlineSnapshot(`
841
- Array [
842
- Object {
843
- "indexName": "hello",
844
- "params": Object {
845
- "facets": Array [],
846
- "hitsPerPage": 100,
847
- "query": "",
848
- "tagFilters": "",
849
- },
850
- },
851
- ]
852
- `);
901
+ [
902
+ {
903
+ "indexName": "hello",
904
+ "params": {
905
+ "facets": [],
906
+ "hitsPerPage": 100,
907
+ "query": "",
908
+ "tagFilters": "",
909
+ },
910
+ },
911
+ ]
912
+ `);
853
913
  });
854
914
  }
855
915
  });
@@ -865,7 +925,7 @@ Array [
865
925
  indexName: 'hello',
866
926
  }),
867
927
  ],
868
- render: renderCompat(h =>
928
+ render: renderCompat((h) =>
869
929
  h(InstantSearchSsr, {}, [
870
930
  h(Configure, {
871
931
  attrs: {
@@ -911,7 +971,7 @@ Array [
911
971
  indexName: 'hello',
912
972
  }),
913
973
  ],
914
- render: renderCompat(h =>
974
+ render: renderCompat((h) =>
915
975
  h(InstantSearchSsr, {}, [
916
976
  h(Configure, {
917
977
  attrs: {
@@ -949,7 +1009,7 @@ Array [
949
1009
  indexName: 'hello',
950
1010
  }),
951
1011
  ],
952
- render: renderCompat(h =>
1012
+ render: renderCompat((h) =>
953
1013
  h(InstantSearchSsr, {}, [
954
1014
  h(Configure, {
955
1015
  attrs: {
@@ -1028,26 +1088,26 @@ Array [
1028
1088
  instantSearchInstance: expect.anything(),
1029
1089
  },
1030
1090
  `
1031
- Object {
1032
- "createURL": [Function],
1033
- "helper": Anything,
1034
- "instantSearchInstance": Anything,
1035
- "parent": Anything,
1036
- "results": Anything,
1037
- "scopedResults": ArrayContaining [
1038
- ObjectContaining {
1039
- "helper": Anything,
1040
- "indexId": Any<String>,
1041
- "results": Anything,
1042
- },
1043
- ],
1044
- "searchMetadata": Object {
1045
- "isSearchStalled": false,
1046
- },
1047
- "state": Anything,
1048
- "templatesConfig": Object {},
1049
- }
1050
- `
1091
+ {
1092
+ "createURL": [Function],
1093
+ "helper": Anything,
1094
+ "instantSearchInstance": Anything,
1095
+ "parent": Anything,
1096
+ "results": Anything,
1097
+ "scopedResults": ArrayContaining [
1098
+ ObjectContaining {
1099
+ "helper": Anything,
1100
+ "indexId": Any<String>,
1101
+ "results": Anything,
1102
+ },
1103
+ ],
1104
+ "searchMetadata": {
1105
+ "isSearchStalled": false,
1106
+ },
1107
+ "state": Anything,
1108
+ "templatesConfig": {},
1109
+ }
1110
+ `
1051
1111
  );
1052
1112
  });
1053
1113