react-instantsearch-core 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.
@@ -85,9 +85,9 @@ function execute(_ref3) {
85
85
  throw new Error("Unable to retrieve InstantSearch's server state in `getServerState()`. Did you mount the <InstantSearch> component?");
86
86
  }
87
87
  return (0, _server.waitForResults)(searchRef.current);
88
- }).then(function () {
88
+ }).then(function (requestParamsList) {
89
89
  return {
90
- initialResults: (0, _server.getInitialResults)(searchRef.current.mainIndex)
90
+ initialResults: (0, _server.getInitialResults)(searchRef.current.mainIndex, requestParamsList)
91
91
  };
92
92
  });
93
93
  }
@@ -4,5 +4,5 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _default = '7.5.1';
7
+ var _default = '7.5.3';
8
8
  exports.default = _default;
@@ -78,9 +78,9 @@ function execute(_ref3) {
78
78
  throw new Error("Unable to retrieve InstantSearch's server state in `getServerState()`. Did you mount the <InstantSearch> component?");
79
79
  }
80
80
  return waitForResults(searchRef.current);
81
- }).then(function () {
81
+ }).then(function (requestParamsList) {
82
82
  return {
83
- initialResults: getInitialResults(searchRef.current.mainIndex)
83
+ initialResults: getInitialResults(searchRef.current.mainIndex, requestParamsList)
84
84
  };
85
85
  });
86
86
  }
@@ -1,2 +1,2 @@
1
- declare const _default: "7.5.1";
1
+ declare const _default: "7.5.3";
2
2
  export default _default;
@@ -1 +1 @@
1
- export default '7.5.1';
1
+ export default '7.5.3';
@@ -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
 
@@ -7425,13 +7431,16 @@
7425
7431
  return;
7426
7432
  }
