diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.serialize.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.serialize.md
index 73ba8eb66040b..496e1ae9677d8 100644
--- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.serialize.md
+++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.serialize.md
@@ -15,13 +15,13 @@ Using `createSearchSource`, the instance can be re-created.
```typescript
serialize(): {
searchSourceJSON: string;
- references: import("../../../../../core/public").SavedObjectReference[];
+ references: import("../../../../../core/types").SavedObjectReference[];
};
```
Returns:
`{
searchSourceJSON: string;
- references: import("../../../../../core/public").SavedObjectReference[];
+ references: import("../../../../../core/types").SavedObjectReference[];
}`
diff --git a/src/plugins/data/public/public.api.md b/src/plugins/data/public/public.api.md
index fa5d3cd85f430..c503ba49e4d97 100644
--- a/src/plugins/data/public/public.api.md
+++ b/src/plugins/data/public/public.api.md
@@ -28,7 +28,6 @@ import { ExpressionAstFunction } from 'src/plugins/expressions/common';
import { ExpressionsSetup } from 'src/plugins/expressions/public';
import { History } from 'history';
import { Href } from 'history';
-import { HttpStart } from 'src/core/public';
import { IconType } from '@elastic/eui';
import { InjectedIntl } from '@kbn/i18n/react';
import { ISearchOptions as ISearchOptions_2 } from 'src/plugins/data/public';
@@ -2017,7 +2016,7 @@ export class SearchSource {
onRequestStart(handler: (searchSource: SearchSource, options?: ISearchOptions) => Promise): void;
serialize(): {
searchSourceJSON: string;
- references: import("../../../../../core/public").SavedObjectReference[];
+ references: import("../../../../../core/types").SavedObjectReference[];
};
setField(field: K, value: SearchSourceFields[K]): this;
setFields(newFields: SearchSourceFields): this;
diff --git a/src/plugins/data/public/search/fetch/types.ts b/src/plugins/data/public/search/fetch/types.ts
index 224a597766909..cdf10d8f1a1b0 100644
--- a/src/plugins/data/public/search/fetch/types.ts
+++ b/src/plugins/data/public/search/fetch/types.ts
@@ -17,9 +17,9 @@
* under the License.
*/
-import { HttpStart } from 'src/core/public';
-import { BehaviorSubject } from 'rxjs';
+import { SearchResponse } from 'elasticsearch';
import { GetConfigFn } from '../../../common';
+import { LegacyFetchHandlers } from '../legacy/types';
/**
* @internal
@@ -31,9 +31,17 @@ import { GetConfigFn } from '../../../common';
export type SearchRequest = Record;
export interface FetchHandlers {
- config: { get: GetConfigFn };
- http: HttpStart;
- loadingCount$: BehaviorSubject;
+ getConfig: GetConfigFn;
+ /**
+ * Callback which can be used to hook into responses, modify them, or perform
+ * side effects like displaying UI errors on the client.
+ */
+ onResponse: (request: SearchRequest, response: SearchResponse) => SearchResponse;
+ /**
+ * These handlers are only used by the legacy defaultSearchStrategy and can be removed
+ * once that strategy has been deprecated.
+ */
+ legacy: LegacyFetchHandlers;
}
export interface SearchError {
diff --git a/src/plugins/data/public/search/legacy/call_client.test.ts b/src/plugins/data/public/search/legacy/call_client.test.ts
index 943a02d22088d..0a7913b0a734f 100644
--- a/src/plugins/data/public/search/legacy/call_client.test.ts
+++ b/src/plugins/data/public/search/legacy/call_client.test.ts
@@ -17,18 +17,13 @@
* under the License.
*/
-import { coreMock } from '../../../../../core/public/mocks';
import { callClient } from './call_client';
import { SearchStrategySearchParams } from './types';
import { defaultSearchStrategy } from './default_search_strategy';
import { FetchHandlers } from '../fetch';
-import { handleResponse } from '../fetch/handle_response';
import { BehaviorSubject } from 'rxjs';
const mockAbortFn = jest.fn();
-jest.mock('../fetch/handle_response', () => ({
- handleResponse: jest.fn((request, response) => response),
-}));
jest.mock('./default_search_strategy', () => {
return {
@@ -50,32 +45,36 @@ jest.mock('./default_search_strategy', () => {
});
describe('callClient', () => {
+ const handleResponse = jest.fn().mockImplementation((req, res) => res);
+ const handlers = {
+ getConfig: jest.fn(),
+ onResponse: handleResponse,
+ legacy: {
+ callMsearch: jest.fn(),
+ loadingCount$: new BehaviorSubject(0),
+ },
+ } as FetchHandlers;
+
beforeEach(() => {
- (handleResponse as jest.Mock).mockClear();
+ handleResponse.mockClear();
});
test('Passes the additional arguments it is given to the search strategy', () => {
const searchRequests = [{ _searchStrategyId: 0 }];
- const args = {
- http: coreMock.createStart().http,
- legacySearchService: {},
- config: { get: jest.fn() },
- loadingCount$: new BehaviorSubject(0),
- } as FetchHandlers;
- callClient(searchRequests, [], args);
+ callClient(searchRequests, [], handlers);
expect(defaultSearchStrategy.search).toBeCalled();
expect((defaultSearchStrategy.search as any).mock.calls[0][0]).toEqual({
searchRequests,
- ...args,
+ ...handlers,
});
});
test('Returns the responses in the original order', async () => {
const searchRequests = [{ _searchStrategyId: 1 }, { _searchStrategyId: 0 }];
- const responses = await Promise.all(callClient(searchRequests, [], {} as FetchHandlers));
+ const responses = await Promise.all(callClient(searchRequests, [], handlers));
expect(responses[0]).toEqual({ id: searchRequests[0]._searchStrategyId });
expect(responses[1]).toEqual({ id: searchRequests[1]._searchStrategyId });
@@ -84,7 +83,7 @@ describe('callClient', () => {
test('Calls handleResponse with each request and response', async () => {
const searchRequests = [{ _searchStrategyId: 0 }, { _searchStrategyId: 1 }];
- const responses = callClient(searchRequests, [], {} as FetchHandlers);
+ const responses = callClient(searchRequests, [], handlers);
await Promise.all(responses);
expect(handleResponse).toBeCalledTimes(2);
@@ -105,7 +104,7 @@ describe('callClient', () => {
},
];
- callClient(searchRequests, requestOptions, {} as FetchHandlers);
+ callClient(searchRequests, requestOptions, handlers);
abortController.abort();
expect(mockAbortFn).toBeCalled();
diff --git a/src/plugins/data/public/search/legacy/call_client.ts b/src/plugins/data/public/search/legacy/call_client.ts
index d66796b9427a1..b87affdd59c54 100644
--- a/src/plugins/data/public/search/legacy/call_client.ts
+++ b/src/plugins/data/public/search/legacy/call_client.ts
@@ -19,7 +19,7 @@
import { SearchResponse } from 'elasticsearch';
import { ISearchOptions } from 'src/plugins/data/common';
-import { FetchHandlers, handleResponse } from '../fetch';
+import { FetchHandlers } from '../fetch';
import { defaultSearchStrategy } from './default_search_strategy';
import { SearchRequest } from '../index';
@@ -42,7 +42,7 @@ export function callClient(
});
searchRequests.forEach((request, i) => {
- const response = searching.then((results) => handleResponse(request, results[i]));
+ const response = searching.then((results) => fetchHandlers.onResponse(request, results[i]));
const { abortSignal = null } = requestOptionsMap.get(request) || {};
if (abortSignal) abortSignal.addEventListener('abort', abort);
requestResponseMap.set(request, response);
diff --git a/src/plugins/data/public/search/legacy/call_msearch.ts b/src/plugins/data/public/search/legacy/call_msearch.ts
new file mode 100644
index 0000000000000..fd4f8a07919f8
--- /dev/null
+++ b/src/plugins/data/public/search/legacy/call_msearch.ts
@@ -0,0 +1,37 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { HttpStart } from 'src/core/public';
+import { LegacyFetchHandlers } from './types';
+
+/**
+ * Wrapper for calling the internal msearch endpoint from the client.
+ * This is needed to abstract away differences in the http service
+ * between client & server.
+ *
+ * @internal
+ */
+export function getCallMsearch({ http }: { http: HttpStart }): LegacyFetchHandlers['callMsearch'] {
+ return async ({ body, signal }) => {
+ return http.post('/internal/_msearch', {
+ body: JSON.stringify(body),
+ signal,
+ });
+ };
+}
diff --git a/src/plugins/data/public/search/legacy/default_search_strategy.test.ts b/src/plugins/data/public/search/legacy/default_search_strategy.test.ts
index e74ab49131430..ad59e5c6c9625 100644
--- a/src/plugins/data/public/search/legacy/default_search_strategy.test.ts
+++ b/src/plugins/data/public/search/legacy/default_search_strategy.test.ts
@@ -19,8 +19,9 @@
import { HttpStart } from 'src/core/public';
import { coreMock } from '../../../../../core/public/mocks';
+import { getCallMsearch } from './call_msearch';
import { defaultSearchStrategy } from './default_search_strategy';
-import { SearchStrategySearchParams } from './types';
+import { LegacyFetchHandlers, SearchStrategySearchParams } from './types';
import { BehaviorSubject } from 'rxjs';
const { search } = defaultSearchStrategy;
@@ -44,11 +45,12 @@ describe('defaultSearchStrategy', function () {
index: { title: 'foo' },
},
],
- http,
- config: {
- get: jest.fn(),
- },
- loadingCount$: new BehaviorSubject(0) as any,
+ getConfig: jest.fn(),
+ onResponse: (req, res) => res,
+ legacy: {
+ callMsearch: getCallMsearch({ http }),
+ loadingCount$: new BehaviorSubject(0) as any,
+ } as jest.Mocked,
};
});
diff --git a/src/plugins/data/public/search/legacy/default_search_strategy.ts b/src/plugins/data/public/search/legacy/default_search_strategy.ts
index cbcd0da20207f..bed86cb75cca6 100644
--- a/src/plugins/data/public/search/legacy/default_search_strategy.ts
+++ b/src/plugins/data/public/search/legacy/default_search_strategy.ts
@@ -29,12 +29,14 @@ export const defaultSearchStrategy: SearchStrategyProvider = {
},
};
-function msearch({ searchRequests, config, http, loadingCount$ }: SearchStrategySearchParams) {
+function msearch({ searchRequests, getConfig, legacy }: SearchStrategySearchParams) {
+ const { callMsearch, loadingCount$ } = legacy;
+
const requests = searchRequests.map(({ index, body }) => {
return {
header: {
index: index.title || index,
- preference: getPreference(config.get),
+ preference: getPreference(getConfig),
},
body,
};
@@ -55,12 +57,11 @@ function msearch({ searchRequests, config, http, loadingCount$ }: SearchStrategy
}
};
- const searching = http
- .post('/internal/_msearch', {
- body: JSON.stringify({ searches: requests }),
- signal: abortController.signal,
- })
- .then(({ body }) => body?.responses)
+ const searching = callMsearch({
+ body: { searches: requests },
+ signal: abortController.signal,
+ })
+ .then((res: any) => res?.body?.responses)
.finally(() => cleanup());
return {
diff --git a/src/plugins/data/public/search/legacy/fetch_soon.test.ts b/src/plugins/data/public/search/legacy/fetch_soon.test.ts
index d38a41cf5ffbc..7243ab158009a 100644
--- a/src/plugins/data/public/search/legacy/fetch_soon.test.ts
+++ b/src/plugins/data/public/search/legacy/fetch_soon.test.ts
@@ -67,25 +67,21 @@ describe('fetchSoon', () => {
});
test('should execute asap if config is set to not batch searches', () => {
- const config = {
- get: getConfigStub({ [UI_SETTINGS.COURIER_BATCH_SEARCHES]: false }),
- };
+ const getConfig = getConfigStub({ [UI_SETTINGS.COURIER_BATCH_SEARCHES]: false });
const request = {};
const options = {};
- fetchSoon(request, options, { config } as FetchHandlers);
+ fetchSoon(request, options, { getConfig } as FetchHandlers);
expect(callClient).toBeCalled();
});
test('should delay by 50ms if config is set to batch searches', () => {
- const config = {
- get: getConfigStub({ [UI_SETTINGS.COURIER_BATCH_SEARCHES]: true }),
- };
+ const getConfig = getConfigStub({ [UI_SETTINGS.COURIER_BATCH_SEARCHES]: true });
const request = {};
const options = {};
- fetchSoon(request, options, { config } as FetchHandlers);
+ fetchSoon(request, options, { getConfig } as FetchHandlers);
expect(callClient).not.toBeCalled();
jest.advanceTimersByTime(0);
@@ -95,14 +91,12 @@ describe('fetchSoon', () => {
});
test('should send a batch of requests to callClient', () => {
- const config = {
- get: getConfigStub({ [UI_SETTINGS.COURIER_BATCH_SEARCHES]: true }),
- };
+ const getConfig = getConfigStub({ [UI_SETTINGS.COURIER_BATCH_SEARCHES]: true });
const requests = [{ foo: 1 }, { foo: 2 }];
const options = [{ bar: 1 }, { bar: 2 }];
requests.forEach((request, i) => {
- fetchSoon(request, options[i] as ISearchOptions, { config } as FetchHandlers);
+ fetchSoon(request, options[i] as ISearchOptions, { getConfig } as FetchHandlers);
});
jest.advanceTimersByTime(50);
@@ -112,13 +106,11 @@ describe('fetchSoon', () => {
});
test('should return the response to the corresponding call for multiple batched requests', async () => {
- const config = {
- get: getConfigStub({ [UI_SETTINGS.COURIER_BATCH_SEARCHES]: true }),
- };
+ const getConfig = getConfigStub({ [UI_SETTINGS.COURIER_BATCH_SEARCHES]: true });
const requests = [{ _mockResponseId: 'foo' }, { _mockResponseId: 'bar' }];
const promises = requests.map((request) => {
- return fetchSoon(request, {}, { config } as FetchHandlers);
+ return fetchSoon(request, {}, { getConfig } as FetchHandlers);
});
jest.advanceTimersByTime(50);
const results = await Promise.all(promises);
@@ -127,18 +119,16 @@ describe('fetchSoon', () => {
});
test('should wait for the previous batch to start before starting a new batch', () => {
- const config = {
- get: getConfigStub({ [UI_SETTINGS.COURIER_BATCH_SEARCHES]: true }),
- };
+ const getConfig = getConfigStub({ [UI_SETTINGS.COURIER_BATCH_SEARCHES]: true });
const firstBatch = [{ foo: 1 }, { foo: 2 }];
const secondBatch = [{ bar: 1 }, { bar: 2 }];
firstBatch.forEach((request) => {
- fetchSoon(request, {}, { config } as FetchHandlers);
+ fetchSoon(request, {}, { getConfig } as FetchHandlers);
});
jest.advanceTimersByTime(50);
secondBatch.forEach((request) => {
- fetchSoon(request, {}, { config } as FetchHandlers);
+ fetchSoon(request, {}, { getConfig } as FetchHandlers);
});
expect(callClient).toBeCalledTimes(1);
diff --git a/src/plugins/data/public/search/legacy/fetch_soon.ts b/src/plugins/data/public/search/legacy/fetch_soon.ts
index 37c3827bb7bba..1c0573aa895d7 100644
--- a/src/plugins/data/public/search/legacy/fetch_soon.ts
+++ b/src/plugins/data/public/search/legacy/fetch_soon.ts
@@ -32,7 +32,7 @@ export async function fetchSoon(
options: ISearchOptions,
fetchHandlers: FetchHandlers
) {
- const msToDelay = fetchHandlers.config.get(UI_SETTINGS.COURIER_BATCH_SEARCHES) ? 50 : 0;
+ const msToDelay = fetchHandlers.getConfig(UI_SETTINGS.COURIER_BATCH_SEARCHES) ? 50 : 0;
return delayedFetch(request, options, fetchHandlers, msToDelay);
}
diff --git a/src/plugins/data/public/search/legacy/types.ts b/src/plugins/data/public/search/legacy/types.ts
index ed17db464feff..740bc22a7485c 100644
--- a/src/plugins/data/public/search/legacy/types.ts
+++ b/src/plugins/data/public/search/legacy/types.ts
@@ -17,10 +17,20 @@
* under the License.
*/
+import { BehaviorSubject } from 'rxjs';
import { SearchResponse } from 'elasticsearch';
import { FetchHandlers } from '../fetch';
import { SearchRequest } from '..';
+// @internal
+export interface LegacyFetchHandlers {
+ callMsearch: (params: {
+ body: SearchRequest;
+ signal: AbortSignal;
+ }) => Promise>>;
+ loadingCount$: BehaviorSubject;
+}
+
export interface SearchStrategySearchParams extends FetchHandlers {
searchRequests: SearchRequest[];
}
diff --git a/src/plugins/data/public/search/search_service.ts b/src/plugins/data/public/search/search_service.ts
index 6b73761c5a437..c41e1f78ee74e 100644
--- a/src/plugins/data/public/search/search_service.ts
+++ b/src/plugins/data/public/search/search_service.ts
@@ -21,6 +21,8 @@ import { Plugin, CoreSetup, CoreStart } from 'src/core/public';
import { BehaviorSubject } from 'rxjs';
import { ISearchSetup, ISearchStart, SearchEnhancements } from './types';
+import { handleResponse } from './fetch';
+import { getCallMsearch } from './legacy/call_msearch';
import { createSearchSource, SearchSource, SearchSourceDependencies } from './search_source';
import { AggsService, AggsStartDependencies } from './aggs';
import { IndexPatternsContract } from '../index_patterns/index_patterns';
@@ -49,7 +51,7 @@ export class SearchService implements Plugin {
private usageCollector?: SearchUsageCollector;
public setup(
- { http, getStartServices, injectedMetadata, notifications, uiSettings }: CoreSetup,
+ { http, getStartServices, notifications, uiSettings }: CoreSetup,
{ expressions, usageCollection }: SearchServiceSetupDependencies
): ISearchSetup {
this.usageCollector = createUsageCollector(getStartServices, usageCollection);
@@ -82,7 +84,7 @@ export class SearchService implements Plugin {
}
public start(
- { application, http, injectedMetadata, notifications, uiSettings }: CoreStart,
+ { application, http, notifications, uiSettings }: CoreStart,
{ fieldFormats, indexPatterns }: SearchServiceStartDependencies
): ISearchStart {
const search = ((request, options) => {
@@ -95,8 +97,11 @@ export class SearchService implements Plugin {
const searchSourceDependencies: SearchSourceDependencies = {
getConfig: uiSettings.get.bind(uiSettings),
search,
- http,
- loadingCount$,
+ onResponse: handleResponse,
+ legacy: {
+ callMsearch: getCallMsearch({ http }),
+ loadingCount$,
+ },
};
return {
diff --git a/src/plugins/data/public/search/search_source/create_search_source.test.ts b/src/plugins/data/public/search/search_source/create_search_source.test.ts
index bc1c7c06c8806..6b6cfb0c9b1ca 100644
--- a/src/plugins/data/public/search/search_source/create_search_source.test.ts
+++ b/src/plugins/data/public/search/search_source/create_search_source.test.ts
@@ -22,7 +22,6 @@ import { SearchSourceDependencies } from './search_source';
import { IIndexPattern } from '../../../common/index_patterns';
import { IndexPatternsContract } from '../../index_patterns/index_patterns';
import { Filter } from '../../../common/es_query/filters';
-import { coreMock } from '../../../../../core/public/mocks';
import { BehaviorSubject } from 'rxjs';
describe('createSearchSource', () => {
@@ -35,8 +34,11 @@ describe('createSearchSource', () => {
dependencies = {
getConfig: jest.fn(),
search: jest.fn(),
- http: coreMock.createStart().http,
- loadingCount$: new BehaviorSubject(0),
+ onResponse: (req, res) => res,
+ legacy: {
+ callMsearch: jest.fn(),
+ loadingCount$: new BehaviorSubject(0),
+ },
};
indexPatternContractMock = ({
diff --git a/src/plugins/data/public/search/search_source/mocks.ts b/src/plugins/data/public/search/search_source/mocks.ts
index adf53bee33fe1..f582861e37c15 100644
--- a/src/plugins/data/public/search/search_source/mocks.ts
+++ b/src/plugins/data/public/search/search_source/mocks.ts
@@ -18,7 +18,7 @@
*/
import { BehaviorSubject } from 'rxjs';
-import { httpServiceMock, uiSettingsServiceMock } from '../../../../../core/public/mocks';
+import { uiSettingsServiceMock } from '../../../../../core/public/mocks';
import { ISearchSource, SearchSource } from './search_source';
import { SearchSourceFields } from './types';
@@ -54,6 +54,9 @@ export const createSearchSourceMock = (fields?: SearchSourceFields) =>
new SearchSource(fields, {
getConfig: uiSettingsServiceMock.createStartContract().get,
search: jest.fn(),
- http: httpServiceMock.createStartContract(),
- loadingCount$: new BehaviorSubject(0),
+ onResponse: jest.fn().mockImplementation((req, res) => res),
+ legacy: {
+ callMsearch: jest.fn(),
+ loadingCount$: new BehaviorSubject(0),
+ },
});
diff --git a/src/plugins/data/public/search/search_source/search_source.test.ts b/src/plugins/data/public/search/search_source/search_source.test.ts
index 282a33e6d01f7..d9a9fb2f4fef3 100644
--- a/src/plugins/data/public/search/search_source/search_source.test.ts
+++ b/src/plugins/data/public/search/search_source/search_source.test.ts
@@ -22,7 +22,6 @@ import { GetConfigFn } from 'src/plugins/data/common';
import { SearchSource, SearchSourceDependencies } from './search_source';
import { IndexPattern, SortDirection } from '../..';
import { fetchSoon } from '../legacy';
-import { coreMock } from '../../../../../core/public/mocks';
jest.mock('../legacy', () => ({
fetchSoon: jest.fn().mockResolvedValue({}),
@@ -68,8 +67,11 @@ describe('SearchSource', () => {
searchSourceDependencies = {
getConfig: jest.fn(),
search: mockSearchMethod,
- http: coreMock.createStart().http,
- loadingCount$: new BehaviorSubject(0),
+ onResponse: (req, res) => res,
+ legacy: {
+ callMsearch: jest.fn(),
+ loadingCount$: new BehaviorSubject(0),
+ },
};
});
diff --git a/src/plugins/data/public/search/search_source/search_source.ts b/src/plugins/data/public/search/search_source/search_source.ts
index a39898e6a9f52..4afee223454e4 100644
--- a/src/plugins/data/public/search/search_source/search_source.ts
+++ b/src/plugins/data/public/search/search_source/search_source.ts
@@ -72,19 +72,12 @@
import { setWith } from '@elastic/safer-lodash-set';
import { uniqueId, uniq, extend, pick, difference, omit, isObject, keys, isFunction } from 'lodash';
import { map } from 'rxjs/operators';
-import { HttpStart } from 'src/core/public';
-import { BehaviorSubject } from 'rxjs';
import { normalizeSortRequest } from './normalize_sort_request';
import { filterDocvalueFields } from './filter_docvalue_fields';
import { fieldWildcardFilter } from '../../../../kibana_utils/common';
import { IIndexPattern, ISearchGeneric } from '../..';
import { SearchSourceOptions, SearchSourceFields } from './types';
-import {
- RequestFailure,
- handleResponse,
- getSearchParamsFromRequest,
- SearchRequest,
-} from '../fetch';
+import { FetchHandlers, RequestFailure, getSearchParamsFromRequest, SearchRequest } from '../fetch';
import {
getEsQueryConfig,
@@ -94,7 +87,6 @@ import {
ISearchOptions,
} from '../../../common';
import { getHighlightRequest } from '../../../common/field_formats';
-import { GetConfigFn } from '../../../common/types';
import { fetchSoon } from '../legacy';
import { extractReferences } from './extract_references';
@@ -114,11 +106,8 @@ export const searchSourceRequiredUiSettings = [
UI_SETTINGS.SORT_OPTIONS,
];
-export interface SearchSourceDependencies {
- getConfig: GetConfigFn;
+export interface SearchSourceDependencies extends FetchHandlers {
search: ISearchGeneric;
- http: HttpStart;
- loadingCount$: BehaviorSubject;
}
/** @public **/
@@ -321,14 +310,14 @@ export class SearchSource {
* @return {Observable>}
*/
private fetch$(searchRequest: SearchRequest, options: ISearchOptions) {
- const { search, getConfig } = this.dependencies;
+ const { search, getConfig, onResponse } = this.dependencies;
const params = getSearchParamsFromRequest(searchRequest, {
getConfig,
});
return search({ params, indexType: searchRequest.indexType }, options).pipe(
- map(({ rawResponse }) => handleResponse(searchRequest, rawResponse))
+ map(({ rawResponse }) => onResponse(searchRequest, rawResponse))
);
}
@@ -337,7 +326,7 @@ export class SearchSource {
* @return {Promise>}
*/
private async legacyFetch(searchRequest: SearchRequest, options: ISearchOptions) {
- const { http, getConfig, loadingCount$ } = this.dependencies;
+ const { getConfig, legacy, onResponse } = this.dependencies;
return await fetchSoon(
searchRequest,
@@ -346,9 +335,9 @@ export class SearchSource {
...options,
},
{
- http,
- config: { get: getConfig },
- loadingCount$,
+ getConfig,
+ onResponse,
+ legacy,
}
);
}