From e6eba4c2fb19c114b1e7c7b50f434e1e7cb937a6 Mon Sep 17 00:00:00 2001 From: Luke Elmers Date: Mon, 17 Aug 2020 16:01:32 -0600 Subject: [PATCH 1/6] Remove injectedMetadata dependency from SearchSource. --- .../collectors/create_usage_collector.test.ts | 2 +- .../collectors/create_usage_collector.ts | 6 ++-- .../public/search/fetch/get_search_params.ts | 10 +++--- .../search/legacy/es_client/get_es_client.ts | 25 +++++++------- .../data/public/search/search_service.test.ts | 1 + .../data/public/search/search_service.ts | 33 ++++++++++++------- .../search/search_source/search_source.ts | 9 +++-- .../public/data_model/search_api.ts | 4 ++- 8 files changed, 54 insertions(+), 36 deletions(-) diff --git a/src/plugins/data/public/search/collectors/create_usage_collector.test.ts b/src/plugins/data/public/search/collectors/create_usage_collector.test.ts index aaaac5ae6ff7c4..315d4678cabf1b 100644 --- a/src/plugins/data/public/search/collectors/create_usage_collector.test.ts +++ b/src/plugins/data/public/search/collectors/create_usage_collector.test.ts @@ -42,7 +42,7 @@ describe('Search Usage Collector', () => { {} as any, ]); mockUsageCollectionSetup = usageCollectionPluginMock.createSetupContract(); - usageCollector = createUsageCollector(mockCoreSetup, mockUsageCollectionSetup); + usageCollector = createUsageCollector(mockCoreSetup.getStartServices, mockUsageCollectionSetup); }); test('tracks query timeouts', async () => { diff --git a/src/plugins/data/public/search/collectors/create_usage_collector.ts b/src/plugins/data/public/search/collectors/create_usage_collector.ts index 7adb0c3caa6759..321b2c5b990492 100644 --- a/src/plugins/data/public/search/collectors/create_usage_collector.ts +++ b/src/plugins/data/public/search/collectors/create_usage_collector.ts @@ -18,16 +18,16 @@ */ import { first } from 'rxjs/operators'; -import { CoreSetup } from '../../../../../core/public'; +import { StartServicesAccessor } from '../../../../../core/public'; import { METRIC_TYPE, UsageCollectionSetup } from '../../../../usage_collection/public'; import { SEARCH_EVENT_TYPE, SearchUsageCollector } from './types'; export const createUsageCollector = ( - core: CoreSetup, + getStartServices: StartServicesAccessor, usageCollection?: UsageCollectionSetup ): SearchUsageCollector => { const getCurrentApp = async () => { - const [{ application }] = await core.getStartServices(); + const [{ application }] = await getStartServices(); return application.currentAppId$.pipe(first()).toPromise(); }; diff --git a/src/plugins/data/public/search/fetch/get_search_params.ts b/src/plugins/data/public/search/fetch/get_search_params.ts index 3246156b6b37e4..8e21f30975d87f 100644 --- a/src/plugins/data/public/search/fetch/get_search_params.ts +++ b/src/plugins/data/public/search/fetch/get_search_params.ts @@ -17,7 +17,7 @@ * under the License. */ -import { IUiSettingsClient, CoreStart } from 'kibana/public'; +import { IUiSettingsClient } from 'kibana/public'; import { UI_SETTINGS, ISearchRequestParams } from '../../../common'; import { SearchRequest } from './types'; @@ -55,12 +55,14 @@ export function getTimeout(esShardTimeout: number) { return esShardTimeout > 0 ? `${esShardTimeout}ms` : undefined; } +/** @public */ +// TODO: Could provide this on runtime contract with dependencies +// already wired up. export function getSearchParamsFromRequest( searchRequest: SearchRequest, - dependencies: { injectedMetadata: CoreStart['injectedMetadata']; uiSettings: IUiSettingsClient } + dependencies: { esShardTimeout: number; uiSettings: IUiSettingsClient } ): ISearchRequestParams { - const { injectedMetadata, uiSettings } = dependencies; - const esShardTimeout = injectedMetadata.getInjectedVar('esShardTimeout') as number; + const { esShardTimeout, uiSettings } = dependencies; const searchParams = getSearchParams(uiSettings, esShardTimeout); return { diff --git a/src/plugins/data/public/search/legacy/es_client/get_es_client.ts b/src/plugins/data/public/search/legacy/es_client/get_es_client.ts index 93d9d24920271e..4367544ad9ff40 100644 --- a/src/plugins/data/public/search/legacy/es_client/get_es_client.ts +++ b/src/plugins/data/public/search/legacy/es_client/get_es_client.ts @@ -22,17 +22,20 @@ import { default as es } from 'elasticsearch-browser/elasticsearch'; import { CoreStart, PackageInfo } from 'kibana/public'; import { BehaviorSubject } from 'rxjs'; -export function getEsClient( - injectedMetadata: CoreStart['injectedMetadata'], - http: CoreStart['http'], - packageInfo: PackageInfo -) { - const esRequestTimeout = injectedMetadata.getInjectedVar('esRequestTimeout') as number; - const esApiVersion = injectedMetadata.getInjectedVar('esApiVersion') as string; - +export function getEsClient({ + esRequestTimeout, + esApiVersion, + http, + packageVersion, +}: { + esRequestTimeout: number; + esApiVersion: string; + http: CoreStart['http']; + packageVersion: PackageInfo['version']; +}) { // Use legacy es client for msearch. const client = es.Client({ - host: getEsUrl(http, packageInfo), + host: getEsUrl(http, packageVersion), log: 'info', requestTimeout: esRequestTimeout, apiVersion: esApiVersion, @@ -78,7 +81,7 @@ function wrapEsClientMethod(esClient: any, method: string, loadingCount$: Behavi }; } -function getEsUrl(http: CoreStart['http'], packageInfo: PackageInfo) { +function getEsUrl(http: CoreStart['http'], packageVersion: PackageInfo['version']) { const a = document.createElement('a'); a.href = http.basePath.prepend('/elasticsearch'); const protocolPort = /https/.test(a.protocol) ? 443 : 80; @@ -89,7 +92,7 @@ function getEsUrl(http: CoreStart['http'], packageInfo: PackageInfo) { protocol: a.protocol, pathname: a.pathname, headers: { - 'kbn-version': packageInfo.version, + 'kbn-version': packageVersion, }, }; } diff --git a/src/plugins/data/public/search/search_service.test.ts b/src/plugins/data/public/search/search_service.test.ts index 4360a0caa7cdec..738f1e8ffbca02 100644 --- a/src/plugins/data/public/search/search_service.test.ts +++ b/src/plugins/data/public/search/search_service.test.ts @@ -52,6 +52,7 @@ describe('Search service', () => { } as any); expect(start).toHaveProperty('aggs'); expect(start).toHaveProperty('search'); + expect(start).toHaveProperty('searchSource'); }); }); }); diff --git a/src/plugins/data/public/search/search_service.ts b/src/plugins/data/public/search/search_service.ts index 04e1a46c846523..1e7e81fc20502c 100644 --- a/src/plugins/data/public/search/search_service.ts +++ b/src/plugins/data/public/search/search_service.ts @@ -51,11 +51,22 @@ export class SearchService implements Plugin { private usageCollector?: SearchUsageCollector; public setup( - core: CoreSetup, - { packageInfo, usageCollection, expressions }: SearchServiceSetupDependencies + { http, getStartServices, injectedMetadata, notifications, uiSettings }: CoreSetup, + { expressions, packageInfo, usageCollection }: SearchServiceSetupDependencies ): ISearchSetup { - this.usageCollector = createUsageCollector(core, usageCollection); - this.esClient = getEsClient(core.injectedMetadata, core.http, packageInfo); + const esApiVersion = injectedMetadata.getInjectedVar('esApiVersion') as string; + const esRequestTimeout = injectedMetadata.getInjectedVar('esRequestTimeout') as number; + const packageVersion = packageInfo.version; + + this.usageCollector = createUsageCollector(getStartServices, usageCollection); + + this.esClient = getEsClient({ + esRequestTimeout, + esApiVersion, + http, + packageVersion, + }); + /** * A global object that intercepts all searches and provides convenience methods for cancelling * all pending search requests, as well as getting the number of pending search requests. @@ -64,13 +75,13 @@ export class SearchService implements Plugin { */ this.searchInterceptor = new SearchInterceptor( { - toasts: core.notifications.toasts, - http: core.http, - uiSettings: core.uiSettings, - startServices: core.getStartServices(), + toasts: notifications.toasts, + http, + uiSettings, + startServices: getStartServices(), usageCollector: this.usageCollector!, }, - core.injectedMetadata.getInjectedVar('esRequestTimeout') as number + esRequestTimeout ); expressions.registerFunction(esdsl); @@ -79,7 +90,7 @@ export class SearchService implements Plugin { return { aggs: this.aggsService.setup({ registerFunction: expressions.registerFunction, - uiSettings: core.uiSettings, + uiSettings, }), usageCollector: this.usageCollector!, __enhance: (enhancements: SearchEnhancements) => { @@ -102,7 +113,7 @@ export class SearchService implements Plugin { const searchSourceDependencies: SearchSourceDependencies = { uiSettings, - injectedMetadata, + esShardTimeout: injectedMetadata.getInjectedVar('esShardTimeout') as number, search, legacySearch, }; 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 847dc8853d6ba5..cf47fa9aa092b5 100644 --- a/src/plugins/data/public/search/search_source/search_source.ts +++ b/src/plugins/data/public/search/search_source/search_source.ts @@ -90,7 +90,7 @@ export interface SearchSourceDependencies { uiSettings: CoreStart['uiSettings']; search: ISearchGeneric; legacySearch: ISearchStartLegacy; - injectedMetadata: CoreStart['injectedMetadata']; + esShardTimeout: number; } /** @public **/ @@ -204,10 +204,10 @@ export class SearchSource { * @return {Observable>} */ private fetch$(searchRequest: SearchRequest, signal?: AbortSignal) { - const { search, injectedMetadata, uiSettings } = this.dependencies; + const { search, esShardTimeout, uiSettings } = this.dependencies; const params = getSearchParamsFromRequest(searchRequest, { - injectedMetadata, + esShardTimeout, uiSettings, }); @@ -221,8 +221,7 @@ export class SearchSource { * @return {Promise>} */ private async legacyFetch(searchRequest: SearchRequest, options: FetchOptions) { - const { injectedMetadata, legacySearch, uiSettings } = this.dependencies; - const esShardTimeout = injectedMetadata.getInjectedVar('esShardTimeout') as number; + const { esShardTimeout, legacySearch, uiSettings } = this.dependencies; return await fetchSoon( searchRequest, diff --git a/src/plugins/vis_type_vega/public/data_model/search_api.ts b/src/plugins/vis_type_vega/public/data_model/search_api.ts index a213b59be2ad0e..edb55dbca98cbd 100644 --- a/src/plugins/vis_type_vega/public/data_model/search_api.ts +++ b/src/plugins/vis_type_vega/public/data_model/search_api.ts @@ -51,8 +51,10 @@ export class SearchAPI { searchRequests.map((request) => { const requestId = request.name; const params = getSearchParamsFromRequest(request, { + esShardTimeout: this.dependencies.injectedMetadata.getInjectedVar( + 'esShardTimeout' + ) as number, uiSettings: this.dependencies.uiSettings, - injectedMetadata: this.dependencies.injectedMetadata, }); if (this.inspectorAdapters) { From e6ae6117df4d197d865023bec847c957ac53c7ec Mon Sep 17 00:00:00 2001 From: Luke Elmers Date: Mon, 17 Aug 2020 16:44:06 -0600 Subject: [PATCH 2/6] Create common GetConfigFn interface. --- src/plugins/data/common/field_formats/types.ts | 1 + .../data/common/search/aggs/aggs_service.ts | 3 ++- src/plugins/data/common/types.ts | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/plugins/data/common/field_formats/types.ts b/src/plugins/data/common/field_formats/types.ts index 6f773378de08d2..f7d36754e40f10 100644 --- a/src/plugins/data/common/field_formats/types.ts +++ b/src/plugins/data/common/field_formats/types.ts @@ -16,6 +16,7 @@ * specific language governing permissions and limitations * under the License. */ + import { FieldFormat } from './field_format'; import { FieldFormatsRegistry } from './field_formats_registry'; diff --git a/src/plugins/data/common/search/aggs/aggs_service.ts b/src/plugins/data/common/search/aggs/aggs_service.ts index 59c54fcce68381..6f3e3904dbbd58 100644 --- a/src/plugins/data/common/search/aggs/aggs_service.ts +++ b/src/plugins/data/common/search/aggs/aggs_service.ts @@ -19,6 +19,7 @@ import { ExpressionsServiceSetup } from 'src/plugins/expressions/common'; import { UI_SETTINGS } from '../../../common'; +import { GetConfigFn } from '../../types'; import { AggConfigs, AggTypesRegistry, @@ -48,7 +49,7 @@ export interface AggsCommonSetupDependencies { /** @internal */ export interface AggsCommonStartDependencies { - getConfig: (key: string) => T; + getConfig: GetConfigFn; } /** diff --git a/src/plugins/data/common/types.ts b/src/plugins/data/common/types.ts index e2ec1a031b0ca7..76022317817ee4 100644 --- a/src/plugins/data/common/types.ts +++ b/src/plugins/data/common/types.ts @@ -17,7 +17,21 @@ * under the License. */ +import { FieldFormatsGetConfigFn } from './field_formats/types'; + export * from './query/types'; export * from './kbn_field_types/types'; export * from './index_patterns/types'; export { TextContextTypeConvert, IFieldFormatMetaParams } from './field_formats/types'; + +/** + * If a service is being shared on both the client and the server, and + * the client code requires synchronous access to uiSettings, both client + * and server should wrap the core uiSettings services in a function + * matching this signature. + * + * This matches the signature of the public `core.uiSettings.get`, and + * should only be used in scenarios where async access to uiSettings is + * not possible. + */ +export type GetConfigFn = FieldFormatsGetConfigFn; From ff1d3666189af0a1926e31d1c61914679cef5933 Mon Sep 17 00:00:00 2001 From: Luke Elmers Date: Mon, 17 Aug 2020 16:48:36 -0600 Subject: [PATCH 3/6] Removed unused service getters. --- src/plugins/data/public/plugin.ts | 4 ---- src/plugins/data/public/services.ts | 6 ------ 2 files changed, 10 deletions(-) diff --git a/src/plugins/data/public/plugin.ts b/src/plugins/data/public/plugin.ts index 564c571b6ccd69..ee0b0714febc0b 100644 --- a/src/plugins/data/public/plugin.ts +++ b/src/plugins/data/public/plugin.ts @@ -48,9 +48,7 @@ import { } from './index_patterns'; import { setFieldFormats, - setHttp, setIndexPatterns, - setInjectedMetadata, setNotifications, setOverlays, setQueryService, @@ -164,11 +162,9 @@ export class DataPublicPlugin public start(core: CoreStart, { uiActions }: DataStartDependencies): DataPublicPluginStart { const { uiSettings, http, notifications, savedObjects, overlays, application } = core; - setHttp(http); setNotifications(notifications); setOverlays(overlays); setUiSettings(uiSettings); - setInjectedMetadata(core.injectedMetadata); const fieldFormats = this.fieldFormatsService.start(); setFieldFormats(fieldFormats); diff --git a/src/plugins/data/public/services.ts b/src/plugins/data/public/services.ts index ba0b2de393bdec..032bce6d8d2aa9 100644 --- a/src/plugins/data/public/services.ts +++ b/src/plugins/data/public/services.ts @@ -31,8 +31,6 @@ export const [getUiSettings, setUiSettings] = createGetterSetter('Http'); - export const [getFieldFormats, setFieldFormats] = createGetterSetter( 'FieldFormats' ); @@ -47,10 +45,6 @@ export const [getQueryService, setQueryService] = createGetterSetter< DataPublicPluginStart['query'] >('Query'); -export const [getInjectedMetadata, setInjectedMetadata] = createGetterSetter< - CoreStart['injectedMetadata'] ->('InjectedMetadata'); - export const [getSearchService, setSearchService] = createGetterSetter< DataPublicPluginStart['search'] >('Search'); From b1fdb7cf0248991c69be63650da9f1320ea96272 Mon Sep 17 00:00:00 2001 From: Luke Elmers Date: Tue, 18 Aug 2020 14:33:07 -0600 Subject: [PATCH 4/6] Switch all usages of uiSettings to use getConfig. --- .../ui/public/new_platform/set_services.ts | 2 - .../es_query/es_query/get_es_query_config.ts | 4 +- .../search/fetch/get_search_params.test.ts | 9 ++-- .../public/search/fetch/get_search_params.ts | 31 ++++++------ src/plugins/data/public/search/fetch/types.ts | 4 +- .../search/legacy/default_search_strategy.ts | 4 +- .../public/search/legacy/fetch_soon.test.ts | 39 +++++++-------- .../search/legacy/get_msearch_params.test.ts | 9 ++-- .../search/legacy/get_msearch_params.ts | 8 ++-- .../data/public/search/search_service.ts | 2 +- .../create_search_source.test.ts | 13 ++--- .../data/public/search/search_source/mocks.ts | 9 ++-- .../search_source/search_source.test.ts | 24 ++++------ .../search/search_source/search_source.ts | 47 ++++++++++++------- .../public/data_model/search_api.ts | 2 +- 15 files changed, 100 insertions(+), 107 deletions(-) diff --git a/src/legacy/ui/public/new_platform/set_services.ts b/src/legacy/ui/public/new_platform/set_services.ts index ee92eda064aa86..036157a9f3fbc4 100644 --- a/src/legacy/ui/public/new_platform/set_services.ts +++ b/src/legacy/ui/public/new_platform/set_services.ts @@ -41,7 +41,6 @@ interface NpStart { export function setSetupServices(npSetup: NpSetup) { // Services that need to be set in the legacy platform since the legacy data plugin // which previously provided them has been removed. - dataServices.setInjectedMetadata(npSetup.core.injectedMetadata); visualizationsServices.setUISettings(npSetup.core.uiSettings); visualizationsServices.setUsageCollector(npSetup.plugins.usageCollection); } @@ -49,7 +48,6 @@ export function setSetupServices(npSetup: NpSetup) { export function setStartServices(npStart: NpStart) { // Services that need to be set in the legacy platform since the legacy data plugin // which previously provided them has been removed. - dataServices.setHttp(npStart.core.http); dataServices.setNotifications(npStart.core.notifications); dataServices.setOverlays(npStart.core.overlays); dataServices.setUiSettings(npStart.core.uiSettings); diff --git a/src/plugins/data/common/es_query/es_query/get_es_query_config.ts b/src/plugins/data/common/es_query/es_query/get_es_query_config.ts index ff8fc5b11b26e8..87dbbcee03b81f 100644 --- a/src/plugins/data/common/es_query/es_query/get_es_query_config.ts +++ b/src/plugins/data/common/es_query/es_query/get_es_query_config.ts @@ -18,10 +18,10 @@ */ import { EsQueryConfig } from './build_es_query'; -import { UI_SETTINGS } from '../../'; +import { GetConfigFn, UI_SETTINGS } from '../../'; interface KibanaConfig { - get(key: string): T; + get: GetConfigFn; } export function getEsQueryConfig(config: KibanaConfig) { diff --git a/src/plugins/data/public/search/fetch/get_search_params.test.ts b/src/plugins/data/public/search/fetch/get_search_params.test.ts index f9b62fdd4fc613..1ecb879b1602d9 100644 --- a/src/plugins/data/public/search/fetch/get_search_params.test.ts +++ b/src/plugins/data/public/search/fetch/get_search_params.test.ts @@ -18,13 +18,10 @@ */ import { getSearchParams } from './get_search_params'; -import { IUiSettingsClient } from 'kibana/public'; -import { UI_SETTINGS } from '../../../common'; +import { GetConfigFn, UI_SETTINGS } from '../../../common'; -function getConfigStub(config: any = {}) { - return { - get: (key) => config[key], - } as IUiSettingsClient; +function getConfigStub(config: any = {}): GetConfigFn { + return (key) => config[key]; } describe('getSearchParams', () => { diff --git a/src/plugins/data/public/search/fetch/get_search_params.ts b/src/plugins/data/public/search/fetch/get_search_params.ts index 8e21f30975d87f..5e0395189f6472 100644 --- a/src/plugins/data/public/search/fetch/get_search_params.ts +++ b/src/plugins/data/public/search/fetch/get_search_params.ts @@ -17,37 +17,36 @@ * under the License. */ -import { IUiSettingsClient } from 'kibana/public'; -import { UI_SETTINGS, ISearchRequestParams } from '../../../common'; +import { UI_SETTINGS, ISearchRequestParams, GetConfigFn } from '../../../common'; import { SearchRequest } from './types'; const sessionId = Date.now(); -export function getSearchParams(config: IUiSettingsClient, esShardTimeout: number = 0) { +export function getSearchParams(getConfig: GetConfigFn, esShardTimeout: number = 0) { return { rest_total_hits_as_int: true, ignore_unavailable: true, - ignore_throttled: getIgnoreThrottled(config), - max_concurrent_shard_requests: getMaxConcurrentShardRequests(config), - preference: getPreference(config), + ignore_throttled: getIgnoreThrottled(getConfig), + max_concurrent_shard_requests: getMaxConcurrentShardRequests(getConfig), + preference: getPreference(getConfig), timeout: getTimeout(esShardTimeout), }; } -export function getIgnoreThrottled(config: IUiSettingsClient) { - return !config.get(UI_SETTINGS.SEARCH_INCLUDE_FROZEN); +export function getIgnoreThrottled(getConfig: GetConfigFn) { + return !getConfig(UI_SETTINGS.SEARCH_INCLUDE_FROZEN); } -export function getMaxConcurrentShardRequests(config: IUiSettingsClient) { - const maxConcurrentShardRequests = config.get(UI_SETTINGS.COURIER_MAX_CONCURRENT_SHARD_REQUESTS); +export function getMaxConcurrentShardRequests(getConfig: GetConfigFn) { + const maxConcurrentShardRequests = getConfig(UI_SETTINGS.COURIER_MAX_CONCURRENT_SHARD_REQUESTS); return maxConcurrentShardRequests > 0 ? maxConcurrentShardRequests : undefined; } -export function getPreference(config: IUiSettingsClient) { - const setRequestPreference = config.get(UI_SETTINGS.COURIER_SET_REQUEST_PREFERENCE); +export function getPreference(getConfig: GetConfigFn) { + const setRequestPreference = getConfig(UI_SETTINGS.COURIER_SET_REQUEST_PREFERENCE); if (setRequestPreference === 'sessionId') return sessionId; return setRequestPreference === 'custom' - ? config.get(UI_SETTINGS.COURIER_CUSTOM_REQUEST_PREFERENCE) + ? getConfig(UI_SETTINGS.COURIER_CUSTOM_REQUEST_PREFERENCE) : undefined; } @@ -60,10 +59,10 @@ export function getTimeout(esShardTimeout: number) { // already wired up. export function getSearchParamsFromRequest( searchRequest: SearchRequest, - dependencies: { esShardTimeout: number; uiSettings: IUiSettingsClient } + dependencies: { esShardTimeout: number; getConfig: GetConfigFn } ): ISearchRequestParams { - const { esShardTimeout, uiSettings } = dependencies; - const searchParams = getSearchParams(uiSettings, esShardTimeout); + const { esShardTimeout, getConfig } = dependencies; + const searchParams = getSearchParams(getConfig, esShardTimeout); return { index: searchRequest.index.title || searchRequest.index, diff --git a/src/plugins/data/public/search/fetch/types.ts b/src/plugins/data/public/search/fetch/types.ts index dda66d6b5238d2..18d277204815ba 100644 --- a/src/plugins/data/public/search/fetch/types.ts +++ b/src/plugins/data/public/search/fetch/types.ts @@ -17,7 +17,7 @@ * under the License. */ -import { IUiSettingsClient } from '../../../../../core/public'; +import { GetConfigFn } from '../../../common'; import { ISearchStartLegacy } from '../types'; export type SearchRequest = any; @@ -30,7 +30,7 @@ export interface FetchOptions { export interface FetchHandlers { legacySearchService: ISearchStartLegacy; - config: IUiSettingsClient; + config: { get: GetConfigFn }; esShardTimeout: number; } 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 284768bc5a1cc3..6ccb0a01cf898b 100644 --- a/src/plugins/data/public/search/legacy/default_search_strategy.ts +++ b/src/plugins/data/public/search/legacy/default_search_strategy.ts @@ -42,7 +42,7 @@ function msearch({ index: index.title || index, search_type: searchType, ignore_unavailable: true, - preference: getPreference(config), + preference: getPreference(config.get), }; const inlineBody = { ...body, @@ -52,7 +52,7 @@ function msearch({ }); const searching = es.msearch({ - ...getMSearchParams(config), + ...getMSearchParams(config.get), body: `${inlineRequests.join('\n')}\n`, }); 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 61d3568350b6b1..d375398af1adda 100644 --- a/src/plugins/data/public/search/legacy/fetch_soon.test.ts +++ b/src/plugins/data/public/search/legacy/fetch_soon.test.ts @@ -19,15 +19,12 @@ import { fetchSoon } from './fetch_soon'; import { callClient } from './call_client'; -import { IUiSettingsClient } from 'kibana/public'; import { FetchHandlers, FetchOptions } from '../fetch/types'; import { SearchRequest, SearchResponse } from '../index'; -import { UI_SETTINGS } from '../../../common'; +import { GetConfigFn, UI_SETTINGS } from '../../../common'; -function getConfigStub(config: any = {}) { - return { - get: (key) => config[key], - } as IUiSettingsClient; +function getConfigStub(config: any = {}): GetConfigFn { + return (key) => config[key]; } const mockResponses: Record = { @@ -60,9 +57,9 @@ describe('fetchSoon', () => { }); test('should execute asap if config is set to not batch searches', () => { - const config = getConfigStub({ - [UI_SETTINGS.COURIER_BATCH_SEARCHES]: false, - }); + const config = { + get: getConfigStub({ [UI_SETTINGS.COURIER_BATCH_SEARCHES]: false }), + }; const request = {}; const options = {}; @@ -72,9 +69,9 @@ describe('fetchSoon', () => { }); test('should delay by 50ms if config is set to batch searches', () => { - const config = getConfigStub({ - [UI_SETTINGS.COURIER_BATCH_SEARCHES]: true, - }); + const config = { + get: getConfigStub({ [UI_SETTINGS.COURIER_BATCH_SEARCHES]: true }), + }; const request = {}; const options = {}; @@ -88,9 +85,9 @@ describe('fetchSoon', () => { }); test('should send a batch of requests to callClient', () => { - const config = getConfigStub({ - [UI_SETTINGS.COURIER_BATCH_SEARCHES]: true, - }); + const config = { + get: getConfigStub({ [UI_SETTINGS.COURIER_BATCH_SEARCHES]: true }), + }; const requests = [{ foo: 1 }, { foo: 2 }]; const options = [{ bar: 1 }, { bar: 2 }]; @@ -105,9 +102,9 @@ describe('fetchSoon', () => { }); test('should return the response to the corresponding call for multiple batched requests', async () => { - const config = getConfigStub({ - [UI_SETTINGS.COURIER_BATCH_SEARCHES]: true, - }); + const config = { + get: getConfigStub({ [UI_SETTINGS.COURIER_BATCH_SEARCHES]: true }), + }; const requests = [{ _mockResponseId: 'foo' }, { _mockResponseId: 'bar' }]; const promises = requests.map((request) => { @@ -120,9 +117,9 @@ describe('fetchSoon', () => { }); test('should wait for the previous batch to start before starting a new batch', () => { - const config = getConfigStub({ - [UI_SETTINGS.COURIER_BATCH_SEARCHES]: true, - }); + const config = { + get: getConfigStub({ [UI_SETTINGS.COURIER_BATCH_SEARCHES]: true }), + }; const firstBatch = [{ foo: 1 }, { foo: 2 }]; const secondBatch = [{ bar: 1 }, { bar: 2 }]; diff --git a/src/plugins/data/public/search/legacy/get_msearch_params.test.ts b/src/plugins/data/public/search/legacy/get_msearch_params.test.ts index dc61e194066314..d3206950174c89 100644 --- a/src/plugins/data/public/search/legacy/get_msearch_params.test.ts +++ b/src/plugins/data/public/search/legacy/get_msearch_params.test.ts @@ -18,13 +18,10 @@ */ import { getMSearchParams } from './get_msearch_params'; -import { IUiSettingsClient } from '../../../../../core/public'; -import { UI_SETTINGS } from '../../../common'; +import { GetConfigFn, UI_SETTINGS } from '../../../common'; -function getConfigStub(config: any = {}) { - return { - get: (key) => config[key], - } as IUiSettingsClient; +function getConfigStub(config: any = {}): GetConfigFn { + return (key) => config[key]; } describe('getMSearchParams', () => { diff --git a/src/plugins/data/public/search/legacy/get_msearch_params.ts b/src/plugins/data/public/search/legacy/get_msearch_params.ts index 48d13903c972fe..c4f77b25078cd0 100644 --- a/src/plugins/data/public/search/legacy/get_msearch_params.ts +++ b/src/plugins/data/public/search/legacy/get_msearch_params.ts @@ -17,13 +17,13 @@ * under the License. */ -import { IUiSettingsClient } from 'kibana/public'; +import { GetConfigFn } from '../../../common'; import { getIgnoreThrottled, getMaxConcurrentShardRequests } from '../fetch'; -export function getMSearchParams(config: IUiSettingsClient) { +export function getMSearchParams(getConfig: GetConfigFn) { return { rest_total_hits_as_int: true, - ignore_throttled: getIgnoreThrottled(config), - max_concurrent_shard_requests: getMaxConcurrentShardRequests(config), + ignore_throttled: getIgnoreThrottled(getConfig), + max_concurrent_shard_requests: getMaxConcurrentShardRequests(getConfig), }; } diff --git a/src/plugins/data/public/search/search_service.ts b/src/plugins/data/public/search/search_service.ts index 1e7e81fc20502c..a65b2b4b71f200 100644 --- a/src/plugins/data/public/search/search_service.ts +++ b/src/plugins/data/public/search/search_service.ts @@ -112,7 +112,7 @@ export class SearchService implements Plugin { }; const searchSourceDependencies: SearchSourceDependencies = { - uiSettings, + getConfig: uiSettings.get.bind(uiSettings), esShardTimeout: injectedMetadata.getInjectedVar('esShardTimeout') as number, search, legacySearch, 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 23ab5979595af3..56f6ca6c56270e 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 @@ -16,27 +16,28 @@ * specific language governing permissions and limitations * under the License. */ + import { createSearchSource as createSearchSourceFactory } from './create_search_source'; +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 { dataPluginMock } from '../../mocks'; describe('createSearchSource', () => { const indexPatternMock: IIndexPattern = {} as IIndexPattern; let indexPatternContractMock: jest.Mocked; - let dependencies: any; + let dependencies: SearchSourceDependencies; let createSearchSource: ReturnType; beforeEach(() => { - const core = coreMock.createStart(); const data = dataPluginMock.createStartContract(); dependencies = { - searchService: data.search, - uiSettings: core.uiSettings, - injectedMetadata: core.injectedMetadata, + getConfig: jest.fn(), + search: jest.fn(), + legacySearch: data.search.__LEGACY, + esShardTimeout: 30000, }; indexPatternContractMock = ({ diff --git a/src/plugins/data/public/search/search_source/mocks.ts b/src/plugins/data/public/search/search_source/mocks.ts index cf2d009e41b549..4e1c35557ffa6c 100644 --- a/src/plugins/data/public/search/search_source/mocks.ts +++ b/src/plugins/data/public/search/search_source/mocks.ts @@ -17,10 +17,7 @@ * under the License. */ -import { - injectedMetadataServiceMock, - uiSettingsServiceMock, -} from '../../../../../core/public/mocks'; +import { uiSettingsServiceMock } from '../../../../../core/public/mocks'; import { ISearchSource, SearchSource } from './search_source'; import { SearchSourceFields } from './types'; @@ -54,6 +51,8 @@ export const searchSourceMock = { export const createSearchSourceMock = (fields?: SearchSourceFields) => new SearchSource(fields, { + getConfig: uiSettingsServiceMock.createStartContract().get, + esShardTimeout: 30000, search: jest.fn(), legacySearch: { esClient: { @@ -61,6 +60,4 @@ export const createSearchSourceMock = (fields?: SearchSourceFields) => msearch: jest.fn(), }, }, - uiSettings: uiSettingsServiceMock.createStartContract(), - injectedMetadata: injectedMetadataServiceMock.createStartContract(), }); 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 6d53b8dfc4b4e9..2f0fa0765e25a5 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 @@ -16,13 +16,13 @@ * specific language governing permissions and limitations * under the License. */ + import { Observable } from 'rxjs'; -import { SearchSource } from './search_source'; +import { GetConfigFn } from 'src/plugins/data/common'; +import { SearchSource, SearchSourceDependencies } from './search_source'; import { IndexPattern, SortDirection } from '../..'; import { fetchSoon } from '../legacy'; -import { IUiSettingsClient } from '../../../../../core/public'; import { dataPluginMock } from '../../../../data/public/mocks'; -import { coreMock } from '../../../../../core/public/mocks'; jest.mock('../legacy', () => ({ fetchSoon: jest.fn().mockResolvedValue({}), @@ -51,10 +51,9 @@ const indexPattern2 = ({ describe('SearchSource', () => { let mockSearchMethod: any; - let searchSourceDependencies: any; + let searchSourceDependencies: SearchSourceDependencies; beforeEach(() => { - const core = coreMock.createStart(); const data = dataPluginMock.createStartContract(); mockSearchMethod = jest.fn(() => { @@ -69,10 +68,10 @@ describe('SearchSource', () => { }); searchSourceDependencies = { + getConfig: jest.fn(), search: mockSearchMethod, legacySearch: data.search.__LEGACY, - injectedMetadata: core.injectedMetadata, - uiSettings: core.uiSettings, + esShardTimeout: 30000, }; }); @@ -184,16 +183,11 @@ describe('SearchSource', () => { describe('#legacy fetch()', () => { beforeEach(() => { - const core = coreMock.createStart(); - searchSourceDependencies = { ...searchSourceDependencies, - uiSettings: { - ...core.uiSettings, - get: jest.fn(() => { - return true; // batchSearches = true - }), - } as IUiSettingsClient, + getConfig: jest.fn(() => { + return true; // batchSearches = true + }) as GetConfigFn, }; }); 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 cf47fa9aa092b5..06ad13bfcfdf5a 100644 --- a/src/plugins/data/public/search/search_source/search_source.ts +++ b/src/plugins/data/public/search/search_source/search_source.ts @@ -72,7 +72,6 @@ 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 { CoreStart } from 'kibana/public'; import { normalizeSortRequest } from './normalize_sort_request'; import { filterDocvalueFields } from './filter_docvalue_fields'; import { fieldWildcardFilter } from '../../../../kibana_utils/common'; @@ -82,12 +81,29 @@ import { FetchOptions, RequestFailure, handleResponse, getSearchParamsFromReques import { getEsQueryConfig, buildEsQuery, Filter, UI_SETTINGS } from '../../../common'; import { getHighlightRequest } from '../../../common/field_formats'; +import { GetConfigFn } from '../../../common/types'; import { fetchSoon } from '../legacy'; import { extractReferences } from './extract_references'; import { ISearchStartLegacy } from '../types'; +/** @internal */ +export const searchSourceRequiredUiSettings = [ + 'dateFormat:tz', + UI_SETTINGS.COURIER_BATCH_SEARCHES, + UI_SETTINGS.COURIER_CUSTOM_REQUEST_PREFERENCE, + UI_SETTINGS.COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX, + UI_SETTINGS.COURIER_MAX_CONCURRENT_SHARD_REQUESTS, + UI_SETTINGS.COURIER_SET_REQUEST_PREFERENCE, + UI_SETTINGS.DOC_HIGHLIGHT, + UI_SETTINGS.META_FIELDS, + UI_SETTINGS.QUERY_ALLOW_LEADING_WILDCARDS, + UI_SETTINGS.QUERY_STRING_OPTIONS, + UI_SETTINGS.SEARCH_INCLUDE_FROZEN, + UI_SETTINGS.SORT_OPTIONS, +]; + export interface SearchSourceDependencies { - uiSettings: CoreStart['uiSettings']; + getConfig: GetConfigFn; search: ISearchGeneric; legacySearch: ISearchStartLegacy; esShardTimeout: number; @@ -204,11 +220,11 @@ export class SearchSource { * @return {Observable>} */ private fetch$(searchRequest: SearchRequest, signal?: AbortSignal) { - const { search, esShardTimeout, uiSettings } = this.dependencies; + const { search, esShardTimeout, getConfig } = this.dependencies; const params = getSearchParamsFromRequest(searchRequest, { esShardTimeout, - uiSettings, + getConfig, }); return search({ params, indexType: searchRequest.indexType }, { signal }).pipe( @@ -221,7 +237,7 @@ export class SearchSource { * @return {Promise>} */ private async legacyFetch(searchRequest: SearchRequest, options: FetchOptions) { - const { esShardTimeout, legacySearch, uiSettings } = this.dependencies; + const { esShardTimeout, legacySearch, getConfig } = this.dependencies; return await fetchSoon( searchRequest, @@ -231,7 +247,7 @@ export class SearchSource { }, { legacySearchService: legacySearch, - config: uiSettings, + config: { get: getConfig }, esShardTimeout, } ); @@ -242,14 +258,14 @@ export class SearchSource { * @async */ async fetch(options: FetchOptions = {}) { - const { uiSettings } = this.dependencies; + const { getConfig } = this.dependencies; await this.requestIsStarting(options); const searchRequest = await this.flatten(); this.history = [searchRequest]; let response; - if (uiSettings.get(UI_SETTINGS.COURIER_BATCH_SEARCHES)) { + if (getConfig(UI_SETTINGS.COURIER_BATCH_SEARCHES)) { response = await this.legacyFetch(searchRequest, options); } else { response = this.fetch$(searchRequest, options.abortSignal).toPromise(); @@ -341,7 +357,7 @@ export class SearchSource { } }; - const { uiSettings } = this.dependencies; + const { getConfig } = this.dependencies; switch (key) { case 'filter': @@ -363,7 +379,7 @@ export class SearchSource { const sort = normalizeSortRequest( val, this.getField('index'), - uiSettings.get(UI_SETTINGS.SORT_OPTIONS) + getConfig(UI_SETTINGS.SORT_OPTIONS) ); return addToBody(key, sort); default: @@ -417,14 +433,11 @@ export class SearchSource { body._source = index.getSourceFiltering(); } - const { uiSettings } = this.dependencies; + const { getConfig } = this.dependencies; if (body._source) { // exclude source fields for this index pattern specified by the user - const filter = fieldWildcardFilter( - body._source.excludes, - uiSettings.get(UI_SETTINGS.META_FIELDS) - ); + const filter = fieldWildcardFilter(body._source.excludes, getConfig(UI_SETTINGS.META_FIELDS)); body.docvalue_fields = body.docvalue_fields.filter((docvalueField: any) => filter(docvalueField.field) ); @@ -444,11 +457,11 @@ export class SearchSource { ); } - const esQueryConfigs = getEsQueryConfig(uiSettings); + const esQueryConfigs = getEsQueryConfig({ get: getConfig }); body.query = buildEsQuery(index, query, filters, esQueryConfigs); if (highlightAll && body.query) { - body.highlight = getHighlightRequest(body.query, uiSettings.get(UI_SETTINGS.DOC_HIGHLIGHT)); + body.highlight = getHighlightRequest(body.query, getConfig(UI_SETTINGS.DOC_HIGHLIGHT)); delete searchRequest.highlightAll; } diff --git a/src/plugins/vis_type_vega/public/data_model/search_api.ts b/src/plugins/vis_type_vega/public/data_model/search_api.ts index edb55dbca98cbd..d2ce8c95b9f90f 100644 --- a/src/plugins/vis_type_vega/public/data_model/search_api.ts +++ b/src/plugins/vis_type_vega/public/data_model/search_api.ts @@ -54,7 +54,7 @@ export class SearchAPI { esShardTimeout: this.dependencies.injectedMetadata.getInjectedVar( 'esShardTimeout' ) as number, - uiSettings: this.dependencies.uiSettings, + getConfig: this.dependencies.uiSettings.get.bind(this.dependencies.uiSettings), }); if (this.inspectorAdapters) { From f66378a8b2a457bdfced68131095885b7883ca10 Mon Sep 17 00:00:00 2001 From: Luke Elmers Date: Tue, 18 Aug 2020 16:22:36 -0600 Subject: [PATCH 5/6] Fix circular dependencies. --- .../common/field_formats/converters/date_nanos_shared.ts | 3 ++- .../data/common/field_formats/field_formats_registry.ts | 2 +- src/plugins/data/common/field_formats/types.ts | 3 ++- src/plugins/data/common/types.ts | 5 +---- src/plugins/data/public/field_formats/converters/date.ts | 8 ++------ .../server/field_formats/converters/date_nanos_server.ts | 2 +- .../data/server/field_formats/converters/date_server.ts | 6 ++++-- 7 files changed, 13 insertions(+), 16 deletions(-) diff --git a/src/plugins/data/common/field_formats/converters/date_nanos_shared.ts b/src/plugins/data/common/field_formats/converters/date_nanos_shared.ts index 89a63243c76f07..7a225cd7d1ae78 100644 --- a/src/plugins/data/common/field_formats/converters/date_nanos_shared.ts +++ b/src/plugins/data/common/field_formats/converters/date_nanos_shared.ts @@ -20,7 +20,8 @@ import { i18n } from '@kbn/i18n'; import { memoize, noop } from 'lodash'; import moment, { Moment } from 'moment'; -import { FieldFormat, FIELD_FORMAT_IDS, KBN_FIELD_TYPES, TextContextTypeConvert } from '../../'; +import { FieldFormat, FIELD_FORMAT_IDS, KBN_FIELD_TYPES } from '../../'; +import { TextContextTypeConvert } from '../types'; /** * Analyse the given moment.js format pattern for the fractional sec part (S,SS,SSS...) diff --git a/src/plugins/data/common/field_formats/field_formats_registry.ts b/src/plugins/data/common/field_formats/field_formats_registry.ts index 4b847ebc358d70..32f9f37b9ba53c 100644 --- a/src/plugins/data/common/field_formats/field_formats_registry.ts +++ b/src/plugins/data/common/field_formats/field_formats_registry.ts @@ -32,7 +32,7 @@ import { import { baseFormatters } from './constants/base_formatters'; import { FieldFormat } from './field_format'; import { SerializedFieldFormat } from '../../../expressions/common/types'; -import { ES_FIELD_TYPES, KBN_FIELD_TYPES } from '../types'; +import { ES_FIELD_TYPES, KBN_FIELD_TYPES } from '../kbn_field_types/types'; import { UI_SETTINGS } from '../constants'; export class FieldFormatsRegistry { diff --git a/src/plugins/data/common/field_formats/types.ts b/src/plugins/data/common/field_formats/types.ts index f7d36754e40f10..daa44b2b0f85be 100644 --- a/src/plugins/data/common/field_formats/types.ts +++ b/src/plugins/data/common/field_formats/types.ts @@ -17,6 +17,7 @@ * under the License. */ +import { GetConfigFn } from '../types'; import { FieldFormat } from './field_format'; import { FieldFormatsRegistry } from './field_formats_registry'; @@ -73,7 +74,7 @@ export interface FieldFormatConfig { es?: boolean; } -export type FieldFormatsGetConfigFn = (key: string, defaultOverride?: T) => T; +export type FieldFormatsGetConfigFn = GetConfigFn; export type IFieldFormat = PublicMethodsOf; diff --git a/src/plugins/data/common/types.ts b/src/plugins/data/common/types.ts index 76022317817ee4..a1e1252b3112fe 100644 --- a/src/plugins/data/common/types.ts +++ b/src/plugins/data/common/types.ts @@ -17,12 +17,9 @@ * under the License. */ -import { FieldFormatsGetConfigFn } from './field_formats/types'; - export * from './query/types'; export * from './kbn_field_types/types'; export * from './index_patterns/types'; -export { TextContextTypeConvert, IFieldFormatMetaParams } from './field_formats/types'; /** * If a service is being shared on both the client and the server, and @@ -34,4 +31,4 @@ export { TextContextTypeConvert, IFieldFormatMetaParams } from './field_formats/ * should only be used in scenarios where async access to uiSettings is * not possible. */ -export type GetConfigFn = FieldFormatsGetConfigFn; +export type GetConfigFn = (key: string, defaultOverride?: T) => T; diff --git a/src/plugins/data/public/field_formats/converters/date.ts b/src/plugins/data/public/field_formats/converters/date.ts index 78ef8b293e8b9e..8070633ef2dfee 100644 --- a/src/plugins/data/public/field_formats/converters/date.ts +++ b/src/plugins/data/public/field_formats/converters/date.ts @@ -20,12 +20,8 @@ import { i18n } from '@kbn/i18n'; import { memoize, noop } from 'lodash'; import moment from 'moment'; -import { - FieldFormat, - KBN_FIELD_TYPES, - TextContextTypeConvert, - FIELD_FORMAT_IDS, -} from '../../../common'; +import { FieldFormat, KBN_FIELD_TYPES, FIELD_FORMAT_IDS } from '../../../common'; +import { TextContextTypeConvert } from '../../../common/field_formats/types'; export class DateFormat extends FieldFormat { static id = FIELD_FORMAT_IDS.DATE; diff --git a/src/plugins/data/server/field_formats/converters/date_nanos_server.ts b/src/plugins/data/server/field_formats/converters/date_nanos_server.ts index 299b2aac93d49d..b99febf0c7e731 100644 --- a/src/plugins/data/server/field_formats/converters/date_nanos_server.ts +++ b/src/plugins/data/server/field_formats/converters/date_nanos_server.ts @@ -24,7 +24,7 @@ import { DateNanosFormat, formatWithNanos, } from '../../../common/field_formats/converters/date_nanos_shared'; -import { TextContextTypeConvert } from '../../../common'; +import { TextContextTypeConvert } from '../../../common/field_formats/types'; class DateNanosFormatServer extends DateNanosFormat { textConvert: TextContextTypeConvert = (val) => { diff --git a/src/plugins/data/server/field_formats/converters/date_server.ts b/src/plugins/data/server/field_formats/converters/date_server.ts index 85eb65dfc6a8df..19c4adc90badef 100644 --- a/src/plugins/data/server/field_formats/converters/date_server.ts +++ b/src/plugins/data/server/field_formats/converters/date_server.ts @@ -23,11 +23,13 @@ import moment from 'moment-timezone'; import { FieldFormat, KBN_FIELD_TYPES, - TextContextTypeConvert, FIELD_FORMAT_IDS, FieldFormatsGetConfigFn, - IFieldFormatMetaParams, } from '../../../common'; +import { + IFieldFormatMetaParams, + TextContextTypeConvert, +} from '../../../common/field_formats/types'; export class DateFormat extends FieldFormat { static id = FIELD_FORMAT_IDS.DATE; From 81feb1017237bfe586334c56f78e87c27871d146 Mon Sep 17 00:00:00 2001 From: Luke Elmers Date: Wed, 19 Aug 2020 13:11:41 -0600 Subject: [PATCH 6/6] Update generated docs. --- ...plugin-plugins-data-public.fieldformatsgetconfigfn.md | 2 +- ...gin-plugins-data-public.getsearchparamsfromrequest.md | 7 ++++--- ...plugin-plugins-data-server.fieldformatsgetconfigfn.md | 2 +- src/plugins/data/public/public.api.md | 9 ++++----- src/plugins/data/server/server.api.md | 3 ++- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldformatsgetconfigfn.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldformatsgetconfigfn.md index 4233eea42cded9..c54e549c42a441 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldformatsgetconfigfn.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldformatsgetconfigfn.md @@ -7,5 +7,5 @@ Signature: ```typescript -export declare type FieldFormatsGetConfigFn = (key: string, defaultOverride?: T) => T; +export declare type FieldFormatsGetConfigFn = GetConfigFn; ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getsearchparamsfromrequest.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getsearchparamsfromrequest.md index 5bd1694cbeea3f..337b4b3302cc37 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getsearchparamsfromrequest.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getsearchparamsfromrequest.md @@ -4,12 +4,13 @@ ## getSearchParamsFromRequest() function + Signature: ```typescript export declare function getSearchParamsFromRequest(searchRequest: SearchRequest, dependencies: { - injectedMetadata: CoreStart['injectedMetadata']; - uiSettings: IUiSettingsClient; + esShardTimeout: number; + getConfig: GetConfigFn; }): ISearchRequestParams; ``` @@ -18,7 +19,7 @@ export declare function getSearchParamsFromRequest(searchRequest: SearchRequest, | Parameter | Type | Description | | --- | --- | --- | | searchRequest | SearchRequest | | -| dependencies | {
injectedMetadata: CoreStart['injectedMetadata'];
uiSettings: IUiSettingsClient;
} | | +| dependencies | {
esShardTimeout: number;
getConfig: GetConfigFn;
} | | Returns: diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fieldformatsgetconfigfn.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fieldformatsgetconfigfn.md index c8815ed42d3b3a..a3f6c709246ea2 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fieldformatsgetconfigfn.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.fieldformatsgetconfigfn.md @@ -7,5 +7,5 @@ Signature: ```typescript -export declare type FieldFormatsGetConfigFn = (key: string, defaultOverride?: T) => T; +export declare type FieldFormatsGetConfigFn = GetConfigFn; ``` diff --git a/src/plugins/data/public/public.api.md b/src/plugins/data/public/public.api.md index 7041bcdfa42218..7defddb8f570a1 100644 --- a/src/plugins/data/public/public.api.md +++ b/src/plugins/data/public/public.api.md @@ -34,7 +34,6 @@ import { InjectedIntl } from '@kbn/i18n/react'; import { ISearchSource as ISearchSource_2 } from 'src/plugins/data/public'; import { IStorageWrapper } from 'src/plugins/kibana_utils/public'; import { IUiSettingsClient } from 'src/core/public'; -import { IUiSettingsClient as IUiSettingsClient_3 } from 'kibana/public'; import { KibanaClient } from '@elastic/elasticsearch/api/kibana'; import { KibanaConfigType } from 'src/core/server/kibana_config'; import { Location } from 'history'; @@ -594,10 +593,11 @@ export const fieldFormats: { // @public (undocumented) export type FieldFormatsContentType = 'html' | 'text'; +// Warning: (ae-forgotten-export) The symbol "GetConfigFn" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "FieldFormatsGetConfigFn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export type FieldFormatsGetConfigFn = (key: string, defaultOverride?: T) => T; +export type FieldFormatsGetConfigFn = GetConfigFn; // Warning: (ae-missing-release-tag) "FieldList" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -727,12 +727,11 @@ export function getEsPreference(uiSettings: IUiSettingsClient_2, sessionId?: str export const getKbnTypeNames: () => string[]; // Warning: (ae-forgotten-export) The symbol "ISearchRequestParams" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "getSearchParamsFromRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) export function getSearchParamsFromRequest(searchRequest: SearchRequest, dependencies: { - injectedMetadata: CoreStart['injectedMetadata']; - uiSettings: IUiSettingsClient_3; + esShardTimeout: number; + getConfig: GetConfigFn; }): ISearchRequestParams; // Warning: (ae-missing-release-tag) "getTime" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) diff --git a/src/plugins/data/server/server.api.md b/src/plugins/data/server/server.api.md index e259a7878398d7..f0a0d2763ff23f 100644 --- a/src/plugins/data/server/server.api.md +++ b/src/plugins/data/server/server.api.md @@ -419,10 +419,11 @@ export const fieldFormats: { TruncateFormat: typeof TruncateFormat; }; +// Warning: (ae-forgotten-export) The symbol "GetConfigFn" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "FieldFormatsGetConfigFn" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export type FieldFormatsGetConfigFn = (key: string, defaultOverride?: T) => T; +export type FieldFormatsGetConfigFn = GetConfigFn; // Warning: (ae-missing-release-tag) "Filter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) //