diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index 4c83bc19f1cda..f5a6744845188 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -122,7 +122,7 @@ pageLoadAssetSize: sessionView: 77750 cloudSecurityPosture: 19109 visTypeGauge: 24113 - unifiedSearch: 104869 + unifiedSearch: 71059 data: 454087 expressionXY: 26500 eventAnnotation: 19334 diff --git a/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx b/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx index 139405f6af9f4..723b7e6896229 100644 --- a/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx +++ b/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/field.tsx @@ -8,7 +8,6 @@ import { IFieldType, indexPatterns as indexPatternsUtils } from '@kbn/data-plugin/public'; import { flatten } from 'lodash'; -import { escapeKuery } from './lib/escape_kuery'; import { sortPrefixFirst } from './sort_prefix_first'; import { QuerySuggestionField, QuerySuggestionTypes } from '../query_suggestion_provider'; import { KqlQuerySuggestionProvider } from './types'; @@ -27,7 +26,7 @@ const keywordComparator = (first: IFieldType, second: IFieldType) => { export const setupGetFieldSuggestions: KqlQuerySuggestionProvider = ( core ) => { - return ({ indexPatterns }, { start, end, prefix, suffix, nestedPath = '' }) => { + return async ({ indexPatterns }, { start, end, prefix, suffix, nestedPath = '' }) => { const allFields = flatten( indexPatterns.map((indexPattern) => { return indexPattern.fields.filter(indexPatternsUtils.isFilterable); @@ -42,7 +41,7 @@ export const setupGetFieldSuggestions: KqlQuerySuggestionProvider { const remainingPath = field.subType && field.subType.nested diff --git a/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/index.ts b/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/index.ts index 1002863fec7f4..cd022ec371e65 100644 --- a/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/index.ts +++ b/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/index.ts @@ -9,7 +9,6 @@ import { CoreSetup } from '@kbn/core/public'; import { $Keys } from 'utility-types'; import { flatten, uniqBy } from 'lodash'; -import { fromKueryExpression } from '@kbn/es-query'; import { setupGetFieldSuggestions } from './field'; import { setupGetValueSuggestions } from './value'; import { setupGetOperatorSuggestions } from './operator'; @@ -38,11 +37,12 @@ export const setupKqlQuerySuggestionProvider = ( conjunction: setupGetConjunctionSuggestions(core), }; - const getSuggestionsByType = ( + const getSuggestionsByType = async ( cursoredQuery: string, querySuggestionsArgs: QuerySuggestionGetFnArgs - ): Array> | [] => { + ): Promise> | []> => { try { + const { fromKueryExpression } = await import('@kbn/es-query'); const cursorNode = fromKueryExpression(cursoredQuery, { cursorSymbol, parseCursor: true, @@ -56,13 +56,13 @@ export const setupKqlQuerySuggestionProvider = ( } }; - return (querySuggestionsArgs) => { + return async (querySuggestionsArgs): Promise => { const { query, selectionStart, selectionEnd } = querySuggestionsArgs; const cursoredQuery = `${query.substr(0, selectionStart)}${cursorSymbol}${query.substr( selectionEnd )}`; - return Promise.all(getSuggestionsByType(cursoredQuery, querySuggestionsArgs)).then( + return Promise.all(await getSuggestionsByType(cursoredQuery, querySuggestionsArgs)).then( (suggestionsByType) => dedup(flatten(suggestionsByType)) ); }; diff --git a/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/lib/escape_kuery.ts b/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/lib/escape_kuery.ts index 6636f9b602687..20a20797c15e2 100644 --- a/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/lib/escape_kuery.ts +++ b/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/lib/escape_kuery.ts @@ -6,8 +6,6 @@ * Side Public License, v 1. */ -import { escapeKuery } from '@kbn/es-query'; - /** * Escapes backslashes and double-quotes. (Useful when putting a string in quotes to use as a value * in a KQL expression. See the QuotedCharacter rule in kuery.peg.) @@ -15,6 +13,3 @@ import { escapeKuery } from '@kbn/es-query'; export function escapeQuotes(str: string) { return str.replace(/[\\"]/g, '\\$&'); } - -// Re-export this function from the @kbn/es-query package to avoid refactoring -export { escapeKuery }; diff --git a/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/types.ts b/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/types.ts index e9ca34e546f0b..d7b8b3315fafd 100644 --- a/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/types.ts +++ b/src/plugins/unified_search/public/autocomplete/providers/kql_query_suggestion/types.ts @@ -6,10 +6,10 @@ * Side Public License, v 1. */ -import { CoreSetup } from '@kbn/core/public'; -import { KueryNode } from '@kbn/es-query'; +import type { KueryNode } from '@kbn/es-query'; +import type { CoreSetup } from '@kbn/core/public'; import type { UnifiedSearchPublicPluginStart } from '../../../types'; -import { QuerySuggestionBasic, QuerySuggestionGetFnArgs } from '../query_suggestion_provider'; +import type { QuerySuggestionBasic, QuerySuggestionGetFnArgs } from '../query_suggestion_provider'; export type KqlQuerySuggestionProvider = ( core: CoreSetup diff --git a/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts b/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts index 054a243064329..2c25fe0230501 100644 --- a/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts +++ b/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts @@ -8,7 +8,6 @@ import { CoreSetup } from '@kbn/core/public'; import dateMath from '@kbn/datemath'; -import { buildQueryFromFilters } from '@kbn/es-query'; import { memoize } from 'lodash'; import { IIndexPattern, @@ -124,6 +123,7 @@ export const setupValueSuggestionProvider = ( const timeFilter = useTimeRange ? getAutocompleteTimefilter(timefilter, indexPattern) : undefined; + const { buildQueryFromFilters } = await import('@kbn/es-query'); const filterQuery = timeFilter ? buildQueryFromFilters([timeFilter], indexPattern).filter : []; const filters = [...(boolFilter ? boolFilter : []), ...filterQuery]; try { diff --git a/src/plugins/unified_search/public/filter_bar/filter_item.tsx b/src/plugins/unified_search/public/filter_bar/filter_item.tsx index 136931b6e463a..16234a2953dc7 100644 --- a/src/plugins/unified_search/public/filter_bar/filter_item.tsx +++ b/src/plugins/unified_search/public/filter_bar/filter_item.tsx @@ -399,6 +399,6 @@ export function FilterItem(props: FilterItemProps) { ); } - +// Needed for React.lazy // eslint-disable-next-line import/no-default-export export default FilterItem; diff --git a/src/plugins/unified_search/public/index.ts b/src/plugins/unified_search/public/index.ts index 1200234a793a4..93805c6cfec1c 100755 --- a/src/plugins/unified_search/public/index.ts +++ b/src/plugins/unified_search/public/index.ts @@ -5,6 +5,7 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ + import { PluginInitializerContext } from '@kbn/core/public'; import { ConfigSchema } from '../config'; export type { IndexPatternSelectProps } from './index_pattern_select'; @@ -28,7 +29,7 @@ export type { AutocompleteStart, } from './autocomplete'; -export { QuerySuggestionTypes } from './autocomplete'; +export { QuerySuggestionTypes } from './autocomplete/providers/query_suggestion_provider'; import { UnifiedSearchPublicPlugin } from './plugin'; diff --git a/src/plugins/unified_search/public/plugin.ts b/src/plugins/unified_search/public/plugin.ts index 93f1aaf19fae8..5ba2474066275 100755 --- a/src/plugins/unified_search/public/plugin.ts +++ b/src/plugins/unified_search/public/plugin.ts @@ -14,7 +14,7 @@ import type { UsageCollectionSetup } from '@kbn/usage-collection-plugin/public'; import { APPLY_FILTER_TRIGGER } from '@kbn/data-plugin/public'; import { ConfigSchema } from '../config'; import { setIndexPatterns, setTheme, setOverlays, setAutocomplete } from './services'; -import { AutocompleteService } from './autocomplete'; +import { AutocompleteService } from './autocomplete/autocomplete_service'; import { createSearchBar } from './search_bar'; import { createIndexPatternSelect } from './index_pattern_select'; import type {