react-instantsearch 7.5.1 → 7.5.3

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.
@@ -7,7 +7,7 @@
7
7
 
8
8
  var React__default = 'default' in React ? React['default'] : React;
9
9
 
10
- var version = '7.5.1';
10
+ var version = '7.5.3';
11
11
 
12
12
  // Copyright Joyent, Inc. and other Node contributors.
13
13
  //
@@ -772,9 +772,12 @@
772
772
  .sort()
773
773
  .forEach(function (facetName) {
774
774
  var facetValues = facetsRefinements[facetName] || [];
775
- facetValues.sort().forEach(function (facetValue) {
776
- facetFilters.push(facetName + ':' + facetValue);
777
- });
775
+ facetValues
776
+ .slice()
777
+ .sort()
778
+ .forEach(function (facetValue) {
779
+ facetFilters.push(facetName + ':' + facetValue);
780
+ });
778
781
  });
779
782
 
780
783
  var facetsExcludes = state.facetsExcludes || {};
@@ -797,9 +800,12 @@
797
800
  }
798
801
  var orFilters = [];
799
802
 
800
- facetValues.sort().forEach(function (facetValue) {
801
- orFilters.push(facetName + ':' + facetValue);
802
- });
803
+ facetValues
804
+ .slice()
805
+ .sort()
806
+ .forEach(function (facetValue) {
807
+ orFilters.push(facetName + ':' + facetValue);
808
+ });
803
809
 
804
810
  facetFilters.push(orFilters);
805
811
  });
@@ -1465,7 +1471,7 @@
1465
1471
  numbers.numericRefinements = numericRefinements;
1466
1472
  }
1467
1473
 
1468
- return merge_1({}, partialState, numbers);
1474
+ return merge_1(partialState, numbers);
1469
1475
  };
1470
1476
 
