react-instantsearch-core 7.13.5 → 7.13.6

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.
@@ -4,5 +4,5 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _default = '7.13.5';
7
+ var _default = '7.13.6';
8
8
  exports.default = _default;
@@ -1,2 +1,2 @@
1
- declare const _default: "7.13.5";
1
+ declare const _default: "7.13.6";
2
2
  export default _default;
@@ -1 +1 @@
1
- export default '7.13.5';
1
+ export default '7.13.6';
@@ -7,7 +7,7 @@
7
7
 
8
8
  var React__default = 'default' in React ? React['default'] : React;
9
9
 
10
- var version = '7.13.5';
10
+ var version = '7.13.6';
11
11
 
12
12
  function _iterableToArrayLimit(arr, i) {
13
13
  var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
@@ -10503,6 +10503,22 @@
10503
10503
  return getCookie(ANONYMOUS_TOKEN_COOKIE_KEY);
10504
10504
  }
10505
10505
 
10506
+ /**
10507
+ * Create UUID according to
10508
+ * https://www.ietf.org/rfc/rfc4122.txt.
10509
+ *
10510
+ * @returns Generated UUID.
10511
+ */
10512
+ function createUUID() {
10513
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
10514
+ /* eslint-disable no-bitwise */
10515
+ var r = Math.random() * 16 | 0;
10516
+ var v = c === 'x' ? r : r & 0x3 | 0x8;
10517
+ /* eslint-enable */
10518
+ return v.toString(16);
10519
+ });
10520
+ }
10521
+
10506
10522
  function _typeof$g(obj) {
10507
10523
  "@babel/helpers - typeof";
10508
10524
 
@@ -10633,6 +10649,7 @@
10633
10649
  $$internal = _props$$$internal === void 0 ? false : _props$$$internal,
10634
10650
  _props$$$automatic = props.$$automatic,
10635
10651
  $$automatic = _props$$$automatic === void 0 ? false : _props$$$automatic;
10652
+ var currentTokenType;
10636
10653
  var potentialInsightsClient = _insightsClient;
10637
10654
  if (!_insightsClient && _insightsClient !== null) {
10638
10655
  safelyRunOnBrowser(function (_ref) {
@@ -10676,6 +10693,7 @@
10676
10693
  _getAppIdAndApiKey2 = _slicedToArray$5(_getAppIdAndApiKey, 2),
10677
10694
  appId = _getAppIdAndApiKey2[0],
10678
10695
  apiKey = _getAppIdAndApiKey2[1];
10696
+ var queuedInitParams = undefined;
10679
10697
  var queuedUserToken = undefined;
10680
10698
  var queuedAuthenticatedUserToken = undefined;
10681
10699
  var userTokenBeforeInit = undefined;
@@ -10692,7 +10710,7 @@
10692
10710
  // At this point, even though `search-insights` is not loaded yet,
10693
10711
  // we still want to read the token from the queue.
10694
10712
  // Otherwise, the first search call will be fired without the token.
10695
- var _map = ['setUserToken', 'setAuthenticatedUserToken'].map(function (key) {
10713
+ var _map = ['setUserToken', 'setAuthenticatedUserToken', 'init'].map(function (key) {
10696
10714
  var _ref3 = find$1(queue.slice().reverse(), function (_ref5) {
10697
10715
  var _ref6 = _slicedToArray$5(_ref5, 1),
10698
10716
  method = _ref6[0];
@@ -10702,9 +10720,10 @@
10702
10720
  value = _ref4[1];
10703
10721
  return value;
10704
10722
  });
10705
- var _map2 = _slicedToArray$5(_map, 2);
10723
+ var _map2 = _slicedToArray$5(_map, 3);
10706
10724
  queuedUserToken = _map2[0];
10707
10725
  queuedAuthenticatedUserToken = _map2[1];
10726
+ queuedInitParams = _map2[2];
10708
10727
  }
10709
10728
 
10710
10729
  // If user called `aa('setUserToken')` or `aa('setAuthenticatedUserToken')`
@@ -10755,6 +10774,23 @@
10755
10774
  started: function started() {
10756
10775
  insightsClient('addAlgoliaAgent', 'insights-middleware');
10757
10776
  helper = instantSearchInstance.mainHelper;
10777
+ var queueAtStart = insightsClient.queue;
10778
+ if (Array.isArray(queueAtStart)) {
10779
+ var _map3 = ['setUserToken', 'setAuthenticatedUserToken', 'init'].map(function (key) {
10780
+ var _ref7 = find$1(queueAtStart.slice().reverse(), function (_ref9) {
10781
+ var _ref10 = _slicedToArray$5(_ref9, 1),
10782
+ method = _ref10[0];
10783
+ return method === key;
10784
+ }) || [],
10785
+ _ref8 = _slicedToArray$5(_ref7, 2),
10786
+ value = _ref8[1];
10787
+ return value;
10788
+ });
10789
+ var _map4 = _slicedToArray$5(_map3, 3);
10790
+ queuedUserToken = _map4[0];
10791
+ queuedAuthenticatedUserToken = _map4[1];
10792
+ queuedInitParams = _map4[2];
10793
+ }
10758
10794
  initialParameters = {
10759
10795
  userToken: helper.state.userToken,
10760
10796
  clickAnalytics: helper.state.clickAnalytics
@@ -10770,8 +10806,9 @@
10770
10806
  if (!$$internal) {
10771
10807
  instantSearchInstance.scheduleSearch();
10772
10808
  }
10773
- var setUserTokenToSearch = function setUserTokenToSearch(userToken) {
10774
- var immediate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
10809
+ var setUserTokenToSearch = function setUserTokenToSearch(userToken, tokenType) {
10810
+ var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
10811
+ var unsetAuthenticatedUserToken = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
10775
10812
  var normalizedUserToken = normalizeUserToken(userToken);
10776
10813
  if (!normalizedUserToken) {
10777
10814
  return;
@@ -10784,6 +10821,13 @@
10784
10821
  if (existingToken && existingToken !== userToken) {
10785
10822
  instantSearchInstance.scheduleSearch();
10786
10823
  }
10824
+ currentTokenType = tokenType;
10825
+ }
10826
+
10827
+ // the authenticated user token cannot be overridden by a user or anonymous token
10828
+ // for instant search query requests
10829
+ if (currentTokenType && currentTokenType === 'authenticated' && tokenType === 'default' && !unsetAuthenticatedUserToken) {
10830
+ return;
10787
10831
  }
10788
10832
 
10789
10833
  // Delay the token application to the next render cycle
@@ -10793,14 +10837,8 @@
10793
10837
  applyToken();
10794
10838
  }
10795
10839
  };
10796
- var anonymousUserToken = getInsightsAnonymousUserTokenInternal();
10797
- if (anonymousUserToken) {
10798
- // When `aa('init', { ... })` is called, it creates an anonymous user token in cookie.
10799
- // We can set it as userToken.
10800
- setUserTokenToSearch(anonymousUserToken, true);
10801
- }
10802
10840
  function setUserToken(token, userToken, authenticatedUserToken) {
10803
- setUserTokenToSearch(token, true);
10841
+ setUserTokenToSearch(token, authenticatedUserToken ? 'authenticated' : 'default', true);
10804
10842
  if (userToken) {
10805
10843
  insightsClient('setUserToken', userToken);
10806
10844
  }
@@ -10808,19 +10846,66 @@
10808
10846
  insightsClient('setAuthenticatedUserToken', authenticatedUserToken);
10809
10847
  }
10810
10848
  }
10849
+ var anonymousUserToken = undefined;
10850
+ var anonymousTokenFromInsights = getInsightsAnonymousUserTokenInternal();
10851
+ if (anonymousTokenFromInsights) {
10852
+ // When `aa('init', { ... })` is called, it creates an anonymous user token in cookie.
10853
+ // We can set it as userToken on instantsearch and insights. If it's not set as an insights
10854
+ // userToken before a sendEvent, insights automatically generates a new anonymous token,
10855
+ // causing a state change and an unnecessary query on instantsearch.
10856
+ anonymousUserToken = anonymousTokenFromInsights;
10857
+ } else {
10858
+ var token = "anonymous-".concat(createUUID());
10859
+ anonymousUserToken = token;
10860
+ }
10861
+ var authenticatedUserTokenFromInit;
10862
+ var userTokenFromInit;
10863
+
10864
+ // With SSR, the token could be be set on the state. We make sure
10865
+ // that insights is in sync with that token since, there is no
10866
+ // insights lib on the server.
10867
+ var tokenFromSearchParameters = initialParameters.userToken;
10868
+
10869
+ // When the first query is sent, the token is possibly not yet be set by
10870
+ // the insights onChange callbacks (if insights isn't yet loaded).
10871
+ // It is explicitly being set here so that the first query has the
10872
+ // initial tokens set and ensure a second query isn't automatically
10873
+ // made when the onChange callback actually changes the state.
10874
+ if (insightsInitParams) {
10875
+ if (insightsInitParams.authenticatedUserToken) {
10876
+ authenticatedUserTokenFromInit = insightsInitParams.authenticatedUserToken;
10877
+ } else if (insightsInitParams.userToken) {
10878
+ userTokenFromInit = insightsInitParams.userToken;
10879
+ }
10880
+ }
10811
10881
 
10812
10882
  // We consider the `userToken` or `authenticatedUserToken` before an
10813
- // `init` call of higher importance than one from the queue.
10883
+ // `init` call of higher importance than one from the queue and ones set
10884
+ // from the init props to be higher than that.
10885
+ var tokenFromInit = authenticatedUserTokenFromInit || userTokenFromInit;
10814
10886
  var tokenBeforeInit = authenticatedUserTokenBeforeInit || userTokenBeforeInit;
10815
- var queuedToken = queuedAuthenticatedUserToken || queuedUserToken;
10816
- if (tokenBeforeInit) {
10887
+ var tokenFromQueue = queuedAuthenticatedUserToken || queuedUserToken;
10888
+ if (tokenFromInit) {
10889
+ setUserToken(tokenFromInit, userTokenFromInit, authenticatedUserTokenFromInit);
10890
+ } else if (tokenFromSearchParameters) {
10891
+ setUserToken(tokenFromSearchParameters, tokenFromSearchParameters, undefined);
10892
+ } else if (tokenBeforeInit) {
10817
10893
  setUserToken(tokenBeforeInit, userTokenBeforeInit, authenticatedUserTokenBeforeInit);
10818
- } else if (queuedToken) {
10819
- setUserToken(queuedToken, queuedUserToken, queuedAuthenticatedUserToken);
10894
+ } else if (tokenFromQueue) {
10895
+ setUserToken(tokenFromQueue, queuedUserToken, queuedAuthenticatedUserToken);
10896
+ } else if (anonymousUserToken) {
10897
+ var _queuedInitParams;
10898
+ setUserToken(anonymousUserToken, anonymousUserToken, undefined);
10899
+ if (insightsInitParams !== null && insightsInitParams !== void 0 && insightsInitParams.useCookie || (_queuedInitParams = queuedInitParams) !== null && _queuedInitParams !== void 0 && _queuedInitParams.useCookie) {
10900
+ var _queuedInitParams2;
10901
+ saveTokenAsCookie(anonymousUserToken, (insightsInitParams === null || insightsInitParams === void 0 ? void 0 : insightsInitParams.cookieDuration) || ((_queuedInitParams2 = queuedInitParams) === null || _queuedInitParams2 === void 0 ? void 0 : _queuedInitParams2.cookieDuration));
10902
+ }
10820
10903
  }
10821
10904
 
10822
10905
  // This updates userToken which is set explicitly by `aa('setUserToken', userToken)`
10823
- insightsClient('onUserTokenChange', setUserTokenToSearch, {
10906
+ insightsClient('onUserTokenChange', function (token) {
10907
+ return setUserTokenToSearch(token, 'default', true);
10908
+ }, {
10824
10909
  immediate: true
10825
10910
  });
10826
10911
 
@@ -10829,10 +10914,10 @@
10829
10914
  // If we're unsetting the `authenticatedUserToken`, we revert to the `userToken`
10830
10915
  if (!authenticatedUserToken) {
10831
10916
  insightsClient('getUserToken', null, function (_, userToken) {
10832
- setUserTokenToSearch(userToken);
10917
+ setUserTokenToSearch(userToken, 'default', true, true);
10833
10918
  });
10834
10919
  }
10835
- setUserTokenToSearch(authenticatedUserToken);
10920
+ setUserTokenToSearch(authenticatedUserToken, 'authenticated', true);
10836
10921
  }, {
10837
10922
  immediate: true
10838
10923
  });
@@ -10878,6 +10963,13 @@
10878
10963
  };
10879
10964
  };
10880
10965
  }
10966
+ function saveTokenAsCookie(token, cookieDuration) {
10967
+ var MONTH = 30 * 24 * 60 * 60 * 1000;
10968
+ var d = new Date();
10969
+ d.setTime(d.getTime() + (cookieDuration || MONTH * 6));
10970
+ var expires = "expires=".concat(d.toUTCString());
10971
+ document.cookie = "_ALGOLIA=".concat(token, ";").concat(expires, ";path=/");
10972
+ }
10881
10973
 
10882
10974
  /**
10883
10975
  * Determines if a given insights `client` supports the optional call to `init`
@@ -12536,7 +12628,7 @@
12536
12628
  };
12537
12629
  }
12538
12630
 
12539
- var version$2 = '4.75.2';
12631
+ var version$2 = '4.75.3';
12540
12632
 
12541
12633
  function _typeof$l(obj) {
12542
12634
  "@babel/helpers - typeof";