react-instantsearch-core 7.1.0 → 7.2.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/README.md CHANGED
@@ -1,7 +1,6 @@
1
1
  <!-- START doctoc generated TOC please keep comment here to allow auto update -->
2
2
  <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
3
3
 
4
-
5
4
  - [react-instantsearch-core](#react-instantsearch-core)
6
5
  - [Installation](#installation)
7
6
  - [Getting started](#getting-started)
@@ -17,7 +17,9 @@ function useInstantSearch() {
17
17
  uiState = _useSearchState.uiState,
18
18
  setUiState = _useSearchState.setUiState,
19
19
  indexUiState = _useSearchState.indexUiState,
20
- setIndexUiState = _useSearchState.setIndexUiState;
20
+ setIndexUiState = _useSearchState.setIndexUiState,
21
+ renderState = _useSearchState.renderState,
22
+ indexRenderState = _useSearchState.indexRenderState;
21
23
  var _useSearchResults = (0, _useSearchResults2.useSearchResults)(),
22
24
  results = _useSearchResults.results,
23
25
  scopedResults = _useSearchResults.scopedResults;
@@ -50,6 +52,8 @@ function useInstantSearch() {
50
52
  setUiState: setUiState,
51
53
  indexUiState: indexUiState,
52
54
  setIndexUiState: setIndexUiState,
55
+ renderState: renderState,
56
+ indexRenderState: indexRenderState,
53
57
  addMiddlewares: addMiddlewares,
54
58
  refresh: refresh,
55
59
  status: search.status,
@@ -4,16 +4,25 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useInstantSearchApi = useInstantSearchApi;
7
- var _InstantSearch = _interopRequireDefault(require("instantsearch.js/cjs/lib/InstantSearch"));
7
+ var _InstantSearch = _interopRequireWildcard(require("instantsearch.js/cjs/lib/InstantSearch"));
8
8
  var _react = require("react");
9
9
  var _shim = require("use-sync-external-store/shim");
10
10
  var _version = _interopRequireDefault(require("../version"));
11
+ var _dequal = require("./dequal");
11
12
  var _useForceUpdate = require("./useForceUpdate");
12
13
  var _useInstantSearchServerContext = require("./useInstantSearchServerContext");
13
14
  var _useInstantSearchSSRContext = require("./useInstantSearchSSRContext");
14
15
  var _useRSCContext = require("./useRSCContext");
15
16
  var _warn = require("./warn");
16
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
20
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
21
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
22
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
23
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
24
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
25
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
17
26
  var defaultUserAgents = ["react (".concat(_react.version, ")"), "react-instantsearch (".concat(_version.default, ")"), "react-instantsearch-core (".concat(_version.default, ")")];
18
27
  var serverUserAgent = "react-instantsearch-server (".concat(_version.default, ")");
19
28
  var nextUserAgent = function nextUserAgent(nextVersion) {
@@ -109,6 +118,10 @@ function useInstantSearchApi(props) {
109
118
  _search._stalledSearchDelay = (_props$stalledSearchD = props.stalledSearchDelay) !== null && _props$stalledSearchD !== void 0 ? _props$stalledSearchD : 200;
110
119
  prevPropsRef.current = props;
111
120
  }
121
+ if (!(0, _dequal.dequal)(prevProps.future, props.future)) {
122
+ _search.future = _objectSpread(_objectSpread({}, _InstantSearch.INSTANTSEARCH_FUTURE_DEFAULTS), props.future);
123
+ prevPropsRef.current = props;
124
+ }
112
125
 
113
126
  // Updating the `routing` prop is not supported because InstantSearch.js
114
127
  // doesn't let us change it. This might not be a problem though, because `routing`
@@ -24,6 +24,13 @@ function useSearchState() {
24
24
  uiState = _useState2[0],
25
25
  setLocalUiState = _useState2[1];
26
26
  var indexUiState = uiState[indexId];
27
+ var _useState3 = (0, _react.useState)(function () {
28
+ return search.renderState;
29
+ }),
30
+ _useState4 = _slicedToArray(_useState3, 2),
31
+ renderState = _useState4[0],
32
+ setRenderState = _useState4[1];
33
+ var indexRenderState = renderState[indexId] || {};
27
34
  var setUiState = (0, _react.useCallback)(function (nextUiState) {
28
35
  search.setUiState(nextUiState);
29
36
  }, [search]);
@@ -33,6 +40,7 @@ function useSearchState() {
33
40
  (0, _react.useEffect)(function () {
34
41
  function handleRender() {
35
42
  setLocalUiState(search.getUiState());
43
+ setRenderState(search.renderState);
36
44
  }
37
45
  search.addListener('render', handleRender);
38
46
  return function () {
@@ -43,6 +51,8 @@ function useSearchState() {
43
51
  uiState: uiState,
44
52
  setUiState: setUiState,
45
53
  indexUiState: indexUiState,
46
- setIndexUiState: setIndexUiState
54
+ setIndexUiState: setIndexUiState,
55
+ renderState: renderState,
56
+ indexRenderState: indexRenderState
47
57
  };
48
58
  }
@@ -4,5 +4,5 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _default = '7.1.0';
7
+ var _default = '7.2.0';
8
8
  exports.default = _default;
@@ -11,7 +11,9 @@ export function useInstantSearch() {
11
11
  uiState = _useSearchState.uiState,
12
12
  setUiState = _useSearchState.setUiState,
13
13
  indexUiState = _useSearchState.indexUiState,
14
- setIndexUiState = _useSearchState.setIndexUiState;
14
+ setIndexUiState = _useSearchState.setIndexUiState,
15
+ renderState = _useSearchState.renderState,
16
+ indexRenderState = _useSearchState.indexRenderState;
15
17
  var _useSearchResults = useSearchResults(),
16
18
  results = _useSearchResults.results,
17
19
  scopedResults = _useSearchResults.scopedResults;
@@ -44,6 +46,8 @@ export function useInstantSearch() {
44
46
  setUiState: setUiState,
45
47
  indexUiState: indexUiState,
46
48
  setIndexUiState: setIndexUiState,
49
+ renderState: renderState,
50
+ indexRenderState: indexRenderState,
47
51
  addMiddlewares: addMiddlewares,
48
52
  refresh: refresh,
49
53
  status: search.status,
@@ -1,7 +1,14 @@
1
- import InstantSearch from "instantsearch.js/es/lib/InstantSearch.js";
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
6
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
7
+ import InstantSearch, { INSTANTSEARCH_FUTURE_DEFAULTS } from "instantsearch.js/es/lib/InstantSearch.js";
2
8
  import { useCallback, useRef, version as ReactVersion } from 'react';
3
9
  import { useSyncExternalStore } from "use-sync-external-store/shim/index.js";
4
10
  import version from "../version.js";
11
+ import { dequal } from "./dequal.js";
5
12
  import { useForceUpdate } from "./useForceUpdate.js";
6
13
  import { useInstantSearchServerContext } from "./useInstantSearchServerContext.js";
7
14
  import { useInstantSearchSSRContext } from "./useInstantSearchSSRContext.js";
@@ -102,6 +109,10 @@ export function useInstantSearchApi(props) {
102
109
  _search._stalledSearchDelay = (_props$stalledSearchD = props.stalledSearchDelay) !== null && _props$stalledSearchD !== void 0 ? _props$stalledSearchD : 200;
103
110
  prevPropsRef.current = props;
104
111
  }
112
+ if (!dequal(prevProps.future, props.future)) {
113
+ _search.future = _objectSpread(_objectSpread({}, INSTANTSEARCH_FUTURE_DEFAULTS), props.future);
114
+ prevPropsRef.current = props;
115
+ }
105
116
 
106
117
  // Updating the `routing` prop is not supported because InstantSearch.js
107
118
  // doesn't let us change it. This might not be a problem though, because `routing`
@@ -4,5 +4,7 @@ export type SearchStateApi<TUiState extends UiState> = {
4
4
  setUiState: InstantSearch<TUiState>['setUiState'];
5
5
  indexUiState: TUiState[string];
6
6
  setIndexUiState: IndexWidget<TUiState>['setIndexUiState'];
7
+ renderState: InstantSearch<TUiState>['renderState'];
8
+ indexRenderState: InstantSearch<TUiState>['renderState'][string];
7
9
  };
8
10
  export declare function useSearchState<TUiState extends UiState>(): SearchStateApi<TUiState>;
@@ -18,6 +18,13 @@ export function useSearchState() {
18
18
  uiState = _useState2[0],
19
19
  setLocalUiState = _useState2[1];
20
20
  var indexUiState = uiState[indexId];
21
+ var _useState3 = useState(function () {
22
+ return search.renderState;
23
+ }),
24
+ _useState4 = _slicedToArray(_useState3, 2),
25
+ renderState = _useState4[0],
26
+ setRenderState = _useState4[1];
27
+ var indexRenderState = renderState[indexId] || {};
21
28
  var setUiState = useCallback(function (nextUiState) {
22
29
  search.setUiState(nextUiState);
23
30
  }, [search]);
@@ -27,6 +34,7 @@ export function useSearchState() {
27
34
  useEffect(function () {
28
35
  function handleRender() {
29
36
  setLocalUiState(search.getUiState());
37
+ setRenderState(search.renderState);
30
38
  }
31
39
  search.addListener('render', handleRender);
32
40
  return function () {
@@ -37,6 +45,8 @@ export function useSearchState() {
37
45
  uiState: uiState,
38
46
  setUiState: setUiState,
39
47
  indexUiState: indexUiState,
40
- setIndexUiState: setIndexUiState
48
+ setIndexUiState: setIndexUiState,
49
+ renderState: renderState,
50
+ indexRenderState: indexRenderState
41
51
  };
42
52
  }
@@ -1,2 +1,2 @@
1
- declare const _default: "7.1.0";
1
+ declare const _default: "7.2.0";
2
2
  export default _default;
@@ -1 +1 @@
1
- export default '7.1.0';
1
+ export default '7.2.0';
@@ -7,7 +7,7 @@
7
7
 
8
8
  var React__default = 'default' in React ? React['default'] : React;
9
9
 
10
- var version = '7.1.0';
10
+ var version = '7.2.0';
11
11
 
12
12
  // Copyright Joyent, Inc. and other Node contributors.
13
13
  //
@@ -8823,7 +8823,7 @@
8823
8823
  return widgets.indexOf(widget) === -1;
8824
8824
  });
8825
8825
  if (localInstantSearchInstance && Boolean(widgets.length)) {
8826
- var _nextState = widgets.reduce(function (state, widget) {
8826
+ var cleanedState = widgets.reduce(function (state, widget) {
8827
8827
  // the `dispose` method exists at this point we already assert it
8828
8828
  var next = widget.dispose({
8829
8829
  helper: helper,
@@ -8832,14 +8832,23 @@
8832
8832
  });
8833
8833
  return next || state;
8834
8834
  }, helper.state);
8835
+ var newState = localInstantSearchInstance.future.preserveSharedStateOnUnmount ? getLocalWidgetsSearchParameters(localWidgets, {
8836
+ uiState: localUiState,
8837
+ initialSearchParameters: new algoliasearchHelper_1.SearchParameters({
8838
+ index: this.getIndexName()
8839
+ })
8840
+ }) : getLocalWidgetsSearchParameters(localWidgets, {
8841
+ uiState: getLocalWidgetsUiState(localWidgets, {
8842
+ searchParameters: cleanedState,
8843
+ helper: helper
8844
+ }),
8845
+ initialSearchParameters: cleanedState
8846
+ });
8835
8847
  localUiState = getLocalWidgetsUiState(localWidgets, {
8836
- searchParameters: _nextState,
8848
+ searchParameters: newState,
8837
8849
  helper: helper
8838
8850
  });
8839
- helper.setState(getLocalWidgetsSearchParameters(localWidgets, {
8840
- uiState: localUiState,
8841
- initialSearchParameters: _nextState
8842
- }));
8851
+ helper.setState(newState);
8843
8852
  if (localWidgets.length) {
8844
8853
  localInstantSearchInstance.scheduleSearch();
8845
8854
  }
@@ -8905,7 +8914,7 @@
8905
8914
  return mainHelper.searchForFacetValues(facetName, facetValue, maxFacetHits, state);
8906
8915
  };
8907
8916
  derivedHelper = mainHelper.derive(function () {
8908
- return mergeSearchParameters.apply(void 0, _toConsumableArray$1(resolveSearchParameters(_this3)));
8917
+ return mergeSearchParameters.apply(void 0, [mainHelper.state].concat(_toConsumableArray$1(resolveSearchParameters(_this3))));
8909
8918
  });
8910
8919
  var indexInitialResults = (_instantSearchInstanc = instantSearchInstance._initialResults) === null || _instantSearchInstanc === void 0 ? void 0 : _instantSearchInstanc[this.getIndexId()];
8911
8920
  if (indexInitialResults) {
@@ -9559,7 +9568,7 @@
9559
9568
  },
9560
9569
  started: function started() {
9561
9570
  insightsClient('addAlgoliaAgent', 'insights-middleware');
9562
- helper = instantSearchInstance.helper;
9571
+ helper = instantSearchInstance.mainHelper;
9563
9572
  initialParameters = {
9564
9573
  userToken: helper.state.userToken,
9565
9574
  clickAnalytics: helper.state.clickAnalytics
@@ -11286,7 +11295,7 @@
11286
11295
  };
11287
11296
  }
11288
11297
 
11289
- var version$2 = '4.57.0';
11298
+ var version$2 = '4.58.0';
11290
11299
 
11291
11300
  function _typeof$j(obj) {
11292
11301
  "@babel/helpers - typeof";
@@ -11449,6 +11458,10 @@
11449
11458
  /**
11450
11459
  * Global options for an InstantSearch instance.
11451
11460
  */
11461
+ var INSTANTSEARCH_FUTURE_DEFAULTS = {
11462
+ preserveSharedStateOnUnmount: false
11463
+ };
11464
+
11452
11465
  /**
11453
11466
  * The actual implementation of the InstantSearch. This is
11454
11467
  * created using the `instantsearch` factory function.
@@ -11467,6 +11480,7 @@
11467
11480
  _defineProperty$e(_assertThisInitialized(_this), "indexName", void 0);
11468
11481
  _defineProperty$e(_assertThisInitialized(_this), "insightsClient", void 0);
11469
11482
  _defineProperty$e(_assertThisInitialized(_this), "onStateChange", null);
11483
+ _defineProperty$e(_assertThisInitialized(_this), "future", void 0);
11470
11484
  _defineProperty$e(_assertThisInitialized(_this), "helper", void 0);
11471
11485
  _defineProperty$e(_assertThisInitialized(_this), "mainHelper", void 0);
11472
11486
  _defineProperty$e(_assertThisInitialized(_this), "mainIndex", void 0);
@@ -11539,7 +11553,9 @@
11539
11553
  _options$insightsClie = options.insightsClient,
11540
11554
  insightsClient = _options$insightsClie === void 0 ? null : _options$insightsClie,
11541
11555
  _options$onStateChang = options.onStateChange,
11542
- onStateChange = _options$onStateChang === void 0 ? null : _options$onStateChang;
11556
+ onStateChange = _options$onStateChang === void 0 ? null : _options$onStateChang,
11557
+ _options$future = options.future,
11558
+ future = _options$future === void 0 ? _objectSpread$c(_objectSpread$c({}, INSTANTSEARCH_FUTURE_DEFAULTS), options.future || {}) : _options$future;
11543
11559
  if (searchClient === null) {
11544
11560
  throw new Error(withUsage$3('The `searchClient` option is required.'));
11545
11561
  }
@@ -11553,6 +11569,7 @@
11553
11569
  throw new Error(withUsage$3('The `insightsClient` option should be a function.'));
11554
11570
  }
11555
11571
  _this.client = searchClient;
11572
+ _this.future = future;
11556
11573
  _this.insightsClient = insightsClient;
11557
11574
  _this.indexName = indexName;
11558
11575
  _this.helper = null;
@@ -12096,6 +12113,10 @@
12096
12113
  _search._stalledSearchDelay = (_props$stalledSearchD = props.stalledSearchDelay) !== null && _props$stalledSearchD !== void 0 ? _props$stalledSearchD : 200;
12097
12114
  prevPropsRef.current = props;
12098
12115
  }
12116
+ if (!dequal(prevProps.future, props.future)) {
12117
+ _search.future = _objectSpread2(_objectSpread2({}, INSTANTSEARCH_FUTURE_DEFAULTS), props.future);
12118
+ prevPropsRef.current = props;
12119
+ }
12099
12120
 
12100
12121
  // Updating the `routing` prop is not supported because InstantSearch.js
12101
12122
  // doesn't let us change it. This might not be a problem though, because `routing`
@@ -17259,6 +17280,13 @@
17259
17280
  uiState = _useState2[0],
17260
17281
  setLocalUiState = _useState2[1];
17261
17282
  var indexUiState = uiState[indexId];
17283
+ var _useState3 = React.useState(function () {
17284
+ return search.renderState;
17285
+ }),
17286
+ _useState4 = _slicedToArray$3(_useState3, 2),
17287
+ renderState = _useState4[0],
17288
+ setRenderState = _useState4[1];
17289
+ var indexRenderState = renderState[indexId] || {};
17262
17290
  var setUiState = React.useCallback(function (nextUiState) {
17263
17291
  search.setUiState(nextUiState);
17264
17292
  }, [search]);
@@ -17268,6 +17296,7 @@
17268
17296
  React.useEffect(function () {
17269
17297
  function handleRender() {
17270
17298
  setLocalUiState(search.getUiState());
17299
+ setRenderState(search.renderState);
17271
17300
  }
17272
17301
  search.addListener('render', handleRender);
17273
17302
  return function () {
@@ -17278,7 +17307,9 @@
17278
17307
  uiState: uiState,
17279
17308
  setUiState: setUiState,
17280
17309
  indexUiState: indexUiState,
17281
- setIndexUiState: setIndexUiState
17310
+ setIndexUiState: setIndexUiState,
17311
+ renderState: renderState,
17312
+ indexRenderState: indexRenderState
17282
17313
  };
17283
17314
  }
17284
17315
 
@@ -17290,7 +17321,9 @@
17290
17321
  uiState = _useSearchState.uiState,
17291
17322
  setUiState = _useSearchState.setUiState,
17292
17323
  indexUiState = _useSearchState.indexUiState,
17293
- setIndexUiState = _useSearchState.setIndexUiState;
17324
+ setIndexUiState = _useSearchState.setIndexUiState,
17325
+ renderState = _useSearchState.renderState,
17326
+ indexRenderState = _useSearchState.indexRenderState;
17294
17327
  var _useSearchResults = useSearchResults(),
17295
17328
  results = _useSearchResults.results,
17296
17329
  scopedResults = _useSearchResults.scopedResults;
@@ -17323,6 +17356,8 @@
17323
17356
  setUiState: setUiState,
17324
17357
  indexUiState: indexUiState,
17325
17358
  setIndexUiState: setIndexUiState,
17359
+ renderState: renderState,
17360
+ indexRenderState: indexRenderState,
17326
17361
  addMiddlewares: addMiddlewares,
17327
17362
  refresh: refresh,
17328
17363
  status: search.status,