1471
1477
  /**
@@ -4337,7 +4343,7 @@
4337
4343
 
4338
4344
  var SearchResults_1 = SearchResults;
4339
4345
 
4340
- var version$1 = '3.16.1';
4346
+ var version$1 = '3.16.2';
4341
4347
 
4342
4348
  var escapeFacetValue$3 = escapeFacetValue_1.escapeFacetValue;
4343
4349
 
@@ -7637,13 +7643,16 @@
7637
7643
  return;
7638
7644
  }
7639
7645
  var cachedRequest = Object.keys(results).map(function (key) {
7640
- return results[key].results.map(function (result) {
7641
- return {
7642
- indexName: result.index,
7643
- // We normalize the params received from the server as they can
7644
- // be serialized differently depending on the engine.
7645
- params: serializeQueryParameters(deserializeQueryParameters(result.params))
7646
- };
7646
+ var _results$key = results[key],
7647
+ state = _results$key.state,
7648
+ requestParams = _results$key.requestParams,
7649
+ serverResults = _results$key.results;
7650
+ return serverResults.map(function (result) {
7651
+ return _objectSpread$5({
7652
+ indexName: state.index || result.index
7653
+ }, requestParams || result.params ? {
7654
+ params: serializeQueryParameters(requestParams || deserializeQueryParameters(result.params))
7655
+ } : {});
7647
7656
  });
7648
7657
  });
7649
7658
  var cachedResults = Object.keys(results).reduce(function (acc, key) {
@@ -10341,8 +10350,11 @@
10341
10350
  appId = _getAppIdAndApiKey2[0],
10342
10351
  apiKey = _getAppIdAndApiKey2[1];
10343
10352
  var queuedUserToken = undefined;
10353
+ var queuedAuthenticatedUserToken = undefined;
10344
10354
  var userTokenBeforeInit = undefined;
10345
- if (Array.isArray(insightsClient.queue)) {
10355
+ var authenticatedUserTokenBeforeInit = undefined;
10356
+ var queue = insightsClient.queue;
10357
+ if (Array.isArray(queue)) {
10346
10358
  // Context: The umd build of search-insights is asynchronously loaded by the snippet.
10347
10359
  //
10348
10360
  // When user calls `aa('setUserToken', 'my-user-token')` before `search-insights` is loaded,
@@ -10353,22 +10365,32 @@
10353
10365
  // At this point, even though `search-insights` is not loaded yet,
10354
10366
  // we still want to read the token from the queue.
10355
10367
  // Otherwise, the first search call will be fired without the token.
10356
- var _ref3 = find$1(insightsClient.queue.slice().reverse(), function (_ref5) {
10357
- var _ref6 = _slicedToArray$7(_ref5, 1),
10358
- method = _ref6[0];
10359
- return method === 'setUserToken';
10360
- }) || [];
10361
- var _ref4 = _slicedToArray$7(_ref3, 2);
10362
- queuedUserToken = _ref4[1];
10368
+ var _map = ['setUserToken', 'setAuthenticatedUserToken'].map(function (key) {
10369
+ var _ref3 = find$1(queue.slice().reverse(), function (_ref5) {
10370
+ var _ref6 = _slicedToArray$7(_ref5, 1),
10371
+ method = _ref6[0];
10372
+ return method === key;
10373
+ }) || [],
10374
+ _ref4 = _slicedToArray$7(_ref3, 2),
10375
+ value = _ref4[1];
10376
+ return value;
10377
+ });
10378
+ var _map2 = _slicedToArray$7(_map, 2);
10379
+ queuedUserToken = _map2[0];
10380
+ queuedAuthenticatedUserToken = _map2[1];
10363
10381
  }
10382
+
10383
+ // If user called `aa('setUserToken')` or `aa('setAuthenticatedUserToken')`
10384
+ // before creating the Insights middleware, we temporarily store the token
10385
+ // and set it later on.
10386
+ //
10387
+ // Otherwise, the `init` call might override them with anonymous user token.
10364
10388
  insightsClient('getUserToken', null, function (_error, userToken) {
10365
- // If user has called `aa('setUserToken', 'my-user-token')` before creating
10366
- // the `insights` middleware, we store them temporarily and
10367
- // set it later on.
10368
- //
10369
- // Otherwise, the `init` call might override it with anonymous user token.
10370
10389
  userTokenBeforeInit = normalizeUserToken(userToken);
10371
10390
  });
10391
+ insightsClient('getAuthenticatedUserToken', null, function (_error, userToken) {
10392
+ authenticatedUserTokenBeforeInit = normalizeUserToken(userToken);
10393
+ });
10372
10394
 
10373
10395
  // Only `init` if the `insightsInitParams` option is passed or
10374
10396
  // if the `insightsClient` version doesn't supports optional `init` calling.
@@ -10450,21 +10472,43 @@
10450
10472
  // We can set it as userToken.
10451
10473
  setUserTokenToSearch(anonymousUserToken, true);
10452
10474
  }
10475
+ function setUserToken(token, userToken, authenticatedUserToken) {
10476
+ setUserTokenToSearch(token, true);
10477
+ if (userToken) {
10478
+ insightsClient('setUserToken', userToken);
10479
+ }
10480
+ if (authenticatedUserToken) {
10481
+ insightsClient('setAuthenticatedUserToken', authenticatedUserToken);
10482
+ }
10483
+ }
10453
10484
 
10454
- // We consider the `userToken` coming from a `init` call to have a higher
10455
- // importance than the one coming from the queue.
10456
- if (userTokenBeforeInit) {
10457
- setUserTokenToSearch(userTokenBeforeInit, true);
10458
- insightsClient('setUserToken', userTokenBeforeInit);
10459
- } else if (queuedUserToken) {
10460
- setUserTokenToSearch(queuedUserToken, true);
10461
- insightsClient('setUserToken', queuedUserToken);
10485
+ // We consider the `userToken` or `authenticatedUserToken` before an
10486
+ // `init` call of higher importance than one from the queue.
10487
+ var tokenBeforeInit = authenticatedUserTokenBeforeInit || userTokenBeforeInit;
10488
+ var queuedToken = queuedAuthenticatedUserToken || queuedUserToken;
10489
+ if (tokenBeforeInit) {
10490
+ setUserToken(tokenBeforeInit, userTokenBeforeInit, authenticatedUserTokenBeforeInit);
10491
+ } else if (queuedToken) {
10492
+ setUserToken(queuedToken, queuedUserToken, queuedAuthenticatedUserToken);
10462
10493
  }
10463
10494
 
10464
10495
  // This updates userToken which is set explicitly by `aa('setUserToken', userToken)`
10465
10496
  insightsClient('onUserTokenChange', setUserTokenToSearch, {
10466
10497
  immediate: true
10467
10498
  });
10499
+
10500
+ // This updates userToken which is set explicitly by `aa('setAuthenticatedtUserToken', authenticatedUserToken)`
10501
+ insightsClient('onAuthenticatedUserTokenChange', function (authenticatedUserToken) {
10502
+ // If we're unsetting the `authenticatedUserToken`, we revert to the `userToken`
10503
+ if (!authenticatedUserToken) {
10504
+ insightsClient('getUserToken', null, function (_, userToken) {
10505
+ setUserTokenToSearch(userToken);
10506
+ });
10507
+ }
10508
+ setUserTokenToSearch(authenticatedUserToken);
10509
+ }, {
10510
+ immediate: true
10511
+ });
10468
10512
  var insightsClientWithLocalCredentials = insightsClient;
10469
10513
  if (isModernInsightsClient(insightsClient)) {
10470
10514
  insightsClientWithLocalCredentials = function insightsClientWithLocalCredentials(method, payload) {
@@ -10497,6 +10541,7 @@
10497
10541
  },
10498
10542
  unsubscribe: function unsubscribe() {
10499
10543
  insightsClient('onUserTokenChange', undefined);
10544
+ insightsClient('onAuthenticatedUserTokenChange', undefined);
10500
10545
  instantSearchInstance.sendEventToInsights = noop$1;
10501
10546
  if (helper && initialParameters) {
10502
10547
  helper.overrideStateWithoutTriggeringChangeEvent(_objectSpread$e(_objectSpread$e({}, helper.state), initialParameters));
@@ -12159,7 +12204,7 @@
12159
12204
  };
12160
12205
  }
12161
12206
 
12162
- var version$3 = '4.63.1';
12207
+ var version$3 = '4.64.1';
12163
12208
 
12164
12209
  function _typeof$o(obj) {
12165
12210
  "@babel/helpers - typeof";
@@ -12627,9 +12672,7 @@
12627
12672
 
12628
12673
  /**
12629
12674
  * Ends the initialization of InstantSearch.js and triggers the
12630
- * first search. This method should be called after all widgets have been added
12631
- * to the instance of InstantSearch.js. InstantSearch.js also supports adding and removing
12632
- * widgets after the start as an **EXPERIMENTAL** feature.
12675
+ * first search.
12633
12676
  */
