react-instantsearch 7.13.8 → 7.13.10

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.13.8';
10
+ var version = '7.13.10';
11
11
 
12
12
  // Copyright Joyent, Inc. and other Node contributors.
13
13
  //
@@ -1176,7 +1176,7 @@
1176
1176
 
1177
1177
  mod[attribute] = facetRefinement;
1178
1178
 
1179
- return defaultsPure({}, mod, refinementList);
1179
+ return defaultsPure(mod, refinementList);
1180
1180
  },
1181
1181
  /**
1182
1182
  * Removes refinement(s) for an attribute:
@@ -2510,7 +2510,6 @@
2510
2510
 
2511
2511
  return this.setQueryParameters({
2512
2512
  hierarchicalFacetsRefinements: defaultsPure(
2513
- {},
2514
2513
  mod,
2515
2514
  this.hierarchicalFacetsRefinements
2516
2515
  ),
@@ -2538,7 +2537,6 @@
2538
2537
  mod[facet] = [path];
2539
2538
  return this.setQueryParameters({
2540
2539
  hierarchicalFacetsRefinements: defaultsPure(
2541
- {},
2542
2540
  mod,
2543
2541
  this.hierarchicalFacetsRefinements
2544
2542
  ),
@@ -2559,7 +2557,6 @@
2559
2557
  mod[facet] = [];
2560
2558
  return this.setQueryParameters({
2561
2559
  hierarchicalFacetsRefinements: defaultsPure(
2562
- {},
2563
2560
  mod,
2564
2561
  this.hierarchicalFacetsRefinements
2565
2562
  ),
@@ -3557,12 +3554,9 @@
3557
3554
  });
3558
3555
 
3559
3556
  // Make every key of the result options reachable from the instance
3560
- var opts = merge_1(
3561
- {
3562
- persistHierarchicalRootCount: false,
3563
- },
3564
- options
3565
- );
3557
+ var opts = defaultsPure(options, {
3558
+ persistHierarchicalRootCount: false,
3559
+ });
3566
3560
  Object.keys(opts).forEach(function (key) {
3567
3561
  self[key] = opts[key];
3568
3562
  });
@@ -3829,11 +3823,16 @@
3829
3823
  return;
3830
3824
  }
3831
3825
 
3832
- self.hierarchicalFacets[position][attributeIndex].data = merge_1(
3833
- {},
3834
- self.hierarchicalFacets[position][attributeIndex].data,
3835
- facetResults
3836
- );
3826
+ self.hierarchicalFacets[position][attributeIndex].data =
3827
+ self.persistHierarchicalRootCount
3828
+ ? defaultsPure(
3829
+ self.hierarchicalFacets[position][attributeIndex].data,
3830
+ facetResults
3831
+ )
3832
+ : defaultsPure(
3833
+ facetResults,
3834
+ self.hierarchicalFacets[position][attributeIndex].data
3835
+ );
3837
3836
  } else {
3838
3837
  position = disjunctiveFacetsIndices[dfacet];
3839
3838
 
@@ -3842,7 +3841,7 @@
3842
3841
 
3843
3842
  self.disjunctiveFacets[position] = {
3844
3843
  name: dfacet,
3845
- data: defaultsPure({}, facetResults, dataFromMainRequest),
3844
+ data: defaultsPure(dataFromMainRequest, facetResults),
3846
3845
  exhaustive: result.exhaustiveFacetsCount,
3847
3846
  };
3848
3847
  assignFacetStats(
@@ -4240,7 +4239,7 @@
4240
4239
  return undefined;
4241
4240
  }
4242
4241
 
4243
- var options = defaultsPure({}, opts, {
4242
+ var options = defaultsPure(opts, {
4244
4243
  sortBy: SearchResults.DEFAULT_SORT,
4245
4244
  // if no sortBy is given, attempt to sort based on facetOrdering
4246
4245
  // if it is given, we still allow to sort via facet ordering first
@@ -4531,7 +4530,7 @@
4531
4530
 
4532
4531
  var sortAndMergeRecommendations_1 = sortAndMergeRecommendations;
4533
4532
 
4534
- var version$1 = '3.22.5';
4533
+ var version$1 = '3.22.6';
4535
4534
 
4536
4535
  var escapeFacetValue$3 = escapeFacetValue_1.escapeFacetValue;
4537
4536
 
@@ -7801,7 +7800,10 @@
7801
7800
 
7802
7801
  // typed as any, since it accepts the _real_ js clients, not the interface we otherwise expect
7803
7802
  function getAppIdAndApiKey(searchClient) {
7804
- if (searchClient.transporter) {
7803
+ if (searchClient.appId && searchClient.apiKey) {
7804
+ // searchClient v5
7805
+ return [searchClient.appId, searchClient.apiKey];
7806
+ } else if (searchClient.transporter) {
7805
7807
  // searchClient v4 or v5
7806
7808
  var transporter = searchClient.transporter;
7807
7809
  var headers = transporter.headers || transporter.baseHeaders;
@@ -7902,8 +7904,9 @@
7902
7904
  }
7903
7905
  return res;
7904
7906
  }
7905
- function getRefinements(results, state) {
7907
+ function getRefinements(_results, state) {
7906
7908
  var includesQuery = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
7909
+ var results = _results || {};
7907
7910
  var refinements = [];
7908
7911
  var _state$facetsRefineme = state.facetsRefinements,
7909
7912
  facetsRefinements = _state$facetsRefineme === void 0 ? {} : _state$facetsRefineme,
@@ -10184,7 +10187,6 @@
10184
10187
  // TODO: emit "change" event when events for Recommend are implemented
10185
10188
  }
10186
10189
  }
10187
-
10188
10190
  function getLocalWidgetsUiState(widgets, widgetStateOptions) {
10189
10191
  var initialUiState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
10190
10192
  return widgets.reduce(function (uiState, widget) {
@@ -11205,7 +11207,6 @@
11205
11207
  $$internal = _props$$$internal === void 0 ? false : _props$$$internal,
11206
11208
  _props$$$automatic = props.$$automatic,
11207
11209
  $$automatic = _props$$$automatic === void 0 ? false : _props$$$automatic;
11208
- var currentTokenType;
11209
11210
  var potentialInsightsClient = _insightsClient;
11210
11211
  if (!_insightsClient && _insightsClient !== null) {
11211
11212
  safelyRunOnBrowser(function (_ref) {
@@ -11251,9 +11252,7 @@
11251
11252
  apiKey = _getAppIdAndApiKey2[1];
11252
11253
  var queuedInitParams = undefined;
11253
11254
  var queuedUserToken = undefined;
11254
- var queuedAuthenticatedUserToken = undefined;
11255
11255
  var userTokenBeforeInit = undefined;
11256
- var authenticatedUserTokenBeforeInit = undefined;
11257
11256
  var queue = insightsClient.queue;
11258
11257
  if (Array.isArray(queue)) {
11259
11258
  // Context: The umd build of search-insights is asynchronously loaded by the snippet.
@@ -11266,7 +11265,7 @@
11266
11265
  // At this point, even though `search-insights` is not loaded yet,
11267
11266
  // we still want to read the token from the queue.
11268
11267
  // Otherwise, the first search call will be fired without the token.
11269
- var _map = ['setUserToken', 'setAuthenticatedUserToken', 'init'].map(function (key) {
11268
+ var _map = ['setUserToken', 'init'].map(function (key) {
11270
11269
  var _ref3 = find$1(queue.slice().reverse(), function (_ref5) {
11271
11270
  var _ref6 = _slicedToArray$7(_ref5, 1),
11272
11271
  method = _ref6[0];
@@ -11276,23 +11275,18 @@
11276
11275
  value = _ref4[1];
11277
11276
  return value;
11278
11277
  });
11279
- var _map2 = _slicedToArray$7(_map, 3);
11278
+ var _map2 = _slicedToArray$7(_map, 2);
11280
11279
  queuedUserToken = _map2[0];
11281
- queuedAuthenticatedUserToken = _map2[1];
11282
- queuedInitParams = _map2[2];
11280
+ queuedInitParams = _map2[1];
11283
11281
  }
11284
11282
 
11285
- // If user called `aa('setUserToken')` or `aa('setAuthenticatedUserToken')`
11286
- // before creating the Insights middleware, we temporarily store the token
11287
- // and set it later on.
11283
+ // If user called `aa('setUserToken')` before creating the Insights middleware,
11284
+ // we temporarily store the token and set it later on.
11288
11285
  //
11289
11286
  // Otherwise, the `init` call might override them with anonymous user token.
11290
11287
  insightsClient('getUserToken', null, function (_error, userToken) {
11291
11288
  userTokenBeforeInit = normalizeUserToken(userToken);
11292
11289
  });
11293
- insightsClient('getAuthenticatedUserToken', null, function (_error, userToken) {
11294
- authenticatedUserTokenBeforeInit = normalizeUserToken(userToken);
11295
- });
11296
11290
 
11297
11291
  // Only `init` if the `insightsInitParams` option is passed or
11298
11292
  // if the `insightsClient` version doesn't supports optional `init` calling.
@@ -11332,7 +11326,7 @@
11332
11326
  helper = instantSearchInstance.mainHelper;
11333
11327
  var queueAtStart = insightsClient.queue;
11334
11328
  if (Array.isArray(queueAtStart)) {
11335
- var _map3 = ['setUserToken', 'setAuthenticatedUserToken', 'init'].map(function (key) {
11329
+ var _map3 = ['setUserToken', 'init'].map(function (key) {
11336
11330
  var _ref7 = find$1(queueAtStart.slice().reverse(), function (_ref9) {
11337
11331
  var _ref10 = _slicedToArray$7(_ref9, 1),
11338
11332
  method = _ref10[0];
@@ -11342,15 +11336,11 @@
11342
11336
  value = _ref8[1];
11343
11337
  return value;
11344
11338
  });
11345
- var _map4 = _slicedToArray$7(_map3, 3);
11339
+ var _map4 = _slicedToArray$7(_map3, 2);
11346
11340
  queuedUserToken = _map4[0];
11347
- queuedAuthenticatedUserToken = _map4[1];
11348
- queuedInitParams = _map4[2];
11341
+ queuedInitParams = _map4[1];
11349
11342
  }
11350
- initialParameters = {
11351
- userToken: helper.state.userToken,
11352
- clickAnalytics: helper.state.clickAnalytics
11353
- };
11343
+ initialParameters = getInitialParameters(instantSearchInstance);
11354
11344
 
11355
11345
  // We don't want to force clickAnalytics when the insights is enabled from the search response.
11356
11346
  // This means we don't enable insights for indices that don't opt in
@@ -11362,9 +11352,8 @@
11362
11352
  if (!$$internal) {
11363
11353
  instantSearchInstance.scheduleSearch();
11364
11354
  }
11365
- var setUserTokenToSearch = function setUserTokenToSearch(userToken, tokenType) {
11366
- var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
11367
- var unsetAuthenticatedUserToken = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
11355
+ var setUserTokenToSearch = function setUserTokenToSearch(userToken) {
11356
+ var immediate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
11368
11357
  var normalizedUserToken = normalizeUserToken(userToken);
11369
11358
  if (!normalizedUserToken) {
11370
11359
  return;
@@ -11377,13 +11366,6 @@
11377
11366
  if (existingToken && existingToken !== userToken) {
11378
11367
  instantSearchInstance.scheduleSearch();
11379
11368
  }
11380
- currentTokenType = tokenType;
11381
- }
11382
-
11383
- // the authenticated user token cannot be overridden by a user or anonymous token
11384
- // for instant search query requests
11385
- if (currentTokenType && currentTokenType === 'authenticated' && tokenType === 'default' && !unsetAuthenticatedUserToken) {
11386
- return;
11387
11369
  }
11388
11370
 
11389
11371
  // Delay the token application to the next render cycle
@@ -11393,14 +11375,9 @@
11393
11375
  applyToken();
11394
11376
  }
11395
11377
  };
11396
- function setUserToken(token, userToken, authenticatedUserToken) {
11397
- setUserTokenToSearch(token, authenticatedUserToken ? 'authenticated' : 'default', true);
11398
- if (userToken) {
11399
- insightsClient('setUserToken', userToken);
11400
- }
11401
- if (authenticatedUserToken) {
11402
- insightsClient('setAuthenticatedUserToken', authenticatedUserToken);
11403
- }
11378
+ function setUserToken(token) {
11379
+ setUserTokenToSearch(token, true);
11380
+ insightsClient('setUserToken', token);
11404
11381
  }
11405
11382
  var anonymousUserToken = undefined;
11406
11383
  var anonymousTokenFromInsights = getInsightsAnonymousUserTokenInternal();
@@ -11414,7 +11391,6 @@
11414
11391
  var token = "anonymous-".concat(createUUID());
11415
11392
  anonymousUserToken = token;
11416
11393
  }
11417
- var authenticatedUserTokenFromInit;
11418
11394
  var userTokenFromInit;
11419
11395
 
11420
11396
  // With SSR, the token could be be set on the state. We make sure
@@ -11422,36 +11398,25 @@
11422
11398
  // insights lib on the server.
11423
11399
  var tokenFromSearchParameters = initialParameters.userToken;
11424
11400
 
11425
- // When the first query is sent, the token is possibly not yet be set by
11401
+ // When the first query is sent, the token is possibly not yet set by
11426
11402
  // the insights onChange callbacks (if insights isn't yet loaded).
11427
11403
  // It is explicitly being set here so that the first query has the
11428
11404
  // initial tokens set and ensure a second query isn't automatically
11429
11405
  // made when the onChange callback actually changes the state.
11430
- if (insightsInitParams) {
11431
- if (insightsInitParams.authenticatedUserToken) {
11432
- authenticatedUserTokenFromInit = insightsInitParams.authenticatedUserToken;
11433
- } else if (insightsInitParams.userToken) {
11434
- userTokenFromInit = insightsInitParams.userToken;
11435
- }
11406
+ if (insightsInitParams !== null && insightsInitParams !== void 0 && insightsInitParams.userToken) {
11407
+ userTokenFromInit = insightsInitParams.userToken;
11436
11408
  }
11437
-
11438
- // We consider the `userToken` or `authenticatedUserToken` before an
11439
- // `init` call of higher importance than one from the queue and ones set
11440
- // from the init props to be higher than that.
11441
- var tokenFromInit = authenticatedUserTokenFromInit || userTokenFromInit;
11442
- var tokenBeforeInit = authenticatedUserTokenBeforeInit || userTokenBeforeInit;
11443
- var tokenFromQueue = queuedAuthenticatedUserToken || queuedUserToken;
11444
- if (tokenFromInit) {
11445
- setUserToken(tokenFromInit, userTokenFromInit, authenticatedUserTokenFromInit);
11409
+ if (userTokenFromInit) {
11410
+ setUserToken(userTokenFromInit);
11446
11411
  } else if (tokenFromSearchParameters) {
11447
- setUserToken(tokenFromSearchParameters, tokenFromSearchParameters, undefined);
11448
- } else if (tokenBeforeInit) {
11449
- setUserToken(tokenBeforeInit, userTokenBeforeInit, authenticatedUserTokenBeforeInit);
11450
- } else if (tokenFromQueue) {
11451
- setUserToken(tokenFromQueue, queuedUserToken, queuedAuthenticatedUserToken);
11412
+ setUserToken(tokenFromSearchParameters);
11413
+ } else if (userTokenBeforeInit) {
11414
+ setUserToken(userTokenBeforeInit);
11415
+ } else if (queuedUserToken) {
11416
+ setUserToken(queuedUserToken);
11452
11417
  } else if (anonymousUserToken) {
11453
11418
  var _queuedInitParams;
11454
- setUserToken(anonymousUserToken, anonymousUserToken, undefined);
11419
+ setUserToken(anonymousUserToken);
11455
11420
  if (insightsInitParams !== null && insightsInitParams !== void 0 && insightsInitParams.useCookie || (_queuedInitParams = queuedInitParams) !== null && _queuedInitParams !== void 0 && _queuedInitParams.useCookie) {
11456
11421
  var _queuedInitParams2;
11457
11422
  saveTokenAsCookie(anonymousUserToken, (insightsInitParams === null || insightsInitParams === void 0 ? void 0 : insightsInitParams.cookieDuration) || ((_queuedInitParams2 = queuedInitParams) === null || _queuedInitParams2 === void 0 ? void 0 : _queuedInitParams2.cookieDuration));
@@ -11460,20 +11425,7 @@
11460
11425
 
11461
11426
  // This updates userToken which is set explicitly by `aa('setUserToken', userToken)`
11462
11427
  insightsClient('onUserTokenChange', function (token) {
11463
- return setUserTokenToSearch(token, 'default', true);
11464
- }, {
11465
- immediate: true
11466
- });
11467
-
11468
- // This updates userToken which is set explicitly by `aa('setAuthenticatedtUserToken', authenticatedUserToken)`
11469
- insightsClient('onAuthenticatedUserTokenChange', function (authenticatedUserToken) {
11470
- // If we're unsetting the `authenticatedUserToken`, we revert to the `userToken`
11471
- if (!authenticatedUserToken) {
11472
- insightsClient('getUserToken', null, function (_, userToken) {
11473
- setUserTokenToSearch(userToken, 'default', true, true);
11474
- });
11475
- }
11476
- setUserTokenToSearch(authenticatedUserToken, 'authenticated', true);
11428
+ return setUserTokenToSearch(token, true);
11477
11429
  }, {
11478
11430
  immediate: true
11479
11431
  });
@@ -11495,7 +11447,7 @@
11495
11447
  var lastQueryId;
11496
11448
  instantSearchInstance.mainHelper.derivedHelpers[0].on('result', function (_ref11) {
11497
11449
  var results = _ref11.results;
11498
- if (!results.queryID || results.queryID !== lastQueryId) {
11450
+ if (results && (!results.queryID || results.queryID !== lastQueryId)) {
11499
11451
  lastQueryId = results.queryID;
11500
11452
  viewedObjectIDs.clear();
11501
11453
  }
@@ -11532,7 +11484,6 @@
11532
11484
  },
11533
11485
  unsubscribe: function unsubscribe() {
11534
11486
  insightsClient('onUserTokenChange', undefined);
11535
- insightsClient('onAuthenticatedUserTokenChange', undefined);
11536
11487
  instantSearchInstance.sendEventToInsights = noop$1;
11537
11488
  if (helper && initialParameters) {
11538
11489
  helper.overrideStateWithoutTriggeringChangeEvent(_objectSpread$g(_objectSpread$g({}, helper.state), initialParameters));
@@ -11542,6 +11493,16 @@
11542
11493
  };
11543
11494
  };
11544
11495
  }
11496
+ function getInitialParameters(instantSearchInstance) {
11497
+ var _instantSearchInstanc, _instantSearchInstanc2;
11498
+ // in SSR, the initial state we use in this domain is set on the main index
11499
+ var stateFromInitialResults = ((_instantSearchInstanc = instantSearchInstance._initialResults) === null || _instantSearchInstanc === void 0 ? void 0 : (_instantSearchInstanc2 = _instantSearchInstanc[instantSearchInstance.indexName]) === null || _instantSearchInstanc2 === void 0 ? void 0 : _instantSearchInstanc2.state) || {};
11500
+ var stateFromHelper = instantSearchInstance.mainHelper.state;
11501
+ return {
11502
+ userToken: stateFromInitialResults.userToken || stateFromHelper.userToken,
11503
+ clickAnalytics: stateFromInitialResults.clickAnalytics || stateFromHelper.clickAnalytics
11504
+ };
11505
+ }
11545
11506
  function saveTokenAsCookie(token, cookieDuration) {
11546
11507
  var MONTH = 30 * 24 * 60 * 60 * 1000;
11547
11508
  var d = new Date();
@@ -13207,7 +13168,7 @@
13207
13168
  };
13208
13169
  }
13209
13170
 
13210
- var version$3 = '4.75.5';
13171
+ var version$3 = '4.75.7';
13211
13172
 
13212
13173
  function _typeof$q(obj) {
13213
13174
  "@babel/helpers - typeof";
@@ -13367,9 +13328,11 @@
13367
13328
  // this purposely breaks typescript's type inference to ensure it's not used
13368
13329
  // as it's used for a default parameter for example
13369
13330
  // source: https://github.com/Microsoft/TypeScript/issues/14829#issuecomment-504042546
13331
+
13370
13332
  /**
13371
13333
  * Global options for an InstantSearch instance.
13372
13334
  */
