instantsearch.js 4.39.0 → 4.40.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.md CHANGED
@@ -1,3 +1,30 @@
1
+ # [4.40.0](https://github.com/algolia/instantsearch.js/compare/v4.39.2...v4.40.0) (2022-03-21)
2
+
3
+
4
+ ### Features
5
+
6
+ * **infiniteHits:** avoid caching artificial results ([#5023](https://github.com/algolia/instantsearch.js/issues/5023)) ([e8c0145](https://github.com/algolia/instantsearch.js/commit/e8c01452ebe77b82b8a107c5d4fc026abf5645d8))
7
+
8
+
9
+
10
+ ## [4.39.2](https://github.com/algolia/instantsearch.js/compare/v4.39.1...v4.39.2) (2022-03-14)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * fix types of `sortBy` option ([#5024](https://github.com/algolia/instantsearch.js/issues/5024)) ([3f7ea32](https://github.com/algolia/instantsearch.js/commit/3f7ea32374e0e409ebf27b07d28cf3871a5b33b3))
16
+
17
+
18
+
19
+ ## [4.39.1](https://github.com/algolia/instantsearch.js/compare/v4.39.0...v4.39.1) (2022-03-01)
20
+
21
+
22
+ ### Bug Fixes
23
+
24
+ * **insights:** send view events after rendering ([#5014](https://github.com/algolia/instantsearch.js/issues/5014)) ([e952abc](https://github.com/algolia/instantsearch.js/commit/e952abc64043a55e06c9c46a656bc98ad45d1502))
25
+
26
+
27
+
1
28
  # [4.39.0](https://github.com/algolia/instantsearch.js/compare/v4.38.1...v4.39.0) (2022-02-23)
2
29
 
3
30
 
@@ -41,10 +41,10 @@ var connectHits = function connectHits(renderFn) {
41
41
  },
42
42
  render: function render(renderOptions) {
43
43
  var renderState = this.getWidgetRenderState(renderOptions);
44
- renderState.sendEvent('view', renderState.hits);
45
44
  renderFn(_objectSpread(_objectSpread({}, renderState), {}, {
46
45
  instantSearchInstance: renderOptions.instantSearchInstance
47
46
  }), false);
47
+ renderState.sendEvent('view', renderState.hits);
48
48
  },
49
49
  getRenderState: function getRenderState(renderState, renderOptions) {
50
50
  return _objectSpread(_objectSpread({}, renderState), {}, {
@@ -141,10 +141,10 @@ var connectInfiniteHits = function connectInfiniteHits(renderFn) {
141
141
  render: function render(renderOptions) {
142
142
  var instantSearchInstance = renderOptions.instantSearchInstance;
143
143
  var widgetRenderState = this.getWidgetRenderState(renderOptions);
144
- sendEvent('view', widgetRenderState.currentPageHits);
145
144
  renderFn(_objectSpread(_objectSpread({}, widgetRenderState), {}, {
146
145
  instantSearchInstance: instantSearchInstance
147
146
  }), false);
147
+ sendEvent('view', widgetRenderState.currentPageHits);
148
148
  },
149
149
  getRenderState: function getRenderState(renderState, renderOptions) {
150
150
  return _objectSpread(_objectSpread({}, renderState), {}, {
@@ -189,7 +189,7 @@ var connectInfiniteHits = function connectInfiniteHits(renderFn) {
189
189
  results: results
190
190
  });
191
191
 
192
- if (cachedHits[_page] === undefined) {
192
+ if (cachedHits[_page] === undefined && !results.__isArtificial) {
193
193
  cachedHits[_page] = transformedHits;
194
194
  cache.write({
195
195
  state: state,
@@ -4,5 +4,5 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _default = '4.39.0';
7
+ var _default = '4.40.0';
8
8
  exports.default = _default;
@@ -1472,7 +1472,7 @@ declare type HierarchicalMenuConnectorParams = {
1472
1472
  *
1473
1473
  * If a facetOrdering is set in the index settings, it is used when sortBy isn't passed
1474
1474
  */
1475
- sortBy?: SortBy<HierarchicalMenuItem>;
1475
+ sortBy?: SortBy<SearchResults.HierarchicalFacet>;
1476
1476
  /**
1477
1477
  * Function to transform the items passed to the templates.
1478
1478
  */
@@ -2533,7 +2533,7 @@ declare type MenuConnectorParams = {
2533
2533
  *
2534
2534
  * If a facetOrdering is set in the index settings, it is used when sortBy isn't passed
2535
2535
  */
2536
- sortBy?: SortBy<MenuItem>;
2536
+ sortBy?: SortBy<SearchResults.HierarchicalFacet>;
2537
2537
  /**
2538
2538
  * Function to transform the items passed to the templates.
2539
2539
  */
@@ -3877,7 +3877,7 @@ declare type RefinementListConnectorParams = {
3877
3877
  *
3878
3878
  * If a facetOrdering is set in the index settings, it is used when sortBy isn't passed
3879
3879
  */
3880
- sortBy?: SortBy<RefinementListItem>;
3880
+ sortBy?: SortBy<SearchResults.FacetValue>;
3881
3881
  /**
3882
3882
  * Escapes the content of the facet values.
3883
3883
  */
@@ -4627,7 +4627,7 @@ declare type SnippetOptions = {
4627
4627
  /**
4628
4628
  * Transforms the given items.
4629
4629
  */
4630
- declare type SortBy<TItem> = ((a: TItem, b: TItem) => number) | Array<'count' | 'isRefined' | 'name:asc' | 'name:desc'>;
4630
+ declare type SortBy<TItem> = ((a: TItem, b: TItem) => number) | Array<SortByDirection<'count' | 'name' | 'isRefined'>>;
4631
4631
 
4632
4632
  /**
4633
4633
  * Sort by selector is a widget used for letting the user choose between different
@@ -4648,6 +4648,8 @@ declare type SortByConnectorParams = {
4648
4648
  transformItems?: TransformItems<SortByItem>;
4649
4649
  };
4650
4650
 
4651
+ declare type SortByDirection<TCriterion extends string> = TCriterion | `${TCriterion}:asc` | `${TCriterion}:desc`;
4652
+
4651
4653
  declare type SortByIndexDefinition = {
4652
4654
  /**
4653
4655
  * The name of the index to target.
@@ -1,4 +1,4 @@
1
- /*! InstantSearch.js 4.39.0 | © Algolia, Inc. and contributors; MIT License | https://github.com/algolia/instantsearch.js */
1
+ /*! InstantSearch.js 4.40.0 | © Algolia, Inc. and contributors; MIT License | https://github.com/algolia/instantsearch.js */
2
2
  (function (global, factory) {
3
3
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
4
4
  typeof define === 'function' && define.amd ? define(factory) :
@@ -2656,7 +2656,7 @@
2656
2656
  }
2657
2657
  **/
2658
2658
  /*eslint-enable */
2659
- function SearchResults(state, results) {
2659
+ function SearchResults(state, results, options) {
2660
2660
  var mainSubResponse = results[0];
2661
2661
 
2662
2662
  this._rawResults = results;
@@ -2668,6 +2668,11 @@
2668
2668
  self[key] = mainSubResponse[key];
2669
2669
  });
2670
2670
 
2671
+ // Make every key of the result options reachable from the instance
2672
+ Object.keys(options || {}).forEach(function(key) {
2673
+ self[key] = options[key];
2674
+ });
2675
+
2671
2676
  /**
2672
2677
  * query used to generate the results
2673
2678
  * @name query
@@ -4115,7 +4120,7 @@
4115
4120
 
4116
4121
  var requestBuilder_1 = requestBuilder;
4117
4122
 
4118
- var version = '3.7.0';
4123
+ var version = '3.7.3';
4119
4124
 
4120
4125
  /**
4121
4126
  * Event triggered when a parameter is set or updated
@@ -8483,7 +8488,7 @@
8483
8488
  instantSearchInstance.renderState = _objectSpread2(_objectSpread2({}, instantSearchInstance.renderState), {}, _defineProperty({}, parentIndexName, _objectSpread2(_objectSpread2({}, instantSearchInstance.renderState[parentIndexName]), renderState)));
8484
8489
  }
8485
8490
 
8486
- var version$1 = '4.39.0';
8491
+ var version$1 = '4.40.0';
8487
8492
 
8488
8493
  var NAMESPACE = 'ais';
8489
8494
  var component = function component(componentName) {
@@ -11092,10 +11097,10 @@
11092
11097
  },
11093
11098
  render: function render(renderOptions) {
11094
11099
  var renderState = this.getWidgetRenderState(renderOptions);
11095
- renderState.sendEvent('view', renderState.hits);
11096
11100
  renderFn(_objectSpread2(_objectSpread2({}, renderState), {}, {
11097
11101
  instantSearchInstance: renderOptions.instantSearchInstance
11098
11102
  }), false);
11103
+ renderState.sendEvent('view', renderState.hits);
11099
11104
  },
11100
11105
  getRenderState: function getRenderState(renderState, renderOptions) {
11101
11106
  return _objectSpread2(_objectSpread2({}, renderState), {}, {
@@ -11619,10 +11624,10 @@
11619
11624
  render: function render(renderOptions) {
11620
11625
  var instantSearchInstance = renderOptions.instantSearchInstance;
11621
11626
  var widgetRenderState = this.getWidgetRenderState(renderOptions);
11622
- sendEvent('view', widgetRenderState.currentPageHits);
11623
11627
  renderFn(_objectSpread2(_objectSpread2({}, widgetRenderState), {}, {
11624
11628
  instantSearchInstance: instantSearchInstance
11625
11629
  }), false);
11630
+ sendEvent('view', widgetRenderState.currentPageHits);
11626
11631
  },
11627
11632
  getRenderState: function getRenderState(renderState, renderOptions) {
11628
11633
  return _objectSpread2(_objectSpread2({}, renderState), {}, {
@@ -11667,7 +11672,7 @@
11667
11672
  results: results
11668
11673
  });
11669
11674
 
11670
- if (cachedHits[_page] === undefined) {
11675
+ if (cachedHits[_page] === undefined && !results.__isArtificial) {
11671
11676
  cachedHits[_page] = transformedHits;
11672
11677
  cache.write({
11673
11678
  state: state,