12634
12677
  }, {
12635
12678
  key: "start",
@@ -12780,9 +12823,7 @@
12780
12823
  }
12781
12824
 
12782
12825
  /**
12783
- * Removes all widgets without triggering a search afterwards. This is an **EXPERIMENTAL** feature,
12784
- * if you find an issue with it, please
12785
- * [open an issue](https://github.com/algolia/instantsearch/issues/new?title=Problem%20with%20dispose).
12826
+ * Removes all widgets without triggering a search afterwards.
12786
12827
  * @return {undefined} This method does not return anything
12787
12828
  */
12788
12829
  }, {
@@ -15996,7 +16037,7 @@
15996
16037
  dispose: function dispose(_ref4) {
15997
16038
  var state = _ref4.state;
15998
16039
  unmountFn();
15999
- return state.clearRefinements(attribute);
16040
+ return state.removeNumericRefinement(attribute);
16000
16041
  },
16001
16042
  getWidgetUiState: function getWidgetUiState(uiState, _ref5) {
16002
16043
  var searchParameters = _ref5.searchParameters;
@@ -16016,11 +16057,11 @@
16016
16057
  getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref6) {
16017
16058
  var uiState = _ref6.uiState;
16018
16059
  var value = uiState.numericMenu && uiState.numericMenu[attribute];
16019
- var withoutRefinements = searchParameters.clearRefinements(attribute);
16060
+ var withoutRefinements = searchParameters.setQueryParameters({
16061
+ numericRefinements: _objectSpread$u(_objectSpread$u({}, searchParameters.numericRefinements), {}, _defineProperty$v({}, attribute, {}))
16062
+ });
16020
16063
  if (!value) {
16021
- return withoutRefinements.setQueryParameters({
16022
- numericRefinements: _objectSpread$u(_objectSpread$u({}, withoutRefinements.numericRefinements), {}, _defineProperty$v({}, attribute, {}))
16023
- });
16064
+ return withoutRefinements;
16024
16065
  }
16025
16066
  var isExact = value.indexOf(':') === -1;
16026
16067
  if (isExact) {
@@ -17458,8 +17499,7 @@
17458
17499
  return searchParameters;
17459
17500
  }
17460
17501
  var values = uiState.refinementList && uiState.refinementList[attribute];
17461
- var withoutRefinements = searchParameters.clearRefinements(attribute);
17462
- var withFacetConfiguration = isDisjunctive ? withoutRefinements.addDisjunctiveFacet(attribute) : withoutRefinements.addFacet(attribute);
17502
+ var withFacetConfiguration = isDisjunctive ? searchParameters.addDisjunctiveFacet(attribute).removeDisjunctiveFacetRefinement(attribute) : searchParameters.addFacet(attribute).removeFacetRefinement(attribute);
17463
17503
  var currentMaxValuesPerFacet = withFacetConfiguration.maxValuesPerFacet || 0;
17464
17504
  var nextMaxValuesPerFacet = Math.max(currentMaxValuesPerFacet, showMore ? showMoreLimit : limit);
17465
17505
  var withMaxValuesPerFacet = withFacetConfiguration.setQueryParameter('maxValuesPerFacet', nextMaxValuesPerFacet);
@@ -18308,7 +18348,7 @@
18308
18348
  if (searchParameters.isHierarchicalFacet(attribute) || searchParameters.isConjunctiveFacet(attribute)) {
18309
18349
  return searchParameters;
18310
18350
  }
18311
- var withFacetConfiguration = searchParameters.clearRefinements(attribute).addDisjunctiveFacet(attribute);
18351
+ var withFacetConfiguration = searchParameters.addDisjunctiveFacet(attribute).removeDisjunctiveFacetRefinement(attribute);
18312
18352
  var isRefined = Boolean(uiState.toggle && uiState.toggle[attribute]);
18313
18353
  if (isRefined) {
18314
18354
  if (on) {
@@ -18658,12 +18698,26 @@
18658
18698
  */
18659
18699
  function waitForResults(search) {
18660
18700
  var helper = search.mainHelper;
18701
+
18702
+ // Extract search parameters from the search client to use them
18703
+ // later during hydration.
18704
+ var requestParamsList;
18705
+ var client = helper.getClient();
18706
+ helper.setClient({
18707
+ search: function search(queries) {
18708
+ requestParamsList = queries.map(function (_ref) {
18709
+ var params = _ref.params;
18710
+ return params;
18711
+ });
18712
+ return client.search(queries);
18713
+ }
18714
+ });
18661
18715
  helper.searchOnlyWithDerivedHelpers();
18662
18716
  return new Promise(function (resolve, reject) {
18663
18717
  // All derived helpers resolve in the same tick so we're safe only relying
18664
18718
  // on the first one.
18665
18719
  helper.derivedHelpers[0].on('result', function () {
18666
- resolve();
18720
+ resolve(requestParamsList);
18667
18721
  });
18668
18722
 
18669
18723
  // However, we listen to errors that can happen on any derived helper because
@@ -18685,17 +18739,26 @@
18685
18739
  /**
18686
18740
  * Walks the InstantSearch root index to construct the initial results.
18687
18741
  */
18688
- function getInitialResults(rootIndex) {
18742
+ function getInitialResults(rootIndex,
18743
+ /**
18744
+ * Search parameters sent to the search client,
18745
+ * returned by `waitForResults()`.
18746
+ */
18747
+ requestParamsList) {
18689
18748
  var initialResults = {};
18749
+ var requestParamsIndex = 0;
18690
18750
  walkIndex(rootIndex, function (widget) {
18691
18751
  var searchResults = widget.getResults();
18692
18752
  if (searchResults) {
18693
- initialResults[widget.getIndexId()] = {
18753
+ var requestParams = requestParamsList === null || requestParamsList === void 0 ? void 0 : requestParamsList[requestParamsIndex++];
18754
+ initialResults[widget.getIndexId()] = _objectSpread$D({
18694
18755
  // We convert the Helper state to a plain object to pass parsable data
18695
18756
  // structures from server to client.
18696
18757
  state: _objectSpread$D({}, searchResults._state),
18697
18758
  results: searchResults._rawResults
18698
- };
18759
+ }, requestParams && {
18760
+ requestParams: requestParams
18761
+ });
18699
18762
  }
18700
18763
  });
18701
18764
  if (Object.keys(initialResults).length === 0) {
@@ -18780,9 +18843,9 @@
18780
18843
  throw new Error("Unable to retrieve InstantSearch's server state in `getServerState()`. Did you mount the <InstantSearch> component?");
18781
18844
  }
18782
18845
  return waitForResults(searchRef.current);
18783
- }).then(function () {
18846
+ }).then(function (requestParamsList) {
18784
18847
  return {
18785
- initialResults: getInitialResults(searchRef.current.mainIndex)
18848
+ initialResults: getInitialResults(searchRef.current.mainIndex, requestParamsList)
18786
18849
  };
18787
18850
  });
18788
18851
  }