7427
7433
  var cachedRequest = Object.keys(results).map(function (key) {
7428
- return results[key].results.map(function (result) {
7429
- return {
7430
- indexName: result.index,
7431
- // We normalize the params received from the server as they can
7432
- // be serialized differently depending on the engine.
7433
- params: serializeQueryParameters(deserializeQueryParameters(result.params))
7434
- };
7434
+ var _results$key = results[key],
7435
+ state = _results$key.state,
7436
+ requestParams = _results$key.requestParams,
7437
+ serverResults = _results$key.results;
7438
+ return serverResults.map(function (result) {
7439
+ return _objectSpread$5({
7440
+ indexName: state.index || result.index
7441
+ }, requestParams || result.params ? {
7442
+ params: serializeQueryParameters(requestParams || deserializeQueryParameters(result.params))
7443
+ } : {});
7435
7444
  });
7436
7445
  });
7437
7446
  var cachedResults = Object.keys(results).reduce(function (acc, key) {
@@ -9843,8 +9852,11 @@
9843
9852
  appId = _getAppIdAndApiKey2[0],
9844
9853
  apiKey = _getAppIdAndApiKey2[1];
9845
9854
  var queuedUserToken = undefined;
9855
+ var queuedAuthenticatedUserToken = undefined;
9846
9856
  var userTokenBeforeInit = undefined;
9847
- if (Array.isArray(insightsClient.queue)) {
9857
+ var authenticatedUserTokenBeforeInit = undefined;
9858
+ var queue = insightsClient.queue;
9859
+ if (Array.isArray(queue)) {
9848
9860
  // Context: The umd build of search-insights is asynchronously loaded by the snippet.
9849
9861
  //
9850
9862
  // When user calls `aa('setUserToken', 'my-user-token')` before `search-insights` is loaded,
@@ -9855,22 +9867,32 @@
9855
9867
  // At this point, even though `search-insights` is not loaded yet,
9856
9868
  // we still want to read the token from the queue.
9857
9869
  // Otherwise, the first search call will be fired without the token.
9858
- var _ref3 = find$1(insightsClient.queue.slice().reverse(), function (_ref5) {
9859
- var _ref6 = _slicedToArray$5(_ref5, 1),
9860
- method = _ref6[0];
9861
- return method === 'setUserToken';
9862
- }) || [];
9863
- var _ref4 = _slicedToArray$5(_ref3, 2);
9864
- queuedUserToken = _ref4[1];
9870
+ var _map = ['setUserToken', 'setAuthenticatedUserToken'].map(function (key) {
9871
+ var _ref3 = find$1(queue.slice().reverse(), function (_ref5) {
9872
+ var _ref6 = _slicedToArray$5(_ref5, 1),
9873
+ method = _ref6[0];
9874
+ return method === key;
9875
+ }) || [],
9876
+ _ref4 = _slicedToArray$5(_ref3, 2),
9877
+ value = _ref4[1];
9878
+ return value;
9879
+ });
9880
+ var _map2 = _slicedToArray$5(_map, 2);
9881
+ queuedUserToken = _map2[0];
9882
+ queuedAuthenticatedUserToken = _map2[1];
9865
9883
  }
9884
+
9885
+ // If user called `aa('setUserToken')` or `aa('setAuthenticatedUserToken')`
9886
+ // before creating the Insights middleware, we temporarily store the token
9887
+ // and set it later on.
9888
+ //
9889
+ // Otherwise, the `init` call might override them with anonymous user token.
9866
9890
  insightsClient('getUserToken', null, function (_error, userToken) {
9867
- // If user has called `aa('setUserToken', 'my-user-token')` before creating
9868
- // the `insights` middleware, we store them temporarily and
9869
- // set it later on.
9870
- //
9871
- // Otherwise, the `init` call might override it with anonymous user token.
9872
9891
  userTokenBeforeInit = normalizeUserToken(userToken);
9873
9892
  });
9893
+ insightsClient('getAuthenticatedUserToken', null, function (_error, userToken) {
9894
+ authenticatedUserTokenBeforeInit = normalizeUserToken(userToken);
9895
+ });
9874
9896
 
9875
9897
  // Only `init` if the `insightsInitParams` option is passed or
9876
9898
  // if the `insightsClient` version doesn't supports optional `init` calling.
@@ -9952,21 +9974,43 @@
9952
9974
  // We can set it as userToken.
9953
9975
  setUserTokenToSearch(anonymousUserToken, true);
9954
9976
  }
9977
+ function setUserToken(token, userToken, authenticatedUserToken) {
9978
+ setUserTokenToSearch(token, true);
9979
+ if (userToken) {
9980
+ insightsClient('setUserToken', userToken);
9981
+ }
9982
+ if (authenticatedUserToken) {
9983
+ insightsClient('setAuthenticatedUserToken', authenticatedUserToken);
9984
+ }
9985
+ }
9955
9986
 
9956
- // We consider the `userToken` coming from a `init` call to have a higher
9957
- // importance than the one coming from the queue.
9958
- if (userTokenBeforeInit) {
9959
- setUserTokenToSearch(userTokenBeforeInit, true);
9960
- insightsClient('setUserToken', userTokenBeforeInit);
9961
- } else if (queuedUserToken) {
9962
- setUserTokenToSearch(queuedUserToken, true);
9963
- insightsClient('setUserToken', queuedUserToken);
9987
+ // We consider the `userToken` or `authenticatedUserToken` before an
9988
+ // `init` call of higher importance than one from the queue.
9989
+ var tokenBeforeInit = authenticatedUserTokenBeforeInit || userTokenBeforeInit;
9990
+ var queuedToken = queuedAuthenticatedUserToken || queuedUserToken;
9991
+ if (tokenBeforeInit) {
9992
+ setUserToken(tokenBeforeInit, userTokenBeforeInit, authenticatedUserTokenBeforeInit);
9993
+ } else if (queuedToken) {
9994
+ setUserToken(queuedToken, queuedUserToken, queuedAuthenticatedUserToken);
9964
9995
  }
9965
9996
 
9966
9997
  // This updates userToken which is set explicitly by `aa('setUserToken', userToken)`
9967
9998
  insightsClient('onUserTokenChange', setUserTokenToSearch, {
9968
9999
  immediate: true
9969
10000
  });
10001
+
10002
+ // This updates userToken which is set explicitly by `aa('setAuthenticatedtUserToken', authenticatedUserToken)`
10003
+ insightsClient('onAuthenticatedUserTokenChange', function (authenticatedUserToken) {
10004
+ // If we're unsetting the `authenticatedUserToken`, we revert to the `userToken`
10005
+ if (!authenticatedUserToken) {
10006
+ insightsClient('getUserToken', null, function (_, userToken) {
10007
+ setUserTokenToSearch(userToken);
10008
+ });
10009
+ }
10010
+ setUserTokenToSearch(authenticatedUserToken);
10011
+ }, {
10012
+ immediate: true
10013
+ });
9970
10014
  var insightsClientWithLocalCredentials = insightsClient;
9971
10015
  if (isModernInsightsClient(insightsClient)) {
9972
10016
  insightsClientWithLocalCredentials = function insightsClientWithLocalCredentials(method, payload) {
@@ -9999,6 +10043,7 @@
9999
10043
  },
10000
10044
  unsubscribe: function unsubscribe() {
10001
10045
  insightsClient('onUserTokenChange', undefined);
10046
+ insightsClient('onAuthenticatedUserTokenChange', undefined);
10002
10047
  instantSearchInstance.sendEventToInsights = noop;
10003
10048
  if (helper && initialParameters) {
10004
10049
  helper.overrideStateWithoutTriggeringChangeEvent(_objectSpread$b(_objectSpread$b({}, helper.state), initialParameters));
@@ -11661,7 +11706,7 @@
11661
11706
  };
11662
11707
  }
11663
11708
 
11664
- var version$2 = '4.63.1';
11709
+ var version$2 = '4.64.1';
11665
11710
 
11666
11711
  function _typeof$k(obj) {
11667
11712
  "@babel/helpers - typeof";
@@ -12129,9 +12174,7 @@
12129
12174
 
12130
12175
  /**
12131
12176
  * Ends the initialization of InstantSearch.js and triggers the
12132
- * first search. This method should be called after all widgets have been added
12133
- * to the instance of InstantSearch.js. InstantSearch.js also supports adding and removing
12134
- * widgets after the start as an **EXPERIMENTAL** feature.
12177
+ * first search.
12135
12178
  */
12136
12179
  }, {
12137
12180
  key: "start",
@@ -12282,9 +12325,7 @@
12282
12325
  }
12283
12326
 
12284
12327
  /**
12285
- * Removes all widgets without triggering a search afterwards. This is an **EXPERIMENTAL** feature,
12286
- * if you find an issue with it, please
12287
- * [open an issue](https://github.com/algolia/instantsearch/issues/new?title=Problem%20with%20dispose).
12328
+ * Removes all widgets without triggering a search afterwards.
12288
12329
  * @return {undefined} This method does not return anything
12289
12330
  */
12290
12331
  }, {
@@ -15328,7 +15369,7 @@
15328
15369
  dispose: function dispose(_ref4) {
15329
15370
  var state = _ref4.state;
15330
15371
  unmountFn();
15331
- return state.clearRefinements(attribute);
15372
+ return state.removeNumericRefinement(attribute);
15332
15373
  },
15333
15374
  getWidgetUiState: function getWidgetUiState(uiState, _ref5) {
15334
15375
  var searchParameters = _ref5.searchParameters;
@@ -15348,11 +15389,11 @@
15348
15389
  getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref6) {
15349
15390
  var uiState = _ref6.uiState;
15350
15391
  var value = uiState.numericMenu && uiState.numericMenu[attribute];
15351
- var withoutRefinements = searchParameters.clearRefinements(attribute);
15392
+ var withoutRefinements = searchParameters.setQueryParameters({
15393
+ numericRefinements: _objectSpread$p(_objectSpread$p({}, searchParameters.numericRefinements), {}, _defineProperty$r({}, attribute, {}))
15394
+ });
15352
15395
  if (!value) {
15353
- return withoutRefinements.setQueryParameters({
15354
- numericRefinements: _objectSpread$p(_objectSpread$p({}, withoutRefinements.numericRefinements), {}, _defineProperty$r({}, attribute, {}))
15355
- });
15396
+ return withoutRefinements;
15356
15397
  }
15357
15398
  var isExact = value.indexOf(':') === -1;
15358
15399
  if (isExact) {
@@ -16790,8 +16831,7 @@
16790
16831
  return searchParameters;
16791
16832
  }
16792
16833
  var values = uiState.refinementList && uiState.refinementList[attribute];
16793
- var withoutRefinements = searchParameters.clearRefinements(attribute);
16794
- var withFacetConfiguration = isDisjunctive ? withoutRefinements.addDisjunctiveFacet(attribute) : withoutRefinements.addFacet(attribute);
16834
+ var withFacetConfiguration = isDisjunctive ? searchParameters.addDisjunctiveFacet(attribute).removeDisjunctiveFacetRefinement(attribute) : searchParameters.addFacet(attribute).removeFacetRefinement(attribute);
16795
16835
  var currentMaxValuesPerFacet = withFacetConfiguration.maxValuesPerFacet || 0;
16796
16836
  var nextMaxValuesPerFacet = Math.max(currentMaxValuesPerFacet, showMore ? showMoreLimit : limit);
16797
16837
  var withMaxValuesPerFacet = withFacetConfiguration.setQueryParameter('maxValuesPerFacet', nextMaxValuesPerFacet);
@@ -17640,7 +17680,7 @@
17640
17680
  if (searchParameters.isHierarchicalFacet(attribute) || searchParameters.isConjunctiveFacet(attribute)) {
17641
17681
  return searchParameters;
17642
17682
  }
17643
- var withFacetConfiguration = searchParameters.clearRefinements(attribute).addDisjunctiveFacet(attribute);
17683
+ var withFacetConfiguration = searchParameters.addDisjunctiveFacet(attribute).removeDisjunctiveFacetRefinement(attribute);
17644
17684
  var isRefined = Boolean(uiState.toggle && uiState.toggle[attribute]);
17645
17685
  if (isRefined) {
17646
17686
  if (on) {
@@ -17892,12 +17932,26 @@
17892
17932
  */
17893
17933
  function waitForResults(search) {
17894
17934
  var helper = search.mainHelper;
17935
+
17936
+ // Extract search parameters from the search client to use them
17937
+ // later during hydration.
17938
+ var requestParamsList;
17939
+ var client = helper.getClient();
17940
+ helper.setClient({
17941
+ search: function search(queries) {
17942
+ requestParamsList = queries.map(function (_ref) {
17943
+ var params = _ref.params;
17944
+ return params;
17945
+ });
17946
+ return client.search(queries);
17947
+ }
17948
+ });
17895
17949
  helper.searchOnlyWithDerivedHelpers();
17896
17950
  return new Promise(function (resolve, reject) {
17897
17951
  // All derived helpers resolve in the same tick so we're safe only relying
17898
17952
  // on the first one.
17899
17953
  helper.derivedHelpers[0].on('result', function () {
17900
- resolve();
17954
+ resolve(requestParamsList);
17901
17955
  });
17902
17956
 
17903
17957
  // However, we listen to errors that can happen on any derived helper because
@@ -17919,17 +17973,26 @@
17919
17973
  /**
17920
17974
  * Walks the InstantSearch root index to construct the initial results.
17921
17975
  */
17922
- function getInitialResults(rootIndex) {
17976
+ function getInitialResults(rootIndex,
17977
+ /**
17978
+ * Search parameters sent to the search client,
17979
+ * returned by `waitForResults()`.
17980
+ */
17981
+ requestParamsList) {
17923
17982
  var initialResults = {};
17983
+ var requestParamsIndex = 0;
17924
17984
  walkIndex(rootIndex, function (widget) {
17925
17985
  var searchResults = widget.getResults();
17926
17986
  if (searchResults) {
17927
- initialResults[widget.getIndexId()] = {
17987
+ var requestParams = requestParamsList === null || requestParamsList === void 0 ? void 0 : requestParamsList[requestParamsIndex++];
17988
+ initialResults[widget.getIndexId()] = _objectSpread$y({
17928
17989
  // We convert the Helper state to a plain object to pass parsable data
17929
17990
  // structures from server to client.
17930
17991
  state: _objectSpread$y({}, searchResults._state),
17931
17992
  results: searchResults._rawResults
17932
- };
17993
+ }, requestParams && {
17994
+ requestParams: requestParams
17995
+ });
17933
17996
  }
17934
17997
  });
17935
17998
  if (Object.keys(initialResults).length === 0) {
@@ -18014,9 +18077,9 @@
18014
18077
  throw new Error("Unable to retrieve InstantSearch's server state in `getServerState()`. Did you mount the <InstantSearch> component?");
18015
18078
  }
18016
18079
  return waitForResults(searchRef.current);
18017
- }).then(function () {
18080
+ }).then(function (requestParamsList) {
18018
18081
  return {
18019
- initialResults: getInitialResults(searchRef.current.mainIndex)
18082
+ initialResults: getInitialResults(searchRef.current.mainIndex, requestParamsList)
18020
18083
  };
18021
18084
  });
18022
18085
  }