13335
+
13373
13336
  var INSTANTSEARCH_FUTURE_DEFAULTS = {
13374
13337
  preserveSharedStateOnUnmount: false,
13375
13338
  persistHierarchicalRootCount: false
@@ -14130,7 +14093,6 @@
14130
14093
  // manually inject the routing middleware in this library, and not rely
14131
14094
  // on the provided `routing` prop.
14132
14095
  }
14133
-
14134
14096
  var cleanupTimerRef = React.useRef(null);
14135
14097
  var store = shim_1(React.useCallback(function () {
14136
14098
  var search = searchRef.current;
@@ -14984,7 +14946,7 @@
14984
14946
  function getItems() {
14985
14947
  if (!results) {
14986
14948
  return transformItems(getRefinementsItems({
14987
- results: {},
14949
+ results: null,
14988
14950
  helper: helper,
14989
14951
  indexId: helper.state.index,
14990
14952
  includedAttributes: includedAttributes,
@@ -16606,7 +16568,7 @@
16606
16568
  sendEvent: sendEvent,
16607
16569
  bindEvent: bindEvent,
16608
16570
  banner: banner,
16609
- results: results,
16571
+ results: results || undefined,
16610
16572
  showPrevious: showPrevious,
16611
16573
  showMore: showMore,
16612
16574
  isFirstPage: isFirstPage,
@@ -20390,12 +20352,15 @@
20390
20352
  var searchResults = widget.getResults();
20391
20353
  var recommendResults = (_widget$getHelper = widget.getHelper()) === null || _widget$getHelper === void 0 ? void 0 : _widget$getHelper.lastRecommendResults;
20392
20354
  if (searchResults || recommendResults) {
20393
- var _searchResults$_rawRe;
20355
+ var _searchResults$_rawRe, _requestParams$, _requestParams$2;
20394
20356
  var resultsCount = (searchResults === null || searchResults === void 0 ? void 0 : (_searchResults$_rawRe = searchResults._rawResults) === null || _searchResults$_rawRe === void 0 ? void 0 : _searchResults$_rawRe.length) || 0;
20395
20357
  var requestParams = resultsCount ? requestParamsList === null || requestParamsList === void 0 ? void 0 : requestParamsList.slice(requestParamsIndex, requestParamsIndex + resultsCount) : [];
20396
20358
  requestParamsIndex += resultsCount;
20397
20359
  initialResults[widget.getIndexId()] = _objectSpread$J(_objectSpread$J(_objectSpread$J({}, searchResults && {
20398
- state: _objectSpread$J({}, searchResults._state),
20360
+ state: _objectSpread$J(_objectSpread$J({}, searchResults._state), {}, {
20361
+ clickAnalytics: requestParams === null || requestParams === void 0 ? void 0 : (_requestParams$ = requestParams[0]) === null || _requestParams$ === void 0 ? void 0 : _requestParams$.clickAnalytics,
20362
+ userToken: requestParams === null || requestParams === void 0 ? void 0 : (_requestParams$2 = requestParams[0]) === null || _requestParams$2 === void 0 ? void 0 : _requestParams$2.userToken
20363
+ }),
20399
20364
  results: searchResults._rawResults
20400
20365
  }), recommendResults && {
20401
20366
  recommendResults: {
@@ -20470,7 +20435,7 @@
20470
20435
  searchRef = _ref3.searchRef,
20471
20436
  skipRecommend = _ref3.skipRecommend;
20472
20437
  return Promise.resolve().then(function () {
20473
- renderToString( /*#__PURE__*/React__default.createElement(InstantSearchServerContext.Provider, {
20438
+ renderToString(/*#__PURE__*/React__default.createElement(InstantSearchServerContext.Provider, {
20474
20439
  value: {
20475
20440
  notifyServer: notifyServer
20476
20441
  }